diff options
author | Akira Akashi <rubenru09@aol.com> | 2021-06-02 22:13:57 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-06-02 22:13:57 +0100 |
commit | 9d3d4a2acff67f43896e9e0dcd26e7aaeb55e3b3 (patch) | |
tree | d707aa8fead427dadbbb29b886875e6c8961bd5a | |
parent | a2a17a9426f16ee601ff17840b8bb7851fef7138 (diff) | |
parent | 7e32d3758e7e36d7a67a1442cdb9386f9aa18a6e (diff) |
Merge branch 'master' into 0202A1E0
582 files changed, 62105 insertions, 63765 deletions
diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 4e0f34ea..af5b3cfd 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -12,14 +12,14 @@ env: jobs: build: - runs-on: ubuntu-18.04 + runs-on: ubuntu-20.04 steps: - name: Update and Install Software run: | sudo apt update sudo ACCEPT_EULA=Y apt -y --fix-missing --allow-downgrades upgrade - sudo apt -y --allow-downgrades install g++-8-multilib linux-libc-dev binutils-arm-none-eabi + sudo apt -y --allow-downgrades install g++-8-multilib linux-libc-dev binutils-arm-none-eabi p7zip-full sudo dpkg --add-architecture i386 wget -qO - https://dl.winehq.org/wine-builds/winehq.key | sudo apt-key add - sudo add-apt-repository ppa:cybermax-dexter/sdl2-backport @@ -31,19 +31,19 @@ jobs: run: | mkdir -p ~/download cd ~/download - wget http://private.martmists.com/mwccarm.zip - wget http://private.martmists.com/nitro.tar.gz + wget https://cdn.discordapp.com/attachments/698589325620936736/845499146982129684/mwccarm.zip + wget https://cdn.discordapp.com/attachments/698589325620936736/722822401963851797/NitroSDK-3_2-060901.7z unzip mwccarm.zip mv mwccarm $GITHUB_WORKSPACE/tools - tar xzf nitro.tar.gz - mv tools/bin $GITHUB_WORKSPACE/tools - mv include/nitro/specfiles/ARM7-TS.lcf.template $GITHUB_WORKSPACE/arm7 - mv include/nitro/specfiles/ARM9-TS.lcf.template $GITHUB_WORKSPACE/arm9 + 7z x NitroSDK-3_2-060901.7z + mv NitroSDK-3_2-060901/tools/bin $GITHUB_WORKSPACE/tools + mv NitroSDK-3_2-060901/include/nitro/specfiles/ARM7-TS.lcf.template $GITHUB_WORKSPACE/arm7 + mv NitroSDK-3_2-060901/include/nitro/specfiles/ARM9-TS.lcf.template $GITHUB_WORKSPACE/arm9 working-directory: ~ - name: Build Diamond run: make diamond - name: Build Pearl - run: make pearl + run: make pearl - name: Webhook run: | sudo chmod 755 $GITHUB_WORKSPACE/.github/calcrom/webhook.sh @@ -49,3 +49,4 @@ symbols.csv *.arc files/**/*.c *.o +*.naix diff --git a/CMakeLists.txt b/CMakeLists.txt index e21a731a..92d8aea2 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,4 +1,6 @@ -cmake_minimum_required (VERSION 2.8.11) +cmake_minimum_required (VERSION 3.15) +set(CMAKE_SHARED_LIBRARY_LINK_C_FLAGS "") +set(CMAKE_SHARED_LIBRARY_LINK_CXX_FLAGS "") project(PokeDiamond) set(CMAKE_CXX_STANDARD 17) set(CMAKE_C_STANDARD 11) @@ -13,10 +15,7 @@ endif(APPLE) add_compile_options(-fms-extensions) -file(GLOB_RECURSE SOURCES RELATIVE ${CMAKE_SOURCE_DIR} "*.c" "*.cpp") - -add_executable(PokeDiamond ${SOURCES}) -target_include_directories(PokeDiamond PRIVATE include include-mw arm9/lib/include arm7/lib/include arm9/modules/05/include arm9/modules/21/include arm9/modules/59/include arm9/modules/63/include) +add_subdirectory(arm9) add_executable(calcrom .github/calcrom/calcrom.cpp) target_include_directories(calcrom PRIVATE /usr/local/include) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index f36b82d0..6bbcd13c 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -1,6 +1,6 @@ # Contributing guide for Pokémon Diamond -**As the repository is in a volatile state, contribution is closed to the public until further notice.** +**The repository is in a volatile state.** This is a living document which lays out the procedure for decompiling the game code of Pokémon Diamond Version (5.0-US) for the Nintendo DS. @@ -162,6 +162,7 @@ clean: mostlyclean clean-fs clean-tools clean-fs: $(RM) $(filter %.narc %.arc,$(HOSTFS_FILES)) + $(RM) $(patsubst %.narc,%.naix,$(patsubst %.arc,%.naix,$(filter %.narc %.arc,$(HOSTFS_FILES)))) $(RM) $(NCGR_CLEAN_LIST) $(NCLR_CLEAN_LIST) $(NCER_CLEAN_LIST) $(NSCR_CLEAN_LIST) find . \( -iname '*.1bpp' -o -iname '*.4bpp' -o -iname '*.8bpp' -o -iname '*.gbapal' -o -iname '*.lz' \) -exec $(RM) {} + $(RM) files/msgdata/msg/narc_*.bin @@ -204,7 +205,7 @@ $(BUILD_DIR)/%.o: %.c $$(dep) $(BUILD_DIR)/%.o: %.s $$(dep) $(AS) $(ASFLAGS) $< -o $@ -arm9: +arm9: filesystem $(MAKE) -C arm9 $(MAKE_VARS) arm7: @@ -214,7 +215,7 @@ include filesystem.mk # TODO: Rules for Pearl # FIXME: Computed secure area CRC in header is incorrect due to first 8 bytes of header not actually being "encryObj" -$(ROM): rom.rsf arm9 arm7 filesystem $(BNR) tools/bin/rom_header.template.sbin +$(ROM): rom.rsf arm9 arm7 $(BNR) tools/bin/rom_header.template.sbin $(MAKEROM) -DBUILD_DIR="$(BUILD_DIR)" -DBNR="$(BNR)" -DTITLE_NAME="$(TITLE_NAME)" -DNITROFS_FILES="$(NITROFS_FILES)" $< $@ ifeq ($(SHIFTED),0) $(FIXROM) $@ --secure-crc $(SECURE_CRC) --game-code $(GAME_CODE) diff --git a/arm9/CMakeLists.txt b/arm9/CMakeLists.txt new file mode 100644 index 00000000..0de93feb --- /dev/null +++ b/arm9/CMakeLists.txt @@ -0,0 +1,19 @@ +cmake_minimum_required (VERSION 3.15) +set(CMAKE_SHARED_LIBRARY_LINK_C_FLAGS "") +set(CMAKE_SHARED_LIBRARY_LINK_CXX_FLAGS "") +project(DP_Arm9) +set(CMAKE_CXX_STANDARD 17) +set(CMAKE_C_STANDARD 11) + +# TODO: Add commands + +enable_language(ASM) + +add_compile_options(-fms-extensions) + +file(GLOB_RECURSE SOURCES "*.c" "*.cpp") +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_compile_definitions(DP_Arm9 PUBLIC __CLION_IDE__) diff --git a/arm9/Makefile b/arm9/Makefile index 8b84a135..2ad29363 100644 --- a/arm9/Makefile +++ b/arm9/Makefile @@ -54,7 +54,7 @@ SRC_DIRS := src lib lib/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_DIRS := ../include $(sort $(wildcard modules/*/include)) +INCLUDE_DIRS := ../include $(sort $(wildcard modules/*/include)) ../files C_FILES := $(foreach dir,$(SRC_DIRS),$(sort $(wildcard $(dir)/*.c))) CXX_FILES := $(foreach dir,$(SRC_DIRS),$(sort $(wildcard $(dir)/*.cpp))) @@ -110,7 +110,7 @@ ASM_PROCESSOR := $(ASM_PROCESSOR_DIR)/compile.sh # ./tools/mwccarm/2.0/base/mwasmarm.exe -proc arm5te asm/arm9_thumb.s -o arm9.o ASFLAGS = -proc arm5te -i ../include -i .. -D$(GAME_VERSION) -D$(GAME_LANGUAGE) -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) +CFLAGS = -O4,p -gccext,on -proc arm946e -ipa file -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) CXXFLAGS = -O4,p -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) LDFLAGS = -nodead -w off -proc v5te -interworking -map closure,unused -symtab sort -m _start LIBS := -Llib -lsyscall @@ -192,6 +192,10 @@ 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 + +# 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) ####################### Everything Else ###################### diff --git a/arm9/arm9.lsf b/arm9/arm9.lsf index dee43fd0..fa609048 100644 --- a/arm9/arm9.lsf +++ b/arm9/arm9.lsf @@ -6,7 +6,7 @@ Static arm9 { Address 0x02000000 Object main.o - Object unk_020010A8.o + Object list_menu.o Object unk_02001B80.o Object string_util.o Object unk_020023C0.o @@ -21,7 +21,7 @@ Static arm9 Object unk_020061E8.o Object overlay_manager.o Object filesystem.o - Object unk_02006864.o + Object gf_gfx_loader.o Object unk_02006D98.o Object unk_02008AA4.o Object unk_02008DEC.o @@ -36,6 +36,10 @@ Static arm9 Object unk_0200E850.o Object unk_0201137C.o Object unk_02011744.o + Object unk_02012004.o + Object gf_rtc.o + Object list_menu_items.o + Object unk_02012944.o Object unk_02012CC8.o Object mail_message.o Object unk_020139D8.o @@ -107,7 +111,7 @@ Static arm9 Object seal_case.o Object unk_02029CEC.o Object igt.o - Object unk_02029EC4.o + Object sav_chatot.o Object unk_02029FB0.o Object unk_0202A1E0.o Object unk_0202A8F4.o @@ -153,16 +157,16 @@ Static arm9 Object unk_02038C78.o Object scrcmd.o Object scrcmd_asm.o - Object scrcmd_2.o + Object scrcmd_mart.o Object scrcmd_3.o Object scrcmd_names.o Object scrcmd_5.o - Object scrcmd_6.o + Object scrcmd_sound.o Object scrcmd_7.o Object scrcmd_8.o Object scrcmd_9.o Object scrcmd_10.o - Object scrcmd_11.o + Object scrcmd_berry_trees.o Object scrcmd_12.o Object scrcmd_13.o Object scrcmd_coins.o @@ -171,11 +175,11 @@ Static arm9 Object scrcmd_17.o Object scrcmd_18_c.o Object scrcmd_18.o - Object scrcmd_19.o - Object scrcmd_20.o - Object scrcmd_21.o + Object scrcmd_fossils.o + Object scrcmd_prizes.o + Object scrcmd_flags.o Object scrcmd_items.o - Object scrcmd_23.o + Object scrcmd_underground.o Object scrcmd_24.o Object scrcmd_25.o Object unk_02046030.o @@ -352,8 +356,81 @@ Static arm9 Object WCM_util.o Object WIFI_stubsmd5_dummy.o Object libVCT.o - Object unk_020ADA84.o - Object sndlib.o + ### Nitro System SDK ### + Object NNS_FND_list.o + Object NNS_FND_heapcommon.o + Object NNS_FND_expheap.o + 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 ### Nitro SDK ### Object FX_mtx22.o Object FX_mtx33.o @@ -361,6 +438,7 @@ Static arm9 Object FX_mtx44.o Object FX_cp.o Object FX_vec.o + Object FX_sincos.o Object FX_atan.o Object FX.o Object GX.o diff --git a/arm9/asm/NNS_FND_allocator.s b/arm9/asm/NNS_FND_allocator.s new file mode 100644 index 00000000..537ce6a0 --- /dev/null +++ b/arm9/asm/NNS_FND_allocator.s @@ -0,0 +1,65 @@ + .include "asm/macros.inc" + .include "global.inc" + .rodata + ; static const in function + + .global sAllocatorFunc$7864 +sAllocatorFunc$7864: ; 0x020FF7CC + .word AllocatorAllocForExpHeap + .word AllocatorFreeForExpHeap + .text + + arm_func_start NNS_FndInitAllocatorForExpHeap +NNS_FndInitAllocatorForExpHeap: ; 0x020AE82C + ldr ip, _020AE848 ; =sAllocatorFunc$7864 + mov r3, #0x0 + str r12, [r0, #0x0] + str r1, [r0, #0x4] + str r2, [r0, #0x8] + str r3, [r0, #0xc] + bx lr + .balign 4 +_020AE848: .word sAllocatorFunc$7864 + arm_func_end NNS_FndInitAllocatorForExpHeap + + arm_func_start NNS_FndFreeToAllocator +NNS_FndFreeToAllocator: ; 0x020AE84C + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r2, [r0, #0x0] + ldr r2, [r2, #0x4] + blx r2 + add sp, sp, #0x4 + ldmia sp!, {pc} + arm_func_end NNS_FndFreeToAllocator + + arm_func_start NNS_FndAllocFromAllocator +NNS_FndAllocFromAllocator: ; 0x020AE868 + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r2, [r0, #0x0] + ldr r2, [r2, #0x0] + blx r2 + add sp, sp, #0x4 + ldmia sp!, {pc} + arm_func_end NNS_FndAllocFromAllocator + + arm_func_start AllocatorFreeForExpHeap +AllocatorFreeForExpHeap: ; 0x020AE884 + ldr ip, _020AE890 ; =NNS_FndFreeToExpHeap + ldr r0, [r0, #0x4] + bx r12 + .balign 4 +_020AE890: .word NNS_FndFreeToExpHeap + arm_func_end AllocatorFreeForExpHeap + + arm_func_start AllocatorAllocForExpHeap +AllocatorAllocForExpHeap: ; 0x020AE894 + ldr ip, _020AE8A8 ; =NNS_FndAllocFromExpHeapEx + mov r2, r0 + ldr r0, [r2, #0x4] + ldr r2, [r2, #0x8] + bx r12 + .balign 4 +_020AE8A8: .word NNS_FndAllocFromExpHeapEx + arm_func_end AllocatorAllocForExpHeap diff --git a/arm9/asm/NNS_FND_expheap.s b/arm9/asm/NNS_FND_expheap.s new file mode 100644 index 00000000..e94dba38 --- /dev/null +++ b/arm9/asm/NNS_FND_expheap.s @@ -0,0 +1,583 @@ + .include "asm/macros.inc" + .include "global.inc" + .extern NNSi_FndInitHeapHead + .extern NNSi_FndFinalizeHeap + .text + + arm_func_start NNS_FndGetSizeForMBlockExpHeap +NNS_FndGetSizeForMBlockExpHeap: ; 0x020ADDC0 + ldr r0, [r0, #-0xc] + bx lr + arm_func_end NNS_FndGetSizeForMBlockExpHeap + + arm_func_start NNS_FndGetTotalFreeSizeForExpHeap +NNS_FndGetTotalFreeSizeForExpHeap: ; 0x020ADDC8 + ldr r2, [r0, #0x24] + mov r0, #0x0 + cmp r2, #0x0 + bxeq lr +_020ADDD8: + ldr r1, [r2, #0x4] + ldr r2, [r2, #0xc] + add r0, r0, r1 + cmp r2, #0x0 + bne _020ADDD8 + bx lr + arm_func_end NNS_FndGetTotalFreeSizeForExpHeap + + arm_func_start NNS_FndFreeToExpHeap +NNS_FndFreeToExpHeap: ; 0x020ADDF0 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0xc + sub r4, r1, #0x10 + add r5, r0, #0x24 + add r0, sp, #0x0 + mov r1, r4 + bl GetRegionOfMBlock + mov r1, r4 + add r0, r5, #0x8 + bl RemoveMBlock + add r1, sp, #0x0 + mov r0, r5 + bl RecycleRegion + add sp, sp, #0xc + ldmia sp!, {r4-r5,pc} + arm_func_end NNS_FndFreeToExpHeap + + arm_func_start NNS_FndResizeForMBlockExpHeap +NNS_FndResizeForMBlockExpHeap: ; 0x020ADE2C + stmdb sp!, {r4-r10,lr} + sub sp, sp, #0x10 + mov r4, r1 + mov r10, r2 + sub r6, r4, #0x10 + add r1, r10, #0x3 + mov r5, r0 + ldr r8, [r6, #0x4] + bic r10, r1, #0x3 + cmp r10, r8 + add r7, r5, #0x24 + addeq sp, sp, #0x10 + moveq r0, r10 + ldmeqia sp!, {r4-r10,pc} + cmp r10, r8 + bls _020ADF60 + ldr r9, [r7, #0x0] + add r0, r6, #0x10 + cmp r9, #0x0 + add r0, r8, r0 + beq _020ADE94 +_020ADE80: + cmp r9, r0 + beq _020ADE94 + ldr r9, [r9, #0xc] + cmp r9, #0x0 + bne _020ADE80 +_020ADE94: + cmp r9, #0x0 + beq _020ADEB0 + ldr r0, [r9, #0x4] + add r1, r8, #0x10 + add r0, r1, r0 + cmp r10, r0 + bls _020ADEBC +_020ADEB0: + add sp, sp, #0x10 + mov r0, #0x0 + ldmia sp!, {r4-r10,pc} +_020ADEBC: + add r0, sp, #0x0 + mov r1, r9 + bl GetRegionOfMBlock + mov r0, r7 + mov r1, r9 + bl RemoveMBlock + ldr r2, [sp, #0x4] + add r3, r10, r4 + ldr r9, [sp, #0x0] + sub r1, r2, r3 + str r3, [sp, #0x0] + cmp r1, #0x10 + strcc r2, [sp, #0x0] + mov r8, r0 + ldr r0, [sp, #0x0] + sub r0, r0, r4 + str r0, [r6, #0x4] + ldr r1, [sp, #0x4] + ldr r0, [sp, #0x0] + sub r0, r1, r0 + cmp r0, #0x10 + blo _020ADF30 + ldr r1, _020ADF9C ; =0x00004652 + add r0, sp, #0x0 + bl InitMBlock + mov r1, r0 + mov r0, r7 + mov r2, r8 + bl InsertMBlock +_020ADF30: + ldr r0, [r5, #0x20] + ldr r1, [sp, #0x0] + and r0, r0, #0xff + mov r0, r0, lsl #0x10 + mov r0, r0, lsr #0x10 + sub r2, r1, r9 + ands r0, r0, #0x1 + beq _020ADF90 + mov r1, r9 + mov r0, #0x0 + bl MIi_CpuClear32 + b _020ADF90 +_020ADF60: + add r0, r10, r4 + str r0, [sp, #0x8] + ldr r1, [r6, #0x4] + add r0, r6, #0x10 + add r0, r1, r0 + str r0, [sp, #0xc] + add r1, sp, #0x8 + mov r0, r7 + str r10, [r6, #0x4] + bl RecycleRegion + cmp r0, #0x0 + streq r8, [r6, #0x4] +_020ADF90: + ldr r0, [r6, #0x4] + add sp, sp, #0x10 + ldmia sp!, {r4-r10,pc} + .balign 4 +_020ADF9C: .word 0x00004652 + arm_func_end NNS_FndResizeForMBlockExpHeap + + arm_func_start NNS_FndAllocFromExpHeapEx +NNS_FndAllocFromExpHeapEx: ; 0x020ADFA0 + stmdb sp!, {lr} + sub sp, sp, #0x4 + cmp r1, #0x0 + moveq r1, #0x1 + add r1, r1, #0x3 + cmp r2, #0x0 + bic r1, r1, #0x3 + blt _020ADFCC + bl AllocFromHead + add sp, sp, #0x4 + ldmia sp!, {pc} +_020ADFCC: + rsb r2, r2, #0x0 + bl AllocFromTail + add sp, sp, #0x4 + ldmia sp!, {pc} + arm_func_end NNS_FndAllocFromExpHeapEx + + arm_func_start NNS_FndDestroyExpHeap +NNS_FndDestroyExpHeap: ; 0x020ADFDC + ldr ip, _020ADFE4 ; =NNSi_FndFinalizeHeap + bx r12 + .balign 4 +_020ADFE4: .word NNSi_FndFinalizeHeap + arm_func_end NNS_FndDestroyExpHeap + + arm_func_start NNS_FndCreateExpHeapEx +NNS_FndCreateExpHeapEx: ; 0x020ADFE8 + stmdb sp!, {lr} + sub sp, sp, #0x4 + add r1, r1, r0 + add r0, r0, #0x3 + bic r1, r1, #0x3 + bic r0, r0, #0x3 + cmp r0, r1 + bhi _020AE014 + sub r3, r1, r0 + cmp r3, #0x4c + bhs _020AE020 +_020AE014: + add sp, sp, #0x4 + mov r0, #0x0 + ldmia sp!, {pc} +_020AE020: + bl InitExpHeap + add sp, sp, #0x4 + ldmia sp!, {pc} + arm_func_end NNS_FndCreateExpHeapEx + + arm_func_start RecycleRegion +RecycleRegion: + stmdb sp!, {r4-r6,lr} + sub sp, sp, #0x8 + mov r5, r1 + ldr r2, [r5, #0x0] + ldr r1, [r5, #0x4] + mov r6, r0 + str r2, [sp, #0x0] + str r1, [sp, #0x4] + ldr r1, [r6, #0x0] + mov r4, #0x0 + cmp r1, #0x0 + beq _020AE0A0 + ldr r0, [r5, #0x0] +_020AE060: + cmp r1, r0 + movcc r4, r1 + blo _020AE094 + ldr r0, [r5, #0x4] + cmp r1, r0 + bne _020AE0A0 + ldr r2, [r1, #0x4] + add r0, r1, #0x10 + add r2, r2, r0 + mov r0, r6 + str r2, [sp, #0x4] + bl RemoveMBlock + b _020AE0A0 +_020AE094: + ldr r1, [r1, #0xc] + cmp r1, #0x0 + bne _020AE060 +_020AE0A0: + cmp r4, #0x0 + beq _020AE0D4 + ldr r2, [r4, #0x4] + add r1, r4, #0x10 + ldr r0, [r5, #0x0] + add r1, r2, r1 + cmp r1, r0 + bne _020AE0D4 + mov r0, r6 + mov r1, r4 + str r4, [sp, #0x0] + bl RemoveMBlock + mov r4, r0 +_020AE0D4: + ldr r1, [sp, #0x4] + ldr r0, [sp, #0x0] + sub r0, r1, r0 + cmp r0, #0x10 + addcc sp, sp, #0x8 + movcc r0, #0x0 + ldmccia sp!, {r4-r6,pc} + ldr r1, _020AE118 ; =0x00004652 + add r0, sp, #0x0 + bl InitMBlock + mov r1, r0 + mov r0, r6 + mov r2, r4 + bl InsertMBlock + mov r0, #0x1 + add sp, sp, #0x8 + ldmia sp!, {r4-r6,pc} + .balign 4 +_020AE118: .word 0x00004652 + arm_func_end RecycleRegion + + local_arm_func_start AllocFromTail +AllocFromTail: ; 0x020AE11C + stmdb sp!, {r4-r9,lr} + sub sp, sp, #0x4 + add r0, r0, #0x24 + ldrh r4, [r0, #0x12] + mov r3, r1 + mvn lr, #0x0 + and r1, r4, #0x1 + mov r1, r1, lsl #0x10 + movs r1, r1, lsr #0x10 + moveq r5, #0x1 + mov r1, #0x0 + ldr r4, [r0, #0x4] + movne r5, #0x0 + mov r12, r1 + cmp r4, #0x0 + beq _020AE1B0 + sub r2, r2, #0x1 + mvn r2, r2 +_020AE164: + ldr r8, [r4, #0x4] + add r9, r4, #0x10 + add r6, r8, r9 + sub r6, r6, r3 + and r7, r2, r6 + subs r6, r7, r9 + bmi _020AE1A4 + cmp lr, r8 + bls _020AE1A4 + mov r1, r4 + mov lr, r8 + mov r12, r7 + cmp r5, #0x0 + bne _020AE1B0 + cmp r8, r3 + beq _020AE1B0 +_020AE1A4: + ldr r4, [r4, #0x8] + cmp r4, #0x0 + bne _020AE164 +_020AE1B0: + cmp r1, #0x0 + addeq sp, sp, #0x4 + moveq r0, #0x0 + ldmeqia sp!, {r4-r9,pc} + mov r4, #0x1 + mov r2, r12 + str r4, [sp, #0x0] + bl AllocUsedBlockFromFreeBlock + add sp, sp, #0x4 + ldmia sp!, {r4-r9,pc} + arm_func_end AllocFromTail + + local_arm_func_start AllocFromHead +AllocFromHead: ; 0x020AE1D8 + stmdb sp!, {r4-r9,lr} + sub sp, sp, #0x4 + add r0, r0, #0x24 + ldrh r4, [r0, #0x12] + mov r3, r1 + ldr r5, [r0, #0x0] + and r1, r4, #0x1 + mov r1, r1, lsl #0x10 + movs r1, r1, lsr #0x10 + moveq r6, #0x1 + mov r1, #0x0 + movne r6, #0x0 + mov lr, r1 + cmp r5, #0x0 + mvn r4, #0x0 + beq _020AE270 + sub r12, r2, #0x1 + mvn r2, r12 +_020AE220: + add r8, r5, #0x10 + add r7, r12, r8 + and r9, r2, r7 + sub r7, r9, r8 + ldr r8, [r5, #0x4] + add r7, r3, r7 + cmp r8, r7 + blo _020AE264 + cmp r4, r8 + bls _020AE264 + mov r1, r5 + mov r4, r8 + mov lr, r9 + cmp r6, #0x0 + bne _020AE270 + cmp r8, r3 + beq _020AE270 +_020AE264: + ldr r5, [r5, #0xc] + cmp r5, #0x0 + bne _020AE220 +_020AE270: + cmp r1, #0x0 + addeq sp, sp, #0x4 + moveq r0, #0x0 + ldmeqia sp!, {r4-r9,pc} + mov r4, #0x0 + mov r2, lr + str r4, [sp, #0x0] + bl AllocUsedBlockFromFreeBlock + add sp, sp, #0x4 + ldmia sp!, {r4-r9,pc} + arm_func_end AllocFromHead + + arm_func_start AllocUsedBlockFromFreeBlock +AllocUsedBlockFromFreeBlock: ; 0x020AE298 + stmdb sp!, {r4-r8,lr} + sub sp, sp, #0x18 + mov r7, r0 + add r0, sp, #0x0 + mov r8, r1 + mov r6, r2 + mov r5, r3 + bl GetRegionOfMBlock + ldr r3, [sp, #0x4] + sub r4, r6, #0x10 + add r2, r5, r6 + mov r0, r7 + mov r1, r8 + str r4, [sp, #0x4] + str r3, [sp, #0xc] + str r2, [sp, #0x8] + bl RemoveMBlock + ldr r2, [sp, #0x0] + ldr r1, [sp, #0x4] + mov r5, r0 + sub r0, r1, r2 + cmp r0, #0x10 + strcc r2, [sp, #0x4] + blo _020AE318 + ldr r1, _020AE418 ; =0x00004652 + add r0, sp, #0x0 + bl InitMBlock + mov r1, r0 + mov r0, r7 + mov r2, r5 + bl InsertMBlock + mov r5, r0 +_020AE318: + ldr r1, [sp, #0xc] + ldr r0, [sp, #0x8] + sub r0, r1, r0 + cmp r0, #0x10 + strcc r1, [sp, #0x8] + blo _020AE34C + ldr r1, _020AE418 ; =0x00004652 + add r0, sp, #0x8 + bl InitMBlock + mov r1, r0 + mov r0, r7 + mov r2, r5 + bl InsertMBlock +_020AE34C: + ldr r0, [r7, #-0x4] + ldr r1, [sp, #0x4] + and r0, r0, #0xff + mov r0, r0, lsl #0x10 + ldr r2, [sp, #0x8] + mov r0, r0, lsr #0x10 + sub r2, r2, r1 + ands r0, r0, #0x1 + beq _020AE378 + mov r0, #0x0 + bl MIi_CpuClear32 +_020AE378: + ldr r2, [sp, #0x8] + ldr r1, _020AE41C ; =0x00005544 + add r0, sp, #0x10 + str r4, [sp, #0x10] + str r2, [sp, #0x14] + bl InitMBlock + mov r1, r0 + ldrh r3, [r1, #0x2] + ldrh r2, [sp, #0x30] + add r0, r7, #0x8 + bic r3, r3, #0x8000 + strh r3, [r1, #0x2] + ldrh r3, [r1, #0x2] + and r2, r2, #0x1 + orr r2, r3, r2, lsl #0xf + strh r2, [r1, #0x2] + ldrh r2, [r1, #0x2] + ldr r3, [sp, #0x4] + bic r2, r2, #0x7f00 + strh r2, [r1, #0x2] + sub r2, r1, r3 + mov r2, r2, lsl #0x10 + mov r2, r2, lsr #0x10 + ldrh r3, [r1, #0x2] + and r2, r2, #0x7f + orr r2, r3, r2, lsl #0x8 + strh r2, [r1, #0x2] + ldrh r2, [r1, #0x2] + ldrh r3, [r7, #0x10] + bic r2, r2, #0xff + strh r2, [r1, #0x2] + ldrh r2, [r1, #0x2] + and r3, r3, #0xff + orr r2, r2, r3 + strh r2, [r1, #0x2] + ldr r2, [r7, #0xc] + bl InsertMBlock + mov r0, r6 + add sp, sp, #0x18 + ldmia sp!, {r4-r8,pc} + .balign 4 +_020AE418: .word 0x00004652 +_020AE41C: .word 0x00005544 + arm_func_end AllocUsedBlockFromFreeBlock + + arm_func_start InitExpHeap +InitExpHeap: ; 0x020AE420 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0xc + mov r5, r0 + mov r3, r1 + add r4, r5, #0x24 + str r2, [sp, #0x0] + ldr r1, _020AE498 ; =0x45585048 + add r2, r4, #0x14 + bl NNSi_FndInitHeapHead + mov r0, #0x0 + strh r0, [r4, #0x10] + strh r0, [r4, #0x12] + ldrh r2, [r4, #0x12] + ldr r1, _020AE49C ; =0x00004652 + add r0, sp, #0x4 + bic r2, r2, #0x1 + strh r2, [r4, #0x12] + ldr r2, [r5, #0x18] + str r2, [sp, #0x4] + ldr r2, [r5, #0x1c] + str r2, [sp, #0x8] + bl InitMBlock + str r0, [r5, #0x24] + str r0, [r4, #0x4] + mov r1, #0x0 + str r1, [r4, #0x8] + mov r0, r5 + str r1, [r4, #0xc] + add sp, sp, #0xc + ldmia sp!, {r4-r5,pc} + .balign 4 +_020AE498: .word 0x45585048 +_020AE49C: .word 0x00004652 + arm_func_end InitExpHeap + + arm_func_start InitMBlock +InitMBlock: ; 0x020AE4A0 + ldr r3, [r0, #0x0] + mov r2, #0x0 + strh r1, [r3, #0x0] + strh r2, [r3, #0x2] + ldr r1, [r0, #0x4] + add r0, r3, #0x10 + sub r0, r1, r0 + str r0, [r3, #0x4] + str r2, [r3, #0x8] + mov r0, r3 + str r2, [r3, #0xc] + bx lr + arm_func_end InitMBlock + + arm_func_start InsertMBlock +InsertMBlock: ; 0x020AE4D0 + str r2, [r1, #0x8] + cmp r2, #0x0 + ldrne r3, [r2, #0xc] + strne r1, [r2, #0xc] + ldreq r3, [r0, #0x0] + streq r1, [r0, #0x0] + str r3, [r1, #0xc] + cmp r3, #0x0 + strne r1, [r3, #0x8] + streq r1, [r0, #0x4] + mov r0, r1 + bx lr + arm_func_end InsertMBlock + + arm_func_start RemoveMBlock +RemoveMBlock: ; 0x020AE500 + ldr r2, [r1, #0x8] + ldr r1, [r1, #0xc] + cmp r2, #0x0 + strne r1, [r2, #0xc] + streq r1, [r0, #0x0] + cmp r1, #0x0 + strne r2, [r1, #0x8] + streq r2, [r0, #0x4] + mov r0, r2 + bx lr + arm_func_end RemoveMBlock + + arm_func_start GetRegionOfMBlock +GetRegionOfMBlock: ; 0x020AE528 + ldrh r2, [r1, #0x2] + add r3, r1, #0x10 + mov r2, r2, asr #0x8 + and r2, r2, #0x7f + mov r2, r2, lsl #0x10 + sub r2, r1, r2, lsr #0x10 + str r2, [r0, #0x0] + ldr r1, [r1, #0x4] + add r1, r1, r3 + str r1, [r0, #0x4] + bx lr + arm_func_end GetRegionOfMBlock diff --git a/arm9/asm/NNS_FND_frameheap.s b/arm9/asm/NNS_FND_frameheap.s new file mode 100644 index 00000000..cfa221d4 --- /dev/null +++ b/arm9/asm/NNS_FND_frameheap.s @@ -0,0 +1,243 @@ + .include "asm/macros.inc" + .include "global.inc" + .extern NNSi_FndInitHeapHead + .extern NNSi_FndFinalizeHeap + .text + + arm_func_start NNS_FndFreeByStateToFrmHeap +NNS_FndFreeByStateToFrmHeap: ; 0x020AE554 + add r2, r0, #0x24 + cmp r1, #0x0 + ldr r3, [r2, #0x8] + beq _020AE584 + cmp r3, #0x0 + beq _020AE584 +_020AE56C: + ldr r0, [r3, #0x0] + cmp r0, r1 + beq _020AE584 + ldr r3, [r3, #0xc] + cmp r3, #0x0 + bne _020AE56C +_020AE584: + cmp r3, #0x0 + moveq r0, #0x0 + bxeq lr + ldr r1, [r3, #0x4] + mov r0, #0x1 + str r1, [r2, #0x0] + ldr r1, [r3, #0x8] + str r1, [r2, #0x4] + ldr r1, [r3, #0xc] + str r1, [r2, #0x8] + bx lr + arm_func_end NNS_FndFreeByStateToFrmHeap + + arm_func_start NNS_FndRecordStateForFrmHeap +NNS_FndRecordStateForFrmHeap: ; 0x020AE5B0 + stmdb sp!, {r4-r6,lr} + add r4, r0, #0x24 + ldr r5, [r0, #0x24] + mov r6, r1 + mov r0, r4 + mov r1, #0x10 + mov r2, #0x4 + bl AllocFromHead + cmp r0, #0x0 + moveq r0, #0x0 + ldmeqia sp!, {r4-r6,pc} + str r6, [r0, #0x0] + str r5, [r0, #0x4] + ldr r1, [r4, #0x4] + str r1, [r0, #0x8] + ldr r1, [r4, #0x8] + str r1, [r0, #0xc] + str r0, [r4, #0x8] + mov r0, #0x1 + ldmia sp!, {r4-r6,pc} + arm_func_end NNS_FndRecordStateForFrmHeap + + arm_func_start NNS_FndFreeToFrmHeap +NNS_FndFreeToFrmHeap: ; 0x020AE600 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r4, r1 + mov r5, r0 + ands r1, r4, #0x1 + beq _020AE61C + bl FreeHead +_020AE61C: + ands r0, r4, #0x2 + addeq sp, sp, #0x4 + ldmeqia sp!, {r4-r5,pc} + mov r0, r5 + bl FreeTail + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + arm_func_end NNS_FndFreeToFrmHeap + + arm_func_start NNS_FndAllocFromFrmHeapEx +NNS_FndAllocFromFrmHeapEx: ; 0x020AE638 + stmdb sp!, {lr} + sub sp, sp, #0x4 + cmp r1, #0x0 + moveq r1, #0x1 + add r1, r1, #0x3 + add r0, r0, #0x24 + cmp r2, #0x0 + bic r1, r1, #0x3 + blt _020AE668 + bl AllocFromHead + add sp, sp, #0x4 + ldmia sp!, {pc} +_020AE668: + rsb r2, r2, #0x0 + bl AllocFromTail + add sp, sp, #0x4 + ldmia sp!, {pc} + arm_func_end NNS_FndAllocFromFrmHeapEx + + arm_func_start NNS_FndDestroyFrmHeap +NNS_FndDestroyFrmHeap: ; 0x020AE678 + ldr ip, _020AE680 ; =NNSi_FndFinalizeHeap + bx r12 + .balign 4 +_020AE680: .word NNSi_FndFinalizeHeap + arm_func_end NNS_FndDestroyFrmHeap + + arm_func_start NNS_FndCreateFrmHeapEx +NNS_FndCreateFrmHeapEx: ; 0x020AE684 + stmdb sp!, {lr} + sub sp, sp, #0x4 + add r1, r1, r0 + add r0, r0, #0x3 + bic r1, r1, #0x3 + bic r0, r0, #0x3 + cmp r0, r1 + bhi _020AE6B0 + sub r3, r1, r0 + cmp r3, #0x30 + bhs _020AE6BC +_020AE6B0: + add sp, sp, #0x4 + mov r0, #0x0 + ldmia sp!, {pc} +_020AE6BC: + bl InitFrameHeap + add sp, sp, #0x4 + ldmia sp!, {pc} + arm_func_end NNS_FndCreateFrmHeapEx + + arm_func_start FreeTail +FreeTail: ; 0x020AE6C8 + add r2, r0, #0x24 + ldr r3, [r2, #0x8] + cmp r3, #0x0 + beq _020AE6EC +_020AE6D8: + ldr r1, [r0, #0x1c] + str r1, [r3, #0x8] + ldr r3, [r3, #0xc] + cmp r3, #0x0 + bne _020AE6D8 +_020AE6EC: + ldr r0, [r0, #0x1c] + str r0, [r2, #0x4] + bx lr + arm_func_end FreeTail + + arm_func_start FreeHead +FreeHead: ; 0x020AE6F8 + ldr r1, [r0, #0x18] + add r2, r0, #0x24 + str r1, [r0, #0x24] + mov r0, #0x0 + str r0, [r2, #0x8] + bx lr + arm_func_end FreeHead + + local_arm_func_start AllocFromTail +AllocFromTail: ; 0x020AE710 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r5, r0 + ldr r3, [r5, #0x4] + sub r0, r2, #0x1 + mvn r2, r0 + sub r1, r3, r1 + ldr r0, [r5, #0x0] + and r4, r2, r1 + cmp r4, r0 + addcc sp, sp, #0x4 + movcc r0, #0x0 + ldmccia sp!, {r4-r5,pc} + ldr r0, [r5, #-0x4] + sub r2, r3, r4 + and r0, r0, #0xff + mov r0, r0, lsl #0x10 + mov r0, r0, lsr #0x10 + ands r0, r0, #0x1 + beq _020AE76C + mov r1, r4 + mov r0, #0x0 + bl MIi_CpuClear32 +_020AE76C: + mov r0, r4 + str r4, [r5, #0x4] + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + arm_func_end AllocFromTail + + local_arm_func_start AllocFromHead +AllocFromHead: + stmdb sp!, {r4-r6,lr} + mov r6, r0 + ldr r0, [r6, #0x0] + sub r2, r2, #0x1 + mvn r3, r2 + add r2, r2, r0 + and r5, r3, r2 + ldr r2, [r6, #0x4] + add r4, r1, r5 + cmp r4, r2 + movhi r0, #0x0 + ldmhiia sp!, {r4-r6,pc} + ldr r1, [r6, #-0x4] + sub r2, r4, r0 + and r1, r1, #0xff + mov r1, r1, lsl #0x10 + mov r1, r1, lsr #0x10 + ands r1, r1, #0x1 + beq _020AE7D4 + mov r1, r0 + mov r0, #0x0 + bl MIi_CpuClear32 +_020AE7D4: + mov r0, r5 + str r4, [r6, #0x0] + ldmia sp!, {r4-r6,pc} + arm_func_end AllocFromHead + + arm_func_start InitFrameHeap +InitFrameHeap: ; 0x020AE7E0 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r5, r0 + mov r3, r1 + add r4, r5, #0x24 + str r2, [sp, #0x0] + ldr r1, _020AE828 ; =0x46524D48 + add r2, r4, #0xc + bl NNSi_FndInitHeapHead + ldr r0, [r5, #0x18] + mov r1, #0x0 + str r0, [r5, #0x24] + ldr r2, [r5, #0x1c] + mov r0, r5 + str r2, [r4, #0x4] + str r1, [r4, #0x8] + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + .balign 4 +_020AE828: .word 0x46524D48 + arm_func_end InitFrameHeap diff --git a/arm9/asm/NNS_FND_heapcommon.s b/arm9/asm/NNS_FND_heapcommon.s new file mode 100644 index 00000000..ca3108d2 --- /dev/null +++ b/arm9/asm/NNS_FND_heapcommon.s @@ -0,0 +1,112 @@ + .include "asm/macros.inc" + .include "global.inc" + + .section .bss + + .global sRootListInitialized +sRootListInitialized: ; 0x021CCD38 + .space 0x4 + + .global sRootList +sRootList: ; 0x021CCD3C + .space 0xc + .text + + arm_func_start NNSi_FndFinalizeHeap +NNSi_FndFinalizeHeap: ; 0x020ADC8C + stmdb sp!, {r4,lr} + mov r4, r0 + bl FindListContainHeap + mov r1, r4 + bl NNS_FndRemoveListObject + ldmia sp!, {r4,pc} + arm_func_end NNSi_FndFinalizeHeap + + arm_func_start NNSi_FndInitHeapHead +NNSi_FndInitHeapHead: + stmdb sp!, {r4,lr} + mov r4, r0 + str r1, [r4, #0x0] + str r2, [r4, #0x18] + str r3, [r4, #0x1c] + mov r0, #0x0 + str r0, [r4, #0x20] + ldr r1, [r4, #0x20] + ldrh r0, [sp, #0x8] + bic r1, r1, #0xff + str r1, [r4, #0x20] + ldr r1, [r4, #0x20] + and r0, r0, #0xff + orr r2, r1, r0 + add r0, r4, #0xc + mov r1, #0x4 + str r2, [r4, #0x20] + bl NNS_FndInitList + ldr r0, _020ADD28 ; =sRootListInitialized + ldr r0, [r0, #0x0] + cmp r0, #0x0 + bne _020ADD14 + ldr r0, _020ADD2C ; =sRootList + mov r1, #0x4 + bl NNS_FndInitList + ldr r0, _020ADD28 ; =sRootListInitialized + mov r1, #0x1 + str r1, [r0, #0x0] +_020ADD14: + mov r0, r4 + bl FindListContainHeap + mov r1, r4 + bl NNS_FndAppendListObject + ldmia sp!, {r4,pc} + .balign 4 +_020ADD28: .word sRootListInitialized +_020ADD2C: .word sRootList + arm_func_end NNSi_FndInitHeapHead + + arm_func_start FindListContainHeap +FindListContainHeap: ; 0x020ADD30 + stmdb sp!, {r4,lr} + ldr r4, _020ADD54 ; =sRootList + mov r1, r0 + mov r0, r4 + bl FindContainHeap + cmp r0, #0x0 + addne r4, r0, #0xc + mov r0, r4 + ldmia sp!, {r4,pc} + .balign 4 +_020ADD54: .word sRootList + arm_func_end FindListContainHeap + + arm_func_start FindContainHeap +FindContainHeap: + stmdb sp!, {r4-r6,lr} + mov r5, r1 + mov r1, #0x0 + mov r6, r0 + bl NNS_FndGetNextListObject + movs r4, r0 + beq _020ADDB8 +_020ADD74: + ldr r0, [r4, #0x18] + cmp r0, r5 + bhi _020ADDA4 + ldr r0, [r4, #0x1c] + cmp r5, r0 + bhs _020ADDA4 + mov r1, r5 + add r0, r4, #0xc + bl FindContainHeap + cmp r0, #0x0 + moveq r0, r4 + ldmia sp!, {r4-r6,pc} +_020ADDA4: + mov r0, r6 + mov r1, r4 + bl NNS_FndGetNextListObject + movs r4, r0 + bne _020ADD74 +_020ADDB8: + mov r0, #0x0 + ldmia sp!, {r4-r6,pc} + arm_func_end FindContainHeap diff --git a/arm9/asm/NNS_FND_list.s b/arm9/asm/NNS_FND_list.s new file mode 100644 index 00000000..21999c11 --- /dev/null +++ b/arm9/asm/NNS_FND_list.s @@ -0,0 +1,169 @@ + .include "asm/macros.inc" + .include "global.inc" + .text + + arm_func_start NNS_FndGetPrevListObject +NNS_FndGetPrevListObject: ; 0x020ADA84 + cmp r1, #0x0 + ldreq r0, [r0, #0x4] + ldrneh r0, [r0, #0xa] + ldrne r0, [r1, r0] + bx lr + arm_func_end NNS_FndGetPrevListObject + + arm_func_start NNS_FndGetNextListObject +NNS_FndGetNextListObject: ; 0x020ADA98 + cmp r1, #0x0 + ldreq r0, [r0, #0x0] + ldrneh r0, [r0, #0xa] + addne r0, r1, r0 + ldrne r0, [r0, #0x4] + bx lr + arm_func_end NNS_FndGetNextListObject + + arm_func_start NNS_FndRemoveListObject +NNS_FndRemoveListObject: ; 0x020ADAB0 + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldrh r12, [r0, #0xa] + ldr r3, [r1, r12] + add lr, r1, r12 + cmp r3, #0x0 + ldreq r1, [lr, #0x4] + streq r1, [r0, #0x0] + ldrne r2, [lr, #0x4] + addne r1, r3, r12 + strne r2, [r1, #0x4] + ldr r3, [lr, #0x4] + cmp r3, #0x0 + ldreq r1, [lr, #0x0] + streq r1, [r0, #0x4] + ldrneh r1, [r0, #0xa] + ldrne r2, [lr, #0x0] + strne r2, [r3, r1] + mov r1, #0x0 + str r1, [lr, #0x0] + str r1, [lr, #0x4] + ldrh r1, [r0, #0x8] + sub r1, r1, #0x1 + strh r1, [r0, #0x8] + add sp, sp, #0x4 + ldmia sp!, {pc} + arm_func_end NNS_FndRemoveListObject + + arm_func_start NNS_FndInsertListObject +NNS_FndInsertListObject: ; 0x020ADB18 + stmdb sp!, {lr} + sub sp, sp, #0x4 + cmp r1, #0x0 + bne _020ADB38 + mov r1, r2 + bl NNS_FndAppendListObject + add sp, sp, #0x4 + ldmia sp!, {pc} +_020ADB38: + ldr r3, [r0, #0x0] + cmp r1, r3 + bne _020ADB54 + mov r1, r2 + bl NNS_FndPrependListObject + add sp, sp, #0x4 + ldmia sp!, {pc} +_020ADB54: + ldrh lr, [r0, #0xa] + ldr r3, [r1, lr] + add r12, r2, lr + str r3, [r2, lr] + str r1, [r12, #0x4] + add r3, r3, lr + str r2, [r3, #0x4] + ldrh r3, [r0, #0xa] + str r2, [r1, r3] + ldrh r1, [r0, #0x8] + add r1, r1, #0x1 + strh r1, [r0, #0x8] + add sp, sp, #0x4 + ldmia sp!, {pc} + arm_func_end NNS_FndInsertListObject + + arm_func_start NNS_FndPrependListObject +NNS_FndPrependListObject: ; 0x020ADB8C + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r2, [r0, #0x0] + cmp r2, #0x0 + bne _020ADBAC + bl SetFirstObject + add sp, sp, #0x4 + ldmia sp!, {pc} +_020ADBAC: + ldrh r3, [r0, #0xa] + mov r2, #0x0 + str r2, [r1, r3] + ldr r2, [r0, #0x0] + add r3, r1, r3 + str r2, [r3, #0x4] + ldrh r2, [r0, #0xa] + ldr r3, [r0, #0x0] + str r1, [r3, r2] + str r1, [r0, #0x0] + ldrh r1, [r0, #0x8] + add r1, r1, #0x1 + strh r1, [r0, #0x8] + add sp, sp, #0x4 + ldmia sp!, {pc} + arm_func_end NNS_FndPrependListObject + + arm_func_start NNS_FndAppendListObject +NNS_FndAppendListObject: ; 0x020ADBE8 + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r2, [r0, #0x0] + cmp r2, #0x0 + bne _020ADC08 + bl SetFirstObject + add sp, sp, #0x4 + ldmia sp!, {pc} +_020ADC08: + ldrh r12, [r0, #0xa] + ldr r3, [r0, #0x4] + mov r2, #0x0 + str r3, [r1, r12] + add r3, r1, r12 + str r2, [r3, #0x4] + ldrh r2, [r0, #0xa] + ldr r3, [r0, #0x4] + add r2, r3, r2 + str r1, [r2, #0x4] + str r1, [r0, #0x4] + ldrh r1, [r0, #0x8] + add r1, r1, #0x1 + strh r1, [r0, #0x8] + add sp, sp, #0x4 + ldmia sp!, {pc} + arm_func_end NNS_FndAppendListObject + + arm_func_start SetFirstObject +SetFirstObject: ; 0x020ADC48 + ldrh r3, [r0, #0xa] + mov r2, #0x0 + add r12, r1, r3 + str r2, [r12, #0x4] + str r2, [r1, r3] + str r1, [r0, #0x0] + str r1, [r0, #0x4] + ldrh r1, [r0, #0x8] + add r1, r1, #0x1 + strh r1, [r0, #0x8] + bx lr + arm_func_end SetFirstObject + + arm_func_start NNS_FndInitList +NNS_FndInitList: ; 0x020ADC74 + mov r2, #0x0 + str r2, [r0, #0x0] + str r2, [r0, #0x4] + strh r2, [r0, #0x8] + strh r1, [r0, #0xa] + bx lr + arm_func_end NNS_FndInitList diff --git a/arm9/asm/NNS_G2D_g2d_animation.s b/arm9/asm/NNS_G2D_g2d_animation.s new file mode 100644 index 00000000..23daa1c6 --- /dev/null +++ b/arm9/asm/NNS_G2D_g2d_animation.s @@ -0,0 +1,336 @@ + .include "asm/macros.inc" + .include "global.inc" + + .section .text + + arm_func_start NNSi_G2dIsAnimCtrlLoopAnim +NNSi_G2dIsAnimCtrlLoopAnim: ; 0x020B0408 + ldr r1, [r0, #0x14] + cmp r1, #0x0 + ldreq r0, [r0, #0x18] + ldreq r1, [r0, #0x8] + cmp r1, #0x2 + beq _020B0428 + cmp r1, #0x4 + bne _020B0430 +_020B0428: + mov r0, #0x1 + bx lr +_020B0430: + mov r0, #0x0 + bx lr + arm_func_end NNSi_G2dIsAnimCtrlLoopAnim + + arm_func_start NNS_G2dBindAnimCtrl +NNS_G2dBindAnimCtrl: ; 0x020B0438 + ldr ip, _020B0444 ; =NNS_G2dResetAnimCtrlState + str r1, [r0, #0x18] + bx r12 + .balign 4 +_020B0444: .word NNS_G2dResetAnimCtrlState + arm_func_end NNS_G2dBindAnimCtrl + + arm_func_start NNS_G2dResetAnimCtrlState +NNS_G2dResetAnimCtrlState: ; 0x020B0448 + ldr r1, [r0, #0x10] + cmp r1, #0x0 + movgt r2, #0x1 + ldr r1, [r0, #0x4] + movle r2, #0x0 + eors r1, r2, r1 + beq _020B047C + ldr r2, [r0, #0x18] + ldrh r1, [r2, #0x2] + ldr r2, [r2, #0xc] + add r1, r2, r1, lsl #0x3 + str r1, [r0, #0x0] + b _020B0494 +_020B047C: + ldr r2, [r0, #0x18] + ldrh r1, [r2, #0x0] + ldr r2, [r2, #0xc] + add r1, r2, r1, lsl #0x3 + sub r1, r1, #0x8 + str r1, [r0, #0x0] +_020B0494: + ldr ip, _020B04A4 ; =NNS_G2dTickAnimCtrl + mov r1, #0x0 + str r1, [r0, #0xc] + bx r12 + .balign 4 +_020B04A4: .word NNS_G2dTickAnimCtrl + arm_func_end NNS_G2dResetAnimCtrlState + + arm_func_start NNS_G2dInitAnimCallBackFunctor +NNS_G2dInitAnimCallBackFunctor: ; 0x020B04A8 + mov r1, #0x0 + str r1, [r0, #0x0] + str r1, [r0, #0x4] + str r1, [r0, #0x8] + strh r1, [r0, #0xc] + bx lr + arm_func_end NNS_G2dInitAnimCallBackFunctor + + arm_func_start NNS_G2dInitAnimCtrl +NNS_G2dInitAnimCtrl: ; 0x020B04C0 + stmdb sp!, {r4,lr} + mov r4, r0 + add r0, r4, #0x1c + bl NNS_G2dInitAnimCallBackFunctor + mov r1, #0x0 + str r1, [r4, #0x0] + str r1, [r4, #0x4] + mov r0, #0x1 + str r0, [r4, #0x8] + str r1, [r4, #0xc] + mov r0, #0x1000 + str r0, [r4, #0x10] + str r1, [r4, #0x14] + str r1, [r4, #0x18] + ldmia sp!, {r4,pc} + arm_func_end NNS_G2dInitAnimCtrl + + arm_func_start NNS_G2dGetAnimCtrlCurrentFrame +NNS_G2dGetAnimCtrlCurrentFrame: ; 0x020B04FC + ldr r1, [r0, #0x18] + ldr r2, [r0, #0x0] + ldr r0, [r1, #0xc] + sub r0, r2, r0 + mov r0, r0, lsl #0xd + mov r0, r0, lsr #0x10 + bx lr + arm_func_end NNS_G2dGetAnimCtrlCurrentFrame + + arm_func_start NNS_G2dSetAnimCtrlCurrentFrame +NNS_G2dSetAnimCtrlCurrentFrame: ; 0x020B0518 + stmdb sp!, {r4,lr} + mov r4, r0 + bl SetAnimCtrlCurrentFrameImpl_ + cmp r0, #0x0 + movne r1, #0x0 + strne r1, [r4, #0xc] + ldmia sp!, {r4,pc} + arm_func_end NNS_G2dSetAnimCtrlCurrentFrame + + arm_func_start NNS_G2dTickAnimCtrl +NNS_G2dTickAnimCtrl: ; 0x020B0534 + stmdb sp!, {r4-r8,lr} + mov r8, r0 + ldr r0, [r8, #0x8] + mov r7, #0x0 + cmp r0, #0x1 + movne r0, r7 + ldmneia sp!, {r4-r8,pc} + ldr r2, [r8, #0x10] + mov r0, #0x800 + smull r3, r1, r2, r1 + adds r0, r3, r0 + adc r1, r1, r7 + mov r0, r0, lsr #0xc + orr r0, r0, r1, lsl #0x14 + bl abs + ldr r1, [r8, #0xc] + add r6, r8, #0xc + add r0, r1, r0 + str r0, [r8, #0xc] + mov r4, r7 + mov r5, #0x1 + b _020B06A8 +_020B058C: + ldr r0, [r8, #0x0] + ldr r1, [r6, #0x0] + ldrh r0, [r0, #0x4] + mov r7, r5 + sub r0, r1, r0, lsl #0xc + str r0, [r6, #0x0] + ldr r0, [r8, #0x10] + cmp r0, #0x0 + movgt r1, r5 + ldr r0, [r8, #0x4] + movle r1, r4 + eors r0, r1, r0 + ldrne r0, [r8, #0x0] + addne r0, r0, #0x8 + strne r0, [r8, #0x0] + ldreq r0, [r8, #0x0] + subeq r0, r0, #0x8 + streq r0, [r8, #0x0] + ldr r1, [r8, #0x10] + ldr r0, [r8, #0x0] + cmp r1, #0x0 + movgt r2, r5 + ldr r1, [r8, #0x4] + movle r2, r4 + eors r1, r2, r1 + beq _020B0614 + ldr r2, [r8, #0x18] + ldrh r1, [r2, #0x0] + ldr r2, [r2, #0xc] + add r1, r2, r1, lsl #0x3 + cmp r0, r1 + movcs r0, r5 + movcc r0, r4 + b _020B0634 +_020B0614: + ldr r2, [r8, #0x18] + ldrh r1, [r2, #0x2] + ldr r2, [r2, #0xc] + add r1, r2, r1, lsl #0x3 + sub r1, r1, #0x8 + cmp r0, r1 + movls r0, r5 + movhi r0, r4 +_020B0634: + cmp r0, #0x0 + beq _020B0644 + mov r0, r8 + bl SequenceEdgeHandle_ +_020B0644: + ldr r0, [r8, #0x1c] + cmp r0, #0x0 + beq _020B06A8 + ldr r0, [r8, #0x18] + ldr r2, [r8, #0x1c] + ldr r1, [r8, #0x0] + ldr r0, [r0, #0xc] + cmp r2, #0x2 + sub r0, r1, r0 + mov r0, r0, lsl #0xd + mov r1, r0, lsr #0x10 + beq _020B0680 + cmp r2, #0x3 + beq _020B069C + b _020B06A8 +_020B0680: + ldrh r0, [r8, #0x28] + cmp r1, r0 + bne _020B06A8 + ldr r0, [r8, #0x20] + ldr r2, [r8, #0x24] + blx r2 + b _020B06A8 +_020B069C: + ldr r0, [r8, #0x20] + ldr r2, [r8, #0x24] + blx r2 +_020B06A8: + ldr r0, [r8, #0x8] + cmp r0, #0x0 + beq _020B06CC + ldr r0, [r8, #0x0] + ldr r1, [r8, #0xc] + ldrh r0, [r0, #0x4] + cmp r1, r0, lsl #0xc + movge r0, r5 + bge _020B06D0 +_020B06CC: + mov r0, r4 +_020B06D0: + cmp r0, #0x0 + bne _020B058C + mov r0, r7 + ldmia sp!, {r4-r8,pc} + arm_func_end NNS_G2dTickAnimCtrl + + arm_func_start NNS_G2dGetAnimCtrlCurrentElement +NNS_G2dGetAnimCtrlCurrentElement: ; 0x020B06E0 + ldr r0, [r0, #0x0] + ldr r0, [r0, #0x0] + bx lr + arm_func_end NNS_G2dGetAnimCtrlCurrentElement + + arm_func_start SetAnimCtrlCurrentFrameImpl_ +SetAnimCtrlCurrentFrameImpl_: ; 0x020B06EC + ldr r3, [r0, #0x18] + ldrh r2, [r3, #0x0] + cmp r1, r2 + ldrcc r2, [r3, #0xc] + addcc r1, r2, r1, lsl #0x3 + strcc r1, [r0, #0x0] + movcc r0, #0x1 + movcs r0, #0x0 + bx lr + arm_func_end SetAnimCtrlCurrentFrameImpl_ + + arm_func_start SequenceEdgeHandle_ +SequenceEdgeHandle_: ; 0x020B0710 + stmdb sp!, {r4,lr} + mov r4, r0 + ldr r0, [r4, #0x14] + cmp r0, #0x0 + ldreq r0, [r4, #0x18] + ldreq r0, [r0, #0x8] + cmp r0, #0x3 + beq _020B0738 + cmp r0, #0x4 + bne _020B07B4 +_020B0738: + ldr r0, [r4, #0x4] + eor r0, r0, #0x1 + str r0, [r4, #0x4] + ldr r1, [r4, #0x18] + ldr r2, [r4, #0x0] + ldrh r0, [r1, #0x2] + ldr r1, [r1, #0xc] + add r0, r1, r0, lsl #0x3 + sub r0, r0, #0x8 + cmp r2, r0 + bhi _020B0800 + ldr r0, [r4, #0x1c] + cmp r0, #0x1 + bne _020B0780 + ldr r0, [r4, #0x20] + ldr r1, [r4, #0xc] + ldr r2, [r4, #0x24] + blx r2 +_020B0780: + ldr r0, [r4, #0x14] + cmp r0, #0x0 + ldreq r0, [r4, #0x18] + ldreq r0, [r0, #0x8] + cmp r0, #0x2 + beq _020B07A8 + cmp r0, #0x4 + movne r0, #0x0 + strne r0, [r4, #0x8] + bne _020B0800 +_020B07A8: + mov r0, r4 + bl NNS_G2dResetAnimCtrlState + b _020B0800 +_020B07B4: + ldr r0, [r4, #0x1c] + cmp r0, #0x1 + bne _020B07D0 + ldr r0, [r4, #0x20] + ldr r1, [r4, #0xc] + ldr r2, [r4, #0x24] + blx r2 +_020B07D0: + ldr r0, [r4, #0x14] + cmp r0, #0x0 + ldreq r0, [r4, #0x18] + ldreq r0, [r0, #0x8] + cmp r0, #0x2 + beq _020B07F8 + cmp r0, #0x4 + movne r0, #0x0 + strne r0, [r4, #0x8] + bne _020B0800 +_020B07F8: + mov r0, r4 + bl NNS_G2dResetAnimCtrlState +_020B0800: + ldr r1, [r4, #0x18] + ldr r2, [r4, #0x0] + ldrh r0, [r1, #0x0] + ldr r1, [r1, #0xc] + add r0, r1, r0, lsl #0x3 + sub r0, r0, #0x8 + cmp r2, r0 + strhi r0, [r4, #0x0] + ldmhiia sp!, {r4,pc} + cmp r2, r1 + strcc r1, [r4, #0x0] + ldmia sp!, {r4,pc} + arm_func_end SequenceEdgeHandle_ diff --git a/arm9/asm/NNS_G2D_g2d_cellanimati.s b/arm9/asm/NNS_G2D_g2d_cellanimati.s new file mode 100644 index 00000000..31720d7a --- /dev/null +++ b/arm9/asm/NNS_G2D_g2d_cellanimati.s @@ -0,0 +1,417 @@ + .include "asm/macros.inc" + .include "global.inc" + + .section .text + + arm_func_start NNS_G2dMakeCellToOams +NNS_G2dMakeCellToOams: ; 0x020B1AF8 + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0x34 + ldrh r5, [r2, #0x0] + ldr r4, [sp, #0x60] + ldr r10, [sp, #0x58] + str r4, [sp, #0x60] + cmp r1, r5 + movcs r1, r5 + mov r4, #0x0 + cmp r1, #0x0 + str r4, [sp, #0x0] + bls _020B1E7C + ldrh r4, [sp, #0x5c] + mov r4, r4, lsl #0x19 + str r4, [sp, #0x4] + ldr r4, [sp, #0x0] + str r4, [sp, #0x14] + mov r4, #0x100 + str r4, [sp, #0xc] + mov r4, #0x300 + str r4, [sp, #0x8] + mov r4, #0x1 + str r4, [sp, #0x10] +_020B1B54: + ldr r5, [sp, #0x0] + mov r6, #0x6 + mul r6, r5, r6 + ldr r8, [r2, #0x4] + ldr r4, [sp, #0x0] + add r7, r0, r5, lsl #0x3 + ldrh r5, [r8, r6] + mov r4, r4, lsl #0x3 + add r9, r8, r6 + strh r5, [r0, r4] + ldrh r4, [r9, #0x2] + cmp r3, #0x0 + strh r4, [r7, #0x2] + ldrh r4, [r9, #0x4] + strh r4, [r7, #0x4] + bne _020B1B9C + cmp r10, #0x0 + beq _020B1E60 +_020B1B9C: + ldr r5, [r7, #0x0] + ldr r4, _020B1E88 ; =0x01FF0000 + and r4, r5, r4 + mov r4, r4, lsr #0x10 + mov r4, r4, lsl #0x10 + mov r4, r4, asr #0x10 + cmp r4, #0xff + orrgt r4, r4, #0xff00 + movgt r4, r4, lsl #0x10 + movgt r4, r4, asr #0x10 + mov r4, r4, lsl #0xc + str r4, [sp, #0x20] + ldr r4, [r7, #0x0] + and r4, r4, #0xff + mov r4, r4, lsl #0x10 + mov r4, r4, asr #0x10 + cmp r4, #0x7f + orrgt r4, r4, #0xff00 + movgt r4, r4, lsl #0x10 + movgt r4, r4, asr #0x10 + mov r4, r4, lsl #0xc + str r4, [sp, #0x24] + cmp r3, #0x0 + beq _020B1E00 + ldr r5, [r7, #0x0] + and r6, r5, #0x300 + cmp r6, #0x100 + beq _020B1C1C + cmp r6, #0x300 + beq _020B1C1C + and r4, r5, #0x30000000 + orr r6, r6, r4 +_020B1C1C: + cmp r6, #0x300 + bne _020B1C70 + ldr r4, _020B1E8C ; =0xC000C000 + ldr r8, _020B1E90 ; =NNSi_objSizeWTbl + and r5, r5, r4 + and r4, r5, #0xc000 + mov r6, r4, asr #0xe + and r4, r5, #0xc0000000 + mov r4, r4, lsr #0x1e + mov r4, r4, lsl #0x1 + add r8, r8, r6, lsl #0x3 + ldrh r9, [r4, r8] + ldr r8, _020B1E94 ; =NNSi_objSizeHTbl + ldr r5, [sp, #0x20] + add r6, r8, r6, lsl #0x3 + add r5, r5, r9, lsl #0xb + str r5, [sp, #0x20] + ldrh r4, [r4, r6] + ldr r5, [sp, #0x24] + add r4, r5, r4, lsl #0xb + str r4, [sp, #0x24] +_020B1C70: + ldr r4, [sp, #0x60] + ldr r5, [r3, #0x8] + cmp r4, #0x0 + ldrne r8, [sp, #0x8] + add r4, sp, #0x20 + ldreq r8, [sp, #0xc] + mov r6, r4 + cmp r8, #0x300 + ldreq r9, [sp, #0x10] + mov r12, #0x1000 + ldrne r9, [sp, #0x14] + cmp r4, r4 + ldr r4, [sp, #0x24] + addeq r6, sp, #0x28 + smull r11, r4, r5, r4 + adds r5, r11, r12 + adc r11, r4, #0x0 + ldr r4, [r3, #0x0] + ldr lr, [sp, #0x20] + smlal r5, r11, r4, lr + mov r4, r5, lsr #0xc + orr r4, r4, r11, lsl #0x14 + str r4, [r6, #0x0] + ldr r4, [r3, #0xc] + ldr r5, [sp, #0x24] + ldr lr, [r3, #0x4] + smull r11, r5, r4, r5 + adds r11, r11, r12 + adc r4, r5, #0x0 + add r5, sp, #0x28 + cmp r6, r5 + ldr r5, [sp, #0x20] + smlal r11, r4, lr, r5 + mov r5, r11, lsr #0xc + orr r5, r5, r4, lsl #0x14 + str r5, [r6, #0x4] + ldreq r5, [sp, #0x28] + ldreq r4, [sp, #0x2c] + streq r5, [sp, #0x20] + streq r4, [sp, #0x24] + cmp r8, #0x100 + beq _020B1D38 + cmp r8, #0x300 + beq _020B1D38 + ldr r5, [r7, #0x0] + ldr r4, _020B1E98 ; =0xC1FFFCFF + and r4, r5, r4 + orr r4, r4, r8 + str r4, [r7, #0x0] + b _020B1D54 +_020B1D38: + ldr r5, [r7, #0x0] + ldr r4, _020B1E98 ; =0xC1FFFCFF + and r4, r5, r4 + orr r5, r4, r8 + ldr r4, [sp, #0x4] + orr r4, r4, r5 + str r4, [r7, #0x0] +_020B1D54: + ldr r6, [r7, #0x0] + ldr r5, _020B1E8C ; =0xC000C000 + cmp r9, #0x0 + and r8, r6, r5 + and r5, r8, #0xc000 + mov r6, r5, asr #0xe + and r5, r8, #0xc0000000 + ldr r8, _020B1E90 ; =NNSi_objSizeWTbl + mov r5, r5, lsr #0x1e + mov r5, r5, lsl #0x1 + add r8, r8, r6, lsl #0x3 + ldrh r9, [r5, r8] + ldr r8, _020B1E94 ; =NNSi_objSizeHTbl + ldr r4, [sp, #0x20] + add r6, r8, r6, lsl #0x3 + mov r11, r9, asr #0x1 + ldrh r5, [r5, r6] + mov r8, r11, lsl #0xc + ldr r6, [r3, #0x0] + rsb r12, r8, #0x0 + mov r9, r5, asr #0x1 + mla r12, r6, r11, r12 + ldr r5, [r3, #0x8] + mla r6, r5, r9, r12 + add r6, r4, r6 + str r6, [sp, #0x20] + ldr r12, [r3, #0x4] + mov r5, r9, lsl #0xc + str r12, [sp, #0x1c] + ldr r12, [r3, #0xc] + rsb lr, r5, #0x0 + str r12, [sp, #0x18] + ldr r12, [sp, #0x1c] + ldr r4, [sp, #0x24] + mla r11, r12, r11, lr + ldr r12, [sp, #0x18] + subne r6, r6, r8 + mla r9, r12, r9, r11 + add r4, r4, r9 + str r4, [sp, #0x24] + subne r4, r4, r5 + strne r6, [sp, #0x20] + strne r4, [sp, #0x24] +_020B1E00: + cmp r10, #0x0 + beq _020B1E28 + ldr r6, [sp, #0x20] + ldr r4, [r10, #0x0] + ldr r5, [sp, #0x24] + add r4, r6, r4 + str r4, [sp, #0x20] + ldr r4, [r10, #0x4] + add r4, r5, r4 + str r4, [sp, #0x24] +_020B1E28: + ldr r4, [sp, #0x20] + ldr r6, [r7, #0x0] + add r5, r4, #0x800 + ldr r4, _020B1E9C ; =0x000001FF + and r4, r4, r5, asr #0xc + ldr r5, _020B1EA0 ; =0xFE00FF00 + and r6, r6, r5 + ldr r5, [sp, #0x24] + add r5, r5, #0x800 + mov r5, r5, asr #0xc + and r5, r5, #0xff + orr r5, r6, r5 + orr r4, r5, r4, lsl #0x10 + str r4, [r7, #0x0] +_020B1E60: + ldr r4, [sp, #0x0] + add r4, r4, #0x1 + mov r4, r4, lsl #0x10 + mov r4, r4, lsr #0x10 + str r4, [sp, #0x0] + cmp r4, r1 + blo _020B1B54 +_020B1E7C: + mov r0, r1 + add sp, sp, #0x34 + ldmia sp!, {r4-r11,pc} + .balign 4 +_020B1E88: .word 0x01FF0000 +_020B1E8C: .word 0xC000C000 +_020B1E90: .word NNSi_objSizeWTbl +_020B1E94: .word NNSi_objSizeHTbl +_020B1E98: .word 0xC1FFFCFF +_020B1E9C: .word 0x000001FF +_020B1EA0: .word 0xFE00FF00 + arm_func_end NNS_G2dMakeCellToOams + + arm_func_start NNS_G2dSetCellAnimationCurrentFrame +NNS_G2dSetCellAnimationCurrentFrame: ; 0x020B1EA4 + stmdb sp!, {r4,lr} + mov r4, r0 + bl NNS_G2dSetAnimCtrlCurrentFrame + cmp r0, #0x0 + ldmeqia sp!, {r4,pc} + mov r0, r4 + bl ApplyCurrentAnimResult_ + ldmia sp!, {r4,pc} + arm_func_end NNS_G2dSetCellAnimationCurrentFrame + + arm_func_start NNS_G2dTickCellAnimation +NNS_G2dTickCellAnimation: ; 0x020B1EC4 + stmdb sp!, {r4,lr} + mov r4, r0 + bl NNS_G2dTickAnimCtrl + cmp r0, #0x0 + ldmeqia sp!, {r4,pc} + mov r0, r4 + bl ApplyCurrentAnimResult_ + ldmia sp!, {r4,pc} + arm_func_end NNS_G2dTickCellAnimation + + arm_func_start NNS_G2dSetCellAnimationSequence +NNS_G2dSetCellAnimationSequence: ; 0x020B1EE4 + stmdb sp!, {r4,lr} + mov r4, r0 + bl NNS_G2dBindAnimCtrl + mov r0, r4 + bl ApplyCurrentAnimResult_ + ldmia sp!, {r4,pc} + arm_func_end NNS_G2dSetCellAnimationSequence + + arm_func_start NNS_G2dInitCellAnimationVramTransfered +NNS_G2dInitCellAnimationVramTransfered: ; 0x020B1EFC + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x14 + mov r4, r2 + ldr r2, [r4, #0xc] + mov r5, r1 + ldr r1, [r2, #0x0] + ldr r2, [sp, #0x34] + str r1, [sp, #0x0] + ldr r1, [sp, #0x38] + str r2, [sp, #0x4] + mov r6, r3 + mov r7, r0 + ldr r12, [sp, #0x3c] + str r1, [sp, #0x8] + ldr r1, [sp, #0x28] + ldr r2, [sp, #0x2c] + ldr r3, [sp, #0x30] + mov r0, r6 + str r12, [sp, #0xc] + bl NNSi_G2dInitCellTransferState + str r6, [r7, #0x34] + str r4, [r7, #0x30] + add r0, r7, #0x38 + mov r1, #0x1 + str r6, [r7, #0x34] + bl NNSi_G2dSrtcInitControl + mov r0, r7 + bl NNS_G2dInitAnimCtrl + mov r0, r7 + mov r1, r5 + bl NNS_G2dSetCellAnimationSequence + add sp, sp, #0x14 + ldmia sp!, {r4-r7,pc} + arm_func_end NNS_G2dInitCellAnimationVramTransfered + + arm_func_start NNS_G2dInitCellAnimation +NNS_G2dInitCellAnimation: ; 0x020B1F80 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r5, r0 + mov r4, r1 + str r2, [r5, #0x30] + mvn r2, #0x0 + add r0, r5, #0x38 + mov r1, #0x1 + str r2, [r5, #0x34] + bl NNSi_G2dSrtcInitControl + mov r0, r5 + bl NNS_G2dInitAnimCtrl + mov r0, r5 + mov r1, r4 + bl NNS_G2dSetCellAnimationSequence + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + arm_func_end NNS_G2dInitCellAnimation + + arm_func_start ApplyCurrentAnimResult_ +ApplyCurrentAnimResult_: ; 0x020B1FC4 + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + mov r5, r0 + ldr r1, [r5, #0x0] + ldrh r1, [r1, #0x4] + cmp r1, #0x0 + addeq sp, sp, #0x4 + ldmeqia sp!, {r4-r7,pc} + bl NNS_G2dGetAnimCtrlCurrentElement + mov r4, r0 + ldr r7, [r5, #0x30] + ldrh r1, [r4, #0x0] + mov r0, r7 + bl NNS_G2dGetCellDataByIdx + str r0, [r5, #0x2c] + ldr r1, [r5, #0x18] + add r0, r5, #0x38 + ldr r2, [r1, #0x4] + mov r1, #0x1 + and r6, r2, #0xff + bl NNSi_G2dSrtcInitControl + cmp r6, #0x0 + beq _020B2068 + cmp r6, #0x2 + bne _020B203C + ldrsh r1, [r4, #0x4] + ldrsh r2, [r4, #0x6] + add r0, r5, #0x38 + bl NNSi_G2dSrtcSetTrans + b _020B2068 +_020B203C: + ldr r1, [r4, #0x4] + ldr r2, [r4, #0x8] + add r0, r5, #0x38 + bl NNSi_G2dSrtcSetSRTScale + ldrh r1, [r4, #0x2] + add r0, r5, #0x38 + bl NNSi_G2dSrtcSetSRTRotZ + ldrsh r1, [r4, #0xc] + ldrsh r2, [r4, #0xe] + add r0, r5, #0x38 + bl NNSi_G2dSrtcSetTrans +_020B2068: + ldr r2, [r7, #0xc] + cmp r2, #0x0 + movne r0, #0x1 + moveq r0, #0x0 + cmp r0, #0x0 + addeq sp, sp, #0x4 + ldmeqia sp!, {r4-r7,pc} + ldr r1, [r5, #0x34] + mvn r0, #0x0 + cmp r1, r0 + movne r0, #0x1 + moveq r0, #0x0 + cmp r0, #0x0 + addeq sp, sp, #0x4 + ldmeqia sp!, {r4-r7,pc} + ldrh r1, [r4, #0x0] + ldr r2, [r2, #0x4] + ldr r0, [r5, #0x34] + add r3, r2, r1, lsl #0x3 + ldr r1, [r2, r1, lsl #0x3] + ldr r2, [r3, #0x4] + bl NNS_G2dSetCellTransferStateRequested + add sp, sp, #0x4 + ldmia sp!, {r4-r7,pc} + arm_func_end ApplyCurrentAnimResult_ diff --git a/arm9/asm/NNS_G2D_g2d_celltransfe.s b/arm9/asm/NNS_G2D_g2d_celltransfe.s new file mode 100644 index 00000000..0e41bdba --- /dev/null +++ b/arm9/asm/NNS_G2D_g2d_celltransfe.s @@ -0,0 +1,286 @@ + .include "asm/macros.inc" + .include "global.inc" + + .section .rodata + + .global cvtTbl$7926 +cvtTbl$7926: ; 0x020FF8C4 + .byte 0x00, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00 + ; static const in function + + .section .bss + + .global s_pTaskRegisterFunc +s_pTaskRegisterFunc: ; 0x021CECFC + .space 0x4 + + .global s_numCellState +s_numCellState: ; 0x021CED00 + .space 0x4 + + .global s_pCellStateArray +s_pCellStateArray: ; 0x021CED04 + .space 0x4 + + .section .text + + arm_func_start NNS_G2dFreeCellTransferStateHandle +NNS_G2dFreeCellTransferStateHandle: ; 0x020B4358 + stmdb sp!, {r4,lr} + ldr r2, _020B43A0 ; =s_pCellStateArray + mov r1, #0x30 + ldr r2, [r2, #0x0] + mla r4, r0, r1, r2 + mov r0, r4 + bl NNSi_G2dInitializeVRamLocation + mov r0, #0x0 + str r0, [r4, #0xc] + str r0, [r4, #0x10] + str r0, [r4, #0x14] + str r0, [r4, #0x18] + str r0, [r4, #0x1c] + str r0, [r4, #0x20] + str r0, [r4, #0x24] + str r0, [r4, #0x28] + str r0, [r4, #0x2c] + ldmia sp!, {r4,pc} + .balign 4 +_020B43A0: .word s_pCellStateArray + arm_func_end NNS_G2dFreeCellTransferStateHandle + + arm_func_start NNS_G2dGetNewCellTransferStateHandle +NNS_G2dGetNewCellTransferStateHandle: ; 0x020B43A4 + ldr r1, _020B43F8 ; =s_numCellState + mov r0, #0x0 + ldr r3, [r1, #0x0] + cmp r3, #0x0 + bls _020B43F0 + ldr r1, _020B43FC ; =s_pCellStateArray + ldr r2, [r1, #0x0] + mov r12, r2 +_020B43C4: + ldr r1, [r12, #0x1c] + cmp r1, #0x1 + movne r1, #0x30 + mlane r1, r0, r1, r2 + movne r2, #0x1 + strne r2, [r1, #0x1c] + bxne lr + add r0, r0, #0x1 + cmp r0, r3 + add r12, r12, #0x30 + blo _020B43C4 +_020B43F0: + mvn r0, #0x0 + bx lr + .balign 4 +_020B43F8: .word s_numCellState +_020B43FC: .word s_pCellStateArray + arm_func_end NNS_G2dGetNewCellTransferStateHandle + + arm_func_start NNS_G2dSetCellTransferStateRequested +NNS_G2dSetCellTransferStateRequested: ; 0x020B4400 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r5, r1 + mov r4, r2 + bl NNSi_G2dGetCellTransferState + mvn r1, #0x0 + str r1, [r0, #0x24] + str r5, [r0, #0x28] + str r4, [r0, #0x2c] + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + arm_func_end NNS_G2dSetCellTransferStateRequested + + arm_func_start NNS_G2dUpdateCellTransferStateManager +NNS_G2dUpdateCellTransferStateManager: ; 0x020B442C + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0x14 + mov r0, #0x0 + str r0, [sp, #0x0] + ldr r0, _020B4558 ; =s_numCellState + ldr r0, [r0, #0x0] + cmp r0, #0x0 + addls sp, sp, #0x14 + ldmlsia sp!, {r4-r11,pc} + ldr r0, [sp, #0x0] + mov r5, #0x1 + str r0, [sp, #0x4] + mov r11, r0 + str r0, [sp, #0x8] + str r0, [sp, #0xc] +_020B4468: + ldr r0, _020B455C ; =s_pCellStateArray + ldr r1, [r0, #0x0] + ldr r0, [sp, #0x4] + add r8, r1, r0 + ldr r0, [r8, #0x1c] + cmp r0, #0x0 + beq _020B4528 + ldr r9, [sp, #0x8] + mov r0, r9 + cmp r0, #0x3 + bge _020B4520 + add r4, r8, #0x24 +_020B4498: + mov r6, r5, lsl r9 + mov r1, r11 + ldr r0, [r8, #0x24] + ands r0, r0, r6 + beq _020B44B8 + ldr r0, [r8, #0x20] + ands r0, r0, r6 + movne r1, r5 +_020B44B8: + cmp r1, #0x0 + beq _020B4514 + ldr r0, _020B4560 ; =cvtTbl$7926 + cmp r9, #0x0 + ldr r7, [r0, r9, lsl #0x2] + ldreq r10, [r8, #0x14] + mov r0, r8 + mov r1, r9 + ldrne r10, [r8, #0x10] + bl NNSi_G2dGetVramLocation + mov r1, r0 + mov r0, r7 + ldr r7, _020B4564 ; =s_pTaskRegisterFunc + ldr r2, [r8, #0x28] + ldr r3, [r8, #0x2c] + ldr r7, [r7, #0x0] + add r2, r10, r2 + blx r7 + cmp r0, #0x0 + ldrne r1, [r4, #0x0] + mvnne r0, r6 + andne r0, r1, r0 + strne r0, [r4, #0x0] +_020B4514: + add r9, r9, #0x1 + cmp r9, #0x3 + blt _020B4498 +_020B4520: + ldr r0, [sp, #0xc] + str r0, [r8, #0x20] +_020B4528: + ldr r0, _020B4558 ; =s_numCellState + ldr r1, [r0, #0x0] + ldr r0, [sp, #0x0] + add r0, r0, #0x1 + str r0, [sp, #0x0] + cmp r0, r1 + ldr r0, [sp, #0x4] + add r0, r0, #0x30 + str r0, [sp, #0x4] + blo _020B4468 + add sp, sp, #0x14 + ldmia sp!, {r4-r11,pc} + .balign 4 +_020B4558: .word s_numCellState +_020B455C: .word s_pCellStateArray +_020B4560: .word cvtTbl$7926 +_020B4564: .word s_pTaskRegisterFunc + arm_func_end NNS_G2dUpdateCellTransferStateManager + + arm_func_start NNS_G2dInitCellTransferStateManager +NNS_G2dInitCellTransferStateManager: ; 0x020B4568 + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + ldr ip, _020B45E4 ; =s_pTaskRegisterFunc + movs r6, r1 + ldr r1, _020B45E8 ; =s_numCellState + ldr r3, _020B45EC ; =s_pCellStateArray + mov r7, r0 + str r2, [r12, #0x0] + mov r5, #0x0 + addeq sp, sp, #0x4 + str r7, [r3, #0x0] + str r6, [r1, #0x0] + ldmeqia sp!, {r4-r7,pc} + mov r4, r5 +_020B45A0: + mov r0, r7 + bl NNSi_G2dInitializeVRamLocation + str r4, [r7, #0xc] + str r4, [r7, #0x10] + str r4, [r7, #0x14] + str r4, [r7, #0x18] + str r4, [r7, #0x1c] + str r4, [r7, #0x20] + str r4, [r7, #0x24] + str r4, [r7, #0x28] + add r5, r5, #0x1 + str r4, [r7, #0x2c] + cmp r5, r6 + add r7, r7, #0x30 + blo _020B45A0 + add sp, sp, #0x4 + ldmia sp!, {r4-r7,pc} + .balign 4 +_020B45E4: .word s_pTaskRegisterFunc +_020B45E8: .word s_numCellState +_020B45EC: .word s_pCellStateArray + arm_func_end NNS_G2dInitCellTransferStateManager + + arm_func_start NNSi_G2dInitCellTransferState +NNSi_G2dInitCellTransferState: ; 0x020B45F0 + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + ldr ip, _020B4698 ; =s_pCellStateArray + mov r4, #0x30 + ldr r12, [r12, #0x0] + mov r7, r1 + mla r4, r0, r4, r12 + mov r0, r4 + mov r6, r2 + mov r5, r3 + bl NNSi_G2dInitializeVRamLocation + mvn r0, #0x0 + cmp r7, r0 + beq _020B4638 + mov r0, r4 + mov r2, r7 + mov r1, #0x0 + bl NNSi_G2dSetVramLocation +_020B4638: + mvn r0, #0x0 + cmp r6, r0 + beq _020B4654 + mov r0, r4 + mov r2, r6 + mov r1, #0x1 + bl NNSi_G2dSetVramLocation +_020B4654: + mvn r0, #0x0 + cmp r5, r0 + beq _020B4670 + mov r0, r4 + mov r2, r5 + mov r1, #0x2 + bl NNSi_G2dSetVramLocation +_020B4670: + ldr r1, [sp, #0x18] + ldr r0, [sp, #0x1c] + str r1, [r4, #0xc] + ldr r1, [sp, #0x20] + str r0, [r4, #0x10] + ldr r0, [sp, #0x24] + str r1, [r4, #0x14] + str r0, [r4, #0x18] + add sp, sp, #0x4 + ldmia sp!, {r4-r7,pc} + .balign 4 +_020B4698: .word s_pCellStateArray + arm_func_end NNSi_G2dInitCellTransferState + + arm_func_start NNSi_G2dGetCellTransferState +NNSi_G2dGetCellTransferState: ; 0x020B469C + ldr r2, _020B46B0 ; =s_pCellStateArray + mov r1, #0x30 + ldr r2, [r2, #0x0] + mla r0, r1, r0, r2 + bx lr + .balign 4 +_020B46B0: .word s_pCellStateArray + arm_func_end NNSi_G2dGetCellTransferState diff --git a/arm9/asm/NNS_G2D_g2d_charcanvas.s b/arm9/asm/NNS_G2D_g2d_charcanvas.s new file mode 100644 index 00000000..6f483596 --- /dev/null +++ b/arm9/asm/NNS_G2D_g2d_charcanvas.s @@ -0,0 +1,1357 @@ + .include "asm/macros.inc" + .include "global.inc" + + .section .rodata + + .global objs$8221 +objs$8221: ; 0x020FF970 + .byte 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x01, 0x01, 0x01, 0x02, 0x01, 0x02, 0x01 + .byte 0x00, 0x02, 0x01, 0x02, 0x02, 0x02, 0x03, 0x02, 0x00, 0x02, 0x01, 0x02, 0x02, 0x03, 0x03, 0x03 + + .global shape$8277 +shape$8277: ; 0x020FF990 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x40, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00 + .byte 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x40, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00 + .byte 0x00, 0x80, 0x00, 0x40, 0x00, 0x80, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x40, 0x00, 0xC0 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0xC0, 0x00, 0x00, 0x00, 0xC0 + + .section .text + + arm_func_start NNS_G2dArrangeOBJ1D +NNS_G2dArrangeOBJ1D: ; 0x020B5E50 + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0x3c + mov r7, r0 + mov r0, r1 + cmp r0, #0x8 + ldr r0, [sp, #0x60] + str r1, [sp, #0x10] + str r0, [sp, #0x60] + ldr r0, [sp, #0x6c] + str r2, [sp, #0x14] + str r0, [sp, #0x6c] + ldrlt r0, [sp, #0x10] + mov r11, r3 + ldr r6, [sp, #0x64] + ldr r5, [sp, #0x68] + movge r2, #0x3 + clzlt r0, r0 + rsblt r2, r0, #0x1f + ldr r0, [sp, #0x14] + cmp r0, #0x8 + ldrlt r0, [sp, #0x14] + movge r1, #0x3 + clzlt r0, r0 + rsblt r1, r0, #0x1f + ldr r0, _020B6170 ; =objs$8221 + mvn r3, #0x0 + add r1, r0, r1, lsl #0x3 + add r0, r1, r2, lsl #0x1 + ldrb r4, [r1, r2, lsl #0x1] + ldrb r1, [r0, #0x1] + ldr r2, [sp, #0x14] + cmp r6, #0x0 + str r1, [sp, #0x18] + ldr r1, [sp, #0x10] + and r1, r1, r3, lsl r4 + str r1, [sp, #0x1c] + ldr r1, [sp, #0x18] + and r1, r2, r3, lsl r1 + str r1, [sp, #0x20] + moveq r1, #0x1 + streq r1, [sp, #0x24] + movne r1, #0x2 + strne r1, [sp, #0x24] + mov r1, #0x0 + str r1, [sp, #0x28] + bl OBJSizeToShape + ldr r1, [sp, #0x10] + ldr r2, [sp, #0x14] + mov r10, r1, asr r4 + ldr r1, [sp, #0x18] + mov r1, r2, asr r1 + str r1, [sp, #0x2c] + ldr r1, [sp, #0x24] + mov r2, r1, lsl r4 + ldr r1, [sp, #0x18] + mov r2, r2, lsl r1 + ldr r1, [sp, #0x6c] + mov r9, r2, asr r1 + mov r1, #0x0 + str r1, [sp, #0x30] + str r1, [sp, #0x34] + b _020B5FE8 +_020B5F48: + ldr r2, [sp, #0x30] + ldr r1, [sp, #0x18] + ldr r8, [sp, #0x34] + mov r2, r2, lsl r1 + ldr r1, [sp, #0x60] + add lr, r1, r2, lsl #0x3 + b _020B5FD4 +_020B5F64: + mov r1, r8, lsl r4 + add r2, r11, r1, lsl #0x3 + ldr r1, _020B6174 ; =0x000001FF + ldr r3, [r7, #0x0] + and r12, r2, r1 + ldr r1, _020B6178 ; =0xFE00FF00 + and r2, lr, #0xff + and r1, r3, r1 + orr r1, r1, r2 + orr r1, r1, r12, lsl #0x10 + str r1, [r7, #0x0] + ldr r3, [r7, #0x0] + ldr r1, _020B617C ; =0x3FFF3FFF + mov r2, #0x400 + and r1, r3, r1 + orr r1, r1, r0 + str r1, [r7, #0x0] + rsb r1, r2, #0x0 + ldrh r2, [r7, #0x4] + add r8, r8, #0x1 + and r1, r2, r1 + orr r1, r1, r5 + strh r1, [r7, #0x4] + ldr r1, [r7, #0x0] + add r5, r5, r9 + bic r1, r1, #0x2000 + orr r1, r1, r6, lsl #0xd + str r1, [r7], #0x8 +_020B5FD4: + cmp r8, r10 + blt _020B5F64 + ldr r1, [sp, #0x30] + add r1, r1, #0x1 + str r1, [sp, #0x30] +_020B5FE8: + ldr r2, [sp, #0x30] + ldr r1, [sp, #0x2c] + cmp r2, r1 + blt _020B5F48 + ldr r0, [sp, #0x28] + mla r0, r10, r1, r0 + str r0, [sp, #0x28] + ldr r1, [sp, #0x1c] + ldr r0, [sp, #0x10] + cmp r1, r0 + bhs _020B6078 + ldr r0, [sp, #0x60] + ldr r1, [sp, #0x10] + str r0, [sp, #0x0] + ldr r0, [sp, #0x1c] + str r6, [sp, #0x4] + sub r4, r1, r0 + ldr r1, [sp, #0x6c] + str r5, [sp, #0x8] + str r1, [sp, #0xc] + ldr r1, [sp, #0x1c] + ldr r2, [sp, #0x20] + add r3, r11, r1, lsl #0x3 + mov r0, r7 + mov r1, r4 + bl NNS_G2dArrangeOBJ1D + ldr r1, [sp, #0x24] + add r7, r7, r0, lsl #0x3 + mul r2, r1, r4 + ldr r1, [sp, #0x20] + mul r2, r1, r2 + ldr r1, [sp, #0x6c] + add r5, r5, r2, lsr r1 + ldr r1, [sp, #0x28] + add r0, r1, r0 + str r0, [sp, #0x28] +_020B6078: + ldr r1, [sp, #0x20] + ldr r0, [sp, #0x14] + cmp r1, r0 + bhs _020B60F0 + ldr r1, [sp, #0x60] + ldr r0, [sp, #0x20] + mov r3, r11 + add r0, r1, r0, lsl #0x3 + str r0, [sp, #0x0] + str r6, [sp, #0x4] + ldr r1, [sp, #0x14] + ldr r0, [sp, #0x20] + str r5, [sp, #0x8] + sub r4, r1, r0 + ldr r1, [sp, #0x6c] + mov r0, r7 + str r1, [sp, #0xc] + ldr r1, [sp, #0x1c] + mov r2, r4 + bl NNS_G2dArrangeOBJ1D + ldr r2, [sp, #0x24] + ldr r1, [sp, #0x1c] + add r7, r7, r0, lsl #0x3 + mul r1, r2, r1 + mul r2, r4, r1 + ldr r1, [sp, #0x6c] + add r5, r5, r2, lsr r1 + ldr r1, [sp, #0x28] + add r0, r1, r0 + str r0, [sp, #0x28] +_020B60F0: + ldr r1, [sp, #0x1c] + ldr r0, [sp, #0x10] + cmp r1, r0 + bhs _020B6164 + ldr r1, [sp, #0x20] + ldr r0, [sp, #0x14] + cmp r1, r0 + bhs _020B6164 + ldr r1, [sp, #0x60] + ldr r0, [sp, #0x20] + ldr r2, [sp, #0x10] + add r0, r1, r0, lsl #0x3 + ldr r1, [sp, #0x1c] + ldr r3, [sp, #0x14] + str r0, [sp, #0x0] + sub r1, r2, r1 + ldr r2, [sp, #0x20] + str r6, [sp, #0x4] + sub r2, r3, r2 + ldr r3, [sp, #0x1c] + ldr r4, [sp, #0x6c] + str r5, [sp, #0x8] + mov r0, r7 + add r3, r11, r3, lsl #0x3 + str r4, [sp, #0xc] + bl NNS_G2dArrangeOBJ1D + ldr r1, [sp, #0x28] + add r0, r1, r0 + str r0, [sp, #0x28] +_020B6164: + ldr r0, [sp, #0x28] + add sp, sp, #0x3c + ldmia sp!, {r4-r11,pc} + .balign 4 +_020B6170: .word objs$8221 +_020B6174: .word 0x000001FF +_020B6178: .word 0xFE00FF00 +_020B617C: .word 0x3FFF3FFF + arm_func_end NNS_G2dArrangeOBJ1D + + arm_func_start NNSi_G2dCalcRequiredOBJ +NNSi_G2dCalcRequiredOBJ: ; 0x020B6180 + stmdb sp!, {r4-r6,lr} + mov r3, r0, lsr #0x3 + mov r6, r1, lsr #0x3 + mul r12, r3, r6 + and r2, r0, #0x4 + and lr, r0, #0x2 + and r0, r0, #0x1 + add r4, r0, lr, lsr #0x1 + mov r5, r2, lsr #0x2 + and r0, r1, #0x4 + add lr, r12, #0x0 + add r12, r5, r4, lsl #0x1 + mla r12, r6, r12, lr + and lr, r1, #0x2 + and r1, r1, #0x1 + add lr, r1, lr, lsr #0x1 + mov r1, r0, lsr #0x2 + add r1, r1, lr, lsl #0x1 + mla r12, r3, r1, r12 + add r1, r4, r2, lsr #0x2 + add r0, lr, r0, lsr #0x2 + mla r0, r1, r0, r12 + ldmia sp!, {r4-r6,pc} + arm_func_end NNSi_G2dCalcRequiredOBJ + + arm_func_start NNS_G2dMapScrToChar256x16Pltt +NNS_G2dMapScrToChar256x16Pltt: ; 0x020B61DC + stmdb sp!, {r4-r8,lr} + ldr r12, [sp, #0x1c] + ldr r8, [sp, #0x18] + mov r12, r12, lsl #0x1c + mov r4, r12, lsr #0x10 + mov r6, #0x0 + cmp r2, #0x0 + ldmleia sp!, {r4-r8,pc} + mov lr, r3, lsl #0x1 + mov r12, r6 +_020B6204: + mov r5, r0 + mov r7, r12 + cmp r1, #0x0 + ble _020B622C +_020B6214: + orr r3, r4, r8 + add r7, r7, #0x1 + cmp r7, r1 + add r8, r8, #0x1 + strh r3, [r5], #0x2 + blt _020B6214 +_020B622C: + add r6, r6, #0x1 + cmp r6, r2 + add r0, r0, lr + blt _020B6204 + ldmia sp!, {r4-r8,pc} + arm_func_end NNS_G2dMapScrToChar256x16Pltt + + arm_func_start NNS_G2dMapScrToCharText +NNS_G2dMapScrToCharText: ; 0x020B6240 + stmdb sp!, {r4-r8,lr} + sub sp, sp, #0x8 + ldr r5, [sp, #0x24] + ldr lr, [sp, #0x20] + cmp r5, #0x20 + ldr r12, [sp, #0x28] + bgt _020B6280 + mla r4, r5, lr, r3 + ldr lr, [sp, #0x2c] + str r12, [sp, #0x0] + mov r3, r5 + add r0, r0, r4, lsl #0x1 + str lr, [sp, #0x4] + bl NNS_G2dMapScrToChar256x16Pltt + add sp, sp, #0x8 + ldmia sp!, {r4-r8,pc} +_020B6280: + ldr r4, [sp, #0x2c] + add r7, lr, r2 + mov r2, r4, lsl #0x1c + cmp lr, r7 + add r8, r3, r1 + mov r4, r2, lsr #0x10 + addge sp, sp, #0x8 + ldmgeia sp!, {r4-r8,pc} +_020B62A0: + cmp lr, #0x20 + movlt r1, lr + addge r1, lr, #0x20 + mov r6, r3 + cmp r3, r8 + add r5, r0, r1, lsl #0x6 + bge _020B62E4 +_020B62BC: + cmp r6, #0x20 + movlt r1, r6 + addge r1, r6, #0x3e0 + orr r2, r4, r12 + mov r1, r1, lsl #0x1 + add r6, r6, #0x1 + strh r2, [r5, r1] + cmp r6, r8 + add r12, r12, #0x1 + blt _020B62BC +_020B62E4: + add lr, lr, #0x1 + cmp lr, r7 + blt _020B62A0 + add sp, sp, #0x8 + ldmia sp!, {r4-r8,pc} + arm_func_end NNS_G2dMapScrToCharText + + arm_func_start NNS_G2dCharCanvasInitForOBJ1D +NNS_G2dCharCanvasInitForOBJ1D: ; 0x020B62F8 + stmdb sp!, {r4-r6,lr} + sub sp, sp, #0x18 + cmp r2, #0x8 + movlt r4, r2 + movge r12, #0x3 + clzlt r4, r4 + rsblt r12, r4, #0x1f + cmp r3, #0x8 + movlt r4, r3 + movge r6, #0x3 + clzlt r4, r4 + rsblt r6, r4, #0x1f + ldr r4, _020B6378 ; =objs$8221 + ldr r5, [sp, #0x28] + add r4, r4, r6, lsl #0x3 + ldrb r6, [r4, r12, lsl #0x1] + add r12, r4, r12, lsl #0x1 + ldr r4, _020B637C ; =DrawGlyph1D + strb r6, [sp, #0x14] + ldrb r6, [r12, #0x1] + ldr lr, _020B6380 ; =ClearContinuous + ldr ip, _020B6384 ; =ClearArea1D + strb r6, [sp, #0x15] + str r5, [sp, #0x0] + str r4, [sp, #0x4] + str lr, [sp, #0x8] + str r12, [sp, #0xc] + ldr r12, [sp, #0x14] + str r12, [sp, #0x10] + bl InitCharCanvas + add sp, sp, #0x18 + ldmia sp!, {r4-r6,pc} + .balign 4 +_020B6378: .word objs$8221 +_020B637C: .word DrawGlyph1D +_020B6380: .word ClearContinuous +_020B6384: .word ClearArea1D + arm_func_end NNS_G2dCharCanvasInitForOBJ1D + + arm_func_start NNS_G2dCharCanvasInitForBG +NNS_G2dCharCanvasInitForBG: ; 0x020B6388 + stmdb sp!, {lr} + sub sp, sp, #0x14 + ldr lr, [sp, #0x18] + ldr ip, _020B63C0 ; =DrawGlyphLine + str lr, [sp, #0x0] + ldr lr, _020B63C4 ; =ClearContinuous + str r12, [sp, #0x4] + ldr ip, _020B63C8 ; =ClearAreaLine + str lr, [sp, #0x8] + str r12, [sp, #0xc] + str r2, [sp, #0x10] + bl InitCharCanvas + add sp, sp, #0x14 + ldmia sp!, {pc} + .balign 4 +_020B63C0: .word DrawGlyphLine +_020B63C4: .word ClearContinuous +_020B63C8: .word ClearAreaLine + arm_func_end NNS_G2dCharCanvasInitForBG + + arm_func_start NNS_G2dCharCanvasDrawChar +NNS_G2dCharCanvasDrawChar: ; 0x020B63CC + stmdb sp!, {r4-r8,lr} + sub sp, sp, #0x10 + mov r7, r1 + ldrh r1, [sp, #0x2c] + mov r8, r0 + mov r0, r7 + mov r6, r2 + mov r5, r3 + bl NNS_G2dFontFindGlyphIndex + ldr r1, _020B6484 ; =0x0000FFFF + mov r4, r0 + cmp r4, r1 + ldreq r0, [r7, #0x0] + ldreqh r4, [r0, #0x2] + mov r0, r7 + mov r1, r4 + bl NNS_G2dFontGetCharWidthsFromIndex + str r0, [sp, #0x8] + ldr r0, [r7, #0x0] + ldr r2, [sp, #0x28] + ldr r0, [r0, #0x8] + add r1, sp, #0x8 + ldrh r3, [r0, #0x2] + add r12, r0, #0x8 + mov r0, r8 + mla r3, r4, r3, r12 + str r3, [sp, #0xc] + str r2, [sp, #0x0] + str r1, [sp, #0x4] + ldr r1, [sp, #0x8] + ldr r4, [r8, #0x14] + ldrsb r2, [r1, #0x0] + mov r1, r7 + mov r3, r5 + add r2, r6, r2 + blx r4 + ldrh r0, [r7, #0x8] + cmp r0, #0x0 + ldrne r0, [sp, #0x8] + ldrnesb r1, [r0, #0x0] + ldrneb r0, [r0, #0x1] + addne r0, r1, r0 + ldreq r0, [sp, #0x8] + ldreqsb r0, [r0, #0x2] + add sp, sp, #0x10 + ldmia sp!, {r4-r8,pc} + .balign 4 +_020B6484: .word 0x0000FFFF + arm_func_end NNS_G2dCharCanvasDrawChar + + arm_func_start InitCharCanvas +InitCharCanvas: ; 0x020B6488 + str r2, [r0, #0x4] + ldr r2, [sp, #0x0] + str r3, [r0, #0x8] + strb r2, [r0, #0xc] + ldr r2, [sp, #0x4] + str r1, [r0, #0x0] + ldr r1, [sp, #0x8] + str r2, [r0, #0x14] + ldr r2, [sp, #0xc] + str r1, [r0, #0x18] + ldr r1, [sp, #0x10] + str r2, [r0, #0x1c] + str r1, [r0, #0x10] + bx lr + arm_func_end InitCharCanvas + + arm_func_start ClearArea1D +ClearArea1D: ; 0x020B64C0 + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0x54 + ldrb r4, [r0, #0xc] + mov r10, r2 + str r1, [sp, #0xc] + str r4, [sp, #0x44] + ldr r1, [sp, #0x44] + ldr r4, [sp, #0x78] + cmp r1, #0x4 + add r1, r10, r4 + str r1, [sp, #0x1c] + ldr r2, [sp, #0x7c] + mov r1, r3 + add r1, r1, r2 + str r1, [sp, #0x20] + ldrne r1, [sp, #0xc] + str r3, [sp, #0x10] + orrne r1, r1, r1, lsl #0x8 + orrne r1, r1, r1, lsl #0x10 + strne r1, [sp, #0xc] + bne _020B6528 + ldr r1, [sp, #0xc] + orr r1, r1, r1, lsl #0x4 + orr r1, r1, r1, lsl #0x8 + orr r1, r1, r1, lsl #0x10 + str r1, [sp, #0xc] +_020B6528: + bic r1, r10, #0x7 + str r1, [sp, #0x30] + ldr r1, [sp, #0x10] + ldr r2, [r0, #0x10] + bic r1, r1, #0x7 + str r1, [sp, #0x14] + ldr r1, [sp, #0x44] + str r2, [sp, #0x4c] + mov r3, r1, lsl #0x6 + mov r2, r3, asr #0x2 + ldr r1, [sp, #0x20] + add r3, r3, r2, lsr #0x1d + ldr r2, [sp, #0x1c] + add r6, r1, #0x7 + add r2, r2, #0x7 + bic r5, r2, #0x7 + bic r2, r6, #0x7 + ldr r1, [sp, #0x30] + str r2, [sp, #0x24] + mov r2, r3, asr #0x3 + str r2, [sp, #0x48] + mov r4, r1, asr #0x2 + ldr r2, [sp, #0x30] + ldr r1, [sp, #0x14] + add r2, r2, r4, lsr #0x1d + mov r2, r2, asr #0x3 + str r2, [sp, #0x2c] + ldr r2, [sp, #0x14] + mov r1, r1, asr #0x2 + add r1, r2, r1, lsr #0x1d + mov r6, r1, asr #0x3 + ldr r1, [sp, #0x24] + cmp r2, r1 + ldr r1, [r0, #0x4] + str r1, [sp, #0x40] + ldr r1, [r0, #0x8] + ldr r0, [r0, #0x0] + str r1, [sp, #0x3c] + str r0, [sp, #0x28] + ldrb r0, [sp, #0x4c] + str r0, [sp, #0x38] + ldrb r0, [sp, #0x4d] + str r0, [sp, #0x34] + addge sp, sp, #0x54 + ldmgeia sp!, {r4-r11,pc} + mov r4, #0x0 + mov r11, #0x8 +_020B65E4: + ldr r1, [sp, #0x14] + ldr r0, [sp, #0x10] + ldr r7, [sp, #0x2c] + cmp r1, r0 + movlt r1, r0 + ldrlt r0, [sp, #0x14] + sublt r9, r1, r0 + ldr r1, [sp, #0x20] + ldr r0, [sp, #0x14] + movge r9, r4 + sub r0, r1, r0 + cmp r0, #0x8 + movgt r0, r11 + sub r0, r0, r9 + str r0, [sp, #0x18] + ldr r0, [sp, #0x30] + cmp r0, r5 + mov r8, r0 + bge _020B66B0 +_020B6630: + ldr r0, [sp, #0x38] + ldr r2, [sp, #0x40] + str r0, [sp, #0x0] + ldr r0, [sp, #0x34] + ldr r3, [sp, #0x3c] + str r0, [sp, #0x4] + mov r0, r7 + mov r1, r6 + bl GetCharIndex1D + ldr r2, [sp, #0x1c] + cmp r8, r10 + sublt r1, r10, r8 + sub r2, r2, r8 + movge r1, r4 + cmp r2, #0x8 + movgt r2, r11 + sub r3, r2, r1 + ldr r2, [sp, #0x18] + ldr r12, [sp, #0x48] + str r2, [sp, #0x0] + ldr r2, [sp, #0xc] + str r2, [sp, #0x4] + ldr r2, [sp, #0x44] + str r2, [sp, #0x8] + ldr r2, [sp, #0x28] + mla r0, r12, r0, r2 + mov r2, r9 + bl ClearChar + add r8, r8, #0x8 + add r7, r7, #0x1 + cmp r8, r5 + blt _020B6630 +_020B66B0: + ldr r0, [sp, #0x14] + add r6, r6, #0x1 + add r1, r0, #0x8 + ldr r0, [sp, #0x24] + str r1, [sp, #0x14] + cmp r1, r0 + blt _020B65E4 + add sp, sp, #0x54 + ldmia sp!, {r4-r11,pc} + arm_func_end ClearArea1D + + arm_func_start ClearAreaLine +ClearAreaLine: ; 0x020B66D4 + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0x3c + ldrb r4, [r0, #0xc] + mov r10, r2 + str r1, [sp, #0xc] + str r4, [sp, #0x2c] + ldr r1, [sp, #0x2c] + ldr r4, [sp, #0x60] + cmp r1, #0x4 + add r1, r10, r4 + str r1, [sp, #0x18] + ldr r2, [sp, #0x64] + mov r1, r3 + add r1, r1, r2 + str r1, [sp, #0x1c] + ldrne r1, [sp, #0xc] + str r3, [sp, #0x10] + orrne r1, r1, r1, lsl #0x8 + orrne r1, r1, r1, lsl #0x10 + strne r1, [sp, #0xc] + bne _020B673C + ldr r1, [sp, #0xc] + orr r1, r1, r1, lsl #0x4 + orr r1, r1, r1, lsl #0x8 + orr r1, r1, r1, lsl #0x10 + str r1, [sp, #0xc] +_020B673C: + ldr r1, [sp, #0x10] + bic r1, r1, #0x7 + mov r2, r1, asr #0x2 + str r1, [sp, #0x14] + add r1, r1, r2, lsr #0x1d + ldr r2, [r0, #0x10] + mov r3, r1, asr #0x3 + mul r1, r3, r2 + bic r3, r10, #0x7 + str r3, [sp, #0x28] + ldr r3, [sp, #0x2c] + mov r6, r3, lsl #0x6 + ldr r3, [sp, #0x28] + mov r4, r6, asr #0x2 + mov r5, r3, asr #0x2 + add r5, r3, r5, lsr #0x1d + add r4, r6, r4, lsr #0x1d + mov r3, r4, asr #0x3 + str r3, [sp, #0x30] + ldr r3, [sp, #0x1c] + add r1, r1, r5, asr #0x3 + add r4, r3, #0x7 + ldr r3, [r0, #0x0] + ldr r0, [sp, #0x18] + add r5, r0, #0x7 + ldr r0, [sp, #0x30] + bic r7, r5, #0x7 + mla r1, r0, r1, r3 + bic r0, r4, #0x7 + str r0, [sp, #0x20] + ldr r0, [sp, #0x30] + str r1, [sp, #0x24] + mul r0, r2, r0 + str r0, [sp, #0x34] + ldr r1, [sp, #0x14] + ldr r0, [sp, #0x20] + cmp r1, r0 + addge sp, sp, #0x3c + ldmgeia sp!, {r4-r11,pc} + mov r5, #0x0 + mov r4, #0x8 +_020B67E0: + ldr r1, [sp, #0x14] + ldr r0, [sp, #0x10] + ldr r6, [sp, #0x24] + cmp r1, r0 + movlt r1, r0 + ldrlt r0, [sp, #0x14] + sublt r9, r1, r0 + ldr r1, [sp, #0x1c] + ldr r0, [sp, #0x14] + movge r9, r5 + sub r0, r1, r0 + cmp r0, #0x8 + movgt r0, r4 + sub r11, r0, r9 + ldr r0, [sp, #0x28] + cmp r0, r7 + mov r8, r0 + bge _020B687C +_020B6828: + ldr r0, [sp, #0x18] + cmp r8, r10 + sublt r1, r10, r8 + sub r0, r0, r8 + movge r1, r5 + cmp r0, #0x8 + movgt r0, r4 + sub r3, r0, r1 + ldr r0, [sp, #0xc] + str r11, [sp, #0x0] + str r0, [sp, #0x4] + ldr r0, [sp, #0x2c] + mov r2, r9 + str r0, [sp, #0x8] + mov r0, r6 + bl ClearChar + ldr r0, [sp, #0x30] + add r8, r8, #0x8 + add r6, r6, r0 + cmp r8, r7 + blt _020B6828 +_020B687C: + ldr r1, [sp, #0x24] + ldr r0, [sp, #0x34] + add r0, r1, r0 + str r0, [sp, #0x24] + ldr r0, [sp, #0x14] + add r1, r0, #0x8 + ldr r0, [sp, #0x20] + str r1, [sp, #0x14] + cmp r1, r0 + blt _020B67E0 + add sp, sp, #0x3c + ldmia sp!, {r4-r11,pc} + arm_func_end ClearAreaLine + + arm_func_start ClearContinuous +ClearContinuous: ; 0x020B68AC + stmdb sp!, {lr} + sub sp, sp, #0x4 + mov r3, r0 + ldrb r2, [r3, #0xc] + ldr r12, [r3, #0x4] + cmp r2, #0x4 + orreq r0, r1, r1, lsl #0x4 + orreq r0, r0, r0, lsl #0x8 + orreq r1, r0, r0, lsl #0x10 + orrne r0, r1, r1, lsl #0x8 + orrne r1, r0, r0, lsl #0x10 + ldr r0, [r3, #0x8] + mov r2, r2, lsl #0x6 + mul lr, r12, r0 + mov r0, r2, asr #0x2 + add r0, r2, r0, lsr #0x1d + mov r2, r0, asr #0x3 + mov r0, r1 + mul r2, lr, r2 + ldr r1, [r3, #0x0] + bl MIi_CpuClearFast + add sp, sp, #0x4 + ldmia sp!, {pc} + arm_func_end ClearContinuous + + arm_func_start DrawGlyph1D +DrawGlyph1D: ; 0x020B6908 + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0x4c + ldr r7, [sp, #0x74] + ldrb r5, [r0, #0xc] + ldr r6, [r1, #0x0] + ldr r4, [r7, #0x0] + ldr r9, [r6, #0x8] + mov r8, r5, lsl #0x6 + ldrb r4, [r4, #0x1] + mov r5, r8, asr #0x2 + add r5, r8, r5, lsr #0x1d + ldrb r9, [r9, #0x1] + ldr r8, [r0, #0x4] + ldr r6, [r0, #0x8] + str r2, [sp, #0x8] + str r3, [sp, #0xc] + cmp r4, #0x0 + mov r5, r5, asr #0x3 + addeq sp, sp, #0x4c + ldmeqia sp!, {r4-r11,pc} + adds r3, r2, r4 + addmi sp, sp, #0x4c + ldmmiia sp!, {r4-r11,pc} + ldr r2, [sp, #0xc] + adds r2, r2, r9 + addmi sp, sp, #0x4c + ldmmiia sp!, {r4-r11,pc} + ldr r10, [sp, #0x8] + add r3, r3, #0x7 + cmp r10, #0x0 + movle r10, #0x0 + strle r10, [sp, #0x10] + movgt r10, r10, lsr #0x3 + strgt r10, [sp, #0x10] + ldr r10, [sp, #0xc] + add r2, r2, #0x7 + cmp r10, #0x0 + movle r10, #0x0 + mov r11, r2, lsr #0x3 + mov r3, r3, lsr #0x3 + movgt r10, r10, lsr #0x3 + cmp r3, r8 + movcs r3, r8 + cmp r11, r6 + ldr r2, [sp, #0x10] + movcs r11, r6 + subs r8, r3, r2 + addmi sp, sp, #0x4c + sub r3, r11, r10 + ldmmiia sp!, {r4-r11,pc} + cmp r3, #0x0 + addlt sp, sp, #0x4c + ldmltia sp!, {r4-r11,pc} + ldr r2, [sp, #0x8] + ldr r6, [r0, #0x0] + cmp r2, #0x0 + andge r2, r2, #0x7 + strge r2, [sp, #0x8] + ldr r2, [sp, #0xc] + ldr r11, [sp, #0x8] + cmp r2, #0x0 + andge r2, r2, #0x7 + strge r2, [sp, #0xc] + sub r8, r11, r8, lsl #0x3 + ldr r11, [sp, #0xc] + ldr r2, [sp, #0x70] + sub r3, r11, r3, lsl #0x3 + str r3, [sp, #0x14] + ldr r3, [r7, #0x4] + sub r2, r2, #0x1 + str r3, [sp, #0x28] + str r2, [sp, #0x48] + str r9, [sp, #0x38] + str r4, [sp, #0x34] + ldr r4, [r1, #0x0] + ldr r2, [sp, #0x14] + mov r3, r11 + cmp r3, r2 + ldr r2, [r4, #0x8] + ldrb r3, [r2, #0x6] + str r3, [sp, #0x40] + ldrb r2, [r0, #0xc] + str r2, [sp, #0x44] + ldr r1, [r1, #0x0] + ldr r1, [r1, #0x8] + ldrb r1, [r1, #0x0] + mul r1, r3, r1 + str r1, [sp, #0x3c] + ldr r1, [r0, #0x10] + str r1, [sp, #0x20] + ldr r1, [r0, #0x4] + ldr r0, [r0, #0x8] + ldrb r11, [sp, #0x20] + ldrb r4, [sp, #0x21] + str r1, [sp, #0x1c] + str r0, [sp, #0x18] + addle sp, sp, #0x4c + ldmleia sp!, {r4-r11,pc} +_020B6A90: + ldr r0, [sp, #0xc] + ldr r7, [sp, #0x10] + str r0, [sp, #0x30] + ldr r0, [sp, #0x8] + cmp r0, r8 + mov r9, r0 + ble _020B6AEC +_020B6AAC: + ldr r2, [sp, #0x1c] + str r11, [sp, #0x0] + ldr r3, [sp, #0x18] + mov r0, r7 + mov r1, r10 + str r4, [sp, #0x4] + bl GetCharIndex1D + mla r1, r0, r5, r6 + add r0, sp, #0x24 + str r9, [sp, #0x2c] + str r1, [sp, #0x24] + bl LetterChar + sub r9, r9, #0x8 + add r7, r7, #0x1 + cmp r9, r8 + bgt _020B6AAC +_020B6AEC: + ldr r0, [sp, #0xc] + add r10, r10, #0x1 + sub r1, r0, #0x8 + ldr r0, [sp, #0x14] + str r1, [sp, #0xc] + cmp r1, r0 + bgt _020B6A90 + add sp, sp, #0x4c + ldmia sp!, {r4-r11,pc} + arm_func_end DrawGlyph1D + + arm_func_start DrawGlyphLine +DrawGlyphLine: ; 0x020B6B10 + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0x2c + ldr r4, [sp, #0x54] + ldrb r5, [r0, #0xc] + str r4, [sp, #0x54] + ldr r4, [r4, #0x0] + ldr r6, [r1, #0x0] + mov r7, r5, lsl #0x6 + ldrb r4, [r4, #0x1] + mov r5, r7, asr #0x2 + add r5, r7, r5, lsr #0x1d + cmp r4, #0x0 + ldr r6, [r6, #0x8] + mov r9, r3 + ldr r8, [r0, #0x4] + ldr r7, [r0, #0x8] + mov r10, r2 + mov r5, r5, asr #0x3 + addeq sp, sp, #0x2c + ldr lr, [r0, #0x0] + ldrb r3, [r6, #0x1] + ldmeqia sp!, {r4-r11,pc} + adds r6, r10, r4 + addmi sp, sp, #0x2c + ldmmiia sp!, {r4-r11,pc} + adds r2, r9, r3 + addmi sp, sp, #0x2c + ldmmiia sp!, {r4-r11,pc} + cmp r10, #0x0 + movle r11, #0x0 + add r6, r6, #0x7 + movgt r11, r10, lsr #0x3 + cmp r9, #0x0 + movle r12, #0x0 + add r2, r2, #0x7 + mov r6, r6, lsr #0x3 + movgt r12, r9, lsr #0x3 + cmp r6, r8 + movcs r6, r8 + mov r2, r2, lsr #0x3 + cmp r2, r7 + movcs r2, r7 + subs r7, r6, r11 + addmi sp, sp, #0x2c + sub r2, r2, r12 + ldmmiia sp!, {r4-r11,pc} + cmp r2, #0x0 + addlt sp, sp, #0x2c + ldmltia sp!, {r4-r11,pc} + ldr r6, [r0, #0x10] + cmp r10, #0x0 + sub r8, r6, r7 + mul r8, r5, r8 + mla r11, r6, r12, r11 + andge r10, r10, #0x7 + str r8, [sp, #0x0] + ldr r8, [sp, #0x54] + mla r6, r5, r11, lr + ldr r12, [r8, #0x4] + ldr r11, [sp, #0x50] + cmp r9, #0x0 + sub r8, r11, #0x1 + andge r9, r9, #0x7 + sub r11, r9, r2, lsl #0x3 + str r12, [sp, #0x8] + str r4, [sp, #0x14] + str r8, [sp, #0x28] + str r3, [sp, #0x18] + ldr r3, [r1, #0x0] + cmp r9, r11 + ldr r2, [r3, #0x8] + sub r7, r10, r7, lsl #0x3 + ldrb r2, [r2, #0x6] + str r2, [sp, #0x20] + ldrb r0, [r0, #0xc] + str r0, [sp, #0x24] + ldr r0, [r1, #0x0] + ldr r0, [r0, #0x8] + ldrb r0, [r0, #0x0] + mul r0, r2, r0 + str r0, [sp, #0x1c] + addle sp, sp, #0x2c + ldmleia sp!, {r4-r11,pc} + add r4, sp, #0x4 +_020B6C60: + mov r8, r10 + str r9, [sp, #0x10] + cmp r10, r7 + ble _020B6C90 +_020B6C70: + mov r0, r4 + str r6, [sp, #0x4] + str r8, [sp, #0xc] + bl LetterChar + sub r8, r8, #0x8 + cmp r8, r7 + add r6, r6, r5 + bgt _020B6C70 +_020B6C90: + ldr r0, [sp, #0x0] + sub r9, r9, #0x8 + cmp r9, r11 + add r6, r6, r0 + bgt _020B6C60 + add sp, sp, #0x2c + ldmia sp!, {r4-r11,pc} + arm_func_end DrawGlyphLine + + arm_func_start LetterChar +LetterChar: ; 0x020B6CAC + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0x34 + ldr r5, [r0, #0x8] + ldr r4, [r0, #0xc] + cmp r5, #0x0 + strge r5, [sp, #0x0] + movlt r1, #0x0 + strlt r1, [sp, #0x0] + ldr r1, [r0, #0x10] + cmp r4, #0x0 + add r10, r5, r1 + ldr r1, [r0, #0x14] + movge r2, r4 + movlt r2, #0x0 + cmp r10, #0x8 + add r3, r4, r1 + movge r10, #0x8 + cmp r3, #0x8 + movge r3, #0x8 + cmp r4, #0x0 + movgt r4, #0x0 + cmp r5, #0x0 + ldr r8, [r0, #0x20] + movgt r5, #0x0 + rsb r1, r4, #0x0 + mul r7, r10, r8 + ldr r6, [r0, #0x1c] + rsb r4, r5, #0x0 + mul r9, r6, r4 + ldr r4, [r0, #0x18] + mov r10, r7 + str r4, [sp, #0x8] + ldr r4, [sp, #0x0] + cmp r8, #0x4 + mul r5, r4, r8 + ldr r4, [sp, #0x8] + str r5, [sp, #0x0] + mla r11, r1, r4, r9 + ldr r1, [r0, #0x4] + str r1, [sp, #0x4] + bne _020B6E24 + ldr r1, [r0, #0x0] + ldr r7, [r0, #0x24] + add r0, r1, r2, lsl #0x2 + str r0, [sp, #0xc] + add r0, r1, r3, lsl #0x2 + ldr r1, [sp, #0xc] + str r0, [sp, #0x10] + cmp r1, r0 + addcs sp, sp, #0x34 + ldmcsia sp!, {r4-r11,pc} + mov r0, #0x0 + add r9, sp, #0x24 + mov r4, #0xf + str r0, [sp, #0x1c] +_020B6D88: + ldr r0, [sp, #0xc] + mov r1, r11, lsr #0x1f + ldr r5, [r0, #0x0] + ldr r0, [sp, #0x4] + rsb r2, r1, r11, lsl #0x1d + add r0, r0, r11, lsr #0x3 + str r0, [sp, #0x24] + ldr r0, [sp, #0x1c] + add r1, r1, r2, ror #0x1d + strb r0, [sp, #0x28] + strb r0, [sp, #0x29] + mov r0, r9 + bl NNSi_G2dBitReaderRead + ldr r8, [sp, #0x0] + mov r0, r8 + cmp r0, r10 + bhs _020B6DF8 +_020B6DCC: + mov r0, r9 + mov r1, r6 + bl NNSi_G2dBitReaderRead + cmp r0, #0x0 + mvnne r1, r4, lsl r8 + addne r0, r7, r0 + andne r1, r5, r1 + orrne r5, r1, r0, lsl r8 + add r8, r8, #0x4 + cmp r8, r10 + blo _020B6DCC +_020B6DF8: + ldr r0, [sp, #0xc] + add r1, r0, #0x4 + str r5, [r0, #0x0] + ldr r0, [sp, #0x10] + str r1, [sp, #0xc] + cmp r1, r0 + ldr r0, [sp, #0x8] + add r11, r11, r0 + blo _020B6D88 + add sp, sp, #0x34 + ldmia sp!, {r4-r11,pc} +_020B6E24: + ldr r1, [r0, #0x0] + ldr r9, [r0, #0x24] + add r0, r1, r2, lsl #0x3 + str r0, [sp, #0x14] + add r0, r1, r3, lsl #0x3 + ldr r1, [sp, #0x14] + str r0, [sp, #0x18] + cmp r1, r0 + addcs sp, sp, #0x34 + ldmcsia sp!, {r4-r11,pc} + mov r0, #0x0 + mov r4, #0xff + str r0, [sp, #0x20] +_020B6E58: + mov r1, r11, lsr #0x1f + rsb r0, r1, r11, lsl #0x1d + add r1, r1, r0, ror #0x1d + ldr r0, [sp, #0x14] + ldr r8, [r0, #0x0] + ldr r7, [r0, #0x4] + ldr r0, [sp, #0x4] + add r0, r0, r11, lsr #0x3 + str r0, [sp, #0x2c] + ldr r0, [sp, #0x20] + strb r0, [sp, #0x30] + strb r0, [sp, #0x31] + add r0, sp, #0x2c + bl NNSi_G2dBitReaderRead + ldr r0, [sp, #0x0] + cmp r0, r10 + mov r5, r0 + bhs _020B6EE8 +_020B6EA0: + add r0, sp, #0x2c + mov r1, r6 + bl NNSi_G2dBitReaderRead + cmp r0, #0x0 + beq _020B6EDC + cmp r5, #0x20 + mvncc r1, r4, lsl r5 + addcc r0, r9, r0 + andcc r1, r8, r1 + orrcc r8, r1, r0, lsl r5 + subcs r2, r5, #0x20 + mvncs r1, r4, lsl r2 + addcs r0, r9, r0 + andcs r1, r7, r1 + orrcs r7, r1, r0, lsl r2 +_020B6EDC: + add r5, r5, #0x8 + cmp r5, r10 + blo _020B6EA0 +_020B6EE8: + ldr r0, [sp, #0x14] + str r8, [r0, #0x0] + add r1, r0, #0x8 + str r7, [r0, #0x4] + ldr r0, [sp, #0x18] + str r1, [sp, #0x14] + cmp r1, r0 + ldr r0, [sp, #0x8] + add r11, r11, r0 + blo _020B6E58 + add sp, sp, #0x34 + ldmia sp!, {r4-r11,pc} + arm_func_end LetterChar + + arm_func_start ClearChar +ClearChar: ; 0x020B6F18 + stmdb sp!, {r4-r6,lr} + mov lr, r0 + cmp r3, #0x8 + ldr r0, [sp, #0x14] + bne _020B6F4C + ldr r4, [sp, #0x10] + cmp r4, #0x8 + bne _020B6F4C + ldr r2, [sp, #0x18] + mov r1, lr + mov r2, r2, lsl #0x3 + bl MIi_CpuClearFast + ldmia sp!, {r4-r6,pc} +_020B6F4C: + ldr r4, [sp, #0x18] + cmp r4, #0x4 + bne _020B6FAC + mov r5, r1, lsl #0x2 + add r4, r5, r3, lsl #0x2 + mvn r3, #0x0 + rsb r4, r4, #0x20 + mov r3, r3, lsr r5 + add r1, r4, r1, lsl #0x2 + mov r3, r3, lsl r1 + ldr r1, [sp, #0x10] + add r5, lr, r2, lsl #0x2 + add r2, r5, r1, lsl #0x2 + and r6, r0, r3, lsr r4 + cmp r5, r2 + mvn r1, r3, lsr r4 + ldmcsia sp!, {r4-r6,pc} +_020B6F90: + ldr r0, [r5, #0x0] + and r0, r0, r1 + orr r0, r6, r0 + str r0, [r5], #0x4 + cmp r5, r2 + blo _020B6F90 + ldmia sp!, {r4-r6,pc} +_020B6FAC: + mov r12, r1, lsl #0x3 + add r1, r12, r3, lsl #0x3 + rsb r1, r1, #0x40 + mvn r3, #0x0 + cmp r1, #0x20 + mov r5, r3, lsr r12 + subcs r4, r1, #0x20 + addcs r3, r12, r4 + movcs r3, r5, lsl r3 + movcs r3, r3, lsr r4 + movcc r3, r5, lsl r12 + mvn r4, #0x0 + add r5, lr, r2, lsl #0x3 + cmp r12, #0x20 + mov r4, r4, lsl r1 + subcs r12, r12, #0x20 + addcs r1, r12, r1 + movcs r1, r4, lsr r1 + movcs r6, r1, lsl r12 + movcc r6, r4, lsr r1 + ldr r1, [sp, #0x10] + and lr, r0, r3 + add r4, r5, r1, lsl #0x3 + cmp r5, r4 + and r12, r0, r6 + mvn r2, r3 + mvn r1, r6 + ldmcsia sp!, {r4-r6,pc} +_020B701C: + ldr r0, [r5, #0x0] + and r0, r0, r2 + orr r0, lr, r0 + str r0, [r5, #0x0] + ldr r0, [r5, #0x4] + and r0, r0, r1 + orr r0, r12, r0 + str r0, [r5, #0x4] + add r5, r5, #0x8 + cmp r5, r4 + blo _020B701C + ldmia sp!, {r4-r6,pc} + arm_func_end ClearChar + + arm_func_start OBJSizeToShape +OBJSizeToShape: ; 0x020B704C + ldrb r3, [r0, #0x1] + ldr r2, _020B7064 ; =shape$8277 + ldrb r1, [r0, #0x0] + add r0, r2, r3, lsl #0x4 + ldr r0, [r0, r1, lsl #0x2] + bx lr + .balign 4 +_020B7064: .word shape$8277 + arm_func_end OBJSizeToShape + + arm_func_start GetCharIndex1D +GetCharIndex1D: ; 0x020B7068 + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0x4 + ldr fp, _020B7164 ; =objs$8221 + mov r9, #0x0 + mov r10, #0x3 + mvn r7, #0x0 +_020B7080: + ldr r4, [sp, #0x2c] + ldr r6, [sp, #0x28] + and r12, r3, r7, lsl r4 + cmp r12, r1 + mov r8, r7, lsl r6 + mov r5, r7, lsl r4 + and lr, r2, r7, lsl r6 + bhi _020B70D0 + mla r9, r2, r12, r9 + cmp lr, r0 + movhi r2, lr + subhi r1, r1, r12 + subhi r3, r3, r12 + bhi _020B7118 + sub r3, r3, r12 + mla r9, lr, r3, r9 + sub r0, r0, lr + sub r1, r1, r12 + sub r2, r2, lr + b _020B7118 +_020B70D0: + cmp lr, r0 + mlals r9, lr, r12, r9 + mvn r3, r5 + movls r3, r12 + subls r0, r0, lr + subls r2, r2, lr + bls _020B7118 + and r2, r1, r5 + mla r5, lr, r2, r9 + and r2, r0, r8 + and r1, r1, r3 + add r2, r5, r2, lsl r4 + mvn r3, r8 + add r1, r2, r1, lsl r6 + and r0, r0, r3 + add sp, sp, #0x4 + add r0, r1, r0 + ldmia sp!, {r4-r11,pc} +_020B7118: + cmp r2, #0x8 + movlt r4, r2 + movge r5, r10 + clzlt r4, r4 + rsblt r5, r4, #0x1f + cmp r3, #0x8 + movge r4, r10 + movlt r4, r3 + clzlt r4, r4 + rsblt r4, r4, #0x1f + add r4, r11, r4, lsl #0x3 + add r6, r4, r5, lsl #0x1 + ldrb r5, [r4, r5, lsl #0x1] + ldrb r4, [r6, #0x1] + str r5, [sp, #0x28] + str r4, [sp, #0x2c] + b _020B7080 + add sp, sp, #0x4 + ldmia sp!, {r4-r11,pc} + .balign 4 +_020B7164: .word objs$8221 + arm_func_end GetCharIndex1D diff --git a/arm9/asm/NNS_G2D_g2d_font.s b/arm9/asm/NNS_G2D_g2d_font.s new file mode 100644 index 00000000..162fe423 --- /dev/null +++ b/arm9/asm/NNS_G2D_g2d_font.s @@ -0,0 +1,284 @@ + .include "asm/macros.inc" + .include "global.inc" + + .section .text + + arm_func_start NNSi_G2dFontGetTextRect +NNSi_G2dFontGetTextRect: ; 0x020B5ABC + stmdb sp!, {r4-r9,lr} + sub sp, sp, #0xc + add r5, sp, #0x0 + mov r4, #0x0 + str r4, [r5, #0x0] + str r4, [r5, #0x4] + mov r8, r2 + ldr r2, [sp, #0x28] + mov r5, r0 + mov r9, r1 + mov r4, r3 + cmp r2, #0x0 + mov r7, #0x1 + beq _020B5B24 + add r6, sp, #0x28 +_020B5AF8: + mov r0, r9 + mov r1, r8 + mov r3, r6 + bl NNSi_G2dFontGetStringWidth + ldr r1, [sp, #0x0] + ldr r2, [sp, #0x28] + cmp r0, r1 + strgt r0, [sp, #0x0] + add r7, r7, #0x1 + cmp r2, #0x0 + bne _020B5AF8 +_020B5B24: + ldr r0, [r9, #0x0] + sub r2, r7, #0x1 + ldrsb r1, [r0, #0x1] + ldr r0, [sp, #0x0] + add r1, r4, r1 + mul r1, r2, r1 + sub r1, r1, r4 + str r1, [sp, #0x4] + str r0, [r5, #0x0] + str r1, [r5, #0x4] + add sp, sp, #0xc + ldmia sp!, {r4-r9,pc} + arm_func_end NNSi_G2dFontGetTextRect + + arm_func_start NNSi_G2dFontGetTextHeight +NNSi_G2dFontGetTextHeight: ; 0x020B5B54 + stmdb sp!, {r4-r8,lr} + sub sp, sp, #0x10 + str r2, [sp, #0x0] + add r3, sp, #0x4 + mov r2, #0x0 + str r2, [r3, #0x0] + mov r8, r0 + str r2, [r3, #0x4] + ldr r7, [r8, #0x4] + add r0, sp, #0x0 + mov r5, r1 + mov r4, #0x1 + blx r7 + cmp r0, #0x0 + beq _020B5BAC + add r6, sp, #0x0 +_020B5B94: + cmp r0, #0xa + mov r0, r6 + addeq r4, r4, #0x1 + blx r7 + cmp r0, #0x0 + bne _020B5B94 +_020B5BAC: + ldr r0, [r8, #0x0] + ldrsb r0, [r0, #0x1] + add r0, r5, r0 + mul r0, r4, r0 + sub r0, r0, r5 + add sp, sp, #0x10 + ldmia sp!, {r4-r8,pc} + arm_func_end NNSi_G2dFontGetTextHeight + + arm_func_start NNSi_G2dFontGetStringWidth +NNSi_G2dFontGetStringWidth: ; 0x020B5BC8 + stmdb sp!, {r4-r10,lr} + sub sp, sp, #0x8 + mov r8, r0 + str r2, [sp, #0x0] + ldr r4, [r8, #0x4] + add r0, sp, #0x0 + mov r7, r1 + mov r6, r3 + mov r5, #0x0 + blx r4 + movs r1, r0 + beq _020B5C58 + ldr sb, _020B5C84 ; =0x0000FFFF + add r10, sp, #0x0 +_020B5C00: + cmp r1, #0xa + beq _020B5C58 + mov r0, r8 + bl NNS_G2dFontFindGlyphIndex + mov r1, r0 + cmp r1, r9 + ldreq r0, [r8, #0x0] + ldreqh r1, [r0, #0x2] + mov r0, r8 + bl NNS_G2dFontGetCharWidthsFromIndex + ldrh r1, [r8, #0x8] + cmp r1, #0x0 + ldrnesb r1, [r0, #0x0] + ldrneb r0, [r0, #0x1] + addne r0, r1, r0 + ldreqsb r0, [r0, #0x2] + add r1, r7, r0 + mov r0, r10 + add r5, r5, r1 + blx r4 + movs r1, r0 + bne _020B5C00 +_020B5C58: + cmp r6, #0x0 + beq _020B5C70 + cmp r1, #0xa + ldreq r0, [sp, #0x0] + movne r0, #0x0 + str r0, [r6, #0x0] +_020B5C70: + cmp r5, #0x0 + subgt r5, r5, r7 + mov r0, r5 + add sp, sp, #0x8 + ldmia sp!, {r4-r10,pc} + .balign 4 +_020B5C84: .word 0x0000FFFF + arm_func_end NNSi_G2dFontGetStringWidth + + arm_func_start NNS_G2dFontGetCharWidthsFromIndex +NNS_G2dFontGetCharWidthsFromIndex: ; 0x020B5C88 + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r3, [r0, #0x0] + ldr lr, [r3, #0xc] + cmp lr, #0x0 + beq _020B5CD8 +_020B5CA0: + ldrh r12, [lr, #0x0] + cmp r12, r1 + bhi _020B5CCC + ldrh r2, [lr, #0x2] + cmp r1, r2 + ldrlsh r2, [r0, #0xa] + addls r3, lr, #0x8 + subls r0, r1, r12 + mlals r0, r2, r0, r3 + addls sp, sp, #0x4 + ldmlsia sp!, {pc} +_020B5CCC: + ldr lr, [lr, #0x4] + cmp lr, #0x0 + bne _020B5CA0 +_020B5CD8: + add r0, r3, #0x4 + add sp, sp, #0x4 + ldmia sp!, {pc} + arm_func_end NNS_G2dFontGetCharWidthsFromIndex + + arm_func_start NNS_G2dFontFindGlyphIndex +NNS_G2dFontFindGlyphIndex: ; 0x020B5CE4 + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r0, [r0, #0x0] + ldr r0, [r0, #0x10] + cmp r0, #0x0 + beq _020B5D2C +_020B5CFC: + ldrh r2, [r0, #0x0] + cmp r2, r1 + bhi _020B5D20 + ldrh r2, [r0, #0x2] + cmp r1, r2 + bhi _020B5D20 + bl GetGlyphIndex + add sp, sp, #0x4 + ldmia sp!, {pc} +_020B5D20: + ldr r0, [r0, #0x8] + cmp r0, #0x0 + bne _020B5CFC +_020B5D2C: + ldr r0, _020B5D38 ; =0x0000FFFF + add sp, sp, #0x4 + ldmia sp!, {pc} + .balign 4 +_020B5D38: .word 0x0000FFFF + arm_func_end NNS_G2dFontFindGlyphIndex + + arm_func_start NNS_G2dFontInitUTF16 +NNS_G2dFontInitUTF16: ; 0x020B5D3C + stmdb sp!, {r4,lr} + mov r4, r0 + mov r0, r1 + mov r1, r4 + bl NNSi_G2dGetUnpackedFont + sub r0, r0, #0x1 + strh r0, [r4, #0x8] + ldrh r0, [r4, #0x8] + cmp r0, #0x0 + movne r1, #0x2 + moveq r1, #0x3 + ldr r0, _020B5D78 ; =NNSi_G2dSplitCharUTF16 + strh r1, [r4, #0xa] + str r0, [r4, #0x4] + ldmia sp!, {r4,pc} + .balign 4 +_020B5D78: .word NNSi_G2dSplitCharUTF16 + arm_func_end NNS_G2dFontInitUTF16 + + arm_func_start GetGlyphIndex +GetGlyphIndex: ; 0x020B5D7C + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldrh r3, [r0, #0x4] + ldr r2, _020B5E4C ; =0x0000FFFF + cmp r3, #0x0 + beq _020B5DA8 + cmp r3, #0x1 + beq _020B5DC4 + cmp r3, #0x2 + beq _020B5DD8 + b _020B5E40 +_020B5DA8: + ldrh r2, [r0, #0x0] + ldrh r3, [r0, #0xc] + sub r0, r1, r2 + add r0, r3, r0 + mov r0, r0, lsl #0x10 + mov r2, r0, lsr #0x10 + b _020B5E40 +_020B5DC4: + ldrh r2, [r0, #0x0] + sub r1, r1, r2 + add r0, r0, r1, lsl #0x1 + ldrh r2, [r0, #0xc] + b _020B5E40 +_020B5DD8: + ldrh r3, [r0, #0xc] + add r0, r0, #0xc + add r0, r0, #0x2 + sub r3, r3, #0x1 + add lr, r0, r3, lsl #0x2 + cmp r0, lr + bhi _020B5E40 +_020B5DF4: + sub r12, lr, r0 + mov r3, r12, asr #0x1 + add r3, r12, r3, lsr #0x1e + mov r3, r3, asr #0x2 + add r3, r3, r3, lsr #0x1f + mov r12, r3, asr #0x1 + mov r3, r12, lsl #0x2 + ldrh r3, [r0, r3] + add r12, r0, r12, lsl #0x2 + cmp r3, r1 + addcc r0, r12, #0x4 + blo _020B5E38 + cmp r1, r3 + subcc lr, r12, #0x4 + blo _020B5E38 + ldrh r2, [r12, #0x2] + b _020B5E40 +_020B5E38: + cmp r0, lr + bls _020B5DF4 +_020B5E40: + mov r0, r2 + add sp, sp, #0x4 + ldmia sp!, {pc} + .balign 4 +_020B5E4C: .word 0x0000FFFF + arm_func_end GetGlyphIndex diff --git a/arm9/asm/NNS_G2D_g2d_image.s b/arm9/asm/NNS_G2D_g2d_image.s new file mode 100644 index 00000000..796da6c6 --- /dev/null +++ b/arm9/asm/NNS_G2D_g2d_image.s @@ -0,0 +1,780 @@ + .include "asm/macros.inc" + .include "global.inc" + + .section .text + + arm_func_start NNSi_G2dGetVramLocation +NNSi_G2dGetVramLocation: ; 0x020B10BC + ldr r0, [r0, r1, lsl #0x2] + bx lr + arm_func_end NNSi_G2dGetVramLocation + + arm_func_start NNSi_G2dSetVramLocation +NNSi_G2dSetVramLocation: ; 0x020B10C4 + str r2, [r0, r1, lsl #0x2] + bx lr + arm_func_end NNSi_G2dSetVramLocation + + arm_func_start NNSi_G2dInitializeVRamLocation +NNSi_G2dInitializeVRamLocation: ; 0x020B10CC + mov r2, #0x0 + mvn r1, #0x0 +_020B10D4: + str r1, [r0, r2, lsl #0x2] + add r2, r2, #0x1 + cmp r2, #0x3 + blt _020B10D4 + bx lr + arm_func_end NNSi_G2dInitializeVRamLocation + + arm_func_start NNS_G2dLoadPaletteEx +NNS_G2dLoadPaletteEx: ; 0x020B10E8 + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0x4 + mov r10, r0 + ldr r0, [r10, #0x0] + mov r9, r1 + cmp r0, #0x3 + ldr r0, [sp, #0x28] + moveq r7, #0x20 + str r0, [sp, #0x28] + ldrh r0, [r9, #0x0] + movne r7, #0x200 + mov r11, r2 + mov r8, r3 + str r0, [sp, #0x0] + mov r6, #0x0 + cmp r0, #0x0 + bls _020B1210 +_020B112C: + ldr r1, [r9, #0x4] + mov r0, r6, lsl #0x1 + ldrh r2, [r1, r0] + ldr r0, [r10, #0xc] + ldr r1, [r10, #0x8] + mla r5, r7, r2, r11 + mla r4, r7, r6, r0 + bl DC_FlushRange + cmp r8, #0x0 + beq _020B11E0 + cmp r8, #0x1 + beq _020B1168 + cmp r8, #0x2 + beq _020B11A4 + b _020B11F8 +_020B1168: + ldr r0, [r10, #0x4] + cmp r0, #0x0 + beq _020B1190 + bl GX_BeginLoadOBJExtPltt + mov r0, r4 + mov r1, r5 + mov r2, r7 + bl GX_LoadOBJExtPltt + bl GX_EndLoadOBJExtPltt + b _020B11F8 +_020B1190: + mov r0, r4 + mov r1, r5 + mov r2, r7 + bl GX_LoadOBJPltt + b _020B11F8 +_020B11A4: + ldr r0, [r10, #0x4] + cmp r0, #0x0 + beq _020B11CC + bl GXS_BeginLoadOBJExtPltt + mov r0, r4 + mov r1, r5 + mov r2, r7 + bl GXS_LoadOBJExtPltt + bl GXS_EndLoadOBJExtPltt + b _020B11F8 +_020B11CC: + mov r0, r4 + mov r1, r5 + mov r2, r7 + bl GXS_LoadOBJPltt + b _020B11F8 +_020B11E0: + bl GX_BeginLoadTexPltt + mov r0, r4 + mov r1, r5 + mov r2, r7 + bl GX_LoadTexPltt + bl GX_EndLoadTexPltt +_020B11F8: + add r0, r6, #0x1 + mov r0, r0, lsl #0x10 + mov r6, r0, lsr #0x10 + ldr r0, [sp, #0x0] + cmp r6, r0 + blo _020B112C +_020B1210: + ldr r0, [sp, #0x28] + ldr r2, [r10, #0x0] + mov r1, r0 + str r2, [r1, #0x0] + ldr r4, [r10, #0x4] + mov r3, r0 + mov r1, r8 + mov r2, r11 + str r4, [r3, #0x4] + bl NNS_G2dSetImagePaletteLocation + add sp, sp, #0x4 + ldmia sp!, {r4-r11,pc} + arm_func_end NNS_G2dLoadPaletteEx + + arm_func_start NNS_G2dLoadPalette +NNS_G2dLoadPalette: ; 0x020B1240 + stmdb sp!, {r4-r9,lr} + sub sp, sp, #0x4 + mov r9, r0 + ldr r5, [r9, #0xc] + ldr r4, [r9, #0x8] + mov r8, r1 + mov r7, r2 + mov r0, r5 + mov r1, r4 + mov r6, r3 + bl DC_FlushRange + cmp r7, #0x0 + beq _020B1300 + cmp r7, #0x1 + beq _020B1288 + cmp r7, #0x2 + beq _020B12C4 + b _020B1318 +_020B1288: + ldr r0, [r9, #0x4] + cmp r0, #0x0 + beq _020B12B0 + bl GX_BeginLoadOBJExtPltt + mov r0, r5 + mov r1, r8 + mov r2, r4 + bl GX_LoadOBJExtPltt + bl GX_EndLoadOBJExtPltt + b _020B1318 +_020B12B0: + mov r0, r5 + mov r1, r8 + mov r2, r4 + bl GX_LoadOBJPltt + b _020B1318 +_020B12C4: + ldr r0, [r9, #0x4] + cmp r0, #0x0 + beq _020B12EC + bl GXS_BeginLoadOBJExtPltt + mov r0, r5 + mov r1, r8 + mov r2, r4 + bl GXS_LoadOBJExtPltt + bl GXS_EndLoadOBJExtPltt + b _020B1318 +_020B12EC: + mov r0, r5 + mov r1, r8 + mov r2, r4 + bl GXS_LoadOBJPltt + b _020B1318 +_020B1300: + bl GX_BeginLoadTexPltt + mov r0, r5 + mov r1, r8 + mov r2, r4 + bl GX_LoadTexPltt + bl GX_EndLoadTexPltt +_020B1318: + ldr r1, [r9, #0x0] + mov r0, r6 + str r1, [r6, #0x0] + ldr r3, [r9, #0x4] + mov r1, r7 + mov r2, r8 + str r3, [r6, #0x4] + bl NNS_G2dSetImagePaletteLocation + add sp, sp, #0x4 + ldmia sp!, {r4-r9,pc} + arm_func_end NNS_G2dLoadPalette + + arm_func_start NNS_G2dLoadImageVramTransfer +NNS_G2dLoadImageVramTransfer: ; 0x020B1340 + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + mov r7, r0 + mov r6, r1 + ldr r0, [r7, #0x14] + ldr r1, [r7, #0x10] + mov r5, r2 + mov r4, r3 + bl DC_FlushRange + cmp r5, #0x0 + ldr r0, [r7, #0x8] + beq _020B13B8 + cmp r5, #0x1 + beq _020B1384 + cmp r5, #0x2 + beq _020B13A0 + b _020B13B8 +_020B1384: + mov r3, #0x4000000 + ldr r2, [r3, #0x0] + ldr r1, _020B1520 ; =0xFFCFFFEF + and r1, r2, r1 + orr r0, r1, r0 + str r0, [r3, #0x0] + b _020B13B8 +_020B13A0: + ldr r3, _020B1524 ; =0x04001000 + ldr r1, _020B1520 ; =0xFFCFFFEF + ldr r2, [r3, #0x0] + and r1, r2, r1 + orr r0, r1, r0 + str r0, [r3, #0x0] +_020B13B8: + ldr r0, [r7, #0x8] + cmp r0, #0x0 + bne _020B14D8 + ldrh r0, [r7, #0x2] + cmp r0, #0x10 + bgt _020B1408 + cmp r0, #0x10 + bge _020B1434 + cmp r0, #0x8 + addls pc, pc, r0, lsl #0x2 + b _020B1444 + ; Jump table + b _020B1444 ; case 0 + b _020B1414 ; case 1 + b _020B141C ; case 2 + b _020B1444 ; case 3 + b _020B1424 ; case 4 + b _020B1444 ; case 5 + b _020B1444 ; case 6 + b _020B1444 ; case 7 + b _020B142C ; case 8 +_020B1408: + cmp r0, #0x20 + beq _020B143C + b _020B1444 +_020B1414: + mov r0, #0x0 + b _020B1448 +_020B141C: + mov r0, #0x1 + b _020B1448 +_020B1424: + mov r0, #0x2 + b _020B1448 +_020B142C: + mov r0, #0x3 + b _020B1448 +_020B1434: + mov r0, #0x4 + b _020B1448 +_020B143C: + mov r0, #0x5 + b _020B1448 +_020B1444: + mov r0, #0x0 +_020B1448: + str r0, [r4, #0xc] + ldrh r0, [r7, #0x0] + cmp r0, #0x10 + bgt _020B1490 + cmp r0, #0x10 + bge _020B14BC + cmp r0, #0x8 + addls pc, pc, r0, lsl #0x2 + b _020B14CC + ; Jump table + b _020B14CC ; case 0 + b _020B149C ; case 1 + b _020B14A4 ; case 2 + b _020B14CC ; case 3 + b _020B14AC ; case 4 + b _020B14CC ; case 5 + b _020B14CC ; case 6 + b _020B14CC ; case 7 + b _020B14B4 ; case 8 +_020B1490: + cmp r0, #0x20 + beq _020B14C4 + b _020B14CC +_020B149C: + mov r0, #0x0 + b _020B14D0 +_020B14A4: + mov r0, #0x1 + b _020B14D0 +_020B14AC: + mov r0, #0x2 + b _020B14D0 +_020B14B4: + mov r0, #0x3 + b _020B14D0 +_020B14BC: + mov r0, #0x4 + b _020B14D0 +_020B14C4: + mov r0, #0x5 + b _020B14D0 +_020B14CC: + mov r0, #0x0 +_020B14D0: + str r0, [r4, #0x10] + b _020B14E8 +_020B14D8: + ldrh r0, [r7, #0x2] + str r0, [r4, #0xc] + ldrh r0, [r7, #0x0] + str r0, [r4, #0x10] +_020B14E8: + ldr r1, [r7, #0x4] + mov r0, #0x0 + str r1, [r4, #0x14] + str r0, [r4, #0x18] + mov r0, #0x1 + str r0, [r4, #0x1c] + ldr r3, [r7, #0x8] + mov r0, r4 + mov r1, r5 + mov r2, r6 + str r3, [r4, #0x20] + bl NNS_G2dSetImageLocation + add sp, sp, #0x4 + ldmia sp!, {r4-r7,pc} + .balign 4 +_020B1520: .word 0xFFCFFFEF +_020B1524: .word 0x04001000 + arm_func_end NNS_G2dLoadImageVramTransfer + + arm_func_start NNS_G2dLoadImage2DMapping +NNS_G2dLoadImage2DMapping: ; 0x020B1528 + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + mov r7, r0 + movs r5, r2 + mov r6, r1 + mov r4, r3 + ldr r0, [r7, #0x8] + beq _020B1590 + cmp r5, #0x1 + beq _020B155C + cmp r5, #0x2 + beq _020B1578 + b _020B1590 +_020B155C: + mov r3, #0x4000000 + ldr r2, [r3, #0x0] + ldr r1, _020B1760 ; =0xFFCFFFEF + and r1, r2, r1 + orr r0, r1, r0 + str r0, [r3, #0x0] + b _020B1590 +_020B1578: + ldr r3, _020B1764 ; =0x04001000 + ldr r1, _020B1760 ; =0xFFCFFFEF + ldr r2, [r3, #0x0] + and r1, r2, r1 + orr r0, r1, r0 + str r0, [r3, #0x0] +_020B1590: + ldr r0, [r7, #0x14] + ldr r1, [r7, #0x10] + bl DC_FlushRange + cmp r5, #0x0 + beq _020B15B8 + cmp r5, #0x1 + beq _020B15D4 + cmp r5, #0x2 + beq _020B15E8 + b _020B15F8 +_020B15B8: + bl GX_BeginLoadTex + ldr r0, [r7, #0x14] + ldr r2, [r7, #0x10] + mov r1, r6 + bl GX_LoadTex + bl GX_EndLoadTex + b _020B15F8 +_020B15D4: + ldr r0, [r7, #0x14] + ldr r2, [r7, #0x10] + mov r1, r6 + bl GX_LoadOBJ + b _020B15F8 +_020B15E8: + ldr r0, [r7, #0x14] + ldr r2, [r7, #0x10] + mov r1, r6 + bl GXS_LoadOBJ +_020B15F8: + ldr r0, [r7, #0x8] + cmp r0, #0x0 + bne _020B1718 + ldrh r0, [r7, #0x2] + cmp r0, #0x10 + bgt _020B1648 + cmp r0, #0x10 + bge _020B1674 + cmp r0, #0x8 + addls pc, pc, r0, lsl #0x2 + b _020B1684 + ; Jump table + b _020B1684 ; case 0 + b _020B1654 ; case 1 + b _020B165C ; case 2 + b _020B1684 ; case 3 + b _020B1664 ; case 4 + b _020B1684 ; case 5 + b _020B1684 ; case 6 + b _020B1684 ; case 7 + b _020B166C ; case 8 +_020B1648: + cmp r0, #0x20 + beq _020B167C + b _020B1684 +_020B1654: + mov r0, #0x0 + b _020B1688 +_020B165C: + mov r0, #0x1 + b _020B1688 +_020B1664: + mov r0, #0x2 + b _020B1688 +_020B166C: + mov r0, #0x3 + b _020B1688 +_020B1674: + mov r0, #0x4 + b _020B1688 +_020B167C: + mov r0, #0x5 + b _020B1688 +_020B1684: + mov r0, #0x0 +_020B1688: + str r0, [r4, #0xc] + ldrh r0, [r7, #0x0] + cmp r0, #0x10 + bgt _020B16D0 + cmp r0, #0x10 + bge _020B16FC + cmp r0, #0x8 + addls pc, pc, r0, lsl #0x2 + b _020B170C + ; Jump table + b _020B170C ; case 0 + b _020B16DC ; case 1 + b _020B16E4 ; case 2 + b _020B170C ; case 3 + b _020B16EC ; case 4 + b _020B170C ; case 5 + b _020B170C ; case 6 + b _020B170C ; case 7 + b _020B16F4 ; case 8 +_020B16D0: + cmp r0, #0x20 + beq _020B1704 + b _020B170C +_020B16DC: + mov r0, #0x0 + b _020B1710 +_020B16E4: + mov r0, #0x1 + b _020B1710 +_020B16EC: + mov r0, #0x2 + b _020B1710 +_020B16F4: + mov r0, #0x3 + b _020B1710 +_020B16FC: + mov r0, #0x4 + b _020B1710 +_020B1704: + mov r0, #0x5 + b _020B1710 +_020B170C: + mov r0, #0x0 +_020B1710: + str r0, [r4, #0x10] + b _020B1728 +_020B1718: + ldrh r0, [r7, #0x2] + str r0, [r4, #0xc] + ldrh r0, [r7, #0x0] + str r0, [r4, #0x10] +_020B1728: + ldr r1, [r7, #0x4] + mov r0, #0x0 + str r1, [r4, #0x14] + str r0, [r4, #0x18] + mov r0, #0x1 + str r0, [r4, #0x1c] + ldr r3, [r7, #0x8] + mov r0, r4 + mov r1, r5 + mov r2, r6 + str r3, [r4, #0x20] + bl NNS_G2dSetImageLocation + add sp, sp, #0x4 + ldmia sp!, {r4-r7,pc} + .balign 4 +_020B1760: .word 0xFFCFFFEF +_020B1764: .word 0x04001000 + arm_func_end NNS_G2dLoadImage2DMapping + + arm_func_start NNS_G2dLoadImage1DMapping +NNS_G2dLoadImage1DMapping: ; 0x020B1768 + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + mov r7, r0 + movs r5, r2 + mov r6, r1 + mov r4, r3 + ldr r0, [r7, #0x8] + beq _020B17D0 + cmp r5, #0x1 + beq _020B179C + cmp r5, #0x2 + beq _020B17B8 + b _020B17D0 +_020B179C: + mov r3, #0x4000000 + ldr r2, [r3, #0x0] + ldr r1, _020B19A0 ; =0xFFCFFFEF + and r1, r2, r1 + orr r0, r1, r0 + str r0, [r3, #0x0] + b _020B17D0 +_020B17B8: + ldr r3, _020B19A4 ; =0x04001000 + ldr r1, _020B19A0 ; =0xFFCFFFEF + ldr r2, [r3, #0x0] + and r1, r2, r1 + orr r0, r1, r0 + str r0, [r3, #0x0] +_020B17D0: + ldr r0, [r7, #0x14] + ldr r1, [r7, #0x10] + bl DC_FlushRange + cmp r5, #0x0 + beq _020B17F8 + cmp r5, #0x1 + beq _020B1814 + cmp r5, #0x2 + beq _020B1828 + b _020B1838 +_020B17F8: + bl GX_BeginLoadTex + ldr r0, [r7, #0x14] + ldr r2, [r7, #0x10] + mov r1, r6 + bl GX_LoadTex + bl GX_EndLoadTex + b _020B1838 +_020B1814: + ldr r0, [r7, #0x14] + ldr r2, [r7, #0x10] + mov r1, r6 + bl GX_LoadOBJ + b _020B1838 +_020B1828: + ldr r0, [r7, #0x14] + ldr r2, [r7, #0x10] + mov r1, r6 + bl GXS_LoadOBJ +_020B1838: + ldr r0, [r7, #0x8] + cmp r0, #0x0 + bne _020B1958 + ldrh r0, [r7, #0x2] + cmp r0, #0x10 + bgt _020B1888 + cmp r0, #0x10 + bge _020B18B4 + cmp r0, #0x8 + addls pc, pc, r0, lsl #0x2 + b _020B18C4 + ; Jump table + b _020B18C4 ; case 0 + b _020B1894 ; case 1 + b _020B189C ; case 2 + b _020B18C4 ; case 3 + b _020B18A4 ; case 4 + b _020B18C4 ; case 5 + b _020B18C4 ; case 6 + b _020B18C4 ; case 7 + b _020B18AC ; case 8 +_020B1888: + cmp r0, #0x20 + beq _020B18BC + b _020B18C4 +_020B1894: + mov r0, #0x0 + b _020B18C8 +_020B189C: + mov r0, #0x1 + b _020B18C8 +_020B18A4: + mov r0, #0x2 + b _020B18C8 +_020B18AC: + mov r0, #0x3 + b _020B18C8 +_020B18B4: + mov r0, #0x4 + b _020B18C8 +_020B18BC: + mov r0, #0x5 + b _020B18C8 +_020B18C4: + mov r0, #0x0 +_020B18C8: + str r0, [r4, #0xc] + ldrh r0, [r7, #0x0] + cmp r0, #0x10 + bgt _020B1910 + cmp r0, #0x10 + bge _020B193C + cmp r0, #0x8 + addls pc, pc, r0, lsl #0x2 + b _020B194C + ; Jump table + b _020B194C ; case 0 + b _020B191C ; case 1 + b _020B1924 ; case 2 + b _020B194C ; case 3 + b _020B192C ; case 4 + b _020B194C ; case 5 + b _020B194C ; case 6 + b _020B194C ; case 7 + b _020B1934 ; case 8 +_020B1910: + cmp r0, #0x20 + beq _020B1944 + b _020B194C +_020B191C: + mov r0, #0x0 + b _020B1950 +_020B1924: + mov r0, #0x1 + b _020B1950 +_020B192C: + mov r0, #0x2 + b _020B1950 +_020B1934: + mov r0, #0x3 + b _020B1950 +_020B193C: + mov r0, #0x4 + b _020B1950 +_020B1944: + mov r0, #0x5 + b _020B1950 +_020B194C: + mov r0, #0x0 +_020B1950: + str r0, [r4, #0x10] + b _020B1968 +_020B1958: + ldrh r0, [r7, #0x2] + str r0, [r4, #0xc] + ldrh r0, [r7, #0x0] + str r0, [r4, #0x10] +_020B1968: + ldr r1, [r7, #0x4] + mov r0, #0x0 + str r1, [r4, #0x14] + str r0, [r4, #0x18] + mov r0, #0x1 + str r0, [r4, #0x1c] + ldr r3, [r7, #0x8] + mov r0, r4 + mov r1, r5 + mov r2, r6 + str r3, [r4, #0x20] + bl NNS_G2dSetImageLocation + add sp, sp, #0x4 + ldmia sp!, {r4-r7,pc} + .balign 4 +_020B19A0: .word 0xFFCFFFEF +_020B19A4: .word 0x04001000 + arm_func_end NNS_G2dLoadImage1DMapping + + arm_func_start NNS_G2dIsImagePaletteReadyToUse +NNS_G2dIsImagePaletteReadyToUse: ; 0x020B19A8 + add r0, r0, r1, lsl #0x2 + ldr r1, [r0, #0x8] + mvn r0, #0x0 + cmp r1, r0 + movne r0, #0x1 + moveq r0, #0x0 + bx lr + arm_func_end NNS_G2dIsImagePaletteReadyToUse + + arm_func_start NNS_G2dGetImagePaletteLocation +NNS_G2dGetImagePaletteLocation: ; 0x020B19C4 + add r0, r0, r1, lsl #0x2 + ldr r0, [r0, #0x8] + bx lr + arm_func_end NNS_G2dGetImagePaletteLocation + + arm_func_start NNS_G2dSetImagePaletteLocation +NNS_G2dSetImagePaletteLocation: ; 0x020B19D0 + add r0, r0, r1, lsl #0x2 + str r2, [r0, #0x8] + bx lr + arm_func_end NNS_G2dSetImagePaletteLocation + + arm_func_start NNS_G2dInitImagePaletteProxy +NNS_G2dInitImagePaletteProxy: ; 0x020B19DC + mov r3, #0x0 + mvn r2, #0x0 +_020B19E4: + add r1, r0, r3, lsl #0x2 + add r3, r3, #0x1 + str r2, [r1, #0x8] + cmp r3, #0x3 + blt _020B19E4 + bx lr + arm_func_end NNS_G2dInitImagePaletteProxy + + arm_func_start NNS_G2dIsImageReadyToUse +NNS_G2dIsImageReadyToUse: ; 0x020B19FC + ldr r1, [r0, r1, lsl #0x2] + mvn r0, #0x0 + cmp r1, r0 + movne r0, #0x1 + moveq r0, #0x0 + bx lr + arm_func_end NNS_G2dIsImageReadyToUse + + arm_func_start NNS_G2dGetImageLocation +NNS_G2dGetImageLocation: ; 0x020B1A14 + ldr r0, [r0, r1, lsl #0x2] + bx lr + arm_func_end NNS_G2dGetImageLocation + + arm_func_start NNS_G2dSetImageLocation +NNS_G2dSetImageLocation: ; 0x020B1A1C + str r2, [r0, r1, lsl #0x2] + bx lr + arm_func_end NNS_G2dSetImageLocation + + arm_func_start NNS_G2dInitImageProxy +NNS_G2dInitImageProxy: ; 0x020B1A24 + mov r2, #0x0 + mvn r1, #0x0 +_020B1A2C: + str r1, [r0, r2, lsl #0x2] + add r2, r2, #0x1 + cmp r2, #0x3 + blt _020B1A2C + bx lr + arm_func_end NNS_G2dInitImageProxy diff --git a/arm9/asm/NNS_G2D_g2d_load.s b/arm9/asm/NNS_G2D_g2d_load.s new file mode 100644 index 00000000..340d8b17 --- /dev/null +++ b/arm9/asm/NNS_G2D_g2d_load.s @@ -0,0 +1,55 @@ + .include "asm/macros.inc" + .include "global.inc" + + .section .text + + arm_func_start NNSi_G2dUnpackUserExCellAttrBank +NNSi_G2dUnpackUserExCellAttrBank: ; 0x020B01B0 + ldr r1, [r0, #0x4] + mov r12, #0x0 + add r1, r1, r0 + str r1, [r0, #0x4] + ldrh r1, [r0, #0x0] + cmp r1, #0x0 + bxls lr +_020B01CC: + ldr r3, [r0, #0x4] + add r1, r12, #0x1 + ldr r2, [r3, r12, lsl #0x2] + mov r1, r1, lsl #0x10 + add r2, r0, r2 + str r2, [r3, r12, lsl #0x2] + ldrh r2, [r0, #0x0] + mov r12, r1, lsr #0x10 + cmp r12, r2 + blo _020B01CC + bx lr + arm_func_end NNSi_G2dUnpackUserExCellAttrBank + + arm_func_start NNS_G2dFindBinaryBlock +NNS_G2dFindBinaryBlock: ; 0x020B01F8 + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldrh r2, [r0, #0xc] + ldrh r12, [r0, #0xe] + mov lr, #0x0 + add r0, r0, r2 + cmp r12, #0x0 + bls _020B0244 +_020B0218: + ldr r2, [r0, #0x0] + cmp r2, r1 + addeq sp, sp, #0x4 + ldmeqia sp!, {pc} + add r2, lr, #0x1 + mov r2, r2, lsl #0x10 + ldr r3, [r0, #0x4] + mov lr, r2, lsr #0x10 + cmp lr, r12 + add r0, r0, r3 + blo _020B0218 +_020B0244: + mov r0, #0x0 + add sp, sp, #0x4 + ldmia sp!, {pc} + arm_func_end NNS_G2dFindBinaryBlock diff --git a/arm9/asm/NNS_G2D_g2d_multicellan.s b/arm9/asm/NNS_G2D_g2d_multicellan.s new file mode 100644 index 00000000..8e2206df --- /dev/null +++ b/arm9/asm/NNS_G2D_g2d_multicellan.s @@ -0,0 +1,490 @@ + .include "asm/macros.inc" + .include "global.inc" + + .section .text + + arm_func_start NNS_G2dInitMCAnimation +NNS_G2dInitMCAnimation: ; 0x020B20C8 + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0xc + mov r6, #0x0 + str r6, [r0, #0x38] + ldr r7, [sp, #0x30] + str r6, [r0, #0x30] + mov r10, r1 + str r7, [r0, #0x34] + str r0, [sp, #0x0] + movs r8, r3 + mov r9, r2 + str r10, [r0, #0x3c] + ldr r11, [sp, #0x34] + beq _020B215C + mov r0, #0x1 + str r6, [sp, #0x8] + str r0, [sp, #0x4] +_020B210C: + mov r0, #0x28 + mul r4, r6, r0 + ldr r1, [sp, #0x4] + add r0, r10, r4 + bl NNSi_G2dInitializeNode + mov r0, #0x54 + mla r5, r6, r0, r9 + ldr r1, [sp, #0x8] + mov r0, r7 + str r5, [r10, r4] + bl NNS_G2dGetAnimSequenceByIdx + mov r1, r0 + mov r0, r5 + mov r2, r11 + bl NNS_G2dInitCellAnimation + add r0, r6, #0x1 + mov r0, r0, lsl #0x10 + mov r6, r0, lsr #0x10 + cmp r6, r8 + blo _020B210C +_020B215C: + ldr r0, [sp, #0x0] + bl NNS_G2dInitAnimCtrl + ldr r0, [sp, #0x0] + ldr r3, [sp, #0x38] + ldr r2, [sp, #0x0] + add r0, r0, #0x44 + mov r1, #0x1 + str r3, [r2, #0x40] + bl NNSi_G2dSrtcInitControl + ldr r0, [sp, #0x0] + mov r1, #0x0 + strh r1, [r0, #0x2c] + add sp, sp, #0xc + ldmia sp!, {r4-r11,pc} + arm_func_end NNS_G2dInitMCAnimation + + arm_func_start NNS_G2dSetMCAnimationCurrentFrame +NNS_G2dSetMCAnimationCurrentFrame: ; 0x020B2194 + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + mov r7, r0 + bl NNS_G2dSetAnimCtrlCurrentFrame + cmp r0, #0x0 + addeq sp, sp, #0x4 + ldmeqia sp!, {r4-r7,pc} + mov r0, r7 + bl NNS_G2dGetAnimCtrlCurrentElement + mov r4, r0 + ldrh r1, [r4, #0x0] + ldr r0, [r7, #0x40] + bl NNS_G2dGetMultiCellDataByIdx + ldr r1, [r7, #0x18] + mov r6, r0 + ldr r1, [r1, #0x4] + add r0, r7, #0x44 + and r5, r1, #0xff + mov r1, #0x1 + bl NNSi_G2dSrtcInitControl + cmp r5, #0x0 + beq _020B2234 + cmp r5, #0x2 + bne _020B2208 + ldrsh r1, [r4, #0x4] + ldrsh r2, [r4, #0x6] + add r0, r7, #0x44 + bl NNSi_G2dSrtcSetTrans + b _020B2234 +_020B2208: + ldr r1, [r4, #0x4] + ldr r2, [r4, #0x8] + add r0, r7, #0x44 + bl NNSi_G2dSrtcSetSRTScale + ldrh r1, [r4, #0x2] + add r0, r7, #0x44 + bl NNSi_G2dSrtcSetSRTRotZ + ldrsh r1, [r4, #0xc] + ldrsh r2, [r4, #0xe] + add r0, r7, #0x44 + bl NNSi_G2dSrtcSetTrans +_020B2234: + ldrh r2, [r7, #0x2c] + mov r1, r6 + add r0, r7, #0x30 + bl SetMCDataToMCInstanceImpl_ + add sp, sp, #0x4 + ldmia sp!, {r4-r7,pc} + arm_func_end NNS_G2dSetMCAnimationCurrentFrame + + arm_func_start NNS_G2dTickMCAnimation +NNS_G2dTickMCAnimation: ; 0x020B224C + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + mov r4, r0 + ldr r2, [r4, #0x0] + mov r6, r1 + ldrh r5, [r2, #0x4] + bl NNS_G2dTickAnimCtrl + cmp r0, #0x0 + beq _020B2318 + ldrh r1, [r4, #0x2c] + mov r0, r4 + add r1, r1, r5 + strh r1, [r4, #0x2c] + bl NNS_G2dGetAnimCtrlCurrentElement + mov r5, r0 + ldrh r1, [r5, #0x0] + ldr r0, [r4, #0x40] + bl NNS_G2dGetMultiCellDataByIdx + ldr r1, [r4, #0x18] + mov r7, r0 + ldr r1, [r1, #0x4] + add r0, r4, #0x44 + and r6, r1, #0xff + mov r1, #0x1 + bl NNSi_G2dSrtcInitControl + cmp r6, #0x0 + beq _020B2300 + cmp r6, #0x2 + bne _020B22D4 + ldrsh r1, [r5, #0x4] + ldrsh r2, [r5, #0x6] + add r0, r4, #0x44 + bl NNSi_G2dSrtcSetTrans + b _020B2300 +_020B22D4: + ldr r1, [r5, #0x4] + ldr r2, [r5, #0x8] + add r0, r4, #0x44 + bl NNSi_G2dSrtcSetSRTScale + ldrh r1, [r5, #0x2] + add r0, r4, #0x44 + bl NNSi_G2dSrtcSetSRTRotZ + ldrsh r1, [r5, #0xc] + ldrsh r2, [r5, #0xe] + add r0, r4, #0x44 + bl NNSi_G2dSrtcSetTrans +_020B2300: + ldrh r2, [r4, #0x2c] + mov r1, r7 + add r0, r4, #0x30 + bl SetMCDataToMCInstanceImpl_ + add sp, sp, #0x4 + ldmia sp!, {r4-r7,pc} +_020B2318: + mov r1, r6 + add r0, r4, #0x30 + bl NNS_G2dTickMCInstance + add sp, sp, #0x4 + ldmia sp!, {r4-r7,pc} + arm_func_end NNS_G2dTickMCAnimation + + arm_func_start NNS_G2dTickMCInstance +NNS_G2dTickMCInstance: ; 0x020B232C + stmdb sp!, {r4-r8,lr} + mov r7, r0 + ldr r0, [r7, #0x8] + mov r6, r1 + cmp r0, #0x1 + bne _020B238C + ldr r0, [r7, #0x0] + ldr r4, [r7, #0xc] + ldrh r0, [r0, #0x2] + mov r5, #0x0 + cmp r0, #0x0 + ldmlsia sp!, {r4-r8,pc} + mov r8, #0x58 +_020B2360: + mla r0, r5, r8, r4 + mov r1, r6 + bl NNS_G2dTickCellAnimation + ldr r1, [r7, #0x0] + add r0, r5, #0x1 + mov r0, r0, lsl #0x10 + ldrh r1, [r1, #0x2] + mov r5, r0, lsr #0x10 + cmp r5, r1 + blo _020B2360 + ldmia sp!, {r4-r8,pc} +_020B238C: + ldr r0, [r7, #0x0] + ldr r4, [r7, #0xc] + ldrh r0, [r0, #0x0] + mov r5, #0x0 + cmp r0, #0x0 + ldmlsia sp!, {r4-r8,pc} + mov r8, #0x28 +_020B23A8: + mul r0, r5, r8 + ldr r0, [r4, r0] + mov r1, r6 + bl NNS_G2dTickCellAnimation + ldr r1, [r7, #0x0] + add r0, r5, #0x1 + mov r0, r0, lsl #0x10 + ldrh r1, [r1, #0x0] + mov r5, r0, lsr #0x10 + cmp r5, r1 + blo _020B23A8 + ldmia sp!, {r4-r8,pc} + arm_func_end NNS_G2dTickMCInstance + + arm_func_start NNS_G2dGetMCBankNumNodesRequired +NNS_G2dGetMCBankNumNodesRequired: ; 0x020B23D8 + stmdb sp!, {r4-r6,lr} + mov r5, r0 + ldrh r0, [r5, #0x0] + mov r4, #0x0 + mov r6, r4 + cmp r0, #0x0 + bls _020B2424 +_020B23F4: + mov r0, r5 + mov r1, r6 + bl NNS_G2dGetMultiCellDataByIdx + ldrh r0, [r0, #0x0] + ldrh r1, [r5, #0x0] + cmp r0, r4 + movhi r4, r0 + add r0, r6, #0x1 + mov r0, r0, lsl #0x10 + mov r6, r0, lsr #0x10 + cmp r6, r1 + blo _020B23F4 +_020B2424: + mov r0, r4 + ldmia sp!, {r4-r6,pc} + arm_func_end NNS_G2dGetMCBankNumNodesRequired + + arm_func_start NNS_G2dSetAnimSequenceToMCAnimation +NNS_G2dSetAnimSequenceToMCAnimation: ; 0x020B242C + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + mov r7, r0 + bl NNS_G2dBindAnimCtrl + mov r1, #0x0 + mov r0, r7 + strh r1, [r7, #0x2c] + bl NNS_G2dGetAnimCtrlCurrentElement + mov r4, r0 + ldrh r1, [r4, #0x0] + ldr r0, [r7, #0x40] + bl NNS_G2dGetMultiCellDataByIdx + ldr r1, [r7, #0x18] + mov r6, r0 + ldr r1, [r1, #0x4] + add r0, r7, #0x44 + and r5, r1, #0xff + mov r1, #0x1 + bl NNSi_G2dSrtcInitControl + cmp r5, #0x0 + beq _020B24C8 + cmp r5, #0x2 + bne _020B249C + ldrsh r1, [r4, #0x4] + ldrsh r2, [r4, #0x6] + add r0, r7, #0x44 + bl NNSi_G2dSrtcSetTrans + b _020B24C8 +_020B249C: + ldr r1, [r4, #0x4] + ldr r2, [r4, #0x8] + add r0, r7, #0x44 + bl NNSi_G2dSrtcSetSRTScale + ldrh r1, [r4, #0x2] + add r0, r7, #0x44 + bl NNSi_G2dSrtcSetSRTRotZ + ldrsh r1, [r4, #0xc] + ldrsh r2, [r4, #0xe] + add r0, r7, #0x44 + bl NNSi_G2dSrtcSetTrans +_020B24C8: + ldrh r2, [r7, #0x2c] + mov r1, r6 + add r0, r7, #0x30 + bl SetMCDataToMCInstanceImpl_ + add sp, sp, #0x4 + ldmia sp!, {r4-r7,pc} + arm_func_end NNS_G2dSetAnimSequenceToMCAnimation + + arm_func_start SetMCDataToMCInstanceImpl_ +SetMCDataToMCInstanceImpl_: ; 0x020B24E0 + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0x14 + mov r10, r1 + str r0, [sp, #0x0] + str r10, [r0, #0x0] + ldr r0, [r0, #0x8] + mov r9, r2 + cmp r0, #0x1 + bne _020B2654 + ldrh r1, [r10, #0x2] + ldr r0, [sp, #0x0] + mov r4, #0x0 + ldr r8, [r0, #0xc] + cmp r1, #0x0 + bls _020B2544 + mov r3, r4 + mov r0, #0x58 +_020B2524: + mla r1, r4, r0, r8 + str r3, [r1, #0x54] + add r1, r4, #0x1 + mov r1, r1, lsl #0x10 + ldrh r2, [r10, #0x2] + mov r4, r1, lsr #0x10 + cmp r4, r2 + blo _020B2524 +_020B2544: + ldrh r0, [r10, #0x0] + mov r5, #0x0 + cmp r0, #0x0 + addls sp, sp, #0x14 + ldmlsia sp!, {r4-r11,pc} + str r5, [sp, #0x4] + mov r11, #0x1 +_020B2560: + ldr r0, [r10, #0x4] + mov r1, #0x58 + add r7, r0, r5, lsl #0x3 + ldrh r0, [r7, #0x6] + and r0, r0, #0xff00 + mov r0, r0, lsl #0x8 + mov r0, r0, lsr #0x10 + mla r6, r0, r1, r8 + ldr r0, [r6, #0x54] + cmp r0, #0x0 + bne _020B2634 + ldr r0, [sp, #0x0] + ldrh r1, [r7, #0x0] + ldr r0, [r0, #0x4] + bl NNS_G2dGetAnimSequenceByIdx + mov r4, r0 + mov r0, r6 + mov r1, r4 + bl NNS_G2dSetCellAnimationSequence + str r11, [r6, #0x8] + ldrh r0, [r7, #0x6] + and r0, r0, #0xf + cmp r0, #0x1 + bne _020B2630 + ldrh r1, [r4, #0x0] + ldr r7, [sp, #0x4] + mov r3, r7 + cmp r1, #0x0 + bls _020B25F0 + ldr r2, [r4, #0xc] +_020B25D8: + add r0, r2, r3, lsl #0x3 + ldrh r0, [r0, #0x4] + add r3, r3, #0x1 + cmp r3, r1 + add r7, r7, r0 + blo _020B25D8 +_020B25F0: + mov r0, r6 + bl NNSi_G2dIsAnimCtrlLoopAnim + cmp r0, #0x0 + beq _020B261C + mov r0, r9 + mov r1, r7 + bl _u32_div_f + mov r0, r6 + mov r1, r1, lsl #0xc + bl NNS_G2dTickCellAnimation + b _020B2630 +_020B261C: + cmp r9, r7 + movcc r7, r9 + mov r0, r6 + mov r1, r7, lsl #0xc + bl NNS_G2dTickCellAnimation +_020B2630: + str r11, [r6, #0x54] +_020B2634: + add r0, r5, #0x1 + mov r0, r0, lsl #0x10 + ldrh r1, [r10, #0x0] + mov r5, r0, lsr #0x10 + cmp r5, r1 + blo _020B2560 + add sp, sp, #0x14 + ldmia sp!, {r4-r11,pc} +_020B2654: + ldrh r1, [r10, #0x0] + ldr r0, [sp, #0x0] + mov r4, #0x0 + cmp r1, #0x0 + ldr r11, [r0, #0xc] + addls sp, sp, #0x14 + ldmlsia sp!, {r4-r11,pc} + mov r0, #0x1 + str r4, [sp, #0xc] + str r0, [sp, #0x8] +_020B267C: + mov r0, #0x28 + mul r2, r4, r0 + ldr r3, [r10, #0x4] + mov r0, r4, lsl #0x3 + ldrh r1, [r3, r0] + ldr r0, [sp, #0x0] + ldr r6, [r11, r2] + ldr r0, [r0, #0x4] + add r7, r3, r4, lsl #0x3 + bl NNS_G2dGetAnimSequenceByIdx + mov r5, r0 + mov r0, r6 + mov r1, r5 + bl NNS_G2dSetCellAnimationSequence + ldr r0, [sp, #0x8] + str r0, [r6, #0x8] + ldrh r0, [r7, #0x6] + and r0, r0, #0xf + cmp r0, #0x1 + bne _020B2740 + ldrh r1, [r5, #0x0] + ldr r8, [sp, #0xc] + mov r0, r8 + cmp r1, #0x0 + bls _020B2700 + ldr r3, [r5, #0xc] +_020B26E4: + add r1, r3, r0, lsl #0x3 + ldrh r2, [r1, #0x4] + add r0, r0, #0x1 + ldrh r1, [r5, #0x0] + add r8, r8, r2 + cmp r0, r1 + blo _020B26E4 +_020B2700: + mov r0, r6 + bl NNSi_G2dIsAnimCtrlLoopAnim + cmp r0, #0x0 + beq _020B272C + mov r0, r9 + mov r1, r8 + bl _u32_div_f + mov r0, r6 + mov r1, r1, lsl #0xc + bl NNS_G2dTickCellAnimation + b _020B2740 +_020B272C: + cmp r9, r8 + movcc r8, r9 + mov r0, r6 + mov r1, r8, lsl #0xc + bl NNS_G2dTickCellAnimation +_020B2740: + mov r0, #0x28 + mla r3, r4, r0, r11 + ldr r0, [sp, #0x8] + str r0, [r3, #0x8] + ldrsh r1, [r7, #0x2] + ldrsh r2, [r7, #0x4] + add r0, r3, #0xc + bl NNSi_G2dSrtcSetTrans + add r0, r4, #0x1 + mov r0, r0, lsl #0x10 + ldrh r1, [r10, #0x0] + mov r4, r0, lsr #0x10 + cmp r4, r1 + blo _020B267C + add sp, sp, #0x14 + ldmia sp!, {r4-r11,pc} + arm_func_end SetMCDataToMCInstanceImpl_ diff --git a/arm9/asm/NNS_G2D_g2d_nan_load.s b/arm9/asm/NNS_G2D_g2d_nan_load.s new file mode 100644 index 00000000..6e8b6c27 --- /dev/null +++ b/arm9/asm/NNS_G2D_g2d_nan_load.s @@ -0,0 +1,155 @@ + .include "asm/macros.inc" + .include "global.inc" + + .section .text + + arm_func_start NNS_G2dGetAnimSequenceByIdx +NNS_G2dGetAnimSequenceByIdx: ; 0x020AFC04 + ldrh r2, [r0, #0x0] + cmp r2, r1 + ldrhi r0, [r0, #0x4] + addhi r0, r0, r1, lsl #0x4 + movls r0, #0x0 + bx lr + arm_func_end NNS_G2dGetAnimSequenceByIdx + + arm_func_start NNS_G2dUnpackNAN +NNS_G2dUnpackNAN: ; 0x020AFC1C + stmdb sp!, {r4-r9,lr} + sub sp, sp, #0x4 + ldr r1, [r0, #0x4] + mov r6, #0x0 + add r1, r1, r0 + str r1, [r0, #0x4] + ldr r1, [r0, #0x8] + add r1, r1, r0 + str r1, [r0, #0x8] + ldr r1, [r0, #0xc] + add r1, r1, r0 + str r1, [r0, #0xc] + ldrh r1, [r0, #0x0] + ldr r4, [r0, #0x4] + ldr lr, [r0, #0x8] + cmp r1, #0x0 + ldr r12, [r0, #0xc] + bls _020AFCCC + mov r1, r6 +_020AFC68: + add r2, r4, r6, lsl #0x4 + ldr r5, [r2, #0xc] + mov r3, r6, lsl #0x4 + add r5, lr, r5 + str r5, [r2, #0xc] + ldrh r7, [r4, r3] + mov r5, r1 + cmp r7, #0x0 + bls _020AFCB4 +_020AFC8C: + ldr r9, [r2, #0xc] + add r7, r5, #0x1 + ldr r8, [r9, r5, lsl #0x3] + mov r7, r7, lsl #0x10 + add r8, r12, r8 + str r8, [r9, r5, lsl #0x3] + ldrh r8, [r4, r3] + mov r5, r7, lsr #0x10 + cmp r5, r8 + blo _020AFC8C +_020AFCB4: + add r2, r6, #0x1 + mov r2, r2, lsl #0x10 + ldrh r3, [r0, #0x0] + mov r6, r2, lsr #0x10 + cmp r6, r3 + blo _020AFC68 +_020AFCCC: + ldr r1, [r0, #0x14] + cmp r1, #0x0 + addeq sp, sp, #0x4 + ldmeqia sp!, {r4-r9,pc} + add r1, r1, r0 + str r1, [r0, #0x14] + ldr r1, [r0, #0x14] + mov r12, #0x0 + add r2, r1, #0x8 + ldr r0, [r2, #0x4] + add r0, r0, r2 + str r0, [r2, #0x4] + ldrh r0, [r1, #0x8] + cmp r0, #0x0 + addls sp, sp, #0x4 + ldmlsia sp!, {r4-r9,pc} + mov r0, r12 + mov r6, r12 +_020AFD14: + ldr r5, [r2, #0x4] + mov r3, r6 + add r1, r5, r0 + ldr r4, [r1, #0x4] + add r4, r4, r2 + str r4, [r1, #0x4] + ldr r4, [r1, #0x8] + add r4, r4, r2 + str r4, [r1, #0x8] + ldrh r4, [r5, r0] + cmp r4, #0x0 + bls _020AFD6C + mov r7, r6 +_020AFD48: + ldr r5, [r1, #0x8] + add r3, r3, #0x1 + ldr r4, [r5, r7] + add r4, r4, r2 + str r4, [r5, r7] + ldrh r4, [r1, #0x0] + add r7, r7, #0x4 + cmp r3, r4 + blo _020AFD48 +_020AFD6C: + ldrh r1, [r2, #0x0] + add r12, r12, #0x1 + add r0, r0, #0xc + cmp r12, r1 + blo _020AFD14 + add sp, sp, #0x4 + ldmia sp!, {r4-r9,pc} + arm_func_end NNS_G2dUnpackNAN + + arm_func_start NNS_G2dGetUnpackedMCAnimBank +NNS_G2dGetUnpackedMCAnimBank: ; 0x020AFD88 + ldr ip, _020AFD90 ; =GetUnpackedAnimBankImpl_ + bx r12 + .balign 4 +_020AFD90: .word GetUnpackedAnimBankImpl_ + arm_func_end NNS_G2dGetUnpackedMCAnimBank + + arm_func_start NNS_G2dGetUnpackedAnimBank +NNS_G2dGetUnpackedAnimBank: ; 0x020AFD94 + ldr ip, _020AFD9C ; =GetUnpackedAnimBankImpl_ + bx r12 + .balign 4 +_020AFD9C: .word GetUnpackedAnimBankImpl_ + arm_func_end NNS_G2dGetUnpackedAnimBank + + arm_func_start GetUnpackedAnimBankImpl_ +GetUnpackedAnimBankImpl_: ; 0x020AFDA0 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r5, r1 + ldr r1, _020AFDE4 ; =0x41424E4B + bl NNS_G2dFindBinaryBlock + movs r4, r0 + moveq r0, #0x0 + addeq sp, sp, #0x4 + streq r0, [r5, #0x0] + ldmeqia sp!, {r4-r5,pc} + add r0, r4, #0x8 + bl NNS_G2dUnpackNAN + add r0, r4, #0x8 + str r0, [r5, #0x0] + mov r0, #0x1 + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + .balign 4 +_020AFDE4: .word 0x41424E4B + arm_func_end GetUnpackedAnimBankImpl_ diff --git a/arm9/asm/NNS_G2D_g2d_ncg_load.s b/arm9/asm/NNS_G2D_g2d_ncg_load.s new file mode 100644 index 00000000..95535da5 --- /dev/null +++ b/arm9/asm/NNS_G2D_g2d_ncg_load.s @@ -0,0 +1,66 @@ + .include "asm/macros.inc" + .include "global.inc" + + .section .text + + arm_func_start NNS_G2dUnpackBGNCG +NNS_G2dUnpackBGNCG: ; 0x020B0020 + ldr r1, [r0, #0x14] + add r1, r1, r0 + str r1, [r0, #0x14] + bx lr + arm_func_end NNS_G2dUnpackBGNCG + + arm_func_start NNS_G2dGetUnpackedBGCharacterData +NNS_G2dGetUnpackedBGCharacterData: ; 0x020B0030 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r5, r1 + ldr r1, _020B0074 ; =0x43484152 + bl NNS_G2dFindBinaryBlock + movs r4, r0 + moveq r0, #0x0 + addeq sp, sp, #0x4 + streq r0, [r5, #0x0] + ldmeqia sp!, {r4-r5,pc} + add r0, r4, #0x8 + bl NNS_G2dUnpackBGNCG + add r0, r4, #0x8 + str r0, [r5, #0x0] + mov r0, #0x1 + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + .balign 4 +_020B0074: .word 0x43484152 + arm_func_end NNS_G2dGetUnpackedBGCharacterData + + arm_func_start NNS_G2dUnpackNCG +NNS_G2dUnpackNCG: ; 0x020B0078 + ldr r1, [r0, #0x14] + add r1, r1, r0 + str r1, [r0, #0x14] + bx lr + arm_func_end NNS_G2dUnpackNCG + + arm_func_start NNS_G2dGetUnpackedCharacterData +NNS_G2dGetUnpackedCharacterData: ; 0x020B0088 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r5, r1 + ldr r1, _020B00CC ; =0x43484152 + bl NNS_G2dFindBinaryBlock + movs r4, r0 + moveq r0, #0x0 + addeq sp, sp, #0x4 + streq r0, [r5, #0x0] + ldmeqia sp!, {r4-r5,pc} + add r0, r4, #0x8 + bl NNS_G2dUnpackNCG + add r0, r4, #0x8 + str r0, [r5, #0x0] + mov r0, #0x1 + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + .balign 4 +_020B00CC: .word 0x43484152 + arm_func_end NNS_G2dGetUnpackedCharacterData diff --git a/arm9/asm/NNS_G2D_g2d_ncl_load.s b/arm9/asm/NNS_G2D_g2d_ncl_load.s new file mode 100644 index 00000000..1fc246b2 --- /dev/null +++ b/arm9/asm/NNS_G2D_g2d_ncl_load.s @@ -0,0 +1,66 @@ + .include "asm/macros.inc" + .include "global.inc" + + .section .text + + arm_func_start NNS_G2dUnpackNCL +NNS_G2dUnpackNCL: ; 0x020B00D0 + ldr r1, [r0, #0xc] + add r1, r1, r0 + str r1, [r0, #0xc] + bx lr + arm_func_end NNS_G2dUnpackNCL + + arm_func_start NNSi_G2dUnpackNCLCmpInfo +NNSi_G2dUnpackNCLCmpInfo: ; 0x020B00E0 + ldr r1, [r0, #0x4] + add r1, r1, r0 + str r1, [r0, #0x4] + bx lr + arm_func_end NNSi_G2dUnpackNCLCmpInfo + + arm_func_start NNS_G2dGetUnpackedPaletteCompressInfo +NNS_G2dGetUnpackedPaletteCompressInfo: ; 0x020B00F0 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r5, r1 + ldr r1, _020B0134 ; =0x50434D50 + bl NNS_G2dFindBinaryBlock + movs r4, r0 + moveq r0, #0x0 + addeq sp, sp, #0x4 + streq r0, [r5, #0x0] + ldmeqia sp!, {r4-r5,pc} + add r0, r4, #0x8 + bl NNSi_G2dUnpackNCLCmpInfo + add r0, r4, #0x8 + str r0, [r5, #0x0] + mov r0, #0x1 + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + .balign 4 +_020B0134: .word 0x50434D50 + arm_func_end NNS_G2dGetUnpackedPaletteCompressInfo + + arm_func_start NNS_G2dGetUnpackedPaletteData +NNS_G2dGetUnpackedPaletteData: ; 0x020B0138 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r5, r1 + ldr r1, _020B017C ; =0x504C5454 + bl NNS_G2dFindBinaryBlock + movs r4, r0 + moveq r0, #0x0 + addeq sp, sp, #0x4 + streq r0, [r5, #0x0] + ldmeqia sp!, {r4-r5,pc} + add r0, r4, #0x8 + bl NNS_G2dUnpackNCL + add r0, r4, #0x8 + str r0, [r5, #0x0] + mov r0, #0x1 + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + .balign 4 +_020B017C: .word 0x504C5454 + arm_func_end NNS_G2dGetUnpackedPaletteData diff --git a/arm9/asm/NNS_G2D_g2d_nft_load.s b/arm9/asm/NNS_G2D_g2d_nft_load.s new file mode 100644 index 00000000..3f9c0e77 --- /dev/null +++ b/arm9/asm/NNS_G2D_g2d_nft_load.s @@ -0,0 +1,180 @@ + .include "asm/macros.inc" + .include "global.inc" + + .section .text + + arm_func_start NNSi_G2dUnpackNFT +NNSi_G2dUnpackNFT: ; 0x020B7468 + stmdb sp!, {r4-r6,lr} + ldrh r2, [r0, #0xc] + ldrh r3, [r0, #0xe] + mov r1, #0x0 + add r2, r0, r2 + cmp r3, #0x0 + ldmleia sp!, {r4-r6,pc} + ldr r3, _020B7548 ; =0x46494E46 + ldr ip, _020B754C ; =0x43574448 + ldr r4, _020B7550 ; =0x434D4150 + ldr lr, _020B7554 ; =0x43474C50 +_020B7494: + ldr r5, [r2, #0x0] + cmp r5, r4 + bhi _020B74B0 + cmp r5, r4 + bhs _020B7518 + cmp r5, lr + b _020B752C +_020B74B0: + cmp r5, r12 + bhi _020B74C4 + cmp r5, r12 + beq _020B7500 + b _020B752C +_020B74C4: + cmp r5, r3 + bne _020B752C + add r6, r2, #0x8 + ldr r5, [r6, #0x8] + add r5, r5, r0 + str r5, [r6, #0x8] + ldr r5, [r6, #0xc] + cmp r5, #0x0 + addne r5, r5, r0 + strne r5, [r6, #0xc] + ldr r5, [r6, #0x10] + cmp r5, #0x0 + addne r5, r5, r0 + strne r5, [r6, #0x10] + b _020B752C +_020B7500: + add r6, r2, #0x8 + ldr r5, [r6, #0x4] + cmp r5, #0x0 + addne r5, r5, r0 + strne r5, [r6, #0x4] + b _020B752C +_020B7518: + add r6, r2, #0x8 + ldr r5, [r6, #0x8] + cmp r5, #0x0 + addne r5, r5, r0 + strne r5, [r6, #0x8] +_020B752C: + ldrh r5, [r0, #0xe] + ldr r6, [r2, #0x4] + add r1, r1, #0x1 + cmp r1, r5 + add r2, r2, r6 + blt _020B7494 + ldmia sp!, {r4-r6,pc} + .balign 4 +_020B7548: .word 0x46494E46 +_020B754C: .word 0x43574448 +_020B7550: .word 0x434D4150 +_020B7554: .word 0x43474C50 + arm_func_end NNSi_G2dUnpackNFT + + arm_func_start NNSi_G2dGetUnpackedFont +NNSi_G2dGetUnpackedFont: ; 0x020B7558 + stmdb sp!, {r4-r6,lr} + movs r6, r0 + mov r5, r1 + beq _020B75C8 + cmp r6, #0x0 + beq _020B7584 + ldr r1, [r6, #0x0] + ldr r0, _020B76A8 ; =0x4E465452 + cmp r1, r0 + moveq r0, #0x1 + beq _020B7588 +_020B7584: + mov r0, #0x0 +_020B7588: + cmp r0, #0x0 + movne r0, #0x1 + moveq r0, #0x0 + cmp r0, #0x0 + beq _020B75CC + cmp r6, #0x0 + beq _020B75B4 + ldrh r0, [r6, #0x6] + cmp r0, #0x100 + movcs r0, #0x1 + bhs _020B75B8 +_020B75B4: + mov r0, #0x0 +_020B75B8: + cmp r0, #0x0 + movne r0, #0x1 + moveq r0, #0x0 + b _020B75CC +_020B75C8: + mov r0, #0x0 +_020B75CC: + cmp r0, #0x0 + movne r4, #0x0 + bne _020B7654 + cmp r6, #0x0 + beq _020B7640 + cmp r6, #0x0 + beq _020B75FC + ldr r1, [r6, #0x0] + ldr r0, _020B76A8 ; =0x4E465452 + cmp r1, r0 + moveq r0, #0x1 + beq _020B7600 +_020B75FC: + mov r0, #0x0 +_020B7600: + cmp r0, #0x0 + movne r0, #0x1 + moveq r0, #0x0 + cmp r0, #0x0 + beq _020B7644 + cmp r6, #0x0 + beq _020B762C + ldrh r0, [r6, #0x6] + cmp r0, #0x1 + movcs r0, #0x1 + bhs _020B7630 +_020B762C: + mov r0, #0x0 +_020B7630: + cmp r0, #0x0 + movne r0, #0x1 + moveq r0, #0x0 + b _020B7644 +_020B7640: + mov r0, #0x0 +_020B7644: + cmp r0, #0x0 + movne r4, #0x1 + bne _020B7654 + bl OS_Terminate +_020B7654: + mov r0, r6 + bl NNSi_G2dUnpackNFT + ldr r1, _020B76AC ; =0x46494E46 + mov r0, r6 + bl NNS_G2dFindBinaryBlock + cmp r0, #0x0 + moveq r0, #0x0 + streq r0, [r5, #0x0] + ldmeqia sp!, {r4-r6,pc} + add r0, r0, #0x8 + str r0, [r5, #0x0] + cmp r4, #0x0 + beq _020B76A0 + ldr r2, [r5, #0x0] + mov r1, #0x0 + ldrsb r0, [r2, #0x6] + strb r0, [r2, #0x7] + ldr r0, [r5, #0x0] + strb r1, [r0, #0x6] +_020B76A0: + add r0, r4, #0x1 + ldmia sp!, {r4-r6,pc} + .balign 4 +_020B76A8: .word 0x4E465452 +_020B76AC: .word 0x46494E46 + arm_func_end NNSi_G2dGetUnpackedFont diff --git a/arm9/asm/NNS_G2D_g2d_nmc_load.s b/arm9/asm/NNS_G2D_g2d_nmc_load.s new file mode 100644 index 00000000..abe55e8e --- /dev/null +++ b/arm9/asm/NNS_G2D_g2d_nmc_load.s @@ -0,0 +1,83 @@ + .include "asm/macros.inc" + .include "global.inc" + + .section .text + + arm_func_start NNS_G2dGetMultiCellDataByIdx +NNS_G2dGetMultiCellDataByIdx: ; 0x020AFF34 + ldrh r2, [r0, #0x0] + cmp r1, r2 + ldrcc r0, [r0, #0x4] + addcc r0, r0, r1, lsl #0x3 + movcs r0, #0x0 + bx lr + arm_func_end NNS_G2dGetMultiCellDataByIdx + + arm_func_start NNS_G2dUnpackNMC +NNS_G2dUnpackNMC: ; 0x020AFF4C + stmdb sp!, {r4,lr} + ldr r1, [r0, #0x4] + mov r4, #0x0 + add r1, r1, r0 + str r1, [r0, #0x4] + ldr r1, [r0, #0x8] + add r1, r1, r0 + str r1, [r0, #0x8] + ldrh r1, [r0, #0x0] + ldr lr, [r0, #0x4] + cmp r1, #0x0 + bls _020AFFA8 +_020AFF7C: + add r3, lr, r4, lsl #0x3 + ldr r12, [r0, #0x8] + ldr r2, [r3, #0x4] + add r1, r4, #0x1 + add r2, r12, r2 + str r2, [r3, #0x4] + mov r1, r1, lsl #0x10 + ldrh r2, [r0, #0x0] + mov r4, r1, lsr #0x10 + cmp r4, r2 + blo _020AFF7C +_020AFFA8: + ldr r1, [r0, #0x10] + cmp r1, #0x0 + ldmeqia sp!, {r4,pc} + add r1, r1, r0 + str r1, [r0, #0x10] + ldr r0, [r0, #0x10] + bl UnpackExtendedData_ + ldmia sp!, {r4,pc} + arm_func_end NNS_G2dUnpackNMC + + arm_func_start UnpackExtendedData_ +UnpackExtendedData_: ; 0x020AFFC8 + ldr ip, _020AFFD4 ; =NNSi_G2dUnpackUserExCellAttrBank + add r0, r0, #0x8 + bx r12 + .balign 4 +_020AFFD4: .word NNSi_G2dUnpackUserExCellAttrBank + arm_func_end UnpackExtendedData_ + + arm_func_start NNS_G2dGetUnpackedMultiCellBank +NNS_G2dGetUnpackedMultiCellBank: ; 0x020AFFD8 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r5, r1 + ldr r1, _020B001C ; =0x4D43424B + bl NNS_G2dFindBinaryBlock + movs r4, r0 + moveq r0, #0x0 + addeq sp, sp, #0x4 + streq r0, [r5, #0x0] + ldmeqia sp!, {r4-r5,pc} + add r0, r4, #0x8 + bl NNS_G2dUnpackNMC + add r0, r4, #0x8 + str r0, [r5, #0x0] + mov r0, #0x1 + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + .balign 4 +_020B001C: .word 0x4D43424B + arm_func_end NNS_G2dGetUnpackedMultiCellBank diff --git a/arm9/asm/NNS_G2D_g2d_nob_load.s b/arm9/asm/NNS_G2D_g2d_nob_load.s new file mode 100644 index 00000000..319a6a4a --- /dev/null +++ b/arm9/asm/NNS_G2D_g2d_nob_load.s @@ -0,0 +1,112 @@ + .include "asm/macros.inc" + .include "global.inc" + + .section .text + + arm_func_start NNS_G2dUnpackNCE +NNS_G2dUnpackNCE: ; 0x020AFDE8 + stmdb sp!, {r4-r6,lr} + mov r5, r0 + ldr r1, [r5, #0x4] + add r1, r1, r5 + str r1, [r5, #0x4] + bl GetPtrOamArrayHead_ + ldrh r1, [r5, #0x0] + mov r4, r0 + mov r6, #0x0 + cmp r1, #0x0 + bls _020AFE44 +_020AFE14: + mov r0, r5 + mov r1, r6 + bl NNS_G2dGetCellDataByIdx + ldr r2, [r0, #0x4] + add r1, r6, #0x1 + add r2, r2, r4 + str r2, [r0, #0x4] + mov r0, r1, lsl #0x10 + ldrh r1, [r5, #0x0] + mov r6, r0, lsr #0x10 + cmp r6, r1 + blo _020AFE14 +_020AFE44: + ldr r0, [r5, #0xc] + cmp r0, #0x0 + beq _020AFE6C + add r0, r0, r5 + str r0, [r5, #0xc] + ldr r1, [r5, #0xc] + ldr r0, [r1, #0x4] + add r0, r0, r1 + str r0, [r1, #0x4] + str r1, [r5, #0xc] +_020AFE6C: + ldr r0, [r5, #0x14] + cmp r0, #0x0 + ldmeqia sp!, {r4-r6,pc} + add r0, r0, r5 + str r0, [r5, #0x14] + ldr r0, [r5, #0x14] + bl UnPackExtendedData_ + ldmia sp!, {r4-r6,pc} + arm_func_end NNS_G2dUnpackNCE + + arm_func_start NNS_G2dGetCellDataByIdx +NNS_G2dGetCellDataByIdx: ; 0x020AFE8C + ldrh r2, [r0, #0x0] + cmp r1, r2 + movcs r0, #0x0 + bxcs lr + ldrh r2, [r0, #0x2] + ands r2, r2, #0x1 + ldrne r0, [r0, #0x4] + addne r0, r0, r1, lsl #0x4 + ldreq r0, [r0, #0x4] + addeq r0, r0, r1, lsl #0x3 + bx lr + arm_func_end NNS_G2dGetCellDataByIdx + + arm_func_start NNS_G2dGetUnpackedCellBank +NNS_G2dGetUnpackedCellBank: ; 0x020AFEB8 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r5, r1 + ldr r1, _020AFEFC ; =0x4345424B + bl NNS_G2dFindBinaryBlock + movs r4, r0 + moveq r0, #0x0 + addeq sp, sp, #0x4 + streq r0, [r5, #0x0] + ldmeqia sp!, {r4-r5,pc} + add r0, r4, #0x8 + bl NNS_G2dUnpackNCE + add r0, r4, #0x8 + str r0, [r5, #0x0] + mov r0, #0x1 + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + .balign 4 +_020AFEFC: .word 0x4345424B + arm_func_end NNS_G2dGetUnpackedCellBank + + arm_func_start UnPackExtendedData_ +UnPackExtendedData_: ; 0x020AFF00 + ldr ip, _020AFF0C ; =NNSi_G2dUnpackUserExCellAttrBank + add r0, r0, #0x8 + bx r12 + .balign 4 +_020AFF0C: .word NNSi_G2dUnpackUserExCellAttrBank + arm_func_end UnPackExtendedData_ + + arm_func_start GetPtrOamArrayHead_ +GetPtrOamArrayHead_: ; 0x020AFF10 + ldrh r1, [r0, #0x2] + ands r1, r1, #0x1 + ldrneh r1, [r0, #0x0] + ldrne r0, [r0, #0x4] + addne r0, r0, r1, lsl #0x4 + ldreqh r1, [r0, #0x0] + ldreq r0, [r0, #0x4] + addeq r0, r0, r1, lsl #0x3 + bx lr + arm_func_end GetPtrOamArrayHead_ diff --git a/arm9/asm/NNS_G2D_g2d_node.s b/arm9/asm/NNS_G2D_g2d_node.s new file mode 100644 index 00000000..eb4e2497 --- /dev/null +++ b/arm9/asm/NNS_G2D_g2d_node.s @@ -0,0 +1,18 @@ + .include "asm/macros.inc" + .include "global.inc" + + .section .text + + arm_func_start NNSi_G2dInitializeNode +NNSi_G2dInitializeNode: ; 0x020B1AD4 + mov r2, #0x0 + str r2, [r0, #0x0] + str r1, [r0, #0x4] + mov r1, #0x1 + str r1, [r0, #0x8] + ldr ip, _020B1AF4 ; =NNSi_G2dSrtcInitControl + add r0, r0, #0xc + bx r12 + .balign 4 +_020B1AF4: .word NNSi_G2dSrtcInitControl + arm_func_end NNSi_G2dInitializeNode diff --git a/arm9/asm/NNS_G2D_g2d_nsc_load.s b/arm9/asm/NNS_G2D_g2d_nsc_load.s new file mode 100644 index 00000000..4f2bb65c --- /dev/null +++ b/arm9/asm/NNS_G2D_g2d_nsc_load.s @@ -0,0 +1,21 @@ + .include "asm/macros.inc" + .include "global.inc" + + .section .text + + arm_func_start NNS_G2dGetUnpackedScreenData +NNS_G2dGetUnpackedScreenData: ; 0x020B0180 + stmdb sp!, {r4,lr} + mov r4, r1 + ldr r1, _020B01AC ; =0x5343524E + bl NNS_G2dFindBinaryBlock + cmp r0, #0x0 + addne r0, r0, #0x8 + strne r0, [r4, #0x0] + movne r0, #0x1 + moveq r0, #0x0 + streq r0, [r4, #0x0] + ldmia sp!, {r4,pc} + .balign 4 +_020B01AC: .word 0x5343524E + arm_func_end NNS_G2dGetUnpackedScreenData diff --git a/arm9/asm/NNS_G2D_g2d_oam.s b/arm9/asm/NNS_G2D_g2d_oam.s new file mode 100644 index 00000000..cec3db64 --- /dev/null +++ b/arm9/asm/NNS_G2D_g2d_oam.s @@ -0,0 +1,667 @@ + .include "asm/macros.inc" + .include "global.inc" + + .section .rodata + + .global NNSi_objSizeHTbl +NNSi_objSizeHTbl: ; 0x020FF894 + .byte 0x08, 0x00, 0x10, 0x00, 0x20, 0x00, 0x40, 0x00, 0x08, 0x00, 0x08, 0x00, 0x10, 0x00, 0x20, 0x00 + .byte 0x10, 0x00, 0x20, 0x00, 0x20, 0x00, 0x40, 0x00 + + .global NNSi_objSizeWTbl +NNSi_objSizeWTbl: ; 0x020FF8AC + .byte 0x08, 0x00, 0x10, 0x00, 0x20, 0x00, 0x40, 0x00, 0x10, 0x00, 0x20, 0x00, 0x20, 0x00, 0x40, 0x00 + .byte 0x08, 0x00, 0x08, 0x00, 0x10, 0x00, 0x20, 0x00 + ; static const in function + + .section .data + + .global funcTbl$8497 +funcTbl$8497: ; 0x0210655C + .word CpuLoadOAMMain_ + .word CpuLoadOAMSub_ + .word 0 + .word 0 + .word 0 + + .section .bss + + .global numRegisterdInstance_ +numRegisterdInstance_: ; 0x021CCD9C + .space 0x4 + + .global oamCache_ +oamCache_: ; 0x021CCDA0 + .space 0xFC0 + + .section .text + + arm_func_start NNS_G2dGetOamManagerOamCapacity +NNS_G2dGetOamManagerOamCapacity: ; 0x020B0830 + ldrh r3, [r0, #0x6] + ldrh r2, [r0, #0x8] + mov r12, #0x0 + add r1, r3, #0x1 + cmp r2, r1 + bgt _020B0854 + ldrh r0, [r0, #0x4] + cmp r0, r3 + movls r12, #0x1 +_020B0854: + cmp r12, #0x0 + subne r0, r3, r2 + addne r0, r0, #0x1 + movne r0, r0, lsl #0x10 + movne r0, r0, lsr #0x10 + moveq r0, #0x0 + bx lr + arm_func_end NNS_G2dGetOamManagerOamCapacity + + arm_func_start NNS_G2dApplyAndResetOamManagerBuffer +NNS_G2dApplyAndResetOamManagerBuffer: ; 0x020B0870 + stmdb sp!, {r4,lr} + mov r4, r0 + bl NNS_G2dApplyOamManagerToHW + mov r0, r4 + bl NNS_G2dResetOamManagerBuffer + ldmia sp!, {r4,pc} + arm_func_end NNS_G2dApplyAndResetOamManagerBuffer + + arm_func_start NNS_G2dResetOamManagerBuffer +NNS_G2dResetOamManagerBuffer: ; 0x020B0888 + stmdb sp!, {r4-r6,lr} + mov r5, r0 + ldr r0, [r5, #0x14] + cmp r0, #0x0 + beq _020B0944 + ldrh r2, [r5, #0x6] + ldrh r1, [r5, #0x8] + mov r3, #0x0 + add r0, r2, #0x1 + cmp r1, r0 + bgt _020B08C0 + ldrh r0, [r5, #0x4] + cmp r0, r2 + movls r3, #0x1 +_020B08C0: + cmp r3, #0x0 + moveq r4, #0x0 + beq _020B08E0 + ldrh r0, [r5, #0x4] + sub r0, r2, r0 + add r0, r0, #0x1 + mov r0, r0, lsl #0x10 + mov r4, r0, lsr #0xd +_020B08E0: + ldr r2, [r5, #0x0] + ldr r1, _020B09AC ; =oamCache_ + mov r0, #0x540 + mla r1, r2, r0, r1 + ldrh r0, [r5, #0x4] + add r2, r1, #0x100 + mov r1, r4 + add r6, r2, r0, lsl #0x3 + mov r0, r6 + bl DC_InvalidateRange + ldr r0, _020B09B0 ; =GXi_DmaId + mvn r1, #0x0 + ldr r0, [r0, #0x0] + cmp r0, r1 + beq _020B0930 + mov r1, r6 + mov r3, r4 + mov r2, #0xc0 + bl MI_DmaFill32 + b _020B0998 +_020B0930: + mov r1, r6 + mov r2, r4 + mov r0, #0xc0 + bl MIi_CpuClear32 + b _020B0998 +_020B0944: + ldr r2, [r5, #0x0] + ldr r1, _020B09AC ; =oamCache_ + mov r0, #0x540 + mla r1, r2, r0, r1 + ldrh r2, [r5, #0x4] + ldrh r0, [r5, #0x6] + add r1, r1, #0x100 + add r3, r1, r2, lsl #0x3 + sub r0, r0, r2 + add r0, r0, #0x1 + mov r0, r0, lsl #0x10 + movs r2, r0, lsr #0x10 + mov r0, #0x0 + beq _020B0998 + mov r1, #0xc0 +_020B0980: + add r0, r0, #0x1 + mov r0, r0, lsl #0x10 + mov r0, r0, lsr #0x10 + cmp r0, r2 + strh r1, [r3], #0x8 + blo _020B0980 +_020B0998: + ldrh r0, [r5, #0x4] + strh r0, [r5, #0x8] + ldrh r0, [r5, #0xa] + strh r0, [r5, #0xe] + ldmia sp!, {r4-r6,pc} + .balign 4 +_020B09AC: .word oamCache_ +_020B09B0: .word GXi_DmaId + arm_func_end NNS_G2dResetOamManagerBuffer + + arm_func_start NNS_G2dApplyOamManagerToHW +NNS_G2dApplyOamManagerToHW: ; 0x020B09B4 + stmdb sp!, {r4-r10,lr} + mov r7, r0 + ldr r0, [r7, #0x14] + cmp r0, #0x0 + beq _020B0A48 + ldr r5, [r7, #0x0] + ldr r1, _020B0BA8 ; =oamCache_ + mov r0, #0x540 + mla r1, r5, r0, r1 + ldrh r2, [r7, #0x4] + ldrh r0, [r7, #0x6] + add r1, r1, #0x100 + add r4, r1, r2, lsl #0x3 + sub r0, r0, r2 + add r0, r0, #0x1 + mov r0, r0, lsl #0x13 + mov r6, r0, lsr #0x10 + mov r2, r2, lsl #0x13 + mov r0, r4 + mov r1, r6 + mov r7, r2, lsr #0x10 + bl DC_FlushRange + cmp r5, #0x0 + beq _020B0A20 + cmp r5, #0x1 + beq _020B0A34 + ldmia sp!, {r4-r10,pc} +_020B0A20: + mov r0, r4 + mov r1, r7 + mov r2, r6 + bl GX_LoadOAM + ldmia sp!, {r4-r10,pc} +_020B0A34: + mov r0, r4 + mov r1, r7 + mov r2, r6 + bl GXS_LoadOAM + ldmia sp!, {r4-r10,pc} +_020B0A48: + ldr r0, [r7, #0x0] + ldr r2, _020B0BA8 ; =oamCache_ + mov r1, #0x540 + mla r2, r0, r1, r2 + ldrh r5, [r7, #0x4] + ldrh r1, [r7, #0x6] + ldr r3, _020B0BAC ; =funcTbl$8497 + add r4, r2, #0x100 + sub r1, r1, r5 + add r1, r1, #0x1 + mov r1, r1, lsl #0x10 + mov r2, r5, lsl #0x13 + add r6, r4, r5, lsl #0x3 + movs r5, r1, lsr #0x10 + mov r4, r2, lsr #0x10 + ldr r9, [r3, r0, lsl #0x2] + mov r10, #0x0 + beq _020B0AC8 + mov r8, #0x6 +_020B0A94: + mov r0, r6 + mov r1, r4 + mov r2, r8 + blx r9 + add r0, r10, #0x1 + add r2, r4, #0x8 + mov r1, r0, lsl #0x10 + mov r0, r2, lsl #0x10 + mov r10, r1, lsr #0x10 + cmp r10, r5 + mov r4, r0, lsr #0x10 + add r6, r6, #0x8 + blo _020B0A94 +_020B0AC8: + ldrh r2, [r7, #0xc] + ldrh r1, [r7, #0xe] + mov r3, #0x0 + add r0, r2, #0x1 + cmp r1, r0 + bgt _020B0AEC + ldrh r0, [r7, #0xa] + cmp r0, r2 + movls r3, #0x1 +_020B0AEC: + cmp r3, #0x0 + ldmeqia sp!, {r4-r10,pc} + ldr r0, [r7, #0x0] + ldr r2, _020B0BA8 ; =oamCache_ + mov r1, #0x540 + mla r2, r0, r1, r2 + ldrh r5, [r7, #0xa] + add r4, r2, #0x100 + ldrh r1, [r7, #0xc] + mov r2, r5, lsl #0x15 + ldr r3, _020B0BAC ; =funcTbl$8497 + sub r1, r1, r5 + add r1, r1, #0x1 + mov r1, r1, lsl #0x10 + add r9, r4, r5, lsl #0x5 + ldr r5, [r3, r0, lsl #0x2] + movs r8, r1, lsr #0x10 + mov r7, r2, lsr #0x10 + mov r6, #0x0 + ldmeqia sp!, {r4-r10,pc} + mov r4, #0x2 +_020B0B40: + mov r2, r4 + add r0, r9, #0x6 + add r1, r7, #0x6 + blx r5 + mov r2, r4 + add r0, r9, #0xe + add r1, r7, #0xe + blx r5 + mov r2, r4 + add r0, r9, #0x16 + add r1, r7, #0x16 + blx r5 + add r0, r9, #0x1e + add r1, r7, #0x1e + mov r2, r4 + blx r5 + add r0, r7, #0x20 + mov r0, r0, lsl #0x10 + mov r7, r0, lsr #0x10 + add r9, r9, #0x20 + add r0, r6, #0x1 + mov r0, r0, lsl #0x10 + mov r6, r0, lsr #0x10 + cmp r6, r8 + blo _020B0B40 + ldmia sp!, {r4-r10,pc} + .balign 4 +_020B0BA8: .word oamCache_ +_020B0BAC: .word funcTbl$8497 + arm_func_end NNS_G2dApplyOamManagerToHW + + arm_func_start NNS_G2dEntryOamManagerAffine +NNS_G2dEntryOamManagerAffine: ; 0x020B0BB0 + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldrh r12, [r0, #0xc] + ldrh r3, [r0, #0xe] + mov lr, #0x0 + add r2, r12, #0x1 + cmp r3, r2 + bgt _020B0BDC + ldrh r2, [r0, #0xa] + cmp r2, r12 + movls lr, #0x1 +_020B0BDC: + cmp lr, #0x0 + subne r2, r12, r3 + addne r2, r2, #0x1 + movne r2, r2, lsl #0x10 + movne r2, r2, lsr #0x10 + moveq r2, #0x0 + cmp r2, #0x1 + movcs r2, #0x1 + movcc r2, #0x0 + cmp r2, #0x0 + addeq sp, sp, #0x4 + ldreq r0, _020B0C74 ; =0x0000FFFE + ldmeqia sp!, {pc} + ldr lr, [r0, #0x0] + ldr r3, _020B0C78 ; =oamCache_ + mov r2, #0x540 + mla r12, lr, r2, r3 + ldr r3, [r1, #0x0] + ldrh r2, [r0, #0xe] + add r12, r12, #0x100 + mov r3, r3, asr #0x4 + add r12, r12, r2, lsl #0x5 + strh r3, [r12, #0x6] + ldr r3, [r1, #0x4] + mov r3, r3, asr #0x4 + strh r3, [r12, #0xe] + ldr r3, [r1, #0x8] + mov r3, r3, asr #0x4 + strh r3, [r12, #0x16] + ldr r1, [r1, #0xc] + mov r1, r1, asr #0x4 + strh r1, [r12, #0x1e] + ldrh r1, [r0, #0xe] + add r1, r1, #0x1 + strh r1, [r0, #0xe] + mov r0, r2 + add sp, sp, #0x4 + ldmia sp!, {pc} + .balign 4 +_020B0C74: .word 0x0000FFFE +_020B0C78: .word oamCache_ + arm_func_end NNS_G2dEntryOamManagerAffine + + arm_func_start NNS_G2dEntryOamManagerOamWithAffineIdx +NNS_G2dEntryOamManagerOamWithAffineIdx: ; 0x020B0C7C + stmdb sp!, {r4,lr} + ldrh r12, [r0, #0x6] + ldrh r4, [r0, #0x8] + mov lr, #0x0 + add r3, r12, #0x1 + cmp r4, r3 + bgt _020B0CA4 + ldrh r3, [r0, #0x4] + cmp r3, r12 + movls lr, #0x1 +_020B0CA4: + cmp lr, #0x0 + subne r3, r12, r4 + addne r3, r3, #0x1 + movne r3, r3, lsl #0x10 + movne r3, r3, lsr #0x10 + moveq r3, #0x0 + cmp r3, #0x1 + movcs r3, #0x1 + movcc r3, #0x0 + cmp r3, #0x0 + beq _020B0D48 + ldr r4, [r0, #0x0] + ldr ip, _020B0D50 ; =oamCache_ + mov r3, #0x540 + mla r12, r4, r3, r12 + ldrh r3, [r0, #0x8] + add r4, r12, #0x100 + ldrh r12, [r1, #0x0] + mov lr, r3, lsl #0x3 + add r3, r4, r3, lsl #0x3 + strh r12, [r4, lr] + ldrh lr, [r1, #0x2] + ldr ip, _020B0D54 ; =0x0000FFFE + strh lr, [r3, #0x2] + ldrh r1, [r1, #0x4] + cmp r2, r12 + strh r1, [r3, #0x4] + beq _020B0D34 + ldr r1, [r3, #0x0] + mov r12, r1, lsl #0x16 + mov r12, r12, lsr #0x1e + ands r12, r12, #0x1 + bicne r12, r1, #0x3e000000 + andne r1, r2, #0x1f + orrne r1, r12, r1, lsl #0x19 + strne r1, [r3, #0x0] +_020B0D34: + ldrh r1, [r0, #0x8] + add r1, r1, #0x1 + strh r1, [r0, #0x8] + mov r0, #0x1 + ldmia sp!, {r4,pc} +_020B0D48: + mov r0, #0x0 + ldmia sp!, {r4,pc} + .balign 4 +_020B0D50: .word oamCache_ +_020B0D54: .word 0x0000FFFE + arm_func_end NNS_G2dEntryOamManagerOamWithAffineIdx + + arm_func_start NNS_G2dEntryOamManagerOam +NNS_G2dEntryOamManagerOam: ; 0x020B0D58 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + ldrh lr, [r0, #0x6] + ldrh r12, [r0, #0x8] + mov r4, #0x0 + add r3, lr, #0x1 + cmp r12, r3 + bgt _020B0D84 + ldrh r3, [r0, #0x4] + cmp r3, lr + movls r4, #0x1 +_020B0D84: + cmp r4, #0x0 + subne r3, lr, r12 + addne r3, r3, #0x1 + movne r3, r3, lsl #0x10 + movne r3, r3, lsr #0x10 + moveq r3, #0x0 + cmp r3, r2 + movcs r3, #0x1 + movcc r3, #0x0 + cmp r3, #0x0 + beq _020B0E24 + ldr lr, [r0, #0x0] + ldr ip, _020B0E30 ; =oamCache_ + mov r3, #0x540 + mla r12, lr, r3, r12 + ldrh r3, [r0, #0x8] + add r12, r12, #0x100 + cmp r2, #0x0 + add r4, r12, r3, lsl #0x3 + mov r5, #0x0 + ble _020B0E18 + add r3, r0, #0x8 +_020B0DDC: + ldrh lr, [r1, #0x0] + mov r0, r5, lsl #0x3 + add r12, r4, r5, lsl #0x3 + strh lr, [r4, r0] + ldrh r0, [r1, #0x2] + add r5, r5, #0x1 + cmp r5, r2 + strh r0, [r12, #0x2] + ldrh r0, [r1, #0x4] + add r1, r1, #0x8 + strh r0, [r12, #0x4] + ldrh r0, [r3, #0x0] + add r0, r0, #0x1 + strh r0, [r3, #0x0] + blt _020B0DDC +_020B0E18: + add sp, sp, #0x4 + mov r0, #0x1 + ldmia sp!, {r4-r5,pc} +_020B0E24: + mov r0, #0x0 + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + .balign 4 +_020B0E30: .word oamCache_ + arm_func_end NNS_G2dEntryOamManagerOam + + arm_func_start NNS_G2dGetNewOamManagerInstance +NNS_G2dGetNewOamManagerInstance: ; 0x020B0E34 + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + ldr r5, [sp, #0x1c] + ldr r6, _020B0FB4 ; =oamCache_ + mov r4, #0x540 + mla r4, r5, r4, r6 + mov lr, r1 + sub r1, r2, #0x1 + add r1, lr, r1 + mov r1, r1, lsl #0x10 + mov r12, r1, lsr #0x10 + add r7, r4, lr, lsl #0x1 + add r2, r4, r12, lsl #0x1 + mov r6, r0 + mov r5, r3 + cmp r7, r2 + mov r3, lr, lsl #0x1 + bhi _020B0E9C + ldr r0, _020B0FB8 ; =0x0000FFFF +_020B0E80: + ldrh r1, [r7, #0x0] + cmp r1, r0 + movne r0, #0x0 + bne _020B0EA0 + add r7, r7, #0x2 + cmp r7, r2 + bls _020B0E80 +_020B0E9C: + mov r0, #0x1 +_020B0EA0: + cmp r0, #0x0 + beq _020B0EE0 + ldr r0, _020B0FBC ; =numRegisterdInstance_ + sub r2, r12, lr + ldrh r7, [r0, #0x0] + add r1, r4, r3 + mov r2, r2, lsl #0x1 + add r3, r7, #0x1 + strh r3, [r0, #0x0] + strh r7, [r6, #0x10] + strh lr, [r6, #0x4] + strh r12, [r6, #0x6] + strh lr, [r6, #0x8] + ldrh r0, [r6, #0x10] + bl MIi_CpuClear16 + b _020B0EEC +_020B0EE0: + add sp, sp, #0x4 + mov r0, #0x0 + ldmia sp!, {r4-r7,pc} +_020B0EEC: + ldrh r0, [sp, #0x18] + add r4, r4, #0x500 + cmp r0, #0x0 + bne _020B0F18 + mov r0, #0x20 + strh r0, [r6, #0xa] + mov r0, #0x0 + strh r0, [r6, #0xc] + ldrh r0, [r6, #0xa] + strh r0, [r6, #0xe] + b _020B0F98 +_020B0F18: + sub r0, r0, #0x1 + add r0, r5, r0 + mov r0, r0, lsl #0x10 + mov r12, r0, lsr #0x10 + add r7, r4, r5, lsl #0x1 + add r2, r4, r12, lsl #0x1 + cmp r7, r2 + mov r3, r5, lsl #0x1 + bhi _020B0F5C + ldr r0, _020B0FB8 ; =0x0000FFFF +_020B0F40: + ldrh r1, [r7, #0x0] + cmp r1, r0 + movne r0, #0x0 + bne _020B0F60 + add r7, r7, #0x2 + cmp r7, r2 + bls _020B0F40 +_020B0F5C: + mov r0, #0x1 +_020B0F60: + cmp r0, #0x0 + beq _020B0F8C + strh r5, [r6, #0xa] + strh r12, [r6, #0xc] + strh r5, [r6, #0xe] + ldrh r0, [r6, #0x10] + sub r2, r12, r5 + add r1, r4, r3 + mov r2, r2, lsl #0x1 + bl MIi_CpuClear16 + b _020B0F98 +_020B0F8C: + add sp, sp, #0x4 + mov r0, #0x0 + ldmia sp!, {r4-r7,pc} +_020B0F98: + mov r1, #0x0 + ldr r0, [sp, #0x1c] + str r1, [r6, #0x14] + str r0, [r6, #0x0] + mov r0, #0x1 + add sp, sp, #0x4 + ldmia sp!, {r4-r7,pc} + .balign 4 +_020B0FB4: .word oamCache_ +_020B0FB8: .word 0x0000FFFF +_020B0FBC: .word numRegisterdInstance_ + arm_func_end NNS_G2dGetNewOamManagerInstance + + arm_func_start NNS_G2dInitOamManagerModule +NNS_G2dInitOamManagerModule: ; 0x020B0FC0 + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r1, _020B1060 ; =oamCache_ + 0x100 + mov r0, #0xc0 + mov r2, #0x400 + bl MIi_CpuClear16 + ldr r1, _020B1064 ; =oamCache_ + 0x640 + mov r0, #0xc0 + mov r2, #0x400 + bl MIi_CpuClear16 + ldr r1, _020B1068 ; =oamCache_ + 0xB80 + mov r0, #0xc0 + mov r2, #0x400 + bl MIi_CpuClear16 + ldr r0, _020B106C ; =0x0000FFFF + ldr r1, _020B1070 ; =oamCache_ + mov r2, #0x100 + bl MIi_CpuClear16 + ldr r0, _020B106C ; =0x0000FFFF + ldr r1, _020B1074 ; =oamCache_ + 0x540 + mov r2, #0x100 + bl MIi_CpuClear16 + ldr r0, _020B106C ; =0x0000FFFF + ldr r1, _020B1078 ; =oamCache_ + 0xA80 + mov r2, #0x100 + bl MIi_CpuClear16 + ldr r0, _020B106C ; =0x0000FFFF + ldr r1, _020B107C ; =oamCache_ + 0x500 + mov r2, #0x40 + bl MIi_CpuClear16 + ldr r0, _020B106C ; =0x0000FFFF + ldr r1, _020B1080 ; =oamCache_ + 0xA40 + mov r2, #0x40 + bl MIi_CpuClear16 + ldr r0, _020B106C ; =0x0000FFFF + ldr r1, _020B1084 ; =oamCache_ + 0xF80 + mov r2, #0x40 + bl MIi_CpuClear16 + add sp, sp, #0x4 + ldmia sp!, {pc} + .balign 4 +_020B1060: .word oamCache_ + 0x100 +_020B1064: .word oamCache_ + 0x640 +_020B1068: .word oamCache_ + 0xB80 +_020B106C: .word 0x0000FFFF +_020B1070: .word oamCache_ +_020B1074: .word oamCache_ + 0x540 +_020B1078: .word oamCache_ + 0xA80 +_020B107C: .word oamCache_ + 0x500 +_020B1080: .word oamCache_ + 0xA40 +_020B1084: .word oamCache_ + 0xF80 + arm_func_end NNS_G2dInitOamManagerModule + + arm_func_start CpuLoadOAMMain_ +CpuLoadOAMMain_: ; 0x020B1088 + ldr ip, _020B1094 ; =MIi_CpuCopy16 + add r1, r1, #0x7000000 + bx r12 + .balign 4 +_020B1094: .word MIi_CpuCopy16 + arm_func_end CpuLoadOAMMain_ + + arm_func_start CpuLoadOAMSub_ +CpuLoadOAMSub_: ; 0x020B1098 + ldr r3, _020B10A8 ; =0x07000400 + ldr ip, _020B10AC ; =MIi_CpuCopy16 + add r1, r1, r3 + bx r12 + .balign 4 +_020B10A8: .word 0x07000400 +_020B10AC: .word MIi_CpuCopy16 + arm_func_end CpuLoadOAMSub_ diff --git a/arm9/asm/NNS_G2D_g2d_oamsoftware.s b/arm9/asm/NNS_G2D_g2d_oamsoftware.s new file mode 100644 index 00000000..c89c4787 --- /dev/null +++ b/arm9/asm/NNS_G2D_g2d_oamsoftware.s @@ -0,0 +1,421 @@ + .include "asm/macros.inc" + .include "global.inc" + + .section .rodata + + .global pltFmtTbl$8430 +pltFmtTbl$8430: ; 0x020FF8D0 + .byte 0x03, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00 + ; static const in function + + .global texSize_$8337 +texSize_$8337: ; 0x020FF8D8 + .byte 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00 + .byte 0x10, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00 + + .global gxTexSizeSTbl +gxTexSizeSTbl: ; 0x020FF8F8 + .byte 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00 + .byte 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 + + .global gxTexSizeTTbl +gxTexSizeTTbl: ; 0x020FF928 + .byte 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 + .byte 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00 + + .section .data + + .global zOffsetStep_ +zOffsetStep_: ; 0x02106590 + .byte 0x00, 0xF0, 0xFF, 0xFF + + .section .bss + + .global bAutoZOffsetAdd_ +bAutoZOffsetAdd_: ; 0x021CED08 + .space 0x4 + + .global s_pUVFlipCorrectFunc +s_pUVFlipCorrectFunc: ; 0x021CED0C + .space 0x4 + + .global zOffset_ +zOffset_: ; 0x021CED10 + .space 0x4 + + .section .text + + arm_func_start NNS_G2dDrawOneOam3DDirectWithPosFast +NNS_G2dDrawOneOam3DDirectWithPosFast: ; 0x020B46B4 + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x1c + add r12, sp, #0x4 + mov r5, r1 + mov r4, r2 + mov r7, r3 + mov r6, r0 + ldr r1, [sp, #0x30] + ldr r2, [sp, #0x34] + ldr r3, [sp, #0x38] + mov r0, r7 + str r12, [sp, #0x0] + bl CalcSpriteParams_ + ldr r2, [r7, #0x0] + and r1, r2, #0x300 + cmp r1, #0x100 + beq _020B4708 + cmp r1, #0x300 + beq _020B4708 + and r0, r2, #0x30000000 + orr r1, r1, r0 +_020B4708: + cmp r1, #0x300 + bne _020B478C + ldr r0, _020B4914 ; =0xC000C000 + ldr r1, _020B4918 ; =bAutoZOffsetAdd_ + and r0, r2, r0 + and r2, r0, #0xc0000000 + mov r12, r2, lsr #0x1e + and r0, r0, #0xc000 + mov lr, r0, asr #0xe + ldr r3, _020B491C ; =NNSi_objSizeWTbl + ldr r0, [r1, #0x0] + ldr r2, _020B4920 ; =NNSi_objSizeHTbl + cmp r0, #0x0 + ldrne r0, _020B4924 ; =zOffset_ + mov r12, r12, lsl #0x1 + add r1, r2, lr, lsl #0x3 + add r3, r3, lr, lsl #0x3 + ldrh r2, [r12, r3] + ldrh r1, [r12, r1] + ldrne r0, [r0, #0x0] + mov r2, r2, asr #0x1 + addne r3, r0, r4, lsl #0xc + mov r1, r1, asr #0x1 + add r0, r5, r1 + add r2, r6, r2 + ldr r1, _020B4928 ; =0x04000470 + mov r2, r2, lsl #0xc + str r2, [r1, #0x0] + mov r0, r0, lsl #0xc + moveq r3, r4, lsl #0xc + str r0, [r1, #0x0] + str r3, [r1, #0x0] + b _020B47C0 +_020B478C: + ldr r0, _020B4918 ; =bAutoZOffsetAdd_ + ldr r1, _020B4928 ; =0x04000470 + ldr r0, [r0, #0x0] + cmp r0, #0x0 + ldrne r0, _020B4924 ; =zOffset_ + ldrne r0, [r0, #0x0] + addne r2, r0, r4, lsl #0xc + mov r0, r6, lsl #0xc + str r0, [r1, #0x0] + mov r0, r5, lsl #0xc + moveq r2, r4, lsl #0xc + str r0, [r1, #0x0] + str r2, [r1, #0x0] +_020B47C0: + ldr r0, [sp, #0x14] + ldr r1, [sp, #0x18] + ldr r2, _020B492C ; =0x0400046C + mov r0, r0, lsl #0xc + str r0, [r2, #0x0] + mov r0, r1, lsl #0xc + str r0, [r2, #0x0] + mov r1, #0x1000 + str r1, [r2, #0x0] + ldr r0, _020B4930 ; =0x04000500 + mov r1, #0x1 + str r1, [r0, #0x0] + ldr r0, [sp, #0x4] + ldr r1, [sp, #0x10] + mov r0, r0, lsl #0x8 + mov r1, r1, lsl #0x8 + mov r0, r0, asr #0x10 + mov r1, r1, asr #0x10 + mov r0, r0, lsl #0x10 + mov r1, r1, lsl #0x10 + mov r2, r0, lsr #0x10 + mov r0, r1, lsr #0x10 + orr r2, r2, r0, lsl #0x10 + ldr r1, _020B4934 ; =0x04000488 + ldr r0, _020B4938 ; =0x04000490 + str r2, [r1, #0x0] + mov r2, #0x10000 + str r2, [r0, #0x0] + ldr r2, [sp, #0xc] + ldr r3, [sp, #0x10] + mov r2, r2, lsl #0x8 + mov r3, r3, lsl #0x8 + mov r2, r2, asr #0x10 + mov r3, r3, asr #0x10 + mov r2, r2, lsl #0x10 + mov r3, r3, lsl #0x10 + mov r4, r2, lsr #0x10 + mov r2, r3, lsr #0x10 + orr r3, r4, r2, lsl #0x10 + ldr r2, _020B493C ; =0x00010040 + str r3, [r1, #0x0] + str r2, [r0, #0x0] + ldr r2, [sp, #0xc] + ldr r3, [sp, #0x8] + mov r2, r2, lsl #0x8 + mov r3, r3, lsl #0x8 + mov r2, r2, asr #0x10 + mov r3, r3, asr #0x10 + mov r2, r2, lsl #0x10 + mov r3, r3, lsl #0x10 + mov r4, r2, lsr #0x10 + mov r2, r3, lsr #0x10 + orr r2, r4, r2, lsl #0x10 + str r2, [r1, #0x0] + mov r2, #0x40 + str r2, [r0, #0x0] + ldr r2, [sp, #0x4] + ldr r3, [sp, #0x8] + mov r2, r2, lsl #0x8 + mov r3, r3, lsl #0x8 + mov r2, r2, asr #0x10 + mov r3, r3, asr #0x10 + mov r2, r2, lsl #0x10 + mov r3, r3, lsl #0x10 + mov r4, r2, lsr #0x10 + mov r2, r3, lsr #0x10 + orr r2, r4, r2, lsl #0x10 + str r2, [r1, #0x0] + mov r2, #0x0 + str r2, [r0, #0x0] + ldr r1, _020B4940 ; =0x04000504 + ldr r0, _020B4918 ; =bAutoZOffsetAdd_ + str r2, [r1, #0x0] + ldr r0, [r0, #0x0] + cmp r0, #0x0 + addeq sp, sp, #0x1c + ldmeqia sp!, {r4-r7,pc} + ldr r1, _020B4924 ; =zOffset_ + ldr r0, _020B4944 ; =zOffsetStep_ + ldr r2, [r1, #0x0] + ldr r0, [r0, #0x0] + add r0, r2, r0 + str r0, [r1, #0x0] + add sp, sp, #0x1c + ldmia sp!, {r4-r7,pc} + .balign 4 +_020B4914: .word 0xC000C000 +_020B4918: .word bAutoZOffsetAdd_ +_020B491C: .word NNSi_objSizeWTbl +_020B4920: .word NNSi_objSizeHTbl +_020B4924: .word zOffset_ +_020B4928: .word 0x04000470 +_020B492C: .word 0x0400046C +_020B4930: .word 0x04000500 +_020B4934: .word 0x04000488 +_020B4938: .word 0x04000490 +_020B493C: .word 0x00010040 +_020B4940: .word 0x04000504 +_020B4944: .word zOffsetStep_ + arm_func_end NNS_G2dDrawOneOam3DDirectWithPosFast + + arm_func_start NNSi_G2dGetOamSoftEmuAutoZOffsetStep +NNSi_G2dGetOamSoftEmuAutoZOffsetStep: ; 0x020B4948 + ldr r0, _020B4954 ; =zOffsetStep_ + ldr r0, [r0, #0x0] + bx lr + .balign 4 +_020B4954: .word zOffsetStep_ + arm_func_end NNSi_G2dGetOamSoftEmuAutoZOffsetStep + + arm_func_start NNSi_G2dSetOamSoftEmuAutoZOffsetStep +NNSi_G2dSetOamSoftEmuAutoZOffsetStep: ; 0x020B4958 + ldr r1, _020B4964 ; =zOffsetStep_ + str r0, [r1, #0x0] + bx lr + .balign 4 +_020B4964: .word zOffsetStep_ + arm_func_end NNSi_G2dSetOamSoftEmuAutoZOffsetStep + + arm_func_start NNSi_G2dResetOamSoftEmuAutoZOffset +NNSi_G2dResetOamSoftEmuAutoZOffset: ; 0x020B4968 + ldr r0, _020B4978 ; =zOffset_ + mov r1, #0x0 + str r1, [r0, #0x0] + bx lr + .balign 4 +_020B4978: .word zOffset_ + arm_func_end NNSi_G2dResetOamSoftEmuAutoZOffset + + arm_func_start NNSi_G2dSetOamSoftEmuAutoZOffsetFlag +NNSi_G2dSetOamSoftEmuAutoZOffsetFlag: ; 0x020B497C + ldr r1, _020B4988 ; =bAutoZOffsetAdd_ + str r0, [r1, #0x0] + bx lr + .balign 4 +_020B4988: .word bAutoZOffsetAdd_ + arm_func_end NNSi_G2dSetOamSoftEmuAutoZOffsetFlag + + arm_func_start CalcSpriteParams_ +CalcSpriteParams_: ; 0x020B498C + stmdb sp!, {r4-r9,lr} + sub sp, sp, #0xc + mov r6, r0 + ldr r4, [r6, #0x0] + ldr r0, _020B4BCC ; =0xC000C000 + ldr r5, [r6, #0x4] + and r4, r4, r0 + and r0, r4, #0xc0000000 + and r4, r4, #0xc000 + mov lr, r0, lsr #0x1e + ldr r0, _020B4BD0 ; =NNSi_objSizeWTbl + mov r12, r4, asr #0xe + ldr r8, _020B4BD4 ; =NNSi_objSizeHTbl + mov r4, lr, lsl #0x1 + add r0, r0, r12, lsl #0x3 + ldrh r9, [r4, r0] + ldr r0, [sp, #0x28] + mov r5, r5, lsl #0x16 + mov r5, r5, lsr #0x16 + mov r7, r5, lsl #0x10 + str r9, [r0, #0x10] + add r5, r8, r12, lsl #0x3 + ldrh r8, [r4, r5] + mov r5, r1 + mov r4, r3 + str r8, [r0, #0x14] + ldr r1, [r5, #0x14] + mov r7, r7, lsr #0x10 + cmp r1, #0x0 + bne _020B4A74 + ldr r1, [r5, #0x8] + mov r2, r2, lsr #0x3 + orr r1, r2, r1, lsl #0x1a + ldr r2, [r5, #0x0] + orr r1, r1, #0x40000000 + ldr r3, [r5, #0x4] + orr r1, r1, r2, lsl #0x14 + orr r2, r1, r3, lsl #0x17 + ldr r8, [r5, #0x10] + ldr r1, _020B4BD8 ; =0x040004A8 + orr r2, r2, r8, lsl #0x1d + str r2, [r1, #0x0] + ldr r1, [r5, #0x8] + ldr r2, [r5, #0x0] + cmp r1, #0x4 + moveq r1, r7, lsl #0xf + moveq r7, r1, lsr #0x10 + ldr r1, _020B4BDC ; =texSize_$8337 + ldr r1, [r1, r2, lsl #0x2] + sub r1, r1, #0x1 + and r1, r7, r1 + mov r1, r1, lsl #0xf + str r1, [r0, #0x0] + ldr r1, [r5, #0x0] + mov r1, r7, asr r1 + mov r1, r1, lsl #0xf + str r1, [r0, #0x4] + b _020B4AE0 +_020B4A74: + and r1, r1, #0x700000 + mov r1, r1, asr #0x14 + mov r12, r12, lsl #0x10 + add r1, r1, #0x5 + ldr r3, [r5, #0x8] + mov lr, lr, lsl #0x10 + ldr sb, _020B4BE0 ; =gxTexSizeSTbl + mov r12, r12, lsr #0x10 + ldr r8, _020B4BE4 ; =gxTexSizeTTbl + add r1, r2, r7, lsl r1 + mov r2, r3, lsl #0x1a + orr r3, r2, r1, lsr #0x3 + mov r7, lr, lsr #0x10 + add r2, r9, r12, lsl #0x4 + add r1, r8, r12, lsl #0x4 + ldr r2, [r2, r7, lsl #0x2] + orr r3, r3, #0x40000000 + ldr r1, [r1, r7, lsl #0x2] + orr r2, r3, r2, lsl #0x14 + ldr r3, [r5, #0x10] + orr r2, r2, r1, lsl #0x17 + ldr r1, _020B4BD8 ; =0x040004A8 + orr r2, r2, r3, lsl #0x1d + str r2, [r1, #0x0] + mov r1, #0x0 + str r1, [r0, #0x0] + str r1, [r0, #0x4] +_020B4AE0: + ldr r2, [r0, #0x0] + ldr r1, [r0, #0x10] + add r1, r2, r1, lsl #0xc + str r1, [r0, #0x8] + ldr r2, [r0, #0x4] + ldr r1, [r0, #0x14] + add r1, r2, r1, lsl #0xc + str r1, [r0, #0xc] + ldr r1, [r6, #0x0] + mov r2, r1, lsl #0x2 + mov r1, r1, lsl #0x3 + movs r3, r1, lsr #0x1f + mov r12, r2, lsr #0x1f + ldrne r2, [r0, #0x0] + ldrne r1, [r0, #0x8] + strne r1, [r0, #0x0] + strne r2, [r0, #0x8] + cmp r12, #0x0 + ldrne r2, [r0, #0x4] + ldrne r1, [r0, #0xc] + strne r1, [r0, #0x4] + ldr r1, _020B4BE8 ; =s_pUVFlipCorrectFunc + strne r2, [r0, #0xc] + ldr r7, [r1, #0x0] + cmp r7, #0x0 + beq _020B4B60 + str r3, [sp, #0x0] + add r1, r0, #0x4 + add r2, r0, #0x8 + add r3, r0, #0xc + str r12, [sp, #0x4] + blx r7 +_020B4B60: + ldr r0, [r6, #0x4] + ldr r1, [r6, #0x0] + mov r0, r0, lsl #0x10 + mov r0, r0, lsr #0x1c + mov r3, r1, lsl #0x12 + ldr r1, [r5, #0xc] + mov r0, r0, lsl #0x10 + ldr r2, _020B4BEC ; =pltFmtTbl$8430 + mov r3, r3, lsr #0x1f + cmp r1, #0x0 + mov r0, r0, lsr #0x10 + ldr r1, [r2, r3, lsl #0x2] + movne r0, r0, lsl #0x9 + bne _020B4BA4 + cmp r1, #0x4 + moveq r0, #0x0 + movne r0, r0, lsl #0x5 +_020B4BA4: + cmp r1, #0x2 + moveq r2, #0x1 + movne r2, #0x0 + add r1, r4, r0 + rsb r0, r2, #0x4 + mov r1, r1, lsr r0 + ldr r0, _020B4BF0 ; =0x040004AC + str r1, [r0, #0x0] + add sp, sp, #0xc + ldmia sp!, {r4-r9,pc} + .balign 4 +_020B4BCC: .word 0xC000C000 +_020B4BD0: .word NNSi_objSizeWTbl +_020B4BD4: .word NNSi_objSizeHTbl +_020B4BD8: .word 0x040004A8 +_020B4BDC: .word texSize_$8337 +_020B4BE0: .word gxTexSizeSTbl +_020B4BE4: .word gxTexSizeTTbl +_020B4BE8: .word s_pUVFlipCorrectFunc +_020B4BEC: .word pltFmtTbl$8430 +_020B4BF0: .word 0x040004AC + arm_func_end CalcSpriteParams_ diff --git a/arm9/asm/NNS_G2D_g2d_palettetabl.s b/arm9/asm/NNS_G2D_g2d_palettetabl.s new file mode 100644 index 00000000..a8d342cf --- /dev/null +++ b/arm9/asm/NNS_G2D_g2d_palettetabl.s @@ -0,0 +1,11 @@ + .include "asm/macros.inc" + .include "global.inc" + + .section .text + + arm_func_start NNS_G2dGetPaletteTableValue +NNS_G2dGetPaletteTableValue: ; 0x020B10B0 + mov r1, r1, lsl #0x1 + ldrh r0, [r0, r1] + bx lr + arm_func_end NNS_G2dGetPaletteTableValue diff --git a/arm9/asm/NNS_G2D_g2d_renderer.s b/arm9/asm/NNS_G2D_g2d_renderer.s new file mode 100644 index 00000000..5cd5eaac --- /dev/null +++ b/arm9/asm/NNS_G2D_g2d_renderer.s @@ -0,0 +1,1984 @@ + .include "asm/macros.inc" + .include "global.inc" + + .section .data + + .global firstSRTransformedMtxIdx_ +firstSRTransformedMtxIdx_: ; 0x02106570 + .short -2 + .balign 4, 0 + + .global currenVramTransferHandle_ +currenVramTransferHandle_: ; 0x02106574 + .word -1 + + .global mtxI_ +mtxI_: ; 0x02106578 + .byte 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + + .section .bss + + .global currentMtxCachePos_ +currentMtxCachePos_: ; 0x021CDD60 + .space 0x4 + + .global groupID_ +groupID_: ; 0x021CDD64 + .space 0x4 + + .global bDonotUseSRTransform +bDonotUseSRTransform: ; 0x021CDD68 + .space 0x4 + + .global pCurrentInstance_ +pCurrentInstance_: ; 0x021CDD6C + .space 0x4 + + .global stackPos_ +stackPos_: ; 0x021CDD70 + .space 0x4 + + .global fxZStack_ +fxZStack_: ; 0x021CDD74 + .space 0x80 + + .global mtxStateStack_ +mtxStateStack_: ; 0x021CDDF4 + .space 0x100 + + .global mtxStack_ +mtxStack_: ; 0x021CDEF4 + .space 0x300 + + .global mtxStackFor2DHW_ +mtxStackFor2DHW_: ; 0x021CE1F4 + .space 0x300 + + .global mtxCacheBuffer_ +mtxCacheBuffer_: ; 0x021CE4F4 + .space 0x400 + + .global mcRenderState_ +mcRenderState_: ; 0x021CE8F4 + .space 0x408 + + .section .text + + arm_func_start NNS_G2dSetRendererImageProxy +NNS_G2dSetRendererImageProxy: ; 0x020B2780 + ldr ip, _020B2788 ; =NNS_G2dSetRndCoreImageProxy + bx r12 + .balign 4 +_020B2788: .word NNS_G2dSetRndCoreImageProxy + arm_func_end NNS_G2dSetRendererImageProxy + + arm_func_start NNS_G2dGetRendererPaletteTbl +NNS_G2dGetRendererPaletteTbl: ; 0x020B278C + ldr r0, [r0, #0x78] + bx lr + arm_func_end NNS_G2dGetRendererPaletteTbl + + arm_func_start NNS_G2dRotZ +NNS_G2dRotZ: ; 0x020B2794 + stmdb sp!, {lr} + sub sp, sp, #0x1c + ldr r2, _020B2894 ; =stackPos_ + mov lr, #0x0 + ldr r12, [r2, #0x0] + ldr r3, _020B2898 ; =mtxStack_ + mov r2, #0x18 + str r1, [sp, #0x0] + str r1, [sp, #0xc] + mla r1, r12, r2, r3 + rsb r3, r0, #0x0 + str r0, [sp, #0x4] + add r0, sp, #0x0 + mov r2, r1 + str r3, [sp, #0x8] + str lr, [sp, #0x10] + str lr, [sp, #0x14] + bl NNSi_G2dMtxConcat32 + ldr r0, _020B2894 ; =stackPos_ + ldr r1, _020B289C ; =mtxStackFor2DHW_ + ldr r2, [r0, #0x0] + mov r0, #0x18 + mla r1, r2, r0, r1 + add r0, sp, #0x0 + mov r2, r1 + bl NNSi_G2dMtxConcat32 + ldr r0, _020B28A0 ; =bDonotUseSRTransform + ldr r0, [r0, #0x0] + cmp r0, #0x0 + bne _020B2824 + ldr r1, _020B28A4 ; =firstSRTransformedMtxIdx_ + ldr r0, _020B28A8 ; =0x0000FFFE + ldrh r1, [r1, #0x0] + cmp r1, r0 + movne r0, #0x1 + bne _020B2828 +_020B2824: + mov r0, #0x0 +_020B2828: + cmp r0, #0x0 + ldreq r1, _020B2894 ; =stackPos_ + ldreq r0, _020B28A4 ; =firstSRTransformedMtxIdx_ + ldreq r1, [r1, #0x0] + streqh r1, [r0, #0x0] + ldr r0, _020B2894 ; =stackPos_ + ldr r1, _020B28AC ; =mtxStateStack_ + ldr r0, [r0, #0x0] + mov r0, r0, lsl #0x10 + add r12, r1, r0, lsr #0xd + ldrh r0, [r12, #0x4] + cmp r0, #0x3 + addls pc, pc, r0, lsl #0x2 + b _020B288C + ; Jump table + b _020B2870 ; case 0 + b _020B288C ; case 1 + b _020B2870 ; case 2 + b _020B2870 ; case 3 +_020B2870: + ldr r0, _020B28B0 ; =groupID_ + mov r1, #0x1 + ldrh r3, [r0, #0x0] + add r2, r3, #0x1 + strh r2, [r0, #0x0] + strh r3, [r12, #0x2] + strh r1, [r12, #0x4] +_020B288C: + add sp, sp, #0x1c + ldmia sp!, {pc} + .balign 4 +_020B2894: .word stackPos_ +_020B2898: .word mtxStack_ +_020B289C: .word mtxStackFor2DHW_ +_020B28A0: .word bDonotUseSRTransform +_020B28A4: .word firstSRTransformedMtxIdx_ +_020B28A8: .word 0x0000FFFE +_020B28AC: .word mtxStateStack_ +_020B28B0: .word groupID_ + arm_func_end NNS_G2dRotZ + + arm_func_start NNS_G2dScale +NNS_G2dScale: ; 0x020B28B4 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x1c + ldr r2, _020B29E8 ; =stackPos_ + mov r12, #0x0 + ldr r3, [r2, #0x0] + mov r4, r1 + ldr r2, _020B29EC ; =mtxStack_ + mov r1, #0x18 + mla r1, r3, r1, r2 + mov r5, r0 + add r0, sp, #0x0 + mov r2, r1 + str r5, [sp, #0x0] + str r12, [sp, #0x4] + str r12, [sp, #0x8] + str r4, [sp, #0xc] + str r12, [sp, #0x10] + str r12, [sp, #0x14] + bl NNSi_G2dMtxConcat32 + mov r0, r5 + bl FX_Inv + mov r1, #0x0 + str r0, [sp, #0x0] + mov r0, r4 + str r1, [sp, #0x4] + str r1, [sp, #0x8] + bl FX_Inv + mov r3, #0x0 + ldr r1, _020B29E8 ; =stackPos_ + str r0, [sp, #0xc] + ldr r2, [r1, #0x0] + ldr r1, _020B29F0 ; =mtxStackFor2DHW_ + mov r0, #0x18 + mla r1, r2, r0, r1 + add r0, sp, #0x0 + mov r2, r1 + str r3, [sp, #0x10] + str r3, [sp, #0x14] + bl NNSi_G2dMtxConcat32 + ldr r0, _020B29F4 ; =bDonotUseSRTransform + ldr r0, [r0, #0x0] + cmp r0, #0x0 + bne _020B2978 + ldr r1, _020B29F8 ; =firstSRTransformedMtxIdx_ + ldr r0, _020B29FC ; =0x0000FFFE + ldrh r1, [r1, #0x0] + cmp r1, r0 + movne r0, #0x1 + bne _020B297C +_020B2978: + mov r0, #0x0 +_020B297C: + cmp r0, #0x0 + ldreq r1, _020B29E8 ; =stackPos_ + ldreq r0, _020B29F8 ; =firstSRTransformedMtxIdx_ + ldreq r1, [r1, #0x0] + streqh r1, [r0, #0x0] + ldr r0, _020B29E8 ; =stackPos_ + ldr r1, _020B2A00 ; =mtxStateStack_ + ldr r0, [r0, #0x0] + mov r0, r0, lsl #0x10 + add r12, r1, r0, lsr #0xd + ldrh r0, [r12, #0x4] + cmp r0, #0x3 + addls pc, pc, r0, lsl #0x2 + b _020B29E0 + ; Jump table + b _020B29C4 ; case 0 + b _020B29E0 ; case 1 + b _020B29C4 ; case 2 + b _020B29C4 ; case 3 +_020B29C4: + ldr r0, _020B2A04 ; =groupID_ + mov r1, #0x1 + ldrh r3, [r0, #0x0] + add r2, r3, #0x1 + strh r2, [r0, #0x0] + strh r3, [r12, #0x2] + strh r1, [r12, #0x4] +_020B29E0: + add sp, sp, #0x1c + ldmia sp!, {r4-r5,pc} + .balign 4 +_020B29E8: .word stackPos_ +_020B29EC: .word mtxStack_ +_020B29F0: .word mtxStackFor2DHW_ +_020B29F4: .word bDonotUseSRTransform +_020B29F8: .word firstSRTransformedMtxIdx_ +_020B29FC: .word 0x0000FFFE +_020B2A00: .word mtxStateStack_ +_020B2A04: .word groupID_ + arm_func_end NNS_G2dScale + + arm_func_start NNS_G2dTranslate +NNS_G2dTranslate: ; 0x020B2A08 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x1c + ldr r3, _020B2AEC ; =bDonotUseSRTransform + mov r4, r2 + ldr r2, [r3, #0x0] + cmp r2, #0x0 + beq _020B2A6C + ldr r2, _020B2AF0 ; =stackPos_ + mov r3, #0x18 + ldr r2, [r2, #0x0] + ldr lr, _020B2AF4 ; =mtxStack_ + 0x10 + mul r5, r2, r3 + ldr r3, [lr, r5] + ldr ip, _020B2AF8 ; =mtxStack_ + 0x14 + add r0, r3, r0 + str r0, [lr, r5] + ldr r0, [r12, r5] + ldr r3, _020B2AFC ; =fxZStack_ + add r0, r0, r1 + str r0, [r12, r5] + ldr r0, [r3, r2, lsl #0x2] + add sp, sp, #0x1c + add r0, r0, r4 + str r0, [r3, r2, lsl #0x2] + ldmia sp!, {r4-r5,pc} +_020B2A6C: + ldr r2, _020B2AF0 ; =stackPos_ + mov lr, #0x1000 + ldr r12, [r2, #0x0] + ldr r3, _020B2B00 ; =mtxStack_ + mov r2, #0x18 + str r1, [sp, #0x14] + mla r1, r12, r2, r3 + mov r3, #0x0 + str r0, [sp, #0x10] + add r0, sp, #0x0 + mov r2, r1 + str lr, [sp, #0x0] + str r3, [sp, #0x4] + str r3, [sp, #0x8] + str lr, [sp, #0xc] + bl NNSi_G2dMtxConcat32 + ldr r0, _020B2AF0 ; =stackPos_ + ldr r1, _020B2B04 ; =mtxStackFor2DHW_ + ldr r2, [r0, #0x0] + mov r0, #0x18 + mla r1, r2, r0, r1 + add r0, sp, #0x0 + mov r2, r1 + bl NNSi_G2dMtxConcat32 + ldr r0, _020B2AF0 ; =stackPos_ + ldr r2, _020B2AFC ; =fxZStack_ + ldr r1, [r0, #0x0] + ldr r0, [r2, r1, lsl #0x2] + add r0, r0, r4 + str r0, [r2, r1, lsl #0x2] + add sp, sp, #0x1c + ldmia sp!, {r4-r5,pc} + .balign 4 +_020B2AEC: .word bDonotUseSRTransform +_020B2AF0: .word stackPos_ +_020B2AF4: .word mtxStack_ + 0x10 +_020B2AF8: .word mtxStack_ + 0x14 +_020B2AFC: .word fxZStack_ +_020B2B00: .word mtxStack_ +_020B2B04: .word mtxStackFor2DHW_ + arm_func_end NNS_G2dTranslate + + arm_func_start NNS_G2dPopMtx +NNS_G2dPopMtx: ; 0x020B2B08 + ldr r0, _020B2B4C ; =stackPos_ + ldr r0, [r0, #0x0] + cmp r0, #0x0 + movle r0, #0x1 + movgt r0, #0x0 + cmp r0, #0x0 + bxne lr + ldr r1, _020B2B4C ; =stackPos_ + ldr r0, _020B2B50 ; =firstSRTransformedMtxIdx_ + ldr r3, [r1, #0x0] + ldrh r2, [r0, #0x0] + sub r3, r3, #0x1 + str r3, [r1, #0x0] + cmp r2, r3 + ldrgt r1, _020B2B54 ; =0x0000FFFE + strgth r1, [r0, #0x0] + bx lr + .balign 4 +_020B2B4C: .word stackPos_ +_020B2B50: .word firstSRTransformedMtxIdx_ +_020B2B54: .word 0x0000FFFE + arm_func_end NNS_G2dPopMtx + + arm_func_start NNS_G2dPushMtx +NNS_G2dPushMtx: ; 0x020B2B58 + stmdb sp!, {r4-r10,lr} + ldr r0, _020B2D74 ; =pCurrentInstance_ + ldr r0, [r0, #0x0] + ldr r0, [r0, #0x7c] + ands r0, r0, #0x1 + bne _020B2CA4 + ldr r0, _020B2D78 ; =stackPos_ + ldr r1, [r0, #0x0] + mov r0, r1, lsl #0x10 + add r5, r1, #0x1 + cmp r5, #0x20 + mov r4, r0, lsr #0x10 + movlt r0, #0x1 + movge r0, #0x0 + cmp r0, #0x0 + beq _020B2C44 + ldr r0, _020B2D7C ; =bDonotUseSRTransform + ldr r0, [r0, #0x0] + cmp r0, #0x0 + beq _020B2BE4 + ldr r1, _020B2D78 ; =stackPos_ + mov r0, #0x18 + ldr r3, [r1, #0x0] + ldr r1, _020B2D80 ; =fxZStack_ + mul r8, r3, r0 + ldr r6, _020B2D84 ; =mtxStack_ + 0x10 + mul r7, r5, r0 + ldr r2, [r6, r8] + ldr r0, [r1, r3, lsl #0x2] + ldr r3, _020B2D88 ; =mtxStack_ + 0x14 + str r2, [r6, r7] + ldr r2, [r3, r8] + str r0, [r1, r5, lsl #0x2] + str r2, [r3, r7] + b _020B2C3C +_020B2BE4: + ldr r1, _020B2D78 ; =stackPos_ + mov r0, #0x18 + ldr r2, [r1, #0x0] + ldr r7, _020B2D80 ; =fxZStack_ + mul lr, r2, r0 + ldr r1, _020B2D8C ; =mtxStack_ + mul r12, r5, r0 + ldr r8, _020B2D90 ; =mtxStackFor2DHW_ + add r10, r1, lr + ldr r6, [r7, r2, lsl #0x2] + add r9, r1, r12 + ldmia r10!, {r0-r3} + stmia r9!, {r0-r3} + ldmia r10, {r0-r1} + str r6, [r7, r5, lsl #0x2] + add r7, r8, lr + stmia r9, {r0-r1} + add r6, r8, r12 + ldmia r7!, {r0-r3} + stmia r6!, {r0-r3} + ldmia r7, {r0-r1} + stmia r6, {r0-r1} +_020B2C3C: + ldr r0, _020B2D78 ; =stackPos_ + str r5, [r0, #0x0] +_020B2C44: + ldr r0, _020B2D78 ; =stackPos_ + ldr r2, _020B2D94 ; =mtxStateStack_ + ldr r0, [r0, #0x0] + mov r5, r4, lsl #0x3 + mov r0, r0, lsl #0x10 + mov r3, r0, lsr #0x10 + add r4, r2, r4, lsl #0x3 + mov r6, r3, lsl #0x3 + ldrh r1, [r2, r5] + ldrh r0, [r4, #0x2] + add r3, r2, r3, lsl #0x3 + strh r1, [r2, r6] + strh r0, [r3, #0x2] + ldrh r2, [r4, #0x4] + ldrh r0, [r4, #0x6] + ldr r1, _020B2D98 ; =mtxStateStack_ + 0x4 + strh r2, [r3, #0x4] + strh r0, [r3, #0x6] + ldrh r0, [r1, r5] + cmp r0, #0x1 + moveq r0, #0x2 + streqh r0, [r1, r6] + strneh r0, [r1, r6] + ldmia sp!, {r4-r10,pc} +_020B2CA4: + ldr r0, _020B2D78 ; =stackPos_ + ldr r0, [r0, #0x0] + add r4, r0, #0x1 + cmp r4, #0x20 + movlt r0, #0x1 + movge r0, #0x0 + cmp r0, #0x0 + ldmeqia sp!, {r4-r10,pc} + ldr r0, _020B2D7C ; =bDonotUseSRTransform + ldr r0, [r0, #0x0] + cmp r0, #0x0 + beq _020B2D10 + ldr r1, _020B2D78 ; =stackPos_ + mov r0, #0x18 + ldr r3, [r1, #0x0] + ldr r1, _020B2D80 ; =fxZStack_ + mul r7, r3, r0 + ldr r5, _020B2D84 ; =mtxStack_ + 0x10 + mul r6, r4, r0 + ldr r2, [r5, r7] + ldr r0, [r1, r3, lsl #0x2] + ldr r3, _020B2D88 ; =mtxStack_ + 0x14 + str r2, [r5, r6] + ldr r2, [r3, r7] + str r0, [r1, r4, lsl #0x2] + str r2, [r3, r6] + b _020B2D68 +_020B2D10: + ldr r1, _020B2D78 ; =stackPos_ + mov r0, #0x18 + ldr r2, [r1, #0x0] + ldr ip, _020B2D80 ; =fxZStack_ + mul r9, r2, r0 + ldr r1, _020B2D8C ; =mtxStack_ + mul r8, r4, r0 + ldr lr, _020B2D90 ; =mtxStackFor2DHW_ + add r6, r1, r9 + ldr r5, [r12, r2, lsl #0x2] + add r7, r1, r8 + ldmia r6!, {r0-r3} + stmia r7!, {r0-r3} + ldmia r6, {r0-r1} + add r6, lr, r9 + stmia r7, {r0-r1} + add lr, lr, r8 + ldmia r6!, {r0-r3} + stmia lr!, {r0-r3} + ldmia r6, {r0-r1} + stmia lr, {r0-r1} + str r5, [r12, r4, lsl #0x2] +_020B2D68: + ldr r0, _020B2D78 ; =stackPos_ + str r4, [r0, #0x0] + ldmia sp!, {r4-r10,pc} + .balign 4 +_020B2D74: .word pCurrentInstance_ +_020B2D78: .word stackPos_ +_020B2D7C: .word bDonotUseSRTransform +_020B2D80: .word fxZStack_ +_020B2D84: .word mtxStack_ + 0x10 +_020B2D88: .word mtxStack_ + 0x14 +_020B2D8C: .word mtxStack_ +_020B2D90: .word mtxStackFor2DHW_ +_020B2D94: .word mtxStateStack_ +_020B2D98: .word mtxStateStack_ + 0x4 + arm_func_end NNS_G2dPushMtx + + arm_func_start NNS_G2dDrawMultiCellAnimation +NNS_G2dDrawMultiCellAnimation: ; 0x020B2D9C + stmdb sp!, {r4-r6,lr} + mov r4, r0 + ldrh r0, [r4, #0x56] + cmp r0, #0x0 + bne _020B2DBC + add r0, r4, #0x30 + bl NNS_G2dDrawMultiCell + ldmia sp!, {r4-r6,pc} +_020B2DBC: + bl NNS_G2dPushMtx + ldrh r0, [r4, #0x56] + ands r0, r0, #0x8 + beq _020B2E0C + ldr r0, _020B2E70 ; =pCurrentInstance_ + ldrsh r6, [r4, #0x52] + ldr r0, [r0, #0x0] + ldrsh r5, [r4, #0x50] + bl NNS_G2dIsRndCoreFlipH + cmp r0, #0x0 + ldr r0, _020B2E70 ; =pCurrentInstance_ + rsbne r5, r5, #0x0 + ldr r0, [r0, #0x0] + bl NNS_G2dIsRndCoreFlipV + cmp r0, #0x0 + rsbne r6, r6, #0x0 + mov r0, r5, lsl #0xc + mov r1, r6, lsl #0xc + mov r2, #0x0 + bl NNS_G2dTranslate +_020B2E0C: + ldrh r0, [r4, #0x56] + ands r0, r0, #0x4 + beq _020B2E40 + ldrh r0, [r4, #0x54] + ldr r2, _020B2E74 ; =FX_SinCosTable_ + mov r0, r0, asr #0x4 + mov r1, r0, lsl #0x1 + add r0, r1, #0x1 + mov r3, r1, lsl #0x1 + mov r1, r0, lsl #0x1 + ldrsh r0, [r2, r3] + ldrsh r1, [r2, r1] + bl NNS_G2dRotZ +_020B2E40: + ldrh r0, [r4, #0x56] + ands r0, r0, #0x2 + beq _020B2E5C + ldr r0, [r4, #0x48] + ldr r1, [r4, #0x4c] + mov r2, #0x1000 + bl NNS_G2dScale +_020B2E5C: + add r0, r4, #0x30 + bl NNS_G2dDrawMultiCell + mov r0, #0x1 + bl NNS_G2dPopMtx + ldmia sp!, {r4-r6,pc} + .balign 4 +_020B2E70: .word pCurrentInstance_ +_020B2E74: .word FX_SinCosTable_ + arm_func_end NNS_G2dDrawMultiCellAnimation + + arm_func_start NNS_G2dDrawMultiCell +NNS_G2dDrawMultiCell: ; 0x020B2E78 + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0xc + mov r5, r0 + ldr r0, [r5, #0x8] + cmp r0, #0x1 + bne _020B309C + ldr r0, [r5, #0x0] + mov r2, #0x0 + ldrh r0, [r0, #0x2] + cmp r0, #0x0 + bls _020B2ED0 + ldr r3, _020B3174 ; =mcRenderState_ + mov r4, r2 +_020B2EAC: + add r0, r3, r2, lsl #0x2 + str r4, [r0, #0x4] + ldr r0, [r5, #0x0] + add r2, r2, #0x1 + ldrh r1, [r0, #0x2] + mov r0, r2, lsl #0x10 + mov r2, r0, lsr #0x10 + cmp r2, r1 + blo _020B2EAC +_020B2ED0: + ldr r0, _020B3178 ; =pCurrentInstance_ + mov r6, #0x1 + ldr r1, [r0, #0x0] + ldr r0, _020B3174 ; =mcRenderState_ + str r6, [r0, #0x404] + ldr r0, [r1, #0x80] + cmp r0, #0x0 + beq _020B2FD8 + bl NNSi_G2dGetOamSoftEmuAutoZOffsetStep + str r0, [sp, #0x0] + mov r0, r6 + bl NNSi_G2dSetOamSoftEmuAutoZOffsetFlag + ldr r0, _020B3178 ; =pCurrentInstance_ + ldr r0, [r0, #0x0] + ldr r0, [r0, #0x80] + bl NNSi_G2dSetOamSoftEmuAutoZOffsetStep + ldr r2, [r5, #0x0] + mov r7, #0x0 + ldrh r0, [r2, #0x0] + cmp r0, #0x0 + bls _020B2FC0 + mov r11, r7 +_020B2F28: + ldr r0, [r2, #0x4] + ldr r9, [r5, #0xc] + add r10, r0, r7, lsl #0x3 + ldrh r0, [r10, #0x6] + and r0, r0, #0xff00 + mov r0, r0, lsl #0x8 + mov r8, r0, lsr #0x10 + ldr r0, _020B3174 ; =mcRenderState_ + strh r8, [r0, #0x0] + bl NNS_G2dPushMtx + ldr r0, _020B3178 ; =pCurrentInstance_ + ldrsh r4, [r10, #0x4] + ldr r0, [r0, #0x0] + ldrsh r10, [r10, #0x2] + bl NNS_G2dIsRndCoreFlipH + cmp r0, #0x0 + ldr r0, _020B3178 ; =pCurrentInstance_ + rsbne r10, r10, #0x0 + ldr r0, [r0, #0x0] + bl NNS_G2dIsRndCoreFlipV + cmp r0, #0x0 + rsbne r4, r4, #0x0 + mov r2, r11 + mov r0, r10, lsl #0xc + mov r1, r4, lsl #0xc + bl NNS_G2dTranslate + mov r0, #0x58 + mla r0, r8, r0, r9 + bl DrawCellAnimationImpl_ + mov r0, r6 + bl NNS_G2dPopMtx + ldr r2, [r5, #0x0] + add r0, r7, #0x1 + mov r0, r0, lsl #0x10 + ldrh r1, [r2, #0x0] + mov r7, r0, lsr #0x10 + cmp r7, r1 + blo _020B2F28 +_020B2FC0: + mov r0, #0x0 + bl NNSi_G2dSetOamSoftEmuAutoZOffsetFlag + ldr r0, [sp, #0x0] + bl NNSi_G2dSetOamSoftEmuAutoZOffsetStep + bl NNSi_G2dResetOamSoftEmuAutoZOffset + b _020B3088 +_020B2FD8: + ldr r2, [r5, #0x0] + mov r7, #0x0 + ldrh r0, [r2, #0x0] + cmp r0, #0x0 + bls _020B3088 + str r7, [sp, #0x4] + mov r11, #0x58 +_020B2FF4: + ldr r0, [r2, #0x4] + ldr r9, [r5, #0xc] + add r10, r0, r7, lsl #0x3 + ldrh r0, [r10, #0x6] + and r0, r0, #0xff00 + mov r0, r0, lsl #0x8 + mov r8, r0, lsr #0x10 + ldr r0, _020B3174 ; =mcRenderState_ + strh r8, [r0, #0x0] + bl NNS_G2dPushMtx + ldr r0, _020B3178 ; =pCurrentInstance_ + ldrsh r4, [r10, #0x4] + ldr r0, [r0, #0x0] + ldrsh r10, [r10, #0x2] + bl NNS_G2dIsRndCoreFlipH + cmp r0, #0x0 + ldr r0, _020B3178 ; =pCurrentInstance_ + rsbne r10, r10, #0x0 + ldr r0, [r0, #0x0] + bl NNS_G2dIsRndCoreFlipV + cmp r0, #0x0 + rsbne r4, r4, #0x0 + ldr r2, [sp, #0x4] + mov r0, r10, lsl #0xc + mov r1, r4, lsl #0xc + bl NNS_G2dTranslate + mla r0, r8, r11, r9 + bl DrawCellAnimationImpl_ + mov r0, r6 + bl NNS_G2dPopMtx + ldr r2, [r5, #0x0] + add r0, r7, #0x1 + mov r0, r0, lsl #0x10 + ldrh r1, [r2, #0x0] + mov r7, r0, lsr #0x10 + cmp r7, r1 + blo _020B2FF4 +_020B3088: + ldr r0, _020B3174 ; =mcRenderState_ + mov r1, #0x0 + str r1, [r0, #0x404] + add sp, sp, #0xc + ldmia sp!, {r4-r11,pc} +_020B309C: + ldr r0, _020B3178 ; =pCurrentInstance_ + ldr r7, [r5, #0xc] + ldr r0, [r0, #0x0] + ldr r0, [r0, #0x80] + cmp r0, #0x0 + beq _020B312C + bl NNSi_G2dGetOamSoftEmuAutoZOffsetStep + mov r6, r0 + mov r0, #0x1 + bl NNSi_G2dSetOamSoftEmuAutoZOffsetFlag + ldr r0, _020B3178 ; =pCurrentInstance_ + ldr r0, [r0, #0x0] + ldr r0, [r0, #0x80] + bl NNSi_G2dSetOamSoftEmuAutoZOffsetStep + ldr r0, [r5, #0x0] + mov r4, #0x0 + ldrh r0, [r0, #0x0] + cmp r0, #0x0 + bls _020B3110 + mov r8, #0x28 +_020B30EC: + mla r0, r4, r8, r7 + bl DrawNode_ + ldr r1, [r5, #0x0] + add r0, r4, #0x1 + mov r0, r0, lsl #0x10 + ldrh r1, [r1, #0x0] + mov r4, r0, lsr #0x10 + cmp r4, r1 + blo _020B30EC +_020B3110: + mov r0, #0x0 + bl NNSi_G2dSetOamSoftEmuAutoZOffsetFlag + mov r0, r6 + bl NNSi_G2dSetOamSoftEmuAutoZOffsetStep + bl NNSi_G2dResetOamSoftEmuAutoZOffset + add sp, sp, #0xc + ldmia sp!, {r4-r11,pc} +_020B312C: + ldr r0, [r5, #0x0] + mov r4, #0x0 + ldrh r0, [r0, #0x0] + cmp r0, #0x0 + addls sp, sp, #0xc + ldmlsia sp!, {r4-r11,pc} + mov r6, #0x28 +_020B3148: + mla r0, r4, r6, r7 + bl DrawNode_ + ldr r1, [r5, #0x0] + add r0, r4, #0x1 + mov r0, r0, lsl #0x10 + ldrh r1, [r1, #0x0] + mov r4, r0, lsr #0x10 + cmp r4, r1 + blo _020B3148 + add sp, sp, #0xc + ldmia sp!, {r4-r11,pc} + .balign 4 +_020B3174: .word mcRenderState_ +_020B3178: .word pCurrentInstance_ + arm_func_end NNS_G2dDrawMultiCell + + arm_func_start NNS_G2dDrawCellAnimation +NNS_G2dDrawCellAnimation: ; 0x020B317C + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + ldr r1, _020B31EC ; =pCurrentInstance_ + mov r5, r0 + ldr r1, [r1, #0x0] + ldr r1, [r1, #0x80] + cmp r1, #0x0 + beq _020B31E0 + bl NNSi_G2dGetOamSoftEmuAutoZOffsetStep + mov r4, r0 + mov r0, #0x1 + bl NNSi_G2dSetOamSoftEmuAutoZOffsetFlag + ldr r0, _020B31EC ; =pCurrentInstance_ + ldr r0, [r0, #0x0] + ldr r0, [r0, #0x80] + bl NNSi_G2dSetOamSoftEmuAutoZOffsetStep + mov r0, r5 + bl DrawCellAnimationImpl_ + mov r0, #0x0 + bl NNSi_G2dSetOamSoftEmuAutoZOffsetFlag + mov r0, r4 + bl NNSi_G2dSetOamSoftEmuAutoZOffsetStep + bl NNSi_G2dResetOamSoftEmuAutoZOffset + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} +_020B31E0: + bl DrawCellAnimationImpl_ + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + .balign 4 +_020B31EC: .word pCurrentInstance_ + arm_func_end NNS_G2dDrawCellAnimation + + arm_func_start NNS_G2dEndRendering +NNS_G2dEndRendering: ; 0x020B31F0 + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r1, _020B3260 ; =0x04000448 + mov r2, #0x1 + ldr r0, _020B3264 ; =pCurrentInstance_ + str r2, [r1, #0x0] + ldr r2, [r0, #0x0] + ldr r3, [r2, #0x7c] + cmp r3, #0x0 + beq _020B324C + ands r0, r3, #0x1 + ldrne r0, _020B3268 ; =bDonotUseSRTransform + movne r1, #0x0 + strne r1, [r0, #0x0] + ands r0, r3, #0x2 + beq _020B323C + mov r0, #0x0 + str r0, [r2, #0x74] + bl NNS_G2dRndCoreEndRendering +_020B323C: + ldr r0, _020B3264 ; =pCurrentInstance_ + mov r1, #0x0 + ldr r0, [r0, #0x0] + str r1, [r0, #0x7c] +_020B324C: + ldr r0, _020B3264 ; =pCurrentInstance_ + mov r1, #0x0 + str r1, [r0, #0x0] + add sp, sp, #0x4 + ldmia sp!, {pc} + .balign 4 +_020B3260: .word 0x04000448 +_020B3264: .word pCurrentInstance_ +_020B3268: .word bDonotUseSRTransform + arm_func_end NNS_G2dEndRendering + + arm_func_start NNS_G2dBeginRendering +NNS_G2dBeginRendering: ; 0x020B326C + stmdb sp!, {r4-r8,lr} + ldr r5, _020B330C ; =currentMtxCachePos_ + ldr r3, _020B3310 ; =pCurrentInstance_ + ldrh r6, [r5, #0x0] + ldr r2, _020B3314 ; =stackPos_ + mov r4, #0x0 + ldr r7, _020B3318 ; =0x0000FFFE + ldr r1, _020B331C ; =firstSRTransformedMtxIdx_ + str r0, [r3, #0x0] + str r4, [r2, #0x0] + strh r7, [r1, #0x0] + cmp r6, #0x0 + ble _020B32D0 + ldr r8, _020B3320 ; =mtxCacheBuffer_ + mvn r7, #0x0 + mov r6, #0x10 +_020B32AC: + mov r0, r7 + mov r2, r6 + add r1, r8, #0x10 + bl MIi_CpuClearFast + ldrh r0, [r5, #0x0] + add r4, r4, #0x1 + add r8, r8, #0x20 + cmp r4, r0 + blt _020B32AC +_020B32D0: + ldr r4, _020B330C ; =currentMtxCachePos_ + mov r0, #0x0 + ldr r3, _020B3324 ; =groupID_ + ldr r1, _020B3328 ; =mtxStateStack_ + mov r2, #0x100 + strh r0, [r4, #0x0] + strh r0, [r3, #0x0] + bl MIi_CpuClearFast + ldr r1, _020B332C ; =0x04000444 + mov r2, #0x0 + ldr r0, _020B3330 ; =0x04000454 + str r2, [r1, #0x0] + str r2, [r0, #0x0] + bl NNSi_G2dIdentity + ldmia sp!, {r4-r8,pc} + .balign 4 +_020B330C: .word currentMtxCachePos_ +_020B3310: .word pCurrentInstance_ +_020B3314: .word stackPos_ +_020B3318: .word 0x0000FFFE +_020B331C: .word firstSRTransformedMtxIdx_ +_020B3320: .word mtxCacheBuffer_ +_020B3324: .word groupID_ +_020B3328: .word mtxStateStack_ +_020B332C: .word 0x04000444 +_020B3330: .word 0x04000454 + arm_func_end NNS_G2dBeginRendering + + arm_func_start NNS_G2dInitRenderSurface +NNS_G2dInitRenderSurface: ; 0x020B3334 + stmdb sp!, {r4,lr} + mov r4, r0 + mov r1, r4 + mov r0, #0x0 + mov r2, #0x48 + bl MIi_CpuClear16 + mov r0, #0x1 + str r0, [r4, #0x10] + mov r0, #0x3 + ldr r1, _020B3380 ; =RndCoreCBFuncBeforeCell_ + str r0, [r4, #0x14] + ldr r0, _020B3384 ; =RndCoreCBFuncAfterCell_ + str r1, [r4, #0x18] + ldr r1, _020B3388 ; =RndCoreCBFuncBeforeOBJ_ + str r0, [r4, #0x1c] + ldr r0, _020B338C ; =RndCoreCBFuncAfterOBJ_ + str r1, [r4, #0x20] + str r0, [r4, #0x24] + ldmia sp!, {r4,pc} + .balign 4 +_020B3380: .word RndCoreCBFuncBeforeCell_ +_020B3384: .word RndCoreCBFuncAfterCell_ +_020B3388: .word RndCoreCBFuncBeforeOBJ_ +_020B338C: .word RndCoreCBFuncAfterOBJ_ + arm_func_end NNS_G2dInitRenderSurface + + arm_func_start NNS_G2dAddRendererTargetSurface +NNS_G2dAddRendererTargetSurface: ; 0x020B3390 + ldr r2, [r0, #0x70] + str r2, [r1, #0x30] + str r1, [r0, #0x70] + bx lr + arm_func_end NNS_G2dAddRendererTargetSurface + + arm_func_start NNS_G2dInitRenderer +NNS_G2dInitRenderer: ; 0x020B33A0 + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + mov r4, r0 + bl NNS_G2dInitRndCore + mov r7, #0x0 + str r7, [r4, #0x70] + str r7, [r4, #0x74] + str r7, [r4, #0x78] + str r7, [r4, #0x7c] + str r7, [r4, #0x80] + str r7, [r4, #0x84] + strh r7, [r4, #0x88] + strh r7, [r4, #0x8a] + str r7, [r4, #0x8c] + str r7, [r4, #0x90] + ldr r1, _020B3454 ; =stackPos_ + strh r7, [r4, #0x94] + ldr r2, _020B3458 ; =0x0000FFFE + ldr r0, _020B345C ; =firstSRTransformedMtxIdx_ + ldr r6, _020B3460 ; =mtxCacheBuffer_ + str r7, [r1, #0x0] + strh r2, [r0, #0x0] + mvn r5, #0x0 + mov r4, #0x10 +_020B3400: + mov r0, r5 + mov r2, r4 + add r1, r6, #0x10 + bl MIi_CpuClearFast + add r7, r7, #0x1 + cmp r7, #0x20 + add r6, r6, #0x20 + blt _020B3400 + ldr ip, _020B3464 ; =currentMtxCachePos_ + mov r0, #0x0 + ldr r3, _020B3468 ; =groupID_ + ldr r1, _020B346C ; =mtxStateStack_ + mov r2, #0x100 + strh r0, [r12, #0x0] + strh r0, [r3, #0x0] + bl MIi_CpuClearFast + ldr r0, _020B3470 ; =bDonotUseSRTransform + mov r1, #0x0 + str r1, [r0, #0x0] + add sp, sp, #0x4 + ldmia sp!, {r4-r7,pc} + .balign 4 +_020B3454: .word stackPos_ +_020B3458: .word 0x0000FFFE +_020B345C: .word firstSRTransformedMtxIdx_ +_020B3460: .word mtxCacheBuffer_ +_020B3464: .word currentMtxCachePos_ +_020B3468: .word groupID_ +_020B346C: .word mtxStateStack_ +_020B3470: .word bDonotUseSRTransform + arm_func_end NNS_G2dInitRenderer + + arm_func_start DrawNode_ +DrawNode_: ; 0x020B3474 + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + mov r5, r0 + ldr r0, [r5, #0x8] + cmp r0, #0x0 + addeq sp, sp, #0x4 + ldmeqia sp!, {r4-r7,pc} + ldr r4, [r5, #0x0] + bl NNS_G2dPushMtx + ldrh r0, [r5, #0x1e] + ands r0, r0, #0x8 + beq _020B34E4 + ldr r0, _020B354C ; =pCurrentInstance_ + ldrsh r7, [r5, #0x1a] + ldr r0, [r0, #0x0] + ldrsh r6, [r5, #0x18] + bl NNS_G2dIsRndCoreFlipH + cmp r0, #0x0 + ldr r0, _020B354C ; =pCurrentInstance_ + rsbne r6, r6, #0x0 + ldr r0, [r0, #0x0] + bl NNS_G2dIsRndCoreFlipV + cmp r0, #0x0 + rsbne r7, r7, #0x0 + mov r0, r6, lsl #0xc + mov r1, r7, lsl #0xc + mov r2, #0x0 + bl NNS_G2dTranslate +_020B34E4: + ldrh r0, [r5, #0x1e] + ands r0, r0, #0x4 + beq _020B3518 + ldrh r0, [r5, #0x1c] + ldr r2, _020B3550 ; =FX_SinCosTable_ + mov r0, r0, asr #0x4 + mov r1, r0, lsl #0x1 + add r0, r1, #0x1 + mov r3, r1, lsl #0x1 + mov r1, r0, lsl #0x1 + ldrsh r0, [r2, r3] + ldrsh r1, [r2, r1] + bl NNS_G2dRotZ +_020B3518: + ldrh r0, [r5, #0x1e] + ands r0, r0, #0x2 + beq _020B3534 + ldr r0, [r5, #0x10] + ldr r1, [r5, #0x14] + mov r2, #0x1000 + bl NNS_G2dScale +_020B3534: + mov r0, r4 + bl DrawCellAnimationImpl_ + mov r0, #0x1 + bl NNS_G2dPopMtx + add sp, sp, #0x4 + ldmia sp!, {r4-r7,pc} + .balign 4 +_020B354C: .word pCurrentInstance_ +_020B3550: .word FX_SinCosTable_ + arm_func_end DrawNode_ + + arm_func_start DrawCellAnimationImpl_ +DrawCellAnimationImpl_: ; 0x020B3554 + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + mov r5, r0 + ldrh r0, [r5, #0x4a] + ldr r4, [r5, #0x2c] + cmp r0, #0x0 + bne _020B35C0 + ldr r2, [r5, #0x34] + mvn r0, #0x0 + cmp r2, r0 + movne r0, #0x1 + moveq r0, #0x0 + cmp r0, #0x0 + beq _020B35B0 + ldr r1, _020B36B4 ; =currenVramTransferHandle_ + mov r0, r4 + str r2, [r1, #0x0] + bl DrawCellImpl_ + ldr r0, _020B36B4 ; =currenVramTransferHandle_ + mvn r1, #0x0 + str r1, [r0, #0x0] + add sp, sp, #0x4 + ldmia sp!, {r4-r7,pc} +_020B35B0: + mov r0, r4 + bl DrawCellImpl_ + add sp, sp, #0x4 + ldmia sp!, {r4-r7,pc} +_020B35C0: + bl NNS_G2dPushMtx + ldrh r0, [r5, #0x4a] + ands r0, r0, #0x8 + beq _020B3610 + ldr r0, _020B36B8 ; =pCurrentInstance_ + ldrsh r7, [r5, #0x46] + ldr r0, [r0, #0x0] + ldrsh r6, [r5, #0x44] + bl NNS_G2dIsRndCoreFlipH + cmp r0, #0x0 + ldr r0, _020B36B8 ; =pCurrentInstance_ + rsbne r6, r6, #0x0 + ldr r0, [r0, #0x0] + bl NNS_G2dIsRndCoreFlipV + cmp r0, #0x0 + rsbne r7, r7, #0x0 + mov r0, r6, lsl #0xc + mov r1, r7, lsl #0xc + mov r2, #0x0 + bl NNS_G2dTranslate +_020B3610: + ldrh r0, [r5, #0x4a] + ands r0, r0, #0x4 + beq _020B3644 + ldrh r0, [r5, #0x48] + ldr r2, _020B36BC ; =FX_SinCosTable_ + mov r0, r0, asr #0x4 + mov r1, r0, lsl #0x1 + add r0, r1, #0x1 + mov r3, r1, lsl #0x1 + mov r1, r0, lsl #0x1 + ldrsh r0, [r2, r3] + ldrsh r1, [r2, r1] + bl NNS_G2dRotZ +_020B3644: + ldrh r0, [r5, #0x4a] + ands r0, r0, #0x2 + beq _020B3660 + ldr r0, [r5, #0x3c] + ldr r1, [r5, #0x40] + mov r2, #0x1000 + bl NNS_G2dScale +_020B3660: + ldr r2, [r5, #0x34] + mvn r0, #0x0 + cmp r2, r0 + movne r0, #0x1 + moveq r0, #0x0 + cmp r0, #0x0 + beq _020B369C + ldr r1, _020B36B4 ; =currenVramTransferHandle_ + mov r0, r4 + str r2, [r1, #0x0] + bl DrawCellImpl_ + ldr r0, _020B36B4 ; =currenVramTransferHandle_ + mvn r1, #0x0 + str r1, [r0, #0x0] + b _020B36A4 +_020B369C: + mov r0, r4 + bl DrawCellImpl_ +_020B36A4: + mov r0, #0x1 + bl NNS_G2dPopMtx + add sp, sp, #0x4 + ldmia sp!, {r4-r7,pc} + .balign 4 +_020B36B4: .word currenVramTransferHandle_ +_020B36B8: .word pCurrentInstance_ +_020B36BC: .word FX_SinCosTable_ + arm_func_end DrawCellAnimationImpl_ + + arm_func_start DrawCellImpl_ +DrawCellImpl_: ; 0x020B36C0 + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0x4 + ldr r5, _020B3B54 ; =pCurrentInstance_ + mov r10, r0 + ldr r0, [r5, #0x0] + ldr r1, [r0, #0x7c] + str r0, [sp, #0x0] + ldr r9, [r0, #0x70] + ands r0, r1, #0x2 + beq _020B38EC + ldr r0, [r9, #0x14] + cmp r0, #0x0 + beq _020B3840 + ldr r0, _020B3B58 ; =bDonotUseSRTransform + mov r1, #0x0 + ldr r0, [r0, #0x0] + cmp r0, #0x0 + bne _020B3720 + ldr r2, _020B3B5C ; =firstSRTransformedMtxIdx_ + ldr r0, _020B3B60 ; =0x0000FFFE + ldrh r2, [r2, #0x0] + cmp r2, r0 + movne r0, #0x1 + bne _020B3724 +_020B3720: + mov r0, #0x0 +_020B3724: + cmp r0, #0x0 + beq _020B37AC + ldr r0, _020B3B64 ; =mcRenderState_ + ldr r1, [r0, #0x404] + cmp r1, #0x0 + beq _020B3788 + ldrh r1, [r0, #0x0] + ldr r0, _020B3B68 ; =mcRenderState_ + 0x4 + ldr r1, [r0, r1, lsl #0x2] + cmp r1, #0x0 + bne _020B37AC + bl NNSi_G2dMCMStoreCurrentMtxToMtxCache + ldr r0, _020B3B6C ; =stackPos_ + ldr r2, _020B3B70 ; =mtxStateStack_ + ldr r0, [r0, #0x0] + ldr r1, _020B3B64 ; =mcRenderState_ + mov r0, r0, lsl #0x10 + mov r0, r0, lsr #0xd + ldrh r3, [r2, r0] + ldr r4, _020B3B74 ; =mtxCacheBuffer_ + ldrh r2, [r1, #0x0] + ldr r0, _020B3B68 ; =mcRenderState_ + 0x4 + add r1, r4, r3, lsl #0x5 + str r1, [r0, r2, lsl #0x2] + b _020B37AC +_020B3788: + bl NNSi_G2dMCMStoreCurrentMtxToMtxCache + ldr r0, _020B3B6C ; =stackPos_ + ldr r1, _020B3B70 ; =mtxStateStack_ + ldr r0, [r0, #0x0] + ldr r2, _020B3B74 ; =mtxCacheBuffer_ + mov r0, r0, lsl #0x10 + mov r0, r0, lsr #0xd + ldrh r0, [r1, r0] + add r1, r2, r0, lsl #0x5 +_020B37AC: + ldr r0, _020B3B58 ; =bDonotUseSRTransform + ldr r0, [r0, #0x0] + cmp r0, #0x0 + ldreq r0, _020B3B6C ; =stackPos_ + ldreq r3, _020B3B78 ; =mtxStack_ + ldreq r2, [r0, #0x0] + moveq r0, #0x18 + mlaeq r0, r2, r0, r3 + beq _020B37FC + ldr r2, _020B3B6C ; =stackPos_ + mov r0, #0x18 + ldr r2, [r2, #0x0] + ldr r3, _020B3B7C ; =mtxStack_ + 0x10 + mul r4, r2, r0 + ldr r2, _020B3B80 ; =mtxStack_ + 0x14 + ldr r3, [r3, r4] + ldr r0, _020B3B84 ; =mtxI_ + ldr r2, [r2, r4] + str r3, [r0, #0x10] + str r2, [r0, #0x14] +_020B37FC: + bl NNS_G2dSetRndCoreCurrentMtx2D + ldr r1, _020B3B88 ; =currenVramTransferHandle_ + mvn r0, #0x0 + ldr r1, [r1, #0x0] + cmp r1, r0 + movne r0, #0x1 + moveq r0, #0x0 + cmp r0, #0x0 + beq _020B3830 + mov r0, r10 + bl NNS_G2dRndCoreDrawCellVramTransfer + add sp, sp, #0x4 + ldmia sp!, {r4-r11,pc} +_020B3830: + mov r0, r10 + bl NNS_G2dRndCoreDrawCell + add sp, sp, #0x4 + ldmia sp!, {r4-r11,pc} +_020B3840: + ldr r0, _020B3B6C ; =stackPos_ + ldr r1, _020B3B8C ; =fxZStack_ + ldr r2, [r0, #0x0] + ldr r0, [sp, #0x0] + ldr r1, [r1, r2, lsl #0x2] + bl NNS_G2dSetRndCore3DSoftSpriteZvalue + ldr r0, _020B3B58 ; =bDonotUseSRTransform + ldr r0, [r0, #0x0] + cmp r0, #0x0 + ldreq r0, _020B3B6C ; =stackPos_ + ldreq r2, _020B3B78 ; =mtxStack_ + ldreq r1, [r0, #0x0] + moveq r0, #0x18 + mlaeq r0, r1, r0, r2 + beq _020B38A8 + ldr r1, _020B3B6C ; =stackPos_ + mov r0, #0x18 + ldr r1, [r1, #0x0] + ldr r2, _020B3B7C ; =mtxStack_ + 0x10 + mul r3, r1, r0 + ldr r1, _020B3B80 ; =mtxStack_ + 0x14 + ldr r2, [r2, r3] + ldr r0, _020B3B84 ; =mtxI_ + ldr r1, [r1, r3] + str r2, [r0, #0x10] + str r1, [r0, #0x14] +_020B38A8: + bl NNS_G2dSetRndCoreCurrentMtx3D + ldr r1, _020B3B88 ; =currenVramTransferHandle_ + mvn r0, #0x0 + ldr r1, [r1, #0x0] + cmp r1, r0 + movne r0, #0x1 + moveq r0, #0x0 + cmp r0, #0x0 + beq _020B38DC + mov r0, r10 + bl NNS_G2dRndCoreDrawCellVramTransfer + add sp, sp, #0x4 + ldmia sp!, {r4-r11,pc} +_020B38DC: + mov r0, r10 + bl NNS_G2dRndCoreDrawCell + add sp, sp, #0x4 + ldmia sp!, {r4-r11,pc} +_020B38EC: + cmp r9, #0x0 + addeq sp, sp, #0x4 + ldmeqia sp!, {r4-r11,pc} + ldr r4, _020B3B6C ; =stackPos_ + ldr fp, _020B3B78 ; =mtxStack_ + mov r7, #0x0 + mov r6, #0x1 +_020B3908: + ldr r0, [r9, #0x10] + cmp r0, #0x0 + beq _020B3B40 + ldr r0, [r9, #0x14] + cmp r0, #0x0 + beq _020B3A8C + ldr r8, [r5, #0x0] + mov r1, r9 + str r9, [r8, #0x74] + mov r0, r8 + bl NNS_G2dSetRndCoreSurface + ldr r1, [r9, #0x28] + ldr r2, [r9, #0x2c] + mov r0, r8 + bl NNS_G2dSetRndCoreOamRegisterFunc + mov r0, r8 + bl NNS_G2dRndCoreBeginRendering + ldr r0, _020B3B58 ; =bDonotUseSRTransform + mov r1, r7 + ldr r0, [r0, #0x0] + cmp r0, #0x0 + bne _020B3978 + ldr r0, _020B3B5C ; =firstSRTransformedMtxIdx_ + ldrh r2, [r0, #0x0] + ldr r0, _020B3B60 ; =0x0000FFFE + cmp r2, r0 + movne r0, r6 + bne _020B397C +_020B3978: + mov r0, r7 +_020B397C: + cmp r0, #0x0 + beq _020B3A04 + ldr r0, _020B3B64 ; =mcRenderState_ + ldr r0, [r0, #0x404] + cmp r0, #0x0 + beq _020B39E4 + ldr r0, _020B3B64 ; =mcRenderState_ + ldrh r1, [r0, #0x0] + add r0, r0, r1, lsl #0x2 + ldr r1, [r0, #0x4] + cmp r1, #0x0 + bne _020B3A04 + bl NNSi_G2dMCMStoreCurrentMtxToMtxCache + ldr r0, _020B3B64 ; =mcRenderState_ + ldr r2, [r4, #0x0] + ldrh r1, [r0, #0x0] + mov r0, r2, lsl #0x10 + mov r2, r0, lsr #0xd + ldr r0, _020B3B70 ; =mtxStateStack_ + ldrh r3, [r0, r2] + ldr r0, _020B3B64 ; =mcRenderState_ + add r2, r0, r1, lsl #0x2 + ldr r0, _020B3B74 ; =mtxCacheBuffer_ + add r1, r0, r3, lsl #0x5 + str r1, [r2, #0x4] + b _020B3A04 +_020B39E4: + bl NNSi_G2dMCMStoreCurrentMtxToMtxCache + ldr r0, [r4, #0x0] + mov r0, r0, lsl #0x10 + mov r1, r0, lsr #0xd + ldr r0, _020B3B70 ; =mtxStateStack_ + ldrh r1, [r0, r1] + ldr r0, _020B3B74 ; =mtxCacheBuffer_ + add r1, r0, r1, lsl #0x5 +_020B3A04: + ldr r0, _020B3B58 ; =bDonotUseSRTransform + ldr r0, [r0, #0x0] + cmp r0, #0x0 + ldreq r2, [r4, #0x0] + moveq r0, #0x18 + mlaeq r0, r2, r0, r11 + beq _020B3A44 + ldr r2, [r4, #0x0] + mov r0, #0x18 + mla r8, r2, r0, r11 + ldr r0, _020B3B84 ; =mtxI_ + ldr r3, [r8, #0x10] + mov r2, r0 + str r3, [r2, #0x10] + ldr r3, [r8, #0x14] + str r3, [r2, #0x14] +_020B3A44: + bl NNS_G2dSetRndCoreCurrentMtx2D + ldr r0, _020B3B88 ; =currenVramTransferHandle_ + ldr r1, [r0, #0x0] + mvn r0, #0x0 + cmp r1, r0 + movne r0, r6 + moveq r0, r7 + cmp r0, #0x0 + beq _020B3A74 + mov r0, r10 + bl NNS_G2dRndCoreDrawCellVramTransfer + b _020B3A7C +_020B3A74: + mov r0, r10 + bl NNS_G2dRndCoreDrawCell +_020B3A7C: + ldr r0, [r5, #0x0] + str r7, [r0, #0x74] + bl NNS_G2dRndCoreEndRendering + b _020B3B40 +_020B3A8C: + ldr r8, [r5, #0x0] + mov r1, r9 + mov r0, r8 + str r9, [r8, #0x74] + bl NNS_G2dSetRndCoreSurface + mov r0, r8 + bl NNS_G2dRndCoreBeginRendering + ldr r2, [r4, #0x0] + ldr r1, _020B3B8C ; =fxZStack_ + ldr r0, [sp, #0x0] + ldr r1, [r1, r2, lsl #0x2] + bl NNS_G2dSetRndCore3DSoftSpriteZvalue + ldr r0, _020B3B58 ; =bDonotUseSRTransform + ldr r0, [r0, #0x0] + cmp r0, #0x0 + ldreq r1, [r4, #0x0] + moveq r0, #0x18 + mlaeq r0, r1, r0, r11 + beq _020B3AFC + ldr r1, [r4, #0x0] + mov r0, #0x18 + mla r3, r1, r0, r11 + ldr r0, _020B3B84 ; =mtxI_ + ldr r2, [r3, #0x10] + mov r1, r0 + str r2, [r1, #0x10] + ldr r2, [r3, #0x14] + str r2, [r1, #0x14] +_020B3AFC: + bl NNS_G2dSetRndCoreCurrentMtx3D + ldr r0, _020B3B88 ; =currenVramTransferHandle_ + ldr r1, [r0, #0x0] + mvn r0, #0x0 + cmp r1, r0 + movne r0, r6 + moveq r0, r7 + cmp r0, #0x0 + beq _020B3B2C + mov r0, r10 + bl NNS_G2dRndCoreDrawCellVramTransfer + b _020B3B34 +_020B3B2C: + mov r0, r10 + bl NNS_G2dRndCoreDrawCell +_020B3B34: + ldr r0, [r5, #0x0] + str r7, [r0, #0x74] + bl NNS_G2dRndCoreEndRendering +_020B3B40: + ldr r9, [r9, #0x30] + cmp r9, #0x0 + bne _020B3908 + add sp, sp, #0x4 + ldmia sp!, {r4-r11,pc} + .balign 4 +_020B3B54: .word pCurrentInstance_ +_020B3B58: .word bDonotUseSRTransform +_020B3B5C: .word firstSRTransformedMtxIdx_ +_020B3B60: .word 0x0000FFFE +_020B3B64: .word mcRenderState_ +_020B3B68: .word mcRenderState_ + 0x4 +_020B3B6C: .word stackPos_ +_020B3B70: .word mtxStateStack_ +_020B3B74: .word mtxCacheBuffer_ +_020B3B78: .word mtxStack_ +_020B3B7C: .word mtxStack_ + 0x10 +_020B3B80: .word mtxStack_ + 0x14 +_020B3B84: .word mtxI_ +_020B3B88: .word currenVramTransferHandle_ +_020B3B8C: .word fxZStack_ + arm_func_end DrawCellImpl_ + + arm_func_start RndCoreCBFuncAfterOBJ_ +RndCoreCBFuncAfterOBJ_: ; 0x020B3B90 + stmdb sp!, {r4-r6,lr} + sub sp, sp, #0x8 + ldr r0, _020B3C24 ; =pCurrentInstance_ + mov r12, r1 + ldr r0, [r0, #0x0] + mov r3, r2 + ldr r1, [r0, #0x74] + ldr r2, [r1, #0x44] + cmp r2, #0x0 + addeq sp, sp, #0x8 + ldmeqia sp!, {r4-r6,pc} + ldr r2, _020B3C28 ; =bDonotUseSRTransform + ldr r2, [r2, #0x0] + cmp r2, #0x0 + ldreq r2, _020B3C2C ; =stackPos_ + ldreq r4, _020B3C30 ; =mtxStack_ + ldreq lr, [r2, #0x0] + moveq r2, #0x18 + mlaeq r6, lr, r2, r4 + beq _020B3C0C + ldr lr, _020B3C2C ; =stackPos_ + mov r2, #0x18 + ldr lr, [lr, #0x0] + ldr r4, _020B3C34 ; =mtxStack_ + 0x10 + mul r5, lr, r2 + ldr r2, _020B3C38 ; =mtxStack_ + 0x14 + ldr r4, [r4, r5] + ldr r6, _020B3C3C ; =mtxI_ + ldr r2, [r2, r5] + str r4, [r6, #0x10] + str r2, [r6, #0x14] +_020B3C0C: + str r6, [sp, #0x0] + ldr lr, [r1, #0x44] + mov r2, r12 + blx lr + add sp, sp, #0x8 + ldmia sp!, {r4-r6,pc} + .balign 4 +_020B3C24: .word pCurrentInstance_ +_020B3C28: .word bDonotUseSRTransform +_020B3C2C: .word stackPos_ +_020B3C30: .word mtxStack_ +_020B3C34: .word mtxStack_ + 0x10 +_020B3C38: .word mtxStack_ + 0x14 +_020B3C3C: .word mtxI_ + arm_func_end RndCoreCBFuncAfterOBJ_ + + arm_func_start RndCoreCBFuncBeforeOBJ_ +RndCoreCBFuncBeforeOBJ_: ; 0x020B3C40 + stmdb sp!, {r4-r6,lr} + sub sp, sp, #0x8 + ldr r3, _020B3E2C ; =pCurrentInstance_ + add r4, r0, #0x38 + ldr r0, [r3, #0x0] + mov r6, r1 + mov r5, r2 + bl NNS_G2dGetRendererPaletteTbl + cmp r0, #0x0 + beq _020B3C90 + ldrh r1, [r4, #0x4] + and r1, r1, #0xf000 + mov r1, r1, lsl #0x4 + mov r1, r1, lsr #0x10 + bl NNS_G2dGetPaletteTableValue + ldr r1, [r4, #0x4] + and r0, r0, #0xf + bic r1, r1, #0xf000 + orr r0, r1, r0, lsl #0xc + str r0, [r4, #0x4] +_020B3C90: + ldr r0, _020B3E2C ; =pCurrentInstance_ + ldr r1, [r0, #0x0] + ldr r0, [r1, #0x84] + cmp r0, #0x0 + beq _020B3DA4 + ldr r0, [r1, #0x84] + ands r0, r0, #0x1 + beq _020B3CC8 + ldrh r0, [r1, #0x88] + ldr r1, [r4, #0x4] + bic r1, r1, #0xc00 + and r0, r0, #0x3 + orr r0, r1, r0, lsl #0xa + str r0, [r4, #0x4] +_020B3CC8: + ldr r0, _020B3E2C ; =pCurrentInstance_ + ldr r1, [r0, #0x0] + ldr r0, [r1, #0x84] + ands r0, r0, #0x2 + beq _020B3CF4 + ldrh r0, [r1, #0x8a] + ldr r1, [r4, #0x4] + bic r1, r1, #0xf000 + and r0, r0, #0xf + orr r0, r1, r0, lsl #0xc + str r0, [r4, #0x4] +_020B3CF4: + ldr r0, _020B3E2C ; =pCurrentInstance_ + ldr r1, [r0, #0x0] + ldr r0, [r1, #0x84] + ands r0, r0, #0x10 + beq _020B3D2C + ldr r2, [r4, #0x4] + ldrh r0, [r1, #0x94] + mov r1, r2, lsl #0x10 + bic r2, r2, #0xf000 + add r0, r0, r1, lsr #0x1c + and r0, r0, #0xf + and r0, r0, #0xf + orr r0, r2, r0, lsl #0xc + str r0, [r4, #0x4] +_020B3D2C: + ldr r0, _020B3E2C ; =pCurrentInstance_ + ldr r1, [r0, #0x0] + ldr r0, [r1, #0x84] + ands r0, r0, #0x4 + beq _020B3D60 + ldr r0, [r1, #0x90] + cmp r0, #0x0 + ldrne r0, [r4, #0x0] + orrne r0, r0, #0x1000 + strne r0, [r4, #0x0] + ldreq r0, [r4, #0x0] + biceq r0, r0, #0x1000 + streq r0, [r4, #0x0] +_020B3D60: + ldr r0, _020B3E2C ; =pCurrentInstance_ + ldr r1, [r0, #0x0] + ldr r0, [r1, #0x84] + ands r0, r0, #0x8 + beq _020B3DA4 + ldr r0, [r4, #0x0] + ldrh r2, [r4, #0x4] + ldr r1, [r1, #0x8c] + bic r0, r0, #0xc00 + orr r0, r0, r1, lsl #0xa + str r0, [r4, #0x0] + ldrh r0, [r4, #0x4] + and r1, r2, #0xf000 + mov r1, r1, asr #0xc + bic r0, r0, #0xf000 + orr r0, r0, r1, lsl #0xc + strh r0, [r4, #0x4] +_020B3DA4: + ldr r0, _020B3E2C ; =pCurrentInstance_ + ldr r0, [r0, #0x0] + ldr r1, [r0, #0x74] + ldr r2, [r1, #0x40] + cmp r2, #0x0 + addeq sp, sp, #0x8 + ldmeqia sp!, {r4-r6,pc} + ldr r2, _020B3E30 ; =bDonotUseSRTransform + ldr r2, [r2, #0x0] + cmp r2, #0x0 + ldreq r2, _020B3E34 ; =stackPos_ + ldreq r4, _020B3E38 ; =mtxStack_ + ldreq r3, [r2, #0x0] + moveq r2, #0x18 + mlaeq r4, r3, r2, r4 + beq _020B3E10 + ldr r3, _020B3E34 ; =stackPos_ + mov r2, #0x18 + ldr r4, [r3, #0x0] + ldr r3, _020B3E3C ; =mtxStack_ + 0x10 + mul r12, r4, r2 + ldr r2, _020B3E40 ; =mtxStack_ + 0x14 + ldr r3, [r3, r12] + ldr r4, _020B3E44 ; =mtxI_ + ldr r2, [r2, r12] + str r3, [r4, #0x10] + str r2, [r4, #0x14] +_020B3E10: + str r4, [sp, #0x0] + ldr r4, [r1, #0x40] + mov r2, r6 + mov r3, r5 + blx r4 + add sp, sp, #0x8 + ldmia sp!, {r4-r6,pc} + .balign 4 +_020B3E2C: .word pCurrentInstance_ +_020B3E30: .word bDonotUseSRTransform +_020B3E34: .word stackPos_ +_020B3E38: .word mtxStack_ +_020B3E3C: .word mtxStack_ + 0x10 +_020B3E40: .word mtxStack_ + 0x14 +_020B3E44: .word mtxI_ + arm_func_end RndCoreCBFuncBeforeOBJ_ + + arm_func_start RndCoreCBFuncAfterCell_ +RndCoreCBFuncAfterCell_: ; 0x020B3E48 + stmdb sp!, {r4,lr} + ldr r0, _020B3EC4 ; =pCurrentInstance_ + mov r2, r1 + ldr r0, [r0, #0x0] + ldr r1, [r0, #0x74] + ldr r3, [r1, #0x3c] + cmp r3, #0x0 + ldmeqia sp!, {r4,pc} + ldr r3, _020B3EC8 ; =bDonotUseSRTransform + ldr r3, [r3, #0x0] + cmp r3, #0x0 + ldreq r3, _020B3ECC ; =stackPos_ + ldreq lr, _020B3ED0 ; =mtxStack_ + ldreq r12, [r3, #0x0] + moveq r3, #0x18 + mlaeq r3, r12, r3, lr + beq _020B3EB8 + ldr ip, _020B3ECC ; =stackPos_ + mov r3, #0x18 + ldr r12, [r12, #0x0] + ldr lr, _020B3ED4 ; =mtxStack_ + 0x10 + mul r4, r12, r3 + ldr ip, _020B3ED8 ; =mtxStack_ + 0x14 + ldr lr, [lr, r4] + ldr r3, _020B3EDC ; =mtxI_ + ldr r12, [r12, r4] + str lr, [r3, #0x10] + str r12, [r3, #0x14] +_020B3EB8: + ldr r12, [r1, #0x3c] + blx r12 + ldmia sp!, {r4,pc} + .balign 4 +_020B3EC4: .word pCurrentInstance_ +_020B3EC8: .word bDonotUseSRTransform +_020B3ECC: .word stackPos_ +_020B3ED0: .word mtxStack_ +_020B3ED4: .word mtxStack_ + 0x10 +_020B3ED8: .word mtxStack_ + 0x14 +_020B3EDC: .word mtxI_ + arm_func_end RndCoreCBFuncAfterCell_ + + arm_func_start RndCoreCBFuncBeforeCell_ +RndCoreCBFuncBeforeCell_: ; 0x020B3EE0 + stmdb sp!, {r4-r6,lr} + ldr r2, _020B3FF4 ; =pCurrentInstance_ + mov r6, r0 + ldr r0, [r2, #0x0] + mov r5, r1 + ldr r4, [r0, #0x74] + ldr r0, [r4, #0x34] + cmp r0, #0x0 + beq _020B3F7C + ldr r0, _020B3FF8 ; =bDonotUseSRTransform + ldr r0, [r0, #0x0] + cmp r0, #0x0 + ldreq r0, _020B3FFC ; =stackPos_ + ldreq r1, _020B4000 ; =mtxStack_ + ldreq r2, [r0, #0x0] + moveq r0, #0x18 + mlaeq r1, r2, r0, r1 + beq _020B3F54 + ldr r1, _020B3FFC ; =stackPos_ + mov r0, #0x18 + ldr r2, [r1, #0x0] + ldr r1, _020B4004 ; =mtxStack_ + 0x10 + mul r3, r2, r0 + ldr r0, _020B4008 ; =mtxStack_ + 0x14 + ldr r2, [r1, r3] + ldr r1, _020B400C ; =mtxI_ + ldr r0, [r0, r3] + str r2, [r1, #0x10] + str r0, [r1, #0x14] +_020B3F54: + ldr r3, [r4, #0x34] + mov r0, r5 + mov r2, r4 + blx r3 + cmp r0, #0x0 + moveq r0, #0x0 + streq r0, [r6, #0x30] + ldmeqia sp!, {r4-r6,pc} + mov r0, #0x1 + str r0, [r6, #0x30] +_020B3F7C: + ldr r0, [r4, #0x38] + cmp r0, #0x0 + ldmeqia sp!, {r4-r6,pc} + ldr r0, _020B3FF8 ; =bDonotUseSRTransform + ldr r0, [r0, #0x0] + cmp r0, #0x0 + ldreq r0, _020B3FFC ; =stackPos_ + ldreq r2, _020B4000 ; =mtxStack_ + ldreq r1, [r0, #0x0] + moveq r0, #0x18 + mlaeq r3, r1, r0, r2 + beq _020B3FD8 + ldr r1, _020B3FFC ; =stackPos_ + mov r0, #0x18 + ldr r2, [r1, #0x0] + ldr r1, _020B4004 ; =mtxStack_ + 0x10 + mul r6, r2, r0 + ldr r0, _020B4008 ; =mtxStack_ + 0x14 + ldr r1, [r1, r6] + ldr r3, _020B400C ; =mtxI_ + ldr r0, [r0, r6] + str r1, [r3, #0x10] + str r0, [r3, #0x14] +_020B3FD8: + ldr r0, _020B3FF4 ; =pCurrentInstance_ + ldr r6, [r4, #0x38] + ldr r0, [r0, #0x0] + mov r1, r4 + mov r2, r5 + blx r6 + ldmia sp!, {r4-r6,pc} + .balign 4 +_020B3FF4: .word pCurrentInstance_ +_020B3FF8: .word bDonotUseSRTransform +_020B3FFC: .word stackPos_ +_020B4000: .word mtxStack_ +_020B4004: .word mtxStack_ + 0x10 +_020B4008: .word mtxStack_ + 0x14 +_020B400C: .word mtxI_ + arm_func_end RndCoreCBFuncBeforeCell_ + + arm_func_start NNSi_G2dMCMStoreCurrentMtxToMtxCache +NNSi_G2dMCMStoreCurrentMtxToMtxCache: ; 0x020B4010 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + ldr r0, _020B4154 ; =stackPos_ + ldr r1, _020B4158 ; =mtxStateStack_ + ldr r0, [r0, #0x0] + mov r2, #0x1 + mov r0, r0, lsl #0x10 + add r3, r1, r0, lsr #0xd + ldrh r0, [r3, #0x4] + cmp r0, #0x1 + beq _020B4044 + cmp r0, #0x2 + movne r2, #0x0 +_020B4044: + cmp r2, #0x0 + addeq sp, sp, #0x4 + ldmeqia sp!, {r4-r5,pc} + ldr r0, _020B415C ; =currentMtxCachePos_ + mov r2, #0x10 + ldrh r4, [r0, #0x0] + cmp r4, #0x1f + addcc r1, r4, #0x1 + strcch r1, [r0, #0x0] + ldr r0, _020B4160 ; =mtxCacheBuffer_ + ldrh r5, [r3, #0x2] + add r0, r0, r4, lsl #0x5 + add r1, r0, #0x10 + mvn r0, #0x0 + strh r4, [r3, #0x0] + bl MIi_CpuClearFast + ldr r0, _020B4154 ; =stackPos_ + ldr r1, _020B4164 ; =bDonotUseSRTransform + ldr r0, [r0, #0x0] + ldr r2, [r1, #0x0] + mov r1, r0, lsl #0x10 + cmp r2, #0x0 + ldr r3, _020B4158 ; =mtxStateStack_ + mov r1, r1, lsr #0xd + ldrh r1, [r3, r1] + ldr r3, _020B4160 ; =mtxCacheBuffer_ + moveq r2, #0x18 + add r1, r3, r1, lsl #0x5 + ldreq r3, _020B4168 ; =mtxStackFor2DHW_ + mlaeq r12, r0, r2, r3 + beq _020B40E4 + mov r2, #0x18 + mul r3, r0, r2 + ldr r2, _020B416C ; =mtxStack_ + 0x10 + ldr r0, _020B4170 ; =mtxStack_ + 0x14 + ldr r2, [r2, r3] + ldr ip, _020B4174 ; =mtxI_ + ldr r0, [r0, r3] + str r2, [r12, #0x10] + str r0, [r12, #0x14] +_020B40E4: + ldr r2, [r12, #0x0] + ldr r0, _020B4154 ; =stackPos_ + str r2, [r1, #0x0] + ldr r2, [r12, #0x4] + str r2, [r1, #0x4] + ldr r2, [r12, #0x8] + str r2, [r1, #0x8] + ldr r2, [r12, #0xc] + str r2, [r1, #0xc] + ldr r0, [r0, #0x0] + mov r0, r0, lsl #0x10 + movs lr, r0, lsr #0x10 + addmi sp, sp, #0x4 + ldmmiia sp!, {r4-r5,pc} + ldr r3, _020B4158 ; =mtxStateStack_ + mov r0, #0x3 +_020B4124: + add r2, r3, lr, lsl #0x3 + ldrh r1, [r2, #0x2] + mov r12, lr, lsl #0x3 + cmp r5, r1 + addne sp, sp, #0x4 + ldmneia sp!, {r4-r5,pc} + strh r0, [r2, #0x4] + strh r4, [r3, r12] + subs lr, lr, #0x1 + bpl _020B4124 + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + .balign 4 +_020B4154: .word stackPos_ +_020B4158: .word mtxStateStack_ +_020B415C: .word currentMtxCachePos_ +_020B4160: .word mtxCacheBuffer_ +_020B4164: .word bDonotUseSRTransform +_020B4168: .word mtxStackFor2DHW_ +_020B416C: .word mtxStack_ + 0x10 +_020B4170: .word mtxStack_ + 0x14 +_020B4174: .word mtxI_ + arm_func_end NNSi_G2dMCMStoreCurrentMtxToMtxCache + + arm_func_start NNSi_G2dIdentity +NNSi_G2dIdentity: ; 0x020B4178 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + ldr r0, _020B4220 ; =bDonotUseSRTransform + ldr r0, [r0, #0x0] + cmp r0, #0x0 + beq _020B41B8 + ldr r1, _020B4224 ; =stackPos_ + mov r0, #0x18 + ldr r12, [r1, #0x0] + ldr r1, _020B4228 ; =mtxStack_ + 0x10 + mul r3, r12, r0 + mov r2, #0x0 + ldr r0, _020B422C ; =mtxStack_ + 0x14 + str r2, [r1, r3] + str r2, [r0, r3] + b _020B420C +_020B41B8: + ldr r0, _020B4224 ; =stackPos_ + mov lr, #0x18 + ldr r1, [r0, #0x0] + ldr r4, _020B4230 ; =mtxStack_ + mul r3, r1, lr + mov r2, #0x1000 + str r2, [r4, r3] + add r5, r4, r3 + mov r1, #0x0 + str r1, [r5, #0x4] + str r1, [r5, #0x8] + str r2, [r5, #0xc] + str r1, [r5, #0x10] + str r1, [r5, #0x14] + ldr r12, [r0, #0x0] + ldr r4, _020B4234 ; =mtxStackFor2DHW_ + ldmia r5!, {r0-r3} + mla lr, r12, lr, r4 + stmia lr!, {r0-r3} + ldmia r5, {r0-r1} + stmia lr, {r0-r1} +_020B420C: + ldr r0, _020B4238 ; =fxZStack_ + mov r1, #0x0 + str r1, [r0, r12, lsl #0x2] + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + .balign 4 +_020B4220: .word bDonotUseSRTransform +_020B4224: .word stackPos_ +_020B4228: .word mtxStack_ + 0x10 +_020B422C: .word mtxStack_ + 0x14 +_020B4230: .word mtxStack_ +_020B4234: .word mtxStackFor2DHW_ +_020B4238: .word fxZStack_ + arm_func_end NNSi_G2dIdentity diff --git a/arm9/asm/NNS_G2D_g2d_renderercor.s b/arm9/asm/NNS_G2D_g2d_renderercor.s new file mode 100644 index 00000000..bf415c1c --- /dev/null +++ b/arm9/asm/NNS_G2D_g2d_renderercor.s @@ -0,0 +1,1095 @@ + .include "asm/macros.inc" + .include "global.inc" + + .section .rodata + + .global mtxIdentity_ +mtxIdentity_: ; 0x020FF958 + .byte 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + ; static const in function + + .section .bss + + .global pTheInstance_ +pTheInstance_: ; 0x021CED14 + .space 0x4 + + .section .text + + arm_func_start NNS_G2dRndCoreDrawCellVramTransfer +NNS_G2dRndCoreDrawCellVramTransfer: ; 0x020B4BF4 + stmdb sp!, {r4-r6,lr} + ldr r2, _020B4CD8 ; =pTheInstance_ + mov r6, r0 + ldr r3, [r2, #0x0] + mov r4, r1 + ldr r5, [r3, #0x0] + ldr r0, [r5, #0x10] + cmp r0, #0x0 + ldmeqia sp!, {r4-r6,pc} + mov r0, #0x1 + str r0, [r3, #0x30] + ldr r3, [r5, #0x18] + cmp r3, #0x0 + beq _020B4C38 + ldr r0, [r2, #0x0] + mov r1, r6 + blx r3 +_020B4C38: + ldr r0, _020B4CD8 ; =pTheInstance_ + ldr r0, [r0, #0x0] + ldr r0, [r0, #0x30] + cmp r0, #0x0 + beq _020B4CB8 + mvn r0, #0x0 + cmp r4, r0 + beq _020B4C7C + mov r0, r4 + ldr r4, [r5, #0x14] + bl NNSi_G2dGetCellTransferState + mov r3, #0x1 + mvn r1, r3, lsl r4 + ldr r2, [r0, #0x20] + and r1, r2, r1 + orr r1, r1, r3, lsl r4 + str r1, [r0, #0x20] +_020B4C7C: + ldr r0, [r5, #0x14] + cmp r0, #0x3 + addls pc, pc, r0, lsl #0x2 + b _020B4CB8 + ; Jump table + b _020B4C9C ; case 0 + b _020B4CAC ; case 1 + b _020B4CAC ; case 2 + b _020B4CB8 ; case 3 +_020B4C9C: + mov r0, r5 + mov r1, r6 + bl DrawCellToSurface3D_ + b _020B4CB8 +_020B4CAC: + mov r0, r5 + mov r1, r6 + bl DrawCellToSurface2D_ +_020B4CB8: + ldr r2, [r5, #0x1c] + cmp r2, #0x0 + ldmeqia sp!, {r4-r6,pc} + ldr r0, _020B4CD8 ; =pTheInstance_ + mov r1, r6 + ldr r0, [r0, #0x0] + blx r2 + ldmia sp!, {r4-r6,pc} + .balign 4 +_020B4CD8: .word pTheInstance_ + arm_func_end NNS_G2dRndCoreDrawCellVramTransfer + + arm_func_start NNS_G2dRndCoreDrawCell +NNS_G2dRndCoreDrawCell: ; 0x020B4CDC + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + ldr r1, _020B4D9C ; =pTheInstance_ + mov r5, r0 + ldr r2, [r1, #0x0] + ldr r4, [r2, #0x0] + ldr r0, [r4, #0x10] + cmp r0, #0x0 + addeq sp, sp, #0x4 + ldmeqia sp!, {r4-r5,pc} + mov r0, #0x1 + str r0, [r2, #0x30] + ldr r2, [r4, #0x18] + cmp r2, #0x0 + beq _020B4D24 + ldr r0, [r1, #0x0] + mov r1, r5 + blx r2 +_020B4D24: + ldr r0, _020B4D9C ; =pTheInstance_ + ldr r0, [r0, #0x0] + ldr r0, [r0, #0x30] + cmp r0, #0x0 + beq _020B4D74 + ldr r0, [r4, #0x14] + cmp r0, #0x3 + addls pc, pc, r0, lsl #0x2 + b _020B4D74 + ; Jump table + b _020B4D58 ; case 0 + b _020B4D68 ; case 1 + b _020B4D68 ; case 2 + b _020B4D74 ; case 3 +_020B4D58: + mov r0, r4 + mov r1, r5 + bl DrawCellToSurface3D_ + b _020B4D74 +_020B4D68: + mov r0, r4 + mov r1, r5 + bl DrawCellToSurface2D_ +_020B4D74: + ldr r2, [r4, #0x1c] + cmp r2, #0x0 + addeq sp, sp, #0x4 + ldmeqia sp!, {r4-r5,pc} + ldr r0, _020B4D9C ; =pTheInstance_ + mov r1, r5 + ldr r0, [r0, #0x0] + blx r2 + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + .balign 4 +_020B4D9C: .word pTheInstance_ + arm_func_end NNS_G2dRndCoreDrawCell + + arm_func_start NNS_G2dRndCoreEndRendering +NNS_G2dRndCoreEndRendering: ; 0x020B4DA0 + ldr r0, _020B4E00 ; =pTheInstance_ + ldr r3, [r0, #0x0] + ldr r1, [r3, #0x0] + ldr r1, [r1, #0x14] + cmp r1, #0x0 + bne _020B4DD8 + ldr r2, _020B4E04 ; =0x04000440 + mov r1, #0x0 + ldr r0, _020B4E08 ; =0x04000448 + str r1, [r2, #0x0] + mov r1, #0x1 + str r1, [r0, #0x0] + str r1, [r2, #0x0] + b _020B4DF0 +_020B4DD8: + mov r2, #0x0 + str r2, [r3, #0x10] + ldr r1, [r0, #0x0] + str r2, [r1, #0x2c] + ldr r0, [r0, #0x0] + str r2, [r0, #0x28] +_020B4DF0: + ldr r0, _020B4E00 ; =pTheInstance_ + mov r1, #0x0 + str r1, [r0, #0x0] + bx lr + .balign 4 +_020B4E00: .word pTheInstance_ +_020B4E04: .word 0x04000440 +_020B4E08: .word 0x04000448 + arm_func_end NNS_G2dRndCoreEndRendering + + arm_func_start NNS_G2dRndCoreBeginRendering +NNS_G2dRndCoreBeginRendering: ; 0x020B4E0C + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + ldr r2, _020B4F28 ; =pTheInstance_ + mov r4, r0 + str r4, [r2, #0x0] + ldr r0, [r4, #0x0] + ldr r5, [r0, #0x14] + cmp r5, #0x0 + bne _020B4ED8 + ldr lr, _020B4F2C ; =0x04000440 + mov r1, #0x0 + ldr r0, _020B4F30 ; =0x04000444 + str r1, [lr, #0x0] + str r1, [r0, #0x0] + ldr r12, [r4, #0x0] + ldr r0, _020B4F34 ; =0x04000470 + ldr r3, [r12, #0x0] + ldr r12, [r12, #0x4] + rsb r3, r3, #0x0 + str r3, [r0, #0x0] + rsb r3, r12, #0x0 + str r3, [r0, #0x0] + str r1, [r0, #0x0] + mov r0, #0x1 + str r0, [lr, #0x0] + ldr r0, [r2, #0x0] + ldr r5, [r0, #0x8] + mov r0, r5 + bl NNS_G2dIsImageReadyToUse + cmp r0, #0x0 + moveq r0, #0x0 + beq _020B4E98 + mov r0, r5 + mov r1, #0x0 + bl NNS_G2dGetImageLocation +_020B4E98: + ldr r1, _020B4F28 ; =pTheInstance_ + str r0, [r4, #0x14] + ldr r0, [r1, #0x0] + mov r1, #0x0 + ldr r5, [r0, #0xc] + mov r0, r5 + bl NNS_G2dIsImagePaletteReadyToUse + cmp r0, #0x0 + moveq r0, #0x0 + beq _020B4ECC + mov r0, r5 + mov r1, #0x0 + bl NNS_G2dGetImagePaletteLocation +_020B4ECC: + add sp, sp, #0x4 + str r0, [r4, #0x18] + ldmia sp!, {r4-r5,pc} +_020B4ED8: + ldr r4, [r4, #0x8] + mov r1, r5 + mov r0, r4 + bl NNS_G2dIsImageReadyToUse + cmp r0, #0x0 + moveq r1, #0x0 + beq _020B4F14 + mov r0, r4 + mov r1, r5 + bl NNS_G2dGetImageLocation + ldr r1, [r4, #0x20] + and r1, r1, #0x700000 + mov r1, r1, asr #0x14 + add r1, r1, #0x5 + mov r1, r0, lsr r1 +_020B4F14: + ldr r0, _020B4F28 ; =pTheInstance_ + ldr r0, [r0, #0x0] + str r1, [r0, #0x10] + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + .balign 4 +_020B4F28: .word pTheInstance_ +_020B4F2C: .word 0x04000440 +_020B4F30: .word 0x04000444 +_020B4F34: .word 0x04000470 + arm_func_end NNS_G2dRndCoreBeginRendering + + arm_func_start NNS_G2dSetRndCoreFlipMode +NNS_G2dSetRndCoreFlipMode: ; 0x020B4F38 + cmp r1, #0x0 + ldrne r1, [r0, #0x24] + orrne r1, r1, #0x1 + strne r1, [r0, #0x24] + ldreq r1, [r0, #0x24] + biceq r1, r1, #0x1 + streq r1, [r0, #0x24] + cmp r2, #0x0 + ldrne r1, [r0, #0x24] + orrne r1, r1, #0x2 + strne r1, [r0, #0x24] + ldreq r1, [r0, #0x24] + biceq r1, r1, #0x2 + streq r1, [r0, #0x24] + bx lr + arm_func_end NNS_G2dSetRndCoreFlipMode + + arm_func_start NNS_G2dIsRndCoreFlipV +NNS_G2dIsRndCoreFlipV: ; 0x020B4F74 + ldr r0, [r0, #0x24] + ands r0, r0, #0x2 + movne r0, #0x1 + moveq r0, #0x0 + bx lr + arm_func_end NNS_G2dIsRndCoreFlipV + + arm_func_start NNS_G2dIsRndCoreFlipH +NNS_G2dIsRndCoreFlipH: ; 0x020B4F88 + ldr r0, [r0, #0x24] + ands r0, r0, #0x1 + movne r0, #0x1 + moveq r0, #0x0 + bx lr + arm_func_end NNS_G2dIsRndCoreFlipH + + arm_func_start NNS_G2dSetRndCoreSurface +NNS_G2dSetRndCoreSurface: ; 0x020B4F9C + str r1, [r0, #0x0] + bx lr + arm_func_end NNS_G2dSetRndCoreSurface + + arm_func_start NNS_G2dSetRndCore3DSoftSpriteZvalue +NNS_G2dSetRndCore3DSoftSpriteZvalue: ; 0x020B4FA4 + str r1, [r0, #0x34] + bx lr + arm_func_end NNS_G2dSetRndCore3DSoftSpriteZvalue + + arm_func_start NNS_G2dSetRndCoreCurrentMtx2D +NNS_G2dSetRndCoreCurrentMtx2D: ; 0x020B4FAC + ldr r2, _020B4FC0 ; =pTheInstance_ + ldr r2, [r2, #0x0] + str r0, [r2, #0x2c] + str r1, [r2, #0x28] + bx lr + .balign 4 +_020B4FC0: .word pTheInstance_ + arm_func_end NNS_G2dSetRndCoreCurrentMtx2D + + arm_func_start NNS_G2dSetRndCoreCurrentMtx3D +NNS_G2dSetRndCoreCurrentMtx3D: ; 0x020B4FC4 + ldr r1, _020B5028 ; =pTheInstance_ + mov r3, #0x0 + ldr r12, [r1, #0x0] + mov r1, #0x1000 + str r0, [r12, #0x2c] + ldr r2, [r0, #0x0] + str r2, [r12, #0x40] + ldr r2, [r0, #0x4] + str r2, [r12, #0x44] + str r3, [r12, #0x48] + ldr r2, [r0, #0x8] + str r2, [r12, #0x4c] + ldr r2, [r0, #0xc] + str r2, [r12, #0x50] + str r3, [r12, #0x54] + str r3, [r12, #0x58] + str r3, [r12, #0x5c] + str r1, [r12, #0x60] + ldr r1, [r0, #0x10] + str r1, [r12, #0x64] + ldr r0, [r0, #0x14] + str r0, [r12, #0x68] + ldr r0, [r12, #0x34] + str r0, [r12, #0x6c] + bx lr + .balign 4 +_020B5028: .word pTheInstance_ + arm_func_end NNS_G2dSetRndCoreCurrentMtx3D + + arm_func_start NNS_G2dSetRndCoreAffineOverwriteMode +NNS_G2dSetRndCoreAffineOverwriteMode: ; 0x020B502C + str r1, [r0, #0x4] + bx lr + arm_func_end NNS_G2dSetRndCoreAffineOverwriteMode + + arm_func_start NNS_G2dSetRndCoreOamRegisterFunc +NNS_G2dSetRndCoreOamRegisterFunc: ; 0x020B5034 + str r1, [r0, #0x1c] + str r2, [r0, #0x20] + bx lr + arm_func_end NNS_G2dSetRndCoreOamRegisterFunc + + arm_func_start NNS_G2dSetRndCoreImageProxy +NNS_G2dSetRndCoreImageProxy: ; 0x020B5040 + str r1, [r0, #0x8] + str r2, [r0, #0xc] + bx lr + arm_func_end NNS_G2dSetRndCoreImageProxy + + arm_func_start NNS_G2dInitRndCore +NNS_G2dInitRndCore: ; 0x020B504C + stmdb sp!, {r4,lr} + mov r4, r0 + mov r1, r4 + mov r0, #0x0 + mov r2, #0x70 + bl MIi_CpuClear16 + mov r1, #0x0 + str r1, [r4, #0x0] + mov r0, #0x2 + str r0, [r4, #0x4] + str r1, [r4, #0x8] + str r1, [r4, #0xc] + str r1, [r4, #0x24] + mov r0, #0x1 + str r0, [r4, #0x30] + str r1, [r4, #0x28] + ldmia sp!, {r4,pc} + arm_func_end NNS_G2dInitRndCore + + arm_func_start DrawCellToSurface3D_ +DrawCellToSurface3D_: ; 0x020B5090 + stmdb sp!, {r4-r10,lr} + ldr r5, _020B5158 ; =pTheInstance_ + mov r9, r1 + ldrh r1, [r9, #0x0] + ldr r2, [r5, #0x0] + mov r10, r0 + add r7, r2, #0x38 + mov r8, #0x0 + cmp r1, #0x0 + ldmlsia sp!, {r4-r10,pc} + mov r6, #0x1 + mov r4, #0x6 +_020B50C0: + mul r1, r8, r4 + ldr r0, [r5, #0x0] + str r6, [r0, #0x30] + ldr r2, [r9, #0x4] + ldrh r0, [r2, r1] + add r1, r2, r1 + strh r0, [r7, #0x0] + ldrh r0, [r1, #0x2] + strh r0, [r7, #0x2] + ldrh r0, [r1, #0x4] + strh r0, [r7, #0x4] + ldr r3, [r10, #0x20] + cmp r3, #0x0 + beq _020B5108 + ldr r0, [r5, #0x0] + mov r1, r9 + mov r2, r8 + blx r3 +_020B5108: + ldr r0, [r5, #0x0] + ldr r0, [r0, #0x30] + cmp r0, #0x0 + beq _020B5120 + mov r0, r7 + bl DrawOamToSurface3D_ +_020B5120: + ldr r3, [r10, #0x24] + cmp r3, #0x0 + beq _020B513C + ldr r0, [r5, #0x0] + mov r1, r9 + mov r2, r8 + blx r3 +_020B513C: + add r0, r8, #0x1 + mov r0, r0, lsl #0x10 + ldrh r1, [r9, #0x0] + mov r8, r0, lsr #0x10 + cmp r8, r1 + blo _020B50C0 + ldmia sp!, {r4-r10,pc} + .balign 4 +_020B5158: .word pTheInstance_ + arm_func_end DrawCellToSurface3D_ + + arm_func_start DrawOamToSurface3D_ +DrawOamToSurface3D_: ; 0x020B515C + stmdb sp!, {r4-r8,lr} + sub sp, sp, #0x10 + ldr r1, _020B53A4 ; =pTheInstance_ + mov r7, r0 + ldr r0, [r1, #0x0] + add r0, r0, #0x40 + bl G3_LoadMtx43 + ldr r0, _020B53A4 ; =pTheInstance_ + ldr r0, [r0, #0x0] + ldr r1, [r0, #0x24] + cmp r1, #0x0 + beq _020B533C + ldr r2, [r7, #0x0] + ldr r1, _020B53A8 ; =0xC000C000 + and r4, r2, r1 + bl NNS_G2dIsRndCoreFlipH + cmp r0, #0x0 + beq _020B51F4 + ldr r0, [r7, #0x0] + and r2, r4, #0xc000 + mov r0, r0, lsl #0x7 + mov r3, r0, lsr #0x17 + and r1, r4, #0xc0000000 + mov r1, r1, lsr #0x1e + ldr r0, _020B53AC ; =NNSi_objSizeWTbl + mov r2, r2, asr #0xe + mov r1, r1, lsl #0x1 + add r0, r0, r2, lsl #0x3 + cmp r3, #0xff + ldrh r1, [r1, r0] + orrgt r0, r3, #0xff00 + movgt r0, r0, lsl #0x10 + movgt r3, r0, asr #0x10 + add r0, r3, r1 + rsb r0, r0, #0x0 + mov r0, r0, lsl #0x10 + mov r1, r0, lsr #0x10 + b _020B5218 +_020B51F4: + ldr r0, [r7, #0x0] + mov r0, r0, lsl #0x7 + mov r0, r0, lsr #0x17 + cmp r0, #0xff + orrgt r0, r0, #0xff00 + movgt r0, r0, lsl #0x10 + movgt r0, r0, asr #0x10 + mov r0, r0, lsl #0x10 + mov r1, r0, lsr #0x10 +_020B5218: + ldr r0, _020B53A4 ; =pTheInstance_ + mov r1, r1, lsl #0x10 + ldr r0, [r0, #0x0] + mov r6, r1, asr #0x10 + bl NNS_G2dIsRndCoreFlipV + cmp r0, #0x0 + beq _020B527C + and r1, r4, #0xc000 + and r0, r4, #0xc0000000 + ldrb r4, [r7, #0x0] + ldr r2, _020B53B0 ; =NNSi_objSizeHTbl + mov r0, r0, lsr #0x1e + mov r3, r1, asr #0xe + mov r1, r0, lsl #0x1 + add r0, r2, r3, lsl #0x3 + cmp r4, #0x7f + ldrh r1, [r1, r0] + orrgt r0, r4, #0xff00 + movgt r0, r0, lsl #0x10 + movgt r4, r0, asr #0x10 + add r0, r4, r1 + rsb r0, r0, #0x0 + mov r0, r0, lsl #0x10 + mov r4, r0, lsr #0x10 + b _020B5298 +_020B527C: + ldrb r0, [r7, #0x0] + cmp r0, #0x7f + orrgt r0, r0, #0xff00 + movgt r0, r0, lsl #0x10 + movgt r0, r0, asr #0x10 + mov r0, r0, lsl #0x10 + mov r4, r0, lsr #0x10 +_020B5298: + ldr r0, _020B53A4 ; =pTheInstance_ + ldr r1, [r7, #0x0] + ldr r0, [r0, #0x0] + mov r5, r1, lsl #0x3 + bl NNS_G2dIsRndCoreFlipH + ldr r2, [r7, #0x0] + ldr r1, _020B53A4 ; =pTheInstance_ + eor r5, r0, r5, lsr #0x1f + ldr r0, [r1, #0x0] + mov r8, r2, lsl #0x2 + bl NNS_G2dIsRndCoreFlipV + ldr r2, [r7, #0x0] + eor r1, r0, r8, lsr #0x1f + bic r0, r2, #0x10000000 + str r0, [r7, #0x0] + ldr r2, [r7, #0x0] + ldr r3, _020B53A4 ; =pTheInstance_ + orr r2, r2, r5, lsl #0x1c + str r2, [r7, #0x0] + ldr r2, [r7, #0x0] + mov r0, r6 + bic r2, r2, #0x20000000 + str r2, [r7, #0x0] + ldr r5, [r7, #0x0] + mov r2, r4, lsl #0x10 + orr r1, r5, r1, lsl #0x1d + str r1, [r7, #0x0] + ldr r5, [r3, #0x0] + mov r1, r2, asr #0x10 + ldr r4, [r5, #0x8] + mov r3, r7 + add r2, r4, #0xc + str r2, [sp, #0x0] + ldr r4, [r5, #0x14] + mvn r2, #0x0 + str r4, [sp, #0x4] + ldr r4, [r5, #0x18] + str r4, [sp, #0x8] + bl NNS_G2dDrawOneOam3DDirectWithPosFast + add sp, sp, #0x10 + ldmia sp!, {r4-r8,pc} +_020B533C: + ldr r2, _020B53A4 ; =pTheInstance_ + ldr r0, [r7, #0x0] + ldr r5, [r2, #0x0] + mov r0, r0, lsl #0x7 + ldr r4, [r5, #0x8] + mov r0, r0, lsr #0x17 + cmp r0, #0xff + orrgt r0, r0, #0xff00 + movgt r0, r0, lsl #0x10 + ldrb r1, [r7, #0x0] + add r4, r4, #0xc + movgt r0, r0, asr #0x10 + str r4, [sp, #0x0] + ldr r4, [r5, #0x14] + cmp r1, #0x7f + orrgt r1, r1, #0xff00 + movgt r1, r1, lsl #0x10 + str r4, [sp, #0x4] + ldr r4, [r5, #0x18] + movgt r1, r1, asr #0x10 + mov r3, r7 + mvn r2, #0x0 + str r4, [sp, #0x8] + bl NNS_G2dDrawOneOam3DDirectWithPosFast + add sp, sp, #0x10 + ldmia sp!, {r4-r8,pc} + .balign 4 +_020B53A4: .word pTheInstance_ +_020B53A8: .word 0xC000C000 +_020B53AC: .word NNSi_objSizeWTbl +_020B53B0: .word NNSi_objSizeHTbl + arm_func_end DrawOamToSurface3D_ + + arm_func_start DrawCellToSurface2D_ +DrawCellToSurface2D_: ; 0x020B53B4 + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0x44 + ldr r2, _020B57B0 ; =pTheInstance_ + mov r10, r0 + ldr r0, [r2, #0x0] + mov r11, r1 + ldr r9, [r0, #0x2c] + ldr r1, _020B57B0 ; =pTheInstance_ + cmp r9, #0x0 + ldreq sb, _020B57B4 ; =mtxIdentity_ + ldr r3, [r1, #0x0] + ldr r4, [r9, #0x10] + str r4, [sp, #0x18] + ldr r2, [r9, #0x14] + str r2, [sp, #0x1c] + ldr r1, [r10, #0x0] + sub r1, r4, r1 + str r1, [sp, #0x18] + ldr r1, [r10, #0x4] + sub r1, r2, r1 + str r1, [sp, #0x1c] + ldr r2, [r3, #0x24] + ldr r1, [r3, #0x10] + cmp r2, #0x0 + str r1, [sp, #0x4] + bne _020B5430 + ldr r1, [r3, #0x28] + cmp r1, #0x0 + movne r1, #0x1 + strne r1, [sp, #0x0] + bne _020B5438 +_020B5430: + mov r1, #0x0 + str r1, [sp, #0x0] +_020B5438: + ldrh r1, [r11, #0x0] + add r7, r0, #0x38 + mov r8, #0x0 + cmp r1, #0x0 + addls sp, sp, #0x44 + ldmlsia sp!, {r4-r11,pc} + mov r0, #0x1 + ldr r4, _020B57B0 ; =pTheInstance_ + str r8, [sp, #0x14] + str r0, [sp, #0xc] +_020B5460: + ldr r2, [r4, #0x0] + ldr r0, [sp, #0xc] + mov r1, #0x6 + str r0, [r2, #0x30] + mul r0, r8, r1 + ldr r1, [r11, #0x4] + add r2, r1, r0 + ldrh r0, [r1, r0] + strh r0, [r7, #0x0] + ldrh r0, [r2, #0x2] + strh r0, [r7, #0x2] + ldrh r0, [r2, #0x4] + strh r0, [r7, #0x4] + ldr r3, [r10, #0x20] + cmp r3, #0x0 + beq _020B54B0 + ldr r0, [r4, #0x0] + mov r1, r11 + mov r2, r8 + blx r3 +_020B54B0: + ldr r0, [r4, #0x0] + ldr r0, [r0, #0x30] + cmp r0, #0x0 + beq _020B5790 + ldr r0, [sp, #0x0] + ldr r1, [r7, #0x4] + cmp r0, #0x0 + mov r0, #0x400 + rsb r0, r0, #0x0 + and r2, r1, r0 + ldr r0, [sp, #0x4] + mov r1, r1, lsl #0x16 + add r1, r0, r1, lsr #0x16 + ldr r0, _020B57B8 ; =0x000003FF + and r0, r1, r0 + orr r0, r2, r0 + str r0, [r7, #0x4] + beq _020B5600 + ldr r0, [r10, #0x14] + ldr lr, [r4, #0x0] + sub r1, r0, #0x1 + ldr r0, [r7, #0x0] + ldr r6, [lr, #0x28] + mov r2, r0, lsl #0x2 + mov r2, r2, lsr #0x1f + mov r2, r2, lsl #0x1 + mov r0, r0, lsl #0x3 + orr r5, r2, r0, lsr #0x1f + add r0, r6, r5, lsl #0x2 + add r0, r0, r1, lsl #0x1 + ldrh r1, [r0, #0x10] + ldr r0, _020B57BC ; =0x0000FFFF + str r1, [sp, #0x8] + cmp r1, r0 + bne _020B55CC + cmp r5, #0x0 + bne _020B5558 + ldr r1, [lr, #0x20] + mov r0, r6 + blx r1 + str r0, [sp, #0x8] + b _020B55B4 +_020B5558: + ands r0, r5, #0x1 + add r12, sp, #0x30 + ldmia r6, {r0-r3} + stmia r12, {r0-r3} + beq _020B5584 + ldr r1, [sp, #0x30] + ldr r0, [sp, #0x34] + rsb r1, r1, #0x0 + str r1, [sp, #0x30] + rsb r0, r0, #0x0 + str r0, [sp, #0x34] +_020B5584: + ands r0, r5, #0x2 + beq _020B55A4 + ldr r1, [sp, #0x38] + ldr r0, [sp, #0x3c] + rsb r1, r1, #0x0 + str r1, [sp, #0x38] + rsb r0, r0, #0x0 + str r0, [sp, #0x3c] +_020B55A4: + ldr r1, [lr, #0x20] + add r0, sp, #0x30 + blx r1 + str r0, [sp, #0x8] +_020B55B4: + ldr r1, [r10, #0x14] + add r0, r6, r5, lsl #0x2 + sub r1, r1, #0x1 + add r1, r0, r1, lsl #0x1 + ldr r0, [sp, #0x8] + strh r0, [r1, #0x10] +_020B55CC: + ldr r1, [r9, #0x0] + add r0, sp, #0x20 + str r1, [sp, #0x20] + ldr r2, [r9, #0x4] + mov r1, r7 + str r2, [sp, #0x24] + ldr r3, [r9, #0x8] + add r2, sp, #0x18 + str r3, [sp, #0x28] + ldr r3, [r9, #0xc] + str r3, [sp, #0x2c] + bl DoAffineTransforme_ + b _020B5750 +_020B5600: + ldr r0, _020B57C0 ; =0x0000FFFE + str r0, [sp, #0x8] + ldr r0, [r4, #0x0] + ldr r1, [r0, #0x24] + cmp r1, #0x0 + beq _020B5714 + ldr r2, [r7, #0x0] + ldr r1, _020B57C4 ; =0xC000C000 + mov r6, r2, lsl #0x3 + and r5, r2, r1 + bl NNS_G2dIsRndCoreFlipH + ldr r1, [r7, #0x0] + eor r6, r0, r6, lsr #0x1f + mov r1, r1, lsl #0x2 + ldr r0, [r4, #0x0] + str r1, [sp, #0x10] + bl NNS_G2dIsRndCoreFlipV + ldr r1, [sp, #0x10] + eor r0, r0, r1, lsr #0x1f + ldr r1, [r7, #0x0] + bic r1, r1, #0x10000000 + str r1, [r7, #0x0] + ldr r1, [r7, #0x0] + orr r1, r1, r6, lsl #0x1c + str r1, [r7, #0x0] + ldr r1, [r7, #0x0] + bic r1, r1, #0x20000000 + str r1, [r7, #0x0] + ldr r1, [r7, #0x0] + orr r0, r1, r0, lsl #0x1d + str r0, [r7, #0x0] + ldr r0, [r4, #0x0] + bl NNS_G2dIsRndCoreFlipH + cmp r0, #0x0 + beq _020B56D4 + and r1, r5, #0xc000 + mov r2, r1, asr #0xe + ldr r1, _020B57C8 ; =NNSi_objSizeWTbl + and r3, r5, #0xc0000000 + mov r3, r3, lsr #0x1e + add r2, r1, r2, lsl #0x3 + mov r3, r3, lsl #0x1 + ldr r0, [r7, #0x0] + ldr r1, _020B57CC ; =0xFE00FFFF + ldrh r2, [r3, r2] + and r1, r0, r1 + mov r0, r0, lsl #0x7 + add r0, r2, r0, lsr #0x17 + rsb r2, r0, #0x0 + ldr r0, _020B57D0 ; =0x000001FF + and r0, r2, r0 + orr r0, r1, r0, lsl #0x10 + str r0, [r7, #0x0] +_020B56D4: + ldr r0, [r4, #0x0] + bl NNS_G2dIsRndCoreFlipV + cmp r0, #0x0 + beq _020B5714 + and r1, r5, #0xc000 + mov r3, r1, asr #0xe + and r1, r5, #0xc0000000 + mov r1, r1, lsr #0x1e + mov r2, r1, lsl #0x1 + ldr r1, _020B57D4 ; =NNSi_objSizeHTbl + ldrb r0, [r7, #0x0] + add r1, r1, r3, lsl #0x3 + ldrh r1, [r2, r1] + add r0, r0, r1 + rsb r0, r0, #0x0 + strb r0, [r7, #0x0] +_020B5714: + ldr r2, [r7, #0x0] + ldr r0, _020B57CC ; =0xFE00FFFF + ldr r1, [sp, #0x18] + and r0, r2, r0 + mov r2, r2, lsl #0x7 + mov r2, r2, lsr #0x17 + add r2, r2, r1, asr #0xc + ldr r1, _020B57D0 ; =0x000001FF + and r1, r2, r1 + orr r0, r0, r1, lsl #0x10 + str r0, [r7, #0x0] + ldrb r1, [r7, #0x0] + ldr r0, [sp, #0x1c] + add r0, r1, r0, asr #0xc + strb r0, [r7, #0x0] +_020B5750: + ldr r3, [r4, #0x0] + ldr r1, [sp, #0x8] + ldr r2, [sp, #0x14] + ldr r3, [r3, #0x1c] + mov r0, r7 + blx r3 + cmp r0, #0x1 + addne sp, sp, #0x44 + ldmneia sp!, {r4-r11,pc} + ldr r3, [r10, #0x24] + cmp r3, #0x0 + beq _020B5790 + ldr r0, [r4, #0x0] + mov r1, r11 + mov r2, r8 + blx r3 +_020B5790: + add r0, r8, #0x1 + mov r0, r0, lsl #0x10 + mov r8, r0, lsr #0x10 + ldrh r0, [r11, #0x0] + cmp r8, r0 + blo _020B5460 + add sp, sp, #0x44 + ldmia sp!, {r4-r11,pc} + .balign 4 +_020B57B0: .word pTheInstance_ +_020B57B4: .word mtxIdentity_ +_020B57B8: .word 0x000003FF +_020B57BC: .word 0x0000FFFF +_020B57C0: .word 0x0000FFFE +_020B57C4: .word 0xC000C000 +_020B57C8: .word NNSi_objSizeWTbl +_020B57CC: .word 0xFE00FFFF +_020B57D0: .word 0x000001FF +_020B57D4: .word NNSi_objSizeHTbl + arm_func_end DrawCellToSurface2D_ + + arm_func_start DoAffineTransforme_ +DoAffineTransforme_: ; 0x020B57D8 + stmdb sp!, {r4-r8,lr} + sub sp, sp, #0x10 + ldr r4, [r1, #0x0] + ldr r3, _020B5A9C ; =0x01FF0000 + and r3, r4, r3 + mov r3, r3, lsr #0x10 + mov r3, r3, lsl #0x10 + mov r3, r3, asr #0x10 + cmp r3, #0xff + orrgt r3, r3, #0xff00 + movgt r3, r3, lsl #0x10 + movgt r3, r3, asr #0x10 + mov r3, r3, lsl #0xc + str r3, [sp, #0x0] + ldr r3, [r1, #0x0] + and r3, r3, #0xff + mov r3, r3, lsl #0x10 + mov r3, r3, asr #0x10 + cmp r3, #0x7f + orrgt r3, r3, #0xff00 + movgt r3, r3, lsl #0x10 + movgt r3, r3, asr #0x10 + mov r3, r3, lsl #0xc + str r3, [sp, #0x4] + ldr r5, [r1, #0x0] + and r4, r5, #0x300 + cmp r4, #0x100 + beq _020B5858 + cmp r4, #0x300 + beq _020B5858 + and r3, r5, #0x30000000 + orr r4, r4, r3 +_020B5858: + cmp r4, #0x300 + bne _020B58AC + ldr r3, _020B5AA0 ; =0xC000C000 + ldr r4, _020B5AA4 ; =NNSi_objSizeWTbl + and r3, r5, r3 + and r5, r3, #0xc0000000 + and r3, r3, #0xc000 + mov r6, r5, lsr #0x1e + mov r5, r3, asr #0xe + ldr r3, _020B5AA8 ; =NNSi_objSizeHTbl + mov r6, r6, lsl #0x1 + add r4, r4, r5, lsl #0x3 + add r3, r3, r5, lsl #0x3 + ldrh r5, [r6, r4] + ldr r7, [sp, #0x0] + ldrh r3, [r6, r3] + ldr r4, [sp, #0x4] + add r5, r7, r5, lsl #0xb + add r3, r4, r3, lsl #0xb + str r5, [sp, #0x0] + str r3, [sp, #0x4] +_020B58AC: + ldr r5, [r0, #0x8] + ldr r4, [sp, #0x4] + add r3, sp, #0x0 + smull r8, r7, r5, r4 + cmp r3, r3 + ldr r6, [r0, #0x0] + mov r4, #0x1000 + addeq r3, sp, #0x8 + adds r8, r8, r4 + ldr r5, [sp, #0x0] + adc r7, r7, #0x0 + smlal r8, r7, r6, r5 + mov r5, r8, lsr #0xc + orr r5, r5, r7, lsl #0x14 + str r5, [r3, #0x0] + ldr r7, [r0, #0xc] + ldr r6, [sp, #0x4] + ldr r5, [r0, #0x4] + smull r8, r6, r7, r6 + adds r7, r8, r4 + ldr r4, [sp, #0x0] + adc r6, r6, #0x0 + smlal r7, r6, r5, r4 + mov r5, r7, lsr #0xc + add r4, sp, #0x8 + orr r5, r5, r6, lsl #0x14 + str r5, [r3, #0x4] + cmp r3, r4 + ldreq r3, [sp, #0xc] + ldreq r4, [sp, #0x8] + streq r3, [sp, #0x4] + ldr r3, _020B5AAC ; =pTheInstance_ + streq r4, [sp, #0x0] + ldr r3, [r3, #0x0] + ldr r3, [r3, #0x4] + cmp r3, #0x0 + beq _020B597C + cmp r3, #0x2 + moveq r5, #0x300 + movne r5, #0x100 + cmp r5, #0x100 + ldreq r4, [r1, #0x0] + ldreq r3, _020B5AB0 ; =0xC1FFFCFF + andeq r3, r4, r3 + orreq r3, r3, r5 + streq r3, [r1, #0x0] + beq _020B597C + ldr r4, [r1, #0x0] + ldr r3, _020B5AB0 ; =0xC1FFFCFF + and r3, r4, r3 + orr r3, r3, r5 + str r3, [r1, #0x0] +_020B597C: + ldr r6, [r1, #0x0] + and r5, r6, #0x300 + cmp r5, #0x100 + beq _020B599C + cmp r5, #0x300 + beq _020B599C + and r3, r6, #0x30000000 + orr r5, r5, r3 +_020B599C: + ldr r3, _020B5AA0 ; =0xC000C000 + ldr r4, _020B5AA4 ; =NNSi_objSizeWTbl + and r3, r6, r3 + and r6, r3, #0xc0000000 + and r3, r3, #0xc000 + mov lr, r3, asr #0xe + mov r6, r6, lsr #0x1e + mov r3, r6, lsl #0x1 + add r4, r4, lr, lsl #0x3 + ldrh r4, [r3, r4] + ldr r6, [r0, #0x0] + ldr r8, _020B5AA8 ; =NNSi_objSizeHTbl + mov r12, r4, asr #0x1 + mov r4, r12, lsl #0xc + rsb r7, r4, #0x0 + mla r7, r6, r12, r7 + add lr, r8, lr, lsl #0x3 + ldrh r3, [r3, lr] + ldr r6, [r0, #0x8] + ldr lr, [sp, #0x0] + mov r3, r3, asr #0x1 + mla r7, r6, r3, r7 + add r6, lr, r7 + str r6, [sp, #0x0] + mov lr, r3, lsl #0xc + ldr r6, [r0, #0x4] + rsb r7, lr, #0x0 + mla r7, r6, r12, r7 + ldr r0, [r0, #0xc] + ldr r6, [sp, #0x4] + mla r3, r0, r3, r7 + add r0, r6, r3 + str r0, [sp, #0x4] + cmp r5, #0x300 + moveq r0, #0x1 + movne r0, #0x0 + cmp r0, #0x0 + beq _020B5A4C + ldr r3, [sp, #0x0] + ldr r0, [sp, #0x4] + sub r3, r3, r4 + sub r0, r0, lr + str r3, [sp, #0x0] + str r0, [sp, #0x4] +_020B5A4C: + ldr r4, [sp, #0x0] + ldr r0, [r2, #0x0] + ldr r3, [sp, #0x4] + add r5, r4, r0 + str r5, [sp, #0x0] + ldr r2, [r2, #0x4] + ldr r0, _020B5AB4 ; =0x000001FF + add r2, r3, r2 + str r2, [sp, #0x4] + mov r3, r2, asr #0xc + ldr r4, [r1, #0x0] + ldr r2, _020B5AB8 ; =0xFE00FF00 + and r3, r3, #0xff + and r2, r4, r2 + and r4, r0, r5, asr #0xc + orr r0, r2, r3 + orr r0, r0, r4, lsl #0x10 + str r0, [r1, #0x0] + add sp, sp, #0x10 + ldmia sp!, {r4-r8,pc} + .balign 4 +_020B5A9C: .word 0x01FF0000 +_020B5AA0: .word 0xC000C000 +_020B5AA4: .word NNSi_objSizeWTbl +_020B5AA8: .word NNSi_objSizeHTbl +_020B5AAC: .word pTheInstance_ +_020B5AB0: .word 0xC1FFFCFF +_020B5AB4: .word 0x000001FF +_020B5AB8: .word 0xFE00FF00 + arm_func_end DoAffineTransforme_ diff --git a/arm9/asm/NNS_G2D_g2d_softsprite.s b/arm9/asm/NNS_G2D_g2d_softsprite.s new file mode 100644 index 00000000..49cddc88 --- /dev/null +++ b/arm9/asm/NNS_G2D_g2d_softsprite.s @@ -0,0 +1,129 @@ + .include "asm/macros.inc" + .include "global.inc" + + .section .text + + arm_func_start NNS_G2dDrawSpriteFast +NNS_G2dDrawSpriteFast: ; 0x020B0250 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + ldr r5, _020B02C0 ; =0x04000470 + mov r0, r0, lsl #0xc + str r0, [r5, #0x0] + mov r4, r1, lsl #0xc + ldr r12, [sp, #0x10] + ldr r0, [sp, #0x14] + ldr r1, [sp, #0x1c] + str r4, [r5, #0x0] + mov r4, r2, lsl #0xc + ldr r2, [sp, #0x18] + ldr lr, _020B02C4 ; =0x0400046C + str r4, [r5, #0x0] + mov r4, r3, lsl #0xc + ldr r3, [sp, #0x20] + str r4, [lr, #0x0] + mov r12, r12, lsl #0xc + str r12, [lr, #0x0] + mov r12, #0x1000 + mov r0, r0, lsl #0xc + mov r1, r1, lsl #0xc + mov r2, r2, lsl #0xc + mov r3, r3, lsl #0xc + str r12, [lr, #0x0] + bl DrawOneQuad_ + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + .balign 4 +_020B02C0: .word 0x04000470 +_020B02C4: .word 0x0400046C + arm_func_end NNS_G2dDrawSpriteFast + + arm_func_start NNS_G2dSetupSoftwareSpriteCamera +NNS_G2dSetupSoftwareSpriteCamera: ; 0x020B02C8 + stmdb sp!, {lr} + sub sp, sp, #0x14 + ldr r2, _020B0330 ; =0xBFFF0000 + ldr r0, _020B0334 ; =0x04000580 + mov r1, #0x400000 + str r2, [r0, #0x0] + rsb r0, r1, #0x0 + str r0, [sp, #0x0] + str r1, [sp, #0x4] + mov r0, #0x0 + str r1, [sp, #0x8] + mov r1, #0x1 + str r1, [sp, #0xc] + mov r2, r0 + mov r1, #0xc0000 + mov r3, #0x100000 + str r0, [sp, #0x10] + bl G3i_OrthoW_ + ldr r1, _020B0338 ; =0x0400044C + mov r2, #0x0 + ldr r0, _020B033C ; =0x04000440 + str r2, [r1, #0x0] + mov r1, #0x1 + str r1, [r0, #0x0] + add sp, sp, #0x14 + ldmia sp!, {pc} + .balign 4 +_020B0330: .word 0xBFFF0000 +_020B0334: .word 0x04000580 +_020B0338: .word 0x0400044C +_020B033C: .word 0x04000440 + arm_func_end NNS_G2dSetupSoftwareSpriteCamera + + arm_func_start DrawOneQuad_ +DrawOneQuad_: ; 0x020B0340 + stmdb sp!, {r4-r6,lr} + mov r3, r3, lsl #0x8 + mov r0, r0, lsl #0x8 + mov r4, r3, asr #0x10 + mov r3, r0, asr #0x10 + mov r0, r4, lsl #0x10 + mov r3, r3, lsl #0x10 + mov r1, r1, lsl #0x8 + mov r1, r1, asr #0x10 + mov r1, r1, lsl #0x10 + mov r2, r2, lsl #0x8 + mov r2, r2, asr #0x10 + mov r2, r2, lsl #0x10 + ldr ip, _020B03F4 ; =0x04000500 + mov lr, #0x1 + mov r6, r0, lsr #0x10 + mov r5, r3, lsr #0x10 + mov r3, r1, lsr #0x10 + mov r1, r2, lsr #0x10 + ldr r4, _020B03F8 ; =0x04000488 + str lr, [r12, #0x0] + orr r0, r5, r6, lsl #0x10 + ldr lr, _020B03FC ; =0x0400048C + str r0, [r4, #0x0] + mov r0, #0x10000000 + str r0, [lr, #0x0] + mov r12, #0x0 + str r12, [lr, #0x0] + orr r2, r3, r6, lsl #0x10 + ldr r0, _020B0400 ; =0x10001000 + str r2, [r4, #0x0] + str r0, [lr, #0x0] + str r12, [lr, #0x0] + orr r0, r3, r1, lsl #0x10 + str r0, [r4, #0x0] + mov r0, #0x1000 + str r0, [lr, #0x0] + str r12, [lr, #0x0] + orr r0, r5, r1, lsl #0x10 + str r0, [r4, #0x0] + str r12, [lr, #0x0] + ldr r0, _020B0404 ; =0x04000504 + str r12, [lr, #0x0] + str r12, [r0, #0x0] + ldmia sp!, {r4-r6,pc} + .balign 4 +_020B03F4: .word 0x04000500 +_020B03F8: .word 0x04000488 +_020B03FC: .word 0x0400048C +_020B0400: .word 0x10001000 +_020B0404: .word 0x04000504 + arm_func_end DrawOneQuad_ diff --git a/arm9/asm/NNS_G2D_g2d_srtcontrol.s b/arm9/asm/NNS_G2D_g2d_srtcontrol.s new file mode 100644 index 00000000..7c9139ef --- /dev/null +++ b/arm9/asm/NNS_G2D_g2d_srtcontrol.s @@ -0,0 +1,62 @@ + .include "asm/macros.inc" + .include "global.inc" + + .section .text + + arm_func_start NNSi_G2dSrtcSetInitialValue +NNSi_G2dSrtcSetInitialValue: ; 0x020B1A40 + stmdb sp!, {r4,lr} + mov r4, r0 + add r1, r4, #0x4 + mov r0, #0x0 + mov r2, #0x18 + bl MIi_CpuClear16 + mov r0, #0x1000 + str r0, [r4, #0x4] + str r0, [r4, #0x8] + ldmia sp!, {r4,pc} + arm_func_end NNSi_G2dSrtcSetInitialValue + + arm_func_start NNSi_G2dSrtcInitControl +NNSi_G2dSrtcInitControl: ; 0x020B1A68 + ldr ip, _020B1A74 ; =NNSi_G2dSrtcSetInitialValue + str r1, [r0, #0x0] + bx r12 + .balign 4 +_020B1A74: .word NNSi_G2dSrtcSetInitialValue + arm_func_end NNSi_G2dSrtcInitControl + + arm_func_start NNSi_G2dSrtcSetSRTScale +NNSi_G2dSrtcSetSRTScale: ; 0x020B1A78 + ldr r3, [r0, #0x0] + cmp r3, #0x1 + ldreqh r3, [r0, #0x12] + orreq r3, r3, #0x2 + streqh r3, [r0, #0x12] + streq r1, [r0, #0x4] + streq r2, [r0, #0x8] + bx lr + arm_func_end NNSi_G2dSrtcSetSRTScale + + arm_func_start NNSi_G2dSrtcSetSRTRotZ +NNSi_G2dSrtcSetSRTRotZ: ; 0x020B1A98 + ldr r2, [r0, #0x0] + cmp r2, #0x1 + ldreqh r2, [r0, #0x12] + orreq r2, r2, #0x4 + streqh r2, [r0, #0x12] + streqh r1, [r0, #0x10] + bx lr + arm_func_end NNSi_G2dSrtcSetSRTRotZ + + arm_func_start NNSi_G2dSrtcSetTrans +NNSi_G2dSrtcSetTrans: ; 0x020B1AB4 + ldr r3, [r0, #0x0] + cmp r3, #0x1 + ldreqh r3, [r0, #0x12] + orreq r3, r3, #0x8 + streqh r3, [r0, #0x12] + streqh r1, [r0, #0xc] + streqh r2, [r0, #0xe] + bx lr + arm_func_end NNSi_G2dSrtcSetTrans diff --git a/arm9/asm/NNS_G2D_g2d_textcanvas.s b/arm9/asm/NNS_G2D_g2d_textcanvas.s new file mode 100644 index 00000000..95ebf85a --- /dev/null +++ b/arm9/asm/NNS_G2D_g2d_textcanvas.s @@ -0,0 +1,221 @@ + .include "asm/macros.inc" + .include "global.inc" + + .section .text + + arm_func_start NNSi_G2dTextCanvasDrawTextRect +NNSi_G2dTextCanvasDrawTextRect: ; 0x020B7168 + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0xc + ldr r12, [sp, #0x28] + mov r7, r0 + mov r6, r1 + mov r5, r2 + mov r4, r3 + ands r0, r12, #0x100 + beq _020B71AC + ldr r0, [r7, #0x4] + ldr r1, [r7, #0xc] + ldr r2, [sp, #0x2c] + bl NNSi_G2dFontGetTextHeight + ldr r1, [sp, #0x20] + sub r0, r1, r0 + add r5, r5, r0 + b _020B71E4 +_020B71AC: + ands r0, r12, #0x80 + beq _020B71E4 + ldr r0, [r7, #0x4] + ldr r1, [r7, #0xc] + ldr r2, [sp, #0x2c] + bl NNSi_G2dFontGetTextHeight + ldr r2, [sp, #0x20] + add r1, r0, #0x1 + add r0, r2, #0x1 + add r0, r0, r0, lsr #0x1f + mov r2, r0, asr #0x1 + add r0, r1, r1, lsr #0x1f + sub r0, r2, r0, asr #0x1 + add r5, r5, r0 +_020B71E4: + ldr r1, [sp, #0x24] + ldr r0, [sp, #0x28] + str r1, [sp, #0x0] + ldr r12, [sp, #0x2c] + str r0, [sp, #0x4] + mov r0, r7 + mov r1, r6 + mov r2, r5 + mov r3, r4 + str r12, [sp, #0x8] + bl NNSi_G2dTextCanvasDrawTextAlign + add sp, sp, #0xc + ldmia sp!, {r4-r7,pc} + arm_func_end NNSi_G2dTextCanvasDrawTextRect + + arm_func_start NNSi_G2dTextCanvasDrawText +NNSi_G2dTextCanvasDrawText: ; 0x020B7218 + stmdb sp!, {r4-r8,lr} + sub sp, sp, #0x18 + ldr r4, [sp, #0x34] + mov r8, r0 + str r4, [sp, #0x0] + mov r7, r1 + mov r6, r2 + mov r5, r3 + ldr r4, [sp, #0x30] + ldr r1, [r8, #0x4] + ldr r2, [r8, #0x8] + ldr r3, [r8, #0xc] + add r0, sp, #0xc + bl NNSi_G2dFontGetTextRect + ands r0, r4, #0x10 + ldrne r0, [sp, #0xc] + addne r0, r0, #0x1 + addne r0, r0, r0, lsr #0x1f + subne r7, r7, r0, asr #0x1 + bne _020B7274 + ands r0, r4, #0x20 + ldrne r0, [sp, #0xc] + subne r7, r7, r0 +_020B7274: + ands r0, r4, #0x2 + ldrne r0, [sp, #0x10] + addne r0, r0, #0x1 + addne r0, r0, r0, lsr #0x1f + subne r6, r6, r0, asr #0x1 + bne _020B7298 + ands r0, r4, #0x4 + ldrne r0, [sp, #0x10] + subne r6, r6, r0 +_020B7298: + str r5, [sp, #0x0] + ldr r0, [sp, #0x34] + str r4, [sp, #0x4] + str r0, [sp, #0x8] + ldr r3, [sp, #0xc] + mov r0, r8 + mov r1, r7 + mov r2, r6 + bl NNSi_G2dTextCanvasDrawTextAlign + add sp, sp, #0x18 + ldmia sp!, {r4-r8,pc} + arm_func_end NNSi_G2dTextCanvasDrawText + + arm_func_start NNSi_G2dTextCanvasDrawTextAlign +NNSi_G2dTextCanvasDrawTextAlign: ; 0x020B72C4 + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0x14 + mov r10, r0 + ldr r4, [r10, #0x4] + ldr r0, [sp, #0x40] + ldr r4, [r4, #0x0] + ldr r5, [r10, #0xc] + ldrsb r4, [r4, #0x1] + cmp r0, #0x0 + mov r9, r1 + str r0, [sp, #0xc] + ldr r0, [sp, #0x38] + mov r8, r2 + str r0, [sp, #0x38] + mov r7, r3 + add r6, r5, r4 + addeq sp, sp, #0x14 + ldmeqia sp!, {r4-r11,pc} + add r0, r7, #0x1 + ldr r1, [sp, #0x3c] + add r0, r0, r0, lsr #0x1f + mov r0, r0, asr #0x1 + and r5, r1, #0x800 + and r11, r1, #0x400 + str r0, [sp, #0x8] + mov r4, #0x0 +_020B732C: + mov r1, r9 + cmp r5, #0x0 + beq _020B7358 + ldr r0, [r10, #0x4] + ldr r1, [r10, #0x8] + ldr r2, [sp, #0xc] + mov r3, r4 + bl NNSi_G2dFontGetStringWidth + sub r0, r7, r0 + add r1, r9, r0 + b _020B7388 +_020B7358: + cmp r11, #0x0 + beq _020B7388 + ldr r0, [r10, #0x4] + ldr r1, [r10, #0x8] + ldr r2, [sp, #0xc] + mov r3, r4 + bl NNSi_G2dFontGetStringWidth + add r0, r0, #0x1 + add r1, r0, r0, lsr #0x1f + ldr r0, [sp, #0x8] + sub r0, r0, r1, asr #0x1 + add r1, r9, r0 +_020B7388: + ldr r2, [sp, #0xc] + add r3, sp, #0xc + str r2, [sp, #0x0] + str r3, [sp, #0x4] + ldr r3, [sp, #0x38] + mov r0, r10 + mov r2, r8 + bl NNSi_G2dTextCanvasDrawString + ldr r0, [sp, #0xc] + add r8, r8, r6 + cmp r0, #0x0 + bne _020B732C + add sp, sp, #0x14 + ldmia sp!, {r4-r11,pc} + arm_func_end NNSi_G2dTextCanvasDrawTextAlign + + arm_func_start NNSi_G2dTextCanvasDrawString +NNSi_G2dTextCanvasDrawString: ; 0x020B73C0 + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0xc + mov r10, r0 + ldr r6, [r10, #0x8] + ldr r5, [r10, #0x4] + ldr r4, [sp, #0x30] + add r0, sp, #0x8 + str r4, [sp, #0x8] + ldr r4, [r5, #0x4] + mov r9, r1 + mov r8, r2 + mov r7, r3 + blx r4 + cmp r0, #0x0 + beq _020B743C + add r11, sp, #0x8 +_020B7400: + cmp r0, #0xa + beq _020B743C + str r7, [sp, #0x0] + str r0, [sp, #0x4] + ldr r0, [r10, #0x0] + mov r1, r5 + mov r2, r9 + mov r3, r8 + bl NNS_G2dCharCanvasDrawChar + add r1, r9, r0 + mov r0, r11 + add r9, r1, r6 + blx r4 + cmp r0, #0x0 + bne _020B7400 +_020B743C: + ldr r1, [sp, #0x34] + cmp r1, #0x0 + addeq sp, sp, #0xc + ldmeqia sp!, {r4-r11,pc} + cmp r0, #0xa + ldreq r1, [sp, #0x8] + ldr r0, [sp, #0x34] + movne r1, #0x0 + str r1, [r0, #0x0] + add sp, sp, #0xc + ldmia sp!, {r4-r11,pc} + arm_func_end NNSi_G2dTextCanvasDrawString diff --git a/arm9/asm/NNS_G2D_g2di_bitreader.s b/arm9/asm/NNS_G2D_g2di_bitreader.s new file mode 100644 index 00000000..d36c774f --- /dev/null +++ b/arm9/asm/NNS_G2D_g2di_bitreader.s @@ -0,0 +1,35 @@ + .include "asm/macros.inc" + .include "global.inc" + + .section .text + + arm_func_start NNSi_G2dBitReaderRead +NNSi_G2dBitReaderRead: ; 0x020B76B0 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + ldrsb r2, [r0, #0x4] + ldrb r12, [r0, #0x5] + mov r4, r1 + cmp r2, r4 + subge r1, r2, r4 + movge r5, r12, lsr r1 + strgeb r1, [r0, #0x4] + bge _020B7704 + ldr r3, [r0, #0x0] + sub r1, r4, r2 + add r2, r3, #0x1 + str r2, [r0, #0x0] + ldrb r2, [r3, #0x0] + mov r5, r12, lsl r1 + strb r2, [r0, #0x5] + mov r2, #0x8 + strb r2, [r0, #0x4] + bl NNSi_G2dBitReaderRead + orr r5, r0, r5 +_020B7704: + rsb r0, r4, #0x8 + mov r1, #0xff + and r0, r5, r1, asr r0 + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + arm_func_end NNSi_G2dBitReaderRead diff --git a/arm9/asm/NNS_G2D_g2di_mtx32.s b/arm9/asm/NNS_G2D_g2di_mtx32.s new file mode 100644 index 00000000..68fa5831 --- /dev/null +++ b/arm9/asm/NNS_G2D_g2di_mtx32.s @@ -0,0 +1,79 @@ + .include "asm/macros.inc" + .include "global.inc" + + .section .text + + arm_func_start NNSi_G2dMtxConcat32 +NNSi_G2dMtxConcat32: ; 0x020B423C + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x1c + ldr r4, [r0, #0x4] + ldr r3, [r1, #0x8] + mov r12, r2 + smull r6, r5, r4, r3 + ldr r4, [r0, #0x0] + ldr r3, [r1, #0x0] + cmp r12, r1 + smlal r6, r5, r4, r3 + mov r3, r6, lsr #0xc + addeq r2, sp, #0x0 + orr r3, r3, r5, lsl #0x14 + str r3, [r2, #0x0] + ldr r4, [r0, #0x4] + ldr r3, [r1, #0xc] + ldr r5, [r0, #0x0] + smull r7, r6, r4, r3 + ldr r3, [r1, #0x4] + add lr, sp, #0x0 + smlal r7, r6, r5, r3 + mov r3, r7, lsr #0xc + orr r3, r3, r6, lsl #0x14 + str r3, [r2, #0x4] + ldr r4, [r0, #0xc] + ldr r3, [r1, #0x8] + ldr r5, [r0, #0x8] + smull r7, r6, r4, r3 + ldr r3, [r1, #0x0] + cmp r2, lr + smlal r7, r6, r5, r3 + mov r3, r7, lsr #0xc + orr r3, r3, r6, lsl #0x14 + str r3, [r2, #0x8] + ldr r4, [r0, #0xc] + ldr r3, [r1, #0xc] + ldr r5, [r0, #0x8] + smull r7, r6, r4, r3 + ldr r3, [r1, #0x4] + smlal r7, r6, r5, r3 + mov r3, r7, lsr #0xc + orr r3, r3, r6, lsl #0x14 + str r3, [r2, #0xc] + ldr r4, [r0, #0x14] + ldr r3, [r1, #0x8] + ldr r5, [r0, #0x10] + smull r7, r6, r4, r3 + ldr r3, [r1, #0x0] + ldr r4, [r1, #0x10] + smlal r7, r6, r5, r3 + mov r3, r7, lsr #0xc + orr r3, r3, r6, lsl #0x14 + add r3, r4, r3 + str r3, [r2, #0x10] + ldr r4, [r0, #0x14] + ldr r3, [r1, #0xc] + ldr r5, [r0, #0x10] + ldr r0, [r1, #0x4] + smull r6, r3, r4, r3 + smlal r6, r3, r5, r0 + mov r0, r6, lsr #0xc + ldr r1, [r1, #0x14] + orr r0, r0, r3, lsl #0x14 + add r0, r1, r0 + str r0, [r2, #0x14] + ldmeqia lr!, {r0-r3} + stmeqia r12!, {r0-r3} + ldmeqia lr, {r0-r1} + stmeqia r12, {r0-r1} + add sp, sp, #0x1c + ldmia sp!, {r4-r7,pc} + arm_func_end NNSi_G2dMtxConcat32 diff --git a/arm9/asm/NNS_G2D_g2di_splitchar.s b/arm9/asm/NNS_G2D_g2di_splitchar.s new file mode 100644 index 00000000..4df7621d --- /dev/null +++ b/arm9/asm/NNS_G2D_g2di_splitchar.s @@ -0,0 +1,13 @@ + .include "asm/macros.inc" + .include "global.inc" + + .section .text + + arm_func_start NNSi_G2dSplitCharUTF16 +NNSi_G2dSplitCharUTF16: ; 0x020B7718 + ldr r1, [r0, #0x0] + ldrh r2, [r1], #0x2 + str r1, [r0, #0x0] + mov r0, r2 + bx lr + arm_func_end NNSi_G2dSplitCharUTF16 diff --git a/arm9/asm/NNS_G3D_1mat1shp.s b/arm9/asm/NNS_G3D_1mat1shp.s new file mode 100644 index 00000000..01cb5a35 --- /dev/null +++ b/arm9/asm/NNS_G3D_1mat1shp.s @@ -0,0 +1,143 @@ + .include "asm/macros.inc" + .include "global.inc" + + .section .text + + arm_func_start NNS_G3dDraw1Mat1Shp +NNS_G3dDraw1Mat1Shp: ; 0x020BAFB8 + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x6c + mov r6, r0 + ldr r12, [r6, #0x1c] + mov r4, r1 + mov r5, r2 + mov r7, r3 + cmp r12, #0x1000 + beq _020BAFF8 + add r1, sp, #0x54 + mov r0, #0x1b + mov r2, #0x3 + str r12, [sp, #0x54] + str r12, [sp, #0x58] + str r12, [sp, #0x5c] + bl NNS_G3dGeBufferOP_N +_020BAFF8: + cmp r7, #0x0 + beq _020BB150 + ldr r0, [r6, #0x8] + add r3, r6, r0 + ldrh r0, [r3, #0xa] + add r2, r3, #0x4 + ldrh r1, [r2, r0] + add r0, r2, r0 + mla r0, r1, r4, r0 + ldr r0, [r0, #0x4] + add r4, r3, r0 + ldr r0, [r4, #0xc] + ands r0, r0, #0x1f0000 + addeq sp, sp, #0x6c + ldmeqia sp!, {r4-r7,pc} + ldr r0, _020BB1B4 ; =0x00293130 + str r0, [sp, #0x0] + ldr r0, [r4, #0x4] + str r0, [sp, #0x4] + ldr r0, [r4, #0x8] + str r0, [sp, #0x8] + ldr r1, [r4, #0xc] + str r1, [sp, #0xc] + ldrh r0, [r4, #0x1e] + ands r0, r0, #0x20 + bicne r0, r1, #0x1f0000 + ldr r1, _020BB1B8 ; =0x00002B2A + strne r0, [sp, #0xc] + str r1, [sp, #0x10] + ldr r2, [r4, #0x14] + ldr r0, [sp, #0x0] + str r2, [sp, #0x14] + ldrh r3, [r4, #0x1c] + add r1, sp, #0x4 + mov r2, #0x6 + str r3, [sp, #0x18] + bl NNS_G3dGeBufferOP_N + ldrh r0, [r4, #0x1e] + ands r0, r0, #0x1 + beq _020BB150 + ldrb r12, [r6, #0x16] + mov r3, #0x8 + ldr r1, _020BB1BC ; =NNS_G3dSendTexSRT_FuncArray + str r3, [sp, #0x1c] + ldrh r2, [r4, #0x20] + add r0, r4, #0x2c + ldr r1, [r1, r12, lsl #0x2] + strh r2, [sp, #0x48] + ldrh r2, [r4, #0x22] + strh r2, [sp, #0x4a] + ldr r2, [r4, #0x24] + str r2, [sp, #0x4c] + ldr r2, [r4, #0x28] + str r2, [sp, #0x50] + ldrh r2, [r4, #0x1e] + ands r2, r2, #0x2 + orrne r2, r3, #0x1 + strne r2, [sp, #0x1c] + bne _020BB0F8 + ldr r2, [r0, #0x0] + str r2, [sp, #0x34] + ldr r2, [r0, #0x4] + add r0, r0, #0x8 + str r2, [sp, #0x38] +_020BB0F8: + ldrh r2, [r4, #0x1e] + ands r2, r2, #0x4 + ldrne r2, [sp, #0x1c] + orrne r2, r2, #0x2 + strne r2, [sp, #0x1c] + bne _020BB124 + ldrsh r2, [r0, #0x0] + strh r2, [sp, #0x3c] + ldrsh r2, [r0, #0x2] + add r0, r0, #0x4 + strh r2, [sp, #0x3e] +_020BB124: + ldrh r2, [r4, #0x1e] + ands r2, r2, #0x8 + ldreq r2, [r0, #0x0] + streq r2, [sp, #0x40] + ldreq r0, [r0, #0x4] + streq r0, [sp, #0x44] + ldrne r0, [sp, #0x1c] + orrne r0, r0, #0x4 + strne r0, [sp, #0x1c] + add r0, sp, #0x1c + blx r1 +_020BB150: + ldr r0, [r6, #0xc] + add r2, r6, r0 + ldrh r0, [r2, #0x6] + ldrh r1, [r2, r0] + add r0, r2, r0 + mla r0, r1, r5, r0 + ldr r0, [r0, #0x4] + add r2, r2, r0 + ldr r0, [r2, #0x8] + ldr r1, [r2, #0xc] + add r0, r2, r0 + bl NNS_G3dGeSendDL + ldr r3, [r6, #0x20] + cmp r3, #0x1000 + addeq sp, sp, #0x6c + ldmeqia sp!, {r4-r7,pc} + add r1, sp, #0x60 + mov r0, #0x1b + mov r2, #0x3 + str r3, [sp, #0x60] + str r3, [sp, #0x64] + str r3, [sp, #0x68] + bl NNS_G3dGeBufferOP_N + add sp, sp, #0x6c + ldmia sp!, {r4-r7,pc} + .balign 4 +_020BB1B4: .word 0x00293130 +_020BB1B8: .word 0x00002B2A +_020BB1BC: .word NNS_G3dSendTexSRT_FuncArray + arm_func_end NNS_G3dDraw1Mat1Shp diff --git a/arm9/asm/NNS_G3D_3dsmax.s b/arm9/asm/NNS_G3D_3dsmax.s new file mode 100644 index 00000000..e54e2315 --- /dev/null +++ b/arm9/asm/NNS_G3D_3dsmax.s @@ -0,0 +1,466 @@ + .include "asm/macros.inc" + .include "global.inc" + + .section .data +calcTexMtx_: ; 0x021067D0 + .word texmtxCalc_flag_ + .word texmtxCalc_flagS_ + .word texmtxCalc_flagR_ + .word texmtxCalc_flagRS_ + .word texmtxCalc_flagT_ + .word texmtxCalc_flagTS_ + .word texmtxCalc_flagTR_ + .word texmtxCalc_flagTRS_ + + .section .text + + arm_func_start NNSi_G3dSendTexSRT3dsMax +NNSi_G3dSendTexSRT3dsMax: ; 0x020BF42C + stmdb sp!, {r4,lr} + sub sp, sp, #0x50 + mov r4, r0 + ldr r0, [r4, #0x0] + mov r1, #0x0 + ands r0, r0, #0x8 + ldrne r0, _020BF568 ; =0x00101610 + mov r3, #0x3 + strne r0, [sp, #0x0] + ldreq r0, _020BF56C ; =0x00101810 + mov r2, #0x2 + streq r0, [sp, #0x0] + mov r0, #0x1000 + str r0, [sp, #0x44] + str r3, [sp, #0x4] + str r2, [sp, #0x48] + str r1, [sp, #0x40] + str r1, [sp, #0x34] + str r1, [sp, #0x30] + str r1, [sp, #0x2c] + str r1, [sp, #0x28] + str r1, [sp, #0x24] + str r1, [sp, #0x20] + str r1, [sp, #0x14] + str r1, [sp, #0x10] + ldr r1, [r4, #0x0] + ldr r0, _020BF570 ; =calcTexMtx_ + and r1, r1, #0x7 + ldr r2, [r0, r1, lsl #0x2] + add r0, sp, #0x8 + mov r1, r4 + blx r2 + ldr r3, [r4, #0x30] + cmp r3, #0x1000 + beq _020BF4FC + ldr r0, [sp, #0x8] + ldr r1, [sp, #0xc] + smull r2, r0, r3, r0 + mov r2, r2, lsr #0xc + orr r2, r2, r0, lsl #0x14 + str r2, [sp, #0x8] + ldr r2, [r4, #0x30] + ldr r0, [sp, #0x38] + smull r3, r1, r2, r1 + mov r2, r3, lsr #0xc + orr r2, r2, r1, lsl #0x14 + str r2, [sp, #0xc] + ldr r1, [r4, #0x30] + smull r2, r0, r1, r0 + mov r1, r2, lsr #0xc + orr r1, r1, r0, lsl #0x14 + str r1, [sp, #0x38] +_020BF4FC: + ldr r3, [r4, #0x34] + cmp r3, #0x1000 + beq _020BF54C + ldr r0, [sp, #0x18] + ldr r1, [sp, #0x1c] + smull r2, r0, r3, r0 + mov r2, r2, lsr #0xc + orr r2, r2, r0, lsl #0x14 + str r2, [sp, #0x18] + ldr r2, [r4, #0x34] + ldr r0, [sp, #0x3c] + smull r3, r1, r2, r1 + mov r2, r3, lsr #0xc + orr r2, r2, r1, lsl #0x14 + str r2, [sp, #0x1c] + ldr r1, [r4, #0x34] + smull r2, r0, r1, r0 + mov r1, r2, lsr #0xc + orr r1, r1, r0, lsl #0x14 + str r1, [sp, #0x3c] +_020BF54C: + add r1, sp, #0x0 + ldr r0, [sp, #0x0] + add r1, r1, #0x4 + mov r2, #0x12 + bl NNS_G3dGeBufferOP_N + add sp, sp, #0x50 + ldmia sp!, {r4,pc} + .balign 4 +_020BF568: .word 0x00101610 +_020BF56C: .word 0x00101810 +_020BF570: .word calcTexMtx_ + arm_func_end NNSi_G3dSendTexSRT3dsMax + + local_arm_func_start texmtxCalc_flagTRS_ +texmtxCalc_flagTRS_: ; 0x020BF574 + mov r2, #0x1000 + str r2, [r0, #0x0] + mov r1, #0x0 + str r1, [r0, #0x4] + str r1, [r0, #0x10] + str r2, [r0, #0x14] + str r1, [r0, #0x30] + str r1, [r0, #0x34] + bx lr + arm_func_end texmtxCalc_flagTRS_ + + local_arm_func_start texmtxCalc_flagTR_ +texmtxCalc_flagTR_: ; 0x020BF598 + ldr r2, [r1, #0x18] + mov r12, #0x0 + str r2, [r0, #0x0] + ldr r2, [r1, #0x1c] + str r2, [r0, #0x14] + str r12, [r0, #0x4] + ldr r3, [r1, #0x18] + ldrh r2, [r1, #0x2c] + rsb r3, r3, #0x1000 + mul r2, r3, r2 + mov r2, r2, lsl #0x3 + str r2, [r0, #0x30] + ldr r2, [r1, #0x1c] + ldrh r1, [r1, #0x2e] + rsb r2, r2, #0x1000 + mul r1, r2, r1 + mov r1, r1, lsl #0x3 + str r1, [r0, #0x34] + str r12, [r0, #0x10] + bx lr + arm_func_end texmtxCalc_flagTR_ + + local_arm_func_start texmtxCalc_flagTS_ +texmtxCalc_flagTS_: ; 0x020BF5E8 + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + mov r5, r1 + ldrh r2, [r5, #0x2c] + ldrh r1, [r5, #0x2e] + mov r6, r0 + mov r4, r2, lsl #0xc + mov r7, r1, lsl #0xc + mov r0, r7 + mov r1, r4 + bl FX_DivAsync + ldrsh r0, [r5, #0x22] + str r0, [r6, #0x0] + ldrsh r0, [r5, #0x22] + str r0, [r6, #0x14] + bl FX_GetDivResult + ldrsh r2, [r5, #0x20] + mov r1, r7 + mul r0, r2, r0 + mov r2, r0, asr #0xc + mov r0, r4 + str r2, [r6, #0x4] + bl FX_DivAsync + ldrh r2, [r5, #0x2c] + ldrh r1, [r5, #0x2e] + ldrsh r4, [r5, #0x22] + rsb r0, r2, #0x0 + rsb r1, r1, #0x0 + mov r0, r0, lsl #0xb + ldrsh r3, [r5, #0x20] + mov r1, r1, lsl #0xb + smull r7, lr, r4, r0 + smull r12, r4, r3, r1 + subs r7, r7, r12 + sbc r3, lr, r4 + mov r4, r7, lsr #0x8 + orr r4, r4, r3, lsl #0x18 + add r2, r4, r2, lsl #0xf + str r2, [r6, #0x30] + ldrsh r2, [r5, #0x22] + ldrsh r3, [r5, #0x20] + ldrh r12, [r5, #0x2e] + smull r4, r1, r2, r1 + smlal r4, r1, r3, r0 + mov r0, r4, lsr #0x8 + orr r0, r0, r1, lsl #0x18 + add r0, r0, r12, lsl #0xf + str r0, [r6, #0x34] + bl FX_GetDivResult + ldrsh r1, [r5, #0x20] + rsb r1, r1, #0x0 + mul r0, r1, r0 + mov r0, r0, asr #0xc + str r0, [r6, #0x10] + add sp, sp, #0x4 + ldmia sp!, {r4-r7,pc} + arm_func_end texmtxCalc_flagTS_ + + local_arm_func_start texmtxCalc_flagT_ +texmtxCalc_flagT_: ; 0x020BF6C8 + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0x4 + mov r9, r1 + ldrh r2, [r9, #0x2c] + ldrh r1, [r9, #0x2e] + mov r10, r0 + mov r8, r2, lsl #0xc + mov r11, r1, lsl #0xc + mov r0, r11 + mov r1, r8 + bl FX_DivAsync + ldrsh r0, [r9, #0x22] + ldr r3, [r9, #0x18] + ldrsh r5, [r9, #0x20] + ldr r4, [r9, #0x1c] + smull r2, r1, r3, r0 + mov r7, r2, lsr #0xc + orr r7, r7, r1, lsl #0x14 + smull r2, r1, r3, r5 + mov r6, r2, lsr #0xc + orr r6, r6, r1, lsl #0x14 + smull r3, r2, r4, r0 + smull r1, r0, r4, r5 + mov r5, r3, lsr #0xc + orr r5, r5, r2, lsl #0x14 + mov r4, r1, lsr #0xc + orr r4, r4, r0, lsl #0x14 + str r7, [r10, #0x0] + str r5, [r10, #0x14] + bl FX_GetDivResult + mov r1, r11 + mul r0, r4, r0 + mov r0, r0, asr #0xc + str r0, [r10, #0x4] + mov r0, r8 + bl FX_DivAsync + ldrh r3, [r9, #0x2c] + ldrh r1, [r9, #0x2e] + rsb r0, r3, #0x0 + rsb r1, r1, #0x0 + mov r2, r1, lsl #0xb + mov r11, r0, lsl #0xb + smull r1, r0, r7, r11 + smull r8, r7, r5, r2 + smlal r8, r7, r4, r11 + mov r4, r8, lsr #0x8 + orr r4, r4, r7, lsl #0x18 + smull r5, r2, r6, r2 + subs r1, r1, r5 + sbc r0, r0, r2 + mov r1, r1, lsr #0x8 + orr r1, r1, r0, lsl #0x18 + add r0, r1, r3, lsl #0xf + str r0, [r10, #0x30] + ldrh r0, [r9, #0x2e] + add r0, r4, r0, lsl #0xf + str r0, [r10, #0x34] + bl FX_GetDivResult + rsb r1, r6, #0x0 + mul r0, r1, r0 + mov r0, r0, asr #0xc + str r0, [r10, #0x10] + add sp, sp, #0x4 + ldmia sp!, {r4-r11,pc} + arm_func_end texmtxCalc_flagT_ + + local_arm_func_start texmtxCalc_flagRS_ +texmtxCalc_flagRS_: ; 0x020BF7C8 + mov r2, #0x1000 + str r2, [r0, #0x0] + str r2, [r0, #0x14] + mov r12, #0x0 + str r12, [r0, #0x4] + ldr r3, [r1, #0x24] + ldrh r2, [r1, #0x2c] + rsb r3, r3, #0x0 + mul r2, r3, r2 + mov r2, r2, lsl #0x4 + str r2, [r0, #0x30] + ldrh r2, [r1, #0x2e] + ldr r1, [r1, #0x28] + mul r2, r1, r2 + mov r1, r2, lsl #0x4 + str r1, [r0, #0x34] + str r12, [r0, #0x10] + bx lr + arm_func_end texmtxCalc_flagRS_ + + local_arm_func_start texmtxCalc_flagR_ +texmtxCalc_flagR_: ; 0x020BF810 + stmdb sp!, {r4-r6,lr} + ldr r2, [r1, #0x18] + mov r3, #0x0 + str r2, [r0, #0x0] + ldr r2, [r1, #0x1c] + str r2, [r0, #0x14] + str r3, [r0, #0x4] + ldrh r5, [r1, #0x2c] + ldr r12, [r1, #0x24] + ldrh r2, [r1, #0x2e] + mul lr, r12, r5 + rsb r12, r5, #0x0 + mov r12, r12, lsl #0xb + ldr r4, [r1, #0x18] + sub r12, r12, lr + smull lr, r12, r4, r12 + ldr r6, [r1, #0x28] + mov r4, lr, lsr #0x8 + orr r4, r4, r12, lsl #0x18 + add r4, r4, r5, lsl #0xf + str r4, [r0, #0x30] + mul r4, r6, r2 + rsb r5, r2, #0x0 + ldr r2, [r1, #0x1c] + add r4, r4, r5, lsl #0xb + smull lr, r12, r2, r4 + mov r2, lr, lsr #0x8 + ldrh r1, [r1, #0x2e] + orr r2, r2, r12, lsl #0x18 + add r1, r2, r1, lsl #0xf + str r1, [r0, #0x34] + str r3, [r0, #0x10] + ldmia sp!, {r4-r6,pc} + arm_func_end texmtxCalc_flagR_ + + local_arm_func_start texmtxCalc_flagS_ +texmtxCalc_flagS_: ; 0x020BF894 + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + mov r5, r1 + ldrh r2, [r5, #0x2c] + ldrh r1, [r5, #0x2e] + mov r6, r0 + mov r4, r2, lsl #0xc + mov r7, r1, lsl #0xc + mov r0, r7 + mov r1, r4 + bl FX_DivAsync + ldrsh r0, [r5, #0x22] + str r0, [r6, #0x0] + ldrsh r0, [r5, #0x22] + str r0, [r6, #0x14] + bl FX_GetDivResult + ldrsh r2, [r5, #0x20] + mov r1, r7 + mul r0, r2, r0 + mov r2, r0, asr #0xc + mov r0, r4 + str r2, [r6, #0x4] + bl FX_DivAsync + ldrh r2, [r5, #0x2c] + ldrh r7, [r5, #0x2e] + ldr r1, [r5, #0x28] + ldr r0, [r5, #0x24] + rsb r4, r2, #0x0 + mul r3, r1, r7 + rsb r1, r7, #0x0 + add r1, r3, r1, lsl #0xb + ldrsh r3, [r5, #0x20] + mov r7, r4, lsl #0xb + mul r4, r0, r2 + sub r0, r7, r4 + ldrsh lr, [r5, #0x22] + smull r12, r4, r3, r1 + smull r7, r3, lr, r0 + subs r7, r7, r12 + sbc r3, r3, r4 + mov r4, r7, lsr #0x8 + orr r4, r4, r3, lsl #0x18 + add r2, r4, r2, lsl #0xf + str r2, [r6, #0x30] + ldrsh r2, [r5, #0x22] + ldrsh r3, [r5, #0x20] + ldrh r12, [r5, #0x2e] + smull r4, r1, r2, r1 + smlal r4, r1, r3, r0 + mov r0, r4, lsr #0x8 + orr r0, r0, r1, lsl #0x18 + add r0, r0, r12, lsl #0xf + str r0, [r6, #0x34] + bl FX_GetDivResult + ldrsh r1, [r5, #0x20] + rsb r1, r1, #0x0 + mul r0, r1, r0 + mov r0, r0, asr #0xc + str r0, [r6, #0x10] + add sp, sp, #0x4 + ldmia sp!, {r4-r7,pc} + arm_func_end texmtxCalc_flagS_ + + local_arm_func_start texmtxCalc_flag_ +texmtxCalc_flag_: ; 0x020BF988 + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0x4 + mov r9, r1 + ldrh r2, [r9, #0x2c] + ldrh r1, [r9, #0x2e] + mov r10, r0 + mov r8, r2, lsl #0xc + mov r11, r1, lsl #0xc + mov r0, r11 + mov r1, r8 + bl FX_DivAsync + ldrsh r0, [r9, #0x22] + ldr r3, [r9, #0x18] + ldrsh r5, [r9, #0x20] + ldr r4, [r9, #0x1c] + smull r2, r1, r3, r0 + mov r7, r2, lsr #0xc + orr r7, r7, r1, lsl #0x14 + smull r2, r1, r3, r5 + mov r6, r2, lsr #0xc + orr r6, r6, r1, lsl #0x14 + smull r3, r2, r4, r0 + smull r1, r0, r4, r5 + mov r5, r3, lsr #0xc + orr r5, r5, r2, lsl #0x14 + mov r4, r1, lsr #0xc + orr r4, r4, r0, lsl #0x14 + str r7, [r10, #0x0] + str r5, [r10, #0x14] + bl FX_GetDivResult + mov r1, r11 + mul r0, r4, r0 + mov r0, r0, asr #0xc + str r0, [r10, #0x4] + mov r0, r8 + bl FX_DivAsync + ldrh r1, [r9, #0x2c] + ldrh r8, [r9, #0x2e] + ldr r2, [r9, #0x28] + rsb r0, r1, #0x0 + mul r3, r2, r8 + rsb r2, r8, #0x0 + add r8, r3, r2, lsl #0xb + mov r0, r0, lsl #0xb + smull r3, r2, r5, r8 + smull r8, r5, r6, r8 + ldr r11, [r9, #0x24] + mul r12, r11, r1 + sub r0, r0, r12 + smlal r3, r2, r4, r0 + smull r4, r0, r7, r0 + subs r4, r4, r8 + sbc r0, r0, r5 + mov r4, r4, lsr #0x8 + orr r4, r4, r0, lsl #0x18 + add r0, r4, r1, lsl #0xf + str r0, [r10, #0x30] + ldrh r1, [r9, #0x2e] + mov r0, r3, lsr #0x8 + orr r0, r0, r2, lsl #0x18 + add r0, r0, r1, lsl #0xf + str r0, [r10, #0x34] + bl FX_GetDivResult + rsb r1, r6, #0x0 + mul r0, r1, r0 + mov r0, r0, asr #0xc + str r0, [r10, #0x10] + add sp, sp, #0x4 + ldmia sp!, {r4-r11,pc} + arm_func_end texmtxCalc_flag_ diff --git a/arm9/asm/NNS_G3D_anm.s b/arm9/asm/NNS_G3D_anm.s new file mode 100644 index 00000000..512ef7c0 --- /dev/null +++ b/arm9/asm/NNS_G3D_anm.s @@ -0,0 +1,352 @@ + .include "asm/macros.inc" + .include "global.inc" + + .section .data + + .global NNS_G3dAnmFmtNum +NNS_G3dAnmFmtNum: ; 0x02106594 + .byte 0x05, 0x00, 0x00, 0x00 + + .global NNS_G3dFuncAnmVisNsBvaDefault +NNS_G3dFuncAnmVisNsBvaDefault: ; 0x02106598 + .word NNSi_G3dAnmCalcNsBva + + .global NNS_G3dFuncAnmJntNsBcaDefault +NNS_G3dFuncAnmJntNsBcaDefault: ; 0x0210659C + .word NNSi_G3dAnmCalcNsBca + + .global NNS_G3dFuncAnmMatNsBtaDefault +NNS_G3dFuncAnmMatNsBtaDefault: ; 0x021065A0 + .word NNSi_G3dAnmCalcNsBta + + .global NNS_G3dFuncAnmMatNsBtpDefault +NNS_G3dFuncAnmMatNsBtpDefault: ; 0x021065A4 + .word NNSi_G3dAnmCalcNsBtp + + .global NNS_G3dFuncAnmMatNsBmaDefault +NNS_G3dFuncAnmMatNsBmaDefault: ; 0x021065A8 + .word NNSi_G3dAnmCalcNsBma + + .global NNS_G3dFuncBlendVisDefault +NNS_G3dFuncBlendVisDefault: ; 0x021065AC + .word NNSi_G3dAnmBlendVis + + .global NNS_G3dFuncBlendJntDefault +NNS_G3dFuncBlendJntDefault: ; 0x021065B0 + .word NNSi_G3dAnmBlendJnt + + .global NNS_G3dFuncBlendMatDefault +NNS_G3dFuncBlendMatDefault: ; 0x021065B4 + .word NNSi_G3dAnmBlendMat + + .global NNS_G3dAnmObjInitFuncArray +NNS_G3dAnmObjInitFuncArray: ; 0x021065B8 + .byte 0x4D, 0x00, 0x41, 0x4D + .word NNSi_G3dAnmObjInitNsBma + .byte 0x4D, 0x00, 0x50, 0x54 + .word NNSi_G3dAnmObjInitNsBtp + .byte 0x4D, 0x00, 0x41, 0x54 + .word NNSi_G3dAnmObjInitNsBta + .byte 0x56, 0x00, 0x41, 0x56 + .word NNSi_G3dAnmObjInitNsBva + .byte 0x4A, 0x00, 0x41, 0x43 + .word NNSi_G3dAnmObjInitNsBca + .byte 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, 0x00, 0x00, 0x00, 0x00 + + .section .text + + arm_func_start NNSi_G3dAnmBlendVis +NNSi_G3dAnmBlendVis: ; 0x020B8640 + stmdb sp!, {r4-r8,lr} + sub sp, sp, #0x8 + mov r7, r0 + mov r0, #0x0 + mov r6, r1 + str r0, [r7, #0x0] + add r4, sp, #0x0 + mov r5, r2, lsl #0x1 + mov r8, #0x1 +_020B8664: + add r1, r5, r6 + ldrh r2, [r1, #0x1a] + ands r1, r2, #0x100 + beq _020B869C + ldr r3, [r6, #0xc] + mov r0, r4 + mov r1, r6 + and r2, r2, #0xff + blx r3 + ldr r2, [r7, #0x0] + ldr r1, [sp, #0x0] + mov r0, r8 + orr r1, r2, r1 + str r1, [r7, #0x0] +_020B869C: + ldr r6, [r6, #0x10] + cmp r6, #0x0 + bne _020B8664 + add sp, sp, #0x8 + ldmia sp!, {r4-r8,pc} + arm_func_end NNSi_G3dAnmBlendVis + + arm_func_start NNSi_G3dAnmBlendJnt +NNSi_G3dAnmBlendJnt: ; 0x020B86B0 + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0x5c + mov r9, r1 + ldr r3, [r9, #0x10] + mov r10, r0 + mov r8, r2 + cmp r3, #0x0 + bne _020B8704 + add r2, r9, r8, lsl #0x1 + ldrh r4, [r2, #0x1a] + and r2, r4, #0x300 + cmp r2, #0x100 + addne sp, sp, #0x5c + movne r0, #0x0 + ldmneia sp!, {r4-r11,pc} + ldr r3, [r9, #0xc] + and r2, r4, #0xff + blx r3 + add sp, sp, #0x5c + mov r0, #0x1 + ldmia sp!, {r4-r11,pc} +_020B8704: + mov r7, #0x0 + mov r3, r7 + mov r4, r9 + mov r2, r8, lsl #0x1 +_020B8714: + add r0, r2, r4 + ldrh r0, [r0, #0x1a] + and r0, r0, #0x300 + cmp r0, #0x100 + ldreq r0, [r4, #0x4] + moveq r1, r4 + ldr r4, [r4, #0x10] + addeq r7, r7, r0 + addeq r3, r3, #0x1 + cmp r4, #0x0 + bne _020B8714 + cmp r7, #0x0 + addeq sp, sp, #0x5c + moveq r0, #0x0 + ldmeqia sp!, {r4-r11,pc} + cmp r3, #0x1 + bne _020B877C + add r0, r1, r8, lsl #0x1 + ldrh r2, [r0, #0x1a] + ldr r3, [r1, #0xc] + mov r0, r10 + and r2, r2, #0xff + blx r3 + add sp, sp, #0x5c + mov r0, #0x1 + ldmia sp!, {r4-r11,pc} +_020B877C: + mov r1, r10 + mov r0, #0x0 + mov r2, #0x58 + bl MIi_CpuClearFast + mvn r0, #0x0 + str r0, [r10, #0x0] + add r5, sp, #0x0 + add r4, sp, #0x4 + add r11, sp, #0x10 +_020B87A0: + add r0, r9, r8, lsl #0x1 + ldrh r2, [r0, #0x1a] + and r0, r2, #0x300 + cmp r0, #0x100 + bne _020B8948 + ldr r0, [r9, #0x4] + cmp r0, #0x0 + ble _020B8948 + ldr r3, [r9, #0xc] + mov r0, r5 + mov r1, r9 + and r2, r2, #0xff + blx r3 + cmp r7, #0x1000 + ldreq r6, [r9, #0x4] + beq _020B87F0 + ldr r0, [r9, #0x4] + mov r1, r7 + bl FX_Div + mov r6, r0 +_020B87F0: + ldr r3, [sp, #0x0] + mov r1, r4 + mov r2, r6 + add r0, r10, #0x4 + and r3, r3, #0x1 + bl blendScaleVec_ + ldr r1, [sp, #0x0] + add r0, r10, #0x10 + and r3, r1, #0x8 + mov r1, r11 + mov r2, r6 + bl blendScaleVec_ + ldr r3, [sp, #0x0] + add r0, r10, #0x1c + add r1, sp, #0x1c + mov r2, r6 + and r3, r3, #0x10 + bl blendScaleVec_ + ldr r0, [sp, #0x0] + ands r0, r0, #0x4 + bne _020B8898 + ldr r0, [sp, #0x4c] + ldr r2, [r10, #0x4c] + smull r1, r0, r6, r0 + mov r1, r1, lsr #0xc + orr r1, r1, r0, lsl #0x14 + add r0, r2, r1 + str r0, [r10, #0x4c] + ldr r0, [sp, #0x50] + ldr r2, [r10, #0x50] + smull r1, r0, r6, r0 + mov r1, r1, lsr #0xc + orr r1, r1, r0, lsl #0x14 + add r0, r2, r1 + str r0, [r10, #0x50] + ldr r0, [sp, #0x54] + ldr r2, [r10, #0x54] + smull r1, r0, r6, r0 + mov r1, r1, lsr #0xc + orr r1, r1, r0, lsl #0x14 + add r0, r2, r1 + str r0, [r10, #0x54] +_020B8898: + ldr r0, [sp, #0x0] + ands r0, r0, #0x2 + bne _020B8920 + ldr r0, [sp, #0x28] + ldr r1, [r10, #0x28] + mul r0, r6, r0 + add r0, r1, r0, asr #0xc + str r0, [r10, #0x28] + ldr r0, [sp, #0x2c] + ldr r1, [r10, #0x2c] + mul r0, r6, r0 + add r0, r1, r0, asr #0xc + str r0, [r10, #0x2c] + ldr r0, [sp, #0x30] + ldr r1, [r10, #0x30] + mul r0, r6, r0 + add r0, r1, r0, asr #0xc + str r0, [r10, #0x30] + ldr r0, [sp, #0x34] + ldr r1, [r10, #0x34] + mul r0, r6, r0 + add r0, r1, r0, asr #0xc + str r0, [r10, #0x34] + ldr r0, [sp, #0x38] + ldr r1, [r10, #0x38] + mul r0, r6, r0 + add r0, r1, r0, asr #0xc + str r0, [r10, #0x38] + ldr r0, [sp, #0x3c] + ldr r1, [r10, #0x3c] + mul r0, r6, r0 + add r0, r1, r0, asr #0xc + str r0, [r10, #0x3c] + b _020B8938 +_020B8920: + ldr r0, [r10, #0x28] + add r0, r0, r6 + str r0, [r10, #0x28] + ldr r0, [r10, #0x38] + add r0, r0, r6 + str r0, [r10, #0x38] +_020B8938: + ldr r1, [r10, #0x0] + ldr r0, [sp, #0x0] + and r0, r1, r0 + str r0, [r10, #0x0] +_020B8948: + ldr r9, [r9, #0x10] + cmp r9, #0x0 + bne _020B87A0 + add r0, r10, #0x28 + add r1, r10, #0x34 + add r2, r10, #0x40 + bl VEC_CrossProduct + add r0, r10, #0x28 + mov r1, r0 + bl VEC_Normalize + add r0, r10, #0x40 + mov r1, r0 + bl VEC_Normalize + add r0, r10, #0x40 + add r1, r10, #0x28 + add r2, r10, #0x34 + bl VEC_CrossProduct + mov r0, #0x1 + add sp, sp, #0x5c + ldmia sp!, {r4-r11,pc} + arm_func_end NNSi_G3dAnmBlendJnt + + arm_func_start blendScaleVec_ +blendScaleVec_: ; 0x020B8998 + cmp r3, #0x0 + beq _020B89C8 + ldr r1, [r0, #0x0] + add r1, r1, r2 + str r1, [r0, #0x0] + ldr r1, [r0, #0x4] + add r1, r1, r2 + str r1, [r0, #0x4] + ldr r1, [r0, #0x8] + add r1, r1, r2 + str r1, [r0, #0x8] + bx lr +_020B89C8: + ldr r3, [r1, #0x0] + ldr r12, [r0, #0x0] + mul r3, r2, r3 + add r3, r12, r3, asr #0xc + str r3, [r0, #0x0] + ldr r3, [r1, #0x4] + ldr r12, [r0, #0x4] + mul r3, r2, r3 + add r3, r12, r3, asr #0xc + str r3, [r0, #0x4] + ldr r1, [r1, #0x8] + ldr r3, [r0, #0x8] + mul r1, r2, r1 + add r1, r3, r1, asr #0xc + str r1, [r0, #0x8] + bx lr + arm_func_end blendScaleVec_ + + arm_func_start NNSi_G3dAnmBlendMat +NNSi_G3dAnmBlendMat: ; 0x020B8A08 + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + mov r6, r0 + mov r5, r1 + mov r0, #0x0 + mov r4, r2, lsl #0x1 + mov r7, #0x1 +_020B8A24: + add r1, r4, r5 + ldrh r2, [r1, #0x1a] + ands r1, r2, #0x100 + beq _020B8A4C + ldr r3, [r5, #0xc] + mov r0, r6 + mov r1, r5 + and r2, r2, #0xff + blx r3 + mov r0, r7 +_020B8A4C: + ldr r5, [r5, #0x10] + cmp r5, #0x0 + bne _020B8A24 + add sp, sp, #0x4 + ldmia sp!, {r4-r7,pc} + arm_func_end NNSi_G3dAnmBlendMat diff --git a/arm9/asm/NNS_G3D_basic.s b/arm9/asm/NNS_G3D_basic.s new file mode 100644 index 00000000..a9849429 --- /dev/null +++ b/arm9/asm/NNS_G3D_basic.s @@ -0,0 +1,62 @@ + .include "asm/macros.inc" + .include "global.inc" + + .section .text + + arm_func_start NNSi_G3dGetJointScaleBasic +NNSi_G3dGetJointScaleBasic: ; 0x020BE62C + ands r2, r3, #0x4 + ldrne r1, [r0, #0x0] + orrne r1, r1, #0x1 + strne r1, [r0, #0x0] + bne _020BE658 + ldr r2, [r1, #0x0] + str r2, [r0, #0x4] + ldr r2, [r1, #0x4] + str r2, [r0, #0x8] + ldr r1, [r1, #0x8] + str r1, [r0, #0xc] +_020BE658: + ldr r1, [r0, #0x0] + orr r1, r1, #0x18 + str r1, [r0, #0x0] + bx lr + arm_func_end NNSi_G3dGetJointScaleBasic + + arm_func_start NNSi_G3dSendJointSRTBasic +NNSi_G3dSendJointSRTBasic: ; 0x020BE668 + stmdb sp!, {r4,lr} + mov r4, r0 + ldr r1, [r4, #0x0] + ands r0, r1, #0x4 + bne _020BE6AC + ands r0, r1, #0x2 + bne _020BE698 + add r1, r4, #0x28 + mov r0, #0x19 + mov r2, #0xc + bl NNS_G3dGeBufferOP_N + b _020BE6C4 +_020BE698: + add r1, r4, #0x4c + mov r0, #0x1c + mov r2, #0x3 + bl NNS_G3dGeBufferOP_N + b _020BE6C4 +_020BE6AC: + ands r0, r1, #0x2 + bne _020BE6C4 + add r1, r4, #0x28 + mov r0, #0x1a + mov r2, #0x9 + bl NNS_G3dGeBufferOP_N +_020BE6C4: + ldr r0, [r4, #0x0] + ands r0, r0, #0x1 + ldmneia sp!, {r4,pc} + add r1, r4, #0x4 + mov r0, #0x1b + mov r2, #0x3 + bl NNS_G3dGeBufferOP_N + ldmia sp!, {r4,pc} + arm_func_end NNSi_G3dSendJointSRTBasic diff --git a/arm9/asm/NNS_G3D_cgtool.s b/arm9/asm/NNS_G3D_cgtool.s new file mode 100644 index 00000000..e17cfaf5 --- /dev/null +++ b/arm9/asm/NNS_G3D_cgtool.s @@ -0,0 +1,23 @@ + .include "asm/macros.inc" + .include "global.inc" + + .section .data + + .global NNS_G3dSendJointSRT_FuncArray +NNS_G3dSendJointSRT_FuncArray: ; 0x02106608 + .word NNSi_G3dSendJointSRTBasic + .word NNSi_G3dSendJointSRTMaya + .word NNSi_G3dSendJointSRTSi3d + + .global NNS_G3dGetJointScale_FuncArray +NNS_G3dGetJointScale_FuncArray: ; 0x02106614 + .word NNSi_G3dGetJointScaleBasic + .word NNSi_G3dGetJointScaleMaya + .word NNSi_G3dGetJointScaleSi3d + + .global NNS_G3dSendTexSRT_FuncArray +NNS_G3dSendTexSRT_FuncArray: ; 0x02106620 + .word NNSi_G3dSendTexSRTMaya + .word NNSi_G3dSendTexSRTSi3d + .word NNSi_G3dSendTexSRT3dsMax + .word NNSi_G3dSendTexSRTXsi diff --git a/arm9/asm/NNS_G3D_gecom.s b/arm9/asm/NNS_G3D_gecom.s new file mode 100644 index 00000000..2caeb535 --- /dev/null +++ b/arm9/asm/NNS_G3D_gecom.s @@ -0,0 +1,197 @@ + .include "asm/macros.inc" + .include "global.inc" + + .section .bss + + .global NNS_G3dGeBuffer +NNS_G3dGeBuffer: ; 0x021D1C80 + .space 0x4 + + .global NNS_G3dFlagGXDmaAsync +NNS_G3dFlagGXDmaAsync: ; 0x021D1C84 + .space 0x4 + + .global NNS_G3dFlagUseFastDma +NNS_G3dFlagUseFastDma: ; 0x021D1C88 + .space 0x4 + + .section .text + + arm_func_start NNS_G3dGeBufferOP_N +NNS_G3dGeBufferOP_N: ; 0x020BB1C0 + stmdb sp!, {r4-r6,lr} + ldr r3, _020BB2A4 ; =NNS_G3dGeBuffer + mov r6, r0 + ldr r12, [r3, #0x0] + mov r5, r1 + mov r4, r2 + cmp r12, #0x0 + beq _020BB278 + ldr r0, _020BB2A8 ; =NNS_G3dFlagGXDmaAsync + ldr r0, [r0, #0x0] + cmp r0, #0x0 + beq _020BB24C + ldr r2, [r12, #0x0] + add r0, r2, #0x1 + add r1, r0, r4 + cmp r1, #0xc0 + bhi _020BB24C + str r0, [r12, #0x0] + ldr r0, [r3, #0x0] + cmp r4, #0x0 + add r0, r0, r2, lsl #0x2 + str r6, [r0, #0x4] + ldmeqia sp!, {r4-r6,pc} + ldr r2, [r3, #0x0] + mov r0, r5 + ldr r1, [r2], #0x4 + add r1, r2, r1, lsl #0x2 + mov r2, r4, lsl #0x2 + bl MIi_CpuCopyFast + ldr r0, _020BB2A4 ; =NNS_G3dGeBuffer + ldr r1, [r0, #0x0] + ldr r0, [r1, #0x0] + add r0, r0, r4 + str r0, [r1, #0x0] + ldmia sp!, {r4-r6,pc} +_020BB24C: + ldr r0, [r12, #0x0] + cmp r0, #0x0 + beq _020BB260 + bl NNS_G3dGeFlushBuffer + b _020BB28C +_020BB260: + ldr r0, _020BB2A8 ; =NNS_G3dFlagGXDmaAsync + ldr r0, [r0, #0x0] + cmp r0, #0x0 + beq _020BB28C + bl NNS_G3dGeWaitSendDL + b _020BB28C +_020BB278: + ldr r0, _020BB2A8 ; =NNS_G3dFlagGXDmaAsync + ldr r0, [r0, #0x0] + cmp r0, #0x0 + beq _020BB28C + bl NNS_G3dGeWaitSendDL +_020BB28C: + ldr r1, _020BB2AC ; =0x04000400 + mov r0, r5 + mov r2, r4, lsl #0x2 + str r6, [r1, #0x0] + bl MIi_CpuSend32 + ldmia sp!, {r4-r6,pc} + .balign 4 +_020BB2A4: .word NNS_G3dGeBuffer +_020BB2A8: .word NNS_G3dFlagGXDmaAsync +_020BB2AC: .word 0x04000400 + arm_func_end NNS_G3dGeBufferOP_N + + arm_func_start NNS_G3dGeSendDL +NNS_G3dGeSendDL: ; 0x020BB2B0 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r4, r1 + mov r5, r0 + cmp r4, #0x100 + blo _020BB2DC + ldr r1, _020BB360 ; =GXi_DmaId + mvn r0, #0x0 + ldr r1, [r1, #0x0] + cmp r1, r0 + bne _020BB2F8 +_020BB2DC: + mov r2, r4, lsr #0x2 + ldr r0, [r5, #0x0] + add r1, r5, #0x4 + sub r2, r2, #0x1 + bl NNS_G3dGeBufferOP_N + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} +_020BB2F8: + bl NNS_G3dGeFlushBuffer + ldr r0, _020BB364 ; =NNS_G3dFlagUseFastDma + ldr r1, _020BB368 ; =NNS_G3dFlagGXDmaAsync + ldr r0, [r0, #0x0] + mov r2, #0x1 + str r2, [r1, #0x0] + cmp r0, #0x0 + beq _020BB33C + ldr r0, _020BB360 ; =GXi_DmaId + str r1, [sp, #0x0] + ldr r0, [r0, #0x0] + ldr r3, _020BB36C ; =simpleUnlock_ + mov r1, r5 + mov r2, r4 + bl MI_SendGXCommandAsyncFast + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} +_020BB33C: + ldr r0, _020BB360 ; =GXi_DmaId + str r1, [sp, #0x0] + ldr r0, [r0, #0x0] + ldr r3, _020BB36C ; =simpleUnlock_ + mov r1, r5 + mov r2, r4 + bl MI_SendGXCommandAsync + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + .balign 4 +_020BB360: .word GXi_DmaId +_020BB364: .word NNS_G3dFlagUseFastDma +_020BB368: .word NNS_G3dFlagGXDmaAsync +_020BB36C: .word simpleUnlock_ + arm_func_end NNS_G3dGeSendDL + + arm_func_start simpleUnlock_ +simpleUnlock_: ; 0x020BB370 + mov r1, #0x0 + str r1, [r0, #0x0] + bx lr + arm_func_end simpleUnlock_ + + arm_func_start NNS_G3dGeWaitSendDL +NNS_G3dGeWaitSendDL: ; 0x020BB37C + ldr r0, _020BB390 ; =NNS_G3dFlagGXDmaAsync +_020BB380: + ldr r1, [r0, #0x0] + cmp r1, #0x0 + bne _020BB380 + bx lr + .balign 4 +_020BB390: .word NNS_G3dFlagGXDmaAsync + arm_func_end NNS_G3dGeWaitSendDL + + arm_func_start NNS_G3dGeFlushBuffer +NNS_G3dGeFlushBuffer: ; 0x020BB394 + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r0, _020BB3FC ; =NNS_G3dFlagGXDmaAsync + ldr r0, [r0, #0x0] + cmp r0, #0x0 + beq _020BB3B0 + bl NNS_G3dGeWaitSendDL +_020BB3B0: + ldr r0, _020BB400 ; =NNS_G3dGeBuffer + ldr r0, [r0, #0x0] + cmp r0, #0x0 + addeq sp, sp, #0x4 + ldmeqia sp!, {pc} + ldr r2, [r0, #0x0] + cmp r2, #0x0 + addeq sp, sp, #0x4 + ldmeqia sp!, {pc} + ldr r1, _020BB404 ; =0x04000400 + add r0, r0, #0x4 + mov r2, r2, lsl #0x2 + bl MIi_CpuSend32 + ldr r0, _020BB400 ; =NNS_G3dGeBuffer + mov r1, #0x0 + ldr r0, [r0, #0x0] + str r1, [r0, #0x0] + add sp, sp, #0x4 + ldmia sp!, {pc} + .balign 4 +_020BB3FC: .word NNS_G3dFlagGXDmaAsync +_020BB400: .word NNS_G3dGeBuffer +_020BB404: .word 0x04000400 + arm_func_end NNS_G3dGeFlushBuffer diff --git a/arm9/asm/NNS_G3D_glbstate.s b/arm9/asm/NNS_G3D_glbstate.s new file mode 100644 index 00000000..3dbb215f --- /dev/null +++ b/arm9/asm/NNS_G3D_glbstate.s @@ -0,0 +1,355 @@ + .include "asm/macros.inc" + .include "global.inc" + + .section .bss + + .global NNS_G3dGlb +NNS_G3dGlb: ; 0x021CED18 + .space 0x264 + + .section .text + + arm_func_start NNS_G3dGlbGetViewPort +NNS_G3dGlbGetViewPort: ; 0x020B8200 + cmp r0, #0x0 + ldrne ip, _020B8260 ; =NNS_G3dGlb + ldrne r12, [r12, #0xa0] + andne r12, r12, #0xff + strne r12, [r0, #0x0] + cmp r1, #0x0 + ldrne r0, _020B8260 ; =NNS_G3dGlb + ldrne r0, [r0, #0xa0] + movne r0, r0, lsr #0x8 + andne r0, r0, #0xff + strne r0, [r1, #0x0] + cmp r2, #0x0 + ldrne r0, _020B8260 ; =NNS_G3dGlb + ldrne r0, [r0, #0xa0] + movne r0, r0, lsr #0x10 + andne r0, r0, #0xff + strne r0, [r2, #0x0] + cmp r3, #0x0 + ldrne r0, _020B8260 ; =NNS_G3dGlb + ldrne r0, [r0, #0xa0] + movne r0, r0, lsr #0x18 + andne r0, r0, #0xff + strne r0, [r3, #0x0] + bx lr + .balign 4 +_020B8260: .word NNS_G3dGlb + arm_func_end NNS_G3dGlbGetViewPort + + arm_func_start NNS_G3dGlbGetInvWV +NNS_G3dGlbGetInvWV: ; 0x020B8264 + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r0, _020B829C ; =NNS_G3dGlb + ldr r0, [r0, #0xfc] + ands r0, r0, #0x80 + bne _020B8290 + bl calcSrtCameraMtx_ + ldr r0, _020B829C ; =NNS_G3dGlb + ldr r1, [r0, #0xfc] + orr r1, r1, #0x80 + str r1, [r0, #0xfc] +_020B8290: + ldr r0, _020B82A0 ; =NNS_G3dGlb + 0x160 + add sp, sp, #0x4 + ldmia sp!, {pc} + .balign 4 +_020B829C: .word NNS_G3dGlb +_020B82A0: .word NNS_G3dGlb + 0x160 + arm_func_end NNS_G3dGlbGetInvWV + + arm_func_start NNS_G3dGlbGetWV +NNS_G3dGlbGetWV: ; 0x020B82A4 + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r0, _020B82DC ; =NNS_G3dGlb + ldr r0, [r0, #0xfc] + ands r0, r0, #0x80 + bne _020B82D0 + bl calcSrtCameraMtx_ + ldr r0, _020B82DC ; =NNS_G3dGlb + ldr r1, [r0, #0xfc] + orr r1, r1, #0x80 + str r1, [r0, #0xfc] +_020B82D0: + ldr r0, _020B82E0 ; =NNS_G3dGlb + 0x130 + add sp, sp, #0x4 + ldmia sp!, {pc} + .balign 4 +_020B82DC: .word NNS_G3dGlb +_020B82E0: .word NNS_G3dGlb + 0x130 + arm_func_end NNS_G3dGlbGetWV + + arm_func_start calcSrtCameraMtx_ +calcSrtCameraMtx_: ; 0x020B82E4 + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r0, _020B8330 ; =NNS_G3dGlb + 0xBC + ldr r1, _020B8334 ; =NNS_G3dGlb + 0x4C + ldr r2, _020B8338 ; =NNS_G3dGlb + 0x130 + bl MTX_Concat43 + ldr r3, _020B833C ; =NNS_G3dGlb + ldr r0, _020B8338 ; =NNS_G3dGlb + 0x130 + ldr r2, [r3, #0xf4] + mov r1, r0 + str r2, [sp, #0x0] + ldr r2, [r3, #0xec] + ldr r3, [r3, #0xf0] + bl MTX_ScaleApply43 + ldr r0, _020B8338 ; =NNS_G3dGlb + 0x130 + ldr r1, _020B8340 ; =NNS_G3dGlb + 0x160 + bl MTX_Inverse43 + add sp, sp, #0x4 + ldmia sp!, {pc} + .balign 4 +_020B8330: .word NNS_G3dGlb + 0xBC +_020B8334: .word NNS_G3dGlb + 0x4C +_020B8338: .word NNS_G3dGlb + 0x130 +_020B833C: .word NNS_G3dGlb +_020B8340: .word NNS_G3dGlb + 0x160 + arm_func_end calcSrtCameraMtx_ + + arm_func_start NNS_G3dGlbGetInvV +NNS_G3dGlbGetInvV: ; 0x020B8344 + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r0, _020B8384 ; =NNS_G3dGlb + ldr r0, [r0, #0xfc] + ands r0, r0, #0x8 + bne _020B8378 + ldr r0, _020B8388 ; =NNS_G3dGlb + 0x4C + ldr r1, _020B838C ; =NNS_G3dGlb + 0x100 + bl MTX_Inverse43 + ldr r0, _020B8384 ; =NNS_G3dGlb + ldr r1, [r0, #0xfc] + orr r1, r1, #0x8 + str r1, [r0, #0xfc] +_020B8378: + ldr r0, _020B838C ; =NNS_G3dGlb + 0x100 + add sp, sp, #0x4 + ldmia sp!, {pc} + .balign 4 +_020B8384: .word NNS_G3dGlb +_020B8388: .word NNS_G3dGlb + 0x4C +_020B838C: .word NNS_G3dGlb + 0x100 + arm_func_end NNS_G3dGlbGetInvV + + arm_func_start NNS_G3dGlbPolygonAttr +NNS_G3dGlbPolygonAttr: ; 0x020B8390 + orr r0, r0, r1, lsl #0x4 + ldr r1, [sp, #0x4] + orr r0, r0, r2, lsl #0x6 + orr r0, r1, r0 + ldr r2, [sp, #0x0] + orr r1, r0, r3, lsl #0x18 + ldr r0, _020B83B8 ; =NNS_G3dGlb + orr r1, r1, r2, lsl #0x10 + str r1, [r0, #0x9c] + bx lr + .balign 4 +_020B83B8: .word NNS_G3dGlb + arm_func_end NNS_G3dGlbPolygonAttr + + arm_func_start NNS_G3dGlbMaterialColorSpecEmi +NNS_G3dGlbMaterialColorSpecEmi: ; 0x020B83BC + cmp r2, #0x0 + movne r2, #0x1 + orr r1, r0, r1, lsl #0x10 + moveq r2, #0x0 + ldr r0, _020B83DC ; =NNS_G3dGlb + orr r1, r1, r2, lsl #0xf + str r1, [r0, #0x98] + bx lr + .balign 4 +_020B83DC: .word NNS_G3dGlb + arm_func_end NNS_G3dGlbMaterialColorSpecEmi + + arm_func_start NNS_G3dGlbMaterialColorDiffAmb +NNS_G3dGlbMaterialColorDiffAmb: ; 0x020B83E0 + cmp r2, #0x0 + movne r2, #0x1 + orr r1, r0, r1, lsl #0x10 + moveq r2, #0x0 + ldr r0, _020B8400 ; =NNS_G3dGlb + orr r1, r1, r2, lsl #0xf + str r1, [r0, #0x94] + bx lr + .balign 4 +_020B8400: .word NNS_G3dGlb + arm_func_end NNS_G3dGlbMaterialColorDiffAmb + + arm_func_start NNS_G3dGlbLightColor +NNS_G3dGlbLightColor: ; 0x020B8404 + ldr r2, _020B8414 ; =NNS_G3dGlb + 0xA8 + orr r1, r1, r0, lsl #0x1e + str r1, [r2, r0, lsl #0x2] + bx lr + .balign 4 +_020B8414: .word NNS_G3dGlb + 0xA8 + arm_func_end NNS_G3dGlbLightColor + + arm_func_start NNS_G3dGlbLightVector +NNS_G3dGlbLightVector: ; 0x020B8418 + stmdb sp!, {r4,lr} + ldr ip, _020B8444 ; =0x000003FF + ldr lr, _020B8448 ; =NNS_G3dGlb + 0x80 + and r4, r12, r1, asr #0x3 + and r1, r12, r2, asr #0x3 + and r2, r12, r3, asr #0x3 + orr r1, r4, r1, lsl #0xa + orr r1, r1, r2, lsl #0x14 + orr r1, r1, r0, lsl #0x1e + str r1, [lr, r0, lsl #0x2] + ldmia sp!, {r4,pc} + .balign 4 +_020B8444: .word 0x000003FF +_020B8448: .word NNS_G3dGlb + 0x80 + arm_func_end NNS_G3dGlbLightVector + + arm_func_start NNS_G3dGlbSetBaseScale +NNS_G3dGlbSetBaseScale: ; 0x020B844C + ldr r3, _020B846C ; =NNS_G3dGlb + 0xEC + ldmia r0, {r0-r2} + stmia r3, {r0-r2} + ldr r0, _020B8470 ; =NNS_G3dGlb + ldr r1, [r0, #0xfc] + bic r1, r1, #0xa4 + str r1, [r0, #0xfc] + bx lr + .balign 4 +_020B846C: .word NNS_G3dGlb + 0xEC +_020B8470: .word NNS_G3dGlb + arm_func_end NNS_G3dGlbSetBaseScale + + arm_func_start NNS_G3dGlbSetBaseTrans +NNS_G3dGlbSetBaseTrans: ; 0x020B8474 + ldr r3, _020B8494 ; =NNS_G3dGlb + 0xE0 + ldmia r0, {r0-r2} + stmia r3, {r0-r2} + ldr r0, _020B8498 ; =NNS_G3dGlb + ldr r1, [r0, #0xfc] + bic r1, r1, #0xa4 + str r1, [r0, #0xfc] + bx lr + .balign 4 +_020B8494: .word NNS_G3dGlb + 0xE0 +_020B8498: .word NNS_G3dGlb + arm_func_end NNS_G3dGlbSetBaseTrans + + arm_func_start NNS_G3dGlbFlushP +NNS_G3dGlbFlushP: ; 0x020B849C + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r1, _020B84D4 ; =NNS_G3dGlb + mov r2, #0x3e + ldr r0, [r1], #0x4 + bl NNS_G3dGeBufferOP_N + ldr r0, _020B84D4 ; =NNS_G3dGlb + ldr r1, [r0, #0xfc] + bic r1, r1, #0x1 + str r1, [r0, #0xfc] + bic r1, r1, #0x2 + str r1, [r0, #0xfc] + add sp, sp, #0x4 + ldmia sp!, {pc} + .balign 4 +_020B84D4: .word NNS_G3dGlb + arm_func_end NNS_G3dGlbFlushP + + arm_func_start NNS_G3dGlbInit +NNS_G3dGlbInit: ; 0x020B84D8 + stmdb sp!, {r4-r9,lr} + sub sp, sp, #0x4 + ldr r8, _020B85F4 ; =0x17101610 + ldr r1, _020B85F8 ; =NNS_G3dGlb + ldr r5, _020B85FC ; =0x32323232 + ldr r4, _020B8600 ; =0x60293130 + ldr r3, _020B8604 ; =0x33333333 + ldr r2, _020B8608 ; =0x002A1B19 + mov r7, #0x0 + mov r6, #0x2 + ldr r0, _020B860C ; =NNS_G3dGlb + 0x4C + str r8, [r1, #0x0] + str r7, [r1, #0x4] + str r6, [r1, #0x48] + str r5, [r1, #0x7c] + str r4, [r1, #0x90] + str r3, [r1, #0xa4] + str r2, [r1, #0xb8] + bl MTX_Identity43_ + ldr r0, _020B8610 ; =NNS_G3dGlb + 0x8 + bl MTX_Identity44_ + mov r2, r7 + ldr r1, _020B85F8 ; =NNS_G3dGlb + ldr r7, _020B8614 ; =0x4210C210 + ldr r0, _020B8618 ; =0x40000200 + ldr lr, _020B861C ; =0x2D8B62D8 + ldr sb, _020B8620 ; =0x800001FF + ldr r8, _020B8624 ; =0xC0080000 + ldr r6, _020B8628 ; =0x001F008F + ldr r5, _020B862C ; =0xBFFF0000 + ldr r4, _020B8630 ; =0x00007FFF + ldr ip, _020B8634 ; =0x800003E0 + ldr r3, _020B8638 ; =0xC0007C00 + str r0, [r1, #0x84] + str lr, [r1, #0x80] + mov lr, #0x4000001f + ldr r0, _020B863C ; =NNS_G3dGlb + 0xBC + str r9, [r1, #0x88] + str r8, [r1, #0x8c] + str r7, [r1, #0x94] + str r7, [r1, #0x98] + str r6, [r1, #0x9c] + str r5, [r1, #0xa0] + str r4, [r1, #0xa8] + str lr, [r1, #0xac] + str r12, [r1, #0xb0] + str r3, [r1, #0xb4] + str r2, [r1, #0xe0] + str r2, [r1, #0xe4] + str r2, [r1, #0xe8] + bl MTX_Identity33_ + mov r3, #0x1000 + ldr r0, _020B85F8 ; =NNS_G3dGlb + mov r2, #0x0 + rsb r1, r3, #0x0 + str r3, [r0, #0xec] + str r3, [r0, #0xf0] + str r3, [r0, #0xf4] + str r2, [r0, #0xf8] + str r2, [r0, #0xfc] + str r2, [r0, #0x248] + str r2, [r0, #0x244] + str r2, [r0, #0x240] + str r2, [r0, #0x254] + str r2, [r0, #0x24c] + str r3, [r0, #0x250] + str r2, [r0, #0x25c] + str r2, [r0, #0x258] + str r1, [r0, #0x260] + add sp, sp, #0x4 + ldmia sp!, {r4-r9,pc} + .balign 4 +_020B85F4: .word 0x17101610 +_020B85F8: .word NNS_G3dGlb +_020B85FC: .word 0x32323232 +_020B8600: .word 0x60293130 +_020B8604: .word 0x33333333 +_020B8608: .word 0x002A1B19 +_020B860C: .word NNS_G3dGlb + 0x4C +_020B8610: .word NNS_G3dGlb + 0x8 +_020B8614: .word 0x4210C210 +_020B8618: .word 0x40000200 +_020B861C: .word 0x2D8B62D8 +_020B8620: .word 0x800001FF +_020B8624: .word 0xC0080000 +_020B8628: .word 0x001F008F +_020B862C: .word 0xBFFF0000 +_020B8630: .word 0x00007FFF +_020B8634: .word 0x800003E0 +_020B8638: .word 0xC0007C00 +_020B863C: .word NNS_G3dGlb + 0xBC + arm_func_end NNS_G3dGlbInit diff --git a/arm9/asm/NNS_G3D_kernel.s b/arm9/asm/NNS_G3D_kernel.s new file mode 100644 index 00000000..ebf3d210 --- /dev/null +++ b/arm9/asm/NNS_G3D_kernel.s @@ -0,0 +1,858 @@ + .include "asm/macros.inc" + .include "global.inc" + + .section .text + + arm_func_start NNS_G3dReleaseMdlSet +NNS_G3dReleaseMdlSet: ; 0x020B772C + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + mov r6, r0 + ldrb r0, [r6, #0x9] + mov r5, #0x0 + cmp r0, #0x0 + addls sp, sp, #0x4 + ldmlsia sp!, {r4-r7,pc} + add r4, r6, #0x8 +_020B7750: + ldrh r0, [r6, #0xe] + ldrh r1, [r4, r0] + add r0, r4, r0 + mla r0, r1, r5, r0 + ldr r0, [r0, #0x4] + add r7, r6, r0 + mov r0, r7 + bl NNS_G3dReleaseMdlTex + mov r0, r7 + bl NNS_G3dReleaseMdlPltt + ldrb r0, [r6, #0x9] + add r5, r5, #0x1 + cmp r5, r0 + blo _020B7750 + add sp, sp, #0x4 + ldmia sp!, {r4-r7,pc} + arm_func_end NNS_G3dReleaseMdlSet + + arm_func_start NNS_G3dBindMdlSet +NNS_G3dBindMdlSet: ; 0x020B7790 + stmdb sp!, {r4-r9,lr} + sub sp, sp, #0x4 + mov r8, r0 + ldrb r0, [r8, #0x9] + mov r7, r1 + mov r5, #0x1 + cmp r0, #0x0 + mov r6, #0x0 + bls _020B7800 + add r4, r8, #0x8 +_020B77B8: + ldrh r0, [r8, #0xe] + mov r1, r7 + ldrh r2, [r4, r0] + add r0, r4, r0 + mla r0, r2, r6, r0 + ldr r0, [r0, #0x4] + add r9, r8, r0 + mov r0, r9 + bl NNS_G3dBindMdlTex + and r5, r5, r0 + mov r0, r9 + mov r1, r7 + bl NNS_G3dBindMdlPltt + ldrb r1, [r8, #0x9] + add r6, r6, #0x1 + and r5, r5, r0 + cmp r6, r1 + blo _020B77B8 +_020B7800: + mov r0, r5 + add sp, sp, #0x4 + ldmia sp!, {r4-r9,pc} + arm_func_end NNS_G3dBindMdlSet + + arm_func_start NNS_G3dReleaseMdlPltt +NNS_G3dReleaseMdlPltt: ; 0x020B780C + ldr r2, [r0, #0x8] + mov r1, #0x0 + add r2, r0, r2 + ldrh r0, [r2, #0x2] + add r12, r2, r0 + ldrb r0, [r12, #0x1] + cmp r0, #0x0 + bxls lr +_020B782C: + ldrh r2, [r12, #0x6] + ldrh r0, [r12, r2] + add r2, r12, r2 + add r2, r2, #0x4 + mla r3, r0, r1, r2 + ldrb r0, [r3, #0x3] + add r1, r1, #0x1 + ands r2, r0, #0x1 + bicne r0, r0, #0x1 + strneb r0, [r3, #0x3] + ldrb r0, [r12, #0x1] + cmp r1, r0 + blo _020B782C + bx lr + arm_func_end NNS_G3dReleaseMdlPltt + + arm_func_start NNS_G3dBindMdlPltt +NNS_G3dBindMdlPltt: ; 0x020B7864 + stmdb sp!, {r4-r10,lr} + ldr r2, [r0, #0x8] + mov r10, r1 + add r9, r0, r2 + ldrh r0, [r9, #0x2] + mov r6, #0x1 + mov r7, #0x0 + add r8, r9, r0 + ldrb r0, [r8, #0x1] + cmp r0, #0x0 + bls _020B7908 + mov r5, r7 + mov r4, r7 +_020B7898: + ldrh r1, [r8, #0x6] + ldrh r0, [r10, #0x34] + add r2, r8, r1 + ldrh r1, [r2, #0x2] + add r0, r10, r0 + add r1, r2, r1 + add r1, r1, r5 + bl NNS_G3dGetResDataByName + movs r3, r0 + beq _020B78F0 + ldrh r1, [r8, #0x6] + ldrh r0, [r8, r1] + add r1, r8, r1 + add r1, r1, #0x4 + mla r1, r0, r7, r1 + ldrb r0, [r1, #0x3] + ands r0, r0, #0x1 + bne _020B78F4 + mov r0, r9 + mov r2, r10 + bl bindMdlPltt_Internal_ + b _020B78F4 +_020B78F0: + mov r6, r4 +_020B78F4: + ldrb r0, [r8, #0x1] + add r7, r7, #0x1 + add r5, r5, #0x10 + cmp r7, r0 + blo _020B7898 +_020B7908: + mov r0, r6 + ldmia sp!, {r4-r10,pc} + arm_func_end NNS_G3dBindMdlPltt + + arm_func_start bindMdlPltt_Internal_ +bindMdlPltt_Internal_: ; 0x020B7910 + stmdb sp!, {r4-r6,lr} + ldrh r5, [r1, #0x0] + ldr r2, [r2, #0x2c] + ldrh r4, [r3, #0x2] + mov r2, r2, lsl #0x10 + add r12, r0, r5 + mov r5, r2, lsr #0x10 + ands r2, r4, #0x1 + ldrh r4, [r3, #0x0] + moveq r3, r5, lsl #0xf + moveq r5, r3, lsr #0x10 + moveq r2, r4, lsl #0xf + moveq r4, r2, lsr #0x10 + ldrb r3, [r1, #0x2] + mov r2, #0x0 + cmp r3, #0x0 + bls _020B7994 + add r3, r4, r5 + mov r3, r3, lsl #0x10 + add r6, r0, #0x4 + mov r4, r3, lsr #0x10 +_020B7964: + ldrh r5, [r0, #0xa] + ldrb r3, [r12, r2] + add r2, r2, #0x1 + ldrh lr, [r6, r5] + add r5, r6, r5 + mla r3, lr, r3, r5 + ldr r3, [r3, #0x4] + add r3, r0, r3 + strh r4, [r3, #0x1c] + ldrb r3, [r1, #0x2] + cmp r2, r3 + blo _020B7964 +_020B7994: + ldrb r0, [r1, #0x3] + orr r0, r0, #0x1 + strb r0, [r1, #0x3] + ldmia sp!, {r4-r6,pc} + arm_func_end bindMdlPltt_Internal_ + + arm_func_start NNS_G3dReleaseMdlTex +NNS_G3dReleaseMdlTex: ; 0x020B79A4 + stmdb sp!, {r4-r6,lr} + ldr r2, [r0, #0x8] + mov r4, #0x0 + ldrh r1, [r0, r2] + add r6, r0, r2 + add r5, r6, r1 + ldrb r0, [r5, #0x1] + cmp r0, #0x0 + ldmlsia sp!, {r4-r6,pc} +_020B79C8: + ldrh r1, [r5, #0x6] + ldrh r0, [r5, r1] + add r1, r5, r1 + add r1, r1, #0x4 + mla r1, r0, r4, r1 + ldrb r0, [r1, #0x3] + ands r0, r0, #0x1 + beq _020B79F0 + mov r0, r6 + bl releaseMdlTex_Internal_ +_020B79F0: + ldrb r0, [r5, #0x1] + add r4, r4, #0x1 + cmp r4, r0 + blo _020B79C8 + ldmia sp!, {r4-r6,pc} + arm_func_end NNS_G3dReleaseMdlTex + + arm_func_start NNS_G3dBindMdlTex +NNS_G3dBindMdlTex: ; 0x020B7A04 + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0x4 + ldr r2, [r0, #0x8] + mov r10, r1 + ldrh r1, [r0, r2] + add r9, r0, r2 + mov r11, #0x1 + add r8, r9, r1 + ldrb r0, [r8, #0x1] + mov r7, #0x0 + cmp r0, #0x0 + bls _020B7AAC + mov r6, r7 + mov r4, r7 + add r5, r10, #0x3c +_020B7A40: + ldrh r1, [r8, #0x6] + mov r0, r5 + add r2, r8, r1 + ldrh r1, [r2, #0x2] + add r1, r2, r1 + add r1, r1, r6 + bl NNS_G3dGetResDataByName + movs r3, r0 + beq _020B7A94 + ldrh r1, [r8, #0x6] + ldrh r0, [r8, r1] + add r1, r8, r1 + add r1, r1, #0x4 + mla r1, r0, r7, r1 + ldrb r0, [r1, #0x3] + ands r0, r0, #0x1 + bne _020B7A98 + mov r0, r9 + mov r2, r10 + bl bindMdlTex_Internal_ + b _020B7A98 +_020B7A94: + mov r11, r4 +_020B7A98: + ldrb r0, [r8, #0x1] + add r7, r7, #0x1 + add r6, r6, #0x10 + cmp r7, r0 + blo _020B7A40 +_020B7AAC: + mov r0, r11 + add sp, sp, #0x4 + ldmia sp!, {r4-r11,pc} + arm_func_end NNS_G3dBindMdlTex + + arm_func_start releaseMdlTex_Internal_ +releaseMdlTex_Internal_: ; 0x020B7AB8 + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + ldrh r4, [r1, #0x0] + ldrb r2, [r1, #0x2] + mov r3, #0x0 + add r12, r0, r4 + cmp r2, #0x0 + bls _020B7B28 + add r2, r0, #0x4 + mov r5, #0x1000 + ldr lr, _020B7B3C ; =0xC00F0000 +_020B7AE4: + ldrh r7, [r0, #0xa] + ldrb r4, [r12, r3] + add r3, r3, #0x1 + ldrh r6, [r2, r7] + add r7, r2, r7 + mla r4, r6, r4, r7 + ldr r4, [r4, #0x4] + add r6, r0, r4 + ldr r4, [r6, #0x14] + and r4, r4, lr + str r4, [r6, #0x14] + str r5, [r6, #0x24] + ldr r4, [r6, #0x24] + str r4, [r6, #0x28] + ldrb r4, [r1, #0x2] + cmp r3, r4 + blo _020B7AE4 +_020B7B28: + ldrb r0, [r1, #0x3] + bic r0, r0, #0x1 + strb r0, [r1, #0x3] + add sp, sp, #0x4 + ldmia sp!, {r4-r7,pc} + .balign 4 +_020B7B3C: .word 0xC00F0000 + arm_func_end releaseMdlTex_Internal_ + + arm_func_start bindMdlTex_Internal_ +bindMdlTex_Internal_: ; 0x020B7B40 + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0xc + mov r11, r1 + mov r9, r3 + ldr r1, [r9, #0x0] + mov r10, r0 + and r0, r1, #0x1c000000 + cmp r0, #0x14000000 + ldrh r3, [r11, #0x0] + ldrne r1, [r2, #0x8] + mov r8, #0x0 + add r0, r10, r3 + str r0, [sp, #0x4] + ldrne r0, _020B7C50 ; =0x0000FFFF + andne r0, r1, r0 + strne r0, [sp, #0x0] + ldreq r1, [r2, #0x18] + ldreq r0, _020B7C50 ; =0x0000FFFF + andeq r0, r1, r0 + streq r0, [sp, #0x0] + ldrb r0, [r11, #0x2] + cmp r0, #0x0 + bls _020B7C3C + mov r4, #0x1000 + add r5, r10, #0x4 +_020B7BA4: + ldrh r6, [r10, #0xa] + ldr r0, [sp, #0x4] + ldr r1, [r9, #0x0] + ldrb r2, [r0, r8] + ldrh r3, [r5, r6] + ldr r0, [sp, #0x0] + add r6, r5, r6 + add r0, r1, r0 + mla r1, r3, r2, r6 + ldr r1, [r1, #0x4] + add r6, r10, r1 + ldr r1, [r6, #0x14] + orr r0, r1, r0 + str r0, [r6, #0x14] + ldr r3, [r9, #0x4] + ldr r0, _020B7C54 ; =0x000007FF + ldrh r1, [r6, #0x20] + and r2, r3, r0 + and r7, r0, r3, lsr #0xb + cmp r2, r1 + moveq r0, r4 + beq _020B7C08 + mov r0, r2, lsl #0xc + mov r1, r1, lsl #0xc + bl FX_Div +_020B7C08: + str r0, [r6, #0x24] + ldrh r1, [r6, #0x22] + cmp r7, r1 + moveq r0, r4 + beq _020B7C28 + mov r0, r7, lsl #0xc + mov r1, r1, lsl #0xc + bl FX_Div +_020B7C28: + str r0, [r6, #0x28] + ldrb r0, [r11, #0x2] + add r8, r8, #0x1 + cmp r8, r0 + blo _020B7BA4 +_020B7C3C: + ldrb r0, [r11, #0x3] + orr r0, r0, #0x1 + strb r0, [r11, #0x3] + add sp, sp, #0xc + ldmia sp!, {r4-r11,pc} + .balign 4 +_020B7C50: .word 0x0000FFFF +_020B7C54: .word 0x000007FF + arm_func_end bindMdlTex_Internal_ + + arm_func_start NNS_G3dPlttReleasePlttKey +NNS_G3dPlttReleasePlttKey: ; 0x020B7C58 + ldrh r2, [r0, #0x32] + mov r1, #0x0 + bic r2, r2, #0x1 + strh r2, [r0, #0x32] + ldr r2, [r0, #0x2c] + str r1, [r0, #0x2c] + mov r0, r2 + bx lr + arm_func_end NNS_G3dPlttReleasePlttKey + + arm_func_start NNS_G3dPlttLoad +NNS_G3dPlttLoad: ; 0x020B7C78 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + movs r4, r1 + mov r5, r0 + beq _020B7C90 + bl GX_BeginLoadTexPltt +_020B7C90: + ldrh r2, [r5, #0x30] + ldr r0, [r5, #0x38] + ldr r3, [r5, #0x2c] + ldr r1, _020B7CD8 ; =0x0000FFFF + add r0, r5, r0 + and r1, r3, r1 + mov r1, r1, lsl #0x3 + mov r2, r2, lsl #0x3 + bl GX_LoadTexPltt + ldrh r0, [r5, #0x32] + cmp r4, #0x0 + addeq sp, sp, #0x4 + orr r0, r0, #0x1 + strh r0, [r5, #0x32] + ldmeqia sp!, {r4-r5,pc} + bl GX_EndLoadTexPltt + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + .balign 4 +_020B7CD8: .word 0x0000FFFF + arm_func_end NNS_G3dPlttLoad + + arm_func_start NNS_G3dPlttSetPlttKey +NNS_G3dPlttSetPlttKey: ; 0x020B7CDC + str r1, [r0, #0x2c] + bx lr + arm_func_end NNS_G3dPlttSetPlttKey + + arm_func_start NNS_G3dPlttGetRequiredSize +NNS_G3dPlttGetRequiredSize: ; 0x020B7CE4 + ldrh r0, [r0, #0x30] + mov r0, r0, lsl #0x3 + bx lr + arm_func_end NNS_G3dPlttGetRequiredSize + + arm_func_start NNS_G3dTexReleaseTexKey +NNS_G3dTexReleaseTexKey: ; 0x020B7CF0 + ldrh r12, [r0, #0x10] + mov r3, #0x0 + bic r12, r12, #0x1 + strh r12, [r0, #0x10] + ldrh r12, [r0, #0x20] + bic r12, r12, #0x1 + strh r12, [r0, #0x20] + ldr r12, [r0, #0x8] + str r12, [r1, #0x0] + str r3, [r0, #0x8] + ldr r1, [r0, #0x18] + str r1, [r2, #0x0] + str r3, [r0, #0x18] + bx lr + arm_func_end NNS_G3dTexReleaseTexKey + + arm_func_start NNS_G3dTexLoad +NNS_G3dTexLoad: ; 0x020B7D28 + stmdb sp!, {r4-r9,lr} + sub sp, sp, #0x4 + movs r8, r1 + mov r9, r0 + beq _020B7D40 + bl GX_BeginLoadTex +_020B7D40: + ldrh r0, [r9, #0xc] + movs r2, r0, lsl #0x3 + beq _020B7D74 + ldr r1, [r9, #0x8] + ldr r0, _020B7DF4 ; =0x0000FFFF + ldr r3, [r9, #0x14] + and r1, r1, r0 + add r0, r9, r3 + mov r1, r1, lsl #0x3 + bl GX_LoadTex + ldrh r0, [r9, #0x10] + orr r0, r0, #0x1 + strh r0, [r9, #0x10] +_020B7D74: + ldrh r0, [r9, #0x1c] + movs r7, r0, lsl #0x3 + beq _020B7DDC + ldr r1, [r9, #0x18] + ldr r0, _020B7DF4 ; =0x0000FFFF + ldr r3, [r9, #0x24] + and r4, r1, r0 + mov r5, r4, lsl #0x3 + ldr r6, [r9, #0x28] + mov r1, r5 + mov r2, r7 + add r0, r9, r3 + add r6, r9, r6 + bl GX_LoadTex + ldr r0, _020B7DF8 ; =0x0001FFFF + and r1, r5, #0x40000 + and r0, r0, r4, lsl #0x3 + mov r0, r0, lsr #0x1 + add r2, r0, #0x20000 + mov r0, r6 + add r1, r2, r1, lsr #0x2 + mov r2, r7, lsr #0x1 + bl GX_LoadTex + ldrh r0, [r9, #0x20] + orr r0, r0, #0x1 + strh r0, [r9, #0x20] +_020B7DDC: + cmp r8, #0x0 + addeq sp, sp, #0x4 + ldmeqia sp!, {r4-r9,pc} + bl GX_EndLoadTex + add sp, sp, #0x4 + ldmia sp!, {r4-r9,pc} + .balign 4 +_020B7DF4: .word 0x0000FFFF +_020B7DF8: .word 0x0001FFFF + arm_func_end NNS_G3dTexLoad + + arm_func_start NNS_G3dTexSetTexKey +NNS_G3dTexSetTexKey: ; 0x020B7DFC + cmp r1, #0x0 + strne r1, [r0, #0x8] + cmp r2, #0x0 + strne r2, [r0, #0x18] + bx lr + arm_func_end NNS_G3dTexSetTexKey + + arm_func_start NNS_G3dTex4x4GetRequiredSize +NNS_G3dTex4x4GetRequiredSize: ; 0x020B7E10 + ldrh r0, [r0, #0x1c] + mov r0, r0, lsl #0x3 + bx lr + arm_func_end NNS_G3dTex4x4GetRequiredSize + + arm_func_start NNS_G3dTexGetRequiredSize +NNS_G3dTexGetRequiredSize: ; 0x020B7E1C + ldrh r0, [r0, #0xc] + mov r0, r0, lsl #0x3 + bx lr + arm_func_end NNS_G3dTexGetRequiredSize + + arm_func_start NNS_G3dRenderObjRemoveAnmObj +NNS_G3dRenderObjRemoveAnmObj: ; 0x020B7E28 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r5, r0 + add r0, r5, #0x8 + mov r4, r1 + bl removeLink_ + cmp r0, #0x0 + bne _020B7E74 + mov r1, r4 + add r0, r5, #0x10 + bl removeLink_ + cmp r0, #0x0 + bne _020B7E74 + mov r1, r4 + add r0, r5, #0x18 + bl removeLink_ + cmp r0, #0x0 + addeq sp, sp, #0x4 + ldmeqia sp!, {r4-r5,pc} +_020B7E74: + ldr r0, [r5, #0x0] + orr r0, r0, #0x10 + str r0, [r5, #0x0] + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + arm_func_end NNS_G3dRenderObjRemoveAnmObj + + arm_func_start removeLink_ +removeLink_: ; 0x020B7E88 + ldr r2, [r0, #0x0] + cmp r2, #0x0 + moveq r0, #0x0 + bxeq lr + cmp r2, r1 + bne _020B7EB8 + ldr r3, [r2, #0x10] + mov r2, #0x0 + str r3, [r0, #0x0] + str r2, [r1, #0x10] + mov r0, #0x1 + bx lr +_020B7EB8: + ldr r3, [r2, #0x10] + cmp r3, #0x0 + beq _020B7EF4 +_020B7EC4: + cmp r3, r1 + bne _020B7EE4 + ldr r1, [r3, #0x10] + mov r0, #0x0 + str r1, [r2, #0x10] + str r0, [r3, #0x10] + mov r0, #0x1 + bx lr +_020B7EE4: + mov r2, r3 + ldr r3, [r3, #0x10] + cmp r3, #0x0 + bne _020B7EC4 +_020B7EF4: + mov r0, #0x0 + bx lr + arm_func_end removeLink_ + + arm_func_start NNS_G3dRenderObjAddAnmObj +NNS_G3dRenderObjAddAnmObj: ; 0x020B7EFC + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r4, r1 + ldr r2, [r4, #0x8] + mov r5, r0 + ldrb r0, [r2, #0x0] + cmp r0, #0x4a + beq _020B7F50 + cmp r0, #0x4d + beq _020B7F34 + cmp r0, #0x56 + beq _020B7F6C + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} +_020B7F34: + add r0, r5, #0x3c + bl updateHintVec_ + mov r1, r4 + add r0, r5, #0x8 + bl addLink_ + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} +_020B7F50: + add r0, r5, #0x44 + bl updateHintVec_ + mov r1, r4 + add r0, r5, #0x10 + bl addLink_ + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} +_020B7F6C: + add r0, r5, #0x4c + bl updateHintVec_ + mov r1, r4 + add r0, r5, #0x18 + bl addLink_ + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + arm_func_end NNS_G3dRenderObjAddAnmObj + + local_arm_func_start updateHintVec_ +updateHintVec_: ; 0x020B7F88 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + cmp r1, #0x0 + addeq sp, sp, #0x4 + ldmeqia sp!, {r4-r5,pc} + mov r3, #0x1 + mov r4, #0x0 +_020B7FA4: + ldrb r2, [r1, #0x19] + mov r5, r4 + cmp r2, #0x0 + ble _020B7FE4 +_020B7FB4: + add r2, r1, r5, lsl #0x1 + ldrh r2, [r2, #0x1a] + ands r2, r2, #0x100 + movne lr, r5, asr #0x5 + andne r2, r5, #0x1f + ldrne r12, [r0, lr, lsl #0x2] + add r5, r5, #0x1 + orrne r2, r12, r3, lsl r2 + strne r2, [r0, lr, lsl #0x2] + ldrb r2, [r1, #0x19] + cmp r5, r2 + blt _020B7FB4 +_020B7FE4: + ldr r1, [r1, #0x10] + cmp r1, #0x0 + bne _020B7FA4 + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + arm_func_end updateHintVec_ + + arm_func_start addLink_ +addLink_: ; 0x020B7FF8 + ldr r12, [r0, #0x0] + cmp r12, #0x0 + streq r1, [r0, #0x0] + bxeq lr + ldr r3, [r12, #0x10] + cmp r3, #0x0 + bne _020B8058 + ldrb r3, [r12, #0x18] + ldrb r2, [r1, #0x18] + cmp r3, r2 + bls _020B8050 + ldr r2, [r1, #0x10] + mov r3, r1 + cmp r2, #0x0 + beq _020B8044 +_020B8034: + ldr r3, [r3, #0x10] + ldr r2, [r3, #0x10] + cmp r2, #0x0 + bne _020B8034 +_020B8044: + str r12, [r3, #0x10] + str r1, [r0, #0x0] + bx lr +_020B8050: + str r1, [r12, #0x10] + bx lr +_020B8058: + cmp r3, #0x0 + beq _020B80AC + ldrb r2, [r1, #0x18] +_020B8064: + ldrb r0, [r3, #0x18] + cmp r0, r2 + blo _020B809C + ldr r0, [r1, #0x10] + mov r2, r1 + cmp r0, #0x0 + beq _020B8090 +_020B8080: + ldr r2, [r2, #0x10] + ldr r0, [r2, #0x10] + cmp r0, #0x0 + bne _020B8080 +_020B8090: + str r1, [r12, #0x10] + str r3, [r2, #0x10] + bx lr +_020B809C: + mov r12, r3 + ldr r3, [r3, #0x10] + cmp r3, #0x0 + bne _020B8064 +_020B80AC: + str r1, [r12, #0x10] + bx lr + arm_func_end addLink_ + + arm_func_start NNS_G3dRenderObjInit +NNS_G3dRenderObjInit: ; 0x020B80B4 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r5, r0 + mov r4, r1 + mov r1, r5 + mov r0, #0x0 + mov r2, #0x54 + bl MIi_CpuClear32 + ldr r0, _020B8104 ; =NNS_G3dFuncBlendMatDefault + ldr r1, _020B8108 ; =NNS_G3dFuncBlendJntDefault + ldr r2, [r0, #0x0] + ldr r0, _020B810C ; =NNS_G3dFuncBlendVisDefault + str r2, [r5, #0xc] + ldr r1, [r1, #0x0] + str r1, [r5, #0x14] + ldr r0, [r0, #0x0] + str r0, [r5, #0x1c] + str r4, [r5, #0x4] + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + .balign 4 +_020B8104: .word NNS_G3dFuncBlendMatDefault +_020B8108: .word NNS_G3dFuncBlendJntDefault +_020B810C: .word NNS_G3dFuncBlendVisDefault + arm_func_end NNS_G3dRenderObjInit + + arm_func_start NNS_G3dAnmObjInit +NNS_G3dAnmObjInit: ; 0x020B8110 + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + mov r12, #0x0 + str r12, [r0, #0x0] + str r1, [r0, #0x8] + str r12, [r0, #0x10] + mov r4, #0x7f + strb r4, [r0, #0x18] + mov r4, #0x1000 + str r4, [r0, #0x4] + ldr lr, _020B81A4 ; =NNS_G3dAnmFmtNum + str r3, [r0, #0x14] + ldr r6, [lr, #0x0] + cmp r6, #0x0 + addls sp, sp, #0x4 + ldmlsia sp!, {r4-r7,pc} + ldrb r7, [r1, #0x0] + ldr r4, _020B81A8 ; =NNS_G3dAnmObjInitFuncArray +_020B8158: + ldrb r3, [r4, r12, lsl #0x3] + mov r5, r12, lsl #0x3 + cmp r7, r3 + bne _020B8190 + add r3, r4, r5 + ldrh lr, [r1, #0x2] + ldrh r3, [r3, #0x2] + cmp lr, r3 + bne _020B8190 + ldr r3, _020B81AC ; =NNS_G3dAnmObjInitFuncArray + 0x4 + ldr r3, [r3, r5] + blx r3 + add sp, sp, #0x4 + ldmia sp!, {r4-r7,pc} +_020B8190: + add r12, r12, #0x1 + cmp r12, r6 + blo _020B8158 + add sp, sp, #0x4 + ldmia sp!, {r4-r7,pc} + .balign 4 +_020B81A4: .word NNS_G3dAnmFmtNum +_020B81A8: .word NNS_G3dAnmObjInitFuncArray +_020B81AC: .word NNS_G3dAnmObjInitFuncArray + 0x4 + arm_func_end NNS_G3dAnmObjInit + + arm_func_start NNS_G3dAnmObjCalcSizeRequired +NNS_G3dAnmObjCalcSizeRequired: ; 0x020B81B0 + ldrb r0, [r0, #0x0] + cmp r0, #0x4a + beq _020B81E4 + cmp r0, #0x4d + beq _020B81D0 + cmp r0, #0x56 + beq _020B81E4 + b _020B81F8 +_020B81D0: + ldrb r0, [r1, #0x18] + mov r0, r0, lsl #0x1 + add r0, r0, #0x1c + bic r0, r0, #0x3 + bx lr +_020B81E4: + ldrb r0, [r1, #0x17] + mov r0, r0, lsl #0x1 + add r0, r0, #0x1c + bic r0, r0, #0x3 + bx lr +_020B81F8: + mov r0, #0x0 + bx lr + arm_func_end NNS_G3dAnmObjCalcSizeRequired diff --git a/arm9/asm/NNS_G3D_maya.s b/arm9/asm/NNS_G3D_maya.s new file mode 100644 index 00000000..7a675533 --- /dev/null +++ b/arm9/asm/NNS_G3D_maya.s @@ -0,0 +1,594 @@ + .include "asm/macros.inc" + .include "global.inc" + + .section .data +calcTexMtx_: ; 0x021067B0 + .word texmtxCalc_flag_ + .word texmtxCalc_flagS_ + .word texmtxCalc_flagR_ + .word texmtxCalc_flagRS_ + .word texmtxCalc_flagT_ + .word texmtxCalc_flagTS_ + .word texmtxCalc_flagTR_ + .word texmtxCalc_flagTRS_ + + .section .text + + arm_func_start NNSi_G3dSendTexSRTMaya +NNSi_G3dSendTexSRTMaya: ; 0x020BE6E4 + stmdb sp!, {r4,lr} + sub sp, sp, #0x50 + mov r4, r0 + ldr r0, [r4, #0x0] + mov r1, #0x0 + ands r0, r0, #0x8 + ldrne r0, _020BE820 ; =0x00101610 + mov r3, #0x3 + strne r0, [sp, #0x0] + ldreq r0, _020BE824 ; =0x00101810 + mov r2, #0x2 + streq r0, [sp, #0x0] + mov r0, #0x1000 + str r0, [sp, #0x44] + str r3, [sp, #0x4] + str r2, [sp, #0x48] + str r1, [sp, #0x40] + str r1, [sp, #0x34] + str r1, [sp, #0x30] + str r1, [sp, #0x2c] + str r1, [sp, #0x28] + str r1, [sp, #0x24] + str r1, [sp, #0x20] + str r1, [sp, #0x14] + str r1, [sp, #0x10] + ldr r1, [r4, #0x0] + ldr r0, _020BE828 ; =calcTexMtx_ + and r1, r1, #0x7 + ldr r2, [r0, r1, lsl #0x2] + add r0, sp, #0x8 + mov r1, r4 + blx r2 + ldr r3, [r4, #0x30] + cmp r3, #0x1000 + beq _020BE7B4 + ldr r0, [sp, #0x8] + ldr r1, [sp, #0xc] + smull r2, r0, r3, r0 + mov r2, r2, lsr #0xc + orr r2, r2, r0, lsl #0x14 + str r2, [sp, #0x8] + ldr r2, [r4, #0x30] + ldr r0, [sp, #0x38] + smull r3, r1, r2, r1 + mov r2, r3, lsr #0xc + orr r2, r2, r1, lsl #0x14 + str r2, [sp, #0xc] + ldr r1, [r4, #0x30] + smull r2, r0, r1, r0 + mov r1, r2, lsr #0xc + orr r1, r1, r0, lsl #0x14 + str r1, [sp, #0x38] +_020BE7B4: + ldr r3, [r4, #0x34] + cmp r3, #0x1000 + beq _020BE804 + ldr r0, [sp, #0x18] + ldr r1, [sp, #0x1c] + smull r2, r0, r3, r0 + mov r2, r2, lsr #0xc + orr r2, r2, r0, lsl #0x14 + str r2, [sp, #0x18] + ldr r2, [r4, #0x34] + ldr r0, [sp, #0x3c] + smull r3, r1, r2, r1 + mov r2, r3, lsr #0xc + orr r2, r2, r1, lsl #0x14 + str r2, [sp, #0x1c] + ldr r1, [r4, #0x34] + smull r2, r0, r1, r0 + mov r1, r2, lsr #0xc + orr r1, r1, r0, lsl #0x14 + str r1, [sp, #0x3c] +_020BE804: + add r1, sp, #0x0 + ldr r0, [sp, #0x0] + add r1, r1, #0x4 + mov r2, #0x12 + bl NNS_G3dGeBufferOP_N + add sp, sp, #0x50 + ldmia sp!, {r4,pc} + .balign 4 +_020BE820: .word 0x00101610 +_020BE824: .word 0x00101810 +_020BE828: .word calcTexMtx_ + arm_func_end NNSi_G3dSendTexSRTMaya + + local_arm_func_start texmtxCalc_flagTRS_ +texmtxCalc_flagTRS_: ; 0x020BE82C + mov r2, #0x1000 + str r2, [r0, #0x0] + mov r1, #0x0 + str r1, [r0, #0x4] + str r1, [r0, #0x10] + str r2, [r0, #0x14] + str r1, [r0, #0x30] + str r1, [r0, #0x34] + bx lr + arm_func_end texmtxCalc_flagTRS_ + + local_arm_func_start texmtxCalc_flagTR_ +texmtxCalc_flagTR_: ; 0x020BE850 + ldr r2, [r1, #0x18] + mov r12, #0x0 + str r2, [r0, #0x0] + ldr r2, [r1, #0x1c] + str r2, [r0, #0x14] + str r12, [r0, #0x4] + str r12, [r0, #0x30] + ldr r2, [r1, #0x1c] + ldrh r3, [r1, #0x2e] + mov r1, r2, lsl #0x1 + rsb r1, r1, #0x0 + add r1, r1, #0x2000 + mul r1, r3, r1 + mov r1, r1, lsl #0x3 + str r1, [r0, #0x34] + str r12, [r0, #0x10] + bx lr + arm_func_end texmtxCalc_flagTR_ + + local_arm_func_start texmtxCalc_flagTS_ +texmtxCalc_flagTS_: ; 0x020BE894 + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + mov r5, r1 + ldrh r2, [r5, #0x2c] + ldrh r1, [r5, #0x2e] + mov r6, r0 + mov r4, r2, lsl #0xc + mov r7, r1, lsl #0xc + mov r0, r7 + mov r1, r4 + bl FX_DivAsync + ldrsh r0, [r5, #0x22] + str r0, [r6, #0x0] + ldrsh r0, [r5, #0x22] + str r0, [r6, #0x14] + bl FX_GetDivResult + ldrsh r2, [r5, #0x20] + mov r1, r7 + rsb r2, r2, #0x0 + mul r0, r2, r0 + mov r2, r0, asr #0xc + mov r0, r4 + str r2, [r6, #0x4] + bl FX_DivAsync + ldrsh r1, [r5, #0x20] + ldrsh r0, [r5, #0x22] + ldrh r2, [r5, #0x2c] + add r0, r1, r0 + rsb r0, r0, #0x0 + add r0, r0, #0x1000 + mul r0, r2, r0 + mov r0, r0, lsl #0x3 + str r0, [r6, #0x30] + ldrsh r1, [r5, #0x20] + ldrsh r0, [r5, #0x22] + ldrh r2, [r5, #0x2e] + sub r0, r1, r0 + add r0, r0, #0x1000 + mul r0, r2, r0 + mov r0, r0, lsl #0x3 + str r0, [r6, #0x34] + bl FX_GetDivResult + ldrsh r1, [r5, #0x20] + mul r0, r1, r0 + mov r0, r0, asr #0xc + str r0, [r6, #0x10] + add sp, sp, #0x4 + ldmia sp!, {r4-r7,pc} + arm_func_end texmtxCalc_flagTS_ + + local_arm_func_start texmtxCalc_flagT_ +texmtxCalc_flagT_: ; 0x020BE954 + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0x4 + mov r9, r1 + ldrh r2, [r9, #0x2c] + ldrh r1, [r9, #0x2e] + mov r10, r0 + mov r8, r2, lsl #0xc + mov r11, r1, lsl #0xc + mov r0, r11 + mov r1, r8 + bl FX_DivAsync + ldrsh r5, [r9, #0x22] + ldr r3, [r9, #0x18] + ldrsh r0, [r9, #0x20] + ldr r4, [r9, #0x1c] + smull r2, r1, r3, r5 + mov r6, r2, lsr #0xc + orr r6, r6, r1, lsl #0x14 + smull r2, r1, r3, r0 + mov r7, r2, lsr #0xc + orr r7, r7, r1, lsl #0x14 + smull r3, r2, r4, r0 + smull r1, r0, r4, r5 + mov r5, r3, lsr #0xc + orr r5, r5, r2, lsl #0x14 + mov r4, r1, lsr #0xc + orr r4, r4, r0, lsl #0x14 + str r6, [r10, #0x0] + str r4, [r10, #0x14] + bl FX_GetDivResult + mov r1, r11 + rsb r2, r5, #0x0 + mul r0, r2, r0 + mov r0, r0, asr #0xc + str r0, [r10, #0x4] + mov r0, r8 + bl FX_DivAsync + sub r1, r5, r4 + add r0, r7, r6 + ldrh r3, [r9, #0x2c] + ldr r2, [r9, #0x18] + sub r0, r2, r0 + mul r0, r3, r0 + mov r0, r0, lsl #0x3 + str r0, [r10, #0x30] + ldrh r2, [r9, #0x2e] + ldr r0, [r9, #0x1c] + sub r0, r1, r0 + add r0, r0, #0x2000 + mul r0, r2, r0 + mov r0, r0, lsl #0x3 + str r0, [r10, #0x34] + bl FX_GetDivResult + mul r0, r7, r0 + mov r0, r0, asr #0xc + str r0, [r10, #0x10] + add sp, sp, #0x4 + ldmia sp!, {r4-r11,pc} + arm_func_end texmtxCalc_flagT_ + + local_arm_func_start texmtxCalc_flagRS_ +texmtxCalc_flagRS_: ; 0x020BEA3C + mov r2, #0x1000 + str r2, [r0, #0x0] + str r2, [r0, #0x14] + mov r12, #0x0 + str r12, [r0, #0x4] + ldrh r2, [r1, #0x2c] + ldr r3, [r1, #0x24] + mul r2, r3, r2 + rsb r2, r2, #0x0 + mov r2, r2, lsl #0x4 + str r2, [r0, #0x30] + ldrh r2, [r1, #0x2e] + ldr r1, [r1, #0x28] + mul r2, r1, r2 + mov r1, r2, lsl #0x4 + str r1, [r0, #0x34] + str r12, [r0, #0x10] + bx lr + arm_func_end texmtxCalc_flagRS_ + + local_arm_func_start texmtxCalc_flagR_ +texmtxCalc_flagR_: ; 0x020BEA84 + stmdb sp!, {r4,lr} + ldr r3, [r1, #0x18] + mov r2, #0x0 + str r3, [r0, #0x0] + ldr r3, [r1, #0x1c] + str r3, [r0, #0x14] + str r2, [r0, #0x4] + ldr r4, [r1, #0x18] + ldr r3, [r1, #0x24] + ldrh lr, [r1, #0x2c] + smull r12, r3, r4, r3 + mov r4, r12, lsr #0x8 + orr r4, r4, r3, lsl #0x18 + rsb r3, r4, #0x0 + mul r3, lr, r3 + str r3, [r0, #0x30] + ldr r4, [r1, #0x1c] + ldr r12, [r1, #0x28] + mov r3, r4, lsl #0x1 + smull lr, r12, r4, r12 + rsb r4, r3, #0x0 + mov r3, lr, lsr #0x8 + ldrh lr, [r1, #0x2e] + add r1, r4, #0x2000 + orr r3, r3, r12, lsl #0x18 + mul r4, lr, r1 + mul r1, lr, r3 + add r1, r1, r4, lsl #0x3 + str r1, [r0, #0x34] + str r2, [r0, #0x10] + ldmia sp!, {r4,pc} + arm_func_end texmtxCalc_flagR_ + + local_arm_func_start texmtxCalc_flagS_ +texmtxCalc_flagS_: ; 0x020BEB00 + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + mov r5, r1 + ldrh r2, [r5, #0x2c] + ldrh r1, [r5, #0x2e] + mov r6, r0 + mov r4, r2, lsl #0xc + mov r7, r1, lsl #0xc + mov r0, r7 + mov r1, r4 + bl FX_DivAsync + ldrsh r0, [r5, #0x22] + str r0, [r6, #0x0] + ldrsh r0, [r5, #0x22] + str r0, [r6, #0x14] + bl FX_GetDivResult + ldrsh r2, [r5, #0x20] + mov r1, r7 + rsb r2, r2, #0x0 + mul r0, r2, r0 + mov r2, r0, asr #0xc + mov r0, r4 + str r2, [r6, #0x4] + bl FX_DivAsync + ldrsh r2, [r5, #0x20] + ldrsh r1, [r5, #0x22] + ldrh r3, [r5, #0x2c] + ldr r0, [r5, #0x24] + add r1, r2, r1 + rsb r1, r1, #0x0 + add r1, r1, #0x1000 + mul r2, r3, r1 + mul r1, r0, r3 + mov r0, r2, lsl #0x3 + sub r0, r0, r1, lsl #0x4 + str r0, [r6, #0x30] + ldrsh r2, [r5, #0x20] + ldrsh r1, [r5, #0x22] + ldrh r3, [r5, #0x2e] + ldr r0, [r5, #0x28] + sub r1, r2, r1 + add r1, r1, #0x1000 + mul r2, r3, r1 + mul r1, r0, r3 + mov r0, r2, lsl #0x3 + add r0, r0, r1, lsl #0x4 + str r0, [r6, #0x34] + bl FX_GetDivResult + ldrsh r1, [r5, #0x20] + mul r0, r1, r0 + mov r0, r0, asr #0xc + str r0, [r6, #0x10] + add sp, sp, #0x4 + ldmia sp!, {r4-r7,pc} + arm_func_end texmtxCalc_flagS_ + + local_arm_func_start texmtxCalc_flag_ +texmtxCalc_flag_: ; 0x020BEBD8 + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0x4 + mov r9, r1 + ldrh r2, [r9, #0x2c] + ldrh r1, [r9, #0x2e] + mov r10, r0 + mov r8, r2, lsl #0xc + mov r11, r1, lsl #0xc + mov r0, r11 + mov r1, r8 + bl FX_DivAsync + ldrsh r5, [r9, #0x22] + ldr r3, [r9, #0x18] + ldrsh r0, [r9, #0x20] + ldr r4, [r9, #0x1c] + smull r2, r1, r3, r5 + mov r6, r2, lsr #0xc + orr r6, r6, r1, lsl #0x14 + smull r2, r1, r3, r0 + mov r7, r2, lsr #0xc + orr r7, r7, r1, lsl #0x14 + smull r3, r2, r4, r0 + smull r1, r0, r4, r5 + mov r5, r3, lsr #0xc + orr r5, r5, r2, lsl #0x14 + mov r4, r1, lsr #0xc + orr r4, r4, r0, lsl #0x14 + str r6, [r10, #0x0] + str r4, [r10, #0x14] + bl FX_GetDivResult + mov r1, r11 + rsb r2, r5, #0x0 + mul r0, r2, r0 + mov r0, r0, asr #0xc + str r0, [r10, #0x4] + mov r0, r8 + bl FX_DivAsync + sub r1, r5, r4 + add r2, r7, r6 + ldr r5, [r9, #0x18] + ldrh r0, [r9, #0x2c] + sub r3, r5, r2 + ldr r2, [r9, #0x24] + mul r4, r0, r3 + smull r3, r2, r5, r2 + mov r4, r4, lsl #0x3 + mov r3, r3, lsr #0x8 + orr r3, r3, r2, lsl #0x18 + mul r2, r0, r3 + sub r0, r4, r2 + str r0, [r10, #0x30] + ldr r4, [r9, #0x1c] + ldrh r3, [r9, #0x2e] + sub r0, r1, r4 + add r0, r0, #0x2000 + mul r2, r3, r0 + ldr r0, [r9, #0x28] + smull r1, r0, r4, r0 + mov r1, r1, lsr #0x8 + orr r1, r1, r0, lsl #0x18 + mul r0, r3, r1 + add r0, r0, r2, lsl #0x3 + str r0, [r10, #0x34] + bl FX_GetDivResult + mul r0, r7, r0 + mov r0, r0, asr #0xc + str r0, [r10, #0x10] + add sp, sp, #0x4 + ldmia sp!, {r4-r11,pc} + arm_func_end texmtxCalc_flag_ + + arm_func_start NNSi_G3dGetJointScaleMaya +NNSi_G3dGetJointScaleMaya: ; 0x020BECEC + stmdb sp!, {r4-r8,lr} + mov r12, r0 + ands r0, r3, #0x4 + ldrb r3, [r2, #0x3] + beq _020BED40 + ldr r1, [r12, #0x0] + ands r0, r3, #0x2 + orr r0, r1, #0x1 + str r0, [r12, #0x0] + beq _020BEDB8 + ldr r0, _020BEE2C ; =NNS_G3dRS + ldrb r7, [r2, #0x1] + ldr r0, [r0, #0x0] + mov r1, #0x1 + add r6, r0, #0xc4 + mov r5, r7, lsr #0x5 + ldr r4, [r6, r5, lsl #0x2] + and r0, r7, #0x1f + orr r0, r4, r1, lsl r0 + str r0, [r6, r5, lsl #0x2] + b _020BEDB8 +_020BED40: + ldr r4, [r1, #0x0] + ands r0, r3, #0x2 + str r4, [r12, #0x4] + ldr r0, [r1, #0x4] + str r0, [r12, #0x8] + ldr r0, [r1, #0x8] + str r0, [r12, #0xc] + beq _020BEDB8 + ldr lr, _020BEE2C ; =NNS_G3dRS + ldrb r0, [r2, #0x1] + ldr r4, [lr, #0x0] + mov lr, #0x18 + add r8, r4, #0xc4 + mov r7, r0, lsr #0x5 + and r4, r0, #0x1f + mov r5, #0x1 + mvn r4, r5, lsl r4 + ldr r6, [r8, r7, lsl #0x2] + mul r5, r0, lr + and r0, r6, r4 + str r0, [r8, r7, lsl #0x2] + ldr r4, [r1, #0xc] + ldr r0, _020BEE30 ; =NNS_G3dRSOnGlb + 0xE0C + ldr lr, _020BEE34 ; =NNS_G3dRSOnGlb + 0xE10 + str r4, [r0, r5] + ldr r4, [r1, #0x10] + ldr r0, _020BEE38 ; =NNS_G3dRSOnGlb + 0xE14 + str r4, [lr, r5] + ldr r1, [r1, #0x14] + str r1, [r0, r5] +_020BEDB8: + ands r0, r3, #0x1 + beq _020BEE1C + ldrb r0, [r2, #0x2] + ldr r2, [r12, #0x0] + ldr r1, _020BEE2C ; =NNS_G3dRS + orr r2, r2, #0x20 + str r2, [r12, #0x0] + ldr r2, [r1, #0x0] + mov r1, r0, lsr #0x5 + add r1, r2, r1, lsl #0x2 + and r2, r0, #0x1f + mov r3, #0x1 + mov r2, r3, lsl r2 + ldr r1, [r1, #0xc4] + ands r1, r2, r1 + ldrne r0, [r12, #0x0] + orrne r0, r0, #0x8 + strne r0, [r12, #0x0] + bne _020BEE1C + ldr r2, _020BEE30 ; =NNS_G3dRSOnGlb + 0xE0C + mov r1, #0x18 + mla r1, r0, r1, r2 + add r3, r12, #0x10 + ldmia r1, {r0-r2} + stmia r3, {r0-r2} +_020BEE1C: + ldr r0, [r12, #0x0] + orr r0, r0, #0x10 + str r0, [r12, #0x0] + ldmia sp!, {r4-r8,pc} + .balign 4 +_020BEE2C: .word NNS_G3dRS +_020BEE30: .word NNS_G3dRSOnGlb + 0xE0C +_020BEE34: .word NNS_G3dRSOnGlb + 0xE10 +_020BEE38: .word NNS_G3dRSOnGlb + 0xE14 + arm_func_end NNSi_G3dGetJointScaleMaya + + arm_func_start NNSi_G3dSendJointSRTMaya +NNSi_G3dSendJointSRTMaya: ; 0x020BEE3C + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r5, r0 + ldr r1, [r5, #0x0] + mov r4, #0x0 + ands r0, r1, #0x4 + moveq r4, #0x1 + ands r0, r1, #0x20 + beq _020BEE94 + ands r0, r1, #0x8 + bne _020BEE94 + cmp r4, #0x0 + beq _020BEE84 + add r1, r5, #0x4c + mov r0, #0x1c + mov r2, #0x3 + bl NNS_G3dGeBufferOP_N + mov r4, #0x0 +_020BEE84: + add r1, r5, #0x10 + mov r0, #0x1b + mov r2, #0x3 + bl NNS_G3dGeBufferOP_N +_020BEE94: + ldr r0, [r5, #0x0] + ands r0, r0, #0x2 + bne _020BEED0 + cmp r4, #0x0 + beq _020BEEBC + add r1, r5, #0x28 + mov r0, #0x19 + mov r2, #0xc + bl NNS_G3dGeBufferOP_N + b _020BEEE8 +_020BEEBC: + add r1, r5, #0x28 + mov r0, #0x1a + mov r2, #0x9 + bl NNS_G3dGeBufferOP_N + b _020BEEE8 +_020BEED0: + cmp r4, #0x0 + beq _020BEEE8 + add r1, r5, #0x4c + mov r0, #0x1c + mov r2, #0x3 + bl NNS_G3dGeBufferOP_N +_020BEEE8: + ldr r0, [r5, #0x0] + ands r0, r0, #0x1 + addne sp, sp, #0x4 + ldmneia sp!, {r4-r5,pc} + add r1, r5, #0x4 + mov r0, #0x1b + mov r2, #0x3 + bl NNS_G3dGeBufferOP_N + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + arm_func_end NNSi_G3dSendJointSRTMaya diff --git a/arm9/asm/NNS_G3D_mem.s b/arm9/asm/NNS_G3D_mem.s new file mode 100644 index 00000000..e01336e5 --- /dev/null +++ b/arm9/asm/NNS_G3D_mem.s @@ -0,0 +1,25 @@ + .include "asm/macros.inc" + .include "global.inc" + + .section .text + + arm_func_start NNS_G3dFreeAnmObj +NNS_G3dFreeAnmObj: ; 0x020BB8C4 + ldr ip, _020BB8CC ; =NNS_FndFreeToAllocator + bx r12 + .balign 4 +_020BB8CC: .word NNS_FndFreeToAllocator + arm_func_end NNS_G3dFreeAnmObj + + arm_func_start NNS_G3dAllocAnmObj +NNS_G3dAllocAnmObj: ; 0x020BB8D0 + stmdb sp!, {r4,lr} + mov r4, r0 + mov r0, r1 + mov r1, r2 + bl NNS_G3dAnmObjCalcSizeRequired + mov r1, r0 + mov r0, r4 + bl NNS_FndAllocFromAllocator + ldmia sp!, {r4,pc} + arm_func_end NNS_G3dAllocAnmObj diff --git a/arm9/asm/NNS_G3D_model.s b/arm9/asm/NNS_G3D_model.s new file mode 100644 index 00000000..958a9b8a --- /dev/null +++ b/arm9/asm/NNS_G3D_model.s @@ -0,0 +1,656 @@ + .include "asm/macros.inc" + .include "global.inc" + + .section .text + + arm_func_start NNS_G3dMdlSetMdlXLDepthUpdateAll +NNS_G3dMdlSetMdlXLDepthUpdateAll: ; 0x020BB8F4 + stmdb sp!, {r4-r6,lr} + mov r6, r0 + ldrb r0, [r6, #0x18] + mov r5, r1 + mov r4, #0x0 + cmp r0, #0x0 + ldmlsia sp!, {r4-r6,pc} +_020BB910: + mov r0, r6 + mov r1, r4 + mov r2, r5 + bl NNS_G3dMdlSetMdlXLDepthUpdate + ldrb r0, [r6, #0x18] + add r4, r4, #0x1 + cmp r4, r0 + blo _020BB910 + ldmia sp!, {r4-r6,pc} + arm_func_end NNS_G3dMdlSetMdlXLDepthUpdateAll + + arm_func_start NNS_G3dMdlSetMdlFarClipAll +NNS_G3dMdlSetMdlFarClipAll: ; 0x020BB934 + stmdb sp!, {r4-r6,lr} + mov r6, r0 + ldrb r0, [r6, #0x18] + mov r5, r1 + mov r4, #0x0 + cmp r0, #0x0 + ldmlsia sp!, {r4-r6,pc} +_020BB950: + mov r0, r6 + mov r1, r4 + mov r2, r5 + bl NNS_G3dMdlSetMdlFarClip + ldrb r0, [r6, #0x18] + add r4, r4, #0x1 + cmp r4, r0 + blo _020BB950 + ldmia sp!, {r4-r6,pc} + arm_func_end NNS_G3dMdlSetMdlFarClipAll + + arm_func_start NNS_G3dMdlSetMdl1DotAll +NNS_G3dMdlSetMdl1DotAll: ; 0x020BB974 + stmdb sp!, {r4-r6,lr} + mov r6, r0 + ldrb r0, [r6, #0x18] + mov r5, r1 + mov r4, #0x0 + cmp r0, #0x0 + ldmlsia sp!, {r4-r6,pc} +_020BB990: + mov r0, r6 + mov r1, r4 + mov r2, r5 + bl NNS_G3dMdlSetMdl1Dot + ldrb r0, [r6, #0x18] + add r4, r4, #0x1 + cmp r4, r0 + blo _020BB990 + ldmia sp!, {r4-r6,pc} + arm_func_end NNS_G3dMdlSetMdl1DotAll + + arm_func_start NNS_G3dMdlSetMdlDepthTestCondAll +NNS_G3dMdlSetMdlDepthTestCondAll: ; 0x020BB9B4 + stmdb sp!, {r4-r6,lr} + mov r6, r0 + ldrb r0, [r6, #0x18] + mov r5, r1 + mov r4, #0x0 + cmp r0, #0x0 + ldmlsia sp!, {r4-r6,pc} +_020BB9D0: + mov r0, r6 + mov r1, r4 + mov r2, r5 + bl NNS_G3dMdlSetMdlDepthTestCond + ldrb r0, [r6, #0x18] + add r4, r4, #0x1 + cmp r4, r0 + blo _020BB9D0 + ldmia sp!, {r4-r6,pc} + arm_func_end NNS_G3dMdlSetMdlDepthTestCondAll + + arm_func_start NNS_G3dMdlSetMdlFogEnableFlagAll +NNS_G3dMdlSetMdlFogEnableFlagAll: ; 0x020BB9F4 + stmdb sp!, {r4-r6,lr} + mov r6, r0 + ldrb r0, [r6, #0x18] + mov r5, r1 + mov r4, #0x0 + cmp r0, #0x0 + ldmlsia sp!, {r4-r6,pc} +_020BBA10: + mov r0, r6 + mov r1, r4 + mov r2, r5 + bl NNS_G3dMdlSetMdlFogEnableFlag + ldrb r0, [r6, #0x18] + add r4, r4, #0x1 + cmp r4, r0 + blo _020BBA10 + ldmia sp!, {r4-r6,pc} + arm_func_end NNS_G3dMdlSetMdlFogEnableFlagAll + + arm_func_start NNS_G3dMdlSetMdlAlphaAll +NNS_G3dMdlSetMdlAlphaAll: ; 0x020BBA34 + stmdb sp!, {r4-r6,lr} + mov r6, r0 + ldrb r0, [r6, #0x18] + mov r5, r1 + mov r4, #0x0 + cmp r0, #0x0 + ldmlsia sp!, {r4-r6,pc} +_020BBA50: + mov r0, r6 + mov r1, r4 + mov r2, r5 + bl NNS_G3dMdlSetMdlAlpha + ldrb r0, [r6, #0x18] + add r4, r4, #0x1 + cmp r4, r0 + blo _020BBA50 + ldmia sp!, {r4-r6,pc} + arm_func_end NNS_G3dMdlSetMdlAlphaAll + + arm_func_start NNS_G3dMdlSetMdlPolygonIDAll +NNS_G3dMdlSetMdlPolygonIDAll: ; 0x020BBA74 + stmdb sp!, {r4-r6,lr} + mov r6, r0 + ldrb r0, [r6, #0x18] + mov r5, r1 + mov r4, #0x0 + cmp r0, #0x0 + ldmlsia sp!, {r4-r6,pc} +_020BBA90: + mov r0, r6 + mov r1, r4 + mov r2, r5 + bl NNS_G3dMdlSetMdlPolygonID + ldrb r0, [r6, #0x18] + add r4, r4, #0x1 + cmp r4, r0 + blo _020BBA90 + ldmia sp!, {r4-r6,pc} + arm_func_end NNS_G3dMdlSetMdlPolygonIDAll + + arm_func_start NNS_G3dMdlSetMdlCullModeAll +NNS_G3dMdlSetMdlCullModeAll: ; 0x020BBAB4 + stmdb sp!, {r4-r6,lr} + mov r6, r0 + ldrb r0, [r6, #0x18] + mov r5, r1 + mov r4, #0x0 + cmp r0, #0x0 + ldmlsia sp!, {r4-r6,pc} +_020BBAD0: + mov r0, r6 + mov r1, r4 + mov r2, r5 + bl NNS_G3dMdlSetMdlCullMode + ldrb r0, [r6, #0x18] + add r4, r4, #0x1 + cmp r4, r0 + blo _020BBAD0 + ldmia sp!, {r4-r6,pc} + arm_func_end NNS_G3dMdlSetMdlCullModeAll + + arm_func_start NNS_G3dMdlSetMdlPolygonModeAll +NNS_G3dMdlSetMdlPolygonModeAll: ; 0x020BBAF4 + stmdb sp!, {r4-r6,lr} + mov r6, r0 + ldrb r0, [r6, #0x18] + mov r5, r1 + mov r4, #0x0 + cmp r0, #0x0 + ldmlsia sp!, {r4-r6,pc} +_020BBB10: + mov r0, r6 + mov r1, r4 + mov r2, r5 + bl NNS_G3dMdlSetMdlPolygonMode + ldrb r0, [r6, #0x18] + add r4, r4, #0x1 + cmp r4, r0 + blo _020BBB10 + ldmia sp!, {r4-r6,pc} + arm_func_end NNS_G3dMdlSetMdlPolygonModeAll + + arm_func_start NNS_G3dMdlSetMdlLightEnableFlagAll +NNS_G3dMdlSetMdlLightEnableFlagAll: ; 0x020BBB34 + stmdb sp!, {r4-r6,lr} + mov r6, r0 + ldrb r0, [r6, #0x18] + mov r5, r1 + mov r4, #0x0 + cmp r0, #0x0 + ldmlsia sp!, {r4-r6,pc} +_020BBB50: + mov r0, r6 + mov r1, r4 + mov r2, r5 + bl NNS_G3dMdlSetMdlLightEnableFlag + ldrb r0, [r6, #0x18] + add r4, r4, #0x1 + cmp r4, r0 + blo _020BBB50 + ldmia sp!, {r4-r6,pc} + arm_func_end NNS_G3dMdlSetMdlLightEnableFlagAll + + arm_func_start NNS_G3dMdlSetMdlEmiAll +NNS_G3dMdlSetMdlEmiAll: ; 0x020BBB74 + stmdb sp!, {r4-r6,lr} + mov r6, r0 + ldrb r0, [r6, #0x18] + mov r5, r1 + mov r4, #0x0 + cmp r0, #0x0 + ldmlsia sp!, {r4-r6,pc} +_020BBB90: + mov r0, r6 + mov r1, r4 + mov r2, r5 + bl NNS_G3dMdlSetMdlEmi + ldrb r0, [r6, #0x18] + add r4, r4, #0x1 + cmp r4, r0 + blo _020BBB90 + ldmia sp!, {r4-r6,pc} + arm_func_end NNS_G3dMdlSetMdlEmiAll + + arm_func_start NNS_G3dMdlSetMdlSpecAll +NNS_G3dMdlSetMdlSpecAll: ; 0x020BBBB4 + stmdb sp!, {r4-r6,lr} + mov r6, r0 + ldrb r0, [r6, #0x18] + mov r5, r1 + mov r4, #0x0 + cmp r0, #0x0 + ldmlsia sp!, {r4-r6,pc} +_020BBBD0: + mov r0, r6 + mov r1, r4 + mov r2, r5 + bl NNS_G3dMdlSetMdlSpec + ldrb r0, [r6, #0x18] + add r4, r4, #0x1 + cmp r4, r0 + blo _020BBBD0 + ldmia sp!, {r4-r6,pc} + arm_func_end NNS_G3dMdlSetMdlSpecAll + + arm_func_start NNS_G3dMdlSetMdlAmbAll +NNS_G3dMdlSetMdlAmbAll: ; 0x020BBBF4 + stmdb sp!, {r4-r6,lr} + mov r6, r0 + ldrb r0, [r6, #0x18] + mov r5, r1 + mov r4, #0x0 + cmp r0, #0x0 + ldmlsia sp!, {r4-r6,pc} +_020BBC10: + mov r0, r6 + mov r1, r4 + mov r2, r5 + bl NNS_G3dMdlSetMdlAmb + ldrb r0, [r6, #0x18] + add r4, r4, #0x1 + cmp r4, r0 + blo _020BBC10 + ldmia sp!, {r4-r6,pc} + arm_func_end NNS_G3dMdlSetMdlAmbAll + + arm_func_start NNS_G3dMdlSetMdlDiffAll +NNS_G3dMdlSetMdlDiffAll: ; 0x020BBC34 + stmdb sp!, {r4-r6,lr} + mov r6, r0 + ldrb r0, [r6, #0x18] + mov r5, r1 + mov r4, #0x0 + cmp r0, #0x0 + ldmlsia sp!, {r4-r6,pc} +_020BBC50: + mov r0, r6 + mov r1, r4 + mov r2, r5 + bl NNS_G3dMdlSetMdlDiff + ldrb r0, [r6, #0x18] + add r4, r4, #0x1 + cmp r4, r0 + blo _020BBC50 + ldmia sp!, {r4-r6,pc} + arm_func_end NNS_G3dMdlSetMdlDiffAll + + arm_func_start NNS_G3dMdlSetMdlXLDepthUpdate +NNS_G3dMdlSetMdlXLDepthUpdate: ; 0x020BBC74 + ldr r3, [r0, #0x8] + cmp r2, #0x0 + add r12, r0, r3 + ldrh r0, [r12, #0xa] + add r3, r12, #0x4 + ldrh r2, [r3, r0] + add r0, r3, r0 + mla r0, r2, r1, r0 + ldr r0, [r0, #0x4] + add r1, r12, r0 + ldrne r0, [r1, #0xc] + orrne r0, r0, #0x800 + strne r0, [r1, #0xc] + ldreq r0, [r1, #0xc] + biceq r0, r0, #0x800 + streq r0, [r1, #0xc] + bx lr + arm_func_end NNS_G3dMdlSetMdlXLDepthUpdate + + arm_func_start NNS_G3dMdlSetMdlFarClip +NNS_G3dMdlSetMdlFarClip: ; 0x020BBCB8 + ldr r3, [r0, #0x8] + cmp r2, #0x0 + add r12, r0, r3 + ldrh r0, [r12, #0xa] + add r3, r12, #0x4 + ldrh r2, [r3, r0] + add r0, r3, r0 + mla r0, r2, r1, r0 + ldr r0, [r0, #0x4] + add r1, r12, r0 + ldrne r0, [r1, #0xc] + orrne r0, r0, #0x1000 + strne r0, [r1, #0xc] + ldreq r0, [r1, #0xc] + biceq r0, r0, #0x1000 + streq r0, [r1, #0xc] + bx lr + arm_func_end NNS_G3dMdlSetMdlFarClip + + arm_func_start NNS_G3dMdlSetMdl1Dot +NNS_G3dMdlSetMdl1Dot: ; 0x020BBCFC + ldr r3, [r0, #0x8] + cmp r2, #0x0 + add r12, r0, r3 + ldrh r0, [r12, #0xa] + add r3, r12, #0x4 + ldrh r2, [r3, r0] + add r0, r3, r0 + mla r0, r2, r1, r0 + ldr r0, [r0, #0x4] + add r1, r12, r0 + ldrne r0, [r1, #0xc] + orrne r0, r0, #0x2000 + strne r0, [r1, #0xc] + ldreq r0, [r1, #0xc] + biceq r0, r0, #0x2000 + streq r0, [r1, #0xc] + bx lr + arm_func_end NNS_G3dMdlSetMdl1Dot + + arm_func_start NNS_G3dMdlSetMdlDepthTestCond +NNS_G3dMdlSetMdlDepthTestCond: ; 0x020BBD40 + ldr r3, [r0, #0x8] + cmp r2, #0x0 + add r12, r0, r3 + ldrh r0, [r12, #0xa] + add r3, r12, #0x4 + ldrh r2, [r3, r0] + add r0, r3, r0 + mla r0, r2, r1, r0 + ldr r0, [r0, #0x4] + add r1, r12, r0 + ldrne r0, [r1, #0xc] + orrne r0, r0, #0x4000 + strne r0, [r1, #0xc] + ldreq r0, [r1, #0xc] + biceq r0, r0, #0x4000 + streq r0, [r1, #0xc] + bx lr + arm_func_end NNS_G3dMdlSetMdlDepthTestCond + + arm_func_start NNS_G3dMdlSetMdlFogEnableFlag +NNS_G3dMdlSetMdlFogEnableFlag: ; 0x020BBD84 + ldr r3, [r0, #0x8] + cmp r2, #0x0 + add r12, r0, r3 + ldrh r0, [r12, #0xa] + add r3, r12, #0x4 + ldrh r2, [r3, r0] + add r0, r3, r0 + mla r0, r2, r1, r0 + ldr r0, [r0, #0x4] + add r1, r12, r0 + ldrne r0, [r1, #0xc] + orrne r0, r0, #0x8000 + strne r0, [r1, #0xc] + ldreq r0, [r1, #0xc] + biceq r0, r0, #0x8000 + streq r0, [r1, #0xc] + bx lr + arm_func_end NNS_G3dMdlSetMdlFogEnableFlag + + arm_func_start NNS_G3dMdlSetMdlAlpha +NNS_G3dMdlSetMdlAlpha: ; 0x020BBDC8 + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r3, [r0, #0x8] + add lr, r0, r3 + ldrh r0, [lr, #0xa] + add r12, lr, #0x4 + ldrh r3, [r12, r0] + add r0, r12, r0 + mla r0, r3, r1, r0 + ldr r0, [r0, #0x4] + add r1, lr, r0 + ldr r0, [r1, #0xc] + bic r0, r0, #0x1f0000 + orr r0, r0, r2, lsl #0x10 + str r0, [r1, #0xc] + add sp, sp, #0x4 + ldmia sp!, {pc} + arm_func_end NNS_G3dMdlSetMdlAlpha + + arm_func_start NNS_G3dMdlSetMdlPolygonID +NNS_G3dMdlSetMdlPolygonID: ; 0x020BBE0C + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r3, [r0, #0x8] + add lr, r0, r3 + ldrh r0, [lr, #0xa] + add r12, lr, #0x4 + ldrh r3, [r12, r0] + add r0, r12, r0 + mla r0, r3, r1, r0 + ldr r0, [r0, #0x4] + add r1, lr, r0 + ldr r0, [r1, #0xc] + bic r0, r0, #0x3f000000 + orr r0, r0, r2, lsl #0x18 + str r0, [r1, #0xc] + add sp, sp, #0x4 + ldmia sp!, {pc} + arm_func_end NNS_G3dMdlSetMdlPolygonID + + arm_func_start NNS_G3dMdlSetMdlCullMode +NNS_G3dMdlSetMdlCullMode: ; 0x020BBE50 + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r3, [r0, #0x8] + add lr, r0, r3 + ldrh r0, [lr, #0xa] + add r12, lr, #0x4 + ldrh r3, [r12, r0] + add r0, r12, r0 + mla r0, r3, r1, r0 + ldr r0, [r0, #0x4] + add r1, lr, r0 + ldr r0, [r1, #0xc] + bic r0, r0, #0xc0 + orr r0, r0, r2, lsl #0x6 + str r0, [r1, #0xc] + add sp, sp, #0x4 + ldmia sp!, {pc} + arm_func_end NNS_G3dMdlSetMdlCullMode + + arm_func_start NNS_G3dMdlSetMdlPolygonMode +NNS_G3dMdlSetMdlPolygonMode: ; 0x020BBE94 + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r3, [r0, #0x8] + add lr, r0, r3 + ldrh r0, [lr, #0xa] + add r12, lr, #0x4 + ldrh r3, [r12, r0] + add r0, r12, r0 + mla r0, r3, r1, r0 + ldr r0, [r0, #0x4] + add r1, lr, r0 + ldr r0, [r1, #0xc] + bic r0, r0, #0x30 + orr r0, r0, r2, lsl #0x4 + str r0, [r1, #0xc] + add sp, sp, #0x4 + ldmia sp!, {pc} + arm_func_end NNS_G3dMdlSetMdlPolygonMode + + arm_func_start NNS_G3dMdlSetMdlLightEnableFlag +NNS_G3dMdlSetMdlLightEnableFlag: ; 0x020BBED8 + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r3, [r0, #0x8] + add lr, r0, r3 + ldrh r0, [lr, #0xa] + add r12, lr, #0x4 + ldrh r3, [r12, r0] + add r0, r12, r0 + mla r0, r3, r1, r0 + ldr r0, [r0, #0x4] + add r1, lr, r0 + ldr r0, [r1, #0xc] + bic r0, r0, #0xf + orr r0, r0, r2 + str r0, [r1, #0xc] + add sp, sp, #0x4 + ldmia sp!, {pc} + arm_func_end NNS_G3dMdlSetMdlLightEnableFlag + + arm_func_start NNS_G3dMdlSetMdlEmi +NNS_G3dMdlSetMdlEmi: ; 0x020BBF1C + stmdb sp!, {r4,lr} + ldr r12, [r0, #0x8] + ldr r3, _020BBF5C ; =0x8000FFFF + add r4, r0, r12 + ldrh r0, [r4, #0xa] + add lr, r4, #0x4 + ldrh r12, [lr, r0] + add r0, lr, r0 + mla r0, r12, r1, r0 + ldr r0, [r0, #0x4] + add r1, r4, r0 + ldr r0, [r1, #0x8] + and r0, r0, r3 + orr r0, r0, r2, lsl #0x10 + str r0, [r1, #0x8] + ldmia sp!, {r4,pc} + .balign 4 +_020BBF5C: .word 0x8000FFFF + arm_func_end NNS_G3dMdlSetMdlEmi + + arm_func_start NNS_G3dMdlSetMdlSpec +NNS_G3dMdlSetMdlSpec: ; 0x020BBF60 + stmdb sp!, {r4,lr} + ldr r12, [r0, #0x8] + mov r3, #0x8000 + add r4, r0, r12 + ldrh r12, [r4, #0xa] + add lr, r4, #0x4 + rsb r0, r3, #0x0 + ldrh r3, [lr, r12] + add r12, lr, r12 + mla r1, r3, r1, r12 + ldr r1, [r1, #0x4] + add r3, r4, r1 + ldr r1, [r3, #0x8] + and r0, r1, r0 + orr r0, r0, r2 + str r0, [r3, #0x8] + ldmia sp!, {r4,pc} + arm_func_end NNS_G3dMdlSetMdlSpec + + arm_func_start NNS_G3dMdlSetMdlAmb +NNS_G3dMdlSetMdlAmb: ; 0x020BBFA4 + stmdb sp!, {r4,lr} + ldr r12, [r0, #0x8] + ldr r3, _020BBFE4 ; =0x8000FFFF + add r4, r0, r12 + ldrh r0, [r4, #0xa] + add lr, r4, #0x4 + ldrh r12, [lr, r0] + add r0, lr, r0 + mla r0, r12, r1, r0 + ldr r0, [r0, #0x4] + add r1, r4, r0 + ldr r0, [r1, #0x4] + and r0, r0, r3 + orr r0, r0, r2, lsl #0x10 + str r0, [r1, #0x4] + ldmia sp!, {r4,pc} + .balign 4 +_020BBFE4: .word 0x8000FFFF + arm_func_end NNS_G3dMdlSetMdlAmb + + arm_func_start NNS_G3dMdlSetMdlDiff +NNS_G3dMdlSetMdlDiff: ; 0x020BBFE8 + stmdb sp!, {r4,lr} + ldr r12, [r0, #0x8] + mov r3, #0x8000 + add r4, r0, r12 + ldrh r12, [r4, #0xa] + add lr, r4, #0x4 + rsb r0, r3, #0x0 + ldrh r3, [lr, r12] + add r12, lr, r12 + mla r1, r3, r1, r12 + ldr r1, [r1, #0x4] + add r3, r4, r1 + ldr r1, [r3, #0x4] + and r0, r1, r0 + orr r0, r0, r2 + str r0, [r3, #0x4] + ldmia sp!, {r4,pc} + arm_func_end NNS_G3dMdlSetMdlDiff + + arm_func_start NNSi_G3dModifyPolygonAttrMask +NNSi_G3dModifyPolygonAttrMask: ; 0x020BC02C + stmdb sp!, {r4-r6,lr} + ldrb r4, [r0, #0x18] + ldr r3, [r0, #0x8] + mov lr, #0x0 + cmp r4, #0x0 + add r12, r0, r3 + ldmlsia sp!, {r4-r6,pc} + mvn r3, r2 + add r0, r12, #0x4 +_020BC050: + ldrh r5, [r12, #0xa] + cmp r1, #0x0 + ldrh r6, [r0, r5] + add r5, r0, r5 + mla r5, r6, lr, r5 + ldr r5, [r5, #0x4] + add lr, lr, #0x1 + add r6, r12, r5 + ldrne r5, [r6, #0x10] + orrne r5, r5, r2 + strne r5, [r6, #0x10] + ldreq r5, [r6, #0x10] + andeq r5, r5, r3 + streq r5, [r6, #0x10] + cmp lr, r4 + blo _020BC050 + ldmia sp!, {r4-r6,pc} + arm_func_end NNSi_G3dModifyPolygonAttrMask + + arm_func_start NNSi_G3dModifyMatFlag +NNSi_G3dModifyMatFlag: ; 0x020BC094 + stmdb sp!, {r4-r6,lr} + ldrb r4, [r0, #0x18] + ldr r3, [r0, #0x8] + mov lr, #0x0 + cmp r4, #0x0 + add r12, r0, r3 + ldmlsia sp!, {r4-r6,pc} + mvn r3, r2 + add r0, r12, #0x4 +_020BC0B8: + ldrh r5, [r12, #0xa] + cmp r1, #0x0 + ldrh r6, [r0, r5] + add r5, r0, r5 + mla r5, r6, lr, r5 + ldr r5, [r5, #0x4] + add lr, lr, #0x1 + add r6, r12, r5 + ldrneh r5, [r6, #0x1e] + orrne r5, r5, r2 + strneh r5, [r6, #0x1e] + ldreqh r5, [r6, #0x1e] + andeq r5, r5, r3 + streqh r5, [r6, #0x1e] + cmp lr, r4 + blo _020BC0B8 + ldmia sp!, {r4-r6,pc} + arm_func_end NNSi_G3dModifyMatFlag diff --git a/arm9/asm/NNS_G3D_nsbca.s b/arm9/asm/NNS_G3D_nsbca.s new file mode 100644 index 00000000..a29deb70 --- /dev/null +++ b/arm9/asm/NNS_G3D_nsbca.s @@ -0,0 +1,1591 @@ + .include "asm/macros.inc" + .include "global.inc" + + .section .rodata + + .global pivotUtil_ +pivotUtil_: ; 0x020FFA14 + .byte 0x04, 0x05, 0x07, 0x08 + .byte 0x03, 0x05, 0x06, 0x08 + .byte 0x03, 0x04, 0x06, 0x07 + .byte 0x01, 0x02, 0x07, 0x08 + .byte 0x00, 0x02, 0x06, 0x08 + .byte 0x00, 0x01, 0x06, 0x07 + .byte 0x01, 0x02, 0x04, 0x05 + .byte 0x00, 0x02, 0x03, 0x05 + .byte 0x00, 0x01, 0x03, 0x04 + + .section .text + + arm_func_start getRotDataByIdx_ +getRotDataByIdx_: ; 0x020BC500 + stmdb sp!, {r4,lr} + ands r4, r3, #0x8000 + beq _020BC5E0 + mov r2, #0x0 + str r2, [r0, #0x20] + ldr r4, [r0, #0x20] + ldr r2, _020BC684 ; =0x00007FFF + str r4, [r0, #0x1c] + ldr r4, [r0, #0x1c] + and r3, r3, r2 + str r4, [r0, #0x18] + ldr r4, [r0, #0x18] + mov r2, #0x3 + str r4, [r0, #0x14] + ldr r4, [r0, #0x14] + mul r2, r3, r2 + str r4, [r0, #0x10] + ldr r4, [r0, #0x10] + mov r3, r2, lsl #0x1 + str r4, [r0, #0xc] + ldr r4, [r0, #0xc] + add r2, r1, r2, lsl #0x1 + str r4, [r0, #0x8] + ldr r4, [r0, #0x8] + str r4, [r0, #0x4] + ldr r4, [r0, #0x4] + str r4, [r0, #0x0] + ldrsh r4, [r1, r3] + ldrsh r12, [r2, #0x2] + ldrsh r3, [r2, #0x4] + and r1, r4, #0xf + ands r4, r4, #0x10 + movne lr, #0x1000 + rsbne lr, lr, #0x0 + moveq lr, #0x1000 + str lr, [r0, r1, lsl #0x2] + ldr r4, _020BC688 ; =pivotUtil_ + ldr lr, _020BC68C ; =pivotUtil_ + 1 + ldrb r4, [r4, r1, lsl #0x2] + str r12, [r0, r4, lsl #0x2] + ldrb lr, [lr, r1, lsl #0x2] + str r3, [r0, lr, lsl #0x2] + ldrsh lr, [r2, #0x0] + ands lr, lr, #0x20 + ldr lr, _020BC690 ; =pivotUtil_ + 2 + rsbne r3, r3, #0x0 + ldrb lr, [lr, r1, lsl #0x2] + str r3, [r0, lr, lsl #0x2] + ldrsh r2, [r2, #0x0] + ands r2, r2, #0x40 + ldr r2, _020BC694 ; =pivotUtil_ + 3 + rsbne r12, r12, #0x0 + ldrb r1, [r2, r1, lsl #0x2] + str r12, [r0, r1, lsl #0x2] + mov r0, #0x0 + ldmia sp!, {r4,pc} +_020BC5E0: + ldr r1, _020BC684 ; =0x00007FFF + mov r12, #0x5 + and r1, r3, r1 + mul r3, r1, r12 + add r1, r2, r3, lsl #0x1 + ldrsh lr, [r1, #0x8] + mov r12, r3, lsl #0x1 + mov r3, lr, asr #0x3 + str r3, [r0, #0x10] + ldrsh r12, [r2, r12] + and r2, lr, #0x7 + mov r2, r2, lsl #0x10 + mov r3, r12, asr #0x3 + str r3, [r0, #0x0] + ldrsh r3, [r1, #0x2] + and r12, r12, #0x7 + orr lr, r12, r2, asr #0xd + mov r2, r3, asr #0x3 + str r2, [r0, #0x4] + ldrsh r12, [r1, #0x4] + mov r2, lr, lsl #0x10 + and lr, r3, #0x7 + mov r3, r12, asr #0x3 + str r3, [r0, #0x8] + ldrsh r3, [r1, #0x6] + orr r1, lr, r2, asr #0xd + mov r1, r1, lsl #0x10 + and r2, r12, #0x7 + orr r1, r2, r1, asr #0xd + mov r1, r1, lsl #0x10 + and r2, r3, #0x7 + orr r1, r2, r1, asr #0xd + mov r1, r1, lsl #0x10 + mov r1, r1, asr #0x10 + mov r2, r3, asr #0x3 + mov r1, r1, lsl #0x13 + str r2, [r0, #0xc] + mov r1, r1, asr #0x13 + str r1, [r0, #0x14] + mov r0, #0x1 + ldmia sp!, {r4,pc} + .balign 4 +_020BC684: .word 0x00007FFF +_020BC688: .word pivotUtil_ +_020BC68C: .word pivotUtil_ + 1 +_020BC690: .word pivotUtil_ + 2 +_020BC694: .word pivotUtil_ + 3 + arm_func_end getRotDataByIdx_ + + arm_func_start getRotDataEx_ +getRotDataEx_: ; 0x020BC698 + stmdb sp!, {r4-r10,lr} + sub sp, sp, #0x48 + ldrh r4, [r3, #0x4] + ldr r5, [r3, #0xc] + ldr r8, [r3, #0x10] + ldr r7, [r2, #0x4] + mov r12, r1, asr #0xc + sub r4, r4, #0x1 + mov r6, r0 + cmp r12, r4 + add r5, r3, r5 + add r4, r3, r8 + add r8, r3, r7 + ldr r7, [r2, #0x0] + bne _020BC780 + ands r0, r7, #0xc0000000 + beq _020BC6F0 + ands r0, r7, #0x40000000 + andne r0, r12, #0x1 + addne r12, r0, r12, lsr #0x1 + andeq r0, r12, #0x3 + addeq r12, r0, r12, lsr #0x2 +_020BC6F0: + ldr r0, [r3, #0x8] + ands r0, r0, #0x2 + movne r7, #0x0 + bne _020BC7F4 + mov r0, r12, lsl #0x1 + ldrh r3, [r8, r0] + mov r0, r6 + mov r1, r5 + mov r2, r4 + bl getRotDataByIdx_ + cmp r0, #0x0 + addeq sp, sp, #0x48 + ldmeqia sp!, {r4-r10,pc} + ldr r9, [r6, #0x14] + ldr r5, [r6, #0x4] + ldr r4, [r6, #0x10] + ldr r2, [r6, #0x8] + mul r1, r5, r9 + mul r0, r2, r4 + sub r0, r1, r0 + ldr r7, [r6, #0xc] + ldr r8, [r6, #0x0] + mov r3, r0, asr #0xc + mul r1, r2, r7 + mul r0, r8, r9 + sub r2, r1, r0 + mul r1, r8, r4 + mul r0, r5, r7 + sub r0, r1, r0 + str r3, [r6, #0x18] + mov r1, r2, asr #0xc + str r1, [r6, #0x1c] + mov r0, r0, asr #0xc + add sp, sp, #0x48 + str r0, [r6, #0x20] + ldmia sp!, {r4-r10,pc} +_020BC780: + ands r0, r7, #0xc0000000 + beq _020BC7F0 + ldr r0, _020BC9C4 ; =0x1FFF0000 + ands r2, r7, #0x40000000 + and r0, r7, r0 + mov r0, r0, lsr #0x10 + beq _020BC7C4 + cmp r12, r0 + movcs r12, r0, lsr #0x1 + addcs r7, r12, #0x1 + bhs _020BC7F4 + ldr r0, _020BC9C8 ; =0x00001FFF + mov r12, r12, lsr #0x1 + add r7, r12, #0x1 + and r10, r1, r0 + mov r9, #0x2 + b _020BC800 +_020BC7C4: + cmp r12, r0 + andcs r0, r12, #0x3 + addcs r12, r0, r12, lsr #0x2 + addcs r7, r12, #0x1 + bhs _020BC7F4 + ldr r0, _020BC9CC ; =0x00003FFF + mov r12, r12, lsr #0x2 + add r7, r12, #0x1 + and r10, r1, r0 + mov r9, #0x4 + b _020BC800 +_020BC7F0: + add r7, r12, #0x1 +_020BC7F4: + ldr r0, _020BC9D0 ; =0x00000FFF + mov r9, #0x1 + and r10, r1, r0 +_020BC800: + mov r0, r12, lsl #0x1 + ldrh r3, [r8, r0] + add r0, sp, #0x0 + mov r1, r5 + mov r2, r4 + bl getRotDataByIdx_ + mov r1, r7, lsl #0x1 + ldrh r3, [r8, r1] + orr r7, r0, #0x0 + add r0, sp, #0x24 + mov r1, r5 + mov r2, r4 + bl getRotDataByIdx_ + ldr r3, [sp, #0x0] + ldr r1, [sp, #0x24] + mul r2, r3, r9 + sub r1, r1, r3 + mul r1, r10, r1 + add r1, r2, r1, asr #0xc + str r1, [r6, #0x0] + ldr r3, [sp, #0x4] + ldr r1, [sp, #0x28] + mul r2, r3, r9 + sub r1, r1, r3 + mul r1, r10, r1 + add r1, r2, r1, asr #0xc + str r1, [r6, #0x4] + ldr r3, [sp, #0x8] + ldr r1, [sp, #0x2c] + mul r2, r3, r9 + sub r1, r1, r3 + mul r1, r10, r1 + add r1, r2, r1, asr #0xc + str r1, [r6, #0x8] + ldr r3, [sp, #0xc] + ldr r1, [sp, #0x30] + mul r2, r3, r9 + sub r1, r1, r3 + mul r1, r10, r1 + add r1, r2, r1, asr #0xc + str r1, [r6, #0xc] + ldr r2, [sp, #0x10] + ldr r1, [sp, #0x34] + orr r7, r7, r0 + sub r0, r1, r2 + mul r1, r2, r9 + mul r0, r10, r0 + add r0, r1, r0, asr #0xc + str r0, [r6, #0x10] + ldr r2, [sp, #0x14] + ldr r0, [sp, #0x38] + mul r1, r2, r9 + sub r0, r0, r2 + mul r0, r10, r0 + add r2, r1, r0, asr #0xc + mov r0, r6 + mov r1, r6 + str r2, [r6, #0x14] + bl VEC_Normalize + add r0, r6, #0xc + mov r1, r0 + bl VEC_Normalize + cmp r7, #0x0 + bne _020BC968 + ldr r3, [sp, #0x18] + ldr r1, [sp, #0x3c] + mul r2, r3, r9 + sub r1, r1, r3 + mul r1, r10, r1 + add r1, r2, r1, asr #0xc + str r1, [r6, #0x18] + ldr r3, [sp, #0x1c] + ldr r1, [sp, #0x40] + mul r2, r3, r9 + sub r1, r1, r3 + mul r1, r10, r1 + add r1, r2, r1, asr #0xc + str r1, [r6, #0x1c] + ldr r3, [sp, #0x20] + ldr r1, [sp, #0x44] + mul r2, r3, r9 + sub r1, r1, r3 + mul r1, r10, r1 + add r2, r2, r1, asr #0xc + add r0, r6, #0x18 + mov r1, r0 + str r2, [r6, #0x20] + bl VEC_Normalize + add sp, sp, #0x48 + ldmia sp!, {r4-r10,pc} +_020BC968: + ldr r9, [r6, #0x14] + ldr r5, [r6, #0x4] + ldr r8, [r6, #0x0] + ldr r4, [r6, #0x10] + ldr r2, [r6, #0x8] + ldr r7, [r6, #0xc] + mul r1, r5, r9 + mul r0, r2, r4 + sub r0, r1, r0 + mov r3, r0, asr #0xc + mul r1, r2, r7 + mul r0, r8, r9 + sub r2, r1, r0 + mul r1, r8, r4 + mul r0, r5, r7 + sub r0, r1, r0 + str r3, [r6, #0x18] + mov r1, r2, asr #0xc + str r1, [r6, #0x1c] + mov r0, r0, asr #0xc + str r0, [r6, #0x20] + add sp, sp, #0x48 + ldmia sp!, {r4-r10,pc} + .balign 4 +_020BC9C4: .word 0x1FFF0000 +_020BC9C8: .word 0x00001FFF +_020BC9CC: .word 0x00003FFF +_020BC9D0: .word 0x00000FFF + arm_func_end getRotDataEx_ + + arm_func_start getRotData_ +getRotData_: ; 0x020BC9D4 + stmdb sp!, {r4-r9,lr} + sub sp, sp, #0x4c + ldr r5, [r3, #0xc] + ldr r4, [r3, #0x10] + ldr r12, [r2, #0x0] + ldr r2, [r2, #0x4] + mov r6, r0 + mov r0, r1, asr #0xc + add r5, r3, r5 + add r4, r3, r4 + add r8, r3, r2 + ands r1, r12, #0xc0000000 + beq _020BCD40 + ldr r1, _020BCDC0 ; =0x1FFF0000 + ands r2, r12, #0x40000000 + and r1, r12, r1 + mov r2, r1, lsr #0x10 + beq _020BCA44 + ands r1, r0, #0x1 + beq _020BCA3C + cmp r0, r2 + movhi r0, r2, lsr #0x1 + addhi r0, r0, #0x1 + bhi _020BCD40 + mov r7, r0, lsr #0x1 + b _020BCBE8 +_020BCA3C: + mov r0, r0, lsr #0x1 + b _020BCD40 +_020BCA44: + ands r1, r0, #0x3 + beq _020BCBE0 + cmp r0, r2 + addhi r0, r1, r2, lsr #0x2 + bhi _020BCD40 + ands r1, r0, #0x1 + beq _020BCBD8 + ands r1, r0, #0x2 + movne r9, r0, lsr #0x2 + addne r0, r9, #0x1 + moveq r0, r0, lsr #0x2 + addeq r9, r0, #0x1 + mov r0, r0, lsl #0x1 + ldrh r3, [r8, r0] + mov r0, r6 + mov r1, r5 + mov r2, r4 + mov r7, #0x0 + bl getRotDataByIdx_ + mov r1, r9, lsl #0x1 + ldrh r3, [r8, r1] + orr r7, r7, r0 + add r0, sp, #0x0 + mov r1, r5 + mov r2, r4 + bl getRotDataByIdx_ + ldr r3, [sp, #0x0] + ldr r1, [r6, #0x0] + mov r2, #0x3 + mla r3, r1, r2, r3 + str r3, [r6, #0x0] + ldr r3, [sp, #0x4] + ldr r1, [r6, #0x4] + orr r7, r7, r0 + mla r0, r1, r2, r3 + str r0, [r6, #0x4] + ldr r3, [sp, #0x8] + ldr r1, [r6, #0x8] + mov r0, r6 + mla r3, r1, r2, r3 + str r3, [r6, #0x8] + ldr r4, [sp, #0xc] + ldr r3, [r6, #0xc] + mov r1, r6 + mla r4, r3, r2, r4 + str r4, [r6, #0xc] + ldr r4, [sp, #0x10] + ldr r3, [r6, #0x10] + mla r4, r3, r2, r4 + str r4, [r6, #0x10] + ldr r4, [sp, #0x14] + ldr r3, [r6, #0x14] + mla r2, r3, r2, r4 + str r2, [r6, #0x14] + bl VEC_Normalize + add r0, r6, #0xc + mov r1, r0 + bl VEC_Normalize + cmp r7, #0x0 + bne _020BCB7C + ldr r1, [sp, #0x18] + ldr r0, [r6, #0x18] + mov r2, #0x3 + mla r1, r0, r2, r1 + str r1, [r6, #0x18] + ldr r3, [sp, #0x1c] + ldr r1, [r6, #0x1c] + add r0, r6, #0x18 + mla r3, r1, r2, r3 + str r3, [r6, #0x1c] + ldr r4, [sp, #0x20] + ldr r3, [r6, #0x20] + mov r1, r0 + mla r2, r3, r2, r4 + str r2, [r6, #0x20] + bl VEC_Normalize + add sp, sp, #0x4c + ldmia sp!, {r4-r9,pc} +_020BCB7C: + ldr r12, [r6, #0x14] + ldr r5, [r6, #0x4] + ldr r4, [r6, #0x10] + ldr r2, [r6, #0x8] + mul r1, r5, r12 + mul r0, r2, r4 + sub r0, r1, r0 + ldr r7, [r6, #0xc] + ldr r8, [r6, #0x0] + mov r3, r0, asr #0xc + mul r1, r2, r7 + mul r0, r8, r12 + sub r2, r1, r0 + mul r1, r8, r4 + mul r0, r5, r7 + sub r0, r1, r0 + str r3, [r6, #0x18] + mov r1, r2, asr #0xc + str r1, [r6, #0x1c] + mov r0, r0, asr #0xc + add sp, sp, #0x4c + str r0, [r6, #0x20] + ldmia sp!, {r4-r9,pc} +_020BCBD8: + mov r7, r0, lsr #0x2 + b _020BCBE8 +_020BCBE0: + mov r0, r0, lsr #0x2 + b _020BCD40 +_020BCBE8: + mov r0, r7, lsl #0x1 + ldrh r3, [r8, r0] + mov r0, r6 + mov r1, r5 + mov r2, r4 + bl getRotDataByIdx_ + add r1, r8, r7, lsl #0x1 + ldrh r3, [r1, #0x2] + orr r7, r0, #0x0 + add r0, sp, #0x24 + mov r1, r5 + mov r2, r4 + bl getRotDataByIdx_ + ldr r2, [r6, #0x0] + ldr r1, [sp, #0x24] + orr r7, r7, r0 + add r0, r2, r1 + str r0, [r6, #0x0] + ldr r2, [r6, #0x4] + ldr r1, [sp, #0x28] + mov r0, r6 + add r1, r2, r1 + str r1, [r6, #0x4] + ldr r3, [r6, #0x8] + ldr r2, [sp, #0x2c] + mov r1, r6 + add r2, r3, r2 + str r2, [r6, #0x8] + ldr r3, [r6, #0xc] + ldr r2, [sp, #0x30] + add r2, r3, r2 + str r2, [r6, #0xc] + ldr r3, [r6, #0x10] + ldr r2, [sp, #0x34] + add r2, r3, r2 + str r2, [r6, #0x10] + ldr r3, [r6, #0x14] + ldr r2, [sp, #0x38] + add r2, r3, r2 + str r2, [r6, #0x14] + bl VEC_Normalize + add r0, r6, #0xc + mov r1, r0 + bl VEC_Normalize + cmp r7, #0x0 + bne _020BCCE4 + ldr r2, [r6, #0x18] + ldr r1, [sp, #0x3c] + add r0, r6, #0x18 + add r1, r2, r1 + str r1, [r6, #0x18] + ldr r3, [r6, #0x1c] + ldr r2, [sp, #0x40] + mov r1, r0 + add r2, r3, r2 + str r2, [r6, #0x1c] + ldr r3, [r6, #0x20] + ldr r2, [sp, #0x44] + add r2, r3, r2 + str r2, [r6, #0x20] + bl VEC_Normalize + add sp, sp, #0x4c + ldmia sp!, {r4-r9,pc} +_020BCCE4: + ldr r12, [r6, #0x14] + ldr r5, [r6, #0x4] + ldr r4, [r6, #0x10] + ldr r2, [r6, #0x8] + mul r1, r5, r12 + mul r0, r2, r4 + sub r0, r1, r0 + ldr r7, [r6, #0xc] + ldr r8, [r6, #0x0] + mov r3, r0, asr #0xc + mul r1, r2, r7 + mul r0, r8, r12 + sub r2, r1, r0 + mul r1, r8, r4 + mul r0, r5, r7 + sub r0, r1, r0 + str r3, [r6, #0x18] + mov r1, r2, asr #0xc + str r1, [r6, #0x1c] + mov r0, r0, asr #0xc + add sp, sp, #0x4c + str r0, [r6, #0x20] + ldmia sp!, {r4-r9,pc} +_020BCD40: + mov r0, r0, lsl #0x1 + ldrh r3, [r8, r0] + mov r0, r6 + mov r1, r5 + mov r2, r4 + bl getRotDataByIdx_ + cmp r0, #0x0 + addeq sp, sp, #0x4c + ldmeqia sp!, {r4-r9,pc} + ldr r12, [r6, #0x14] + ldr r5, [r6, #0x4] + ldr r8, [r6, #0x0] + ldr r4, [r6, #0x10] + ldr r2, [r6, #0x8] + ldr r7, [r6, #0xc] + mul r1, r5, r12 + mul r0, r2, r4 + sub r0, r1, r0 + mov r3, r0, asr #0xc + mul r1, r2, r7 + mul r0, r8, r12 + sub r2, r1, r0 + mul r1, r8, r4 + mul r0, r5, r7 + sub r0, r1, r0 + str r3, [r6, #0x18] + mov r1, r2, asr #0xc + str r1, [r6, #0x1c] + mov r0, r0, asr #0xc + str r0, [r6, #0x20] + add sp, sp, #0x4c + ldmia sp!, {r4-r9,pc} + .balign 4 +_020BCDC0: .word 0x1FFF0000 + arm_func_end getRotData_ + + arm_func_start getScaleDataEx_ +getScaleDataEx_: ; 0x020BCDC4 + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + ldrh r4, [r3, #0x4] + ldr r6, [r2, #0x4] + mov r5, r1, asr #0xc + sub r4, r4, #0x1 + cmp r5, r4 + add r6, r3, r6 + ldr r2, [r2, #0x0] + bne _020BCE58 + ands r4, r2, #0xc0000000 + beq _020BCE08 + ands r4, r2, #0x40000000 + andne r4, r5, #0x1 + addne r5, r4, r5, lsr #0x1 + andeq r4, r5, #0x3 + addeq r5, r4, r5, lsr #0x2 +_020BCE08: + ldr r3, [r3, #0x8] + ands r3, r3, #0x2 + movne r4, #0x0 + bne _020BCED4 + ands r1, r2, #0x20000000 + ldreq r2, [r6, r5, lsl #0x3] + addeq r1, r6, r5, lsl #0x3 + streq r2, [r0, #0x0] + ldreq r1, [r1, #0x4] + addeq sp, sp, #0x4 + streq r1, [r0, #0x4] + ldmeqia sp!, {r4-r7,pc} + mov r1, r5, lsl #0x2 + ldrsh r2, [r6, r1] + add r1, r6, r5, lsl #0x2 + add sp, sp, #0x4 + str r2, [r0, #0x0] + ldrsh r1, [r1, #0x2] + str r1, [r0, #0x4] + ldmia sp!, {r4-r7,pc} +_020BCE58: + ands r3, r2, #0xc0000000 + beq _020BCED0 + ldr r3, _020BCF60 ; =0x1FFF0000 + ands r4, r2, #0x40000000 + and r3, r2, r3 + mov r3, r3, lsr #0x10 + beq _020BCEA0 + cmp r5, r3 + movcs r5, r3, lsr #0x1 + addcs r4, r5, #0x1 + bhs _020BCED4 + ldr r3, _020BCF64 ; =0x00001FFF + mov r5, r5, lsr #0x1 + add r4, r5, #0x1 + and lr, r1, r3 + mov r12, #0x2 + mov r3, #0x1 + b _020BCEE4 +_020BCEA0: + cmp r5, r3 + andcs r3, r5, #0x3 + addcs r5, r3, r5, lsr #0x2 + addcs r4, r5, #0x1 + bhs _020BCED4 + ldr r3, _020BCF68 ; =0x00003FFF + mov r5, r5, lsr #0x2 + add r4, r5, #0x1 + and lr, r1, r3 + mov r12, #0x4 + mov r3, #0x2 + b _020BCEE4 +_020BCED0: + add r4, r5, #0x1 +_020BCED4: + ldr r3, _020BCF6C ; =0x00000FFF + mov r12, #0x1 + and lr, r1, r3 + mov r3, #0x0 +_020BCEE4: + ands r1, r2, #0x20000000 + beq _020BCF10 + mov r2, r5, lsl #0x2 + add r1, r6, r5, lsl #0x2 + mov r5, r4, lsl #0x2 + add r4, r6, r4, lsl #0x2 + ldrsh r2, [r6, r2] + ldrsh r1, [r1, #0x2] + ldrsh r5, [r6, r5] + ldrsh r4, [r4, #0x2] + b _020BCF28 +_020BCF10: + add r1, r6, r5, lsl #0x3 + add r7, r6, r4, lsl #0x3 + ldr r2, [r6, r5, lsl #0x3] + ldr r1, [r1, #0x4] + ldr r5, [r6, r4, lsl #0x3] + ldr r4, [r7, #0x4] +_020BCF28: + sub r5, r5, r2 + sub r4, r4, r1 + mul r6, r2, r12 + mul r2, lr, r5 + add r2, r6, r2, asr #0xc + mov r5, r2, asr r3 + mul r2, r1, r12 + mul r1, lr, r4 + add r1, r2, r1, asr #0xc + mov r1, r1, asr r3 + str r5, [r0, #0x0] + str r1, [r0, #0x4] + add sp, sp, #0x4 + ldmia sp!, {r4-r7,pc} + .balign 4 +_020BCF60: .word 0x1FFF0000 +_020BCF64: .word 0x00001FFF +_020BCF68: .word 0x00003FFF +_020BCF6C: .word 0x00000FFF + arm_func_end getScaleDataEx_ + + arm_func_start getScaleData_ +getScaleData_: ; 0x020BCF70 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + ldr r4, [r2, #0x4] + ldr r12, [r2, #0x0] + mov r1, r1, asr #0xc + add r3, r3, r4 + ands r2, r12, #0xc0000000 + beq _020BD0D0 + ldr r2, _020BD184 ; =0x1FFF0000 + ands r4, r12, #0x40000000 + and r2, r12, r2 + mov r4, r2, lsr #0x10 + beq _020BCFCC + ands r2, r1, #0x1 + beq _020BCFC4 + cmp r1, r4 + movhi r1, r4, lsr #0x1 + addhi r1, r1, #0x1 + bhi _020BD0D0 + mov r2, r1, lsr #0x1 + b _020BD110 +_020BCFC4: + mov r1, r1, lsr #0x1 + b _020BD0D0 +_020BCFCC: + ands r2, r1, #0x3 + beq _020BD0CC + cmp r1, r4 + addhi r1, r2, r4, lsr #0x2 + bhi _020BD0D0 + ands r2, r1, #0x1 + beq _020BD0C4 + ands r2, r1, #0x2 + movne r1, r1, lsr #0x2 + addne r2, r1, #0x1 + moveq r2, r1, lsr #0x2 + addeq r1, r2, #0x1 + ands r4, r12, #0x20000000 + beq _020BD04C + mov r5, r2, lsl #0x2 + mov r4, r1, lsl #0x2 + ldrsh r12, [r3, r5] + ldrsh r5, [r3, r4] + add r2, r3, r2, lsl #0x2 + add r4, r12, r12, lsl #0x1 + add r4, r5, r4 + mov r4, r4, asr #0x2 + str r4, [r0, #0x0] + add r1, r3, r1, lsl #0x2 + ldrsh r3, [r2, #0x2] + ldrsh r2, [r1, #0x2] + add sp, sp, #0x4 + add r1, r3, r3, lsl #0x1 + add r1, r2, r1 + mov r1, r1, asr #0x2 + str r1, [r0, #0x4] + ldmia sp!, {r4-r5,pc} +_020BD04C: + ldr r5, [r3, r2, lsl #0x3] + ldr r4, [r3, r1, lsl #0x3] + mov r12, r5, asr #0x1f + mov r12, r12, lsl #0x1 + mov lr, r5, lsl #0x1 + orr r12, r12, r5, lsr #0x1f + adds lr, lr, r5 + adc r12, r12, r5, asr #0x1f + adds lr, lr, r4 + adc r12, r12, r4, asr #0x1f + mov lr, lr, lsr #0x2 + orr lr, lr, r12, lsl #0x1e + str lr, [r0, #0x0] + add r2, r3, r2, lsl #0x3 + ldr r12, [r2, #0x4] + add r1, r3, r1, lsl #0x3 + mov r2, r12, asr #0x1f + mov r2, r2, lsl #0x1 + mov r3, r12, lsl #0x1 + ldr r1, [r1, #0x4] + orr r2, r2, r12, lsr #0x1f + adds r3, r3, r12 + adc r2, r2, r12, asr #0x1f + adds r3, r3, r1 + adc r1, r2, r1, asr #0x1f + mov r2, r3, lsr #0x2 + orr r2, r2, r1, lsl #0x1e + str r2, [r0, #0x4] + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} +_020BD0C4: + mov r2, r1, lsr #0x2 + b _020BD110 +_020BD0CC: + mov r1, r1, lsr #0x2 +_020BD0D0: + ands r2, r12, #0x20000000 + ldreq r2, [r3, r1, lsl #0x3] + addeq r1, r3, r1, lsl #0x3 + streq r2, [r0, #0x0] + ldreq r1, [r1, #0x4] + addeq sp, sp, #0x4 + streq r1, [r0, #0x4] + ldmeqia sp!, {r4-r5,pc} + mov r2, r1, lsl #0x2 + ldrsh r2, [r3, r2] + add r1, r3, r1, lsl #0x2 + add sp, sp, #0x4 + str r2, [r0, #0x0] + ldrsh r1, [r1, #0x2] + str r1, [r0, #0x4] + ldmia sp!, {r4-r5,pc} +_020BD110: + ands r1, r12, #0x20000000 + beq _020BD150 + mov r1, r2, lsl #0x2 + add r12, r3, r2, lsl #0x2 + ldrsh r2, [r3, r1] + ldrsh r1, [r12, #0x4] + add sp, sp, #0x4 + add r1, r2, r1 + mov r1, r1, asr #0x1 + str r1, [r0, #0x0] + ldrsh r2, [r12, #0x2] + ldrsh r1, [r12, #0x6] + add r1, r2, r1 + mov r1, r1, asr #0x1 + str r1, [r0, #0x4] + ldmia sp!, {r4-r5,pc} +_020BD150: + add r12, r3, r2, lsl #0x3 + ldr r2, [r3, r2, lsl #0x3] + ldr r1, [r12, #0x8] + add r1, r2, r1 + mov r1, r1, asr #0x1 + str r1, [r0, #0x0] + ldr r2, [r12, #0x4] + ldr r1, [r12, #0xc] + add r1, r2, r1 + mov r1, r1, asr #0x1 + str r1, [r0, #0x4] + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + .balign 4 +_020BD184: .word 0x1FFF0000 + arm_func_end getScaleData_ + + arm_func_start getTransDataEx_ +getTransDataEx_: ; 0x020BD188 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + ldrh r4, [r3, #0x4] + ldr lr, [r2, #0x4] + mov r12, r1, asr #0xc + sub r4, r4, #0x1 + cmp r12, r4 + add r4, r3, lr + ldr lr, [r2, #0x0] + bne _020BD230 + ands r2, lr, #0xc0000000 + beq _020BD1CC + ands r2, lr, #0x40000000 + andne r2, r12, #0x1 + addne r12, r2, r12, lsr #0x1 + andeq r2, r12, #0x3 + addeq r12, r2, r12, lsr #0x2 +_020BD1CC: + ldr r2, [r3, #0x8] + ands r2, r2, #0x2 + beq _020BD210 + ldr r2, _020BD2E8 ; =0x00000FFF + ands r3, lr, #0x20000000 + and r3, r1, r2 + movne r1, r12, lsl #0x1 + ldrnesh r2, [r4, r1] + ldrnesh r1, [r4, #0x0] + add sp, sp, #0x4 + ldreq r2, [r4, r12, lsl #0x2] + ldreq r1, [r4, #0x0] + sub r1, r1, r2 + mul r1, r3, r1 + add r1, r2, r1, asr #0xc + str r1, [r0, #0x0] + ldmia sp!, {r4-r5,pc} +_020BD210: + ands r1, lr, #0x20000000 + movne r1, r12, lsl #0x1 + ldrnesh r1, [r4, r1] + add sp, sp, #0x4 + strne r1, [r0, #0x0] + ldreq r1, [r4, r12, lsl #0x2] + streq r1, [r0, #0x0] + ldmia sp!, {r4-r5,pc} +_020BD230: + ands r2, lr, #0xc0000000 + beq _020BD298 + ldr r2, _020BD2EC ; =0x1FFF0000 + ands r3, lr, #0x40000000 + and r2, lr, r2 + mov r2, r2, lsr #0x10 + beq _020BD270 + cmp r12, r2 + movcs r12, r2, lsr #0x1 + bhs _020BD298 + ldr r2, _020BD2F0 ; =0x00001FFF + mov r12, r12, lsr #0x1 + and r5, r1, r2 + mov r2, #0x2 + mov r1, #0x1 + b _020BD2A8 +_020BD270: + cmp r12, r2 + andcs r2, r12, #0x3 + addcs r12, r2, r12, lsr #0x2 + bhs _020BD298 + ldr r2, _020BD2F4 ; =0x00003FFF + mov r12, r12, lsr #0x2 + and r5, r1, r2 + mov r2, #0x4 + mov r1, #0x2 + b _020BD2A8 +_020BD298: + ldr r3, _020BD2E8 ; =0x00000FFF + mov r2, #0x1 + and r5, r1, r3 + mov r1, #0x0 +_020BD2A8: + ands r3, lr, #0x20000000 + addne r3, r4, r12, lsl #0x1 + movne lr, r12, lsl #0x1 + ldrnesh r12, [r4, lr] + ldrnesh r3, [r3, #0x2] + addeq r3, r4, r12, lsl #0x2 + ldreq r12, [r4, r12, lsl #0x2] + ldreq r3, [r3, #0x4] + mul r4, r12, r2 + sub r3, r3, r12 + mul r2, r5, r3 + add r2, r4, r2, asr #0xc + mov r1, r2, asr r1 + str r1, [r0, #0x0] + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + .balign 4 +_020BD2E8: .word 0x00000FFF +_020BD2EC: .word 0x1FFF0000 +_020BD2F0: .word 0x00001FFF +_020BD2F4: .word 0x00003FFF + arm_func_end getTransDataEx_ + + arm_func_start getTransData_ +getTransData_: ; 0x020BD2F8 + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r12, [r2, #0x4] + ldr r2, [r2, #0x0] + mov r1, r1, asr #0xc + add r3, r3, r12 + ands r12, r2, #0xc0000000 + beq _020BD44C + ldr ip, _020BD46C ; =0x1FFF0000 + ands lr, r2, #0x40000000 + and r12, r2, r12 + mov lr, r12, lsr #0x10 + beq _020BD354 + ands r12, r1, #0x1 + beq _020BD34C + cmp r1, lr + movhi r1, lr, lsr #0x1 + addhi r1, r1, #0x1 + bhi _020BD44C + mov r12, r1, lsr #0x1 + b _020BD400 +_020BD34C: + mov r1, r1, lsr #0x1 + b _020BD44C +_020BD354: + ands r12, r1, #0x3 + beq _020BD3F8 + cmp r1, lr + addhi r1, r12, lr, lsr #0x2 + bhi _020BD44C + ands r12, r1, #0x1 + beq _020BD3F0 + ands r12, r1, #0x2 + movne lr, r1, lsr #0x2 + addne r12, lr, #0x1 + moveq r12, r1, lsr #0x2 + addeq lr, r12, #0x1 + ands r1, r2, #0x20000000 + beq _020BD3B4 + mov r2, r12, lsl #0x1 + mov r1, lr, lsl #0x1 + ldrsh r12, [r3, r2] + ldrsh r2, [r3, r1] + mov r1, #0x3 + add sp, sp, #0x4 + smlabb r1, r12, r1, r2 + mov r1, r1, asr #0x2 + str r1, [r0, #0x0] + ldmia sp!, {pc} +_020BD3B4: + ldr r12, [r3, r12, lsl #0x2] + ldr r1, [r3, lr, lsl #0x2] + mov r2, r12, asr #0x1f + mov r2, r2, lsl #0x1 + mov r3, r12, lsl #0x1 + orr r2, r2, r12, lsr #0x1f + adds r3, r3, r12 + adc r2, r2, r12, asr #0x1f + adds r3, r3, r1 + adc r1, r2, r1, asr #0x1f + mov r2, r3, lsr #0x2 + orr r2, r2, r1, lsl #0x1e + str r2, [r0, #0x0] + add sp, sp, #0x4 + ldmia sp!, {pc} +_020BD3F0: + mov r12, r1, lsr #0x2 + b _020BD400 +_020BD3F8: + mov r1, r1, lsr #0x2 + b _020BD44C +_020BD400: + ands r1, r2, #0x20000000 + beq _020BD42C + mov r2, r12, lsl #0x1 + add r1, r3, r12, lsl #0x1 + ldrsh r2, [r3, r2] + ldrsh r1, [r1, #0x2] + add sp, sp, #0x4 + add r1, r2, r1 + mov r1, r1, asr #0x1 + str r1, [r0, #0x0] + ldmia sp!, {pc} +_020BD42C: + add r1, r3, r12, lsl #0x2 + ldr r2, [r3, r12, lsl #0x2] + ldr r1, [r1, #0x4] + mov r2, r2, asr #0x1 + add r1, r2, r1, asr #0x1 + str r1, [r0, #0x0] + add sp, sp, #0x4 + ldmia sp!, {pc} +_020BD44C: + ands r2, r2, #0x20000000 + movne r1, r1, lsl #0x1 + ldrnesh r1, [r3, r1] + strne r1, [r0, #0x0] + ldreq r1, [r3, r1, lsl #0x2] + streq r1, [r0, #0x0] + add sp, sp, #0x4 + ldmia sp!, {pc} + .balign 4 +_020BD46C: .word 0x1FFF0000 + arm_func_end getTransData_ + + arm_func_start getJntSRTAnmResult_ +getJntSRTAnmResult_: ; 0x020BD470 + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0x34 + mov r9, r0 + add r0, r9, r1, lsl #0x1 + ldrh r0, [r0, #0x14] + mov r7, r3 + mov r8, r2 + ldr r5, [r9, r0] + add r1, r9, r0 + ands r0, r5, #0x1 + movne r0, #0x7 + strne r0, [r7, #0x0] + bne _020BD814 + ldr r0, _020BD848 ; =0x00000FFF + add r4, r1, #0x4 + ands r0, r8, r0 + beq _020BD4C4 + ldr r0, [r9, #0x8] + ands r0, r0, #0x1 + movne r6, #0x1 + bne _020BD4C8 +_020BD4C4: + mov r6, #0x0 +_020BD4C8: + mov r0, #0x0 + str r0, [r7, #0x0] + ands r0, r5, #0x6 + bne _020BD5C0 + ands r0, r5, #0x8 + bne _020BD51C + cmp r6, #0x0 + beq _020BD500 + mov r1, r8 + mov r2, r4 + mov r3, r9 + add r0, r7, #0x4c + bl getTransDataEx_ + b _020BD514 +_020BD500: + mov r1, r8 + mov r2, r4 + mov r3, r9 + add r0, r7, #0x4c + bl getTransData_ +_020BD514: + add r4, r4, #0x8 + b _020BD524 +_020BD51C: + ldr r0, [r4], #0x4 + str r0, [r7, #0x4c] +_020BD524: + ands r0, r5, #0x10 + bne _020BD568 + cmp r6, #0x0 + beq _020BD54C + mov r1, r8 + mov r2, r4 + mov r3, r9 + add r0, r7, #0x50 + bl getTransDataEx_ + b _020BD560 +_020BD54C: + mov r1, r8 + mov r2, r4 + mov r3, r9 + add r0, r7, #0x50 + bl getTransData_ +_020BD560: + add r4, r4, #0x8 + b _020BD570 +_020BD568: + ldr r0, [r4], #0x4 + str r0, [r7, #0x50] +_020BD570: + ands r0, r5, #0x20 + bne _020BD5B4 + cmp r6, #0x0 + beq _020BD598 + mov r1, r8 + mov r2, r4 + mov r3, r9 + add r0, r7, #0x54 + bl getTransDataEx_ + b _020BD5AC +_020BD598: + mov r1, r8 + mov r2, r4 + mov r3, r9 + add r0, r7, #0x54 + bl getTransData_ +_020BD5AC: + add r4, r4, #0x8 + b _020BD5DC +_020BD5B4: + ldr r0, [r4], #0x4 + str r0, [r7, #0x54] + b _020BD5DC +_020BD5C0: + ands r0, r5, #0x2 + ldrne r0, [r7, #0x0] + orrne r0, r0, #0x4 + strne r0, [r7, #0x0] + bne _020BD5DC + mov r0, r7 + bl getMdlTrans_ +_020BD5DC: + ands r0, r5, #0xc0 + bne _020BD6A8 + ands r0, r5, #0x100 + bne _020BD628 + cmp r6, #0x0 + beq _020BD60C + mov r1, r8 + mov r2, r4 + mov r3, r9 + add r0, r7, #0x28 + bl getRotDataEx_ + b _020BD620 +_020BD60C: + mov r1, r8 + mov r2, r4 + mov r3, r9 + add r0, r7, #0x28 + bl getRotData_ +_020BD620: + add r4, r4, #0x8 + b _020BD6C4 +_020BD628: + ldr r1, [r9, #0xc] + ldr r2, [r9, #0x10] + ldr r3, [r4, #0x0] + add r0, r7, #0x28 + add r1, r9, r1 + add r2, r9, r2 + bl getRotDataByIdx_ + cmp r0, #0x0 + beq _020BD6A0 + ldr r12, [r7, #0x3c] + ldr r0, [r7, #0x2c] + ldr r3, [r7, #0x28] + ldr r11, [r7, #0x38] + ldr r1, [r7, #0x30] + ldr r2, [r7, #0x34] + mul r10, r0, r12 + mul lr, r1, r11 + sub r10, r10, lr + mov r10, r10, asr #0xc + mul lr, r1, r2 + mul r1, r3, r12 + sub r1, lr, r1 + mul r11, r3, r11 + mul r2, r0, r2 + sub r0, r11, r2 + str r10, [r7, #0x40] + mov r1, r1, asr #0xc + str r1, [r7, #0x44] + mov r0, r0, asr #0xc + str r0, [r7, #0x48] +_020BD6A0: + add r4, r4, #0x4 + b _020BD6C4 +_020BD6A8: + ands r0, r5, #0x40 + ldrne r0, [r7, #0x0] + orrne r0, r0, #0x2 + strne r0, [r7, #0x0] + bne _020BD6C4 + mov r0, r7 + bl getMdlRot_ +_020BD6C4: + ands r0, r5, #0x600 + bne _020BD7F0 + ands r0, r5, #0x800 + bne _020BD71C + cmp r6, #0x0 + beq _020BD6F4 + add r0, sp, #0x0 + mov r1, r8 + mov r2, r4 + mov r3, r9 + bl getScaleDataEx_ + b _020BD708 +_020BD6F4: + add r0, sp, #0x0 + mov r1, r8 + mov r2, r4 + mov r3, r9 + bl getScaleData_ +_020BD708: + ldr r1, [sp, #0x0] + ldr r0, [sp, #0x4] + str r1, [sp, #0x18] + str r0, [sp, #0x24] + b _020BD72C +_020BD71C: + ldr r0, [r4, #0x0] + str r0, [sp, #0x18] + ldr r0, [r4, #0x4] + str r0, [sp, #0x24] +_020BD72C: + ands r0, r5, #0x1000 + bne _020BD77C + cmp r6, #0x0 + beq _020BD754 + add r0, sp, #0x8 + mov r1, r8 + mov r3, r9 + add r2, r4, #0x8 + bl getScaleDataEx_ + b _020BD768 +_020BD754: + add r0, sp, #0x8 + mov r1, r8 + mov r3, r9 + add r2, r4, #0x8 + bl getScaleData_ +_020BD768: + ldr r1, [sp, #0x8] + ldr r0, [sp, #0xc] + str r1, [sp, #0x1c] + str r0, [sp, #0x28] + b _020BD78C +_020BD77C: + ldr r0, [r4, #0x8] + str r0, [sp, #0x1c] + ldr r0, [r4, #0xc] + str r0, [sp, #0x28] +_020BD78C: + ands r0, r5, #0x2000 + bne _020BD7DC + cmp r6, #0x0 + beq _020BD7B4 + add r0, sp, #0x10 + mov r1, r8 + mov r3, r9 + add r2, r4, #0x10 + bl getScaleDataEx_ + b _020BD7C8 +_020BD7B4: + add r0, sp, #0x10 + mov r1, r8 + mov r3, r9 + add r2, r4, #0x10 + bl getScaleData_ +_020BD7C8: + ldr r1, [sp, #0x10] + ldr r0, [sp, #0x14] + str r1, [sp, #0x20] + str r0, [sp, #0x2c] + b _020BD814 +_020BD7DC: + ldr r0, [r4, #0x10] + str r0, [sp, #0x20] + ldr r0, [r4, #0x14] + str r0, [sp, #0x2c] + b _020BD814 +_020BD7F0: + ands r0, r5, #0x200 + ldrne r0, [r7, #0x0] + orrne r0, r0, #0x1 + strne r0, [r7, #0x0] + bne _020BD814 + mov r0, r7 + bl getMdlScale_ + add sp, sp, #0x34 + ldmia sp!, {r4-r11,pc} +_020BD814: + ldr r0, [r7, #0x0] + add r1, sp, #0x18 + ands r0, r0, #0x1 + ldr r0, _020BD84C ; =NNS_G3dRS + movne r3, #0x4 + ldr r4, [r0, #0x0] + moveq r3, #0x0 + ldr r2, [r4, #0x0] + ldr r4, [r4, #0xe8] + mov r0, r7 + blx r4 + add sp, sp, #0x34 + ldmia sp!, {r4-r11,pc} + .balign 4 +_020BD848: .word 0x00000FFF +_020BD84C: .word NNS_G3dRS + arm_func_end getJntSRTAnmResult_ + + arm_func_start getMdlRot_ +getMdlRot_: ; 0x020BD850 + stmdb sp!, {r4-r8,lr} + ldr r1, _020BD990 ; =NNS_G3dRS + mov r8, r0 + ldr r0, [r1, #0x0] + ldr r3, [r0, #0xd4] + ldr r0, [r0, #0x0] + ldrh r2, [r3, #0x6] + ldrb r0, [r0, #0x1] + ldrh r1, [r3, r2] + add r2, r3, r2 + mla r0, r1, r0, r2 + ldr r0, [r0, #0x4] + ldrh r2, [r3, r0] + add r4, r3, r0 + add r1, r4, #0x4 + ands r0, r2, #0x1 + addeq r1, r1, #0xc + ands r0, r2, #0x2 + bne _020BD980 + ands r0, r2, #0x8 + beq _020BD934 + and r2, r2, #0xf0 + add r0, r8, #0x28 + mov r5, r2, asr #0x4 + ldrsh r7, [r1, #0x0] + ldrsh r6, [r1, #0x2] + bl MI_Zero36B + ldrh r0, [r4, #0x0] + add r1, r8, r5, lsl #0x2 + ands r0, r0, #0x100 + movne r0, #0x1000 + rsbne r2, r0, #0x0 + moveq r2, #0x1000 + ldr r0, _020BD994 ; =pivotUtil_ + str r2, [r1, #0x28] + ldrb r1, [r0, r5, lsl #0x2] + ldr r0, _020BD998 ; =pivotUtil_ + 1 + add r1, r8, r1, lsl #0x2 + str r7, [r1, #0x28] + ldrb r0, [r0, r5, lsl #0x2] + add r0, r8, r0, lsl #0x2 + str r6, [r0, #0x28] + ldrh r0, [r4, #0x0] + ands r0, r0, #0x200 + ldr r0, _020BD99C ; =pivotUtil_ + 2 + rsbne r6, r6, #0x0 + ldrb r0, [r0, r5, lsl #0x2] + add r0, r8, r0, lsl #0x2 + str r6, [r0, #0x28] + ldrh r0, [r4, #0x0] + ands r0, r0, #0x400 + ldr r0, _020BD9A0 ; =pivotUtil_ + 3 + rsbne r7, r7, #0x0 + ldrb r0, [r0, r5, lsl #0x2] + add r0, r8, r0, lsl #0x2 + str r7, [r0, #0x28] + ldmia sp!, {r4-r8,pc} +_020BD934: + ldrsh r0, [r4, #0x2] + str r0, [r8, #0x28] + ldrsh r0, [r1, #0x0] + str r0, [r8, #0x2c] + ldrsh r0, [r1, #0x2] + str r0, [r8, #0x30] + ldrsh r0, [r1, #0x4] + str r0, [r8, #0x34] + ldrsh r0, [r1, #0x6] + str r0, [r8, #0x38] + ldrsh r0, [r1, #0x8] + str r0, [r8, #0x3c] + ldrsh r0, [r1, #0xa] + str r0, [r8, #0x40] + ldrsh r0, [r1, #0xc] + str r0, [r8, #0x44] + ldrsh r0, [r1, #0xe] + str r0, [r8, #0x48] + ldmia sp!, {r4-r8,pc} +_020BD980: + ldr r0, [r8, #0x0] + orr r0, r0, #0x2 + str r0, [r8, #0x0] + ldmia sp!, {r4-r8,pc} + .balign 4 +_020BD990: .word NNS_G3dRS +_020BD994: .word pivotUtil_ +_020BD998: .word pivotUtil_ + 1 +_020BD99C: .word pivotUtil_ + 2 +_020BD9A0: .word pivotUtil_ + 3 + arm_func_end getMdlRot_ + + arm_func_start getMdlScale_ +getMdlScale_: ; 0x020BD9A4 + stmdb sp!, {r4,lr} + ldr r1, _020BDA04 ; =NNS_G3dRS + ldr r12, [r1, #0x0] + ldr r4, [r12, #0xd4] + ldr r2, [r12, #0x0] + ldrh lr, [r4, #0x6] + ldrb r1, [r2, #0x1] + ldrh r3, [r4, lr] + add lr, r4, lr + mla r1, r3, r1, lr + ldr r1, [r1, #0x4] + ldrh r3, [r4, r1] + add r1, r4, r1 + add r1, r1, #0x4 + ands lr, r3, #0x1 + addeq r1, r1, #0xc + ands lr, r3, #0x2 + bne _020BD9F8 + ands lr, r3, #0x8 + addne r1, r1, #0x4 + addeq r1, r1, #0x10 +_020BD9F8: + ldr r12, [r12, #0xe8] + blx r12 + ldmia sp!, {r4,pc} + .balign 4 +_020BDA04: .word NNS_G3dRS + arm_func_end getMdlScale_ + + arm_func_start getMdlTrans_ +getMdlTrans_: ; 0x020BDA08 + ldr r1, _020BDA6C ; =NNS_G3dRS + ldr r1, [r1, #0x0] + ldr r12, [r1, #0xd4] + ldr r1, [r1, #0x0] + ldrh r3, [r12, #0x6] + ldrb r1, [r1, #0x1] + ldrh r2, [r12, r3] + add r3, r12, r3 + mla r1, r2, r1, r3 + ldr r2, [r1, #0x4] + ldrh r1, [r12, r2] + add r2, r12, r2 + ands r1, r1, #0x1 + ldrne r1, [r0, #0x0] + orrne r1, r1, #0x4 + strne r1, [r0, #0x0] + bxne lr + ldr r1, [r2, #0x4] + add r2, r2, #0x4 + str r1, [r0, #0x4c] + ldr r1, [r2, #0x4] + str r1, [r0, #0x50] + ldr r1, [r2, #0x8] + str r1, [r0, #0x54] + bx lr + .balign 4 +_020BDA6C: .word NNS_G3dRS + arm_func_end getMdlTrans_ + + arm_func_start NNSi_G3dAnmCalcNsBca +NNSi_G3dAnmCalcNsBca: ; 0x020BDA70 + stmdb sp!, {lr} + sub sp, sp, #0x4 + mov r3, r0 + ldr r0, [r1, #0x8] + ldr r12, [r1, #0x0] + ldrh r1, [r0, #0x4] + mov r1, r1, lsl #0xc + cmp r12, r1 + subge r12, r1, #0x1 + bge _020BDAA0 + cmp r12, #0x0 + movlt r12, #0x0 +_020BDAA0: + mov r1, r2 + mov r2, r12 + bl getJntSRTAnmResult_ + add sp, sp, #0x4 + ldmia sp!, {pc} + arm_func_end NNSi_G3dAnmCalcNsBca + + arm_func_start NNSi_G3dAnmObjInitNsBca +NNSi_G3dAnmObjInitNsBca: ; 0x020BDAB4 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r5, r0 + mov r4, r1 + ldr r0, _020BDB3C ; =NNS_G3dFuncAnmJntNsBcaDefault + str r4, [r5, #0x8] + ldr r0, [r0, #0x0] + add r1, r5, #0x1a + str r0, [r5, #0xc] + ldrb r2, [r2, #0x17] + mov r0, #0x0 + strb r2, [r5, #0x19] + ldrb r2, [r5, #0x19] + mov r2, r2, lsl #0x1 + bl MIi_CpuClear16 + ldrh r0, [r4, #0x6] + add r2, r4, #0x14 + mov r3, #0x0 + cmp r0, #0x0 + addls sp, sp, #0x4 + ldmlsia sp!, {r4-r5,pc} +_020BDB08: + mov r0, r3, lsl #0x1 + ldrh r1, [r2, r0] + add r0, r5, r3, lsl #0x1 + add r3, r3, #0x1 + ldr r1, [r4, r1] + mov r1, r1, lsr #0x18 + orr r1, r1, #0x100 + strh r1, [r0, #0x1a] + ldrh r0, [r4, #0x6] + cmp r3, r0 + blo _020BDB08 + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + .balign 4 +_020BDB3C: .word NNS_G3dFuncAnmJntNsBcaDefault + arm_func_end NNSi_G3dAnmObjInitNsBca diff --git a/arm9/asm/NNS_G3D_nsbma.s b/arm9/asm/NNS_G3D_nsbma.s new file mode 100644 index 00000000..acadbe75 --- /dev/null +++ b/arm9/asm/NNS_G3D_nsbma.s @@ -0,0 +1,287 @@ + .include "asm/macros.inc" + .include "global.inc" + + .section .text + + arm_func_start NNSi_G3dAnmCalcNsBma +NNSi_G3dAnmCalcNsBma: ; 0x020BDB40 + stmdb sp!, {r4-r8,lr} + ldr r7, [r1, #0x8] + mov r2, r2, lsl #0x10 + ldrh r4, [r7, #0xe] + add r5, r7, #0x8 + ldr r6, [r1, #0x0] + ldrh r3, [r5, r4] + mov r1, r2, lsr #0x10 + add r2, r5, r4 + mul r4, r3, r1 + add r3, r2, #0x4 + mov r6, r6, asr #0xc + mov r8, r0 + ldr r1, [r3, r4] + mov r0, r7 + mov r2, r6 + add r5, r3, r4 + bl GetMatColAnmValue_ + mov r4, r0 + ldr r1, [r5, #0x4] + mov r0, r7 + mov r2, r6 + bl GetMatColAnmValue_ + ldr r1, [r8, #0x4] + mov r2, r6 + and r1, r1, #0x8000 + orr r1, r1, r4 + orr r0, r1, r0, lsl #0x10 + str r0, [r8, #0x4] + mov r0, r7 + ldr r1, [r5, #0xc] + bl GetMatColAnmValue_ + mov r4, r0 + mov r0, r7 + ldr r1, [r5, #0x8] + mov r2, r6 + bl GetMatColAnmValue_ + mov r2, r6 + ldr r1, [r8, #0x8] + and r1, r1, #0x8000 + orr r0, r1, r0 + orr r0, r0, r4, lsl #0x10 + str r0, [r8, #0x8] + mov r0, r7 + ldr r1, [r5, #0x10] + bl GetMatColAnmuAlphaValue_ + ldr r1, [r8, #0xc] + bic r1, r1, #0x1f0000 + orr r0, r1, r0, lsl #0x10 + str r0, [r8, #0xc] + ldmia sp!, {r4-r8,pc} + arm_func_end NNSi_G3dAnmCalcNsBma + + arm_func_start NNSi_G3dAnmObjInitNsBma +NNSi_G3dAnmObjInitNsBma: ; 0x020BDC0C + stmdb sp!, {r4-r9,lr} + sub sp, sp, #0x4 + ldr r3, _020BDCB4 ; =NNS_G3dFuncAnmMatNsBmaDefault + ldr r4, [r2, #0x8] + ldr r3, [r3, #0x0] + mov r9, r0 + str r3, [r9, #0xc] + ldrb r0, [r2, #0x18] + mov r8, r1 + add r4, r2, r4 + strb r0, [r9, #0x19] + ldrb r2, [r9, #0x19] + add r1, r9, #0x1a + mov r0, #0x0 + mov r2, r2, lsl #0x1 + bl MIi_CpuClear16 + ldrb r0, [r8, #0x9] + mov r7, #0x0 + cmp r0, #0x0 + addls sp, sp, #0x4 + ldmlsia sp!, {r4-r9,pc} + mov r6, r7 + add r5, r8, #0x8 + add r4, r4, #0x4 +_020BDC6C: + ldrh r1, [r8, #0xe] + mov r0, r4 + add r2, r5, r1 + ldrh r1, [r2, #0x2] + add r1, r2, r1 + add r1, r1, r6 + bl NNS_G3dGetResDictIdxByName + cmp r0, #0x0 + orrge r1, r7, #0x100 + addge r0, r9, r0, lsl #0x1 + strgeh r1, [r0, #0x1a] + ldrb r0, [r8, #0x9] + add r7, r7, #0x1 + add r6, r6, #0x10 + cmp r7, r0 + blo _020BDC6C + add sp, sp, #0x4 + ldmia sp!, {r4-r9,pc} + .balign 4 +_020BDCB4: .word NNS_G3dFuncAnmMatNsBmaDefault + arm_func_end NNSi_G3dAnmObjInitNsBma + + arm_func_start GetMatColAnmuAlphaValue_ +GetMatColAnmuAlphaValue_: ; 0x020BDCB8 + ands r3, r1, #0x20000000 + movne r0, r1, lsl #0x10 + movne r0, r0, lsr #0x10 + bxne lr + ldr r3, _020BDDA4 ; =0x0000FFFF + ands r12, r1, #0xc0000000 + and r3, r1, r3 + add r0, r0, r3 + ldreqb r0, [r0, r2] + bxeq lr + ldr r3, _020BDDA8 ; =0x1FFF0000 + ands r12, r1, #0x40000000 + and r1, r1, r3 + mov r3, r1, lsr #0x10 + beq _020BDD30 + ands r1, r2, #0x1 + beq _020BDD28 + cmp r2, r3 + addhi r0, r0, r3, lsr #0x1 + ldrhib r0, [r0, #0x1] + bxhi lr + add r1, r0, r2, lsr #0x1 + ldrb r2, [r0, r2, lsr #0x1] + ldrb r0, [r1, #0x1] + add r0, r2, r0 + mov r0, r0, lsl #0xf + mov r0, r0, lsr #0x10 + bx lr +_020BDD28: + ldrb r0, [r0, r2, lsr #0x1] + bx lr +_020BDD30: + ands r1, r2, #0x3 + beq _020BDD9C + cmp r2, r3 + addhi r0, r0, r3, lsr #0x2 + ldrhib r0, [r1, r0] + bxhi lr + ands r1, r2, #0x1 + beq _020BDD80 + ands r1, r2, #0x2 + movne r1, r2, lsr #0x2 + addne r2, r1, #0x1 + moveq r2, r2, lsr #0x2 + addeq r1, r2, #0x1 + ldrb r2, [r0, r2] + ldrb r1, [r0, r1] + mov r0, #0x3 + mla r0, r2, r0, r1 + mov r0, r0, lsl #0xe + mov r0, r0, lsr #0x10 + bx lr +_020BDD80: + add r1, r0, r2, lsr #0x2 + ldrb r2, [r0, r2, lsr #0x2] + ldrb r0, [r1, #0x1] + add r0, r2, r0 + mov r0, r0, lsl #0xf + mov r0, r0, lsr #0x10 + bx lr +_020BDD9C: + ldrb r0, [r0, r2, lsr #0x2] + bx lr + .balign 4 +_020BDDA4: .word 0x0000FFFF +_020BDDA8: .word 0x1FFF0000 + arm_func_end GetMatColAnmuAlphaValue_ + + arm_func_start GetMatColAnmValue_ +GetMatColAnmValue_: ; 0x020BDDAC + stmdb sp!, {lr} + sub sp, sp, #0x4 + ands r3, r1, #0x20000000 + movne r0, r1, lsl #0x10 + addne sp, sp, #0x4 + movne r0, r0, lsr #0x10 + ldmneia sp!, {pc} + ldr r3, _020BDF2C ; =0x0000FFFF + ands r12, r1, #0xc0000000 + and r3, r1, r3 + add r0, r0, r3 + moveq r1, r2, lsl #0x1 + addeq sp, sp, #0x4 + ldreqh r0, [r0, r1] + ldmeqia sp!, {pc} + ldr r3, _020BDF30 ; =0x1FFF0000 + ands r12, r1, #0x40000000 + and r1, r1, r3 + mov r3, r1, lsr #0x10 + beq _020BDE34 + ands r1, r2, #0x1 + beq _020BDE24 + cmp r2, r3 + bichi r1, r3, #0x1 + addhi r0, r0, r1 + addhi sp, sp, #0x4 + ldrhih r0, [r0, #0x2] + ldmhiia sp!, {pc} + mov r1, r2, lsr #0x1 + b _020BDEE0 +_020BDE24: + bic r1, r2, #0x1 + add sp, sp, #0x4 + ldrh r0, [r0, r1] + ldmia sp!, {pc} +_020BDE34: + ands r1, r2, #0x3 + beq _020BDECC + cmp r2, r3 + movhi r2, r3, lsr #0x2 + movhi r1, r1, lsl #0x1 + addhi r0, r0, r2, lsl #0x1 + addhi sp, sp, #0x4 + ldrhih r0, [r1, r0] + ldmhiia sp!, {pc} + ands r1, r2, #0x1 + beq _020BDEC4 + ands r1, r2, #0x2 + movne r1, r2, lsr #0x2 + addne r2, r1, #0x1 + moveq r2, r2, lsr #0x2 + addeq r1, r2, #0x1 + mov r2, r2, lsl #0x1 + mov r1, r1, lsl #0x1 + ldrh r12, [r0, r2] + ldrh lr, [r0, r1] + ldr r0, _020BDF34 ; =0x00007C1F + and r3, r12, #0x3e0 + and r2, lr, #0x3e0 + mov r1, #0x3 + mla r2, r3, r1, r2 + and r12, r12, r0 + and r3, lr, r0 + mla r1, r12, r1, r3 + mov r2, r2, lsr #0x2 + and r1, r0, r1, lsr #0x2 + and r0, r2, #0x3e0 + orr r0, r1, r0 + mov r0, r0, lsl #0x10 + add sp, sp, #0x4 + mov r0, r0, lsr #0x10 + ldmia sp!, {pc} +_020BDEC4: + mov r1, r2, lsr #0x2 + b _020BDEE0 +_020BDECC: + mov r1, r2, lsr #0x2 + mov r1, r1, lsl #0x1 + add sp, sp, #0x4 + ldrh r0, [r0, r1] + ldmia sp!, {pc} +_020BDEE0: + mov r2, r1, lsl #0x1 + add r1, r0, r1, lsl #0x1 + ldrh r3, [r0, r2] + ldrh r12, [r1, #0x2] + ldr r0, _020BDF34 ; =0x00007C1F + and r2, r3, #0x3e0 + and r1, r12, #0x3e0 + add r1, r2, r1 + mov r1, r1, lsr #0x1 + and r3, r3, r0 + and r2, r12, r0 + add r2, r3, r2 + and r2, r0, r2, lsr #0x1 + and r0, r1, #0x3e0 + orr r0, r2, r0 + mov r0, r0, lsl #0x10 + mov r0, r0, lsr #0x10 + add sp, sp, #0x4 + ldmia sp!, {pc} + .balign 4 +_020BDF2C: .word 0x0000FFFF +_020BDF30: .word 0x1FFF0000 +_020BDF34: .word 0x00007C1F + arm_func_end GetMatColAnmValue_ diff --git a/arm9/asm/NNS_G3D_nsbta.s b/arm9/asm/NNS_G3D_nsbta.s new file mode 100644 index 00000000..a9fde7cb --- /dev/null +++ b/arm9/asm/NNS_G3D_nsbta.s @@ -0,0 +1,299 @@ + .include "asm/macros.inc" + .include "global.inc" + + .section .text + + arm_func_start NNSi_G3dAnmCalcNsBta +NNSi_G3dAnmCalcNsBta: ; 0x020BDF38 + stmdb sp!, {r4,lr} + ldr r12, [r1, #0x0] + mov r4, r0 + mov r2, r2, lsl #0x10 + ldr r0, [r1, #0x8] + mov r1, r2, lsr #0x10 + mov r3, r4 + mov r2, r12, asr #0xc + bl GetTexSRTAnm_ + ldr r0, [r4, #0x10] + bic r0, r0, #0xc0000000 + str r0, [r4, #0x10] + ldr r0, [r4, #0x10] + orr r0, r0, #0x40000000 + str r0, [r4, #0x10] + ldr r0, [r4, #0x0] + orr r0, r0, #0x8 + str r0, [r4, #0x0] + ldmia sp!, {r4,pc} + arm_func_end NNSi_G3dAnmCalcNsBta + + arm_func_start NNSi_G3dAnmObjInitNsBta +NNSi_G3dAnmObjInitNsBta: ; 0x020BDF84 + stmdb sp!, {r4-r9,lr} + sub sp, sp, #0x4 + ldr r3, _020BE02C ; =NNS_G3dFuncAnmMatNsBtaDefault + ldr r4, [r2, #0x8] + ldr r3, [r3, #0x0] + mov r9, r0 + str r3, [r9, #0xc] + ldrb r0, [r2, #0x18] + mov r8, r1 + add r4, r2, r4 + strb r0, [r9, #0x19] + ldrb r2, [r9, #0x19] + add r1, r9, #0x1a + mov r0, #0x0 + mov r2, r2, lsl #0x1 + bl MIi_CpuClear16 + ldrb r0, [r8, #0x9] + mov r7, #0x0 + cmp r0, #0x0 + addls sp, sp, #0x4 + ldmlsia sp!, {r4-r9,pc} + mov r6, r7 + add r5, r8, #0x8 + add r4, r4, #0x4 +_020BDFE4: + ldrh r1, [r8, #0xe] + mov r0, r4 + add r2, r5, r1 + ldrh r1, [r2, #0x2] + add r1, r2, r1 + add r1, r1, r6 + bl NNS_G3dGetResDictIdxByName + cmp r0, #0x0 + orrge r1, r7, #0x100 + addge r0, r9, r0, lsl #0x1 + strgeh r1, [r0, #0x1a] + ldrb r0, [r8, #0x9] + add r7, r7, #0x1 + add r6, r6, #0x10 + cmp r7, r0 + blo _020BDFE4 + add sp, sp, #0x4 + ldmia sp!, {r4-r9,pc} + .balign 4 +_020BE02C: .word NNS_G3dFuncAnmMatNsBtaDefault + arm_func_end NNSi_G3dAnmObjInitNsBta + + arm_func_start GetTexSRTAnm_ +GetTexSRTAnm_: ; 0x020BE030 + stmdb sp!, {r4-r9,lr} + sub sp, sp, #0x4 + mov r8, r0 + ldrh r4, [r8, #0xe] + add r5, r8, #0x8 + mov r6, r3 + ldrh r3, [r5, r4] + add r4, r5, r4 + add r4, r4, #0x4 + mla r5, r3, r1, r4 + mov r7, r2 + ldr r1, [r5, #0x18] + ldr r2, [r5, #0x1c] + mov r3, r7 + ldr r4, [r6, #0x0] + bl GetTexSRTAnmVectorVal_ + mov r9, r0 + ldr r1, [r5, #0x20] + mov r0, r8 + ldr r2, [r5, #0x24] + mov r3, r7 + bl GetTexSRTAnmVectorVal_ + cmp r9, #0x0 + bne _020BE09C + cmp r0, #0x0 + orreq r4, r4, #0x4 + beq _020BE0A8 +_020BE09C: + str r9, [r6, #0x24] + str r0, [r6, #0x28] + bic r4, r4, #0x4 +_020BE0A8: + ldr r1, [r5, #0x10] + ldr r2, [r5, #0x14] + mov r0, r8 + mov r3, r7 + bl GetTexSRTAnmSinCosVal_ + cmp r0, #0x10000000 + strneh r0, [r6, #0x20] + movne r0, r0, lsr #0x10 + strneh r0, [r6, #0x22] + orreq r4, r4, #0x2 + ldr r1, [r5, #0x0] + ldr r2, [r5, #0x4] + mov r0, r8 + mov r3, r7 + bicne r4, r4, #0x2 + bl GetTexSRTAnmVectorVal_ + mov r9, r0 + ldr r1, [r5, #0x8] + ldr r2, [r5, #0xc] + mov r0, r8 + mov r3, r7 + bl GetTexSRTAnmVectorVal_ + cmp r9, #0x1000 + bne _020BE114 + cmp r0, #0x1000 + orreq r4, r4, #0x1 + beq _020BE120 +_020BE114: + str r9, [r6, #0x18] + str r0, [r6, #0x1c] + bic r4, r4, #0x1 +_020BE120: + str r4, [r6, #0x0] + add sp, sp, #0x4 + ldmia sp!, {r4-r9,pc} + arm_func_end GetTexSRTAnm_ + + arm_func_start GetTexSRTAnmSinCosVal_ +GetTexSRTAnmSinCosVal_: ; 0x020BE12C + ands r12, r1, #0x20000000 + movne r0, r2 + bxne lr + add r0, r0, r2 + ands r2, r1, #0xc0000000 + beq _020BE1F8 + ldr r2, _020BE234 ; =0x0000FFFF + ands r12, r1, #0x40000000 + and r2, r1, r2 + beq _020BE17C + ands r1, r3, #0x1 + beq _020BE174 + cmp r3, r2 + movhi r1, r2, lsr #0x1 + addhi r3, r1, #0x1 + bhi _020BE1F8 + mov r2, r3, lsr #0x1 + b _020BE200 +_020BE174: + mov r3, r3, lsr #0x1 + b _020BE1F8 +_020BE17C: + ands r1, r3, #0x3 + beq _020BE1F4 + cmp r3, r2 + addhi r3, r1, r2, lsr #0x2 + bhi _020BE1F8 + ands r1, r3, #0x1 + beq _020BE1EC + ands r1, r3, #0x2 + movne r1, r3, lsr #0x2 + addne r2, r1, #0x1 + moveq r2, r3, lsr #0x2 + addeq r1, r2, #0x1 + mov r12, r2, lsl #0x2 + add r3, r0, r2, lsl #0x2 + mov r2, r1, lsl #0x2 + add r1, r0, r1, lsl #0x2 + ldrsh r12, [r0, r12] + ldrsh r2, [r0, r2] + mov r0, #0x3 + ldrsh r3, [r3, #0x2] + ldrsh r1, [r1, #0x2] + mla r2, r12, r0, r2 + mla r1, r3, r0, r1 + ldr r0, _020BE234 ; =0x0000FFFF + mov r1, r1, asr #0x2 + and r0, r0, r2, asr #0x2 + orr r0, r0, r1, lsl #0x10 + bx lr +_020BE1EC: + mov r2, r3, lsr #0x2 + b _020BE200 +_020BE1F4: + mov r3, r3, lsr #0x2 +_020BE1F8: + ldr r0, [r0, r3, lsl #0x2] + bx lr +_020BE200: + add r1, r0, r2, lsl #0x2 + mov r2, r2, lsl #0x2 + ldrsh r12, [r0, r2] + ldrsh r3, [r1, #0x4] + ldrsh r2, [r1, #0x2] + ldrsh r1, [r1, #0x6] + ldr r0, _020BE234 ; =0x0000FFFF + add r3, r12, r3 + add r1, r2, r1 + and r2, r0, r3, asr #0x1 + mov r0, r1, asr #0x1 + orr r0, r2, r0, lsl #0x10 + bx lr + .balign 4 +_020BE234: .word 0x0000FFFF + arm_func_end GetTexSRTAnmSinCosVal_ + + arm_func_start GetTexSRTAnmVectorVal_ +GetTexSRTAnmVectorVal_: ; 0x020BE238 + ands r12, r1, #0x20000000 + movne r0, r2 + bxne lr + add r0, r0, r2 + ands r2, r1, #0xc0000000 + beq _020BE2F0 + ldr r2, _020BE330 ; =0x0000FFFF + ands r12, r1, #0x40000000 + and r12, r1, r2 + beq _020BE288 + ands r2, r3, #0x1 + beq _020BE280 + cmp r3, r12 + movhi r2, r12, lsr #0x1 + addhi r3, r2, #0x1 + bhi _020BE2F0 + mov r3, r3, lsr #0x1 + b _020BE304 +_020BE280: + mov r3, r3, lsr #0x1 + b _020BE2F0 +_020BE288: + ands r2, r3, #0x3 + beq _020BE2EC + cmp r3, r12 + addhi r3, r2, r12, lsr #0x2 + bhi _020BE2F0 + ands r2, r3, #0x1 + beq _020BE2E4 + ands r2, r3, #0x2 + movne r3, r3, lsr #0x2 + addne r2, r3, #0x1 + moveq r2, r3, lsr #0x2 + addeq r3, r2, #0x1 + ands r1, r1, #0x10000000 + movne r2, r2, lsl #0x1 + movne r1, r3, lsl #0x1 + ldrnesh r2, [r0, r2] + ldrnesh r1, [r0, r1] + ldreq r2, [r0, r2, lsl #0x2] + ldreq r1, [r0, r3, lsl #0x2] + mov r0, #0x3 + mla r0, r2, r0, r1 + mov r0, r0, asr #0x2 + bx lr +_020BE2E4: + mov r3, r3, lsr #0x2 + b _020BE304 +_020BE2EC: + mov r3, r3, lsr #0x2 +_020BE2F0: + ands r1, r1, #0x10000000 + movne r1, r3, lsl #0x1 + ldrnesh r0, [r0, r1] + ldreq r0, [r0, r3, lsl #0x2] + bx lr +_020BE304: + ands r1, r1, #0x10000000 + movne r2, r3, lsl #0x1 + addne r1, r0, r3, lsl #0x1 + ldrnesh r2, [r0, r2] + ldrnesh r0, [r1, #0x2] + addeq r1, r0, r3, lsl #0x2 + ldreq r2, [r0, r3, lsl #0x2] + ldreq r0, [r1, #0x4] + add r0, r2, r0 + mov r0, r0, asr #0x1 + bx lr + .balign 4 +_020BE330: .word 0x0000FFFF + arm_func_end GetTexSRTAnmVectorVal_ diff --git a/arm9/asm/NNS_G3D_nsbtp.s b/arm9/asm/NNS_G3D_nsbtp.s new file mode 100644 index 00000000..0ae2aa13 --- /dev/null +++ b/arm9/asm/NNS_G3D_nsbtp.s @@ -0,0 +1,180 @@ + .include "asm/macros.inc" + .include "global.inc" + + .section .text + + arm_func_start NNSi_G3dAnmCalcNsBtp +NNSi_G3dAnmCalcNsBtp: ; 0x020BE334 + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + mov r6, r1 + ldr r3, [r6, #0x0] + ldr r5, [r6, #0x8] + mov r1, r2, lsl #0x10 + mov r2, r3, lsl #0x4 + mov r7, r0 + mov r0, r5 + mov r1, r1, lsr #0x10 + mov r2, r2, lsr #0x10 + bl NNSi_G3dGetTexPatAnmFV + mov r4, r0 + ldrb r1, [r4, #0x2] + mov r0, r5 + bl NNSi_G3dGetTexPatAnmTexNameByIdx + mov r1, r0 + ldr r0, [r6, #0x14] + mov r2, r7 + bl SetTexParamaters_ + ldrb r1, [r4, #0x3] + cmp r1, #0xff + addeq sp, sp, #0x4 + ldmeqia sp!, {r4-r7,pc} + mov r0, r5 + bl NNSi_G3dGetTexPatAnmPlttNameByIdx + mov r1, r0 + ldr r0, [r6, #0x14] + mov r2, r7 + bl SetPlttParamaters_ + add sp, sp, #0x4 + ldmia sp!, {r4-r7,pc} + arm_func_end NNSi_G3dAnmCalcNsBtp + + arm_func_start SetPlttParamaters_ +SetPlttParamaters_: ; 0x020BE3B4 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r5, r0 + ldrh r0, [r5, #0x34] + mov r4, r2 + add r0, r5, r0 + bl NNS_G3dGetResDataByName + ldr r1, [r5, #0x2c] + ldrh r2, [r0, #0x2] + mov r1, r1, lsl #0x10 + mov r3, r1, lsr #0x10 + ands r1, r2, #0x1 + ldrh r0, [r0, #0x0] + moveq r1, r3, lsl #0xf + moveq r3, r1, lsr #0x10 + moveq r0, r0, lsl #0xf + moveq r0, r0, lsr #0x10 + add r0, r0, r3 + str r0, [r4, #0x14] + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + arm_func_end SetPlttParamaters_ + + arm_func_start SetTexParamaters_ +SetTexParamaters_: ; 0x020BE408 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r5, r0 + add r0, r5, #0x3c + mov r4, r2 + bl NNS_G3dGetResDataByName + ldr r1, [r0, #0x0] + ldr r3, [r4, #0x10] + and r1, r1, #0x1c000000 + cmp r1, #0x14000000 + ldrne r2, [r5, #0x8] + ldrne r1, _020BE4E0 ; =0x0000FFFF + andne r5, r2, r1 + ldreq r2, [r5, #0x18] + ldreq r1, _020BE4E0 ; =0x0000FFFF + andeq r5, r2, r1 + ldr r1, _020BE4E4 ; =0xC00F0000 + ldr r2, _020BE4E8 ; =0x000007FF + and r1, r3, r1 + str r1, [r4, #0x10] + ldr r1, [r0, #0x0] + ldr r3, [r4, #0x10] + add r1, r1, r5 + orr r1, r3, r1 + str r1, [r4, #0x10] + ldr r3, [r0, #0x4] + ldr r1, _020BE4EC ; =0x003FF800 + and r3, r3, r2 + strh r3, [r4, #0x2c] + ldr r3, [r0, #0x4] + and r1, r3, r1 + mov r1, r1, lsr #0xb + strh r1, [r4, #0x2e] + ldr r3, [r0, #0x4] + ldrh r1, [r4, #0x2c] + and r0, r3, r2 + and r5, r2, r3, lsr #0xb + cmp r0, r1 + moveq r0, #0x1000 + beq _020BE4B4 + mov r0, r0, lsl #0xc + mov r1, r1, lsl #0xc + bl FX_Div +_020BE4B4: + str r0, [r4, #0x30] + ldrh r1, [r4, #0x2e] + cmp r5, r1 + moveq r0, #0x1000 + beq _020BE4D4 + mov r0, r5, lsl #0xc + mov r1, r1, lsl #0xc + bl FX_Div +_020BE4D4: + str r0, [r4, #0x34] + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + .balign 4 +_020BE4E0: .word 0x0000FFFF +_020BE4E4: .word 0xC00F0000 +_020BE4E8: .word 0x000007FF +_020BE4EC: .word 0x003FF800 + arm_func_end SetTexParamaters_ + + arm_func_start NNSi_G3dAnmObjInitNsBtp +NNSi_G3dAnmObjInitNsBtp: ; 0x020BE4F0 + stmdb sp!, {r4-r9,lr} + sub sp, sp, #0x4 + ldr r3, _020BE59C ; =NNS_G3dFuncAnmMatNsBtpDefault + ldr r4, [r2, #0x8] + ldr r3, [r3, #0x0] + mov r9, r0 + str r3, [r9, #0xc] + ldrb r0, [r2, #0x18] + mov r8, r1 + add r4, r2, r4 + strb r0, [r9, #0x19] + str r8, [r9, #0x8] + ldrb r2, [r9, #0x19] + add r1, r9, #0x1a + mov r0, #0x0 + mov r2, r2, lsl #0x1 + bl MIi_CpuClear16 + ldrb r0, [r8, #0xd] + mov r7, #0x0 + cmp r0, #0x0 + addls sp, sp, #0x4 + ldmlsia sp!, {r4-r9,pc} + mov r6, r7 + add r5, r8, #0xc + add r4, r4, #0x4 +_020BE554: + ldrh r1, [r8, #0x12] + mov r0, r4 + add r2, r5, r1 + ldrh r1, [r2, #0x2] + add r1, r2, r1 + add r1, r1, r6 + bl NNS_G3dGetResDictIdxByName + cmp r0, #0x0 + orrge r1, r7, #0x100 + addge r0, r9, r0, lsl #0x1 + strgeh r1, [r0, #0x1a] + ldrb r0, [r8, #0xd] + add r7, r7, #0x1 + add r6, r6, #0x10 + cmp r7, r0 + blo _020BE554 + add sp, sp, #0x4 + ldmia sp!, {r4-r9,pc} + .balign 4 +_020BE59C: .word NNS_G3dFuncAnmMatNsBtpDefault + arm_func_end NNSi_G3dAnmObjInitNsBtp diff --git a/arm9/asm/NNS_G3D_nsbva.s b/arm9/asm/NNS_G3D_nsbva.s new file mode 100644 index 00000000..e8dc75e4 --- /dev/null +++ b/arm9/asm/NNS_G3D_nsbva.s @@ -0,0 +1,49 @@ + .include "asm/macros.inc" + .include "global.inc" + + .section .text + + arm_func_start NNSi_G3dAnmCalcNsBva +NNSi_G3dAnmCalcNsBva: ; 0x020BE5A0 + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr lr, [r1, #0x8] + ldr r3, [r1, #0x0] + ldrh r1, [lr, #0x6] + mov r12, r3, asr #0xc + mov r3, #0x1 + mla r2, r12, r1, r2 + mov r1, r2, lsr #0x5 + add r1, lr, r1, lsl #0x2 + ldr r1, [r1, #0xc] + and r2, r2, #0x1f + and r1, r1, r3, lsl r2 + str r1, [r0, #0x0] + add sp, sp, #0x4 + ldmia sp!, {pc} + arm_func_end NNSi_G3dAnmCalcNsBva + + arm_func_start NNSi_G3dAnmObjInitNsBva +NNSi_G3dAnmObjInitNsBva: ; 0x020BE5E0 + ldr r3, _020BE628 ; =NNS_G3dFuncAnmVisNsBvaDefault + mov r12, #0x0 + ldr r3, [r3, #0x0] + str r3, [r0, #0xc] + ldrb r2, [r2, #0x17] + strb r2, [r0, #0x19] + str r1, [r0, #0x8] + ldrb r1, [r0, #0x19] + cmp r1, #0x0 + bxls lr +_020BE608: + orr r2, r12, #0x100 + add r1, r0, r12, lsl #0x1 + strh r2, [r1, #0x1a] + ldrb r1, [r0, #0x19] + add r12, r12, #0x1 + cmp r12, r1 + blo _020BE608 + bx lr + .balign 4 +_020BE628: .word NNS_G3dFuncAnmVisNsBvaDefault + arm_func_end NNSi_G3dAnmObjInitNsBva diff --git a/arm9/asm/NNS_G3D_res_struct_acce.s b/arm9/asm/NNS_G3D_res_struct_acce.s new file mode 100644 index 00000000..e0420f9b --- /dev/null +++ b/arm9/asm/NNS_G3D_res_struct_acce.s @@ -0,0 +1,317 @@ + .include "asm/macros.inc" + .include "global.inc" + + .section .text + + arm_func_start NNS_G3dGetTex +NNS_G3dGetTex: ; 0x020BC0FC + ldrh r2, [r0, #0xc] + ldrh r1, [r0, #0xe] + add r3, r0, r2 + cmp r1, #0x1 + bne _020BC12C + ldr r2, [r0, #0x0] + ldr r1, _020BC138 ; =0x30585442 + cmp r2, r1 + ldreq r1, [r3, #0x0] + addeq r0, r0, r1 + movne r0, #0x0 + bx lr +_020BC12C: + ldr r1, [r3, #0x4] + add r0, r0, r1 + bx lr + .balign 4 +_020BC138: .word 0x30585442 + arm_func_end NNS_G3dGetTex + + arm_func_start NNS_G3dGetMdlSet +NNS_G3dGetMdlSet: ; 0x020BC13C + ldrh r1, [r0, #0xc] + ldr r1, [r0, r1] + add r0, r0, r1 + bx lr + arm_func_end NNS_G3dGetMdlSet + + arm_func_start NNS_G3dGetResDictIdxByName +NNS_G3dGetResDictIdxByName: ; 0x020BC14C + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + ldrb r2, [r0, #0x1] + cmp r2, #0x10 + bhs _020BC1E4 + cmp r2, #0x0 + ldr lr, [r1, #0x0] + ldr r12, [r1, #0x4] + ldr r3, [r1, #0x8] + ldr r2, [r1, #0xc] + mov r4, #0x0 + bls _020BC294 + ldrh r5, [r0, #0x6] + mov r1, r4 + add r6, r0, r5 + ldrh r5, [r6, #0x2] + add r6, r6, r5 +_020BC190: + ldr r5, [r6, r1] + add r7, r6, r1 + cmp r5, lr + bne _020BC1CC + ldr r5, [r7, #0x4] + cmp r5, r12 + bne _020BC1CC + ldr r5, [r7, #0x8] + cmp r5, r3 + bne _020BC1CC + ldr r5, [r7, #0xc] + cmp r5, r2 + addeq sp, sp, #0x4 + moveq r0, r4 + ldmeqia sp!, {r4-r7,pc} +_020BC1CC: + ldrb r5, [r0, #0x1] + add r4, r4, #0x1 + add r1, r1, #0x10 + cmp r4, r5 + blo _020BC190 + b _020BC294 +_020BC1E4: + add r3, r0, #0x8 + ldrb r2, [r3, #0x1] + cmp r2, #0x0 + beq _020BC294 + ldrb r5, [r3, r2, lsl #0x2] + ldrb r4, [r3, #0x0] + add r2, r3, r2, lsl #0x2 + cmp r4, r5 + bls _020BC238 +_020BC208: + mov r4, r5, asr #0x5 + ldr r12, [r1, r4, lsl #0x2] + and r4, r5, #0x1f + mov r4, r12, lsr r4 + and r4, r4, #0x1 + add r4, r2, r4 + ldrb r12, [r4, #0x1] + ldrb r4, [r2, #0x0] + ldrb r5, [r3, r12, lsl #0x2] + add r2, r3, r12, lsl #0x2 + cmp r4, r5 + bhi _020BC208 +_020BC238: + ldrh r4, [r0, #0x6] + ldr r3, [r1, #0x0] + add r12, r0, r4 + ldrh r4, [r12, #0x2] + ldrb r0, [r2, #0x3] + add r4, r12, r4 + ldr r2, [r4, r0, lsl #0x4] + add r4, r4, r0, lsl #0x4 + cmp r2, r3 + bne _020BC294 + ldr r3, [r4, #0x4] + ldr r2, [r1, #0x4] + cmp r3, r2 + bne _020BC294 + ldr r3, [r4, #0x8] + ldr r2, [r1, #0x8] + cmp r3, r2 + bne _020BC294 + ldr r2, [r4, #0xc] + ldr r1, [r1, #0xc] + cmp r2, r1 + addeq sp, sp, #0x4 + ldmeqia sp!, {r4-r7,pc} +_020BC294: + mvn r0, #0x0 + add sp, sp, #0x4 + ldmia sp!, {r4-r7,pc} + arm_func_end NNS_G3dGetResDictIdxByName + + arm_func_start NNS_G3dGetResDataByName +NNS_G3dGetResDataByName: ; 0x020BC2A0 + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + ldrb r2, [r0, #0x1] + cmp r2, #0x10 + bhs _020BC34C + cmp r2, #0x0 + ldr lr, [r1, #0x0] + ldr r12, [r1, #0x4] + ldr r3, [r1, #0x8] + ldr r2, [r1, #0xc] + mov r4, #0x0 + bls _020BC404 + ldrh r5, [r0, #0x6] + mov r1, r4 + add r6, r0, r5 + ldrh r5, [r6, #0x2] + add r6, r6, r5 +_020BC2E4: + ldr r5, [r6, r1] + add r7, r6, r1 + cmp r5, lr + bne _020BC334 + ldr r5, [r7, #0x4] + cmp r5, r12 + bne _020BC334 + ldr r5, [r7, #0x8] + cmp r5, r3 + bne _020BC334 + ldr r5, [r7, #0xc] + cmp r5, r2 + bne _020BC334 + ldrh r2, [r0, #0x6] + add sp, sp, #0x4 + ldrh r1, [r0, r2] + add r0, r0, r2 + add r0, r0, #0x4 + mla r0, r1, r4, r0 + ldmia sp!, {r4-r7,pc} +_020BC334: + ldrb r5, [r0, #0x1] + add r4, r4, #0x1 + add r1, r1, #0x10 + cmp r4, r5 + blo _020BC2E4 + b _020BC404 +_020BC34C: + add r3, r0, #0x8 + ldrb r2, [r3, #0x1] + cmp r2, #0x0 + beq _020BC404 + ldrb r5, [r3, r2, lsl #0x2] + ldrb r4, [r3, #0x0] + add r2, r3, r2, lsl #0x2 + cmp r4, r5 + bls _020BC3A0 +_020BC370: + mov r4, r5, asr #0x5 + ldr r12, [r1, r4, lsl #0x2] + and r4, r5, #0x1f + mov r4, r12, lsr r4 + and r4, r4, #0x1 + add r4, r2, r4 + ldrb r12, [r4, #0x1] + ldrb r4, [r2, #0x0] + ldrb r5, [r3, r12, lsl #0x2] + add r2, r3, r12, lsl #0x2 + cmp r4, r5 + bhi _020BC370 +_020BC3A0: + ldrh r4, [r0, #0x6] + ldrb r2, [r2, #0x3] + ldr r3, [r1, #0x0] + add r0, r0, r4 + ldrh r4, [r0, #0x2] + add r12, r0, r4 + ldr r4, [r12, r2, lsl #0x4] + add r12, r12, r2, lsl #0x4 + cmp r4, r3 + bne _020BC404 + ldr r4, [r12, #0x4] + ldr r3, [r1, #0x4] + cmp r4, r3 + bne _020BC404 + ldr r4, [r12, #0x8] + ldr r3, [r1, #0x8] + cmp r4, r3 + bne _020BC404 + ldr r3, [r12, #0xc] + ldr r1, [r1, #0xc] + cmp r3, r1 + ldreqh r1, [r0], #0x4 + addeq sp, sp, #0x4 + mlaeq r0, r1, r2, r0 + ldmeqia sp!, {r4-r7,pc} +_020BC404: + mov r0, #0x0 + add sp, sp, #0x4 + ldmia sp!, {r4-r7,pc} + arm_func_end NNS_G3dGetResDataByName + + arm_func_start NNSi_G3dGetTexPatAnmDataByIdx +NNSi_G3dGetTexPatAnmDataByIdx: ; 0x020BC410 + ldrh r3, [r0, #0x12] + add r0, r0, #0xc + ldrh r2, [r0, r3] + add r0, r0, r3 + add r0, r0, #0x4 + mla r0, r2, r1, r0 + bx lr + arm_func_end NNSi_G3dGetTexPatAnmDataByIdx + + arm_func_start NNSi_G3dGetTexPatAnmFV +NNSi_G3dGetTexPatAnmFV: ; 0x020BC42C + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r5, r0 + mov r4, r2 + bl NNSi_G3dGetTexPatAnmDataByIdx + ldrsh r1, [r0, #0x4] + ldrh r3, [r0, #0x6] + mul r2, r1, r4 + add r3, r5, r3 + mov r2, r2, lsr #0xc + b _020BC45C +_020BC458: + sub r2, r2, #0x1 +_020BC45C: + cmp r2, #0x0 + beq _020BC474 + mov r1, r2, lsl #0x2 + ldrh r1, [r3, r1] + cmp r1, r4 + bhs _020BC458 +_020BC474: + ldrh r1, [r0, #0x0] + b _020BC480 +_020BC47C: + add r2, r2, #0x1 +_020BC480: + add r0, r2, #0x1 + cmp r0, r1 + bhs _020BC49C + add r0, r3, r2, lsl #0x2 + ldrh r0, [r0, #0x4] + cmp r0, r4 + bls _020BC47C +_020BC49C: + add r0, r3, r2, lsl #0x2 + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + arm_func_end NNSi_G3dGetTexPatAnmFV + + arm_func_start NNSi_G3dGetTexPatAnmPlttNameByIdx +NNSi_G3dGetTexPatAnmPlttNameByIdx: ; 0x020BC4A8 + ldrh r2, [r0, #0xa] + add r0, r0, r2 + add r0, r0, r1, lsl #0x4 + bx lr + arm_func_end NNSi_G3dGetTexPatAnmPlttNameByIdx + + arm_func_start NNSi_G3dGetTexPatAnmTexNameByIdx +NNSi_G3dGetTexPatAnmTexNameByIdx: ; 0x020BC4B8 + ldrh r2, [r0, #0x8] + add r0, r0, r2 + add r0, r0, r1, lsl #0x4 + bx lr + arm_func_end NNSi_G3dGetTexPatAnmTexNameByIdx + + arm_func_start NNS_G3dGetAnmByIdx +NNS_G3dGetAnmByIdx: ; 0x020BC4C8 + ldrh r2, [r0, #0xc] + ldr r2, [r0, r2] + add r12, r0, r2 + ldrh r2, [r12, #0xe] + add r3, r12, #0x8 + ldrh r0, [r3, r2] + add r2, r3, r2 + add r2, r2, #0x4 + mul r1, r0, r1 + adds r0, r2, r1 + ldrne r0, [r0, #0x0] + addne r0, r12, r0 + moveq r0, #0x0 + bx lr + arm_func_end NNS_G3dGetAnmByIdx diff --git a/arm9/asm/NNS_G3D_sbc.s b/arm9/asm/NNS_G3D_sbc.s new file mode 100644 index 00000000..86ee394f --- /dev/null +++ b/arm9/asm/NNS_G3D_sbc.s @@ -0,0 +1,2738 @@ + .include "asm/macros.inc" + .include "global.inc" + + .section .rodata + + .global matColorMask_$8998 +matColorMask_$8998: ; 0x020FF9D0 + .byte 0x00, 0x00, 0x00, 0x00, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F + .byte 0x00, 0x80, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x80, 0xFF, 0x7F, 0xFF, 0xFF, 0xFF, 0x7F + ; static const in function + + .global pivotUtil_$9100 +pivotUtil_$9100: ; 0x020FF9F0 + .byte 0x04, 0x05, 0x07, 0x08 + .byte 0x03, 0x05, 0x06, 0x08 + .byte 0x03, 0x04, 0x06, 0x07 + .byte 0x01, 0x02, 0x07, 0x08 + .byte 0x00, 0x02, 0x06, 0x08 + .byte 0x00, 0x01, 0x06, 0x07 + .byte 0x01, 0x02, 0x04, 0x05 + .byte 0x00, 0x02, 0x03, 0x05 + .byte 0x00, 0x01, 0x03, 0x04 + ; static const in function + + .section .data + + .global cmd$9407 +cmd$9407: ; 0x02106630 + .byte 0x2A, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00 + + .global cmd$9366 +cmd$9366: ; 0x02106638 + .byte 0x2A, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00 + + .global NNS_G3dFuncSbcMatTable +NNS_G3dFuncSbcMatTable: ; 0x02106640 + .word NNSi_G3dFuncSbc_MAT_InternalDefault + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + + .global NNS_G3dFuncSbcShpTable +NNS_G3dFuncSbcShpTable: ; 0x02106650 + .word NNSi_G3dFuncSbc_SHP_InternalDefault + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + + .global mtx$9412 +mtx$9412: ; 0x02106660 + .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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00 + + .global bbcmd1$9173 +bbcmd1$9173: ; 0x021066A0 + .byte 0x12, 0x10, 0x17, 0x1B + .byte 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 + .byte 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x00, 0x10, 0x00, 0x00 + .byte 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 + + .global bbcmd1$9234 +bbcmd1$9234: ; 0x021066E8 + .byte 0x12, 0x10, 0x17, 0x1B + .byte 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 + .byte 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x00, 0x10, 0x00, 0x00 + .byte 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 + + .global NNS_G3dFuncSbcTable +NNS_G3dFuncSbcTable: ; 0x02106730 + .word NNSi_G3dFuncSbc_NOP + .word NNSi_G3dFuncSbc_RET + .word NNSi_G3dFuncSbc_NODE + .word NNSi_G3dFuncSbc_MTX + .word NNSi_G3dFuncSbc_MAT + .word NNSi_G3dFuncSbc_SHP + .word NNSi_G3dFuncSbc_NODEDESC + .word NNSi_G3dFuncSbc_BB + .word NNSi_G3dFuncSbc_BBY + .word NNSi_G3dFuncSbc_NODEMIX + .word NNSi_G3dFuncSbc_CALLDL + .word NNSi_G3dFuncSbc_POSSCALE + .word NNSi_G3dFuncSbc_ENVMAP + .word NNSi_G3dFuncSbc_PRJMAP + .byte 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, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + + .section .bss + + .global NNS_G3dRS +NNS_G3dRS: ; 0x021CEF7C + .space 0x4 + + .global NNS_G3dRSOnGlb +NNS_G3dRSOnGlb: ; 0x021CEF80 + .space 0x2d00 + + .section .text + + arm_func_start NNSi_G3dFuncSbc_PRJMAP +NNSi_G3dFuncSbc_PRJMAP: ; 0x020B8A60 + stmdb sp!, {r4-r6,lr} + sub sp, sp, #0x80 + mov r5, r0 + ldr r1, [r5, #0x8] + ands r0, r1, #0x200 + bne _020B8DB4 + ands r0, r1, #0x1 + beq _020B8DB4 + add r0, sp, #0x10 + mov r1, #0x0 + bl NNS_G3dGetCurrentMtx + mov r0, #0x1e + str r0, [sp, #0x0] + add r1, sp, #0x0 + mov r0, #0x13 + mov r2, #0x1 + bl NNS_G3dGeBufferOP_N + ldr r2, [r5, #0xb0] + ldr r0, [r2, #0x10] + and r1, r0, #0xc0000000 + cmp r1, #0xc0000000 + beq _020B8AF0 + bic r0, r0, #0xc0000000 + str r0, [r2, #0x10] + ldr r2, [r5, #0xb0] + ldr r3, _020B8DC8 ; =cmd$9407 + ldr r0, [r2, #0x10] + ldr r1, _020B8DCC ; =cmd$9407 + 0x4 + orr r0, r0, #0xc0000000 + str r0, [r2, #0x10] + ldr r2, [r5, #0xb0] + ldr r0, [r3, #0x0] + ldr r4, [r2, #0x10] + mov r2, #0x1 + str r4, [r3, #0x4] + bl NNS_G3dGeBufferOP_N +_020B8AF0: + ldr r0, [r5, #0x40] + cmp r0, #0x0 + ldrneb r4, [r5, #0x99] + moveq r4, #0x0 + cmp r4, #0x1 + bne _020B8B3C + ldr r1, [r5, #0x8] + mov r0, r5 + bic r1, r1, #0x40 + str r1, [r5, #0x8] + ldr r1, [r5, #0x40] + blx r1 + ldr r0, [r5, #0x40] + cmp r0, #0x0 + ldrneb r4, [r5, #0x99] + ldr r0, [r5, #0x8] + moveq r4, #0x0 + and r0, r0, #0x40 + b _020B8B40 +_020B8B3C: + mov r0, #0x0 +_020B8B40: + cmp r0, #0x0 + bne _020B8B84 + ldr r0, [r5, #0xb0] + ldr r1, _020B8DD0 ; =mtx$9412 + ldrh r6, [r0, #0x2e] + ldrh r3, [r0, #0x2c] + mov r0, #0x16 + rsb r2, r6, #0x0 + mov lr, r3, lsl #0xf + mov r12, r2, lsl #0xf + mov r3, r6, lsl #0xf + mov r2, #0x10 + str lr, [r1, #0x0] + str r12, [r1, #0x14] + str lr, [r1, #0x30] + str r3, [r1, #0x34] + bl NNS_G3dGeBufferOP_N +_020B8B84: + cmp r4, #0x2 + bne _020B8BC0 + ldr r1, [r5, #0x8] + mov r0, r5 + bic r1, r1, #0x40 + str r1, [r5, #0x8] + ldr r1, [r5, #0x40] + blx r1 + ldr r0, [r5, #0x40] + cmp r0, #0x0 + ldrneb r4, [r5, #0x99] + ldr r0, [r5, #0x8] + moveq r4, #0x0 + and r0, r0, #0x40 + b _020B8BC4 +_020B8BC0: + mov r0, #0x0 +_020B8BC4: + cmp r0, #0x0 + bne _020B8C28 + ldr r12, [r5, #0xd8] + ldr r0, [r5, #0x0] + ldrh r2, [r12, #0xa] + add r3, r12, #0x4 + ldrb r0, [r0, #0x1] + ldrh r1, [r3, r2] + add r2, r3, r2 + mla r0, r1, r0, r2 + ldr r0, [r0, #0x4] + add r1, r12, r0 + ldrh r2, [r1, #0x1e] + ands r0, r2, #0x2000 + beq _020B8C28 + add r1, r1, #0x2c + ands r0, r2, #0x2 + addeq r1, r1, #0x8 + ands r0, r2, #0x4 + addeq r1, r1, #0x4 + ands r0, r2, #0x8 + addeq r1, r1, #0x8 + mov r0, #0x18 + mov r2, #0x10 + bl NNS_G3dGeBufferOP_N +_020B8C28: + cmp r4, #0x3 + movne r0, #0x0 + bne _020B8C54 + ldr r1, [r5, #0x8] + mov r0, r5 + bic r1, r1, #0x40 + str r1, [r5, #0x8] + ldr r1, [r5, #0x40] + blx r1 + ldr r0, [r5, #0x8] + and r0, r0, #0x40 +_020B8C54: + cmp r0, #0x0 + bne _020B8D84 + ldr r0, _020B8DD4 ; =NNS_G3dGlb + ldr r1, [r0, #0xfc] + ands r0, r1, #0x1 + beq _020B8CA0 + ldr r1, _020B8DD8 ; =NNS_G3dGlb + 0xE0 + mov r0, #0x1c + mov r2, #0x3 + bl NNS_G3dGeBufferOP_N + ldr r1, _020B8DDC ; =NNS_G3dGlb + 0xBC + mov r0, #0x1a + mov r2, #0x9 + bl NNS_G3dGeBufferOP_N + add r1, sp, #0x10 + mov r0, #0x19 + mov r2, #0xc + bl NNS_G3dGeBufferOP_N + b _020B8CE0 +_020B8CA0: + ands r0, r1, #0x2 + beq _020B8CBC + add r1, sp, #0x10 + mov r0, #0x19 + mov r2, #0xc + bl NNS_G3dGeBufferOP_N + b _020B8CE0 +_020B8CBC: + bl NNS_G3dGlbGetInvV + mov r1, r0 + mov r0, #0x19 + mov r2, #0xc + bl NNS_G3dGeBufferOP_N + add r1, sp, #0x10 + mov r0, #0x19 + mov r2, #0xc + bl NNS_G3dGeBufferOP_N +_020B8CE0: + bl NNS_G3dGeFlushBuffer + ldr r0, _020B8DE0 ; =0x04000440 + mov r2, #0x0 + ldr r1, _020B8DE4 ; =0x04000444 + str r2, [r0, #0x0] + ldr r0, _020B8DE8 ; =0x04000454 + str r2, [r1, #0x0] + str r2, [r0, #0x0] + add r4, sp, #0x40 +_020B8D04: + mov r0, r4 + bl G3X_GetClipMtx + cmp r0, #0x0 + bne _020B8D04 + ldr r1, _020B8DEC ; =0x04000448 + mov r2, #0x1 + str r2, [r1, #0x0] + ldr r0, _020B8DE0 ; =0x04000440 + mov r2, #0x3 + str r2, [r0, #0x0] + add r1, sp, #0x40 + mov r0, #0x16 + mov r2, #0x10 + bl NNS_G3dGeBufferOP_N + ldr r1, [sp, #0x70] + ldr r0, [sp, #0x74] + mov r2, r1, asr #0x4 + mov r1, r0, asr #0x4 + mov r0, r2, lsl #0x8 + mov r1, r1, lsl #0x8 + mov r0, r0, asr #0x10 + mov r1, r1, asr #0x10 + mov r0, r0, lsl #0x10 + mov r1, r1, lsl #0x10 + mov r2, r0, lsr #0x10 + mov r0, r1, lsr #0x10 + orr r3, r2, r0, lsl #0x10 + add r1, sp, #0x4 + mov r0, #0x22 + mov r2, #0x1 + str r3, [sp, #0x4] + bl NNS_G3dGeBufferOP_N +_020B8D84: + mov r3, #0x2 + add r1, sp, #0x8 + mov r0, #0x10 + mov r2, #0x1 + str r3, [sp, #0x8] + bl NNS_G3dGeBufferOP_N + mov r3, #0x1e + add r1, sp, #0xc + mov r0, #0x14 + mov r2, #0x1 + str r3, [sp, #0xc] + bl NNS_G3dGeBufferOP_N +_020B8DB4: + ldr r0, [r5, #0x0] + add r0, r0, #0x3 + str r0, [r5, #0x0] + add sp, sp, #0x80 + ldmia sp!, {r4-r6,pc} + .balign 4 +_020B8DC8: .word cmd$9407 +_020B8DCC: .word cmd$9407 + 0x4 +_020B8DD0: .word mtx$9412 +_020B8DD4: .word NNS_G3dGlb +_020B8DD8: .word NNS_G3dGlb + 0xE0 +_020B8DDC: .word NNS_G3dGlb + 0xBC +_020B8DE0: .word 0x04000440 +_020B8DE4: .word 0x04000444 +_020B8DE8: .word 0x04000454 +_020B8DEC: .word 0x04000448 + arm_func_end NNSi_G3dFuncSbc_PRJMAP + + arm_func_start NNSi_G3dFuncSbc_ENVMAP +NNSi_G3dFuncSbc_ENVMAP: ; 0x020B8DF0 + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x44 + mov r7, r0 + ldr r1, [r7, #0x8] + ands r0, r1, #0x200 + bne _020B90E8 + ands r0, r1, #0x1 + beq _020B90E8 + ldr r2, [r7, #0xb0] + ldr r0, [r2, #0x10] + and r1, r0, #0xc0000000 + cmp r1, #0x80000000 + beq _020B8E5C + bic r0, r0, #0xc0000000 + str r0, [r2, #0x10] + ldr r2, [r7, #0xb0] + ldr r3, _020B90FC ; =cmd$9366 + ldr r0, [r2, #0x10] + ldr r1, _020B9100 ; =cmd$9366 + 0x4 + orr r0, r0, #0x80000000 + str r0, [r2, #0x10] + ldr r2, [r7, #0xb0] + ldr r0, [r3, #0x0] + ldr r4, [r2, #0x10] + mov r2, #0x1 + str r4, [r3, #0x4] + bl NNS_G3dGeBufferOP_N +_020B8E5C: + mov r0, #0x3 + str r0, [sp, #0x0] + add r1, sp, #0x0 + mov r0, #0x10 + mov r2, #0x1 + bl NNS_G3dGeBufferOP_N + ldr r0, [r7, #0x3c] + cmp r0, #0x0 + ldrneb r6, [r7, #0x98] + moveq r6, #0x0 + cmp r6, #0x1 + bne _020B8EC0 + ldr r1, [r7, #0x8] + mov r0, r7 + bic r1, r1, #0x40 + str r1, [r7, #0x8] + ldr r1, [r7, #0x3c] + blx r1 + ldr r0, [r7, #0x3c] + cmp r0, #0x0 + ldrneb r6, [r7, #0x98] + ldr r0, [r7, #0x8] + moveq r6, #0x0 + and r0, r0, #0x40 + b _020B8EC4 +_020B8EC0: + mov r0, #0x0 +_020B8EC4: + cmp r0, #0x0 + bne _020B8F3C + ldr r0, [r7, #0xb0] + add r1, sp, #0x38 + ldrh r4, [r0, #0x2e] + ldrh r5, [r0, #0x2c] + mov r3, #0x10000 + rsb r0, r4, #0x0 + mov r12, r0, lsl #0xf + mov lr, r5, lsl #0xf + mov r0, #0x1b + mov r2, #0x3 + str lr, [sp, #0x38] + str r12, [sp, #0x3c] + str r3, [sp, #0x40] + bl NNS_G3dGeBufferOP_N + mov r0, r5, lsl #0x13 + mov r1, r4, lsl #0x13 + mov r0, r0, asr #0x10 + mov r1, r1, asr #0x10 + mov r0, r0, lsl #0x10 + mov r1, r1, lsl #0x10 + mov r2, r0, lsr #0x10 + mov r0, r1, lsr #0x10 + orr r3, r2, r0, lsl #0x10 + add r1, sp, #0x4 + mov r0, #0x22 + mov r2, #0x1 + str r3, [sp, #0x4] + bl NNS_G3dGeBufferOP_N +_020B8F3C: + cmp r6, #0x2 + bne _020B8F78 + ldr r1, [r7, #0x8] + mov r0, r7 + bic r1, r1, #0x40 + str r1, [r7, #0x8] + ldr r1, [r7, #0x3c] + blx r1 + ldr r0, [r7, #0x3c] + cmp r0, #0x0 + ldrneb r6, [r7, #0x98] + ldr r0, [r7, #0x8] + moveq r6, #0x0 + and r0, r0, #0x40 + b _020B8F7C +_020B8F78: + mov r0, #0x0 +_020B8F7C: + cmp r0, #0x0 + bne _020B8FE0 + ldr r4, [r7, #0xd8] + ldr r0, [r7, #0x0] + ldrh r2, [r4, #0xa] + add r3, r4, #0x4 + ldrb r0, [r0, #0x1] + ldrh r1, [r3, r2] + add r2, r3, r2 + mla r0, r1, r0, r2 + ldr r0, [r0, #0x4] + add r1, r4, r0 + ldrh r2, [r1, #0x1e] + ands r0, r2, #0x2000 + beq _020B8FE0 + add r1, r1, #0x2c + ands r0, r2, #0x2 + addeq r1, r1, #0x8 + ands r0, r2, #0x4 + addeq r1, r1, #0x4 + ands r0, r2, #0x8 + addeq r1, r1, #0x8 + mov r0, #0x18 + mov r2, #0x10 + bl NNS_G3dGeBufferOP_N +_020B8FE0: + cmp r6, #0x3 + movne r0, #0x0 + bne _020B900C + ldr r1, [r7, #0x8] + mov r0, r7 + bic r1, r1, #0x40 + str r1, [r7, #0x8] + ldr r1, [r7, #0x3c] + blx r1 + ldr r0, [r7, #0x8] + and r0, r0, #0x40 +_020B900C: + cmp r0, #0x0 + bne _020B90D0 + mov r3, #0x2 + add r1, sp, #0x8 + mov r0, #0x10 + mov r2, #0x1 + str r3, [sp, #0x8] + bl NNS_G3dGeBufferOP_N + add r1, sp, #0x14 + mov r0, #0x0 + bl NNS_G3dGetCurrentMtx + mov r3, #0x3 + add r1, sp, #0xc + mov r0, #0x10 + mov r2, #0x1 + str r3, [sp, #0xc] + bl NNS_G3dGeBufferOP_N + ldr r0, _020B9104 ; =NNS_G3dGlb + ldr r1, [r0, #0xfc] + ands r0, r1, #0x1 + beq _020B9094 + ldr r1, _020B9108 ; =NNS_G3dGlb + 0x4C + mov r0, #0x1a + mov r2, #0x9 + bl NNS_G3dGeBufferOP_N + ldr r1, _020B910C ; =NNS_G3dGlb + 0xBC + mov r0, #0x1a + mov r2, #0x9 + bl NNS_G3dGeBufferOP_N + add r1, sp, #0x14 + mov r0, #0x1a + mov r2, #0x9 + bl NNS_G3dGeBufferOP_N + b _020B90D0 +_020B9094: + ands r0, r1, #0x2 + beq _020B90C0 + ldr r1, _020B9108 ; =NNS_G3dGlb + 0x4C + mov r0, #0x1a + mov r2, #0x9 + bl NNS_G3dGeBufferOP_N + add r1, sp, #0x14 + mov r0, #0x1a + mov r2, #0x9 + bl NNS_G3dGeBufferOP_N + b _020B90D0 +_020B90C0: + add r1, sp, #0x14 + mov r0, #0x1a + mov r2, #0x9 + bl NNS_G3dGeBufferOP_N +_020B90D0: + mov r3, #0x2 + add r1, sp, #0x10 + mov r0, #0x10 + mov r2, #0x1 + str r3, [sp, #0x10] + bl NNS_G3dGeBufferOP_N +_020B90E8: + ldr r0, [r7, #0x0] + add r0, r0, #0x3 + str r0, [r7, #0x0] + add sp, sp, #0x44 + ldmia sp!, {r4-r7,pc} + .balign 4 +_020B90FC: .word cmd$9366 +_020B9100: .word cmd$9366 + 0x4 +_020B9104: .word NNS_G3dGlb +_020B9108: .word NNS_G3dGlb + 0x4C +_020B910C: .word NNS_G3dGlb + 0xBC + arm_func_end NNSi_G3dFuncSbc_ENVMAP + + arm_func_start NNSi_G3dFuncSbc_POSSCALE +NNSi_G3dFuncSbc_POSSCALE: ; 0x020B9110 + stmdb sp!, {r4,lr} + sub sp, sp, #0x10 + mov r4, r0 + ldr r2, [r4, #0x8] + ands r0, r2, #0x100 + bne _020B9164 + ands r0, r2, #0x200 + bne _020B9164 + cmp r1, #0x0 + ldreq r0, [r4, #0xe0] + add r1, sp, #0x0 + streq r0, [sp, #0x8] + streq r0, [sp, #0x4] + streq r0, [sp, #0x0] + ldrne r0, [r4, #0xe4] + mov r2, #0x3 + strne r0, [sp, #0x8] + strne r0, [sp, #0x4] + strne r0, [sp, #0x0] + mov r0, #0x1b + bl NNS_G3dGeBufferOP_N +_020B9164: + ldr r0, [r4, #0x0] + add r0, r0, #0x1 + str r0, [r4, #0x0] + add sp, sp, #0x10 + ldmia sp!, {r4,pc} + arm_func_end NNSi_G3dFuncSbc_POSSCALE + + arm_func_start NNSi_G3dFuncSbc_CALLDL +NNSi_G3dFuncSbc_CALLDL: ; 0x020B9178 + stmdb sp!, {r4-r6,lr} + mov r5, r0 + ldr r0, [r5, #0x34] + cmp r0, #0x0 + ldrneb r4, [r5, #0x96] + moveq r4, #0x0 + cmp r4, #0x1 + bne _020B91CC + ldr r1, [r5, #0x8] + mov r0, r5 + bic r1, r1, #0x40 + str r1, [r5, #0x8] + ldr r1, [r5, #0x34] + blx r1 + ldr r0, [r5, #0x34] + cmp r0, #0x0 + ldrneb r4, [r5, #0x96] + ldr r0, [r5, #0x8] + moveq r4, #0x0 + and r1, r0, #0x40 + b _020B91D0 +_020B91CC: + mov r1, #0x0 +_020B91D0: + ldr r0, [r5, #0x8] + ands r0, r0, #0x100 + bne _020B9228 + cmp r1, #0x0 + bne _020B9228 + ldr r0, [r5, #0x0] + ldrb r12, [r0, #0x1] + ldrb r3, [r0, #0x2] + ldrb lr, [r0, #0x3] + ldrb r2, [r0, #0x5] + ldrb r1, [r0, #0x6] + orr r3, r12, r3, lsl #0x8 + ldrb r6, [r0, #0x4] + orr r12, r3, lr, lsl #0x10 + ldrb r3, [r0, #0x7] + orr r1, r2, r1, lsl #0x8 + orr r6, r12, r6, lsl #0x18 + ldrb r2, [r0, #0x8] + orr r1, r1, r3, lsl #0x10 + add r0, r0, r6 + orr r1, r1, r2, lsl #0x18 + bl NNS_G3dGeSendDL +_020B9228: + cmp r4, #0x3 + bne _020B9248 + ldr r1, [r5, #0x8] + mov r0, r5 + bic r1, r1, #0x40 + str r1, [r5, #0x8] + ldr r1, [r5, #0x34] + blx r1 +_020B9248: + ldr r0, [r5, #0x0] + add r0, r0, #0x9 + str r0, [r5, #0x0] + ldmia sp!, {r4-r6,pc} + arm_func_end NNSi_G3dFuncSbc_CALLDL + + arm_func_start NNSi_G3dFuncSbc_NODEMIX +NNSi_G3dFuncSbc_NODEMIX: ; 0x020B9258 + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0x8c + ldr r1, [r0, #0x4] + ldr r4, [r0, #0x0] + ldr r6, [r1, #0x4] + ldrb r2, [r4, #0x2] + ldr r3, [r6, #0x10] + mov r10, #0x0 + str r0, [sp, #0x0] + str r2, [sp, #0x8] + add r3, r6, r3 + add r1, sp, #0x34 + mov r0, r10 + mov r2, #0x54 + mov r9, r10 + str r3, [sp, #0x4] + add r8, r4, #0x3 + bl MIi_CpuClearFast + bl NNS_G3dGeFlushBuffer + ldr r0, _020B98AC ; =0x04000440 + mov r7, r10 + str r7, [r0, #0x0] + mov r0, #0x1 + ldr r2, _020B98B0 ; =0x0400044C + ldr r1, _020B98B4 ; =0x04000454 + str r0, [r2, #0x0] + str r0, [sp, #0x10] + str r7, [r1, #0x0] + mov r1, #0x2 + ldr r0, _020B98AC ; =0x04000440 + str r1, [sp, #0x14] + str r1, [r0, #0x0] + ldr r0, [sp, #0x8] + cmp r0, #0x0 + bls _020B96CC +_020B92E4: + ldrb r4, [r8, #0x1] + mov r0, #0x64 + ldr r3, _020B98B8 ; =NNS_G3dRSOnGlb + 0x1400 + mul r0, r4, r0 + str r0, [sp, #0xc] + ldr r0, [sp, #0x0] + mov r1, r4, lsr #0x5 + add r0, r0, r1, lsl #0x2 + ldr r1, [sp, #0x10] + and r2, r4, #0x1f + mov r1, r1, lsl r2 + ldr r11, [r0, #0xcc] + ldr r2, [sp, #0xc] + ands r11, r1, r11 + add r6, r3, r2 + bne _020B9358 + ldr r3, [r0, #0xcc] + mov r2, #0x54 + orr r1, r3, r1 + str r1, [r0, #0xcc] + ldr r0, [sp, #0x4] + ldr r1, _020B98BC ; =0x04000450 + mla r0, r4, r2, r0 + ldrb r2, [r8, #0x0] + str r2, [r1, #0x0] + ldr r2, [sp, #0x10] + ldr r1, _020B98AC ; =0x04000440 + str r2, [r1, #0x0] + bl G3_MultMtx43 +_020B9358: + cmp r7, #0x0 + beq _020B9500 + ldr r2, [sp, #0x6c] + ldr r1, [r5, #0x0] + str r2, [sp, #0x18] + ldr r2, [sp, #0x70] + mov r0, r1, asr #0x1f + str r2, [sp, #0x1c] + ldr r2, [sp, #0x74] + ldr r12, [sp, #0x64] + str r2, [sp, #0x20] + ldr r2, [sp, #0x78] + ldr lr, [sp, #0x68] + str r2, [sp, #0x24] + ldr r2, [sp, #0x7c] + str r2, [sp, #0x28] + ldr r2, [sp, #0x80] + str r2, [sp, #0x2c] + ldr r2, [sp, #0x84] + str r2, [sp, #0x30] + umull r3, r2, r10, r1 + mla r2, r10, r0, r2 + mla r2, r9, r1, r2 + mov r0, r3, lsr #0xc + orr r0, r0, r2, lsl #0x14 + adds r0, r12, r0 + str r0, [sp, #0x64] + ldr r1, [r5, #0x4] + mov r0, r1, asr #0x1f + umull r3, r2, r10, r1 + mla r2, r10, r0, r2 + mla r2, r9, r1, r2 + mov r0, r3, lsr #0xc + orr r0, r0, r2, lsl #0x14 + adds r0, lr, r0 + str r0, [sp, #0x68] + ldr r1, [r5, #0x8] + mov r0, r1, asr #0x1f + umull r3, r2, r10, r1 + mla r2, r10, r0, r2 + mla r2, r9, r1, r2 + mov r1, r3, lsr #0xc + ldr r0, [sp, #0x18] + orr r1, r1, r2, lsl #0x14 + adds r0, r0, r1 + str r0, [sp, #0x6c] + ldr r1, [r5, #0xc] + mov r0, r1, asr #0x1f + umull r3, r2, r10, r1 + mla r2, r10, r0, r2 + mla r2, r9, r1, r2 + mov r1, r3, lsr #0xc + ldr r0, [sp, #0x1c] + orr r1, r1, r2, lsl #0x14 + adds r0, r0, r1 + str r0, [sp, #0x70] + ldr r1, [r5, #0x10] + mov r0, r1, asr #0x1f + umull r3, r2, r10, r1 + mla r2, r10, r0, r2 + mla r2, r9, r1, r2 + mov r1, r3, lsr #0xc + ldr r0, [sp, #0x20] + orr r1, r1, r2, lsl #0x14 + adds r0, r0, r1 + str r0, [sp, #0x74] + ldr r1, [r5, #0x14] + mov r0, r1, asr #0x1f + umull r3, r2, r10, r1 + mla r2, r10, r0, r2 + mla r2, r9, r1, r2 + mov r1, r3, lsr #0xc + ldr r0, [sp, #0x24] + orr r1, r1, r2, lsl #0x14 + adds r0, r0, r1 + str r0, [sp, #0x78] + ldr r1, [r5, #0x18] + mov r0, r1, asr #0x1f + umull r3, r2, r10, r1 + mla r2, r10, r0, r2 + mla r2, r9, r1, r2 + mov r1, r3, lsr #0xc + ldr r0, [sp, #0x28] + orr r1, r1, r2, lsl #0x14 + adds r0, r0, r1 + str r0, [sp, #0x7c] + ldr r1, [r5, #0x1c] + mov r0, r1, asr #0x1f + umull r3, r2, r10, r1 + mla r2, r10, r0, r2 + mla r2, r9, r1, r2 + mov r1, r3, lsr #0xc + ldr r0, [sp, #0x2c] + orr r1, r1, r2, lsl #0x14 + adds r0, r0, r1 + str r0, [sp, #0x80] + ldr r1, [r5, #0x20] + mov r0, r1, asr #0x1f + umull r3, r2, r10, r1 + mla r2, r10, r0, r2 + mla r2, r9, r1, r2 + mov r1, r3, lsr #0xc + ldr r0, [sp, #0x30] + orr r1, r1, r2, lsl #0x14 + adds r0, r0, r1 + str r0, [sp, #0x84] +_020B9500: + cmp r11, #0x0 + bne _020B9538 +_020B9508: + mov r0, r6 + bl G3X_GetClipMtx + cmp r0, #0x0 + bne _020B9508 + ldr r1, [sp, #0x14] + ldr r0, _020B98AC ; =0x04000440 + str r1, [r0, #0x0] + ldr r0, [sp, #0x4] + mov r1, #0x54 + mla r0, r4, r1, r0 + add r0, r0, #0x30 + bl G3_MultMtx33 +_020B9538: + ldrb r1, [r8, #0x2] + ldr r2, [sp, #0x34] + ldr r0, [r6, #0x0] + mov r10, r1, lsl #0x4 + smull r1, r0, r10, r0 + mov r1, r1, lsr #0xc + orr r1, r1, r0, lsl #0x14 + adds r0, r2, r1 + str r0, [sp, #0x34] + mov r9, r10, asr #0x1f + ldr r2, [sp, #0x38] + ldr r0, [r6, #0x4] + ldr r3, [sp, #0x3c] + smull r1, r0, r10, r0 + mov r1, r1, lsr #0xc + orr r1, r1, r0, lsl #0x14 + adds r0, r2, r1 + str r0, [sp, #0x38] + ldr r0, [r6, #0x8] + ldr r2, [sp, #0x40] + smull r1, r0, r10, r0 + mov r1, r1, lsr #0xc + orr r1, r1, r0, lsl #0x14 + adds r0, r3, r1 + str r0, [sp, #0x3c] + ldr r0, [r6, #0x10] + ldr r3, [sp, #0x44] + smull r1, r0, r10, r0 + mov r1, r1, lsr #0xc + orr r1, r1, r0, lsl #0x14 + adds r0, r2, r1 + str r0, [sp, #0x40] + ldr r0, [r6, #0x14] + ldr r2, [sp, #0x48] + smull r1, r0, r10, r0 + mov r1, r1, lsr #0xc + orr r1, r1, r0, lsl #0x14 + adds r0, r3, r1 + str r0, [sp, #0x44] + ldr r0, [r6, #0x18] + ldr r3, [sp, #0x4c] + smull r1, r0, r10, r0 + mov r1, r1, lsr #0xc + orr r1, r1, r0, lsl #0x14 + adds r0, r2, r1 + str r0, [sp, #0x48] + ldr r0, [r6, #0x20] + ldr r2, [sp, #0x50] + smull r1, r0, r10, r0 + mov r1, r1, lsr #0xc + orr r1, r1, r0, lsl #0x14 + adds r0, r3, r1 + str r0, [sp, #0x4c] + ldr r0, [r6, #0x24] + ldr r3, [sp, #0x54] + smull r1, r0, r10, r0 + mov r1, r1, lsr #0xc + orr r1, r1, r0, lsl #0x14 + adds r0, r2, r1 + str r0, [sp, #0x50] + ldr r0, [r6, #0x28] + ldr r2, [sp, #0x58] + smull r1, r0, r10, r0 + mov r1, r1, lsr #0xc + orr r1, r1, r0, lsl #0x14 + adds r0, r3, r1 + str r0, [sp, #0x54] + ldr r0, [r6, #0x30] + ldr r3, [sp, #0x5c] + smull r1, r0, r10, r0 + mov r1, r1, lsr #0xc + orr r1, r1, r0, lsl #0x14 + adds r0, r2, r1 + str r0, [sp, #0x58] + ldr r0, [r6, #0x34] + ldr r2, [sp, #0x60] + smull r1, r0, r10, r0 + mov r1, r1, lsr #0xc + orr r1, r1, r0, lsl #0x14 + adds r0, r3, r1 + str r0, [sp, #0x5c] + ldr r0, [r6, #0x38] + smull r1, r0, r10, r0 + mov r1, r1, lsr #0xc + orr r1, r1, r0, lsl #0x14 + adds r0, r2, r1 + str r0, [sp, #0x60] + cmp r11, #0x0 + ldr r1, _020B98C0 ; =NNS_G3dRSOnGlb + 0x1440 + ldr r0, [sp, #0xc] + add r5, r1, r0 + add r8, r8, #0x3 + bne _020B96BC +_020B96AC: + mov r0, r5 + bl G3X_GetVectorMtx + cmp r0, #0x0 + bne _020B96AC +_020B96BC: + ldr r0, [sp, #0x8] + add r7, r7, #0x1 + cmp r7, r0 + blo _020B92E4 +_020B96CC: + ldr r1, [r5, #0x0] + ldr r4, [sp, #0x64] + mov r0, r1, asr #0x1f + umull r3, r2, r10, r1 + mla r2, r10, r0, r2 + mla r2, r9, r1, r2 + mov r0, r3, lsr #0xc + orr r0, r0, r2, lsl #0x14 + adds r0, r4, r0 + str r0, [sp, #0x64] + ldr r1, [r5, #0x4] + ldr r4, [sp, #0x68] + mov r0, r1, asr #0x1f + umull r3, r2, r10, r1 + mla r2, r10, r0, r2 + mla r2, r9, r1, r2 + mov r0, r3, lsr #0xc + orr r0, r0, r2, lsl #0x14 + adds r0, r4, r0 + str r0, [sp, #0x68] + ldr r1, [r5, #0x8] + ldr r4, [sp, #0x6c] + umull r0, r2, r10, r1 + mov r3, r0, lsr #0xc + mov r0, r1, asr #0x1f + mla r2, r10, r0, r2 + mla r2, r9, r1, r2 + orr r3, r3, r2, lsl #0x14 + adds r0, r4, r3 + str r0, [sp, #0x6c] + ldr r7, [r5, #0xc] + ldr r12, [sp, #0x70] + mov r6, r7, asr #0x1f + umull r11, r8, r10, r7 + mla r8, r10, r6, r8 + mla r8, r9, r7, r8 + mov r6, r11, lsr #0xc + orr r6, r6, r8, lsl #0x14 + adds r6, r12, r6 + str r6, [sp, #0x70] + ldr r7, [r5, #0x10] + ldr r4, [sp, #0x74] + mov r6, r7, asr #0x1f + umull r11, r8, r10, r7 + mla r8, r10, r6, r8 + mla r8, r9, r7, r8 + mov r6, r11, lsr #0xc + orr r6, r6, r8, lsl #0x14 + adds r4, r4, r6 + str r4, [sp, #0x74] + ldr r6, [r5, #0x14] + ldr r3, [sp, #0x78] + mov r4, r6, asr #0x1f + umull r8, r7, r10, r6 + mla r7, r10, r4, r7 + mla r7, r9, r6, r7 + mov r4, r8, lsr #0xc + orr r4, r4, r7, lsl #0x14 + adds r3, r3, r4 + str r3, [sp, #0x78] + ldr r4, [r5, #0x18] + ldr r2, [sp, #0x7c] + mov r3, r4, asr #0x1f + umull r7, r6, r10, r4 + mla r6, r10, r3, r6 + mla r6, r9, r4, r6 + mov r3, r7, lsr #0xc + orr r3, r3, r6, lsl #0x14 + adds r2, r2, r3 + str r2, [sp, #0x7c] + ldr r3, [r5, #0x1c] + ldr r1, [sp, #0x80] + mov r2, r3, asr #0x1f + umull r6, r4, r10, r3 + mla r4, r10, r2, r4 + mla r4, r9, r3, r4 + mov r2, r6, lsr #0xc + orr r2, r2, r4, lsl #0x14 + adds r1, r1, r2 + str r1, [sp, #0x80] + ldr r2, [r5, #0x20] + ldr lr, [sp, #0x84] + mov r1, r2, asr #0x1f + umull r4, r3, r10, r2 + mla r3, r10, r1, r3 + mla r3, r9, r2, r3 + mov r1, r4, lsr #0xc + orr r1, r1, r3, lsl #0x14 + adds r1, lr, r1 + add r0, sp, #0x64 + str r1, [sp, #0x84] + bl G3_LoadMtx43 + ldr r1, _020B98AC ; =0x04000440 + mov r2, #0x1 + add r0, sp, #0x34 + str r2, [r1, #0x0] + bl G3_LoadMtx43 + ldr r3, _020B98AC ; =0x04000440 + mov r0, #0x0 + str r0, [r3, #0x0] + ldr r1, _020B98BC ; =0x04000450 + mov r2, #0x1 + mov r0, #0x2 + str r2, [r1, #0x0] + str r0, [r3, #0x0] + ldr r0, [sp, #0x0] + ldr r1, [r0, #0x0] + ldr r0, _020B98B0 ; =0x0400044C + ldrb r2, [r1, #0x1] + mov r1, #0x3 + str r2, [r0, #0x0] + ldr r0, [sp, #0x0] + ldr r2, [r0, #0x0] + ldrb r0, [r2, #0x2] + add r0, r0, #0x1 + mla r1, r0, r1, r2 + ldr r0, [sp, #0x0] + str r1, [r0, #0x0] + add sp, sp, #0x8c + ldmia sp!, {r4-r11,pc} + .balign 4 +_020B98AC: .word 0x04000440 +_020B98B0: .word 0x0400044C +_020B98B4: .word 0x04000454 +_020B98B8: .word NNS_G3dRSOnGlb + 0x1400 +_020B98BC: .word 0x04000450 +_020B98C0: .word NNS_G3dRSOnGlb + 0x1440 + arm_func_end NNSi_G3dFuncSbc_NODEMIX + + arm_func_start NNSi_G3dFuncSbc_BBY +NNSi_G3dFuncSbc_BBY: ; 0x020B98C4 + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0xcc + mov r10, r0 + ldr r2, [r10, #0x8] + mov r9, r1 + ands r0, r2, #0x200 + mov r7, #0x2 + ldr r6, _020B9C28 ; =bbcmd1$9234 + 0x30 + ldr fp, _020B9C2C ; =bbcmd1$9234 + 0x3C + ldr r5, _020B9C30 ; =bbcmd1$9234 + 0xC + beq _020B992C + cmp r9, #0x40 + beq _020B9900 + cmp r9, #0x60 + bne _020B9904 +_020B9900: + add r7, r7, #0x1 +_020B9904: + cmp r9, #0x20 + beq _020B9914 + cmp r9, #0x60 + bne _020B9918 +_020B9914: + add r7, r7, #0x1 +_020B9918: + ldr r0, [r10, #0x0] + add sp, sp, #0xcc + add r0, r0, r7 + str r0, [r10, #0x0] + ldmia sp!, {r4-r11,pc} +_020B992C: + cmp r9, #0x40 + beq _020B993C + cmp r9, #0x60 + bne _020B9974 +_020B993C: + add r7, r7, #0x1 + ands r0, r2, #0x100 + bne _020B9974 + cmp r9, #0x40 + ldreq r0, [r10, #0x0] + add r1, sp, #0x0 + ldreqb r0, [r0, #0x2] + mov r2, #0x1 + streq r0, [sp, #0x0] + ldrne r0, [r10, #0x0] + ldrneb r0, [r0, #0x3] + strne r0, [sp, #0x0] + mov r0, #0x14 + bl NNS_G3dGeBufferOP_N +_020B9974: + ldr r0, [r10, #0x2c] + cmp r0, #0x0 + ldrneb r8, [r10, #0x94] + moveq r8, #0x0 + cmp r8, #0x1 + bne _020B99C0 + ldr r1, [r10, #0x8] + mov r0, r10 + bic r1, r1, #0x40 + str r1, [r10, #0x8] + ldr r1, [r10, #0x2c] + blx r1 + ldr r0, [r10, #0x2c] + cmp r0, #0x0 + ldrneb r8, [r10, #0x94] + ldr r0, [r10, #0x8] + moveq r8, #0x0 + and r1, r0, #0x40 + b _020B99C4 +_020B99C0: + mov r1, #0x0 +_020B99C4: + ldr r0, [r10, #0x8] + ands r0, r0, #0x100 + bne _020B9BA4 + cmp r1, #0x0 + bne _020B9BA4 + bl NNS_G3dGeFlushBuffer + ldr r2, _020B9C34 ; =0x00151110 + ldr r1, _020B9C38 ; =0x04000400 + mov r0, #0x0 + str r2, [r1, #0x0] + str r0, [r1, #0x0] + str r0, [r1, #0x0] + add r4, sp, #0x8 +_020B99F8: + mov r0, r4 + bl G3X_GetClipMtx + cmp r0, #0x0 + bne _020B99F8 + ldr r0, _020B9C3C ; =NNS_G3dGlb + ldr r1, [r0, #0xfc] + ands r0, r1, #0x1 + beq _020B9A38 + bl NNS_G3dGlbGetWV + add r1, sp, #0x48 + bl MTX_Copy43To44_ + add r0, sp, #0x8 + add r1, sp, #0x48 + mov r2, r0 + bl MTX_Concat44 + b _020B9A5C +_020B9A38: + ands r0, r1, #0x2 + beq _020B9A5C + ldr r0, _020B9C40 ; =NNS_G3dGlb + 0x4C + add r1, sp, #0x88 + bl MTX_Copy43To44_ + add r0, sp, #0x8 + add r1, sp, #0x88 + mov r2, r0 + bl MTX_Concat44 +_020B9A5C: + ldr r1, [sp, #0x38] + add r0, sp, #0x8 + str r1, [r6, #0x0] + ldr r1, [sp, #0x3c] + str r1, [r6, #0x4] + ldr r1, [sp, #0x40] + str r1, [r6, #0x8] + bl VEC_Mag + str r0, [r11, #0x0] + add r0, sp, #0x18 + bl VEC_Mag + str r0, [r11, #0x4] + add r0, sp, #0x28 + bl VEC_Mag + str r0, [r11, #0x8] + ldr r0, [sp, #0x1c] + cmp r0, #0x0 + bne _020B9AB0 + ldr r0, [sp, #0x20] + cmp r0, #0x0 + beq _020B9AD4 +_020B9AB0: + add r0, sp, #0x18 + add r1, r5, #0xc + bl VEC_Normalize + ldr r0, [r5, #0x14] + rsb r0, r0, #0x0 + str r0, [r5, #0x1c] + ldr r0, [r5, #0x10] + str r0, [r5, #0x20] + b _020B9AF4 +_020B9AD4: + add r0, sp, #0x28 + add r1, r5, #0x18 + bl VEC_Normalize + ldr r0, [r5, #0x1c] + rsb r0, r0, #0x0 + str r0, [r5, #0x14] + ldr r0, [r5, #0x20] + str r0, [r5, #0x10] +_020B9AF4: + ldr r0, _020B9C3C ; =NNS_G3dGlb + ldr r1, [r0, #0xfc] + ands r0, r1, #0x1 + beq _020B9B48 + ldr r3, _020B9C44 ; =0x00171012 + ldr r1, _020B9C38 ; =0x04000400 + ldr r0, _020B9C48 ; =bbcmd1$9234 + 0x4 + mov r2, #0x8 + str r3, [r1, #0x0] + bl MIi_CpuSend32 + bl NNS_G3dGlbGetInvWV + ldr r1, _020B9C38 ; =0x04000400 + mov r2, #0x30 + bl MIi_CpuSend32 + ldr r2, _020B9C4C ; =0x00001B19 + ldr r1, _020B9C38 ; =0x04000400 + ldr r0, _020B9C30 ; =bbcmd1$9234 + 0xC + str r2, [r1, #0x0] + mov r2, #0x3c + bl MIi_CpuSend32 + b _020B9BA4 +_020B9B48: + ands r0, r1, #0x2 + beq _020B9B94 + ldr r3, _020B9C44 ; =0x00171012 + ldr r1, _020B9C38 ; =0x04000400 + ldr r0, _020B9C48 ; =bbcmd1$9234 + 0x4 + mov r2, #0x8 + str r3, [r1, #0x0] + bl MIi_CpuSend32 + bl NNS_G3dGlbGetInvV + ldr r1, _020B9C38 ; =0x04000400 + mov r2, #0x30 + bl MIi_CpuSend32 + ldr r2, _020B9C4C ; =0x00001B19 + ldr r1, _020B9C38 ; =0x04000400 + ldr r0, _020B9C30 ; =bbcmd1$9234 + 0xC + str r2, [r1, #0x0] + mov r2, #0x3c + bl MIi_CpuSend32 + b _020B9BA4 +_020B9B94: + ldr r0, _020B9C50 ; =bbcmd1$9234 + ldr r1, _020B9C38 ; =0x04000400 + mov r2, #0x48 + bl MIi_CpuSend32 +_020B9BA4: + cmp r8, #0x3 + movne r0, #0x0 + bne _020B9BD0 + ldr r1, [r10, #0x8] + mov r0, r10 + bic r1, r1, #0x40 + str r1, [r10, #0x8] + ldr r1, [r10, #0x2c] + blx r1 + ldr r0, [r10, #0x8] + and r0, r0, #0x40 +_020B9BD0: + cmp r9, #0x20 + beq _020B9BE0 + cmp r9, #0x60 + bne _020B9C14 +_020B9BE0: + cmp r0, #0x0 + add r7, r7, #0x1 + bne _020B9C14 + ldr r0, [r10, #0x8] + ands r0, r0, #0x100 + bne _020B9C14 + ldr r0, [r10, #0x0] + add r1, sp, #0x4 + ldrb r3, [r0, #0x2] + mov r0, #0x13 + mov r2, #0x1 + str r3, [sp, #0x4] + bl NNS_G3dGeBufferOP_N +_020B9C14: + ldr r0, [r10, #0x0] + add r0, r0, r7 + str r0, [r10, #0x0] + add sp, sp, #0xcc + ldmia sp!, {r4-r11,pc} + .balign 4 +_020B9C28: .word bbcmd1$9234 + 0x30 +_020B9C2C: .word bbcmd1$9234 + 0x3C +_020B9C30: .word bbcmd1$9234 + 0xC +_020B9C34: .word 0x00151110 +_020B9C38: .word 0x04000400 +_020B9C3C: .word NNS_G3dGlb +_020B9C40: .word NNS_G3dGlb + 0x4C +_020B9C44: .word 0x00171012 +_020B9C48: .word bbcmd1$9234 + 0x4 +_020B9C4C: .word 0x00001B19 +_020B9C50: .word bbcmd1$9234 + arm_func_end NNSi_G3dFuncSbc_BBY + + arm_func_start NNSi_G3dFuncSbc_BB +NNSi_G3dFuncSbc_BB: ; 0x020B9C54 + stmdb sp!, {r4-r10,lr} + sub sp, sp, #0xc8 + mov r9, r0 + ldr r2, [r9, #0x8] + mov r8, r1 + ands r0, r2, #0x200 + mov r6, #0x2 + ldr r5, _020B9F58 ; =bbcmd1$9173 + 0x30 + ldr r4, _020B9F5C ; =bbcmd1$9173 + 0x3C + beq _020B9CB8 + cmp r8, #0x40 + beq _020B9C8C + cmp r8, #0x60 + bne _020B9C90 +_020B9C8C: + add r6, r6, #0x1 +_020B9C90: + cmp r8, #0x20 + beq _020B9CA0 + cmp r8, #0x60 + bne _020B9CA4 +_020B9CA0: + add r6, r6, #0x1 +_020B9CA4: + ldr r0, [r9, #0x0] + add sp, sp, #0xc8 + add r0, r0, r6 + str r0, [r9, #0x0] + ldmia sp!, {r4-r10,pc} +_020B9CB8: + cmp r8, #0x40 + beq _020B9CC8 + cmp r8, #0x60 + bne _020B9D00 +_020B9CC8: + add r6, r6, #0x1 + ands r0, r2, #0x100 + bne _020B9D00 + cmp r8, #0x40 + ldreq r0, [r9, #0x0] + add r1, sp, #0x0 + ldreqb r0, [r0, #0x2] + mov r2, #0x1 + streq r0, [sp, #0x0] + ldrne r0, [r9, #0x0] + ldrneb r0, [r0, #0x3] + strne r0, [sp, #0x0] + mov r0, #0x14 + bl NNS_G3dGeBufferOP_N +_020B9D00: + ldr r0, [r9, #0x28] + cmp r0, #0x0 + ldrneb r7, [r9, #0x93] + moveq r7, #0x0 + cmp r7, #0x1 + bne _020B9D4C + ldr r1, [r9, #0x8] + mov r0, r9 + bic r1, r1, #0x40 + str r1, [r9, #0x8] + ldr r1, [r9, #0x28] + blx r1 + ldr r0, [r9, #0x28] + cmp r0, #0x0 + ldrneb r7, [r9, #0x93] + ldr r0, [r9, #0x8] + moveq r7, #0x0 + and r1, r0, #0x40 + b _020B9D50 +_020B9D4C: + mov r1, #0x0 +_020B9D50: + ldr r0, [r9, #0x8] + ands r0, r0, #0x100 + bne _020B9ED4 + cmp r1, #0x0 + bne _020B9ED4 + bl NNS_G3dGeFlushBuffer + ldr r2, _020B9F60 ; =0x00151110 + ldr r1, _020B9F64 ; =0x04000400 + mov r0, #0x0 + str r2, [r1, #0x0] + str r0, [r1, #0x0] + str r0, [r1, #0x0] + add r10, sp, #0x8 +_020B9D84: + mov r0, r10 + bl G3X_GetClipMtx + cmp r0, #0x0 + bne _020B9D84 + ldr r0, _020B9F68 ; =NNS_G3dGlb + ldr r1, [r0, #0xfc] + ands r0, r1, #0x1 + beq _020B9DC4 + bl NNS_G3dGlbGetWV + add r1, sp, #0x48 + bl MTX_Copy43To44_ + add r0, sp, #0x8 + add r1, sp, #0x48 + mov r2, r0 + bl MTX_Concat44 + b _020B9DE8 +_020B9DC4: + ands r0, r1, #0x2 + beq _020B9DE8 + ldr r0, _020B9F6C ; =NNS_G3dGlb + 0x4C + add r1, sp, #0x88 + bl MTX_Copy43To44_ + add r0, sp, #0x8 + add r1, sp, #0x88 + mov r2, r0 + bl MTX_Concat44 +_020B9DE8: + ldr r1, [sp, #0x38] + add r0, sp, #0x8 + str r1, [r5, #0x0] + ldr r1, [sp, #0x3c] + str r1, [r5, #0x4] + ldr r1, [sp, #0x40] + str r1, [r5, #0x8] + bl VEC_Mag + str r0, [r4, #0x0] + add r0, sp, #0x18 + bl VEC_Mag + str r0, [r4, #0x4] + add r0, sp, #0x28 + bl VEC_Mag + ldr r1, _020B9F68 ; =NNS_G3dGlb + str r0, [r4, #0x8] + ldr r1, [r1, #0xfc] + ands r0, r1, #0x1 + beq _020B9E78 + ldr r3, _020B9F70 ; =0x00171012 + ldr r1, _020B9F64 ; =0x04000400 + ldr r0, _020B9F74 ; =bbcmd1$9173 + 0x4 + mov r2, #0x8 + str r3, [r1, #0x0] + bl MIi_CpuSend32 + bl NNS_G3dGlbGetInvWV + ldr r1, _020B9F64 ; =0x04000400 + mov r2, #0x30 + bl MIi_CpuSend32 + ldr r2, _020B9F78 ; =0x00001B19 + ldr r1, _020B9F64 ; =0x04000400 + ldr r0, _020B9F7C ; =bbcmd1$9173 + 0xC + str r2, [r1, #0x0] + mov r2, #0x3c + bl MIi_CpuSend32 + b _020B9ED4 +_020B9E78: + ands r0, r1, #0x2 + beq _020B9EC4 + ldr r3, _020B9F70 ; =0x00171012 + ldr r1, _020B9F64 ; =0x04000400 + ldr r0, _020B9F74 ; =bbcmd1$9173 + 0x4 + mov r2, #0x8 + str r3, [r1, #0x0] + bl MIi_CpuSend32 + bl NNS_G3dGlbGetInvV + ldr r1, _020B9F64 ; =0x04000400 + mov r2, #0x30 + bl MIi_CpuSend32 + ldr r2, _020B9F78 ; =0x00001B19 + ldr r1, _020B9F64 ; =0x04000400 + ldr r0, _020B9F7C ; =bbcmd1$9173 + 0xC + str r2, [r1, #0x0] + mov r2, #0x3c + bl MIi_CpuSend32 + b _020B9ED4 +_020B9EC4: + ldr r0, _020B9F80 ; =bbcmd1$9173 + ldr r1, _020B9F64 ; =0x04000400 + mov r2, #0x48 + bl MIi_CpuSend32 +_020B9ED4: + cmp r7, #0x3 + movne r0, #0x0 + bne _020B9F00 + ldr r1, [r9, #0x8] + mov r0, r9 + bic r1, r1, #0x40 + str r1, [r9, #0x8] + ldr r1, [r9, #0x28] + blx r1 + ldr r0, [r9, #0x8] + and r0, r0, #0x40 +_020B9F00: + cmp r8, #0x20 + beq _020B9F10 + cmp r8, #0x60 + bne _020B9F44 +_020B9F10: + cmp r0, #0x0 + add r6, r6, #0x1 + bne _020B9F44 + ldr r0, [r9, #0x8] + ands r0, r0, #0x100 + bne _020B9F44 + ldr r0, [r9, #0x0] + add r1, sp, #0x4 + ldrb r3, [r0, #0x2] + mov r0, #0x13 + mov r2, #0x1 + str r3, [sp, #0x4] + bl NNS_G3dGeBufferOP_N +_020B9F44: + ldr r0, [r9, #0x0] + add r0, r0, r6 + str r0, [r9, #0x0] + add sp, sp, #0xc8 + ldmia sp!, {r4-r10,pc} + .balign 4 +_020B9F58: .word bbcmd1$9173 + 0x30 +_020B9F5C: .word bbcmd1$9173 + 0x3C +_020B9F60: .word 0x00151110 +_020B9F64: .word 0x04000400 +_020B9F68: .word NNS_G3dGlb +_020B9F6C: .word NNS_G3dGlb + 0x4C +_020B9F70: .word 0x00171012 +_020B9F74: .word bbcmd1$9173 + 0x4 +_020B9F78: .word 0x00001B19 +_020B9F7C: .word bbcmd1$9173 + 0xC +_020B9F80: .word bbcmd1$9173 + arm_func_end NNSi_G3dFuncSbc_BB + + arm_func_start NNSi_G3dFuncSbc_NODEDESC +NNSi_G3dFuncSbc_NODEDESC: ; 0x020B9F84 + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0x14 + mov r10, r0 + ldr r0, [r10, #0x0] + mov r9, r1 + ldrb r4, [r0, #0x1] + mov r7, #0x4 + strb r4, [r10, #0xae] + ldr r0, [r10, #0x8] + orr r0, r0, #0x10 + str r0, [r10, #0x8] + ldr r1, [r10, #0x8] + ands r0, r1, #0x400 + beq _020BA01C + cmp r9, #0x40 + beq _020B9FCC + cmp r9, #0x60 + bne _020B9FD0 +_020B9FCC: + add r7, r7, #0x1 +_020B9FD0: + cmp r9, #0x20 + beq _020B9FE0 + cmp r9, #0x60 + bne _020BA008 +_020B9FE0: + add r7, r7, #0x1 + ands r0, r1, #0x100 + bne _020BA008 + ldr r0, [r10, #0x0] + add r1, sp, #0x8 + ldrb r3, [r0, #0x4] + mov r0, #0x14 + mov r2, #0x1 + str r3, [sp, #0x8] + bl NNS_G3dGeBufferOP_N +_020BA008: + ldr r0, [r10, #0x0] + add sp, sp, #0x14 + add r0, r0, r7 + str r0, [r10, #0x0] + ldmia sp!, {r4-r11,pc} +_020BA01C: + cmp r9, #0x40 + beq _020BA02C + cmp r9, #0x60 + bne _020BA068 +_020BA02C: + cmp r9, #0x40 + ldreq r0, [r10, #0x0] + add r7, r7, #0x1 + ldreqb r0, [r0, #0x4] + streq r0, [sp, #0xc] + ldrne r0, [r10, #0x0] + ldrneb r0, [r0, #0x5] + strne r0, [sp, #0xc] + ldr r0, [r10, #0x8] + ands r0, r0, #0x100 + bne _020BA068 + add r1, sp, #0xc + mov r0, #0x14 + mov r2, #0x1 + bl NNS_G3dGeBufferOP_N +_020BA068: + add r0, r10, #0x12c + str r0, [r10, #0xb4] + ldr r0, [r10, #0x24] + cmp r0, #0x0 + ldrneb r8, [r10, #0x92] + moveq r8, #0x0 + cmp r8, #0x1 + bne _020BA0BC + ldr r1, [r10, #0x8] + mov r0, r10 + bic r1, r1, #0x40 + str r1, [r10, #0x8] + ldr r1, [r10, #0x24] + blx r1 + ldr r0, [r10, #0x24] + cmp r0, #0x0 + ldrneb r8, [r10, #0x92] + ldr r0, [r10, #0x8] + moveq r8, #0x0 + and r0, r0, #0x40 + b _020BA0C0 +_020BA0BC: + mov r0, #0x0 +_020BA0C0: + cmp r0, #0x0 + bne _020BA2CC + ldr r0, [r10, #0x4] + ldr r1, [r0, #0x34] + cmp r1, #0x0 + beq _020BA0F4 + mov r0, #0x58 + mla r6, r4, r0, r1 + ldr r0, [r10, #0x8] + ands r0, r0, #0x80 + moveq r0, #0x1 + movne r0, #0x0 + b _020BA0FC +_020BA0F4: + add r6, r10, #0x12c + mov r0, #0x0 +_020BA0FC: + cmp r0, #0x0 + bne _020BA2C8 + mov r0, #0x0 + str r0, [r6, #0x0] + ldr r0, [r10, #0x4] + ldr r1, [r0, #0x10] + cmp r1, #0x0 + beq _020BA134 + ldr r3, [r0, #0x14] + mov r0, r6 + mov r2, r4 + blx r3 + cmp r0, #0x0 + bne _020BA2C8 +_020BA134: + ldr r2, [r10, #0xd4] + ldrh r0, [r2, #0x6] + ldrh r1, [r2, r0] + add r0, r2, r0 + mla r0, r1, r4, r0 + ldr r1, [r0, #0x4] + ldrh r0, [r2, r1] + add r4, r2, r1 + add r5, r4, #0x4 + ands r0, r0, #0x1 + ldrne r0, [r6, #0x0] + orrne r0, r0, #0x4 + strne r0, [r6, #0x0] + bne _020BA188 + ldr r0, [r5, #0x0] + str r0, [r6, #0x4c] + ldr r0, [r5, #0x4] + str r0, [r6, #0x50] + ldr r0, [r5, #0x8] + add r5, r5, #0xc + str r0, [r6, #0x54] +_020BA188: + ldrh r1, [r4, #0x0] + ands r0, r1, #0x2 + ldrne r0, [r6, #0x0] + orrne r0, r0, #0x2 + strne r0, [r6, #0x0] + bne _020BA2B0 + ands r0, r1, #0x8 + beq _020BA264 + and r1, r1, #0xf0 + mov r11, r1, asr #0x4 + ldrsh r1, [r5, #0x0] + add r0, r6, #0x28 + str r1, [sp, #0x0] + ldrsh r1, [r5, #0x2] + str r1, [sp, #0x4] + bl MI_Zero36B + ldrh r0, [r4, #0x0] + add r1, r6, r11, lsl #0x2 + add r5, r5, #0x4 + ands r0, r0, #0x100 + movne r0, #0x1000 + rsbne r2, r0, #0x0 + moveq r2, #0x1000 + str r2, [r1, #0x28] + ldr r0, _020BA3B4 ; =pivotUtil_$9100 + ldr r1, _020BA3B8 ; =pivotUtil_$9100 + 1 + ldrb r0, [r0, r11, lsl #0x2] + add r2, r6, r0, lsl #0x2 + ldr r0, [sp, #0x0] + str r0, [r2, #0x28] + ldrb r0, [r1, r11, lsl #0x2] + add r1, r6, r0, lsl #0x2 + ldr r0, [sp, #0x4] + str r0, [r1, #0x28] + ldrh r0, [r4, #0x0] + ands r0, r0, #0x200 + ldrne r0, [sp, #0x4] + rsbne r0, r0, #0x0 + strne r0, [sp, #0x4] + ldr r0, _020BA3BC ; =pivotUtil_$9100 + 2 + ldrb r0, [r0, r11, lsl #0x2] + add r1, r6, r0, lsl #0x2 + ldr r0, [sp, #0x4] + str r0, [r1, #0x28] + ldrh r0, [r4, #0x0] + ands r0, r0, #0x400 + ldrne r0, [sp, #0x0] + rsbne r0, r0, #0x0 + strne r0, [sp, #0x0] + ldr r0, _020BA3C0 ; =pivotUtil_$9100 + 3 + ldrb r0, [r0, r11, lsl #0x2] + add r1, r6, r0, lsl #0x2 + ldr r0, [sp, #0x0] + str r0, [r1, #0x28] + b _020BA2B0 +_020BA264: + ldrsh r0, [r4, #0x2] + str r0, [r6, #0x28] + ldrsh r0, [r5, #0x0] + str r0, [r6, #0x2c] + ldrsh r0, [r5, #0x2] + str r0, [r6, #0x30] + ldrsh r0, [r5, #0x4] + str r0, [r6, #0x34] + ldrsh r0, [r5, #0x6] + str r0, [r6, #0x38] + ldrsh r0, [r5, #0x8] + str r0, [r6, #0x3c] + ldrsh r0, [r5, #0xa] + str r0, [r6, #0x40] + ldrsh r0, [r5, #0xc] + str r0, [r6, #0x44] + ldrsh r0, [r5, #0xe] + add r5, r5, #0x10 + str r0, [r6, #0x48] +_020BA2B0: + ldrh r3, [r4, #0x0] + ldr r2, [r10, #0x0] + ldr r4, [r10, #0xe8] + mov r0, r6 + mov r1, r5 + blx r4 +_020BA2C8: + str r6, [r10, #0xb4] +_020BA2CC: + cmp r8, #0x2 + bne _020BA308 + ldr r1, [r10, #0x8] + mov r0, r10 + bic r1, r1, #0x40 + str r1, [r10, #0x8] + ldr r1, [r10, #0x24] + blx r1 + ldr r0, [r10, #0x24] + cmp r0, #0x0 + ldrneb r8, [r10, #0x92] + ldr r0, [r10, #0x8] + moveq r8, #0x0 + and r0, r0, #0x40 + b _020BA30C +_020BA308: + mov r0, #0x0 +_020BA30C: + cmp r0, #0x0 + bne _020BA32C + ldr r0, [r10, #0x8] + ands r0, r0, #0x100 + bne _020BA32C + ldr r0, [r10, #0xb4] + ldr r1, [r10, #0xec] + blx r1 +_020BA32C: + mov r0, #0x0 + str r0, [r10, #0xb4] + cmp r8, #0x3 + bne _020BA35C + ldr r1, [r10, #0x8] + mov r0, r10 + bic r1, r1, #0x40 + str r1, [r10, #0x8] + ldr r1, [r10, #0x24] + blx r1 + ldr r0, [r10, #0x8] + and r0, r0, #0x40 +_020BA35C: + cmp r9, #0x20 + beq _020BA36C + cmp r9, #0x60 + bne _020BA3A0 +_020BA36C: + cmp r0, #0x0 + add r7, r7, #0x1 + bne _020BA3A0 + ldr r0, [r10, #0x8] + ands r0, r0, #0x100 + bne _020BA3A0 + ldr r0, [r10, #0x0] + add r1, sp, #0x10 + ldrb r3, [r0, #0x4] + mov r0, #0x13 + mov r2, #0x1 + str r3, [sp, #0x10] + bl NNS_G3dGeBufferOP_N +_020BA3A0: + ldr r0, [r10, #0x0] + add r0, r0, r7 + str r0, [r10, #0x0] + add sp, sp, #0x14 + ldmia sp!, {r4-r11,pc} + .balign 4 +_020BA3B4: .word pivotUtil_$9100 +_020BA3B8: .word pivotUtil_$9100 + 1 +_020BA3BC: .word pivotUtil_$9100 + 2 +_020BA3C0: .word pivotUtil_$9100 + 3 + arm_func_end NNSi_G3dFuncSbc_NODEDESC + + arm_func_start NNSi_G3dFuncSbc_SHP +NNSi_G3dFuncSbc_SHP: ; 0x020BA3C4 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r4, r0 + ldr r3, [r4, #0x8] + ands r2, r3, #0x200 + bne _020BA420 + ands r2, r3, #0x1 + beq _020BA420 + ands r2, r3, #0x2 + bne _020BA420 + ldr r5, [r4, #0xdc] + ldr r3, [r4, #0x0] + ldrh r2, [r5, #0x6] + ldrb r3, [r3, #0x1] + ldr ip, _020BA434 ; =NNS_G3dFuncSbcShpTable + ldrh lr, [r5, r2] + add r2, r5, r2 + mla r2, lr, r3, r2 + ldr r2, [r2, #0x4] + ldrh lr, [r5, r2] + add r2, r5, r2 + ldr r12, [r12, lr, lsl #0x2] + blx r12 +_020BA420: + ldr r0, [r4, #0x0] + add r0, r0, #0x2 + str r0, [r4, #0x0] + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + .balign 4 +_020BA434: .word NNS_G3dFuncSbcShpTable + arm_func_end NNSi_G3dFuncSbc_SHP + + arm_func_start NNSi_G3dFuncSbc_SHP_InternalDefault +NNSi_G3dFuncSbc_SHP_InternalDefault: ; 0x020BA438 + stmdb sp!, {r4-r6,lr} + mov r6, r0 + ldr r0, [r6, #0x20] + mov r5, r2 + cmp r0, #0x0 + ldrneb r4, [r6, #0x91] + moveq r4, #0x0 + cmp r4, #0x1 + bne _020BA490 + ldr r1, [r6, #0x8] + mov r0, r6 + bic r1, r1, #0x40 + str r1, [r6, #0x8] + ldr r1, [r6, #0x20] + blx r1 + ldr r0, [r6, #0x20] + cmp r0, #0x0 + ldrneb r4, [r6, #0x91] + ldr r0, [r6, #0x8] + moveq r4, #0x0 + and r0, r0, #0x40 + b _020BA494 +_020BA490: + mov r0, #0x0 +_020BA494: + cmp r0, #0x0 + bne _020BA4B8 + ldr r0, [r6, #0x8] + ands r0, r0, #0x100 + bne _020BA4B8 + ldr r0, [r5, #0x8] + ldr r1, [r5, #0xc] + add r0, r5, r0 + bl NNS_G3dGeSendDL +_020BA4B8: + cmp r4, #0x2 + bne _020BA4E8 + ldr r1, [r6, #0x8] + mov r0, r6 + bic r1, r1, #0x40 + str r1, [r6, #0x8] + ldr r1, [r6, #0x20] + blx r1 + ldr r0, [r6, #0x20] + cmp r0, #0x0 + ldrneb r4, [r6, #0x91] + moveq r4, #0x0 +_020BA4E8: + cmp r4, #0x3 + ldmneia sp!, {r4-r6,pc} + ldr r1, [r6, #0x8] + mov r0, r6 + bic r1, r1, #0x40 + str r1, [r6, #0x8] + ldr r1, [r6, #0x20] + blx r1 + ldmia sp!, {r4-r6,pc} + arm_func_end NNSi_G3dFuncSbc_SHP_InternalDefault + + arm_func_start NNSi_G3dFuncSbc_MAT +NNSi_G3dFuncSbc_MAT: ; 0x020BA50C + stmdb sp!, {r4-r6,lr} + mov r4, r0 + ldr r5, [r4, #0x8] + ands r0, r5, #0x200 + bne _020BA578 + ldr r2, [r4, #0x0] + ands r0, r5, #0x1 + ldrb r3, [r2, #0x1] + bne _020BA544 + ands r0, r5, #0x8 + beq _020BA544 + ldrb r0, [r4, #0xad] + cmp r3, r0 + beq _020BA578 +_020BA544: + ldr r6, [r4, #0xd8] + ldr ip, _020BA588 ; =NNS_G3dFuncSbcMatTable + ldrh r2, [r6, #0xa] + add r5, r6, #0x4 + mov r0, r4 + ldrh lr, [r5, r2] + add r2, r5, r2 + mla r2, lr, r3, r2 + ldr r2, [r2, #0x4] + ldrh lr, [r6, r2] + add r2, r6, r2 + ldr r12, [r12, lr, lsl #0x2] + blx r12 +_020BA578: + ldr r0, [r4, #0x0] + add r0, r0, #0x2 + str r0, [r4, #0x0] + ldmia sp!, {r4-r6,pc} + .balign 4 +_020BA588: .word NNS_G3dFuncSbcMatTable + arm_func_end NNSi_G3dFuncSbc_MAT + + arm_func_start NNSi_G3dFuncSbc_MAT_InternalDefault +NNSi_G3dFuncSbc_MAT_InternalDefault: ; 0x020BA58C + stmdb sp!, {r4-r8,lr} + sub sp, sp, #0x20 + mov r8, r0 + mov r6, r3 + strb r6, [r8, #0xad] + ldr r3, [r8, #0x8] + add r0, r8, #0xf4 + orr r3, r3, #0x8 + str r3, [r8, #0x8] + str r0, [r8, #0xb0] + ldr r0, [r8, #0x1c] + mov r4, r1 + cmp r0, #0x0 + ldrneb r5, [r8, #0x90] + mov r7, r2 + moveq r5, #0x0 + cmp r5, #0x1 + bne _020BA608 + ldr r1, [r8, #0x8] + mov r0, r8 + bic r1, r1, #0x40 + str r1, [r8, #0x8] + ldr r1, [r8, #0x1c] + blx r1 + ldr r0, [r8, #0x1c] + cmp r0, #0x0 + ldrneb r5, [r8, #0x90] + ldr r0, [r8, #0x8] + moveq r5, #0x0 + and r0, r0, #0x40 + b _020BA60C +_020BA608: + mov r0, #0x0 +_020BA60C: + cmp r0, #0x0 + bne _020BA8C0 + ldr r0, [r8, #0x4] + ldr r0, [r0, #0x38] + cmp r0, #0x0 + beq _020BA638 + ldr r1, [r8, #0x8] + ands r1, r1, #0x80 + moveq r1, #0x38 + mlaeq r4, r6, r1, r0 + beq _020BA8BC +_020BA638: + cmp r4, #0x20 + beq _020BA648 + cmp r4, #0x40 + bne _020BA684 +_020BA648: + mov r1, r6, lsr #0x5 + add r1, r8, r1, lsl #0x2 + and r2, r6, #0x1f + mov r3, #0x1 + mov r2, r3, lsl r2 + ldr r1, [r1, #0xbc] + ands r1, r2, r1 + beq _020BA684 + cmp r0, #0x0 + movne r1, #0x38 + mlane r4, r6, r1, r0 + ldreq r1, _020BA9D8 ; =NNS_G3dRSOnGlb + moveq r0, #0x38 + mlaeq r4, r6, r0, r1 + b _020BA8BC +_020BA684: + cmp r0, #0x0 + beq _020BA6BC + add r4, r8, #0xbc + mov r3, r6, lsr #0x5 + ldr r2, [r4, r3, lsl #0x2] + and r0, r6, #0x1f + mov r1, #0x1 + orr r0, r2, r1, lsl r0 + str r0, [r4, r3, lsl #0x2] + ldr r1, [r8, #0x4] + mov r0, #0x38 + ldr r1, [r1, #0x38] + mla r4, r6, r0, r1 + b _020BA6F0 +_020BA6BC: + cmp r4, #0x40 + addne r4, r8, #0xf4 + bne _020BA6F0 + add lr, r8, #0xbc + mov r12, r6, lsr #0x5 + ldr r1, _020BA9D8 ; =NNS_G3dRSOnGlb + ldr r4, [lr, r12, lsl #0x2] + mov r0, #0x38 + and r2, r6, #0x1f + mov r3, #0x1 + orr r2, r4, r3, lsl r2 + mla r4, r6, r0, r1 + str r2, [lr, r12, lsl #0x2] +_020BA6F0: + mov r0, #0x0 + str r0, [r4, #0x0] + ldr r3, [r8, #0xd8] + ldrh r0, [r3, #0xa] + add r2, r3, #0x4 + ldrh r1, [r2, r0] + add r0, r2, r0 + mla r0, r1, r6, r0 + ldr r0, [r0, #0x4] + ldr r1, _020BA9DC ; =NNS_G3dGlb + add r0, r3, r0 + ldrh r0, [r0, #0x1e] + ands r0, r0, #0x20 + ldrne r0, [r4, #0x0] + orrne r0, r0, #0x20 + strne r0, [r4, #0x0] + ldrh r2, [r7, #0x1e] + ldr r0, _020BA9E0 ; =matColorMask_$8998 + ldr r12, [r1, #0x94] + mov r2, r2, asr #0x6 + and r2, r2, #0x7 + ldr lr, [r0, r2, lsl #0x2] + ldr r2, [r7, #0x4] + mvn r3, lr + and r3, r12, r3 + and r2, r2, lr + orr r2, r3, r2 + str r2, [r4, #0x4] + ldrh r12, [r7, #0x1e] + ldr r3, [r1, #0x98] + ldr r2, [r7, #0x8] + mov r12, r12, asr #0x9 + and r12, r12, #0x7 + ldr r12, [r0, r12, lsl #0x2] + mvn r0, r12 + and r3, r3, r0 + and r0, r2, r12 + orr r0, r3, r0 + str r0, [r4, #0x8] + ldr r3, [r7, #0x10] + ldr r0, [r7, #0xc] + ldr r2, [r1, #0x9c] + mvn r1, r3 + and r1, r2, r1 + and r0, r0, r3 + orr r0, r1, r0 + str r0, [r4, #0xc] + ldr r0, [r7, #0x14] + str r0, [r4, #0x10] + ldrh r0, [r7, #0x1c] + str r0, [r4, #0x14] + ldrh r1, [r7, #0x1e] + ands r0, r1, #0x1 + beq _020BA850 + ands r1, r1, #0x2 + ldrne r1, [r4, #0x0] + add r0, r7, #0x2c + orrne r1, r1, #0x1 + strne r1, [r4, #0x0] + bne _020BA7F4 + ldr r1, [r0, #0x0] + str r1, [r4, #0x18] + ldr r1, [r0, #0x4] + add r0, r0, #0x8 + str r1, [r4, #0x1c] +_020BA7F4: + ldrh r1, [r7, #0x1e] + ands r1, r1, #0x4 + ldrne r1, [r4, #0x0] + orrne r1, r1, #0x2 + strne r1, [r4, #0x0] + bne _020BA820 + ldrsh r1, [r0, #0x0] + strh r1, [r4, #0x20] + ldrsh r1, [r0, #0x2] + add r0, r0, #0x4 + strh r1, [r4, #0x22] +_020BA820: + ldrh r1, [r7, #0x1e] + ands r1, r1, #0x8 + ldreq r1, [r0, #0x0] + streq r1, [r4, #0x24] + ldreq r0, [r0, #0x4] + streq r0, [r4, #0x28] + ldrne r0, [r4, #0x0] + orrne r0, r0, #0x4 + strne r0, [r4, #0x0] + ldr r0, [r4, #0x0] + orr r0, r0, #0x8 + str r0, [r4, #0x0] +_020BA850: + ldr r0, [r8, #0x4] + ldr r1, [r0, #0x8] + cmp r1, #0x0 + beq _020BA890 + mov r2, r6, lsr #0x5 + add r2, r0, r2, lsl #0x2 + and r3, r6, #0x1f + mov r12, #0x1 + mov r3, r12, lsl r3 + ldr r2, [r2, #0x3c] + ands r2, r3, r2 + beq _020BA890 + ldr r3, [r0, #0xc] + mov r0, r4 + mov r2, r6 + blx r3 +_020BA890: + ldr r0, [r4, #0x0] + ands r0, r0, #0x18 + beq _020BA8BC + ldrh r0, [r7, #0x20] + strh r0, [r4, #0x2c] + ldrh r0, [r7, #0x22] + strh r0, [r4, #0x2e] + ldr r0, [r7, #0x24] + str r0, [r4, #0x30] + ldr r0, [r7, #0x28] + str r0, [r4, #0x34] +_020BA8BC: + str r4, [r8, #0xb0] +_020BA8C0: + cmp r5, #0x2 + bne _020BA8FC + ldr r1, [r8, #0x8] + mov r0, r8 + bic r1, r1, #0x40 + str r1, [r8, #0x8] + ldr r1, [r8, #0x1c] + blx r1 + ldr r0, [r8, #0x1c] + cmp r0, #0x0 + ldrneb r5, [r8, #0x90] + ldr r0, [r8, #0x8] + moveq r5, #0x0 + and r0, r0, #0x40 + b _020BA900 +_020BA8FC: + mov r0, #0x0 +_020BA900: + cmp r0, #0x0 + bne _020BA9AC + ldr r4, [r8, #0xb0] + ldr r1, [r4, #0xc] + ands r0, r1, #0x1f0000 + beq _020BA9A0 + ldr r0, [r4, #0x0] + ands r0, r0, #0x20 + bicne r0, r1, #0x1f0000 + strne r0, [r4, #0xc] + ldr r0, [r8, #0x8] + bic r0, r0, #0x2 + str r0, [r8, #0x8] + ldr r0, [r8, #0x8] + ands r0, r0, #0x100 + bne _020BA9AC + ldr r0, _020BA9E4 ; =0x00293130 + ldr r3, _020BA9E8 ; =0x00002B2A + str r0, [sp, #0x0] + ldr r2, [r4, #0x4] + add r1, sp, #0x4 + str r2, [sp, #0x4] + ldr r6, [r4, #0x8] + mov r2, #0x6 + str r6, [sp, #0x8] + ldr r6, [r4, #0xc] + str r6, [sp, #0xc] + str r3, [sp, #0x10] + ldr r3, [r4, #0x10] + str r3, [sp, #0x14] + ldr r3, [r4, #0x14] + str r3, [sp, #0x18] + bl NNS_G3dGeBufferOP_N + ldr r0, [r4, #0x0] + ands r0, r0, #0x18 + beq _020BA9AC + ldr r1, [r8, #0xf0] + mov r0, r4 + blx r1 + b _020BA9AC +_020BA9A0: + ldr r0, [r8, #0x8] + orr r0, r0, #0x2 + str r0, [r8, #0x8] +_020BA9AC: + cmp r5, #0x3 + addne sp, sp, #0x20 + ldmneia sp!, {r4-r8,pc} + ldr r1, [r8, #0x8] + mov r0, r8 + bic r1, r1, #0x40 + str r1, [r8, #0x8] + ldr r1, [r8, #0x1c] + blx r1 + add sp, sp, #0x20 + ldmia sp!, {r4-r8,pc} + .balign 4 +_020BA9D8: .word NNS_G3dRSOnGlb +_020BA9DC: .word NNS_G3dGlb +_020BA9E0: .word matColorMask_$8998 +_020BA9E4: .word 0x00293130 +_020BA9E8: .word 0x00002B2A + arm_func_end NNSi_G3dFuncSbc_MAT_InternalDefault + + arm_func_start NNSi_G3dFuncSbc_MTX +NNSi_G3dFuncSbc_MTX: ; 0x020BA9EC + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r5, r0 + ldr r1, [r5, #0x8] + ands r0, r1, #0x200 + bne _020BAAAC + ands r0, r1, #0x1 + beq _020BAAAC + ldr r0, [r5, #0x18] + cmp r0, #0x0 + ldrneb r4, [r5, #0x8f] + moveq r4, #0x0 + cmp r4, #0x1 + bne _020BAA58 + ldr r1, [r5, #0x8] + mov r0, r5 + bic r1, r1, #0x40 + str r1, [r5, #0x8] + ldr r1, [r5, #0x18] + blx r1 + ldr r0, [r5, #0x18] + cmp r0, #0x0 + ldrneb r4, [r5, #0x8f] + ldr r0, [r5, #0x8] + moveq r4, #0x0 + and r0, r0, #0x40 + b _020BAA5C +_020BAA58: + mov r0, #0x0 +_020BAA5C: + cmp r0, #0x0 + bne _020BAA8C + ldr r0, [r5, #0x0] + ldrb r0, [r0, #0x1] + str r0, [sp, #0x0] + ldr r0, [r5, #0x8] + ands r0, r0, #0x100 + bne _020BAA8C + add r1, sp, #0x0 + mov r0, #0x14 + mov r2, #0x1 + bl NNS_G3dGeBufferOP_N +_020BAA8C: + cmp r4, #0x3 + bne _020BAAAC + ldr r1, [r5, #0x8] + mov r0, r5 + bic r1, r1, #0x40 + str r1, [r5, #0x8] + ldr r1, [r5, #0x18] + blx r1 +_020BAAAC: + ldr r0, [r5, #0x0] + add r0, r0, #0x2 + str r0, [r5, #0x0] + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + arm_func_end NNSi_G3dFuncSbc_MTX + + arm_func_start NNSi_G3dFuncSbc_NODE +NNSi_G3dFuncSbc_NODE: ; 0x020BAAC0 + stmdb sp!, {r4-r6,lr} + mov r6, r0 + ldr r0, [r6, #0x8] + ands r0, r0, #0x200 + bne _020BAC38 + ldr r1, [r6, #0x0] + add r0, r6, #0x184 + ldrb r1, [r1, #0x1] + strb r1, [r6, #0xac] + ldr r1, [r6, #0x8] + ldrb r4, [r6, #0xac] + orr r1, r1, #0x4 + str r1, [r6, #0x8] + str r0, [r6, #0xb8] + ldr r0, [r6, #0x14] + cmp r0, #0x0 + ldrneb r5, [r6, #0x8e] + moveq r5, #0x0 + cmp r5, #0x1 + bne _020BAB44 + ldr r1, [r6, #0x8] + mov r0, r6 + bic r1, r1, #0x40 + str r1, [r6, #0x8] + ldr r1, [r6, #0x14] + blx r1 + ldr r0, [r6, #0x14] + cmp r0, #0x0 + ldrneb r5, [r6, #0x8e] + ldr r0, [r6, #0x8] + moveq r5, #0x0 + and r0, r0, #0x40 + b _020BAB48 +_020BAB44: + mov r0, #0x0 +_020BAB48: + cmp r0, #0x0 + bne _020BABAC + ldr r12, [r6, #0x4] + ldr r1, [r12, #0x18] + cmp r1, #0x0 + beq _020BAB98 + mov r0, r4, lsr #0x5 + add r0, r12, r0, lsl #0x2 + and r2, r4, #0x1f + mov r3, #0x1 + mov r2, r3, lsl r2 + ldr r0, [r0, #0x4c] + ands r0, r2, r0 + beq _020BAB98 + ldr r0, [r6, #0xb8] + ldr r3, [r12, #0x1c] + mov r2, r4 + blx r3 + cmp r0, #0x0 + bne _020BABAC +_020BAB98: + ldr r1, [r6, #0x0] + ldr r0, [r6, #0xb8] + ldrb r1, [r1, #0x2] + and r1, r1, #0x1 + str r1, [r0, #0x0] +_020BABAC: + cmp r5, #0x2 + bne _020BABE8 + ldr r1, [r6, #0x8] + mov r0, r6 + bic r1, r1, #0x40 + str r1, [r6, #0x8] + ldr r1, [r6, #0x14] + blx r1 + ldr r0, [r6, #0x14] + cmp r0, #0x0 + ldrneb r5, [r6, #0x8e] + ldr r0, [r6, #0x8] + moveq r5, #0x0 + and r0, r0, #0x40 + b _020BABEC +_020BABE8: + mov r0, #0x0 +_020BABEC: + cmp r0, #0x0 + bne _020BAC18 + ldr r0, [r6, #0xb8] + ldr r0, [r0, #0x0] + cmp r0, #0x0 + ldrne r0, [r6, #0x8] + orrne r0, r0, #0x1 + strne r0, [r6, #0x8] + ldreq r0, [r6, #0x8] + biceq r0, r0, #0x1 + streq r0, [r6, #0x8] +_020BAC18: + cmp r5, #0x3 + bne _020BAC38 + ldr r1, [r6, #0x8] + mov r0, r6 + bic r1, r1, #0x40 + str r1, [r6, #0x8] + ldr r1, [r6, #0x14] + blx r1 +_020BAC38: + ldr r0, [r6, #0x0] + add r0, r0, #0x3 + str r0, [r6, #0x0] + ldmia sp!, {r4-r6,pc} + arm_func_end NNSi_G3dFuncSbc_NODE + + arm_func_start NNSi_G3dFuncSbc_RET +NNSi_G3dFuncSbc_RET: ; 0x020BAC48 + stmdb sp!, {r4,lr} + mov r4, r0 + ldr r1, [r4, #0x10] + cmp r1, #0x0 + beq _020BAC60 + blx r1 +_020BAC60: + ldr r0, [r4, #0x8] + orr r0, r0, #0x20 + str r0, [r4, #0x8] + ldmia sp!, {r4,pc} + arm_func_end NNSi_G3dFuncSbc_RET + + arm_func_start NNSi_G3dFuncSbc_NOP +NNSi_G3dFuncSbc_NOP: ; 0x020BAC70 + stmdb sp!, {r4,lr} + mov r4, r0 + ldr r1, [r4, #0xc] + cmp r1, #0x0 + beq _020BAC88 + blx r1 +_020BAC88: + ldr r0, [r4, #0x0] + add r0, r0, #0x1 + str r0, [r4, #0x0] + ldmia sp!, {r4,pc} + arm_func_end NNSi_G3dFuncSbc_NOP + + arm_func_start NNS_G3dDraw +NNS_G3dDraw: ; 0x020BAC98 + stmdb sp!, {r4,lr} + sub sp, sp, #0x188 + mov r4, r0 + ldr r0, [r4, #0x0] + and r0, r0, #0x10 + cmp r0, #0x10 + bne _020BAD2C + add r1, r4, #0x3c + mov r0, #0x0 + mov r2, #0x8 + bl MIi_CpuClear32 + add r1, r4, #0x44 + mov r0, #0x0 + mov r2, #0x8 + bl MIi_CpuClear32 + add r1, r4, #0x4c + mov r0, #0x0 + mov r2, #0x8 + bl MIi_CpuClear32 + ldr r1, [r4, #0x8] + cmp r1, #0x0 + beq _020BACF8 + add r0, r4, #0x3c + bl updateHintVec_ +_020BACF8: + ldr r1, [r4, #0x10] + cmp r1, #0x0 + beq _020BAD0C + add r0, r4, #0x44 + bl updateHintVec_ +_020BAD0C: + ldr r1, [r4, #0x18] + cmp r1, #0x0 + beq _020BAD20 + add r0, r4, #0x4c + bl updateHintVec_ +_020BAD20: + ldr r0, [r4, #0x0] + bic r0, r0, #0x10 + str r0, [r4, #0x0] +_020BAD2C: + ldr r2, _020BAD70 ; =NNS_G3dRS + ldr r0, [r2, #0x0] + cmp r0, #0x0 + beq _020BAD4C + mov r1, r4 + bl G3dDrawInternal_ + add sp, sp, #0x188 + ldmia sp!, {r4,pc} +_020BAD4C: + add r0, sp, #0x0 + mov r1, r4 + str r0, [r2, #0x0] + bl G3dDrawInternal_ + ldr r0, _020BAD70 ; =NNS_G3dRS + mov r1, #0x0 + str r1, [r0, #0x0] + add sp, sp, #0x188 + ldmia sp!, {r4,pc} + .balign 4 +_020BAD70: .word NNS_G3dRS + arm_func_end NNS_G3dDraw + + local_arm_func_start updateHintVec_ +updateHintVec_: ; 0x020BAD74 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + cmp r1, #0x0 + addeq sp, sp, #0x4 + ldmeqia sp!, {r4-r5,pc} + mov r3, #0x1 + mov r4, #0x0 +_020BAD90: + ldrb r2, [r1, #0x19] + mov r5, r4 + cmp r2, #0x0 + ble _020BADD0 +_020BADA0: + add r2, r1, r5, lsl #0x1 + ldrh r2, [r2, #0x1a] + ands r2, r2, #0x100 + movne lr, r5, asr #0x5 + andne r2, r5, #0x1f + ldrne r12, [r0, lr, lsl #0x2] + add r5, r5, #0x1 + orrne r2, r12, r3, lsl r2 + strne r2, [r0, lr, lsl #0x2] + ldrb r2, [r1, #0x19] + cmp r5, r2 + blt _020BADA0 +_020BADD0: + ldr r1, [r1, #0x10] + cmp r1, #0x0 + bne _020BAD90 + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + arm_func_end updateHintVec_ + + arm_func_start G3dDrawInternal_ +G3dDrawInternal_: ; 0x020BADE4 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r5, r0 + mov r4, r1 + mov r1, r5 + mov r0, #0x0 + mov r2, #0x188 + bl MIi_CpuClearFast + mov r0, #0x1 + str r0, [r5, #0xc4] + str r0, [r5, #0x8] + ldr r0, [r4, #0x30] + ldr r2, _020BAF60 ; =NNS_G3dGetJointScale_FuncArray + cmp r0, #0x0 + strne r0, [r5, #0x0] + ldreq r1, [r4, #0x4] + ldreq r0, [r1, #0x4] + addeq r0, r1, r0 + streq r0, [r5, #0x0] + str r4, [r5, #0x4] + ldr r0, [r4, #0x4] + ldr r1, _020BAF64 ; =NNS_G3dSendJointSRT_FuncArray + add r0, r0, #0x40 + str r0, [r5, #0xd4] + ldr r12, [r4, #0x4] + ldr r0, _020BAF68 ; =NNS_G3dSendTexSRT_FuncArray + ldr r3, [r12, #0x8] + add r3, r12, r3 + str r3, [r5, #0xd8] + ldr r12, [r4, #0x4] + ldr r3, [r12, #0xc] + add r3, r12, r3 + str r3, [r5, #0xdc] + ldr r3, [r4, #0x4] + ldrb r3, [r3, #0x15] + ldr r2, [r2, r3, lsl #0x2] + str r2, [r5, #0xe8] + ldr r2, [r4, #0x4] + ldrb r2, [r2, #0x15] + ldr r1, [r1, r2, lsl #0x2] + str r1, [r5, #0xec] + ldr r1, [r4, #0x4] + ldrb r1, [r1, #0x16] + ldr r0, [r0, r1, lsl #0x2] + str r0, [r5, #0xf0] + ldr r0, [r4, #0x4] + ldr r0, [r0, #0x1c] + str r0, [r5, #0xe0] + ldr r0, [r4, #0x4] + ldr r0, [r0, #0x20] + str r0, [r5, #0xe4] + ldr r1, [r4, #0x20] + cmp r1, #0x0 + beq _020BAEE0 + ldrb r0, [r4, #0x24] + cmp r0, #0x20 + bhs _020BAEE0 + add r0, r5, r0, lsl #0x2 + str r1, [r0, #0xc] + ldrb r0, [r4, #0x24] + ldrb r1, [r4, #0x25] + add r0, r5, r0 + strb r1, [r0, #0x8c] +_020BAEE0: + ldr r0, [r4, #0x0] + ands r0, r0, #0x1 + ldrne r0, [r5, #0x8] + orrne r0, r0, #0x80 + strne r0, [r5, #0x8] + ldr r0, [r4, #0x0] + ands r0, r0, #0x2 + ldrne r0, [r5, #0x8] + orrne r0, r0, #0x100 + strne r0, [r5, #0x8] + ldr r0, [r4, #0x0] + ands r0, r0, #0x4 + ldrne r0, [r5, #0x8] + orrne r0, r0, #0x200 + strne r0, [r5, #0x8] + ldr r0, [r4, #0x0] + ands r0, r0, #0x8 + ldrne r0, [r5, #0x8] + orrne r0, r0, #0x400 + strne r0, [r5, #0x8] + ldr r1, [r4, #0x28] + cmp r1, #0x0 + beq _020BAF44 + mov r0, r5 + blx r1 +_020BAF44: + mov r0, r5 + bl G3dDrawInternal_Loop_ + ldr r0, [r4, #0x0] + bic r0, r0, #0x1 + str r0, [r4, #0x0] + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + .balign 4 +_020BAF60: .word NNS_G3dGetJointScale_FuncArray +_020BAF64: .word NNS_G3dSendJointSRT_FuncArray +_020BAF68: .word NNS_G3dSendTexSRT_FuncArray + arm_func_end G3dDrawInternal_ + + arm_func_start G3dDrawInternal_Loop_ +G3dDrawInternal_Loop_: ; 0x020BAF6C + stmdb sp!, {r4-r6,lr} + mov r5, r0 + ldr r6, _020BAFB4 ; =NNS_G3dFuncSbcTable + add r4, r5, #0x8 +_020BAF7C: + ldr r1, [r4, #0x0] + mov r0, r5 + bic r1, r1, #0x40 + str r1, [r4, #0x0] + ldr r1, [r5, #0x0] + ldrb r3, [r1, #0x0] + and r1, r3, #0x1f + ldr r2, [r6, r1, lsl #0x2] + and r1, r3, #0xe0 + blx r2 + ldr r0, [r5, #0x8] + ands r0, r0, #0x20 + beq _020BAF7C + ldmia sp!, {r4-r6,pc} + .balign 4 +_020BAFB4: .word NNS_G3dFuncSbcTable + arm_func_end G3dDrawInternal_Loop_ diff --git a/arm9/asm/NNS_G3D_si3d.s b/arm9/asm/NNS_G3D_si3d.s new file mode 100644 index 00000000..66bfe460 --- /dev/null +++ b/arm9/asm/NNS_G3D_si3d.s @@ -0,0 +1,359 @@ + .include "asm/macros.inc" + .include "global.inc" + + .section .text + + arm_func_start NNSi_G3dSendTexSRTSi3d +NNSi_G3dSendTexSRTSi3d: ; 0x020BEF10 + stmdb sp!, {lr} + sub sp, sp, #0x3c + ldr r1, [r0, #0x0] + mov r3, #0x0 + ands r1, r1, #0x8 + ldrne r1, _020BF0CC ; =0x00101710 + mov r2, #0x3 + strne r1, [sp, #0x0] + ldreq r1, _020BF0D0 ; =0x00101910 + str r3, [sp, #0x34] + streq r1, [sp, #0x0] + mov r1, #0x2 + str r1, [sp, #0x38] + str r3, [sp, #0x28] + str r3, [sp, #0x24] + str r3, [sp, #0x20] + str r3, [sp, #0x1c] + str r3, [sp, #0x14] + str r3, [sp, #0x10] + str r3, [sp, #0xc] + str r2, [sp, #0x4] + ldr r2, [r0, #0x0] + ands r1, r2, #0x4 + beq _020BEFA0 + str r3, [sp, #0x2c] + str r3, [sp, #0x30] + ldr r1, [r0, #0x0] + ands r1, r1, #0x1 + movne r1, #0x1000 + strne r1, [sp, #0x8] + strne r1, [sp, #0x18] + ldreq r1, [r0, #0x18] + streq r1, [sp, #0x8] + ldreq r1, [r0, #0x1c] + streq r1, [sp, #0x18] + b _020BF040 +_020BEFA0: + ands r1, r2, #0x1 + beq _020BEFE8 + ldr r2, [r0, #0x24] + ldrh r1, [r0, #0x2c] + mov r2, r2, lsl #0x4 + rsb r2, r2, #0x0 + mul r1, r2, r1 + str r1, [sp, #0x2c] + ldr r2, [r0, #0x28] + ldrh r1, [r0, #0x2e] + mov r2, r2, lsl #0x4 + rsb r2, r2, #0x0 + mul r3, r2, r1 + mov r1, #0x1000 + str r3, [sp, #0x30] + str r1, [sp, #0x8] + str r1, [sp, #0x18] + b _020BF040 +_020BEFE8: + ldr r2, [r0, #0x18] + ldr r1, [r0, #0x24] + ldrh r12, [r0, #0x2c] + smull r3, r1, r2, r1 + mov r2, r3, lsr #0x8 + orr r2, r2, r1, lsl #0x18 + rsb r1, r2, #0x0 + mul r1, r12, r1 + str r1, [sp, #0x2c] + ldr r2, [r0, #0x1c] + ldr r1, [r0, #0x28] + ldrh r12, [r0, #0x2e] + smull r3, r1, r2, r1 + mov r2, r3, lsr #0x8 + orr r2, r2, r1, lsl #0x18 + rsb r1, r2, #0x0 + mul r1, r12, r1 + str r1, [sp, #0x30] + ldr r1, [r0, #0x18] + str r1, [sp, #0x8] + ldr r1, [r0, #0x1c] + str r1, [sp, #0x18] +_020BF040: + ldr r12, [r0, #0x30] + cmp r12, #0x1000 + beq _020BF078 + ldr r2, [sp, #0x8] + ldr r1, [sp, #0x2c] + smull r3, r2, r12, r2 + mov r3, r3, lsr #0xc + orr r3, r3, r2, lsl #0x14 + str r3, [sp, #0x8] + ldr r2, [r0, #0x30] + smull r3, r1, r2, r1 + mov r2, r3, lsr #0xc + orr r2, r2, r1, lsl #0x14 + str r2, [sp, #0x2c] +_020BF078: + ldr r12, [r0, #0x34] + cmp r12, #0x1000 + beq _020BF0B0 + ldr r2, [sp, #0x18] + ldr r1, [sp, #0x30] + smull r3, r2, r12, r2 + mov r3, r3, lsr #0xc + orr r3, r3, r2, lsl #0x14 + str r3, [sp, #0x18] + ldr r0, [r0, #0x34] + smull r2, r1, r0, r1 + mov r0, r2, lsr #0xc + orr r0, r0, r1, lsl #0x14 + str r0, [sp, #0x30] +_020BF0B0: + add r1, sp, #0x0 + ldr r0, [sp, #0x0] + add r1, r1, #0x4 + mov r2, #0xe + bl NNS_G3dGeBufferOP_N + add sp, sp, #0x3c + ldmia sp!, {pc} + .balign 4 +_020BF0CC: .word 0x00101710 +_020BF0D0: .word 0x00101910 + arm_func_end NNSi_G3dSendTexSRTSi3d + + arm_func_start NNSi_G3dGetJointScaleSi3d +NNSi_G3dGetJointScaleSi3d: ; 0x020BF0D4 + stmdb sp!, {r4-r8,lr} + mov r5, r0 + ands r0, r3, #0x4 + ldrb r4, [r2, #0x1] + ldrb r0, [r2, #0x2] + beq _020BF174 + ldr r2, [r5, #0x0] + ldr r1, _020BF2E0 ; =NNS_G3dRS + orr r2, r2, #0x1 + str r2, [r5, #0x0] + ldr r3, [r1, #0x0] + mov r1, r0, lsr #0x5 + add r1, r3, r1, lsl #0x2 + and r2, r0, #0x1f + mov r6, #0x1 + mov r2, r6, lsl r2 + ldr r1, [r1, #0xc4] + ands r1, r2, r1 + beq _020BF148 + add r3, r3, #0xc4 + mov r2, r4, lsr #0x5 + ldr r1, [r3, r2, lsl #0x2] + and r0, r4, #0x1f + orr r0, r1, r6, lsl r0 + str r0, [r3, r2, lsl #0x2] + ldr r0, [r5, #0x0] + orr r0, r0, #0x18 + str r0, [r5, #0x0] + ldmia sp!, {r4-r8,pc} +_020BF148: + ldr r1, _020BF2E4 ; =NNS_G3dRSOnGlb + 0xE00 + mov r2, #0x18 + mla r6, r0, r2, r1 + mla r1, r4, r2, r1 + mov r0, r6 + bl MIi_CpuCopy32 + mov r0, r6 + add r1, r5, #0x10 + mov r2, #0x18 + bl MIi_CpuCopy32 + ldmia sp!, {r4-r8,pc} +_020BF174: + ldr r3, [r1, #0x0] + ldr r2, _020BF2E0 ; =NNS_G3dRS + str r3, [r5, #0x4] + ldr r3, [r1, #0x4] + mov r7, r0, lsr #0x5 + str r3, [r5, #0x8] + ldr r3, [r1, #0x8] + and r8, r0, #0x1f + str r3, [r5, #0xc] + ldr r6, [r2, #0x0] + mov r3, #0x1 + add r2, r6, r7, lsl #0x2 + mov r7, r3, lsl r8 + ldr r2, [r2, #0xc4] + ands r2, r7, r2 + beq _020BF200 + ldr r3, _020BF2E4 ; =NNS_G3dRSOnGlb + 0xE00 + mov r2, #0x18 + mov r0, r1 + mla r1, r4, r2, r3 + bl MIi_CpuCopy32 + ldr r0, _020BF2E0 ; =NNS_G3dRS + mov r2, r4, lsr #0x5 + ldr r1, [r0, #0x0] + and r0, r4, #0x1f + add r3, r1, #0xc4 + mov r1, #0x1 + mvn r0, r1, lsl r0 + ldr r1, [r3, r2, lsl #0x2] + and r0, r1, r0 + str r0, [r3, r2, lsl #0x2] + ldr r0, [r5, #0x0] + orr r0, r0, #0x18 + str r0, [r5, #0x0] + ldmia sp!, {r4-r8,pc} +_020BF200: + mov r2, #0x18 + mul r12, r0, r2 + and r7, r4, #0x1f + ldr r0, _020BF2E4 ; =NNS_G3dRSOnGlb + 0xE00 + add r6, r6, #0xc4 + mov lr, r4, lsr #0x5 + mvn r7, r3, lsl r7 + ldr r8, [r6, lr, lsl #0x2] + mul r3, r4, r2 + and r4, r8, r7 + str r4, [r6, lr, lsl #0x2] + ldr r7, [r1, #0x0] + ldr r4, [r0, r12] + ldr r6, _020BF2E8 ; =NNS_G3dRSOnGlb + 0xE04 + smull r8, r4, r7, r4 + mov r7, r8, lsr #0xc + orr r7, r7, r4, lsl #0x14 + str r7, [r0, r3] + ldr r8, [r1, #0x4] + ldr r4, [r6, r12] + ldr r7, _020BF2EC ; =NNS_G3dRSOnGlb + 0xE08 + smull lr, r4, r8, r4 + mov r8, lr, lsr #0xc + orr r8, r8, r4, lsl #0x14 + str r8, [r6, r3] + ldr r8, [r1, #0x8] + ldr r4, [r7, r12] + ldr r6, _020BF2F0 ; =NNS_G3dRSOnGlb + 0xE0C + smull lr, r4, r8, r4 + mov r8, lr, lsr #0xc + orr r8, r8, r4, lsl #0x14 + str r8, [r7, r3] + ldr r7, [r1, #0xc] + ldr r4, [r6, r12] + ldr lr, _020BF2F4 ; =NNS_G3dRSOnGlb + 0xE10 + smull r8, r4, r7, r4 + mov r7, r8, lsr #0xc + orr r7, r7, r4, lsl #0x14 + str r7, [r6, r3] + ldr r7, [r1, #0x10] + ldr r4, [lr, r12] + ldr r6, _020BF2F8 ; =NNS_G3dRSOnGlb + 0xE14 + smull r8, r4, r7, r4 + add r0, r0, r12 + mov r7, r8, lsr #0xc + orr r7, r7, r4, lsl #0x14 + str r7, [lr, r3] + ldr lr, [r1, #0x14] + ldr r4, [r6, r12] + add r1, r5, #0x10 + smull r5, r4, lr, r4 + mov r5, r5, lsr #0xc + orr r5, r5, r4, lsl #0x14 + str r5, [r6, r3] + bl MIi_CpuCopy32 + ldmia sp!, {r4-r8,pc} + .balign 4 +_020BF2E0: .word NNS_G3dRS +_020BF2E4: .word NNS_G3dRSOnGlb + 0xE00 +_020BF2E8: .word NNS_G3dRSOnGlb + 0xE04 +_020BF2EC: .word NNS_G3dRSOnGlb + 0xE08 +_020BF2F0: .word NNS_G3dRSOnGlb + 0xE0C +_020BF2F4: .word NNS_G3dRSOnGlb + 0xE10 +_020BF2F8: .word NNS_G3dRSOnGlb + 0xE14 + arm_func_end NNSi_G3dGetJointScaleSi3d + + arm_func_start NNSi_G3dSendJointSRTSi3d +NNSi_G3dSendJointSRTSi3d: ; 0x020BF2FC + stmdb sp!, {r4-r6,lr} + sub sp, sp, #0x10 + mov r6, r0 + ldr r0, [r6, #0x0] + mov r5, #0x0 + ands r4, r0, #0x18 + bne _020BF328 + add r1, r6, #0x1c + mov r0, #0x1b + mov r2, #0x3 + bl NNS_G3dGeBufferOP_N +_020BF328: + ldr r0, [r6, #0x0] + ands r0, r0, #0x4 + bne _020BF398 + cmp r4, #0x0 + movne r5, #0x1 + bne _020BF398 + ldr r2, [r6, #0x4c] + ldr r0, [r6, #0x10] + add r1, sp, #0x0 + smull r3, r0, r2, r0 + mov r2, r3, lsr #0xc + orr r2, r2, r0, lsl #0x14 + str r2, [sp, #0x0] + ldr r3, [r6, #0x50] + ldr r2, [r6, #0x14] + mov r0, #0x1c + smull r12, r2, r3, r2 + mov r3, r12, lsr #0xc + orr r3, r3, r2, lsl #0x14 + str r3, [sp, #0x4] + ldr r12, [r6, #0x54] + ldr r3, [r6, #0x18] + mov r2, #0x3 + smull lr, r3, r12, r3 + mov r12, lr, lsr #0xc + orr r12, r12, r3, lsl #0x14 + str r12, [sp, #0x8] + bl NNS_G3dGeBufferOP_N +_020BF398: + ldr r0, [r6, #0x0] + ands r0, r0, #0x2 + bne _020BF3D4 + cmp r5, #0x0 + beq _020BF3C0 + add r1, r6, #0x28 + mov r0, #0x19 + mov r2, #0xc + bl NNS_G3dGeBufferOP_N + b _020BF3EC +_020BF3C0: + add r1, r6, #0x28 + mov r0, #0x1a + mov r2, #0x9 + bl NNS_G3dGeBufferOP_N + b _020BF3EC +_020BF3D4: + cmp r5, #0x0 + beq _020BF3EC + add r1, r6, #0x4c + mov r0, #0x1c + mov r2, #0x3 + bl NNS_G3dGeBufferOP_N +_020BF3EC: + cmp r4, #0x0 + bne _020BF404 + add r1, r6, #0x10 + mov r0, #0x1b + mov r2, #0x3 + bl NNS_G3dGeBufferOP_N +_020BF404: + ldr r0, [r6, #0x0] + ands r0, r0, #0x1 + addne sp, sp, #0x10 + ldmneia sp!, {r4-r6,pc} + add r1, r6, #0x4 + mov r0, #0x1b + mov r2, #0x3 + bl NNS_G3dGeBufferOP_N + add sp, sp, #0x10 + ldmia sp!, {r4-r6,pc} + arm_func_end NNSi_G3dSendJointSRTSi3d diff --git a/arm9/asm/NNS_G3D_util.s b/arm9/asm/NNS_G3D_util.s new file mode 100644 index 00000000..932cf871 --- /dev/null +++ b/arm9/asm/NNS_G3D_util.s @@ -0,0 +1,349 @@ + .include "asm/macros.inc" + .include "global.inc" + + .section .text + + arm_func_start NNS_G3dWorldPosToScrPos +NNS_G3dWorldPosToScrPos: ; 0x020BB408 + stmdb sp!, {r4-r9,lr} + sub sp, sp, #0x1c + mov r5, r1 + mov r4, r2 + ldr r6, _020BB594 ; =NNS_G3dGlb + 0x8 + ldr r1, _020BB598 ; =NNS_G3dGlb + 0x4C + add r2, sp, #0x10 + bl MTX_MultVec43 + ldr r1, [sp, #0x14] + ldr r0, [r6, #0x1c] + ldr r2, [sp, #0x10] + smull r8, r7, r1, r0 + ldr r0, [r6, #0xc] + ldr r3, [sp, #0x18] + smlal r8, r7, r2, r0 + ldr r1, [r6, #0x2c] + ldr r0, [r6, #0x3c] + smlal r8, r7, r3, r1 + mov r1, r8, lsr #0xc + orr r1, r1, r7, lsl #0x14 + add r0, r1, r0 + bl FX_InvAsync + ldr r2, [sp, #0x14] + ldr r1, [r6, #0x10] + ldr r0, [r6, #0x14] + smull lr, r8, r2, r1 + smull r12, r9, r2, r0 + ldr r1, [sp, #0x10] + ldr r3, [r6, #0x0] + ldr r0, [sp, #0x18] + smlal lr, r8, r1, r3 + ldr r7, [r6, #0x20] + ldr r2, [r6, #0x30] + smlal lr, r8, r0, r7 + mov r3, lr, lsr #0xc + orr r3, r3, r8, lsl #0x14 + add r7, r3, r2 + ldr r3, [r6, #0x4] + ldr r8, [r6, #0x24] + smlal r12, r9, r1, r3 + smlal r12, r9, r0, r8 + mov r0, r12, lsr #0xc + ldr r2, [r6, #0x34] + orr r0, r0, r9, lsl #0x14 + add r6, r0, r2 + bl FX_GetDivResultFx64c + mov r2, r7, asr #0x1f + umull r9, lr, r0, r7 + mla lr, r0, r2, lr + mov r3, #0x80000000 + mla lr, r1, r7, lr + adds r9, r9, r3 + adc r2, lr, #0x0 + add r2, r2, #0x1000 + add r2, r2, r2, lsr #0x1f + mov r7, r2, asr #0x1 + umull lr, r2, r0, r6 + mov r12, r6, asr #0x1f + mla r2, r0, r12, r2 + mla r2, r1, r6, r2 + adds r3, lr, r3 + adc r0, r2, #0x0 + add r0, r0, #0x1000 + add r0, r0, r0, lsr #0x1f + mov r8, #0x0 + mov r6, r0, asr #0x1 + cmp r7, #0x0 + blt _020BB530 + cmp r6, #0x0 + blt _020BB530 + cmp r7, #0x1000 + bgt _020BB530 + cmp r6, #0x1000 + ble _020BB534 +_020BB530: + mvn r8, #0x0 +_020BB534: + add r0, sp, #0x0 + add r1, sp, #0x4 + add r2, sp, #0x8 + add r3, sp, #0xc + bl NNS_G3dGlbGetViewPort + ldr r2, [sp, #0x0] + ldr r0, [sp, #0x8] + ldr r12, [sp, #0xc] + sub r0, r0, r2 + mul r0, r7, r0 + add r1, r0, #0x800 + ldr r3, [sp, #0x4] + add r1, r2, r1, asr #0xc + sub r0, r12, r3 + mul r0, r6, r0 + str r1, [r5, #0x0] + ldr r1, [sp, #0x4] + add r0, r0, #0x800 + rsb r1, r1, #0xbf + sub r1, r1, r0, asr #0xc + mov r0, r8 + str r1, [r4, #0x0] + add sp, sp, #0x1c + ldmia sp!, {r4-r9,pc} + .balign 4 +_020BB594: .word NNS_G3dGlb + 0x8 +_020BB598: .word NNS_G3dGlb + 0x4C + arm_func_end NNS_G3dWorldPosToScrPos + + arm_func_start NNS_G3dResDefaultSetup +NNS_G3dResDefaultSetup: ; 0x020BB59C + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0x4 + mov r5, r0 + ldr r1, [r5, #0x0] + ldr r0, _020BB7C8 ; =0x30415642 + cmp r1, r0 + bhi _020BB5F4 + cmp r1, r0 + bhs _020BB7B0 + ldr r0, _020BB7CC ; =0x30414D42 + cmp r1, r0 + bhi _020BB5E4 + cmp r1, r0 + bhs _020BB7B0 + ldr r0, _020BB7D0 ; =0x30414342 + cmp r1, r0 + beq _020BB7B0 + b _020BB7BC +_020BB5E4: + ldr r0, _020BB7D4 ; =0x30415442 + cmp r1, r0 + beq _020BB7B0 + b _020BB7BC +_020BB5F4: + ldr r0, _020BB7D8 ; =0x30505442 + cmp r1, r0 + bhi _020BB618 + cmp r1, r0 + bhs _020BB7B0 + ldr r0, _020BB7DC ; =0x30444D42 + cmp r1, r0 + beq _020BB624 + b _020BB7BC +_020BB618: + ldr r0, _020BB7E0 ; =0x30585442 + cmp r1, r0 + bne _020BB7BC +_020BB624: + mov r11, #0x1 + mov r0, r5 + mov r9, r11 + mov r8, r11 + bl NNS_G3dGetTex + movs r4, r0 + beq _020BB77C + bl NNS_G3dTexGetRequiredSize + mov r7, r0 + mov r0, r4 + bl NNS_G3dTex4x4GetRequiredSize + mov r6, r0 + mov r0, r4 + bl NNS_G3dPlttGetRequiredSize + mov r10, r0 + cmp r7, #0x0 + beq _020BB68C + ldr r0, _020BB7E4 ; =NNS_GfdDefaultFuncAllocTexVram + mov r1, #0x0 + ldr r3, [r0, #0x0] + mov r0, r7 + mov r2, r1 + blx r3 + movs r7, r0 + moveq r11, #0x0 + b _020BB690 +_020BB68C: + mov r7, #0x0 +_020BB690: + cmp r6, #0x0 + beq _020BB6BC + ldr r1, _020BB7E4 ; =NNS_GfdDefaultFuncAllocTexVram + mov r0, r6 + ldr r3, [r1, #0x0] + mov r1, #0x1 + mov r2, #0x0 + blx r3 + movs r6, r0 + moveq r9, #0x0 + b _020BB6C0 +_020BB6BC: + mov r6, #0x0 +_020BB6C0: + cmp r10, #0x0 + beq _020BB6F0 + ldr r1, _020BB7E8 ; =NNS_GfdDefaultFuncAllocPlttVram + ldrh r2, [r4, #0x20] + ldr r3, [r1, #0x0] + mov r0, r10 + and r1, r2, #0x8000 + mov r2, #0x0 + blx r3 + movs r10, r0 + moveq r8, #0x0 + b _020BB6F4 +_020BB6F0: + mov r10, #0x0 +_020BB6F4: + cmp r11, #0x0 + beq _020BB70C + cmp r9, #0x0 + beq _020BB70C + cmp r8, #0x0 + bne _020BB748 +_020BB70C: + ldr r1, _020BB7EC ; =NNS_GfdDefaultFuncFreePlttVram + mov r0, r10 + ldr r1, [r1, #0x0] + blx r1 + ldr r1, _020BB7F0 ; =NNS_GfdDefaultFuncFreeTexVram + mov r0, r6 + ldr r1, [r1, #0x0] + blx r1 + ldr r1, _020BB7F0 ; =NNS_GfdDefaultFuncFreeTexVram + mov r0, r7 + ldr r1, [r1, #0x0] + blx r1 + add sp, sp, #0x4 + mov r0, #0x0 + ldmia sp!, {r4-r11,pc} +_020BB748: + mov r0, r4 + mov r1, r7 + mov r2, r6 + bl NNS_G3dTexSetTexKey + mov r0, r4 + mov r1, r10 + bl NNS_G3dPlttSetPlttKey + mov r0, r4 + mov r1, #0x1 + bl NNS_G3dTexLoad + mov r0, r4 + mov r1, #0x1 + bl NNS_G3dPlttLoad +_020BB77C: + ldr r1, [r5, #0x0] + ldr r0, _020BB7DC ; =0x30444D42 + cmp r1, r0 + bne _020BB7A4 + mov r0, r5 + bl NNS_G3dGetMdlSet + cmp r4, #0x0 + beq _020BB7A4 + mov r1, r4 + bl NNS_G3dBindMdlSet +_020BB7A4: + add sp, sp, #0x4 + mov r0, #0x1 + ldmia sp!, {r4-r11,pc} +_020BB7B0: + add sp, sp, #0x4 + mov r0, #0x1 + ldmia sp!, {r4-r11,pc} +_020BB7BC: + mov r0, #0x0 + add sp, sp, #0x4 + ldmia sp!, {r4-r11,pc} + .balign 4 +_020BB7C8: .word 0x30415642 +_020BB7CC: .word 0x30414D42 +_020BB7D0: .word 0x30414342 +_020BB7D4: .word 0x30415442 +_020BB7D8: .word 0x30505442 +_020BB7DC: .word 0x30444D42 +_020BB7E0: .word 0x30585442 +_020BB7E4: .word NNS_GfdDefaultFuncAllocTexVram +_020BB7E8: .word NNS_GfdDefaultFuncAllocPlttVram +_020BB7EC: .word NNS_GfdDefaultFuncFreePlttVram +_020BB7F0: .word NNS_GfdDefaultFuncFreeTexVram + arm_func_end NNS_G3dResDefaultSetup + + arm_func_start NNS_G3dInit +NNS_G3dInit: ; 0x020BB7F4 + stmdb sp!, {lr} + sub sp, sp, #0x4 + bl G3X_Init + bl NNS_G3dGlbInit + ldr r1, _020BB820 ; =0x04000600 + ldr r0, [r1, #0x0] + bic r0, r0, #0xc0000000 + orr r0, r0, #0x80000000 + str r0, [r1, #0x0] + add sp, sp, #0x4 + ldmia sp!, {pc} + .balign 4 +_020BB820: .word 0x04000600 + arm_func_end NNS_G3dInit + + arm_func_start NNS_G3dGetCurrentMtx +NNS_G3dGetCurrentMtx: ; 0x020BB824 + stmdb sp!, {r4-r6,lr} + sub sp, sp, #0x40 + mov r6, r0 + mov r5, r1 + bl NNS_G3dGeFlushBuffer + ldr r0, _020BB8B4 ; =0x04000440 + mov r2, #0x0 + ldr r1, _020BB8B8 ; =0x04000444 + str r2, [r0, #0x0] + ldr r0, _020BB8BC ; =0x04000454 + str r2, [r1, #0x0] + str r2, [r0, #0x0] + cmp r6, #0x0 + beq _020BB87C + add r4, sp, #0x0 +_020BB860: + mov r0, r4 + bl G3X_GetClipMtx + cmp r0, #0x0 + bne _020BB860 + add r0, sp, #0x0 + mov r1, r6 + bl MTX_Copy44To43_ +_020BB87C: + cmp r5, #0x0 + beq _020BB894 +_020BB884: + mov r0, r5 + bl G3X_GetVectorMtx + cmp r0, #0x0 + bne _020BB884 +_020BB894: + ldr r1, _020BB8C0 ; =0x04000448 + mov r2, #0x1 + ldr r0, _020BB8B4 ; =0x04000440 + str r2, [r1, #0x0] + mov r1, #0x2 + str r1, [r0, #0x0] + add sp, sp, #0x40 + ldmia sp!, {r4-r6,pc} + .balign 4 +_020BB8B4: .word 0x04000440 +_020BB8B8: .word 0x04000444 +_020BB8BC: .word 0x04000454 +_020BB8C0: .word 0x04000448 + arm_func_end NNS_G3dGetCurrentMtx diff --git a/arm9/asm/NNS_G3D_xsi.s b/arm9/asm/NNS_G3D_xsi.s new file mode 100644 index 00000000..63787926 --- /dev/null +++ b/arm9/asm/NNS_G3D_xsi.s @@ -0,0 +1,477 @@ + .include "asm/macros.inc" + .include "global.inc" + + .section .data + + .global calcTexMtx_ +calcTexMtx_: ; 0x021067F0 + .word texmtxCalc_flag_ + .word texmtxCalc_flagS_ + .word texmtxCalc_flagR_ + .word texmtxCalc_flagRS_ + .word texmtxCalc_flagT_ + .word texmtxCalc_flagTS_ + .word texmtxCalc_flagTR_ + .word texmtxCalc_flagTRS_ + + .section .text + + arm_func_start NNSi_G3dSendTexSRTXsi +NNSi_G3dSendTexSRTXsi: ; 0x020BFA9C + stmdb sp!, {r4,lr} + sub sp, sp, #0x50 + mov r4, r0 + ldr r0, [r4, #0x0] + mov r3, #0x3 + ands r0, r0, #0x8 + ldrne r0, _020BFC1C ; =0x00101610 + mov r2, #0x2 + strne r0, [sp, #0x0] + ldreq r0, _020BFC20 ; =0x00101810 + mov r1, #0x1000 + streq r0, [sp, #0x0] + mov r0, #0x0 + str r3, [sp, #0x4] + str r2, [sp, #0x48] + str r1, [sp, #0x44] + str r0, [sp, #0x40] + str r0, [sp, #0x34] + str r0, [sp, #0x30] + str r0, [sp, #0x2c] + str r0, [sp, #0x28] + str r0, [sp, #0x24] + str r0, [sp, #0x20] + str r0, [sp, #0x14] + str r0, [sp, #0x10] + ldr r0, [r4, #0x0] + ands r0, r0, #0x1 + strne r1, [r4, #0x1c] + ldrne r0, [r4, #0x1c] + strne r0, [r4, #0x18] + ldr r0, [r4, #0x0] + ands r0, r0, #0x2 + movne r0, #0x1000 + strneh r0, [r4, #0x22] + movne r0, #0x0 + strneh r0, [r4, #0x20] + ldr r0, [r4, #0x0] + ands r0, r0, #0x4 + movne r0, #0x0 + strne r0, [r4, #0x28] + ldrne r0, [r4, #0x28] + strne r0, [r4, #0x24] + ldr r1, [r4, #0x0] + ldr r0, _020BFC24 ; =calcTexMtx_ + and r1, r1, #0x7 + ldr r2, [r0, r1, lsl #0x2] + add r0, sp, #0x8 + mov r1, r4 + blx r2 + ldr r3, [r4, #0x30] + cmp r3, #0x1000 + beq _020BFBB0 + ldr r0, [sp, #0x8] + ldr r1, [sp, #0xc] + smull r2, r0, r3, r0 + mov r2, r2, lsr #0xc + orr r2, r2, r0, lsl #0x14 + str r2, [sp, #0x8] + ldr r2, [r4, #0x30] + ldr r0, [sp, #0x38] + smull r3, r1, r2, r1 + mov r2, r3, lsr #0xc + orr r2, r2, r1, lsl #0x14 + str r2, [sp, #0xc] + ldr r1, [r4, #0x30] + smull r2, r0, r1, r0 + mov r1, r2, lsr #0xc + orr r1, r1, r0, lsl #0x14 + str r1, [sp, #0x38] +_020BFBB0: + ldr r3, [r4, #0x34] + cmp r3, #0x1000 + beq _020BFC00 + ldr r0, [sp, #0x18] + ldr r1, [sp, #0x1c] + smull r2, r0, r3, r0 + mov r2, r2, lsr #0xc + orr r2, r2, r0, lsl #0x14 + str r2, [sp, #0x18] + ldr r2, [r4, #0x34] + ldr r0, [sp, #0x3c] + smull r3, r1, r2, r1 + mov r2, r3, lsr #0xc + orr r2, r2, r1, lsl #0x14 + str r2, [sp, #0x1c] + ldr r1, [r4, #0x34] + smull r2, r0, r1, r0 + mov r1, r2, lsr #0xc + orr r1, r1, r0, lsl #0x14 + str r1, [sp, #0x3c] +_020BFC00: + add r1, sp, #0x0 + ldr r0, [sp, #0x0] + add r1, r1, #0x4 + mov r2, #0x12 + bl NNS_G3dGeBufferOP_N + add sp, sp, #0x50 + ldmia sp!, {r4,pc} + .balign 4 +_020BFC1C: .word 0x00101610 +_020BFC20: .word 0x00101810 +_020BFC24: .word calcTexMtx_ + arm_func_end NNSi_G3dSendTexSRTXsi + + arm_func_start texmtxCalc_flagTRS_ +texmtxCalc_flagTRS_: ; 0x020BFC28 + mov r2, #0x1000 + str r2, [r0, #0x0] + mov r1, #0x0 + str r1, [r0, #0x4] + str r1, [r0, #0x10] + str r2, [r0, #0x14] + str r1, [r0, #0x30] + str r1, [r0, #0x34] + bx lr + arm_func_end texmtxCalc_flagTRS_ + + arm_func_start texmtxCalc_flagTR_ +texmtxCalc_flagTR_: ; 0x020BFC4C + ldr r2, [r1, #0x18] + mov r3, #0x0 + str r2, [r0, #0x0] + ldr r2, [r1, #0x1c] + str r2, [r0, #0x14] + str r3, [r0, #0x4] + str r3, [r0, #0x30] + ldrh r2, [r1, #0x2e] + ldr r1, [r1, #0x1c] + rsb r2, r2, #0x0 + sub r1, r1, #0x1000 + mul r1, r2, r1 + mov r1, r1, lsl #0x4 + str r1, [r0, #0x34] + str r3, [r0, #0x10] + bx lr + arm_func_end texmtxCalc_flagTR_ + + arm_func_start texmtxCalc_flagTS_ +texmtxCalc_flagTS_: ; 0x020BFC8C + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + mov r5, r1 + ldrh r2, [r5, #0x2c] + ldrh r1, [r5, #0x2e] + mov r6, r0 + mov r4, r2, lsl #0xc + mov r7, r1, lsl #0xc + mov r0, r7 + mov r1, r4 + bl FX_DivAsync + ldrsh r0, [r5, #0x22] + str r0, [r6, #0x0] + ldrsh r0, [r5, #0x22] + str r0, [r6, #0x14] + bl FX_GetDivResult + ldrsh r2, [r5, #0x20] + mov r1, r7 + mul r0, r2, r0 + mov r2, r0, asr #0xc + mov r0, r4 + str r2, [r6, #0x4] + bl FX_DivAsync + ldrh r1, [r5, #0x2c] + ldrsh r0, [r5, #0x20] + mul r0, r1, r0 + mov r0, r0, lsl #0x4 + str r0, [r6, #0x30] + ldrh r1, [r5, #0x2e] + ldrsh r0, [r5, #0x22] + rsb r1, r1, #0x0 + sub r0, r0, #0x1000 + mul r0, r1, r0 + mov r0, r0, lsl #0x4 + str r0, [r6, #0x34] + bl FX_GetDivResult + ldrsh r1, [r5, #0x20] + rsb r1, r1, #0x0 + mul r0, r1, r0 + mov r0, r0, asr #0xc + str r0, [r6, #0x10] + add sp, sp, #0x4 + ldmia sp!, {r4-r7,pc} + arm_func_end texmtxCalc_flagTS_ + + arm_func_start texmtxCalc_flagT_ +texmtxCalc_flagT_: ; 0x020BFD38 + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0x4 + mov r9, r1 + ldrh r2, [r9, #0x2c] + ldrh r1, [r9, #0x2e] + mov r10, r0 + mov r8, r2, lsl #0xc + mov r11, r1, lsl #0xc + mov r0, r11 + mov r1, r8 + bl FX_DivAsync + ldrsh r3, [r9, #0x22] + ldr r0, [r9, #0x18] + ldrsh r7, [r9, #0x20] + ldr r5, [r9, #0x1c] + smull r2, r1, r0, r3 + mov r2, r2, lsr #0xc + orr r2, r2, r1, lsl #0x14 + str r2, [r10, #0x0] + smull r2, r1, r5, r3 + mov r4, r2, lsr #0xc + orr r4, r4, r1, lsl #0x14 + smull r2, r1, r0, r7 + mov r6, r2, lsr #0xc + orr r6, r6, r1, lsl #0x14 + str r4, [r10, #0x14] + bl FX_GetDivResult + smull r2, r1, r5, r7 + mov r2, r2, lsr #0xc + orr r2, r2, r1, lsl #0x14 + mul r0, r2, r0 + mov r0, r0, asr #0xc + str r0, [r10, #0x4] + mov r0, r8 + mov r1, r11 + bl FX_DivAsync + sub r0, r4, #0x1000 + ldrh r1, [r9, #0x2c] + mul r2, r1, r6 + mov r1, r2, lsl #0x4 + str r1, [r10, #0x30] + ldrh r1, [r9, #0x2e] + rsb r1, r1, #0x0 + mul r0, r1, r0 + mov r0, r0, lsl #0x4 + str r0, [r10, #0x34] + bl FX_GetDivResult + rsb r1, r6, #0x0 + mul r0, r1, r0 + mov r0, r0, asr #0xc + str r0, [r10, #0x10] + add sp, sp, #0x4 + ldmia sp!, {r4-r11,pc} + arm_func_end texmtxCalc_flagT_ + + arm_func_start texmtxCalc_flagRS_ +texmtxCalc_flagRS_: ; 0x020BFE0C + stmdb sp!, {lr} + sub sp, sp, #0x4 + mov r2, #0x1000 + str r2, [r0, #0x0] + str r2, [r0, #0x14] + mov lr, #0x0 + str lr, [r0, #0x4] + ldr r2, [r1, #0x24] + ldrh r3, [r1, #0x2c] + rsb r2, r2, #0x0 + ldr r12, [r1, #0x28] + mul r2, r3, r2 + mov r2, r2, lsl #0x4 + str r2, [r0, #0x30] + ldrh r1, [r1, #0x2e] + rsb r2, r12, #0x0 + rsb r1, r1, #0x0 + mul r2, r1, r2 + mov r1, r2, lsl #0x4 + str r1, [r0, #0x34] + str lr, [r0, #0x10] + add sp, sp, #0x4 + ldmia sp!, {pc} + arm_func_end texmtxCalc_flagRS_ + + arm_func_start texmtxCalc_flagR_ +texmtxCalc_flagR_: ; 0x020BFE68 + stmdb sp!, {r4,lr} + ldr r3, [r1, #0x18] + mov r2, #0x0 + str r3, [r0, #0x0] + ldr r3, [r1, #0x1c] + str r3, [r0, #0x14] + str r2, [r0, #0x4] + ldr r12, [r1, #0x24] + ldr r3, [r1, #0x18] + ldr r4, [r1, #0x28] + smull lr, r3, r12, r3 + mov r12, lr, lsr #0xc + orr r12, r12, r3, lsl #0x14 + ldrh lr, [r1, #0x2c] + rsb r3, r12, #0x0 + ldr r12, [r1, #0x1c] + rsb r4, r4, #0x0 + mul r3, lr, r3 + smull lr, r12, r4, r12 + mov r3, r3, lsl #0x4 + str r3, [r0, #0x30] + mov r4, lr, lsr #0xc + ldrh r3, [r1, #0x2e] + ldr r1, [r1, #0x1c] + orr r4, r4, r12, lsl #0x14 + add r1, r1, r4 + rsb r3, r3, #0x0 + sub r1, r1, #0x1000 + mul r1, r3, r1 + mov r1, r1, lsl #0x4 + str r1, [r0, #0x34] + str r2, [r0, #0x10] + ldmia sp!, {r4,pc} + arm_func_end texmtxCalc_flagR_ + + arm_func_start texmtxCalc_flagS_ +texmtxCalc_flagS_: ; 0x020BFEEC + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + mov r5, r1 + ldrh r2, [r5, #0x2c] + ldrh r1, [r5, #0x2e] + mov r6, r0 + mov r4, r2, lsl #0xc + mov r7, r1, lsl #0xc + mov r0, r7 + mov r1, r4 + bl FX_DivAsync + ldrsh r0, [r5, #0x22] + str r0, [r6, #0x0] + ldrsh r0, [r5, #0x22] + str r0, [r6, #0x14] + bl FX_GetDivResult + ldrsh r2, [r5, #0x20] + mov r1, r7 + mul r0, r2, r0 + mov r2, r0, asr #0xc + mov r0, r4 + str r2, [r6, #0x4] + bl FX_DivAsync + ldrsh lr, [r5, #0x20] + ldr r4, [r5, #0x28] + ldrsh r0, [r5, #0x22] + ldr r12, [r5, #0x24] + smull r3, r2, r4, lr + smlal r3, r2, r12, r0 + smull r1, r0, r4, r0 + mov r3, r3, lsr #0xc + orr r3, r3, r2, lsl #0x14 + sub r4, lr, r3 + smull r3, r2, r12, lr + subs r1, r3, r1 + sbc r0, r2, r0 + ldrh r2, [r5, #0x2c] + mov r1, r1, lsr #0xc + orr r1, r1, r0, lsl #0x14 + mul r0, r2, r4 + mov r0, r0, lsl #0x4 + str r0, [r6, #0x30] + ldrsh r0, [r5, #0x22] + ldrh r2, [r5, #0x2e] + add r0, r0, r1 + rsb r1, r2, #0x0 + sub r0, r0, #0x1000 + mul r0, r1, r0 + mov r0, r0, lsl #0x4 + str r0, [r6, #0x34] + bl FX_GetDivResult + ldrsh r1, [r5, #0x20] + rsb r1, r1, #0x0 + mul r0, r1, r0 + mov r0, r0, asr #0xc + str r0, [r6, #0x10] + add sp, sp, #0x4 + ldmia sp!, {r4-r7,pc} + arm_func_end texmtxCalc_flagS_ + + arm_func_start texmtxCalc_flag_ +texmtxCalc_flag_: ; 0x020BFFD4 + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0x4 + mov r6, r1 + ldrh r2, [r6, #0x2c] + ldrh r1, [r6, #0x2e] + mov r7, r0 + mov r10, r2, lsl #0xc + mov r11, r1, lsl #0xc + mov r0, r11 + mov r1, r10 + bl FX_DivAsync + ldrsh r3, [r6, #0x22] + ldr r0, [r6, #0x18] + ldrsh r9, [r6, #0x20] + smull r2, r1, r0, r3 + mov r2, r2, lsr #0xc + ldr r8, [r6, #0x1c] + orr r2, r2, r1, lsl #0x14 + str r2, [r7, #0x0] + smull r2, r1, r8, r3 + mov r4, r2, lsr #0xc + orr r4, r4, r1, lsl #0x14 + smull r2, r1, r0, r9 + mov r5, r2, lsr #0xc + orr r5, r5, r1, lsl #0x14 + str r4, [r7, #0x14] + bl FX_GetDivResult + smull r2, r1, r8, r9 + mov r2, r2, lsr #0xc + orr r2, r2, r1, lsl #0x14 + mul r0, r2, r0 + mov r0, r0, asr #0xc + str r0, [r7, #0x4] + mov r0, r10 + mov r1, r11 + bl FX_DivAsync + ldr lr, [r6, #0x1c] + ldrsh r2, [r6, #0x20] + ldr r8, [r6, #0x24] + ldr r0, [r6, #0x28] + smull r10, r9, r8, r2 + ldrh r1, [r6, #0x2c] + smull r3, r2, r0, r2 + ldrsh r12, [r6, #0x22] + str r1, [sp, #0x0] + mov r11, lr, asr #0x1f + smlal r3, r2, r8, r12 + smull r8, r12, r0, r12 + subs r8, r10, r8 + sbc r0, r9, r12 + mov r9, r8, lsr #0xc + mov r12, r3, lsr #0xc + orr r9, r9, r0, lsl #0x14 + mov r3, r2, asr #0xc + orr r12, r12, r2, lsl #0x14 + umull r10, r2, r9, lr + mla r2, r9, r11, r2 + mov r8, r0, asr #0xc + mla r2, r8, lr, r2 + ldr r1, [r6, #0x18] + mov r8, r10, lsr #0xc + orr r8, r8, r2, lsl #0x14 + add r2, r4, r8 + mov r0, r1, asr #0x1f + umull r8, r4, r12, r1 + mla r4, r12, r0, r4 + mla r4, r3, r1, r4 + mov r0, r8, lsr #0xc + orr r0, r0, r4, lsl #0x14 + sub r1, r5, r0 + ldr r0, [sp, #0x0] + sub r2, r2, #0x1000 + mul r1, r0, r1 + mov r0, r1, lsl #0x4 + str r0, [r7, #0x30] + ldrh r0, [r6, #0x2e] + rsb r0, r0, #0x0 + mul r1, r0, r2 + mov r0, r1, lsl #0x4 + str r0, [r7, #0x34] + bl FX_GetDivResult + rsb r1, r5, #0x0 + mul r0, r1, r0 + mov r0, r0, asr #0xc + str r0, [r7, #0x10] + add sp, sp, #0x4 + ldmia sp!, {r4-r11,pc} + arm_func_end texmtxCalc_flag_ diff --git a/arm9/asm/NNS_GFD_gfd_frameplttvr.s b/arm9/asm/NNS_GFD_gfd_frameplttvr.s new file mode 100644 index 00000000..63d32aec --- /dev/null +++ b/arm9/asm/NNS_GFD_gfd_frameplttvr.s @@ -0,0 +1,165 @@ + .include "asm/macros.inc" + .include "global.inc" + + .section .bss + + .global s_managerState_ +s_managerState_: ; 0x021CCD4C + .space 0xc + + .section .text + + arm_func_start NNS_GfdResetFrmPlttVramState +NNS_GfdResetFrmPlttVramState: ; 0x020AEC60 + ldr r0, _020AEC78 ; =s_managerState_ + mov r2, #0x0 + ldr r1, [r0, #0x8] + str r2, [r0, #0x0] + str r1, [r0, #0x4] + bx lr + .balign 4 +_020AEC78: .word s_managerState_ + arm_func_end NNS_GfdResetFrmPlttVramState + + arm_func_start NNS_GfdSetFrmPlttVramState +NNS_GfdSetFrmPlttVramState: ; 0x020AEC7C + ldr r2, [r0, #0x0] + ldr r1, _020AEC94 ; =s_managerState_ + str r2, [r1, #0x0] + ldr r0, [r0, #0x4] + str r0, [r1, #0x4] + bx lr + .balign 4 +_020AEC94: .word s_managerState_ + arm_func_end NNS_GfdSetFrmPlttVramState + + arm_func_start NNS_GfdGetFrmPlttVramState +NNS_GfdGetFrmPlttVramState: ; 0x020AEC98 + ldr r1, _020AECB0 ; =s_managerState_ + ldr r2, [r1, #0x0] + str r2, [r0, #0x0] + ldr r1, [r1, #0x4] + str r1, [r0, #0x4] + bx lr + .balign 4 +_020AECB0: .word s_managerState_ + arm_func_end NNS_GfdGetFrmPlttVramState + + arm_func_start NNS_GfdFreeFrmPlttVram +NNS_GfdFreeFrmPlttVram: ; 0x020AECB4 + mov r0, #0x0 + bx lr + arm_func_end NNS_GfdFreeFrmPlttVram + + arm_func_start NNS_GfdAllocFrmPlttVram +NNS_GfdAllocFrmPlttVram: ; 0x020AECBC + stmdb sp!, {r4,lr} + cmp r0, #0x0 + moveq r0, #0x8 + addne r0, r0, #0x7 + ldr ip, _020AEDE8 ; =0x0007FFF8 + bicne r0, r0, #0x7 + cmp r0, r12 + mov r3, #0x0 + movcs r0, #0x0 + ldmcsia sp!, {r4,pc} + cmp r2, #0x1 + bne _020AED64 + ldr r2, _020AEDEC ; =s_managerState_ + cmp r1, #0x0 + ldr r12, [r2, #0x0] + andne r2, r12, #0x7 + rsbne r2, r2, #0x8 + andne r4, r2, #0x7 + andeq r2, r12, #0xf + rsbeq r2, r2, #0x10 + andeq r4, r2, #0xf + ldr r2, _020AEDEC ; =s_managerState_ + add lr, r0, r4 + ldr r2, [r2, #0x4] + sub r2, r2, r12 + cmp r2, lr + blo _020AED5C + cmp r1, #0x0 + add r1, r12, lr + beq _020AED40 + cmp r1, #0x10000 + movhi r12, #0x0 + bhi _020AEDCC +_020AED40: + ldr r1, _020AEDEC ; =s_managerState_ + add r3, r12, r4 + ldr r2, [r1, #0x0] + mov r12, #0x1 + add r2, r2, lr + str r2, [r1, #0x0] + b _020AEDCC +_020AED5C: + mov r12, #0x0 + b _020AEDCC +_020AED64: + ldr r2, _020AEDEC ; =s_managerState_ + ldr r12, [r2, #0x4] + cmp r12, r0 + blo _020AEDC8 + sub r2, r12, r0 + cmp r1, #0x0 + andne r4, r2, #0x7 + andeq r4, r2, #0xf + ldr r2, _020AEDEC ; =s_managerState_ + add lr, r0, r4 + ldr r2, [r2, #0x0] + sub r2, r12, r2 + cmp r2, lr + blo _020AEDC8 + cmp r1, #0x0 + beq _020AEDB0 + cmp r12, #0x10000 + movhi r12, #0x0 + bhi _020AEDCC +_020AEDB0: + ldr r1, _020AEDEC ; =s_managerState_ + mov r12, #0x1 + ldr r2, [r1, #0x4] + sub r3, r2, lr + str r3, [r1, #0x4] + b _020AEDCC +_020AEDC8: + mov r12, #0x0 +_020AEDCC: + cmp r12, #0x0 + ldrne r1, _020AEDF0 ; =0x0000FFFF + movne r2, r0, lsr #0x3 + andne r0, r1, r3, lsr #0x3 + orrne r0, r0, r2, lsl #0x10 + moveq r0, #0x0 + ldmia sp!, {r4,pc} + .balign 4 +_020AEDE8: .word 0x0007FFF8 +_020AEDEC: .word s_managerState_ +_020AEDF0: .word 0x0000FFFF + arm_func_end NNS_GfdAllocFrmPlttVram + + arm_func_start NNS_GfdInitFrmPlttVramManager +NNS_GfdInitFrmPlttVramManager: ; 0x020AEDF4 + stmdb sp!, {r4,lr} + ldr r2, _020AEE2C ; =s_managerState_ + mov r4, r1 + str r0, [r2, #0x8] + bl NNS_GfdResetFrmPlttVramState + cmp r4, #0x0 + ldmeqia sp!, {r4,pc} + ldr r3, _020AEE30 ; =NNS_GfdAllocFrmPlttVram + ldr r1, _020AEE34 ; =NNS_GfdDefaultFuncAllocPlttVram + ldr r2, _020AEE38 ; =NNS_GfdFreeFrmPlttVram + ldr r0, _020AEE3C ; =NNS_GfdDefaultFuncFreePlttVram + str r3, [r1, #0x0] + str r2, [r0, #0x0] + ldmia sp!, {r4,pc} + .balign 4 +_020AEE2C: .word s_managerState_ +_020AEE30: .word NNS_GfdAllocFrmPlttVram +_020AEE34: .word NNS_GfdDefaultFuncAllocPlttVram +_020AEE38: .word NNS_GfdFreeFrmPlttVram +_020AEE3C: .word NNS_GfdDefaultFuncFreePlttVram + arm_func_end NNS_GfdInitFrmPlttVramManager diff --git a/arm9/asm/NNS_GFD_gfd_frametexvra.s b/arm9/asm/NNS_GFD_gfd_frametexvra.s new file mode 100644 index 00000000..6cc4da87 --- /dev/null +++ b/arm9/asm/NNS_GFD_gfd_frametexvra.s @@ -0,0 +1,316 @@ + .include "asm/macros.inc" + .include "global.inc" + + .section .data + + .global tex4x4SearchArray_ +tex4x4SearchArray_: ; 0x021064C8 + .word vramRegions_ + .word vramRegions_ + 0x48 + + .global texNrmSearchArray_ +texNrmSearchArray_: ; 0x021064D0 + .word vramRegions_ + 0x60 + .word vramRegions_ + 0x48 + .word vramRegions_ + .word vramRegions_ + 0x30 + .word vramRegions_ + 0x18 + + .global vramRegions_ +vramRegions_: ; 0x021064E4 + .byte 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00 + .byte 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00 + .byte 0x01, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x02, 0x00 + .byte 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00 + .byte 0x02, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x03, 0x00 + .byte 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x03, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x04, 0x00 + .byte 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x04, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x06, 0x00 + + .section .bss + + .global frmExVramMan_ +frmExVramMan_: ; 0x021CCD48 + .space 0x4 + + .section .text + + arm_func_start NNS_GfdSetFrmTexVramState +NNS_GfdSetFrmTexVramState: ; 0x020AE8CC + stmdb sp!, {lr} + sub sp, sp, #0x4 + mov lr, #0x0 + ldr r3, _020AE914 ; =vramRegions_ + mov r12, lr + mov r2, #0x1 +_020AE8E4: + ldr r1, [r0, r12, lsl #0x2] + add lr, lr, #0x1 + str r1, [r3, #0x0] + ldr r1, [r0, r2, lsl #0x2] + cmp lr, #0x5 + str r1, [r3, #0x4] + add r12, r12, #0x2 + add r3, r3, #0x18 + add r2, r2, #0x2 + blt _020AE8E4 + add sp, sp, #0x4 + ldmia sp!, {pc} + .balign 4 +_020AE914: .word vramRegions_ + arm_func_end NNS_GfdSetFrmTexVramState + + arm_func_start NNS_GfdGetFrmTexVramState +NNS_GfdGetFrmTexVramState: ; 0x020AE918 + stmdb sp!, {lr} + sub sp, sp, #0x4 + mov lr, #0x0 + ldr ip, _020AE960 ; =vramRegions_ + mov r3, lr + mov r2, #0x1 +_020AE930: + ldr r1, [r12, #0x0] + add lr, lr, #0x1 + str r1, [r0, r3, lsl #0x2] + ldr r1, [r12, #0x4] + cmp lr, #0x5 + str r1, [r0, r2, lsl #0x2] + add r12, r12, #0x18 + add r3, r3, #0x2 + add r2, r2, #0x2 + blt _020AE930 + add sp, sp, #0x4 + ldmia sp!, {pc} + .balign 4 +_020AE960: .word vramRegions_ + arm_func_end NNS_GfdGetFrmTexVramState + + arm_func_start NNS_GfdFreeFrmTexVram +NNS_GfdFreeFrmTexVram: ; 0x020AE964 + mov r0, #0x0 + bx lr + arm_func_end NNS_GfdFreeFrmTexVram + + arm_func_start NNS_GfdAllocFrmTexVram +NNS_GfdAllocFrmTexVram: ; 0x020AE96C + stmdb sp!, {r4-r10,lr} + cmp r0, #0x0 + moveq r7, #0x10 + addne r0, r0, #0xf + bicne r7, r0, #0xf + ldr r0, _020AEADC ; =0x0007FFF0 + cmp r7, r0 + movcs r0, #0x0 + ldmcsia sp!, {r4-r10,pc} + cmp r1, #0x0 + beq _020AEA5C + mov lr, r7, lsr #0x1 + mov r6, #0x0 + ldr r2, _020AEAE0 ; =vramRegions_ + 0x30 + ldr r3, _020AEAE4 ; =vramRegions_ + 0x18 + ldr ip, _020AEAE8 ; =tex4x4SearchArray_ + mov r0, r6 +_020AE9B0: + ldr r5, [r12, r6, lsl #0x2] + ldr r4, [r5, #0x8] + cmp r4, #0x0 + beq _020AEA48 + ldr r9, [r5, #0x4] + ldr r4, [r5, #0x0] + sub r4, r9, r4 + cmp r4, r7 + blo _020AEA48 + ldrh r4, [r5, #0x10] + cmp r4, #0x0 + beq _020AE9EC + cmp r4, #0x3 + beq _020AE9F4 + b _020AE9FC +_020AE9EC: + mov r4, r3 + b _020AEA00 +_020AE9F4: + mov r4, r2 + b _020AEA00 +_020AE9FC: + mov r4, r0 +_020AEA00: + ldr r9, [r4, #0x8] + cmp r9, #0x0 + beq _020AEA48 + ldr r10, [r4, #0x4] + ldr r9, [r4, #0x0] + sub r9, r10, r9 + cmp r9, lr + blo _020AEA48 + ldr r3, [r5, #0x0] + mov r0, #0x1 + add r2, r3, r7 + str r2, [r5, #0x0] + ldr r2, [r4, #0x0] + add r2, r2, lr + str r2, [r4, #0x0] + ldr r2, [r5, #0x14] + add r8, r3, r2 + b _020AEAB8 +_020AEA48: + add r6, r6, #0x1 + cmp r6, #0x2 + blt _020AE9B0 + mov r0, #0x0 + b _020AEAB8 +_020AEA5C: + ldr r3, _020AEAEC ; =texNrmSearchArray_ + mov r5, #0x0 +_020AEA64: + ldr r4, [r3, r5, lsl #0x2] + ldr r0, [r4, #0x8] + cmp r0, #0x0 + beq _020AEAA8 + ldr r2, [r4, #0x4] + ldr r0, [r4, #0x0] + sub r0, r2, r0 + cmp r0, r7 + blo _020AEAA8 + ldr r2, [r4, #0x4] + mov r0, #0x1 + sub r2, r2, r7 + str r2, [r4, #0x4] + ldr r3, [r4, #0x4] + ldr r2, [r4, #0x14] + add r8, r3, r2 + b _020AEAB8 +_020AEAA8: + add r5, r5, #0x1 + cmp r5, #0x5 + blt _020AEA64 + mov r0, #0x0 +_020AEAB8: + cmp r0, #0x0 + moveq r0, #0x0 + ldmeqia sp!, {r4-r10,pc} + ldr r0, _020AEAF0 ; =0x0000FFFF + mov r2, r7, lsr #0x4 + and r0, r0, r8, lsr #0x3 + orr r0, r0, r2, lsl #0x10 + orr r0, r0, r1, lsl #0x1f + ldmia sp!, {r4-r10,pc} + .balign 4 +_020AEADC: .word 0x0007FFF0 +_020AEAE0: .word vramRegions_ + 0x30 +_020AEAE4: .word vramRegions_ + 0x18 +_020AEAE8: .word tex4x4SearchArray_ +_020AEAEC: .word texNrmSearchArray_ +_020AEAF0: .word 0x0000FFFF + arm_func_end NNS_GfdAllocFrmTexVram + + arm_func_start NNS_GfdResetFrmTexVramState +NNS_GfdResetFrmTexVramState: ; 0x020AEAF4 + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + ldr r0, _020AEB68 ; =frmExVramMan_ + mov r6, #0x0 + ldrh r7, [r0, #0x0] + ldr r5, _020AEB6C ; =vramRegions_ + mov lr, r6 + cmp r7, #0x1 + addhi r7, r7, #0x1 + mov r1, r6 + mov r3, r6 + mov r4, #0x1 + mov r0, #0x20000 + mov r2, #0x10000 +_020AEB2C: + cmp r6, r7 + strlt r4, [r5, #0x8] + strge lr, [r5, #0x8] + ldr r12, [r5, #0xc] + add r6, r6, #0x1 + cmp r12, #0x0 + strne r3, [r5, #0x0] + strne r2, [r5, #0x4] + streq r1, [r5, #0x0] + streq r0, [r5, #0x4] + cmp r6, #0x5 + add r5, r5, #0x18 + blt _020AEB2C + add sp, sp, #0x4 + ldmia sp!, {r4-r7,pc} + .balign 4 +_020AEB68: .word frmExVramMan_ +_020AEB6C: .word vramRegions_ + arm_func_end NNS_GfdResetFrmTexVramState + + arm_func_start NNS_GfdInitFrmTexVramManager +NNS_GfdInitFrmTexVramManager: ; 0x020AEB70 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r5, r0 + mov r4, r1 + cmp r5, #0x2 + bhi _020AEBA8 + mov r12, #0x1 + mov r0, #0x4 + mov r1, #0x3 + mov r2, #0x2 + mov r3, #0x0 + str r12, [sp, #0x0] + bl NNSi_GfdSetTexNrmSearchArray + b _020AEBC4 +_020AEBA8: + mov r12, #0x1 + mov r0, #0x4 + mov r1, #0x3 + mov r2, #0x0 + mov r3, #0x2 + str r12, [sp, #0x0] + bl NNSi_GfdSetTexNrmSearchArray +_020AEBC4: + ldr r0, _020AEBFC ; =frmExVramMan_ + strh r5, [r0, #0x0] + bl NNS_GfdResetFrmTexVramState + cmp r4, #0x0 + addeq sp, sp, #0x4 + ldmeqia sp!, {r4-r5,pc} + ldr r3, _020AEC00 ; =NNS_GfdAllocFrmTexVram + ldr r1, _020AEC04 ; =NNS_GfdDefaultFuncAllocTexVram + ldr r2, _020AEC08 ; =NNS_GfdFreeFrmTexVram + ldr r0, _020AEC0C ; =NNS_GfdDefaultFuncFreeTexVram + str r3, [r1, #0x0] + str r2, [r0, #0x0] + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + .balign 4 +_020AEBFC: .word frmExVramMan_ +_020AEC00: .word NNS_GfdAllocFrmTexVram +_020AEC04: .word NNS_GfdDefaultFuncAllocTexVram +_020AEC08: .word NNS_GfdFreeFrmTexVram +_020AEC0C: .word NNS_GfdDefaultFuncFreeTexVram + arm_func_end NNS_GfdInitFrmTexVramManager + + arm_func_start NNSi_GfdSetTexNrmSearchArray +NNSi_GfdSetTexNrmSearchArray: ; 0x020AEC10 + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + ldr lr, [sp, #0x18] + ldr r6, _020AEC58 ; =vramRegions_ + mov r12, #0x18 + mla r7, r0, r12, r6 + ldr r0, _020AEC5C ; =texNrmSearchArray_ + mla r5, r1, r12, r6 + mla r4, r2, r12, r6 + mla r2, r3, r12, r6 + mla r1, lr, r12, r6 + str r7, [r0, #0x0] + str r5, [r0, #0x4] + str r4, [r0, #0x8] + str r2, [r0, #0xc] + str r1, [r0, #0x10] + add sp, sp, #0x4 + ldmia sp!, {r4-r7,pc} + .balign 4 +_020AEC58: .word vramRegions_ +_020AEC5C: .word texNrmSearchArray_ + arm_func_end NNSi_GfdSetTexNrmSearchArray diff --git a/arm9/asm/NNS_GFD_gfd_linkedlistp.s b/arm9/asm/NNS_GFD_gfd_linkedlistp.s new file mode 100644 index 00000000..dd1af2f9 --- /dev/null +++ b/arm9/asm/NNS_GFD_gfd_linkedlistp.s @@ -0,0 +1,152 @@ + .include "asm/macros.inc" + .include "global.inc" + + .section .bss + +mgr_: ; 0x021CCD88 + .space 0x14 + + .section .text + + arm_func_start NNS_GfdResetLnkPlttVramState +NNS_GfdResetLnkPlttVramState: ; 0x020AFA30 + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r0, _020AFA78 ; =mgr_ + ldr r1, [r0, #0x10] + ldr r0, [r0, #0xc] + mov r1, r1, lsr #0x4 + bl NNSi_GfdInitLnkVramBlockPool + ldr r1, _020AFA78 ; =mgr_ + str r0, [r1, #0x4] + mov r0, r1 + bl NNSi_GfdInitLnkVramMan + ldr r0, _020AFA78 ; =mgr_ + ldr r1, _020AFA7C ; =mgr_ + 0x4 + ldr r3, [r0, #0x8] + mov r2, #0x0 + bl NNSi_GfdAddNewFreeBlock + add sp, sp, #0x4 + ldmia sp!, {pc} + .balign 4 +_020AFA78: .word mgr_ +_020AFA7C: .word mgr_ + 0x4 + arm_func_end NNS_GfdResetLnkPlttVramState + + arm_func_start NNS_GfdFreeLnkPlttVram +NNS_GfdFreeLnkPlttVram: ; 0x020AFA80 + stmdb sp!, {lr} + sub sp, sp, #0x4 + mov r1, #0x10000 + rsb r2, r1, #0x0 + ldr r1, _020AFAC8 ; =0x0000FFFF + and r2, r0, r2 + and r12, r0, r1 + mov r3, r2, lsr #0x10 + ldr r0, _020AFACC ; =mgr_ + ldr r1, _020AFAD0 ; =mgr_ + 0x4 + mov r2, r12, lsl #0x3 + mov r3, r3, lsl #0x3 + bl NNSi_GfdFreeLnkVram + cmp r0, #0x0 + moveq r0, #0x1 + movne r0, #0x0 + add sp, sp, #0x4 + ldmia sp!, {pc} + .balign 4 +_020AFAC8: .word 0x0000FFFF +_020AFACC: .word mgr_ +_020AFAD0: .word mgr_ + 0x4 + arm_func_end NNS_GfdFreeLnkPlttVram + + arm_func_start NNS_GfdAllocLnkPlttVram +NNS_GfdAllocLnkPlttVram: ; 0x020AFAD4 + stmdb sp!, {r4,lr} + sub sp, sp, #0x8 + cmp r0, #0x0 + moveq r4, #0x8 + addne r0, r0, #0x7 + bicne r4, r0, #0x7 + ldr r0, _020AFB98 ; =0x0007FFF8 + cmp r4, r0 + addcs sp, sp, #0x8 + movcs r0, #0x0 + ldmcsia sp!, {r4,pc} + cmp r1, #0x0 + beq _020AFB50 + mov r12, #0x8 + ldr r0, _020AFB9C ; =mgr_ + ldr r1, _020AFBA0 ; =mgr_ + 0x4 + add r2, sp, #0x4 + mov r3, r4 + str r12, [sp, #0x0] + bl NNSi_GfdAllocLnkVramAligned + ldr r2, [sp, #0x4] + add r1, r2, r4 + cmp r1, #0x10000 + bls _020AFB6C + ldr r0, _020AFB9C ; =mgr_ + ldr r1, _020AFBA0 ; =mgr_ + 0x4 + mov r3, r4 + bl NNSi_GfdFreeLnkVram + add sp, sp, #0x8 + mov r0, #0x0 + ldmia sp!, {r4,pc} +_020AFB50: + ldr r0, _020AFB9C ; =mgr_ + mov r12, #0x10 + ldr r1, _020AFBA0 ; =mgr_ + 0x4 + add r2, sp, #0x4 + mov r3, r4 + str r12, [sp, #0x0] + bl NNSi_GfdAllocLnkVramAligned +_020AFB6C: + cmp r0, #0x0 + addeq sp, sp, #0x8 + moveq r0, #0x0 + ldmeqia sp!, {r4,pc} + ldr r1, [sp, #0x4] + ldr r0, _020AFBA4 ; =0x0000FFFF + mov r2, r4, lsr #0x3 + and r0, r0, r1, lsr #0x3 + orr r0, r0, r2, lsl #0x10 + add sp, sp, #0x8 + ldmia sp!, {r4,pc} + .balign 4 +_020AFB98: .word 0x0007FFF8 +_020AFB9C: .word mgr_ +_020AFBA0: .word mgr_ + 0x4 +_020AFBA4: .word 0x0000FFFF + arm_func_end NNS_GfdAllocLnkPlttVram + + arm_func_start NNS_GfdInitLnkPlttVramManager +NNS_GfdInitLnkPlttVramManager: ; 0x020AFBA8 + stmdb sp!, {r4,lr} + ldr ip, _020AFBE8 ; =mgr_ + mov r4, r3 + str r0, [r12, #0x8] + str r1, [r12, #0xc] + str r2, [r12, #0x10] + bl NNS_GfdResetLnkPlttVramState + cmp r4, #0x0 + ldmeqia sp!, {r4,pc} + ldr r3, _020AFBEC ; =NNS_GfdAllocLnkPlttVram + ldr r1, _020AFBF0 ; =NNS_GfdDefaultFuncAllocPlttVram + ldr r2, _020AFBF4 ; =NNS_GfdFreeLnkPlttVram + ldr r0, _020AFBF8 ; =NNS_GfdDefaultFuncFreePlttVram + str r3, [r1, #0x0] + str r2, [r0, #0x0] + ldmia sp!, {r4,pc} + .balign 4 +_020AFBE8: .word mgr_ +_020AFBEC: .word NNS_GfdAllocLnkPlttVram +_020AFBF0: .word NNS_GfdDefaultFuncAllocPlttVram +_020AFBF4: .word NNS_GfdFreeLnkPlttVram +_020AFBF8: .word NNS_GfdDefaultFuncFreePlttVram + arm_func_end NNS_GfdInitLnkPlttVramManager + + arm_func_start NNS_GfdGetLnkPlttVramManagerWorkSize +NNS_GfdGetLnkPlttVramManagerWorkSize: ; 0x020AFBFC + mov r0, r0, lsl #0x4 + bx lr + arm_func_end NNS_GfdGetLnkPlttVramManagerWorkSize diff --git a/arm9/asm/NNS_GFD_gfd_linkedlistt.s b/arm9/asm/NNS_GFD_gfd_linkedlistt.s new file mode 100644 index 00000000..6522bf3b --- /dev/null +++ b/arm9/asm/NNS_GFD_gfd_linkedlistt.s @@ -0,0 +1,283 @@ + .include "asm/macros.inc" + .include "global.inc" + + .section .rodata + + .global __LOCAL_LABEL__$7929 +__LOCAL_LABEL__$7929: ; 0x020FF864 + .byte 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + + .section .bss + +mgr_: ; 0x021CCD6C + .space 0x1C + + .section .text + + arm_func_start NNS_GfdResetLnkTexVramState +NNS_GfdResetLnkTexVramState: ; 0x020AF6A4 + stmdb sp!, {r4-r6,lr} + sub sp, sp, #0x30 + ldr r6, _020AF884 ; =__LOCAL_LABEL__$7929 + add r5, sp, #0x0 + ldmia r6!, {r0-r3} + mov r12, r5 + stmia r5!, {r0-r3} + ldmia r6!, {r0-r3} + stmia r5!, {r0-r3} + ldr r4, _020AF888 ; =mgr_ + ldmia r6, {r0-r3} + stmia r5, {r0-r3} + ldr lr, [r4, #0x10] + ldr r1, [r4, #0xc] + add r0, lr, lr, lsr #0x1 + mov r4, lr, lsr #0x1 + sub r0, r1, r0 + mov r3, #0x0 +_020AF6EC: + cmp r3, #0x0 + beq _020AF6FC + cmp r3, #0x2 + bne _020AF734 +_020AF6FC: + ldr r2, [r12, #0x0] + cmp r2, #0x0 + beq _020AF734 + cmp lr, #0x0 + beq _020AF734 + ldr r1, [r12, #0x8] + cmp r2, lr + movhi r2, lr + add r1, r1, r2 + str r1, [r12, #0x8] + ldr r1, [r12, #0x0] + sub lr, lr, r2 + sub r1, r1, r2 + str r1, [r12, #0x0] +_020AF734: + add r3, r3, #0x1 + cmp r3, #0x4 + add r12, r12, #0xc + blo _020AF6EC + ldr r1, [sp, #0xc] + add r5, sp, #0x0 + sub r1, r1, r4 + str r1, [sp, #0xc] + mov r3, #0x0 +_020AF758: + ldr r2, [r5, #0x0] + cmp r2, #0x0 + beq _020AF790 + cmp r0, #0x0 + beq _020AF790 + ldr r1, [r5, #0x4] + cmp r2, r0 + movhi r2, r0 + add r1, r1, r2 + str r1, [r5, #0x4] + ldr r1, [r5, #0x0] + sub r0, r0, r2 + sub r1, r1, r2 + str r1, [r5, #0x0] +_020AF790: + add r3, r3, #0x1 + cmp r3, #0x4 + add r5, r5, #0xc + blo _020AF758 + ldr r0, _020AF888 ; =mgr_ + bl NNSi_GfdInitLnkVramMan + ldr r0, _020AF88C ; =mgr_ + 0x4 + bl NNSi_GfdInitLnkVramMan + ldr r0, _020AF888 ; =mgr_ + ldr r1, [r0, #0x18] + ldr r0, [r0, #0x14] + mov r1, r1, lsr #0x4 + bl NNSi_GfdInitLnkVramBlockPool + ldr r3, [sp, #0x8] + ldr r1, _020AF888 ; =mgr_ + cmp r3, #0x0 + str r0, [r1, #0x8] + beq _020AF7E8 + ldr r0, _020AF88C ; =mgr_ + 0x4 + ldr r1, _020AF890 ; =mgr_ + 0x8 + mov r2, #0x0 + bl NNSi_GfdAddNewFreeBlock +_020AF7E8: + ldr r3, [sp, #0x4] + ldr r2, [sp, #0x8] + cmp r3, #0x0 + beq _020AF804 + ldr r0, _020AF888 ; =mgr_ + ldr r1, _020AF890 ; =mgr_ + 0x8 + bl NNSi_GfdAddNewFreeBlock +_020AF804: + ldr r3, [sp, #0x20] + cmp r3, #0x0 + beq _020AF820 + ldr r0, _020AF88C ; =mgr_ + 0x4 + ldr r1, _020AF890 ; =mgr_ + 0x8 + mov r2, #0x40000 + bl NNSi_GfdAddNewFreeBlock +_020AF820: + ldr r3, [sp, #0x1c] + ldr r0, [sp, #0x20] + cmp r3, #0x0 + add r2, r0, #0x40000 + beq _020AF840 + ldr r0, _020AF888 ; =mgr_ + ldr r1, _020AF890 ; =mgr_ + 0x8 + bl NNSi_GfdAddNewFreeBlock +_020AF840: + ldr r3, [sp, #0x28] + cmp r3, #0x0 + beq _020AF85C + ldr r0, _020AF888 ; =mgr_ + ldr r1, _020AF890 ; =mgr_ + 0x8 + mov r2, #0x60000 + bl NNSi_GfdAddNewFreeBlock +_020AF85C: + ldr r3, [sp, #0x10] + cmp r3, #0x0 + addeq sp, sp, #0x30 + ldmeqia sp!, {r4-r6,pc} + ldr r0, _020AF888 ; =mgr_ + ldr r1, _020AF890 ; =mgr_ + 0x8 + add r2, r4, #0x20000 + bl NNSi_GfdAddNewFreeBlock + add sp, sp, #0x30 + ldmia sp!, {r4-r6,pc} + .balign 4 +_020AF884: .word __LOCAL_LABEL__$7929 +_020AF888: .word mgr_ +_020AF88C: .word mgr_ + 0x4 +_020AF890: .word mgr_ + 0x8 + arm_func_end NNS_GfdResetLnkTexVramState + + arm_func_start NNS_GfdFreeLnkTexVram +NNS_GfdFreeLnkTexVram: ; 0x020AF894 + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r2, _020AF908 ; =0x7FFF0000 + ldr r1, _020AF90C ; =0x0000FFFF + and r2, r0, r2 + and r3, r0, r1 + mov r1, r2, lsr #0x10 + and r0, r0, #0x80000000 + mov r2, r3, lsl #0x3 + movs r3, r1, lsl #0x4 + mov r0, r0, lsr #0x1f + beq _020AF8FC + cmp r0, #0x0 + beq _020AF8DC + ldr r0, _020AF910 ; =mgr_ + 0x4 + ldr r1, _020AF914 ; =mgr_ + 0x8 + bl NNSi_GfdFreeLnkVram + b _020AF8E8 +_020AF8DC: + ldr r0, _020AF918 ; =mgr_ + ldr r1, _020AF914 ; =mgr_ + 0x8 + bl NNSi_GfdFreeLnkVram +_020AF8E8: + cmp r0, #0x0 + movne r0, #0x0 + add sp, sp, #0x4 + moveq r0, #0x1 + ldmia sp!, {pc} +_020AF8FC: + mov r0, #0x2 + add sp, sp, #0x4 + ldmia sp!, {pc} + .balign 4 +_020AF908: .word 0x7FFF0000 +_020AF90C: .word 0x0000FFFF +_020AF910: .word mgr_ + 0x4 +_020AF914: .word mgr_ + 0x8 +_020AF918: .word mgr_ + arm_func_end NNS_GfdFreeLnkTexVram + + arm_func_start NNS_GfdAllocLnkTexVram +NNS_GfdAllocLnkTexVram: ; 0x020AF91C + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + cmp r0, #0x0 + moveq r5, #0x10 + addne r0, r0, #0xf + bicne r5, r0, #0xf + ldr r0, _020AF9B0 ; =0x0007FFF0 + mov r4, r1 + cmp r5, r0 + addcs sp, sp, #0x4 + movcs r0, #0x0 + ldmcsia sp!, {r4-r5,pc} + cmp r4, #0x0 + beq _020AF96C + ldr r0, _020AF9B4 ; =mgr_ + 0x4 + ldr r1, _020AF9B8 ; =mgr_ + 0x8 + add r2, sp, #0x0 + mov r3, r5 + bl NNSi_GfdAllocLnkVram + b _020AF980 +_020AF96C: + ldr r0, _020AF9BC ; =mgr_ + ldr r1, _020AF9B8 ; =mgr_ + 0x8 + add r2, sp, #0x0 + mov r3, r5 + bl NNSi_GfdAllocLnkVram +_020AF980: + cmp r0, #0x0 + addeq sp, sp, #0x4 + moveq r0, #0x0 + ldmeqia sp!, {r4-r5,pc} + ldr r1, [sp, #0x0] + ldr r0, _020AF9C0 ; =0x0000FFFF + mov r2, r5, lsr #0x4 + and r0, r0, r1, lsr #0x3 + orr r0, r0, r2, lsl #0x10 + orr r0, r0, r4, lsl #0x1f + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + .balign 4 +_020AF9B0: .word 0x0007FFF0 +_020AF9B4: .word mgr_ + 0x4 +_020AF9B8: .word mgr_ + 0x8 +_020AF9BC: .word mgr_ +_020AF9C0: .word 0x0000FFFF + arm_func_end NNS_GfdAllocLnkTexVram + + arm_func_start NNS_GfdInitLnkTexVramManager +NNS_GfdInitLnkTexVramManager: ; 0x020AF9C4 + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr ip, _020AFA14 ; =mgr_ + str r0, [r12, #0xc] + str r1, [r12, #0x10] + str r2, [r12, #0x14] + str r3, [r12, #0x18] + bl NNS_GfdResetLnkTexVramState + ldr r0, [sp, #0x8] + cmp r0, #0x0 + addeq sp, sp, #0x4 + ldmeqia sp!, {pc} + ldr r3, _020AFA18 ; =NNS_GfdAllocLnkTexVram + ldr r1, _020AFA1C ; =NNS_GfdDefaultFuncAllocTexVram + ldr r2, _020AFA20 ; =NNS_GfdFreeLnkTexVram + ldr r0, _020AFA24 ; =NNS_GfdDefaultFuncFreeTexVram + str r3, [r1, #0x0] + str r2, [r0, #0x0] + add sp, sp, #0x4 + ldmia sp!, {pc} + .balign 4 +_020AFA14: .word mgr_ +_020AFA18: .word NNS_GfdAllocLnkTexVram +_020AFA1C: .word NNS_GfdDefaultFuncAllocTexVram +_020AFA20: .word NNS_GfdFreeLnkTexVram +_020AFA24: .word NNS_GfdDefaultFuncFreeTexVram + arm_func_end NNS_GfdInitLnkTexVramManager + + arm_func_start NNS_GfdGetLnkTexVramManagerWorkSize +NNS_GfdGetLnkTexVramManagerWorkSize: ; 0x020AFA28 + mov r0, r0, lsl #0x4 + bx lr + arm_func_end NNS_GfdGetLnkTexVramManagerWorkSize diff --git a/arm9/asm/NNS_GFD_gfd_plttvramman.s b/arm9/asm/NNS_GFD_gfd_plttvramman.s new file mode 100644 index 00000000..c869a9a1 --- /dev/null +++ b/arm9/asm/NNS_GFD_gfd_plttvramman.s @@ -0,0 +1,26 @@ + .include "asm/macros.inc" + .include "global.inc" + + .section .data + + .global NNS_GfdDefaultFuncAllocPlttVram +NNS_GfdDefaultFuncAllocPlttVram: ; 0x021064C0 + .word AllocPlttVram_ + + .global NNS_GfdDefaultFuncFreePlttVram +NNS_GfdDefaultFuncFreePlttVram: ; 0x021064C4 + .word FreePlttVram_ + + .section .text + + arm_func_start FreePlttVram_ +FreePlttVram_: ; 0x020AE8BC + mvn r0, #0x0 + bx lr + arm_func_end FreePlttVram_ + + arm_func_start AllocPlttVram_ +AllocPlttVram_: ; 0x020AE8C4 + mov r0, #0x0 + bx lr + arm_func_end AllocPlttVram_ diff --git a/arm9/asm/NNS_GFD_gfd_texvramman.s b/arm9/asm/NNS_GFD_gfd_texvramman.s new file mode 100644 index 00000000..d2f6c88f --- /dev/null +++ b/arm9/asm/NNS_GFD_gfd_texvramman.s @@ -0,0 +1,26 @@ + .include "asm/macros.inc" + .include "global.inc" + + .section .data + + .global NNS_GfdDefaultFuncAllocTexVram +NNS_GfdDefaultFuncAllocTexVram: ; 0x021064B8 + .word AllocTexVram_ + + .global NNS_GfdDefaultFuncFreeTexVram +NNS_GfdDefaultFuncFreeTexVram: ; 0x021064BC + .word FreeTexVram_ + + .section .text + + arm_func_start FreeTexVram_ +FreeTexVram_: ; 0x020AE8AC + mvn r0, #0x0 + bx lr + arm_func_end FreeTexVram_ + + arm_func_start AllocTexVram_ +AllocTexVram_: ; 0x020AE8B4 + mov r0, #0x0 + bx lr + arm_func_end AllocTexVram_ diff --git a/arm9/asm/NNS_GFD_gfd_vramtransfe.s b/arm9/asm/NNS_GFD_gfd_vramtransfe.s new file mode 100644 index 00000000..9e3a8863 --- /dev/null +++ b/arm9/asm/NNS_GFD_gfd_vramtransfe.s @@ -0,0 +1,592 @@ + .include "asm/macros.inc" + .include "global.inc" + + .section .rodata + + .global transFunc$7934 +transFunc$7934: ; 0x020FF7D4 + .word DoTransfer3dTex + .word DoTransfer3dTexPltt + .word DoTransfer3dClearImageColor + .word DoTransfer3dClearImageDepth + .word DoTransfer2dBG0CharMain + .word DoTransfer2dBG1CharMain + .word DoTransfer2dBG2CharMain + .word DoTransfer2dBG3CharMain + .word DoTransfer2dBG0ScrMain + .word DoTransfer2dBG1ScrMain + .word DoTransfer2dBG2ScrMain + .word DoTransfer2dBG3ScrMain + .word DoTransfer2dBG2BmpMain + .word DoTransfer2dBG3BmpMain + .word DoTransfer2dObjPlttMain + .word DoTransfer2dBGPlttMain + .word DoTransfer2dObjExtPlttMain + .word DoTransfer2dBGExtPlttMain + .word DoTransfer2dObjOamMain + .word DoTransfer2dObjCharMain + .word DoTransfer2dBG0CharSub + .word DoTransfer2dBG1CharSub + .word DoTransfer2dBG2CharSub + .word DoTransfer2dBG3CharSub + .word DoTransfer2dBG0ScrSub + .word DoTransfer2dBG1ScrSub + .word DoTransfer2dBG2ScrSub + .word DoTransfer2dBG3ScrSub + .word DoTransfer2dBG2BmpSub + .word DoTransfer2dBG3BmpSub + .word DoTransfer2dObjPlttSub + .word DoTransfer2dBGPlttSub + .word DoTransfer2dObjExtPlttSub + .word DoTransfer2dBGExtPlttSub + .word DoTransfer2dObjOamSub + .word DoTransfer2dObjCharSub + ; const initializer + + .section .bss + + .global s_VramTransferManager +s_VramTransferManager: ; 0x021CCD58 + .space 0x14 + + .section .text + + arm_func_start NNS_GfdRegisterNewVramTransferTask +NNS_GfdRegisterNewVramTransferTask: ; 0x020AEE40 + stmdb sp!, {r4-r9,lr} + sub sp, sp, #0x4 + ldr r5, _020AEEB4 ; =s_VramTransferManager + mov r9, r0 + mov r0, r5 + mov r8, r1 + mov r7, r2 + mov r6, r3 + bl IsVramTransferTaskQueueFull_ + cmp r0, #0x0 + addne sp, sp, #0x4 + movne r0, #0x0 + ldmneia sp!, {r4-r9,pc} + mov r0, r5 + bl NNSi_GfdGetEndVramTransferTaskQueue + mov r4, r0 + str r9, [r4, #0x0] + str r7, [r4, #0x4] + str r8, [r4, #0x8] + mov r0, r5 + str r6, [r4, #0xc] + bl NNSi_GfdPushVramTransferTaskQueue + ldr r2, [r5, #0x10] + ldr r1, [r4, #0xc] + mov r0, #0x1 + add r1, r2, r1 + str r1, [r5, #0x10] + add sp, sp, #0x4 + ldmia sp!, {r4-r9,pc} + .balign 4 +_020AEEB4: .word s_VramTransferManager + arm_func_end NNS_GfdRegisterNewVramTransferTask + + arm_func_start NNS_GfdDoVramTransfer +NNS_GfdDoVramTransfer: ; 0x020AEEB8 + stmdb sp!, {r4-r6,lr} + ldr r6, _020AEF18 ; =s_VramTransferManager + mov r0, r6 + bl NNSi_GfdGetFrontVramTransferTaskQueue + mov r5, r0 + mov r0, r6 + bl NNSi_GfdPopVramTransferTaskQueue + cmp r0, #0x0 + ldmeqia sp!, {r4-r6,pc} + add r4, r6, #0x10 +_020AEEE0: + mov r0, r5 + bl DoTransfer_ + ldr r2, [r4, #0x0] + ldr r1, [r5, #0xc] + mov r0, r6 + sub r1, r2, r1 + str r1, [r4, #0x0] + bl NNSi_GfdGetFrontVramTransferTaskQueue + mov r5, r0 + mov r0, r6 + bl NNSi_GfdPopVramTransferTaskQueue + cmp r0, #0x0 + bne _020AEEE0 + ldmia sp!, {r4-r6,pc} + .balign 4 +_020AEF18: .word s_VramTransferManager + arm_func_end NNS_GfdDoVramTransfer + + arm_func_start NNS_GfdInitVramTransferManager +NNS_GfdInitVramTransferManager: ; 0x020AEF1C + ldr r2, _020AEF34 ; =s_VramTransferManager + ldr ip, _020AEF38 ; =ResetTaskQueue_ + str r0, [r2, #0x0] + mov r0, r2 + str r1, [r2, #0x4] + bx r12 + .balign 4 +_020AEF34: .word s_VramTransferManager +_020AEF38: .word ResetTaskQueue_ + arm_func_end NNS_GfdInitVramTransferManager + + arm_func_start NNSi_GfdPopVramTransferTaskQueue +NNSi_GfdPopVramTransferTaskQueue: ; 0x020AEF3C + stmdb sp!, {r4,lr} + mov r4, r0 + bl IsVramTransferTaskQueueEmpty_ + cmp r0, #0x0 + movne r0, #0x0 + ldmneia sp!, {r4,pc} + ldrh r1, [r4, #0x8] + mov r0, r4 + bl GetNextIndex_ + strh r0, [r4, #0x8] + ldrh r1, [r4, #0xc] + mov r0, #0x1 + sub r1, r1, #0x1 + strh r1, [r4, #0xc] + ldmia sp!, {r4,pc} + arm_func_end NNSi_GfdPopVramTransferTaskQueue + + arm_func_start NNSi_GfdGetEndVramTransferTaskQueue +NNSi_GfdGetEndVramTransferTaskQueue: ; 0x020AEF78 + ldrh r1, [r0, #0xa] + ldr r0, [r0, #0x0] + add r0, r0, r1, lsl #0x4 + bx lr + arm_func_end NNSi_GfdGetEndVramTransferTaskQueue + + arm_func_start NNSi_GfdGetFrontVramTransferTaskQueue +NNSi_GfdGetFrontVramTransferTaskQueue: ; 0x020AEF88 + ldrh r1, [r0, #0x8] + ldr r0, [r0, #0x0] + add r0, r0, r1, lsl #0x4 + bx lr + arm_func_end NNSi_GfdGetFrontVramTransferTaskQueue + + arm_func_start NNSi_GfdPushVramTransferTaskQueue +NNSi_GfdPushVramTransferTaskQueue: ; 0x020AEF98 + stmdb sp!, {r4,lr} + mov r4, r0 + bl IsVramTransferTaskQueueFull_ + cmp r0, #0x0 + movne r0, #0x0 + ldmneia sp!, {r4,pc} + ldrh r1, [r4, #0xa] + mov r0, r4 + bl GetNextIndex_ + strh r0, [r4, #0xa] + ldrh r1, [r4, #0xc] + mov r0, #0x1 + add r1, r1, #0x1 + strh r1, [r4, #0xc] + ldmia sp!, {r4,pc} + arm_func_end NNSi_GfdPushVramTransferTaskQueue + + arm_func_start ResetTaskQueue_ +ResetTaskQueue_: ; 0x020AEFD4 + mov r2, #0x0 + strh r2, [r0, #0xa] + ldrh r1, [r0, #0xa] + strh r1, [r0, #0x8] + strh r2, [r0, #0xc] + str r2, [r0, #0x10] + bx lr + arm_func_end ResetTaskQueue_ + + arm_func_start DoTransfer_ +DoTransfer_: ; 0x020AEFF0 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r5, r0 + ldr r3, [r5, #0x0] + ldr r2, _020AF02C ; =transFunc$7934 + ldr r0, [r5, #0x4] + ldr r1, [r5, #0xc] + ldr r4, [r2, r3, lsl #0x2] + bl DC_FlushRange + ldr r0, [r5, #0x4] + ldr r1, [r5, #0x8] + ldr r2, [r5, #0xc] + blx r4 + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + .balign 4 +_020AF02C: .word transFunc$7934 + arm_func_end DoTransfer_ +DoTransfer2dObjCharSub: + ldr ip, _020AF038 ; =GXS_LoadOBJ + bx r12 + .balign 4 +_020AF038: .word GXS_LoadOBJ + arm_func_end DoTransfer2dObjCharSub + + arm_func_start DoTransfer2dObjOamSub +DoTransfer2dObjOamSub: ; 0x020AF03C + ldr ip, _020AF044 ; =GXS_LoadOAM + bx r12 + .balign 4 +_020AF044: .word GXS_LoadOAM + arm_func_end DoTransfer2dObjOamSub + + arm_func_start DoTransfer2dBGExtPlttSub +DoTransfer2dBGExtPlttSub: ; 0x020AF048 + stmdb sp!, {r4-r6,lr} + mov r6, r0 + mov r5, r1 + mov r4, r2 + bl GXS_BeginLoadBGExtPltt + mov r0, r6 + mov r1, r5 + mov r2, r4 + bl GXS_LoadBGExtPltt + bl GXS_EndLoadBGExtPltt + ldmia sp!, {r4-r6,pc} + arm_func_end DoTransfer2dBGExtPlttSub + + arm_func_start DoTransfer2dObjExtPlttSub +DoTransfer2dObjExtPlttSub: ; 0x020AF074 + stmdb sp!, {r4-r6,lr} + mov r6, r0 + mov r5, r1 + mov r4, r2 + bl GXS_BeginLoadOBJExtPltt + mov r0, r6 + mov r1, r5 + mov r2, r4 + bl GXS_LoadOBJExtPltt + bl GXS_EndLoadOBJExtPltt + ldmia sp!, {r4-r6,pc} + arm_func_end DoTransfer2dObjExtPlttSub + + arm_func_start DoTransfer2dBGPlttSub +DoTransfer2dBGPlttSub: ; 0x020AF0A0 + ldr ip, _020AF0A8 ; =GXS_LoadBGPltt + bx r12 + .balign 4 +_020AF0A8: .word GXS_LoadBGPltt + arm_func_end DoTransfer2dBGPlttSub + + arm_func_start DoTransfer2dObjPlttSub +DoTransfer2dObjPlttSub: ; 0x020AF0AC + ldr ip, _020AF0B4 ; =GXS_LoadOBJPltt + bx r12 + .balign 4 +_020AF0B4: .word GXS_LoadOBJPltt + arm_func_end DoTransfer2dObjPlttSub + + arm_func_start DoTransfer2dBG3BmpSub +DoTransfer2dBG3BmpSub: ; 0x020AF0B8 + ldr ip, _020AF0C0 ; =GXS_LoadBG3Scr + bx r12 + .balign 4 +_020AF0C0: .word GXS_LoadBG3Scr + arm_func_end DoTransfer2dBG3BmpSub + + arm_func_start DoTransfer2dBG2BmpSub +DoTransfer2dBG2BmpSub: ; 0x020AF0C4 + ldr ip, _020AF0CC ; =GXS_LoadBG2Scr + bx r12 + .balign 4 +_020AF0CC: .word GXS_LoadBG2Scr + arm_func_end DoTransfer2dBG2BmpSub + + arm_func_start DoTransfer2dBG3ScrSub +DoTransfer2dBG3ScrSub: ; 0x020AF0D0 + ldr ip, _020AF0D8 ; =GXS_LoadBG3Scr + bx r12 + .balign 4 +_020AF0D8: .word GXS_LoadBG3Scr + arm_func_end DoTransfer2dBG3ScrSub + + arm_func_start DoTransfer2dBG2ScrSub +DoTransfer2dBG2ScrSub: ; 0x020AF0DC + ldr ip, _020AF0E4 ; =GXS_LoadBG2Scr + bx r12 + .balign 4 +_020AF0E4: .word GXS_LoadBG2Scr + arm_func_end DoTransfer2dBG2ScrSub + + arm_func_start DoTransfer2dBG1ScrSub +DoTransfer2dBG1ScrSub: ; 0x020AF0E8 + ldr ip, _020AF0F0 ; =GXS_LoadBG1Scr + bx r12 + .balign 4 +_020AF0F0: .word GXS_LoadBG1Scr + arm_func_end DoTransfer2dBG1ScrSub + + arm_func_start DoTransfer2dBG0ScrSub +DoTransfer2dBG0ScrSub: ; 0x020AF0F4 + ldr ip, _020AF0FC ; =GXS_LoadBG0Scr + bx r12 + .balign 4 +_020AF0FC: .word GXS_LoadBG0Scr + arm_func_end DoTransfer2dBG0ScrSub + + arm_func_start DoTransfer2dBG3CharSub +DoTransfer2dBG3CharSub: ; 0x020AF100 + ldr ip, _020AF108 ; =GXS_LoadBG3Char + bx r12 + .balign 4 +_020AF108: .word GXS_LoadBG3Char + arm_func_end DoTransfer2dBG3CharSub + + arm_func_start DoTransfer2dBG2CharSub +DoTransfer2dBG2CharSub: ; 0x020AF10C + ldr ip, _020AF114 ; =GXS_LoadBG2Char + bx r12 + .balign 4 +_020AF114: .word GXS_LoadBG2Char + arm_func_end DoTransfer2dBG2CharSub + + arm_func_start DoTransfer2dBG1CharSub +DoTransfer2dBG1CharSub: ; 0x020AF118 + ldr ip, _020AF120 ; =GXS_LoadBG1Char + bx r12 + .balign 4 +_020AF120: .word GXS_LoadBG1Char + arm_func_end DoTransfer2dBG1CharSub + + arm_func_start DoTransfer2dBG0CharSub +DoTransfer2dBG0CharSub: ; 0x020AF124 + ldr ip, _020AF12C ; =GXS_LoadBG0Char + bx r12 + .balign 4 +_020AF12C: .word GXS_LoadBG0Char + arm_func_end DoTransfer2dBG0CharSub + + arm_func_start DoTransfer2dObjCharMain +DoTransfer2dObjCharMain: ; 0x020AF130 + ldr ip, _020AF138 ; =GX_LoadOBJ + bx r12 + .balign 4 +_020AF138: .word GX_LoadOBJ + arm_func_end DoTransfer2dObjCharMain + + arm_func_start DoTransfer2dObjOamMain +DoTransfer2dObjOamMain: ; 0x020AF13C + ldr ip, _020AF144 ; =GX_LoadOAM + bx r12 + .balign 4 +_020AF144: .word GX_LoadOAM + arm_func_end DoTransfer2dObjOamMain + + arm_func_start DoTransfer2dBGExtPlttMain +DoTransfer2dBGExtPlttMain: ; 0x020AF148 + stmdb sp!, {r4-r6,lr} + mov r6, r0 + mov r5, r1 + mov r4, r2 + bl GX_BeginLoadBGExtPltt + mov r0, r6 + mov r1, r5 + mov r2, r4 + bl GX_LoadBGExtPltt + bl GX_EndLoadBGExtPltt + ldmia sp!, {r4-r6,pc} + arm_func_end DoTransfer2dBGExtPlttMain + + arm_func_start DoTransfer2dObjExtPlttMain +DoTransfer2dObjExtPlttMain: ; 0x020AF174 + stmdb sp!, {r4-r6,lr} + mov r6, r0 + mov r5, r1 + mov r4, r2 + bl GX_BeginLoadOBJExtPltt + mov r0, r6 + mov r1, r5 + mov r2, r4 + bl GX_LoadOBJExtPltt + bl GX_EndLoadOBJExtPltt + ldmia sp!, {r4-r6,pc} + arm_func_end DoTransfer2dObjExtPlttMain + + arm_func_start DoTransfer2dBGPlttMain +DoTransfer2dBGPlttMain: ; 0x020AF1A0 + ldr ip, _020AF1A8 ; =GX_LoadBGPltt + bx r12 + .balign 4 +_020AF1A8: .word GX_LoadBGPltt + arm_func_end DoTransfer2dBGPlttMain + + arm_func_start DoTransfer2dObjPlttMain +DoTransfer2dObjPlttMain: ; 0x020AF1AC + ldr ip, _020AF1B4 ; =GX_LoadOBJPltt + bx r12 + .balign 4 +_020AF1B4: .word GX_LoadOBJPltt + arm_func_end DoTransfer2dObjPlttMain + + arm_func_start DoTransfer2dBG3BmpMain +DoTransfer2dBG3BmpMain: ; 0x020AF1B8 + ldr ip, _020AF1C0 ; =GX_LoadBG3Scr + bx r12 + .balign 4 +_020AF1C0: .word GX_LoadBG3Scr + arm_func_end DoTransfer2dBG3BmpMain + + arm_func_start DoTransfer2dBG2BmpMain +DoTransfer2dBG2BmpMain: ; 0x020AF1C4 + ldr ip, _020AF1CC ; =GX_LoadBG2Scr + bx r12 + .balign 4 +_020AF1CC: .word GX_LoadBG2Scr + arm_func_end DoTransfer2dBG2BmpMain + + arm_func_start DoTransfer2dBG3ScrMain +DoTransfer2dBG3ScrMain: ; 0x020AF1D0 + ldr ip, _020AF1D8 ; =GX_LoadBG3Scr + bx r12 + .balign 4 +_020AF1D8: .word GX_LoadBG3Scr + arm_func_end DoTransfer2dBG3ScrMain + + arm_func_start DoTransfer2dBG2ScrMain +DoTransfer2dBG2ScrMain: ; 0x020AF1DC + ldr ip, _020AF1E4 ; =GX_LoadBG2Scr + bx r12 + .balign 4 +_020AF1E4: .word GX_LoadBG2Scr + arm_func_end DoTransfer2dBG2ScrMain + + arm_func_start DoTransfer2dBG1ScrMain +DoTransfer2dBG1ScrMain: ; 0x020AF1E8 + ldr ip, _020AF1F0 ; =GX_LoadBG1Scr + bx r12 + .balign 4 +_020AF1F0: .word GX_LoadBG1Scr + arm_func_end DoTransfer2dBG1ScrMain + + arm_func_start DoTransfer2dBG0ScrMain +DoTransfer2dBG0ScrMain: ; 0x020AF1F4 + ldr ip, _020AF1FC ; =GX_LoadBG0Scr + bx r12 + .balign 4 +_020AF1FC: .word GX_LoadBG0Scr + arm_func_end DoTransfer2dBG0ScrMain + + arm_func_start DoTransfer2dBG3CharMain +DoTransfer2dBG3CharMain: ; 0x020AF200 + ldr ip, _020AF208 ; =GX_LoadBG3Char + bx r12 + .balign 4 +_020AF208: .word GX_LoadBG3Char + arm_func_end DoTransfer2dBG3CharMain + + arm_func_start DoTransfer2dBG2CharMain +DoTransfer2dBG2CharMain: ; 0x020AF20C + ldr ip, _020AF214 ; =GX_LoadBG2Char + bx r12 + .balign 4 +_020AF214: .word GX_LoadBG2Char + arm_func_end DoTransfer2dBG2CharMain + + arm_func_start DoTransfer2dBG1CharMain +DoTransfer2dBG1CharMain: ; 0x020AF218 + ldr ip, _020AF220 ; =GX_LoadBG1Char + bx r12 + .balign 4 +_020AF220: .word GX_LoadBG1Char + arm_func_end DoTransfer2dBG1CharMain + + arm_func_start DoTransfer2dBG0CharMain +DoTransfer2dBG0CharMain: ; 0x020AF224 + ldr ip, _020AF22C ; =GX_LoadBG0Char + bx r12 + .balign 4 +_020AF22C: .word GX_LoadBG0Char + arm_func_end DoTransfer2dBG0CharMain + + arm_func_start DoTransfer3dClearImageDepth +DoTransfer3dClearImageDepth: ; 0x020AF230 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r5, r0 + mov r4, r2 + bl GX_BeginLoadClearImage + mov r0, r5 + mov r1, r4 + bl GX_LoadClearImageDepth + bl GX_EndLoadClearImage + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + arm_func_end DoTransfer3dClearImageDepth + + arm_func_start DoTransfer3dClearImageColor +DoTransfer3dClearImageColor: ; 0x020AF25C + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r5, r0 + mov r4, r2 + bl GX_BeginLoadClearImage + mov r0, r5 + mov r1, r4 + bl GX_LoadClearImageColor + bl GX_EndLoadClearImage + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + arm_func_end DoTransfer3dClearImageColor + + arm_func_start DoTransfer3dTexPltt +DoTransfer3dTexPltt: ; 0x020AF288 + stmdb sp!, {r4-r6,lr} + mov r6, r0 + mov r5, r1 + mov r4, r2 + bl GX_BeginLoadTexPltt + mov r0, r6 + mov r1, r5 + mov r2, r4 + bl GX_LoadTexPltt + bl GX_EndLoadTexPltt + ldmia sp!, {r4-r6,pc} + arm_func_end DoTransfer3dTexPltt + + arm_func_start DoTransfer3dTex +DoTransfer3dTex: ; 0x020AF2B4 + stmdb sp!, {r4-r6,lr} + mov r6, r0 + mov r5, r1 + mov r4, r2 + bl GX_BeginLoadTex + mov r0, r6 + mov r1, r5 + mov r2, r4 + bl GX_LoadTex + bl GX_EndLoadTex + ldmia sp!, {r4-r6,pc} + arm_func_end DoTransfer3dTex + + arm_func_start IsVramTransferTaskQueueEmpty_ +IsVramTransferTaskQueueEmpty_: ; 0x020AF2E0 + ldrh r0, [r0, #0xc] + cmp r0, #0x0 + moveq r0, #0x1 + movne r0, #0x0 + bx lr + arm_func_end IsVramTransferTaskQueueEmpty_ + + arm_func_start IsVramTransferTaskQueueFull_ +IsVramTransferTaskQueueFull_: ; 0x020AF2F4 + ldrh r1, [r0, #0xc] + ldr r0, [r0, #0x4] + cmp r1, r0 + moveq r0, #0x1 + movne r0, #0x0 + bx lr + arm_func_end IsVramTransferTaskQueueFull_ + + arm_func_start GetNextIndex_ +GetNextIndex_: ; 0x020AF30C + stmdb sp!, {lr} + sub sp, sp, #0x4 + mov r2, r0 + add r0, r1, #0x1 + ldr r1, [r2, #0x4] + bl _u32_div_f + mov r0, r1, lsl #0x10 + mov r0, r0, lsr #0x10 + add sp, sp, #0x4 + ldmia sp!, {pc} + arm_func_end GetNextIndex_ diff --git a/arm9/asm/NNS_GFD_gfdi_linkedlist.s b/arm9/asm/NNS_GFD_gfdi_linkedlist.s new file mode 100644 index 00000000..125a146e --- /dev/null +++ b/arm9/asm/NNS_GFD_gfdi_linkedlist.s @@ -0,0 +1,261 @@ + .include "asm/macros.inc" + .include "global.inc" + + .section .text + + arm_func_start NNSi_GfdFreeLnkVram +NNSi_GfdFreeLnkVram: ; 0x020AF334 + stmdb sp!, {r4-r6,lr} + sub sp, sp, #0x10 + add r3, r2, r3 + str r2, [sp, #0x0] + str r2, [sp, #0x8] + str r3, [sp, #0x4] + str r3, [sp, #0xc] + ldr r3, [r0, #0x0] + add r12, sp, #0x0 + cmp r3, #0x0 + beq _020AF418 + mov r6, #0x0 +_020AF364: + ldr r5, [r3, #0x0] + ldr r4, [r12, #0x4] + ldr r2, [r3, #0xc] + cmp r5, r4 + bne _020AF3B8 + ldr r4, [r3, #0x4] + add r4, r5, r4 + str r4, [sp, #0xc] + ldr r4, [r3, #0x8] + cmp r4, #0x0 + strne r2, [r4, #0xc] + streq r2, [r0, #0x0] + cmp r2, #0x0 + strne r4, [r2, #0x8] + ldr r4, [r1, #0x0] + cmp r4, #0x0 + strne r3, [r4, #0x8] + ldr r4, [r1, #0x0] + str r4, [r3, #0xc] + str r6, [r3, #0x8] + str r3, [r1, #0x0] +_020AF3B8: + ldr r5, [r3, #0x0] + ldr lr, [r3, #0x4] + ldr r4, [r12, #0x0] + add lr, r5, lr + cmp r4, lr + bne _020AF40C + str r5, [sp, #0x8] + ldr r5, [r3, #0x8] + ldr r4, [r3, #0xc] + cmp r5, #0x0 + strne r4, [r5, #0xc] + streq r4, [r0, #0x0] + cmp r4, #0x0 + strne r5, [r4, #0x8] + ldr lr, [r1, #0x0] + cmp lr, #0x0 + strne r3, [lr, #0x8] + ldr lr, [r1, #0x0] + str lr, [r3, #0xc] + str r6, [r3, #0x8] + str r3, [r1, #0x0] +_020AF40C: + mov r3, r2 + cmp r2, #0x0 + bne _020AF364 +_020AF418: + ldr r4, [r1, #0x0] + cmp r4, #0x0 + ldrne r2, [r4, #0xc] + strne r2, [r1, #0x0] + cmp r4, #0x0 + addeq sp, sp, #0x10 + moveq r0, #0x0 + ldmeqia sp!, {r4-r6,pc} + ldr r2, [sp, #0x8] + mov r1, #0x0 + str r2, [r4, #0x0] + ldr r3, [sp, #0xc] + ldr r2, [sp, #0x8] + sub r2, r3, r2 + str r2, [r4, #0x4] + str r1, [r4, #0x8] + str r1, [r4, #0xc] + ldr r1, [r0, #0x0] + cmp r1, #0x0 + strne r4, [r1, #0x8] + ldr r2, [r0, #0x0] + mov r1, #0x0 + str r2, [r4, #0xc] + str r1, [r4, #0x8] + str r4, [r0, #0x0] + mov r0, #0x1 + add sp, sp, #0x10 + ldmia sp!, {r4-r6,pc} + arm_func_end NNSi_GfdFreeLnkVram + + arm_func_start NNSi_GfdAllocLnkVramAligned +NNSi_GfdAllocLnkVramAligned: ; 0x020AF488 + stmdb sp!, {r4-r10,lr} + ldr r4, [r0, #0x0] + ldr r9, [sp, #0x20] + cmp r4, #0x0 + mov r5, #0x0 + beq _020AF4EC + sub r12, r9, #0x1 + mvn lr, r12 +_020AF4A8: + cmp r9, #0x1 + ldrls r8, [r4, #0x0] + movls r6, r5 + movls r7, r3 + bls _020AF4D0 + ldr r7, [r4, #0x0] + add r6, r7, r12 + and r8, lr, r6 + sub r6, r8, r7 + add r7, r3, r6 +_020AF4D0: + ldr r10, [r4, #0x4] + cmp r10, r7 + movcs r5, r4 + bhs _020AF4EC + ldr r4, [r4, #0xc] + cmp r4, #0x0 + bne _020AF4A8 +_020AF4EC: + cmp r5, #0x0 + beq _020AF5B8 + cmp r6, #0x0 + beq _020AF54C + ldr r9, [r1, #0x0] + cmp r9, #0x0 + ldrne r3, [r9, #0xc] + strne r3, [r1, #0x0] + cmp r9, #0x0 + beq _020AF5B8 + ldr r4, [r5, #0x0] + mov r3, #0x0 + str r4, [r9, #0x0] + str r6, [r9, #0x4] + str r3, [r9, #0x8] + str r3, [r9, #0xc] + ldr r3, [r0, #0x0] + cmp r3, #0x0 + strne r9, [r3, #0x8] + ldr r4, [r0, #0x0] + mov r3, #0x0 + str r4, [r9, #0xc] + str r3, [r9, #0x8] + str r9, [r0, #0x0] +_020AF54C: + ldr r3, [r5, #0x4] + sub r3, r3, r7 + str r3, [r5, #0x4] + ldr r3, [r5, #0x0] + add r3, r3, r7 + str r3, [r5, #0x0] + ldr r3, [r5, #0x4] + cmp r3, #0x0 + bne _020AF5AC + ldr r4, [r5, #0x8] + ldr r3, [r5, #0xc] + cmp r4, #0x0 + strne r3, [r4, #0xc] + streq r3, [r0, #0x0] + cmp r3, #0x0 + strne r4, [r3, #0x8] + ldr r0, [r1, #0x0] + cmp r0, #0x0 + strne r5, [r0, #0x8] + ldr r3, [r1, #0x0] + mov r0, #0x0 + str r3, [r5, #0xc] + str r0, [r5, #0x8] + str r5, [r1, #0x0] +_020AF5AC: + str r8, [r2, #0x0] + mov r0, #0x1 + ldmia sp!, {r4-r10,pc} +_020AF5B8: + mov r0, #0x0 + str r0, [r2, #0x0] + ldmia sp!, {r4-r10,pc} + arm_func_end NNSi_GfdAllocLnkVramAligned + + arm_func_start NNSi_GfdAllocLnkVram +NNSi_GfdAllocLnkVram: ; 0x020AF5C4 + stmdb sp!, {lr} + sub sp, sp, #0x4 + mov r12, #0x0 + str r12, [sp, #0x0] + bl NNSi_GfdAllocLnkVramAligned + add sp, sp, #0x4 + ldmia sp!, {pc} + arm_func_end NNSi_GfdAllocLnkVram + + arm_func_start NNSi_GfdAddNewFreeBlock +NNSi_GfdAddNewFreeBlock: ; 0x020AF5E0 + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr lr, [r1, #0x0] + cmp lr, #0x0 + ldrne r12, [lr, #0xc] + strne r12, [r1, #0x0] + cmp lr, #0x0 + beq _020AF640 + str r2, [lr, #0x0] + str r3, [lr, #0x4] + mov r1, #0x0 + str r1, [lr, #0x8] + str r1, [lr, #0xc] + ldr r1, [r0, #0x0] + add sp, sp, #0x4 + cmp r1, #0x0 + strne lr, [r1, #0x8] + ldr r2, [r0, #0x0] + mov r1, #0x0 + str r2, [lr, #0xc] + str r1, [lr, #0x8] + str lr, [r0, #0x0] + mov r0, #0x1 + ldmia sp!, {pc} +_020AF640: + mov r0, #0x0 + add sp, sp, #0x4 + ldmia sp!, {pc} + arm_func_end NNSi_GfdAddNewFreeBlock + + arm_func_start NNSi_GfdInitLnkVramBlockPool +NNSi_GfdInitLnkVramBlockPool: ; 0x020AF64C + stmdb sp!, {r4,lr} + subs lr, r1, #0x1 + mov r2, #0x0 + beq _020AF684 + mov r4, r0 +_020AF660: + add r12, r2, #0x1 + add r2, r0, r2, lsl #0x4 + add r3, r0, r12, lsl #0x4 + str r3, [r2, #0xc] + str r4, [r3, #0x8] + mov r2, r12 + cmp r12, lr + add r4, r4, #0x10 + blo _020AF660 +_020AF684: + mov r2, #0x0 + str r2, [r0, #0x8] + add r1, r0, r1, lsl #0x4 + str r2, [r1, #-0x4] + ldmia sp!, {r4,pc} + arm_func_end NNSi_GfdInitLnkVramBlockPool + + arm_func_start NNSi_GfdInitLnkVramMan +NNSi_GfdInitLnkVramMan: ; 0x020AF698 + mov r1, #0x0 + str r1, [r0, #0x0] + bx lr + arm_func_end NNSi_GfdInitLnkVramMan diff --git a/arm9/asm/NNS_SND_capture.s b/arm9/asm/NNS_SND_capture.s new file mode 100644 index 00000000..a4e04212 --- /dev/null +++ b/arm9/asm/NNS_SND_capture.s @@ -0,0 +1,680 @@ + .include "asm/macros.inc" + .include "global.inc" + + .section .bss + + .global sIsThreadCreated +sIsThreadCreated: ; 0x021D27A4 + .space 0x4 + + .global sCurEffectInfo +sCurEffectInfo: ; 0x021D27A8 + .space 0x4 + + .global sMesgQ +sMesgQ: ; 0x021D27AC + .space 0x20 + + .global sCapParam +sCapParam: ; 0x021D27CC + .space 0x54 + + .global sEffectInfoBuffer +sEffectInfoBuffer: ; 0x021D2820 + .space 0xa0 + + .section .text + + local_arm_func_start AlarmCallback +AlarmCallback: ; 0x020C177C + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + mov r7, r0 + ldr r4, [r7, #0x18] + ldr r0, [r7, #0x1c] + ldr r1, _020C186C ; =sIsThreadCreated + mul r0, r4, r0 + ldr r3, [r7, #0xc] + ldr r2, [r7, #0x10] + ldr r1, [r1, #0x0] + add r6, r3, r0 + cmp r1, #0x0 + add r5, r2, r0 + beq _020C180C + ldr r2, _020C1870 ; =sCurEffectInfo + mov r1, #0x14 + ldr r2, [r2, #0x0] + ldr r3, _020C1874 ; =sEffectInfoBuffer + mul r1, r2, r1 + str r7, [r3, r1] + add r1, r3, r1 + str r4, [r1, #0x4] + str r0, [r1, #0x8] + str r6, [r1, #0xc] + ldr r0, _020C1878 ; =sMesgQ + mov r2, #0x0 + str r5, [r1, #0x10] + bl OS_SendMessage + ldr r0, _020C1870 ; =sCurEffectInfo + ldr r1, [r0, #0x0] + add r1, r1, #0x1 + str r1, [r0, #0x0] + cmp r1, #0x8 + movge r1, #0x0 + strge r1, [r0, #0x0] + b _020C1844 +_020C180C: + mov r0, r6 + mov r1, r4 + bl DC_InvalidateRange + mov r0, r5 + mov r1, r4 + bl DC_InvalidateRange + ldr r1, [r7, #0x38] + mov r0, r6 + str r1, [sp, #0x0] + ldr r3, [r7, #0x8] + ldr r6, [r7, #0x34] + mov r1, r5 + mov r2, r4 + blx r6 +_020C1844: + ldr r0, [r7, #0x1c] + add r0, r0, #0x1 + str r0, [r7, #0x1c] + ldr r1, [r7, #0x1c] + ldr r0, [r7, #0x30] + cmp r1, r0 + movge r0, #0x0 + strge r0, [r7, #0x1c] + add sp, sp, #0x4 + ldmia sp!, {r4-r7,pc} + .balign 4 +_020C186C: .word sIsThreadCreated +_020C1870: .word sCurEffectInfo +_020C1874: .word sEffectInfoBuffer +_020C1878: .word sMesgQ + + arm_func_start NNSi_SndCaptureEndSleep +NNSi_SndCaptureEndSleep: ; 0x020C187C + stmdb sp!, {r4,lr} + ldr r4, _020C18F4 ; =sCapParam + ldr r0, [r4, #0x0] + cmp r0, #0x0 + ldmeqia sp!, {r4,pc} + mov r0, #0x0 + str r0, [r4, #0x1c] + ldr r1, [r4, #0xc] + ldr r2, [r4, #0x14] + bl MIi_CpuClear32 + ldr r1, [r4, #0x10] + ldr r2, [r4, #0x14] + mov r0, #0x0 + bl MIi_CpuClear32 + ldr r0, [r4, #0xc] + ldr r1, [r4, #0x14] + bl DC_FlushRange + ldr r0, [r4, #0x10] + ldr r1, [r4, #0x14] + bl DC_FlushRange + ldr r1, [r4, #0x2c] + mov r3, #0x0 + cmp r1, #0x0 + movge r0, #0x1 + movge r2, r0, lsl r1 + ldr r0, [r4, #0x24] + ldr r1, [r4, #0x28] + movlt r2, #0x0 + bl SND_StartTimer + ldmia sp!, {r4,pc} + .balign 4 +_020C18F4: .word sCapParam + + arm_func_start NNSi_SndCaptureBeginSleep +NNSi_SndCaptureBeginSleep: ; 0x020C18F8 + stmdb sp!, {r4,lr} + ldr r3, _020C194C ; =sCapParam + ldr r0, [r3, #0x0] + cmp r0, #0x0 + ldmeqia sp!, {r4,pc} + ldr r1, [r3, #0x2c] + cmp r1, #0x0 + movge r0, #0x1 + movge r2, r0, lsl r1 + ldr r0, [r3, #0x24] + ldr r1, [r3, #0x28] + movlt r2, #0x0 + mov r3, #0x0 + bl SND_StopTimer + bl SND_GetCurrentCommandTag + mov r4, r0 + mov r0, #0x1 + bl SND_FlushCommand + mov r0, r4 + bl SND_WaitForCommandProc + ldmia sp!, {r4,pc} + .balign 4 +_020C194C: .word sCapParam + + arm_func_start NNSi_SndCaptureStop +NNSi_SndCaptureStop: ; 0x020C1950 + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + ldr r4, _020C1A3C ; =sCapParam + ldr r0, [r4, #0x0] + cmp r0, #0x0 + addeq sp, sp, #0x4 + ldmeqia sp!, {r4-r7,pc} + ldr r1, [r4, #0x2c] + mov r3, #0x0 + cmp r1, #0x0 + movge r7, #0x1 + movlt r7, #0x0 + cmp r7, #0x0 + movne r0, #0x1 + movne r2, r0, lsl r1 + ldr r0, [r4, #0x24] + ldr r1, [r4, #0x28] + moveq r2, #0x0 + bl SND_StopTimer + cmp r7, #0x0 + beq _020C19DC + bl SND_GetCurrentCommandTag + mov r5, r0 + mov r0, #0x1 + bl SND_FlushCommand + mov r0, r5 + bl SND_WaitForCommandProc + ldr r6, _020C1A40 ; =sMesgQ + mov r5, #0x0 +_020C19C4: + mov r0, r6 + mov r1, r5 + mov r2, r5 + bl OS_ReceiveMessage + cmp r0, #0x0 + bne _020C19C4 +_020C19DC: + ldr r0, [r4, #0x28] + cmp r0, #0x0 + beq _020C19EC + bl NNS_SndUnlockCapture +_020C19EC: + ldr r0, [r4, #0x20] + cmp r0, #0x0 + beq _020C19FC + bl NNS_SndUnlockChannel +_020C19FC: + cmp r7, #0x0 + beq _020C1A0C + ldr r0, [r4, #0x2c] + bl NNS_SndFreeAlarm +_020C1A0C: + ldr r0, [r4, #0x4] + cmp r0, #0x1 + bne _020C1A2C + mov r0, #0x0 + mov r1, r0 + mov r2, r0 + mov r3, r0 + bl SND_SetOutputSelector +_020C1A2C: + mov r0, #0x0 + str r0, [r4, #0x0] + add sp, sp, #0x4 + ldmia sp!, {r4-r7,pc} + .balign 4 +_020C1A3C: .word sCapParam +_020C1A40: .word sMesgQ + + arm_func_start NNSi_SndCaptureStart +NNSi_SndCaptureStart: ; 0x020C1A44 + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0x3c + mov r10, r3 + str r0, [sp, #0x18] + str r2, [sp, #0x20] + mov r2, #0x0 + str r1, [sp, #0x1c] + mov r0, r1 + mov r1, r10 + ldr r9, [sp, #0x6c] + ldr r8, [sp, #0x74] + str r2, [sp, #0x2c] + mvn r6, #0x0 + ldr r4, _020C1D90 ; =sCapParam + bl DC_FlushRange + ldr r0, [sp, #0x20] + mov r1, r10 + bl DC_FlushRange + ldr r0, [sp, #0x60] + ldr r1, [sp, #0x70] + cmp r0, #0x1 + moveq r7, #0x1 + ldr r0, _020C1D94 ; =0x00FFB0FF + movne r7, #0x0 + bl _s32_div_f + ldr r1, [sp, #0x84] + mov r11, r0 + cmp r1, #0x0 + beq _020C1B00 + add r1, r11, #0x10 + bic r11, r1, #0x1f + mov r2, r11, asr #0x5 + mov r0, r10 + cmp r7, #0x0 + ldr r1, [sp, #0x80] + moveq r0, r10, lsr #0x1 + str r2, [sp, #0x34] + bl _u32_div_f + ldr r1, [sp, #0x34] + mov r5, #0x20 + mul r0, r1, r0 + str r0, [sp, #0x30] + cmp r7, #0x0 + ldr r0, [sp, #0x34] + moveq r5, r5, lsr #0x1 + mul r0, r5, r0 + mov r5, r0 +_020C1B00: + cmp r7, #0x0 + movne r0, #0x0 + strne r0, [sp, #0x28] + moveq r0, #0x1 + streq r0, [sp, #0x28] + cmp r7, #0x0 + movne r0, #0x1 + strne r0, [sp, #0x24] + moveq r0, #0x0 + streq r0, [sp, #0x24] + ldr r0, [sp, #0x18] + cmp r0, #0x2 + movne r0, #0xa + strne r0, [sp, #0x2c] + ldr r0, [sp, #0x84] + cmp r0, #0x0 + beq _020C1B58 + bl NNS_SndAllocAlarm + movs r6, r0 + addmi sp, sp, #0x3c + movmi r0, #0x0 + ldmmiia sp!, {r4-r11,pc} +_020C1B58: + mov r0, #0x3 + bl NNS_SndLockCapture + cmp r0, #0x0 + bne _020C1B84 + cmp r6, #0x0 + blt _020C1B78 + mov r0, r6 + bl NNS_SndFreeAlarm +_020C1B78: + add sp, sp, #0x3c + mov r0, #0x0 + ldmia sp!, {r4-r11,pc} +_020C1B84: + mov r0, #0xa + bl NNS_SndLockChannel + cmp r0, #0x0 + bne _020C1BB8 + cmp r6, #0x0 + blt _020C1BA4 + mov r0, r6 + bl NNS_SndFreeAlarm +_020C1BA4: + mov r0, #0x3 + bl NNS_SndUnlockCapture + add sp, sp, #0x3c + mov r0, #0x0 + ldmia sp!, {r4-r11,pc} +_020C1BB8: + mov r0, #0x0 + mov r7, r10, lsr #0x2 + str r0, [sp, #0x0] + str r7, [sp, #0x4] + str r8, [sp, #0x8] + str r0, [sp, #0xc] + cmp r9, #0x0 + movne r3, #0x1 + ldr r1, [sp, #0x78] + str r11, [sp, #0x10] + str r1, [sp, #0x14] + ldr r1, [sp, #0x28] + ldr r2, [sp, #0x1c] + moveq r3, #0x2 + mov r0, #0x1 + bl SND_SetupChannelPcm + ldr r1, [sp, #0x64] + str r9, [sp, #0x0] + str r1, [sp, #0x4] + ldr r0, [sp, #0x68] + ldr r1, [sp, #0x24] + str r0, [sp, #0x8] + ldr r2, [sp, #0x1c] + mov r0, #0x0 + mov r3, r7 + bl SND_SetupCapture + mov r0, #0x0 + str r0, [sp, #0x0] + str r7, [sp, #0x4] + str r8, [sp, #0x8] + str r0, [sp, #0xc] + cmp r9, #0x0 + movne r3, #0x1 + ldr r2, [sp, #0x7c] + str r11, [sp, #0x10] + str r2, [sp, #0x14] + ldr r1, [sp, #0x28] + ldr r2, [sp, #0x20] + moveq r3, #0x2 + mov r0, #0x3 + bl SND_SetupChannelPcm + ldr r2, [sp, #0x64] + str r9, [sp, #0x0] + str r2, [sp, #0x4] + ldr r0, [sp, #0x68] + ldr r1, [sp, #0x24] + str r0, [sp, #0x8] + ldr r2, [sp, #0x20] + mov r3, r7 + mov r0, #0x1 + bl SND_SetupCapture + cmp r6, #0x0 + blt _020C1CA8 + ldr r2, [sp, #0x30] + ldr r3, _020C1D98 ; =AlarmCallback + mov r1, r2 + mov r0, r6 + add r1, r1, r5 + str r4, [sp, #0x0] + bl SND_SetupAlarm +_020C1CA8: + ldr r0, [sp, #0x18] + cmp r0, #0x1 + bne _020C1CC8 + mov r0, #0x1 + mov r2, r0 + mov r3, r0 + mov r1, #0x2 + bl SND_SetOutputSelector +_020C1CC8: + cmp r6, #0x0 + movge r0, #0x1 + movge r2, r0, lsl r6 + ldr r0, [sp, #0x2c] + movlt r2, #0x0 + mov r1, #0x3 + mov r3, #0x0 + bl SND_StartTimer + mov r0, #0x1 + str r0, [r4, #0x0] + ldr r0, [sp, #0x18] + ldr r1, [sp, #0x80] + str r0, [r4, #0x4] + mov r0, #0xa + str r0, [r4, #0x20] + ldr r0, [sp, #0x2c] + str r0, [r4, #0x24] + mov r0, #0x3 + str r0, [r4, #0x28] + ldr r0, [sp, #0x60] + str r6, [r4, #0x2c] + str r0, [r4, #0x8] + ldr r0, [sp, #0x1c] + str r0, [r4, #0xc] + ldr r0, [sp, #0x20] + str r0, [r4, #0x10] + mov r0, r10 + str r10, [r4, #0x14] + bl _u32_div_f + str r0, [r4, #0x18] + mov r1, #0x0 + str r1, [r4, #0x1c] + ldr r0, [sp, #0x80] + ldr r1, [sp, #0x84] + str r0, [r4, #0x30] + ldr r0, [sp, #0x88] + str r1, [r4, #0x34] + str r0, [r4, #0x38] + add r0, r4, #0x3c + str r8, [r4, #0x50] + bl NNSi_SndFaderInit + add r0, r4, #0x3c + mov r1, r8, lsl #0x8 + mov r2, #0x1 + bl NNSi_SndFaderSet + mov r0, #0x0 + str r0, [r4, #0x4c] + mov r0, #0x1 + add sp, sp, #0x3c + ldmia sp!, {r4-r11,pc} + .balign 4 +_020C1D90: .word sCapParam +_020C1D94: .word 0x00FFB0FF +_020C1D98: .word AlarmCallback + + arm_func_start NNSi_SndCaptureMain +NNSi_SndCaptureMain: ; 0x020C1D9C + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + ldr r5, _020C1E34 ; =sCapParam + ldr r0, [r5, #0x0] + cmp r0, #0x0 + addeq sp, sp, #0x4 + ldmeqia sp!, {r4-r5,pc} + ldr r0, [r5, #0x4] + cmp r0, #0x0 + addne sp, sp, #0x4 + ldmneia sp!, {r4-r5,pc} + add r4, r5, #0x3c + mov r0, r4 + bl NNSi_SndFaderUpdate + ldr r0, [r5, #0x4c] + cmp r0, #0x0 + beq _020C1DFC + mov r0, r4 + bl NNSi_SndFaderIsFinished + cmp r0, #0x0 + beq _020C1DFC + bl NNSi_SndCaptureStop + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} +_020C1DFC: + mov r0, r4 + bl NNSi_SndFaderGet + ldr r1, [r5, #0x50] + mov r4, r0, asr #0x8 + cmp r4, r1 + addeq sp, sp, #0x4 + ldmeqia sp!, {r4-r5,pc} + ldr r0, [r5, #0x24] + mov r1, r4 + mov r2, #0x0 + bl SND_SetChannelVolume + str r4, [r5, #0x50] + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + .balign 4 +_020C1E34: .word sCapParam + + arm_func_start NNSi_SndCaptureInit +NNSi_SndCaptureInit: ; 0x020C1E38 + ldr r1, _020C1E50 ; =sIsThreadCreated + mov r2, #0x0 + ldr r0, _020C1E54 ; =sCapParam + str r2, [r1, #0x0] + str r2, [r0, #0x0] + bx lr + .balign 4 +_020C1E50: .word sIsThreadCreated +_020C1E54: .word sCapParam + + arm_func_start NNS_SndCaptureIsActive +NNS_SndCaptureIsActive: ; 0x020C1E58 + ldr r0, _020C1E64 ; =sCapParam + ldr r0, [r0, #0x0] + bx lr + .balign 4 +_020C1E64: .word sCapParam + + arm_func_start NNS_SndCaptureStopEffect +NNS_SndCaptureStopEffect: ; 0x020C1E68 + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r0, _020C1EA0 ; =sCapParam + ldr r1, [r0, #0x0] + cmp r1, #0x0 + addeq sp, sp, #0x4 + ldmeqia sp!, {pc} + ldr r0, [r0, #0x4] + cmp r0, #0x1 + addne sp, sp, #0x4 + ldmneia sp!, {pc} + bl NNSi_SndCaptureStop + add sp, sp, #0x4 + ldmia sp!, {pc} + .balign 4 +_020C1EA0: .word sCapParam + + arm_func_start NNS_SndCaptureStartEffect +NNS_SndCaptureStartEffect: ; 0x020C1EA4 + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x2c + mov r5, r0 + mov r4, r1 + mov r7, r2 + mov r6, r3 + bl NNS_SndCaptureStopEffect + ldr r0, _020C1F50 ; =sCapParam + ldr r0, [r0, #0x0] + cmp r0, #0x0 + addne sp, sp, #0x2c + movne r0, #0x0 + ldmneia sp!, {r4-r7,pc} + mov r1, r5 + mov r2, r4 + mov r0, #0x0 + bl MIi_CpuClear32 + mov r0, r5 + mov r1, r4 + bl DC_FlushRange + str r7, [sp, #0x0] + mov r2, #0x0 + str r2, [sp, #0x4] + str r2, [sp, #0x8] + mov r0, #0x1 + str r0, [sp, #0xc] + str r6, [sp, #0x10] + mov r1, #0x7f + str r1, [sp, #0x14] + str r2, [sp, #0x18] + ldr r2, [sp, #0x40] + str r1, [sp, #0x1c] + ldr r1, [sp, #0x44] + str r2, [sp, #0x20] + ldr r12, [sp, #0x48] + str r1, [sp, #0x24] + mov r1, r5 + mov r3, r4, lsr #0x1 + add r2, r5, r4, lsr #0x1 + str r12, [sp, #0x28] + bl NNSi_SndCaptureStart + add sp, sp, #0x2c + ldmia sp!, {r4-r7,pc} + .balign 4 +_020C1F50: .word sCapParam + + arm_func_start NNS_SndCaptureStopReverb +NNS_SndCaptureStopReverb: ; 0x020C1F54 + stmdb sp!, {r4,lr} + ldr r4, _020C1FA0 ; =sCapParam + mov r2, r0 + ldr r0, [r4, #0x0] + cmp r0, #0x0 + ldmeqia sp!, {r4,pc} + ldr r0, [r4, #0x4] + cmp r0, #0x0 + ldmneia sp!, {r4,pc} + cmp r2, #0x0 + bne _020C1F88 + bl NNSi_SndCaptureStop + ldmia sp!, {r4,pc} +_020C1F88: + add r0, r4, #0x3c + mov r1, #0x0 + bl NNSi_SndFaderSet + mov r0, #0x1 + str r0, [r4, #0x4c] + ldmia sp!, {r4,pc} + .balign 4 +_020C1FA0: .word sCapParam + + arm_func_start NNS_SndCaptureSetReverbVolume +NNS_SndCaptureSetReverbVolume: ; 0x020C1FA4 + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r3, _020C1FEC ; =sCapParam + mov r12, r0 + ldr r0, [r3, #0x0] + mov r2, r1 + cmp r0, #0x0 + addeq sp, sp, #0x4 + ldmeqia sp!, {pc} + ldr r0, [r3, #0x4] + cmp r0, #0x0 + addne sp, sp, #0x4 + ldmneia sp!, {pc} + add r0, r3, #0x3c + mov r1, r12, lsl #0x8 + bl NNSi_SndFaderSet + add sp, sp, #0x4 + ldmia sp!, {pc} + .balign 4 +_020C1FEC: .word sCapParam + + arm_func_start NNS_SndCaptureStartReverb +NNS_SndCaptureStartReverb: ; 0x020C1FF0 + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x2c + mov r5, r0 + mov r0, #0x0 + mov r4, r1 + mov r7, r2 + mov r6, r3 + bl NNS_SndCaptureStopReverb + ldr r0, _020C2098 ; =sCapParam + ldr r0, [r0, #0x0] + cmp r0, #0x0 + addne sp, sp, #0x2c + movne r0, #0x0 + ldmneia sp!, {r4-r7,pc} + mov r1, r5 + mov r2, r4 + mov r0, #0x0 + bl MIi_CpuClear32 + mov r0, r5 + mov r1, r4 + bl DC_FlushRange + str r7, [sp, #0x0] + mov r0, #0x0 + str r0, [sp, #0x4] + str r0, [sp, #0x8] + mov r1, #0x1 + str r1, [sp, #0xc] + ldr r1, [sp, #0x40] + str r6, [sp, #0x10] + str r1, [sp, #0x14] + str r0, [sp, #0x18] + mov r1, #0x7f + str r1, [sp, #0x1c] + str r0, [sp, #0x20] + str r0, [sp, #0x24] + mov r1, r5 + mov r3, r4, lsr #0x1 + add r2, r5, r4, lsr #0x1 + str r0, [sp, #0x28] + bl NNSi_SndCaptureStart + add sp, sp, #0x2c + ldmia sp!, {r4-r7,pc} + .balign 4 +_020C2098: .word sCapParam diff --git a/arm9/asm/NNS_SND_fader.s b/arm9/asm/NNS_SND_fader.s new file mode 100644 index 00000000..938456a9 --- /dev/null +++ b/arm9/asm/NNS_SND_fader.s @@ -0,0 +1,63 @@ + .include "asm/macros.inc" + .include "global.inc" + + .section .text + + arm_func_start NNSi_SndFaderIsFinished +NNSi_SndFaderIsFinished: ; 0x020C3DDC + ldr r1, [r0, #0x8] + ldr r0, [r0, #0xc] + cmp r1, r0 + movge r0, #0x1 + movlt r0, #0x0 + bx lr + + arm_func_start NNSi_SndFaderUpdate +NNSi_SndFaderUpdate: ; 0x020C3DF4 + ldr r2, [r0, #0x8] + ldr r1, [r0, #0xc] + cmp r2, r1 + addlt r1, r2, #0x1 + strlt r1, [r0, #0x8] + bx lr + + arm_func_start NNSi_SndFaderGet +NNSi_SndFaderGet: ; 0x020C3E0C + stmdb sp!, {r4,lr} + ldr r1, [r0, #0xc] + ldr r2, [r0, #0x8] + cmp r2, r1 + ldrge r0, [r0, #0x4] + ldmgeia sp!, {r4,pc} + ldr r4, [r0, #0x0] + ldr r0, [r0, #0x4] + sub r0, r0, r4 + mul r0, r2, r0 + bl _s32_div_f + add r0, r4, r0 + ldmia sp!, {r4,pc} + + arm_func_start NNSi_SndFaderSet +NNSi_SndFaderSet: ; 0x020C3E40 + stmdb sp!, {r4-r6,lr} + mov r6, r0 + mov r5, r1 + mov r4, r2 + bl NNSi_SndFaderGet + str r0, [r6, #0x0] + str r5, [r6, #0x4] + str r4, [r6, #0xc] + mov r0, #0x0 + str r0, [r6, #0x8] + ldmia sp!, {r4-r6,pc} + + arm_func_start NNSi_SndFaderInit +NNSi_SndFaderInit: ; 0x020C3E6C + mov r2, #0x0 + str r2, [r0, #0x4] + ldr r1, [r0, #0x4] + str r1, [r0, #0x0] + str r2, [r0, #0xc] + ldr r1, [r0, #0xc] + str r1, [r0, #0x8] + bx lr diff --git a/arm9/asm/NNS_SND_heap.s b/arm9/asm/NNS_SND_heap.s new file mode 100644 index 00000000..554c6bab --- /dev/null +++ b/arm9/asm/NNS_SND_heap.s @@ -0,0 +1,282 @@ + .include "asm/macros.inc" + .include "global.inc" + + .section .text + + arm_func_start EraseSync +EraseSync: ; 0x020C2774 + stmdb sp!, {r4,lr} + bl SND_GetCurrentCommandTag + mov r4, r0 + mov r0, #0x1 + bl SND_FlushCommand + mov r0, r4 + bl SND_WaitForCommandProc + ldmia sp!, {r4,pc} + + arm_func_start NewSection +NewSection: ; 0x020C2794 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r5, r0 + ldr r0, [r5, #0x0] + mov r1, #0x14 + mov r2, #0x4 + bl NNS_FndAllocFromFrmHeapEx + movs r4, r0 + addeq sp, sp, #0x4 + moveq r0, #0x0 + ldmeqia sp!, {r4-r5,pc} + bl InitHeapSection + mov r1, r4 + add r0, r5, #0x4 + bl NNS_FndAppendListObject + mov r0, #0x1 + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + + arm_func_start InitHeap +InitHeap: ; 0x020C27DC + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r5, r0 + mov r4, r1 + add r0, r5, #0x4 + mov r1, #0xc + bl NNS_FndInitList + mov r0, r5 + str r4, [r5, #0x0] + bl NewSection + cmp r0, #0x0 + movne r0, #0x1 + moveq r0, #0x0 + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + + arm_func_start InitHeapSection +InitHeapSection: ; 0x020C2818 + ldr ip, _020C2824 ; =NNS_FndInitList + mov r1, #0x0 + bx r12 + .balign 4 +_020C2824: .word NNS_FndInitList + + arm_func_start NNS_SndHeapLoadState +NNS_SndHeapLoadState: ; 0x020C2828 + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0x4 + mov r7, #0x0 + movs r9, r1 + mov r10, r0 + mov r6, r7 + bne _020C2850 + bl NNS_SndHeapClear + add sp, sp, #0x4 + ldmia sp!, {r4-r11,pc} +_020C2850: + ldrh r0, [r10, #0xc] + cmp r9, r0 + bge _020C28D8 + mov r11, r7 + add r5, r10, #0x4 + mov r4, #0x1 +_020C2868: + mov r0, r5 + mov r1, r11 + bl NNS_FndGetPrevListObject + mov r1, r7 + mov r8, r0 + bl NNS_FndGetPrevListObject + movs r7, r0 + beq _020C28C0 +_020C2888: + ldr r12, [r7, #0xc] + cmp r12, #0x0 + beq _020C28AC + ldr r1, [r7, #0x8] + ldr r2, [r7, #0x10] + ldr r3, [r7, #0x14] + add r0, r7, #0x20 + blx r12 + mov r6, r4 +_020C28AC: + mov r0, r8 + mov r1, r7 + bl NNS_FndGetPrevListObject + movs r7, r0 + bne _020C2888 +_020C28C0: + mov r0, r5 + mov r1, r8 + bl NNS_FndRemoveListObject + ldrh r0, [r10, #0xc] + cmp r9, r0 + blt _020C2868 +_020C28D8: + ldr r0, [r10, #0x0] + mov r1, r9 + bl NNS_FndFreeByStateToFrmHeap + cmp r6, #0x0 + beq _020C28F0 + bl EraseSync +_020C28F0: + ldrh r1, [r10, #0xc] + ldr r0, [r10, #0x0] + bl NNS_FndRecordStateForFrmHeap + mov r0, r10 + bl NewSection + add sp, sp, #0x4 + ldmia sp!, {r4-r11,pc} + + arm_func_start NNS_SndHeapSaveState +NNS_SndHeapSaveState: ; 0x020C290C + stmdb sp!, {r4,lr} + mov r4, r0 + ldrh r1, [r4, #0xc] + ldr r0, [r4, #0x0] + bl NNS_FndRecordStateForFrmHeap + cmp r0, #0x0 + mvneq r0, #0x0 + ldmeqia sp!, {r4,pc} + mov r0, r4 + bl NewSection + cmp r0, #0x0 + ldrneh r0, [r4, #0xc] + subne r0, r0, #0x1 + ldmneia sp!, {r4,pc} + ldr r0, [r4, #0x0] + mov r1, #0x0 + bl NNS_FndFreeByStateToFrmHeap + mvn r0, #0x0 + ldmia sp!, {r4,pc} + + arm_func_start NNS_SndHeapAlloc +NNS_SndHeapAlloc: ; 0x020C2958 + stmdb sp!, {r4-r8,lr} + mov r7, r1 + mov r8, r0 + add r0, r7, #0x1f + bic r1, r0, #0x1f + mov r6, r2 + ldr r0, [r8, #0x0] + add r1, r1, #0x20 + mov r2, #0x20 + mov r5, r3 + bl NNS_FndAllocFromFrmHeapEx // some allocator? + movs r4, r0 + moveq r0, #0x0 + ldmeqia sp!, {r4-r8,pc} + add r0, r8, #0x4 + mov r1, #0x0 + bl NNS_FndGetPrevListObject + str r7, [r4, #0x8] + str r6, [r4, #0xc] + ldr r2, [sp, #0x18] + str r5, [r4, #0x10] + mov r1, r4 + str r2, [r4, #0x14] + bl NNS_FndAppendListObject + add r0, r4, #0x20 + ldmia sp!, {r4-r8,pc} + + arm_func_start NNS_SndHeapClear +NNS_SndHeapClear: ; 0x020C29C0 + stmdb sp!, {r4-r10,lr} + mov r8, r0 + mov r5, #0x0 + mov r1, r5 + add r0, r8, #0x4 + bl NNS_FndGetPrevListObject + movs r7, r0 + beq _020C2A58 + add r9, r8, #0x4 + mov r10, #0x1 + mov r4, r5 +_020C29EC: + mov r0, r7 + mov r1, r4 + bl NNS_FndGetPrevListObject + movs r6, r0 + beq _020C2A38 +_020C2A00: + ldr r12, [r6, #0xc] + cmp r12, #0x0 + beq _020C2A24 + ldr r1, [r6, #0x8] + ldr r2, [r6, #0x10] + ldr r3, [r6, #0x14] + add r0, r6, #0x20 + blx r12 + mov r5, r10 +_020C2A24: + mov r0, r7 + mov r1, r6 + bl NNS_FndGetPrevListObject + movs r6, r0 + bne _020C2A00 +_020C2A38: + mov r0, r9 + mov r1, r7 + bl NNS_FndRemoveListObject + mov r0, r9 + mov r1, r4 + bl NNS_FndGetPrevListObject + movs r7, r0 + bne _020C29EC +_020C2A58: + ldr r0, [r8, #0x0] + mov r1, #0x3 + bl NNS_FndFreeToFrmHeap + cmp r5, #0x0 + beq _020C2A70 + bl EraseSync +_020C2A70: + mov r0, r8 + bl NewSection + ldmia sp!, {r4-r10,pc} + + arm_func_start NNS_SndHeapDestroy +NNS_SndHeapDestroy: ; 0x020C2A7C + stmdb sp!, {r4,lr} + mov r4, r0 + bl NNS_SndHeapClear + ldr r0, [r4, #0x0] + bl NNS_FndDestroyFrmHeap + ldmia sp!, {r4,pc} + + arm_func_start NNS_SndHeapCreate +NNS_SndHeapCreate: ; 0x020C2A94 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + add r2, r0, #0x3 + add r0, r0, r1 + bic r5, r2, #0x3 + cmp r5, r0 + addhi sp, sp, #0x4 + movhi r0, #0x0 + ldmhiia sp!, {r4-r5,pc} + sub r1, r0, r5 + cmp r1, #0x10 + addcc sp, sp, #0x4 + movcc r0, #0x0 + ldmccia sp!, {r4-r5,pc} + add r0, r5, #0x10 + sub r1, r1, #0x10 + mov r2, #0x0 + bl NNS_FndCreateFrmHeapEx + movs r4, r0 + addeq sp, sp, #0x4 + moveq r0, #0x0 + ldmeqia sp!, {r4-r5,pc} + mov r0, r5 + mov r1, r4 + bl InitHeap + cmp r0, #0x0 + addne sp, sp, #0x4 + movne r0, r5 + ldmneia sp!, {r4-r5,pc} + mov r0, r4 + bl NNS_FndDestroyFrmHeap + mov r0, #0x0 + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} diff --git a/arm9/asm/NNS_SND_main.s b/arm9/asm/NNS_SND_main.s new file mode 100644 index 00000000..4cbe3d65 --- /dev/null +++ b/arm9/asm/NNS_SND_main.s @@ -0,0 +1,125 @@ + .include "asm/macros.inc" + .include "global.inc" + + .section .bss + + .global sCurDriverInfo +sCurDriverInfo: ; 0x021D1C8C + .space 0x4 + + .global sDriverInfoFirstFlag +sDriverInfoFirstFlag: ; 0x021D1C90 + .space 0x4 + + .global initialized$8127 +initialized$8127: ; 0x021D1C94 + .space 0x4 + + .global sPreSleepCallback +sPreSleepCallback: ; 0x021D1C98 + .space 0xc + + .global sPostSleepCallback +sPostSleepCallback: ; 0x021D1CA4 + .space 0xc + + .section .text + + local_arm_func_start EndSleep +EndSleep: ; 0x020C0130 + ldr ip, _020C0138 ; =NNSi_SndCaptureEndSleep + bx r12 + .balign 4 +_020C0138: .word NNSi_SndCaptureEndSleep + + local_arm_func_start BeginSleep +BeginSleep: ; 0x020C013C + stmdb sp!, {r4,lr} + bl NNSi_SndCaptureBeginSleep + mov r0, #0x0 + mov r1, r0 + mov r2, r0 + mov r3, r0 + bl SND_StopTimer + bl SND_GetCurrentCommandTag + mov r4, r0 + mov r0, #0x1 + bl SND_FlushCommand + mov r0, r4 + bl SND_WaitForCommandProc + ldmia sp!, {r4,pc} + + arm_func_start NNS_SndSetMonoFlag +NNS_SndSetMonoFlag: ; 0x020C0174 + stmdb sp!, {lr} + sub sp, sp, #0x4 + cmp r0, #0x0 + beq _020C0194 + mov r0, #0x40 + bl SND_SetMasterPan + add sp, sp, #0x4 + ldmia sp!, {pc} +_020C0194: + bl SND_ResetMasterPan + add sp, sp, #0x4 + ldmia sp!, {pc} + + arm_func_start NNS_SndMain +NNS_SndMain: ; 0x020C01A0 + stmdb sp!, {r4,lr} + mov r4, #0x0 +_020C01A8: + mov r0, r4 + bl SND_RecvCommandReply + cmp r0, #0x0 + bne _020C01A8 + bl NNSi_SndPlayerMain + bl NNSi_SndCaptureMain + bl NNSi_SndArcStrmMain + mov r0, #0x0 + bl SND_FlushCommand + ldmia sp!, {r4,pc} + + arm_func_start NNS_SndInit +NNS_SndInit: ; 0x020C01D0 + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r0, _020C0254 ; =initialized$8127 + ldr r1, [r0, #0x0] + cmp r1, #0x0 + addne sp, sp, #0x4 + ldmneia sp!, {pc} + mov r1, #0x1 + str r1, [r0, #0x0] + bl SND_Init + ldr ip, _020C0258 ; =BeginSleep + ldr r0, _020C025C ; =sPreSleepCallback + mov r3, #0x0 + ldr r1, _020C0260 ; =sPostSleepCallback + ldr r2, _020C0264 ; =EndSleep + str r12, [r0, #0x0] + str r3, [r0, #0x4] + str r2, [r1, #0x0] + str r3, [r1, #0x4] + bl PM_PrependPreSleepCallback + ldr r0, _020C0260 ; =sPostSleepCallback + bl PM_AppendPostSleepCallback + bl NNSi_SndInitResourceMgr + bl NNSi_SndCaptureInit + bl NNSi_SndPlayerInit + ldr r1, _020C0268 ; =sCurDriverInfo + mvn r3, #0x0 + ldr r0, _020C026C ; =sDriverInfoFirstFlag + mov r2, #0x1 + strb r3, [r1, #0x0] + str r2, [r0, #0x0] + add sp, sp, #0x4 + ldmia sp!, {pc} + .balign 4 +_020C0254: .word initialized$8127 +_020C0258: .word BeginSleep +_020C025C: .word sPreSleepCallback +_020C0260: .word sPostSleepCallback +_020C0264: .word EndSleep +_020C0268: .word sCurDriverInfo +_020C026C: .word sDriverInfoFirstFlag diff --git a/arm9/asm/NNS_SND_player.s b/arm9/asm/NNS_SND_player.s new file mode 100644 index 00000000..caaf345e --- /dev/null +++ b/arm9/asm/NNS_SND_player.s @@ -0,0 +1,877 @@ + .include "asm/macros.inc" + .include "global.inc" + + .section .bss + + .global sFreeList +sFreeList: ; 0x021D1DFC + .space 0xc + + .global sPrioList +sPrioList: ; 0x021D1E08 + .space 0xc + + .global sSeqPlayer +sSeqPlayer: ; 0x021D1E14 + .space 0x440 + + .global sPlayer +sPlayer: ; 0x021D2254 + .space 0x480 + + .section .text + + arm_func_start SetPlayerPriority +SetPlayerPriority: ; 0x020C06CC + stmdb sp!, {r4-r6,lr} + mov r6, r0 + ldr r4, [r6, #0x4] + mov r5, r1 + cmp r4, #0x0 + beq _020C06F8 + mov r0, r4 + mov r1, r6 + bl NNS_FndRemoveListObject + mov r0, #0x0 + str r0, [r6, #0x4] +_020C06F8: + ldr r0, _020C0728 ; =sPrioList + mov r1, r6 + bl NNS_FndRemoveListObject + strb r5, [r6, #0x3d] + cmp r4, #0x0 + beq _020C071C + mov r0, r4 + mov r1, r6 + bl InsertPlayerList +_020C071C: + mov r0, r6 + bl InsertPrioList + ldmia sp!, {r4-r6,pc} + .balign 4 +_020C0728: .word sPrioList + + arm_func_start PlayerHeapDisposeCallback +PlayerHeapDisposeCallback: ; 0x020C072C + stmdb sp!, {r4,lr} + mov r4, r0 + ldr r0, [r4, #0x8] + cmp r0, #0x0 + ldmeqia sp!, {r4,pc} + bl NNS_SndHeapDestroy + ldr r1, [r4, #0xc] + cmp r1, #0x0 + movne r0, #0x0 + strne r0, [r1, #0x8] + ldmneia sp!, {r4,pc} + ldr r1, [r4, #0x10] + ldr r2, _020C0778 ; =sPlayer + mov r0, #0x24 + mla r0, r1, r0, r2 + mov r1, r4 + add r0, r0, #0xc + bl NNS_FndRemoveListObject + ldmia sp!, {r4,pc} + .balign 4 +_020C0778: .word sPlayer + + local_arm_func_start ShutdownPlayer +ShutdownPlayer: ; 0x020C077C + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r4, r0 + ldr r1, [r4, #0x0] + cmp r1, #0x0 + movne r0, #0x0 + strne r0, [r1, #0x0] + strne r0, [r4, #0x0] + ldr r5, [r4, #0x4] + mov r1, r4 + mov r0, r5 + bl NNS_FndRemoveListObject + mov r0, #0x0 + str r0, [r4, #0x4] + ldr r1, [r4, #0x8] + cmp r1, #0x0 + beq _020C07D8 + add r0, r5, #0xc + bl NNS_FndAppendListObject + ldr r0, [r4, #0x8] + mov r1, #0x0 + str r1, [r0, #0xc] + str r1, [r4, #0x8] +_020C07D8: + ldr r0, _020C0800 ; =sPrioList + mov r1, r4 + bl NNS_FndRemoveListObject + ldr r0, _020C0804 ; =sFreeList + mov r1, r4 + bl NNS_FndAppendListObject + mov r0, #0x0 + strb r0, [r4, #0x2c] + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + .balign 4 +_020C0800: .word sPrioList +_020C0804: .word sFreeList + + arm_func_start AllocSeqPlayer +AllocSeqPlayer: ; 0x020C0808 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r5, r0 + ldr r0, _020C0874 ; =sFreeList + mov r1, #0x0 + bl NNS_FndGetNextListObject + movs r4, r0 + bne _020C0850 + ldr r0, _020C0878 ; =sPrioList + mov r1, #0x0 + bl NNS_FndGetNextListObject + mov r4, r0 + ldrb r1, [r4, #0x3d] + cmp r5, r1 + addlt sp, sp, #0x4 + movlt r0, #0x0 + ldmltia sp!, {r4-r5,pc} + bl ForceStopSeq +_020C0850: + ldr r0, _020C0874 ; =sFreeList + mov r1, r4 + bl NNS_FndRemoveListObject + mov r0, r4 + strb r5, [r4, #0x3d] + bl InsertPrioList + mov r0, r4 + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + .balign 4 +_020C0874: .word sFreeList +_020C0878: .word sPrioList + + arm_func_start ForceStopSeq +ForceStopSeq: ; 0x020C087C + stmdb sp!, {r4,lr} + mov r4, r0 + ldrb r0, [r4, #0x2c] + cmp r0, #0x2 + bne _020C089C + ldrb r0, [r4, #0x3c] + ldr r1, _020C08B0 ; =0xFFFFFD2D + bl SND_SetPlayerVolume +_020C089C: + ldrb r0, [r4, #0x3c] + bl SND_StopSeq + mov r0, r4 + bl ShutdownPlayer + ldmia sp!, {r4,pc} + .balign 4 +_020C08B0: .word 0xFFFFFD2D + + arm_func_start InsertPrioList +InsertPrioList: ; 0x020C08B4 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r5, r0 + ldr r0, _020C090C ; =sPrioList + mov r1, #0x0 + bl NNS_FndGetNextListObject + movs r1, r0 + beq _020C08F8 + ldr r4, _020C090C ; =sPrioList +_020C08D8: + ldrb r2, [r5, #0x3d] + ldrb r0, [r1, #0x3d] + cmp r2, r0 + blo _020C08F8 + mov r0, r4 + bl NNS_FndGetNextListObject + movs r1, r0 + bne _020C08D8 +_020C08F8: + ldr r0, _020C090C ; =sPrioList + mov r2, r5 + bl NNS_FndInsertListObject + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + .balign 4 +_020C090C: .word sPrioList + + arm_func_start InsertPlayerList +InsertPlayerList: ; 0x020C0910 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r4, r1 + mov r1, #0x0 + mov r5, r0 + bl NNS_FndGetNextListObject + movs r1, r0 + beq _020C0950 +_020C0930: + ldrb r2, [r4, #0x3d] + ldrb r0, [r1, #0x3d] + cmp r2, r0 + blo _020C0950 + mov r0, r5 + bl NNS_FndGetNextListObject + movs r1, r0 + bne _020C0930 +_020C0950: + mov r0, r5 + mov r2, r4 + bl NNS_FndInsertListObject + str r5, [r4, #0x4] + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + + arm_func_start InitPlayer +InitPlayer: ; 0x020C0968 + stmdb sp!, {r4,lr} + mov r4, r0 + mov r0, #0x0 + strb r0, [r4, #0x2e] + strb r0, [r4, #0x2d] + strb r0, [r4, #0x2f] + strh r0, [r4, #0x34] + strh r0, [r4, #0x3e] + mov r1, #0x7f + strb r1, [r4, #0x40] + add r0, r4, #0x1c + strb r1, [r4, #0x41] + bl NNSi_SndFaderInit + add r0, r4, #0x1c + mov r1, #0x7f00 + mov r2, #0x1 + bl NNSi_SndFaderSet + ldmia sp!, {r4,pc} + + arm_func_start NNSi_SndPlayerAllocHeap +NNSi_SndPlayerAllocHeap: ; 0x020C09B0 + stmdb sp!, {r4-r6,lr} + ldr r3, _020C0A00 ; =sPlayer + mov r2, #0x24 + mla r5, r0, r2, r3 + mov r6, r1 + add r0, r5, #0xc + mov r1, #0x0 + bl NNS_FndGetNextListObject + movs r4, r0 + moveq r0, #0x0 + ldmeqia sp!, {r4-r6,pc} + mov r1, r4 + add r0, r5, #0xc + bl NNS_FndRemoveListObject + str r6, [r4, #0xc] + str r4, [r6, #0x8] + ldr r0, [r4, #0x8] + bl NNS_SndHeapClear + ldr r0, [r4, #0x8] + ldmia sp!, {r4-r6,pc} + .balign 4 +_020C0A00: .word sPlayer + + arm_func_start NNSi_SndPlayerPause +NNSi_SndPlayerPause: ; 0x020C0A04 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + movs r5, r0 + mov r4, r1 + addeq sp, sp, #0x4 + ldmeqia sp!, {r4-r5,pc} + ldrb r0, [r5, #0x2e] + cmp r4, r0 + addeq sp, sp, #0x4 + ldmeqia sp!, {r4-r5,pc} + ldrb r0, [r5, #0x3c] + bl SND_PauseSeq + strb r4, [r5, #0x2e] + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + + arm_func_start NNSi_SndPlayerStopSeq +NNSi_SndPlayerStopSeq: ; 0x020C0A40 + stmdb sp!, {r4,lr} + movs r4, r0 + mov r2, r1 + ldmeqia sp!, {r4,pc} + ldrb r1, [r4, #0x2c] + cmp r1, #0x0 + ldmeqia sp!, {r4,pc} + cmp r2, #0x0 + bne _020C0A6C + bl ForceStopSeq + ldmia sp!, {r4,pc} +_020C0A6C: + add r0, r4, #0x1c + mov r1, #0x0 + bl NNSi_SndFaderSet + mov r0, r4 + mov r1, #0x0 + bl SetPlayerPriority + mov r0, #0x2 + strb r0, [r4, #0x2c] + ldmia sp!, {r4,pc} + + arm_func_start NNSi_SndPlayerStartSeq +NNSi_SndPlayerStartSeq: ; 0x020C0A90 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r5, r0 + ldrb r0, [r5, #0x3c] + ldr r4, [r5, #0x4] + bl SND_PrepareSeq + ldr r2, [r4, #0x1c] + cmp r2, #0x0 + beq _020C0AC0 + ldrb r0, [r5, #0x3c] + ldr r1, _020C0AE4 ; =0x0000FFFF + bl SND_SetTrackAllocatableChannel +_020C0AC0: + mov r0, r5 + bl InitPlayer + bl SND_GetCurrentCommandTag + str r0, [r5, #0x30] + mov r0, #0x1 + strb r0, [r5, #0x2f] + strb r0, [r5, #0x2c] + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + .balign 4 +_020C0AE4: .word 0x0000FFFF + + arm_func_start NNSi_SndPlayerFreeSeqPlayer +NNSi_SndPlayerFreeSeqPlayer: ; 0x020C0AE8 + ldr ip, _020C0AF0 ; =ShutdownPlayer + bx r12 + .balign 4 +_020C0AF0: .word ShutdownPlayer + + arm_func_start NNSi_SndPlayerAllocSeqPlayer +NNSi_SndPlayerAllocSeqPlayer: ; 0x020C0AF4 + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + ldr ip, _020C0B9C ; =sPlayer + mov r3, #0x24 + mov r4, r0 + ldr r5, [r4, #0x0] + mla r6, r1, r3, r12 + mov r7, r2 + cmp r5, #0x0 + beq _020C0B20 + bl NNS_SndHandleReleaseSeq +_020C0B20: + ldrh r1, [r6, #0x8] + ldr r0, [r6, #0x18] + cmp r1, r0 + blo _020C0B64 + mov r0, r6 + mov r1, #0x0 + bl NNS_FndGetNextListObject + cmp r0, #0x0 + addeq sp, sp, #0x4 + moveq r0, #0x0 + ldmeqia sp!, {r4-r7,pc} + ldrb r1, [r0, #0x3d] + cmp r7, r1 + addlt sp, sp, #0x4 + movlt r0, #0x0 + ldmltia sp!, {r4-r7,pc} + bl ForceStopSeq +_020C0B64: + mov r0, r7 + bl AllocSeqPlayer + movs r5, r0 + addeq sp, sp, #0x4 + moveq r0, #0x0 + ldmeqia sp!, {r4-r7,pc} + mov r0, r6 + mov r1, r5 + bl InsertPlayerList + str r4, [r5, #0x0] + mov r0, r5 + str r5, [r4, #0x0] + add sp, sp, #0x4 + ldmia sp!, {r4-r7,pc} + .balign 4 +_020C0B9C: .word sPlayer + + arm_func_start NNSi_SndPlayerMain +NNSi_SndPlayerMain: ; 0x020C0BA0 + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0xc + bl SND_GetPlayerStatus + str r0, [sp, #0x0] + ldr r0, _020C0D14 ; =sPrioList + mov r1, #0x0 + bl NNS_FndGetNextListObject + movs r10, r0 + addeq sp, sp, #0xc + ldmeqia sp!, {r4-r11,pc} + mov r0, #0x8000 + rsb r0, r0, #0x0 + ldr r4, _020C0D18 ; =SNDi_DecibelTable + str r0, [sp, #0x4] + mov r5, #0x1 + mov r11, #0x0 +_020C0BE0: + ldr r0, _020C0D14 ; =sPrioList + mov r1, r10 + bl NNS_FndGetNextListObject + ldrb r1, [r10, #0x2d] + mov r9, r0 + cmp r1, #0x0 + bne _020C0C0C + ldr r0, [r10, #0x30] + bl SND_IsFinishedCommandTag + cmp r0, #0x0 + strneb r5, [r10, #0x2d] +_020C0C0C: + ldrb r0, [r10, #0x2d] + cmp r0, #0x0 + beq _020C0C38 + ldrb r0, [r10, #0x3c] + mov r1, r5, lsl r0 + ldr r0, [sp, #0x0] + ands r0, r0, r1 + bne _020C0C38 + mov r0, r10 + bl ShutdownPlayer + b _020C0D00 +_020C0C38: + add r0, r10, #0x1c + bl NNSi_SndFaderUpdate + ldr r0, [r10, #0x4] + ldrb r2, [r10, #0x41] + ldrb r1, [r10, #0x40] + ldrb r0, [r0, #0x20] + mov r3, r2, lsl #0x1 + mov r2, r1, lsl #0x1 + mov r1, r0, lsl #0x1 + add r0, r10, #0x1c + ldrsh r8, [r4, r3] + ldrsh r7, [r4, r2] + ldrsh r6, [r4, r1] + bl NNSi_SndFaderGet + mov r0, r0, asr #0x8 + mov r2, r0, lsl #0x1 + add r1, r7, r8 + mov r0, #0x8000 + ldrsh r2, [r4, r2] + add r1, r6, r1 + rsb r0, r0, #0x0 + add r6, r2, r1 + cmp r6, r0 + ldrlt r6, [sp, #0x4] + blt _020C0CA8 + ldr r0, _020C0D1C ; =0x00007FFF + cmp r6, r0 + movgt r6, r0 +_020C0CA8: + ldrsh r0, [r10, #0x3e] + cmp r6, r0 + beq _020C0CC4 + ldrb r0, [r10, #0x3c] + mov r1, r6 + bl SND_SetPlayerVolume + strh r6, [r10, #0x3e] +_020C0CC4: + ldrb r0, [r10, #0x2c] + cmp r0, #0x2 + bne _020C0CE8 + add r0, r10, #0x1c + bl NNSi_SndFaderIsFinished + cmp r0, #0x0 + beq _020C0CE8 + mov r0, r10 + bl ForceStopSeq +_020C0CE8: + ldrb r0, [r10, #0x2f] + cmp r0, #0x0 + beq _020C0D00 + ldrb r0, [r10, #0x3c] + bl SND_StartPreparedSeq + strb r11, [r10, #0x2f] +_020C0D00: + mov r10, r9 + cmp r9, #0x0 + bne _020C0BE0 + add sp, sp, #0xc + ldmia sp!, {r4-r11,pc} + .balign 4 +_020C0D14: .word sPrioList +_020C0D18: .word SNDi_DecibelTable +_020C0D1C: .word 0x00007FFF + + arm_func_start NNSi_SndPlayerInit +NNSi_SndPlayerInit: ; 0x020C0D20 + stmdb sp!, {r4-r10,lr} + ldr r0, _020C0DC4 ; =sPrioList + mov r1, #0x14 + bl NNS_FndInitList + ldr r0, _020C0DC8 ; =sFreeList + mov r1, #0x14 + bl NNS_FndInitList + ldr r6, _020C0DCC ; =sSeqPlayer + mov r7, #0x0 + ldr r4, _020C0DC8 ; =sFreeList + mov r5, r7 +_020C0D4C: + strb r5, [r6, #0x2c] + mov r0, r4 + mov r1, r6 + strb r7, [r6, #0x3c] + bl NNS_FndAppendListObject + add r7, r7, #0x1 + cmp r7, #0x10 + add r6, r6, #0x44 + blt _020C0D4C + ldr sl, _020C0DD0 ; =sPlayer + mov r9, #0x0 + mov r7, r9 + mov r4, r9 + mov r8, #0xc + mov r6, #0x7f + mov r5, #0x1 +_020C0D8C: + mov r0, r10 + mov r1, r8 + bl NNS_FndInitList + mov r1, r7 + add r0, r10, #0xc + bl NNS_FndInitList + strb r6, [r10, #0x20] + str r5, [r10, #0x18] + add r9, r9, #0x1 + str r4, [r10, #0x1c] + cmp r9, #0x20 + add r10, r10, #0x24 + blt _020C0D8C + ldmia sp!, {r4-r10,pc} + .balign 4 +_020C0DC4: .word sPrioList +_020C0DC8: .word sFreeList +_020C0DCC: .word sSeqPlayer +_020C0DD0: .word sPlayer + + arm_func_start NNS_SndPlayerGetTick +NNS_SndPlayerGetTick: ; 0x020C0DD4 + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r1, [r0, #0x0] + cmp r1, #0x0 + addeq sp, sp, #0x4 + moveq r0, #0x0 + ldmeqia sp!, {pc} + ldrb r0, [r1, #0x2d] + cmp r0, #0x0 + addeq sp, sp, #0x4 + moveq r0, #0x0 + ldmeqia sp!, {pc} + ldrb r0, [r1, #0x3c] + bl SND_GetPlayerTickCounter + add sp, sp, #0x4 + ldmia sp!, {pc} + + arm_func_start NNS_SndPlayerGetSeqNo +NNS_SndPlayerGetSeqNo: ; 0x020C0E14 + ldr r1, [r0, #0x0] + cmp r1, #0x0 + mvneq r0, #0x0 + bxeq lr + ldrh r0, [r1, #0x34] + cmp r0, #0x1 + mvnne r0, #0x0 + ldreqh r0, [r1, #0x38] + bx lr + + arm_func_start NNS_SndPlayerSetSeqArcNo +NNS_SndPlayerSetSeqArcNo: ; 0x020C0E38 + ldr r12, [r0, #0x0] + cmp r12, #0x0 + bxeq lr + mov r3, #0x2 + strh r3, [r12, #0x34] + ldr r3, [r0, #0x0] + strh r1, [r3, #0x38] + ldr r0, [r0, #0x0] + strh r2, [r0, #0x3a] + bx lr + + arm_func_start NNS_SndPlayerSetSeqNo +NNS_SndPlayerSetSeqNo: ; 0x020C0E60 + ldr r3, [r0, #0x0] + cmp r3, #0x0 + movne r2, #0x1 + strneh r2, [r3, #0x34] + ldrne r0, [r0, #0x0] + strneh r1, [r0, #0x38] + bx lr + + arm_func_start NNS_SndPlayerSetTrackPan +NNS_SndPlayerSetTrackPan: ; 0x020C0E7C + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r0, [r0, #0x0] + cmp r0, #0x0 + addeq sp, sp, #0x4 + ldmeqia sp!, {pc} + ldrb r0, [r0, #0x3c] + bl SND_SetTrackPan + add sp, sp, #0x4 + ldmia sp!, {pc} + + arm_func_start NNS_SndPlayerSetTrackPitch +NNS_SndPlayerSetTrackPitch: ; 0x020C0EA4 + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r0, [r0, #0x0] + cmp r0, #0x0 + addeq sp, sp, #0x4 + ldmeqia sp!, {pc} + ldrb r0, [r0, #0x3c] + bl SND_SetTrackPitch + add sp, sp, #0x4 + ldmia sp!, {pc} + + arm_func_start NNS_SndPlayerSetChannelPriority +NNS_SndPlayerSetChannelPriority: ; 0x020C0ECC + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r0, [r0, #0x0] + cmp r0, #0x0 + addeq sp, sp, #0x4 + ldmeqia sp!, {pc} + ldrb r0, [r0, #0x3c] + bl SND_SetPlayerChannelPriority + add sp, sp, #0x4 + ldmia sp!, {pc} + + arm_func_start NNS_SndPlayerMoveVolume +NNS_SndPlayerMoveVolume: ; 0x020C0EF4 + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r3, [r0, #0x0] + cmp r3, #0x0 + addeq sp, sp, #0x4 + ldmeqia sp!, {pc} + ldrb r0, [r3, #0x2c] + cmp r0, #0x2 + addeq sp, sp, #0x4 + ldmeqia sp!, {pc} + add r0, r3, #0x1c + mov r1, r1, lsl #0x8 + bl NNSi_SndFaderSet + add sp, sp, #0x4 + ldmia sp!, {pc} + + arm_func_start NNS_SndPlayerSetInitialVolume +NNS_SndPlayerSetInitialVolume: ; 0x020C0F30 + ldr r0, [r0, #0x0] + cmp r0, #0x0 + strneb r1, [r0, #0x40] + bx lr + + arm_func_start NNS_SndPlayerSetVolume +NNS_SndPlayerSetVolume: ; 0x020C0F40 + ldr r0, [r0, #0x0] + cmp r0, #0x0 + strneb r1, [r0, #0x41] + bx lr + + arm_func_start NNS_SndPlayerCountPlayingSeqByPlayerNo +NNS_SndPlayerCountPlayingSeqByPlayerNo: ; 0x020C0F50 + mov r1, #0x24 + mul r1, r0, r1 + ldr r0, _020C0F64 ; =sPlayer + 0x8 + ldrh r0, [r0, r1] + bx lr + .balign 4 +_020C0F64: .word sPlayer + 0x8 + + arm_func_start NNS_SndHandleReleaseSeq +NNS_SndHandleReleaseSeq: ; 0x020C0F68 + ldr r2, [r0, #0x0] + cmp r2, #0x0 + movne r1, #0x0 + strne r1, [r2, #0x0] + strne r1, [r0, #0x0] + bx lr + + arm_func_start NNS_SndHandleInit +NNS_SndHandleInit: ; 0x020C0F80 + mov r1, #0x0 + str r1, [r0, #0x0] + bx lr + + arm_func_start NNS_SndPlayerPause +NNS_SndPlayerPause: ; 0x020C0F8C + ldr ip, _020C0F98 ; =NNSi_SndPlayerPause + ldr r0, [r0, #0x0] + bx r12 + .balign 4 +_020C0F98: .word NNSi_SndPlayerPause + + arm_func_start NNS_SndPlayerStopSeqAll +NNS_SndPlayerStopSeqAll: ; 0x020C0F9C + stmdb sp!, {r4-r6,lr} + ldr r4, _020C0FD8 ; =sSeqPlayer + mov r6, r0 + mov r5, #0x0 +_020C0FAC: + ldrb r0, [r4, #0x2c] + cmp r0, #0x0 + beq _020C0FC4 + mov r0, r4 + mov r1, r6 + bl NNSi_SndPlayerStopSeq +_020C0FC4: + add r5, r5, #0x1 + cmp r5, #0x10 + add r4, r4, #0x44 + blt _020C0FAC + ldmia sp!, {r4-r6,pc} + .balign 4 +_020C0FD8: .word sSeqPlayer + + arm_func_start NNS_SndPlayerStopSeqBySeqNo +NNS_SndPlayerStopSeqBySeqNo: ; 0x020C0FDC + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + ldr r4, _020C103C ; =sSeqPlayer + mov r7, r0 + mov r6, r1 + mov r5, #0x0 +_020C0FF4: + ldrb r0, [r4, #0x2c] + cmp r0, #0x0 + beq _020C1024 + ldrh r0, [r4, #0x34] + cmp r0, #0x1 + bne _020C1024 + ldrh r0, [r4, #0x38] + cmp r0, r7 + bne _020C1024 + mov r0, r4 + mov r1, r6 + bl NNSi_SndPlayerStopSeq +_020C1024: + add r5, r5, #0x1 + cmp r5, #0x10 + add r4, r4, #0x44 + blt _020C0FF4 + add sp, sp, #0x4 + ldmia sp!, {r4-r7,pc} + .balign 4 +_020C103C: .word sSeqPlayer + + arm_func_start NNS_SndPlayerStopSeqByPlayerNo +NNS_SndPlayerStopSeqByPlayerNo: ; 0x020C1040 + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + ldr r3, _020C109C ; =sPlayer + mov r2, #0x24 + mla r4, r0, r2, r3 + ldr r5, _020C10A0 ; =sSeqPlayer + mov r7, r1 + mov r6, #0x0 +_020C1060: + ldrb r0, [r5, #0x2c] + cmp r0, #0x0 + beq _020C1084 + ldr r0, [r5, #0x4] + cmp r0, r4 + bne _020C1084 + mov r0, r5 + mov r1, r7 + bl NNSi_SndPlayerStopSeq +_020C1084: + add r6, r6, #0x1 + cmp r6, #0x10 + add r5, r5, #0x44 + blt _020C1060 + add sp, sp, #0x4 + ldmia sp!, {r4-r7,pc} + .balign 4 +_020C109C: .word sPlayer +_020C10A0: .word sSeqPlayer + + arm_func_start NNS_SndPlayerStopSeq +NNS_SndPlayerStopSeq: ; 0x020C10A4 + ldr ip, _020C10B0 ; =NNSi_SndPlayerStopSeq + ldr r0, [r0, #0x0] + bx r12 + .balign 4 +_020C10B0: .word NNSi_SndPlayerStopSeq + + arm_func_start NNS_SndPlayerCreateHeap +NNS_SndPlayerCreateHeap: ; 0x020C10B4 + stmdb sp!, {r4-r6,lr} + sub sp, sp, #0x8 + mov r5, r2 + mov r6, r0 + mov r0, r1 + mov r3, #0x0 + ldr r2, _020C1140 ; =PlayerHeapDisposeCallback + add r1, r5, #0x14 + str r3, [sp, #0x0] + bl NNS_SndHeapAlloc + movs r4, r0 + addeq sp, sp, #0x8 + moveq r0, #0x0 + ldmeqia sp!, {r4-r6,pc} + mov r2, #0x0 + str r2, [r4, #0xc] + str r6, [r4, #0x10] + mov r1, r5 + add r0, r4, #0x14 + str r2, [r4, #0x8] + bl NNS_SndHeapCreate + cmp r0, #0x0 + addeq sp, sp, #0x8 + moveq r0, #0x0 + ldmeqia sp!, {r4-r6,pc} + ldr r2, _020C1144 ; =sPlayer + mov r1, #0x24 + mla r2, r6, r1, r2 + str r0, [r4, #0x8] + mov r1, r4 + add r0, r2, #0xc + bl NNS_FndAppendListObject + mov r0, #0x1 + add sp, sp, #0x8 + ldmia sp!, {r4-r6,pc} + .balign 4 +_020C1140: .word PlayerHeapDisposeCallback +_020C1144: .word sPlayer + + arm_func_start NNS_SndPlayerSetAllocatableChannel +NNS_SndPlayerSetAllocatableChannel: ; 0x020C1148 + mov r2, #0x24 + mul r2, r0, r2 + ldr r0, _020C115C ; =sPlayer + 0x1C + str r1, [r0, r2] + bx lr + .balign 4 +_020C115C: .word sPlayer + 0x1C + + arm_func_start NNS_SndPlayerSetPlayableSeqCount +NNS_SndPlayerSetPlayableSeqCount: ; 0x020C1160 + mov r2, #0x24 + mul r2, r0, r2 + mov r0, r1, lsl #0x10 + ldr r1, _020C117C ; =sPlayer + 0x18 + mov r0, r0, lsr #0x10 + str r0, [r1, r2] + bx lr + .balign 4 +_020C117C: .word sPlayer + 0x18 + + arm_func_start NNS_SndPlayerSetPlayerVolume +NNS_SndPlayerSetPlayerVolume: ; 0x020C1180 + mov r2, #0x24 + mul r2, r0, r2 + ldr r0, _020C1194 ; =sPlayer + 0x20 + strb r1, [r0, r2] + bx lr + .balign 4 +_020C1194: .word sPlayer + 0x20 diff --git a/arm9/asm/NNS_SND_resource_mgr.s b/arm9/asm/NNS_SND_resource_mgr.s new file mode 100644 index 00000000..944754cc --- /dev/null +++ b/arm9/asm/NNS_SND_resource_mgr.s @@ -0,0 +1,129 @@ + .include "asm/macros.inc" + .include "global.inc" + + .section .bss + + .global sCaptureLock +sCaptureLock: ; 0x021D1CB0 + .space 0x4 + + .global sAlarmLock +sAlarmLock: ; 0x021D1CB4 + .space 0x4 + + .global sChannelLock +sChannelLock: ; 0x021D1CB8 + .space 0x4 + + .section .text + + arm_func_start NNSi_SndInitResourceMgr +NNSi_SndInitResourceMgr: ; 0x020C0270 + ldr r2, _020C0290 ; =sChannelLock + mov r3, #0x0 + ldr r1, _020C0294 ; =sCaptureLock + ldr r0, _020C0298 ; =sAlarmLock + str r3, [r2, #0x0] + str r3, [r1, #0x0] + str r3, [r0, #0x0] + bx lr + .balign 4 +_020C0290: .word sChannelLock +_020C0294: .word sCaptureLock +_020C0298: .word sAlarmLock + + arm_func_start NNS_SndFreeAlarm +NNS_SndFreeAlarm: ; 0x020C029C + ldr r1, _020C02B8 ; =sAlarmLock + mov r2, #0x1 + mvn r0, r2, lsl r0 + ldr r2, [r1, #0x0] + and r0, r2, r0 + str r0, [r1, #0x0] + bx lr + .balign 4 +_020C02B8: .word sAlarmLock + + arm_func_start NNS_SndAllocAlarm +NNS_SndAllocAlarm: ; 0x020C02BC + ldr r0, _020C02FC ; =sAlarmLock + mov r3, #0x1 + ldr r2, [r0, #0x0] + mov r0, #0x0 +_020C02CC: + ands r1, r2, r3 + ldreq r1, _020C02FC ; =sAlarmLock + ldreq r2, [r1, #0x0] + orreq r2, r2, r3 + streq r2, [r1, #0x0] + bxeq lr + add r0, r0, #0x1 + cmp r0, #0x8 + mov r3, r3, lsl #0x1 + blt _020C02CC + mvn r0, #0x0 + bx lr + .balign 4 +_020C02FC: .word sAlarmLock + + arm_func_start NNS_SndUnlockCapture +NNS_SndUnlockCapture: ; 0x020C0300 + ldr r1, _020C0318 ; =sCaptureLock + mvn r0, r0 + ldr r2, [r1, #0x0] + and r0, r2, r0 + str r0, [r1, #0x0] + bx lr + .balign 4 +_020C0318: .word sCaptureLock + + arm_func_start NNS_SndLockCapture +NNS_SndLockCapture: ; 0x020C031C + ldr r1, _020C033C ; =sCaptureLock + ldr r2, [r1, #0x0] + ands r3, r0, r2 + movne r0, #0x0 + orreq r0, r2, r0 + streq r0, [r1, #0x0] + moveq r0, #0x1 + bx lr + .balign 4 +_020C033C: .word sCaptureLock + + arm_func_start NNS_SndUnlockChannel +NNS_SndUnlockChannel: ; 0x020C0340 + stmdb sp!, {r4,lr} + movs r4, r0 + ldmeqia sp!, {r4,pc} + mov r1, #0x0 + bl SND_UnlockChannel + ldr r0, _020C036C ; =sChannelLock + mvn r1, r4 + ldr r2, [r0, #0x0] + and r1, r2, r1 + str r1, [r0, #0x0] + ldmia sp!, {r4,pc} + .balign 4 +_020C036C: .word sChannelLock + + arm_func_start NNS_SndLockChannel +NNS_SndLockChannel: ; 0x020C0370 + stmdb sp!, {r4,lr} + movs r4, r0 + moveq r0, #0x1 + ldmeqia sp!, {r4,pc} + ldr r1, _020C03B4 ; =sChannelLock + ldr r1, [r1, #0x0] + ands r1, r4, r1 + movne r0, #0x0 + ldmneia sp!, {r4,pc} + mov r1, #0x0 + bl SND_LockChannel + ldr r1, _020C03B4 ; =sChannelLock + mov r0, #0x1 + ldr r2, [r1, #0x0] + orr r2, r2, r4 + str r2, [r1, #0x0] + ldmia sp!, {r4,pc} + .balign 4 +_020C03B4: .word sChannelLock diff --git a/arm9/asm/NNS_SND_seqdata.s b/arm9/asm/NNS_SND_seqdata.s new file mode 100644 index 00000000..60cf2420 --- /dev/null +++ b/arm9/asm/NNS_SND_seqdata.s @@ -0,0 +1,23 @@ + .include "asm/macros.inc" + .include "global.inc" + + .section .text + + arm_func_start NNSi_SndSeqArcGetSeqInfo +NNSi_SndSeqArcGetSeqInfo: ; 0x020C3D9C + cmp r1, #0x0 + movlt r0, #0x0 + bxlt lr + ldr r2, [r0, #0x1c] + cmp r1, r2 + movcs r0, #0x0 + bxcs lr + mov r2, #0xc + mul r2, r1, r2 + add r3, r0, #0x20 + ldr r1, [r3, r2] + mvn r0, #0x0 + cmp r1, r0 + add r0, r3, r2 + moveq r0, #0x0 + bx lr diff --git a/arm9/asm/NNS_SND_sndarc.s b/arm9/asm/NNS_SND_sndarc.s new file mode 100644 index 00000000..aa46de46 --- /dev/null +++ b/arm9/asm/NNS_SND_sndarc.s @@ -0,0 +1,525 @@ + .include "asm/macros.inc" + .include "global.inc" + + .section .bss + + .global sCurrent +sCurrent: ; 0x021D28C0 + .space 0x4 + + .section .text + + arm_func_start SymbolDisposeCallback +SymbolDisposeCallback: ; 0x020C209C + mov r0, #0x0 + str r0, [r2, #0x88] + bx lr + + arm_func_start FatDisposeCallback +FatDisposeCallback: ; 0x020C20A8 + mov r0, #0x0 + str r0, [r2, #0x84] + bx lr + + arm_func_start InfoDisposeCallback +InfoDisposeCallback: ; 0x020C20B4 + mov r0, #0x0 + str r0, [r2, #0x8c] + bx lr + + arm_func_start NNS_SndArcSetFileAddress +NNS_SndArcSetFileAddress: ; 0x020C20C0 + ldr r2, _020C20D8 ; =sCurrent + ldr r2, [r2, #0x0] + ldr r2, [r2, #0x84] + add r0, r2, r0, lsl #0x4 + str r1, [r0, #0x14] + bx lr + .balign 4 +_020C20D8: .word sCurrent + + arm_func_start NNS_SndArcGetFileAddress +NNS_SndArcGetFileAddress: ; 0x020C20DC + ldr r1, _020C2100 ; =sCurrent + ldr r1, [r1, #0x0] + ldr r2, [r1, #0x84] + ldr r1, [r2, #0x8] + cmp r0, r1 + movcs r0, #0x0 + addcc r0, r2, r0, lsl #0x4 + ldrcc r0, [r0, #0x14] + bx lr + .balign 4 +_020C2100: .word sCurrent + + arm_func_start NNS_SndArcReadFile +NNS_SndArcReadFile: ; 0x020C2104 + stmdb sp!, {r4-r6,lr} + ldr r4, _020C2178 ; =sCurrent + mov r5, r2 + ldr r4, [r4, #0x0] + mov r6, r1 + ldr r2, [r4, #0x84] + ldr r1, [r2, #0x8] + cmp r0, r1 + mvncs r0, #0x0 + ldmcsia sp!, {r4-r6,pc} + add r1, r2, #0xc + add r1, r1, r0, lsl #0x4 + ldr r0, [r1, #0x4] + ldr r1, [r1, #0x0] + sub r0, r0, r3 + cmp r5, r0 + movhi r5, r0 + add r0, r4, #0x34 + add r1, r1, r3 + mov r2, #0x0 + bl FS_SeekFile + cmp r0, #0x0 + mvneq r0, #0x0 + ldmeqia sp!, {r4-r6,pc} + mov r1, r6 + mov r2, r5 + add r0, r4, #0x34 + bl FS_ReadFile + ldmia sp!, {r4-r6,pc} + .balign 4 +_020C2178: .word sCurrent + + arm_func_start NNS_SndArcGetFileSize +NNS_SndArcGetFileSize: ; 0x020C217C + ldr r1, _020C21A0 ; =sCurrent + ldr r1, [r1, #0x0] + ldr r2, [r1, #0x84] + ldr r1, [r2, #0x8] + cmp r0, r1 + movcs r0, #0x0 + addcc r0, r2, r0, lsl #0x4 + ldrcc r0, [r0, #0x10] + bx lr + .balign 4 +_020C21A0: .word sCurrent + + arm_func_start NNS_SndArcGetGroupInfo +NNS_SndArcGetGroupInfo: ; 0x020C21A4 + ldr r1, _020C2204 ; =sCurrent + ldr r3, [r1, #0x0] + ldr r2, [r3, #0x8c] + ldr r1, [r2, #0x1c] + cmp r1, #0x0 + moveq r2, #0x0 + addne r2, r2, r1 + cmp r2, #0x0 + moveq r0, #0x0 + bxeq lr + cmp r0, #0x0 + movlt r0, #0x0 + bxlt lr + ldr r1, [r2, #0x0] + cmp r0, r1 + movcs r0, #0x0 + bxcs lr + add r0, r2, r0, lsl #0x2 + ldr r1, [r0, #0x4] + ldr r0, [r3, #0x8c] + cmp r1, #0x0 + moveq r0, #0x0 + addne r0, r0, r1 + bx lr + .balign 4 +_020C2204: .word sCurrent + + arm_func_start NNS_SndArcGetPlayerInfo +NNS_SndArcGetPlayerInfo: ; 0x020C2208 + ldr r1, _020C2268 ; =sCurrent + ldr r3, [r1, #0x0] + ldr r2, [r3, #0x8c] + ldr r1, [r2, #0x18] + cmp r1, #0x0 + moveq r2, #0x0 + addne r2, r2, r1 + cmp r2, #0x0 + moveq r0, #0x0 + bxeq lr + cmp r0, #0x0 + movlt r0, #0x0 + bxlt lr + ldr r1, [r2, #0x0] + cmp r0, r1 + movcs r0, #0x0 + bxcs lr + add r0, r2, r0, lsl #0x2 + ldr r1, [r0, #0x4] + ldr r0, [r3, #0x8c] + cmp r1, #0x0 + moveq r0, #0x0 + addne r0, r0, r1 + bx lr + .balign 4 +_020C2268: .word sCurrent + + arm_func_start NNS_SndArcGetWaveArcInfo +NNS_SndArcGetWaveArcInfo: ; 0x020C226C + ldr r1, _020C22CC ; =sCurrent + ldr r3, [r1, #0x0] + ldr r2, [r3, #0x8c] + ldr r1, [r2, #0x14] + cmp r1, #0x0 + moveq r2, #0x0 + addne r2, r2, r1 + cmp r2, #0x0 + moveq r0, #0x0 + bxeq lr + cmp r0, #0x0 + movlt r0, #0x0 + bxlt lr + ldr r1, [r2, #0x0] + cmp r0, r1 + movcs r0, #0x0 + bxcs lr + add r0, r2, r0, lsl #0x2 + ldr r1, [r0, #0x4] + ldr r0, [r3, #0x8c] + cmp r1, #0x0 + moveq r0, #0x0 + addne r0, r0, r1 + bx lr + .balign 4 +_020C22CC: .word sCurrent + + arm_func_start NNS_SndArcGetBankInfo +NNS_SndArcGetBankInfo: ; 0x020C22D0 + ldr r1, _020C2330 ; =sCurrent + ldr r3, [r1, #0x0] + ldr r2, [r3, #0x8c] + ldr r1, [r2, #0x10] + cmp r1, #0x0 + moveq r2, #0x0 + addne r2, r2, r1 + cmp r2, #0x0 + moveq r0, #0x0 + bxeq lr + cmp r0, #0x0 + movlt r0, #0x0 + bxlt lr + ldr r1, [r2, #0x0] + cmp r0, r1 + movcs r0, #0x0 + bxcs lr + add r0, r2, r0, lsl #0x2 + ldr r1, [r0, #0x4] + ldr r0, [r3, #0x8c] + cmp r1, #0x0 + moveq r0, #0x0 + addne r0, r0, r1 + bx lr + .balign 4 +_020C2330: .word sCurrent + + arm_func_start NNS_SndArcGetSeqArcInfo +NNS_SndArcGetSeqArcInfo: ; 0x020C2334 + ldr r1, _020C2394 ; =sCurrent + ldr r3, [r1, #0x0] + ldr r2, [r3, #0x8c] + ldr r1, [r2, #0xc] + cmp r1, #0x0 + moveq r2, #0x0 + addne r2, r2, r1 + cmp r2, #0x0 + moveq r0, #0x0 + bxeq lr + cmp r0, #0x0 + movlt r0, #0x0 + bxlt lr + ldr r1, [r2, #0x0] + cmp r0, r1 + movcs r0, #0x0 + bxcs lr + add r0, r2, r0, lsl #0x2 + ldr r1, [r0, #0x4] + ldr r0, [r3, #0x8c] + cmp r1, #0x0 + moveq r0, #0x0 + addne r0, r0, r1 + bx lr + .balign 4 +_020C2394: .word sCurrent + + arm_func_start NNS_SndArcGetSeqInfo +NNS_SndArcGetSeqInfo: ; 0x020C2398 + ldr r1, _020C23F8 ; =sCurrent + ldr r3, [r1, #0x0] + ldr r2, [r3, #0x8c] + ldr r1, [r2, #0x8] + cmp r1, #0x0 + moveq r2, #0x0 + addne r2, r2, r1 + cmp r2, #0x0 + moveq r0, #0x0 + bxeq lr + cmp r0, #0x0 + movlt r0, #0x0 + bxlt lr + ldr r1, [r2, #0x0] + cmp r0, r1 + movcs r0, #0x0 + bxcs lr + add r0, r2, r0, lsl #0x2 + ldr r1, [r0, #0x4] + ldr r0, [r3, #0x8c] + cmp r1, #0x0 + moveq r0, #0x0 + addne r0, r0, r1 + bx lr + .balign 4 +_020C23F8: .word sCurrent + + arm_func_start NNS_SndArcGetSeqParam +NNS_SndArcGetSeqParam: ; 0x020C23FC + stmdb sp!, {lr} + sub sp, sp, #0x4 + bl NNS_SndArcGetSeqInfo + cmp r0, #0x0 + moveq r0, #0x0 + addne r0, r0, #0x4 + add sp, sp, #0x4 + ldmia sp!, {pc} + + arm_func_start NNS_SndArcGetCurrent +NNS_SndArcGetCurrent: ; 0x020C241C + ldr r0, _020C2428 ; =sCurrent + ldr r0, [r0, #0x0] + bx lr + .balign 4 +_020C2428: .word sCurrent + + arm_func_start NNS_SndArcSetCurrent +NNS_SndArcSetCurrent: ; 0x020C242C + ldr r1, _020C2440 ; =sCurrent + ldr r2, [r1, #0x0] + str r0, [r1, #0x0] + mov r0, r2 + bx lr + .balign 4 +_020C2440: .word sCurrent + + arm_func_start NNS_SndArcInitOnMemory +NNS_SndArcInitOnMemory: ; 0x020C2444 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r5, r0 + mov r4, r1 + mov r0, r4 + mov r1, r5 + mov r2, #0x30 + bl MIi_CpuCopy32 + ldr r0, [r5, #0x18] + mov r12, #0x0 + cmp r0, #0x0 + moveq r0, #0x0 + addne r0, r4, r0 + str r0, [r5, #0x8c] + ldr r0, [r5, #0x20] + cmp r0, #0x0 + moveq r0, #0x0 + addne r0, r4, r0 + str r0, [r5, #0x84] + ldr r0, [r5, #0x10] + cmp r0, #0x0 + moveq r0, #0x0 + addne r0, r4, r0 + str r0, [r5, #0x88] + ldr r2, [r5, #0x84] + ldr r0, [r2, #0x8] + cmp r0, #0x0 + bls _020C24F0 + mov r3, r12 + mov r1, r12 +_020C24BC: + add r2, r2, #0xc + ldr r0, [r2, r3] + add r2, r2, r3 + cmp r0, #0x0 + moveq r0, r1 + addne r0, r4, r0 + str r0, [r2, #0x8] + ldr r2, [r5, #0x84] + add r12, r12, #0x1 + ldr r0, [r2, #0x8] + add r3, r3, #0x10 + cmp r12, r0 + blo _020C24BC +_020C24F0: + mov r1, #0x0 + ldr r0, _020C2508 ; =sCurrent + str r1, [r5, #0x30] + str r5, [r0, #0x0] + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + .balign 4 +_020C2508: .word sCurrent +SDATi_ReadHeaders: + stmdb sp!, {r4-r6,lr} + sub sp, sp, #0x8 + mov r6, r0 + mov r5, r1 + mov r1, #0x0 + mov r4, r2 + mov r2, r1 + add r0, r6, #0x34 + bl FS_SeekFile + cmp r0, #0x0 + addeq sp, sp, #0x8 + moveq r0, #0x0 + ldmeqia sp!, {r4-r6,pc} + mov r1, r6 + add r0, r6, #0x34 + mov r2, #0x30 + bl FS_ReadFile + cmp r0, #0x30 + addne sp, sp, #0x8 + movne r0, #0x0 + ldmneia sp!, {r4-r6,pc} + cmp r5, #0x0 + beq _020C26E0 + mov r0, #0x0 + str r0, [sp, #0x0] + ldr r1, [r6, #0x1c] + ldr r2, _020C26EC ; =InfoDisposeCallback + mov r0, r5 + mov r3, r6 + bl NNS_SndHeapAlloc + str r0, [r6, #0x8c] + ldr r0, [r6, #0x8c] + cmp r0, #0x0 + addeq sp, sp, #0x8 + moveq r0, #0x0 + ldmeqia sp!, {r4-r6,pc} + ldr r1, [r6, #0x18] + add r0, r6, #0x34 + mov r2, #0x0 + bl FS_SeekFile + cmp r0, #0x0 + addeq sp, sp, #0x8 + moveq r0, #0x0 + ldmeqia sp!, {r4-r6,pc} + ldr r1, [r6, #0x8c] + ldr r2, [r6, #0x1c] + add r0, r6, #0x34 + bl FS_ReadFile + ldr r1, [r6, #0x1c] + cmp r0, r1 + addne sp, sp, #0x8 + movne r0, #0x0 + ldmneia sp!, {r4-r6,pc} + mov r0, #0x0 + str r0, [sp, #0x0] + ldr r1, [r6, #0x24] + ldr r2, _020C26F0 ; =FatDisposeCallback + mov r0, r5 + mov r3, r6 + bl NNS_SndHeapAlloc + str r0, [r6, #0x84] + ldr r0, [r6, #0x84] + cmp r0, #0x0 + addeq sp, sp, #0x8 + moveq r0, #0x0 + ldmeqia sp!, {r4-r6,pc} + ldr r1, [r6, #0x20] + add r0, r6, #0x34 + mov r2, #0x0 + bl FS_SeekFile + cmp r0, #0x0 + addeq sp, sp, #0x8 + moveq r0, #0x0 + ldmeqia sp!, {r4-r6,pc} + ldr r1, [r6, #0x84] + ldr r2, [r6, #0x24] + add r0, r6, #0x34 + bl FS_ReadFile + ldr r1, [r6, #0x24] + cmp r0, r1 + addne sp, sp, #0x8 + movne r0, #0x0 + ldmneia sp!, {r4-r6,pc} + cmp r4, #0x0 + beq _020C26E0 + ldr r1, [r6, #0x14] + cmp r1, #0x0 + beq _020C26E0 + mov r4, #0x0 + ldr r2, _020C26F4 ; =SymbolDisposeCallback + mov r0, r5 + mov r3, r6 + str r4, [sp, #0x0] + bl NNS_SndHeapAlloc + str r0, [r6, #0x88] + ldr r0, [r6, #0x88] + cmp r0, #0x0 + addeq sp, sp, #0x8 + moveq r0, r4 + ldmeqia sp!, {r4-r6,pc} + ldr r1, [r6, #0x10] + add r0, r6, #0x34 + mov r2, r4 + bl FS_SeekFile + cmp r0, #0x0 + addeq sp, sp, #0x8 + moveq r0, r4 + ldmeqia sp!, {r4-r6,pc} + ldr r1, [r6, #0x88] + ldr r2, [r6, #0x14] + add r0, r6, #0x34 + bl FS_ReadFile + ldr r1, [r6, #0x14] + cmp r0, r1 + addne sp, sp, #0x8 + movne r0, r4 + ldmneia sp!, {r4-r6,pc} +_020C26E0: + mov r0, #0x1 + add sp, sp, #0x8 + ldmia sp!, {r4-r6,pc} + .balign 4 +_020C26EC: .word InfoDisposeCallback +_020C26F0: .word FatDisposeCallback +_020C26F4: .word SymbolDisposeCallback + + arm_func_start NNS_SndArcInit +NNS_SndArcInit: ; 0x020C26F8 + ; r0: &sSoundDataBuffer + ; r1: char* filename + ; r2: (&sSoundDataBuffer)->unk_0090 + ; r3: 0 + stmdb sp!, {r4-r6,lr} + mov r6, r0 + mov r12, #0x0 + str r12, [r6, #0x8c] + str r12, [r6, #0x84] + add r0, r6, #0x7c + mov r5, r2 + mov r4, r3 + str r12, [r6, #0x88] + bl FS_ConvertPathToFileID + cmp r0, #0x0 + ldmeqia sp!, {r4-r6,pc} + add r0, r6, #0x34 + bl FS_InitFile + add r1, r6, #0x7c + add r0, r6, #0x34 + ldmia r1, {r1-r2} + bl FS_OpenFileFast + cmp r0, #0x0 + ldmeqia sp!, {r4-r6,pc} + mov r3, #0x1 + mov r0, r6 + mov r1, r5 + mov r2, r4 + str r3, [r6, #0x30] + bl SDATi_ReadHeaders + cmp r0, #0x0 + ldrne r0, _020C2770 ; =sCurrent + strne r6, [r0, #0x0] + ldmia sp!, {r4-r6,pc} + .balign 4 +_020C2770: .word sCurrent diff --git a/arm9/asm/NNS_SND_sndarc_loader.s b/arm9/asm/NNS_SND_sndarc_loader.s new file mode 100644 index 00000000..26636305 --- /dev/null +++ b/arm9/asm/NNS_SND_sndarc_loader.s @@ -0,0 +1,872 @@ + .include "asm/macros.inc" + .include "global.inc" + + .section .bss + + .global waveArcHeader$8213 +waveArcHeader$8213: ; 0x021D28C4 + .space 0x3c + + .section .text + + arm_func_start LoadSingleWaves +LoadSingleWaves: ; 0x020C2B1C + stmdb sp!, {r4-r10,lr} + sub sp, sp, #0x20 + mov r8, r0 + add r0, sp, #0x8 + mov r7, r1 + mov r6, r2 + mov r5, r3 + ldr r4, [sp, #0x40] + bl SND_GetFirstInstDataPos + ldr r1, [sp, #0x8] + ldr r0, [sp, #0xc] + str r1, [sp, #0x0] + str r0, [sp, #0x4] + cmp r7, #0x0 + add r2, sp, #0x0 + addeq sp, sp, #0x20 + moveq r0, #0x0 + ldmeqia sp!, {r4-r10,pc} + add r1, sp, #0x10 + mov r0, r7 + bl SND_GetNextInstData + cmp r0, #0x0 + beq _020C2BD4 + add r10, sp, #0x10 + add r9, sp, #0x0 +_020C2B80: + ldrb r0, [sp, #0x10] + cmp r0, #0x1 + bne _020C2BBC + ldrh r0, [sp, #0x14] + cmp r6, r0 + bne _020C2BBC + ldrh r1, [sp, #0x12] + mov r0, r8 + mov r2, r5 + mov r3, r4 + bl LoadSingleWave + cmp r0, #0x0 + addeq sp, sp, #0x20 + moveq r0, #0x0 + ldmeqia sp!, {r4-r10,pc} +_020C2BBC: + mov r0, r7 + mov r1, r10 + mov r2, r9 + bl SND_GetNextInstData + cmp r0, #0x0 + bne _020C2B80 +_020C2BD4: + mov r0, #0x1 + add sp, sp, #0x20 + ldmia sp!, {r4-r10,pc} + + arm_func_start LoadSingleWave +LoadSingleWave: ; 0x020C2BE0 + stmdb sp!, {r4-r9,lr} + sub sp, sp, #0x4 + mov r7, r0 + mov r6, r1 + mov r5, r2 + mov r4, r3 + bl SND_GetWaveDataAddress + cmp r0, #0x0 + addne sp, sp, #0x4 + movne r0, #0x1 + ldmneia sp!, {r4-r9,pc} + mov r0, r7 + bl SND_GetWaveDataCount + ldr r1, [r7, #0x38] + sub r0, r0, #0x1 + add r1, r1, r6 + add r1, r7, r1, lsl #0x2 + cmp r6, r0 + ldrcc r0, [r1, #0x40] + ldr r8, [r1, #0x3c] + ldrcs r0, [r7, #0x8] + cmp r4, #0x0 + sub r9, r0, r8 + addeq sp, sp, #0x4 + moveq r0, #0x0 + ldmeqia sp!, {r4-r9,pc} + ldr r2, _020C2CBC ; =SingleWaveDisposeCallback + mov r0, r4 + mov r3, r7 + add r1, r9, #0x20 + str r6, [sp, #0x0] + bl NNS_SndHeapAlloc + movs r4, r0 + addeq sp, sp, #0x4 + moveq r0, #0x0 + ldmeqia sp!, {r4-r9,pc} + mov r0, r5 + mov r1, r4 + mov r2, r9 + mov r3, r8 + bl NNS_SndArcReadFile + cmp r9, r0 + addne sp, sp, #0x4 + movne r0, #0x0 + ldmneia sp!, {r4-r9,pc} + mov r0, r4 + mov r1, r9 + bl DC_StoreRange + mov r0, r7 + mov r1, r6 + mov r2, r4 + bl SND_SetWaveDataAddress + mov r0, #0x1 + add sp, sp, #0x4 + ldmia sp!, {r4-r9,pc} + .balign 4 +_020C2CBC: .word SingleWaveDisposeCallback + + arm_func_start SingleWaveDisposeCallback +SingleWaveDisposeCallback: ; 0x020C2CC0 + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + mov r5, r2 + mov r7, r0 + mov r4, r3 + mov r6, r1 + mov r0, r5 + mov r1, r4 + bl SND_GetWaveDataAddress + cmp r7, r0 + bne _020C2CFC + mov r0, r5 + mov r1, r4 + mov r2, #0x0 + bl SND_SetWaveDataAddress +_020C2CFC: + mov r0, r7 + add r1, r7, r6 + bl SND_InvalidateWaveData + add sp, sp, #0x4 + ldmia sp!, {r4-r7,pc} + + arm_func_start WaveArcTableDisposeCallback +WaveArcTableDisposeCallback: ; 0x020C2D10 + stmdb sp!, {r4,lr} + mov r1, r2 + mov r4, r0 + mov r2, r3 + bl DisposeCallback + mov r0, r4 + bl SND_DestroyWaveArc + ldmia sp!, {r4,pc} + + arm_func_start WaveArcDisposeCallback +WaveArcDisposeCallback: ; 0x020C2D30 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r4, r1 + mov r1, r2 + mov r5, r0 + mov r2, r3 + bl DisposeCallback + mov r0, r5 + add r1, r5, r4 + bl SND_InvalidateWaveData + mov r0, r5 + bl SND_DestroyWaveArc + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + + arm_func_start BankDisposeCallback +BankDisposeCallback: ; 0x020C2D68 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r4, r1 + mov r1, r2 + mov r5, r0 + mov r2, r3 + bl DisposeCallback + mov r0, r5 + add r1, r5, r4 + bl SND_InvalidateBankData + mov r0, r5 + bl SND_DestroyBank + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + + arm_func_start SeqDisposeCallback +SeqDisposeCallback: ; 0x020C2DA0 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r4, r1 + mov r1, r2 + mov r5, r0 + mov r2, r3 + bl DisposeCallback + mov r0, r5 + add r1, r5, r4 + bl SND_InvalidateSeqData + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + + arm_func_start DisposeCallback +DisposeCallback: ; 0x020C2DD0 + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + movs r5, r1 + mov r7, r0 + mov r6, r2 + addeq sp, sp, #0x4 + ldmeqia sp!, {r4-r7,pc} + bl OS_DisableInterrupts + mov r4, r0 + mov r0, r5 + bl NNS_SndArcSetCurrent + mov r5, r0 + mov r0, r6 + bl NNS_SndArcGetFileAddress + cmp r7, r0 + bne _020C2E1C + mov r0, r6 + mov r1, #0x0 + bl NNS_SndArcSetFileAddress +_020C2E1C: + mov r0, r5 + bl NNS_SndArcSetCurrent + mov r0, r4 + bl OS_RestoreInterrupts + add sp, sp, #0x4 + ldmia sp!, {r4-r7,pc} + + arm_func_start LoadWaveArcTable +LoadWaveArcTable: ; 0x020C2E34 + stmdb sp!, {r4-r9,lr} + sub sp, sp, #0x4 + mov r9, r0 + mov r8, r1 + mov r7, r2 + bl NNS_SndArcGetFileAddress + movs r6, r0 + bne _020C2F40 + ldr r1, _020C2F4C ; =waveArcHeader$8213 + mov r0, r9 + mov r2, #0x3c + mov r3, #0x0 + bl NNS_SndArcReadFile + cmp r0, #0x3c + addne sp, sp, #0x4 + movne r0, #0x0 + ldmneia sp!, {r4-r9,pc} + ldr r0, _020C2F4C ; =waveArcHeader$8213 + cmp r8, #0x0 + ldr r0, [r0, #0x38] + addeq sp, sp, #0x4 + mov r4, r0, lsl #0x2 + mov r0, r4, lsl #0x1 + add r5, r0, #0x3c + moveq r0, #0x0 + ldmeqia sp!, {r4-r9,pc} + cmp r7, #0x0 + moveq r3, #0x0 + beq _020C2EB0 + bl NNS_SndArcGetCurrent + mov r3, r0 +_020C2EB0: + ldr r2, _020C2F50 ; =WaveArcTableDisposeCallback + mov r0, r8 + add r1, r5, #0x20 + str r9, [sp, #0x0] + bl NNS_SndHeapAlloc + movs r6, r0 + addeq sp, sp, #0x4 + moveq r0, #0x0 + ldmeqia sp!, {r4-r9,pc} + mov r0, r9 + mov r1, r6 + add r2, r4, #0x3c + mov r3, #0x0 + bl NNS_SndArcReadFile + add r1, r4, #0x3c + cmp r0, r1 + addne sp, sp, #0x4 + movne r0, #0x0 + ldmneia sp!, {r4-r9,pc} + ldr r1, [r6, #0x38] + add r0, r6, #0x3c + mov r2, r4 + add r1, r0, r1, lsl #0x2 + bl MI_CpuCopy8 + mov r2, r4 + add r0, r6, #0x3c + mov r1, #0x0 + bl MI_CpuFill8 + mov r0, r6 + mov r1, r5 + bl DC_StoreRange + cmp r7, #0x0 + beq _020C2F40 + mov r0, r9 + mov r1, r6 + bl NNS_SndArcSetFileAddress +_020C2F40: + mov r0, r6 + add sp, sp, #0x4 + ldmia sp!, {r4-r9,pc} + .balign 4 +_020C2F4C: .word waveArcHeader$8213 +_020C2F50: .word WaveArcTableDisposeCallback + + arm_func_start LoadWaveArc +LoadWaveArc: ; 0x020C2F54 + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + mov r7, r0 + mov r6, r1 + mov r5, r2 + bl NNS_SndArcGetFileAddress + movs r4, r0 + bne _020C2FBC + cmp r5, #0x0 + moveq r2, #0x0 + beq _020C2F88 + bl NNS_SndArcGetCurrent + mov r2, r0 +_020C2F88: + ldr r1, _020C2FC8 ; =WaveArcDisposeCallback + mov r0, r7 + mov r3, r7 + str r6, [sp, #0x0] + bl NNSi_SndArcLoadFile + mov r4, r0 + cmp r5, #0x0 + beq _020C2FBC + cmp r4, #0x0 + beq _020C2FBC + mov r0, r7 + mov r1, r4 + bl NNS_SndArcSetFileAddress +_020C2FBC: + mov r0, r4 + add sp, sp, #0x4 + ldmia sp!, {r4-r7,pc} + .balign 4 +_020C2FC8: .word WaveArcDisposeCallback + + arm_func_start LoadBank +LoadBank: ; 0x020C2FCC + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + mov r7, r0 + mov r6, r1 + mov r5, r2 + bl NNS_SndArcGetFileAddress + movs r4, r0 + bne _020C3034 + cmp r5, #0x0 + moveq r2, #0x0 + beq _020C3000 + bl NNS_SndArcGetCurrent + mov r2, r0 +_020C3000: + ldr r1, _020C3040 ; =BankDisposeCallback + mov r0, r7 + mov r3, r7 + str r6, [sp, #0x0] + bl NNSi_SndArcLoadFile + mov r4, r0 + cmp r5, #0x0 + beq _020C3034 + cmp r4, #0x0 + beq _020C3034 + mov r0, r7 + mov r1, r4 + bl NNS_SndArcSetFileAddress +_020C3034: + mov r0, r4 + add sp, sp, #0x4 + ldmia sp!, {r4-r7,pc} + .balign 4 +_020C3040: .word BankDisposeCallback + + arm_func_start LoadSeqArc +LoadSeqArc: ; 0x020C3044 + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + mov r7, r0 + mov r6, r1 + mov r5, r2 + bl NNS_SndArcGetFileAddress + movs r4, r0 + bne _020C30AC + cmp r5, #0x0 + moveq r2, #0x0 + beq _020C3078 + bl NNS_SndArcGetCurrent + mov r2, r0 +_020C3078: + ldr r1, _020C30B8 ; =SeqDisposeCallback + mov r0, r7 + mov r3, r7 + str r6, [sp, #0x0] + bl NNSi_SndArcLoadFile + mov r4, r0 + cmp r5, #0x0 + beq _020C30AC + cmp r4, #0x0 + beq _020C30AC + mov r0, r7 + mov r1, r4 + bl NNS_SndArcSetFileAddress +_020C30AC: + mov r0, r4 + add sp, sp, #0x4 + ldmia sp!, {r4-r7,pc} + .balign 4 +_020C30B8: .word SeqDisposeCallback + + arm_func_start LoadSeq +LoadSeq: ; 0x020C30BC + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + mov r7, r0 + mov r6, r1 + mov r5, r2 + bl NNS_SndArcGetFileAddress + movs r4, r0 + bne _020C3124 + cmp r5, #0x0 + moveq r2, #0x0 + beq _020C30F0 + bl NNS_SndArcGetCurrent + mov r2, r0 +_020C30F0: + ldr r1, _020C3130 ; =SeqDisposeCallback + mov r0, r7 + mov r3, r7 + str r6, [sp, #0x0] + bl NNSi_SndArcLoadFile + mov r4, r0 + cmp r5, #0x0 + beq _020C3124 + cmp r4, #0x0 + beq _020C3124 + mov r0, r7 + mov r1, r4 + bl NNS_SndArcSetFileAddress +_020C3124: + mov r0, r4 + add sp, sp, #0x4 + ldmia sp!, {r4-r7,pc} + .balign 4 +_020C3130: .word SeqDisposeCallback + + arm_func_start NNSi_SndArcLoadFile +NNSi_SndArcLoadFile: ; 0x020C3134 + stmdb sp!, {r4-r8,lr} + sub sp, sp, #0x8 + mov r8, r0 + mov r7, r1 + mov r6, r2 + mov r4, r3 + bl NNS_SndArcGetFileSize + movs r5, r0 + addeq sp, sp, #0x8 + moveq r0, #0x0 + ldmeqia sp!, {r4-r8,pc} + ldr r0, [sp, #0x20] + cmp r0, #0x0 + addeq sp, sp, #0x8 + moveq r0, #0x0 + ldmeqia sp!, {r4-r8,pc} + mov r2, r7 + mov r3, r6 + add r1, r5, #0x20 + str r4, [sp, #0x0] + bl NNS_SndHeapAlloc + movs r4, r0 + addeq sp, sp, #0x8 + moveq r0, #0x0 + ldmeqia sp!, {r4-r8,pc} + mov r0, r8 + mov r1, r4 + mov r2, r5 + mov r3, #0x0 + bl NNS_SndArcReadFile + cmp r5, r0 + addne sp, sp, #0x8 + movne r0, #0x0 + ldmneia sp!, {r4-r8,pc} + mov r0, r4 + mov r1, r5 + bl DC_StoreRange + mov r0, r4 + add sp, sp, #0x8 + ldmia sp!, {r4-r8,pc} + + arm_func_start NNSi_SndArcLoadWaveArc +NNSi_SndArcLoadWaveArc: ; 0x020C31D4 + stmdb sp!, {r4-r6,lr} + mov r6, r1 + mov r5, r2 + mov r4, r3 + bl NNS_SndArcGetWaveArcInfo + cmp r0, #0x0 + moveq r0, #0x5 + ldmeqia sp!, {r4-r6,pc} + ands r1, r6, #0x4 + beq _020C324C + ldrb r1, [r0, #0x3] + ands r1, r1, #0x1 + beq _020C3224 + ldr r0, [r0, #0x0] + mov r1, r5 + mov r0, r0, lsl #0x8 + mov r2, r4 + mov r0, r0, lsr #0x8 + bl LoadWaveArcTable + b _020C323C +_020C3224: + ldr r0, [r0, #0x0] + mov r1, r5 + mov r0, r0, lsl #0x8 + mov r2, r4 + mov r0, r0, lsr #0x8 + bl LoadWaveArc +_020C323C: + cmp r0, #0x0 + bne _020C325C + mov r0, #0x9 + ldmia sp!, {r4-r6,pc} +_020C324C: + ldr r0, [r0, #0x0] + mov r0, r0, lsl #0x8 + mov r0, r0, lsr #0x8 + bl NNS_SndArcGetFileAddress +_020C325C: + ldr r1, [sp, #0x10] + cmp r1, #0x0 + strne r0, [r1, #0x0] + mov r0, #0x0 + ldmia sp!, {r4-r6,pc} + + arm_func_start NNSi_SndArcLoadBank +NNSi_SndArcLoadBank: ; 0x020C3270 + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0xc + mov r10, r1 + mov r9, r2 + mov r11, r3 + bl NNS_SndArcGetBankInfo + movs r8, r0 + addeq sp, sp, #0xc + moveq r0, #0x4 + ldmeqia sp!, {r4-r11,pc} + ands r0, r10, #0x2 + beq _020C32C4 + ldr r0, [r8, #0x0] + mov r1, r9 + mov r2, r11 + bl LoadBank + movs r7, r0 + bne _020C32D0 + add sp, sp, #0xc + mov r0, #0x8 + ldmia sp!, {r4-r11,pc} +_020C32C4: + ldr r0, [r8, #0x0] + bl NNS_SndArcGetFileAddress + mov r7, r0 +_020C32D0: + and r5, r10, #0x4 + mov r6, #0x0 +_020C32D8: + add r0, r8, r6, lsl #0x1 + ldrh r0, [r0, #0x4] + ldr r1, _020C33B4 ; =0x0000FFFF + cmp r0, r1 + beq _020C3390 + bl NNS_SndArcGetWaveArcInfo + movs r4, r0 + addeq sp, sp, #0xc + moveq r0, #0x5 + ldmeqia sp!, {r4-r11,pc} + add r0, sp, #0x4 + str r0, [sp, #0x0] + add r0, r8, r6, lsl #0x1 + ldrh r0, [r0, #0x4] + mov r1, r10 + mov r2, r9 + mov r3, r11 + bl NNSi_SndArcLoadWaveArc + cmp r0, #0x0 + addne sp, sp, #0xc + ldmneia sp!, {r4-r11,pc} + ldrb r0, [r4, #0x3] + ands r0, r0, #0x1 + beq _020C3370 + cmp r5, #0x0 + beq _020C3370 + str r9, [sp, #0x0] + ldr r1, [r4, #0x0] + ldr r0, [sp, #0x4] + mov r3, r1, lsl #0x8 + mov r1, r7 + mov r2, r6 + mov r3, r3, lsr #0x8 + bl LoadSingleWaves + cmp r0, #0x0 + addeq sp, sp, #0xc + moveq r0, #0x9 + ldmeqia sp!, {r4-r11,pc} +_020C3370: + cmp r7, #0x0 + beq _020C3390 + ldr r2, [sp, #0x4] + cmp r2, #0x0 + beq _020C3390 + mov r0, r7 + mov r1, r6 + bl SND_AssignWaveArc +_020C3390: + add r6, r6, #0x1 + cmp r6, #0x4 + blt _020C32D8 + ldr r0, [sp, #0x30] + cmp r0, #0x0 + strne r7, [r0, #0x0] + mov r0, #0x0 + add sp, sp, #0xc + ldmia sp!, {r4-r11,pc} + .balign 4 +_020C33B4: .word 0x0000FFFF + + arm_func_start NNSi_SndArcLoadSeqArc +NNSi_SndArcLoadSeqArc: ; 0x020C33B8 + stmdb sp!, {r4-r6,lr} + mov r6, r1 + mov r5, r2 + mov r4, r3 + bl NNS_SndArcGetSeqArcInfo + cmp r0, #0x0 + moveq r0, #0x3 + ldmeqia sp!, {r4-r6,pc} + ands r1, r6, #0x8 + beq _020C3400 + ldr r0, [r0, #0x0] + mov r1, r5 + mov r2, r4 + bl LoadSeqArc + cmp r0, #0x0 + bne _020C3408 + mov r0, #0x7 + ldmia sp!, {r4-r6,pc} +_020C3400: + ldr r0, [r0, #0x0] + bl NNS_SndArcGetFileAddress +_020C3408: + ldr r1, [sp, #0x10] + cmp r1, #0x0 + strne r0, [r1, #0x0] + mov r0, #0x0 + ldmia sp!, {r4-r6,pc} + + arm_func_start NNSi_SndArcLoadSeq +NNSi_SndArcLoadSeq: ; 0x020C341C + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + mov r7, r1 + mov r6, r2 + mov r5, r3 + bl NNS_SndArcGetSeqInfo + movs r4, r0 + addeq sp, sp, #0x4 + moveq r0, #0x2 + ldmeqia sp!, {r4-r7,pc} + mov r0, #0x0 + str r0, [sp, #0x0] + ldrh r0, [r4, #0x4] + mov r1, r7 + mov r2, r6 + mov r3, r5 + bl NNSi_SndArcLoadBank + cmp r0, #0x0 + addne sp, sp, #0x4 + ldmneia sp!, {r4-r7,pc} + ands r0, r7, #0x1 + beq _020C3498 + ldr r0, [r4, #0x0] + mov r1, r6 + mov r2, r5 + bl LoadSeq + cmp r0, #0x0 + bne _020C34A0 + add sp, sp, #0x4 + mov r0, #0x6 + ldmia sp!, {r4-r7,pc} +_020C3498: + ldr r0, [r4, #0x0] + bl NNS_SndArcGetFileAddress +_020C34A0: + ldr r1, [sp, #0x18] + cmp r1, #0x0 + strne r0, [r1, #0x0] + mov r0, #0x0 + add sp, sp, #0x4 + ldmia sp!, {r4-r7,pc} + + arm_func_start NNSi_SndArcLoadGroup +NNSi_SndArcLoadGroup: ; 0x020C34B8 + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0xc + mov r9, r1 + bl NNS_SndArcGetGroupInfo + movs r8, r0 + addeq sp, sp, #0xc + moveq r0, #0x1 + ldmeqia sp!, {r4-r11,pc} + ldr r0, [r8, #0x0] + mov r7, #0x0 + cmp r0, #0x0 + bls _020C35D4 + add r6, r8, #0x4 + str r7, [sp, #0x4] + mov r11, r7 + mov r10, r7 + mov r5, r7 + mov r4, #0x1 +_020C3500: + ldrb r0, [r6, #0x0] + cmp r0, #0x3 + addls pc, pc, r0, lsl #0x2 + b _020C35C0 + ; Jump table + b _020C3520 ; case 0 + b _020C3570 ; case 1 + b _020C3598 ; case 2 + b _020C3548 ; case 3 +_020C3520: + str r5, [sp, #0x0] + ldrb r1, [r6, #0x1] + ldr r0, [r6, #0x4] + mov r2, r9 + mov r3, r4 + bl NNSi_SndArcLoadSeq + cmp r0, #0x0 + beq _020C35C0 + add sp, sp, #0xc + ldmia sp!, {r4-r11,pc} +_020C3548: + str r10, [sp, #0x0] + ldrb r1, [r6, #0x1] + ldr r0, [r6, #0x4] + mov r2, r9 + mov r3, r4 + bl NNSi_SndArcLoadSeqArc + cmp r0, #0x0 + beq _020C35C0 + add sp, sp, #0xc + ldmia sp!, {r4-r11,pc} +_020C3570: + str r11, [sp, #0x0] + ldrb r1, [r6, #0x1] + ldr r0, [r6, #0x4] + mov r2, r9 + mov r3, r4 + bl NNSi_SndArcLoadBank + cmp r0, #0x0 + beq _020C35C0 + add sp, sp, #0xc + ldmia sp!, {r4-r11,pc} +_020C3598: + ldr r0, [sp, #0x4] + mov r2, r9 + str r0, [sp, #0x0] + ldrb r1, [r6, #0x1] + ldr r0, [r6, #0x4] + mov r3, r4 + bl NNSi_SndArcLoadWaveArc + cmp r0, #0x0 + addne sp, sp, #0xc + ldmneia sp!, {r4-r11,pc} +_020C35C0: + ldr r0, [r8, #0x0] + add r7, r7, #0x1 + cmp r7, r0 + add r6, r6, #0x8 + blo _020C3500 +_020C35D4: + mov r0, #0x0 + add sp, sp, #0xc + ldmia sp!, {r4-r11,pc} + + arm_func_start NNS_SndArcLoadSeqEx +NNS_SndArcLoadSeqEx: ; 0x020C35E0 + stmdb sp!, {lr} + sub sp, sp, #0x4 + mov r12, #0x0 + mov r3, #0x1 + str r12, [sp, #0x0] + bl NNSi_SndArcLoadSeq + cmp r0, #0x0 + moveq r0, #0x1 + movne r0, #0x0 + add sp, sp, #0x4 + ldmia sp!, {pc} + + arm_func_start NNS_SndArcLoadWaveArc +NNS_SndArcLoadWaveArc: ; 0x020C360C + stmdb sp!, {lr} + sub sp, sp, #0x4 + mov r2, r1 + mov r12, #0x0 + mov r1, #0xff + mov r3, #0x1 + str r12, [sp, #0x0] + bl NNSi_SndArcLoadWaveArc + cmp r0, #0x0 + moveq r0, #0x1 + movne r0, #0x0 + add sp, sp, #0x4 + ldmia sp!, {pc} + + arm_func_start NNS_SndArcLoadBank +NNS_SndArcLoadBank: ; 0x020C3640 + stmdb sp!, {lr} + sub sp, sp, #0x4 + mov r2, r1 + mov r12, #0x0 + mov r1, #0xff + mov r3, #0x1 + str r12, [sp, #0x0] + bl NNSi_SndArcLoadBank + cmp r0, #0x0 + moveq r0, #0x1 + movne r0, #0x0 + add sp, sp, #0x4 + ldmia sp!, {pc} + + arm_func_start NNS_SndArcLoadSeq +NNS_SndArcLoadSeq: ; 0x020C3674 + stmdb sp!, {lr} + sub sp, sp, #0x4 + mov r2, r1 + mov r12, #0x0 + mov r1, #0xff + mov r3, #0x1 + str r12, [sp, #0x0] + bl NNSi_SndArcLoadSeq + cmp r0, #0x0 + moveq r0, #0x1 + movne r0, #0x0 + add sp, sp, #0x4 + ldmia sp!, {pc} + + arm_func_start NNS_SndArcLoadGroup +NNS_SndArcLoadGroup: ; 0x020C36A8 + stmdb sp!, {lr} + sub sp, sp, #0x4 + bl NNSi_SndArcLoadGroup + cmp r0, #0x0 + moveq r0, #0x1 + movne r0, #0x0 + add sp, sp, #0x4 + ldmia sp!, {pc} diff --git a/arm9/asm/NNS_SND_sndarc_player.s b/arm9/asm/NNS_SND_sndarc_player.s new file mode 100644 index 00000000..c043967b --- /dev/null +++ b/arm9/asm/NNS_SND_sndarc_player.s @@ -0,0 +1,261 @@ + .include "asm/macros.inc" + .include "global.inc" + + .section .text + + arm_func_start StartSeqArc +StartSeqArc: ; 0x020C36C8 + stmdb sp!, {r4-r8,lr} + sub sp, sp, #0x8 + mov r7, r2 + mov r2, r3 + ldr r6, [sp, #0x20] + mov r4, r0 + mov r8, r1 + bl NNSi_SndPlayerAllocSeqPlayer + movs r5, r0 + addeq sp, sp, #0x8 + moveq r0, #0x0 + ldmeqia sp!, {r4-r8,pc} + mov r0, r8 + mov r1, r5 + bl NNSi_SndPlayerAllocHeap + add r12, sp, #0x4 + mov r2, r0 + mov r0, r7 + mov r1, #0x6 + mov r3, #0x0 + str r12, [sp, #0x0] + bl NNSi_SndArcLoadBank + cmp r0, #0x0 + beq _020C373C + mov r0, r5 + bl NNSi_SndPlayerFreeSeqPlayer + add sp, sp, #0x8 + mov r0, #0x0 + ldmia sp!, {r4-r8,pc} +_020C373C: + ldr r12, [sp, #0x24] + ldr r2, [r6, #0x0] + ldr r1, [r12, #0x18] + ldr r3, [sp, #0x4] + mov r0, r5 + add r1, r12, r1 + bl NNSi_SndPlayerStartSeq + ldrb r1, [r6, #0x6] + mov r0, r4 + bl NNS_SndPlayerSetInitialVolume + ldrb r1, [r6, #0x7] + mov r0, r4 + bl NNS_SndPlayerSetChannelPriority + ldr r1, [sp, #0x28] + ldr r2, [sp, #0x2c] + mov r0, r4 + bl NNS_SndPlayerSetSeqArcNo + mov r0, #0x1 + add sp, sp, #0x8 + ldmia sp!, {r4-r8,pc} + + arm_func_start StartSeq +StartSeq: ; 0x020C378C + stmdb sp!, {r4-r8,lr} + sub sp, sp, #0x10 + mov r8, r2 + mov r2, r3 + ldr r5, [sp, #0x28] + mov r6, r0 + mov r7, r1 + bl NNSi_SndPlayerAllocSeqPlayer + movs r4, r0 + addeq sp, sp, #0x10 + moveq r0, #0x0 + ldmeqia sp!, {r4-r8,pc} + mov r0, r7 + mov r1, r4 + bl NNSi_SndPlayerAllocHeap + mov r7, r0 + add r12, sp, #0x8 + mov r0, r8 + mov r2, r7 + mov r1, #0x6 + mov r3, #0x0 + str r12, [sp, #0x0] + bl NNSi_SndArcLoadBank + cmp r0, #0x0 + beq _020C3804 + mov r0, r4 + bl NNSi_SndPlayerFreeSeqPlayer + add sp, sp, #0x10 + mov r0, #0x0 + ldmia sp!, {r4-r8,pc} +_020C3804: + ldr r0, [sp, #0x2c] + add r12, sp, #0x4 + mov r2, r7 + mov r1, #0x1 + mov r3, #0x0 + str r12, [sp, #0x0] + bl NNSi_SndArcLoadSeq + cmp r0, #0x0 + beq _020C383C + mov r0, r4 + bl NNSi_SndPlayerFreeSeqPlayer + add sp, sp, #0x10 + mov r0, #0x0 + ldmia sp!, {r4-r8,pc} +_020C383C: + ldr r2, [sp, #0x4] + ldr r3, [sp, #0x8] + ldr r1, [r2, #0x18] + mov r0, r4 + add r1, r2, r1 + mov r2, #0x0 + bl NNSi_SndPlayerStartSeq + ldrb r1, [r5, #0x6] + mov r0, r6 + bl NNS_SndPlayerSetInitialVolume + ldrb r1, [r5, #0x7] + mov r0, r6 + bl NNS_SndPlayerSetChannelPriority + ldr r1, [sp, #0x2c] + mov r0, r6 + bl NNS_SndPlayerSetSeqNo + mov r0, #0x1 + add sp, sp, #0x10 + ldmia sp!, {r4-r8,pc} + + arm_func_start NNS_SndArcPlayerStartSeqArc +NNS_SndArcPlayerStartSeqArc: ; 0x020C3888 + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x14 + mov r6, r1 + mov r7, r0 + mov r0, r6 + mov r5, r2 + bl NNS_SndArcGetSeqArcInfo + cmp r0, #0x0 + addeq sp, sp, #0x14 + moveq r0, #0x0 + ldmeqia sp!, {r4-r7,pc} + ldr r0, [r0, #0x0] + bl NNS_SndArcGetFileAddress + movs r4, r0 + addeq sp, sp, #0x14 + moveq r0, #0x0 + ldmeqia sp!, {r4-r7,pc} + mov r1, r5 + bl NNSi_SndSeqArcGetSeqInfo + cmp r0, #0x0 + addeq sp, sp, #0x14 + moveq r0, #0x0 + ldmeqia sp!, {r4-r7,pc} + str r0, [sp, #0x0] + str r4, [sp, #0x4] + str r6, [sp, #0x8] + str r5, [sp, #0xc] + ldrb r1, [r0, #0x9] + ldrh r2, [r0, #0x4] + ldrb r3, [r0, #0x8] + mov r0, r7 + bl StartSeqArc + add sp, sp, #0x14 + ldmia sp!, {r4-r7,pc} + + arm_func_start NNS_SndArcPlayerStartSeqEx +NNS_SndArcPlayerStartSeqEx: ; 0x020C3910 + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0xc + mov r7, r0 + ldr r0, [sp, #0x20] + mov r6, r1 + mov r5, r2 + mov r4, r3 + bl NNS_SndArcGetSeqInfo + cmp r0, #0x0 + addeq sp, sp, #0xc + moveq r0, #0x0 + ldmeqia sp!, {r4-r7,pc} + cmp r4, #0x0 + ldrltb r4, [r0, #0x8] + cmp r5, #0x0 + ldrlth r5, [r0, #0x4] + cmp r6, #0x0 + ldrltb r6, [r0, #0x9] + ldr r12, [sp, #0x20] + mov r2, r5 + str r0, [sp, #0x0] + mov r0, r7 + mov r1, r6 + mov r3, r4 + str r12, [sp, #0x4] + bl StartSeq + add sp, sp, #0xc + ldmia sp!, {r4-r7,pc} + + arm_func_start NNS_SndArcPlayerStartSeq +NNS_SndArcPlayerStartSeq: ; 0x020C3980 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0xc + mov r4, r1 + mov r5, r0 + mov r0, r4 + bl NNS_SndArcGetSeqInfo + cmp r0, #0x0 + addeq sp, sp, #0xc + moveq r0, #0x0 + ldmeqia sp!, {r4-r5,pc} + str r0, [sp, #0x0] + str r4, [sp, #0x4] + ldrb r1, [r0, #0x9] + ldrh r2, [r0, #0x4] + ldrb r3, [r0, #0x8] + mov r0, r5 + bl StartSeq + add sp, sp, #0xc + ldmia sp!, {r4-r5,pc} + + arm_func_start NNS_SndArcPlayerSetup +NNS_SndArcPlayerSetup: ; 0x020C39CC + stmdb sp!, {r4-r8,lr} + mov r6, r0 + bl NNS_SndArcGetCurrent + mov r5, #0x0 + mov r7, r5 +_020C39E0: + mov r0, r5 + bl NNS_SndArcGetPlayerInfo + movs r4, r0 + beq _020C3A58 + ldrb r1, [r4, #0x0] + mov r0, r5 + bl NNS_SndPlayerSetPlayableSeqCount + ldrh r1, [r4, #0x2] + mov r0, r5 + bl NNS_SndPlayerSetAllocatableChannel + ldr r0, [r4, #0x4] + cmp r0, #0x0 + beq _020C3A58 + cmp r6, #0x0 + beq _020C3A58 + ldrb r0, [r4, #0x0] + mov r8, r7 + cmp r0, #0x0 + ble _020C3A58 +_020C3A2C: + ldr r2, [r4, #0x4] + mov r0, r5 + mov r1, r6 + bl NNS_SndPlayerCreateHeap + cmp r0, #0x0 + moveq r0, #0x0 + ldmeqia sp!, {r4-r8,pc} + ldrb r0, [r4, #0x0] + add r8, r8, #0x1 + cmp r8, r0 + blt _020C3A2C +_020C3A58: + add r5, r5, #0x1 + cmp r5, #0x20 + blt _020C39E0 + mov r0, #0x1 + ldmia sp!, {r4-r8,pc} diff --git a/arm9/asm/NNS_SND_sndarc_stream.s b/arm9/asm/NNS_SND_sndarc_stream.s new file mode 100644 index 00000000..1962bdcc --- /dev/null +++ b/arm9/asm/NNS_SND_sndarc_stream.s @@ -0,0 +1,263 @@ + .include "asm/macros.inc" + .include "global.inc" + + .section .bss + + .global sPrepareThread +sPrepareThread: ; 0x021D2900 + .space 0x4 + + .global sFreeCommandList +sFreeCommandList: ; 0x021D2904 + .space 0xC + ; sStrmThread + .global sStrmThread +sStrmThread: ; 0x021D2910 + .space 0x4EC + + .global sStrmPlayer +sStrmPlayer: ; 0x021D2DFC + .space 0x5c0 + + .section .text + + arm_func_start FreeCommandBuffer +FreeCommandBuffer: ; 0x020C3A6C + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r5, r0 + bl OS_DisableInterrupts + mov r4, r0 + ldr r0, _020C3A9C ; =sFreeCommandList + mov r1, r5 + bl NNS_FndAppendListObject + mov r0, r4 + bl OS_RestoreInterrupts + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + .balign 4 +_020C3A9C: .word sFreeCommandList + + arm_func_start RemoveCommandByPlayer +RemoveCommandByPlayer: ; 0x020C3AA0 + stmdb sp!, {r4-r8,lr} + mov r8, r0 + mov r7, r1 + bl OS_DisableInterrupts + mov r6, r0 + mov r0, r8 + mov r1, #0x0 + bl NNS_FndGetNextListObject + movs r5, r0 + beq _020C3B04 +_020C3AC8: + mov r0, r8 + mov r1, r5 + bl NNS_FndGetNextListObject + ldr r1, [r5, #0x8] + mov r4, r0 + cmp r1, r7 + bne _020C3AF8 + mov r0, r8 + mov r1, r5 + bl NNS_FndRemoveListObject + mov r0, r5 + bl FreeCommandBuffer +_020C3AF8: + mov r5, r4 + cmp r4, #0x0 + bne _020C3AC8 +_020C3B04: + mov r0, r6 + bl OS_RestoreInterrupts + ldmia sp!, {r4-r8,pc} + + arm_func_start FreeChannel +FreeChannel: ; 0x020C3B10 + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r1, [r0, #0x120] + cmp r1, #0x0 + addeq sp, sp, #0x4 + ldmeqia sp!, {pc} + sub r1, r1, #0x1 + str r1, [r0, #0x120] + ldr r1, [r0, #0x120] + cmp r1, #0x0 + addne sp, sp, #0x4 + ldmneia sp!, {pc} + bl NNS_SndStrmFreeChannel + add sp, sp, #0x4 + ldmia sp!, {pc} + + local_arm_func_start ShutdownPlayer +ShutdownPlayer: ; 0x020C3B4C + stmdb sp!, {r4,lr} + mov r4, r0 + ldr r1, [r4, #0x110] + mov r1, r1, lsl #0x1f + movs r1, r1, asr #0x1f + ldmeqia sp!, {r4,pc} + bl FreeChannel + ldr r1, [r4, #0x164] + mov r0, r4 + blx r1 + ldr r0, _020C3BA8 ; =sStrmThread + 0x4E0 + mov r1, r4 + bl RemoveCommandByPlayer + ldr r0, _020C3BAC ; =sPrepareThread + ldr r0, [r0, #0x0] + cmp r0, #0x0 + beq _020C3B9C + mov r1, r4 + add r0, r0, #0x4e0 + bl RemoveCommandByPlayer +_020C3B9C: + mov r0, r4 + bl FreePlayer + ldmia sp!, {r4,pc} + .balign 4 +_020C3BA8: .word sStrmThread + 0x4E0 +_020C3BAC: .word sPrepareThread + + local_arm_func_start ForceStopStrm +ForceStopStrm: ; 0x020C3BB0 + stmdb sp!, {r4,lr} + mov r4, r0 + ldr r0, _020C3C40 ; =sStrmThread + 0x4C8 + bl OS_LockMutex + ldr r0, _020C3C44 ; =sPrepareThread + ldr r1, [r0, #0x0] + cmp r1, #0x0 + beq _020C3BDC + ldr r0, _020C3C48 ; =0x000004C8 + add r0, r1, r0 + bl OS_LockMutex +_020C3BDC: + ldr r0, [r4, #0x110] + mov r0, r0, lsl #0x1e + movs r0, r0, asr #0x1f + beq _020C3BF4 + mov r0, r4 + bl NNS_SndStrmStop +_020C3BF4: + ldr r0, [r4, #0x110] + mov r0, r0, lsl #0x1f + movs r0, r0, asr #0x1f + beq _020C3C10 + ldr r1, [r4, #0x16c] + mov r0, r4 + blx r1 +_020C3C10: + mov r0, r4 + bl ShutdownPlayer + ldr r0, _020C3C40 ; =sStrmThread + 0x4C8 + bl OS_UnlockMutex + ldr r0, _020C3C44 ; =sPrepareThread + ldr r1, [r0, #0x0] + cmp r1, #0x0 + ldmeqia sp!, {r4,pc} + ldr r0, _020C3C48 ; =0x000004C8 + add r0, r1, r0 + bl OS_UnlockMutex + ldmia sp!, {r4,pc} + .balign 4 +_020C3C40: .word sStrmThread + 0x4C8 +_020C3C44: .word sPrepareThread +_020C3C48: .word 0x000004C8 + + arm_func_start FreePlayer +FreePlayer: ; 0x020C3C4C + ldr r2, [r0, #0x14c] + cmp r2, #0x0 + movne r1, #0x0 + strne r1, [r2, #0x0] + strne r1, [r0, #0x14c] + ldr r1, [r0, #0x110] + bic r1, r1, #0x1 + str r1, [r0, #0x110] + ldr r1, [r0, #0x110] + bic r1, r1, #0x4 + str r1, [r0, #0x110] + ldr r1, [r0, #0x110] + bic r1, r1, #0x2 + str r1, [r0, #0x110] + bx lr + + arm_func_start NNSi_SndArcStrmMain +NNSi_SndArcStrmMain: ; 0x020C3C88 + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + ldr r5, _020C3D94 ; =sStrmPlayer + mov r7, #0x0 + ldr r4, _020C3D98 ; =SNDi_DecibelTable +_020C3C9C: + ldr r1, [r5, #0x110] + mov r0, r1, lsl #0x1f + movs r0, r0, asr #0x1f + beq _020C3D7C + ldr r0, [r5, #0x114] + cmp r0, #0x0 + bne _020C3CC4 + mov r0, r5 + bl ForceStopStrm + b _020C3D7C +_020C3CC4: + mov r0, r1, lsl #0x1d + movs r0, r0, asr #0x1f + beq _020C3CFC + ldr r0, [r5, #0x118] + cmp r0, #0x0 + beq _020C3CFC + mov r0, r5 + bl NNS_SndStrmStart + ldr r0, [r5, #0x110] + orr r0, r0, #0x2 + str r0, [r5, #0x110] + ldr r0, [r5, #0x110] + bic r0, r0, #0x4 + str r0, [r5, #0x110] +_020C3CFC: + ldr r0, [r5, #0x110] + mov r0, r0, lsl #0x1e + movs r0, r0, asr #0x1f + beq _020C3D7C + add r0, r5, #0xe8 + bl NNSi_SndFaderUpdate + ldr r1, [r5, #0x154] + add r0, r5, #0xe8 + mov r1, r1, lsl #0x1 + ldrsh r6, [r4, r1] + bl NNSi_SndFaderGet + mov r0, r0, asr #0x8 + mov r0, r0, lsl #0x1 + ldrsh r1, [r4, r0] + ldr r0, [r5, #0x158] + add r6, r1, r6 + cmp r6, r0 + beq _020C3D54 + mov r0, r5 + mov r1, r6 + bl NNS_SndStrmSetVolume + str r6, [r5, #0x158] +_020C3D54: + ldr r0, [r5, #0x110] + mov r0, r0, lsl #0x1c + movs r0, r0, asr #0x1f + beq _020C3D7C + add r0, r5, #0xe8 + bl NNSi_SndFaderIsFinished + cmp r0, #0x0 + beq _020C3D7C + mov r0, r5 + bl ForceStopStrm +_020C3D7C: + add r7, r7, #0x1 + cmp r7, #0x4 + add r5, r5, #0x170 + blt _020C3C9C + add sp, sp, #0x4 + ldmia sp!, {r4-r7,pc} + .balign 4 +_020C3D94: .word sStrmPlayer +_020C3D98: .word SNDi_DecibelTable diff --git a/arm9/asm/NNS_SND_stream.s b/arm9/asm/NNS_SND_stream.s new file mode 100644 index 00000000..53432742 --- /dev/null +++ b/arm9/asm/NNS_SND_stream.s @@ -0,0 +1,456 @@ + .include "asm/macros.inc" + .include "global.inc" + + .section .bss + + .global bInitialized$7761 +bInitialized$7761: ; 0x021D26D4 + .space 0x4 + + .global sStrmList +sStrmList: ; 0x021D26D8 + .space 0xc + + .global buffer$7877 +buffer$7877: ; 0x021D26E4 + .space 0x40 + + .global sStrmChannel +sStrmChannel: ; 0x021D2724 + .space 0x80 + + .section .text + + local_arm_func_start EndSleep +EndSleep: ; 0x020C1198 + stmdb sp!, {r4-r6,lr} + mov r4, r0 + ldr r0, [r4, #0x24] + mov r0, r0, lsl #0x1e + movs r0, r0, asr #0x1f + ldmeqia sp!, {r4-r6,pc} + ldr r0, [r4, #0x38] + cmp r0, #0x0 + beq _020C11E8 + mov r5, #0x1 +_020C11C0: + bl OS_DisableInterrupts + mov r6, r0 + mov r0, r4 + mov r1, r5 + bl StrmCallback + mov r0, r6 + bl OS_RestoreInterrupts + ldr r0, [r4, #0x38] + cmp r0, #0x0 + bne _020C11C0 +_020C11E8: + ldr r0, [r4, #0x40] + mov r2, #0x1 + mov r1, #0x0 + mov r2, r2, lsl r0 + ldr r0, [r4, #0x44] + mov r3, r1 + bl SND_StartTimer + ldmia sp!, {r4-r6,pc} + + local_arm_func_start BeginSleep +BeginSleep: ; 0x020C1208 + stmdb sp!, {r4,lr} + ldr r1, [r0, #0x24] + mov r1, r1, lsl #0x1e + movs r1, r1, asr #0x1f + ldmeqia sp!, {r4,pc} + ldr r2, [r0, #0x40] + mov r3, #0x1 + mov r1, #0x0 + mov r2, r3, lsl r2 + ldr r0, [r0, #0x44] + mov r3, r1 + bl SND_StopTimer + bl SND_GetCurrentCommandTag + mov r4, r0 + mov r0, #0x1 + bl SND_FlushCommand + mov r0, r4 + bl SND_WaitForCommandProc + ldmia sp!, {r4,pc} + + arm_func_start StrmCallback +StrmCallback: ; 0x020C1254 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0xc + mov r5, r0 + mov r4, r1 + ldr r0, [r5, #0x28] + ldr r1, [r5, #0x2c] + bl _u32_div_f + ldr r1, [r5, #0x48] + ldr r2, [r5, #0x38] + mov r3, r0 + mul lr, r3, r2 + cmp r1, #0x0 + mov r12, #0x0 + ble _020C12B8 + ldr r2, _020C1300 ; =sStrmChannel + ldr r0, _020C1304 ; =buffer$7877 +_020C1294: + add r1, r5, r12 + ldrb r1, [r1, #0x4c] + ldr r1, [r2, r1, lsl #0x3] + add r1, r1, lr + str r1, [r0, r12, lsl #0x2] + ldr r1, [r5, #0x48] + add r12, r12, #0x1 + cmp r12, r1 + blt _020C1294 +_020C12B8: + ldr r0, [r5, #0x20] + ldr r2, _020C1304 ; =buffer$7877 + str r0, [sp, #0x0] + ldr r12, [r5, #0x34] + mov r0, r4 + str r12, [sp, #0x4] + ldr r4, [r5, #0x30] + blx r4 + ldr r0, [r5, #0x38] + add r0, r0, #0x1 + str r0, [r5, #0x38] + ldr r1, [r5, #0x38] + ldr r0, [r5, #0x2c] + cmp r1, r0 + movge r0, #0x0 + strge r0, [r5, #0x38] + add sp, sp, #0xc + ldmia sp!, {r4-r5,pc} + .balign 4 +_020C1300: .word sStrmChannel +_020C1304: .word buffer$7877 + + local_arm_func_start AlarmCallback +AlarmCallback: ; 0x020C1308 + ldr ip, _020C1314 ; =StrmCallback + mov r1, #0x1 + bx r12 + .balign 4 +_020C1314: .word StrmCallback + + arm_func_start ShutdownStrm +ShutdownStrm: ; 0x020C1318 + stmdb sp!, {r4,lr} + mov r4, r0 + ldr r0, [r4, #0x40] + bl NNS_SndFreeAlarm + ldr r0, _020C1344 ; =sStrmList + mov r1, r4 + bl NNS_FndRemoveListObject + ldr r0, [r4, #0x24] + bic r0, r0, #0x1 + str r0, [r4, #0x24] + ldmia sp!, {r4,pc} + .balign 4 +_020C1344: .word sStrmList + + local_arm_func_start ForceStopStrm +ForceStopStrm: ; 0x020C1348 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r4, r0 + ldr r0, [r4, #0x24] + mov r0, r0, lsl #0x1e + movs r0, r0, asr #0x1f + beq _020C13B4 + ldr r0, [r4, #0x40] + mov r2, #0x1 + mov r1, #0x0 + mov r2, r2, lsl r0 + ldr r0, [r4, #0x44] + mov r3, r1 + bl SND_StopTimer + add r0, r4, #0x8 + bl PM_DeletePreSleepCallback + add r0, r4, #0x14 + bl PM_DeletePostSleepCallback + ldr r0, [r4, #0x24] + bic r0, r0, #0x2 + str r0, [r4, #0x24] + bl SND_GetCurrentCommandTag + mov r5, r0 + mov r0, #0x1 + bl SND_FlushCommand + mov r0, r5 + bl SND_WaitForCommandProc +_020C13B4: + mov r0, r4 + bl ShutdownStrm + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + + arm_func_start NNS_SndStrmSetVolume +NNS_SndStrmSetVolume: ; 0x020C13C4 + stmdb sp!, {r4-r8,lr} + mov r7, r0 + str r1, [r7, #0x3c] + ldr r0, [r7, #0x48] + mov r5, #0x0 + cmp r0, #0x0 + ldmleia sp!, {r4-r8,pc} + ldr r4, _020C142C ; =sStrmChannel + mov r8, #0x1 +_020C13E8: + add r0, r7, r5 + ldrb r6, [r0, #0x4c] + ldr r1, [r7, #0x3c] + add r0, r4, r6, lsl #0x3 + ldr r0, [r0, #0x4] + add r0, r1, r0 + bl SND_CalcChannelVolume + mov r2, r0 + mov r0, r8, lsl r6 + and r1, r2, #0xff + mov r2, r2, asr #0x8 + bl SND_SetChannelVolume + ldr r0, [r7, #0x48] + add r5, r5, #0x1 + cmp r5, r0 + blt _020C13E8 + ldmia sp!, {r4-r8,pc} + .balign 4 +_020C142C: .word sStrmChannel + + arm_func_start NNS_SndStrmStop +NNS_SndStrmStop: ; 0x020C1430 + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r1, [r0, #0x24] + mov r1, r1, lsl #0x1f + movs r1, r1, asr #0x1f + addeq sp, sp, #0x4 + ldmeqia sp!, {pc} + bl ForceStopStrm + add sp, sp, #0x4 + ldmia sp!, {pc} + + arm_func_start NNS_SndStrmStart +NNS_SndStrmStart: ; 0x020C1458 + stmdb sp!, {r4,lr} + mov r4, r0 + ldr r0, [r4, #0x40] + mov r2, #0x1 + mov r1, #0x0 + mov r2, r2, lsl r0 + ldr r0, [r4, #0x44] + mov r3, r1 + bl SND_StartTimer + ldr r0, [r4, #0x24] + mov r0, r0, lsl #0x1e + movs r0, r0, asr #0x1f + ldmneia sp!, {r4,pc} + add r0, r4, #0x8 + bl PM_PrependPreSleepCallback + add r0, r4, #0x14 + bl PM_AppendPostSleepCallback + ldr r0, [r4, #0x24] + orr r0, r0, #0x2 + str r0, [r4, #0x24] + ldmia sp!, {r4,pc} + + arm_func_start NNS_SndStrmSetup +NNS_SndStrmSetup: ; 0x020C14AC + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0x24 + mov r10, r0 + ldr r4, [r10, #0x24] + mov r9, r1 + mov r1, r4, lsl #0x1f + movs r1, r1, asr #0x1f + ldr r1, [sp, #0x4c] + str r2, [sp, #0x18] + mov r4, r3 + str r1, [sp, #0x4c] + beq _020C14E0 + bl NNS_SndStrmStop +_020C14E0: + ldr r0, [sp, #0x4c] + ldr r2, [r10, #0x48] + mov r0, r0, lsl #0x5 + mul r1, r2, r0 + mov r0, r4 + bl _u32_div_f + ldr r1, [sp, #0x4c] + ldr r2, [sp, #0x48] + mul r1, r0, r1 + mov r0, r1, lsl #0x5 + str r0, [r10, #0x28] + ldr r0, [r10, #0x28] + cmp r9, #0x1 + moveq r0, r0, lsr #0x1 + mul r0, r2, r0 + ldr r1, [sp, #0x4c] + bl _u32_div_f + str r0, [sp, #0x1c] + bl NNS_SndAllocAlarm + str r0, [r10, #0x40] + ldr r0, [r10, #0x40] + cmp r0, #0x0 + addlt sp, sp, #0x24 + movlt r0, #0x0 + ldmltia sp!, {r4-r11,pc} + ldr r0, [r10, #0x48] + mov r8, #0x0 + cmp r0, #0x0 + ble _020C15D4 + ldr r0, [sp, #0x48] + mov r7, r0, lsl #0x5 + ldr r6, _020C1668 ; =sStrmChannel + mov r5, r8 + mov r4, #0x7f + mov r11, #0x40 + mov r0, #0x1 + str r0, [sp, #0x20] +_020C1574: + ldr r2, [r10, #0x28] + ldr r1, [sp, #0x18] + add r0, r10, r8 + mla r1, r2, r8, r1 + ldrb r0, [r0, #0x4c] + ldr r3, [sp, #0x20] + str r1, [r6, r0, lsl #0x3] + add r1, r6, r0, lsl #0x3 + str r5, [r1, #0x4] + str r5, [sp, #0x0] + ldr r2, [r10, #0x28] + mov r1, r9 + mov r2, r2, lsr #0x2 + str r2, [sp, #0x4] + str r4, [sp, #0x8] + str r5, [sp, #0xc] + str r7, [sp, #0x10] + str r11, [sp, #0x14] + ldr r2, [r6, r0, lsl #0x3] + bl SND_SetupChannelPcm + ldr r0, [r10, #0x48] + add r8, r8, #0x1 + cmp r8, r0 + blt _020C1574 +_020C15D4: + str r10, [sp, #0x0] + ldr r1, [sp, #0x1c] + ldr r0, [r10, #0x40] + ldr r3, _020C166C ; =AlarmCallback + mov r2, r1 + bl SND_SetupAlarm + ldr r0, _020C1670 ; =sStrmList + mov r1, r10 + bl NNS_FndAppendListObject + ldr r0, [sp, #0x4c] + str r9, [r10, #0x20] + str r0, [r10, #0x2c] + ldr r1, [sp, #0x50] + ldr r0, [sp, #0x54] + str r1, [r10, #0x30] + str r0, [r10, #0x34] + mov r0, #0x0 + str r0, [r10, #0x38] + str r0, [r10, #0x3c] + ldr r0, [r10, #0x24] + bic r0, r0, #0x1 + orr r0, r0, #0x1 + str r0, [r10, #0x24] + bl OS_DisableInterrupts + mov r4, r0 + mov r2, #0x1 + mov r0, r10 + mov r1, #0x0 + str r2, [r10, #0x2c] + bl StrmCallback + ldr r1, [sp, #0x4c] + mov r0, r4 + str r1, [r10, #0x2c] + bl OS_RestoreInterrupts + mov r0, #0x1 + add sp, sp, #0x24 + ldmia sp!, {r4-r11,pc} + .balign 4 +_020C1668: .word sStrmChannel +_020C166C: .word AlarmCallback +_020C1670: .word sStrmList + + arm_func_start NNS_SndStrmFreeChannel +NNS_SndStrmFreeChannel: ; 0x020C1674 + stmdb sp!, {r4,lr} + mov r4, r0 + ldr r0, [r4, #0x44] + cmp r0, #0x0 + ldmeqia sp!, {r4,pc} + bl NNS_SndUnlockChannel + mov r0, #0x0 + str r0, [r4, #0x44] + str r0, [r4, #0x48] + ldmia sp!, {r4,pc} + + arm_func_start NNS_SndStrmAllocChannel +NNS_SndStrmAllocChannel: ; 0x020C169C + stmdb sp!, {r4-r6,lr} + mov r5, r1 + mov r4, #0x0 + mov r6, r0 + mov r12, r4 + cmp r5, #0x0 + ble _020C16DC + mov r1, #0x1 +_020C16BC: + ldrb r3, [r2, r12] + add r0, r6, r12 + strb r3, [r0, #0x4c] + ldrb r0, [r2, r12] + add r12, r12, #0x1 + cmp r12, r5 + orr r4, r4, r1, lsl r0 + blt _020C16BC +_020C16DC: + mov r0, r4 + bl NNS_SndLockChannel + cmp r0, #0x0 + moveq r0, #0x0 + strne r5, [r6, #0x48] + strne r4, [r6, #0x44] + movne r0, #0x1 + ldmia sp!, {r4-r6,pc} + + arm_func_start NNS_SndStrmInit +NNS_SndStrmInit: ; 0x020C16FC + stmdb sp!, {r4,lr} + ldr r1, _020C176C ; =bInitialized$7761 + mov r4, r0 + ldr r0, [r1, #0x0] + cmp r0, #0x0 + bne _020C172C + ldr r0, _020C1770 ; =sStrmList + mov r1, #0x0 + bl NNS_FndInitList + ldr r0, _020C176C ; =bInitialized$7761 + mov r1, #0x1 + str r1, [r0, #0x0] +_020C172C: + ldr r1, _020C1774 ; =BeginSleep + ldr r0, _020C1778 ; =EndSleep + str r1, [r4, #0x8] + str r4, [r4, #0xc] + str r0, [r4, #0x14] + str r4, [r4, #0x18] + mov r0, #0x0 + str r0, [r4, #0x44] + str r0, [r4, #0x48] + ldr r0, [r4, #0x24] + bic r0, r0, #0x1 + str r0, [r4, #0x24] + ldr r0, [r4, #0x24] + bic r0, r0, #0x2 + str r0, [r4, #0x24] + ldmia sp!, {r4,pc} + .balign 4 +_020C176C: .word bInitialized$7761 +_020C1770: .word sStrmList +_020C1774: .word BeginSleep +_020C1778: .word EndSleep diff --git a/arm9/asm/NNS_SND_waveout.s b/arm9/asm/NNS_SND_waveout.s new file mode 100644 index 00000000..b3c6591f --- /dev/null +++ b/arm9/asm/NNS_SND_waveout.s @@ -0,0 +1,240 @@ + .include "asm/macros.inc" + .include "global.inc" + + .section .bss + + .global sWaveOut +sWaveOut: ; 0x021D1CBC + .space 0x140 + + .section .text + + arm_func_start NNS_SndWaveOutIsPlaying +NNS_SndWaveOutIsPlaying: ; 0x020C03B8 + stmdb sp!, {r4,lr} + mov r4, r0 + ldr r0, [r4, #0x8] + cmp r0, #0x0 + moveq r0, #0x0 + ldmeqia sp!, {r4,pc} + ldr r0, [r4, #0xc] + cmp r0, #0x0 + bne _020C03F8 + ldr r0, [r4, #0x10] + bl SND_IsFinishedCommandTag + cmp r0, #0x0 + moveq r0, #0x1 + ldmeqia sp!, {r4,pc} + mov r0, #0x1 + str r0, [r4, #0xc] +_020C03F8: + bl SND_GetChannelStatus + ldr r1, [r4, #0x0] + mov r2, #0x1 + mov r1, r2, lsl r1 + ands r0, r1, r0 + movne r0, r2 + moveq r0, #0x0 + streq r0, [r4, #0x8] + ldmia sp!, {r4,pc} + + arm_func_start NNS_SndWaveOutSetPan +NNS_SndWaveOutSetPan: ; 0x020C041C + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r2, [r0, #0x8] + cmp r2, #0x0 + addeq sp, sp, #0x4 + ldmeqia sp!, {pc} + ldr r0, [r0, #0x0] + mov r2, #0x1 + mov r0, r2, lsl r0 + bl SND_SetChannelPan + add sp, sp, #0x4 + ldmia sp!, {pc} + + arm_func_start NNS_SndWaveOutSetSpeed +NNS_SndWaveOutSetSpeed: ; 0x020C044C + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r5, r0 + ldr r0, [r5, #0x8] + mov r4, r1 + cmp r0, #0x0 + addeq sp, sp, #0x4 + ldmeqia sp!, {r4-r5,pc} + ldr r2, [r5, #0x4] + ldr r0, _020C04D4 ; =0xD87F8000 + mov r3, r2, asr #0x1f + mov r1, #0x7f + bl _ll_udiv + mov r2, r4 + mov r3, r4, asr #0x1f + bl _ll_udiv + mov r2, #0x0 + mov r3, r0 + mov r0, #0x10 + cmp r1, r2 + cmpeq r3, r0 + movcc r3, r0 + blo _020C04B8 + ldr r0, _020C04D8 ; =0x0000FFFF + cmp r1, r2 + cmpeq r3, r0 + movhi r3, r0 +_020C04B8: + ldr r0, [r5, #0x0] + mov r1, #0x1 + mov r0, r1, lsl r0 + mov r1, r3 + bl SND_SetChannelTimer + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + .balign 4 +_020C04D4: .word 0xD87F8000 +_020C04D8: .word 0x0000FFFF + + arm_func_start NNS_SndWaveOutSetVolume +NNS_SndWaveOutSetVolume: ; 0x020C04DC + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r2, [r0, #0x8] + cmp r2, #0x0 + addeq sp, sp, #0x4 + ldmeqia sp!, {pc} + ldr r0, [r0, #0x0] + mov r2, #0x1 + mov r0, r2, lsl r0 + mov r2, #0x0 + bl SND_SetChannelVolume + add sp, sp, #0x4 + ldmia sp!, {pc} + + arm_func_start NNS_SndWaveOutStop +NNS_SndWaveOutStop: ; 0x020C0510 + stmdb sp!, {r4,lr} + mov r4, r0 + ldr r0, [r4, #0x8] + cmp r0, #0x0 + ldmeqia sp!, {r4,pc} + ldr r0, [r4, #0x0] + mov r2, #0x1 + mov r1, #0x0 + mov r0, r2, lsl r0 + mov r2, r1 + mov r3, r1 + bl SND_StopTimer + mov r0, #0x0 + str r0, [r4, #0x8] + ldmia sp!, {r4,pc} + + arm_func_start NNS_SndWaveOutStart +NNS_SndWaveOutStart: ; 0x020C054C + stmdb sp!, {r4-r9,lr} + sub sp, sp, #0x1c + movs r8, r1 + mov r9, r0 + mov r7, r2 + mov r6, r3 + beq _020C0584 + cmp r8, #0x1 + ldreq r0, [sp, #0x3c] + ldreq r1, [sp, #0x38] + moveq r0, r0, asr #0x1 + moveq r5, r1, asr #0x1 + subeq r4, r0, r1, asr #0x1 + b _020C0598 +_020C0584: + ldr r0, [sp, #0x3c] + ldr r1, [sp, #0x38] + mov r0, r0, asr #0x2 + mov r5, r1, asr #0x2 + sub r4, r0, r1, asr #0x2 +_020C0598: + ldr r2, [sp, #0x40] + ldr r0, _020C0668 ; =0xD87F8000 + mov r3, r2, asr #0x1f + mov r1, #0x7f + bl _ll_udiv + ldr r2, [sp, #0x48] + mov r3, r2, asr #0x1f + bl _ll_udiv + mov r3, #0x0 + mov r2, #0x10 + cmp r1, r3 + cmpeq r0, r2 + movcc r0, r2 + blo _020C05E0 + ldr r2, _020C066C ; =0x0000FFFF + cmp r1, r3 + cmpeq r0, r2 + movhi r0, r2 +_020C05E0: + str r5, [sp, #0x0] + ldr r1, [sp, #0x44] + str r4, [sp, #0x4] + str r1, [sp, #0x8] + mov r1, #0x0 + str r1, [sp, #0xc] + cmp r6, #0x0 + movne r3, #0x1 + ldr r1, [sp, #0x4c] + str r0, [sp, #0x10] + str r1, [sp, #0x14] + ldr r0, [r9, #0x0] + moveq r3, #0x2 + mov r1, r8 + mov r2, r7 + bl SND_SetupChannelPcm + mov r1, #0x0 + ldr r0, [r9, #0x0] + mov r2, #0x1 + mov r0, r2, lsl r0 + mov r2, r1 + mov r3, r1 + bl SND_StartTimer + mov r0, #0x1 + str r0, [r9, #0x8] + mov r0, #0x0 + str r0, [r9, #0xc] + bl SND_GetCurrentCommandTag + str r0, [r9, #0x10] + ldr r1, [sp, #0x40] + mov r0, #0x1 + str r1, [r9, #0x4] + add sp, sp, #0x1c + ldmia sp!, {r4-r9,pc} + .balign 4 +_020C0668: .word 0xD87F8000 +_020C066C: .word 0x0000FFFF + + arm_func_start NNS_SndWaveOutFreeChannel +NNS_SndWaveOutFreeChannel: ; 0x020C0670 + ldr r0, [r0, #0x0] + mov r1, #0x1 + ldr ip, _020C0684 ; =NNS_SndUnlockChannel + mov r0, r1, lsl r0 + bx r12 + .balign 4 +_020C0684: .word NNS_SndUnlockChannel + + arm_func_start NNS_SndWaveOutAllocChannel +NNS_SndWaveOutAllocChannel: ; 0x020C0688 + stmdb sp!, {r4,lr} + mov r4, r0 + mov r0, #0x1 + mov r0, r0, lsl r4 + bl NNS_SndLockChannel + cmp r0, #0x0 + moveq r0, #0x0 + ldmeqia sp!, {r4,pc} + mov r0, #0x14 + mul r0, r4, r0 + ldr r2, _020C06C8 ; =sWaveOut + mov r1, #0x0 + str r4, [r2, r0] + add r0, r2, r0 + str r1, [r0, #0x8] + ldmia sp!, {r4,pc} + .balign 4 +_020C06C8: .word sWaveOut diff --git a/arm9/asm/RTC_internal.s b/arm9/asm/RTC_internal.s deleted file mode 100644 index 408b630c..00000000 --- a/arm9/asm/RTC_internal.s +++ /dev/null @@ -1,53 +0,0 @@ - .include "asm/macros.inc" - .include "global.inc" - - .text - - arm_func_start RtcSendPxiCommand -RtcSendPxiCommand: ; 0x020D61D4 - stmdb sp!, {lr} - sub sp, sp, #0x4 - mov r0, r0, lsl #0x8 - and r1, r0, #0x7f00 - mov r0, #0x5 - mov r2, #0x0 - bl PXI_SendWordByFifo -_020D61F0: ; 0x020D61F0 - cmp r0, #0x0 - movge r0, #0x1 - movlt r0, #0x0 - add sp, sp, #0x4 - ldmia sp!, {lr} - bx lr - - arm_func_start RTCi_WriteRawStatus2Async -RTCi_WriteRawStatus2Async: - ldr ip, _020D6214 ; =RtcSendPxiCommand - mov r0, #0x27 - bx r12 - .balign 4 -_020D6214: .word RtcSendPxiCommand - - arm_func_start RTCi_ReadRawTimeAsync -RTCi_ReadRawTimeAsync: - ldr ip, _020D6224 ; =RtcSendPxiCommand - mov r0, #0x12 - bx r12 - .balign 4 -_020D6224: .word RtcSendPxiCommand - - arm_func_start RTCi_ReadRawDateAsync -RTCi_ReadRawDateAsync: - ldr ip, _020D6234 ; =RtcSendPxiCommand - mov r0, #0x11 - bx r12 - .balign 4 -_020D6234: .word RtcSendPxiCommand - - arm_func_start RTCi_ReadRawDateTimeAsync -RTCi_ReadRawDateTimeAsync: - ldr ip, _020D6244 ; =RtcSendPxiCommand - mov r0, #0x10 - bx r12 - .balign 4 -_020D6244: .word RtcSendPxiCommand diff --git a/arm9/asm/WIFI_stubsmd5_dummy.s b/arm9/asm/WIFI_stubsmd5_dummy.s deleted file mode 100644 index dd3f79a7..00000000 --- a/arm9/asm/WIFI_stubsmd5_dummy.s +++ /dev/null @@ -1,25 +0,0 @@ - .include "asm/macros.inc" - .include "global.inc" - - .text - - arm_func_start MD5Final -MD5Final: ; 0x020A8BA4 - ldr ip, _020A8BAC ; =DGT_Hash1GetDigest_R - bx r12 - .balign 4 -_020A8BAC: .word DGT_Hash1GetDigest_R - - arm_func_start MD5Update -MD5Update: ; 0x020A8BB0 - ldr ip, _020A8BB8 ; =DGT_Hash1SetSource - bx r12 - .balign 4 -_020A8BB8: .word DGT_Hash1SetSource - - arm_func_start MD5Init -MD5Init: ; 0x020A8BBC - ldr ip, _020A8BC4 ; =DGT_Hash1Reset - bx r12 - .balign 4 -_020A8BC4: .word DGT_Hash1Reset diff --git a/arm9/asm/macros/function.inc b/arm9/asm/macros/function.inc index 6b9e5f40..3323f53e 100644 --- a/arm9/asm/macros/function.inc +++ b/arm9/asm/macros/function.inc @@ -4,6 +4,11 @@ .arm .endm + .macro local_arm_func_start name + .balign 4, 0 + .arm + .endm + .macro arm_func_end name .size \name, .-\name .endm diff --git a/arm9/asm/nonmatchings/GenerateFontHalfRowLookupTable.s b/arm9/asm/nonmatchings/GenerateFontHalfRowLookupTable.s deleted file mode 100644 index a590ef02..00000000 --- a/arm9/asm/nonmatchings/GenerateFontHalfRowLookupTable.s +++ /dev/null @@ -1,92 +0,0 @@ -.section .text - -glabel GenerateFontHalfRowLookupTable - -.extern UNK_021C570C -.extern UNK_021C5734 - - push {r3-r7, lr} - sub sp, #0x30 - ldr r3, _0201C0F8 ; =UNK_021C570C - mov r5, #0x0 - str r5, [sp, #0x20] - str r0, [sp, #0x24] - str r2, [sp, #0x28] - str r1, [sp, #0x2c] - strh r1, [r3, #0x6] - strh r0, [r3, #0x2] - add r0, sp, #0x20 - strh r2, [r3, #0x4] - str r5, [sp, #0x14] - str r0, [sp, #0x8] - mov r12, r0 - mov lr, r0 - str r0, [sp, #0x18] -_0201C07E: - mov r0, #0x0 - str r0, [sp, #0x10] - ldr r0, [sp, #0x18] - str r0, [sp, #0x4] - ldr r0, [sp, #0x8] - ldr r0, [r0, #0x0] - str r0, [sp, #0x1c] -_0201C08C: - mov r0, #0x0 - str r0, [sp, #0xc] - mov r0, lr - str r0, [sp, #0x0] - ldr r0, [sp, #0x4] - ldr r0, [r0, #0x0] - lsl r7, r0, #0x4 -_0201C09A: - ldr r0, [sp, #0x0] - mov r3, #0x0 - ldr r0, [r0, #0x0] - mov r4, r12 - lsl r6, r0, #0x8 -_0201C0A4: - ldr r0, [r4, #0x0] - add r1, r7, #0x0 - lsl r0, r0, #0xc - orr r0, r6 - orr r1, r0 - ldr r0, [sp, #0x1c] - add r3, r3, #0x1 - add r2, r0, #0x0 - orr r2, r1 - lsl r1, r5, #0x1 - ldr r0, _0201C0FC ; =UNK_021C5734 - add r5, r5, #0x1 - add r4, r4, #0x4 - strh r2, [r0, r1] - cmp r3, #0x4 - blt _0201C0A4 - ldr r0, [sp, #0x0] - add r0, r0, #0x4 - str r0, [sp, #0x0] - ldr r0, [sp, #0xc] - add r0, r0, #0x1 - str r0, [sp, #0xc] - cmp r0, #0x4 - blt _0201C09A - ldr r0, [sp, #0x4] - add r0, r0, #0x4 - str r0, [sp, #0x4] - ldr r0, [sp, #0x10] - add r0, r0, #0x1 - str r0, [sp, #0x10] - cmp r0, #0x4 - blt _0201C08C - ldr r0, [sp, #0x8] - add r0, r0, #0x4 - str r0, [sp, #0x8] - ldr r0, [sp, #0x14] - add r0, r0, #0x1 - str r0, [sp, #0x14] - cmp r0, #0x4 - blt _0201C07E - add sp, #0x30 - pop {r3-r7, pc} - .balign 4 -_0201C0F8: .word UNK_021C570C -_0201C0FC: .word UNK_021C5734 diff --git a/arm9/asm/scrcmd_10.s b/arm9/asm/scrcmd_10.s index ea5903d8..3235f5ae 100644 --- a/arm9/asm/scrcmd_10.s +++ b/arm9/asm/scrcmd_10.s @@ -27,8 +27,8 @@ UNK_020F4340: ; 0x020F4340 .text - thumb_func_start FUN_02042354 -FUN_02042354: ; 0x02042354 + thumb_func_start ScrCmd_Unk01DA +ScrCmd_Unk01DA: ; 0x02042354 push {r3, lr} add r0, #0x80 ldr r0, [r0, #0x0] @@ -37,8 +37,8 @@ FUN_02042354: ; 0x02042354 mov r0, #0x0 pop {r3, pc} - thumb_func_start FUN_02042364 -FUN_02042364: ; 0x02042364 + thumb_func_start ScrCmd_Unk01DB +ScrCmd_Unk01DB: ; 0x02042364 push {r4-r6, lr} add r5, r0, #0x0 bl ScriptReadHalfword @@ -60,8 +60,8 @@ FUN_02042364: ; 0x02042364 mov r0, #0x0 pop {r4-r6, pc} - thumb_func_start FUN_02042394 -FUN_02042394: ; 0x02042394 + thumb_func_start ScrCmd_Unk01DC +ScrCmd_Unk01DC: ; 0x02042394 push {r4, lr} add r4, r0, #0x0 add r0, #0x80 @@ -76,8 +76,8 @@ FUN_02042394: ; 0x02042394 str r0, [r1, #0x0] pop {r4, pc} - thumb_func_start FUN_020423B0 -FUN_020423B0: ; 0x020423B0 + thumb_func_start ScrCmd_Unk01DD +ScrCmd_Unk01DD: ; 0x020423B0 push {r3-r7, lr} sub sp, #0x8 add r7, r0, #0x0 @@ -502,8 +502,8 @@ _020426FA: add sp, #0x8 pop {r3-r7, pc} - thumb_func_start FUN_02042700 -FUN_02042700: ; 0x02042700 + thumb_func_start ScrCmd_Unk01DE +ScrCmd_Unk01DE: ; 0x02042700 push {r3-r7, lr} add r5, r0, #0x0 add r1, r5, #0x0 @@ -561,8 +561,8 @@ FUN_02042700: ; 0x02042700 pop {r3-r7, pc} .balign 4 - thumb_func_start FUN_02042780 -FUN_02042780: ; 0x02042780 + thumb_func_start ScrCmd_Unk01DF +ScrCmd_Unk01DF: ; 0x02042780 push {r3-r5, lr} add r5, r0, #0x0 bl ScriptReadHalfword @@ -581,8 +581,8 @@ FUN_02042780: ; 0x02042780 pop {r3-r5, pc} .balign 4 - thumb_func_start FUN_020427A8 -FUN_020427A8: ; 0x020427A8 + thumb_func_start ScrCmd_Unk01E0 +ScrCmd_Unk01E0: ; 0x020427A8 push {r3-r5, lr} add r5, r0, #0x0 bl ScriptReadHalfword @@ -601,8 +601,8 @@ FUN_020427A8: ; 0x020427A8 pop {r3-r5, pc} .balign 4 - thumb_func_start FUN_020427D0 -FUN_020427D0: ; 0x020427D0 + thumb_func_start ScrCmd_Unk01E1 +ScrCmd_Unk01E1: ; 0x020427D0 push {r3-r7, lr} add r5, r0, #0x0 bl ScriptReadHalfword @@ -671,8 +671,8 @@ _0204284C: _0204285C: .word 0x00000884 _02042860: .word 0x0000083E - thumb_func_start FUN_02042864 -FUN_02042864: ; 0x02042864 + thumb_func_start ScrCmd_Unk01E2 +ScrCmd_Unk01E2: ; 0x02042864 push {r3-r5, lr} add r5, r0, #0x0 bl ScriptReadHalfword @@ -694,8 +694,8 @@ FUN_02042864: ; 0x02042864 pop {r3-r5, pc} .balign 4 - thumb_func_start FUN_02042894 -FUN_02042894: ; 0x02042894 + thumb_func_start ScrCmd_Unk01E3 +ScrCmd_Unk01E3: ; 0x02042894 push {r3-r6, lr} sub sp, #0x4 add r5, r0, #0x0 @@ -729,8 +729,8 @@ FUN_02042894: ; 0x02042894 add sp, #0x4 pop {r3-r6, pc} - thumb_func_start FUN_020428E0 -FUN_020428E0: ; 0x020428E0 + thumb_func_start ScrCmd_Unk01E4 +ScrCmd_Unk01E4: ; 0x020428E0 push {r3-r5, lr} add r5, r0, #0x0 bl ScriptReadHalfword @@ -792,8 +792,8 @@ _02042948: .balign 4 _0204294C: .word UNK_020F4334 - thumb_func_start FUN_02042950 -FUN_02042950: ; 0x02042950 + thumb_func_start ScrCmd_Unk0294 +ScrCmd_Unk0294: ; 0x02042950 push {r3-r7, lr} add r5, r0, #0x0 add r0, #0x80 @@ -817,8 +817,8 @@ FUN_02042950: ; 0x02042950 mov r0, #0x0 pop {r3-r7, pc} - thumb_func_start FUN_02042980 -FUN_02042980: ; 0x02042980 + thumb_func_start ScrCmd_Unk0295 +ScrCmd_Unk0295: ; 0x02042980 push {r3, lr} add r0, #0x80 ldr r0, [r0, #0x0] @@ -830,8 +830,8 @@ FUN_02042980: ; 0x02042980 pop {r3, pc} .balign 4 - thumb_func_start FUN_02042998 -FUN_02042998: ; 0x02042998 + thumb_func_start ScrCmd_Unk0296 +ScrCmd_Unk0296: ; 0x02042998 push {r4, lr} add r4, r0, #0x0 add r0, #0x80 @@ -847,8 +847,8 @@ FUN_02042998: ; 0x02042998 pop {r4, pc} .balign 4 - thumb_func_start FUN_020429B8 -FUN_020429B8: ; 0x020429B8 + thumb_func_start ScrCmd_Unk0297 +ScrCmd_Unk0297: ; 0x020429B8 push {r3-r5, lr} add r5, r0, #0x0 add r1, r5, #0x0 @@ -870,8 +870,8 @@ FUN_020429B8: ; 0x020429B8 mov r0, #0x0 pop {r3-r5, pc} - thumb_func_start FUN_020429E8 -FUN_020429E8: ; 0x020429E8 + thumb_func_start ScrCmd_Unk0298 +ScrCmd_Unk0298: ; 0x020429E8 push {r3-r5, lr} add r5, r0, #0x0 add r1, r5, #0x0 @@ -893,8 +893,8 @@ FUN_020429E8: ; 0x020429E8 pop {r3-r5, pc} .balign 4 - thumb_func_start FUN_02042A18 -FUN_02042A18: ; 0x02042A18 + thumb_func_start ScrCmd_Unk0299 +ScrCmd_Unk0299: ; 0x02042A18 push {r3-r5, lr} add r5, r0, #0x0 add r1, r5, #0x0 @@ -916,8 +916,8 @@ FUN_02042A18: ; 0x02042A18 pop {r3-r5, pc} .balign 4 - thumb_func_start FUN_02042A48 -FUN_02042A48: ; 0x02042A48 + thumb_func_start ScrCmd_Unk029A +ScrCmd_Unk029A: ; 0x02042A48 push {r4-r6, lr} add r4, r0, #0x0 add r1, r4, #0x0 @@ -955,8 +955,8 @@ _02042A90: pop {r4-r6, pc} .balign 4 - thumb_func_start FUN_02042A98 -FUN_02042A98: ; 0x02042A98 + thumb_func_start ScrCmd_Unk029B +ScrCmd_Unk029B: ; 0x02042A98 push {r3-r7, lr} add r5, r0, #0x0 bl ScriptReadHalfword diff --git a/arm9/asm/scrcmd_12.s b/arm9/asm/scrcmd_12.s index cc011b0f..25911feb 100644 --- a/arm9/asm/scrcmd_12.s +++ b/arm9/asm/scrcmd_12.s @@ -47,8 +47,8 @@ FUN_02042D10: ; 0x02042D10 bl FUN_0202B020 pop {r3, pc} - thumb_func_start FUN_02042D1C -FUN_02042D1C: ; 0x02042D1C + thumb_func_start ScrCmd_Unk023E +ScrCmd_Unk023E: ; 0x02042D1C push {r3-r7, lr} sub sp, #0x20 add r4, r0, #0x0 diff --git a/arm9/asm/scrcmd_17.s b/arm9/asm/scrcmd_17.s index f0e027ed..3df4d6e4 100644 --- a/arm9/asm/scrcmd_17.s +++ b/arm9/asm/scrcmd_17.s @@ -16,8 +16,8 @@ UNK_020F4494: ; 0x020F4494 .text - thumb_func_start FUN_02044158 -FUN_02044158: ; 0x02044158 + thumb_func_start ScrCmd_Unk0215 +ScrCmd_Unk0215: ; 0x02044158 push {r3, lr} add r0, #0x80 ldr r0, [r0, #0x0] @@ -27,8 +27,8 @@ FUN_02044158: ; 0x02044158 mov r0, #0x0 pop {r3, pc} - thumb_func_start FUN_0204416C -FUN_0204416C: ; 0x0204416C + thumb_func_start ScrCmd_Unk0216 +ScrCmd_Unk0216: ; 0x0204416C push {r3-r5, lr} add r5, r0, #0x0 bl ScriptReadHalfword @@ -48,8 +48,8 @@ FUN_0204416C: ; 0x0204416C pop {r3-r5, pc} .balign 4 - thumb_func_start FUN_02044198 -FUN_02044198: ; 0x02044198 + thumb_func_start ScrCmd_Unk0217 +ScrCmd_Unk0217: ; 0x02044198 push {r3-r5, lr} add r5, r0, #0x0 bl ScriptReadHalfword diff --git a/arm9/asm/scrcmd_18.s b/arm9/asm/scrcmd_18.s index fe0e3aa9..25fe86b8 100644 --- a/arm9/asm/scrcmd_18.s +++ b/arm9/asm/scrcmd_18.s @@ -3,8 +3,8 @@ .text - thumb_func_start ScrCmd_getpartyspecies -ScrCmd_getpartyspecies: ; 0x0204434C + thumb_func_start ScrCmd_GetPartySpecies +ScrCmd_GetPartySpecies: ; 0x0204434C ; getpartyspecies XXXX, YYYY ; Sets var YYYY to species of mon in party slot XXXX. ; If mon is an egg, the value is SPECIES_NONE. @@ -49,8 +49,8 @@ _020443A2: mov r0, #0x0 pop {r4-r6, pc} - thumb_func_start ScrCmd_checkpartymonotid -ScrCmd_checkpartymonotid: ; 0x020443A8 + thumb_func_start ScrCmd_CheckPartyMonOTID +ScrCmd_CheckPartyMonOTID: ; 0x020443A8 push {r3-r7, lr} add r4, r0, #0x0 add r0, #0x80 @@ -98,8 +98,8 @@ _0204440E: mov r0, #0x0 pop {r3-r7, pc} - thumb_func_start ScrCmd_giveegg -ScrCmd_giveegg: ; 0x02044414 + thumb_func_start ScrCmd_GiveEgg +ScrCmd_GiveEgg: ; 0x02044414 push {r4-r7, lr} sub sp, #0xc add r5, r0, #0x0 @@ -157,8 +157,8 @@ _02044494: pop {r4-r7, pc} .balign 4 - thumb_func_start ScrCmd_setpartymonmove -ScrCmd_setpartymonmove: ; 0x0204449C + thumb_func_start ScrCmd_SetPartyMonMove +ScrCmd_SetPartyMonMove: ; 0x0204449C push {r3-r7, lr} add r5, r0, #0x0 bl ScriptReadHalfword @@ -196,8 +196,8 @@ ScrCmd_setpartymonmove: ; 0x0204449C pop {r3-r7, pc} .balign 4 - thumb_func_start ScrCmd_partymonhasmove -ScrCmd_partymonhasmove: ; 0x020444F4 + thumb_func_start ScrCmd_PartyMonHasMove +ScrCmd_PartyMonHasMove: ; 0x020444F4 push {r3-r7, lr} add r4, r0, #0x0 add r1, r4, #0x0 @@ -271,8 +271,8 @@ _02044592: pop {r3-r7, pc} .balign 4 - thumb_func_start ScrCmd_findpartymonwithmove -ScrCmd_findpartymonwithmove: ; 0x02044598 + thumb_func_start ScrCmd_FindPartyMonWithMove +ScrCmd_FindPartyMonWithMove: ; 0x02044598 push {r3-r7, lr} sub sp, #0x8 add r4, r0, #0x0 @@ -359,8 +359,8 @@ _02044648: _02044650: .word 0x00000006 _02044654: .word 0x00000000 - thumb_func_start ScrCmd_survivepsn -ScrCmd_survivepsn: ; 0x02044658 + thumb_func_start ScrCmd_SurvivePsn +ScrCmd_SurvivePsn: ; 0x02044658 push {r4-r6, lr} add r5, r0, #0x0 bl ScriptReadHalfword @@ -389,8 +389,8 @@ ScrCmd_survivepsn: ; 0x02044658 mov r0, #0x0 pop {r4-r6, pc} - thumb_func_start ScrCmd_countpartymonsatorbelowlevel -ScrCmd_countpartymonsatorbelowlevel: ; 0x0204469C + thumb_func_start ScrCmd_CountPartyMonsAtOrBelowLevel +ScrCmd_CountPartyMonsAtOrBelowLevel: ; 0x0204469C push {r4-r7, lr} sub sp, #0xc add r4, r0, #0x0 @@ -459,8 +459,8 @@ _02044726: add sp, #0xc pop {r4-r7, pc} - thumb_func_start ScrCmd_getpartymonlevel -ScrCmd_getpartymonlevel: ; 0x02044730 + thumb_func_start ScrCmd_GetPartyMonLevel +ScrCmd_GetPartyMonLevel: ; 0x02044730 push {r4-r6, lr} add r5, r0, #0x0 add r1, r5, #0x0 @@ -501,8 +501,8 @@ _02044786: pop {r4-r6, pc} .balign 4 - thumb_func_start ScrCmd_getpartymonnature -ScrCmd_getpartymonnature: ; 0x0204478C + thumb_func_start ScrCmd_GetPartyMonNature +ScrCmd_GetPartyMonNature: ; 0x0204478C push {r4-r6, lr} add r6, r0, #0x0 add r1, r6, #0x0 @@ -554,8 +554,8 @@ _020447F2: pop {r4-r6, pc} .balign 4 - thumb_func_start ScrCmd_findpartymonwithnature -ScrCmd_findpartymonwithnature: ; 0x02044800 + thumb_func_start ScrCmd_FindPartyMonWithNature +ScrCmd_FindPartyMonWithNature: ; 0x02044800 push {r3-r7, lr} sub sp, #0x8 add r4, r0, #0x0 @@ -619,8 +619,8 @@ _0204487E: _02044884: .word 0x000000FF _02044888: .word 0x00000000 - thumb_func_start ScrCmd_getpartymonfriendship -ScrCmd_getpartymonfriendship: ; 0x0204488C + thumb_func_start ScrCmd_GetPartyMonFriendship +ScrCmd_GetPartyMonFriendship: ; 0x0204488C push {r4-r6, lr} add r5, r0, #0x0 add r1, r5, #0x0 @@ -651,8 +651,8 @@ ScrCmd_getpartymonfriendship: ; 0x0204488C mov r0, #0x0 pop {r4-r6, pc} - thumb_func_start FUN_020448D4 -FUN_020448D4: ; 0x020448D4 + thumb_func_start ScrCmd_Unk01BA +ScrCmd_Unk01BA: ; 0x020448D4 push {r3-r7, lr} sub sp, #0x8 add r5, r0, #0x0 @@ -748,8 +748,8 @@ _02044994: add sp, #0x8 pop {r3-r7, pc} - thumb_func_start FUN_020449A4 -FUN_020449A4: ; 0x020449A4 + thumb_func_start ScrCmd_Unk01BB +ScrCmd_Unk01BB: ; 0x020449A4 push {r3-r6, lr} sub sp, #0x4 add r5, r0, #0x0 @@ -797,8 +797,8 @@ _020449FA: add sp, #0x4 pop {r3-r6, pc} - thumb_func_start FUN_02044A0C -FUN_02044A0C: ; 0x02044A0C + thumb_func_start ScrCmd_Unk0281 +ScrCmd_Unk0281: ; 0x02044A0C push {r3-r7, lr} add r5, r0, #0x0 bl ScriptReadHalfword @@ -839,8 +839,8 @@ FUN_02044A0C: ; 0x02044A0C pop {r3-r7, pc} .balign 4 - thumb_func_start FUN_02044A6C -FUN_02044A6C: ; 0x02044A6C + thumb_func_start ScrCmd_Unk0247 +ScrCmd_Unk0247: ; 0x02044A6C push {r3-r5, lr} add r5, r0, #0x0 bl ScriptReadHalfword @@ -859,8 +859,8 @@ FUN_02044A6C: ; 0x02044A6C pop {r3-r5, pc} .balign 4 - thumb_func_start FUN_02044A94 -FUN_02044A94: ; 0x02044A94 + thumb_func_start ScrCmd_Unk0248 +ScrCmd_Unk0248: ; 0x02044A94 push {r3-r7, lr} add r5, r0, #0x0 add r1, r5, #0x0 @@ -906,8 +906,8 @@ FUN_02044A94: ; 0x02044A94 pop {r3-r7, pc} .balign 4 - thumb_func_start FUN_02044B00 -FUN_02044B00: ; 0x02044B00 + thumb_func_start ScrCmd_Unk0177 +ScrCmd_Unk0177: ; 0x02044B00 push {r3-r5, lr} add r5, r0, #0x0 add r1, r5, #0x0 @@ -927,8 +927,8 @@ FUN_02044B00: ; 0x02044B00 pop {r3-r5, pc} .balign 4 - thumb_func_start FUN_02044B2C -FUN_02044B2C: ; 0x02044B2C + thumb_func_start ScrCmd_Unk019A +ScrCmd_Unk019A: ; 0x02044B2C push {r3-r7, lr} add r4, r0, #0x0 add r1, r4, #0x0 @@ -970,8 +970,8 @@ _02044B7A: pop {r3-r7, pc} .balign 4 - thumb_func_start FUN_02044B84 -FUN_02044B84: ; 0x02044B84 + thumb_func_start ScrCmd_Unk019B +ScrCmd_Unk019B: ; 0x02044B84 push {r4-r7, lr} sub sp, #0xc add r4, r0, #0x0 @@ -1034,8 +1034,8 @@ _02044C00: pop {r4-r7, pc} .balign 4 - thumb_func_start FUN_02044C0C -FUN_02044C0C: ; 0x02044C0C + thumb_func_start ScrCmd_Unk019C +ScrCmd_Unk019C: ; 0x02044C0C push {r4-r7, lr} sub sp, #0xc add r4, r0, #0x0 @@ -1092,8 +1092,8 @@ _02044C76: add sp, #0xc pop {r4-r7, pc} - thumb_func_start FUN_02044C88 -FUN_02044C88: ; 0x02044C88 + thumb_func_start ScrCmd_Unk019D +ScrCmd_Unk019D: ; 0x02044C88 push {r3-r7, lr} add r4, r0, #0x0 add r1, r4, #0x0 @@ -1135,8 +1135,8 @@ _02044CD6: pop {r3-r7, pc} .balign 4 - thumb_func_start FUN_02044CE0 -FUN_02044CE0: ; 0x02044CE0 + thumb_func_start ScrCmd_Unk0119 +ScrCmd_Unk0119: ; 0x02044CE0 push {r3-r7, lr} add r4, r0, #0x0 add r1, r4, #0x0 @@ -1184,8 +1184,8 @@ _02044D3C: .balign 4 _02044D40: .word 0x00000000 - thumb_func_start FUN_02044D44 -FUN_02044D44: ; 0x02044D44 + thumb_func_start ScrCmd_Unk011A +ScrCmd_Unk011A: ; 0x02044D44 push {r4-r6, lr} add r5, r0, #0x0 bl ScriptReadHalfword @@ -1216,8 +1216,8 @@ FUN_02044D44: ; 0x02044D44 mov r0, #0x0 pop {r4-r6, pc} - thumb_func_start FUN_02044D8C -FUN_02044D8C: ; 0x02044D8C + thumb_func_start ScrCmd_Unk01C8 +ScrCmd_Unk01C8: ; 0x02044D8C push {r4-r6, lr} add r4, r0, #0x0 add r1, r4, #0x0 @@ -1297,8 +1297,8 @@ _02044E2C: pop {r4-r6, pc} .balign 4 - thumb_func_start FUN_02044E34 -FUN_02044E34: ; 0x02044E34 + thumb_func_start ScrCmd_Unk01C9 +ScrCmd_Unk01C9: ; 0x02044E34 push {r4-r6, lr} add r4, r0, #0x0 add r1, r4, #0x0 @@ -1327,8 +1327,8 @@ FUN_02044E34: ; 0x02044E34 mov r0, #0x0 pop {r4-r6, pc} - thumb_func_start FUN_02044E78 -FUN_02044E78: ; 0x02044E78 + thumb_func_start ScrCmd_Unk01CA +ScrCmd_Unk01CA: ; 0x02044E78 push {r3-r7, lr} add r4, r0, #0x0 add r1, r4, #0x0 @@ -1369,8 +1369,8 @@ FUN_02044E78: ; 0x02044E78 pop {r3-r7, pc} .balign 4 - thumb_func_start FUN_02044ED8 -FUN_02044ED8: ; 0x02044ED8 + thumb_func_start ScrCmd_Unk01EE +ScrCmd_Unk01EE: ; 0x02044ED8 push {r4-r6, lr} add r5, r0, #0x0 add r1, r5, #0x0 @@ -1401,8 +1401,8 @@ FUN_02044ED8: ; 0x02044ED8 mov r0, #0x0 pop {r4-r6, pc} - thumb_func_start FUN_02044F20 -FUN_02044F20: ; 0x02044F20 + thumb_func_start ScrCmd_Unk01F0 +ScrCmd_Unk01F0: ; 0x02044F20 push {r3-r5, lr} add r5, r0, #0x0 add r1, r5, #0x0 @@ -1427,8 +1427,8 @@ FUN_02044F20: ; 0x02044F20 mov r0, #0x0 pop {r3-r5, pc} - thumb_func_start FUN_02044F58 -FUN_02044F58: ; 0x02044F58 + thumb_func_start ScrCmd_Unk01C0 +ScrCmd_Unk01C0: ; 0x02044F58 push {r3-r7, lr} sub sp, #0x8 add r4, r0, #0x0 @@ -1495,8 +1495,8 @@ _02044FDE: .balign 4 _02044FE4: .word 0x00000000 - thumb_func_start FUN_02044FE8 -FUN_02044FE8: ; 0x02044FE8 + thumb_func_start ScrCmd_Unk022E +ScrCmd_Unk022E: ; 0x02044FE8 push {r3-r7, lr} add r5, r0, #0x0 bl ScriptReadHalfword @@ -1550,8 +1550,8 @@ _02045048: pop {r3-r7, pc} .balign 4 - thumb_func_start FUN_0204505C -FUN_0204505C: ; 0x0204505C + thumb_func_start ScrCmd_Unk022F +ScrCmd_Unk022F: ; 0x0204505C push {r3-r7, lr} sub sp, #0x10 add r4, r0, #0x0 @@ -1632,8 +1632,8 @@ _020450E8: pop {r3-r7, pc} .balign 4 - thumb_func_start FUN_02045104 -FUN_02045104: ; 0x02045104 + thumb_func_start ScrCmd_Unk0230 +ScrCmd_Unk0230: ; 0x02045104 push {r3-r7, lr} add r5, r0, #0x0 bl ScriptReadHalfword @@ -1679,8 +1679,8 @@ FUN_02045104: ; 0x02045104 pop {r3-r7, pc} .balign 4 - thumb_func_start FUN_02045170 -FUN_02045170: ; 0x02045170 + thumb_func_start ScrCmd_Unk0231 +ScrCmd_Unk0231: ; 0x02045170 push {r3-r6, lr} sub sp, #0x4 add r5, r0, #0x0 @@ -1722,8 +1722,8 @@ FUN_02045170: ; 0x02045170 pop {r3-r6, pc} .balign 4 - thumb_func_start FUN_020451D0 -FUN_020451D0: ; 0x020451D0 + thumb_func_start ScrCmd_Unk02B7 +ScrCmd_Unk02B7: ; 0x020451D0 push {r3-r7, lr} sub sp, #0x8 add r4, r0, #0x0 @@ -1795,7 +1795,7 @@ _0204524C: add sp, #0x8 pop {r3-r7, pc} - thumb_func_start FUN_02045264 -FUN_02045264: ; 0x02045264 + thumb_func_start ScrCmd_Unk00A0 +ScrCmd_Unk00A0: ; 0x02045264 mov r0, #0x0 bx lr diff --git a/arm9/asm/scrcmd_2.s b/arm9/asm/scrcmd_2.s deleted file mode 100644 index d7d98c66..00000000 --- a/arm9/asm/scrcmd_2.s +++ /dev/null @@ -1,391 +0,0 @@ - .include "asm/macros.inc" - .include "global.inc" - - .section .rodata - - .global UNK_020F40A0 -UNK_020F40A0: ; 0x020F40A0 - .byte 0x8E, 0x00, 0x0B, 0x00, 0xFF, 0xFF - - .global UNK_020F40A6 -UNK_020F40A6: ; 0x020F40A6 - .byte 0x92, 0x00, 0x0E, 0x00, 0xFF, 0xFF - - .global UNK_020F40AC -UNK_020F40AC: ; 0x020F40AC - .byte 0x8C, 0x00, 0x0E, 0x00, 0x06, 0x00, 0xFF, 0xFF - - .global UNK_020F40B4 -UNK_020F40B4: ; 0x020F40B4 - .byte 0x8D, 0x00, 0x0E, 0x00, 0x06, 0x00, 0xFF, 0xFF - - .global UNK_020F40BC -UNK_020F40BC: ; 0x020F40BC - .byte 0x92, 0x00, 0x0E, 0x00, 0x06, 0x00, 0x08, 0x00, 0xFF, 0xFF - - .global UNK_020F40C6 -UNK_020F40C6: ; 0x020F40C6 - .byte 0x24, 0x00, 0x22, 0x00, 0x23, 0x00, 0x25, 0x00, 0xFF, 0xFF - - .global UNK_020F40D0 -UNK_020F40D0: ; 0x020F40D0 - .byte 0x90, 0x00, 0x0D, 0x00, 0x0F, 0x00, 0x0A, 0x00, 0xFF, 0xFF - - .global UNK_020F40DA -UNK_020F40DA: ; 0x020F40DA - .byte 0x92, 0x00, 0x06, 0x00, 0x08, 0x00, 0x0D, 0x00, 0xFF, 0xFF - - .global UNK_020F40E4 -UNK_020F40E4: ; 0x020F40E4 - .byte 0x92, 0x00, 0x08, 0x00, 0x0D, 0x00, 0x0F, 0x00, 0xFF, 0xFF - - .global UNK_020F40EE -UNK_020F40EE: ; 0x020F40EE - .byte 0x92, 0x00, 0x0D, 0x00, 0x0F, 0x00, 0x0A, 0x00, 0xFF, 0xFF - - .global UNK_020F40F8 -UNK_020F40F8: ; 0x020F40F8 - .byte 0x8F, 0x00, 0x0E, 0x00, 0x06, 0x00, 0x08, 0x00, 0xFF, 0xFF - - .global UNK_020F4102 -UNK_020F4102: ; 0x020F4102 - .byte 0x92, 0x00, 0x0F, 0x00, 0x0A, 0x00, 0x09, 0x00, 0xFF, 0xFF - - .global UNK_020F410C -UNK_020F410C: ; 0x020F410C - .byte 0x07, 0x00, 0x16, 0x00, 0x19, 0x00, 0x1A, 0x00, 0x1B, 0x00, 0xFF, 0xFF - - .global UNK_020F4118 -UNK_020F4118: ; 0x020F4118 - .byte 0x73, 0x00, 0x74, 0x00, 0x75, 0x00, 0x77, 0x00, 0x78, 0x00, 0x79, 0x00, 0xFF, 0xFF - - .global UNK_020F4126 -UNK_020F4126: ; 0x020F4126 - .byte 0x2E, 0x00, 0x2F, 0x00, 0x31, 0x00, 0x34, 0x00, 0x30, 0x00, 0x2D, 0x00, 0xFF, 0xFF - - .global UNK_020F4134 -UNK_020F4134: ; 0x020F4134 - .byte 0x6D, 0x01, 0x60, 0x01, 0x55, 0x01, 0x5D, 0x01, 0x7B, 0x01, 0x56, 0x01, 0xFF, 0xFF - - .global UNK_020F4142 -UNK_020F4142: ; 0x020F4142 - .byte 0x02, 0x00, 0x09, 0x00, 0x1E, 0x00, 0x25, 0x00, 0x2C, 0x00, 0x10, 0x00, 0x17, 0x00, 0xFF, 0xFF - - .global UNK_020F4152 -UNK_020F4152: ; 0x020F4152 - .byte 0x1B, 0x00, 0x22, 0x00, 0x29, 0x00, 0x30, 0x00, 0x06, 0x00, 0x0D, 0x00, 0x14, 0x00, 0xFF, 0xFF - - .global UNK_020F4162 -UNK_020F4162: ; 0x020F4162 - .byte 0x03, 0x00, 0x0A, 0x00, 0x1F, 0x00, 0x26, 0x00, 0x2D, 0x00, 0x11, 0x00, 0x18, 0x00, 0xFF, 0xFF - - .global UNK_020F4172 -UNK_020F4172: ; 0x020F4172 - .byte 0x04, 0x00, 0x19, 0x00, 0x20, 0x00, 0x27, 0x00, 0x2E, 0x00, 0x0B, 0x00, 0x12, 0x00, 0xFF, 0xFF - - .global UNK_020F4182 -UNK_020F4182: ; 0x020F4182 - .byte 0x9A, 0x01, 0x58, 0x01, 0x7D, 0x01, 0x5B, 0x01, 0x68, 0x01, 0x57, 0x01, 0x8D, 0x01, 0xFF, 0xFF - - .global UNK_020F4192 -UNK_020F4192: ; 0x020F4192 - .byte 0x01, 0x00, 0x08, 0x00, 0x1D, 0x00, 0x2B, 0x00, 0x0F, 0x00, 0x16, 0x00, 0x24, 0x00, 0xFF, 0xFF - - .global UNK_020F41A2 -UNK_020F41A2: ; 0x020F41A2 - .byte 0x1A, 0x00, 0x21, 0x00, 0x28, 0x00, 0x2F, 0x00, 0x05, 0x00, 0x0C, 0x00, 0x13, 0x00, 0xFF, 0xFF - - .global UNK_020F41B2 -UNK_020F41B2: ; 0x020F41B2 - .byte 0x07, 0x00, 0x31, 0x00, 0x1C, 0x00, 0x2A, 0x00, 0x0E, 0x00, 0x15, 0x00, 0x23, 0x00, 0xFF, 0xFF - - .global UNK_020F41C2 -UNK_020F41C2: ; 0x020F41C2 - .byte 0x0E, 0x00, 0x06, 0x00, 0x08, 0x00, 0x0D, 0x00, 0x0F, 0x00, 0x0A, 0x00, 0x09, 0x00, 0x0B, 0x00 - .byte 0xFF, 0xFF - - .global UNK_020F41D4 -UNK_020F41D4: ; 0x020F41D4 - .byte 0x3B, 0x00, 0x39, 0x00, 0x3A, 0x00, 0x37, 0x00, 0x38, 0x00, 0x3C, 0x00, 0x3D, 0x00, 0x3E, 0x00 - .byte 0xFF, 0xFF - - .global UNK_020F41E6 -UNK_020F41E6: ; 0x020F41E6 - .byte 0x11, 0x00, 0x1A, 0x00, 0x19, 0x00, 0x18, 0x00, 0x1C, 0x00, 0x12, 0x00, 0x16, 0x00, 0x13, 0x00 - .byte 0x14, 0x00, 0x15, 0x00, 0x1B, 0x00, 0xFF, 0xFF - - .global UNK_020F41FE -UNK_020F41FE: ; 0x020F41FE - .byte 0x04, 0x00, 0x03, 0x00, 0x02, 0x00, 0x4E, 0x00, 0x3F, 0x00, 0x4F, 0x00, 0x4C, 0x00, 0x4D, 0x00 - .byte 0x89, 0x00, 0x8A, 0x00, 0x8B, 0x00, 0x91, 0x00, 0xFF, 0xFF - - .global UNK_020F4218 -UNK_020F4218: ; 0x020F4218 - .byte 0x04, 0x00, 0x01, 0x00, 0x03, 0x00, 0x03, 0x00, 0x02, 0x00, 0x04, 0x00, 0x11, 0x00, 0x01, 0x00 - .byte 0x1A, 0x00, 0x02, 0x00, 0x19, 0x00, 0x04, 0x00, 0x18, 0x00, 0x05, 0x00, 0x17, 0x00, 0x06, 0x00 - .byte 0x1C, 0x00, 0x03, 0x00, 0x12, 0x00, 0x01, 0x00, 0x16, 0x00, 0x01, 0x00, 0x15, 0x00, 0x02, 0x00 - .byte 0x13, 0x00, 0x02, 0x00, 0x14, 0x00, 0x02, 0x00, 0x1B, 0x00, 0x04, 0x00, 0x4E, 0x00, 0x02, 0x00 - .byte 0x4F, 0x00, 0x02, 0x00, 0x4C, 0x00, 0x03, 0x00, 0x4D, 0x00, 0x04, 0x00 - - .section .data - - .balign 4, 0 - .global UNK_02105DEC -UNK_02105DEC: ; 0x02105DEC - .word UNK_020F410C - .word UNK_020F4118 - - .global UNK_02105DF4 -UNK_02105DF4: ; 0x02105DF4 - .word UNK_020F4192 - .word UNK_020F4142 - .word UNK_020F4162 - .word UNK_020F4172 - .word UNK_020F41A2 - .word UNK_020F4152 - .word UNK_020F41B2 - - .global UNK_02105E10 -UNK_02105E10: ; 0x02105E10 - .word UNK_020F40A6 - .word UNK_020F40B4 - .word UNK_020F40AC - .word UNK_020F40BC - .word UNK_020F40C6 - .word UNK_020F40F8 - .word UNK_020F40DA - .word UNK_020F40E4 - .word UNK_020F41E6 - .word UNK_020F41FE - .word UNK_020F41D4 - .word UNK_020F4126 - .word UNK_020F4182 - .word UNK_020F4134 - .word UNK_020F40EE - .word UNK_020F40D0 - .word UNK_020F4102 - .word UNK_020F40A0 - .word UNK_020F41C2 - - .text - - thumb_func_start FUN_0203FCF4 -FUN_0203FCF4: ; 0x0203FCF4 - push {r4-r7, lr} - sub sp, #0x84 - add r7, r0, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r7, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl VarGet - mov r4, #0x0 - add r6, r4, #0x0 - add r5, r4, #0x0 -_0203FD10: - add r0, r7, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - ldr r0, [r0, #0xc] - bl Sav2_PlayerData_GetProfileAddr - add r1, r5, #0x0 - bl PlayerProfile_TestBadgeFlag - cmp r0, #0x1 - bne _0203FD2C - add r0, r6, #0x1 - lsl r0, r0, #0x18 - lsr r6, r0, #0x18 -_0203FD2C: - add r0, r5, #0x1 - lsl r0, r0, #0x18 - lsr r5, r0, #0x18 - cmp r5, #0x8 - blo _0203FD10 - cmp r6, #0x8 - bhi _0203FD70 - add r0, r6, r6 - add r0, pc - ldrh r0, [r0, #0x6] - lsl r0, r0, #0x10 - asr r0, r0, #0x10 - add pc, r0 -_0203FD46: ; jump table (using 16-bit offset) - .short _0203FD58 - _0203FD46 - 2; case 0 - .short _0203FD5C - _0203FD46 - 2; case 1 - .short _0203FD5C - _0203FD46 - 2; case 2 - .short _0203FD60 - _0203FD46 - 2; case 3 - .short _0203FD60 - _0203FD46 - 2; case 4 - .short _0203FD64 - _0203FD46 - 2; case 5 - .short _0203FD64 - _0203FD46 - 2; case 6 - .short _0203FD68 - _0203FD46 - 2; case 7 - .short _0203FD6C - _0203FD46 - 2; case 8 -_0203FD58: - mov r1, #0x1 - b _0203FD72 -_0203FD5C: - mov r1, #0x2 - b _0203FD72 -_0203FD60: - mov r1, #0x3 - b _0203FD72 -_0203FD64: - mov r1, #0x4 - b _0203FD72 -_0203FD68: - mov r1, #0x5 - b _0203FD72 -_0203FD6C: - mov r1, #0x6 - b _0203FD72 -_0203FD70: - mov r1, #0x1 -_0203FD72: - ldr r0, _0203FDB4 ; =UNK_020F4218 - mov r2, #0x0 - add r6, sp, #0x4 -_0203FD78: - lsl r3, r2, #0x2 - add r5, r0, r3 - ldrh r3, [r5, #0x2] - cmp r1, r3 - blt _0203FD8E - ldrh r5, [r5, #0x0] - lsl r3, r4, #0x1 - strh r5, [r6, r3] - add r3, r4, #0x1 - lsl r3, r3, #0x18 - lsr r4, r3, #0x18 -_0203FD8E: - add r2, r2, #0x1 - lsl r2, r2, #0x18 - lsr r2, r2, #0x18 - cmp r2, #0x13 - blo _0203FD78 - ldr r1, _0203FDB8 ; =0x0000FFFF - lsl r0, r4, #0x1 - add r2, sp, #0x4 - strh r1, [r2, r0] - mov r3, #0x0 - str r3, [sp, #0x0] - ldr r0, [r7, #0x74] - add r7, #0x80 - ldr r1, [r7, #0x0] - bl MOD06_0223D3D0 - mov r0, #0x1 - add sp, #0x84 - pop {r4-r7, pc} - .balign 4 -_0203FDB4: .word UNK_020F4218 -_0203FDB8: .word 0x0000FFFF - - thumb_func_start FUN_0203FDBC -FUN_0203FDBC: ; 0x0203FDBC - push {r3-r4, lr} - sub sp, #0x4 - add r4, r0, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r4, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl VarGet - add r2, r0, #0x0 - ldr r0, _0203FE00 ; =0x0000FFF8 - add r0, r2, r0 - lsl r0, r0, #0x10 - lsr r0, r0, #0x10 - cmp r0, #0x5 - bhi _0203FDE4 - mov r0, #0x1 - b _0203FDE6 -_0203FDE4: - mov r0, #0x0 -_0203FDE6: - lsl r3, r2, #0x2 - str r0, [sp, #0x0] - ldr r2, _0203FE04 ; =UNK_02105E10 - ldr r0, [r4, #0x74] - add r4, #0x80 - ldr r2, [r2, r3] - ldr r1, [r4, #0x0] - mov r3, #0x0 - bl MOD06_0223D3D0 - mov r0, #0x1 - add sp, #0x4 - pop {r3-r4, pc} - .balign 4 -_0203FE00: .word 0x0000FFF8 -_0203FE04: .word UNK_02105E10 - - thumb_func_start FUN_0203FE08 -FUN_0203FE08: ; 0x0203FE08 - push {r3-r4, lr} - sub sp, #0x4 - add r4, r0, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r4, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl VarGet - add r2, r0, #0x0 - cmp r2, #0x1 - bhi _0203FE28 - mov r0, #0x1 - b _0203FE2A -_0203FE28: - mov r0, #0x0 -_0203FE2A: - lsl r3, r2, #0x2 - str r0, [sp, #0x0] - ldr r2, _0203FE44 ; =UNK_02105DEC - ldr r0, [r4, #0x74] - add r4, #0x80 - ldr r2, [r2, r3] - ldr r1, [r4, #0x0] - mov r3, #0x1 - bl MOD06_0223D3D0 - mov r0, #0x1 - add sp, #0x4 - pop {r3-r4, pc} - .balign 4 -_0203FE44: .word UNK_02105DEC - - thumb_func_start FUN_0203FE48 -FUN_0203FE48: ; 0x0203FE48 - push {r3-r4, lr} - sub sp, #0x4 - add r4, r0, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r4, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl VarGet - add r2, r0, #0x0 - mov r0, #0x0 - lsl r3, r2, #0x2 - str r0, [sp, #0x0] - ldr r2, _0203FE7C ; =UNK_02105DF4 - ldr r0, [r4, #0x74] - add r4, #0x80 - ldr r2, [r2, r3] - ldr r1, [r4, #0x0] - mov r3, #0x2 - bl MOD06_0223D3D0 - mov r0, #0x1 - add sp, #0x4 - pop {r3-r4, pc} - .balign 4 -_0203FE7C: .word UNK_02105DF4 - - thumb_func_start FUN_0203FE80 -FUN_0203FE80: ; 0x0203FE80 - push {r3, lr} - add r0, #0x80 - ldr r0, [r0, #0x0] - ldr r0, [r0, #0x10] - bl FUN_02038AD0 - mov r0, #0x1 - pop {r3, pc} diff --git a/arm9/asm/scrcmd_21.s b/arm9/asm/scrcmd_21.s deleted file mode 100644 index e1f03c4a..00000000 --- a/arm9/asm/scrcmd_21.s +++ /dev/null @@ -1,465 +0,0 @@ - .include "asm/macros.inc" - .include "global.inc" - - .section .rodata - - .global UNK_020F4574 -UNK_020F4574: ; 0x020F4574 - .byte 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07 - - .text - - thumb_func_start FUN_020453F4 -FUN_020453F4: ; 0x020453F4 - push {r3-r5, lr} - add r5, r0, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - ldr r0, [r0, #0xc] - bl Sav2_Pokedex_get - add r4, r0, #0x0 - add r0, r5, #0x0 - bl ScriptReadHalfword - add r5, #0x80 - add r1, r0, #0x0 - ldr r0, [r5, #0x0] - bl GetVarPointer - add r5, r0, #0x0 - add r0, r4, #0x0 - bl Pokedex_GetSinnohDexFlag - strh r0, [r5, #0x0] - mov r0, #0x0 - pop {r3-r5, pc} - .balign 4 - - thumb_func_start FUN_02045424 -FUN_02045424: ; 0x02045424 - push {r3, lr} - add r0, #0x80 - ldr r0, [r0, #0x0] - ldr r0, [r0, #0xc] - bl Sav2_Pokedex_get - bl Pokedex_SetSinnohDexFlag - mov r0, #0x0 - pop {r3, pc} - - thumb_func_start FUN_02045438 -FUN_02045438: ; 0x02045438 - push {r3-r5, lr} - add r5, r0, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl GetVarPointer - add r5, #0x80 - add r4, r0, #0x0 - ldr r0, [r5, #0x0] - ldr r0, [r0, #0xc] - bl FUN_02034E30 - bl FUN_02034E20 - bl FUN_02055474 - strh r0, [r4, #0x0] - mov r0, #0x0 - pop {r3-r5, pc} - .balign 4 - - thumb_func_start FUN_02045468 -FUN_02045468: ; 0x02045468 - push {r3, lr} - add r0, #0x80 - ldr r0, [r0, #0x0] - ldr r0, [r0, #0xc] - bl FUN_02034E30 - bl FUN_02034E20 - mov r1, #0x1 - bl FUN_02055488 - mov r0, #0x0 - pop {r3, pc} - .balign 4 - - thumb_func_start FUN_02045484 -FUN_02045484: ; 0x02045484 - push {r4-r6, lr} - add r5, r0, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl VarGet - add r4, r0, #0x0 - add r0, r5, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl GetVarPointer - add r6, r0, #0x0 - cmp r4, #0x8 - blo _020454B6 - bl ErrorHandling -_020454B6: - add r5, #0x80 - ldr r0, [r5, #0x0] - ldr r0, [r0, #0xc] - bl Sav2_PlayerData_GetProfileAddr - add r1, r4, #0x0 - bl PlayerProfile_TestBadgeFlag - strh r0, [r6, #0x0] - mov r0, #0x0 - pop {r4-r6, pc} - - thumb_func_start FUN_020454CC -FUN_020454CC: ; 0x020454CC - push {r3-r5, lr} - add r5, r0, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl VarGet - add r4, r0, #0x0 - cmp r4, #0x8 - blo _020454EA - bl ErrorHandling -_020454EA: - add r5, #0x80 - ldr r0, [r5, #0x0] - ldr r0, [r0, #0xc] - bl Sav2_PlayerData_GetProfileAddr - add r1, r4, #0x0 - bl PlayerProfile_SetBadgeFlag - mov r0, #0x0 - pop {r3-r5, pc} - .balign 4 - - thumb_func_start FUN_02045500 -FUN_02045500: ; 0x02045500 - push {r3-r5, lr} - add r5, r0, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl GetVarPointer - add r5, #0x80 - add r4, r0, #0x0 - ldr r0, [r5, #0x0] - ldr r0, [r0, #0xc] - bl SavArray_Flags_get - bl FUN_0205ECE0 - strh r0, [r4, #0x0] - mov r0, #0x0 - pop {r3-r5, pc} - .balign 4 - - thumb_func_start FUN_0204552C -FUN_0204552C: ; 0x0204552C - push {r3-r7, lr} - add r6, r0, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r6, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl GetVarPointer - mov r4, #0x0 - ldr r7, _02045578 ; =UNK_020F4574 - str r0, [sp, #0x0] - add r5, r4, #0x0 -_02045548: - add r0, r6, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - ldr r0, [r0, #0xc] - bl Sav2_PlayerData_GetProfileAddr - ldrb r1, [r7, r4] - bl PlayerProfile_TestBadgeFlag - cmp r0, #0x1 - bne _02045564 - add r0, r5, #0x1 - lsl r0, r0, #0x10 - lsr r5, r0, #0x10 -_02045564: - add r0, r4, #0x1 - lsl r0, r0, #0x10 - lsr r4, r0, #0x10 - cmp r4, #0x8 - blo _02045548 - ldr r0, [sp, #0x0] - strh r5, [r0, #0x0] - mov r0, #0x0 - pop {r3-r7, pc} - nop -_02045578: .word UNK_020F4574 - - thumb_func_start FUN_0204557C -FUN_0204557C: ; 0x0204557C - push {r3, lr} - add r0, #0x80 - ldr r0, [r0, #0x0] - ldr r0, [r0, #0xc] - bl SavArray_Flags_get - bl FUN_0205ECD4 - mov r0, #0x0 - pop {r3, pc} - - thumb_func_start FUN_02045590 -FUN_02045590: ; 0x02045590 - push {r3-r5, lr} - add r5, r0, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl GetVarPointer - add r5, #0x80 - add r4, r0, #0x0 - ldr r0, [r5, #0x0] - ldr r0, [r0, #0xc] - bl SavArray_Flags_get - bl FUN_0205ED3C - strh r0, [r4, #0x0] - mov r0, #0x0 - pop {r3-r5, pc} - .balign 4 - - thumb_func_start FUN_020455BC -FUN_020455BC: ; 0x020455BC - push {r3, lr} - add r0, #0x80 - ldr r0, [r0, #0x0] - ldr r0, [r0, #0xc] - bl SavArray_Flags_get - bl FUN_0205ED1C - mov r0, #0x0 - pop {r3, pc} - - thumb_func_start FUN_020455D0 -FUN_020455D0: ; 0x020455D0 - push {r3, lr} - add r0, #0x80 - ldr r0, [r0, #0x0] - ldr r0, [r0, #0xc] - bl SavArray_Flags_get - bl FUN_0205ED2C - mov r0, #0x0 - pop {r3, pc} - - thumb_func_start FUN_020455E4 -FUN_020455E4: ; 0x020455E4 - push {r3-r5, lr} - add r5, r0, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl GetVarPointer - add r5, #0x80 - add r4, r0, #0x0 - ldr r0, [r5, #0x0] - ldr r0, [r0, #0xc] - bl SavArray_Flags_get - bl FUN_0205ED6C - strh r0, [r4, #0x0] - mov r0, #0x0 - pop {r3-r5, pc} - .balign 4 - - thumb_func_start FUN_02045610 -FUN_02045610: ; 0x02045610 - push {r3, lr} - add r0, #0x80 - ldr r0, [r0, #0x0] - ldr r0, [r0, #0xc] - bl SavArray_Flags_get - bl FUN_0205ED4C - mov r0, #0x0 - pop {r3, pc} - - thumb_func_start FUN_02045624 -FUN_02045624: ; 0x02045624 - push {r3, lr} - add r0, #0x80 - ldr r0, [r0, #0x0] - ldr r0, [r0, #0xc] - bl SavArray_Flags_get - bl FUN_0205ED5C - mov r0, #0x0 - pop {r3, pc} - - thumb_func_start FUN_02045638 -FUN_02045638: ; 0x02045638 - push {r3-r5, lr} - add r5, r0, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl GetVarPointer - add r5, #0x80 - add r4, r0, #0x0 - ldr r0, [r5, #0x0] - ldr r0, [r0, #0xc] - bl SavArray_Flags_get - bl FUN_0205ED0C - strh r0, [r4, #0x0] - mov r0, #0x0 - pop {r3-r5, pc} - .balign 4 - - thumb_func_start FUN_02045664 -FUN_02045664: ; 0x02045664 - push {r3, lr} - add r0, #0x80 - ldr r0, [r0, #0x0] - ldr r0, [r0, #0xc] - bl SavArray_Flags_get - bl FUN_0205ECFC - mov r0, #0x0 - pop {r3, pc} - - thumb_func_start FUN_02045678 -FUN_02045678: ; 0x02045678 - push {r3-r5, lr} - add r5, r0, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - ldr r0, [r0, #0xc] - bl SavArray_Flags_get - ldr r2, [r5, #0x8] - add r4, r0, #0x0 - add r1, r2, #0x1 - str r1, [r5, #0x8] - ldrb r1, [r2, #0x0] - cmp r1, #0x0 - beq _020456A6 - cmp r1, #0x1 - beq _0204569E - cmp r1, #0x2 - beq _020456AE - b _020456CC -_0204569E: - mov r1, #0x1 - bl FUN_0205F264 - b _020456D0 -_020456A6: - mov r1, #0x0 - bl FUN_0205F264 - b _020456D0 -_020456AE: - add r0, r5, #0x0 - bl ScriptReadHalfword - add r5, #0x80 - add r1, r0, #0x0 - ldr r0, [r5, #0x0] - bl GetVarPointer - add r5, r0, #0x0 - add r0, r4, #0x0 - mov r1, #0x2 - bl FUN_0205F264 - strh r0, [r5, #0x0] - b _020456D0 -_020456CC: - bl ErrorHandling -_020456D0: - mov r0, #0x0 - pop {r3-r5, pc} - - thumb_func_start FUN_020456D4 -FUN_020456D4: ; 0x020456D4 - push {r3-r5, lr} - add r5, r0, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - ldr r0, [r0, #0xc] - bl SavArray_Flags_get - ldr r2, [r5, #0x8] - add r4, r0, #0x0 - add r1, r2, #0x1 - str r1, [r5, #0x8] - ldrb r1, [r2, #0x0] - cmp r1, #0x0 - beq _02045700 - cmp r1, #0x1 - beq _020456FA - cmp r1, #0x2 - beq _02045706 - b _02045722 -_020456FA: - bl FUN_0205F274 - b _02045726 -_02045700: - bl FUN_0205F284 - b _02045726 -_02045706: - add r0, r5, #0x0 - bl ScriptReadHalfword - add r5, #0x80 - add r1, r0, #0x0 - ldr r0, [r5, #0x0] - bl GetVarPointer - add r5, r0, #0x0 - add r0, r4, #0x0 - bl FUN_0205F294 - strh r0, [r5, #0x0] - b _02045726 -_02045722: - bl ErrorHandling -_02045726: - mov r0, #0x0 - pop {r3-r5, pc} - .balign 4 - - thumb_func_start FUN_0204572C -FUN_0204572C: ; 0x0204572C - push {r3-r5, lr} - add r5, r0, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - ldr r0, [r0, #0xc] - bl SavArray_Flags_get - ldr r2, [r5, #0x8] - add r4, r0, #0x0 - add r1, r2, #0x1 - str r1, [r5, #0x8] - ldrb r1, [r2, #0x0] - cmp r1, #0x0 - beq _02045758 - cmp r1, #0x1 - beq _02045752 - cmp r1, #0x2 - beq _0204575E - b _0204577A -_02045752: - bl FUN_0205F2A4 - b _0204577E -_02045758: - bl FUN_0205F2B4 - b _0204577E -_0204575E: - add r0, r5, #0x0 - bl ScriptReadHalfword - add r5, #0x80 - add r1, r0, #0x0 - ldr r0, [r5, #0x0] - bl GetVarPointer - add r5, r0, #0x0 - add r0, r4, #0x0 - bl FUN_0205F2C4 - strh r0, [r5, #0x0] - b _0204577E -_0204577A: - bl ErrorHandling -_0204577E: - mov r0, #0x0 - pop {r3-r5, pc} - .balign 4 diff --git a/arm9/asm/scrcmd_24.s b/arm9/asm/scrcmd_24.s deleted file mode 100644 index b9569382..00000000 --- a/arm9/asm/scrcmd_24.s +++ /dev/null @@ -1,316 +0,0 @@ - .include "asm/macros.inc" - .include "global.inc" - - .text - - thumb_func_start FUN_02045D88 -FUN_02045D88: ; 0x02045D88 - push {r4-r6, lr} - add r5, r0, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl VarGet - add r4, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - mov r1, #0x13 - bl FUN_02039438 - add r1, r5, #0x0 - add r1, #0x80 - lsl r2, r4, #0x18 - add r6, r0, #0x0 - ldr r1, [r1, #0x0] - mov r0, #0x20 - lsr r2, r2, #0x18 - bl FUN_02037CF0 - str r0, [r6, #0x0] - ldr r1, _02045DCC ; =FUN_0203BC04 - add r0, r5, #0x0 - bl SetupNativeScript - mov r0, #0x1 - pop {r4-r6, pc} - nop -_02045DCC: .word FUN_0203BC04 - - thumb_func_start FUN_02045DD0 -FUN_02045DD0: ; 0x02045DD0 - push {r3-r5, lr} - add r4, r0, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r4, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl GetVarPointer - add r4, #0x80 - add r5, r0, #0x0 - ldr r0, [r4, #0x0] - mov r1, #0x13 - bl FUN_02039438 - add r4, r0, #0x0 - ldr r0, [r4, #0x0] - cmp r0, #0x0 - bne _02045DFC - bl ErrorHandling -_02045DFC: - ldr r0, [r4, #0x0] - bl FUN_02037D5C - strh r0, [r5, #0x0] - ldrh r0, [r5, #0x0] - cmp r0, #0x4 - bne _02045E0E - mov r0, #0xff - strh r0, [r5, #0x0] -_02045E0E: - ldr r0, [r4, #0x0] - bl FreeToHeap - mov r0, #0x0 - str r0, [r4, #0x0] - pop {r3-r5, pc} - .balign 4 - - thumb_func_start FUN_02045E1C -FUN_02045E1C: ; 0x02045E1C - mov r0, #0x0 - bx lr - - thumb_func_start FUN_02045E20 -FUN_02045E20: ; 0x02045E20 - push {r4-r6, lr} - add r5, r0, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl GetVarPointer - add r4, r0, #0x0 - add r0, r5, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl VarGet - add r5, #0x80 - add r6, r0, #0x0 - ldr r0, [r5, #0x0] - ldr r0, [r0, #0xc] - bl SavArray_PlayerParty_get - add r1, r6, #0x0 - bl GetPartyMonByIndex - mov r1, #0x20 - bl FUN_02088DF8 - add r5, r0, #0x0 - bl FUN_02088EF8 - strh r0, [r4, #0x0] - add r0, r5, #0x0 - bl FreeToHeap - mov r0, #0x0 - pop {r4-r6, pc} - .balign 4 - - thumb_func_start FUN_02045E74 -FUN_02045E74: ; 0x02045E74 - push {r3-r7, lr} - sub sp, #0x8 - add r5, r0, #0x0 - add r0, #0x80 - add r7, r1, #0x0 - ldr r0, [r0, #0x0] - mov r1, #0x13 - str r2, [sp, #0x0] - add r6, r3, #0x0 - bl FUN_02039438 - str r0, [sp, #0x4] - mov r0, #0x20 - bl FUN_02088DD8 - add r4, r0, #0x0 - ldr r0, [sp, #0x4] - str r4, [r0, #0x0] - ldr r0, [sp, #0x0] - str r0, [r4, #0x0] - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl ScriptEnvironment_GetSav2Ptr - bl Sav2_PlayerData_GetProfileAddr - str r0, [r4, #0x4] - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - ldr r0, [r0, #0xc] - bl Sav2_PlayerData_GetOptionsAddr - str r0, [r4, #0x8] - str r6, [r4, #0xc] - add r0, r5, #0x0 - strb r7, [r4, #0x15] - add r0, #0x80 - ldr r0, [r0, #0x0] - add r1, r4, #0x0 - bl FUN_02038864 - ldr r1, _02045EDC ; =FUN_0203BC04 - add r0, r5, #0x0 - bl SetupNativeScript - add r0, r6, #0x0 - bl FreeToHeap - add sp, #0x8 - pop {r3-r7, pc} - .balign 4 -_02045EDC: .word FUN_0203BC04 - - thumb_func_start FUN_02045EE0 -FUN_02045EE0: ; 0x02045EE0 - mov r0, #0x1 - bx lr - - thumb_func_start FUN_02045EE4 -FUN_02045EE4: ; 0x02045EE4 - push {r3-r5, lr} - add r5, r0, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl VarGet - add r4, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - ldr r0, [r0, #0xc] - bl SavArray_PlayerParty_get - add r1, r4, #0x0 - bl GetPartyMonByIndex - add r4, r0, #0x0 - mov r1, #0x20 - bl FUN_02088DF8 - add r3, r0, #0x0 - add r0, r5, #0x0 - mov r1, #0x1 - add r2, r4, #0x0 - bl FUN_02045E74 - mov r0, #0x1 - pop {r3-r5, pc} - - thumb_func_start FUN_02045F24 -FUN_02045F24: ; 0x02045F24 - push {r4-r6, lr} - add r5, r0, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl VarGet - add r6, r0, #0x0 - add r0, r5, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl VarGet - add r4, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - ldr r0, [r0, #0xc] - bl SavArray_PlayerParty_get - add r1, r6, #0x0 - bl GetPartyMonByIndex - add r6, r0, #0x0 - mov r0, #0x20 - mov r1, #0x4 - bl AllocFromHeap - add r3, r0, #0x0 - ldr r0, _02045F80 ; =0x0000FFFF - strh r4, [r3, #0x0] - strh r0, [r3, #0x2] - add r0, r5, #0x0 - mov r1, #0x0 - add r2, r6, #0x0 - bl FUN_02045E74 - mov r0, #0x1 - pop {r4-r6, pc} - .balign 4 -_02045F80: .word 0x0000FFFF - - thumb_func_start FUN_02045F84 -FUN_02045F84: ; 0x02045F84 - mov r0, #0x0 - bx lr - - thumb_func_start FUN_02045F88 -FUN_02045F88: ; 0x02045F88 - push {r3-r5, lr} - add r4, r0, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r4, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl GetVarPointer - add r4, #0x80 - add r5, r0, #0x0 - ldr r0, [r4, #0x0] - mov r1, #0x13 - bl FUN_02039438 - ldr r4, [r0, #0x0] - cmp r4, #0x0 - bne _02045FB2 - bl ErrorHandling -_02045FB2: - ldrb r0, [r4, #0x16] - cmp r0, #0x0 - bne _02045FBC - mov r0, #0x0 - b _02045FBE -_02045FBC: - mov r0, #0xff -_02045FBE: - strh r0, [r5, #0x0] - add r0, r4, #0x0 - bl FUN_02088DF0 - mov r0, #0x0 - pop {r3-r5, pc} - .balign 4 - - thumb_func_start FUN_02045FCC -FUN_02045FCC: ; 0x02045FCC - push {r3-r5, lr} - add r4, r0, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r4, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl GetVarPointer - add r4, #0x80 - add r5, r0, #0x0 - ldr r0, [r4, #0x0] - mov r1, #0x13 - bl FUN_02039438 - ldr r4, [r0, #0x0] - cmp r4, #0x0 - bne _02045FF6 - bl ErrorHandling -_02045FF6: - ldrb r0, [r4, #0x16] - cmp r0, #0x0 - bne _02046000 - mov r0, #0x0 - b _02046002 -_02046000: - mov r0, #0xff -_02046002: - strh r0, [r5, #0x0] - add r0, r4, #0x0 - bl FUN_02088DF0 - mov r0, #0x0 - pop {r3-r5, pc} - .balign 4 diff --git a/arm9/asm/scrcmd_3.s b/arm9/asm/scrcmd_3.s index 28df2444..b0a515ef 100644 --- a/arm9/asm/scrcmd_3.s +++ b/arm9/asm/scrcmd_3.s @@ -3,8 +3,8 @@ .text - thumb_func_start FUN_0203FE90 -FUN_0203FE90: ; 0x0203FE90 + thumb_func_start ScrCmd_Unk00F8 +ScrCmd_Unk00F8: ; 0x0203FE90 push {r3-r5, lr} add r5, r0, #0x0 add r0, #0x80 @@ -26,8 +26,8 @@ FUN_0203FE90: ; 0x0203FE90 mov r0, #0x0 pop {r3-r5, pc} - thumb_func_start FUN_0203FEC0 -FUN_0203FEC0: ; 0x0203FEC0 + thumb_func_start ScrCmd_Unk00F9 +ScrCmd_Unk00F9: ; 0x0203FEC0 push {r4, lr} add r4, r0, #0x0 add r0, #0x80 @@ -65,8 +65,8 @@ FUN_0203FEF4: ; 0x0203FEF4 bl FUN_02082158 pop {r4, pc} - thumb_func_start FUN_0203FF10 -FUN_0203FF10: ; 0x0203FF10 + thumb_func_start ScrCmd_Unk00FA +ScrCmd_Unk00FA: ; 0x0203FF10 push {r3-r7, lr} sub sp, #0x38 add r5, r0, #0x0 @@ -173,7 +173,7 @@ FUN_0203FF10: ; 0x0203FF10 str r0, [sp, #0x30] ldr r0, [r5, #0x0] ldr r0, [r0, #0xc] - bl FUN_02029EF8 + bl Sav2_Chatot_get str r0, [sp, #0x34] add r0, sp, #0x14 bl FUN_02081214 @@ -185,8 +185,8 @@ FUN_0203FF10: ; 0x0203FF10 add sp, #0x38 pop {r3-r7, pc} - thumb_func_start FUN_02040028 -FUN_02040028: ; 0x02040028 + thumb_func_start ScrCmd_Unk00FB +ScrCmd_Unk00FB: ; 0x02040028 push {r3-r5, lr} add r5, r0, #0x0 add r0, #0x80 @@ -220,8 +220,8 @@ FUN_02040028: ; 0x02040028 mov r0, #0x0 pop {r3-r5, pc} - thumb_func_start FUN_02040074 -FUN_02040074: ; 0x02040074 + thumb_func_start ScrCmd_Unk00FC +ScrCmd_Unk00FC: ; 0x02040074 push {r3-r7, lr} add r5, r0, #0x0 add r0, #0x80 @@ -258,8 +258,8 @@ FUN_02040074: ; 0x02040074 pop {r3-r7, pc} .balign 4 - thumb_func_start FUN_020400C8 -FUN_020400C8: ; 0x020400C8 + thumb_func_start ScrCmd_Unk00FD +ScrCmd_Unk00FD: ; 0x020400C8 push {r3-r7, lr} add r5, r0, #0x0 add r0, #0x80 @@ -296,8 +296,8 @@ FUN_020400C8: ; 0x020400C8 pop {r3-r7, pc} .balign 4 - thumb_func_start FUN_0204011C -FUN_0204011C: ; 0x0204011C + thumb_func_start ScrCmd_Unk00FE +ScrCmd_Unk00FE: ; 0x0204011C push {r3-r7, lr} add r5, r0, #0x0 add r0, #0x80 @@ -334,8 +334,8 @@ FUN_0204011C: ; 0x0204011C pop {r3-r7, pc} .balign 4 - thumb_func_start FUN_02040170 -FUN_02040170: ; 0x02040170 + thumb_func_start ScrCmd_Unk00FF +ScrCmd_Unk00FF: ; 0x02040170 push {r4-r6, lr} sub sp, #0x8 add r5, r0, #0x0 @@ -376,8 +376,8 @@ FUN_02040170: ; 0x02040170 pop {r4-r6, pc} .balign 4 - thumb_func_start FUN_020401CC -FUN_020401CC: ; 0x020401CC + thumb_func_start ScrCmd_Unk0100 +ScrCmd_Unk0100: ; 0x020401CC push {r4, lr} add r4, r0, #0x0 add r0, #0x80 @@ -405,8 +405,8 @@ FUN_020401F0: ; 0x020401F0 bl FUN_02081EB8 pop {r3, pc} - thumb_func_start FUN_02040204 -FUN_02040204: ; 0x02040204 + thumb_func_start ScrCmd_Unk0101 +ScrCmd_Unk0101: ; 0x02040204 push {r4, lr} add r4, r0, #0x0 add r0, #0x80 @@ -420,8 +420,8 @@ FUN_02040204: ; 0x02040204 mov r0, #0x1 pop {r4, pc} - thumb_func_start FUN_02040220 -FUN_02040220: ; 0x02040220 + thumb_func_start ScrCmd_Unk0102 +ScrCmd_Unk0102: ; 0x02040220 push {r4-r6, lr} add r5, r0, #0x0 add r0, #0x80 @@ -448,8 +448,8 @@ FUN_02040220: ; 0x02040220 mov r0, #0x0 pop {r4-r6, pc} - thumb_func_start FUN_0204025C -FUN_0204025C: ; 0x0204025C + thumb_func_start ScrCmd_Unk0103 +ScrCmd_Unk0103: ; 0x0204025C push {r4-r6, lr} add r5, r0, #0x0 add r0, #0x80 @@ -476,8 +476,8 @@ FUN_0204025C: ; 0x0204025C mov r0, #0x0 pop {r4-r6, pc} - thumb_func_start FUN_02040298 -FUN_02040298: ; 0x02040298 + thumb_func_start ScrCmd_Unk0104 +ScrCmd_Unk0104: ; 0x02040298 push {r4-r6, lr} add r5, r0, #0x0 add r0, #0x80 @@ -504,8 +504,8 @@ FUN_02040298: ; 0x02040298 mov r0, #0x0 pop {r4-r6, pc} - thumb_func_start FUN_020402D4 -FUN_020402D4: ; 0x020402D4 + thumb_func_start ScrCmd_Unk0105 +ScrCmd_Unk0105: ; 0x020402D4 push {r3-r5, lr} add r5, r0, #0x0 add r0, #0x80 @@ -527,8 +527,8 @@ FUN_020402D4: ; 0x020402D4 pop {r3-r5, pc} .balign 4 - thumb_func_start FUN_02040304 -FUN_02040304: ; 0x02040304 + thumb_func_start ScrCmd_Unk0106 +ScrCmd_Unk0106: ; 0x02040304 push {r4-r6, lr} add r5, r0, #0x0 add r0, #0x80 @@ -555,8 +555,8 @@ FUN_02040304: ; 0x02040304 mov r0, #0x0 pop {r4-r6, pc} - thumb_func_start FUN_02040340 -FUN_02040340: ; 0x02040340 + thumb_func_start ScrCmd_Unk0107 +ScrCmd_Unk0107: ; 0x02040340 push {r3-r5, lr} add r5, r0, #0x0 add r0, #0x80 @@ -578,8 +578,8 @@ FUN_02040340: ; 0x02040340 pop {r3-r5, pc} .balign 4 - thumb_func_start FUN_02040370 -FUN_02040370: ; 0x02040370 + thumb_func_start ScrCmd_Unk0108 +ScrCmd_Unk0108: ; 0x02040370 push {r3-r5, lr} add r5, r0, #0x0 add r0, #0x80 @@ -601,8 +601,8 @@ FUN_02040370: ; 0x02040370 pop {r3-r5, pc} .balign 4 - thumb_func_start FUN_020403A0 -FUN_020403A0: ; 0x020403A0 + thumb_func_start ScrCmd_Unk0109 +ScrCmd_Unk0109: ; 0x020403A0 push {r3-r5, lr} add r5, r0, #0x0 add r0, #0x80 @@ -624,8 +624,8 @@ FUN_020403A0: ; 0x020403A0 pop {r3-r5, pc} .balign 4 - thumb_func_start FUN_020403D0 -FUN_020403D0: ; 0x020403D0 + thumb_func_start ScrCmd_Unk010A +ScrCmd_Unk010A: ; 0x020403D0 push {r4-r6, lr} add r4, r0, #0x0 add r0, #0x80 @@ -655,8 +655,8 @@ FUN_020403D0: ; 0x020403D0 mov r0, #0x0 pop {r4-r6, pc} - thumb_func_start FUN_02040414 -FUN_02040414: ; 0x02040414 + thumb_func_start ScrCmd_Unk010B +ScrCmd_Unk010B: ; 0x02040414 push {r4-r6, lr} add r4, r0, #0x0 add r0, #0x80 @@ -686,8 +686,8 @@ FUN_02040414: ; 0x02040414 mov r0, #0x0 pop {r4-r6, pc} - thumb_func_start FUN_02040458 -FUN_02040458: ; 0x02040458 + thumb_func_start ScrCmd_Unk010C +ScrCmd_Unk010C: ; 0x02040458 push {r3-r5, lr} add r5, r0, #0x0 add r0, #0x80 @@ -709,8 +709,8 @@ FUN_02040458: ; 0x02040458 pop {r3-r5, pc} .balign 4 - thumb_func_start FUN_02040488 -FUN_02040488: ; 0x02040488 + thumb_func_start ScrCmd_Unk0110 +ScrCmd_Unk0110: ; 0x02040488 push {r3-r7, lr} sub sp, #0x8 add r5, r0, #0x0 @@ -760,8 +760,8 @@ FUN_02040488: ; 0x02040488 pop {r3-r7, pc} .balign 4 - thumb_func_start FUN_020404FC -FUN_020404FC: ; 0x020404FC + thumb_func_start ScrCmd_Unk010D +ScrCmd_Unk010D: ; 0x020404FC push {r3-r5, lr} add r5, r0, #0x0 add r0, #0x80 @@ -783,8 +783,8 @@ FUN_020404FC: ; 0x020404FC pop {r3-r5, pc} .balign 4 - thumb_func_start FUN_0204052C -FUN_0204052C: ; 0x0204052C + thumb_func_start ScrCmd_Unk010E +ScrCmd_Unk010E: ; 0x0204052C push {r4-r6, lr} add r5, r0, #0x0 add r0, #0x80 @@ -813,8 +813,8 @@ FUN_0204052C: ; 0x0204052C pop {r4-r6, pc} .balign 4 - thumb_func_start FUN_0204056C -FUN_0204056C: ; 0x0204056C + thumb_func_start ScrCmd_Unk010F +ScrCmd_Unk010F: ; 0x0204056C push {r3-r5, lr} add r5, r0, #0x0 add r0, #0x80 @@ -836,8 +836,8 @@ FUN_0204056C: ; 0x0204056C pop {r3-r5, pc} .balign 4 - thumb_func_start FUN_0204059C -FUN_0204059C: ; 0x0204059C + thumb_func_start ScrCmd_Unk0117 +ScrCmd_Unk0117: ; 0x0204059C push {r3, lr} add r0, #0x80 ldr r0, [r0, #0x0] @@ -849,8 +849,8 @@ FUN_0204059C: ; 0x0204059C pop {r3, pc} .balign 4 - thumb_func_start FUN_020405B4 -FUN_020405B4: ; 0x020405B4 + thumb_func_start ScrCmd_Unk0118 +ScrCmd_Unk0118: ; 0x020405B4 push {r3, lr} add r0, #0x80 ldr r0, [r0, #0x0] @@ -862,8 +862,8 @@ FUN_020405B4: ; 0x020405B4 pop {r3, pc} .balign 4 - thumb_func_start FUN_020405CC -FUN_020405CC: ; 0x020405CC + thumb_func_start ScrCmd_Unk0111 +ScrCmd_Unk0111: ; 0x020405CC push {r3-r5, lr} add r4, r0, #0x0 add r0, #0x80 @@ -883,8 +883,8 @@ FUN_020405CC: ; 0x020405CC mov r0, #0x0 pop {r3-r5, pc} - thumb_func_start FUN_020405F8 -FUN_020405F8: ; 0x020405F8 + thumb_func_start ScrCmd_Unk0112 +ScrCmd_Unk0112: ; 0x020405F8 push {r4, lr} add r4, r0, #0x0 add r0, #0x80 @@ -917,8 +917,8 @@ _02040632: pop {r3, pc} .balign 4 - thumb_func_start FUN_02040638 -FUN_02040638: ; 0x02040638 + thumb_func_start ScrCmd_Unk0113 +ScrCmd_Unk0113: ; 0x02040638 push {r3, lr} add r0, #0x80 ldr r0, [r0, #0x0] @@ -929,8 +929,8 @@ FUN_02040638: ; 0x02040638 pop {r3, pc} .balign 4 - thumb_func_start FUN_0204064C -FUN_0204064C: ; 0x0204064C + thumb_func_start ScrCmd_Unk0114 +ScrCmd_Unk0114: ; 0x0204064C push {r3, lr} add r0, #0x80 ldr r0, [r0, #0x0] @@ -941,8 +941,8 @@ FUN_0204064C: ; 0x0204064C pop {r3, pc} .balign 4 - thumb_func_start FUN_02040660 -FUN_02040660: ; 0x02040660 + thumb_func_start ScrCmd_Unk0115 +ScrCmd_Unk0115: ; 0x02040660 push {r4-r5, lr} sub sp, #0x1c add r5, r0, #0x0 @@ -991,8 +991,8 @@ _020406BA: add sp, #0x1c pop {r4-r5, pc} - thumb_func_start FUN_020406C0 -FUN_020406C0: ; 0x020406C0 + thumb_func_start ScrCmd_Unk0116 +ScrCmd_Unk0116: ; 0x020406C0 push {r3, lr} ldr r0, [r0, #0x74] bl MOD06_0224D3E8 diff --git a/arm9/asm/scrcmd_5.s b/arm9/asm/scrcmd_5.s index a1aa5216..2f3bd42c 100644 --- a/arm9/asm/scrcmd_5.s +++ b/arm9/asm/scrcmd_5.s @@ -9,8 +9,8 @@ UNK_021C5A10: ; 0x021C5A10 .text - thumb_func_start FUN_02041194 -FUN_02041194: ; 0x02041194 + thumb_func_start ScrCmd_Unk024E +ScrCmd_Unk024E: ; 0x02041194 push {r3-r5, lr} add r5, r0, #0x0 add r0, #0x80 @@ -32,8 +32,8 @@ FUN_02041194: ; 0x02041194 pop {r3-r5, pc} .balign 4 - thumb_func_start FUN_020411C4 -FUN_020411C4: ; 0x020411C4 + thumb_func_start ScrCmd_Unk024F +ScrCmd_Unk024F: ; 0x020411C4 push {r4-r7, lr} sub sp, #0x24 add r4, r0, #0x0 @@ -213,8 +213,8 @@ _02041336: .balign 4 _0204133C: .word 0x00000000 - thumb_func_start FUN_02041340 -FUN_02041340: ; 0x02041340 + thumb_func_start ScrCmd_Unk0250 +ScrCmd_Unk0250: ; 0x02041340 push {r3, lr} add r0, #0x80 ldr r0, [r0, #0x0] diff --git a/arm9/asm/scrcmd_6.s b/arm9/asm/scrcmd_6.s deleted file mode 100644 index 10b41ff7..00000000 --- a/arm9/asm/scrcmd_6.s +++ /dev/null @@ -1,399 +0,0 @@ - .include "asm/macros.inc" - .include "global.inc" - - .text - - thumb_func_start FUN_020413C0 -FUN_020413C0: ; 0x020413C0 - push {r3-r5, lr} - add r4, r0, #0x0 - bl ScriptReadHalfword - add r5, r0, #0x0 - add r0, r4, #0x0 - bl ScriptReadHalfword - add r4, #0x80 - add r1, r0, #0x0 - ldr r0, [r4, #0x0] - bl GetVarPointer - add r4, r0, #0x0 - add r0, r5, #0x0 - bl FUN_02005410 - strh r0, [r4, #0x0] - mov r0, #0x0 - pop {r3-r5, pc} - - thumb_func_start FUN_020413E8 -FUN_020413E8: ; 0x020413E8 - push {r3, lr} - bl ScriptReadHalfword - bl FUN_0200521C - mov r0, #0x0 - pop {r3, pc} - .balign 4 - - thumb_func_start FUN_020413F8 -FUN_020413F8: ; 0x020413F8 - push {r3, lr} - bl ScriptReadHalfword - bl FUN_02004124 - mov r1, #0x0 - bl FUN_02005350 - mov r0, #0x0 - pop {r3, pc} - - thumb_func_start FUN_0204140C -FUN_0204140C: ; 0x0204140C - push {r3, lr} - add r0, #0x80 - ldr r0, [r0, #0x0] - ldr r1, [r0, #0x1c] - ldr r1, [r1, #0x0] - bl FUN_0204ABA8 - bl FUN_0200521C - mov r0, #0x0 - pop {r3, pc} - .balign 4 - - thumb_func_start FUN_02041424 -FUN_02041424: ; 0x02041424 - push {r4, lr} - add r4, r0, #0x0 - bl ScriptReadHalfword - add r4, #0x80 - add r1, r0, #0x0 - ldr r0, [r4, #0x0] - bl FUN_0204AB20 - mov r0, #0x0 - pop {r4, pc} - .balign 4 - - thumb_func_start FUN_0204143C -FUN_0204143C: ; 0x0204143C - push {r3-r5, lr} - add r5, r0, #0x0 - bl ScriptReadHalfword - add r4, r0, #0x0 - add r0, r5, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r4, #0x0 - bl FUN_020053CC - ldr r1, _02041460 ; =FUN_02041464 - add r0, r5, #0x0 - bl SetupNativeScript - mov r0, #0x1 - pop {r3-r5, pc} - .balign 4 -_02041460: .word FUN_02041464 - - thumb_func_start FUN_02041464 -FUN_02041464: ; 0x02041464 - push {r3, lr} - bl FUN_02005404 - cmp r0, #0x0 - bne _02041472 - mov r0, #0x1 - pop {r3, pc} -_02041472: - mov r0, #0x0 - pop {r3, pc} - .balign 4 - - thumb_func_start FUN_02041478 -FUN_02041478: ; 0x02041478 - push {r4, lr} - add r4, r0, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - mov r0, #0x7f - mov r2, #0x0 - bl FUN_0200538C - ldr r1, _02041498 ; =FUN_02041464 - add r0, r4, #0x0 - bl SetupNativeScript - mov r0, #0x1 - pop {r4, pc} - nop -_02041498: .word FUN_02041464 - - thumb_func_start FUN_0204149C -FUN_0204149C: ; 0x0204149C - push {r3, lr} - ldr r1, [r0, #0x8] - add r3, r1, #0x1 - str r3, [r0, #0x8] - ldrb r2, [r1, #0x0] - add r1, r3, #0x1 - str r1, [r0, #0x8] - ldrb r1, [r3, #0x0] - add r0, r2, #0x0 - bl FUN_020047C8 - mov r0, #0x0 - pop {r3, pc} - .balign 4 - - thumb_func_start FUN_020414B8 -FUN_020414B8: ; 0x020414B8 - push {r3, lr} - bl ScriptReadHalfword - add r1, r0, #0x0 - mov r0, #0x4 - bl FUN_02005308 - mov r0, #0x0 - pop {r3, pc} - .balign 4 - - thumb_func_start FUN_020414CC -FUN_020414CC: ; 0x020414CC - push {r3, lr} - ldr r2, [r0, #0x8] - add r1, r2, #0x1 - str r1, [r0, #0x8] - ldrb r0, [r2, #0x0] - bl FUN_020040F4 - mov r0, #0x0 - pop {r3, pc} - .balign 4 - - thumb_func_start FUN_020414E0 -FUN_020414E0: ; 0x020414E0 - push {r4, lr} - add r4, r0, #0x0 - bl ScriptReadHalfword - add r4, #0x80 - add r1, r0, #0x0 - ldr r0, [r4, #0x0] - bl VarGet - bl FUN_020054C8 - mov r0, #0x0 - pop {r4, pc} - .balign 4 - - thumb_func_start FUN_020414FC -FUN_020414FC: ; 0x020414FC - push {r4, lr} - add r4, r0, #0x0 - bl ScriptReadHalfword - add r4, #0x80 - add r1, r0, #0x0 - ldr r0, [r4, #0x0] - bl VarGet - mov r1, #0x0 - bl FUN_020054F0 - mov r0, #0x0 - pop {r4, pc} - - thumb_func_start FUN_02041518 -FUN_02041518: ; 0x02041518 - push {r4, lr} - add r4, r0, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r4, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl VarGet - str r0, [r4, #0x64] - ldr r1, _0204153C ; =FUN_02041540 - add r0, r4, #0x0 - bl SetupNativeScript - mov r0, #0x1 - pop {r4, pc} - nop -_0204153C: .word FUN_02041540 - - thumb_func_start FUN_02041540 -FUN_02041540: ; 0x02041540 - push {r3, lr} - ldr r0, [r0, #0x64] - lsl r0, r0, #0x10 - lsr r0, r0, #0x10 - bl FUN_02005508 - cmp r0, #0x0 - bne _02041554 - mov r0, #0x1 - pop {r3, pc} -_02041554: - mov r0, #0x0 - pop {r3, pc} - - thumb_func_start FUN_02041558 -FUN_02041558: ; 0x02041558 - push {r3-r5, lr} - add r4, r0, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r4, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl VarGet - add r5, r0, #0x0 - add r0, r4, #0x0 - bl ScriptReadHalfword - add r4, #0x80 - add r1, r0, #0x0 - ldr r0, [r4, #0x0] - bl VarGet - add r0, r5, #0x0 - bl FUN_02005578 - mov r0, #0x0 - pop {r3-r5, pc} - - thumb_func_start ScrCmd_waitcry -ScrCmd_waitcry: ; 0x02041588 - push {r3, lr} - ldr r1, _02041594 ; =FUN_02041598 - bl SetupNativeScript - mov r0, #0x1 - pop {r3, pc} - .balign 4 -_02041594: .word FUN_02041598 - - thumb_func_start FUN_02041598 -FUN_02041598: ; 0x02041598 - push {r3, lr} - bl FUN_02005670 - cmp r0, #0x0 - bne _020415A6 - mov r0, #0x1 - pop {r3, pc} -_020415A6: - mov r0, #0x0 - pop {r3, pc} - .balign 4 - - thumb_func_start ScrCmd_playbgm -ScrCmd_playbgm: ; 0x020415AC - push {r3, lr} - bl ScriptReadHalfword - bl PlayBGM - mov r0, #0x0 - pop {r3, pc} - .balign 4 - - thumb_func_start FUN_020415BC -FUN_020415BC: ; 0x020415BC - push {r3, lr} - ldr r1, _020415C8 ; =FUN_020415CC - bl SetupNativeScript - mov r0, #0x1 - pop {r3, pc} - .balign 4 -_020415C8: .word FUN_020415CC - - thumb_func_start FUN_020415CC -FUN_020415CC: ; 0x020415CC - push {r3, lr} - bl FUN_02005CBC - cmp r0, #0x0 - bne _020415DA - mov r0, #0x1 - pop {r3, pc} -_020415DA: - mov r0, #0x0 - pop {r3, pc} - .balign 4 - - thumb_func_start FUN_020415E0 -FUN_020415E0: ; 0x020415E0 - push {r3-r5, lr} - add r5, r0, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl GetVarPointer - add r5, #0x80 - add r4, r0, #0x0 - ldr r0, [r5, #0x0] - ldr r0, [r0, #0xc] - bl FUN_02029EF8 - bl FUN_02005D20 - cmp r0, #0x1 - bne _02041610 - mov r0, #0x1 - strh r0, [r4, #0x0] - mov r0, #0x0 - pop {r3-r5, pc} -_02041610: - mov r0, #0x0 - strh r0, [r4, #0x0] - pop {r3-r5, pc} - .balign 4 - - thumb_func_start FUN_02041618 -FUN_02041618: ; 0x02041618 - push {r4, lr} - add r4, r0, #0x0 - bl ScriptReadHalfword - add r4, #0x80 - add r1, r0, #0x0 - ldr r0, [r4, #0x0] - bl GetVarPointer - add r4, r0, #0x0 - bl FUN_02005E28 - cmp r0, #0x0 - bne _0204163C - mov r0, #0x1 - strh r0, [r4, #0x0] - mov r0, #0x0 - pop {r4, pc} -_0204163C: - mov r0, #0x0 - strh r0, [r4, #0x0] - pop {r4, pc} - .balign 4 - - thumb_func_start FUN_02041644 -FUN_02041644: ; 0x02041644 - push {r3, lr} - bl FUN_02005E64 - mov r0, #0x1 - pop {r3, pc} - .balign 4 - - thumb_func_start FUN_02041650 -FUN_02041650: ; 0x02041650 - push {r3, lr} - add r0, #0x80 - ldr r0, [r0, #0x0] - ldr r0, [r0, #0xc] - bl FUN_02029EF8 - bl FUN_02005E6C - mov r0, #0x1 - pop {r3, pc} - - thumb_func_start FUN_02041664 -FUN_02041664: ; 0x02041664 - push {r3, lr} - mov r1, #0x0 - mov r0, #0x3f - add r2, r1, #0x0 - bl FUN_0200433C - mov r0, #0x1 - pop {r3, pc} - - thumb_func_start FUN_02041674 -FUN_02041674: ; 0x02041674 - push {r3-r5, lr} - add r4, r0, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r4, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl VarGet - add r5, r0, #0x0 - add r0, r4, #0x0 - bl ScriptReadHalfword - add r4, #0x80 - add r1, r0, #0x0 - ldr r0, [r4, #0x0] - bl VarGet - add r1, r0, #0x0 - add r0, r5, #0x0 - bl FUN_0200488C - mov r0, #0x0 - pop {r3-r5, pc} - .balign 4 diff --git a/arm9/asm/scrcmd_7.s b/arm9/asm/scrcmd_7.s index 01c0425f..58f8b6dc 100644 --- a/arm9/asm/scrcmd_7.s +++ b/arm9/asm/scrcmd_7.s @@ -3,8 +3,8 @@ .text - thumb_func_start FUN_020416A8 -FUN_020416A8: ; 0x020416A8 + thumb_func_start ScrCmd_Unk00B6 +ScrCmd_Unk00B6: ; 0x020416A8 push {r3-r7, lr} sub sp, #0x18 add r5, r0, #0x0 @@ -91,8 +91,8 @@ _02041748: pop {r3-r7, pc} .balign 4 - thumb_func_start FUN_02041770 -FUN_02041770: ; 0x02041770 + thumb_func_start ScrCmd_Unk00B7 +ScrCmd_Unk00B7: ; 0x02041770 push {r4-r6, lr} add r5, r0, #0x0 bl ScriptReadHalfword @@ -146,8 +146,8 @@ _020417DC: mov r0, #0x1 pop {r4-r6, pc} - thumb_func_start FUN_020417E0 -FUN_020417E0: ; 0x020417E0 + thumb_func_start ScrCmd_Unk00B8 +ScrCmd_Unk00B8: ; 0x020417E0 push {r3-r5, lr} add r4, r0, #0x0 add r0, #0x80 @@ -166,8 +166,8 @@ FUN_020417E0: ; 0x020417E0 mov r0, #0x0 pop {r3-r5, pc} - thumb_func_start FUN_02041808 -FUN_02041808: ; 0x02041808 + thumb_func_start ScrCmd_Unk00B9 +ScrCmd_Unk00B9: ; 0x02041808 push {r3-r7, lr} add r5, r0, #0x0 add r0, #0x80 @@ -207,8 +207,8 @@ _02041854: pop {r3-r7, pc} .balign 4 - thumb_func_start FUN_0204185C -FUN_0204185C: ; 0x0204185C + thumb_func_start ScrCmd_Unk00E4 +ScrCmd_Unk00E4: ; 0x0204185C push {r3-r5, lr} add r5, r0, #0x0 add r0, #0x80 @@ -230,8 +230,8 @@ FUN_0204185C: ; 0x0204185C pop {r3-r5, pc} .balign 4 - thumb_func_start FUN_0204188C -FUN_0204188C: ; 0x0204188C + thumb_func_start ScrCmd_Unk00E5 +ScrCmd_Unk00E5: ; 0x0204188C push {r3-r7, lr} sub sp, #0x10 add r5, r0, #0x0 @@ -287,8 +287,8 @@ _020418F2: pop {r3-r7, pc} .balign 4 - thumb_func_start FUN_0204190C -FUN_0204190C: ; 0x0204190C + thumb_func_start ScrCmd_Unk02A0 +ScrCmd_Unk02A0: ; 0x0204190C push {r3-r7, lr} sub sp, #0x8 add r5, r0, #0x0 @@ -332,8 +332,8 @@ FUN_0204190C: ; 0x0204190C add sp, #0x8 pop {r3-r7, pc} - thumb_func_start FUN_02041970 -FUN_02041970: ; 0x02041970 + thumb_func_start ScrCmd_Unk00E7 +ScrCmd_Unk00E7: ; 0x02041970 push {r3-r7, lr} add r5, r0, #0x0 add r0, #0x80 @@ -396,8 +396,8 @@ _020419EC: pop {r3-r7, pc} .balign 4 - thumb_func_start FUN_020419F8 -FUN_020419F8: ; 0x020419F8 + thumb_func_start ScrCmd_Unk00E8 +ScrCmd_Unk00E8: ; 0x020419F8 push {r3-r7, lr} add r5, r0, #0x0 add r0, #0x80 @@ -460,8 +460,8 @@ _02041A74: pop {r3-r7, pc} .balign 4 - thumb_func_start FUN_02041A80 -FUN_02041A80: ; 0x02041A80 + thumb_func_start ScrCmd_Unk00E9 +ScrCmd_Unk00E9: ; 0x02041A80 push {r3-r5, lr} add r5, r0, #0x0 add r0, #0x80 @@ -484,8 +484,8 @@ FUN_02041A80: ; 0x02041A80 pop {r3-r5, pc} .balign 4 - thumb_func_start FUN_02041AB4 -FUN_02041AB4: ; 0x02041AB4 + thumb_func_start ScrCmd_Unk00EA +ScrCmd_Unk00EA: ; 0x02041AB4 push {r4, lr} add r4, r0, #0x0 bl ScriptReadHalfword @@ -499,16 +499,16 @@ FUN_02041AB4: ; 0x02041AB4 pop {r4, pc} .balign 4 - thumb_func_start FUN_02041AD4 -FUN_02041AD4: ; 0x02041AD4 + thumb_func_start ScrCmd_Unk00EB +ScrCmd_Unk00EB: ; 0x02041AD4 push {r3, lr} ldr r0, [r0, #0x74] bl FUN_02048498 mov r0, #0x1 pop {r3, pc} - thumb_func_start FUN_02041AE0 -FUN_02041AE0: ; 0x02041AE0 + thumb_func_start ScrCmd_Unk00EC +ScrCmd_Unk00EC: ; 0x02041AE0 push {r3-r5, lr} add r5, r0, #0x0 add r0, #0x80 @@ -530,8 +530,8 @@ FUN_02041AE0: ; 0x02041AE0 pop {r3-r5, pc} .balign 4 - thumb_func_start FUN_02041B10 -FUN_02041B10: ; 0x02041B10 + thumb_func_start ScrCmd_Unk00ED +ScrCmd_Unk00ED: ; 0x02041B10 push {r3-r5, lr} add r5, r0, #0x0 add r0, #0x80 @@ -553,8 +553,8 @@ FUN_02041B10: ; 0x02041B10 pop {r3-r5, pc} .balign 4 - thumb_func_start FUN_02041B40 -FUN_02041B40: ; 0x02041B40 + thumb_func_start ScrCmd_Unk02BC +ScrCmd_Unk02BC: ; 0x02041B40 push {r3-r5, lr} add r5, r0, #0x0 add r0, #0x80 @@ -576,8 +576,8 @@ FUN_02041B40: ; 0x02041B40 pop {r3-r5, pc} .balign 4 - thumb_func_start FUN_02041B70 -FUN_02041B70: ; 0x02041B70 + thumb_func_start ScrCmd_Unk00EE +ScrCmd_Unk00EE: ; 0x02041B70 push {r3-r5, lr} add r5, r0, #0x0 bl ScriptReadHalfword @@ -597,8 +597,8 @@ FUN_02041B70: ; 0x02041B70 pop {r3-r5, pc} .balign 4 - thumb_func_start FUN_02041B9C -FUN_02041B9C: ; 0x02041B9C + thumb_func_start ScrCmd_Unk00EF +ScrCmd_Unk00EF: ; 0x02041B9C push {r4, lr} sub sp, #0x8 add r4, r0, #0x0 @@ -618,8 +618,8 @@ FUN_02041B9C: ; 0x02041B9C add sp, #0x8 pop {r4, pc} - thumb_func_start FUN_02041BC4 -FUN_02041BC4: ; 0x02041BC4 + thumb_func_start ScrCmd_Unk00F0 +ScrCmd_Unk00F0: ; 0x02041BC4 push {r3-r5, lr} add r0, #0x80 ldr r0, [r0, #0x0] @@ -639,8 +639,8 @@ FUN_02041BC4: ; 0x02041BC4 mov r0, #0x0 pop {r3-r5, pc} - thumb_func_start FUN_02041BF0 -FUN_02041BF0: ; 0x02041BF0 + thumb_func_start ScrCmd_Unk00F1 +ScrCmd_Unk00F1: ; 0x02041BF0 push {r3-r7, lr} add r6, r0, #0x0 add r0, #0x80 diff --git a/arm9/asm/scrcmd_8.s b/arm9/asm/scrcmd_8.s deleted file mode 100644 index fbb5b223..00000000 --- a/arm9/asm/scrcmd_8.s +++ /dev/null @@ -1,234 +0,0 @@ - .include "asm/macros.inc" - .include "global.inc" - - .text - - thumb_func_start FUN_02041C38 -FUN_02041C38: ; 0x02041C38 - push {r4-r7, lr} - sub sp, #0xc - add r4, r0, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - mov r1, #0xf - bl FUN_02039438 - add r6, r0, #0x0 - add r0, r4, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - ldr r0, [r0, #0xc] - bl FUN_0202881C - add r5, r0, #0x0 - add r0, r4, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - ldr r7, [r0, #0xc] - add r0, r4, #0x0 - bl ScriptReadHalfword - cmp r0, #0x6 - bls _02041C6C - b _02041E38 -_02041C6C: - add r0, r0, r0 - add r0, pc - ldrh r0, [r0, #0x6] - lsl r0, r0, #0x10 - asr r0, r0, #0x10 - add pc, r0 -_02041C78: ; jump table (using 16-bit offset) - .short _02041C86 - _02041C78 - 2; case 0 - .short _02041CBC - _02041C78 - 2; case 1 - .short _02041CF2 - _02041C78 - 2; case 2 - .short _02041D28 - _02041C78 - 2; case 3 - .short _02041D5E - _02041C78 - 2; case 4 - .short _02041D94 - _02041C78 - 2; case 5 - .short _02041DCE - _02041C78 - 2; case 6 -_02041C86: - add r0, r4, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r4, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl VarGet - add r6, r0, #0x0 - add r0, r4, #0x0 - bl ScriptReadHalfword - add r4, #0x80 - add r1, r0, #0x0 - ldr r0, [r4, #0x0] - bl GetVarPointer - add r4, r0, #0x0 - add r0, r5, #0x0 - add r1, r6, #0x0 - bl FUN_02028828 - strh r0, [r4, #0x0] - add sp, #0xc - mov r0, #0x0 - pop {r4-r7, pc} -_02041CBC: - add r0, r4, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r4, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl VarGet - add r6, r0, #0x0 - add r0, r4, #0x0 - bl ScriptReadHalfword - add r4, #0x80 - add r1, r0, #0x0 - ldr r0, [r4, #0x0] - bl GetVarPointer - add r4, r0, #0x0 - add r0, r5, #0x0 - add r1, r6, #0x0 - bl FUN_02028840 - strh r0, [r4, #0x0] - add sp, #0xc - mov r0, #0x0 - pop {r4-r7, pc} -_02041CF2: - add r0, r4, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r4, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl VarGet - add r5, r0, #0x0 - add r0, r4, #0x0 - bl ScriptReadHalfword - add r4, #0x80 - add r1, r0, #0x0 - ldr r0, [r4, #0x0] - bl VarGet - add r3, r0, #0x0 - mov r0, #0x0 - str r0, [sp, #0x0] - ldr r0, [r6, #0x0] - add r1, r7, #0x0 - add r2, r5, #0x0 - bl BufferEasyChatWord - b _02041E38 -_02041D28: - add r0, r4, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r4, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl VarGet - add r5, r0, #0x0 - add r0, r4, #0x0 - bl ScriptReadHalfword - add r4, #0x80 - add r1, r0, #0x0 - ldr r0, [r4, #0x0] - bl VarGet - add r3, r0, #0x0 - mov r0, #0x1 - str r0, [sp, #0x0] - ldr r0, [r6, #0x0] - add r1, r7, #0x0 - add r2, r5, #0x0 - bl BufferEasyChatWord - b _02041E38 -_02041D5E: - mov r1, #0x0 - add r0, r5, #0x0 - add r2, r1, #0x0 - bl FUN_020287A8 - add r5, r0, #0x0 - add r0, r4, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r4, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl GetVarPointer - mov r2, #0x0 - str r2, [sp, #0x0] - str r5, [sp, #0x4] - str r0, [sp, #0x8] - ldr r0, [r4, #0x74] - mov r1, #0x5 - mov r3, #0x7 - bl FUN_020385CC - add sp, #0xc - mov r0, #0x1 - pop {r4-r7, pc} -_02041D94: - add r0, r4, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r4, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl VarGet - add r7, r0, #0x0 - add r0, r5, #0x0 - mov r1, #0x1 - bl FUN_02028828 - add r6, r0, #0x0 - add r0, r5, #0x0 - add r1, r7, #0x0 - mov r2, #0x1 - bl FUN_02028700 - cmp r6, #0x0 - beq _02041DC8 - add r4, #0x80 - ldr r0, [r4, #0x0] - bl FUN_020612F8 -_02041DC8: - add sp, #0xc - mov r0, #0x0 - pop {r4-r7, pc} -_02041DCE: - mov r0, #0x40 - mov r1, #0x20 - bl String_ctor - add r6, r0, #0x0 - add r0, r4, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - ldr r0, [r0, #0xc] - bl Sav2_PlayerData_GetProfileAddr - add r1, r6, #0x0 - add r7, r0, #0x0 - bl PlayerName_FlatToString - add r0, r5, #0x0 - mov r1, #0x0 - mov r2, #0x1 - add r3, r6, #0x0 - bl FUN_020287C0 - add r0, r7, #0x0 - bl PlayerProfile_GetTrainerGender - add r2, r0, #0x0 - add r0, r5, #0x0 - mov r1, #0x0 - bl FUN_020287EC - add r0, r5, #0x0 - mov r1, #0x0 - mov r2, #0x2 - bl FUN_02028810 - bl MTRandom - add r2, r0, #0x0 - add r0, r5, #0x0 - mov r1, #0x0 - bl FUN_02028788 - add r0, r6, #0x0 - bl String_dtor - add r0, r5, #0x0 - mov r1, #0x0 - mov r2, #0x1 - bl FUN_02028700 - add r4, #0x80 - ldr r0, [r4, #0x0] - bl FUN_020612EC -_02041E38: - mov r0, #0x0 - add sp, #0xc - pop {r4-r7, pc} - .balign 4 diff --git a/arm9/asm/scrcmd_9.s b/arm9/asm/scrcmd_9.s index ad61ab32..bad1ef47 100644 --- a/arm9/asm/scrcmd_9.s +++ b/arm9/asm/scrcmd_9.s @@ -33,8 +33,8 @@ UNK_020F4270: ; 0x020F4270 .text - thumb_func_start FUN_02041E40 -FUN_02041E40: ; 0x02041E40 + thumb_func_start ScrCmd_Unk0235 +ScrCmd_Unk0235: ; 0x02041E40 push {r3-r7, lr} add r4, r0, #0x0 bl ScriptReadHalfword @@ -217,8 +217,8 @@ _02041FD2: nop _02041FD8: .word 0x00000233 - thumb_func_start FUN_02041FDC -FUN_02041FDC: ; 0x02041FDC + thumb_func_start ScrCmd_Unk0236 +ScrCmd_Unk0236: ; 0x02041FDC push {r4, lr} add r4, r0, #0x0 bl ScriptReadHalfword @@ -235,8 +235,8 @@ FUN_02041FDC: ; 0x02041FDC pop {r4, pc} .balign 4 - thumb_func_start FUN_02042000 -FUN_02042000: ; 0x02042000 + thumb_func_start ScrCmd_Unk02B8 +ScrCmd_Unk02B8: ; 0x02042000 push {r3-r5, lr} add r5, r0, #0x0 add r0, #0x80 @@ -261,8 +261,8 @@ FUN_02042000: ; 0x02042000 mov r0, #0x0 pop {r3-r5, pc} - thumb_func_start FUN_02042038 -FUN_02042038: ; 0x02042038 + thumb_func_start ScrCmd_Unk0237 +ScrCmd_Unk0237: ; 0x02042038 push {r3-r7, lr} add r5, r0, #0x0 add r0, #0x80 @@ -356,8 +356,8 @@ _02042106: nop _0204210C: .word 0x00000232 - thumb_func_start FUN_02042110 -FUN_02042110: ; 0x02042110 + thumb_func_start ScrCmd_Unk0238 +ScrCmd_Unk0238: ; 0x02042110 push {r4-r6, lr} add r5, r0, #0x0 bl ScriptReadHalfword @@ -384,8 +384,8 @@ FUN_02042110: ; 0x02042110 pop {r4-r6, pc} .balign 4 - thumb_func_start FUN_0204214C -FUN_0204214C: ; 0x0204214C + thumb_func_start ScrCmd_Unk027C +ScrCmd_Unk027C: ; 0x0204214C push {r4-r6, lr} add r5, r0, #0x0 add r0, #0x80 diff --git a/arm9/asm/scrcmd_asm.s b/arm9/asm/scrcmd_asm.s index 3d6645c2..af0e7940 100644 --- a/arm9/asm/scrcmd_asm.s +++ b/arm9/asm/scrcmd_asm.s @@ -14,52 +14,8 @@ UNK_021C5A0C: ; 0x021C5A0C .text - thumb_func_start FUN_0203AFC4 -FUN_0203AFC4: ; 0x0203AFC4 - push {r4-r6, lr} - add r5, r0, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl VarGet - add r6, r0, #0x0 - add r0, r5, #0x0 - bl ScriptReadWord - add r4, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - add r1, r6, #0x0 - bl FUN_0203B120 - add r6, r0, #0x0 - bne _0203AFF6 - bl ErrorHandling -_0203AFF6: - ldr r1, [r5, #0x8] - add r0, r6, #0x0 - add r1, r1, r4 - bl FUN_0205AEA4 - add r4, 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 - mov r2, #0x0 - add r1, r1, #0x1 - strb r1, [r0, #0x0] - ldr r0, [r5, #0x0] - add r1, r4, #0x0 - bl FUN_0203B174 - mov r0, #0x0 - pop {r4-r6, pc} - - thumb_func_start FUN_0203B024 -FUN_0203B024: ; 0x0203B024 + thumb_func_start ScrCmd_Unk02A1 +ScrCmd_Unk02A1: ; 0x0203B024 push {r3-r7, lr} sub sp, #0x8 add r5, r0, #0x0 @@ -94,7 +50,7 @@ FUN_0203B024: ; 0x0203B024 str r0, [sp, #0x4] cmp r0, #0x0 bne _0203B07A - bl ErrorHandling + bl GF_AssertFail _0203B07A: mov r0, #0x4 add r1, r0, #0x0 @@ -200,8 +156,8 @@ _0203B13E: pop {r3, pc} .balign 4 - thumb_func_start FUN_0203B148 -FUN_0203B148: ; 0x0203B148 + thumb_func_start ScrCmd_Unk005F +ScrCmd_Unk005F: ; 0x0203B148 push {r3, lr} ldr r1, _0203B154 ; =FUN_0203B158 bl SetupNativeScript @@ -238,7 +194,7 @@ FUN_0203B174: ; 0x0203B174 bl AllocFromHeap add r4, r0, #0x0 bne _0203B18E - bl ErrorHandling + bl GF_AssertFail pop {r3-r7, pc} _0203B18E: str r5, [r4, #0xc] @@ -279,7 +235,7 @@ _0203B1D6: ldrb r0, [r4, #0x0] cmp r0, #0x0 bne _0203B1E8 - bl ErrorHandling + bl GF_AssertFail pop {r3-r5, pc} _0203B1E8: sub r0, r0, #0x1 @@ -288,8 +244,8 @@ _0203B1EC: pop {r3-r5, pc} .balign 4 - thumb_func_start FUN_0203B1F0 -FUN_0203B1F0: ; 0x0203B1F0 + thumb_func_start ScrCmd_Unk0060 +ScrCmd_Unk0060: ; 0x0203B1F0 push {r3-r5, lr} add r5, r0, #0x0 add r0, #0x80 @@ -305,7 +261,7 @@ FUN_0203B1F0: ; 0x0203B1F0 b _0203B214 _0203B20E: add r0, r5, #0x0 - bl FUN_0203B2E0 + bl ScrCmd_Unk02B4 _0203B214: mov r0, #0x1 pop {r3-r5, pc} @@ -406,8 +362,8 @@ _0203B2D8: .balign 4 _0203B2DC: .word UNK_021C5A0C - thumb_func_start FUN_0203B2E0 -FUN_0203B2E0: ; 0x0203B2E0 + thumb_func_start ScrCmd_Unk02B4 +ScrCmd_Unk02B4: ; 0x0203B2E0 push {r3-r7, lr} sub sp, #0x8 str r0, [sp, #0x0] @@ -499,8 +455,8 @@ _0203B398: _0203B3A8: .word UNK_021C5A0C _0203B3AC: .word FUN_0203B218 - thumb_func_start FUN_0203B3B0 -FUN_0203B3B0: ; 0x0203B3B0 + thumb_func_start ScrCmd_Unk0061 +ScrCmd_Unk0061: ; 0x0203B3B0 push {r3, lr} add r0, #0x80 ldr r0, [r0, #0x0] @@ -509,8 +465,8 @@ FUN_0203B3B0: ; 0x0203B3B0 mov r0, #0x1 pop {r3, pc} - thumb_func_start FUN_0203B3C0 -FUN_0203B3C0: ; 0x0203B3C0 + thumb_func_start ScrCmd_Unk0062 +ScrCmd_Unk0062: ; 0x0203B3C0 push {r4, lr} add r1, r0, #0x0 add r1, #0x80 @@ -523,8 +479,8 @@ FUN_0203B3C0: ; 0x0203B3C0 mov r0, #0x0 pop {r4, pc} - thumb_func_start FUN_0203B3DC -FUN_0203B3DC: ; 0x0203B3DC + thumb_func_start ScrCmd_Unk0063 +ScrCmd_Unk0063: ; 0x0203B3DC push {r4, lr} add r1, r0, #0x0 add r1, #0x80 @@ -537,8 +493,8 @@ FUN_0203B3DC: ; 0x0203B3DC mov r0, #0x0 pop {r4, pc} - thumb_func_start FUN_0203B3F8 -FUN_0203B3F8: ; 0x0203B3F8 + thumb_func_start ScrCmd_Unk0064 +ScrCmd_Unk0064: ; 0x0203B3F8 push {r3-r6, lr} sub sp, #0x4 add r4, r0, #0x0 @@ -565,14 +521,14 @@ FUN_0203B3F8: ; 0x0203B3F8 bl FUN_020575D4 cmp r0, #0x0 bne _0203B43A - bl ErrorHandling + bl GF_AssertFail _0203B43A: mov r0, #0x0 add sp, #0x4 pop {r3-r6, pc} - thumb_func_start FUN_0203B440 -FUN_0203B440: ; 0x0203B440 + thumb_func_start ScrCmd_Unk0065 +ScrCmd_Unk0065: ; 0x0203B440 push {r3-r5, lr} add r4, r0, #0x0 add r1, r4, #0x0 @@ -590,8 +546,8 @@ FUN_0203B440: ; 0x0203B440 mov r0, #0x0 pop {r3-r5, pc} - thumb_func_start FUN_0203B468 -FUN_0203B468: ; 0x0203B468 + thumb_func_start ScrCmd_Unk0066 +ScrCmd_Unk0066: ; 0x0203B468 push {r4-r7, lr} sub sp, #0xc add r5, r0, #0x0 @@ -657,8 +613,8 @@ FUN_0203B468: ; 0x0203B468 pop {r4-r7, pc} .balign 4 - thumb_func_start FUN_0203B500 -FUN_0203B500: ; 0x0203B500 + thumb_func_start ScrCmd_Unk0067 +ScrCmd_Unk0067: ; 0x0203B500 push {r3-r5, lr} add r5, r0, #0x0 add r0, #0x80 @@ -688,8 +644,8 @@ FUN_0203B500: ; 0x0203B500 mov r0, #0x0 pop {r3-r5, pc} - thumb_func_start FUN_0203B544 -FUN_0203B544: ; 0x0203B544 + thumb_func_start ScrCmd_Unk0068 +ScrCmd_Unk0068: ; 0x0203B544 push {r3-r5, lr} add r0, #0x80 ldr r5, [r0, #0x0] @@ -712,8 +668,8 @@ _0203B568: pop {r3-r5, pc} .balign 4 - thumb_func_start FUN_0203B574 -FUN_0203B574: ; 0x0203B574 + thumb_func_start ScrCmd_Unk0069 +ScrCmd_Unk0069: ; 0x0203B574 push {r4-r6, lr} add r4, r0, #0x0 add r1, r4, #0x0 @@ -743,8 +699,8 @@ FUN_0203B574: ; 0x0203B574 pop {r4-r6, pc} .balign 4 - thumb_func_start FUN_0203B5B8 -FUN_0203B5B8: ; 0x0203B5B8 + thumb_func_start ScrCmd_Unk006A +ScrCmd_Unk006A: ; 0x0203B5B8 push {r4-r6, lr} add r4, r0, #0x0 add r1, r4, #0x0 @@ -785,8 +741,8 @@ FUN_0203B5B8: ; 0x0203B5B8 pop {r4-r6, pc} .balign 4 - thumb_func_start FUN_0203B618 -FUN_0203B618: ; 0x0203B618 + thumb_func_start ScrCmd_Unk01BD +ScrCmd_Unk01BD: ; 0x0203B618 push {r3-r5, lr} add r5, r0, #0x0 bl ScriptReadHalfword @@ -805,8 +761,8 @@ FUN_0203B618: ; 0x0203B618 pop {r3-r5, pc} .balign 4 - thumb_func_start FUN_0203B640 -FUN_0203B640: ; 0x0203B640 + thumb_func_start ScrCmd_Unk006B +ScrCmd_Unk006B: ; 0x0203B640 push {r4-r7, lr} sub sp, #0xc add r5, r0, #0x0 @@ -904,8 +860,8 @@ _0203B6F8: pop {r4-r7, pc} .balign 4 - thumb_func_start FUN_0203B724 -FUN_0203B724: ; 0x0203B724 + thumb_func_start ScrCmd_Unk006C +ScrCmd_Unk006C: ; 0x0203B724 push {r4, lr} add r4, r0, #0x0 bl ScriptReadHalfword @@ -929,8 +885,8 @@ FUN_0203B724: ; 0x0203B724 pop {r4, pc} .balign 4 - thumb_func_start FUN_0203B758 -FUN_0203B758: ; 0x0203B758 + thumb_func_start ScrCmd_Unk006D +ScrCmd_Unk006D: ; 0x0203B758 push {r3-r5, lr} add r4, r0, #0x0 bl ScriptReadHalfword @@ -955,8 +911,8 @@ FUN_0203B758: ; 0x0203B758 pop {r3-r5, pc} .balign 4 - thumb_func_start FUN_0203B790 -FUN_0203B790: ; 0x0203B790 + thumb_func_start ScrCmd_Unk02AD +ScrCmd_Unk02AD: ; 0x0203B790 push {r3-r5, lr} add r5, r0, #0x0 bl ScriptReadHalfword @@ -989,8 +945,8 @@ _0203B7D2: pop {r3-r5, pc} .balign 4 - thumb_func_start FUN_0203B7D8 -FUN_0203B7D8: ; 0x0203B7D8 + thumb_func_start ScrCmd_Unk006E +ScrCmd_Unk006E: ; 0x0203B7D8 push {r3, lr} add r0, #0x80 ldr r0, [r0, #0x0] @@ -1002,8 +958,8 @@ FUN_0203B7D8: ; 0x0203B7D8 mov r0, #0x0 pop {r3, pc} - thumb_func_start FUN_0203B7F0 -FUN_0203B7F0: ; 0x0203B7F0 + thumb_func_start ScrCmd_Unk02AB +ScrCmd_Unk02AB: ; 0x0203B7F0 push {r3-r5, lr} add r5, r0, #0x0 bl ScriptReadHalfword @@ -1023,8 +979,8 @@ FUN_0203B7F0: ; 0x0203B7F0 pop {r3-r5, pc} .balign 4 - thumb_func_start FUN_0203B81C -FUN_0203B81C: ; 0x0203B81C + thumb_func_start ScrCmd_Unk0093 +ScrCmd_Unk0093: ; 0x0203B81C push {r4-r6, lr} add r5, r0, #0x0 bl ScriptReadHalfword @@ -1052,8 +1008,8 @@ FUN_0203B81C: ; 0x0203B81C mov r0, #0x0 pop {r4-r6, pc} - thumb_func_start FUN_0203B85C -FUN_0203B85C: ; 0x0203B85C + thumb_func_start ScrCmd_Unk0094 +ScrCmd_Unk0094: ; 0x0203B85C push {r4-r6, lr} add r5, r0, #0x0 bl ScriptReadHalfword @@ -1083,8 +1039,8 @@ FUN_0203B85C: ; 0x0203B85C pop {r4-r6, pc} .balign 4 - thumb_func_start FUN_0203B8A0 -FUN_0203B8A0: ; 0x0203B8A0 + thumb_func_start ScrCmd_Unk0095 +ScrCmd_Unk0095: ; 0x0203B8A0 push {r4-r6, lr} add r5, r0, #0x0 bl ScriptReadHalfword @@ -1113,8 +1069,8 @@ FUN_0203B8A0: ; 0x0203B8A0 mov r0, #0x0 pop {r4-r6, pc} - thumb_func_start FUN_0203B8E4 -FUN_0203B8E4: ; 0x0203B8E4 + thumb_func_start ScrCmd_Unk0191 +ScrCmd_Unk0191: ; 0x0203B8E4 push {r3-r5, lr} add r5, r0, #0x0 add r0, #0x80 @@ -1136,8 +1092,8 @@ FUN_0203B8E4: ; 0x0203B8E4 nop _0203B910: .word FUN_0203BC04 - thumb_func_start FUN_0203B914 -FUN_0203B914: ; 0x0203B914 + thumb_func_start ScrCmd_Unk02A5 +ScrCmd_Unk02A5: ; 0x0203B914 push {r3-r5, lr} add r5, r0, #0x0 add r0, #0x80 @@ -1159,8 +1115,8 @@ FUN_0203B914: ; 0x0203B914 nop _0203B940: .word FUN_0203BC04 - thumb_func_start FUN_0203B944 -FUN_0203B944: ; 0x0203B944 + thumb_func_start ScrCmd_Unk0192 +ScrCmd_Unk0192: ; 0x0203B944 push {r3-r5, lr} add r5, r0, #0x0 add r0, #0x80 @@ -1178,8 +1134,8 @@ FUN_0203B944: ; 0x0203B944 pop {r3-r5, pc} .balign 4 - thumb_func_start FUN_0203B968 -FUN_0203B968: ; 0x0203B968 + thumb_func_start ScrCmd_Unk0193 +ScrCmd_Unk0193: ; 0x0203B968 push {r3-r5, lr} add r4, r0, #0x0 bl ScriptReadHalfword @@ -1197,7 +1153,7 @@ FUN_0203B968: ; 0x0203B968 ldr r0, [r4, #0x0] cmp r0, #0x0 bne _0203B994 - bl ErrorHandling + bl GF_AssertFail _0203B994: ldr r0, [r4, #0x0] bl FUN_02037A40 @@ -1215,8 +1171,8 @@ _0203B9A6: pop {r3-r5, pc} .balign 4 - thumb_func_start FUN_0203B9B4 -FUN_0203B9B4: ; 0x0203B9B4 + thumb_func_start ScrCmd_Unk0194 +ScrCmd_Unk0194: ; 0x0203B9B4 push {r4-r7, lr} sub sp, #0xc add r5, r0, #0x0 @@ -1275,8 +1231,8 @@ FUN_0203B9B4: ; 0x0203B9B4 .balign 4 _0203BA38: .word FUN_0203BC04 - thumb_func_start FUN_0203BA3C -FUN_0203BA3C: ; 0x0203BA3C + thumb_func_start ScrCmd_Unk0195 +ScrCmd_Unk0195: ; 0x0203BA3C push {r4-r6, lr} add r4, r0, #0x0 bl ScriptReadHalfword @@ -1302,7 +1258,7 @@ FUN_0203BA3C: ; 0x0203BA3C ldr r0, [r4, #0x0] cmp r0, #0x0 bne _0203BA7C - bl ErrorHandling + bl GF_AssertFail _0203BA7C: ldr r0, [r4, #0x0] bl FUN_02037A40 @@ -1331,8 +1287,8 @@ _0203BAA2: str r0, [r4, #0x0] pop {r4-r6, pc} - thumb_func_start FUN_0203BAB0 -FUN_0203BAB0: ; 0x0203BAB0 + thumb_func_start ScrCmd_Unk0196 +ScrCmd_Unk0196: ; 0x0203BAB0 push {r3-r5, lr} add r5, r0, #0x0 add r0, #0x80 @@ -1362,8 +1318,8 @@ FUN_0203BAB0: ; 0x0203BAB0 nop _0203BAF0: .word FUN_0203BC04 - thumb_func_start FUN_0203BAF4 -FUN_0203BAF4: ; 0x0203BAF4 + thumb_func_start ScrCmd_Unk0197 +ScrCmd_Unk0197: ; 0x0203BAF4 push {r3-r5, lr} add r4, r0, #0x0 bl ScriptReadHalfword @@ -1381,7 +1337,7 @@ FUN_0203BAF4: ; 0x0203BAF4 ldr r0, [r4, #0x0] cmp r0, #0x0 bne _0203BB20 - bl ErrorHandling + bl GF_AssertFail _0203BB20: ldr r0, [r4, #0x0] bl FUN_02037A78 @@ -1392,8 +1348,8 @@ _0203BB20: str r0, [r4, #0x0] pop {r3-r5, pc} - thumb_func_start FUN_0203BB34 -FUN_0203BB34: ; 0x0203BB34 + thumb_func_start ScrCmd_Unk009B +ScrCmd_Unk009B: ; 0x0203BB34 push {r3-r7, lr} add r5, r0, #0x0 add r0, #0x80 @@ -1427,23 +1383,23 @@ FUN_0203BB34: ; 0x0203BB34 pop {r3-r7, pc} .balign 4 - thumb_func_start FUN_0203BB80 -FUN_0203BB80: ; 0x0203BB80 + thumb_func_start ScrCmd_Unk009C +ScrCmd_Unk009C: ; 0x0203BB80 mov r0, #0x0 bx lr - thumb_func_start FUN_0203BB84 -FUN_0203BB84: ; 0x0203BB84 + thumb_func_start ScrCmd_Unk009D +ScrCmd_Unk009D: ; 0x0203BB84 mov r0, #0x0 bx lr - thumb_func_start FUN_0203BB88 -FUN_0203BB88: ; 0x0203BB88 + thumb_func_start ScrCmd_Unk009E +ScrCmd_Unk009E: ; 0x0203BB88 mov r0, #0x1 bx lr - thumb_func_start FUN_0203BB8C -FUN_0203BB8C: ; 0x0203BB8C + thumb_func_start ScrCmd_Unk009F +ScrCmd_Unk009F: ; 0x0203BB8C mov r0, #0x0 bx lr @@ -1521,8 +1477,8 @@ _0203BC16: pop {r3, pc} .balign 4 - thumb_func_start FUN_0203BC1C -FUN_0203BC1C: ; 0x0203BC1C + thumb_func_start ScrCmd_Unk00A1 +ScrCmd_Unk00A1: ; 0x0203BC1C push {r3, lr} add r0, #0x80 ldr r0, [r0, #0x0] @@ -1531,8 +1487,8 @@ FUN_0203BC1C: ; 0x0203BC1C mov r0, #0x1 pop {r3, pc} - thumb_func_start FUN_0203BC2C -FUN_0203BC2C: ; 0x0203BC2C + thumb_func_start ScrCmd_Unk01F8 +ScrCmd_Unk01F8: ; 0x0203BC2C push {r3, lr} add r0, #0x80 ldr r0, [r0, #0x0] @@ -1608,8 +1564,8 @@ _0203BC90: pop {r3-r7, pc} .balign 4 - thumb_func_start FUN_0203BCBC -FUN_0203BCBC: ; 0x0203BCBC + thumb_func_start ScrCmd_Unk00A2 +ScrCmd_Unk00A2: ; 0x0203BCBC push {r3, lr} add r0, #0x80 ldr r0, [r0, #0x0] @@ -1618,16 +1574,16 @@ FUN_0203BCBC: ; 0x0203BCBC pop {r3, pc} .balign 4 - thumb_func_start FUN_0203BCCC -FUN_0203BCCC: ; 0x0203BCCC + thumb_func_start ScrCmd_Unk00A3 +ScrCmd_Unk00A3: ; 0x0203BCCC push {r3, lr} ldr r0, [r0, #0x74] bl FUN_0206F3B8 mov r0, #0x1 pop {r3, pc} - thumb_func_start FUN_0203BCD8 -FUN_0203BCD8: ; 0x0203BCD8 + thumb_func_start ScrCmd_Unk00A4 +ScrCmd_Unk00A4: ; 0x0203BCD8 push {r3-r5, lr} add r5, r0, #0x0 add r0, #0x80 @@ -1649,8 +1605,8 @@ FUN_0203BCD8: ; 0x0203BCD8 mov r0, #0x0 pop {r3-r5, pc} - thumb_func_start FUN_0203BD08 -FUN_0203BD08: ; 0x0203BD08 + thumb_func_start ScrCmd_Unk0207 +ScrCmd_Unk0207: ; 0x0203BD08 push {r4, lr} add r4, r0, #0x0 bl ScriptReadHalfword @@ -1665,8 +1621,8 @@ FUN_0203BD08: ; 0x0203BD08 pop {r4, pc} .balign 4 - thumb_func_start FUN_0203BD28 -FUN_0203BD28: ; 0x0203BD28 + thumb_func_start ScrCmd_Unk0208 +ScrCmd_Unk0208: ; 0x0203BD28 push {r4-r7, lr} sub sp, #0x14 add r5, r0, #0x0 @@ -1732,8 +1688,8 @@ FUN_0203BD28: ; 0x0203BD28 .balign 4 _0203BDB4: .word 0x000003D9 - thumb_func_start FUN_0203BDB8 -FUN_0203BDB8: ; 0x0203BDB8 + thumb_func_start ScrCmd_Unk028C +ScrCmd_Unk028C: ; 0x0203BDB8 push {r4-r6, lr} sub sp, #0x10 add r5, r0, #0x0 @@ -1802,8 +1758,8 @@ FUN_0203BDB8: ; 0x0203BDB8 .balign 4 _0203BE4C: .word 0x000003D9 - thumb_func_start FUN_0203BE50 -FUN_0203BE50: ; 0x0203BE50 + thumb_func_start ScrCmd_Unk0209 +ScrCmd_Unk0209: ; 0x0203BE50 push {r3, lr} add r0, #0x80 ldr r0, [r0, #0x0] @@ -1816,8 +1772,8 @@ FUN_0203BE50: ; 0x0203BE50 pop {r3, pc} .balign 4 - thumb_func_start FUN_0203BE68 -FUN_0203BE68: ; 0x0203BE68 + thumb_func_start ScrCmd_Unk028D +ScrCmd_Unk028D: ; 0x0203BE68 push {r3, lr} add r0, #0x80 ldr r0, [r0, #0x0] @@ -1830,8 +1786,8 @@ FUN_0203BE68: ; 0x0203BE68 pop {r3, pc} .balign 4 - thumb_func_start FUN_0203BE80 -FUN_0203BE80: ; 0x0203BE80 + thumb_func_start ScrCmd_Unk028E +ScrCmd_Unk028E: ; 0x0203BE80 push {r4, lr} add r4, r0, #0x0 bl ScriptReadHalfword @@ -1870,8 +1826,8 @@ _0203BEC8: mov r0, #0x0 pop {r3-r5, pc} - thumb_func_start FUN_0203BECC -FUN_0203BECC: ; 0x0203BECC + thumb_func_start ScrCmd_Unk020A +ScrCmd_Unk020A: ; 0x0203BECC push {r4-r6, lr} add r5, r0, #0x0 bl ScriptReadHalfword @@ -1895,8 +1851,8 @@ FUN_0203BECC: ; 0x0203BECC pop {r4-r6, pc} .balign 4 - thumb_func_start FUN_0203BF00 -FUN_0203BF00: ; 0x0203BF00 + thumb_func_start ScrCmd_Unk020B +ScrCmd_Unk020B: ; 0x0203BF00 push {r4, lr} add r4, r0, #0x0 add r0, #0x80 @@ -1913,16 +1869,16 @@ _0203BF1C: mov r0, #0x0 pop {r4, pc} - thumb_func_start FUN_0203BF20 -FUN_0203BF20: ; 0x0203BF20 + thumb_func_start ScrCmd_Unk00A5 +ScrCmd_Unk00A5: ; 0x0203BF20 push {r3, lr} ldr r0, [r0, #0x74] bl FUN_0208A338 mov r0, #0x1 pop {r3, pc} - thumb_func_start FUN_0203BF2C -FUN_0203BF2C: ; 0x0203BF2C + thumb_func_start ScrCmd_Unk00A6 +ScrCmd_Unk00A6: ; 0x0203BF2C push {r3-r6, lr} sub sp, #0x4 add r5, r0, #0x0 @@ -1961,8 +1917,8 @@ FUN_0203BF2C: ; 0x0203BF2C pop {r3-r6, pc} .balign 4 - thumb_func_start FUN_0203BF84 -FUN_0203BF84: ; 0x0203BF84 + thumb_func_start ScrCmd_Unk00A7 +ScrCmd_Unk00A7: ; 0x0203BF84 push {r3-r7, lr} add r5, r0, #0x0 add r0, #0x80 @@ -2010,8 +1966,8 @@ _0203BFCC: .balign 4 _0203BFE8: .word FUN_0203BB90 - thumb_func_start FUN_0203BFEC -FUN_0203BFEC: ; 0x0203BFEC + thumb_func_start ScrCmd_Unk00A8 +ScrCmd_Unk00A8: ; 0x0203BFEC push {r3-r7, lr} add r5, r0, #0x0 add r0, #0x80 @@ -2059,8 +2015,8 @@ _0203C034: .balign 4 _0203C050: .word FUN_0203BB90 - thumb_func_start FUN_0203C054 -FUN_0203C054: ; 0x0203C054 + thumb_func_start ScrCmd_Unk012E +ScrCmd_Unk012E: ; 0x0203C054 push {r4-r6, lr} add r5, r0, #0x0 bl ScriptReadHalfword @@ -2089,8 +2045,8 @@ _0203C088: mov r0, #0x1 pop {r4-r6, pc} - thumb_func_start FUN_0203C090 -FUN_0203C090: ; 0x0203C090 + thumb_func_start ScrCmd_Unk012F +ScrCmd_Unk012F: ; 0x0203C090 push {r4-r6, lr} add r5, r0, #0x0 bl ScriptReadHalfword @@ -2119,8 +2075,8 @@ _0203C0C4: mov r0, #0x1 pop {r4-r6, pc} - thumb_func_start FUN_0203C0CC -FUN_0203C0CC: ; 0x0203C0CC + thumb_func_start ScrCmd_Unk0130 +ScrCmd_Unk0130: ; 0x0203C0CC push {r3-r5, lr} add r5, r0, #0x0 bl ScriptReadHalfword @@ -2141,8 +2097,8 @@ FUN_0203C0CC: ; 0x0203C0CC mov r0, #0x1 pop {r3-r5, pc} - thumb_func_start FUN_0203C0FC -FUN_0203C0FC: ; 0x0203C0FC + thumb_func_start ScrCmd_Unk0205 +ScrCmd_Unk0205: ; 0x0203C0FC push {r4, lr} add r4, r0, #0x0 add r0, #0x80 @@ -2156,8 +2112,8 @@ FUN_0203C0FC: ; 0x0203C0FC .balign 4 _0203C114: .word FUN_0203BC04 - thumb_func_start FUN_0203C118 -FUN_0203C118: ; 0x0203C118 + thumb_func_start ScrCmd_Unk00A9 +ScrCmd_Unk00A9: ; 0x0203C118 push {r3, lr} add r1, r0, #0x0 ldr r0, [r1, #0x74] @@ -2168,8 +2124,8 @@ FUN_0203C118: ; 0x0203C118 mov r0, #0x1 pop {r3, pc} - thumb_func_start FUN_0203C12C -FUN_0203C12C: ; 0x0203C12C + thumb_func_start ScrCmd_Unk00AA +ScrCmd_Unk00AA: ; 0x0203C12C push {r3-r5, lr} add r5, r0, #0x0 add r0, #0x80 @@ -2201,8 +2157,8 @@ FUN_0203C12C: ; 0x0203C12C nop _0203C170: .word FUN_0203BB90 - thumb_func_start FUN_0203C174 -FUN_0203C174: ; 0x0203C174 + thumb_func_start ScrCmd_Unk01D7 +ScrCmd_Unk01D7: ; 0x0203C174 push {r3-r5, lr} add r5, r0, #0x0 add r0, #0x80 @@ -2228,8 +2184,8 @@ FUN_0203C174: ; 0x0203C174 .balign 4 _0203C1A8: .word FUN_0203BB90 - thumb_func_start FUN_0203C1AC -FUN_0203C1AC: ; 0x0203C1AC + thumb_func_start ScrCmd_Unk01D8 +ScrCmd_Unk01D8: ; 0x0203C1AC push {r3-r5, lr} add r5, r0, #0x0 bl ScriptReadHalfword @@ -2269,8 +2225,8 @@ _0203C1FA: strh r0, [r4, #0x0] pop {r3-r5, pc} - thumb_func_start FUN_0203C200 -FUN_0203C200: ; 0x0203C200 + thumb_func_start ScrCmd_Unk01D9 +ScrCmd_Unk01D9: ; 0x0203C200 push {r3-r7, lr} add r5, r0, #0x0 bl ScriptReadHalfword @@ -2323,8 +2279,8 @@ FUN_0203C200: ; 0x0203C200 .balign 4 _0203C274: .word FUN_0203BB90 - thumb_func_start ScrCmd_monstoragepc -ScrCmd_monstoragepc: ; 0x0203C278 + thumb_func_start ScrCmd_MonStoragePC +ScrCmd_MonStoragePC: ; 0x0203C278 push {r3-r5, lr} add r5, r0, #0x0 add r0, #0x80 @@ -2359,8 +2315,8 @@ ScrCmd_monstoragepc: ; 0x0203C278 nop _0203C2C0: .word FUN_0203BBBC - thumb_func_start FUN_0203C2C4 -FUN_0203C2C4: ; 0x0203C2C4 + thumb_func_start ScrCmd_Unk00AC +ScrCmd_Unk00AC: ; 0x0203C2C4 push {r4, lr} add r4, r0, #0x0 add r0, #0x80 @@ -2374,8 +2330,8 @@ FUN_0203C2C4: ; 0x0203C2C4 .balign 4 _0203C2DC: .word FUN_0203BC04 - thumb_func_start FUN_0203C2E0 -FUN_0203C2E0: ; 0x0203C2E0 + thumb_func_start ScrCmd_Unk00AD +ScrCmd_Unk00AD: ; 0x0203C2E0 push {r3, lr} add r0, #0x80 ldr r0, [r0, #0x0] @@ -2384,8 +2340,8 @@ FUN_0203C2E0: ; 0x0203C2E0 pop {r3, pc} .balign 4 - thumb_func_start FUN_0203C2F0 -FUN_0203C2F0: ; 0x0203C2F0 + thumb_func_start ScrCmd_Unk00AE +ScrCmd_Unk00AE: ; 0x0203C2F0 push {r3, lr} add r0, #0x80 ldr r0, [r0, #0x0] @@ -2394,8 +2350,8 @@ FUN_0203C2F0: ; 0x0203C2F0 mov r0, #0x1 pop {r3, pc} - thumb_func_start FUN_0203C300 -FUN_0203C300: ; 0x0203C300 + thumb_func_start ScrCmd_Unk00AF +ScrCmd_Unk00AF: ; 0x0203C300 push {r3-r5, lr} add r5, r0, #0x0 add r0, #0x80 @@ -2416,8 +2372,8 @@ FUN_0203C300: ; 0x0203C300 .balign 4 _0203C328: .word FUN_0203BB90 - thumb_func_start ScrCmd_halloffame -ScrCmd_halloffame: ; 0x0203C32C + thumb_func_start ScrCmd_HallOfFame +ScrCmd_HallOfFame: ; 0x0203C32C push {r3, lr} add r0, #0x80 ldr r0, [r0, #0x0] @@ -2426,8 +2382,8 @@ ScrCmd_halloffame: ; 0x0203C32C mov r0, #0x1 pop {r3, pc} - thumb_func_start FUN_0203C33C -FUN_0203C33C: ; 0x0203C33C + thumb_func_start ScrCmd_Unk00B1 +ScrCmd_Unk00B1: ; 0x0203C33C push {r3-r5, lr} add r5, r0, #0x0 add r0, #0x80 @@ -2448,8 +2404,8 @@ FUN_0203C33C: ; 0x0203C33C .balign 4 _0203C364: .word FUN_0203BB90 - thumb_func_start FUN_0203C368 -FUN_0203C368: ; 0x0203C368 + thumb_func_start ScrCmd_Unk00B2 +ScrCmd_Unk00B2: ; 0x0203C368 push {r4-r6, lr} add r5, r0, #0x0 bl ScriptReadHalfword @@ -2494,8 +2450,8 @@ _0203C3C0: .balign 4 _0203C3C4: .word FUN_0203BC04 - thumb_func_start FUN_0203C3C8 -FUN_0203C3C8: ; 0x0203C3C8 + thumb_func_start ScrCmd_Unk00B3 +ScrCmd_Unk00B3: ; 0x0203C3C8 push {r4, lr} add r4, r0, #0x0 bl ScriptReadHalfword @@ -2510,8 +2466,8 @@ FUN_0203C3C8: ; 0x0203C3C8 mov r0, #0x1 pop {r4, pc} - thumb_func_start FUN_0203C3E8 -FUN_0203C3E8: ; 0x0203C3E8 + thumb_func_start ScrCmd_Unk00B4 +ScrCmd_Unk00B4: ; 0x0203C3E8 push {r4-r6, lr} add r5, r0, #0x0 add r0, #0x80 @@ -2543,8 +2499,8 @@ FUN_0203C3E8: ; 0x0203C3E8 nop _0203C42C: .word FUN_0203BC04 - thumb_func_start FUN_0203C430 -FUN_0203C430: ; 0x0203C430 + thumb_func_start ScrCmd_Unk00B5 +ScrCmd_Unk00B5: ; 0x0203C430 push {r3-r5, lr} add r5, r0, #0x0 add r0, #0x80 @@ -2566,8 +2522,8 @@ FUN_0203C430: ; 0x0203C430 mov r0, #0x0 pop {r3-r5, pc} - thumb_func_start FUN_0203C460 -FUN_0203C460: ; 0x0203C460 + thumb_func_start ScrCmd_Unk0178 +ScrCmd_Unk0178: ; 0x0203C460 push {r4-r6, lr} add r5, r0, #0x0 ldr r1, [r5, #0x8] @@ -2592,7 +2548,7 @@ _0203C476: ldr r0, [r6, #0x0] cmp r0, #0x0 beq _0203C492 - bl ErrorHandling + bl GF_AssertFail _0203C492: add r0, r5, #0x0 add r0, #0x80 @@ -2608,8 +2564,8 @@ _0203C492: .balign 4 _0203C4AC: .word FUN_0203BC04 - thumb_func_start FUN_0203C4B0 -FUN_0203C4B0: ; 0x0203C4B0 + thumb_func_start ScrCmd_Unk0179 +ScrCmd_Unk0179: ; 0x0203C4B0 push {r3-r5, lr} add r4, r0, #0x0 bl ScriptReadHalfword @@ -2627,7 +2583,7 @@ FUN_0203C4B0: ; 0x0203C4B0 ldr r0, [r4, #0x0] cmp r0, #0x0 bne _0203C4DC - bl ErrorHandling + bl GF_AssertFail _0203C4DC: ldr r0, [r4, #0x0] bl FUN_020378FC @@ -2638,8 +2594,8 @@ _0203C4DC: str r0, [r4, #0x0] pop {r3-r5, pc} - thumb_func_start FUN_0203C4F0 -FUN_0203C4F0: ; 0x0203C4F0 + thumb_func_start ScrCmd_Unk00BA +ScrCmd_Unk00BA: ; 0x0203C4F0 push {r3-r4, lr} sub sp, #0xc add r4, r0, #0x0 @@ -2662,8 +2618,8 @@ FUN_0203C4F0: ; 0x0203C4F0 pop {r3-r4, pc} .balign 4 - thumb_func_start FUN_0203C520 -FUN_0203C520: ; 0x0203C520 + thumb_func_start ScrCmd_Unk00BB +ScrCmd_Unk00BB: ; 0x0203C520 push {r4-r7, lr} sub sp, #0x34 add r5, r0, #0x0 @@ -2710,8 +2666,8 @@ FUN_0203C520: ; 0x0203C520 add sp, #0x34 pop {r4-r7, pc} - thumb_func_start FUN_0203C58C -FUN_0203C58C: ; 0x0203C58C + thumb_func_start ScrCmd_Unk0271 +ScrCmd_Unk0271: ; 0x0203C58C push {r3-r4, lr} sub sp, #0xc add r4, r0, #0x0 @@ -2734,8 +2690,8 @@ FUN_0203C58C: ; 0x0203C58C pop {r3-r4, pc} .balign 4 - thumb_func_start FUN_0203C5BC -FUN_0203C5BC: ; 0x0203C5BC + thumb_func_start ScrCmd_Unk0243 +ScrCmd_Unk0243: ; 0x0203C5BC push {r3-r5, lr} add r5, r0, #0x0 bl ScriptReadHalfword @@ -2773,8 +2729,8 @@ FUN_0203C5BC: ; 0x0203C5BC nop _0203C610: .word 0x0000FFFF - thumb_func_start FUN_0203C614 -FUN_0203C614: ; 0x0203C614 + thumb_func_start ScrCmd_Unk0244 +ScrCmd_Unk0244: ; 0x0203C614 push {r4-r6, lr} add r5, r0, #0x0 bl ScriptReadHalfword @@ -2821,8 +2777,8 @@ FUN_0203C614: ; 0x0203C614 .balign 4 _0203C67C: .word 0x0000FFFF - thumb_func_start FUN_0203C680 -FUN_0203C680: ; 0x0203C680 + thumb_func_start ScrCmd_Unk0245 +ScrCmd_Unk0245: ; 0x0203C680 push {r4-r6, lr} add r5, r0, #0x0 add r0, #0x80 @@ -2852,8 +2808,8 @@ FUN_0203C680: ; 0x0203C680 pop {r4-r6, pc} .balign 4 - thumb_func_start FUN_0203C6C4 -FUN_0203C6C4: ; 0x0203C6C4 + thumb_func_start ScrCmd_Unk00BC +ScrCmd_Unk00BC: ; 0x0203C6C4 push {r4-r7, lr} sub sp, #0xc add r5, r0, #0x0 @@ -2884,8 +2840,8 @@ FUN_0203C6C4: ; 0x0203C6C4 add sp, #0xc pop {r4-r7, pc} - thumb_func_start FUN_0203C70C -FUN_0203C70C: ; 0x0203C70C + thumb_func_start ScrCmd_Unk00BD +ScrCmd_Unk00BD: ; 0x0203C70C push {r3, lr} ldr r1, _0203C718 ; =FUN_0203C71C bl SetupNativeScript @@ -2907,8 +2863,8 @@ _0203C72A: pop {r3, pc} .balign 4 - thumb_func_start FUN_0203C730 -FUN_0203C730: ; 0x0203C730 + thumb_func_start ScrCmd_Unk00BE +ScrCmd_Unk00BE: ; 0x0203C730 push {r3-r7, lr} sub sp, #0x8 add r5, r0, #0x0 @@ -2946,8 +2902,8 @@ FUN_0203C730: ; 0x0203C730 add sp, #0x8 pop {r3-r7, pc} - thumb_func_start FUN_0203C788 -FUN_0203C788: ; 0x0203C788 + thumb_func_start ScrCmd_Unk0203 +ScrCmd_Unk0203: ; 0x0203C788 push {r3-r7, lr} sub sp, #0x8 add r5, r0, #0x0 @@ -2987,8 +2943,8 @@ FUN_0203C788: ; 0x0203C788 add sp, #0x8 pop {r3-r7, pc} - thumb_func_start FUN_0203C7E4 -FUN_0203C7E4: ; 0x0203C7E4 + thumb_func_start ScrCmd_Unk0204 +ScrCmd_Unk0204: ; 0x0203C7E4 push {r3, lr} add r0, #0x80 ldr r0, [r0, #0x0] @@ -2997,8 +2953,8 @@ FUN_0203C7E4: ; 0x0203C7E4 mov r0, #0x1 pop {r3, pc} - thumb_func_start FUN_0203C7F4 -FUN_0203C7F4: ; 0x0203C7F4 + thumb_func_start ScrCmd_Unk0200 +ScrCmd_Unk0200: ; 0x0203C7F4 push {r3-r5, lr} add r4, r0, #0x0 add r0, #0x80 @@ -3018,8 +2974,8 @@ FUN_0203C7F4: ; 0x0203C7F4 mov r0, #0x0 pop {r3-r5, pc} - thumb_func_start FUN_0203C820 -FUN_0203C820: ; 0x0203C820 + thumb_func_start ScrCmd_Unk0201 +ScrCmd_Unk0201: ; 0x0203C820 push {r4, lr} add r4, r0, #0x0 bl ScriptReadHalfword @@ -3037,8 +2993,8 @@ FUN_0203C820: ; 0x0203C820 pop {r4, pc} .balign 4 - thumb_func_start FUN_0203C844 -FUN_0203C844: ; 0x0203C844 + thumb_func_start ScrCmd_Unk00BF +ScrCmd_Unk00BF: ; 0x0203C844 push {r3-r5, lr} add r5, r0, #0x0 bl ScriptReadHalfword @@ -3060,8 +3016,8 @@ FUN_0203C844: ; 0x0203C844 mov r0, #0x1 pop {r3-r5, pc} - thumb_func_start FUN_0203C874 -FUN_0203C874: ; 0x0203C874 + thumb_func_start ScrCmd_Unk00C0 +ScrCmd_Unk00C0: ; 0x0203C874 push {r3-r5, lr} add r5, r0, #0x0 add r0, #0x80 @@ -3090,8 +3046,8 @@ FUN_0203C874: ; 0x0203C874 pop {r3-r5, pc} .balign 4 - thumb_func_start FUN_0203C8B4 -FUN_0203C8B4: ; 0x0203C8B4 + thumb_func_start ScrCmd_Unk00C1 +ScrCmd_Unk00C1: ; 0x0203C8B4 push {r3-r5, lr} add r5, r0, #0x0 bl ScriptReadHalfword @@ -3113,8 +3069,8 @@ FUN_0203C8B4: ; 0x0203C8B4 mov r0, #0x1 pop {r3-r5, pc} - thumb_func_start FUN_0203C8E4 -FUN_0203C8E4: ; 0x0203C8E4 + thumb_func_start ScrCmd_Unk00C2 +ScrCmd_Unk00C2: ; 0x0203C8E4 push {r4-r6, lr} sub sp, #0x8 add r5, r0, #0x0 @@ -3148,8 +3104,8 @@ FUN_0203C8E4: ; 0x0203C8E4 add sp, #0x8 pop {r4-r6, pc} - thumb_func_start FUN_0203C930 -FUN_0203C930: ; 0x0203C930 + thumb_func_start ScrCmd_Unk00C3 +ScrCmd_Unk00C3: ; 0x0203C930 push {r3-r5, lr} add r4, r0, #0x0 add r0, #0x80 @@ -3171,8 +3127,8 @@ FUN_0203C930: ; 0x0203C930 pop {r3-r5, pc} .balign 4 - thumb_func_start FUN_0203C960 -FUN_0203C960: ; 0x0203C960 + thumb_func_start ScrCmd_Unk00C4 +ScrCmd_Unk00C4: ; 0x0203C960 push {r3-r5, lr} add r4, r0, #0x0 add r0, #0x80 @@ -3194,8 +3150,8 @@ FUN_0203C960: ; 0x0203C960 pop {r3-r5, pc} .balign 4 - thumb_func_start FUN_0203C990 -FUN_0203C990: ; 0x0203C990 + thumb_func_start ScrCmd_Unk00C5 +ScrCmd_Unk00C5: ; 0x0203C990 push {r4-r6, lr} add r5, r0, #0x0 add r0, #0x80 @@ -3261,16 +3217,16 @@ _0203CA1A: pop {r4, pc} .balign 4 - thumb_func_start FUN_0203CA20 -FUN_0203CA20: ; 0x0203CA20 + thumb_func_start ScrCmd_Unk00C6 +ScrCmd_Unk00C6: ; 0x0203CA20 push {r3, lr} ldr r0, [r0, #0x74] bl MOD05_021E7030 mov r0, #0x1 pop {r3, pc} - thumb_func_start FUN_0203CA2C -FUN_0203CA2C: ; 0x0203CA2C + thumb_func_start ScrCmd_Unk00C7 +ScrCmd_Unk00C7: ; 0x0203CA2C push {r3-r5, lr} add r5, r0, #0x0 bl ScriptReadHalfword @@ -3295,8 +3251,8 @@ _0203CA56: mov r0, #0x0 pop {r3-r5, pc} - thumb_func_start FUN_0203CA5C -FUN_0203CA5C: ; 0x0203CA5C + thumb_func_start ScrCmd_Unk00C8 +ScrCmd_Unk00C8: ; 0x0203CA5C push {r4, lr} add r4, r0, #0x0 ldr r1, [r4, #0x8] @@ -3361,8 +3317,8 @@ _0203CAE4: mov r0, #0x0 pop {r4, pc} - thumb_func_start FUN_0203CAE8 -FUN_0203CAE8: ; 0x0203CAE8 + thumb_func_start ScrCmd_Unk02BF +ScrCmd_Unk02BF: ; 0x0203CAE8 push {r4, lr} add r4, r0, #0x0 add r0, #0x80 @@ -3378,8 +3334,8 @@ FUN_0203CAE8: ; 0x0203CAE8 mov r0, #0x0 pop {r4, pc} - thumb_func_start FUN_0203CB08 -FUN_0203CB08: ; 0x0203CB08 + thumb_func_start ScrCmd_Unk00C9 +ScrCmd_Unk00C9: ; 0x0203CB08 push {r3, lr} ldr r2, [r0, #0x8] add r1, r2, #0x1 @@ -3392,8 +3348,8 @@ FUN_0203CB08: ; 0x0203CB08 mov r0, #0x0 pop {r3, pc} - thumb_func_start FUN_0203CB20 -FUN_0203CB20: ; 0x0203CB20 + thumb_func_start ScrCmd_Unk00CA +ScrCmd_Unk00CA: ; 0x0203CB20 push {r3-r5, lr} add r5, r0, #0x0 bl ScriptReadHalfword @@ -3412,8 +3368,8 @@ FUN_0203CB20: ; 0x0203CB20 pop {r3-r5, pc} .balign 4 - thumb_func_start FUN_0203CB48 -FUN_0203CB48: ; 0x0203CB48 + thumb_func_start ScrCmd_Unk00CB +ScrCmd_Unk00CB: ; 0x0203CB48 push {r4, lr} add r4, r0, #0x0 bl ScriptReadHalfword @@ -3425,8 +3381,8 @@ FUN_0203CB48: ; 0x0203CB48 mov r0, #0x1 pop {r4, pc} - thumb_func_start FUN_0203CB60 -FUN_0203CB60: ; 0x0203CB60 + thumb_func_start ScrCmd_Unk00CC +ScrCmd_Unk00CC: ; 0x0203CB60 push {r3, lr} add r0, #0x80 ldr r0, [r0, #0x0] @@ -3435,8 +3391,8 @@ FUN_0203CB60: ; 0x0203CB60 mov r0, #0x0 pop {r3, pc} - thumb_func_start FUN_0203CB70 -FUN_0203CB70: ; 0x0203CB70 + thumb_func_start ScrCmd_Unk00E3 +ScrCmd_Unk00E3: ; 0x0203CB70 push {r4-r6, lr} add r4, r0, #0x0 add r0, #0x80 @@ -3469,8 +3425,8 @@ FUN_0203CB70: ; 0x0203CB70 pop {r4-r6, pc} .balign 4 - thumb_func_start FUN_0203CBBC -FUN_0203CBBC: ; 0x0203CBBC + thumb_func_start ScrCmd_Unk00DE +ScrCmd_Unk00DE: ; 0x0203CBBC push {r3-r5, lr} add r5, r0, #0x0 bl ScriptReadHalfword @@ -3490,8 +3446,8 @@ FUN_0203CBBC: ; 0x0203CBBC pop {r3-r5, pc} .balign 4 - thumb_func_start FUN_0203CBE8 -FUN_0203CBE8: ; 0x0203CBE8 + thumb_func_start ScrCmd_Unk00E6 +ScrCmd_Unk00E6: ; 0x0203CBE8 push {r3-r7, lr} add r5, r0, #0x0 add r0, #0x80 @@ -3534,7 +3490,7 @@ FUN_0203CBE8: ; 0x0203CBE8 mov r1, #0x1 bl FUN_02039438 mov r1, #0xf - bl FUN_02019620 + bl FillWindowPixelBuffer add r0, r4, #0x0 mov r1, #0x1 bl FUN_02039438 @@ -3558,8 +3514,8 @@ FUN_0203CBE8: ; 0x0203CBE8 .balign 4 _0203CC84: .word FUN_0203A2F0 - thumb_func_start FUN_0203CC88 -FUN_0203CC88: ; 0x0203CC88 + thumb_func_start ScrCmd_Unk00F2 +ScrCmd_Unk00F2: ; 0x0203CC88 push {r3-r7, lr} sub sp, #0x8 add r5, r0, #0x0 @@ -3629,8 +3585,8 @@ _0203CD18: pop {r4, pc} .balign 4 - thumb_func_start FUN_0203CD20 -FUN_0203CD20: ; 0x0203CD20 + thumb_func_start ScrCmd_Unk00F3 +ScrCmd_Unk00F3: ; 0x0203CD20 push {r3-r7, lr} sub sp, #0x8 add r5, r0, #0x0 @@ -3700,24 +3656,24 @@ _0203CDB0: pop {r4, pc} .balign 4 - thumb_func_start FUN_0203CDB8 -FUN_0203CDB8: ; 0x0203CDB8 + thumb_func_start ScrCmd_Unk00F4 +ScrCmd_Unk00F4: ; 0x0203CDB8 push {r3, lr} bl ScriptReadHalfword mov r0, #0x1 pop {r3, pc} .balign 4 - thumb_func_start FUN_0203CDC4 -FUN_0203CDC4: ; 0x0203CDC4 + thumb_func_start ScrCmd_Unk00F5 +ScrCmd_Unk00F5: ; 0x0203CDC4 push {r3, lr} bl ScriptReadHalfword mov r0, #0x1 pop {r3, pc} .balign 4 - thumb_func_start FUN_0203CDD0 -FUN_0203CDD0: ; 0x0203CDD0 + thumb_func_start ScrCmd_Unk00F6 +ScrCmd_Unk00F6: ; 0x0203CDD0 push {r4-r6, lr} add r5, r0, #0x0 add r0, #0x80 @@ -3740,16 +3696,16 @@ FUN_0203CDD0: ; 0x0203CDD0 mov r0, #0x1 pop {r4-r6, pc} - thumb_func_start FUN_0203CE00 -FUN_0203CE00: ; 0x0203CE00 + thumb_func_start ScrCmd_Unk00F7 +ScrCmd_Unk00F7: ; 0x0203CE00 push {r3, lr} ldr r0, [r0, #0x74] bl FUN_02080C38 mov r0, #0x1 pop {r3, pc} - thumb_func_start FUN_0203CE0C -FUN_0203CE0C: ; 0x0203CE0C + thumb_func_start ScrCmd_Unk011B +ScrCmd_Unk011B: ; 0x0203CE0C push {r3-r4, lr} sub sp, #0x14 add r4, r0, #0x0 @@ -3803,8 +3759,8 @@ FUN_0203CE0C: ; 0x0203CE0C pop {r3-r4, pc} .balign 4 - thumb_func_start FUN_0203CE8C -FUN_0203CE8C: ; 0x0203CE8C + thumb_func_start ScrCmd_Unk011C +ScrCmd_Unk011C: ; 0x0203CE8C push {r3-r5, lr} add r5, r0, #0x0 bl ScriptReadHalfword @@ -3825,8 +3781,8 @@ FUN_0203CE8C: ; 0x0203CE8C mov r0, #0x0 pop {r3-r5, pc} - thumb_func_start FUN_0203CEBC -FUN_0203CEBC: ; 0x0203CEBC + thumb_func_start ScrCmd_Unk011D +ScrCmd_Unk011D: ; 0x0203CEBC push {r3-r7, lr} sub sp, #0x8 add r5, r0, #0x0 @@ -3860,8 +3816,8 @@ FUN_0203CEBC: ; 0x0203CEBC add sp, #0x8 pop {r3-r7, pc} - thumb_func_start FUN_0203CF04 -FUN_0203CF04: ; 0x0203CF04 + thumb_func_start ScrCmd_Unk011E +ScrCmd_Unk011E: ; 0x0203CF04 push {r3-r5, lr} add r5, r0, #0x0 add r0, #0x80 @@ -3883,8 +3839,8 @@ FUN_0203CF04: ; 0x0203CF04 pop {r3-r5, pc} .balign 4 - thumb_func_start FUN_0203CF34 -FUN_0203CF34: ; 0x0203CF34 + thumb_func_start ScrCmd_Unk011F +ScrCmd_Unk011F: ; 0x0203CF34 push {r3-r5, lr} add r5, r0, #0x0 add r0, #0x80 @@ -3906,8 +3862,8 @@ FUN_0203CF34: ; 0x0203CF34 pop {r3-r5, pc} .balign 4 - thumb_func_start FUN_0203CF64 -FUN_0203CF64: ; 0x0203CF64 + thumb_func_start ScrCmd_Unk0120 +ScrCmd_Unk0120: ; 0x0203CF64 push {r3-r5, lr} add r5, r0, #0x0 add r0, #0x80 @@ -3929,8 +3885,8 @@ FUN_0203CF64: ; 0x0203CF64 pop {r3-r5, pc} .balign 4 - thumb_func_start FUN_0203CF94 -FUN_0203CF94: ; 0x0203CF94 + thumb_func_start ScrCmd_Unk0121 +ScrCmd_Unk0121: ; 0x0203CF94 push {r3-r5, lr} add r5, r0, #0x0 add r0, #0x80 @@ -3952,13 +3908,13 @@ FUN_0203CF94: ; 0x0203CF94 pop {r3-r5, pc} .balign 4 - thumb_func_start FUN_0203CFC4 -FUN_0203CFC4: ; 0x0203CFC4 + thumb_func_start ScrCmd_Unk0122 +ScrCmd_Unk0122: ; 0x0203CFC4 mov r0, #0x0 bx lr - thumb_func_start FUN_0203CFC8 -FUN_0203CFC8: ; 0x0203CFC8 + thumb_func_start ScrCmd_Unk0123 +ScrCmd_Unk0123: ; 0x0203CFC8 push {r3-r7, lr} add r5, r0, #0x0 add r0, #0x80 @@ -4019,8 +3975,8 @@ _0203D048: pop {r3-r7, pc} .balign 4 - thumb_func_start FUN_0203D050 -FUN_0203D050: ; 0x0203D050 + thumb_func_start ScrCmd_Unk0124 +ScrCmd_Unk0124: ; 0x0203D050 push {r3-r6, lr} sub sp, #0x4 add r5, r0, #0x0 @@ -4058,8 +4014,8 @@ FUN_0203D050: ; 0x0203D050 pop {r3-r6, pc} .balign 4 - thumb_func_start FUN_0203D0A4 -FUN_0203D0A4: ; 0x0203D0A4 + thumb_func_start ScrCmd_Unk02BD +ScrCmd_Unk02BD: ; 0x0203D0A4 push {r3-r6, lr} sub sp, #0x4 add r5, r0, #0x0 @@ -4097,8 +4053,8 @@ FUN_0203D0A4: ; 0x0203D0A4 pop {r3-r6, pc} .balign 4 - thumb_func_start FUN_0203D0F8 -FUN_0203D0F8: ; 0x0203D0F8 + thumb_func_start ScrCmd_Unk0125 +ScrCmd_Unk0125: ; 0x0203D0F8 push {r3-r5, lr} add r5, r0, #0x0 bl ScriptReadHalfword @@ -4125,16 +4081,16 @@ FUN_0203D0F8: ; 0x0203D0F8 pop {r3-r5, pc} .balign 4 - thumb_func_start FUN_0203D134 -FUN_0203D134: ; 0x0203D134 + thumb_func_start ScrCmd_Unk0126 +ScrCmd_Unk0126: ; 0x0203D134 push {r3, lr} ldr r0, [r0, #0x74] bl FUN_020470AC mov r0, #0x1 pop {r3, pc} - thumb_func_start FUN_0203D140 -FUN_0203D140: ; 0x0203D140 + thumb_func_start ScrCmd_Unk0127 +ScrCmd_Unk0127: ; 0x0203D140 push {r3, lr} add r0, #0x80 ldr r0, [r0, #0x0] @@ -4143,8 +4099,8 @@ FUN_0203D140: ; 0x0203D140 pop {r3, pc} .balign 4 - thumb_func_start FUN_0203D150 -FUN_0203D150: ; 0x0203D150 + thumb_func_start ScrCmd_Unk0128 +ScrCmd_Unk0128: ; 0x0203D150 push {r3-r5, lr} add r5, r0, #0x0 add r1, r5, #0x0 @@ -4163,8 +4119,8 @@ FUN_0203D150: ; 0x0203D150 pop {r3-r5, pc} .balign 4 - thumb_func_start FUN_0203D178 -FUN_0203D178: ; 0x0203D178 + thumb_func_start ScrCmd_Unk0129 +ScrCmd_Unk0129: ; 0x0203D178 push {r4, lr} add r4, r0, #0x0 add r0, #0x80 @@ -4178,8 +4134,8 @@ FUN_0203D178: ; 0x0203D178 pop {r4, pc} .balign 4 - thumb_func_start FUN_0203D194 -FUN_0203D194: ; 0x0203D194 + thumb_func_start ScrCmd_Unk012A +ScrCmd_Unk012A: ; 0x0203D194 push {r3, lr} add r0, #0x80 ldr r0, [r0, #0x0] @@ -4188,8 +4144,8 @@ FUN_0203D194: ; 0x0203D194 pop {r3, pc} .balign 4 - thumb_func_start FUN_0203D1A4 -FUN_0203D1A4: ; 0x0203D1A4 + thumb_func_start ScrCmd_Unk012B +ScrCmd_Unk012B: ; 0x0203D1A4 push {r4, lr} add r4, r0, #0x0 add r0, #0x80 @@ -4203,8 +4159,8 @@ FUN_0203D1A4: ; 0x0203D1A4 .balign 4 _0203D1BC: .word FUN_0203BC04 - thumb_func_start FUN_0203D1C0 -FUN_0203D1C0: ; 0x0203D1C0 + thumb_func_start ScrCmd_Unk012C +ScrCmd_Unk012C: ; 0x0203D1C0 push {r3-r5, lr} add r4, r0, #0x0 add r1, r4, #0x0 @@ -4247,8 +4203,8 @@ _0203D210: mov r0, #0x0 pop {r3-r5, pc} - thumb_func_start FUN_0203D214 -FUN_0203D214: ; 0x0203D214 + thumb_func_start ScrCmd_Unk012D +ScrCmd_Unk012D: ; 0x0203D214 push {r3-r5, lr} add r5, r0, #0x0 add r1, r5, #0x0 @@ -4267,16 +4223,16 @@ FUN_0203D214: ; 0x0203D214 pop {r3-r5, pc} .balign 4 - thumb_func_start FUN_0203D23C -FUN_0203D23C: ; 0x0203D23C + thumb_func_start ScrCmd_Unk0131 +ScrCmd_Unk0131: ; 0x0203D23C push {r3, lr} ldr r0, [r0, #0x74] bl MOD05_021E3424 mov r0, #0x1 pop {r3, pc} - thumb_func_start FUN_0203D248 -FUN_0203D248: ; 0x0203D248 + thumb_func_start ScrCmd_Unk0132 +ScrCmd_Unk0132: ; 0x0203D248 push {r3-r5, lr} add r5, r0, #0x0 add r0, #0x80 @@ -4298,8 +4254,8 @@ FUN_0203D248: ; 0x0203D248 pop {r3-r5, pc} .balign 4 - thumb_func_start FUN_0203D278 -FUN_0203D278: ; 0x0203D278 + thumb_func_start ScrCmd_Unk0133 +ScrCmd_Unk0133: ; 0x0203D278 push {r3-r5, lr} add r5, r0, #0x0 add r1, r5, #0x0 @@ -4319,8 +4275,8 @@ FUN_0203D278: ; 0x0203D278 pop {r3-r5, pc} .balign 4 - thumb_func_start FUN_0203D2A4 -FUN_0203D2A4: ; 0x0203D2A4 + thumb_func_start ScrCmd_Unk0134 +ScrCmd_Unk0134: ; 0x0203D2A4 push {r4-r6, lr} add r4, r0, #0x0 add r1, r4, #0x0 @@ -4348,8 +4304,8 @@ FUN_0203D2A4: ; 0x0203D2A4 mov r0, #0x0 pop {r4-r6, pc} - thumb_func_start FUN_0203D2E4 -FUN_0203D2E4: ; 0x0203D2E4 + thumb_func_start ScrCmd_Unk0135 +ScrCmd_Unk0135: ; 0x0203D2E4 push {r4, lr} add r4, r0, #0x0 bl ScriptReadHalfword @@ -4386,16 +4342,16 @@ _0203D324: bl FUN_020315D8 pop {r4, pc} - thumb_func_start FUN_0203D330 -FUN_0203D330: ; 0x0203D330 + thumb_func_start ScrCmd_Unk0136 +ScrCmd_Unk0136: ; 0x0203D330 push {r3, lr} bl FUN_0203168C mov r0, #0x0 pop {r3, pc} .balign 4 - thumb_func_start FUN_0203D33C -FUN_0203D33C: ; 0x0203D33C + thumb_func_start ScrCmd_Unk0137 +ScrCmd_Unk0137: ; 0x0203D33C push {r3-r5, lr} add r5, r0, #0x0 add r0, #0x80 @@ -4417,8 +4373,8 @@ FUN_0203D33C: ; 0x0203D33C pop {r3-r5, pc} .balign 4 - thumb_func_start FUN_0203D36C -FUN_0203D36C: ; 0x0203D36C + thumb_func_start ScrCmd_Unk0138 +ScrCmd_Unk0138: ; 0x0203D36C push {r3-r5, lr} add r5, r0, #0x0 bl ScriptReadHalfword @@ -4444,8 +4400,8 @@ FUN_0203D36C: ; 0x0203D36C pop {r3-r5, pc} .balign 4 - thumb_func_start FUN_0203D3A4 -FUN_0203D3A4: ; 0x0203D3A4 + thumb_func_start ScrCmd_Unk0139 +ScrCmd_Unk0139: ; 0x0203D3A4 push {r4, lr} bl ScriptReadHalfword add r4, r0, #0x0 @@ -4474,8 +4430,8 @@ _0203D3D8: mov r0, #0x0 pop {r4, pc} - thumb_func_start FUN_0203D3DC -FUN_0203D3DC: ; 0x0203D3DC + thumb_func_start ScrCmd_Unk013C +ScrCmd_Unk013C: ; 0x0203D3DC push {r3-r7, lr} sub sp, #0x8 add r5, r0, #0x0 @@ -4524,8 +4480,8 @@ _0203D434: pop {r3-r7, pc} .balign 4 - thumb_func_start FUN_0203D448 -FUN_0203D448: ; 0x0203D448 + thumb_func_start ScrCmd_Unk013D +ScrCmd_Unk013D: ; 0x0203D448 push {r3, lr} add r0, #0x80 ldr r0, [r0, #0x0] @@ -4534,8 +4490,8 @@ FUN_0203D448: ; 0x0203D448 pop {r3, pc} .balign 4 - thumb_func_start FUN_0203D458 -FUN_0203D458: ; 0x0203D458 + thumb_func_start ScrCmd_Unk013E +ScrCmd_Unk013E: ; 0x0203D458 push {r4, lr} add r4, r0, #0x0 add r0, #0x80 @@ -4564,8 +4520,8 @@ _0203D48A: pop {r3, pc} .balign 4 - thumb_func_start FUN_0203D490 -FUN_0203D490: ; 0x0203D490 + thumb_func_start ScrCmd_Unk013F +ScrCmd_Unk013F: ; 0x0203D490 push {r3-r7, lr} add r5, r0, #0x0 add r0, #0x80 @@ -4604,8 +4560,8 @@ FUN_0203D490: ; 0x0203D490 pop {r3-r7, pc} .balign 4 - thumb_func_start FUN_0203D4E8 -FUN_0203D4E8: ; 0x0203D4E8 + thumb_func_start ScrCmd_Unk02BA +ScrCmd_Unk02BA: ; 0x0203D4E8 push {r3-r5, lr} add r5, r0, #0x0 bl ScriptReadHalfword @@ -4635,8 +4591,8 @@ _0203D522: pop {r3-r5, pc} .balign 4 - thumb_func_start FUN_0203D528 -FUN_0203D528: ; 0x0203D528 + thumb_func_start ScrCmd_Unk0140 +ScrCmd_Unk0140: ; 0x0203D528 push {r4-r6, lr} add r4, r0, #0x0 add r0, #0x80 @@ -4661,8 +4617,8 @@ FUN_0203D528: ; 0x0203D528 mov r0, #0x0 pop {r4-r6, pc} - thumb_func_start FUN_0203D560 -FUN_0203D560: ; 0x0203D560 + thumb_func_start ScrCmd_Unk0146 +ScrCmd_Unk0146: ; 0x0203D560 push {r3-r7, lr} add r4, r0, #0x0 add r0, #0x80 @@ -4697,8 +4653,8 @@ FUN_0203D560: ; 0x0203D560 pop {r3-r7, pc} .balign 4 - thumb_func_start FUN_0203D5B0 -FUN_0203D5B0: ; 0x0203D5B0 + thumb_func_start ScrCmd_Unk0141 +ScrCmd_Unk0141: ; 0x0203D5B0 push {r4, lr} add r4, r0, #0x0 bl ScriptReadHalfword @@ -4735,8 +4691,8 @@ _0203D5F0: pop {r4-r6, pc} .balign 4 - thumb_func_start FUN_0203D5F8 -FUN_0203D5F8: ; 0x0203D5F8 + thumb_func_start ScrCmd_Unk0142 +ScrCmd_Unk0142: ; 0x0203D5F8 push {r3, lr} add r0, #0x80 ldr r1, [r0, #0x0] @@ -4747,8 +4703,8 @@ FUN_0203D5F8: ; 0x0203D5F8 pop {r3, pc} .balign 4 - thumb_func_start FUN_0203D60C -FUN_0203D60C: ; 0x0203D60C + thumb_func_start ScrCmd_Unk013A +ScrCmd_Unk013A: ; 0x0203D60C push {r3, lr} mov r0, #0x4 bl FUN_02052B74 @@ -4756,8 +4712,8 @@ FUN_0203D60C: ; 0x0203D60C mov r0, #0x0 pop {r3, pc} - thumb_func_start FUN_0203D61C -FUN_0203D61C: ; 0x0203D61C + thumb_func_start ScrCmd_Unk013B +ScrCmd_Unk013B: ; 0x0203D61C push {r3, lr} bl FUN_02031C64 bl FUN_02031B50 @@ -4766,8 +4722,8 @@ FUN_0203D61C: ; 0x0203D61C mov r0, #0x0 pop {r3, pc} - thumb_func_start FUN_0203D630 -FUN_0203D630: ; 0x0203D630 + thumb_func_start ScrCmd_Unk0143 +ScrCmd_Unk0143: ; 0x0203D630 push {r4-r6, lr} add r5, r0, #0x0 add r1, r5, #0x0 @@ -4794,8 +4750,8 @@ FUN_0203D630: ; 0x0203D630 pop {r4-r6, pc} .balign 4 - thumb_func_start FUN_0203D66C -FUN_0203D66C: ; 0x0203D66C + thumb_func_start ScrCmd_Unk0144 +ScrCmd_Unk0144: ; 0x0203D66C push {r4, lr} add r4, r0, #0x0 bl ScriptReadHalfword @@ -4839,8 +4795,8 @@ _0203D6BC: pop {r3-r5, pc} .balign 4 - thumb_func_start FUN_0203D6C4 -FUN_0203D6C4: ; 0x0203D6C4 + thumb_func_start ScrCmd_Unk0145 +ScrCmd_Unk0145: ; 0x0203D6C4 push {r4, lr} add r4, r0, #0x0 bl ScriptReadHalfword @@ -4891,8 +4847,8 @@ _0203D720: .balign 4 _0203D724: .word gMain - thumb_func_start FUN_0203D728 -FUN_0203D728: ; 0x0203D728 + thumb_func_start ScrCmd_Unk0153 +ScrCmd_Unk0153: ; 0x0203D728 push {r3, lr} add r0, #0x80 ldr r0, [r0, #0x0] @@ -4901,8 +4857,8 @@ FUN_0203D728: ; 0x0203D728 mov r0, #0x1 pop {r3, pc} - thumb_func_start FUN_0203D738 -FUN_0203D738: ; 0x0203D738 + thumb_func_start ScrCmd_Unk0154 +ScrCmd_Unk0154: ; 0x0203D738 push {r4-r6, lr} add r4, r0, #0x0 add r0, #0x80 @@ -4928,8 +4884,8 @@ FUN_0203D738: ; 0x0203D738 pop {r4-r6, pc} .balign 4 - thumb_func_start FUN_0203D774 -FUN_0203D774: ; 0x0203D774 + thumb_func_start ScrCmd_Unk0155 +ScrCmd_Unk0155: ; 0x0203D774 push {r3-r7, lr} add r4, r0, #0x0 add r0, #0x80 @@ -4972,8 +4928,8 @@ FUN_0203D774: ; 0x0203D774 pop {r3-r7, pc} .balign 4 - thumb_func_start FUN_0203D7DC -FUN_0203D7DC: ; 0x0203D7DC + thumb_func_start ScrCmd_Unk029C +ScrCmd_Unk029C: ; 0x0203D7DC push {r3-r7, lr} add r4, r0, #0x0 add r0, #0x80 @@ -5010,8 +4966,8 @@ FUN_0203D7DC: ; 0x0203D7DC pop {r3-r7, pc} .balign 4 - thumb_func_start FUN_0203D834 -FUN_0203D834: ; 0x0203D834 + thumb_func_start ScrCmd_Unk0156 +ScrCmd_Unk0156: ; 0x0203D834 push {r3-r5, lr} add r5, r0, #0x0 add r0, #0x80 @@ -5034,16 +4990,16 @@ FUN_0203D834: ; 0x0203D834 pop {r3-r5, pc} .balign 4 - thumb_func_start FUN_0203D868 -FUN_0203D868: ; 0x0203D868 + thumb_func_start ScrCmd_Unk014B +ScrCmd_Unk014B: ; 0x0203D868 push {r3, lr} ldr r0, [r0, #0x74] bl FUN_02048498 mov r0, #0x1 pop {r3, pc} - thumb_func_start FUN_0203D874 -FUN_0203D874: ; 0x0203D874 + thumb_func_start ScrCmd_Unk014C +ScrCmd_Unk014C: ; 0x0203D874 push {r3-r5, lr} add r5, r0, #0x0 bl ScriptReadHalfword @@ -5063,8 +5019,8 @@ FUN_0203D874: ; 0x0203D874 pop {r3-r5, pc} .balign 4 - thumb_func_start ScrCmd_getplayergender -ScrCmd_getplayergender: ; 0x0203D8A0 + thumb_func_start ScrCmd_GetPlayerGender +ScrCmd_GetPlayerGender: ; 0x0203D8A0 push {r3-r5, lr} add r5, r0, #0x0 add r0, #0x80 @@ -5085,8 +5041,8 @@ ScrCmd_getplayergender: ; 0x0203D8A0 mov r0, #0x0 pop {r3-r5, pc} - thumb_func_start ScrCmd_healparty -ScrCmd_healparty: ; 0x0203D8D0 + thumb_func_start ScrCmd_HealParty +ScrCmd_HealParty: ; 0x0203D8D0 push {r3, lr} ldr r0, [r0, #0x74] bl FUN_02046528 @@ -5097,13 +5053,13 @@ ScrCmd_healparty: ; 0x0203D8D0 pop {r3, pc} .balign 4 - thumb_func_start FUN_0203D8E8 -FUN_0203D8E8: ; 0x0203D8E8 + thumb_func_start ScrCmd_Unk014F +ScrCmd_Unk014F: ; 0x0203D8E8 mov r0, #0x0 bx lr - thumb_func_start FUN_0203D8EC -FUN_0203D8EC: ; 0x0203D8EC + thumb_func_start ScrCmd_Unk0150 +ScrCmd_Unk0150: ; 0x0203D8EC push {r4, lr} add r4, r0, #0x0 bl FUN_02050024 @@ -5131,8 +5087,8 @@ _0203D91A: pop {r3, pc} .balign 4 - thumb_func_start FUN_0203D920 -FUN_0203D920: ; 0x0203D920 + thumb_func_start ScrCmd_Unk02BB +ScrCmd_Unk02BB: ; 0x0203D920 push {r4, lr} add r4, r0, #0x0 bl FUN_02050048 @@ -5144,8 +5100,8 @@ FUN_0203D920: ; 0x0203D920 .balign 4 _0203D934: .word FUN_0203D904 - thumb_func_start FUN_0203D938 -FUN_0203D938: ; 0x0203D938 + thumb_func_start ScrCmd_Unk0151 +ScrCmd_Unk0151: ; 0x0203D938 push {r3, lr} add r0, #0x80 ldr r0, [r0, #0x0] @@ -5154,8 +5110,8 @@ FUN_0203D938: ; 0x0203D938 pop {r3, pc} .balign 4 - thumb_func_start FUN_0203D948 -FUN_0203D948: ; 0x0203D948 + thumb_func_start ScrCmd_Unk0152 +ScrCmd_Unk0152: ; 0x0203D948 push {r3, lr} bl ScriptReadHalfword bl FUN_0204F6DC @@ -5163,8 +5119,8 @@ FUN_0203D948: ; 0x0203D948 pop {r3, pc} .balign 4 - thumb_func_start FUN_0203D958 -FUN_0203D958: ; 0x0203D958 + thumb_func_start ScrCmd_Unk017A +ScrCmd_Unk017A: ; 0x0203D958 push {r4-r6, lr} add r5, r0, #0x0 bl ScriptReadHalfword @@ -5192,8 +5148,8 @@ FUN_0203D958: ; 0x0203D958 mov r0, #0x0 pop {r4-r6, pc} - thumb_func_start FUN_0203D998 -FUN_0203D998: ; 0x0203D998 + thumb_func_start ScrCmd_Unk0186 +ScrCmd_Unk0186: ; 0x0203D998 push {r4-r6, lr} add r5, r0, #0x0 bl ScriptReadHalfword @@ -5228,8 +5184,8 @@ FUN_0203D998: ; 0x0203D998 pop {r4-r6, pc} .balign 4 - thumb_func_start FUN_0203D9E8 -FUN_0203D9E8: ; 0x0203D9E8 + thumb_func_start ScrCmd_Unk0187 +ScrCmd_Unk0187: ; 0x0203D9E8 push {r4-r7, lr} sub sp, #0xc add r5, r0, #0x0 @@ -5290,8 +5246,8 @@ FUN_0203D9E8: ; 0x0203D9E8 pop {r4-r7, pc} .balign 4 - thumb_func_start FUN_0203DA78 -FUN_0203DA78: ; 0x0203DA78 + thumb_func_start ScrCmd_Unk0188 +ScrCmd_Unk0188: ; 0x0203DA78 push {r3-r5, lr} add r5, r0, #0x0 bl ScriptReadHalfword @@ -5316,8 +5272,8 @@ FUN_0203DA78: ; 0x0203DA78 mov r0, #0x0 pop {r3-r5, pc} - thumb_func_start FUN_0203DAB0 -FUN_0203DAB0: ; 0x0203DAB0 + thumb_func_start ScrCmd_Unk0189 +ScrCmd_Unk0189: ; 0x0203DAB0 push {r3-r5, lr} add r5, r0, #0x0 bl ScriptReadHalfword @@ -5342,8 +5298,8 @@ FUN_0203DAB0: ; 0x0203DAB0 mov r0, #0x0 pop {r3-r5, pc} - thumb_func_start FUN_0203DAE8 -FUN_0203DAE8: ; 0x0203DAE8 + thumb_func_start ScrCmd_Unk018A +ScrCmd_Unk018A: ; 0x0203DAE8 push {r4-r6, lr} add r5, r0, #0x0 bl ScriptReadHalfword @@ -5378,8 +5334,8 @@ FUN_0203DAE8: ; 0x0203DAE8 pop {r4-r6, pc} .balign 4 - thumb_func_start FUN_0203DB38 -FUN_0203DB38: ; 0x0203DB38 + thumb_func_start ScrCmd_Unk018B +ScrCmd_Unk018B: ; 0x0203DB38 push {r4-r6, lr} add r5, r0, #0x0 bl ScriptReadHalfword @@ -5414,8 +5370,8 @@ FUN_0203DB38: ; 0x0203DB38 pop {r4-r6, pc} .balign 4 - thumb_func_start FUN_0203DB88 -FUN_0203DB88: ; 0x0203DB88 + thumb_func_start ScrCmd_Unk018C +ScrCmd_Unk018C: ; 0x0203DB88 push {r4-r6, lr} add r5, r0, #0x0 bl ScriptReadHalfword @@ -5440,7 +5396,7 @@ FUN_0203DB88: ; 0x0203DB88 bl FUN_02058060 add r5, r0, #0x0 bne _0203DBC6 - bl ErrorHandling + bl GF_AssertFail _0203DBC6: add r0, r5, #0x0 add r1, r4, #0x0 @@ -5449,8 +5405,8 @@ _0203DBC6: pop {r4-r6, pc} .balign 4 - thumb_func_start FUN_0203DBD4 -FUN_0203DBD4: ; 0x0203DBD4 + thumb_func_start ScrCmd_Unk018F +ScrCmd_Unk018F: ; 0x0203DBD4 push {r3-r5, lr} add r4, r0, #0x0 add r0, #0x80 @@ -5472,8 +5428,8 @@ _0203DBFC: mov r0, #0x0 pop {r3-r5, pc} - thumb_func_start FUN_0203DC00 -FUN_0203DC00: ; 0x0203DC00 + thumb_func_start ScrCmd_Unk0168 +ScrCmd_Unk0168: ; 0x0203DC00 push {r3-r7, lr} add r5, r0, #0x0 bl ScriptReadHalfword @@ -5512,8 +5468,8 @@ FUN_0203DC00: ; 0x0203DC00 pop {r3-r7, pc} .balign 4 - thumb_func_start FUN_0203DC58 -FUN_0203DC58: ; 0x0203DC58 + thumb_func_start ScrCmd_Unk0169 +ScrCmd_Unk0169: ; 0x0203DC58 push {r3, lr} ldr r2, [r0, #0x8] add r1, r2, #0x1 @@ -5526,8 +5482,8 @@ FUN_0203DC58: ; 0x0203DC58 pop {r3, pc} .balign 4 - thumb_func_start FUN_0203DC70 -FUN_0203DC70: ; 0x0203DC70 + thumb_func_start ScrCmd_Unk016A +ScrCmd_Unk016A: ; 0x0203DC70 push {r3, lr} ldr r2, [r0, #0x8] add r1, r2, #0x1 @@ -5540,8 +5496,8 @@ FUN_0203DC70: ; 0x0203DC70 pop {r3, pc} .balign 4 - thumb_func_start FUN_0203DC88 -FUN_0203DC88: ; 0x0203DC88 + thumb_func_start ScrCmd_Unk016B +ScrCmd_Unk016B: ; 0x0203DC88 push {r3, lr} ldr r2, [r0, #0x8] add r1, r2, #0x1 @@ -5554,8 +5510,8 @@ FUN_0203DC88: ; 0x0203DC88 pop {r3, pc} .balign 4 - thumb_func_start FUN_0203DCA0 -FUN_0203DCA0: ; 0x0203DCA0 + thumb_func_start ScrCmd_Unk016C +ScrCmd_Unk016C: ; 0x0203DCA0 push {r3, lr} ldr r2, [r0, #0x8] add r1, r2, #0x1 @@ -5568,8 +5524,8 @@ FUN_0203DCA0: ; 0x0203DCA0 pop {r3, pc} .balign 4 - thumb_func_start FUN_0203DCB8 -FUN_0203DCB8: ; 0x0203DCB8 + thumb_func_start ScrCmd_Unk016F +ScrCmd_Unk016F: ; 0x0203DCB8 push {r3, lr} add r0, #0x80 ldr r0, [r0, #0x0] @@ -5578,8 +5534,8 @@ FUN_0203DCB8: ; 0x0203DCB8 pop {r3, pc} .balign 4 - thumb_func_start FUN_0203DCC8 -FUN_0203DCC8: ; 0x0203DCC8 + thumb_func_start ScrCmd_Unk0170 +ScrCmd_Unk0170: ; 0x0203DCC8 push {r3, lr} add r0, #0x80 ldr r0, [r0, #0x0] @@ -5588,8 +5544,8 @@ FUN_0203DCC8: ; 0x0203DCC8 pop {r3, pc} .balign 4 - thumb_func_start FUN_0203DCD8 -FUN_0203DCD8: ; 0x0203DCD8 + thumb_func_start ScrCmd_Unk0171 +ScrCmd_Unk0171: ; 0x0203DCD8 push {r3, lr} add r0, #0x80 ldr r0, [r0, #0x0] @@ -5598,8 +5554,8 @@ FUN_0203DCD8: ; 0x0203DCD8 pop {r3, pc} .balign 4 - thumb_func_start FUN_0203DCE8 -FUN_0203DCE8: ; 0x0203DCE8 + thumb_func_start ScrCmd_Unk0172 +ScrCmd_Unk0172: ; 0x0203DCE8 push {r3, lr} add r0, #0x80 ldr r0, [r0, #0x0] @@ -5608,8 +5564,8 @@ FUN_0203DCE8: ; 0x0203DCE8 pop {r3, pc} .balign 4 - thumb_func_start FUN_0203DCF8 -FUN_0203DCF8: ; 0x0203DCF8 + thumb_func_start ScrCmd_Unk0173 +ScrCmd_Unk0173: ; 0x0203DCF8 push {r3, lr} add r0, #0x80 ldr r0, [r0, #0x0] @@ -5618,8 +5574,8 @@ FUN_0203DCF8: ; 0x0203DCF8 pop {r3, pc} .balign 4 - thumb_func_start FUN_0203DD08 -FUN_0203DD08: ; 0x0203DD08 + thumb_func_start ScrCmd_Unk0174 +ScrCmd_Unk0174: ; 0x0203DD08 push {r3, lr} add r0, #0x80 ldr r0, [r0, #0x0] @@ -5628,8 +5584,8 @@ FUN_0203DD08: ; 0x0203DD08 pop {r3, pc} .balign 4 - thumb_func_start FUN_0203DD18 -FUN_0203DD18: ; 0x0203DD18 + thumb_func_start ScrCmd_Unk0175 +ScrCmd_Unk0175: ; 0x0203DD18 push {r3, lr} add r1, r0, #0x0 add r1, #0x80 @@ -5644,8 +5600,8 @@ FUN_0203DD18: ; 0x0203DD18 pop {r3, pc} .balign 4 - thumb_func_start FUN_0203DD34 -FUN_0203DD34: ; 0x0203DD34 + thumb_func_start ScrCmd_Unk0176 +ScrCmd_Unk0176: ; 0x0203DD34 push {r3, lr} add r1, r0, #0x0 add r1, #0x80 @@ -5660,8 +5616,8 @@ FUN_0203DD34: ; 0x0203DD34 pop {r3, pc} .balign 4 - thumb_func_start FUN_0203DD50 -FUN_0203DD50: ; 0x0203DD50 + thumb_func_start ScrCmd_Unk01AC +ScrCmd_Unk01AC: ; 0x0203DD50 push {r3, lr} add r0, #0x80 ldr r0, [r0, #0x0] @@ -5670,8 +5626,8 @@ FUN_0203DD50: ; 0x0203DD50 pop {r3, pc} .balign 4 - thumb_func_start FUN_0203DD60 -FUN_0203DD60: ; 0x0203DD60 + thumb_func_start ScrCmd_Unk019E +ScrCmd_Unk019E: ; 0x0203DD60 push {r3-r7, lr} add r5, r0, #0x0 add r0, #0x80 @@ -5745,8 +5701,8 @@ _0203DDF6: nop _0203DDFC: .word 0x0000FFFE - thumb_func_start FUN_0203DE00 -FUN_0203DE00: ; 0x0203DE00 + thumb_func_start ScrCmd_Unk019F +ScrCmd_Unk019F: ; 0x0203DE00 push {r3-r5, lr} add r5, r0, #0x0 add r0, #0x80 @@ -5782,16 +5738,16 @@ FUN_0203DE38: ; 0x0203DE38 bl FUN_020546C8 pop {r3, pc} - thumb_func_start FUN_0203DE4C -FUN_0203DE4C: ; 0x0203DE4C + thumb_func_start ScrCmd_Unk01A0 +ScrCmd_Unk01A0: ; 0x0203DE4C push {r3, lr} bl MOD11_0224CA94 mov r0, #0x0 pop {r3, pc} .balign 4 - thumb_func_start FUN_0203DE58 -FUN_0203DE58: ; 0x0203DE58 + thumb_func_start ScrCmd_Unk01A1 +ScrCmd_Unk01A1: ; 0x0203DE58 push {r3-r5, lr} add r4, r0, #0x0 ldr r2, [r4, #0x8] @@ -5810,8 +5766,8 @@ FUN_0203DE58: ; 0x0203DE58 pop {r3-r5, pc} .balign 4 - thumb_func_start FUN_0203DE80 -FUN_0203DE80: ; 0x0203DE80 + thumb_func_start ScrCmd_Unk01A2 +ScrCmd_Unk01A2: ; 0x0203DE80 push {r3-r5, lr} add r4, r0, #0x0 ldr r2, [r4, #0x8] @@ -5830,8 +5786,8 @@ FUN_0203DE80: ; 0x0203DE80 pop {r3-r5, pc} .balign 4 - thumb_func_start FUN_0203DEA8 -FUN_0203DEA8: ; 0x0203DEA8 + thumb_func_start ScrCmd_Unk003F +ScrCmd_Unk003F: ; 0x0203DEA8 push {r3, lr} sub sp, #0x8 mov r3, #0x0 @@ -5846,8 +5802,8 @@ FUN_0203DEA8: ; 0x0203DEA8 pop {r3, pc} .balign 4 - thumb_func_start FUN_0203DEC4 -FUN_0203DEC4: ; 0x0203DEC4 + thumb_func_start ScrCmd_Unk01B1 +ScrCmd_Unk01B1: ; 0x0203DEC4 push {r3-r5, lr} add r4, r0, #0x0 add r1, r4, #0x0 @@ -5863,7 +5819,7 @@ FUN_0203DEC4: ; 0x0203DEC4 bl FUN_02058060 add r4, r0, #0x0 bne _0203DEEC - bl ErrorHandling + bl GF_AssertFail _0203DEEC: add r0, r4, #0x0 mov r1, #0x0 @@ -5871,8 +5827,8 @@ _0203DEEC: mov r0, #0x0 pop {r3-r5, pc} - thumb_func_start FUN_0203DEF8 -FUN_0203DEF8: ; 0x0203DEF8 + thumb_func_start ScrCmd_Unk01B2 +ScrCmd_Unk01B2: ; 0x0203DEF8 push {r3-r5, lr} add r4, r0, #0x0 add r1, r4, #0x0 @@ -5888,7 +5844,7 @@ FUN_0203DEF8: ; 0x0203DEF8 bl FUN_02058060 add r4, r0, #0x0 bne _0203DF20 - bl ErrorHandling + bl GF_AssertFail _0203DF20: add r0, r4, #0x0 mov r1, #0x1 @@ -5896,16 +5852,16 @@ _0203DF20: mov r0, #0x0 pop {r3-r5, pc} - thumb_func_start FUN_0203DF2C -FUN_0203DF2C: ; 0x0203DF2C + thumb_func_start ScrCmd_Unk01B3 +ScrCmd_Unk01B3: ; 0x0203DF2C push {r3, lr} ldr r0, [r0, #0x74] bl FUN_02066818 mov r0, #0x1 pop {r3, pc} - thumb_func_start FUN_0203DF38 -FUN_0203DF38: ; 0x0203DF38 + thumb_func_start ScrCmd_Unk01B4 +ScrCmd_Unk01B4: ; 0x0203DF38 push {r3-r5, lr} add r5, r0, #0x0 add r1, r5, #0x0 @@ -5925,8 +5881,8 @@ FUN_0203DF38: ; 0x0203DF38 mov r0, #0x0 pop {r3-r5, pc} - thumb_func_start FUN_0203DF64 -FUN_0203DF64: ; 0x0203DF64 + thumb_func_start ScrCmd_Unk01B5 +ScrCmd_Unk01B5: ; 0x0203DF64 push {r4, lr} add r4, r0, #0x0 bl ScriptReadHalfword @@ -5941,8 +5897,8 @@ FUN_0203DF64: ; 0x0203DF64 mov r0, #0x1 pop {r4, pc} - thumb_func_start FUN_0203DF84 -FUN_0203DF84: ; 0x0203DF84 + thumb_func_start ScrCmd_Unk01B6 +ScrCmd_Unk01B6: ; 0x0203DF84 push {r3-r5, lr} add r4, r0, #0x0 bl ScriptReadHalfword @@ -5959,8 +5915,8 @@ FUN_0203DF84: ; 0x0203DF84 mov r0, #0x0 pop {r3-r5, pc} - thumb_func_start FUN_0203DFA8 -FUN_0203DFA8: ; 0x0203DFA8 + thumb_func_start ScrCmd_Unk01B7 +ScrCmd_Unk01B7: ; 0x0203DFA8 push {r3-r5, lr} add r5, r0, #0x0 bl ScriptReadHalfword @@ -5984,8 +5940,8 @@ FUN_0203DFA8: ; 0x0203DFA8 mov r0, #0x1 pop {r3-r5, pc} - thumb_func_start FUN_0203DFE0 -FUN_0203DFE0: ; 0x0203DFE0 + thumb_func_start ScrCmd_Unk01B8 +ScrCmd_Unk01B8: ; 0x0203DFE0 push {r3-r5, lr} add r5, r0, #0x0 bl ScriptReadHalfword @@ -6009,8 +5965,8 @@ FUN_0203DFE0: ; 0x0203DFE0 mov r0, #0x1 pop {r3-r5, pc} - thumb_func_start FUN_0203E018 -FUN_0203E018: ; 0x0203E018 + thumb_func_start ScrCmd_Unk01C1 +ScrCmd_Unk01C1: ; 0x0203E018 push {r4-r6, lr} add r5, r0, #0x0 add r1, r5, #0x0 @@ -6037,8 +5993,8 @@ FUN_0203E018: ; 0x0203E018 pop {r4-r6, pc} .balign 4 - thumb_func_start FUN_0203E054 -FUN_0203E054: ; 0x0203E054 + thumb_func_start ScrCmd_Unk01C2 +ScrCmd_Unk01C2: ; 0x0203E054 push {r3-r5, lr} add r4, r0, #0x0 add r1, r4, #0x0 @@ -6055,8 +6011,8 @@ FUN_0203E054: ; 0x0203E054 mov r0, #0x0 pop {r3-r5, pc} - thumb_func_start FUN_0203E078 -FUN_0203E078: ; 0x0203E078 + thumb_func_start ScrCmd_Unk01C3 +ScrCmd_Unk01C3: ; 0x0203E078 push {r3-r7, lr} add r5, r0, #0x0 add r1, r5, #0x0 @@ -6093,8 +6049,8 @@ FUN_0203E078: ; 0x0203E078 mov r0, #0x0 pop {r3-r7, pc} - thumb_func_start FUN_0203E0CC -FUN_0203E0CC: ; 0x0203E0CC + thumb_func_start ScrCmd_Unk01C4 +ScrCmd_Unk01C4: ; 0x0203E0CC push {r3-r7, lr} add r5, r0, #0x0 add r1, r5, #0x0 @@ -6131,8 +6087,8 @@ FUN_0203E0CC: ; 0x0203E0CC mov r0, #0x0 pop {r3-r7, pc} - thumb_func_start FUN_0203E120 -FUN_0203E120: ; 0x0203E120 + thumb_func_start ScrCmd_Unk01C5 +ScrCmd_Unk01C5: ; 0x0203E120 push {r3, lr} add r0, #0x80 ldr r0, [r0, #0x0] @@ -6144,8 +6100,8 @@ FUN_0203E120: ; 0x0203E120 mov r0, #0x0 pop {r3, pc} - thumb_func_start FUN_0203E138 -FUN_0203E138: ; 0x0203E138 + thumb_func_start ScrCmd_Unk01CC +ScrCmd_Unk01CC: ; 0x0203E138 push {r4, lr} add r0, #0x80 ldr r4, [r0, #0x0] @@ -6166,8 +6122,8 @@ FUN_0203E138: ; 0x0203E138 pop {r4, pc} .balign 4 - thumb_func_start FUN_0203E168 -FUN_0203E168: ; 0x0203E168 + thumb_func_start ScrCmd_Unk01CD +ScrCmd_Unk01CD: ; 0x0203E168 push {r3-r7, lr} add r4, r0, #0x0 bl ScriptReadHalfword @@ -6278,13 +6234,13 @@ _0203E23E: pop {r3-r7, pc} .balign 4 - thumb_func_start FUN_0203E254 -FUN_0203E254: ; 0x0203E254 + thumb_func_start ScrCmd_Unk01CE +ScrCmd_Unk01CE: ; 0x0203E254 mov r0, #0x0 bx lr - thumb_func_start FUN_0203E258 -FUN_0203E258: ; 0x0203E258 + thumb_func_start ScrCmd_Unk01D2 +ScrCmd_Unk01D2: ; 0x0203E258 push {r4-r6, lr} add r5, r0, #0x0 bl ScriptReadHalfword @@ -6313,8 +6269,8 @@ FUN_0203E258: ; 0x0203E258 mov r0, #0x0 pop {r4-r6, pc} - thumb_func_start FUN_0203E29C -FUN_0203E29C: ; 0x0203E29C + thumb_func_start ScrCmd_Unk01D3 +ScrCmd_Unk01D3: ; 0x0203E29C push {r3-r7, lr} add r5, r0, #0x0 bl ScriptReadHalfword @@ -6353,8 +6309,8 @@ FUN_0203E29C: ; 0x0203E29C pop {r3-r7, pc} .balign 4 - thumb_func_start FUN_0203E2F8 -FUN_0203E2F8: ; 0x0203E2F8 + thumb_func_start ScrCmd_Unk01D4 +ScrCmd_Unk01D4: ; 0x0203E2F8 push {r3-r7, lr} add r5, r0, #0x0 bl ScriptReadHalfword @@ -6399,8 +6355,8 @@ _0203E354: pop {r3-r7, pc} .balign 4 - thumb_func_start FUN_0203E35C -FUN_0203E35C: ; 0x0203E35C + thumb_func_start ScrCmd_Unk01D5 +ScrCmd_Unk01D5: ; 0x0203E35C push {r3-r5, lr} add r5, r0, #0x0 bl ScriptReadHalfword @@ -6421,8 +6377,8 @@ FUN_0203E35C: ; 0x0203E35C pop {r3-r5, pc} .balign 4 - thumb_func_start FUN_0203E38C -FUN_0203E38C: ; 0x0203E38C + thumb_func_start ScrCmd_Unk01D6 +ScrCmd_Unk01D6: ; 0x0203E38C push {r4-r6, lr} add r5, r0, #0x0 bl ScriptReadHalfword @@ -6451,8 +6407,8 @@ FUN_0203E38C: ; 0x0203E38C mov r0, #0x0 pop {r4-r6, pc} - thumb_func_start FUN_0203E3D0 -FUN_0203E3D0: ; 0x0203E3D0 + thumb_func_start ScrCmd_Unk01E8 +ScrCmd_Unk01E8: ; 0x0203E3D0 push {r3-r5, lr} add r4, r0, #0x0 add r0, #0x80 @@ -6479,8 +6435,8 @@ _0203E404: mov r0, #0x0 pop {r3-r5, pc} - thumb_func_start FUN_0203E408 -FUN_0203E408: ; 0x0203E408 + thumb_func_start ScrCmd_Unk01E9 +ScrCmd_Unk01E9: ; 0x0203E408 push {r3-r5, lr} add r4, r0, #0x0 add r0, #0x80 @@ -6507,8 +6463,8 @@ _0203E43C: mov r0, #0x0 pop {r3-r5, pc} - thumb_func_start FUN_0203E440 -FUN_0203E440: ; 0x0203E440 + thumb_func_start ScrCmd_Unk01EA +ScrCmd_Unk01EA: ; 0x0203E440 push {r3-r5, lr} add r5, r0, #0x0 add r0, #0x80 @@ -6531,8 +6487,8 @@ FUN_0203E440: ; 0x0203E440 .balign 4 _0203E46C: .word FUN_0203BB90 - thumb_func_start FUN_0203E470 -FUN_0203E470: ; 0x0203E470 + thumb_func_start ScrCmd_Unk01EB +ScrCmd_Unk01EB: ; 0x0203E470 push {r3-r5, lr} add r5, r0, #0x0 add r0, #0x80 @@ -6555,8 +6511,8 @@ FUN_0203E470: ; 0x0203E470 .balign 4 _0203E49C: .word FUN_0203BB90 - thumb_func_start FUN_0203E4A0 -FUN_0203E4A0: ; 0x0203E4A0 + thumb_func_start ScrCmd_Unk01EC +ScrCmd_Unk01EC: ; 0x0203E4A0 push {r3, lr} add r0, #0x80 ldr r0, [r0, #0x0] @@ -6565,8 +6521,8 @@ FUN_0203E4A0: ; 0x0203E4A0 mov r0, #0x0 pop {r3, pc} - thumb_func_start FUN_0203E4B0 -FUN_0203E4B0: ; 0x0203E4B0 + thumb_func_start ScrCmd_Unk01ED +ScrCmd_Unk01ED: ; 0x0203E4B0 push {r3-r5, lr} add r5, r0, #0x0 bl ScriptReadHalfword @@ -6585,8 +6541,8 @@ FUN_0203E4B0: ; 0x0203E4B0 pop {r3-r5, pc} .balign 4 - thumb_func_start FUN_0203E4D8 -FUN_0203E4D8: ; 0x0203E4D8 + thumb_func_start ScrCmd_Unk01EF +ScrCmd_Unk01EF: ; 0x0203E4D8 push {r4, lr} add r4, r0, #0x0 bl ScriptReadHalfword @@ -6598,8 +6554,8 @@ FUN_0203E4D8: ; 0x0203E4D8 pop {r4, pc} .balign 4 - thumb_func_start FUN_0203E4F0 -FUN_0203E4F0: ; 0x0203E4F0 + thumb_func_start ScrCmd_Unk01E5 +ScrCmd_Unk01E5: ; 0x0203E4F0 push {r3-r5, lr} add r5, r0, #0x0 bl ScriptReadHalfword @@ -6614,8 +6570,8 @@ FUN_0203E4F0: ; 0x0203E4F0 pop {r3-r5, pc} .balign 4 - thumb_func_start FUN_0203E510 -FUN_0203E510: ; 0x0203E510 + thumb_func_start ScrCmd_Unk01E6 +ScrCmd_Unk01E6: ; 0x0203E510 push {r3-r7, lr} add r5, r0, #0x0 bl ScriptReadHalfword @@ -6654,8 +6610,8 @@ FUN_0203E510: ; 0x0203E510 .balign 4 _0203E564: .word 0xFFFF0000 - thumb_func_start FUN_0203E568 -FUN_0203E568: ; 0x0203E568 + thumb_func_start ScrCmd_Unk01E7 +ScrCmd_Unk01E7: ; 0x0203E568 push {r4-r6, lr} add r5, r0, #0x0 bl ScriptReadHalfword @@ -6710,8 +6666,8 @@ _0203E5D6: pop {r4-r6, pc} .balign 4 - thumb_func_start FUN_0203E5DC -FUN_0203E5DC: ; 0x0203E5DC + thumb_func_start ScrCmd_Unk0202 +ScrCmd_Unk0202: ; 0x0203E5DC push {r3-r7, lr} sub sp, #0x8 add r5, r0, #0x0 @@ -6781,8 +6737,8 @@ _0203E66E: add sp, #0x8 pop {r3-r7, pc} - thumb_func_start FUN_0203E674 -FUN_0203E674: ; 0x0203E674 + thumb_func_start ScrCmd_Unk0206 +ScrCmd_Unk0206: ; 0x0203E674 push {r3, lr} add r0, #0x80 ldr r0, [r0, #0x0] @@ -6791,8 +6747,8 @@ FUN_0203E674: ; 0x0203E674 pop {r3, pc} .balign 4 - thumb_func_start FUN_0203E684 -FUN_0203E684: ; 0x0203E684 + thumb_func_start ScrCmd_Unk020D +ScrCmd_Unk020D: ; 0x0203E684 push {r4-r6, lr} add r5, r0, #0x0 ldr r2, [r5, #0x8] @@ -6815,8 +6771,8 @@ FUN_0203E684: ; 0x0203E684 pop {r4-r6, pc} .balign 4 - thumb_func_start FUN_0203E6B4 -FUN_0203E6B4: ; 0x0203E6B4 + thumb_func_start ScrCmd_Unk020E +ScrCmd_Unk020E: ; 0x0203E6B4 push {r3, lr} add r0, #0x80 ldr r0, [r0, #0x0] @@ -6825,8 +6781,8 @@ FUN_0203E6B4: ; 0x0203E6B4 pop {r3, pc} .balign 4 - thumb_func_start FUN_0203E6C4 -FUN_0203E6C4: ; 0x0203E6C4 + thumb_func_start ScrCmd_Unk020F +ScrCmd_Unk020F: ; 0x0203E6C4 push {r4-r6, lr} add r5, r0, #0x0 bl ScriptReadHalfword @@ -6851,8 +6807,8 @@ FUN_0203E6C4: ; 0x0203E6C4 mov r0, #0x1 pop {r4-r6, pc} - thumb_func_start FUN_0203E6FC -FUN_0203E6FC: ; 0x0203E6FC + thumb_func_start ScrCmd_Unk0210 +ScrCmd_Unk0210: ; 0x0203E6FC push {r4-r6, lr} add r5, r0, #0x0 bl ScriptReadHalfword @@ -6874,8 +6830,8 @@ FUN_0203E6FC: ; 0x0203E6FC pop {r4-r6, pc} .balign 4 - thumb_func_start FUN_0203E72C -FUN_0203E72C: ; 0x0203E72C + thumb_func_start ScrCmd_Unk0211 +ScrCmd_Unk0211: ; 0x0203E72C push {r3, lr} ldr r2, [r0, #0x8] add r1, r2, #0x1 @@ -6888,8 +6844,8 @@ FUN_0203E72C: ; 0x0203E72C mov r0, #0x1 pop {r3, pc} - thumb_func_start FUN_0203E744 -FUN_0203E744: ; 0x0203E744 + thumb_func_start ScrCmd_Unk0214 +ScrCmd_Unk0214: ; 0x0203E744 push {r3-r5, lr} add r5, r0, #0x0 add r0, #0x80 @@ -6911,8 +6867,8 @@ FUN_0203E744: ; 0x0203E744 pop {r3-r5, pc} .balign 4 - thumb_func_start FUN_0203E774 -FUN_0203E774: ; 0x0203E774 + thumb_func_start ScrCmd_Unk0218 +ScrCmd_Unk0218: ; 0x0203E774 push {r3-r7, lr} add r4, r0, #0x0 add r0, #0x80 @@ -6972,8 +6928,8 @@ _0203E7E8: .balign 4 _0203E7EC: .word 0x000001ED - thumb_func_start FUN_0203E7F0 -FUN_0203E7F0: ; 0x0203E7F0 + thumb_func_start ScrCmd_Unk0219 +ScrCmd_Unk0219: ; 0x0203E7F0 push {r3-r5, lr} add r5, r0, #0x0 bl ScriptReadHalfword @@ -6993,8 +6949,8 @@ FUN_0203E7F0: ; 0x0203E7F0 pop {r3-r5, pc} .balign 4 - thumb_func_start FUN_0203E81C -FUN_0203E81C: ; 0x0203E81C + thumb_func_start ScrCmd_Unk021A +ScrCmd_Unk021A: ; 0x0203E81C push {r3-r5, lr} add r5, r0, #0x0 bl ScriptReadHalfword @@ -7014,8 +6970,8 @@ FUN_0203E81C: ; 0x0203E81C pop {r3-r5, pc} .balign 4 - thumb_func_start FUN_0203E848 -FUN_0203E848: ; 0x0203E848 + thumb_func_start ScrCmd_Unk021B +ScrCmd_Unk021B: ; 0x0203E848 push {r3, lr} add r0, #0x80 ldr r0, [r0, #0x0] @@ -7024,8 +6980,8 @@ FUN_0203E848: ; 0x0203E848 mov r0, #0x0 pop {r3, pc} - thumb_func_start FUN_0203E858 -FUN_0203E858: ; 0x0203E858 + thumb_func_start ScrCmd_Unk021C +ScrCmd_Unk021C: ; 0x0203E858 push {r3, lr} ldr r2, [r0, #0x8] add r1, r2, #0x1 @@ -7038,8 +6994,8 @@ FUN_0203E858: ; 0x0203E858 mov r0, #0x0 pop {r3, pc} - thumb_func_start FUN_0203E870 -FUN_0203E870: ; 0x0203E870 + thumb_func_start ScrCmd_Unk0226 +ScrCmd_Unk0226: ; 0x0203E870 push {r3-r5, lr} add r5, r0, #0x0 add r0, #0x80 @@ -7057,8 +7013,8 @@ FUN_0203E870: ; 0x0203E870 mov r0, #0x0 pop {r3-r5, pc} - thumb_func_start FUN_0203E894 -FUN_0203E894: ; 0x0203E894 + thumb_func_start ScrCmd_Unk0227 +ScrCmd_Unk0227: ; 0x0203E894 push {r3-r5, lr} add r5, r0, #0x0 add r0, #0x80 @@ -7080,8 +7036,8 @@ FUN_0203E894: ; 0x0203E894 pop {r3-r5, pc} .balign 4 - thumb_func_start FUN_0203E8C4 -FUN_0203E8C4: ; 0x0203E8C4 + thumb_func_start ScrCmd_Unk0228 +ScrCmd_Unk0228: ; 0x0203E8C4 push {r3-r5, lr} add r5, r0, #0x0 add r0, #0x80 @@ -7103,8 +7059,8 @@ FUN_0203E8C4: ; 0x0203E8C4 pop {r3-r5, pc} .balign 4 - thumb_func_start FUN_0203E8F4 -FUN_0203E8F4: ; 0x0203E8F4 + thumb_func_start ScrCmd_Unk0229 +ScrCmd_Unk0229: ; 0x0203E8F4 push {r3-r5, lr} add r5, r0, #0x0 add r0, #0x80 @@ -7128,8 +7084,8 @@ FUN_0203E8F4: ; 0x0203E8F4 pop {r3-r5, pc} .balign 4 - thumb_func_start FUN_0203E928 -FUN_0203E928: ; 0x0203E928 + thumb_func_start ScrCmd_Unk022A +ScrCmd_Unk022A: ; 0x0203E928 push {r3, lr} add r0, #0x80 ldr r0, [r0, #0x0] @@ -7141,8 +7097,8 @@ FUN_0203E928: ; 0x0203E928 pop {r3, pc} .balign 4 - thumb_func_start FUN_0203E940 -FUN_0203E940: ; 0x0203E940 + thumb_func_start ScrCmd_Unk022B +ScrCmd_Unk022B: ; 0x0203E940 push {r3, lr} add r0, #0x80 ldr r0, [r0, #0x0] @@ -7152,8 +7108,8 @@ FUN_0203E940: ; 0x0203E940 mov r0, #0x0 pop {r3, pc} - thumb_func_start FUN_0203E954 -FUN_0203E954: ; 0x0203E954 + thumb_func_start ScrCmd_Unk022C +ScrCmd_Unk022C: ; 0x0203E954 push {r3, lr} add r0, #0x80 ldr r0, [r0, #0x0] @@ -7163,8 +7119,8 @@ FUN_0203E954: ; 0x0203E954 mov r0, #0x0 pop {r3, pc} - thumb_func_start FUN_0203E968 -FUN_0203E968: ; 0x0203E968 + thumb_func_start ScrCmd_Unk022D +ScrCmd_Unk022D: ; 0x0203E968 push {r4-r6, lr} add r5, r0, #0x0 ldr r2, [r5, #0x8] @@ -7205,13 +7161,13 @@ _0203E9AE: strh r0, [r6, #0x0] b _0203E9C8 _0203E9C4: - bl ErrorHandling + bl GF_AssertFail _0203E9C8: mov r0, #0x0 pop {r4-r6, pc} - thumb_func_start FUN_0203E9CC -FUN_0203E9CC: ; 0x0203E9CC + thumb_func_start ScrCmd_Unk0233 +ScrCmd_Unk0233: ; 0x0203E9CC push {r4-r7, lr} sub sp, #0xc add r5, r0, #0x0 @@ -7279,8 +7235,8 @@ FUN_0203E9CC: ; 0x0203E9CC pop {r4-r7, pc} .balign 4 - thumb_func_start FUN_0203EA68 -FUN_0203EA68: ; 0x0203EA68 + thumb_func_start ScrCmd_Unk0234 +ScrCmd_Unk0234: ; 0x0203EA68 push {r4, lr} sub sp, #0x10 add r4, r0, #0x0 @@ -7299,8 +7255,8 @@ FUN_0203EA68: ; 0x0203EA68 pop {r4, pc} .balign 4 - thumb_func_start FUN_0203EA90 -FUN_0203EA90: ; 0x0203EA90 + thumb_func_start ScrCmd_Unk0239 +ScrCmd_Unk0239: ; 0x0203EA90 push {r4, lr} add r4, r0, #0x0 bl ScriptReadHalfword @@ -7315,8 +7271,8 @@ FUN_0203EA90: ; 0x0203EA90 mov r0, #0x1 pop {r4, pc} - thumb_func_start FUN_0203EAB0 -FUN_0203EAB0: ; 0x0203EAB0 + thumb_func_start ScrCmd_Unk023A +ScrCmd_Unk023A: ; 0x0203EAB0 push {r3-r7, lr} add r5, r0, #0x0 bl ScriptReadHalfword @@ -7363,8 +7319,8 @@ FUN_0203EAB0: ; 0x0203EAB0 pop {r3-r7, pc} .balign 4 - thumb_func_start FUN_0203EB20 -FUN_0203EB20: ; 0x0203EB20 + thumb_func_start ScrCmd_Unk023B +ScrCmd_Unk023B: ; 0x0203EB20 push {r4, lr} add r4, r0, #0x0 bl ScriptReadHalfword @@ -7383,8 +7339,8 @@ FUN_0203EB20: ; 0x0203EB20 pop {r4, pc} .balign 4 - thumb_func_start FUN_0203EB48 -FUN_0203EB48: ; 0x0203EB48 + thumb_func_start ScrCmd_Unk023C +ScrCmd_Unk023C: ; 0x0203EB48 push {r3-r5, lr} add r5, r0, #0x0 bl ScriptReadHalfword @@ -7413,8 +7369,8 @@ FUN_0203EB48: ; 0x0203EB48 pop {r3-r5, pc} .balign 4 - thumb_func_start FUN_0203EB88 -FUN_0203EB88: ; 0x0203EB88 + thumb_func_start ScrCmd_Unk023D +ScrCmd_Unk023D: ; 0x0203EB88 push {r4-r7, lr} sub sp, #0xc add r5, r0, #0x0 @@ -7444,8 +7400,8 @@ FUN_0203EB88: ; 0x0203EB88 add sp, #0xc pop {r4-r7, pc} - thumb_func_start ScrCmd_gameversion -ScrCmd_gameversion: ; 0x0203EBC8 + thumb_func_start ScrCmd_GameVersion +ScrCmd_GameVersion: ; 0x0203EBC8 push {r4, lr} add r4, r0, #0x0 bl ScriptReadHalfword @@ -7459,8 +7415,8 @@ ScrCmd_gameversion: ; 0x0203EBC8 pop {r4, pc} .balign 4 - thumb_func_start ScrCmd_givewallpaper -ScrCmd_givewallpaper: ; 0x0203EBE4 + thumb_func_start ScrCmd_GiveWallpaper +ScrCmd_GiveWallpaper: ; 0x0203EBE4 push {r3-r7, lr} sub sp, #0x10 add r5, r0, #0x0 @@ -7550,8 +7506,8 @@ _0203ECA2: pop {r3-r7, pc} .balign 4 - thumb_func_start FUN_0203ECAC -FUN_0203ECAC: ; 0x0203ECAC + thumb_func_start ScrCmd_Unk024A +ScrCmd_Unk024A: ; 0x0203ECAC push {r3-r5, lr} add r5, r0, #0x0 add r1, r5, #0x0 @@ -7571,8 +7527,8 @@ FUN_0203ECAC: ; 0x0203ECAC mov r0, #0x0 pop {r3-r5, pc} - thumb_func_start FUN_0203ECD8 -FUN_0203ECD8: ; 0x0203ECD8 + thumb_func_start ScrCmd_Unk024B +ScrCmd_Unk024B: ; 0x0203ECD8 push {r3, lr} add r1, r0, #0x0 add r1, #0x80 @@ -7587,8 +7543,8 @@ FUN_0203ECD8: ; 0x0203ECD8 pop {r3, pc} .balign 4 - thumb_func_start FUN_0203ECF4 -FUN_0203ECF4: ; 0x0203ECF4 + thumb_func_start ScrCmd_Unk024C +ScrCmd_Unk024C: ; 0x0203ECF4 push {r3, lr} add r1, r0, #0x0 add r1, #0x80 @@ -7603,8 +7559,8 @@ FUN_0203ECF4: ; 0x0203ECF4 pop {r3, pc} .balign 4 - thumb_func_start FUN_0203ED10 -FUN_0203ED10: ; 0x0203ED10 + thumb_func_start ScrCmd_Unk024D +ScrCmd_Unk024D: ; 0x0203ED10 push {r3, lr} add r1, r0, #0x0 add r1, #0x80 @@ -7650,8 +7606,8 @@ FUN_0203ED2C: ; 0x0203ED2C pop {r4-r6, pc} .balign 4 - thumb_func_start ScrCmd_pcfreespace -ScrCmd_pcfreespace: ; 0x0203ED70 + thumb_func_start ScrCmd_PCFreeSpace +ScrCmd_PCFreeSpace: ; 0x0203ED70 push {r3-r5, lr} add r5, r0, #0x0 bl ScriptReadHalfword @@ -7675,8 +7631,8 @@ ScrCmd_pcfreespace: ; 0x0203ED70 mov r0, #0x0 pop {r3-r5, pc} - thumb_func_start FUN_0203EDA4 -FUN_0203EDA4: ; 0x0203EDA4 + thumb_func_start ScrCmd_Unk0258 +ScrCmd_Unk0258: ; 0x0203EDA4 push {r3-r5, lr} add r5, r0, #0x0 add r0, #0x80 @@ -7694,8 +7650,8 @@ FUN_0203EDA4: ; 0x0203EDA4 pop {r3-r5, pc} .balign 4 - thumb_func_start FUN_0203EDC8 -FUN_0203EDC8: ; 0x0203EDC8 + thumb_func_start ScrCmd_Unk0259 +ScrCmd_Unk0259: ; 0x0203EDC8 push {r3, lr} add r0, #0x80 ldr r0, [r0, #0x0] @@ -7707,8 +7663,8 @@ FUN_0203EDC8: ; 0x0203EDC8 pop {r3, pc} .balign 4 - thumb_func_start FUN_0203EDE0 -FUN_0203EDE0: ; 0x0203EDE0 + thumb_func_start ScrCmd_Unk025A +ScrCmd_Unk025A: ; 0x0203EDE0 push {r4, lr} add r4, r0, #0x0 bl ScriptReadHalfword @@ -7727,8 +7683,8 @@ FUN_0203EDE0: ; 0x0203EDE0 pop {r4, pc} .balign 4 - thumb_func_start FUN_0203EE08 -FUN_0203EE08: ; 0x0203EE08 + thumb_func_start ScrCmd_Unk025B +ScrCmd_Unk025B: ; 0x0203EE08 push {r3, lr} add r0, #0x80 ldr r0, [r0, #0x0] @@ -7737,8 +7693,8 @@ FUN_0203EE08: ; 0x0203EE08 pop {r3, pc} .balign 4 - thumb_func_start FUN_0203EE18 -FUN_0203EE18: ; 0x0203EE18 + thumb_func_start ScrCmd_Unk025C +ScrCmd_Unk025C: ; 0x0203EE18 push {r3, lr} add r0, #0x80 ldr r0, [r0, #0x0] @@ -7747,8 +7703,8 @@ FUN_0203EE18: ; 0x0203EE18 pop {r3, pc} .balign 4 - thumb_func_start FUN_0203EE28 -FUN_0203EE28: ; 0x0203EE28 + thumb_func_start ScrCmd_Unk025D +ScrCmd_Unk025D: ; 0x0203EE28 push {r3-r5, lr} add r5, r0, #0x0 bl ScriptReadHalfword @@ -7773,8 +7729,8 @@ _0203EE50: pop {r3-r5, pc} .balign 4 - thumb_func_start FUN_0203EE58 -FUN_0203EE58: ; 0x0203EE58 + thumb_func_start ScrCmd_Unk025E +ScrCmd_Unk025E: ; 0x0203EE58 push {r3, lr} add r0, #0x80 ldr r0, [r0, #0x0] @@ -7783,8 +7739,8 @@ FUN_0203EE58: ; 0x0203EE58 pop {r3, pc} .balign 4 - thumb_func_start FUN_0203EE68 -FUN_0203EE68: ; 0x0203EE68 + thumb_func_start ScrCmd_Unk025F +ScrCmd_Unk025F: ; 0x0203EE68 push {r3, lr} add r0, #0x80 ldr r0, [r0, #0x0] @@ -7793,8 +7749,8 @@ FUN_0203EE68: ; 0x0203EE68 pop {r3, pc} .balign 4 - thumb_func_start FUN_0203EE78 -FUN_0203EE78: ; 0x0203EE78 + thumb_func_start ScrCmd_Unk0260 +ScrCmd_Unk0260: ; 0x0203EE78 push {r3-r5, lr} add r5, r0, #0x0 bl ScriptReadHalfword @@ -7809,8 +7765,8 @@ FUN_0203EE78: ; 0x0203EE78 pop {r3-r5, pc} .balign 4 - thumb_func_start FUN_0203EE98 -FUN_0203EE98: ; 0x0203EE98 + thumb_func_start ScrCmd_Unk0262 +ScrCmd_Unk0262: ; 0x0203EE98 push {r4-r6, lr} add r5, r0, #0x0 bl ScriptReadHalfword @@ -7838,8 +7794,8 @@ FUN_0203EE98: ; 0x0203EE98 mov r0, #0x1 pop {r4-r6, pc} - thumb_func_start FUN_0203EED8 -FUN_0203EED8: ; 0x0203EED8 + thumb_func_start ScrCmd_Unk0263 +ScrCmd_Unk0263: ; 0x0203EED8 push {r3-r7, lr} sub sp, #0x8 add r4, r0, #0x0 @@ -7898,8 +7854,8 @@ _0203EF4E: .balign 4 _0203EF54: .word 0x00000182 - thumb_func_start FUN_0203EF58 -FUN_0203EF58: ; 0x0203EF58 + thumb_func_start ScrCmd_Unk0264 +ScrCmd_Unk0264: ; 0x0203EF58 push {r3-r7, lr} sub sp, #0x30 add r4, r0, #0x0 @@ -7990,8 +7946,8 @@ _0203EFFC: .balign 4 _0203F008: .word UNK_020F34FC - thumb_func_start FUN_0203F00C -FUN_0203F00C: ; 0x0203F00C + thumb_func_start ScrCmd_Unk0265 +ScrCmd_Unk0265: ; 0x0203F00C push {r3, lr} add r0, #0x80 ldr r0, [r0, #0x0] @@ -8001,8 +7957,8 @@ FUN_0203F00C: ; 0x0203F00C mov r0, #0x0 pop {r3, pc} - thumb_func_start FUN_0203F020 -FUN_0203F020: ; 0x0203F020 + thumb_func_start ScrCmd_Unk0266 +ScrCmd_Unk0266: ; 0x0203F020 push {r3, lr} add r0, #0x80 ldr r0, [r0, #0x0] @@ -8012,8 +7968,8 @@ FUN_0203F020: ; 0x0203F020 mov r0, #0x0 pop {r3, pc} - thumb_func_start FUN_0203F034 -FUN_0203F034: ; 0x0203F034 + thumb_func_start ScrCmd_Unk0267 +ScrCmd_Unk0267: ; 0x0203F034 push {r4, lr} add r4, r0, #0x0 bl ScriptReadHalfword @@ -8030,8 +7986,8 @@ FUN_0203F034: ; 0x0203F034 mov r0, #0x1 pop {r4, pc} - thumb_func_start FUN_0203F058 -FUN_0203F058: ; 0x0203F058 + thumb_func_start ScrCmd_Unk0268 +ScrCmd_Unk0268: ; 0x0203F058 push {r3-r5, lr} add r4, r0, #0x0 bl ScriptReadHalfword @@ -8048,8 +8004,8 @@ FUN_0203F058: ; 0x0203F058 mov r0, #0x0 pop {r3-r5, pc} - thumb_func_start FUN_0203F07C -FUN_0203F07C: ; 0x0203F07C + thumb_func_start ScrCmd_Unk0269 +ScrCmd_Unk0269: ; 0x0203F07C push {r3-r7, lr} sub sp, #0x10 add r5, r0, #0x0 @@ -8100,7 +8056,7 @@ FUN_0203F07C: ; 0x0203F07C bl FUN_02058060 add r7, r0, #0x0 bne _0203F0FA - bl ErrorHandling + bl GF_AssertFail _0203F0FA: str r6, [sp, #0x0] str r4, [sp, #0x4] @@ -8113,8 +8069,8 @@ _0203F0FA: add sp, #0x10 pop {r3-r7, pc} - thumb_func_start FUN_0203F110 -FUN_0203F110: ; 0x0203F110 + thumb_func_start ScrCmd_Unk026A +ScrCmd_Unk026A: ; 0x0203F110 push {r3-r7, lr} add r4, r0, #0x0 bl ScriptReadHalfword @@ -8148,7 +8104,7 @@ FUN_0203F110: ; 0x0203F110 bl FUN_02058060 add r5, r0, #0x0 bne _0203F164 - bl ErrorHandling + bl GF_AssertFail _0203F164: ldr r0, [r4, #0x74] add r1, r5, #0x0 @@ -8158,8 +8114,8 @@ _0203F164: mov r0, #0x1 pop {r3-r7, pc} - thumb_func_start FUN_0203F174 -FUN_0203F174: ; 0x0203F174 + thumb_func_start ScrCmd_Unk026B +ScrCmd_Unk026B: ; 0x0203F174 push {r3-r5, lr} add r5, r0, #0x0 bl ScriptReadHalfword @@ -8178,8 +8134,8 @@ FUN_0203F174: ; 0x0203F174 pop {r3-r5, pc} .balign 4 - thumb_func_start FUN_0203F19C -FUN_0203F19C: ; 0x0203F19C + thumb_func_start ScrCmd_Unk026C +ScrCmd_Unk026C: ; 0x0203F19C push {r4-r7, lr} sub sp, #0x24 add r4, r0, #0x0 @@ -8244,7 +8200,7 @@ _0203F212: _0203F21A: cmp r4, #0x10 blt _0203F222 - bl ErrorHandling + bl GF_AssertFail _0203F222: ldr r0, [sp, #0x0] add r4, #0x22 @@ -8255,8 +8211,8 @@ _0203F222: nop _0203F230: .word 0x0000FFFF - thumb_func_start FUN_0203F234 -FUN_0203F234: ; 0x0203F234 + thumb_func_start ScrCmd_Unk026E +ScrCmd_Unk026E: ; 0x0203F234 push {r4, lr} add r4, r0, #0x0 bl ScriptReadHalfword @@ -8272,8 +8228,8 @@ FUN_0203F234: ; 0x0203F234 .balign 4 _0203F250: .word gMain + 0x60 - thumb_func_start FUN_0203F254 -FUN_0203F254: ; 0x0203F254 + thumb_func_start ScrCmd_Unk026F +ScrCmd_Unk026F: ; 0x0203F254 push {r3, lr} add r0, #0x80 ldr r0, [r0, #0x0] @@ -8285,8 +8241,8 @@ FUN_0203F254: ; 0x0203F254 pop {r3, pc} .balign 4 - thumb_func_start FUN_0203F26C -FUN_0203F26C: ; 0x0203F26C + thumb_func_start ScrCmd_Unk0270 +ScrCmd_Unk0270: ; 0x0203F26C push {r4-r6, lr} add r5, r0, #0x0 bl ScriptReadHalfword @@ -8317,8 +8273,8 @@ _0203F2A6: pop {r4-r6, pc} .balign 4 - thumb_func_start FUN_0203F2AC -FUN_0203F2AC: ; 0x0203F2AC + thumb_func_start ScrCmd_Unk0273 +ScrCmd_Unk0273: ; 0x0203F2AC push {r4-r6, lr} add r5, r0, #0x0 add r0, #0x80 @@ -8344,8 +8300,8 @@ FUN_0203F2AC: ; 0x0203F2AC pop {r4-r6, pc} .balign 4 - thumb_func_start FUN_0203F2E4 -FUN_0203F2E4: ; 0x0203F2E4 + thumb_func_start ScrCmd_Unk0275 +ScrCmd_Unk0275: ; 0x0203F2E4 push {r3-r5, lr} add r4, r0, #0x0 add r0, #0x80 @@ -8373,8 +8329,8 @@ _0203F316: mov r0, #0x0 pop {r3-r5, pc} - thumb_func_start FUN_0203F31C -FUN_0203F31C: ; 0x0203F31C + thumb_func_start ScrCmd_Unk0277 +ScrCmd_Unk0277: ; 0x0203F31C push {r3-r5, lr} add r5, r0, #0x0 bl ScriptReadHalfword @@ -8394,8 +8350,8 @@ FUN_0203F31C: ; 0x0203F31C pop {r3-r5, pc} .balign 4 - thumb_func_start FUN_0203F348 -FUN_0203F348: ; 0x0203F348 + thumb_func_start ScrCmd_Unk0279 +ScrCmd_Unk0279: ; 0x0203F348 push {r4-r6, lr} add r5, r0, #0x0 bl ScriptReadHalfword @@ -8424,8 +8380,8 @@ FUN_0203F348: ; 0x0203F348 mov r0, #0x0 pop {r4-r6, pc} - thumb_func_start FUN_0203F38C -FUN_0203F38C: ; 0x0203F38C + thumb_func_start ScrCmd_Unk027A +ScrCmd_Unk027A: ; 0x0203F38C push {r3, lr} add r0, #0x80 ldr r0, [r0, #0x0] @@ -8434,8 +8390,8 @@ FUN_0203F38C: ; 0x0203F38C pop {r3, pc} .balign 4 - thumb_func_start FUN_0203F39C -FUN_0203F39C: ; 0x0203F39C + thumb_func_start ScrCmd_Unk027B +ScrCmd_Unk027B: ; 0x0203F39C push {r3, lr} add r0, #0x80 ldr r0, [r0, #0x0] @@ -8444,8 +8400,8 @@ FUN_0203F39C: ; 0x0203F39C mov r0, #0x0 pop {r3, pc} - thumb_func_start FUN_0203F3AC -FUN_0203F3AC: ; 0x0203F3AC + thumb_func_start ScrCmd_Unk027D +ScrCmd_Unk027D: ; 0x0203F3AC push {r3-r7, lr} add r5, r0, #0x0 bl ScriptReadHalfword @@ -8492,8 +8448,8 @@ _0203F3FE: nop _0203F414: .word 0x0000FFFF - thumb_func_start FUN_0203F418 -FUN_0203F418: ; 0x0203F418 + thumb_func_start ScrCmd_Unk027F +ScrCmd_Unk027F: ; 0x0203F418 push {r3-r5, lr} add r5, r0, #0x0 bl ScriptReadHalfword @@ -8519,8 +8475,8 @@ _0203F446: mov r0, #0x0 pop {r3-r5, pc} - thumb_func_start FUN_0203F44C -FUN_0203F44C: ; 0x0203F44C + thumb_func_start ScrCmd_Unk027E +ScrCmd_Unk027E: ; 0x0203F44C push {r3-r5, lr} add r4, r0, #0x0 add r0, #0x80 @@ -8548,8 +8504,8 @@ _0203F47E: mov r0, #0x0 pop {r3-r5, pc} - thumb_func_start FUN_0203F484 -FUN_0203F484: ; 0x0203F484 + thumb_func_start ScrCmd_Unk0282 +ScrCmd_Unk0282: ; 0x0203F484 push {r3-r7, lr} add r5, r0, #0x0 bl ScriptReadHalfword @@ -8588,8 +8544,8 @@ _0203F4D2: pop {r3-r7, pc} .balign 4 - thumb_func_start FUN_0203F4D8 -FUN_0203F4D8: ; 0x0203F4D8 + thumb_func_start ScrCmd_Unk0284 +ScrCmd_Unk0284: ; 0x0203F4D8 push {r3-r5, lr} add r5, r0, #0x0 add r0, #0x80 @@ -8611,8 +8567,8 @@ FUN_0203F4D8: ; 0x0203F4D8 pop {r3-r5, pc} .balign 4 - thumb_func_start FUN_0203F508 -FUN_0203F508: ; 0x0203F508 + thumb_func_start ScrCmd_Unk0285 +ScrCmd_Unk0285: ; 0x0203F508 push {r3-r7, lr} add r6, r0, #0x0 bl ScriptReadHalfword @@ -8715,8 +8671,8 @@ _0203F5C8: .word 0x0000010E _0203F5CC: .word 0x0000010D _0203F5D0: .word UNK_020F3538 - thumb_func_start FUN_0203F5D4 -FUN_0203F5D4: ; 0x0203F5D4 + thumb_func_start ScrCmd_Unk0286 +ScrCmd_Unk0286: ; 0x0203F5D4 push {r3-r5, lr} add r5, r0, #0x0 add r0, #0x80 @@ -8738,8 +8694,8 @@ FUN_0203F5D4: ; 0x0203F5D4 pop {r3-r5, pc} .balign 4 - thumb_func_start FUN_0203F604 -FUN_0203F604: ; 0x0203F604 + thumb_func_start ScrCmd_Unk0287 +ScrCmd_Unk0287: ; 0x0203F604 push {r3-r5, lr} add r5, r0, #0x0 add r0, #0x80 @@ -8761,8 +8717,8 @@ FUN_0203F604: ; 0x0203F604 pop {r3-r5, pc} .balign 4 - thumb_func_start FUN_0203F634 -FUN_0203F634: ; 0x0203F634 + thumb_func_start ScrCmd_Unk0288 +ScrCmd_Unk0288: ; 0x0203F634 push {r3-r5, lr} add r5, r0, #0x0 add r0, #0x80 @@ -8784,8 +8740,8 @@ FUN_0203F634: ; 0x0203F634 pop {r3-r5, pc} .balign 4 - thumb_func_start FUN_0203F664 -FUN_0203F664: ; 0x0203F664 + thumb_func_start ScrCmd_Unk0289 +ScrCmd_Unk0289: ; 0x0203F664 push {r3-r7, lr} sub sp, #0x8 add r5, r0, #0x0 @@ -8847,8 +8803,8 @@ _0203F6DA: .balign 4 _0203F6E0: .word 0x0000FFFF - thumb_func_start FUN_0203F6E4 -FUN_0203F6E4: ; 0x0203F6E4 + thumb_func_start ScrCmd_Unk028A +ScrCmd_Unk028A: ; 0x0203F6E4 push {r3-r5, lr} add r5, r0, #0x0 bl ScriptReadHalfword @@ -8877,8 +8833,8 @@ _0203F714: nop _0203F71C: .word 0x0000FFFF - thumb_func_start FUN_0203F720 -FUN_0203F720: ; 0x0203F720 + thumb_func_start ScrCmd_Unk028B +ScrCmd_Unk028B: ; 0x0203F720 push {r4-r6, lr} add r5, r0, #0x0 ldr r2, [r5, #0x8] @@ -8899,7 +8855,7 @@ FUN_0203F720: ; 0x0203F720 add r5, r0, #0x0 cmp r4, #0x3 bls _0203F752 - bl ErrorHandling + bl GF_AssertFail _0203F752: add r0, r5, #0x0 add r1, r4, #0x0 @@ -8908,8 +8864,8 @@ _0203F752: mov r0, #0x0 pop {r4-r6, pc} - thumb_func_start FUN_0203F760 -FUN_0203F760: ; 0x0203F760 + thumb_func_start ScrCmd_Unk028F +ScrCmd_Unk028F: ; 0x0203F760 push {r3-r5, lr} add r4, r0, #0x0 bl ScriptReadHalfword @@ -8959,8 +8915,8 @@ _0203F7BE: pop {r3-r5, pc} .balign 4 - thumb_func_start FUN_0203F7C8 -FUN_0203F7C8: ; 0x0203F7C8 + thumb_func_start ScrCmd_Unk0290 +ScrCmd_Unk0290: ; 0x0203F7C8 push {r4-r6, lr} add r5, r0, #0x0 bl ScriptReadHalfword @@ -8991,8 +8947,8 @@ FUN_0203F7C8: ; 0x0203F7C8 .balign 4 _0203F808: .word FUN_0203BC04 - thumb_func_start FUN_0203F80C -FUN_0203F80C: ; 0x0203F80C + thumb_func_start ScrCmd_Unk0291 +ScrCmd_Unk0291: ; 0x0203F80C push {r4-r6, lr} add r4, r0, #0x0 bl ScriptReadHalfword @@ -9018,7 +8974,7 @@ FUN_0203F80C: ; 0x0203F80C ldr r0, [r4, #0x0] cmp r0, #0x0 bne _0203F84C - bl ErrorHandling + bl GF_AssertFail _0203F84C: ldr r0, [r4, #0x0] bl FUN_02037A40 @@ -9047,8 +9003,8 @@ _0203F872: str r0, [r4, #0x0] pop {r4-r6, pc} - thumb_func_start FUN_0203F880 -FUN_0203F880: ; 0x0203F880 + thumb_func_start ScrCmd_Unk0292 +ScrCmd_Unk0292: ; 0x0203F880 push {r3-r5, lr} add r5, r0, #0x0 ldr r2, [r5, #0x8] @@ -9081,8 +9037,8 @@ _0203F8BA: mov r0, #0x0 pop {r3-r5, pc} - thumb_func_start FUN_0203F8C0 -FUN_0203F8C0: ; 0x0203F8C0 + thumb_func_start ScrCmd_Unk029E +ScrCmd_Unk029E: ; 0x0203F8C0 push {r3-r5, lr} add r5, r0, #0x0 bl ScriptReadHalfword @@ -9125,14 +9081,14 @@ _0203F910: bl MOD06_0224F12C b _0203F91E _0203F91A: - bl ErrorHandling + bl GF_AssertFail _0203F91E: mov r0, #0x1 pop {r3-r5, pc} .balign 4 - thumb_func_start FUN_0203F924 -FUN_0203F924: ; 0x0203F924 + thumb_func_start ScrCmd_Unk0293 +ScrCmd_Unk0293: ; 0x0203F924 push {r3-r5, lr} add r5, r0, #0x0 add r0, #0x80 @@ -9154,8 +9110,8 @@ FUN_0203F924: ; 0x0203F924 pop {r3-r5, pc} .balign 4 - thumb_func_start FUN_0203F954 -FUN_0203F954: ; 0x0203F954 + thumb_func_start ScrCmd_Unk029F +ScrCmd_Unk029F: ; 0x0203F954 push {r4, lr} add r4, r0, #0x0 bl ScriptReadHalfword @@ -9181,8 +9137,8 @@ _0203F982: pop {r4, pc} .balign 4 - thumb_func_start FUN_0203F988 -FUN_0203F988: ; 0x0203F988 + thumb_func_start ScrCmd_Unk02A3 +ScrCmd_Unk02A3: ; 0x0203F988 push {r3-r5, lr} add r5, r0, #0x0 bl ScriptReadHalfword @@ -9201,8 +9157,8 @@ FUN_0203F988: ; 0x0203F988 pop {r3-r5, pc} .balign 4 - thumb_func_start FUN_0203F9B0 -FUN_0203F9B0: ; 0x0203F9B0 + thumb_func_start ScrCmd_Unk02A4 +ScrCmd_Unk02A4: ; 0x0203F9B0 push {r3-r5, lr} add r5, r0, #0x0 bl ScriptReadHalfword @@ -9222,8 +9178,8 @@ FUN_0203F9B0: ; 0x0203F9B0 pop {r3-r5, pc} .balign 4 - thumb_func_start FUN_0203F9DC -FUN_0203F9DC: ; 0x0203F9DC + thumb_func_start ScrCmd_Unk02A2 +ScrCmd_Unk02A2: ; 0x0203F9DC push {r3-r5, lr} add r5, r0, #0x0 bl ScriptReadHalfword @@ -9250,8 +9206,8 @@ _0203FA0C: .balign 4 _0203FA10: .word 0x0000FF79 - thumb_func_start FUN_0203FA14 -FUN_0203FA14: ; 0x0203FA14 + thumb_func_start ScrCmd_Unk02A7 +ScrCmd_Unk02A7: ; 0x0203FA14 push {r3-r5, lr} add r5, r0, #0x0 bl ScriptReadHalfword @@ -9283,8 +9239,8 @@ _0203FA4E: nop _0203FA54: .word 0x0000012A - thumb_func_start FUN_0203FA58 -FUN_0203FA58: ; 0x0203FA58 + thumb_func_start ScrCmd_Unk02AA +ScrCmd_Unk02AA: ; 0x0203FA58 push {r3-r7, lr} sub sp, #0x10 add r4, r0, #0x0 @@ -9386,8 +9342,8 @@ _0203FB26: nop _0203FB48: .word 0x00000147 - thumb_func_start FUN_0203FB4C -FUN_0203FB4C: ; 0x0203FB4C + thumb_func_start ScrCmd_Unk02AC +ScrCmd_Unk02AC: ; 0x0203FB4C push {r3, lr} add r0, #0x80 ldr r0, [r0, #0x0] @@ -9399,8 +9355,8 @@ FUN_0203FB4C: ; 0x0203FB4C pop {r3, pc} .balign 4 - thumb_func_start FUN_0203FB64 -FUN_0203FB64: ; 0x0203FB64 + thumb_func_start ScrCmd_Unk02AF +ScrCmd_Unk02AF: ; 0x0203FB64 push {r3-r5, lr} add r5, r0, #0x0 add r1, r5, #0x0 @@ -9422,24 +9378,24 @@ FUN_0203FB64: ; 0x0203FB64 pop {r3-r5, pc} .balign 4 - thumb_func_start FUN_0203FB94 -FUN_0203FB94: ; 0x0203FB94 + thumb_func_start ScrCmd_Unk02B0 +ScrCmd_Unk02B0: ; 0x0203FB94 push {r3, lr} bl FUN_02033E74 mov r0, #0x0 pop {r3, pc} .balign 4 - thumb_func_start FUN_0203FBA0 -FUN_0203FBA0: ; 0x0203FBA0 + thumb_func_start ScrCmd_Unk02B1 +ScrCmd_Unk02B1: ; 0x0203FBA0 push {r3, lr} bl FUN_02033ED0 mov r0, #0x0 pop {r3, pc} .balign 4 - thumb_func_start FUN_0203FBAC -FUN_0203FBAC: ; 0x0203FBAC + thumb_func_start ScrCmd_Unk02B2 +ScrCmd_Unk02B2: ; 0x0203FBAC push {r3, lr} add r0, #0x80 ldr r0, [r0, #0x0] @@ -9448,8 +9404,8 @@ FUN_0203FBAC: ; 0x0203FBAC pop {r3, pc} .balign 4 - thumb_func_start FUN_0203FBBC -FUN_0203FBBC: ; 0x0203FBBC + thumb_func_start ScrCmd_Unk02B5 +ScrCmd_Unk02B5: ; 0x0203FBBC push {r3-r7, lr} add r5, r0, #0x0 bl ScriptReadHalfword @@ -9491,8 +9447,8 @@ FUN_0203FBBC: ; 0x0203FBBC mov r0, #0x0 pop {r3-r7, pc} - thumb_func_start FUN_0203FC1C -FUN_0203FC1C: ; 0x0203FC1C + thumb_func_start ScrCmd_Unk02B6 +ScrCmd_Unk02B6: ; 0x0203FC1C push {r3-r5, lr} add r5, r0, #0x0 bl ScriptReadHalfword @@ -9512,7 +9468,7 @@ FUN_0203FC1C: ; 0x0203FC1C bl FUN_02058060 add r5, r0, #0x0 bne _0203FC4C - bl ErrorHandling + bl GF_AssertFail _0203FC4C: add r0, r5, #0x0 add r1, r4, #0x0 @@ -9520,8 +9476,8 @@ _0203FC4C: mov r0, #0x0 pop {r3-r5, pc} - thumb_func_start FUN_0203FC58 -FUN_0203FC58: ; 0x0203FC58 + thumb_func_start ScrCmd_Unk02BE +ScrCmd_Unk02BE: ; 0x0203FC58 push {r3-r5, lr} add r5, r0, #0x0 add r1, r5, #0x0 @@ -9540,8 +9496,8 @@ FUN_0203FC58: ; 0x0203FC58 pop {r3-r5, pc} .balign 4 - thumb_func_start FUN_0203FC80 -FUN_0203FC80: ; 0x0203FC80 + thumb_func_start ScrCmd_Unk02C1 +ScrCmd_Unk02C1: ; 0x0203FC80 push {r3-r5, lr} add r0, #0x80 ldr r5, [r0, #0x0] @@ -9564,8 +9520,8 @@ _0203FCAA: pop {r3-r5, pc} .balign 4 - thumb_func_start FUN_0203FCB0 -FUN_0203FCB0: ; 0x0203FCB0 + thumb_func_start ScrCmd_Unk02C2 +ScrCmd_Unk02C2: ; 0x0203FCB0 push {r3-r5, lr} add r0, #0x80 ldr r5, [r0, #0x0] @@ -9586,8 +9542,8 @@ _0203FCD6: pop {r3-r5, pc} .balign 4 - thumb_func_start FUN_0203FCDC -FUN_0203FCDC: ; 0x0203FCDC + thumb_func_start ScrCmd_Unk02C3 +ScrCmd_Unk02C3: ; 0x0203FCDC push {r3, lr} ldr r2, [r0, #0x8] add r1, r2, #0x1 diff --git a/arm9/asm/sndlib.s b/arm9/asm/sndlib.s deleted file mode 100644 index 840e72d3..00000000 --- a/arm9/asm/sndlib.s +++ /dev/null @@ -1,4758 +0,0 @@ - ; Compiled with MWCCARM 1.2 sp3 - - .include "asm/macros.inc" - .include "global.inc" - - .extern SNDi_DecibelTable - - .bss - - .global UNK_021D1C8C -UNK_021D1C8C: ; 0x021D1C8C - .space 0x4 - - .global UNK_021D1C90 -UNK_021D1C90: ; 0x021D1C90 - .space 0x4 - - .global UNK_021D1C94 -UNK_021D1C94: ; 0x021D1C94 - .space 0x4 - - .global UNK_021D1C98 -UNK_021D1C98: ; 0x021D1C98 - .space 0xc - - .global UNK_021D1CA4 -UNK_021D1CA4: ; 0x021D1CA4 - .space 0xc - - .global UNK_021D1CB0 -UNK_021D1CB0: ; 0x021D1CB0 - .space 0x4 - - .global UNK_021D1CB4 -UNK_021D1CB4: ; 0x021D1CB4 - .space 0x4 - - .global UNK_021D1CB8 -UNK_021D1CB8: ; 0x021D1CB8 - .space 0x4 - - .global UNK_021D1CBC -UNK_021D1CBC: ; 0x021D1CBC - .space 0x140 - - .global UNK_021D1DFC -UNK_021D1DFC: ; 0x021D1DFC - .space 0xc - - .global UNK_021D1E08 -UNK_021D1E08: ; 0x021D1E08 - .space 0xc - - .global UNK_021D1E14 -UNK_021D1E14: ; 0x021D1E14 - .space 0x440 - - .global UNK_021D2254 -UNK_021D2254: ; 0x021D2254 - .space 0x8 - - .global UNK_021D225C -UNK_021D225C: ; 0x021D225C - .space 0x10 - - .global UNK_021D226C -UNK_021D226C: ; 0x021D226C - .space 0x4 - - .global UNK_021D2270 -UNK_021D2270: ; 0x021D2270 - .space 0x4 - - .global UNK_021D2274 -UNK_021D2274: ; 0x021D2274 - .space 0x460 - - .global UNK_021D26D4 -UNK_021D26D4: ; 0x021D26D4 - .space 0x4 - - .global UNK_021D26D8 -UNK_021D26D8: ; 0x021D26D8 - .space 0xc - - .global UNK_021D26E4 -UNK_021D26E4: ; 0x021D26E4 - .space 0x40 - - .global UNK_021D2724 -UNK_021D2724: ; 0x021D2724 - .space 0x80 - - .global UNK_021D27A4 -UNK_021D27A4: ; 0x021D27A4 - .space 0x4 - - .global UNK_021D27A8 -UNK_021D27A8: ; 0x021D27A8 - .space 0x4 - - .global UNK_021D27AC -UNK_021D27AC: ; 0x021D27AC - .space 0x20 - - .global UNK_021D27CC -UNK_021D27CC: ; 0x021D27CC - .space 0x54 - - .global UNK_021D2820 -UNK_021D2820: ; 0x021D2820 - .space 0xa0 - - .global UNK_021D28C0 -UNK_021D28C0: ; 0x021D28C0 - .space 0x4 - - .global UNK_021D28C4 -UNK_021D28C4: ; 0x021D28C4 - .space 0x3c - - .global UNK_021D2900 -UNK_021D2900: ; 0x021D2900 - .space 0x4 - - .global UNK_021D2904 -UNK_021D2904: ; 0x021D2904 - .space 0x4d4 - - .global UNK_021D2DD8 -UNK_021D2DD8: ; 0x021D2DD8 - .space 0x18 - - .global UNK_021D2DF0 -UNK_021D2DF0: ; 0x021D2DF0 - .space 0xc - - .global UNK_021D2DFC -UNK_021D2DFC: ; 0x021D2DFC - .space 0x5c0 - - .text - - arm_func_start FUN_020C0130 -FUN_020C0130: ; 0x020C0130 - ldr ip, _020C0138 ; =FUN_020C187C - bx r12 - .balign 4 -_020C0138: .word FUN_020C187C - - arm_func_start FUN_020C013C -FUN_020C013C: ; 0x020C013C - stmdb sp!, {r4,lr} - bl FUN_020C18F8 - mov r0, #0x0 - mov r1, r0 - mov r2, r0 - mov r3, r0 - bl SND_StopTimer - bl SND_GetCurrentCommandTag - mov r4, r0 - mov r0, #0x1 - bl SND_FlushCommand - mov r0, r4 - bl SND_WaitForCommandProc - ldmia sp!, {r4,pc} - - arm_func_start FUN_020C0174 -FUN_020C0174: ; 0x020C0174 - stmdb sp!, {lr} - sub sp, sp, #0x4 - cmp r0, #0x0 - beq _020C0194 - mov r0, #0x40 - bl SND_SetMasterPan - add sp, sp, #0x4 - ldmia sp!, {pc} -_020C0194: - bl SND_ResetMasterPan - add sp, sp, #0x4 - ldmia sp!, {pc} - - arm_func_start FUN_020C01A0 -FUN_020C01A0: ; 0x020C01A0 - stmdb sp!, {r4,lr} - mov r4, #0x0 -_020C01A8: - mov r0, r4 - bl SND_RecvCommandReply - cmp r0, #0x0 - bne _020C01A8 - bl FUN_020C0BA0 - bl FUN_020C1D9C - bl FUN_020C3C88 - mov r0, #0x0 - bl SND_FlushCommand - ldmia sp!, {r4,pc} - - arm_func_start SDAT_Init -SDAT_Init: ; 0x020C01D0 - stmdb sp!, {lr} - sub sp, sp, #0x4 - ldr r0, _020C0254 ; =UNK_021D1C94 - ldr r1, [r0, #0x0] - cmp r1, #0x0 - addne sp, sp, #0x4 - ldmneia sp!, {pc} - mov r1, #0x1 - str r1, [r0, #0x0] - bl SND_Init - ldr ip, _020C0258 ; =FUN_020C013C - ldr r0, _020C025C ; =UNK_021D1C98 - mov r3, #0x0 - ldr r1, _020C0260 ; =UNK_021D1CA4 - ldr r2, _020C0264 ; =FUN_020C0130 - str r12, [r0, #0x0] - str r3, [r0, #0x4] - str r2, [r1, #0x0] - str r3, [r1, #0x4] - bl PM_PrependPreSleepCallback - ldr r0, _020C0260 ; =UNK_021D1CA4 - bl PM_AppendPostSleepCallback - bl FUN_020C0270 - bl FUN_020C1E38 - bl FUN_020C0D20 - ldr r1, _020C0268 ; =UNK_021D1C8C - mvn r3, #0x0 - ldr r0, _020C026C ; =UNK_021D1C90 - mov r2, #0x1 - strb r3, [r1, #0x0] - str r2, [r0, #0x0] - add sp, sp, #0x4 - ldmia sp!, {pc} - .balign 4 -_020C0254: .word UNK_021D1C94 -_020C0258: .word FUN_020C013C -_020C025C: .word UNK_021D1C98 -_020C0260: .word UNK_021D1CA4 -_020C0264: .word FUN_020C0130 -_020C0268: .word UNK_021D1C8C -_020C026C: .word UNK_021D1C90 - - arm_func_start FUN_020C0270 -FUN_020C0270: ; 0x020C0270 - ldr r2, _020C0290 ; =UNK_021D1CB8 - mov r3, #0x0 - ldr r1, _020C0294 ; =UNK_021D1CB0 - ldr r0, _020C0298 ; =UNK_021D1CB4 - str r3, [r2, #0x0] - str r3, [r1, #0x0] - str r3, [r0, #0x0] - bx lr - .balign 4 -_020C0290: .word UNK_021D1CB8 -_020C0294: .word UNK_021D1CB0 -_020C0298: .word UNK_021D1CB4 - - arm_func_start FUN_020C029C -FUN_020C029C: ; 0x020C029C - ldr r1, _020C02B8 ; =UNK_021D1CB4 - mov r2, #0x1 - mvn r0, r2, lsl r0 - ldr r2, [r1, #0x0] - and r0, r2, r0 - str r0, [r1, #0x0] - bx lr - .balign 4 -_020C02B8: .word UNK_021D1CB4 - - arm_func_start FUN_020C02BC -FUN_020C02BC: ; 0x020C02BC - ldr r0, _020C02FC ; =UNK_021D1CB4 - mov r3, #0x1 - ldr r2, [r0, #0x0] - mov r0, #0x0 -_020C02CC: - ands r1, r2, r3 - ldreq r1, _020C02FC ; =UNK_021D1CB4 - ldreq r2, [r1, #0x0] - orreq r2, r2, r3 - streq r2, [r1, #0x0] - bxeq lr - add r0, r0, #0x1 - cmp r0, #0x8 - mov r3, r3, lsl #0x1 - blt _020C02CC - mvn r0, #0x0 - bx lr - .balign 4 -_020C02FC: .word UNK_021D1CB4 - - arm_func_start FUN_020C0300 -FUN_020C0300: ; 0x020C0300 - ldr r1, _020C0318 ; =UNK_021D1CB0 - mvn r0, r0 - ldr r2, [r1, #0x0] - and r0, r2, r0 - str r0, [r1, #0x0] - bx lr - .balign 4 -_020C0318: .word UNK_021D1CB0 - - arm_func_start FUN_020C031C -FUN_020C031C: - ldr r1, _020C033C ; =UNK_021D1CB0 - ldr r2, [r1, #0x0] - ands r3, r0, r2 - movne r0, #0x0 - orreq r0, r2, r0 - streq r0, [r1, #0x0] - moveq r0, #0x1 - bx lr - .balign 4 -_020C033C: .word UNK_021D1CB0 - - arm_func_start FUN_020C0340 -FUN_020C0340: - stmdb sp!, {r4,lr} - movs r4, r0 - ldmeqia sp!, {r4,pc} - mov r1, #0x0 - bl SND_UnlockChannel - ldr r0, _020C036C ; =UNK_021D1CB8 - mvn r1, r4 - ldr r2, [r0, #0x0] - and r1, r2, r1 - str r1, [r0, #0x0] - ldmia sp!, {r4,pc} - .balign 4 -_020C036C: .word UNK_021D1CB8 - - arm_func_start FUN_020C0370 -FUN_020C0370: - stmdb sp!, {r4,lr} - movs r4, r0 - moveq r0, #0x1 - ldmeqia sp!, {r4,pc} - ldr r1, _020C03B4 ; =UNK_021D1CB8 - ldr r1, [r1, #0x0] - ands r1, r4, r1 - movne r0, #0x0 - ldmneia sp!, {r4,pc} - mov r1, #0x0 - bl SND_LockChannel - ldr r1, _020C03B4 ; =UNK_021D1CB8 - mov r0, #0x1 - ldr r2, [r1, #0x0] - orr r2, r2, r4 - str r2, [r1, #0x0] - ldmia sp!, {r4,pc} - .balign 4 -_020C03B4: .word UNK_021D1CB8 - - arm_func_start FUN_020C03B8 -FUN_020C03B8: ; 0x020C03B8 - stmdb sp!, {r4,lr} - mov r4, r0 - ldr r0, [r4, #0x8] - cmp r0, #0x0 - moveq r0, #0x0 - ldmeqia sp!, {r4,pc} - ldr r0, [r4, #0xc] - cmp r0, #0x0 - bne _020C03F8 - ldr r0, [r4, #0x10] - bl SND_IsFinishedCommandTag - cmp r0, #0x0 - moveq r0, #0x1 - ldmeqia sp!, {r4,pc} - mov r0, #0x1 - str r0, [r4, #0xc] -_020C03F8: - bl SND_GetChannelStatus - ldr r1, [r4, #0x0] - mov r2, #0x1 - mov r1, r2, lsl r1 - ands r0, r1, r0 - movne r0, r2 - moveq r0, #0x0 - streq r0, [r4, #0x8] - ldmia sp!, {r4,pc} - - arm_func_start FUN_020C041C -FUN_020C041C: ; 0x020C041C - stmdb sp!, {lr} - sub sp, sp, #0x4 - ldr r2, [r0, #0x8] - cmp r2, #0x0 - addeq sp, sp, #0x4 - ldmeqia sp!, {pc} - ldr r0, [r0, #0x0] - mov r2, #0x1 - mov r0, r2, lsl r0 - bl SND_SetChannelPan - add sp, sp, #0x4 - ldmia sp!, {pc} - - arm_func_start FUN_020C044C -FUN_020C044C: ; 0x020C044C - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - mov r5, r0 - ldr r0, [r5, #0x8] - mov r4, r1 - cmp r0, #0x0 - addeq sp, sp, #0x4 - ldmeqia sp!, {r4-r5,pc} - ldr r2, [r5, #0x4] - ldr r0, _020C04D4 ; =0xD87F8000 - mov r3, r2, asr #0x1f - mov r1, #0x7f - bl _ll_udiv - mov r2, r4 - mov r3, r4, asr #0x1f - bl _ll_udiv - mov r2, #0x0 - mov r3, r0 - mov r0, #0x10 - cmp r1, r2 - cmpeq r3, r0 - movcc r3, r0 - blo _020C04B8 - ldr r0, _020C04D8 ; =0x0000FFFF - cmp r1, r2 - cmpeq r3, r0 - movhi r3, r0 -_020C04B8: - ldr r0, [r5, #0x0] - mov r1, #0x1 - mov r0, r1, lsl r0 - mov r1, r3 - bl SND_SetChannelTimer - add sp, sp, #0x4 - ldmia sp!, {r4-r5,pc} - .balign 4 -_020C04D4: .word 0xD87F8000 -_020C04D8: .word 0x0000FFFF - - arm_func_start FUN_020C04DC -FUN_020C04DC: ; 0x020C04DC - stmdb sp!, {lr} - sub sp, sp, #0x4 - ldr r2, [r0, #0x8] - cmp r2, #0x0 - addeq sp, sp, #0x4 - ldmeqia sp!, {pc} - ldr r0, [r0, #0x0] - mov r2, #0x1 - mov r0, r2, lsl r0 - mov r2, #0x0 - bl SND_SetChannelVolume - add sp, sp, #0x4 - ldmia sp!, {pc} - - arm_func_start FUN_020C0510 -FUN_020C0510: ; 0x020C0510 - stmdb sp!, {r4,lr} - mov r4, r0 - ldr r0, [r4, #0x8] - cmp r0, #0x0 - ldmeqia sp!, {r4,pc} - ldr r0, [r4, #0x0] - mov r2, #0x1 - mov r1, #0x0 - mov r0, r2, lsl r0 - mov r2, r1 - mov r3, r1 - bl SND_StopTimer - mov r0, #0x0 - str r0, [r4, #0x8] - ldmia sp!, {r4,pc} - - arm_func_start FUN_020C054C -FUN_020C054C: ; 0x020C054C - stmdb sp!, {r4-r9,lr} - sub sp, sp, #0x1c - movs r8, r1 - mov r9, r0 - mov r7, r2 - mov r6, r3 - beq _020C0584 - cmp r8, #0x1 - ldreq r0, [sp, #0x3c] - ldreq r1, [sp, #0x38] - moveq r0, r0, asr #0x1 - moveq r5, r1, asr #0x1 - subeq r4, r0, r1, asr #0x1 - b _020C0598 -_020C0584: - ldr r0, [sp, #0x3c] - ldr r1, [sp, #0x38] - mov r0, r0, asr #0x2 - mov r5, r1, asr #0x2 - sub r4, r0, r1, asr #0x2 -_020C0598: - ldr r2, [sp, #0x40] - ldr r0, _020C0668 ; =0xD87F8000 - mov r3, r2, asr #0x1f - mov r1, #0x7f - bl _ll_udiv - ldr r2, [sp, #0x48] - mov r3, r2, asr #0x1f - bl _ll_udiv - mov r3, #0x0 - mov r2, #0x10 - cmp r1, r3 - cmpeq r0, r2 - movcc r0, r2 - blo _020C05E0 - ldr r2, _020C066C ; =0x0000FFFF - cmp r1, r3 - cmpeq r0, r2 - movhi r0, r2 -_020C05E0: - str r5, [sp, #0x0] - ldr r1, [sp, #0x44] - str r4, [sp, #0x4] - str r1, [sp, #0x8] - mov r1, #0x0 - str r1, [sp, #0xc] - cmp r6, #0x0 - movne r3, #0x1 - ldr r1, [sp, #0x4c] - str r0, [sp, #0x10] - str r1, [sp, #0x14] - ldr r0, [r9, #0x0] - moveq r3, #0x2 - mov r1, r8 - mov r2, r7 - bl SND_SetupChannelPcm - mov r1, #0x0 - ldr r0, [r9, #0x0] - mov r2, #0x1 - mov r0, r2, lsl r0 - mov r2, r1 - mov r3, r1 - bl SND_StartTimer - mov r0, #0x1 - str r0, [r9, #0x8] - mov r0, #0x0 - str r0, [r9, #0xc] - bl SND_GetCurrentCommandTag - str r0, [r9, #0x10] - ldr r1, [sp, #0x40] - mov r0, #0x1 - str r1, [r9, #0x4] - add sp, sp, #0x1c - ldmia sp!, {r4-r9,pc} - .balign 4 -_020C0668: .word 0xD87F8000 -_020C066C: .word 0x0000FFFF - - arm_func_start FUN_020C0670 -FUN_020C0670: ; 0x020C0670 - ldr r0, [r0, #0x0] - mov r1, #0x1 - ldr ip, _020C0684 ; =FUN_020C0340 - mov r0, r1, lsl r0 - bx r12 - .balign 4 -_020C0684: .word FUN_020C0340 - - arm_func_start FUN_020C0688 -FUN_020C0688: ; 0x020C0688 - stmdb sp!, {r4,lr} - mov r4, r0 - mov r0, #0x1 - mov r0, r0, lsl r4 - bl FUN_020C0370 - cmp r0, #0x0 - moveq r0, #0x0 - ldmeqia sp!, {r4,pc} - mov r0, #0x14 - mul r0, r4, r0 - ldr r2, _020C06C8 ; =UNK_021D1CBC - mov r1, #0x0 - str r4, [r2, r0] - add r0, r2, r0 - str r1, [r0, #0x8] - ldmia sp!, {r4,pc} - .balign 4 -_020C06C8: .word UNK_021D1CBC - - arm_func_start FUN_020C06CC -FUN_020C06CC: ; 0x020C06CC - stmdb sp!, {r4-r6,lr} - mov r6, r0 - ldr r4, [r6, #0x4] - mov r5, r1 - cmp r4, #0x0 - beq _020C06F8 - mov r0, r4 - mov r1, r6 - bl FUN_020ADAB0 - mov r0, #0x0 - str r0, [r6, #0x4] -_020C06F8: - ldr r0, _020C0728 ; =UNK_021D1E08 - mov r1, r6 - bl FUN_020ADAB0 - strb r5, [r6, #0x3d] - cmp r4, #0x0 - beq _020C071C - mov r0, r4 - mov r1, r6 - bl FUN_020C0910 -_020C071C: - mov r0, r6 - bl FUN_020C08B4 - ldmia sp!, {r4-r6,pc} - .balign 4 -_020C0728: .word UNK_021D1E08 - - arm_func_start FUN_020C072C -FUN_020C072C: ; 0x020C072C - stmdb sp!, {r4,lr} - mov r4, r0 - ldr r0, [r4, #0x8] - cmp r0, #0x0 - ldmeqia sp!, {r4,pc} - bl FUN_020C2A7C - ldr r1, [r4, #0xc] - cmp r1, #0x0 - movne r0, #0x0 - strne r0, [r1, #0x8] - ldmneia sp!, {r4,pc} - ldr r1, [r4, #0x10] - ldr r2, _020C0778 ; =UNK_021D2254 - mov r0, #0x24 - mla r0, r1, r0, r2 - mov r1, r4 - add r0, r0, #0xc - bl FUN_020ADAB0 - ldmia sp!, {r4,pc} - .balign 4 -_020C0778: .word UNK_021D2254 - - arm_func_start FUN_020C077C -FUN_020C077C: ; 0x020C077C - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - mov r4, r0 - ldr r1, [r4, #0x0] - cmp r1, #0x0 - movne r0, #0x0 - strne r0, [r1, #0x0] - strne r0, [r4, #0x0] - ldr r5, [r4, #0x4] - mov r1, r4 - mov r0, r5 - bl FUN_020ADAB0 - mov r0, #0x0 - str r0, [r4, #0x4] - ldr r1, [r4, #0x8] - cmp r1, #0x0 - beq _020C07D8 - add r0, r5, #0xc - bl FUN_020ADBE8 - ldr r0, [r4, #0x8] - mov r1, #0x0 - str r1, [r0, #0xc] - str r1, [r4, #0x8] -_020C07D8: - ldr r0, _020C0800 ; =UNK_021D1E08 - mov r1, r4 - bl FUN_020ADAB0 - ldr r0, _020C0804 ; =UNK_021D1DFC - mov r1, r4 - bl FUN_020ADBE8 - mov r0, #0x0 - strb r0, [r4, #0x2c] - add sp, sp, #0x4 - ldmia sp!, {r4-r5,pc} - .balign 4 -_020C0800: .word UNK_021D1E08 -_020C0804: .word UNK_021D1DFC - - arm_func_start FUN_020C0808 -FUN_020C0808: ; 0x020C0808 - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - mov r5, r0 - ldr r0, _020C0874 ; =UNK_021D1DFC - mov r1, #0x0 - bl FUN_020ADA98 - movs r4, r0 - bne _020C0850 - ldr r0, _020C0878 ; =UNK_021D1E08 - mov r1, #0x0 - bl FUN_020ADA98 - mov r4, r0 - ldrb r1, [r4, #0x3d] - cmp r5, r1 - addlt sp, sp, #0x4 - movlt r0, #0x0 - ldmltia sp!, {r4-r5,pc} - bl FUN_020C087C -_020C0850: - ldr r0, _020C0874 ; =UNK_021D1DFC - mov r1, r4 - bl FUN_020ADAB0 - mov r0, r4 - strb r5, [r4, #0x3d] - bl FUN_020C08B4 - mov r0, r4 - add sp, sp, #0x4 - ldmia sp!, {r4-r5,pc} - .balign 4 -_020C0874: .word UNK_021D1DFC -_020C0878: .word UNK_021D1E08 - - arm_func_start FUN_020C087C -FUN_020C087C: ; 0x020C087C - stmdb sp!, {r4,lr} - mov r4, r0 - ldrb r0, [r4, #0x2c] - cmp r0, #0x2 - bne _020C089C - ldrb r0, [r4, #0x3c] - ldr r1, _020C08B0 ; =0xFFFFFD2D - bl SND_SetPlayerVolume -_020C089C: - ldrb r0, [r4, #0x3c] - bl SND_StopSeq - mov r0, r4 - bl FUN_020C077C - ldmia sp!, {r4,pc} - .balign 4 -_020C08B0: .word 0xFFFFFD2D - - arm_func_start FUN_020C08B4 -FUN_020C08B4: ; 0x020C08B4 - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - mov r5, r0 - ldr r0, _020C090C ; =UNK_021D1E08 - mov r1, #0x0 - bl FUN_020ADA98 - movs r1, r0 - beq _020C08F8 - ldr r4, _020C090C ; =UNK_021D1E08 -_020C08D8: - ldrb r2, [r5, #0x3d] - ldrb r0, [r1, #0x3d] - cmp r2, r0 - blo _020C08F8 - mov r0, r4 - bl FUN_020ADA98 - movs r1, r0 - bne _020C08D8 -_020C08F8: - ldr r0, _020C090C ; =UNK_021D1E08 - mov r2, r5 - bl FUN_020ADB18 - add sp, sp, #0x4 - ldmia sp!, {r4-r5,pc} - .balign 4 -_020C090C: .word UNK_021D1E08 - - arm_func_start FUN_020C0910 -FUN_020C0910: ; 0x020C0910 - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - mov r4, r1 - mov r1, #0x0 - mov r5, r0 - bl FUN_020ADA98 - movs r1, r0 - beq _020C0950 -_020C0930: - ldrb r2, [r4, #0x3d] - ldrb r0, [r1, #0x3d] - cmp r2, r0 - blo _020C0950 - mov r0, r5 - bl FUN_020ADA98 - movs r1, r0 - bne _020C0930 -_020C0950: - mov r0, r5 - mov r2, r4 - bl FUN_020ADB18 - str r5, [r4, #0x4] - add sp, sp, #0x4 - ldmia sp!, {r4-r5,pc} - - arm_func_start FUN_020C0968 -FUN_020C0968: ; 0x020C0968 - stmdb sp!, {r4,lr} - mov r4, r0 - mov r0, #0x0 - strb r0, [r4, #0x2e] - strb r0, [r4, #0x2d] - strb r0, [r4, #0x2f] - strh r0, [r4, #0x34] - strh r0, [r4, #0x3e] - mov r1, #0x7f - strb r1, [r4, #0x40] - add r0, r4, #0x1c - strb r1, [r4, #0x41] - bl FUN_020C3E6C - add r0, r4, #0x1c - mov r1, #0x7f00 - mov r2, #0x1 - bl FUN_020C3E40 - ldmia sp!, {r4,pc} - - arm_func_start FUN_020C09B0 -FUN_020C09B0: ; 0x020C09B0 - stmdb sp!, {r4-r6,lr} - ldr r3, _020C0A00 ; =UNK_021D2254 - mov r2, #0x24 - mla r5, r0, r2, r3 - mov r6, r1 - add r0, r5, #0xc - mov r1, #0x0 - bl FUN_020ADA98 - movs r4, r0 - moveq r0, #0x0 - ldmeqia sp!, {r4-r6,pc} - mov r1, r4 - add r0, r5, #0xc - bl FUN_020ADAB0 - str r6, [r4, #0xc] - str r4, [r6, #0x8] - ldr r0, [r4, #0x8] - bl FUN_020C29C0 - ldr r0, [r4, #0x8] - ldmia sp!, {r4-r6,pc} - .balign 4 -_020C0A00: .word UNK_021D2254 - - arm_func_start FUN_020C0A04 -FUN_020C0A04: ; 0x020C0A04 - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - movs r5, r0 - mov r4, r1 - addeq sp, sp, #0x4 - ldmeqia sp!, {r4-r5,pc} - ldrb r0, [r5, #0x2e] - cmp r4, r0 - addeq sp, sp, #0x4 - ldmeqia sp!, {r4-r5,pc} - ldrb r0, [r5, #0x3c] - bl SND_PauseSeq - strb r4, [r5, #0x2e] - add sp, sp, #0x4 - ldmia sp!, {r4-r5,pc} - - arm_func_start FUN_020C0A40 -FUN_020C0A40: ; 0x020C0A40 - stmdb sp!, {r4,lr} - movs r4, r0 - mov r2, r1 - ldmeqia sp!, {r4,pc} - ldrb r1, [r4, #0x2c] - cmp r1, #0x0 - ldmeqia sp!, {r4,pc} - cmp r2, #0x0 - bne _020C0A6C - bl FUN_020C087C - ldmia sp!, {r4,pc} -_020C0A6C: - add r0, r4, #0x1c - mov r1, #0x0 - bl FUN_020C3E40 - mov r0, r4 - mov r1, #0x0 - bl FUN_020C06CC - mov r0, #0x2 - strb r0, [r4, #0x2c] - ldmia sp!, {r4,pc} - - arm_func_start FUN_020C0A90 -FUN_020C0A90: ; 0x020C0A90 - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - mov r5, r0 - ldrb r0, [r5, #0x3c] - ldr r4, [r5, #0x4] - bl SND_PrepareSeq - ldr r2, [r4, #0x1c] - cmp r2, #0x0 - beq _020C0AC0 - ldrb r0, [r5, #0x3c] - ldr r1, _020C0AE4 ; =0x0000FFFF - bl SND_SetTrackAllocatableChannel -_020C0AC0: - mov r0, r5 - bl FUN_020C0968 - bl SND_GetCurrentCommandTag - str r0, [r5, #0x30] - mov r0, #0x1 - strb r0, [r5, #0x2f] - strb r0, [r5, #0x2c] - add sp, sp, #0x4 - ldmia sp!, {r4-r5,pc} - .balign 4 -_020C0AE4: .word 0x0000FFFF - - arm_func_start thunk_FUN_020c077c -thunk_FUN_020c077c: ; 0x020C0AE8 - ldr ip, _020C0AF0 ; =FUN_020C077C - bx r12 - .balign 4 -_020C0AF0: .word FUN_020C077C - - arm_func_start FUN_020C0AF4 -FUN_020C0AF4: ; 0x020C0AF4 - stmdb sp!, {r4-r7,lr} - sub sp, sp, #0x4 - ldr ip, _020C0B9C ; =UNK_021D2254 - mov r3, #0x24 - mov r4, r0 - ldr r5, [r4, #0x0] - mla r6, r1, r3, r12 - mov r7, r2 - cmp r5, #0x0 - beq _020C0B20 - bl FUN_020C0F68 -_020C0B20: - ldrh r1, [r6, #0x8] - ldr r0, [r6, #0x18] - cmp r1, r0 - blo _020C0B64 - mov r0, r6 - mov r1, #0x0 - bl FUN_020ADA98 - cmp r0, #0x0 - addeq sp, sp, #0x4 - moveq r0, #0x0 - ldmeqia sp!, {r4-r7,pc} - ldrb r1, [r0, #0x3d] - cmp r7, r1 - addlt sp, sp, #0x4 - movlt r0, #0x0 - ldmltia sp!, {r4-r7,pc} - bl FUN_020C087C -_020C0B64: - mov r0, r7 - bl FUN_020C0808 - movs r5, r0 - addeq sp, sp, #0x4 - moveq r0, #0x0 - ldmeqia sp!, {r4-r7,pc} - mov r0, r6 - mov r1, r5 - bl FUN_020C0910 - str r4, [r5, #0x0] - mov r0, r5 - str r5, [r4, #0x0] - add sp, sp, #0x4 - ldmia sp!, {r4-r7,pc} - .balign 4 -_020C0B9C: .word UNK_021D2254 - - arm_func_start FUN_020C0BA0 -FUN_020C0BA0: ; 0x020C0BA0 - stmdb sp!, {r4-r11,lr} - sub sp, sp, #0xc - bl SND_GetPlayerStatus - str r0, [sp, #0x0] - ldr r0, _020C0D14 ; =UNK_021D1E08 - mov r1, #0x0 - bl FUN_020ADA98 - movs r10, r0 - addeq sp, sp, #0xc - ldmeqia sp!, {r4-r11,pc} - mov r0, #0x8000 - rsb r0, r0, #0x0 - ldr r4, _020C0D18 ; =SNDi_DecibelTable - str r0, [sp, #0x4] - mov r5, #0x1 - mov r11, #0x0 -_020C0BE0: - ldr r0, _020C0D14 ; =UNK_021D1E08 - mov r1, r10 - bl FUN_020ADA98 - ldrb r1, [r10, #0x2d] - mov r9, r0 - cmp r1, #0x0 - bne _020C0C0C - ldr r0, [r10, #0x30] - bl SND_IsFinishedCommandTag - cmp r0, #0x0 - strneb r5, [r10, #0x2d] -_020C0C0C: - ldrb r0, [r10, #0x2d] - cmp r0, #0x0 - beq _020C0C38 - ldrb r0, [r10, #0x3c] - mov r1, r5, lsl r0 - ldr r0, [sp, #0x0] - ands r0, r0, r1 - bne _020C0C38 - mov r0, r10 - bl FUN_020C077C - b _020C0D00 -_020C0C38: - add r0, r10, #0x1c - bl FUN_020C3DF4 - ldr r0, [r10, #0x4] - ldrb r2, [r10, #0x41] - ldrb r1, [r10, #0x40] - ldrb r0, [r0, #0x20] - mov r3, r2, lsl #0x1 - mov r2, r1, lsl #0x1 - mov r1, r0, lsl #0x1 - add r0, r10, #0x1c - ldrsh r8, [r4, r3] - ldrsh r7, [r4, r2] - ldrsh r6, [r4, r1] - bl FUN_020C3E0C - mov r0, r0, asr #0x8 - mov r2, r0, lsl #0x1 - add r1, r7, r8 - mov r0, #0x8000 - ldrsh r2, [r4, r2] - add r1, r6, r1 - rsb r0, r0, #0x0 - add r6, r2, r1 - cmp r6, r0 - ldrlt r6, [sp, #0x4] - blt _020C0CA8 - ldr r0, _020C0D1C ; =0x00007FFF - cmp r6, r0 - movgt r6, r0 -_020C0CA8: - ldrsh r0, [r10, #0x3e] - cmp r6, r0 - beq _020C0CC4 - ldrb r0, [r10, #0x3c] - mov r1, r6 - bl SND_SetPlayerVolume - strh r6, [r10, #0x3e] -_020C0CC4: - ldrb r0, [r10, #0x2c] - cmp r0, #0x2 - bne _020C0CE8 - add r0, r10, #0x1c - bl FUN_020C3DDC - cmp r0, #0x0 - beq _020C0CE8 - mov r0, r10 - bl FUN_020C087C -_020C0CE8: - ldrb r0, [r10, #0x2f] - cmp r0, #0x0 - beq _020C0D00 - ldrb r0, [r10, #0x3c] - bl SND_StartPreparedSeq - strb r11, [r10, #0x2f] -_020C0D00: - mov r10, r9 - cmp r9, #0x0 - bne _020C0BE0 - add sp, sp, #0xc - ldmia sp!, {r4-r11,pc} - .balign 4 -_020C0D14: .word UNK_021D1E08 -_020C0D18: .word SNDi_DecibelTable -_020C0D1C: .word 0x00007FFF - - arm_func_start FUN_020C0D20 -FUN_020C0D20: ; 0x020C0D20 - stmdb sp!, {r4-r10,lr} - ldr r0, _020C0DC4 ; =UNK_021D1E08 - mov r1, #0x14 - bl FUN_020ADC74 - ldr r0, _020C0DC8 ; =UNK_021D1DFC - mov r1, #0x14 - bl FUN_020ADC74 - ldr r6, _020C0DCC ; =UNK_021D1E14 - mov r7, #0x0 - ldr r4, _020C0DC8 ; =UNK_021D1DFC - mov r5, r7 -_020C0D4C: - strb r5, [r6, #0x2c] - mov r0, r4 - mov r1, r6 - strb r7, [r6, #0x3c] - bl FUN_020ADBE8 - add r7, r7, #0x1 - cmp r7, #0x10 - add r6, r6, #0x44 - blt _020C0D4C - ldr sl, _020C0DD0 ; =UNK_021D2254 - mov r9, #0x0 - mov r7, r9 - mov r4, r9 - mov r8, #0xc - mov r6, #0x7f - mov r5, #0x1 -_020C0D8C: - mov r0, r10 - mov r1, r8 - bl FUN_020ADC74 - mov r1, r7 - add r0, r10, #0xc - bl FUN_020ADC74 - strb r6, [r10, #0x20] - str r5, [r10, #0x18] - add r9, r9, #0x1 - str r4, [r10, #0x1c] - cmp r9, #0x20 - add r10, r10, #0x24 - blt _020C0D8C - ldmia sp!, {r4-r10,pc} - .balign 4 -_020C0DC4: .word UNK_021D1E08 -_020C0DC8: .word UNK_021D1DFC -_020C0DCC: .word UNK_021D1E14 -_020C0DD0: .word UNK_021D2254 - - arm_func_start FUN_020C0DD4 -FUN_020C0DD4: ; 0x020C0DD4 - stmdb sp!, {lr} - sub sp, sp, #0x4 - ldr r1, [r0, #0x0] - cmp r1, #0x0 - addeq sp, sp, #0x4 - moveq r0, #0x0 - ldmeqia sp!, {pc} - ldrb r0, [r1, #0x2d] - cmp r0, #0x0 - addeq sp, sp, #0x4 - moveq r0, #0x0 - ldmeqia sp!, {pc} - ldrb r0, [r1, #0x3c] - bl SND_GetPlayerTickCounter - add sp, sp, #0x4 - ldmia sp!, {pc} - - arm_func_start FUN_020C0E14 -FUN_020C0E14: ; 0x020C0E14 - ldr r1, [r0, #0x0] - cmp r1, #0x0 - mvneq r0, #0x0 - bxeq lr - ldrh r0, [r1, #0x34] - cmp r0, #0x1 - mvnne r0, #0x0 - ldreqh r0, [r1, #0x38] - bx lr - - arm_func_start FUN_020C0E38 -FUN_020C0E38: ; 0x020C0E38 - ldr r12, [r0, #0x0] - cmp r12, #0x0 - bxeq lr - mov r3, #0x2 - strh r3, [r12, #0x34] - ldr r3, [r0, #0x0] - strh r1, [r3, #0x38] - ldr r0, [r0, #0x0] - strh r2, [r0, #0x3a] - bx lr - - arm_func_start FUN_020C0E60 -FUN_020C0E60: ; 0x020C0E60 - ldr r3, [r0, #0x0] - cmp r3, #0x0 - movne r2, #0x1 - strneh r2, [r3, #0x34] - ldrne r0, [r0, #0x0] - strneh r1, [r0, #0x38] - bx lr - - arm_func_start FUN_020C0E7C -FUN_020C0E7C: ; 0x020C0E7C - stmdb sp!, {lr} - sub sp, sp, #0x4 - ldr r0, [r0, #0x0] - cmp r0, #0x0 - addeq sp, sp, #0x4 - ldmeqia sp!, {pc} - ldrb r0, [r0, #0x3c] - bl SND_SetTrackPan - add sp, sp, #0x4 - ldmia sp!, {pc} - - arm_func_start FUN_020C0EA4 -FUN_020C0EA4: ; 0x020C0EA4 - stmdb sp!, {lr} - sub sp, sp, #0x4 - ldr r0, [r0, #0x0] - cmp r0, #0x0 - addeq sp, sp, #0x4 - ldmeqia sp!, {pc} - ldrb r0, [r0, #0x3c] - bl SND_SetTrackPitch - add sp, sp, #0x4 - ldmia sp!, {pc} - - arm_func_start FUN_020C0ECC -FUN_020C0ECC: ; 0x020C0ECC - stmdb sp!, {lr} - sub sp, sp, #0x4 - ldr r0, [r0, #0x0] - cmp r0, #0x0 - addeq sp, sp, #0x4 - ldmeqia sp!, {pc} - ldrb r0, [r0, #0x3c] - bl SND_SetPlayerChannelPriority - add sp, sp, #0x4 - ldmia sp!, {pc} - - arm_func_start FUN_020C0EF4 -FUN_020C0EF4: ; 0x020C0EF4 - stmdb sp!, {lr} - sub sp, sp, #0x4 - ldr r3, [r0, #0x0] - cmp r3, #0x0 - addeq sp, sp, #0x4 - ldmeqia sp!, {pc} - ldrb r0, [r3, #0x2c] - cmp r0, #0x2 - addeq sp, sp, #0x4 - ldmeqia sp!, {pc} - add r0, r3, #0x1c - mov r1, r1, lsl #0x8 - bl FUN_020C3E40 - add sp, sp, #0x4 - ldmia sp!, {pc} - - arm_func_start FUN_020C0F30 -FUN_020C0F30: ; 0x020C0F30 - ldr r0, [r0, #0x0] - cmp r0, #0x0 - strneb r1, [r0, #0x40] - bx lr - - arm_func_start FUN_020C0F40 -FUN_020C0F40: ; 0x020C0F40 - ldr r0, [r0, #0x0] - cmp r0, #0x0 - strneb r1, [r0, #0x41] - bx lr - - arm_func_start FUN_020C0F50 -FUN_020C0F50: ; 0x020C0F50 - mov r1, #0x24 - mul r1, r0, r1 - ldr r0, _020C0F64 ; =UNK_021D225C - ldrh r0, [r0, r1] - bx lr - .balign 4 -_020C0F64: .word UNK_021D225C - - arm_func_start FUN_020C0F68 -FUN_020C0F68: ; 0x020C0F68 - ldr r2, [r0, #0x0] - cmp r2, #0x0 - movne r1, #0x0 - strne r1, [r2, #0x0] - strne r1, [r0, #0x0] - bx lr - - arm_func_start FUN_020C0F80 -FUN_020C0F80: ; 0x020C0F80 - mov r1, #0x0 - str r1, [r0, #0x0] - bx lr - - arm_func_start FUN_020C0F8C -FUN_020C0F8C: ; 0x020C0F8C - ldr ip, _020C0F98 ; =FUN_020C0A04 - ldr r0, [r0, #0x0] - bx r12 - .balign 4 -_020C0F98: .word FUN_020C0A04 - - arm_func_start FUN_020C0F9C -FUN_020C0F9C: ; 0x020C0F9C - stmdb sp!, {r4-r6,lr} - ldr r4, _020C0FD8 ; =UNK_021D1E14 - mov r6, r0 - mov r5, #0x0 -_020C0FAC: - ldrb r0, [r4, #0x2c] - cmp r0, #0x0 - beq _020C0FC4 - mov r0, r4 - mov r1, r6 - bl FUN_020C0A40 -_020C0FC4: - add r5, r5, #0x1 - cmp r5, #0x10 - add r4, r4, #0x44 - blt _020C0FAC - ldmia sp!, {r4-r6,pc} - .balign 4 -_020C0FD8: .word UNK_021D1E14 - - arm_func_start FUN_020C0FDC -FUN_020C0FDC: ; 0x020C0FDC - stmdb sp!, {r4-r7,lr} - sub sp, sp, #0x4 - ldr r4, _020C103C ; =UNK_021D1E14 - mov r7, r0 - mov r6, r1 - mov r5, #0x0 -_020C0FF4: - ldrb r0, [r4, #0x2c] - cmp r0, #0x0 - beq _020C1024 - ldrh r0, [r4, #0x34] - cmp r0, #0x1 - bne _020C1024 - ldrh r0, [r4, #0x38] - cmp r0, r7 - bne _020C1024 - mov r0, r4 - mov r1, r6 - bl FUN_020C0A40 -_020C1024: - add r5, r5, #0x1 - cmp r5, #0x10 - add r4, r4, #0x44 - blt _020C0FF4 - add sp, sp, #0x4 - ldmia sp!, {r4-r7,pc} - .balign 4 -_020C103C: .word UNK_021D1E14 - - arm_func_start FUN_020C1040 -FUN_020C1040: ; 0x020C1040 - stmdb sp!, {r4-r7,lr} - sub sp, sp, #0x4 - ldr r3, _020C109C ; =UNK_021D2254 - mov r2, #0x24 - mla r4, r0, r2, r3 - ldr r5, _020C10A0 ; =UNK_021D1E14 - mov r7, r1 - mov r6, #0x0 -_020C1060: - ldrb r0, [r5, #0x2c] - cmp r0, #0x0 - beq _020C1084 - ldr r0, [r5, #0x4] - cmp r0, r4 - bne _020C1084 - mov r0, r5 - mov r1, r7 - bl FUN_020C0A40 -_020C1084: - add r6, r6, #0x1 - cmp r6, #0x10 - add r5, r5, #0x44 - blt _020C1060 - add sp, sp, #0x4 - ldmia sp!, {r4-r7,pc} - .balign 4 -_020C109C: .word UNK_021D2254 -_020C10A0: .word UNK_021D1E14 - - arm_func_start FUN_020C10A4 -FUN_020C10A4: ; 0x020C10A4 - ldr ip, _020C10B0 ; =FUN_020C0A40 - ldr r0, [r0, #0x0] - bx r12 - .balign 4 -_020C10B0: .word FUN_020C0A40 - - arm_func_start FUN_020C10B4 -FUN_020C10B4: - stmdb sp!, {r4-r6,lr} - sub sp, sp, #0x8 - mov r5, r2 - mov r6, r0 - mov r0, r1 - mov r3, #0x0 - ldr r2, _020C1140 ; =FUN_020C072C - add r1, r5, #0x14 - str r3, [sp, #0x0] - bl SDATi_AllocAndInitChunk - movs r4, r0 - addeq sp, sp, #0x8 - moveq r0, #0x0 - ldmeqia sp!, {r4-r6,pc} - mov r2, #0x0 - str r2, [r4, #0xc] - str r6, [r4, #0x10] - mov r1, r5 - add r0, r4, #0x14 - str r2, [r4, #0x8] - bl FUN_020C2A94 - cmp r0, #0x0 - addeq sp, sp, #0x8 - moveq r0, #0x0 - ldmeqia sp!, {r4-r6,pc} - ldr r2, _020C1144 ; =UNK_021D2254 - mov r1, #0x24 - mla r2, r6, r1, r2 - str r0, [r4, #0x8] - mov r1, r4 - add r0, r2, #0xc - bl FUN_020ADBE8 - mov r0, #0x1 - add sp, sp, #0x8 - ldmia sp!, {r4-r6,pc} - .balign 4 -_020C1140: .word FUN_020C072C -_020C1144: .word UNK_021D2254 - - arm_func_start FUN_020C1148 -FUN_020C1148: ; 0x020C1148 - mov r2, #0x24 - mul r2, r0, r2 - ldr r0, _020C115C ; =UNK_021D2270 - str r1, [r0, r2] - bx lr - .balign 4 -_020C115C: .word UNK_021D2270 - - arm_func_start FUN_020C1160 -FUN_020C1160: ; 0x020C1160 - mov r2, #0x24 - mul r2, r0, r2 - mov r0, r1, lsl #0x10 - ldr r1, _020C117C ; =UNK_021D226C - mov r0, r0, lsr #0x10 - str r0, [r1, r2] - bx lr - .balign 4 -_020C117C: .word UNK_021D226C - - arm_func_start FUN_020C1180 -FUN_020C1180: ; 0x020C1180 - mov r2, #0x24 - mul r2, r0, r2 - ldr r0, _020C1194 ; =UNK_021D2274 - strb r1, [r0, r2] - bx lr - .balign 4 -_020C1194: .word UNK_021D2274 - - arm_func_start FUN_020C1198 -FUN_020C1198: ; 0x020C1198 - stmdb sp!, {r4-r6,lr} - mov r4, r0 - ldr r0, [r4, #0x24] - mov r0, r0, lsl #0x1e - movs r0, r0, asr #0x1f - ldmeqia sp!, {r4-r6,pc} - ldr r0, [r4, #0x38] - cmp r0, #0x0 - beq _020C11E8 - mov r5, #0x1 -_020C11C0: - bl OS_DisableInterrupts - mov r6, r0 - mov r0, r4 - mov r1, r5 - bl FUN_020C1254 - mov r0, r6 - bl OS_RestoreInterrupts - ldr r0, [r4, #0x38] - cmp r0, #0x0 - bne _020C11C0 -_020C11E8: - ldr r0, [r4, #0x40] - mov r2, #0x1 - mov r1, #0x0 - mov r2, r2, lsl r0 - ldr r0, [r4, #0x44] - mov r3, r1 - bl SND_StartTimer - ldmia sp!, {r4-r6,pc} - - arm_func_start FUN_020C1208 -FUN_020C1208: ; 0x020C1208 - stmdb sp!, {r4,lr} - ldr r1, [r0, #0x24] - mov r1, r1, lsl #0x1e - movs r1, r1, asr #0x1f - ldmeqia sp!, {r4,pc} - ldr r2, [r0, #0x40] - mov r3, #0x1 - mov r1, #0x0 - mov r2, r3, lsl r2 - ldr r0, [r0, #0x44] - mov r3, r1 - bl SND_StopTimer - bl SND_GetCurrentCommandTag - mov r4, r0 - mov r0, #0x1 - bl SND_FlushCommand - mov r0, r4 - bl SND_WaitForCommandProc - ldmia sp!, {r4,pc} - - arm_func_start FUN_020C1254 -FUN_020C1254: ; 0x020C1254 - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0xc - mov r5, r0 - mov r4, r1 - ldr r0, [r5, #0x28] - ldr r1, [r5, #0x2c] - bl _u32_div_f - ldr r1, [r5, #0x48] - ldr r2, [r5, #0x38] - mov r3, r0 - mul lr, r3, r2 - cmp r1, #0x0 - mov r12, #0x0 - ble _020C12B8 - ldr r2, _020C1300 ; =UNK_021D2724 - ldr r0, _020C1304 ; =UNK_021D26E4 -_020C1294: - add r1, r5, r12 - ldrb r1, [r1, #0x4c] - ldr r1, [r2, r1, lsl #0x3] - add r1, r1, lr - str r1, [r0, r12, lsl #0x2] - ldr r1, [r5, #0x48] - add r12, r12, #0x1 - cmp r12, r1 - blt _020C1294 -_020C12B8: - ldr r0, [r5, #0x20] - ldr r2, _020C1304 ; =UNK_021D26E4 - str r0, [sp, #0x0] - ldr r12, [r5, #0x34] - mov r0, r4 - str r12, [sp, #0x4] - ldr r4, [r5, #0x30] - blx r4 - ldr r0, [r5, #0x38] - add r0, r0, #0x1 - str r0, [r5, #0x38] - ldr r1, [r5, #0x38] - ldr r0, [r5, #0x2c] - cmp r1, r0 - movge r0, #0x0 - strge r0, [r5, #0x38] - add sp, sp, #0xc - ldmia sp!, {r4-r5,pc} - .balign 4 -_020C1300: .word UNK_021D2724 -_020C1304: .word UNK_021D26E4 - - arm_func_start FUN_020C1308 -FUN_020C1308: ; 0x020C1308 - ldr ip, _020C1314 ; =FUN_020C1254 - mov r1, #0x1 - bx r12 - .balign 4 -_020C1314: .word FUN_020C1254 - - arm_func_start FUN_020C1318 -FUN_020C1318: ; 0x020C1318 - stmdb sp!, {r4,lr} - mov r4, r0 - ldr r0, [r4, #0x40] - bl FUN_020C029C - ldr r0, _020C1344 ; =UNK_021D26D8 - mov r1, r4 - bl FUN_020ADAB0 - ldr r0, [r4, #0x24] - bic r0, r0, #0x1 - str r0, [r4, #0x24] - ldmia sp!, {r4,pc} - .balign 4 -_020C1344: .word UNK_021D26D8 - - arm_func_start FUN_020C1348 -FUN_020C1348: ; 0x020C1348 - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - mov r4, r0 - ldr r0, [r4, #0x24] - mov r0, r0, lsl #0x1e - movs r0, r0, asr #0x1f - beq _020C13B4 - ldr r0, [r4, #0x40] - mov r2, #0x1 - mov r1, #0x0 - mov r2, r2, lsl r0 - ldr r0, [r4, #0x44] - mov r3, r1 - bl SND_StopTimer - add r0, r4, #0x8 - bl PM_DeletePreSleepCallback - add r0, r4, #0x14 - bl PM_DeletePostSleepCallback - ldr r0, [r4, #0x24] - bic r0, r0, #0x2 - str r0, [r4, #0x24] - bl SND_GetCurrentCommandTag - mov r5, r0 - mov r0, #0x1 - bl SND_FlushCommand - mov r0, r5 - bl SND_WaitForCommandProc -_020C13B4: - mov r0, r4 - bl FUN_020C1318 - add sp, sp, #0x4 - ldmia sp!, {r4-r5,pc} - - arm_func_start FUN_020C13C4 -FUN_020C13C4: ; 0x020C13C4 - stmdb sp!, {r4-r8,lr} - mov r7, r0 - str r1, [r7, #0x3c] - ldr r0, [r7, #0x48] - mov r5, #0x0 - cmp r0, #0x0 - ldmleia sp!, {r4-r8,pc} - ldr r4, _020C142C ; =UNK_021D2724 - mov r8, #0x1 -_020C13E8: - add r0, r7, r5 - ldrb r6, [r0, #0x4c] - ldr r1, [r7, #0x3c] - add r0, r4, r6, lsl #0x3 - ldr r0, [r0, #0x4] - add r0, r1, r0 - bl SND_CalcChannelVolume - mov r2, r0 - mov r0, r8, lsl r6 - and r1, r2, #0xff - mov r2, r2, asr #0x8 - bl SND_SetChannelVolume - ldr r0, [r7, #0x48] - add r5, r5, #0x1 - cmp r5, r0 - blt _020C13E8 - ldmia sp!, {r4-r8,pc} - .balign 4 -_020C142C: .word UNK_021D2724 - - arm_func_start FUN_020C1430 -FUN_020C1430: ; 0x020C1430 - stmdb sp!, {lr} - sub sp, sp, #0x4 - ldr r1, [r0, #0x24] - mov r1, r1, lsl #0x1f - movs r1, r1, asr #0x1f - addeq sp, sp, #0x4 - ldmeqia sp!, {pc} - bl FUN_020C1348 - add sp, sp, #0x4 - ldmia sp!, {pc} - - arm_func_start FUN_020C1458 -FUN_020C1458: ; 0x020C1458 - stmdb sp!, {r4,lr} - mov r4, r0 - ldr r0, [r4, #0x40] - mov r2, #0x1 - mov r1, #0x0 - mov r2, r2, lsl r0 - ldr r0, [r4, #0x44] - mov r3, r1 - bl SND_StartTimer - ldr r0, [r4, #0x24] - mov r0, r0, lsl #0x1e - movs r0, r0, asr #0x1f - ldmneia sp!, {r4,pc} - add r0, r4, #0x8 - bl PM_PrependPreSleepCallback - add r0, r4, #0x14 - bl PM_AppendPostSleepCallback - ldr r0, [r4, #0x24] - orr r0, r0, #0x2 - str r0, [r4, #0x24] - ldmia sp!, {r4,pc} - - arm_func_start FUN_020C14AC -FUN_020C14AC: ; 0x020C14AC - stmdb sp!, {r4-r11,lr} - sub sp, sp, #0x24 - mov r10, r0 - ldr r4, [r10, #0x24] - mov r9, r1 - mov r1, r4, lsl #0x1f - movs r1, r1, asr #0x1f - ldr r1, [sp, #0x4c] - str r2, [sp, #0x18] - mov r4, r3 - str r1, [sp, #0x4c] - beq _020C14E0 - bl FUN_020C1430 -_020C14E0: - ldr r0, [sp, #0x4c] - ldr r2, [r10, #0x48] - mov r0, r0, lsl #0x5 - mul r1, r2, r0 - mov r0, r4 - bl _u32_div_f - ldr r1, [sp, #0x4c] - ldr r2, [sp, #0x48] - mul r1, r0, r1 - mov r0, r1, lsl #0x5 - str r0, [r10, #0x28] - ldr r0, [r10, #0x28] - cmp r9, #0x1 - moveq r0, r0, lsr #0x1 - mul r0, r2, r0 - ldr r1, [sp, #0x4c] - bl _u32_div_f - str r0, [sp, #0x1c] - bl FUN_020C02BC - str r0, [r10, #0x40] - ldr r0, [r10, #0x40] - cmp r0, #0x0 - addlt sp, sp, #0x24 - movlt r0, #0x0 - ldmltia sp!, {r4-r11,pc} - ldr r0, [r10, #0x48] - mov r8, #0x0 - cmp r0, #0x0 - ble _020C15D4 - ldr r0, [sp, #0x48] - mov r7, r0, lsl #0x5 - ldr r6, _020C1668 ; =UNK_021D2724 - mov r5, r8 - mov r4, #0x7f - mov r11, #0x40 - mov r0, #0x1 - str r0, [sp, #0x20] -_020C1574: - ldr r2, [r10, #0x28] - ldr r1, [sp, #0x18] - add r0, r10, r8 - mla r1, r2, r8, r1 - ldrb r0, [r0, #0x4c] - ldr r3, [sp, #0x20] - str r1, [r6, r0, lsl #0x3] - add r1, r6, r0, lsl #0x3 - str r5, [r1, #0x4] - str r5, [sp, #0x0] - ldr r2, [r10, #0x28] - mov r1, r9 - mov r2, r2, lsr #0x2 - str r2, [sp, #0x4] - str r4, [sp, #0x8] - str r5, [sp, #0xc] - str r7, [sp, #0x10] - str r11, [sp, #0x14] - ldr r2, [r6, r0, lsl #0x3] - bl SND_SetupChannelPcm - ldr r0, [r10, #0x48] - add r8, r8, #0x1 - cmp r8, r0 - blt _020C1574 -_020C15D4: - str r10, [sp, #0x0] - ldr r1, [sp, #0x1c] - ldr r0, [r10, #0x40] - ldr r3, _020C166C ; =FUN_020C1308 - mov r2, r1 - bl SND_SetupAlarm - ldr r0, _020C1670 ; =UNK_021D26D8 - mov r1, r10 - bl FUN_020ADBE8 - ldr r0, [sp, #0x4c] - str r9, [r10, #0x20] - str r0, [r10, #0x2c] - ldr r1, [sp, #0x50] - ldr r0, [sp, #0x54] - str r1, [r10, #0x30] - str r0, [r10, #0x34] - mov r0, #0x0 - str r0, [r10, #0x38] - str r0, [r10, #0x3c] - ldr r0, [r10, #0x24] - bic r0, r0, #0x1 - orr r0, r0, #0x1 - str r0, [r10, #0x24] - bl OS_DisableInterrupts - mov r4, r0 - mov r2, #0x1 - mov r0, r10 - mov r1, #0x0 - str r2, [r10, #0x2c] - bl FUN_020C1254 - ldr r1, [sp, #0x4c] - mov r0, r4 - str r1, [r10, #0x2c] - bl OS_RestoreInterrupts - mov r0, #0x1 - add sp, sp, #0x24 - ldmia sp!, {r4-r11,pc} - .balign 4 -_020C1668: .word UNK_021D2724 -_020C166C: .word FUN_020C1308 -_020C1670: .word UNK_021D26D8 - - arm_func_start FUN_020C1674 -FUN_020C1674: ; 0x020C1674 - stmdb sp!, {r4,lr} - mov r4, r0 - ldr r0, [r4, #0x44] - cmp r0, #0x0 - ldmeqia sp!, {r4,pc} - bl FUN_020C0340 - mov r0, #0x0 - str r0, [r4, #0x44] - str r0, [r4, #0x48] - ldmia sp!, {r4,pc} - - arm_func_start FUN_020C169C -FUN_020C169C: ; 0x020C169C - stmdb sp!, {r4-r6,lr} - mov r5, r1 - mov r4, #0x0 - mov r6, r0 - mov r12, r4 - cmp r5, #0x0 - ble _020C16DC - mov r1, #0x1 -_020C16BC: - ldrb r3, [r2, r12] - add r0, r6, r12 - strb r3, [r0, #0x4c] - ldrb r0, [r2, r12] - add r12, r12, #0x1 - cmp r12, r5 - orr r4, r4, r1, lsl r0 - blt _020C16BC -_020C16DC: - mov r0, r4 - bl FUN_020C0370 - cmp r0, #0x0 - moveq r0, #0x0 - strne r5, [r6, #0x48] - strne r4, [r6, #0x44] - movne r0, #0x1 - ldmia sp!, {r4-r6,pc} - - arm_func_start FUN_020C16FC -FUN_020C16FC: ; 0x020C16FC - stmdb sp!, {r4,lr} - ldr r1, _020C176C ; =UNK_021D26D4 - mov r4, r0 - ldr r0, [r1, #0x0] - cmp r0, #0x0 - bne _020C172C - ldr r0, _020C1770 ; =UNK_021D26D8 - mov r1, #0x0 - bl FUN_020ADC74 - ldr r0, _020C176C ; =UNK_021D26D4 - mov r1, #0x1 - str r1, [r0, #0x0] -_020C172C: - ldr r1, _020C1774 ; =FUN_020C1208 - ldr r0, _020C1778 ; =FUN_020C1198 - str r1, [r4, #0x8] - str r4, [r4, #0xc] - str r0, [r4, #0x14] - str r4, [r4, #0x18] - mov r0, #0x0 - str r0, [r4, #0x44] - str r0, [r4, #0x48] - ldr r0, [r4, #0x24] - bic r0, r0, #0x1 - str r0, [r4, #0x24] - ldr r0, [r4, #0x24] - bic r0, r0, #0x2 - str r0, [r4, #0x24] - ldmia sp!, {r4,pc} - .balign 4 -_020C176C: .word UNK_021D26D4 -_020C1770: .word UNK_021D26D8 -_020C1774: .word FUN_020C1208 -_020C1778: .word FUN_020C1198 - - arm_func_start FUN_020C177C -FUN_020C177C: ; 0x020C177C - stmdb sp!, {r4-r7,lr} - sub sp, sp, #0x4 - mov r7, r0 - ldr r4, [r7, #0x18] - ldr r0, [r7, #0x1c] - ldr r1, _020C186C ; =UNK_021D27A4 - mul r0, r4, r0 - ldr r3, [r7, #0xc] - ldr r2, [r7, #0x10] - ldr r1, [r1, #0x0] - add r6, r3, r0 - cmp r1, #0x0 - add r5, r2, r0 - beq _020C180C - ldr r2, _020C1870 ; =UNK_021D27A8 - mov r1, #0x14 - ldr r2, [r2, #0x0] - ldr r3, _020C1874 ; =UNK_021D2820 - mul r1, r2, r1 - str r7, [r3, r1] - add r1, r3, r1 - str r4, [r1, #0x4] - str r0, [r1, #0x8] - str r6, [r1, #0xc] - ldr r0, _020C1878 ; =UNK_021D27AC - mov r2, #0x0 - str r5, [r1, #0x10] - bl OS_SendMessage - ldr r0, _020C1870 ; =UNK_021D27A8 - ldr r1, [r0, #0x0] - add r1, r1, #0x1 - str r1, [r0, #0x0] - cmp r1, #0x8 - movge r1, #0x0 - strge r1, [r0, #0x0] - b _020C1844 -_020C180C: - mov r0, r6 - mov r1, r4 - bl DC_InvalidateRange - mov r0, r5 - mov r1, r4 - bl DC_InvalidateRange - ldr r1, [r7, #0x38] - mov r0, r6 - str r1, [sp, #0x0] - ldr r3, [r7, #0x8] - ldr r6, [r7, #0x34] - mov r1, r5 - mov r2, r4 - blx r6 -_020C1844: - ldr r0, [r7, #0x1c] - add r0, r0, #0x1 - str r0, [r7, #0x1c] - ldr r1, [r7, #0x1c] - ldr r0, [r7, #0x30] - cmp r1, r0 - movge r0, #0x0 - strge r0, [r7, #0x1c] - add sp, sp, #0x4 - ldmia sp!, {r4-r7,pc} - .balign 4 -_020C186C: .word UNK_021D27A4 -_020C1870: .word UNK_021D27A8 -_020C1874: .word UNK_021D2820 -_020C1878: .word UNK_021D27AC - - arm_func_start FUN_020C187C -FUN_020C187C: ; 0x020C187C - stmdb sp!, {r4,lr} - ldr r4, _020C18F4 ; =UNK_021D27CC - ldr r0, [r4, #0x0] - cmp r0, #0x0 - ldmeqia sp!, {r4,pc} - mov r0, #0x0 - str r0, [r4, #0x1c] - ldr r1, [r4, #0xc] - ldr r2, [r4, #0x14] - bl MIi_CpuClear32 - ldr r1, [r4, #0x10] - ldr r2, [r4, #0x14] - mov r0, #0x0 - bl MIi_CpuClear32 - ldr r0, [r4, #0xc] - ldr r1, [r4, #0x14] - bl DC_FlushRange - ldr r0, [r4, #0x10] - ldr r1, [r4, #0x14] - bl DC_FlushRange - ldr r1, [r4, #0x2c] - mov r3, #0x0 - cmp r1, #0x0 - movge r0, #0x1 - movge r2, r0, lsl r1 - ldr r0, [r4, #0x24] - ldr r1, [r4, #0x28] - movlt r2, #0x0 - bl SND_StartTimer - ldmia sp!, {r4,pc} - .balign 4 -_020C18F4: .word UNK_021D27CC - - arm_func_start FUN_020C18F8 -FUN_020C18F8: - stmdb sp!, {r4,lr} - ldr r3, _020C194C ; =UNK_021D27CC - ldr r0, [r3, #0x0] - cmp r0, #0x0 - ldmeqia sp!, {r4,pc} - ldr r1, [r3, #0x2c] - cmp r1, #0x0 - movge r0, #0x1 - movge r2, r0, lsl r1 - ldr r0, [r3, #0x24] - ldr r1, [r3, #0x28] - movlt r2, #0x0 - mov r3, #0x0 - bl SND_StopTimer - bl SND_GetCurrentCommandTag - mov r4, r0 - mov r0, #0x1 - bl SND_FlushCommand - mov r0, r4 - bl SND_WaitForCommandProc - ldmia sp!, {r4,pc} - .balign 4 -_020C194C: .word UNK_021D27CC - - arm_func_start FUN_020C1950 -FUN_020C1950: ; 0x020C1950 - stmdb sp!, {r4-r7,lr} - sub sp, sp, #0x4 - ldr r4, _020C1A3C ; =UNK_021D27CC - ldr r0, [r4, #0x0] - cmp r0, #0x0 - addeq sp, sp, #0x4 - ldmeqia sp!, {r4-r7,pc} - ldr r1, [r4, #0x2c] - mov r3, #0x0 - cmp r1, #0x0 - movge r7, #0x1 - movlt r7, #0x0 - cmp r7, #0x0 - movne r0, #0x1 - movne r2, r0, lsl r1 - ldr r0, [r4, #0x24] - ldr r1, [r4, #0x28] - moveq r2, #0x0 - bl SND_StopTimer - cmp r7, #0x0 - beq _020C19DC - bl SND_GetCurrentCommandTag - mov r5, r0 - mov r0, #0x1 - bl SND_FlushCommand - mov r0, r5 - bl SND_WaitForCommandProc - ldr r6, _020C1A40 ; =UNK_021D27AC - mov r5, #0x0 -_020C19C4: - mov r0, r6 - mov r1, r5 - mov r2, r5 - bl OS_ReceiveMessage - cmp r0, #0x0 - bne _020C19C4 -_020C19DC: - ldr r0, [r4, #0x28] - cmp r0, #0x0 - beq _020C19EC - bl FUN_020C0300 -_020C19EC: - ldr r0, [r4, #0x20] - cmp r0, #0x0 - beq _020C19FC - bl FUN_020C0340 -_020C19FC: - cmp r7, #0x0 - beq _020C1A0C - ldr r0, [r4, #0x2c] - bl FUN_020C029C -_020C1A0C: - ldr r0, [r4, #0x4] - cmp r0, #0x1 - bne _020C1A2C - mov r0, #0x0 - mov r1, r0 - mov r2, r0 - mov r3, r0 - bl SND_SetOutputSelector -_020C1A2C: - mov r0, #0x0 - str r0, [r4, #0x0] - add sp, sp, #0x4 - ldmia sp!, {r4-r7,pc} - .balign 4 -_020C1A3C: .word UNK_021D27CC -_020C1A40: .word UNK_021D27AC - - arm_func_start FUN_020C1A44 -FUN_020C1A44: ; 0x020C1A44 - stmdb sp!, {r4-r11,lr} - sub sp, sp, #0x3c - mov r10, r3 - str r0, [sp, #0x18] - str r2, [sp, #0x20] - mov r2, #0x0 - str r1, [sp, #0x1c] - mov r0, r1 - mov r1, r10 - ldr r9, [sp, #0x6c] - ldr r8, [sp, #0x74] - str r2, [sp, #0x2c] - mvn r6, #0x0 - ldr r4, _020C1D90 ; =UNK_021D27CC - bl DC_FlushRange - ldr r0, [sp, #0x20] - mov r1, r10 - bl DC_FlushRange - ldr r0, [sp, #0x60] - ldr r1, [sp, #0x70] - cmp r0, #0x1 - moveq r7, #0x1 - ldr r0, _020C1D94 ; =0x00FFB0FF - movne r7, #0x0 - bl _s32_div_f - ldr r1, [sp, #0x84] - mov r11, r0 - cmp r1, #0x0 - beq _020C1B00 - add r1, r11, #0x10 - bic r11, r1, #0x1f - mov r2, r11, asr #0x5 - mov r0, r10 - cmp r7, #0x0 - ldr r1, [sp, #0x80] - moveq r0, r10, lsr #0x1 - str r2, [sp, #0x34] - bl _u32_div_f - ldr r1, [sp, #0x34] - mov r5, #0x20 - mul r0, r1, r0 - str r0, [sp, #0x30] - cmp r7, #0x0 - ldr r0, [sp, #0x34] - moveq r5, r5, lsr #0x1 - mul r0, r5, r0 - mov r5, r0 -_020C1B00: - cmp r7, #0x0 - movne r0, #0x0 - strne r0, [sp, #0x28] - moveq r0, #0x1 - streq r0, [sp, #0x28] - cmp r7, #0x0 - movne r0, #0x1 - strne r0, [sp, #0x24] - moveq r0, #0x0 - streq r0, [sp, #0x24] - ldr r0, [sp, #0x18] - cmp r0, #0x2 - movne r0, #0xa - strne r0, [sp, #0x2c] - ldr r0, [sp, #0x84] - cmp r0, #0x0 - beq _020C1B58 - bl FUN_020C02BC - movs r6, r0 - addmi sp, sp, #0x3c - movmi r0, #0x0 - ldmmiia sp!, {r4-r11,pc} -_020C1B58: - mov r0, #0x3 - bl FUN_020C031C - cmp r0, #0x0 - bne _020C1B84 - cmp r6, #0x0 - blt _020C1B78 - mov r0, r6 - bl FUN_020C029C -_020C1B78: - add sp, sp, #0x3c - mov r0, #0x0 - ldmia sp!, {r4-r11,pc} -_020C1B84: - mov r0, #0xa - bl FUN_020C0370 - cmp r0, #0x0 - bne _020C1BB8 - cmp r6, #0x0 - blt _020C1BA4 - mov r0, r6 - bl FUN_020C029C -_020C1BA4: - mov r0, #0x3 - bl FUN_020C0300 - add sp, sp, #0x3c - mov r0, #0x0 - ldmia sp!, {r4-r11,pc} -_020C1BB8: - mov r0, #0x0 - mov r7, r10, lsr #0x2 - str r0, [sp, #0x0] - str r7, [sp, #0x4] - str r8, [sp, #0x8] - str r0, [sp, #0xc] - cmp r9, #0x0 - movne r3, #0x1 - ldr r1, [sp, #0x78] - str r11, [sp, #0x10] - str r1, [sp, #0x14] - ldr r1, [sp, #0x28] - ldr r2, [sp, #0x1c] - moveq r3, #0x2 - mov r0, #0x1 - bl SND_SetupChannelPcm - ldr r1, [sp, #0x64] - str r9, [sp, #0x0] - str r1, [sp, #0x4] - ldr r0, [sp, #0x68] - ldr r1, [sp, #0x24] - str r0, [sp, #0x8] - ldr r2, [sp, #0x1c] - mov r0, #0x0 - mov r3, r7 - bl SND_SetupCapture - mov r0, #0x0 - str r0, [sp, #0x0] - str r7, [sp, #0x4] - str r8, [sp, #0x8] - str r0, [sp, #0xc] - cmp r9, #0x0 - movne r3, #0x1 - ldr r2, [sp, #0x7c] - str r11, [sp, #0x10] - str r2, [sp, #0x14] - ldr r1, [sp, #0x28] - ldr r2, [sp, #0x20] - moveq r3, #0x2 - mov r0, #0x3 - bl SND_SetupChannelPcm - ldr r2, [sp, #0x64] - str r9, [sp, #0x0] - str r2, [sp, #0x4] - ldr r0, [sp, #0x68] - ldr r1, [sp, #0x24] - str r0, [sp, #0x8] - ldr r2, [sp, #0x20] - mov r3, r7 - mov r0, #0x1 - bl SND_SetupCapture - cmp r6, #0x0 - blt _020C1CA8 - ldr r2, [sp, #0x30] - ldr r3, _020C1D98 ; =FUN_020C177C - mov r1, r2 - mov r0, r6 - add r1, r1, r5 - str r4, [sp, #0x0] - bl SND_SetupAlarm -_020C1CA8: - ldr r0, [sp, #0x18] - cmp r0, #0x1 - bne _020C1CC8 - mov r0, #0x1 - mov r2, r0 - mov r3, r0 - mov r1, #0x2 - bl SND_SetOutputSelector -_020C1CC8: - cmp r6, #0x0 - movge r0, #0x1 - movge r2, r0, lsl r6 - ldr r0, [sp, #0x2c] - movlt r2, #0x0 - mov r1, #0x3 - mov r3, #0x0 - bl SND_StartTimer - mov r0, #0x1 - str r0, [r4, #0x0] - ldr r0, [sp, #0x18] - ldr r1, [sp, #0x80] - str r0, [r4, #0x4] - mov r0, #0xa - str r0, [r4, #0x20] - ldr r0, [sp, #0x2c] - str r0, [r4, #0x24] - mov r0, #0x3 - str r0, [r4, #0x28] - ldr r0, [sp, #0x60] - str r6, [r4, #0x2c] - str r0, [r4, #0x8] - ldr r0, [sp, #0x1c] - str r0, [r4, #0xc] - ldr r0, [sp, #0x20] - str r0, [r4, #0x10] - mov r0, r10 - str r10, [r4, #0x14] - bl _u32_div_f - str r0, [r4, #0x18] - mov r1, #0x0 - str r1, [r4, #0x1c] - ldr r0, [sp, #0x80] - ldr r1, [sp, #0x84] - str r0, [r4, #0x30] - ldr r0, [sp, #0x88] - str r1, [r4, #0x34] - str r0, [r4, #0x38] - add r0, r4, #0x3c - str r8, [r4, #0x50] - bl FUN_020C3E6C - add r0, r4, #0x3c - mov r1, r8, lsl #0x8 - mov r2, #0x1 - bl FUN_020C3E40 - mov r0, #0x0 - str r0, [r4, #0x4c] - mov r0, #0x1 - add sp, sp, #0x3c - ldmia sp!, {r4-r11,pc} - .balign 4 -_020C1D90: .word UNK_021D27CC -_020C1D94: .word 0x00FFB0FF -_020C1D98: .word FUN_020C177C - - arm_func_start FUN_020C1D9C -FUN_020C1D9C: ; 0x020C1D9C - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - ldr r5, _020C1E34 ; =UNK_021D27CC - ldr r0, [r5, #0x0] - cmp r0, #0x0 - addeq sp, sp, #0x4 - ldmeqia sp!, {r4-r5,pc} - ldr r0, [r5, #0x4] - cmp r0, #0x0 - addne sp, sp, #0x4 - ldmneia sp!, {r4-r5,pc} - add r4, r5, #0x3c - mov r0, r4 - bl FUN_020C3DF4 - ldr r0, [r5, #0x4c] - cmp r0, #0x0 - beq _020C1DFC - mov r0, r4 - bl FUN_020C3DDC - cmp r0, #0x0 - beq _020C1DFC - bl FUN_020C1950 - add sp, sp, #0x4 - ldmia sp!, {r4-r5,pc} -_020C1DFC: - mov r0, r4 - bl FUN_020C3E0C - ldr r1, [r5, #0x50] - mov r4, r0, asr #0x8 - cmp r4, r1 - addeq sp, sp, #0x4 - ldmeqia sp!, {r4-r5,pc} - ldr r0, [r5, #0x24] - mov r1, r4 - mov r2, #0x0 - bl SND_SetChannelVolume - str r4, [r5, #0x50] - add sp, sp, #0x4 - ldmia sp!, {r4-r5,pc} - .balign 4 -_020C1E34: .word UNK_021D27CC - - arm_func_start FUN_020C1E38 -FUN_020C1E38: ; 0x020C1E38 - ldr r1, _020C1E50 ; =UNK_021D27A4 - mov r2, #0x0 - ldr r0, _020C1E54 ; =UNK_021D27CC - str r2, [r1, #0x0] - str r2, [r0, #0x0] - bx lr - .balign 4 -_020C1E50: .word UNK_021D27A4 -_020C1E54: .word UNK_021D27CC - - arm_func_start FUN_020C1E58 -FUN_020C1E58: ; 0x020C1E58 - ldr r0, _020C1E64 ; =UNK_021D27CC - ldr r0, [r0, #0x0] - bx lr - .balign 4 -_020C1E64: .word UNK_021D27CC - - arm_func_start FUN_020C1E68 -FUN_020C1E68: ; 0x020C1E68 - stmdb sp!, {lr} - sub sp, sp, #0x4 - ldr r0, _020C1EA0 ; =UNK_021D27CC - ldr r1, [r0, #0x0] - cmp r1, #0x0 - addeq sp, sp, #0x4 - ldmeqia sp!, {pc} - ldr r0, [r0, #0x4] - cmp r0, #0x1 - addne sp, sp, #0x4 - ldmneia sp!, {pc} - bl FUN_020C1950 - add sp, sp, #0x4 - ldmia sp!, {pc} - .balign 4 -_020C1EA0: .word UNK_021D27CC - - arm_func_start FUN_020C1EA4 -FUN_020C1EA4: ; 0x020C1EA4 - stmdb sp!, {r4-r7,lr} - sub sp, sp, #0x2c - mov r5, r0 - mov r4, r1 - mov r7, r2 - mov r6, r3 - bl FUN_020C1E68 - ldr r0, _020C1F50 ; =UNK_021D27CC - ldr r0, [r0, #0x0] - cmp r0, #0x0 - addne sp, sp, #0x2c - movne r0, #0x0 - ldmneia sp!, {r4-r7,pc} - mov r1, r5 - mov r2, r4 - mov r0, #0x0 - bl MIi_CpuClear32 - mov r0, r5 - mov r1, r4 - bl DC_FlushRange - str r7, [sp, #0x0] - mov r2, #0x0 - str r2, [sp, #0x4] - str r2, [sp, #0x8] - mov r0, #0x1 - str r0, [sp, #0xc] - str r6, [sp, #0x10] - mov r1, #0x7f - str r1, [sp, #0x14] - str r2, [sp, #0x18] - ldr r2, [sp, #0x40] - str r1, [sp, #0x1c] - ldr r1, [sp, #0x44] - str r2, [sp, #0x20] - ldr r12, [sp, #0x48] - str r1, [sp, #0x24] - mov r1, r5 - mov r3, r4, lsr #0x1 - add r2, r5, r4, lsr #0x1 - str r12, [sp, #0x28] - bl FUN_020C1A44 - add sp, sp, #0x2c - ldmia sp!, {r4-r7,pc} - .balign 4 -_020C1F50: .word UNK_021D27CC - - arm_func_start FUN_020C1F54 -FUN_020C1F54: ; 0x020C1F54 - stmdb sp!, {r4,lr} - ldr r4, _020C1FA0 ; =UNK_021D27CC - mov r2, r0 - ldr r0, [r4, #0x0] - cmp r0, #0x0 - ldmeqia sp!, {r4,pc} - ldr r0, [r4, #0x4] - cmp r0, #0x0 - ldmneia sp!, {r4,pc} - cmp r2, #0x0 - bne _020C1F88 - bl FUN_020C1950 - ldmia sp!, {r4,pc} -_020C1F88: - add r0, r4, #0x3c - mov r1, #0x0 - bl FUN_020C3E40 - mov r0, #0x1 - str r0, [r4, #0x4c] - ldmia sp!, {r4,pc} - .balign 4 -_020C1FA0: .word UNK_021D27CC - - arm_func_start FUN_020C1FA4 -FUN_020C1FA4: ; 0x020C1FA4 - stmdb sp!, {lr} - sub sp, sp, #0x4 - ldr r3, _020C1FEC ; =UNK_021D27CC - mov r12, r0 - ldr r0, [r3, #0x0] - mov r2, r1 - cmp r0, #0x0 - addeq sp, sp, #0x4 - ldmeqia sp!, {pc} - ldr r0, [r3, #0x4] - cmp r0, #0x0 - addne sp, sp, #0x4 - ldmneia sp!, {pc} - add r0, r3, #0x3c - mov r1, r12, lsl #0x8 - bl FUN_020C3E40 - add sp, sp, #0x4 - ldmia sp!, {pc} - .balign 4 -_020C1FEC: .word UNK_021D27CC - - arm_func_start FUN_020C1FF0 -FUN_020C1FF0: ; 0x020C1FF0 - stmdb sp!, {r4-r7,lr} - sub sp, sp, #0x2c - mov r5, r0 - mov r0, #0x0 - mov r4, r1 - mov r7, r2 - mov r6, r3 - bl FUN_020C1F54 - ldr r0, _020C2098 ; =UNK_021D27CC - ldr r0, [r0, #0x0] - cmp r0, #0x0 - addne sp, sp, #0x2c - movne r0, #0x0 - ldmneia sp!, {r4-r7,pc} - mov r1, r5 - mov r2, r4 - mov r0, #0x0 - bl MIi_CpuClear32 - mov r0, r5 - mov r1, r4 - bl DC_FlushRange - str r7, [sp, #0x0] - mov r0, #0x0 - str r0, [sp, #0x4] - str r0, [sp, #0x8] - mov r1, #0x1 - str r1, [sp, #0xc] - ldr r1, [sp, #0x40] - str r6, [sp, #0x10] - str r1, [sp, #0x14] - str r0, [sp, #0x18] - mov r1, #0x7f - str r1, [sp, #0x1c] - str r0, [sp, #0x20] - str r0, [sp, #0x24] - mov r1, r5 - mov r3, r4, lsr #0x1 - add r2, r5, r4, lsr #0x1 - str r0, [sp, #0x28] - bl FUN_020C1A44 - add sp, sp, #0x2c - ldmia sp!, {r4-r7,pc} - .balign 4 -_020C2098: .word UNK_021D27CC - - arm_func_start SDATi_SymbDtor -SDATi_SymbDtor: ; 0x020C209C - mov r0, #0x0 - str r0, [r2, #0x88] - bx lr - - arm_func_start SDATi_FatDtor -SDATi_FatDtor: ; 0x020C20A8 - mov r0, #0x0 - str r0, [r2, #0x84] - bx lr - - arm_func_start SDATi_InfoDtor -SDATi_InfoDtor: ; 0x020C20B4 - mov r0, #0x0 - str r0, [r2, #0x8c] - bx lr - - arm_func_start FUN_020C20C0 -FUN_020C20C0: ; 0x020C20C0 - ldr r2, _020C20D8 ; =UNK_021D28C0 - ldr r2, [r2, #0x0] - ldr r2, [r2, #0x84] - add r0, r2, r0, lsl #0x4 - str r1, [r0, #0x14] - bx lr - .balign 4 -_020C20D8: .word UNK_021D28C0 - - arm_func_start FUN_020C20DC -FUN_020C20DC: - ldr r1, _020C2100 ; =UNK_021D28C0 - ldr r1, [r1, #0x0] - ldr r2, [r1, #0x84] - ldr r1, [r2, #0x8] - cmp r0, r1 - movcs r0, #0x0 - addcc r0, r2, r0, lsl #0x4 - ldrcc r0, [r0, #0x14] - bx lr - .balign 4 -_020C2100: .word UNK_021D28C0 - - arm_func_start FUN_020C2104 -FUN_020C2104: - stmdb sp!, {r4-r6,lr} - ldr r4, _020C2178 ; =UNK_021D28C0 - mov r5, r2 - ldr r4, [r4, #0x0] - mov r6, r1 - ldr r2, [r4, #0x84] - ldr r1, [r2, #0x8] - cmp r0, r1 - mvncs r0, #0x0 - ldmcsia sp!, {r4-r6,pc} - add r1, r2, #0xc - add r1, r1, r0, lsl #0x4 - ldr r0, [r1, #0x4] - ldr r1, [r1, #0x0] - sub r0, r0, r3 - cmp r5, r0 - movhi r5, r0 - add r0, r4, #0x34 - add r1, r1, r3 - mov r2, #0x0 - bl FS_SeekFile - cmp r0, #0x0 - mvneq r0, #0x0 - ldmeqia sp!, {r4-r6,pc} - mov r1, r6 - mov r2, r5 - add r0, r4, #0x34 - bl FS_ReadFile - ldmia sp!, {r4-r6,pc} - .balign 4 -_020C2178: .word UNK_021D28C0 - - arm_func_start FUN_020C217C -FUN_020C217C: ; 0x020C217C - ldr r1, _020C21A0 ; =UNK_021D28C0 - ldr r1, [r1, #0x0] - ldr r2, [r1, #0x84] - ldr r1, [r2, #0x8] - cmp r0, r1 - movcs r0, #0x0 - addcc r0, r2, r0, lsl #0x4 - ldrcc r0, [r0, #0x10] - bx lr - .balign 4 -_020C21A0: .word UNK_021D28C0 - - arm_func_start FUN_020C21A4 -FUN_020C21A4: ; 0x020C21A4 - ldr r1, _020C2204 ; =UNK_021D28C0 - ldr r3, [r1, #0x0] - ldr r2, [r3, #0x8c] - ldr r1, [r2, #0x1c] - cmp r1, #0x0 - moveq r2, #0x0 - addne r2, r2, r1 - cmp r2, #0x0 - moveq r0, #0x0 - bxeq lr - cmp r0, #0x0 - movlt r0, #0x0 - bxlt lr - ldr r1, [r2, #0x0] - cmp r0, r1 - movcs r0, #0x0 - bxcs lr - add r0, r2, r0, lsl #0x2 - ldr r1, [r0, #0x4] - ldr r0, [r3, #0x8c] - cmp r1, #0x0 - moveq r0, #0x0 - addne r0, r0, r1 - bx lr - .balign 4 -_020C2204: .word UNK_021D28C0 - - arm_func_start FUN_020C2208 -FUN_020C2208: ; 0x020C2208 - ldr r1, _020C2268 ; =UNK_021D28C0 - ldr r3, [r1, #0x0] - ldr r2, [r3, #0x8c] - ldr r1, [r2, #0x18] - cmp r1, #0x0 - moveq r2, #0x0 - addne r2, r2, r1 - cmp r2, #0x0 - moveq r0, #0x0 - bxeq lr - cmp r0, #0x0 - movlt r0, #0x0 - bxlt lr - ldr r1, [r2, #0x0] - cmp r0, r1 - movcs r0, #0x0 - bxcs lr - add r0, r2, r0, lsl #0x2 - ldr r1, [r0, #0x4] - ldr r0, [r3, #0x8c] - cmp r1, #0x0 - moveq r0, #0x0 - addne r0, r0, r1 - bx lr - .balign 4 -_020C2268: .word UNK_021D28C0 - - arm_func_start FUN_020C226C -FUN_020C226C: - ldr r1, _020C22CC ; =UNK_021D28C0 - ldr r3, [r1, #0x0] - ldr r2, [r3, #0x8c] - ldr r1, [r2, #0x14] - cmp r1, #0x0 - moveq r2, #0x0 - addne r2, r2, r1 - cmp r2, #0x0 - moveq r0, #0x0 - bxeq lr - cmp r0, #0x0 - movlt r0, #0x0 - bxlt lr - ldr r1, [r2, #0x0] - cmp r0, r1 - movcs r0, #0x0 - bxcs lr - add r0, r2, r0, lsl #0x2 - ldr r1, [r0, #0x4] - ldr r0, [r3, #0x8c] - cmp r1, #0x0 - moveq r0, #0x0 - addne r0, r0, r1 - bx lr - .balign 4 -_020C22CC: .word UNK_021D28C0 - - arm_func_start FUN_020C22D0 -FUN_020C22D0: ; 0x020C22D0 - ldr r1, _020C2330 ; =UNK_021D28C0 - ldr r3, [r1, #0x0] - ldr r2, [r3, #0x8c] - ldr r1, [r2, #0x10] - cmp r1, #0x0 - moveq r2, #0x0 - addne r2, r2, r1 - cmp r2, #0x0 - moveq r0, #0x0 - bxeq lr - cmp r0, #0x0 - movlt r0, #0x0 - bxlt lr - ldr r1, [r2, #0x0] - cmp r0, r1 - movcs r0, #0x0 - bxcs lr - add r0, r2, r0, lsl #0x2 - ldr r1, [r0, #0x4] - ldr r0, [r3, #0x8c] - cmp r1, #0x0 - moveq r0, #0x0 - addne r0, r0, r1 - bx lr - .balign 4 -_020C2330: .word UNK_021D28C0 - - arm_func_start FUN_020C2334 -FUN_020C2334: - ldr r1, _020C2394 ; =UNK_021D28C0 - ldr r3, [r1, #0x0] - ldr r2, [r3, #0x8c] - ldr r1, [r2, #0xc] - cmp r1, #0x0 - moveq r2, #0x0 - addne r2, r2, r1 - cmp r2, #0x0 - moveq r0, #0x0 - bxeq lr - cmp r0, #0x0 - movlt r0, #0x0 - bxlt lr - ldr r1, [r2, #0x0] - cmp r0, r1 - movcs r0, #0x0 - bxcs lr - add r0, r2, r0, lsl #0x2 - ldr r1, [r0, #0x4] - ldr r0, [r3, #0x8c] - cmp r1, #0x0 - moveq r0, #0x0 - addne r0, r0, r1 - bx lr - .balign 4 -_020C2394: .word UNK_021D28C0 - - arm_func_start FUN_020C2398 -FUN_020C2398: - ldr r1, _020C23F8 ; =UNK_021D28C0 - ldr r3, [r1, #0x0] - ldr r2, [r3, #0x8c] - ldr r1, [r2, #0x8] - cmp r1, #0x0 - moveq r2, #0x0 - addne r2, r2, r1 - cmp r2, #0x0 - moveq r0, #0x0 - bxeq lr - cmp r0, #0x0 - movlt r0, #0x0 - bxlt lr - ldr r1, [r2, #0x0] - cmp r0, r1 - movcs r0, #0x0 - bxcs lr - add r0, r2, r0, lsl #0x2 - ldr r1, [r0, #0x4] - ldr r0, [r3, #0x8c] - cmp r1, #0x0 - moveq r0, #0x0 - addne r0, r0, r1 - bx lr - .balign 4 -_020C23F8: .word UNK_021D28C0 - - arm_func_start FUN_020C23FC -FUN_020C23FC: ; 0x020C23FC - stmdb sp!, {lr} - sub sp, sp, #0x4 - bl FUN_020C2398 - cmp r0, #0x0 - moveq r0, #0x0 - addne r0, r0, #0x4 - add sp, sp, #0x4 - ldmia sp!, {pc} - - arm_func_start FUN_020C241C -FUN_020C241C: ; 0x020C241C - ldr r0, _020C2428 ; =UNK_021D28C0 - ldr r0, [r0, #0x0] - bx lr - .balign 4 -_020C2428: .word UNK_021D28C0 - - arm_func_start FUN_020C242C -FUN_020C242C: ; 0x020C242C - ldr r1, _020C2440 ; =UNK_021D28C0 - ldr r2, [r1, #0x0] - str r0, [r1, #0x0] - mov r0, r2 - bx lr - .balign 4 -_020C2440: .word UNK_021D28C0 - - arm_func_start FUN_020C2444 -FUN_020C2444: ; 0x020C2444 - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - mov r5, r0 - mov r4, r1 - mov r0, r4 - mov r1, r5 - mov r2, #0x30 - bl MIi_CpuCopy32 - ldr r0, [r5, #0x18] - mov r12, #0x0 - cmp r0, #0x0 - moveq r0, #0x0 - addne r0, r4, r0 - str r0, [r5, #0x8c] - ldr r0, [r5, #0x20] - cmp r0, #0x0 - moveq r0, #0x0 - addne r0, r4, r0 - str r0, [r5, #0x84] - ldr r0, [r5, #0x10] - cmp r0, #0x0 - moveq r0, #0x0 - addne r0, r4, r0 - str r0, [r5, #0x88] - ldr r2, [r5, #0x84] - ldr r0, [r2, #0x8] - cmp r0, #0x0 - bls _020C24F0 - mov r3, r12 - mov r1, r12 -_020C24BC: - add r2, r2, #0xc - ldr r0, [r2, r3] - add r2, r2, r3 - cmp r0, #0x0 - moveq r0, r1 - addne r0, r4, r0 - str r0, [r2, #0x8] - ldr r2, [r5, #0x84] - add r12, r12, #0x1 - ldr r0, [r2, #0x8] - add r3, r3, #0x10 - cmp r12, r0 - blo _020C24BC -_020C24F0: - mov r1, #0x0 - ldr r0, _020C2508 ; =UNK_021D28C0 - str r1, [r5, #0x30] - str r5, [r0, #0x0] - add sp, sp, #0x4 - ldmia sp!, {r4-r5,pc} - .balign 4 -_020C2508: .word UNK_021D28C0 - - arm_func_start SDATi_ReadHeaders -SDATi_ReadHeaders: - stmdb sp!, {r4-r6,lr} - sub sp, sp, #0x8 - mov r6, r0 - mov r5, r1 - mov r1, #0x0 - mov r4, r2 - mov r2, r1 - add r0, r6, #0x34 - bl FS_SeekFile - cmp r0, #0x0 - addeq sp, sp, #0x8 - moveq r0, #0x0 - ldmeqia sp!, {r4-r6,pc} - mov r1, r6 - add r0, r6, #0x34 - mov r2, #0x30 - bl FS_ReadFile - cmp r0, #0x30 - addne sp, sp, #0x8 - movne r0, #0x0 - ldmneia sp!, {r4-r6,pc} - cmp r5, #0x0 - beq _020C26E0 - mov r0, #0x0 - str r0, [sp, #0x0] - ldr r1, [r6, #0x1c] - ldr r2, _020C26EC ; =SDATi_InfoDtor - mov r0, r5 - mov r3, r6 - bl SDATi_AllocAndInitChunk - str r0, [r6, #0x8c] - ldr r0, [r6, #0x8c] - cmp r0, #0x0 - addeq sp, sp, #0x8 - moveq r0, #0x0 - ldmeqia sp!, {r4-r6,pc} - ldr r1, [r6, #0x18] - add r0, r6, #0x34 - mov r2, #0x0 - bl FS_SeekFile - cmp r0, #0x0 - addeq sp, sp, #0x8 - moveq r0, #0x0 - ldmeqia sp!, {r4-r6,pc} - ldr r1, [r6, #0x8c] - ldr r2, [r6, #0x1c] - add r0, r6, #0x34 - bl FS_ReadFile - ldr r1, [r6, #0x1c] - cmp r0, r1 - addne sp, sp, #0x8 - movne r0, #0x0 - ldmneia sp!, {r4-r6,pc} - mov r0, #0x0 - str r0, [sp, #0x0] - ldr r1, [r6, #0x24] - ldr r2, _020C26F0 ; =SDATi_FatDtor - mov r0, r5 - mov r3, r6 - bl SDATi_AllocAndInitChunk - str r0, [r6, #0x84] - ldr r0, [r6, #0x84] - cmp r0, #0x0 - addeq sp, sp, #0x8 - moveq r0, #0x0 - ldmeqia sp!, {r4-r6,pc} - ldr r1, [r6, #0x20] - add r0, r6, #0x34 - mov r2, #0x0 - bl FS_SeekFile - cmp r0, #0x0 - addeq sp, sp, #0x8 - moveq r0, #0x0 - ldmeqia sp!, {r4-r6,pc} - ldr r1, [r6, #0x84] - ldr r2, [r6, #0x24] - add r0, r6, #0x34 - bl FS_ReadFile - ldr r1, [r6, #0x24] - cmp r0, r1 - addne sp, sp, #0x8 - movne r0, #0x0 - ldmneia sp!, {r4-r6,pc} - cmp r4, #0x0 - beq _020C26E0 - ldr r1, [r6, #0x14] - cmp r1, #0x0 - beq _020C26E0 - mov r4, #0x0 - ldr r2, _020C26F4 ; =SDATi_SymbDtor - mov r0, r5 - mov r3, r6 - str r4, [sp, #0x0] - bl SDATi_AllocAndInitChunk - str r0, [r6, #0x88] - ldr r0, [r6, #0x88] - cmp r0, #0x0 - addeq sp, sp, #0x8 - moveq r0, r4 - ldmeqia sp!, {r4-r6,pc} - ldr r1, [r6, #0x10] - add r0, r6, #0x34 - mov r2, r4 - bl FS_SeekFile - cmp r0, #0x0 - addeq sp, sp, #0x8 - moveq r0, r4 - ldmeqia sp!, {r4-r6,pc} - ldr r1, [r6, #0x88] - ldr r2, [r6, #0x14] - add r0, r6, #0x34 - bl FS_ReadFile - ldr r1, [r6, #0x14] - cmp r0, r1 - addne sp, sp, #0x8 - movne r0, r4 - ldmneia sp!, {r4-r6,pc} -_020C26E0: - mov r0, #0x1 - add sp, sp, #0x8 - ldmia sp!, {r4-r6,pc} - .balign 4 -_020C26EC: .word SDATi_InfoDtor -_020C26F0: .word SDATi_FatDtor -_020C26F4: .word SDATi_SymbDtor - - arm_func_start SDAT_Open -SDAT_Open: ; 0x020C26F8 - ; r0: &sSoundDataBuffer - ; r1: char* filename - ; r2: (&sSoundDataBuffer)->unk_0090 - ; r3: 0 - stmdb sp!, {r4-r6,lr} - mov r6, r0 - mov r12, #0x0 - str r12, [r6, #0x8c] - str r12, [r6, #0x84] - add r0, r6, #0x7c - mov r5, r2 - mov r4, r3 - str r12, [r6, #0x88] - bl FS_ConvertPathToFileID - cmp r0, #0x0 - ldmeqia sp!, {r4-r6,pc} - add r0, r6, #0x34 - bl FS_InitFile - add r1, r6, #0x7c - add r0, r6, #0x34 - ldmia r1, {r1-r2} - bl FS_OpenFileFast - cmp r0, #0x0 - ldmeqia sp!, {r4-r6,pc} - mov r3, #0x1 - mov r0, r6 - mov r1, r5 - mov r2, r4 - str r3, [r6, #0x30] - bl SDATi_ReadHeaders - cmp r0, #0x0 - ldrne r0, _020C2770 ; =UNK_021D28C0 - strne r6, [r0, #0x0] - ldmia sp!, {r4-r6,pc} - .balign 4 -_020C2770: .word UNK_021D28C0 - - arm_func_start FUN_020C2774 -FUN_020C2774: ; 0x020C2774 - stmdb sp!, {r4,lr} - bl SND_GetCurrentCommandTag - mov r4, r0 - mov r0, #0x1 - bl SND_FlushCommand - mov r0, r4 - bl SND_WaitForCommandProc - ldmia sp!, {r4,pc} - - arm_func_start FUN_020C2794 -FUN_020C2794: - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - mov r5, r0 - ldr r0, [r5, #0x0] - mov r1, #0x14 - mov r2, #0x4 - bl FUN_020AE638 - movs r4, r0 - addeq sp, sp, #0x4 - moveq r0, #0x0 - ldmeqia sp!, {r4-r5,pc} - bl FUN_020C2818 - mov r1, r4 - add r0, r5, #0x4 - bl FUN_020ADBE8 - mov r0, #0x1 - add sp, sp, #0x4 - ldmia sp!, {r4-r5,pc} - - arm_func_start FUN_020C27DC -FUN_020C27DC: - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - mov r5, r0 - mov r4, r1 - add r0, r5, #0x4 - mov r1, #0xc - bl FUN_020ADC74 - mov r0, r5 - str r4, [r5, #0x0] - bl FUN_020C2794 - cmp r0, #0x0 - movne r0, #0x1 - moveq r0, #0x0 - add sp, sp, #0x4 - ldmia sp!, {r4-r5,pc} - - arm_func_start FUN_020C2818 -FUN_020C2818: ; 0x020C2818 - ldr ip, _020C2824 ; =FUN_020ADC74 - mov r1, #0x0 - bx r12 - .balign 4 -_020C2824: .word FUN_020ADC74 - - arm_func_start FUN_020C2828 -FUN_020C2828: ; 0x020C2828 - stmdb sp!, {r4-r11,lr} - sub sp, sp, #0x4 - mov r7, #0x0 - movs r9, r1 - mov r10, r0 - mov r6, r7 - bne _020C2850 - bl FUN_020C29C0 - add sp, sp, #0x4 - ldmia sp!, {r4-r11,pc} -_020C2850: - ldrh r0, [r10, #0xc] - cmp r9, r0 - bge _020C28D8 - mov r11, r7 - add r5, r10, #0x4 - mov r4, #0x1 -_020C2868: - mov r0, r5 - mov r1, r11 - bl FUN_020ADA84 - mov r1, r7 - mov r8, r0 - bl FUN_020ADA84 - movs r7, r0 - beq _020C28C0 -_020C2888: - ldr r12, [r7, #0xc] - cmp r12, #0x0 - beq _020C28AC - ldr r1, [r7, #0x8] - ldr r2, [r7, #0x10] - ldr r3, [r7, #0x14] - add r0, r7, #0x20 - blx r12 - mov r6, r4 -_020C28AC: - mov r0, r8 - mov r1, r7 - bl FUN_020ADA84 - movs r7, r0 - bne _020C2888 -_020C28C0: - mov r0, r5 - mov r1, r8 - bl FUN_020ADAB0 - ldrh r0, [r10, #0xc] - cmp r9, r0 - blt _020C2868 -_020C28D8: - ldr r0, [r10, #0x0] - mov r1, r9 - bl FUN_020AE554 - cmp r6, #0x0 - beq _020C28F0 - bl FUN_020C2774 -_020C28F0: - ldrh r1, [r10, #0xc] - ldr r0, [r10, #0x0] - bl FUN_020AE5B0 - mov r0, r10 - bl FUN_020C2794 - add sp, sp, #0x4 - ldmia sp!, {r4-r11,pc} - - arm_func_start FUN_020C290C -FUN_020C290C: ; 0x020C290C - stmdb sp!, {r4,lr} - mov r4, r0 - ldrh r1, [r4, #0xc] - ldr r0, [r4, #0x0] - bl FUN_020AE5B0 - cmp r0, #0x0 - mvneq r0, #0x0 - ldmeqia sp!, {r4,pc} - mov r0, r4 - bl FUN_020C2794 - cmp r0, #0x0 - ldrneh r0, [r4, #0xc] - subne r0, r0, #0x1 - ldmneia sp!, {r4,pc} - ldr r0, [r4, #0x0] - mov r1, #0x0 - bl FUN_020AE554 - mvn r0, #0x0 - ldmia sp!, {r4,pc} - - arm_func_start SDATi_AllocAndInitChunk -SDATi_AllocAndInitChunk: ; 0x020C2958 - stmdb sp!, {r4-r8,lr} - mov r7, r1 - mov r8, r0 - add r0, r7, #0x1f - bic r1, r0, #0x1f - mov r6, r2 - ldr r0, [r8, #0x0] - add r1, r1, #0x20 - mov r2, #0x20 - mov r5, r3 - bl FUN_020AE638 // some allocator? - movs r4, r0 - moveq r0, #0x0 - ldmeqia sp!, {r4-r8,pc} - add r0, r8, #0x4 - mov r1, #0x0 - bl FUN_020ADA84 - str r7, [r4, #0x8] - str r6, [r4, #0xc] - ldr r2, [sp, #0x18] - str r5, [r4, #0x10] - mov r1, r4 - str r2, [r4, #0x14] - bl FUN_020ADBE8 - add r0, r4, #0x20 - ldmia sp!, {r4-r8,pc} - - arm_func_start FUN_020C29C0 -FUN_020C29C0: - stmdb sp!, {r4-r10,lr} - mov r8, r0 - mov r5, #0x0 - mov r1, r5 - add r0, r8, #0x4 - bl FUN_020ADA84 - movs r7, r0 - beq _020C2A58 - add r9, r8, #0x4 - mov r10, #0x1 - mov r4, r5 -_020C29EC: - mov r0, r7 - mov r1, r4 - bl FUN_020ADA84 - movs r6, r0 - beq _020C2A38 -_020C2A00: - ldr r12, [r6, #0xc] - cmp r12, #0x0 - beq _020C2A24 - ldr r1, [r6, #0x8] - ldr r2, [r6, #0x10] - ldr r3, [r6, #0x14] - add r0, r6, #0x20 - blx r12 - mov r5, r10 -_020C2A24: - mov r0, r7 - mov r1, r6 - bl FUN_020ADA84 - movs r6, r0 - bne _020C2A00 -_020C2A38: - mov r0, r9 - mov r1, r7 - bl FUN_020ADAB0 - mov r0, r9 - mov r1, r4 - bl FUN_020ADA84 - movs r7, r0 - bne _020C29EC -_020C2A58: - ldr r0, [r8, #0x0] - mov r1, #0x3 - bl FUN_020AE600 - cmp r5, #0x0 - beq _020C2A70 - bl FUN_020C2774 -_020C2A70: - mov r0, r8 - bl FUN_020C2794 - ldmia sp!, {r4-r10,pc} - - arm_func_start FUN_020C2A7C -FUN_020C2A7C: ; 0x020C2A7C - stmdb sp!, {r4,lr} - mov r4, r0 - bl FUN_020C29C0 - ldr r0, [r4, #0x0] - bl thunk_FUN_020adc8c_2 - ldmia sp!, {r4,pc} - - arm_func_start FUN_020C2A94 -FUN_020C2A94: - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - add r2, r0, #0x3 - add r0, r0, r1 - bic r5, r2, #0x3 - cmp r5, r0 - addhi sp, sp, #0x4 - movhi r0, #0x0 - ldmhiia sp!, {r4-r5,pc} - sub r1, r0, r5 - cmp r1, #0x10 - addcc sp, sp, #0x4 - movcc r0, #0x0 - ldmccia sp!, {r4-r5,pc} - add r0, r5, #0x10 - sub r1, r1, #0x10 - mov r2, #0x0 - bl FUN_020AE684 - movs r4, r0 - addeq sp, sp, #0x4 - moveq r0, #0x0 - ldmeqia sp!, {r4-r5,pc} - mov r0, r5 - mov r1, r4 - bl FUN_020C27DC - cmp r0, #0x0 - addne sp, sp, #0x4 - movne r0, r5 - ldmneia sp!, {r4-r5,pc} - mov r0, r4 - bl thunk_FUN_020adc8c_2 - mov r0, #0x0 - add sp, sp, #0x4 - ldmia sp!, {r4-r5,pc} - - arm_func_start FUN_020C2B1C -FUN_020C2B1C: - stmdb sp!, {r4-r10,lr} - sub sp, sp, #0x20 - mov r8, r0 - add r0, sp, #0x8 - mov r7, r1 - mov r6, r2 - mov r5, r3 - ldr r4, [sp, #0x40] - bl SND_GetFirstInstDataPos - ldr r1, [sp, #0x8] - ldr r0, [sp, #0xc] - str r1, [sp, #0x0] - str r0, [sp, #0x4] - cmp r7, #0x0 - add r2, sp, #0x0 - addeq sp, sp, #0x20 - moveq r0, #0x0 - ldmeqia sp!, {r4-r10,pc} - add r1, sp, #0x10 - mov r0, r7 - bl SND_GetNextInstData - cmp r0, #0x0 - beq _020C2BD4 - add r10, sp, #0x10 - add r9, sp, #0x0 -_020C2B80: - ldrb r0, [sp, #0x10] - cmp r0, #0x1 - bne _020C2BBC - ldrh r0, [sp, #0x14] - cmp r6, r0 - bne _020C2BBC - ldrh r1, [sp, #0x12] - mov r0, r8 - mov r2, r5 - mov r3, r4 - bl FUN_020C2BE0 - cmp r0, #0x0 - addeq sp, sp, #0x20 - moveq r0, #0x0 - ldmeqia sp!, {r4-r10,pc} -_020C2BBC: - mov r0, r7 - mov r1, r10 - mov r2, r9 - bl SND_GetNextInstData - cmp r0, #0x0 - bne _020C2B80 -_020C2BD4: - mov r0, #0x1 - add sp, sp, #0x20 - ldmia sp!, {r4-r10,pc} - - arm_func_start FUN_020C2BE0 -FUN_020C2BE0: - stmdb sp!, {r4-r9,lr} - sub sp, sp, #0x4 - mov r7, r0 - mov r6, r1 - mov r5, r2 - mov r4, r3 - bl SND_GetWaveDataAddress - cmp r0, #0x0 - addne sp, sp, #0x4 - movne r0, #0x1 - ldmneia sp!, {r4-r9,pc} - mov r0, r7 - bl SND_GetWaveDataCount - ldr r1, [r7, #0x38] - sub r0, r0, #0x1 - add r1, r1, r6 - add r1, r7, r1, lsl #0x2 - cmp r6, r0 - ldrcc r0, [r1, #0x40] - ldr r8, [r1, #0x3c] - ldrcs r0, [r7, #0x8] - cmp r4, #0x0 - sub r9, r0, r8 - addeq sp, sp, #0x4 - moveq r0, #0x0 - ldmeqia sp!, {r4-r9,pc} - ldr r2, _020C2CBC ; =FUN_020C2CC0 - mov r0, r4 - mov r3, r7 - add r1, r9, #0x20 - str r6, [sp, #0x0] - bl SDATi_AllocAndInitChunk - movs r4, r0 - addeq sp, sp, #0x4 - moveq r0, #0x0 - ldmeqia sp!, {r4-r9,pc} - mov r0, r5 - mov r1, r4 - mov r2, r9 - mov r3, r8 - bl FUN_020C2104 - cmp r9, r0 - addne sp, sp, #0x4 - movne r0, #0x0 - ldmneia sp!, {r4-r9,pc} - mov r0, r4 - mov r1, r9 - bl DC_StoreRange - mov r0, r7 - mov r1, r6 - mov r2, r4 - bl SND_SetWaveDataAddress - mov r0, #0x1 - add sp, sp, #0x4 - ldmia sp!, {r4-r9,pc} - .balign 4 -_020C2CBC: .word FUN_020C2CC0 - - arm_func_start FUN_020C2CC0 -FUN_020C2CC0: ; 0x020C2CC0 - stmdb sp!, {r4-r7,lr} - sub sp, sp, #0x4 - mov r5, r2 - mov r7, r0 - mov r4, r3 - mov r6, r1 - mov r0, r5 - mov r1, r4 - bl SND_GetWaveDataAddress - cmp r7, r0 - bne _020C2CFC - mov r0, r5 - mov r1, r4 - mov r2, #0x0 - bl SND_SetWaveDataAddress -_020C2CFC: - mov r0, r7 - add r1, r7, r6 - bl SND_InvalidateWaveData - add sp, sp, #0x4 - ldmia sp!, {r4-r7,pc} - - arm_func_start FUN_020C2D10 -FUN_020C2D10: ; 0x020C2D10 - stmdb sp!, {r4,lr} - mov r1, r2 - mov r4, r0 - mov r2, r3 - bl FUN_020C2DD0 - mov r0, r4 - bl SND_DestroyWaveArc - ldmia sp!, {r4,pc} - - arm_func_start FUN_020C2D30 -FUN_020C2D30: ; 0x020C2D30 - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - mov r4, r1 - mov r1, r2 - mov r5, r0 - mov r2, r3 - bl FUN_020C2DD0 - mov r0, r5 - add r1, r5, r4 - bl SND_InvalidateWaveData - mov r0, r5 - bl SND_DestroyWaveArc - add sp, sp, #0x4 - ldmia sp!, {r4-r5,pc} - - arm_func_start FUN_020C2D68 -FUN_020C2D68: ; 0x020C2D68 - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - mov r4, r1 - mov r1, r2 - mov r5, r0 - mov r2, r3 - bl FUN_020C2DD0 - mov r0, r5 - add r1, r5, r4 - bl SND_InvalidateBankData - mov r0, r5 - bl SND_DestroyBank - add sp, sp, #0x4 - ldmia sp!, {r4-r5,pc} - - arm_func_start FUN_020C2DA0 -FUN_020C2DA0: ; 0x020C2DA0 - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - mov r4, r1 - mov r1, r2 - mov r5, r0 - mov r2, r3 - bl FUN_020C2DD0 - mov r0, r5 - add r1, r5, r4 - bl SND_InvalidateSeqData - add sp, sp, #0x4 - ldmia sp!, {r4-r5,pc} - - arm_func_start FUN_020C2DD0 -FUN_020C2DD0: ; 0x020C2DD0 - stmdb sp!, {r4-r7,lr} - sub sp, sp, #0x4 - movs r5, r1 - mov r7, r0 - mov r6, r2 - addeq sp, sp, #0x4 - ldmeqia sp!, {r4-r7,pc} - bl OS_DisableInterrupts - mov r4, r0 - mov r0, r5 - bl FUN_020C242C - mov r5, r0 - mov r0, r6 - bl FUN_020C20DC - cmp r7, r0 - bne _020C2E1C - mov r0, r6 - mov r1, #0x0 - bl FUN_020C20C0 -_020C2E1C: - mov r0, r5 - bl FUN_020C242C - mov r0, r4 - bl OS_RestoreInterrupts - add sp, sp, #0x4 - ldmia sp!, {r4-r7,pc} - - arm_func_start FUN_020C2E34 -FUN_020C2E34: ; 0x020C2E34 - stmdb sp!, {r4-r9,lr} - sub sp, sp, #0x4 - mov r9, r0 - mov r8, r1 - mov r7, r2 - bl FUN_020C20DC - movs r6, r0 - bne _020C2F40 - ldr r1, _020C2F4C ; =UNK_021D28C4 - mov r0, r9 - mov r2, #0x3c - mov r3, #0x0 - bl FUN_020C2104 - cmp r0, #0x3c - addne sp, sp, #0x4 - movne r0, #0x0 - ldmneia sp!, {r4-r9,pc} - ldr r0, _020C2F4C ; =UNK_021D28C4 - cmp r8, #0x0 - ldr r0, [r0, #0x38] - addeq sp, sp, #0x4 - mov r4, r0, lsl #0x2 - mov r0, r4, lsl #0x1 - add r5, r0, #0x3c - moveq r0, #0x0 - ldmeqia sp!, {r4-r9,pc} - cmp r7, #0x0 - moveq r3, #0x0 - beq _020C2EB0 - bl FUN_020C241C - mov r3, r0 -_020C2EB0: - ldr r2, _020C2F50 ; =FUN_020C2D10 - mov r0, r8 - add r1, r5, #0x20 - str r9, [sp, #0x0] - bl SDATi_AllocAndInitChunk - movs r6, r0 - addeq sp, sp, #0x4 - moveq r0, #0x0 - ldmeqia sp!, {r4-r9,pc} - mov r0, r9 - mov r1, r6 - add r2, r4, #0x3c - mov r3, #0x0 - bl FUN_020C2104 - add r1, r4, #0x3c - cmp r0, r1 - addne sp, sp, #0x4 - movne r0, #0x0 - ldmneia sp!, {r4-r9,pc} - ldr r1, [r6, #0x38] - add r0, r6, #0x3c - mov r2, r4 - add r1, r0, r1, lsl #0x2 - bl MI_CpuCopy8 - mov r2, r4 - add r0, r6, #0x3c - mov r1, #0x0 - bl MI_CpuFill8 - mov r0, r6 - mov r1, r5 - bl DC_StoreRange - cmp r7, #0x0 - beq _020C2F40 - mov r0, r9 - mov r1, r6 - bl FUN_020C20C0 -_020C2F40: - mov r0, r6 - add sp, sp, #0x4 - ldmia sp!, {r4-r9,pc} - .balign 4 -_020C2F4C: .word UNK_021D28C4 -_020C2F50: .word FUN_020C2D10 - - arm_func_start FUN_020C2F54 -FUN_020C2F54: - stmdb sp!, {r4-r7,lr} - sub sp, sp, #0x4 - mov r7, r0 - mov r6, r1 - mov r5, r2 - bl FUN_020C20DC - movs r4, r0 - bne _020C2FBC - cmp r5, #0x0 - moveq r2, #0x0 - beq _020C2F88 - bl FUN_020C241C - mov r2, r0 -_020C2F88: - ldr r1, _020C2FC8 ; =FUN_020C2D30 - mov r0, r7 - mov r3, r7 - str r6, [sp, #0x0] - bl FUN_020C3134 - mov r4, r0 - cmp r5, #0x0 - beq _020C2FBC - cmp r4, #0x0 - beq _020C2FBC - mov r0, r7 - mov r1, r4 - bl FUN_020C20C0 -_020C2FBC: - mov r0, r4 - add sp, sp, #0x4 - ldmia sp!, {r4-r7,pc} - .balign 4 -_020C2FC8: .word FUN_020C2D30 - - arm_func_start FUN_020C2FCC -FUN_020C2FCC: ; 0x020C2FCC - stmdb sp!, {r4-r7,lr} - sub sp, sp, #0x4 - mov r7, r0 - mov r6, r1 - mov r5, r2 - bl FUN_020C20DC - movs r4, r0 - bne _020C3034 - cmp r5, #0x0 - moveq r2, #0x0 - beq _020C3000 - bl FUN_020C241C - mov r2, r0 -_020C3000: - ldr r1, _020C3040 ; =FUN_020C2D68 - mov r0, r7 - mov r3, r7 - str r6, [sp, #0x0] - bl FUN_020C3134 - mov r4, r0 - cmp r5, #0x0 - beq _020C3034 - cmp r4, #0x0 - beq _020C3034 - mov r0, r7 - mov r1, r4 - bl FUN_020C20C0 -_020C3034: - mov r0, r4 - add sp, sp, #0x4 - ldmia sp!, {r4-r7,pc} - .balign 4 -_020C3040: .word FUN_020C2D68 - - arm_func_start FUN_020C3044 -FUN_020C3044: - stmdb sp!, {r4-r7,lr} - sub sp, sp, #0x4 - mov r7, r0 - mov r6, r1 - mov r5, r2 - bl FUN_020C20DC - movs r4, r0 - bne _020C30AC - cmp r5, #0x0 - moveq r2, #0x0 - beq _020C3078 - bl FUN_020C241C - mov r2, r0 -_020C3078: - ldr r1, _020C30B8 ; =FUN_020C2DA0 - mov r0, r7 - mov r3, r7 - str r6, [sp, #0x0] - bl FUN_020C3134 - mov r4, r0 - cmp r5, #0x0 - beq _020C30AC - cmp r4, #0x0 - beq _020C30AC - mov r0, r7 - mov r1, r4 - bl FUN_020C20C0 -_020C30AC: - mov r0, r4 - add sp, sp, #0x4 - ldmia sp!, {r4-r7,pc} - .balign 4 -_020C30B8: .word FUN_020C2DA0 - - arm_func_start FUN_020C30BC -FUN_020C30BC: - stmdb sp!, {r4-r7,lr} - sub sp, sp, #0x4 - mov r7, r0 - mov r6, r1 - mov r5, r2 - bl FUN_020C20DC - movs r4, r0 - bne _020C3124 - cmp r5, #0x0 - moveq r2, #0x0 - beq _020C30F0 - bl FUN_020C241C - mov r2, r0 -_020C30F0: - ldr r1, _020C3130 ; =FUN_020C2DA0 - mov r0, r7 - mov r3, r7 - str r6, [sp, #0x0] - bl FUN_020C3134 - mov r4, r0 - cmp r5, #0x0 - beq _020C3124 - cmp r4, #0x0 - beq _020C3124 - mov r0, r7 - mov r1, r4 - bl FUN_020C20C0 -_020C3124: - mov r0, r4 - add sp, sp, #0x4 - ldmia sp!, {r4-r7,pc} - .balign 4 -_020C3130: .word FUN_020C2DA0 - - arm_func_start FUN_020C3134 -FUN_020C3134: ; 0x020C3134 - stmdb sp!, {r4-r8,lr} - sub sp, sp, #0x8 - mov r8, r0 - mov r7, r1 - mov r6, r2 - mov r4, r3 - bl FUN_020C217C - movs r5, r0 - addeq sp, sp, #0x8 - moveq r0, #0x0 - ldmeqia sp!, {r4-r8,pc} - ldr r0, [sp, #0x20] - cmp r0, #0x0 - addeq sp, sp, #0x8 - moveq r0, #0x0 - ldmeqia sp!, {r4-r8,pc} - mov r2, r7 - mov r3, r6 - add r1, r5, #0x20 - str r4, [sp, #0x0] - bl SDATi_AllocAndInitChunk - movs r4, r0 - addeq sp, sp, #0x8 - moveq r0, #0x0 - ldmeqia sp!, {r4-r8,pc} - mov r0, r8 - mov r1, r4 - mov r2, r5 - mov r3, #0x0 - bl FUN_020C2104 - cmp r5, r0 - addne sp, sp, #0x8 - movne r0, #0x0 - ldmneia sp!, {r4-r8,pc} - mov r0, r4 - mov r1, r5 - bl DC_StoreRange - mov r0, r4 - add sp, sp, #0x8 - ldmia sp!, {r4-r8,pc} - - arm_func_start FUN_020C31D4 -FUN_020C31D4: - stmdb sp!, {r4-r6,lr} - mov r6, r1 - mov r5, r2 - mov r4, r3 - bl FUN_020C226C - cmp r0, #0x0 - moveq r0, #0x5 - ldmeqia sp!, {r4-r6,pc} - ands r1, r6, #0x4 - beq _020C324C - ldrb r1, [r0, #0x3] - ands r1, r1, #0x1 - beq _020C3224 - ldr r0, [r0, #0x0] - mov r1, r5 - mov r0, r0, lsl #0x8 - mov r2, r4 - mov r0, r0, lsr #0x8 - bl FUN_020C2E34 - b _020C323C -_020C3224: - ldr r0, [r0, #0x0] - mov r1, r5 - mov r0, r0, lsl #0x8 - mov r2, r4 - mov r0, r0, lsr #0x8 - bl FUN_020C2F54 -_020C323C: - cmp r0, #0x0 - bne _020C325C - mov r0, #0x9 - ldmia sp!, {r4-r6,pc} -_020C324C: - ldr r0, [r0, #0x0] - mov r0, r0, lsl #0x8 - mov r0, r0, lsr #0x8 - bl FUN_020C20DC -_020C325C: - ldr r1, [sp, #0x10] - cmp r1, #0x0 - strne r0, [r1, #0x0] - mov r0, #0x0 - ldmia sp!, {r4-r6,pc} - - arm_func_start FUN_020C3270 -FUN_020C3270: - stmdb sp!, {r4-r11,lr} - sub sp, sp, #0xc - mov r10, r1 - mov r9, r2 - mov r11, r3 - bl FUN_020C22D0 - movs r8, r0 - addeq sp, sp, #0xc - moveq r0, #0x4 - ldmeqia sp!, {r4-r11,pc} - ands r0, r10, #0x2 - beq _020C32C4 - ldr r0, [r8, #0x0] - mov r1, r9 - mov r2, r11 - bl FUN_020C2FCC - movs r7, r0 - bne _020C32D0 - add sp, sp, #0xc - mov r0, #0x8 - ldmia sp!, {r4-r11,pc} -_020C32C4: - ldr r0, [r8, #0x0] - bl FUN_020C20DC - mov r7, r0 -_020C32D0: - and r5, r10, #0x4 - mov r6, #0x0 -_020C32D8: - add r0, r8, r6, lsl #0x1 - ldrh r0, [r0, #0x4] - ldr r1, _020C33B4 ; =0x0000FFFF - cmp r0, r1 - beq _020C3390 - bl FUN_020C226C - movs r4, r0 - addeq sp, sp, #0xc - moveq r0, #0x5 - ldmeqia sp!, {r4-r11,pc} - add r0, sp, #0x4 - str r0, [sp, #0x0] - add r0, r8, r6, lsl #0x1 - ldrh r0, [r0, #0x4] - mov r1, r10 - mov r2, r9 - mov r3, r11 - bl FUN_020C31D4 - cmp r0, #0x0 - addne sp, sp, #0xc - ldmneia sp!, {r4-r11,pc} - ldrb r0, [r4, #0x3] - ands r0, r0, #0x1 - beq _020C3370 - cmp r5, #0x0 - beq _020C3370 - str r9, [sp, #0x0] - ldr r1, [r4, #0x0] - ldr r0, [sp, #0x4] - mov r3, r1, lsl #0x8 - mov r1, r7 - mov r2, r6 - mov r3, r3, lsr #0x8 - bl FUN_020C2B1C - cmp r0, #0x0 - addeq sp, sp, #0xc - moveq r0, #0x9 - ldmeqia sp!, {r4-r11,pc} -_020C3370: - cmp r7, #0x0 - beq _020C3390 - ldr r2, [sp, #0x4] - cmp r2, #0x0 - beq _020C3390 - mov r0, r7 - mov r1, r6 - bl SND_AssignWaveArc -_020C3390: - add r6, r6, #0x1 - cmp r6, #0x4 - blt _020C32D8 - ldr r0, [sp, #0x30] - cmp r0, #0x0 - strne r7, [r0, #0x0] - mov r0, #0x0 - add sp, sp, #0xc - ldmia sp!, {r4-r11,pc} - .balign 4 -_020C33B4: .word 0x0000FFFF - - arm_func_start FUN_020C33B8 -FUN_020C33B8: - stmdb sp!, {r4-r6,lr} - mov r6, r1 - mov r5, r2 - mov r4, r3 - bl FUN_020C2334 - cmp r0, #0x0 - moveq r0, #0x3 - ldmeqia sp!, {r4-r6,pc} - ands r1, r6, #0x8 - beq _020C3400 - ldr r0, [r0, #0x0] - mov r1, r5 - mov r2, r4 - bl FUN_020C3044 - cmp r0, #0x0 - bne _020C3408 - mov r0, #0x7 - ldmia sp!, {r4-r6,pc} -_020C3400: - ldr r0, [r0, #0x0] - bl FUN_020C20DC -_020C3408: - ldr r1, [sp, #0x10] - cmp r1, #0x0 - strne r0, [r1, #0x0] - mov r0, #0x0 - ldmia sp!, {r4-r6,pc} - - arm_func_start FUN_020C341C -FUN_020C341C: - stmdb sp!, {r4-r7,lr} - sub sp, sp, #0x4 - mov r7, r1 - mov r6, r2 - mov r5, r3 - bl FUN_020C2398 - movs r4, r0 - addeq sp, sp, #0x4 - moveq r0, #0x2 - ldmeqia sp!, {r4-r7,pc} - mov r0, #0x0 - str r0, [sp, #0x0] - ldrh r0, [r4, #0x4] - mov r1, r7 - mov r2, r6 - mov r3, r5 - bl FUN_020C3270 - cmp r0, #0x0 - addne sp, sp, #0x4 - ldmneia sp!, {r4-r7,pc} - ands r0, r7, #0x1 - beq _020C3498 - ldr r0, [r4, #0x0] - mov r1, r6 - mov r2, r5 - bl FUN_020C30BC - cmp r0, #0x0 - bne _020C34A0 - add sp, sp, #0x4 - mov r0, #0x6 - ldmia sp!, {r4-r7,pc} -_020C3498: - ldr r0, [r4, #0x0] - bl FUN_020C20DC -_020C34A0: - ldr r1, [sp, #0x18] - cmp r1, #0x0 - strne r0, [r1, #0x0] - mov r0, #0x0 - add sp, sp, #0x4 - ldmia sp!, {r4-r7,pc} - - arm_func_start FUN_020C34B8 -FUN_020C34B8: - stmdb sp!, {r4-r11,lr} - sub sp, sp, #0xc - mov r9, r1 - bl FUN_020C21A4 - movs r8, r0 - addeq sp, sp, #0xc - moveq r0, #0x1 - ldmeqia sp!, {r4-r11,pc} - ldr r0, [r8, #0x0] - mov r7, #0x0 - cmp r0, #0x0 - bls _020C35D4 - add r6, r8, #0x4 - str r7, [sp, #0x4] - mov r11, r7 - mov r10, r7 - mov r5, r7 - mov r4, #0x1 -_020C3500: - ldrb r0, [r6, #0x0] - cmp r0, #0x3 - addls pc, pc, r0, lsl #0x2 - b _020C35C0 - ; Jump table - b _020C3520 ; case 0 - b _020C3570 ; case 1 - b _020C3598 ; case 2 - b _020C3548 ; case 3 -_020C3520: - str r5, [sp, #0x0] - ldrb r1, [r6, #0x1] - ldr r0, [r6, #0x4] - mov r2, r9 - mov r3, r4 - bl FUN_020C341C - cmp r0, #0x0 - beq _020C35C0 - add sp, sp, #0xc - ldmia sp!, {r4-r11,pc} -_020C3548: - str r10, [sp, #0x0] - ldrb r1, [r6, #0x1] - ldr r0, [r6, #0x4] - mov r2, r9 - mov r3, r4 - bl FUN_020C33B8 - cmp r0, #0x0 - beq _020C35C0 - add sp, sp, #0xc - ldmia sp!, {r4-r11,pc} -_020C3570: - str r11, [sp, #0x0] - ldrb r1, [r6, #0x1] - ldr r0, [r6, #0x4] - mov r2, r9 - mov r3, r4 - bl FUN_020C3270 - cmp r0, #0x0 - beq _020C35C0 - add sp, sp, #0xc - ldmia sp!, {r4-r11,pc} -_020C3598: - ldr r0, [sp, #0x4] - mov r2, r9 - str r0, [sp, #0x0] - ldrb r1, [r6, #0x1] - ldr r0, [r6, #0x4] - mov r3, r4 - bl FUN_020C31D4 - cmp r0, #0x0 - addne sp, sp, #0xc - ldmneia sp!, {r4-r11,pc} -_020C35C0: - ldr r0, [r8, #0x0] - add r7, r7, #0x1 - cmp r7, r0 - add r6, r6, #0x8 - blo _020C3500 -_020C35D4: - mov r0, #0x0 - add sp, sp, #0xc - ldmia sp!, {r4-r11,pc} - - arm_func_start FUN_020C35E0 -FUN_020C35E0: ; 0x020C35E0 - stmdb sp!, {lr} - sub sp, sp, #0x4 - mov r12, #0x0 - mov r3, #0x1 - str r12, [sp, #0x0] - bl FUN_020C341C - cmp r0, #0x0 - moveq r0, #0x1 - movne r0, #0x0 - add sp, sp, #0x4 - ldmia sp!, {pc} - - arm_func_start FUN_020C360C -FUN_020C360C: ; 0x020C360C - stmdb sp!, {lr} - sub sp, sp, #0x4 - mov r2, r1 - mov r12, #0x0 - mov r1, #0xff - mov r3, #0x1 - str r12, [sp, #0x0] - bl FUN_020C31D4 - cmp r0, #0x0 - moveq r0, #0x1 - movne r0, #0x0 - add sp, sp, #0x4 - ldmia sp!, {pc} - - arm_func_start FUN_020C3640 -FUN_020C3640: ; 0x020C3640 - stmdb sp!, {lr} - sub sp, sp, #0x4 - mov r2, r1 - mov r12, #0x0 - mov r1, #0xff - mov r3, #0x1 - str r12, [sp, #0x0] - bl FUN_020C3270 - cmp r0, #0x0 - moveq r0, #0x1 - movne r0, #0x0 - add sp, sp, #0x4 - ldmia sp!, {pc} - - arm_func_start FUN_020C3674 -FUN_020C3674: ; 0x020C3674 - stmdb sp!, {lr} - sub sp, sp, #0x4 - mov r2, r1 - mov r12, #0x0 - mov r1, #0xff - mov r3, #0x1 - str r12, [sp, #0x0] - bl FUN_020C341C - cmp r0, #0x0 - moveq r0, #0x1 - movne r0, #0x0 - add sp, sp, #0x4 - ldmia sp!, {pc} - - arm_func_start FUN_020C36A8 -FUN_020C36A8: ; 0x020C36A8 - stmdb sp!, {lr} - sub sp, sp, #0x4 - bl FUN_020C34B8 - cmp r0, #0x0 - moveq r0, #0x1 - movne r0, #0x0 - add sp, sp, #0x4 - ldmia sp!, {pc} - - arm_func_start FUN_020C36C8 -FUN_020C36C8: ; 0x020C36C8 - stmdb sp!, {r4-r8,lr} - sub sp, sp, #0x8 - mov r7, r2 - mov r2, r3 - ldr r6, [sp, #0x20] - mov r4, r0 - mov r8, r1 - bl FUN_020C0AF4 - movs r5, r0 - addeq sp, sp, #0x8 - moveq r0, #0x0 - ldmeqia sp!, {r4-r8,pc} - mov r0, r8 - mov r1, r5 - bl FUN_020C09B0 - add r12, sp, #0x4 - mov r2, r0 - mov r0, r7 - mov r1, #0x6 - mov r3, #0x0 - str r12, [sp, #0x0] - bl FUN_020C3270 - cmp r0, #0x0 - beq _020C373C - mov r0, r5 - bl thunk_FUN_020c077c - add sp, sp, #0x8 - mov r0, #0x0 - ldmia sp!, {r4-r8,pc} -_020C373C: - ldr r12, [sp, #0x24] - ldr r2, [r6, #0x0] - ldr r1, [r12, #0x18] - ldr r3, [sp, #0x4] - mov r0, r5 - add r1, r12, r1 - bl FUN_020C0A90 - ldrb r1, [r6, #0x6] - mov r0, r4 - bl FUN_020C0F30 - ldrb r1, [r6, #0x7] - mov r0, r4 - bl FUN_020C0ECC - ldr r1, [sp, #0x28] - ldr r2, [sp, #0x2c] - mov r0, r4 - bl FUN_020C0E38 - mov r0, #0x1 - add sp, sp, #0x8 - ldmia sp!, {r4-r8,pc} - - arm_func_start FUN_020C378C -FUN_020C378C: ; 0x020C378C - stmdb sp!, {r4-r8,lr} - sub sp, sp, #0x10 - mov r8, r2 - mov r2, r3 - ldr r5, [sp, #0x28] - mov r6, r0 - mov r7, r1 - bl FUN_020C0AF4 - movs r4, r0 - addeq sp, sp, #0x10 - moveq r0, #0x0 - ldmeqia sp!, {r4-r8,pc} - mov r0, r7 - mov r1, r4 - bl FUN_020C09B0 - mov r7, r0 - add r12, sp, #0x8 - mov r0, r8 - mov r2, r7 - mov r1, #0x6 - mov r3, #0x0 - str r12, [sp, #0x0] - bl FUN_020C3270 - cmp r0, #0x0 - beq _020C3804 - mov r0, r4 - bl thunk_FUN_020c077c - add sp, sp, #0x10 - mov r0, #0x0 - ldmia sp!, {r4-r8,pc} -_020C3804: - ldr r0, [sp, #0x2c] - add r12, sp, #0x4 - mov r2, r7 - mov r1, #0x1 - mov r3, #0x0 - str r12, [sp, #0x0] - bl FUN_020C341C - cmp r0, #0x0 - beq _020C383C - mov r0, r4 - bl thunk_FUN_020c077c - add sp, sp, #0x10 - mov r0, #0x0 - ldmia sp!, {r4-r8,pc} -_020C383C: - ldr r2, [sp, #0x4] - ldr r3, [sp, #0x8] - ldr r1, [r2, #0x18] - mov r0, r4 - add r1, r2, r1 - mov r2, #0x0 - bl FUN_020C0A90 - ldrb r1, [r5, #0x6] - mov r0, r6 - bl FUN_020C0F30 - ldrb r1, [r5, #0x7] - mov r0, r6 - bl FUN_020C0ECC - ldr r1, [sp, #0x2c] - mov r0, r6 - bl FUN_020C0E60 - mov r0, #0x1 - add sp, sp, #0x10 - ldmia sp!, {r4-r8,pc} - - arm_func_start FUN_020C3888 -FUN_020C3888: ; 0x020C3888 - stmdb sp!, {r4-r7,lr} - sub sp, sp, #0x14 - mov r6, r1 - mov r7, r0 - mov r0, r6 - mov r5, r2 - bl FUN_020C2334 - cmp r0, #0x0 - addeq sp, sp, #0x14 - moveq r0, #0x0 - ldmeqia sp!, {r4-r7,pc} - ldr r0, [r0, #0x0] - bl FUN_020C20DC - movs r4, r0 - addeq sp, sp, #0x14 - moveq r0, #0x0 - ldmeqia sp!, {r4-r7,pc} - mov r1, r5 - bl FUN_020C3D9C - cmp r0, #0x0 - addeq sp, sp, #0x14 - moveq r0, #0x0 - ldmeqia sp!, {r4-r7,pc} - str r0, [sp, #0x0] - str r4, [sp, #0x4] - str r6, [sp, #0x8] - str r5, [sp, #0xc] - ldrb r1, [r0, #0x9] - ldrh r2, [r0, #0x4] - ldrb r3, [r0, #0x8] - mov r0, r7 - bl FUN_020C36C8 - add sp, sp, #0x14 - ldmia sp!, {r4-r7,pc} - - arm_func_start FUN_020C3910 -FUN_020C3910: ; 0x020C3910 - stmdb sp!, {r4-r7,lr} - sub sp, sp, #0xc - mov r7, r0 - ldr r0, [sp, #0x20] - mov r6, r1 - mov r5, r2 - mov r4, r3 - bl FUN_020C2398 - cmp r0, #0x0 - addeq sp, sp, #0xc - moveq r0, #0x0 - ldmeqia sp!, {r4-r7,pc} - cmp r4, #0x0 - ldrltb r4, [r0, #0x8] - cmp r5, #0x0 - ldrlth r5, [r0, #0x4] - cmp r6, #0x0 - ldrltb r6, [r0, #0x9] - ldr r12, [sp, #0x20] - mov r2, r5 - str r0, [sp, #0x0] - mov r0, r7 - mov r1, r6 - mov r3, r4 - str r12, [sp, #0x4] - bl FUN_020C378C - add sp, sp, #0xc - ldmia sp!, {r4-r7,pc} - - arm_func_start FUN_020C3980 -FUN_020C3980: ; 0x020C3980 - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0xc - mov r4, r1 - mov r5, r0 - mov r0, r4 - bl FUN_020C2398 - cmp r0, #0x0 - addeq sp, sp, #0xc - moveq r0, #0x0 - ldmeqia sp!, {r4-r5,pc} - str r0, [sp, #0x0] - str r4, [sp, #0x4] - ldrb r1, [r0, #0x9] - ldrh r2, [r0, #0x4] - ldrb r3, [r0, #0x8] - mov r0, r5 - bl FUN_020C378C - add sp, sp, #0xc - ldmia sp!, {r4-r5,pc} - - arm_func_start FUN_020C39CC -FUN_020C39CC: ; 0x020C39CC - stmdb sp!, {r4-r8,lr} - mov r6, r0 - bl FUN_020C241C - mov r5, #0x0 - mov r7, r5 -_020C39E0: - mov r0, r5 - bl FUN_020C2208 - movs r4, r0 - beq _020C3A58 - ldrb r1, [r4, #0x0] - mov r0, r5 - bl FUN_020C1160 - ldrh r1, [r4, #0x2] - mov r0, r5 - bl FUN_020C1148 - ldr r0, [r4, #0x4] - cmp r0, #0x0 - beq _020C3A58 - cmp r6, #0x0 - beq _020C3A58 - ldrb r0, [r4, #0x0] - mov r8, r7 - cmp r0, #0x0 - ble _020C3A58 -_020C3A2C: - ldr r2, [r4, #0x4] - mov r0, r5 - mov r1, r6 - bl FUN_020C10B4 - cmp r0, #0x0 - moveq r0, #0x0 - ldmeqia sp!, {r4-r8,pc} - ldrb r0, [r4, #0x0] - add r8, r8, #0x1 - cmp r8, r0 - blt _020C3A2C -_020C3A58: - add r5, r5, #0x1 - cmp r5, #0x20 - blt _020C39E0 - mov r0, #0x1 - ldmia sp!, {r4-r8,pc} - - arm_func_start FUN_020C3A6C -FUN_020C3A6C: ; 0x020C3A6C - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - mov r5, r0 - bl OS_DisableInterrupts - mov r4, r0 - ldr r0, _020C3A9C ; =UNK_021D2904 - mov r1, r5 - bl FUN_020ADBE8 - mov r0, r4 - bl OS_RestoreInterrupts - add sp, sp, #0x4 - ldmia sp!, {r4-r5,pc} - .balign 4 -_020C3A9C: .word UNK_021D2904 - - arm_func_start FUN_020C3AA0 -FUN_020C3AA0: ; 0x020C3AA0 - stmdb sp!, {r4-r8,lr} - mov r8, r0 - mov r7, r1 - bl OS_DisableInterrupts - mov r6, r0 - mov r0, r8 - mov r1, #0x0 - bl FUN_020ADA98 - movs r5, r0 - beq _020C3B04 -_020C3AC8: - mov r0, r8 - mov r1, r5 - bl FUN_020ADA98 - ldr r1, [r5, #0x8] - mov r4, r0 - cmp r1, r7 - bne _020C3AF8 - mov r0, r8 - mov r1, r5 - bl FUN_020ADAB0 - mov r0, r5 - bl FUN_020C3A6C -_020C3AF8: - mov r5, r4 - cmp r4, #0x0 - bne _020C3AC8 -_020C3B04: - mov r0, r6 - bl OS_RestoreInterrupts - ldmia sp!, {r4-r8,pc} - - arm_func_start FUN_020C3B10 -FUN_020C3B10: ; 0x020C3B10 - stmdb sp!, {lr} - sub sp, sp, #0x4 - ldr r1, [r0, #0x120] - cmp r1, #0x0 - addeq sp, sp, #0x4 - ldmeqia sp!, {pc} - sub r1, r1, #0x1 - str r1, [r0, #0x120] - ldr r1, [r0, #0x120] - cmp r1, #0x0 - addne sp, sp, #0x4 - ldmneia sp!, {pc} - bl FUN_020C1674 - add sp, sp, #0x4 - ldmia sp!, {pc} - - arm_func_start FUN_020C3B4C -FUN_020C3B4C: ; 0x020C3B4C - stmdb sp!, {r4,lr} - mov r4, r0 - ldr r1, [r4, #0x110] - mov r1, r1, lsl #0x1f - movs r1, r1, asr #0x1f - ldmeqia sp!, {r4,pc} - bl FUN_020C3B10 - ldr r1, [r4, #0x164] - mov r0, r4 - blx r1 - ldr r0, _020C3BA8 ; =UNK_021D2DF0 - mov r1, r4 - bl FUN_020C3AA0 - ldr r0, _020C3BAC ; =UNK_021D2900 - ldr r0, [r0, #0x0] - cmp r0, #0x0 - beq _020C3B9C - mov r1, r4 - add r0, r0, #0x4e0 - bl FUN_020C3AA0 -_020C3B9C: - mov r0, r4 - bl FUN_020C3C4C - ldmia sp!, {r4,pc} - .balign 4 -_020C3BA8: .word UNK_021D2DF0 -_020C3BAC: .word UNK_021D2900 - - arm_func_start FUN_020C3BB0 -FUN_020C3BB0: ; 0x020C3BB0 - stmdb sp!, {r4,lr} - mov r4, r0 - ldr r0, _020C3C40 ; =UNK_021D2DD8 - bl OS_LockMutex - ldr r0, _020C3C44 ; =UNK_021D2900 - ldr r1, [r0, #0x0] - cmp r1, #0x0 - beq _020C3BDC - ldr r0, _020C3C48 ; =0x000004C8 - add r0, r1, r0 - bl OS_LockMutex -_020C3BDC: - ldr r0, [r4, #0x110] - mov r0, r0, lsl #0x1e - movs r0, r0, asr #0x1f - beq _020C3BF4 - mov r0, r4 - bl FUN_020C1430 -_020C3BF4: - ldr r0, [r4, #0x110] - mov r0, r0, lsl #0x1f - movs r0, r0, asr #0x1f - beq _020C3C10 - ldr r1, [r4, #0x16c] - mov r0, r4 - blx r1 -_020C3C10: - mov r0, r4 - bl FUN_020C3B4C - ldr r0, _020C3C40 ; =UNK_021D2DD8 - bl OS_UnlockMutex - ldr r0, _020C3C44 ; =UNK_021D2900 - ldr r1, [r0, #0x0] - cmp r1, #0x0 - ldmeqia sp!, {r4,pc} - ldr r0, _020C3C48 ; =0x000004C8 - add r0, r1, r0 - bl OS_UnlockMutex - ldmia sp!, {r4,pc} - .balign 4 -_020C3C40: .word UNK_021D2DD8 -_020C3C44: .word UNK_021D2900 -_020C3C48: .word 0x000004C8 - - arm_func_start FUN_020C3C4C -FUN_020C3C4C: ; 0x020C3C4C - ldr r2, [r0, #0x14c] - cmp r2, #0x0 - movne r1, #0x0 - strne r1, [r2, #0x0] - strne r1, [r0, #0x14c] - ldr r1, [r0, #0x110] - bic r1, r1, #0x1 - str r1, [r0, #0x110] - ldr r1, [r0, #0x110] - bic r1, r1, #0x4 - str r1, [r0, #0x110] - ldr r1, [r0, #0x110] - bic r1, r1, #0x2 - str r1, [r0, #0x110] - bx lr - - arm_func_start FUN_020C3C88 -FUN_020C3C88: - stmdb sp!, {r4-r7,lr} - sub sp, sp, #0x4 - ldr r5, _020C3D94 ; =UNK_021D2DFC - mov r7, #0x0 - ldr r4, _020C3D98 ; =SNDi_DecibelTable -_020C3C9C: - ldr r1, [r5, #0x110] - mov r0, r1, lsl #0x1f - movs r0, r0, asr #0x1f - beq _020C3D7C - ldr r0, [r5, #0x114] - cmp r0, #0x0 - bne _020C3CC4 - mov r0, r5 - bl FUN_020C3BB0 - b _020C3D7C -_020C3CC4: - mov r0, r1, lsl #0x1d - movs r0, r0, asr #0x1f - beq _020C3CFC - ldr r0, [r5, #0x118] - cmp r0, #0x0 - beq _020C3CFC - mov r0, r5 - bl FUN_020C1458 - ldr r0, [r5, #0x110] - orr r0, r0, #0x2 - str r0, [r5, #0x110] - ldr r0, [r5, #0x110] - bic r0, r0, #0x4 - str r0, [r5, #0x110] -_020C3CFC: - ldr r0, [r5, #0x110] - mov r0, r0, lsl #0x1e - movs r0, r0, asr #0x1f - beq _020C3D7C - add r0, r5, #0xe8 - bl FUN_020C3DF4 - ldr r1, [r5, #0x154] - add r0, r5, #0xe8 - mov r1, r1, lsl #0x1 - ldrsh r6, [r4, r1] - bl FUN_020C3E0C - mov r0, r0, asr #0x8 - mov r0, r0, lsl #0x1 - ldrsh r1, [r4, r0] - ldr r0, [r5, #0x158] - add r6, r1, r6 - cmp r6, r0 - beq _020C3D54 - mov r0, r5 - mov r1, r6 - bl FUN_020C13C4 - str r6, [r5, #0x158] -_020C3D54: - ldr r0, [r5, #0x110] - mov r0, r0, lsl #0x1c - movs r0, r0, asr #0x1f - beq _020C3D7C - add r0, r5, #0xe8 - bl FUN_020C3DDC - cmp r0, #0x0 - beq _020C3D7C - mov r0, r5 - bl FUN_020C3BB0 -_020C3D7C: - add r7, r7, #0x1 - cmp r7, #0x4 - add r5, r5, #0x170 - blt _020C3C9C - add sp, sp, #0x4 - ldmia sp!, {r4-r7,pc} - .balign 4 -_020C3D94: .word UNK_021D2DFC -_020C3D98: .word SNDi_DecibelTable - - arm_func_start FUN_020C3D9C -FUN_020C3D9C: - cmp r1, #0x0 - movlt r0, #0x0 - bxlt lr - ldr r2, [r0, #0x1c] - cmp r1, r2 - movcs r0, #0x0 - bxcs lr - mov r2, #0xc - mul r2, r1, r2 - add r3, r0, #0x20 - ldr r1, [r3, r2] - mvn r0, #0x0 - cmp r1, r0 - add r0, r3, r2 - moveq r0, #0x0 - bx lr - - arm_func_start FUN_020C3DDC -FUN_020C3DDC: - ldr r1, [r0, #0x8] - ldr r0, [r0, #0xc] - cmp r1, r0 - movge r0, #0x1 - movlt r0, #0x0 - bx lr - - arm_func_start FUN_020C3DF4 -FUN_020C3DF4: ; 0x020C3DF4 - ldr r2, [r0, #0x8] - ldr r1, [r0, #0xc] - cmp r2, r1 - addlt r1, r2, #0x1 - strlt r1, [r0, #0x8] - bx lr - - arm_func_start FUN_020C3E0C -FUN_020C3E0C: - stmdb sp!, {r4,lr} - ldr r1, [r0, #0xc] - ldr r2, [r0, #0x8] - cmp r2, r1 - ldrge r0, [r0, #0x4] - ldmgeia sp!, {r4,pc} - ldr r4, [r0, #0x0] - ldr r0, [r0, #0x4] - sub r0, r0, r4 - mul r0, r2, r0 - bl _s32_div_f - add r0, r4, r0 - ldmia sp!, {r4,pc} - - arm_func_start FUN_020C3E40 -FUN_020C3E40: - stmdb sp!, {r4-r6,lr} - mov r6, r0 - mov r5, r1 - mov r4, r2 - bl FUN_020C3E0C - str r0, [r6, #0x0] - str r5, [r6, #0x4] - str r4, [r6, #0xc] - mov r0, #0x0 - str r0, [r6, #0x8] - ldmia sp!, {r4-r6,pc} - - arm_func_start FUN_020C3E6C -FUN_020C3E6C: ; 0x020C3E6C - mov r2, #0x0 - str r2, [r0, #0x4] - ldr r1, [r0, #0x4] - str r1, [r0, #0x0] - str r2, [r0, #0xc] - ldr r1, [r0, #0xc] - str r1, [r0, #0x8] - bx lr diff --git a/arm9/asm/unk_020010A8.s b/arm9/asm/unk_020010A8.s deleted file mode 100644 index 440ba8e2..00000000 --- a/arm9/asm/unk_020010A8.s +++ /dev/null @@ -1,1514 +0,0 @@ - .include "asm/macros.inc" - .include "global.inc" - - .extern gMain - - .text - - thumb_func_start FUN_020010A8 -FUN_020010A8: ; 0x020010A8 - push {r3-r7, lr} - add r5, r0, #0x0 - add r6, r1, #0x0 - add r0, r3, #0x0 - mov r1, #0x38 - add r7, r2, #0x0 - str r3, [sp, #0x0] - bl AllocFromHeap - add r4, r0, #0x0 - add r3, r5, #0x0 - add r2, r4, #0x0 - ldmia r3!, {r0-r1} - stmia r2!, {r0-r1} - ldmia r3!, {r0-r1} - stmia r2!, {r0-r1} - ldmia r3!, {r0-r1} - stmia r2!, {r0-r1} - ldmia r3!, {r0-r1} - stmia r2!, {r0-r1} - ldr r0, [sp, #0x0] - bl FUN_02013690 - str r0, [r4, #0x28] - strh r6, [r4, #0x2c] - add r1, r4, #0x0 - strh r7, [r4, #0x2e] - mov r0, #0x0 - add r1, #0x30 - strb r0, [r1, #0x0] - add r1, r4, #0x0 - add r1, #0x31 - strb r0, [r1, #0x0] - add r1, r4, #0x0 - mov r2, #0xff - add r1, #0x32 - strb r2, [r1, #0x0] - add r1, r4, #0x0 - add r1, #0x33 - strb r0, [r1, #0x0] - add r1, r4, #0x0 - ldr r0, [sp, #0x0] - add r1, #0x34 - strb r0, [r1, #0x0] - add r0, r4, #0x0 - ldrb r1, [r4, #0x17] - add r0, #0x20 - ldrb r2, [r0, #0x0] - lsl r1, r1, #0x18 - mov r0, #0xf - lsr r3, r1, #0x1c - mov r1, #0xf - bic r2, r0 - and r3, r1 - orr r3, r2 - add r2, r4, #0x0 - add r2, #0x20 - strb r3, [r2, #0x0] - add r2, r4, #0x0 - add r2, #0x20 - ldrb r2, [r2, #0x0] - mov r3, #0xf0 - bic r2, r3 - ldrb r3, [r4, #0x18] - lsl r3, r3, #0x1c - lsr r3, r3, #0x1c - lsl r3, r3, #0x1c - lsr r3, r3, #0x18 - orr r3, r2 - add r2, r4, #0x0 - add r2, #0x20 - strb r3, [r2, #0x0] - add r2, r4, #0x0 - add r2, #0x21 - ldrb r2, [r2, #0x0] - bic r2, r0 - ldrb r0, [r4, #0x18] - lsl r0, r0, #0x18 - lsr r0, r0, #0x1c - and r0, r1 - add r1, r2, #0x0 - orr r1, r0 - add r0, r4, #0x0 - add r0, #0x21 - strb r1, [r0, #0x0] - add r0, r4, #0x0 - add r0, #0x22 - ldrb r0, [r0, #0x0] - mov r1, #0x3f - bic r0, r1 - ldrh r1, [r4, #0x1a] - lsl r1, r1, #0x1d - lsr r1, r1, #0x1d - lsl r1, r1, #0x18 - lsr r2, r1, #0x18 - mov r1, #0x3f - and r1, r2 - orr r1, r0 - add r0, r4, #0x0 - add r0, #0x22 - strb r1, [r0, #0x0] - add r0, r4, #0x0 - add r0, #0x24 - ldrb r0, [r0, #0x0] - mov r1, #0x7f - bic r0, r1 - ldrh r1, [r4, #0x1a] - lsl r1, r1, #0x11 - lsr r1, r1, #0x1a - lsl r1, r1, #0x18 - lsr r2, r1, #0x18 - mov r1, #0x7f - and r1, r2 - orr r1, r0 - add r0, r4, #0x0 - add r0, #0x24 - strb r1, [r0, #0x0] - add r0, r4, #0x0 - add r0, #0x24 - ldrb r1, [r0, #0x0] - mov r0, #0x80 - bic r1, r0 - add r0, r4, #0x0 - add r0, #0x24 - strb r1, [r0, #0x0] - ldrh r1, [r4, #0x10] - ldrh r0, [r4, #0x12] - cmp r1, r0 - bhs _020011AC - strh r1, [r4, #0x12] -_020011AC: - ldrb r2, [r4, #0x18] - ldr r0, [r4, #0x28] - lsl r1, r2, #0x1c - lsr r1, r1, #0x1c - lsl r1, r1, #0x18 - lsr r3, r1, #0x18 - ldrb r1, [r4, #0x17] - lsl r2, r2, #0x18 - lsr r2, r2, #0x1c - lsl r1, r1, #0x18 - lsr r1, r1, #0x1c - lsl r1, r1, #0x18 - lsl r2, r2, #0x18 - lsr r1, r1, #0x8 - lsr r2, r2, #0x10 - orr r1, r2 - orr r1, r3 - bl FUN_020136E0 - ldrb r1, [r4, #0x18] - ldr r0, [r4, #0xc] - lsl r1, r1, #0x1c - lsr r1, r1, #0x1c - bl FUN_02019620 - ldrh r1, [r4, #0x2c] - ldrh r3, [r4, #0x12] - add r0, r4, #0x0 - mov r2, #0x0 - bl FUN_02001714 - add r0, r4, #0x0 - bl FUN_020017AC - add r0, r4, #0x0 - mov r1, #0x1 - bl FUN_02001B64 - ldr r0, [r5, #0xc] - bl CopyWindowToVram - add r0, r4, #0x0 - pop {r3-r7, pc} - .balign 4 - - thumb_func_start FUN_02001204 -FUN_02001204: ; 0x02001204 - push {r4-r6, lr} - add r4, r0, #0x0 - add r1, r4, #0x0 - ldr r6, _020012FC ; =gMain - mov r3, #0x0 - add r1, #0x33 - strb r3, [r1, #0x0] - ldr r1, [r6, #0x48] - mov r2, #0x1 - add r5, r1, #0x0 - tst r5, r2 - beq _0200122C - ldrh r1, [r4, #0x2c] - ldrh r0, [r4, #0x2e] - ldr r2, [r4, #0x0] - add r0, r1, r0 - lsl r0, r0, #0x3 - add r0, r2, r0 - ldr r0, [r0, #0x4] - pop {r4-r6, pc} -_0200122C: - mov r5, #0x2 - tst r1, r5 - beq _02001236 - sub r0, r5, #0x4 - pop {r4-r6, pc} -_02001236: - ldr r5, [r6, #0x4c] - mov r1, #0x40 - tst r1, r5 - beq _02001254 - add r1, r2, #0x0 - bl FUN_02001AA4 - cmp r0, #0x0 - bne _0200124E - mov r0, #0x1 - add r4, #0x33 - strb r0, [r4, #0x0] -_0200124E: - mov r0, #0x0 - mvn r0, r0 - pop {r4-r6, pc} -_02001254: - mov r1, #0x80 - add r3, r5, #0x0 - tst r3, r1 - beq _02001274 - add r1, r2, #0x0 - add r3, r2, #0x0 - bl FUN_02001AA4 - cmp r0, #0x0 - bne _0200126E - mov r0, #0x2 - add r4, #0x33 - strb r0, [r4, #0x0] -_0200126E: - mov r0, #0x0 - mvn r0, r0 - pop {r4-r6, pc} -_02001274: - ldrh r0, [r4, #0x1a] - lsl r0, r0, #0x17 - lsr r0, r0, #0x1e - beq _02001284 - cmp r0, #0x1 - beq _0200128A - cmp r0, #0x2 - beq _0200129C -_02001284: - mov r0, #0x0 - add r1, r0, #0x0 - b _020012AC -_0200128A: - mov r0, #0x20 - mov r1, #0x10 - and r0, r5 - and r1, r5 - lsl r0, r0, #0x10 - lsl r1, r1, #0x10 - lsr r0, r0, #0x10 - lsr r1, r1, #0x10 - b _020012AC -_0200129C: - lsl r0, r1, #0x2 - add r1, #0x80 - and r0, r5 - and r1, r5 - lsl r0, r0, #0x10 - lsl r1, r1, #0x10 - lsr r0, r0, #0x10 - lsr r1, r1, #0x10 -_020012AC: - cmp r0, #0x0 - beq _020012D0 - ldrh r2, [r4, #0x12] - add r0, r4, #0x0 - mov r1, #0x1 - lsl r2, r2, #0x18 - lsr r2, r2, #0x18 - mov r3, #0x0 - bl FUN_02001AA4 - cmp r0, #0x0 - bne _020012CA - mov r0, #0x3 - add r4, #0x33 - strb r0, [r4, #0x0] -_020012CA: - mov r0, #0x0 - mvn r0, r0 - pop {r4-r6, pc} -_020012D0: - cmp r1, #0x0 - beq _020012F4 - ldrh r2, [r4, #0x12] - mov r1, #0x1 - add r0, r4, #0x0 - lsl r2, r2, #0x18 - lsr r2, r2, #0x18 - add r3, r1, #0x0 - bl FUN_02001AA4 - cmp r0, #0x0 - bne _020012EE - mov r0, #0x4 - add r4, #0x33 - strb r0, [r4, #0x0] -_020012EE: - mov r0, #0x0 - mvn r0, r0 - pop {r4-r6, pc} -_020012F4: - mov r0, #0x0 - mvn r0, r0 - pop {r4-r6, pc} - nop -_020012FC: .word gMain - - thumb_func_start FUN_02001300 -FUN_02001300: ; 0x02001300 - push {r4, lr} - add r4, r0, #0x0 - cmp r1, #0x0 - beq _0200130C - ldrh r0, [r4, #0x2c] - strh r0, [r1, #0x0] -_0200130C: - cmp r2, #0x0 - beq _02001314 - ldrh r0, [r4, #0x2e] - strh r0, [r2, #0x0] -_02001314: - ldr r0, [r4, #0x28] - bl FUN_020136C0 - add r0, r4, #0x0 - add r0, #0x34 - ldrb r0, [r0, #0x0] - add r1, r4, #0x0 - bl FUN_02016A8C - pop {r4, pc} - - thumb_func_start FUN_02001328 -FUN_02001328: ; 0x02001328 - push {r4, lr} - add r4, r0, #0x0 - ldrb r1, [r4, #0x18] - ldr r0, [r4, #0xc] - lsl r1, r1, #0x1c - lsr r1, r1, #0x1c - bl FUN_02019620 - ldrh r1, [r4, #0x2c] - ldrh r3, [r4, #0x12] - add r0, r4, #0x0 - mov r2, #0x0 - bl FUN_02001714 - add r0, r4, #0x0 - bl FUN_020017AC - ldr r0, [r4, #0xc] - bl CopyWindowToVram - pop {r4, pc} - .balign 4 - - thumb_func_start FUN_02001354 -FUN_02001354: ; 0x02001354 - push {r4-r6, lr} - add r4, r0, #0x0 - add r6, r1, #0x0 - beq _0200136E - add r5, r4, #0x0 - ldmia r6!, {r0-r1} - stmia r5!, {r0-r1} - ldmia r6!, {r0-r1} - stmia r5!, {r0-r1} - ldmia r6!, {r0-r1} - stmia r5!, {r0-r1} - ldmia r6!, {r0-r1} - stmia r5!, {r0-r1} -_0200136E: - strh r2, [r4, #0x2c] - add r0, r4, #0x0 - strh r3, [r4, #0x2e] - mov r3, #0x0 - add r0, #0x30 - strb r3, [r0, #0x0] - add r0, r4, #0x0 - add r0, #0x31 - add r1, sp, #0x0 - strb r3, [r0, #0x0] - ldrh r0, [r1, #0x14] - cmp r0, #0x40 - bne _02001398 - ldrh r1, [r1, #0x10] - add r0, r4, #0x0 - mov r2, #0x1 - lsl r1, r1, #0x18 - lsr r1, r1, #0x18 - bl FUN_02001AA4 - b _020013AC -_02001398: - cmp r0, #0x80 - bne _020013AC - ldrh r1, [r1, #0x10] - mov r2, #0x1 - add r0, r4, #0x0 - lsl r1, r1, #0x18 - lsr r1, r1, #0x18 - add r3, r2, #0x0 - bl FUN_02001AA4 -_020013AC: - ldr r1, [sp, #0x18] - cmp r1, #0x0 - beq _020013B6 - ldrh r0, [r4, #0x2c] - strh r0, [r1, #0x0] -_020013B6: - ldr r1, [sp, #0x1c] - cmp r1, #0x0 - beq _020013C0 - ldrh r0, [r4, #0x2e] - strh r0, [r1, #0x0] -_020013C0: - mov r0, #0x0 - mvn r0, r0 - pop {r4-r6, pc} - .balign 4 - - thumb_func_start FUN_020013C8 -FUN_020013C8: ; 0x020013C8 - push {r4, lr} - sub sp, #0x10 - mov r4, #0x0 - str r4, [sp, #0x0] - add r4, sp, #0x8 - ldrh r4, [r4, #0x10] - str r4, [sp, #0x4] - ldr r4, [sp, #0x1c] - str r4, [sp, #0x8] - ldr r4, [sp, #0x20] - str r4, [sp, #0xc] - bl FUN_02001354 - add sp, #0x10 - pop {r4, pc} - .balign 4 - - thumb_func_start FUN_020013E8 -FUN_020013E8: ; 0x020013E8 - push {r3-r6} - add r4, r0, #0x0 - add r4, #0x20 - ldrb r6, [r4, #0x0] - mov r4, #0xf - mov r5, #0xf - bic r6, r4 - and r1, r5 - orr r6, r1 - add r1, r0, #0x0 - add r1, #0x20 - strb r6, [r1, #0x0] - add r1, r0, #0x0 - add r1, #0x20 - lsl r2, r2, #0x1c - ldrb r1, [r1, #0x0] - mov r6, #0xf0 - lsr r2, r2, #0x18 - bic r1, r6 - orr r2, r1 - add r1, r0, #0x0 - add r1, #0x20 - strb r2, [r1, #0x0] - add r1, r0, #0x0 - add r1, #0x21 - ldrb r2, [r1, #0x0] - add r1, r3, #0x0 - and r1, r5 - bic r2, r4 - orr r2, r1 - add r1, r0, #0x0 - add r1, #0x21 - strb r2, [r1, #0x0] - add r1, r0, #0x0 - add r1, #0x24 - ldrb r2, [r1, #0x0] - mov r1, #0x80 - add r0, #0x24 - orr r1, r2 - strb r1, [r0, #0x0] - pop {r3-r6} - bx lr - - thumb_func_start FUN_0200143C -FUN_0200143C: ; 0x0200143C - ldrh r2, [r0, #0x2c] - ldrh r0, [r0, #0x2e] - add r0, r2, r0 - strh r0, [r1, #0x0] - bx lr - .balign 4 - - thumb_func_start FUN_02001448 -FUN_02001448: ; 0x02001448 - cmp r1, #0x0 - beq _02001450 - ldrh r3, [r0, #0x2c] - strh r3, [r1, #0x0] -_02001450: - cmp r2, #0x0 - beq _02001458 - ldrh r0, [r0, #0x2e] - strh r0, [r2, #0x0] -_02001458: - bx lr - .balign 4 - - thumb_func_start FUN_0200145C -FUN_0200145C: ; 0x0200145C - add r0, #0x33 - ldrb r0, [r0, #0x0] - bx lr - .balign 4 - - thumb_func_start FUN_02001464 -FUN_02001464: ; 0x02001464 - ldr r2, [r0, #0x0] - lsl r0, r1, #0x3 - add r0, r2, r0 - ldr r0, [r0, #0x4] - bx lr - .balign 4 - - thumb_func_start FUN_02001470 -FUN_02001470: ; 0x02001470 - push {r4, lr} - add r4, r0, #0x0 - cmp r1, #0x13 - bhi _02001532 - add r0, r1, r1 - add r0, pc - ldrh r0, [r0, #0x6] - lsl r0, r0, #0x10 - asr r0, r0, #0x10 - add pc, r0 -_02001484: ; jump table (using 16-bit offset) - .short _020014AC - _02001484 - 2; case 0 - .short _020014B0 - _02001484 - 2; case 1 - .short _020014B4 - _02001484 - 2; case 2 - .short _020014B8 - _02001484 - 2; case 3 - .short _02001532 - _02001484 - 2; case 4 - .short _020014BC - _02001484 - 2; case 5 - .short _020014C0 - _02001484 - 2; case 6 - .short _020014C4 - _02001484 - 2; case 7 - .short _020014C8 - _02001484 - 2; case 8 - .short _020014D0 - _02001484 - 2; case 9 - .short _020014EA - _02001484 - 2; case 10 - .short _020014F2 - _02001484 - 2; case 11 - .short _020014FA - _02001484 - 2; case 12 - .short _02001502 - _02001484 - 2; case 13 - .short _0200150A - _02001484 - 2; case 14 - .short _02001512 - _02001484 - 2; case 15 - .short _0200151A - _02001484 - 2; case 16 - .short _02001522 - _02001484 - 2; case 17 - .short _0200152A - _02001484 - 2; case 18 - .short _0200152E - _02001484 - 2; case 19 -_020014AC: - ldr r0, [r4, #0x4] - pop {r4, pc} -_020014B0: - ldr r0, [r4, #0x8] - pop {r4, pc} -_020014B4: - ldrh r0, [r4, #0x10] - pop {r4, pc} -_020014B8: - ldrh r0, [r4, #0x12] - pop {r4, pc} -_020014BC: - ldrb r0, [r4, #0x14] - pop {r4, pc} -_020014C0: - ldrb r0, [r4, #0x15] - pop {r4, pc} -_020014C4: - ldrb r0, [r4, #0x16] - pop {r4, pc} -_020014C8: - ldrb r0, [r4, #0x17] - lsl r0, r0, #0x1c - lsr r0, r0, #0x1c - pop {r4, pc} -_020014D0: - ldrh r0, [r4, #0x1a] - mov r1, #0x1 - lsl r0, r0, #0x11 - lsr r0, r0, #0x1a - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - bl FUN_02002E4C - ldrh r1, [r4, #0x1a] - lsl r1, r1, #0x19 - lsr r1, r1, #0x1c - add r0, r1, r0 - pop {r4, pc} -_020014EA: - ldrb r0, [r4, #0x17] - lsl r0, r0, #0x18 - lsr r0, r0, #0x1c - pop {r4, pc} -_020014F2: - ldrb r0, [r4, #0x18] - lsl r0, r0, #0x1c - lsr r0, r0, #0x1c - pop {r4, pc} -_020014FA: - ldrb r0, [r4, #0x18] - lsl r0, r0, #0x18 - lsr r0, r0, #0x1c - pop {r4, pc} -_02001502: - ldrh r0, [r4, #0x1a] - lsl r0, r0, #0x1d - lsr r0, r0, #0x1d - pop {r4, pc} -_0200150A: - ldrh r0, [r4, #0x1a] - lsl r0, r0, #0x19 - lsr r0, r0, #0x1c - pop {r4, pc} -_02001512: - ldrh r0, [r4, #0x1a] - lsl r0, r0, #0x17 - lsr r0, r0, #0x1e - pop {r4, pc} -_0200151A: - ldrh r0, [r4, #0x1a] - lsl r0, r0, #0x11 - lsr r0, r0, #0x1a - pop {r4, pc} -_02001522: - ldrh r0, [r4, #0x1a] - lsl r0, r0, #0x10 - lsr r0, r0, #0x1f - pop {r4, pc} -_0200152A: - ldr r0, [r4, #0xc] - pop {r4, pc} -_0200152E: - ldr r0, [r4, #0x1c] - pop {r4, pc} -_02001532: - mov r0, #0x0 - mvn r0, r0 - pop {r4, pc} - - thumb_func_start FUN_02001538 -FUN_02001538: ; 0x02001538 - cmp r1, #0x13 - bls _0200153E - b _02001648 -_0200153E: - add r1, r1, r1 - add r1, pc - ldrh r1, [r1, #0x6] - lsl r1, r1, #0x10 - asr r1, r1, #0x10 - add pc, r1 -_0200154A: ; jump table (using 16-bit offset) - .short _02001572 - _0200154A - 2; case 0 - .short _02001576 - _0200154A - 2; case 1 - .short _0200157A - _0200154A - 2; case 2 - .short _0200157E - _0200154A - 2; case 3 - .short _02001648 - _0200154A - 2; case 4 - .short _02001582 - _0200154A - 2; case 5 - .short _02001586 - _0200154A - 2; case 6 - .short _0200158A - _0200154A - 2; case 7 - .short _0200158E - _0200154A - 2; case 8 - .short _02001648 - _0200154A - 2; case 9 - .short _020015A2 - _0200154A - 2; case 10 - .short _020015B6 - _0200154A - 2; case 11 - .short _020015CA - _0200154A - 2; case 12 - .short _020015DE - _0200154A - 2; case 13 - .short _020015F2 - _0200154A - 2; case 14 - .short _02001606 - _0200154A - 2; case 15 - .short _0200161A - _0200154A - 2; case 16 - .short _0200162E - _0200154A - 2; case 17 - .short _02001642 - _0200154A - 2; case 18 - .short _02001646 - _0200154A - 2; case 19 -_02001572: - str r2, [r0, #0x4] - bx lr -_02001576: - str r2, [r0, #0x8] - bx lr -_0200157A: - strh r2, [r0, #0x10] - bx lr -_0200157E: - strh r2, [r0, #0x12] - bx lr -_02001582: - strb r2, [r0, #0x14] - bx lr -_02001586: - strb r2, [r0, #0x15] - bx lr -_0200158A: - strb r2, [r0, #0x16] - bx lr -_0200158E: - ldrb r3, [r0, #0x17] - mov r1, #0xf - bic r3, r1 - lsl r1, r2, #0x18 - lsr r2, r1, #0x18 - mov r1, #0xf - and r1, r2 - orr r1, r3 - strb r1, [r0, #0x17] - bx lr -_020015A2: - ldrb r3, [r0, #0x17] - mov r1, #0xf0 - bic r3, r1 - lsl r1, r2, #0x18 - lsr r1, r1, #0x18 - lsl r1, r1, #0x1c - lsr r1, r1, #0x18 - orr r1, r3 - strb r1, [r0, #0x17] - bx lr -_020015B6: - ldrb r3, [r0, #0x18] - mov r1, #0xf - bic r3, r1 - lsl r1, r2, #0x18 - lsr r2, r1, #0x18 - mov r1, #0xf - and r1, r2 - orr r1, r3 - strb r1, [r0, #0x18] - bx lr -_020015CA: - ldrb r3, [r0, #0x18] - mov r1, #0xf0 - bic r3, r1 - lsl r1, r2, #0x18 - lsr r1, r1, #0x18 - lsl r1, r1, #0x1c - lsr r1, r1, #0x18 - orr r1, r3 - strb r1, [r0, #0x18] - bx lr -_020015DE: - ldrh r3, [r0, #0x1a] - mov r1, #0x7 - bic r3, r1 - lsl r1, r2, #0x18 - lsr r2, r1, #0x18 - mov r1, #0x7 - and r1, r2 - orr r1, r3 - strh r1, [r0, #0x1a] - bx lr -_020015F2: - ldrh r3, [r0, #0x1a] - mov r1, #0x78 - bic r3, r1 - lsl r1, r2, #0x18 - lsr r1, r1, #0x18 - lsl r1, r1, #0x1c - lsr r1, r1, #0x19 - orr r1, r3 - strh r1, [r0, #0x1a] - bx lr -_02001606: - ldrh r3, [r0, #0x1a] - ldr r1, _0200164C ; =0xFFFFFE7F - and r3, r1 - lsl r1, r2, #0x18 - lsr r1, r1, #0x18 - lsl r1, r1, #0x1e - lsr r1, r1, #0x17 - orr r1, r3 - strh r1, [r0, #0x1a] - bx lr -_0200161A: - ldrh r3, [r0, #0x1a] - ldr r1, _02001650 ; =0xFFFF81FF - and r3, r1 - lsl r1, r2, #0x18 - lsr r1, r1, #0x18 - lsl r1, r1, #0x1a - lsr r1, r1, #0x11 - orr r1, r3 - strh r1, [r0, #0x1a] - bx lr -_0200162E: - ldrh r3, [r0, #0x1a] - ldr r1, _02001654 ; =0xFFFF7FFF - and r3, r1 - lsl r1, r2, #0x18 - lsr r1, r1, #0x18 - lsl r1, r1, #0x1f - lsr r1, r1, #0x10 - orr r1, r3 - strh r1, [r0, #0x1a] - bx lr -_02001642: - str r2, [r0, #0xc] - bx lr -_02001646: - str r2, [r0, #0x1c] -_02001648: - bx lr - nop -_0200164C: .word 0xFFFFFE7F -_02001650: .word 0xFFFF81FF -_02001654: .word 0xFFFF7FFF - - thumb_func_start FUN_02001658 -FUN_02001658: ; 0x02001658 - str r1, [r0, #0x0] - bx lr - - thumb_func_start FUN_0200165C -FUN_0200165C: ; 0x0200165C - push {r4-r6, lr} - sub sp, #0x18 - add r5, r1, #0x0 - add r6, r0, #0x0 - add r4, r2, #0x0 - cmp r5, #0x0 - beq _02001710 - add r0, #0x24 - ldrb r0, [r0, #0x0] - lsl r0, r0, #0x18 - lsr r0, r0, #0x1f - str r3, [sp, #0x0] - beq _020016CC - mov r0, #0xff - str r0, [sp, #0x4] - add r0, r6, #0x0 - add r0, #0x20 - ldrb r2, [r0, #0x0] - add r3, r4, #0x0 - lsl r0, r2, #0x18 - lsr r0, r0, #0x1c - lsl r0, r0, #0x18 - lsr r1, r0, #0x18 - lsl r0, r2, #0x1c - add r2, r6, #0x0 - add r2, #0x21 - ldrb r2, [r2, #0x0] - lsr r0, r0, #0x1c - lsl r0, r0, #0x18 - lsl r2, r2, #0x1c - lsr r2, r2, #0x1c - lsl r2, r2, #0x18 - lsr r0, r0, #0x8 - lsr r2, r2, #0x10 - orr r0, r2 - orr r0, r1 - str r0, [sp, #0x8] - add r0, r6, #0x0 - add r0, #0x22 - ldrb r0, [r0, #0x0] - add r2, r5, #0x0 - lsl r0, r0, #0x1a - lsr r0, r0, #0x1a - str r0, [sp, #0xc] - mov r0, #0x0 - str r0, [sp, #0x10] - str r0, [sp, #0x14] - ldr r0, [r6, #0xc] - add r6, #0x24 - ldrb r1, [r6, #0x0] - lsl r1, r1, #0x19 - lsr r1, r1, #0x19 - bl AddTextPrinterParameterized3 - add sp, #0x18 - pop {r4-r6, pc} -_020016CC: - mov r0, #0xff - str r0, [sp, #0x4] - ldrb r1, [r6, #0x18] - add r3, r4, #0x0 - lsl r0, r1, #0x1c - lsr r0, r0, #0x1c - lsl r0, r0, #0x18 - lsr r2, r0, #0x18 - ldrb r0, [r6, #0x17] - lsl r1, r1, #0x18 - lsr r1, r1, #0x1c - lsl r0, r0, #0x18 - lsr r0, r0, #0x1c - lsl r0, r0, #0x18 - lsl r1, r1, #0x18 - lsr r0, r0, #0x8 - lsr r1, r1, #0x10 - orr r0, r1 - orr r0, r2 - str r0, [sp, #0x8] - ldrh r0, [r6, #0x1a] - add r2, r5, #0x0 - lsl r0, r0, #0x1d - lsr r0, r0, #0x1d - str r0, [sp, #0xc] - mov r0, #0x0 - str r0, [sp, #0x10] - str r0, [sp, #0x14] - ldrh r1, [r6, #0x1a] - ldr r0, [r6, #0xc] - lsl r1, r1, #0x11 - lsr r1, r1, #0x1a - bl AddTextPrinterParameterized3 -_02001710: - add sp, #0x18 - pop {r4-r6, pc} - - thumb_func_start FUN_02001714 -FUN_02001714: ; 0x02001714 - push {r4-r7, lr} - sub sp, #0x14 - add r5, r0, #0x0 - str r3, [sp, #0x0] - ldrh r0, [r5, #0x1a] - add r4, r1, #0x0 - mov r1, #0x1 - lsl r0, r0, #0x11 - lsr r0, r0, #0x1a - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - add r6, r2, #0x0 - bl FUN_02002E4C - ldrh r1, [r5, #0x1a] - lsl r1, r1, #0x19 - lsr r1, r1, #0x1c - add r0, r1, r0 - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - str r0, [sp, #0xc] - mov r0, #0x0 - str r0, [sp, #0x10] - ldr r0, [sp, #0x0] - cmp r0, #0x0 - ble _020017A6 -_02001748: - ldr r1, [r5, #0x0] - lsl r0, r4, #0x3 - str r0, [sp, #0x8] - add r0, r1, r0 - ldr r1, [r0, #0x4] - mov r0, #0x2 - mvn r0, r0 - cmp r1, r0 - beq _02001760 - ldrb r0, [r5, #0x15] - str r0, [sp, #0x4] - b _02001764 -_02001760: - ldrb r0, [r5, #0x14] - str r0, [sp, #0x4] -_02001764: - ldrb r0, [r5, #0x17] - lsl r0, r0, #0x1c - lsr r3, r0, #0x1c - ldr r0, [sp, #0xc] - add r2, r0, #0x0 - mul r2, r6 - add r0, r3, r2 - lsl r0, r0, #0x18 - ldr r3, [r5, #0x8] - lsr r7, r0, #0x18 - cmp r3, #0x0 - beq _02001782 - add r0, r5, #0x0 - add r2, r7, #0x0 - blx r3 -_02001782: - ldr r2, [r5, #0x0] - ldr r1, [sp, #0x8] - add r0, r5, #0x0 - ldr r1, [r2, r1] - ldr r2, [sp, #0x4] - add r3, r7, #0x0 - bl FUN_0200165C - add r0, r4, #0x1 - lsl r0, r0, #0x10 - lsr r4, r0, #0x10 - ldr r0, [sp, #0x10] - add r6, r6, #0x1 - add r1, r0, #0x1 - ldr r0, [sp, #0x0] - str r1, [sp, #0x10] - cmp r1, r0 - blt _02001748 -_020017A6: - add sp, #0x14 - pop {r4-r7, pc} - .balign 4 - - thumb_func_start FUN_020017AC -FUN_020017AC: ; 0x020017AC - push {r3-r5, lr} - add r4, r0, #0x0 - ldrh r0, [r4, #0x1a] - mov r1, #0x1 - lsl r0, r0, #0x11 - lsr r0, r0, #0x1a - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - bl FUN_02002E4C - ldrh r1, [r4, #0x1a] - ldrh r5, [r4, #0x2e] - lsl r2, r1, #0x19 - lsr r2, r2, #0x1c - add r0, r2, r0 - lsl r0, r0, #0x18 - lsr r3, r0, #0x18 - ldrb r0, [r4, #0x17] - mul r3, r5 - ldrb r2, [r4, #0x16] - lsl r0, r0, #0x1c - lsr r0, r0, #0x1c - add r0, r0, r3 - lsl r0, r0, #0x18 - lsr r3, r0, #0x18 - lsl r0, r1, #0x10 - lsr r0, r0, #0x1f - cmp r0, #0x3 - bhi _02001802 - add r0, r0, r0 - add r0, pc - ldrh r0, [r0, #0x6] - lsl r0, r0, #0x10 - asr r0, r0, #0x10 - add pc, r0 -_020017F2: ; jump table (using 16-bit offset) - .short _020017FA - _020017F2 - 2; case 0 - .short _02001802 - _020017F2 - 2; case 1 - .short _02001802 - _020017F2 - 2; case 2 - .short _02001802 - _020017F2 - 2; case 3 -_020017FA: - ldr r0, [r4, #0x28] - ldr r1, [r4, #0xc] - bl FUN_020136F8 -_02001802: - pop {r3-r5, pc} - - thumb_func_start FUN_02001804 -FUN_02001804: ; 0x02001804 - push {r3-r5, lr} - sub sp, #0x8 - add r4, r0, #0x0 - ldrh r0, [r4, #0x1a] - add r5, r1, #0x0 - lsl r1, r0, #0x10 - lsr r1, r1, #0x1f - cmp r1, #0x3 - bhi _02001868 - add r1, r1, r1 - add r1, pc - ldrh r1, [r1, #0x6] - lsl r1, r1, #0x10 - asr r1, r1, #0x10 - add pc, r1 -_02001822: ; jump table (using 16-bit offset) - .short _0200182A - _02001822 - 2; case 0 - .short _02001868 - _02001822 - 2; case 1 - .short _02001868 - _02001822 - 2; case 2 - .short _02001868 - _02001822 - 2; case 3 -_0200182A: - lsl r0, r0, #0x11 - lsr r0, r0, #0x1a - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - mov r1, #0x1 - bl FUN_02002E4C - ldrh r1, [r4, #0x1a] - lsl r1, r1, #0x19 - lsr r1, r1, #0x1c - add r0, r1, r0 - lsl r0, r0, #0x18 - lsr r3, r0, #0x18 - mov r0, #0x8 - str r0, [sp, #0x0] - mov r0, #0x10 - str r0, [sp, #0x4] - ldrb r1, [r4, #0x18] - ldr r0, [r4, #0xc] - ldrb r2, [r4, #0x16] - ldrb r4, [r4, #0x17] - lsl r1, r1, #0x1c - mul r3, r5 - lsl r4, r4, #0x1c - lsr r4, r4, #0x1c - add r3, r4, r3 - lsl r3, r3, #0x10 - lsr r1, r1, #0x1c - lsr r3, r3, #0x10 - bl FUN_020196F4 -_02001868: - add sp, #0x8 - pop {r3-r5, pc} - - thumb_func_start FUN_0200186C -FUN_0200186C: ; 0x0200186C - push {r4-r7} - ldrh r4, [r0, #0x2e] - ldrh r3, [r0, #0x2c] - cmp r1, #0x0 - ldrh r2, [r0, #0x12] - bne _020018FE - cmp r2, #0x1 - bne _02001880 - mov r1, #0x0 - b _02001898 -_02001880: - lsr r7, r2, #0x1f - lsl r6, r2, #0x1f - sub r6, r6, r7 - mov r5, #0x1f - ror r6, r5 - lsr r1, r2, #0x1 - add r5, r7, r6 - add r1, r1, r5 - sub r1, r2, r1 - sub r1, r1, #0x1 - lsl r1, r1, #0x10 - lsr r1, r1, #0x10 -_02001898: - cmp r3, #0x0 - bne _020018CC - cmp r4, #0x0 - beq _020018C6 - ldr r2, [r0, #0x0] - lsl r1, r3, #0x3 - mov r3, #0x2 - add r1, r2, r1 - mvn r3, r3 -_020018AA: - sub r2, r4, #0x1 - lsl r2, r2, #0x10 - lsr r4, r2, #0x10 - lsl r2, r4, #0x3 - add r2, r1, r2 - ldr r2, [r2, #0x4] - cmp r2, r3 - beq _020018C2 - strh r4, [r0, #0x2e] - mov r0, #0x1 - pop {r4-r7} - bx lr -_020018C2: - cmp r4, #0x0 - bne _020018AA -_020018C6: - mov r0, #0x0 - pop {r4-r7} - bx lr -_020018CC: - cmp r4, r1 - bls _020018F6 - ldr r5, [r0, #0x0] - lsl r2, r3, #0x3 - add r2, r5, r2 - mov r5, #0x2 - mvn r5, r5 -_020018DA: - sub r4, r4, #0x1 - lsl r4, r4, #0x10 - lsr r4, r4, #0x10 - lsl r6, r4, #0x3 - add r6, r2, r6 - ldr r6, [r6, #0x4] - cmp r6, r5 - beq _020018F2 - strh r4, [r0, #0x2e] - mov r0, #0x1 - pop {r4-r7} - bx lr -_020018F2: - cmp r4, r1 - bhi _020018DA -_020018F6: - strh r1, [r0, #0x2e] - sub r1, r3, #0x1 - strh r1, [r0, #0x2c] - b _02001984 -_020018FE: - cmp r2, #0x1 - bne _02001906 - mov r5, #0x0 - b _0200191A -_02001906: - lsr r7, r2, #0x1f - lsl r6, r2, #0x1f - sub r6, r6, r7 - mov r5, #0x1f - ror r6, r5 - lsr r1, r2, #0x1 - add r5, r7, r6 - add r1, r1, r5 - lsl r1, r1, #0x10 - lsr r5, r1, #0x10 -_0200191A: - ldrh r1, [r0, #0x10] - sub r1, r1, r2 - cmp r3, r1 - bne _02001954 - sub r2, r2, #0x1 - cmp r4, r2 - bge _0200194E - ldr r5, [r0, #0x0] - lsl r1, r3, #0x3 - add r1, r5, r1 - mov r5, #0x2 - mvn r5, r5 -_02001932: - add r3, r4, #0x1 - lsl r3, r3, #0x10 - lsr r4, r3, #0x10 - lsl r3, r4, #0x3 - add r3, r1, r3 - ldr r3, [r3, #0x4] - cmp r3, r5 - beq _0200194A - strh r4, [r0, #0x2e] - mov r0, #0x1 - pop {r4-r7} - bx lr -_0200194A: - cmp r4, r2 - blt _02001932 -_0200194E: - mov r0, #0x0 - pop {r4-r7} - bx lr -_02001954: - cmp r4, r5 - bhs _0200197E - ldr r2, [r0, #0x0] - lsl r1, r3, #0x3 - mov r6, #0x2 - add r1, r2, r1 - mvn r6, r6 -_02001962: - add r2, r4, #0x1 - lsl r2, r2, #0x10 - lsr r4, r2, #0x10 - lsl r2, r4, #0x3 - add r2, r1, r2 - ldr r2, [r2, #0x4] - cmp r2, r6 - beq _0200197A - strh r4, [r0, #0x2e] - mov r0, #0x1 - pop {r4-r7} - bx lr -_0200197A: - cmp r4, r5 - blo _02001962 -_0200197E: - strh r5, [r0, #0x2e] - add r1, r3, #0x1 - strh r1, [r0, #0x2c] -_02001984: - mov r0, #0x2 - pop {r4-r7} - bx lr - .balign 4 - - thumb_func_start FUN_0200198C -FUN_0200198C: ; 0x0200198C - push {r3-r7, lr} - sub sp, #0x8 - add r5, r0, #0x0 - ldrh r0, [r5, #0x12] - add r4, r1, #0x0 - add r7, r2, #0x0 - cmp r4, r0 - blt _020019B8 - ldrb r1, [r5, #0x18] - ldr r0, [r5, #0xc] - lsl r1, r1, #0x1c - lsr r1, r1, #0x1c - bl FUN_02019620 - ldrh r1, [r5, #0x2c] - ldrh r3, [r5, #0x12] - add r0, r5, #0x0 - mov r2, #0x0 - bl FUN_02001714 - add sp, #0x8 - pop {r3-r7, pc} -_020019B8: - ldrh r0, [r5, #0x1a] - mov r1, #0x1 - lsl r0, r0, #0x11 - lsr r0, r0, #0x1a - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - bl FUN_02002E4C - ldrh r1, [r5, #0x1a] - lsl r1, r1, #0x19 - lsr r1, r1, #0x1c - add r0, r1, r0 - lsl r0, r0, #0x18 - lsr r6, r0, #0x18 - cmp r7, #0x0 - ldrb r0, [r5, #0x18] - bne _02001A46 - lsl r0, r0, #0x1c - lsr r7, r0, #0x1c - add r2, r4, #0x0 - lsl r3, r7, #0x4 - mul r2, r6 - orr r3, r7 - lsl r2, r2, #0x18 - lsl r3, r3, #0x18 - ldr r0, [r5, #0xc] - mov r1, #0x1 - lsr r2, r2, #0x18 - lsr r3, r3, #0x18 - bl FUN_0201A8C8 - ldrh r1, [r5, #0x2c] - add r0, r5, #0x0 - mov r2, #0x0 - add r3, r4, #0x0 - bl FUN_02001714 - ldrb r0, [r5, #0x17] - lsl r0, r0, #0x1c - lsr r2, r0, #0x1c - ldrh r0, [r5, #0x12] - add r1, r0, #0x0 - mul r1, r6 - add r0, r2, r1 - lsl r0, r0, #0x10 - lsr r4, r0, #0x10 - ldr r0, [r5, #0xc] - bl FUN_0201AB0C - add r6, r0, #0x0 - ldr r0, [r5, #0xc] - bl FUN_0201AB10 - lsl r0, r0, #0x3 - lsl r1, r6, #0x13 - sub r0, r0, r4 - lsr r1, r1, #0x10 - lsl r0, r0, #0x10 - str r1, [sp, #0x0] - lsr r0, r0, #0x10 - str r0, [sp, #0x4] - ldrb r1, [r5, #0x18] - ldr r0, [r5, #0xc] - mov r2, #0x0 - lsl r1, r1, #0x1c - lsr r1, r1, #0x1c - add r3, r4, #0x0 - bl FUN_020196F4 - add sp, #0x8 - pop {r3-r7, pc} -_02001A46: - lsl r0, r0, #0x1c - lsr r3, r0, #0x1c - add r2, r4, #0x0 - mul r2, r6 - lsl r6, r3, #0x4 - orr r3, r6 - lsl r2, r2, #0x18 - lsl r3, r3, #0x18 - ldr r0, [r5, #0xc] - mov r1, #0x0 - lsr r2, r2, #0x18 - lsr r3, r3, #0x18 - bl FUN_0201A8C8 - ldrh r0, [r5, #0x12] - ldrh r1, [r5, #0x2c] - add r3, r4, #0x0 - sub r2, r0, r4 - add r1, r1, r2 - lsl r1, r1, #0x10 - lsl r2, r2, #0x10 - add r0, r5, #0x0 - lsr r1, r1, #0x10 - lsr r2, r2, #0x10 - bl FUN_02001714 - ldr r0, [r5, #0xc] - bl FUN_0201AB0C - lsl r0, r0, #0x13 - lsr r0, r0, #0x10 - str r0, [sp, #0x0] - ldrb r0, [r5, #0x17] - mov r2, #0x0 - add r3, r2, #0x0 - lsl r0, r0, #0x1c - lsr r0, r0, #0x1c - str r0, [sp, #0x4] - ldrb r1, [r5, #0x18] - ldr r0, [r5, #0xc] - lsl r1, r1, #0x1c - lsr r1, r1, #0x1c - bl FUN_020196F4 - add sp, #0x8 - pop {r3-r7, pc} - .balign 4 - - thumb_func_start FUN_02001AA4 -FUN_02001AA4: ; 0x02001AA4 - push {r3-r7, lr} - sub sp, #0x10 - str r1, [sp, #0x0] - str r2, [sp, #0x4] - add r4, r0, #0x0 - str r3, [sp, #0x8] - ldrh r0, [r4, #0x2e] - mov r6, #0x0 - add r5, r6, #0x0 - str r0, [sp, #0xc] - ldr r0, [sp, #0x4] - add r7, r6, #0x0 - cmp r0, #0x0 - bls _02001AF6 -_02001AC0: - ldr r1, [sp, #0x8] - add r0, r4, #0x0 - bl FUN_0200186C - orr r5, r0 - cmp r0, #0x2 - bne _02001AEA - add r0, r6, #0x1 - lsl r0, r0, #0x18 - lsr r6, r0, #0x18 - ldrh r1, [r4, #0x2c] - ldrh r0, [r4, #0x2e] - ldr r2, [r4, #0x0] - add r0, r1, r0 - lsl r0, r0, #0x3 - add r0, r2, r0 - ldr r1, [r0, #0x4] - mov r0, #0x2 - mvn r0, r0 - cmp r1, r0 - beq _02001AC0 -_02001AEA: - add r0, r7, #0x1 - lsl r0, r0, #0x18 - lsr r7, r0, #0x18 - ldr r0, [sp, #0x4] - cmp r7, r0 - blo _02001AC0 -_02001AF6: - ldr r0, [sp, #0x0] - cmp r0, #0x0 - beq _02001B5E - cmp r5, #0x3 - bhi _02001B14 - add r0, r5, r5 - add r0, pc - ldrh r0, [r0, #0x6] - lsl r0, r0, #0x10 - asr r0, r0, #0x10 - add pc, r0 -_02001B0C: ; jump table (using 16-bit offset) - .short _02001B14 - _02001B0C - 2; case 0 - .short _02001B1A - _02001B0C - 2; case 1 - .short _02001B38 - _02001B0C - 2; case 2 - .short _02001B38 - _02001B0C - 2; case 3 -_02001B14: - add sp, #0x10 - mov r0, #0x1 - pop {r3-r7, pc} -_02001B1A: - ldr r1, [sp, #0xc] - add r0, r4, #0x0 - bl FUN_02001804 - add r0, r4, #0x0 - bl FUN_020017AC - add r0, r4, #0x0 - mov r1, #0x0 - bl FUN_02001B64 - ldr r0, [r4, #0xc] - bl CopyWindowToVram - b _02001B5E -_02001B38: - ldr r1, [sp, #0xc] - add r0, r4, #0x0 - bl FUN_02001804 - ldr r2, [sp, #0x8] - add r0, r4, #0x0 - add r1, r6, #0x0 - bl FUN_0200198C - add r0, r4, #0x0 - bl FUN_020017AC - add r0, r4, #0x0 - mov r1, #0x0 - bl FUN_02001B64 - ldr r0, [r4, #0xc] - bl CopyWindowToVram -_02001B5E: - mov r0, #0x0 - add sp, #0x10 - pop {r3-r7, pc} - - thumb_func_start FUN_02001B64 -FUN_02001B64: ; 0x02001B64 - push {r3-r5, lr} - ldr r3, [r0, #0x4] - add r2, r1, #0x0 - cmp r3, #0x0 - beq _02001B7E - ldrh r5, [r0, #0x2c] - ldrh r4, [r0, #0x2e] - ldr r1, [r0, #0x0] - add r4, r5, r4 - lsl r4, r4, #0x3 - add r1, r1, r4 - ldr r1, [r1, #0x4] - blx r3 -_02001B7E: - pop {r3-r5, pc} diff --git a/arm9/asm/unk_02001B80.s b/arm9/asm/unk_02001B80.s index 4962171d..18e10da6 100644 --- a/arm9/asm/unk_02001B80.s +++ b/arm9/asm/unk_02001B80.s @@ -12,14 +12,6 @@ UNK_020ECAC8: ; 0x020ECAC8 .text - thumb_func_start FUN_02001B80 -FUN_02001B80: ; 0x02001B80 - ldr r3, _02001B88 ; =CopyWindowToVram - ldr r0, [r0, #0xc] - bx r3 - nop -_02001B88: .word CopyWindowToVram - thumb_func_start FUN_02001B8C FUN_02001B8C: ; 0x02001B8C push {r3-r7, lr} @@ -41,7 +33,7 @@ FUN_02001B8C: ; 0x02001B8C ldr r0, [r3, #0x0] str r0, [r2, #0x0] ldr r0, [sp, #0x4] - bl FUN_02013690 + bl ListMenuCursorNew str r0, [r4, #0xc] ldr r0, [sp, #0x24] str r0, [r4, #0x10] @@ -57,20 +49,20 @@ FUN_02001B8C: ; 0x02001B8C strb r6, [r4, #0x17] strb r7, [r4, #0x18] ldrb r0, [r5, #0x8] - bl FUN_02002E4C + bl GetFontAttribute add r6, r0, #0x0 ldrb r0, [r5, #0x8] mov r1, #0x2 - bl FUN_02002E4C + bl GetFontAttribute add r0, r6, r0 strb r0, [r4, #0x19] ldrb r0, [r5, #0x8] mov r1, #0x1 - bl FUN_02002E4C + bl GetFontAttribute add r6, r0, #0x0 ldrb r0, [r5, #0x8] mov r1, #0x3 - bl FUN_02002E4C + bl GetFontAttribute add r0, r6, r0 strb r0, [r4, #0x1a] add r0, r4, #0x0 @@ -108,7 +100,7 @@ FUN_02001C34: ; 0x02001C34 add r6, r1, #0x0 add r4, r2, #0x0 mov r1, #0x0 - bl FUN_02002E4C + bl GetFontAttribute add r1, r0, #0x0 str r4, [sp, #0x0] mov r0, #0x2 @@ -130,10 +122,10 @@ FUN_02001C5C: ; 0x02001C5C strb r0, [r1, #0x0] _02001C68: ldr r0, [r4, #0xc] - bl FUN_020136C0 + bl DestroyListMenuCursorObj ldrb r0, [r4, #0x1c] add r1, r4, #0x0 - bl FUN_02016A8C + bl FreeToHeapExplicit pop {r4, pc} thumb_func_start FUN_02001C78 @@ -420,7 +412,7 @@ FUN_02001E64: ; 0x02001E64 _02001E7C: ldrb r0, [r5, #0x8] mov r1, #0x6 - bl FUN_02002E4C + bl GetFontAttribute add r1, sp, #0x8 add r7, r0, #0x0 add r0, r5, #0x0 @@ -437,7 +429,7 @@ _02001E7C: ldrb r2, [r3, #0x1] ldrb r3, [r3, #0x0] ldr r0, [r5, #0x4] - bl FUN_020196F4 + bl FillWindowPixelRect add r0, r5, #0x0 bl FUN_02002080 add r0, r6, #0x0 @@ -631,10 +623,10 @@ FUN_02001FF4: ; 0x02001FF4 add r5, r0, #0x0 ldrb r0, [r5, #0x8] mov r1, #0x6 - bl FUN_02002E4C + bl GetFontAttribute add r1, r0, #0x0 ldr r0, [r5, #0x4] - bl FUN_02019620 + bl FillWindowPixelBuffer ldrb r0, [r5, #0x19] ldrb r1, [r5, #0x16] ldrb r7, [r5, #0x17] @@ -718,7 +710,7 @@ FUN_02002080: ; 0x02002080 ldrb r3, [r3, #0x0] ldr r0, [r4, #0xc] ldr r1, [r4, #0x4] - bl FUN_020136F8 + bl ListMenuUpdateCursorObj _020020AA: add sp, #0x4 pop {r3-r4, pc} @@ -772,24 +764,24 @@ CreateYesNoMenu: ; 0x020020EC add r4, r0, #0x0 mov r0, #0x2 add r1, r5, #0x0 - bl ListMenu_ctor + bl ListMenuItems_ctor add r1, r4, #0x0 mov r2, #0x29 mov r3, #0x0 add r6, r0, #0x0 - bl ListMenu_ItemFromMsgData ; YES + bl ListMenuItems_AppendFromMsgData ; YES mov r3, #0x2a add r2, r3, #0x0 add r0, r6, #0x0 add r1, r4, #0x0 sub r3, #0x2c - bl ListMenu_ItemFromMsgData ; NO + bl ListMenuItems_AppendFromMsgData ; NO add r0, r4, #0x0 bl DestroyMsgData add r0, r5, #0x0 mov r1, #0x1 str r6, [sp, #0x14] - bl FUN_02018FF4 + bl AllocWindows add r1, r0, #0x0 str r1, [sp, #0x18] mov r0, #0x0 @@ -894,9 +886,9 @@ FUN_020021EC: ; 0x020021EC bl FUN_02019178 ldr r1, [r5, #0x4] add r0, r4, #0x0 - bl FUN_02016A8C + bl FreeToHeapExplicit ldr r0, [r5, #0x0] - bl ListMenu_dtor + bl ListMenuItems_dtor add r0, r5, #0x0 mov r1, #0x0 bl FUN_02001C5C @@ -921,7 +913,7 @@ FUN_02002218: ; 0x02002218 mov r2, #0x0 str r3, [sp, #0x14] add r3, r2, #0x0 - bl FUN_02019658 + bl BlitBitmapRectToWindow add sp, #0x18 pop {r4, pc} nop diff --git a/arm9/asm/unk_020023C0.s b/arm9/asm/unk_020023C0.s index baa1b890..dc304639 100644 --- a/arm9/asm/unk_020023C0.s +++ b/arm9/asm/unk_020023C0.s @@ -147,7 +147,7 @@ _0200248C: lsl r0, r0, #0x8 cmp r5, r0 bne _020024B0 - bl ErrorHandling + bl GF_AssertFail _020024B0: ldr r0, _02002664 ; =0x0000F0FD cmp r5, r0 @@ -193,7 +193,7 @@ _020024F2: mov r1, #0x1 strb r0, [r4, #0xc] ldrb r0, [r4, #0x9] - bl FUN_02002E4C + bl GetFontAttribute ldrb r1, [r4, #0xf] ldrb r2, [r4, #0xd] add sp, #0xc @@ -500,7 +500,7 @@ _0200275C: bl FUN_02002A00 ldrb r1, [r4, #0x12] ldr r0, [r4, #0x4] - bl FUN_02019620 + bl FillWindowPixelBuffer ldrb r0, [r4, #0xa] strb r0, [r4, #0xc] ldrb r0, [r4, #0xb] @@ -520,7 +520,7 @@ _02002786: bl FUN_02002A00 ldrb r0, [r4, #0x9] mov r1, #0x1 - bl FUN_02002E4C + bl GetFontAttribute ldrb r1, [r4, #0xf] add r1, r1, r0 add r0, r4, #0x0 @@ -549,7 +549,7 @@ _020027B6: ldr r0, [r4, #0x4] mov r1, #0x0 lsr r3, r3, #0x18 - bl FUN_0201A8C8 + bl ScrollWindow mov r1, #0x0 b _020027F2 _020027D8: @@ -560,7 +560,7 @@ _020027D8: mov r1, #0x0 mov r2, #0x4 lsr r3, r3, #0x18 - bl FUN_0201A8C8 + bl ScrollWindow add r0, r4, #0x0 add r0, #0x27 ldrb r0, [r0, #0x0] @@ -686,7 +686,7 @@ _020028AC: bl FUN_0201AB18 str r0, [sp, #0x28] ldr r0, [r5, #0x4] - bl FUN_0201AB0C + bl GetWindowWidth ldr r1, _020029F8 ; =gTextFlags ldrh r6, [r1, #0x2] ldr r1, [sp, #0x28] @@ -853,7 +853,7 @@ FUN_02002A00: ; 0x02002A00 bl FUN_0201AB18 add r6, r0, #0x0 ldr r0, [r5, #0x4] - bl FUN_0201AB0C + bl GetWindowWidth ldr r1, _02002A90 ; =gTextFlags add r7, r6, #0x2 ldrh r4, [r1, #0x2] diff --git a/arm9/asm/unk_02002C14.s b/arm9/asm/unk_02002C14.s index c4049d4b..119c68ff 100644 --- a/arm9/asm/unk_02002C14.s +++ b/arm9/asm/unk_02002C14.s @@ -92,7 +92,7 @@ FUN_02002C84: ; 0x02002C84 add r5, r1, #0x0 cmp r4, #0x4 blt _02002C92 - bl ErrorHandling + bl GF_AssertFail _02002C92: ldr r0, _02002CBC ; =UNK_02106FC8 lsl r4, r4, #0x2 @@ -102,7 +102,7 @@ _02002C92: ldr r0, [r0, #0x0] cmp r0, #0x0 bne _02002CA6 - bl ErrorHandling + bl GF_AssertFail _02002CA6: ldr r0, _02002CBC ; =UNK_02106FC8 mov r1, #0x0 @@ -122,7 +122,7 @@ FUN_02002CC0: ; 0x02002CC0 add r4, r0, #0x0 cmp r4, #0x4 blt _02002CCC - bl ErrorHandling + bl GF_AssertFail _02002CCC: ldr r0, _02002CF4 ; =UNK_02106FC8 lsl r4, r4, #0x2 @@ -132,7 +132,7 @@ _02002CCC: ldr r0, [r0, #0x0] cmp r0, #0x0 bne _02002CE0 - bl ErrorHandling + bl GF_AssertFail _02002CE0: ldr r0, _02002CF4 ; =UNK_02106FC8 mov r1, #0x1 @@ -152,7 +152,7 @@ FUN_02002CF8: ; 0x02002CF8 add r4, r0, #0x0 cmp r4, #0x4 blt _02002D04 - bl ErrorHandling + bl GF_AssertFail _02002D04: ldr r0, _02002D8C ; =UNK_02106FC8 lsl r6, r4, #0x2 @@ -284,7 +284,7 @@ FUN_02002DE0: ; 0x02002DE0 ldr r0, [r0, #0x0] cmp r0, #0x0 bne _02002DFA - bl ErrorHandling + bl GF_AssertFail _02002DFA: ldr r0, _02002E10 ; =UNK_02106FC8 add r1, r5, #0x0 @@ -311,7 +311,7 @@ FUN_02002E14: ; 0x02002E14 ldr r0, [r0, #0x0] cmp r0, #0x0 bne _02002E2E - bl ErrorHandling + bl GF_AssertFail _02002E2E: add r0, r5, #0x0 bl String_c_str @@ -327,8 +327,8 @@ _02002E2E: .balign 4 _02002E48: .word UNK_02106FC8 - thumb_func_start FUN_02002E4C -FUN_02002E4C: ; 0x02002E4C + thumb_func_start GetFontAttribute +GetFontAttribute: ; 0x02002E4C mov r2, #0x0 cmp r1, #0x7 bhi _02002EAC @@ -411,7 +411,7 @@ FUN_02002ED0: ; 0x02002ED0 mov r0, #0xe mov r1, #0x6 add r2, r4, #0x0 - bl FUN_02006930 + bl GfGfxLoader_GXLoadPal add sp, #0x8 pop {r4, pc} @@ -427,6 +427,6 @@ FUN_02002EEC: ; 0x02002EEC mov r0, #0xe mov r1, #0x7 add r2, r4, #0x0 - bl FUN_02006930 + bl GfGfxLoader_GXLoadPal add sp, #0x8 pop {r4, pc} diff --git a/arm9/asm/unk_02002F08.s b/arm9/asm/unk_02002F08.s index b844da17..fb6f96ff 100644 --- a/arm9/asm/unk_02002F08.s +++ b/arm9/asm/unk_02002F08.s @@ -18,7 +18,7 @@ FUN_02002F08: ; 0x02002F08 ldr r0, [r0, #0x0] cmp r0, #0x0 bne _02002F22 - bl ErrorHandling + bl GF_AssertFail _02002F22: add r0, r5, #0x0 bl String_c_str @@ -103,7 +103,7 @@ FUN_02002F9C: ; 0x02002F9C ldr r0, [r0, #0x0] cmp r0, #0x0 bne _02002FB4 - bl ErrorHandling + bl GF_AssertFail _02002FB4: add r0, r5, #0x0 bl String_c_str @@ -226,10 +226,10 @@ FUN_02003084: ; 0x02003084 add r1, r2, #0x0 add r2, sp, #0x4 ldr r4, [sp, #0x1c] - bl FUN_02006C08 + bl GfGfxLoader_GetPlttData add r6, r0, #0x0 bne _0200309E - bl ErrorHandling + bl GF_AssertFail _0200309E: cmp r4, #0x0 bne _020030A6 @@ -247,7 +247,7 @@ _020030A6: add r0, r4, r0 cmp r0, r1 bls _020030C0 - bl ErrorHandling + bl GF_AssertFail _020030C0: lsl r0, r4, #0x10 lsr r0, r0, #0x10 diff --git a/arm9/asm/unk_020030E8.s b/arm9/asm/unk_020030E8.s index 8e1d3360..f9b9de1f 100644 --- a/arm9/asm/unk_020030E8.s +++ b/arm9/asm/unk_020030E8.s @@ -18,7 +18,7 @@ FUN_02003108: ; 0x02003108 add r0, r7, r0 cmp r0, r1 bls _02003126 - bl ErrorHandling + bl GF_AssertFail _02003126: cmp r4, #0x3 bhi _0200315E @@ -50,7 +50,7 @@ _02003156: add r1, r0, #0x0 b _02003164 _0200315E: - bl ErrorHandling + bl GF_AssertFail pop {r3-r7, pc} _02003164: lsl r0, r7, #0x10 @@ -72,10 +72,10 @@ FUN_0200317C: ; 0x0200317C add r5, r3, #0x0 add r2, sp, #0x0 add r3, r4, #0x0 - bl FUN_02006C08 + bl GfGfxLoader_GetPlttData add r4, r0, #0x0 bne _02003192 - bl ErrorHandling + bl GF_AssertFail _02003192: cmp r5, #0x0 bne _0200319A @@ -1089,7 +1089,7 @@ FUN_02003914: ; 0x02003914 ldr r0, [r0, #0x8] cmp r1, r0 bls _0200393A - bl ErrorHandling + bl GF_AssertFail _0200393A: sub r0, r7, #0x1 cmp r0, #0x1 @@ -1207,7 +1207,7 @@ FUN_020039E8: ; 0x020039E8 _02003A0A: cmp r0, #0x0 bne _02003A12 - bl ErrorHandling + bl GF_AssertFail _02003A12: add r3, sp, #0x10 ldrh r0, [r3, #0x14] @@ -1281,7 +1281,7 @@ FUN_02003A64: ; 0x02003A64 _02003A8E: cmp r0, #0x0 bne _02003A96 - bl ErrorHandling + bl GF_AssertFail _02003A96: cmp r5, #0x0 beq _02003AC0 @@ -1387,10 +1387,10 @@ FUN_02003B40: ; 0x02003B40 add r0, r1, #0x0 add r1, r2, #0x0 add r2, sp, #0x4 - bl FUN_02006C08 + bl GfGfxLoader_GetPlttData add r4, r0, #0x0 bne _02003B58 - bl ErrorHandling + bl GF_AssertFail _02003B58: ldr r0, [sp, #0x1c] cmp r0, #0x0 diff --git a/arm9/asm/unk_020040F4.s b/arm9/asm/unk_020040F4.s index e2418c14..cfd9551f 100644 --- a/arm9/asm/unk_020040F4.s +++ b/arm9/asm/unk_020040F4.s @@ -203,133 +203,133 @@ _0200421A: ; jump table (using 16-bit offset) .short _020042AE - _0200421A - 2; case 3 _02004222: mov r0, #0x1 - bl FUN_02003F78 + bl GF_Snd_LoadGroup add r1, r0, #0x0 b _0200432C _0200422C: mov r0, #0x2 - bl FUN_02003F78 + bl GF_Snd_LoadGroup add r1, r0, #0x0 b _0200432C _02004236: mov r0, #0xd - bl FUN_02003F78 + bl GF_Snd_LoadGroup add r1, r0, #0x0 b _0200432C _02004240: mov r0, #0x1 - bl FUN_02003F78 + bl GF_Snd_LoadGroup add r1, r0, #0x0 b _0200432C _0200424A: mov r0, #0x2 - bl FUN_02003F78 + bl GF_Snd_LoadGroup add r1, r0, #0x0 b _0200432C _02004254: mov r0, #0x1 - bl FUN_02003F78 + bl GF_Snd_LoadGroup add r1, r0, #0x0 b _0200432C _0200425E: mov r0, #0xb - bl FUN_02003F78 + bl GF_Snd_LoadGroup add r1, r0, #0x0 b _0200432C _02004268: mov r0, #0x1 - bl FUN_02003F78 + bl GF_Snd_LoadGroup add r1, r0, #0x0 b _0200432C _02004272: mov r0, #0xe - bl FUN_02003F78 + bl GF_Snd_LoadGroup add r1, r0, #0x0 b _0200432C _0200427C: mov r0, #0x3 - bl FUN_02003F78 + bl GF_Snd_LoadGroup add r1, r0, #0x0 b _0200432C _02004286: mov r0, #0x6 - bl FUN_02003F78 + bl GF_Snd_LoadGroup add r1, r0, #0x0 b _0200432C _02004290: mov r0, #0x5 - bl FUN_02003F78 + bl GF_Snd_LoadGroup add r1, r0, #0x0 b _0200432C _0200429A: mov r0, #0x9 - bl FUN_02003F78 + bl GF_Snd_LoadGroup add r1, r0, #0x0 b _0200432C _020042A4: mov r0, #0xa - bl FUN_02003F78 + bl GF_Snd_LoadGroup add r1, r0, #0x0 b _0200432C _020042AE: ldr r0, _02004330 ; =0x000005E5 - bl FUN_02003FDC + bl GF_Snd_LoadBank ldr r0, _02004330 ; =0x000005E5 - bl FUN_02003FC4 + bl GF_Snd_LoadWaveArc add r1, r0, #0x0 b _0200432C _020042BE: mov r0, #0xc - bl FUN_02003F78 + bl GF_Snd_LoadGroup add r1, r0, #0x0 b _0200432C _020042C8: mov r0, #0x7 - bl FUN_02003F78 + bl GF_Snd_LoadGroup add r1, r0, #0x0 b _0200432C _020042D2: mov r0, #0x8 - bl FUN_02003F78 + bl GF_Snd_LoadGroup add r1, r0, #0x0 b _0200432C _020042DC: mov r0, #0xf - bl FUN_02003F78 + bl GF_Snd_LoadGroup add r1, r0, #0x0 b _0200432C _020042E6: mov r0, #0x3 - bl FUN_02003F78 + bl GF_Snd_LoadGroup add r1, r0, #0x0 b _0200432C _020042F0: mov r0, #0x5 - bl FUN_02003F78 + bl GF_Snd_LoadGroup add r1, r0, #0x0 b _0200432C _020042FA: mov r0, #0xf - bl FUN_02003F78 + bl GF_Snd_LoadGroup add r1, r0, #0x0 b _0200432C _02004304: mov r0, #0x4 - bl FUN_02003F78 + bl GF_Snd_LoadGroup add r1, r0, #0x0 b _0200432C _0200430E: ldr r0, _02004334 ; =0x000005ED - bl FUN_02003FDC + bl GF_Snd_LoadBank ldr r0, _02004334 ; =0x000005ED - bl FUN_02003FC4 + bl GF_Snd_LoadWaveArc add r1, r0, #0x0 b _0200432C _0200431E: ldr r0, _02004338 ; =0x000005EC - bl FUN_02003FDC + bl GF_Snd_LoadBank ldr r0, _02004338 ; =0x000005EC - bl FUN_02003FC4 + bl GF_Snd_LoadWaveArc add r1, r0, #0x0 _0200432C: add r0, r1, #0x0 @@ -536,15 +536,15 @@ FUN_020044A8: ; 0x020044A8 mov r0, #0x17 bl FUN_02003D38 ldr r0, [r0, #0x0] - bl FUN_02003F64 + bl GF_Snd_RestoreState mov r0, #0x18 bl FUN_02003D38 - bl FUN_02003F3C + bl GF_Snd_SaveState add r0, r4, #0x0 bl FUN_02004180 mov r0, #0x19 bl FUN_02003D38 - bl FUN_02003F3C + bl GF_Snd_SaveState pop {r4, pc} thumb_func_start FUN_020044D4 @@ -588,12 +588,12 @@ _02004528: bne _02004560 mov r0, #0x2 bl FUN_02004748 - bl FUN_02003F64 + bl GF_Snd_RestoreState mov r0, #0x4 bl FUN_02004180 mov r0, #0x19 bl FUN_02003D38 - bl FUN_02003F3C + bl GF_Snd_SaveState cmp r4, r5 beq _02004554 mov r0, #0x1 @@ -628,17 +628,17 @@ FUN_02004568: ; 0x02004568 beq _02004594 add r0, r5, #0x0 mov r1, #0x4 - bl FUN_02003FA8 - bl ErrorHandling + bl GF_Snd_LoadSeqEx + bl GF_AssertFail b _0200459C _02004594: ldrh r0, [r4, #0x0] mov r1, #0x6 - bl FUN_02003FA8 + bl GF_Snd_LoadSeqEx _0200459C: mov r0, #0x1a bl FUN_02003D38 - bl FUN_02003F3C + bl GF_Snd_SaveState mov r0, #0x1 mov r1, #0x0 bl FUN_020047C8 @@ -671,18 +671,18 @@ FUN_020045C4: ; 0x020045C4 _020045E4: mov r0, #0x1 bl FUN_02004748 - bl FUN_02003F64 + bl GF_Snd_RestoreState ldrh r0, [r4, #0x0] mov r1, #0x2 - bl FUN_02003FA8 + bl GF_Snd_LoadSeqEx mov r0, #0x18 bl FUN_02003D38 - bl FUN_02003F3C + bl GF_Snd_SaveState mov r0, #0x4 bl FUN_02004180 mov r0, #0x19 bl FUN_02003D38 - bl FUN_02003F3C + bl GF_Snd_SaveState ldrh r0, [r4, #0x0] bl FUN_02004900 ldr r1, _02004644 ; =0x000003E9 @@ -693,17 +693,17 @@ _020045E4: beq _02004630 add r0, r7, #0x0 mov r1, #0x4 - bl FUN_02003FA8 - bl ErrorHandling + bl GF_Snd_LoadSeqEx + bl GF_AssertFail b _02004638 _02004630: ldrh r0, [r4, #0x0] mov r1, #0x4 - bl FUN_02003FA8 + bl GF_Snd_LoadSeqEx _02004638: mov r0, #0x1a bl FUN_02003D38 - bl FUN_02003F3C + bl GF_Snd_SaveState _02004642: pop {r3-r7, pc} .balign 4 @@ -718,12 +718,12 @@ FUN_02004648: ; 0x02004648 bl FUN_020051AC mov r0, #0x2 bl FUN_02004748 - bl FUN_02003F64 + bl GF_Snd_RestoreState mov r0, #0x5 bl FUN_02004180 mov r0, #0x19 bl FUN_02003D38 - bl FUN_02003F3C + bl GF_Snd_SaveState mov r0, #0x1 bl FUN_02004DBC add r0, r4, #0x0 @@ -786,7 +786,7 @@ FUN_020046E8: ; 0x020046E8 bl FUN_02004180 mov r0, #0x1b bl FUN_02003D38 - bl FUN_02003F3C + bl GF_Snd_SaveState pop {r4, pc} .balign 4 @@ -820,7 +820,7 @@ FUN_02004738: ; 0x02004738 push {r3, lr} mov r0, #0x4 bl FUN_02004748 - bl FUN_02003F64 + bl GF_Snd_RestoreState pop {r3, pc} .balign 4 @@ -831,7 +831,7 @@ FUN_02004748: ; 0x02004748 bl GetSoundDataPointer cmp r4, #0x7 blt _02004762 - bl ErrorHandling + bl GF_AssertFail mov r0, #0x1a bl FUN_02003D38 ldr r0, [r0, #0x0] @@ -922,7 +922,7 @@ _02004800: add r0, r4, #0x0 bl FUN_02003FF4 add r1, r5, #0x0 - bl FUN_020C0F8C + bl NNS_SndPlayerPause strb r5, [r6, #0x0] _0200480E: pop {r4-r6, pc} @@ -948,7 +948,7 @@ FUN_02004828: ; 0x02004828 bl FUN_02003FF4 add r1, r5, #0x0 add r2, r4, #0x0 - bl FUN_020C0EF4 + bl NNS_SndPlayerMoveVolume pop {r3-r5, pc} thumb_func_start FUN_0200483C @@ -964,7 +964,7 @@ _02004844: _0200484A: bl FUN_02003FF4 add r1, r4, #0x0 - bl FUN_020C0F30 + bl NNS_SndPlayerSetInitialVolume pop {r4, pc} .balign 4 @@ -972,7 +972,7 @@ _0200484A: FUN_02004858: ; 0x02004858 push {r3-r5, lr} add r5, r1, #0x0 - bl FUN_020C23FC + bl NNS_SndArcGetSeqParam cmp r5, #0x1 beq _02004868 cmp r5, #0x8 @@ -1018,7 +1018,7 @@ FUN_020048A0: ; 0x020048A0 add r1, r5, #0x0 add r3, r2, #0x0 str r4, [sp, #0x0] - bl FUN_020C3910 + bl NNS_SndArcPlayerStartSeqEx pop {r3-r5, pc} .balign 4 @@ -1027,10 +1027,10 @@ FUN_020048BC: ; 0x020048BC push {r4, lr} add r4, r0, #0x0 bpl _020048C6 - bl ErrorHandling + bl GF_AssertFail _020048C6: add r0, r4, #0x0 - bl FUN_020C0F50 + bl NNS_SndPlayerCountPlayingSeqByPlayerNo pop {r4, pc} .balign 4 @@ -1042,7 +1042,7 @@ FUN_020048D0: ; 0x020048D0 mov r0, #0xff pop {r3, pc} _020048DA: - bl FUN_020C23FC + bl NNS_SndArcGetSeqParam cmp r0, #0x0 bne _020048E6 mov r0, #0xff @@ -1054,22 +1054,22 @@ _020048E6: thumb_func_start FUN_020048EC FUN_020048EC: ; 0x020048EC - ldr r3, _020048F0 ; =FUN_020C0E14 + ldr r3, _020048F0 ; =NNS_SndPlayerGetSeqNo bx r3 .balign 4 -_020048F0: .word FUN_020C0E14 +_020048F0: .word NNS_SndPlayerGetSeqNo thumb_func_start FUN_020048F4 FUN_020048F4: ; 0x020048F4 push {r3, lr} bl FUN_02004900 - bl FUN_020C22D0 + bl NNS_SndArcGetBankInfo pop {r3, pc} thumb_func_start FUN_02004900 FUN_02004900: ; 0x02004900 push {r3, lr} - bl FUN_020C23FC + bl NNS_SndArcGetSeqParam cmp r0, #0x0 bne _0200490E mov r0, #0x0 @@ -1114,21 +1114,21 @@ FUN_02004930: ; 0x02004930 beq _02004954 cmp r5, #0xf beq _02004954 - bl ErrorHandling + bl GF_AssertFail _02004954: cmp r5, #0xe bne _02004962 ldrb r0, [r6, #0x0] cmp r0, #0x0 bne _02004962 - bl ErrorHandling + bl GF_AssertFail _02004962: cmp r5, #0xf bne _02004970 ldrb r0, [r4, #0x0] cmp r0, #0x0 bne _02004970 - bl ErrorHandling + bl GF_AssertFail _02004970: cmp r5, #0xe bne _0200497C @@ -1155,7 +1155,7 @@ FUN_02004984: ; 0x02004984 beq _020049A8 cmp r5, #0xf beq _020049A8 - bl ErrorHandling + bl GF_AssertFail _020049A8: cmp r5, #0xe bne _020049D6 @@ -1166,7 +1166,7 @@ _020049A8: bl FUN_02003D38 add r4, r0, #0x0 add r0, r5, #0x0 - bl FUN_020C0688 + bl NNS_SndWaveOutAllocChannel str r0, [r4, #0x0] cmp r0, #0x0 bne _020049CA @@ -1177,7 +1177,7 @@ _020049CA: strb r0, [r6, #0x0] b _020049FE _020049D0: - bl ErrorHandling + bl GF_AssertFail b _020049FE _020049D6: ldrb r0, [r4, #0x0] @@ -1187,7 +1187,7 @@ _020049D6: bl FUN_02003D38 add r6, r0, #0x0 add r0, r5, #0x0 - bl FUN_020C0688 + bl NNS_SndWaveOutAllocChannel str r0, [r6, #0x0] cmp r0, #0x0 bne _020049F4 @@ -1198,7 +1198,7 @@ _020049F4: strb r0, [r4, #0x0] b _020049FE _020049FA: - bl ErrorHandling + bl GF_AssertFail _020049FE: mov r0, #0x1 pop {r4-r6, pc} @@ -1219,7 +1219,7 @@ FUN_02004A04: ; 0x02004A04 beq _02004A2A cmp r5, #0xf beq _02004A2A - bl ErrorHandling + bl GF_AssertFail pop {r4-r6, pc} _02004A2A: cmp r5, #0xe @@ -1230,12 +1230,12 @@ _02004A2A: add r0, r5, #0x0 bl FUN_02004930 ldr r0, [r0, #0x0] - bl FUN_020C0670 + bl NNS_SndWaveOutFreeChannel mov r0, #0x0 strb r0, [r6, #0x0] pop {r4-r6, pc} _02004A46: - bl ErrorHandling + bl GF_AssertFail pop {r4-r6, pc} _02004A4C: ldrb r0, [r4, #0x0] @@ -1244,12 +1244,12 @@ _02004A4C: add r0, r5, #0x0 bl FUN_02004930 ldr r0, [r0, #0x0] - bl FUN_020C0670 + bl NNS_SndWaveOutFreeChannel mov r0, #0x0 strb r0, [r4, #0x0] pop {r4-r6, pc} _02004A64: - bl ErrorHandling + bl GF_AssertFail pop {r4-r6, pc} .balign 4 @@ -1276,7 +1276,7 @@ FUN_02004A6C: ; 0x02004A6C ldr r2, [r3, #0x8] ldr r0, [r0, #0x0] ldr r3, [r3, #0xc] - bl FUN_020C054C + bl NNS_SndWaveOutStart add r5, r0, #0x0 bne _02004AA4 add r0, r4, #0x0 @@ -1292,7 +1292,7 @@ FUN_02004AAC: ; 0x02004AAC push {r3, lr} bl FUN_02004930 ldr r0, [r0, #0x0] - bl FUN_020C0510 + bl NNS_SndWaveOutStop pop {r3, pc} .balign 4 @@ -1301,7 +1301,7 @@ FUN_02004ABC: ; 0x02004ABC push {r3, lr} bl FUN_02004930 ldr r0, [r0, #0x0] - bl FUN_020C03B8 + bl NNS_SndWaveOutIsPlaying pop {r3, pc} .balign 4 @@ -1316,7 +1316,7 @@ _02004AD6: bl FUN_02004930 ldr r0, [r0, #0x0] add r1, r4, #0x0 - bl FUN_020C041C + bl NNS_SndWaveOutSetPan pop {r4, pc} thumb_func_start FUN_02004AE4 @@ -1326,7 +1326,7 @@ FUN_02004AE4: ; 0x02004AE4 bl FUN_02004930 ldr r0, [r0, #0x0] add r1, r4, #0x0 - bl FUN_020C044C + bl NNS_SndWaveOutSetSpeed pop {r4, pc} .balign 4 @@ -1346,14 +1346,14 @@ FUN_02004AF8: ; 0x02004AF8 bl _s32_div_f add r1, r0, #0x0 ldr r0, [r4, #0x0] - bl FUN_020C04DC + bl NNS_SndWaveOutSetVolume pop {r3-r5, pc} _02004B20: add r0, r4, #0x0 bl FUN_02004930 ldr r0, [r0, #0x0] add r1, r5, #0x0 - bl FUN_020C04DC + bl NNS_SndWaveOutSetVolume pop {r3-r5, pc} thumb_func_start FUN_02004B30 @@ -1372,13 +1372,13 @@ FUN_02004B30: ; 0x02004B30 beq _02004B54 cmp r5, #0xf beq _02004B54 - bl ErrorHandling + bl GF_AssertFail _02004B54: add r0, r6, #0x0 - bl FUN_020C226C + bl NNS_SndArcGetWaveArcInfo add r7, r0, #0x0 bne _02004B68 - bl ErrorHandling + bl GF_AssertFail add sp, #0x30 mov r0, #0x0 pop {r3-r7, pc} @@ -1386,10 +1386,10 @@ _02004B68: ldr r0, [r7, #0x0] lsl r0, r0, #0x8 lsr r0, r0, #0x8 - bl FUN_020C217C + bl NNS_SndArcGetFileSize add r6, r0, #0x0 bne _02004B80 - bl ErrorHandling + bl GF_AssertFail add sp, #0x30 mov r0, #0x0 pop {r3-r7, pc} @@ -1402,7 +1402,7 @@ _02004B80: str r0, [r4, #0x0] cmp r0, #0x0 bne _02004B9C - bl ErrorHandling + bl GF_AssertFail add sp, #0x30 mov r0, #0x0 pop {r3-r7, pc} @@ -1416,12 +1416,12 @@ _02004B9C: lsr r0, r0, #0x8 add r2, r6, #0x0 mov r3, #0x0 - bl FUN_020C2104 + bl NNS_SndArcReadFile mov r1, #0x0 mvn r1, r1 cmp r0, r1 bne _02004BC6 - bl ErrorHandling + bl GF_AssertFail add sp, #0x30 mov r0, #0x0 pop {r3-r7, pc} @@ -1502,7 +1502,7 @@ FUN_02004C3C: ; 0x02004C3C beq _02004C60 cmp r5, #0xf beq _02004C60 - bl ErrorHandling + bl GF_AssertFail _02004C60: add r0, r5, #0x0 bl FUN_02004AAC @@ -1518,10 +1518,10 @@ _02004C76: thumb_func_start FUN_02004C78 FUN_02004C78: ; 0x02004C78 - ldr r3, _02004C7C ; =FUN_020C1E58 + ldr r3, _02004C7C ; =NNS_SndCaptureIsActive bx r3 .balign 4 -_02004C7C: .word FUN_020C1E58 +_02004C7C: .word NNS_SndCaptureIsActive thumb_func_start FUN_02004C80 FUN_02004C80: ; 0x02004C80 @@ -1537,23 +1537,23 @@ FUN_02004C80: ; 0x02004C80 mov r2, #0x0 lsl r3, r3, #0x6 str r4, [sp, #0x0] - bl FUN_020C1FF0 + bl NNS_SndCaptureStartReverb add sp, #0x4 pop {r3-r4, pc} thumb_func_start FUN_02004CA4 FUN_02004CA4: ; 0x02004CA4 - ldr r3, _02004CA8 ; =FUN_020C1F54 + ldr r3, _02004CA8 ; =NNS_SndCaptureStopReverb bx r3 .balign 4 -_02004CA8: .word FUN_020C1F54 +_02004CA8: .word NNS_SndCaptureStopReverb thumb_func_start FUN_02004CAC FUN_02004CAC: ; 0x02004CAC - ldr r3, _02004CB0 ; =FUN_020C1FA4 + ldr r3, _02004CB0 ; =NNS_SndCaptureSetReverbVolume bx r3 .balign 4 -_02004CB0: .word FUN_020C1FA4 +_02004CB0: .word NNS_SndCaptureSetReverbVolume thumb_func_start FUN_02004CB4 FUN_02004CB4: ; 0x02004CB4 @@ -1579,7 +1579,7 @@ FUN_02004CB4: ; 0x02004CB4 ldr r3, _02004CF8 ; =0x000055F0 add r0, r4, #0x0 mov r2, #0x0 - bl FUN_020C1EA4 + bl NNS_SndCaptureStartEffect add sp, #0xc pop {r3-r4, pc} nop @@ -1588,10 +1588,10 @@ _02004CF8: .word 0x000055F0 thumb_func_start FUN_02004CFC FUN_02004CFC: ; 0x02004CFC - ldr r3, _02004D00 ; =FUN_020C1E68 + ldr r3, _02004D00 ; =NNS_SndCaptureStopEffect bx r3 .balign 4 -_02004D00: .word FUN_020C1E68 +_02004D00: .word NNS_SndCaptureStopEffect thumb_func_start FUN_02004D04 FUN_02004D04: ; 0x02004D04 @@ -1619,7 +1619,7 @@ FUN_02004D20: ; 0x02004D20 bl FUN_02003FF4 add r1, r5, #0x0 add r2, r4, #0x0 - bl FUN_020C0EA4 + bl NNS_SndPlayerSetTrackPitch pop {r3-r5, pc} thumb_func_start FUN_02004D34 @@ -1642,14 +1642,14 @@ FUN_02004D4C: ; 0x02004D4C bl FUN_02003FF4 add r1, r5, #0x0 add r2, r4, #0x0 - bl FUN_020C0E7C + bl NNS_SndPlayerSetTrackPan pop {r3-r5, pc} thumb_func_start FUN_02004D60 FUN_02004D60: ; 0x02004D60 push {r4, lr} add r4, r0, #0x0 - bl FUN_020C0174 + bl NNS_SndSetMonoFlag ldr r0, _02004D70 ; =UNK_021C3DD8 str r4, [r0, #0x0] pop {r4, pc} @@ -1824,7 +1824,7 @@ FUN_02004E98: ; 0x02004E98 add r5, r0, #0x0 mov r0, #0x5 bl FUN_02004748 - bl FUN_02003F64 + bl GF_Snd_RestoreState lsl r0, r5, #0x10 lsr r4, r0, #0x10 ldr r0, _02004ECC ; =0x000001B9 @@ -1839,7 +1839,7 @@ _02004EBA: mov r4, #0x1 _02004EBC: add r0, r4, #0x0 - bl FUN_02003FC4 + bl GF_Snd_LoadWaveArc add r0, r4, #0x0 bl FUN_02004ED0 pop {r3-r5, pc} @@ -1866,20 +1866,20 @@ FUN_02004ED0: ; 0x02004ED0 _02004EF0: mov r0, #0x1 _02004EF2: - bl FUN_020C226C + bl NNS_SndArcGetWaveArcInfo cmp r0, #0x0 bne _02004F02 - bl ErrorHandling + bl GF_AssertFail mov r0, #0x0 pop {r3-r5, pc} _02004F02: ldr r0, [r0, #0x0] lsl r0, r0, #0x8 lsr r0, r0, #0x8 - bl FUN_020C20DC + bl NNS_SndArcGetFileAddress cmp r0, #0x0 bne _02004F18 - bl ErrorHandling + bl GF_AssertFail mov r0, #0x0 pop {r3-r5, pc} _02004F18: @@ -1928,7 +1928,7 @@ _02004F62: FUN_02004F64: ; 0x02004F64 push {r3, lr} bl FUN_02003FF4 - bl FUN_020C0DD4 + bl NNS_SndPlayerGetTick pop {r3, pc} thumb_func_start FUN_02004F70 @@ -2216,12 +2216,12 @@ _0200515A: thumb_func_start FUN_02005160 FUN_02005160: ; 0x02005160 - ldr r3, _02005168 ; =FUN_020C1148 + ldr r3, _02005168 ; =NNS_SndPlayerSetAllocatableChannel add r1, r0, #0x0 mov r0, #0x7 bx r3 .balign 4 -_02005168: .word FUN_020C1148 +_02005168: .word NNS_SndPlayerSetAllocatableChannel thumb_func_start FUN_0200516C FUN_0200516C: ; 0x0200516C @@ -2282,7 +2282,7 @@ _020051E8: .word 0x0000047E thumb_func_start FUN_020051EC FUN_020051EC: ; 0x020051EC - ldr r3, _020051F0 ; =FUN_020C1180 + ldr r3, _020051F0 ; =NNS_SndPlayerSetPlayerVolume bx r3 .balign 4 -_020051F0: .word FUN_020C1180 +_020051F0: .word NNS_SndPlayerSetPlayerVolume diff --git a/arm9/asm/unk_020051F4.s b/arm9/asm/unk_020051F4.s index ccb8d272..c2d91fe9 100644 --- a/arm9/asm/unk_020051F4.s +++ b/arm9/asm/unk_020051F4.s @@ -12,7 +12,7 @@ FUN_020051F4: ; 0x020051F4 add r4, r0, #0x0 bl FUN_02003FF4 add r1, r5, #0x0 - bl FUN_020C3980 + bl NNS_SndArcPlayerStartSeq add r6, r0, #0x0 add r0, r5, #0x0 add r1, r4, #0x0 @@ -47,7 +47,7 @@ _0200523E: add r4, r0, #0x0 b _02005258 _02005250: - bl ErrorHandling + bl GF_AssertFail mov r0, #0x0 pop {r4-r6, pc} _02005258: @@ -81,16 +81,16 @@ FUN_02005288: ; 0x02005288 mov r0, #0x3 add r4, r2, #0x0 bl FUN_02004748 - bl FUN_02003F64 + bl GF_Snd_RestoreState add r0, r5, #0x0 - bl FUN_02003F90 + bl GF_Snd_LoadSeq mov r0, #0x1a bl FUN_02003D38 - bl FUN_02003F3C + bl GF_Snd_SaveState add r0, r4, #0x0 bl FUN_02003FF4 add r1, r5, #0x0 - bl FUN_020C3980 + bl NNS_SndArcPlayerStartSeq pop {r3-r5, pc} .balign 4 @@ -123,7 +123,7 @@ FUN_020052B8: ; 0x020052B8 add r0, r6, #0x0 add r3, r1, #0x0 str r5, [sp, #0x0] - bl FUN_020C3910 + bl NNS_SndArcPlayerStartSeqEx add sp, #0x4 pop {r3-r6, pc} .balign 4 @@ -134,7 +134,7 @@ FUN_02005308: ; 0x02005308 add r5, r1, #0x0 cmp r0, #0x4 beq _02005318 - bl ErrorHandling + bl GF_AssertFail mov r0, #0x0 pop {r3-r5, pc} _02005318: @@ -142,17 +142,17 @@ _02005318: bl FUN_020048D0 cmp r0, #0x7 beq _0200532A - bl ErrorHandling + bl GF_AssertFail mov r0, #0x0 pop {r3-r5, pc} _0200532A: add r0, r5, #0x0 mov r1, #0x1 - bl FUN_02003FA8 + bl GF_Snd_LoadSeqEx mov r0, #0x7 bl FUN_02003FF4 add r1, r5, #0x0 - bl FUN_020C3980 + bl NNS_SndArcPlayerStartSeq add r4, r0, #0x0 add r0, r5, #0x0 bl FUN_02004110 @@ -165,14 +165,14 @@ _0200532A: FUN_02005350: ; 0x02005350 push {r4, lr} add r4, r0, #0x0 - bl FUN_020C0FDC + bl NNS_SndPlayerStopSeqBySeqNo add r0, r4, #0x0 bl FUN_020048D0 cmp r0, #0xff beq _0200536E bl FUN_02004018 bl FUN_02003FF4 - bl FUN_020C0F68 + bl NNS_SndHandleReleaseSeq _0200536E: bl FUN_02005374 pop {r4, pc} @@ -270,7 +270,7 @@ FUN_0200541C: ; 0x0200541C bl FUN_02003D38 add r4, r0, #0x0 mov r0, #0x0 - bl FUN_020C0F9C + bl NNS_SndPlayerStopSeqAll ldrb r0, [r5, #0x0] cmp r0, #0x1 bne _02005440 @@ -299,7 +299,7 @@ FUN_02005454: ; 0x02005454 mov r0, #0x7 bl FUN_02003FF4 mov r1, #0x0 - bl FUN_020C10A4 + bl NNS_SndPlayerStopSeq bl FUN_02005374 mov r5, #0x0 add r4, r5, #0x0 @@ -351,7 +351,7 @@ FUN_020054C8: ; 0x020054C8 add r4, r0, #0x0 bl FUN_02003FF4 add r1, r5, #0x0 - bl FUN_020C3980 + bl NNS_SndArcPlayerStartSeq add r6, r0, #0x0 add r0, r5, #0x0 add r1, r4, #0x0 @@ -362,10 +362,10 @@ FUN_020054C8: ; 0x020054C8 thumb_func_start FUN_020054F0 FUN_020054F0: ; 0x020054F0 - ldr r3, _020054F4 ; =FUN_020C0FDC + ldr r3, _020054F4 ; =NNS_SndPlayerStopSeqBySeqNo bx r3 .balign 4 -_020054F4: .word FUN_020C0FDC +_020054F4: .word NNS_SndPlayerStopSeqBySeqNo thumb_func_start FUN_020054F8 FUN_020054F8: ; 0x020054F8 @@ -373,7 +373,7 @@ FUN_020054F8: ; 0x020054F8 add r4, r1, #0x0 bl FUN_02003FF4 add r1, r4, #0x0 - bl FUN_020C10A4 + bl NNS_SndPlayerStopSeq pop {r4, pc} thumb_func_start FUN_02005508 @@ -411,7 +411,7 @@ FUN_02005530: ; 0x02005530 bl FUN_02003FF4 add r1, r5, #0x0 add r2, r4, #0x0 - bl FUN_020C0E7C + bl NNS_SndPlayerSetTrackPan pop {r3-r5, pc} thumb_func_start FUN_0200554C @@ -428,7 +428,7 @@ _0200555C: bl FUN_02003FF4 add r1, r7, #0x0 add r2, r6, #0x0 - bl FUN_020C0E7C + bl NNS_SndPlayerSetTrackPan add r5, r5, #0x1 cmp r5, #0x4 blt _0200555C @@ -483,7 +483,7 @@ _020055BC: sub r1, r1, #0x3 add r2, r5, #0x0 add r3, r1, #0x0 - bl FUN_020C3910 + bl NNS_SndArcPlayerStartSeqEx add r4, r0, #0x0 add r0, r5, #0x0 mov r1, #0x1 @@ -497,7 +497,7 @@ _020055E8: sub r1, r1, #0x3 add r2, r5, #0x0 add r3, r1, #0x0 - bl FUN_020C3910 + bl NNS_SndArcPlayerStartSeqEx add r4, r0, #0x0 add r0, r5, #0x0 mov r1, #0x8 @@ -525,11 +525,11 @@ FUN_02005614: ; 0x02005614 mov r0, #0x1 bl FUN_02003FF4 add r1, r5, #0x0 - bl FUN_020C10A4 + bl NNS_SndPlayerStopSeq mov r0, #0x8 bl FUN_02003FF4 add r1, r5, #0x0 - bl FUN_020C10A4 + bl NNS_SndPlayerStopSeq ldrb r0, [r6, #0x0] cmp r0, #0x1 bne _02005658 @@ -1072,7 +1072,7 @@ FUN_02005AE0: ; 0x02005AE0 bl AllocFromHeap add r4, r0, #0x0 bne _02005B04 - bl ErrorHandling + bl GF_AssertFail pop {r4-r6, pc} _02005B04: mov r2, #0x0 @@ -1216,8 +1216,8 @@ FUN_02005BF8: ; 0x02005BF8 pop {r3-r6, pc} .balign 4 - thumb_func_start PlayBGM -PlayBGM: ; 0x02005C28 + thumb_func_start PlaySound +PlaySound: ; 0x02005C28 push {r3-r5, lr} add r5, r0, #0x0 bl FUN_020048F4 @@ -1232,14 +1232,14 @@ PlayBGM: ; 0x02005C28 _02005C48: mov r0, #0x1c bl FUN_02003D38 - bl FUN_02003F3C + bl GF_Snd_SaveState add r0, r5, #0x0 mov r1, #0x3 - bl FUN_02003FA8 + bl GF_Snd_LoadSeqEx mov r0, #0x2 bl FUN_02003FF4 add r1, r5, #0x0 - bl FUN_020C3980 + bl NNS_SndArcPlayerStartSeq add r4, r0, #0x0 add r0, r5, #0x0 mov r1, #0x2 @@ -1279,10 +1279,10 @@ FUN_02005CA0: ; 0x02005CA0 mov r0, #0x2 bl FUN_02003FF4 add r1, r4, #0x0 - bl FUN_020C10A4 + bl NNS_SndPlayerStopSeq mov r0, #0x6 bl FUN_02004748 - bl FUN_02003F64 + bl GF_Snd_RestoreState pop {r4, pc} thumb_func_start FUN_02005CBC diff --git a/arm9/asm/unk_02005CFC.s b/arm9/asm/unk_02005CFC.s index 6a601c58..7a7010b0 100644 --- a/arm9/asm/unk_02005CFC.s +++ b/arm9/asm/unk_02005CFC.s @@ -30,7 +30,7 @@ FUN_02005D20: ; 0x02005D20 bl FUN_02003D38 add r4, r0, #0x0 add r0, r5, #0x0 - bl FUN_02029F04 + bl Chatot_exists cmp r0, #0x0 bne _02005D3A mov r0, #0x0 @@ -80,10 +80,10 @@ _02005D70: lsl r0, r0, #0x10 lsr r4, r0, #0x10 add r0, r6, #0x0 - bl FUN_02029F10 + bl Chatot_GetData add r1, r0, #0x0 ldr r0, [sp, #0x0] - bl FUN_02029F14 + bl Chatot_Decode mov r0, #0xe bl FUN_02004930 str r0, [sp, #0x8] @@ -192,7 +192,7 @@ FUN_02005E6C: ; 0x02005E6C bl FUN_02004DB4 add r1, r0, #0x0 add r0, r4, #0x0 - bl FUN_02029F4C + bl Chatot_Encode pop {r4, pc} .balign 4 @@ -250,14 +250,14 @@ _02005EDC: .word 0x000001B9 FUN_02005EE0: ; 0x02005EE0 push {r4, lr} add r4, r0, #0x0 - bl FUN_02029F04 + bl Chatot_exists cmp r0, #0x0 bne _02005EF0 mov r0, #0x0 pop {r4, pc} _02005EF0: add r0, r4, #0x0 - bl FUN_02029F10 + bl Chatot_GetData mov r1, #0xf ldrsb r0, [r0, r1] sub r1, #0x2d diff --git a/arm9/asm/unk_02006864.s b/arm9/asm/unk_02006864.s deleted file mode 100644 index 5528150d..00000000 --- a/arm9/asm/unk_02006864.s +++ /dev/null @@ -1,698 +0,0 @@ - .include "asm/macros.inc" - .include "global.inc" - - .section .rodata - - .global UNK_020ECB98 -UNK_020ECB98: ; 0x020ECB98 - .word FUN_020B1768 - .word FUN_020B1528 - - .global UNK_020ECBA0 -UNK_020ECBA0: ; 0x020ECBA0 - .word GX_LoadOBJ, GXS_LoadOBJ - - .global UNK_020ECBA8 -UNK_020ECBA8: ; 0x020ECBA8 - .word FUN_020B1768, FUN_020B1528 - - .global UNK_020ECBB0 -UNK_020ECBB0: ; 0x020ECBB0 - .word GX_LoadBGPltt, GX_LoadOBJPltt, GX_LoadBGExtPltt, GX_LoadOBJExtPltt - .word GXS_LoadBGPltt, GXS_LoadOBJPltt, GXS_LoadBGExtPltt, GXS_LoadOBJExtPltt - - .text - - thumb_func_start FUN_0200687C -FUN_0200687C: ; 0x0200687C - push {r3-r7, lr} - sub sp, #0x8 - add r6, r2, #0x0 - mov r2, #0x0 - add r5, r3, #0x0 - str r2, [sp, #0x0] - ldr r2, [sp, #0x28] - ldr r3, [sp, #0x2c] - ldr r4, [sp, #0x24] - bl UncompressFromNarc - add r7, r0, #0x0 - beq _020068C2 - add r1, sp, #0x4 - bl FUN_020B0030 - cmp r0, #0x0 - beq _020068BC - cmp r4, #0x0 - bne _020068A8 - ldr r0, [sp, #0x4] - ldr r4, [r0, #0x10] -_020068A8: - ldr r0, [sp, #0x20] - lsl r1, r5, #0x18 - str r0, [sp, #0x0] - ldr r2, [sp, #0x4] - add r0, r6, #0x0 - ldr r2, [r2, #0x14] - lsr r1, r1, #0x18 - add r3, r4, #0x0 - bl FUN_02017E14 -_020068BC: - add r0, r7, #0x0 - bl FreeToHeap -_020068C2: - add r0, r4, #0x0 - add sp, #0x8 - pop {r3-r7, pc} - - thumb_func_start FUN_020068C8 -FUN_020068C8: ; 0x020068C8 - push {r3-r7, lr} - sub sp, #0x8 - add r6, r2, #0x0 - mov r2, #0x1 - add r5, r3, #0x0 - str r2, [sp, #0x0] - ldr r2, [sp, #0x28] - ldr r3, [sp, #0x2c] - ldr r4, [sp, #0x24] - bl UncompressFromNarc - add r7, r0, #0x0 - beq _0200692C - add r1, sp, #0x4 - bl FUN_020B0180 - cmp r0, #0x0 - beq _02006926 - cmp r4, #0x0 - bne _020068F4 - ldr r0, [sp, #0x4] - ldr r4, [r0, #0x8] -_020068F4: - lsl r1, r5, #0x18 - add r0, r6, #0x0 - lsr r1, r1, #0x18 - bl FUN_0201886C - cmp r0, #0x0 - beq _02006912 - ldr r2, [sp, #0x4] - lsl r1, r5, #0x18 - add r0, r6, #0x0 - lsr r1, r1, #0x18 - add r2, #0xc - add r3, r4, #0x0 - bl FUN_02017DFC -_02006912: - ldr r0, [sp, #0x20] - lsl r1, r5, #0x18 - str r0, [sp, #0x0] - ldr r2, [sp, #0x4] - add r0, r6, #0x0 - lsr r1, r1, #0x18 - add r2, #0xc - add r3, r4, #0x0 - bl FUN_02017CE8 -_02006926: - add r0, r7, #0x0 - bl FreeToHeap -_0200692C: - add sp, #0x8 - pop {r3-r7, pc} - - thumb_func_start FUN_02006930 -FUN_02006930: ; 0x02006930 - push {lr} - sub sp, #0xc - str r3, [sp, #0x0] - ldr r3, [sp, #0x10] - str r3, [sp, #0x4] - ldr r3, [sp, #0x14] - str r3, [sp, #0x8] - mov r3, #0x0 - bl FUN_02006948 - add sp, #0xc - pop {pc} - - thumb_func_start FUN_02006948 -FUN_02006948: ; 0x02006948 - push {r4-r7, lr} - sub sp, #0xc - add r4, r2, #0x0 - add r7, r3, #0x0 - mov r2, #0x1 - str r2, [sp, #0x0] - ldr r3, [sp, #0x28] - mov r2, #0x0 - ldr r6, [sp, #0x20] - ldr r5, [sp, #0x24] - bl UncompressFromNarc - str r0, [sp, #0x4] - cmp r0, #0x0 - beq _02006A2A - add r1, sp, #0x8 - bl FUN_020B0138 - cmp r0, #0x0 - beq _02006A24 - ldr r0, [sp, #0x8] - ldr r1, [r0, #0xc] - add r1, r1, r7 - str r1, [r0, #0xc] - cmp r5, #0x0 - bne _02006982 - ldr r0, [sp, #0x8] - ldr r0, [r0, #0x8] - sub r5, r0, r7 -_02006982: - ldr r0, [sp, #0x8] - add r1, r5, #0x0 - ldr r0, [r0, #0xc] - bl DC_FlushRange - cmp r4, #0x7 - bhi _02006A14 - add r0, r4, r4 - add r0, pc - ldrh r0, [r0, #0x6] - lsl r0, r0, #0x10 - asr r0, r0, #0x10 - add pc, r0 -_0200699C: ; jump table (using 16-bit offset) - .short _02006A14 - _0200699C - 2; case 0 - .short _02006A14 - _0200699C - 2; case 1 - .short _020069AC - _0200699C - 2; case 2 - .short _020069E0 - _0200699C - 2; case 3 - .short _02006A14 - _0200699C - 2; case 4 - .short _02006A14 - _0200699C - 2; case 5 - .short _020069C6 - _0200699C - 2; case 6 - .short _020069FA - _0200699C - 2; case 7 -_020069AC: - bl GX_BeginLoadBGExtPltt - ldr r0, [sp, #0x8] - ldr r3, _02006A30 ; =UNK_020ECBB0 - lsl r4, r4, #0x2 - ldr r0, [r0, #0xc] - ldr r3, [r3, r4] - add r1, r6, #0x0 - add r2, r5, #0x0 - blx r3 - bl GX_EndLoadBGExtPltt - b _02006A24 -_020069C6: - bl GXS_BeginLoadBGExtPltt - ldr r0, [sp, #0x8] - ldr r3, _02006A30 ; =UNK_020ECBB0 - lsl r4, r4, #0x2 - ldr r0, [r0, #0xc] - ldr r3, [r3, r4] - add r1, r6, #0x0 - add r2, r5, #0x0 - blx r3 - bl GXS_EndLoadBGExtPltt - b _02006A24 -_020069E0: - bl GX_BeginLoadOBJExtPltt - ldr r0, [sp, #0x8] - ldr r3, _02006A30 ; =UNK_020ECBB0 - lsl r4, r4, #0x2 - ldr r0, [r0, #0xc] - ldr r3, [r3, r4] - add r1, r6, #0x0 - add r2, r5, #0x0 - blx r3 - bl GX_EndLoadOBJExtPltt - b _02006A24 -_020069FA: - bl GXS_BeginLoadOBJExtPltt - ldr r0, [sp, #0x8] - ldr r3, _02006A30 ; =UNK_020ECBB0 - lsl r4, r4, #0x2 - ldr r0, [r0, #0xc] - ldr r3, [r3, r4] - add r1, r6, #0x0 - add r2, r5, #0x0 - blx r3 - bl GXS_EndLoadOBJExtPltt - b _02006A24 -_02006A14: - ldr r0, [sp, #0x8] - ldr r3, _02006A30 ; =UNK_020ECBB0 - lsl r4, r4, #0x2 - ldr r0, [r0, #0xc] - ldr r3, [r3, r4] - add r1, r6, #0x0 - add r2, r5, #0x0 - blx r3 -_02006A24: - ldr r0, [sp, #0x4] - bl FreeToHeap -_02006A2A: - add sp, #0xc - pop {r4-r7, pc} - nop -_02006A30: .word UNK_020ECBB0 - - thumb_func_start FUN_02006A34 -FUN_02006A34: ; 0x02006A34 - push {r3-r7, lr} - sub sp, #0x8 - add r5, r2, #0x0 - mov r2, #0x1 - add r6, r3, #0x0 - str r2, [sp, #0x0] - ldr r2, [sp, #0x24] - ldr r3, [sp, #0x28] - ldr r4, [sp, #0x20] - bl UncompressFromNarc - add r7, r0, #0x0 - beq _02006A80 - add r1, sp, #0x4 - bl FUN_020B0088 - cmp r0, #0x0 - beq _02006A7A - cmp r4, #0x0 - bne _02006A60 - ldr r0, [sp, #0x4] - ldr r4, [r0, #0x10] -_02006A60: - ldr r0, [sp, #0x4] - add r1, r4, #0x0 - ldr r0, [r0, #0x14] - bl DC_FlushRange - ldr r0, [sp, #0x4] - ldr r3, _02006A88 ; =UNK_020ECBA0 - lsl r5, r5, #0x2 - ldr r0, [r0, #0x14] - ldr r3, [r3, r5] - add r1, r6, #0x0 - add r2, r4, #0x0 - blx r3 -_02006A7A: - add r0, r7, #0x0 - bl FreeToHeap -_02006A80: - add r0, r4, #0x0 - add sp, #0x8 - pop {r3-r7, pc} - nop -_02006A88: .word UNK_020ECBA0 - - thumb_func_start FUN_02006A8C -FUN_02006A8C: ; 0x02006A8C - push {r4-r7, lr} - sub sp, #0xc - add r5, r2, #0x0 - add r4, r3, #0x0 - mov r2, #0x1 - str r2, [sp, #0x0] - ldr r3, [sp, #0x20] - mov r2, #0x0 - bl UncompressFromNarc - add r6, r0, #0x0 - beq _02006AE0 - add r1, sp, #0x4 - bl FUN_020B00F0 - add r7, r0, #0x0 - add r0, r6, #0x0 - add r1, sp, #0x8 - bl FUN_020B0138 - cmp r0, #0x0 - beq _02006ADA - cmp r7, #0x0 - beq _02006ACE - ldr r0, [sp, #0x24] - add r2, r4, #0x0 - str r0, [sp, #0x0] - ldr r0, [sp, #0x8] - ldr r1, [sp, #0x4] - add r3, r5, #0x0 - bl FUN_020B10E8 - b _02006ADA -_02006ACE: - ldr r0, [sp, #0x8] - ldr r3, [sp, #0x24] - add r1, r4, #0x0 - add r2, r5, #0x0 - bl FUN_020B1240 -_02006ADA: - add r0, r6, #0x0 - bl FreeToHeap -_02006AE0: - add sp, #0xc - pop {r4-r7, pc} - - thumb_func_start FUN_02006AE4 -FUN_02006AE4: ; 0x02006AE4 - push {r4-r6, lr} - sub sp, #0x8 - add r5, r3, #0x0 - mov r3, #0x1 - str r3, [sp, #0x0] - ldr r3, [sp, #0x24] - bl UncompressFromNarc - add r6, r0, #0x0 - ldr r4, _02006B30 ; =0x00000000 - beq _02006B28 - add r1, sp, #0x4 - bl FUN_020B0088 - cmp r0, #0x0 - beq _02006B22 - ldr r1, [sp, #0x18] - cmp r1, #0x0 - beq _02006B0E - ldr r0, [sp, #0x4] - str r1, [r0, #0x10] -_02006B0E: - ldr r4, _02006B34 ; =UNK_020ECBA8 - lsl r5, r5, #0x2 - ldr r0, [sp, #0x4] - ldr r1, [sp, #0x20] - ldr r2, [sp, #0x1c] - ldr r3, [sp, #0x28] - ldr r4, [r4, r5] - blx r4 - ldr r0, [sp, #0x4] - ldr r4, [r0, #0x10] -_02006B22: - add r0, r6, #0x0 - bl FreeToHeap -_02006B28: - add r0, r4, #0x0 - add sp, #0x8 - pop {r4-r6, pc} - nop -_02006B30: .word 0x00000000 -_02006B34: .word UNK_020ECBA8 - - thumb_func_start FUN_02006B38 -FUN_02006B38: ; 0x02006B38 - push {r4-r6, lr} - sub sp, #0x8 - add r5, r3, #0x0 - mov r3, #0x1 - str r3, [sp, #0x0] - ldr r3, [sp, #0x24] - bl UncompressFromNarc - add r4, r0, #0x0 - beq _02006B9E - add r1, sp, #0x4 - bl FUN_020B0088 - cmp r0, #0x0 - beq _02006B98 - ldr r1, [sp, #0x18] - cmp r1, #0x0 - beq _02006B60 - ldr r0, [sp, #0x4] - str r1, [r0, #0x10] -_02006B60: - ldr r0, [sp, #0x1c] - cmp r0, #0x1 - beq _02006B6C - cmp r0, #0x2 - beq _02006B7C - b _02006B88 -_02006B6C: - mov r0, #0x1 - lsl r0, r0, #0x1a - ldr r1, [r0, #0x0] - ldr r0, _02006BA4 ; =0x00300010 - and r1, r0 - ldr r0, [sp, #0x4] - str r1, [r0, #0x8] - b _02006B88 -_02006B7C: - ldr r0, _02006BA8 ; =0x04001000 - ldr r1, [r0, #0x0] - ldr r0, _02006BA4 ; =0x00300010 - and r1, r0 - ldr r0, [sp, #0x4] - str r1, [r0, #0x8] -_02006B88: - lsl r6, r5, #0x2 - ldr r5, _02006BAC ; =UNK_020ECB98 - ldr r0, [sp, #0x4] - ldr r1, [sp, #0x20] - ldr r2, [sp, #0x1c] - ldr r3, [sp, #0x28] - ldr r5, [r5, r6] - blx r5 -_02006B98: - add r0, r4, #0x0 - bl FreeToHeap -_02006B9E: - add sp, #0x8 - pop {r4-r6, pc} - nop -_02006BA4: .word 0x00300010 -_02006BA8: .word 0x04001000 -_02006BAC: .word UNK_020ECB98 - - thumb_func_start FUN_02006BB0 -FUN_02006BB0: ; 0x02006BB0 - push {r3-r5, lr} - add r4, r3, #0x0 - mov r3, #0x0 - str r3, [sp, #0x0] - ldr r3, [sp, #0x10] - bl UncompressFromNarc - add r5, r0, #0x0 - beq _02006BD6 - add r1, r4, #0x0 - bl FUN_020B0030 - cmp r0, #0x0 - bne _02006BD6 - add r0, r5, #0x0 - bl FreeToHeap - mov r0, #0x0 - pop {r3-r5, pc} -_02006BD6: - add r0, r5, #0x0 - pop {r3-r5, pc} - .balign 4 - - thumb_func_start FUN_02006BDC -FUN_02006BDC: ; 0x02006BDC - push {r3-r5, lr} - add r4, r3, #0x0 - mov r3, #0x0 - str r3, [sp, #0x0] - ldr r3, [sp, #0x10] - bl UncompressFromNarc - add r5, r0, #0x0 - beq _02006C02 - add r1, r4, #0x0 - bl FUN_020B0180 - cmp r0, #0x0 - bne _02006C02 - add r0, r5, #0x0 - bl FreeToHeap - mov r0, #0x0 - pop {r3-r5, pc} -_02006C02: - add r0, r5, #0x0 - pop {r3-r5, pc} - .balign 4 - - thumb_func_start FUN_02006C08 -FUN_02006C08: ; 0x02006C08 - push {r3-r5, lr} - add r5, r2, #0x0 - mov r2, #0x0 - str r2, [sp, #0x0] - bl UncompressFromNarc - add r4, r0, #0x0 - beq _02006C2C - add r1, r5, #0x0 - bl FUN_020B0138 - cmp r0, #0x0 - bne _02006C2C - add r0, r4, #0x0 - bl FreeToHeap - mov r0, #0x0 - pop {r3-r5, pc} -_02006C2C: - add r0, r4, #0x0 - pop {r3-r5, pc} - - thumb_func_start FUN_02006C30 -FUN_02006C30: ; 0x02006C30 - push {r3-r5, lr} - add r4, r3, #0x0 - mov r3, #0x0 - str r3, [sp, #0x0] - ldr r3, [sp, #0x10] - bl UncompressFromNarc - add r5, r0, #0x0 - beq _02006C56 - add r1, r4, #0x0 - bl FUN_020AFEB8 - cmp r0, #0x0 - bne _02006C56 - add r0, r5, #0x0 - bl FreeToHeap - mov r0, #0x0 - pop {r3-r5, pc} -_02006C56: - add r0, r5, #0x0 - pop {r3-r5, pc} - .balign 4 - - thumb_func_start FUN_02006C5C -FUN_02006C5C: ; 0x02006C5C - push {r3-r5, lr} - add r4, r3, #0x0 - mov r3, #0x0 - str r3, [sp, #0x0] - ldr r3, [sp, #0x10] - bl UncompressFromNarc - add r5, r0, #0x0 - beq _02006C82 - add r1, r4, #0x0 - bl thunk_FUN_020afda0_2 - cmp r0, #0x0 - bne _02006C82 - add r0, r5, #0x0 - bl FreeToHeap - mov r0, #0x0 - pop {r3-r5, pc} -_02006C82: - add r0, r5, #0x0 - pop {r3-r5, pc} - .balign 4 - - thumb_func_start FUN_02006C88 -FUN_02006C88: ; 0x02006C88 - push {r3, lr} - add r3, r2, #0x0 - mov r2, #0x0 - str r2, [sp, #0x0] - mov r2, #0x1 - bl UncompressFromNarc - pop {r3, pc} - - thumb_func_start UncompressFromNarc -UncompressFromNarc: ; 0x02006C98 - ; BOOL UncompressFromNarc(NarcId narcId, s32 memberNo, BOOL a2, u32 heap_id, BOOL a4) - push {r3-r7, lr} - add r5, r2, #0x0 - add r7, r0, #0x0 - add r6, r3, #0x0 - str r1, [sp, #0x0] - cmp r5, #0x0 - bne _02006CAC - ldr r2, [sp, #0x18] - cmp r2, #0x1 - bne _02006CC0 -_02006CAC: - ldr r1, [sp, #0x0] - add r0, r7, #0x0 - bl GetNarcMemberSizeByIdPair - add r1, r0, #0x0 - add r0, r6, #0x0 - bl AllocFromHeapAtEnd - add r4, r0, #0x0 - b _02006CCE -_02006CC0: - bl GetNarcMemberSizeByIdPair - add r1, r0, #0x0 - add r0, r6, #0x0 - bl AllocFromHeap - add r4, r0, #0x0 -_02006CCE: - cmp r4, #0x0 - beq _02006D12 - ldr r2, [sp, #0x0] - add r0, r4, #0x0 - add r1, r7, #0x0 - bl ReadWholeNarcMemberByIdPair - cmp r5, #0x0 - beq _02006D12 - ldr r0, [sp, #0x18] - cmp r0, #0x0 - bne _02006CF2 - ldr r1, [r4, #0x0] - add r0, r6, #0x0 - lsr r1, r1, #0x8 - bl AllocFromHeap - b _02006CFC -_02006CF2: - ldr r1, [r4, #0x0] - add r0, r6, #0x0 - lsr r1, r1, #0x8 - bl AllocFromHeapAtEnd -_02006CFC: - add r5, r0, #0x0 - cmp r5, #0x0 - beq _02006D10 - add r0, r4, #0x0 - add r1, r5, #0x0 - bl MI_UncompressLZ8 - add r0, r4, #0x0 - bl FreeToHeap -_02006D10: - add r4, r5, #0x0 -_02006D12: - add r0, r4, #0x0 - pop {r3-r7, pc} - .balign 4 - - thumb_func_start FUN_02006D18 -FUN_02006D18: ; 0x02006D18 - push {r3-r7, lr} - sub sp, #0x8 - ldr r5, [sp, #0x24] - str r0, [sp, #0x0] - str r1, [sp, #0x4] - add r6, r2, #0x0 - add r7, r3, #0x0 - bl GetNarcMemberSizeByIdPair - str r0, [r5, #0x0] - cmp r6, #0x0 - bne _02006D36 - ldr r0, [sp, #0x20] - cmp r0, #0x1 - bne _02006D42 -_02006D36: - ldr r1, [r5, #0x0] - add r0, r7, #0x0 - bl AllocFromHeapAtEnd - add r4, r0, #0x0 - b _02006D4C -_02006D42: - ldr r1, [r5, #0x0] - add r0, r7, #0x0 - bl AllocFromHeap - add r4, r0, #0x0 -_02006D4C: - cmp r4, #0x0 - beq _02006D92 - ldr r1, [sp, #0x0] - ldr r2, [sp, #0x4] - add r0, r4, #0x0 - bl ReadWholeNarcMemberByIdPair - cmp r6, #0x0 - beq _02006D92 - ldr r0, [r4, #0x0] - lsr r0, r0, #0x8 - str r0, [r5, #0x0] - ldr r0, [sp, #0x20] - cmp r0, #0x0 - bne _02006D74 - ldr r1, [r5, #0x0] - add r0, r7, #0x0 - bl AllocFromHeap - b _02006D7C -_02006D74: - ldr r1, [r5, #0x0] - add r0, r7, #0x0 - bl AllocFromHeapAtEnd -_02006D7C: - add r5, r0, #0x0 - cmp r5, #0x0 - beq _02006D90 - add r0, r4, #0x0 - add r1, r5, #0x0 - bl MI_UncompressLZ8 - add r0, r4, #0x0 - bl FreeToHeap -_02006D90: - add r4, r5, #0x0 -_02006D92: - add r0, r4, #0x0 - add sp, #0x8 - pop {r3-r7, pc} diff --git a/arm9/asm/unk_02006D98.s b/arm9/asm/unk_02006D98.s index 0e1ff930..07650c04 100644 --- a/arm9/asm/unk_02006D98.s +++ b/arm9/asm/unk_02006D98.s @@ -2,7 +2,7 @@ .include "global.inc" .extern UNK_020ECD4C - .extern UNK_020FFA38 + .extern FX_SinCosTable_ .section .rodata @@ -144,7 +144,7 @@ _02006E12: add r5, #0x98 cmp r6, #0x4 blt _02006E12 - bl FUN_020B02C8 + bl NNS_G2dSetupSoftwareSpriteCamera ldr r2, _02006EC8 ; =0x000002E3 mov r0, #0x0 strb r0, [r4, r2] @@ -155,7 +155,7 @@ _02006E12: bl AllocAndReadWholeNarcMemberByIdPair add r1, sp, #0xc str r0, [sp, #0x4] - bl FUN_020B0088 + bl NNS_G2dGetUnpackedCharacterData ldr r0, [sp, #0xc] mov r1, #0xaf ldr r0, [r0, #0x4] @@ -235,7 +235,7 @@ FUN_02006ED4: ; 0x02006ED4 bl FUN_020082A8 add r0, r5, #0x0 bl FUN_020086F4 - bl FUN_020BB394 + bl NNS_G3dGeFlushBuffer mov r6, #0x9f mov r0, #0x0 ldr r4, _02007250 ; =0x04000444 @@ -295,7 +295,7 @@ _02006F48: add r1, #0x24 blx r2 _02006F56: - bl FUN_020BB394 + bl NNS_G3dGeFlushBuffer ldr r0, _02007258 ; =0x000002E3 ldrb r0, [r5, r0] cmp r0, #0x1 @@ -349,7 +349,7 @@ _02006F7E: ldrh r0, [r4, #0x38] asr r0, r0, #0x4 lsl r1, r0, #0x2 - ldr r0, _02007268 ; =UNK_020FFA38 + ldr r0, _02007268 ; =FX_SinCosTable_ add r2, r0, r1 ldrsh r0, [r0, r1] mov r1, #0x2 @@ -358,7 +358,7 @@ _02006F7E: ldrh r0, [r4, #0x3a] asr r0, r0, #0x4 lsl r1, r0, #0x2 - ldr r0, _02007268 ; =UNK_020FFA38 + ldr r0, _02007268 ; =FX_SinCosTable_ add r2, r0, r1 ldrsh r0, [r0, r1] mov r1, #0x2 @@ -367,7 +367,7 @@ _02006F7E: ldrh r0, [r4, #0x3c] asr r0, r0, #0x4 lsl r1, r0, #0x2 - ldr r0, _02007268 ; =UNK_020FFA38 + ldr r0, _02007268 ; =FX_SinCosTable_ add r2, r0, r1 ldrsh r0, [r0, r1] mov r1, #0x2 @@ -505,7 +505,7 @@ _02006F7E: add r2, r3, r2 asr r1, r1, #0x10 mov r3, r12 - bl FUN_020B0250 + bl NNS_G2dDrawSpriteFast b _02007174 _02007104: mov r0, #0x34 @@ -562,7 +562,7 @@ _02007104: lsl r1, r1, #0x10 asr r1, r1, #0x10 add r2, r6, r2 - bl FUN_020B0250 + bl NNS_G2dDrawSpriteFast _02007174: add r0, r4, #0x0 add r0, #0x6c @@ -689,7 +689,7 @@ _02007258: .word 0x000002E3 _0200725C: .word 0x04000454 _02007260: .word 0x040004AC _02007264: .word 0x04000470 -_02007268: .word UNK_020FFA38 +_02007268: .word FX_SinCosTable_ _0200726C: .word 0x040004C0 _02007270: .word 0x00004210 _02007274: .word 0x040004A4 @@ -725,7 +725,7 @@ _0200727C: lsl r1, r1, #0x10 ldr r2, _020072E0 ; =0xFFFFFC18 asr r1, r1, #0x10 - bl FUN_020B0250 + bl NNS_G2dDrawSpriteFast _020072BC: ldr r0, [sp, #0x14] add r4, #0x98 @@ -873,7 +873,7 @@ _020073AE: _020073BE: cmp r4, #0x4 bne _020073C6 - bl ErrorHandling + bl GF_AssertFail _020073C6: ldr r0, [sp, #0x30] ldr r3, [sp, #0x14] @@ -908,7 +908,7 @@ FUN_020073E8: ; 0x020073E8 str r3, [sp, #0x4] lsr r0, r0, #0x1f beq _02007408 - bl ErrorHandling + bl GF_AssertFail _02007408: add r5, r4, r6 mov r0, #0x0 @@ -1747,7 +1747,7 @@ _020079CC: lsr r0, r0, #0x1e pop {r3, pc} _020079D6: - bl ErrorHandling + bl GF_AssertFail mov r0, #0x0 pop {r3, pc} .balign 4 @@ -2884,7 +2884,7 @@ FUN_020081C4: ; 0x020081C4 strb r1, [r4, r0] sub r0, #0x81 add r0, r4, r0 - bl FUN_020B1A24 + bl NNS_G2dInitImageProxy mov r3, #0xae lsl r3, r3, #0x2 mov r1, #0x20 @@ -2910,7 +2910,7 @@ FUN_020081C4: ; 0x020081C4 ldr r1, [r4, r1] mov r2, #0x0 add r3, r4, r3 - bl FUN_020B1528 + bl NNS_G2dLoadImage2DMapping _02008212: ldr r0, _02008258 ; =0x000002E2 ldrb r1, [r4, r0] @@ -2920,7 +2920,7 @@ _02008212: strb r1, [r4, r0] sub r0, #0x5e add r0, r4, r0 - bl FUN_020B19DC + bl NNS_G2dInitImagePaletteProxy mov r3, #0xaa lsl r3, r3, #0x2 add r0, r3, #0x0 @@ -2941,7 +2941,7 @@ _02008212: add r0, r4, r0 mov r2, #0x0 add r3, r4, r3 - bl FUN_020B1240 + bl NNS_G2dLoadPalette _02008252: pop {r4, pc} .balign 4 @@ -2961,7 +2961,7 @@ FUN_02008268: ; 0x02008268 push {r4, lr} add r4, r0, #0x0 bne _02008272 - bl ErrorHandling + bl GF_AssertFail _02008272: ldr r0, [r4, #0x0] lsl r0, r0, #0x1f @@ -3037,7 +3037,7 @@ _020082CC: bl AllocAndReadWholeNarcMemberByIdPair add r1, sp, #0x58 str r0, [sp, #0x4c] - bl FUN_020B0088 + bl NNS_G2dGetUnpackedCharacterData ldr r0, [sp, #0x58] mov r1, #0xaf ldr r0, [r0, #0x4] @@ -3600,7 +3600,7 @@ _02008706: bl AllocAndReadWholeNarcMemberByIdPair add r1, sp, #0x18 str r0, [sp, #0x10] - bl FUN_020B0138 + bl NNS_G2dGetUnpackedPaletteData ldr r0, [sp, #0x18] mov r7, #0x0 ldr r1, [r0, #0x0] @@ -3646,7 +3646,7 @@ _0200874A: bl AllocAndReadWholeNarcMemberByIdPair add r1, sp, #0x18 str r0, [sp, #0x4] - bl FUN_020B0138 + bl NNS_G2dGetUnpackedPaletteData ldr r0, [sp, #0x18] mov r7, #0xad ldr r0, [r0, #0xc] diff --git a/arm9/asm/unk_02008AA4.s b/arm9/asm/unk_02008AA4.s index 45b46079..e6b5abcc 100644 --- a/arm9/asm/unk_02008AA4.s +++ b/arm9/asm/unk_02008AA4.s @@ -18,33 +18,33 @@ FUN_02008AA4: ; 0x02008AA4 str r4, [sp, #0xc] cmp r0, #0x0 bne _02008AC2 - bl ErrorHandling + bl GF_AssertFail _02008AC2: ldr r0, [sp, #0x48] cmp r0, #0x0 bne _02008ACC - bl ErrorHandling + bl GF_AssertFail _02008ACC: ldr r0, [sp, #0x50] cmp r0, #0x0 bne _02008AD6 - bl ErrorHandling + bl GF_AssertFail _02008AD6: ldr r0, [sp, #0x4c] cmp r0, #0x0 bne _02008AE0 - bl ErrorHandling + bl GF_AssertFail _02008AE0: cmp r5, #0x0 bne _02008AE8 - bl ErrorHandling + bl GF_AssertFail _02008AE8: ldr r0, [sp, #0x44] add r1, r6, #0x0 bl FUN_020094F0 add r7, r0, #0x0 bne _02008AF8 - bl ErrorHandling + bl GF_AssertFail _02008AF8: ldr r0, [sp, #0x48] ldr r1, [sp, #0x0] @@ -52,7 +52,7 @@ _02008AF8: str r0, [sp, #0x14] cmp r0, #0x0 bne _02008B0A - bl ErrorHandling + bl GF_AssertFail _02008B0A: ldr r0, [sp, #0x4c] ldr r1, [sp, #0x4] @@ -60,7 +60,7 @@ _02008B0A: str r0, [sp, #0x10] cmp r0, #0x0 bne _02008B1C - bl ErrorHandling + bl GF_AssertFail _02008B1C: ldr r0, [sp, #0x50] cmp r0, #0x0 @@ -74,7 +74,7 @@ _02008B1C: str r0, [sp, #0xc] cmp r0, #0x0 bne _02008B3A - bl ErrorHandling + bl GF_AssertFail _02008B3A: ldr r0, [sp, #0x54] cmp r0, #0x0 @@ -104,7 +104,7 @@ _02008B62: bl FUN_02009C80 add r6, r0, #0x0 bne _02008B78 - bl ErrorHandling + bl GF_AssertFail _02008B78: add r0, r7, #0x0 bl FUN_02009544 @@ -115,7 +115,7 @@ _02008B82: bl FUN_02009C5C add r6, r0, #0x0 bne _02008B90 - bl ErrorHandling + bl GF_AssertFail _02008B90: mov r0, #0x0 str r0, [r5, #0x4] @@ -247,7 +247,7 @@ FUN_02008C80: ; 0x02008C80 push {r4, lr} add r4, r0, #0x0 bne _02008C8A - bl ErrorHandling + bl GF_AssertFail _02008C8A: ldr r0, [r4, #0x0] cmp r0, #0x0 @@ -409,7 +409,7 @@ _02008DB6: bl FUN_0201D194 pop {r4, pc} _02008DC4: - bl ErrorHandling + bl GF_AssertFail pop {r4, pc} nop _02008DCC: .word 0x00100010 diff --git a/arm9/asm/unk_02008DEC.s b/arm9/asm/unk_02008DEC.s index 1b0161ae..31aabcc3 100644 --- a/arm9/asm/unk_02008DEC.s +++ b/arm9/asm/unk_02008DEC.s @@ -39,17 +39,17 @@ FUN_02008E2C: ; 0x02008E2C push {r4, lr} add r4, r0, #0x0 bne _02008E36 - bl ErrorHandling + bl GF_AssertFail _02008E36: ldr r0, [r4, #0x0] cmp r0, #0x0 bne _02008E40 - bl ErrorHandling + bl GF_AssertFail _02008E40: ldr r0, [r4, #0x4] cmp r0, #0x0 bne _02008E4A - bl ErrorHandling + bl GF_AssertFail _02008E4A: add r0, r4, #0x0 bl FUN_020094C4 @@ -75,29 +75,29 @@ FUN_02008E6C: ; 0x02008E6C add r7, r3, #0x0 cmp r5, #0x0 bne _02008E80 - bl ErrorHandling + bl GF_AssertFail _02008E80: cmp r4, #0x0 bne _02008E88 - bl ErrorHandling + bl GF_AssertFail _02008E88: ldr r0, [r4, #0x4] cmp r0, r6 bgt _02008E92 - bl ErrorHandling + bl GF_AssertFail _02008E92: ldr r1, [r5, #0x10] ldr r0, [r4, #0x8] cmp r1, r0 beq _02008E9E - bl ErrorHandling + bl GF_AssertFail _02008E9E: add r0, r5, #0x0 bl FUN_020097D0 str r0, [sp, #0x1c] cmp r0, #0x0 bne _02008EAE - bl ErrorHandling + bl GF_AssertFail _02008EAE: ldrb r0, [r4, #0xc] cmp r0, #0x0 @@ -112,7 +112,7 @@ _02008EAE: bl FUN_0200945C cmp r0, #0x1 beq _02008ECE - bl ErrorHandling + bl GF_AssertFail _02008ECE: ldr r0, [r6, #0x44] ldr r1, [sp, #0x1c] @@ -137,7 +137,7 @@ _02008EEA: bl FUN_0200945C cmp r0, #0x1 beq _02008F02 - bl ErrorHandling + bl GF_AssertFail _02008F02: ldr r0, [r6, #0x8] ldr r1, [sp, #0x1c] @@ -175,18 +175,18 @@ FUN_02008F34: ; 0x02008F34 str r2, [sp, #0x1c] cmp r5, #0x0 bne _02008F48 - bl ErrorHandling + bl GF_AssertFail _02008F48: ldr r0, [r5, #0x10] cmp r0, #0x0 beq _02008F52 - bl ErrorHandling + bl GF_AssertFail _02008F52: add r0, r5, #0x0 bl FUN_020097D0 add r6, r0, #0x0 bne _02008F60 - bl ErrorHandling + bl GF_AssertFail _02008F60: ldr r0, [sp, #0x38] str r4, [sp, #0x0] @@ -222,18 +222,18 @@ FUN_02008F90: ; 0x02008F90 str r2, [sp, #0x1c] cmp r5, #0x0 bne _02008FA4 - bl ErrorHandling + bl GF_AssertFail _02008FA4: ldr r0, [r5, #0x10] cmp r0, #0x0 beq _02008FAE - bl ErrorHandling + bl GF_AssertFail _02008FAE: add r0, r5, #0x0 bl FUN_020097D0 add r6, r0, #0x0 bne _02008FBC - bl ErrorHandling + bl GF_AssertFail _02008FBC: ldr r0, [sp, #0x38] str r4, [sp, #0x0] @@ -269,18 +269,18 @@ FUN_02008FEC: ; 0x02008FEC str r2, [sp, #0x1c] cmp r5, #0x0 bne _02009000 - bl ErrorHandling + bl GF_AssertFail _02009000: ldr r0, [r5, #0x10] cmp r0, #0x1 beq _0200900A - bl ErrorHandling + bl GF_AssertFail _0200900A: add r0, r5, #0x0 bl FUN_020097D0 add r6, r0, #0x0 bne _02009018 - bl ErrorHandling + bl GF_AssertFail _02009018: ldr r0, [sp, #0x38] str r4, [sp, #0x0] @@ -318,18 +318,18 @@ FUN_0200904C: ; 0x0200904C str r2, [sp, #0x1c] cmp r5, #0x0 bne _02009060 - bl ErrorHandling + bl GF_AssertFail _02009060: ldr r0, [r5, #0x10] cmp r0, #0x1 beq _0200906A - bl ErrorHandling + bl GF_AssertFail _0200906A: add r0, r5, #0x0 bl FUN_020097D0 add r6, r0, #0x0 bne _02009078 - bl ErrorHandling + bl GF_AssertFail _02009078: ldr r0, [sp, #0x38] str r4, [sp, #0x0] @@ -367,13 +367,13 @@ FUN_020090AC: ; 0x020090AC str r2, [sp, #0x1c] cmp r5, #0x0 bne _020090C0 - bl ErrorHandling + bl GF_AssertFail _020090C0: add r0, r5, #0x0 bl FUN_020097D0 add r6, r0, #0x0 bne _020090CE - bl ErrorHandling + bl GF_AssertFail _020090CE: ldr r0, [sp, #0x38] str r4, [sp, #0x0] @@ -408,21 +408,21 @@ FUN_020090FC: ; 0x020090FC str r3, [sp, #0x20] cmp r5, #0x0 bne _02009110 - bl ErrorHandling + bl GF_AssertFail _02009110: ldr r0, [r5, #0x10] cmp r0, #0x0 beq _0200911A - bl ErrorHandling + bl GF_AssertFail _0200911A: cmp r4, #0x0 bne _02009122 - bl ErrorHandling + bl GF_AssertFail _02009122: ldr r0, [r4, #0x4] cmp r0, #0x0 beq _0200912C - bl ErrorHandling + bl GF_AssertFail _0200912C: add r0, r4, #0x0 bl FUN_02009530 @@ -461,21 +461,21 @@ FUN_02009168: ; 0x02009168 str r3, [sp, #0x20] cmp r5, #0x0 bne _0200917C - bl ErrorHandling + bl GF_AssertFail _0200917C: ldr r0, [r5, #0x10] cmp r0, #0x1 beq _02009186 - bl ErrorHandling + bl GF_AssertFail _02009186: cmp r4, #0x0 bne _0200918E - bl ErrorHandling + bl GF_AssertFail _0200918E: ldr r0, [r4, #0x4] cmp r0, #0x1 beq _02009198 - bl ErrorHandling + bl GF_AssertFail _02009198: add r0, r4, #0x0 bl FUN_02009530 @@ -519,18 +519,18 @@ FUN_020091E0: ; 0x020091E0 str r2, [sp, #0x1c] cmp r5, #0x0 bne _020091F4 - bl ErrorHandling + bl GF_AssertFail _020091F4: ldr r0, [r5, #0x10] cmp r0, #0x0 beq _020091FE - bl ErrorHandling + bl GF_AssertFail _020091FE: add r0, r5, #0x0 bl FUN_020097D0 add r6, r0, #0x0 bne _0200920C - bl ErrorHandling + bl GF_AssertFail _0200920C: ldr r0, [sp, #0x38] str r4, [sp, #0x0] @@ -566,18 +566,18 @@ FUN_0200923C: ; 0x0200923C str r2, [sp, #0x1c] cmp r5, #0x0 bne _02009250 - bl ErrorHandling + bl GF_AssertFail _02009250: ldr r0, [r5, #0x10] cmp r0, #0x0 beq _0200925A - bl ErrorHandling + bl GF_AssertFail _0200925A: add r0, r5, #0x0 bl FUN_020097D0 add r6, r0, #0x0 bne _02009268 - bl ErrorHandling + bl GF_AssertFail _02009268: ldr r0, [sp, #0x38] str r4, [sp, #0x0] @@ -613,18 +613,18 @@ FUN_02009298: ; 0x02009298 str r2, [sp, #0x1c] cmp r5, #0x0 bne _020092AC - bl ErrorHandling + bl GF_AssertFail _020092AC: ldr r0, [r5, #0x10] cmp r0, #0x1 beq _020092B6 - bl ErrorHandling + bl GF_AssertFail _020092B6: add r0, r5, #0x0 bl FUN_020097D0 add r6, r0, #0x0 bne _020092C4 - bl ErrorHandling + bl GF_AssertFail _020092C4: ldr r0, [sp, #0x38] str r4, [sp, #0x0] @@ -662,18 +662,18 @@ FUN_020092F8: ; 0x020092F8 str r2, [sp, #0x1c] cmp r5, #0x0 bne _0200930C - bl ErrorHandling + bl GF_AssertFail _0200930C: ldr r0, [r5, #0x10] cmp r0, #0x1 beq _02009316 - bl ErrorHandling + bl GF_AssertFail _02009316: add r0, r5, #0x0 bl FUN_020097D0 add r6, r0, #0x0 bne _02009324 - bl ErrorHandling + bl GF_AssertFail _02009324: ldr r0, [sp, #0x38] str r4, [sp, #0x0] @@ -711,13 +711,13 @@ FUN_02009358: ; 0x02009358 str r2, [sp, #0x1c] cmp r5, #0x0 bne _0200936C - bl ErrorHandling + bl GF_AssertFail _0200936C: add r0, r5, #0x0 bl FUN_020097D0 add r6, r0, #0x0 bne _0200937A - bl ErrorHandling + bl GF_AssertFail _0200937A: ldr r0, [sp, #0x38] str r4, [sp, #0x0] @@ -752,11 +752,11 @@ FUN_020093A8: ; 0x020093A8 add r7, r3, #0x0 cmp r5, #0x0 bne _020093BC - bl ErrorHandling + bl GF_AssertFail _020093BC: cmp r4, #0x0 bne _020093C4 - bl ErrorHandling + bl GF_AssertFail _020093C4: str r6, [sp, #0x0] str r7, [sp, #0x4] @@ -848,7 +848,7 @@ FUN_0200945C: ; 0x0200945C add r4, r1, #0x0 cmp r5, #0x0 bne _0200946A - bl ErrorHandling + bl GF_AssertFail _0200946A: ldr r0, [r5, #0x0] add r1, r4, #0x0 @@ -860,7 +860,7 @@ FUN_02009474: ; 0x02009474 push {r4, lr} add r4, r0, #0x0 bne _0200947E - bl ErrorHandling + bl GF_AssertFail _0200947E: add r0, r4, #0x0 bl FUN_02009920 @@ -877,12 +877,12 @@ FUN_02009490: ; 0x02009490 add r4, r1, #0x0 cmp r5, #0x0 bne _0200949E - bl ErrorHandling + bl GF_AssertFail _0200949E: ldr r0, [r5, #0x4] cmp r0, #0x0 bne _020094A8 - bl ErrorHandling + bl GF_AssertFail _020094A8: add r0, r4, #0x0 bl FUN_02009920 @@ -931,7 +931,7 @@ FUN_020094F0: ; 0x020094F0 add r7, r1, #0x0 cmp r5, #0x0 bne _020094FE - bl ErrorHandling + bl GF_AssertFail _020094FE: ldr r0, [r5, #0x8] mov r6, #0x0 @@ -966,7 +966,7 @@ FUN_02009530: ; 0x02009530 push {r4, lr} add r4, r0, #0x0 bne _0200953A - bl ErrorHandling + bl GF_AssertFail _0200953A: ldr r0, [r4, #0x0] bl FUN_02020E38 @@ -980,7 +980,7 @@ FUN_02009544: ; 0x02009544 ldr r0, [r4, #0x4] cmp r0, #0x0 beq _02009552 - bl ErrorHandling + bl GF_AssertFail _02009552: add r0, r4, #0x0 bl FUN_02009934 @@ -994,7 +994,7 @@ FUN_0200955C: ; 0x0200955C ldr r0, [r4, #0x4] cmp r0, #0x1 beq _0200956A - bl ErrorHandling + bl GF_AssertFail _0200956A: add r0, r4, #0x0 bl FUN_02009934 @@ -1008,7 +1008,7 @@ FUN_02009574: ; 0x02009574 ldr r0, [r4, #0x4] cmp r0, #0x2 beq _02009582 - bl ErrorHandling + bl GF_AssertFail _02009582: add r0, r4, #0x0 bl FUN_02009934 @@ -1022,7 +1022,7 @@ FUN_0200958C: ; 0x0200958C ldr r0, [r4, #0x4] cmp r0, #0x3 beq _0200959A - bl ErrorHandling + bl GF_AssertFail _0200959A: add r0, r4, #0x0 bl FUN_02009934 @@ -1036,7 +1036,7 @@ FUN_020095A4: ; 0x020095A4 ldr r0, [r4, #0x4] cmp r0, #0x4 beq _020095B2 - bl ErrorHandling + bl GF_AssertFail _020095B2: add r0, r4, #0x0 bl FUN_02009934 @@ -1050,7 +1050,7 @@ FUN_020095BC: ; 0x020095BC ldr r0, [r4, #0x4] cmp r0, #0x5 beq _020095CA - bl ErrorHandling + bl GF_AssertFail _020095CA: add r0, r4, #0x0 bl FUN_02009934 @@ -1062,7 +1062,7 @@ FUN_020095D4: ; 0x020095D4 push {r4, lr} add r4, r0, #0x0 bne _020095DE - bl ErrorHandling + bl GF_AssertFail _020095DE: ldr r0, [r4, #0x4] pop {r4, pc} @@ -1073,7 +1073,7 @@ FUN_020095E4: ; 0x020095E4 push {r4, lr} add r4, r0, #0x0 bne _020095EE - bl ErrorHandling + bl GF_AssertFail _020095EE: ldr r0, [r4, #0x4] cmp r0, #0x0 @@ -1098,7 +1098,7 @@ FUN_02009610: ; 0x02009610 push {r4, lr} add r4, r0, #0x0 bne _0200961A - bl ErrorHandling + bl GF_AssertFail _0200961A: ldr r0, [r4, #0x4] cmp r0, #0x1 @@ -1119,7 +1119,7 @@ FUN_02009630: ; 0x02009630 add r4, r1, #0x0 cmp r5, #0x0 bne _0200963E - bl ErrorHandling + bl GF_AssertFail _0200963E: ldr r0, [r5, #0x4] cmp r0, #0x0 @@ -1157,7 +1157,7 @@ FUN_02009668: ; 0x02009668 add r6, r2, #0x0 cmp r4, #0x0 bne _02009678 - bl ErrorHandling + bl GF_AssertFail _02009678: ldr r0, [r5, #0x0] str r0, [r4, #0x8] @@ -1210,7 +1210,7 @@ FUN_020096CC: ; 0x020096CC push {r4, lr} add r4, r0, #0x0 bne _020096D6 - bl ErrorHandling + bl GF_AssertFail _020096D6: ldr r0, [r4, #0x4] pop {r4, pc} @@ -1223,12 +1223,12 @@ FUN_020096DC: ; 0x020096DC add r4, r1, #0x0 cmp r5, #0x0 bne _020096EA - bl ErrorHandling + bl GF_AssertFail _020096EA: ldr r0, [r5, #0x4] cmp r0, r4 bgt _020096F4 - bl ErrorHandling + bl GF_AssertFail _020096F4: ldrb r0, [r5, #0xc] ldr r1, [r5, #0x0] @@ -1253,12 +1253,12 @@ FUN_02009710: ; 0x02009710 add r4, r1, #0x0 cmp r5, #0x0 bne _0200971E - bl ErrorHandling + bl GF_AssertFail _0200971E: ldr r0, [r5, #0x4] cmp r0, r4 bgt _02009728 - bl ErrorHandling + bl GF_AssertFail _02009728: ldrb r0, [r5, #0xc] cmp r0, #0x1 @@ -1279,12 +1279,12 @@ FUN_0200973C: ; 0x0200973C add r4, r1, #0x0 cmp r5, #0x0 bne _0200974A - bl ErrorHandling + bl GF_AssertFail _0200974A: ldr r0, [r5, #0x4] cmp r0, r4 bgt _02009754 - bl ErrorHandling + bl GF_AssertFail _02009754: ldrb r0, [r5, #0xc] cmp r0, #0x1 @@ -1305,12 +1305,12 @@ FUN_02009768: ; 0x02009768 add r4, r1, #0x0 cmp r5, #0x0 bne _02009776 - bl ErrorHandling + bl GF_AssertFail _02009776: ldr r0, [r5, #0x4] cmp r0, r4 bgt _02009780 - bl ErrorHandling + bl GF_AssertFail _02009780: ldrb r0, [r5, #0xc] ldr r1, [r5, #0x0] @@ -1335,12 +1335,12 @@ FUN_0200979C: ; 0x0200979C add r4, r1, #0x0 cmp r5, #0x0 bne _020097AA - bl ErrorHandling + bl GF_AssertFail _020097AA: ldr r0, [r5, #0x4] cmp r0, r4 bgt _020097B4 - bl ErrorHandling + bl GF_AssertFail _020097B4: ldrb r0, [r5, #0xc] ldr r1, [r5, #0x0] @@ -1457,7 +1457,7 @@ FUN_0200986C: ; 0x0200986C add r4, r0, #0x0 add r0, r6, #0x0 add r1, r4, #0x0 - bl FUN_020B0088 + bl NNS_G2dGetUnpackedCharacterData str r5, [r4, #0x4] add r0, r4, #0x0 pop {r4-r6, pc} @@ -1475,7 +1475,7 @@ FUN_0200988C: ; 0x0200988C add r4, r0, #0x0 add r0, r7, #0x0 add r1, r4, #0x0 - bl FUN_020B0138 + bl NNS_G2dGetUnpackedPaletteData str r5, [r4, #0x4] str r6, [r4, #0x8] add r0, r4, #0x0 @@ -1492,7 +1492,7 @@ FUN_020098B0: ; 0x020098B0 add r4, r0, #0x0 add r0, r5, #0x0 add r1, r4, #0x0 - bl FUN_020AFEB8 + bl NNS_G2dGetUnpackedCellBank add r0, r4, #0x0 pop {r3-r5, pc} .balign 4 @@ -1507,7 +1507,7 @@ FUN_020098CC: ; 0x020098CC add r4, r0, #0x0 add r0, r5, #0x0 add r1, r4, #0x0 - bl thunk_FUN_020afda0_2 + bl NNS_G2dGetUnpackedAnimBank add r0, r4, #0x0 pop {r3-r5, pc} .balign 4 @@ -1522,7 +1522,7 @@ FUN_020098E8: ; 0x020098E8 add r4, r0, #0x0 add r0, r5, #0x0 add r1, r4, #0x0 - bl FUN_020AFFD8 + bl NNS_G2dGetUnpackedMultiCellBank add r0, r4, #0x0 pop {r3-r5, pc} .balign 4 @@ -1537,7 +1537,7 @@ FUN_02009904: ; 0x02009904 add r4, r0, #0x0 add r0, r5, #0x0 add r1, r4, #0x0 - bl thunk_FUN_020afda0 + bl NNS_G2dGetUnpackedMCAnimBank add r0, r4, #0x0 pop {r3-r5, pc} .balign 4 @@ -1560,12 +1560,12 @@ FUN_02009934: ; 0x02009934 push {r4, lr} add r4, r0, #0x0 bne _0200993E - bl ErrorHandling + bl GF_AssertFail _0200993E: ldr r0, [r4, #0x8] cmp r0, #0x0 bne _02009948 - bl ErrorHandling + bl GF_AssertFail _02009948: ldr r0, [r4, #0x8] pop {r4, pc} @@ -1604,7 +1604,7 @@ FUN_02009978: ; 0x02009978 add r1, r3, #0x0 ldr r2, [sp, #0x10] ldr r3, [sp, #0x24] - bl UncompressFromNarc + bl GfGfxLoader_LoadFromNarc add r1, r0, #0x0 ldr r0, [r5, #0x0] ldr r2, [sp, #0x14] @@ -1714,13 +1714,13 @@ FUN_02009A50: ; 0x02009A50 sub sp, #0x10 add r4, r0, #0x0 bne _02009A5C - bl ErrorHandling + bl GF_AssertFail _02009A5C: add r0, r4, #0x0 bl FUN_020095D4 cmp r0, #0x0 beq _02009A6A - bl ErrorHandling + bl GF_AssertFail _02009A6A: add r0, r4, #0x0 bl FUN_02009544 @@ -1743,7 +1743,7 @@ FUN_02009A90: ; 0x02009A90 push {r4-r6, lr} add r5, r0, #0x0 bne _02009A9A - bl ErrorHandling + bl GF_AssertFail _02009A9A: ldr r0, [r5, #0x4] mov r6, #0x0 @@ -1758,7 +1758,7 @@ _02009AA4: bl FUN_02009A50 cmp r0, #0x0 bne _02009AB8 - bl ErrorHandling + bl GF_AssertFail _02009AB8: ldr r0, [r5, #0x4] add r6, r6, #0x1 @@ -1774,13 +1774,13 @@ FUN_02009AC4: ; 0x02009AC4 sub sp, #0x10 add r4, r0, #0x0 bne _02009AD0 - bl ErrorHandling + bl GF_AssertFail _02009AD0: add r0, r4, #0x0 bl FUN_020095D4 cmp r0, #0x0 beq _02009ADE - bl ErrorHandling + bl GF_AssertFail _02009ADE: add r0, r4, #0x0 bl FUN_02009544 @@ -1804,13 +1804,13 @@ FUN_02009B04: ; 0x02009B04 sub sp, #0x10 add r4, r0, #0x0 bne _02009B10 - bl ErrorHandling + bl GF_AssertFail _02009B10: add r0, r4, #0x0 bl FUN_020095D4 cmp r0, #0x0 beq _02009B1E - bl ErrorHandling + bl GF_AssertFail _02009B1E: add r0, r4, #0x0 bl FUN_02009544 @@ -1833,7 +1833,7 @@ FUN_02009B44: ; 0x02009B44 push {r4-r6, lr} add r5, r0, #0x0 bne _02009B4E - bl ErrorHandling + bl GF_AssertFail _02009B4E: ldr r0, [r5, #0x4] mov r6, #0x0 @@ -1848,7 +1848,7 @@ _02009B58: bl FUN_02009B04 cmp r0, #0x0 bne _02009B6C - bl ErrorHandling + bl GF_AssertFail _02009B6C: ldr r0, [r5, #0x4] add r6, r6, #0x1 @@ -1864,13 +1864,13 @@ FUN_02009B78: ; 0x02009B78 sub sp, #0x10 add r4, r0, #0x0 bne _02009B84 - bl ErrorHandling + bl GF_AssertFail _02009B84: add r0, r4, #0x0 bl FUN_020095D4 cmp r0, #0x0 beq _02009B92 - bl ErrorHandling + bl GF_AssertFail _02009B92: add r0, r4, #0x0 bl FUN_02009544 @@ -1895,11 +1895,11 @@ FUN_02009BB8: ; 0x02009BB8 add r5, r1, #0x0 cmp r4, #0x0 bne _02009BC6 - bl ErrorHandling + bl GF_AssertFail _02009BC6: cmp r5, #0x0 bne _02009BCE - bl ErrorHandling + bl GF_AssertFail _02009BCE: add r0, r4, #0x0 bl FUN_02009530 @@ -1917,7 +1917,7 @@ FUN_02009BE8: ; 0x02009BE8 push {r3-r5, lr} add r5, r0, #0x0 bne _02009BF2 - bl ErrorHandling + bl GF_AssertFail _02009BF2: add r0, r5, #0x0 bl FUN_02009530 @@ -1935,13 +1935,13 @@ FUN_02009C0C: ; 0x02009C0C push {r4, lr} add r4, r0, #0x0 bne _02009C16 - bl ErrorHandling + bl GF_AssertFail _02009C16: add r0, r4, #0x0 bl FUN_020095D4 cmp r0, #0x0 beq _02009C24 - bl ErrorHandling + bl GF_AssertFail _02009C24: add r0, r4, #0x0 bl FUN_02009530 @@ -1953,7 +1953,7 @@ FUN_02009C30: ; 0x02009C30 push {r4-r6, lr} add r5, r0, #0x0 bne _02009C3A - bl ErrorHandling + bl GF_AssertFail _02009C3A: ldr r0, [r5, #0x4] mov r6, #0x0 @@ -1980,13 +1980,13 @@ FUN_02009C5C: ; 0x02009C5C push {r4, lr} add r4, r0, #0x0 bne _02009C66 - bl ErrorHandling + bl GF_AssertFail _02009C66: add r0, r4, #0x0 bl FUN_020095D4 cmp r0, #0x0 beq _02009C74 - bl ErrorHandling + bl GF_AssertFail _02009C74: add r0, r4, #0x0 bl FUN_02009530 @@ -2000,23 +2000,23 @@ FUN_02009C80: ; 0x02009C80 add r5, r1, #0x0 cmp r4, #0x0 bne _02009C8E - bl ErrorHandling + bl GF_AssertFail _02009C8E: add r0, r4, #0x0 bl FUN_020095D4 cmp r0, #0x0 beq _02009C9C - bl ErrorHandling + bl GF_AssertFail _02009C9C: cmp r5, #0x0 bne _02009CA4 - bl ErrorHandling + bl GF_AssertFail _02009CA4: add r0, r5, #0x0 bl FUN_020095D4 cmp r0, #0x2 beq _02009CB2 - bl ErrorHandling + bl GF_AssertFail _02009CB2: add r0, r4, #0x0 bl FUN_02009530 @@ -2041,7 +2041,7 @@ FUN_02009CDC: ; 0x02009CDC push {r4, lr} add r4, r0, #0x0 bne _02009CE6 - bl ErrorHandling + bl GF_AssertFail _02009CE6: add r0, r4, #0x0 bl FUN_0201D4F0 @@ -2054,13 +2054,13 @@ FUN_02009CF0: ; 0x02009CF0 sub sp, #0x10 add r4, r0, #0x0 bne _02009CFC - bl ErrorHandling + bl GF_AssertFail _02009CFC: add r0, r4, #0x0 bl FUN_020095D4 cmp r0, #0x1 beq _02009D0A - bl ErrorHandling + bl GF_AssertFail _02009D0A: add r0, r4, #0x0 bl FUN_0200955C @@ -2084,7 +2084,7 @@ FUN_02009D34: ; 0x02009D34 push {r4-r6, lr} add r5, r0, #0x0 bne _02009D3E - bl ErrorHandling + bl GF_AssertFail _02009D3E: ldr r0, [r5, #0x4] mov r6, #0x0 @@ -2099,7 +2099,7 @@ _02009D48: bl FUN_02009CF0 cmp r0, #0x0 bne _02009D5C - bl ErrorHandling + bl GF_AssertFail _02009D5C: ldr r0, [r5, #0x4] add r6, r6, #0x1 @@ -2115,13 +2115,13 @@ FUN_02009D68: ; 0x02009D68 sub sp, #0x10 add r4, r0, #0x0 bne _02009D74 - bl ErrorHandling + bl GF_AssertFail _02009D74: add r0, r4, #0x0 bl FUN_020095D4 cmp r0, #0x1 beq _02009D82 - bl ErrorHandling + bl GF_AssertFail _02009D82: add r0, r4, #0x0 bl FUN_0200955C @@ -2145,7 +2145,7 @@ FUN_02009DAC: ; 0x02009DAC push {r4-r6, lr} add r5, r0, #0x0 bne _02009DB6 - bl ErrorHandling + bl GF_AssertFail _02009DB6: ldr r0, [r5, #0x4] mov r6, #0x0 @@ -2160,7 +2160,7 @@ _02009DC0: bl FUN_02009D68 cmp r0, #0x0 bne _02009DD4 - bl ErrorHandling + bl GF_AssertFail _02009DD4: ldr r0, [r5, #0x4] add r6, r6, #0x1 @@ -2175,7 +2175,7 @@ FUN_02009DE0: ; 0x02009DE0 push {r3-r5, lr} add r5, r0, #0x0 bne _02009DEA - bl ErrorHandling + bl GF_AssertFail _02009DEA: add r0, r5, #0x0 bl FUN_02009530 @@ -2193,13 +2193,13 @@ FUN_02009E04: ; 0x02009E04 push {r4, lr} add r4, r0, #0x0 bne _02009E0E - bl ErrorHandling + bl GF_AssertFail _02009E0E: add r0, r4, #0x0 bl FUN_020095D4 cmp r0, #0x1 beq _02009E1C - bl ErrorHandling + bl GF_AssertFail _02009E1C: add r0, r4, #0x0 bl FUN_02009530 @@ -2211,7 +2211,7 @@ FUN_02009E28: ; 0x02009E28 push {r4-r6, lr} add r5, r0, #0x0 bne _02009E32 - bl ErrorHandling + bl GF_AssertFail _02009E32: ldr r0, [r5, #0x4] mov r6, #0x0 @@ -2240,13 +2240,13 @@ FUN_02009E54: ; 0x02009E54 add r4, r1, #0x0 cmp r5, #0x0 bne _02009E62 - bl ErrorHandling + bl GF_AssertFail _02009E62: add r0, r5, #0x0 bl FUN_020095D4 cmp r0, #0x1 beq _02009E70 - bl ErrorHandling + bl GF_AssertFail _02009E70: add r0, r5, #0x0 bl FUN_02009530 @@ -2266,7 +2266,7 @@ FUN_02009E88: ; 0x02009E88 mov r1, #0x0 bl FUN_02009E54 add r1, r4, #0x0 - bl FUN_020B19C4 + bl NNS_G2dGetImagePaletteLocation mov r1, #0x0 mvn r1, r1 cmp r0, r1 diff --git a/arm9/asm/unk_02009EAC.s b/arm9/asm/unk_02009EAC.s index a6a7e7d7..95a1773a 100644 --- a/arm9/asm/unk_02009EAC.s +++ b/arm9/asm/unk_02009EAC.s @@ -68,7 +68,7 @@ FUN_02009EF0: ; 0x02009EF0 add r7, r3, #0x0 cmp r0, #0x0 beq _02009F08 - bl ErrorHandling + bl GF_AssertFail _02009F08: ldr r0, [sp, #0x30] mov r1, #0x3c @@ -77,7 +77,7 @@ _02009F08: cmp r0, #0x0 str r0, [r1, #0x0] bne _02009F1C - bl ErrorHandling + bl GF_AssertFail _02009F1C: ldr r1, _02009F7C ; =UNK_021C4670 lsl r3, r6, #0x10 @@ -95,10 +95,10 @@ _02009F1C: lsl r2, r4, #0x10 lsr r1, r1, #0x10 lsr r2, r2, #0x10 - bl FUN_020B0E34 + bl NNS_G2dGetNewOamManagerInstance cmp r0, #0x0 bne _02009F48 - bl ErrorHandling + bl GF_AssertFail _02009F48: ldr r0, [sp, #0x2c] ldr r1, [sp, #0x20] @@ -118,10 +118,10 @@ _02009F48: lsr r1, r1, #0x10 lsr r2, r2, #0x10 lsr r3, r3, #0x10 - bl FUN_020B0E34 + bl NNS_G2dGetNewOamManagerInstance cmp r0, #0x0 bne _02009F78 - bl ErrorHandling + bl GF_AssertFail _02009F78: add sp, #0x8 pop {r3-r7, pc} @@ -135,11 +135,11 @@ FUN_02009F80: ; 0x02009F80 ldr r0, [r0, #0x0] cmp r0, #0x0 beq _02009F98 - bl FUN_020B0870 + bl NNS_G2dApplyAndResetOamManagerBuffer ldr r0, _02009F9C ; =UNK_021C4670 ldr r0, [r0, #0x0] add r0, #0x1c - bl FUN_020B0870 + bl NNS_G2dApplyAndResetOamManagerBuffer _02009F98: pop {r3, pc} nop @@ -152,7 +152,7 @@ FUN_02009FA0: ; 0x02009FA0 ldr r0, [r0, #0x0] cmp r0, #0x0 bne _02009FAE - bl ErrorHandling + bl GF_AssertFail _02009FAE: ldr r0, _02009FD4 ; =UNK_021C4670 ldr r0, [r0, #0x0] @@ -184,7 +184,7 @@ FUN_02009FD8: ; 0x02009FD8 add r4, r3, #0x0 cmp r0, #0x0 bne _02009FF0 - bl ErrorHandling + bl GF_AssertFail _02009FF0: cmp r5, #0x1 bne _0200A00C @@ -227,7 +227,7 @@ FUN_0200A03C: ; 0x0200A03C ldr r0, [r0, #0x0] cmp r0, #0x0 bne _0200A04C - bl ErrorHandling + bl GF_AssertFail _0200A04C: cmp r4, #0x0 bne _0200A056 @@ -264,10 +264,10 @@ FUN_0200A074: ; 0x0200A074 add r2, r1, #0x0 ldr r0, [r0, #0x0] add r1, r3, #0x0 - bl FUN_020B0C7C + bl NNS_G2dEntryOamManagerOamWithAffineIdx add r4, r0, #0x0 bne _0200A08C - bl ErrorHandling + bl GF_AssertFail _0200A08C: add r0, r4, #0x0 pop {r4, pc} @@ -283,10 +283,10 @@ FUN_0200A094: ; 0x0200A094 ldr r0, [r0, #0x0] add r1, r3, #0x0 add r0, #0x1c - bl FUN_020B0C7C + bl NNS_G2dEntryOamManagerOamWithAffineIdx add r4, r0, #0x0 bne _0200A0AE - bl ErrorHandling + bl GF_AssertFail _0200A0AE: add r0, r4, #0x0 pop {r4, pc} @@ -299,12 +299,12 @@ FUN_0200A0B8: ; 0x0200A0B8 add r1, r0, #0x0 ldr r0, _0200A0D4 ; =UNK_021C4670 ldr r0, [r0, #0x0] - bl FUN_020B0BB0 + bl NNS_G2dEntryOamManagerAffine add r4, r0, #0x0 ldr r0, _0200A0D8 ; =0x0000FFFE cmp r4, r0 bne _0200A0D0 - bl ErrorHandling + bl GF_AssertFail _0200A0D0: add r0, r4, #0x0 pop {r4, pc} @@ -319,12 +319,12 @@ FUN_0200A0DC: ; 0x0200A0DC ldr r0, _0200A0FC ; =UNK_021C4670 ldr r0, [r0, #0x0] add r0, #0x1c - bl FUN_020B0BB0 + bl NNS_G2dEntryOamManagerAffine add r4, r0, #0x0 ldr r0, _0200A100 ; =0x0000FFFE cmp r4, r0 bne _0200A0F6 - bl ErrorHandling + bl GF_AssertFail _0200A0F6: add r0, r4, #0x0 pop {r4, pc} @@ -426,7 +426,7 @@ FUN_0200A1A0: ; 0x0200A1A0 add r7, r3, #0x0 cmp r0, #0x0 beq _0200A1B4 - bl ErrorHandling + bl GF_AssertFail _0200A1B4: ldr r1, [sp, #0x18] mov r0, #0x1 diff --git a/arm9/asm/unk_0200BA78.s b/arm9/asm/unk_0200BA78.s deleted file mode 100644 index fccd5c4c..00000000 --- a/arm9/asm/unk_0200BA78.s +++ /dev/null @@ -1,86 +0,0 @@ - .include "asm/macros.inc" - .include "global.inc" - - .text - - thumb_func_start FUN_0200BA78 -FUN_0200BA78: ; 0x0200BA78 - push {r3-r6, lr} - sub sp, #0xc - add r4, r2, #0x0 - ldr r2, [sp, #0x2c] - add r6, r3, #0x0 - str r2, [sp, #0x0] - ldr r2, [sp, #0x24] - ldr r3, [sp, #0x28] - add r5, r0, #0x0 - bl FUN_0200B9A8 - ldr r0, [sp, #0x24] - ldr r3, [sp, #0x20] - str r0, [sp, #0x0] - ldr r0, [sp, #0x28] - add r1, r4, #0x0 - add r0, #0x10 - str r0, [sp, #0x4] - ldr r0, [sp, #0x2c] - add r2, r6, #0x0 - str r0, [sp, #0x8] - add r0, r5, #0x0 - bl FUN_0200B9EC - add sp, #0xc - pop {r3-r6, pc} - - thumb_func_start FUN_0200BAAC -FUN_0200BAAC: ; 0x0200BAAC - push {r3-r7, lr} - add r7, r0, #0x0 - add r4, r2, #0x0 - ldr r2, [r7, #0x28] - ldr r6, [sp, #0x18] - lsl r0, r2, #0x4 - orr r0, r2 - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - str r0, [sp, #0x0] - add r0, r7, #0x0 - add r2, r3, #0x0 - add r0, #0x8 - add r3, r4, #0x0 - bl ConvertUIntToDecimalString - ldrh r1, [r7, #0x8] - ldr r0, _0200BB10 ; =0x0000FFFF - cmp r1, r0 - beq _0200BB0C - add r4, r7, #0x0 - mov r5, #0x0 -_0200BAD8: - ldrh r2, [r4, #0x8] - cmp r2, #0xa2 - blo _0200BAF6 - cmp r2, #0xab - bhi _0200BAF6 - ldr r0, [r7, #0x4] - sub r2, #0xa2 - ldr r1, [r0, #0x14] - lsl r0, r2, #0x5 - add r0, r1, r0 - add r1, r6, r5 - mov r2, #0x20 - bl MIi_CpuCopy32 - b _0200BB00 -_0200BAF6: - ldr r1, [sp, #0x0] - add r0, r6, r5 - mov r2, #0x20 - bl MI_CpuFill8 -_0200BB00: - add r4, r4, #0x2 - ldrh r1, [r4, #0x8] - ldr r0, _0200BB10 ; =0x0000FFFF - add r5, #0x20 - cmp r1, r0 - bne _0200BAD8 -_0200BB0C: - pop {r3-r7, pc} - nop -_0200BB10: .word 0x0000FFFF diff --git a/arm9/asm/unk_0200BB14.s b/arm9/asm/unk_0200BB14.s deleted file mode 100644 index 04f67c6e..00000000 --- a/arm9/asm/unk_0200BB14.s +++ /dev/null @@ -1,2135 +0,0 @@ - .include "asm/macros.inc" - .include "global.inc" - - .text - - thumb_func_start FUN_0200BB14 -FUN_0200BB14: ; 0x0200BB14 - push {r4, lr} - mov r1, #0x4e - lsl r1, r1, #0x2 - add r4, r0, #0x0 - bl AllocFromHeap - cmp r0, #0x0 - bne _0200BB28 - mov r0, #0x0 - pop {r4, pc} -_0200BB28: - str r4, [r0, #0x0] - mov r1, #0x0 - str r1, [r0, #0x4] - mov r1, #0x1 - str r1, [r0, #0x8] - pop {r4, pc} - - thumb_func_start FUN_0200BB34 -FUN_0200BB34: ; 0x0200BB34 - push {r4, lr} - add r4, r0, #0x0 - bne _0200BB3E - bl ErrorHandling -_0200BB3E: - ldr r0, [r4, #0x0] - mov r1, #0x58 - bl AllocFromHeap - cmp r0, #0x0 - bne _0200BB4E - mov r0, #0x0 - pop {r4, pc} -_0200BB4E: - ldr r1, [r4, #0x4] - mov r2, #0x0 - add r1, r1, #0x1 - str r1, [r4, #0x4] - add r3, r0, #0x0 - add r1, r2, #0x0 -_0200BB5A: - add r2, r2, #0x1 - str r1, [r3, #0xc] - add r3, r3, #0x4 - cmp r2, #0x6 - blt _0200BB5A - pop {r4, pc} - .balign 4 - - thumb_func_start FUN_0200BB68 -FUN_0200BB68: ; 0x0200BB68 - add r0, #0x10 - bx lr - - thumb_func_start FUN_0200BB6C -FUN_0200BB6C: ; 0x0200BB6C - push {r4-r7, lr} - sub sp, #0x24 - add r5, r0, #0x0 - add r4, r1, #0x0 - add r6, r2, #0x0 - add r7, r3, #0x0 - cmp r5, #0x0 - bne _0200BB80 - bl ErrorHandling -_0200BB80: - cmp r5, #0x0 - bne _0200BB8A - add sp, #0x24 - mov r0, #0x0 - pop {r4-r7, pc} -_0200BB8A: - ldr r0, [r6, #0x0] - str r0, [sp, #0x14] - ldr r0, [r6, #0x4] - str r0, [sp, #0x18] - ldr r0, [r6, #0x8] - str r0, [sp, #0x1c] - ldr r0, [r5, #0x0] - str r0, [sp, #0x20] - ldr r1, [r6, #0xc] - ldr r2, [r6, #0x10] - add r0, sp, #0x14 - bl FUN_0201D060 - ldr r1, [r5, #0x0] - add r0, r7, #0x0 - bl FUN_0201E00C - bl FUN_020B0FC0 - ldr r0, [r5, #0x8] - cmp r0, #0x1 - bne _0200BBD6 - ldr r0, [r4, #0x10] - str r0, [sp, #0x0] - ldr r0, [r4, #0x14] - str r0, [sp, #0x4] - ldr r0, [r4, #0x18] - str r0, [sp, #0x8] - ldr r0, [r4, #0x1c] - str r0, [sp, #0xc] - ldr r0, [r5, #0x0] - str r0, [sp, #0x10] - ldr r0, [r4, #0x0] - ldr r1, [r4, #0x4] - ldr r2, [r4, #0x8] - ldr r3, [r4, #0xc] - bl FUN_02009EAC -_0200BBD6: - ldr r1, [r5, #0x0] - mov r0, #0x20 - bl FUN_0201C328 - str r0, [r5, #0xc] - bl FUN_0201D168 - bl FUN_0201E0BC - mov r0, #0x1 - add sp, #0x24 - pop {r4-r7, pc} - .balign 4 - - thumb_func_start FUN_0200BBF0 -FUN_0200BBF0: ; 0x0200BBF0 - push {r4, lr} - add r3, r0, #0x0 - add r4, r1, #0x0 - cmp r3, #0x0 - beq _0200BBFE - cmp r4, #0x0 - bne _0200BC02 -_0200BBFE: - mov r0, #0x0 - pop {r4, pc} -_0200BC02: - add r0, r2, #0x0 - add r1, r3, #0x0 - ldr r2, [r3, #0x0] - add r1, #0x10 - bl FUN_02008C9C - str r0, [r4, #0x0] - mov r0, #0x1 - pop {r4, pc} - - thumb_func_start FUN_0200BC14 -FUN_0200BC14: ; 0x0200BC14 - ldr r3, _0200BC18 ; =FUN_0201FFC8 - bx r3 - .balign 4 -_0200BC18: .word FUN_0201FFC8 - - thumb_func_start FUN_0200BC1C -FUN_0200BC1C: ; 0x0200BC1C - push {r4, lr} - add r4, r0, #0x0 - bne _0200BC26 - bl ErrorHandling -_0200BC26: - ldr r0, [r4, #0x0] - bl FUN_0201FDEC - pop {r4, pc} - .balign 4 - - thumb_func_start FUN_0200BC30 -FUN_0200BC30: ; 0x0200BC30 - ldr r3, _0200BC34 ; =FUN_02009F80 - bx r3 - .balign 4 -_0200BC34: .word FUN_02009F80 - - thumb_func_start FUN_0200BC38 -FUN_0200BC38: ; 0x0200BC38 - ldr r3, _0200BC3C ; =FUN_0201C348 - bx r3 - .balign 4 -_0200BC3C: .word FUN_0201C348 - - thumb_func_start FUN_0200BC40 -FUN_0200BC40: ; 0x0200BC40 - ldr r3, _0200BC48 ; =FUN_0201FD58 - ldr r0, [r0, #0x0] - bx r3 - nop -_0200BC48: .word FUN_0201FD58 - - thumb_func_start FUN_0200BC4C -FUN_0200BC4C: ; 0x0200BC4C - push {r3, lr} - ldr r0, [r0, #0x4] - cmp r0, #0x0 - beq _0200BC58 - bl FUN_02008C80 -_0200BC58: - pop {r3, pc} - .balign 4 - - thumb_func_start FUN_0200BC5C -FUN_0200BC5C: ; 0x0200BC5C - push {r4-r6, lr} - add r5, r0, #0x0 - ldr r0, [r5, #0x54] - mov r4, #0x0 - cmp r0, #0x0 - ble _0200BC7C -_0200BC68: - ldr r0, [r5, #0x8] - add r1, r4, #0x0 - bl FUN_02009660 - bl FUN_020096B4 - ldr r0, [r5, #0x54] - add r4, r4, #0x1 - cmp r4, r0 - blt _0200BC68 -_0200BC7C: - ldr r0, [r5, #0x8] - bl FreeToHeap - ldr r0, [r5, #0x24] - bl FUN_02009C30 - ldr r0, [r5, #0x28] - bl FUN_02009E28 - ldr r0, [r5, #0x54] - mov r6, #0x0 - cmp r0, #0x0 - ble _0200BCAE - add r4, r5, #0x0 -_0200BC98: - ldr r0, [r4, #0x24] - bl FUN_02009448 - ldr r0, [r4, #0xc] - bl FUN_02008E2C - ldr r0, [r5, #0x54] - add r6, r6, #0x1 - add r4, r4, #0x4 - cmp r6, r0 - blt _0200BC98 -_0200BCAE: - pop {r4-r6, pc} - - thumb_func_start FUN_0200BCB0 -FUN_0200BCB0: ; 0x0200BCB0 - push {r4, lr} - add r4, r0, #0x0 - ldr r0, [r4, #0xc] - bl FUN_0201C350 - bl FUN_0201D12C - bl FUN_0201E08C - ldr r0, [r4, #0x8] - cmp r0, #0x1 - bne _0200BCCC - bl FUN_02009FA0 -_0200BCCC: - pop {r4, pc} - .balign 4 - - thumb_func_start FUN_0200BCD0 -FUN_0200BCD0: ; 0x0200BCD0 - ldr r2, [r0, #0x4] - ldr r3, _0200BCDC ; =FreeToHeap - sub r2, r2, #0x1 - str r2, [r0, #0x4] - add r0, r1, #0x0 - bx r3 - .balign 4 -_0200BCDC: .word FreeToHeap - - thumb_func_start FUN_0200BCE0 -FUN_0200BCE0: ; 0x0200BCE0 - push {r3-r5, lr} - add r4, r1, #0x0 - add r5, r0, #0x0 - add r0, r4, #0x0 - bl FUN_0200BC40 - add r0, r4, #0x0 - bl FUN_0200BC4C - add r0, r4, #0x0 - bl FUN_0200BC5C - add r0, r5, #0x0 - add r1, r4, #0x0 - bl FUN_0200BCD0 - pop {r3-r5, pc} - .balign 4 - - thumb_func_start FUN_0200BD04 -FUN_0200BD04: ; 0x0200BD04 - push {r4, lr} - add r4, r0, #0x0 - ldr r0, [r4, #0x4] - cmp r0, #0x0 - beq _0200BD12 - bl ErrorHandling -_0200BD12: - add r0, r4, #0x0 - bl FUN_0200BCB0 - add r0, r4, #0x0 - bl FreeToHeap - pop {r4, pc} - - thumb_func_start FUN_0200BD20 -FUN_0200BD20: ; 0x0200BD20 - push {r4-r7, lr} - sub sp, #0x24 - add r5, r0, #0x0 - mov r0, #0x6 - add r4, r1, #0x0 - str r2, [sp, #0x10] - str r0, [sp, #0x14] - cmp r5, #0x0 - beq _0200BD36 - cmp r4, #0x0 - bne _0200BD3C -_0200BD36: - add sp, #0x24 - mov r0, #0x0 - pop {r4-r7, pc} -_0200BD3C: - add r0, r2, #0x0 - ldr r0, [r0, #0x10] - cmp r0, #0x0 - bne _0200BD48 - mov r0, #0x4 - str r0, [sp, #0x14] -_0200BD48: - ldr r0, [sp, #0x14] - str r0, [r4, #0x54] - bl FUN_0200965C - add r2, r0, #0x0 - ldr r1, [sp, #0x14] - ldr r0, [r5, #0x0] - mul r1, r2 - bl AllocFromHeap - str r0, [r4, #0x8] - ldr r0, [sp, #0x14] - mov r7, #0x0 - cmp r0, #0x0 - ble _0200BD94 - ldr r6, [sp, #0x10] -_0200BD68: - ldr r0, [r4, #0x8] - add r1, r7, #0x0 - bl FUN_02009660 - str r0, [sp, #0x18] - ldr r0, [r5, #0x0] - ldr r1, [r6, #0x0] - bl FUN_020161A4 - ldr r1, [sp, #0x18] - ldr r2, [r5, #0x0] - str r0, [sp, #0x1c] - bl FUN_02009668 - ldr r0, [sp, #0x1c] - bl FreeToHeap - ldr r0, [sp, #0x14] - add r7, r7, #0x1 - add r6, r6, #0x4 - cmp r7, r0 - blt _0200BD68 -_0200BD94: - ldr r0, [sp, #0x14] - mov r6, #0x0 - cmp r0, #0x0 - ble _0200BDBE - add r7, r4, #0x0 -_0200BD9E: - ldr r0, [r4, #0x8] - add r1, r6, #0x0 - bl FUN_02009660 - bl FUN_020096CC - ldr r2, [r5, #0x0] - add r1, r6, #0x0 - bl FUN_02008DEC - str r0, [r7, #0xc] - ldr r0, [sp, #0x14] - add r6, r6, #0x1 - add r7, r7, #0x4 - cmp r6, r0 - blt _0200BD9E -_0200BDBE: - ldr r0, [sp, #0x14] - mov r7, #0x0 - cmp r0, #0x0 - ble _0200BDF6 - add r6, r4, #0x0 -_0200BDC8: - ldr r0, [r4, #0x8] - add r1, r7, #0x0 - bl FUN_02009660 - str r0, [sp, #0x20] - bl FUN_020096CC - ldr r1, [r5, #0x0] - bl FUN_02009424 - add r2, r0, #0x0 - str r2, [r6, #0x24] - ldr r0, [r6, #0xc] - ldr r1, [sp, #0x20] - ldr r3, [r5, #0x0] - bl FUN_020093A8 - str r0, [r6, #0x3c] - ldr r0, [sp, #0x14] - add r7, r7, #0x1 - add r6, r6, #0x4 - cmp r7, r0 - blt _0200BDC8 -_0200BDF6: - ldr r0, [r4, #0x24] - bl FUN_02009A90 - ldr r0, [r4, #0x28] - bl FUN_02009D34 - ldr r1, [sp, #0x10] - ldr r0, [r5, #0x0] - ldr r1, [r1, #0x18] - bl FUN_020161A4 - ldr r1, [r4, #0x14] - add r6, r0, #0x0 - str r1, [sp, #0x0] - ldr r1, [r4, #0x18] - str r1, [sp, #0x4] - ldr r1, [r4, #0x1c] - str r1, [sp, #0x8] - ldr r1, [r4, #0x20] - str r1, [sp, #0xc] - ldr r1, [r5, #0x0] - ldr r2, [r4, #0xc] - ldr r3, [r4, #0x10] - bl FUN_02008BE0 - str r0, [r4, #0x4] - add r0, r6, #0x0 - bl FreeToHeap - mov r0, #0x1 - add sp, #0x24 - pop {r4-r7, pc} - .balign 4 - - thumb_func_start FUN_0200BE38 -FUN_0200BE38: ; 0x0200BE38 - push {r4, lr} - sub sp, #0x28 - mov r3, #0x4 - mov r4, #0x6 - ldrsh r3, [r2, r3] - ldrsh r4, [r2, r4] - str r4, [sp, #0x0] - str r3, [sp, #0x4] - ldrh r4, [r2, #0xa] - str r4, [sp, #0x8] - ldr r4, [r2, #0xc] - str r4, [sp, #0xc] - ldr r4, [r2, #0x10] - str r4, [sp, #0x10] - ldr r4, [r2, #0x14] - str r4, [sp, #0x14] - ldr r4, [r2, #0x18] - str r4, [sp, #0x18] - ldr r4, [r2, #0x1c] - str r4, [sp, #0x1c] - ldr r4, [r2, #0x20] - str r4, [sp, #0x20] - ldr r4, [r2, #0x24] - str r4, [sp, #0x24] - ldr r2, [r2, #0x0] - bl FUN_0200BE74 - add sp, #0x28 - pop {r4, pc} - .balign 4 - - thumb_func_start FUN_0200BE74 -FUN_0200BE74: ; 0x0200BE74 - push {r4, lr} - sub sp, #0x30 - add r4, r0, #0x0 - ldr r0, [r1, #0x0] - str r0, [sp, #0x0] - ldr r0, [r1, #0x4] - ldr r1, [r0, #0x0] - mov r0, #0x24 - mul r0, r2 - add r0, r1, r0 - str r0, [sp, #0x4] - cmp r3, #0x0 - ble _0200BEA0 - lsl r0, r3, #0xc - bl _fflt - add r1, r0, #0x0 - mov r0, #0x3f - lsl r0, r0, #0x18 - bl _fadd - b _0200BEAE -_0200BEA0: - lsl r0, r3, #0xc - bl _fflt - mov r1, #0x3f - lsl r1, r1, #0x18 - bl _fsub -_0200BEAE: - bl _ffix - str r0, [sp, #0x8] - add r1, sp, #0x28 - mov r0, #0x10 - ldrsh r0, [r1, r0] - cmp r0, #0x0 - ble _0200BED0 - lsl r0, r0, #0xc - bl _fflt - add r1, r0, #0x0 - mov r0, #0x3f - lsl r0, r0, #0x18 - bl _fadd - b _0200BEDE -_0200BED0: - lsl r0, r0, #0xc - bl _fflt - mov r1, #0x3f - lsl r1, r1, #0x18 - bl _fsub -_0200BEDE: - bl _ffix - str r0, [sp, #0xc] - add r1, sp, #0x28 - mov r0, #0x14 - ldrsh r0, [r1, r0] - cmp r0, #0x0 - ble _0200BF00 - lsl r0, r0, #0xc - bl _fflt - add r1, r0, #0x0 - mov r0, #0x3f - lsl r0, r0, #0x18 - bl _fadd - b _0200BF0E -_0200BF00: - lsl r0, r0, #0xc - bl _fflt - mov r1, #0x3f - lsl r1, r1, #0x18 - bl _fsub -_0200BF0E: - bl _ffix - str r0, [sp, #0x10] - ldr r0, [sp, #0x4c] - cmp r0, #0x2 - bne _0200BF24 - mov r0, #0x3 - ldr r1, [sp, #0xc] - lsl r0, r0, #0x12 - add r0, r1, r0 - str r0, [sp, #0xc] -_0200BF24: - mov r0, #0x1 - lsl r0, r0, #0xc - str r0, [sp, #0x14] - str r0, [sp, #0x18] - str r0, [sp, #0x1c] - mov r1, #0x0 - add r0, sp, #0x0 - strh r1, [r0, #0x20] - ldr r0, [sp, #0x44] - str r0, [sp, #0x24] - ldr r0, [sp, #0x4c] - str r0, [sp, #0x28] - ldr r0, [r4, #0x0] - str r0, [sp, #0x2c] - add r0, sp, #0x0 - bl FUN_0201FE94 - add r4, r0, #0x0 - beq _0200BF5A - add r1, sp, #0x28 - ldrh r1, [r1, #0x18] - bl FUN_02020130 - ldr r1, [sp, #0x48] - add r0, r4, #0x0 - bl FUN_02020248 -_0200BF5A: - add r0, r4, #0x0 - add sp, #0x30 - pop {r4, pc} - - thumb_func_start FUN_0200BF60 -FUN_0200BF60: ; 0x0200BF60 - push {r4-r7, lr} - sub sp, #0xc - str r0, [sp, #0x0] - mov r0, #0x6 - str r0, [sp, #0x4] - ldr r0, [sp, #0x0] - add r5, r1, #0x0 - add r6, r2, #0x0 - cmp r0, #0x0 - beq _0200BF78 - cmp r5, #0x0 - bne _0200BF7E -_0200BF78: - add sp, #0xc - mov r0, #0x0 - pop {r4-r7, pc} -_0200BF7E: - ldr r0, [r6, #0x10] - cmp r0, #0x0 - beq _0200BF8A - ldr r0, [r6, #0x14] - cmp r0, #0x0 - bne _0200BF8E -_0200BF8A: - mov r0, #0x4 - str r0, [sp, #0x4] -_0200BF8E: - ldr r0, [sp, #0x4] - str r0, [r5, #0x54] - mov r0, #0x0 - str r0, [sp, #0x8] - ldr r0, [sp, #0x4] - cmp r0, #0x0 - ble _0200BFBE - add r7, r6, #0x0 - add r4, r5, #0x0 -_0200BFA0: - ldr r2, [sp, #0x0] - ldr r0, [r7, #0x0] - ldr r1, [sp, #0x8] - ldr r2, [r2, #0x0] - bl FUN_02008DEC - str r0, [r4, #0xc] - ldr r0, [sp, #0x8] - add r7, r7, #0x4 - add r1, r0, #0x1 - ldr r0, [sp, #0x4] - add r4, r4, #0x4 - str r1, [sp, #0x8] - cmp r1, r0 - blt _0200BFA0 -_0200BFBE: - ldr r0, [sp, #0x4] - mov r7, #0x0 - cmp r0, #0x0 - ble _0200C004 - add r4, r7, #0x0 -_0200BFC8: - ldr r0, [r6, #0x0] - cmp r0, #0x0 - beq _0200BFF8 - ldr r1, [sp, #0x0] - ldr r1, [r1, #0x0] - bl FUN_02009424 - str r0, [r5, #0x24] - mov r0, #0x0 - str r0, [r5, #0x3c] - ldr r3, [r5, #0x24] - add r1, r0, #0x0 - ldr r0, [r3, #0x4] - cmp r0, #0x0 - ble _0200BFF8 - add r2, r1, #0x0 -_0200BFE8: - ldr r0, [r3, #0x0] - add r1, r1, #0x1 - str r4, [r0, r2] - ldr r3, [r5, #0x24] - add r2, r2, #0x4 - ldr r0, [r3, #0x4] - cmp r1, r0 - blt _0200BFE8 -_0200BFF8: - ldr r0, [sp, #0x4] - add r7, r7, #0x1 - add r6, r6, #0x4 - add r5, r5, #0x4 - cmp r7, r0 - blt _0200BFC8 -_0200C004: - mov r0, #0x1 - add sp, #0xc - pop {r4-r7, pc} - .balign 4 - - thumb_func_start FUN_0200C00C -FUN_0200C00C: ; 0x0200C00C - push {r4-r7, lr} - sub sp, #0xc - add r4, r1, #0x0 - add r5, r0, #0x0 - ldr r0, [r4, #0xc] - ldr r1, [sp, #0x28] - add r6, r2, #0x0 - add r7, r3, #0x0 - bl FUN_0200945C - cmp r0, #0x0 - bne _0200C02A - add sp, #0xc - mov r0, #0x0 - pop {r4-r7, pc} -_0200C02A: - ldr r0, [sp, #0x28] - ldr r3, [sp, #0x20] - str r0, [sp, #0x0] - ldr r0, [sp, #0x24] - add r1, r6, #0x0 - str r0, [sp, #0x4] - ldr r0, [r5, #0x0] - add r2, r7, #0x0 - str r0, [sp, #0x8] - ldr r0, [r4, #0xc] - bl FUN_02008F34 - add r5, r0, #0x0 - beq _0200C058 - bl FUN_02009B04 - ldr r0, [r4, #0x24] - add r1, r5, #0x0 - bl FUN_0200C474 - add sp, #0xc - mov r0, #0x1 - pop {r4-r7, pc} -_0200C058: - bl ErrorHandling - cmp r5, #0x0 - beq _0200C066 - add sp, #0xc - mov r0, #0x1 - pop {r4-r7, pc} -_0200C066: - mov r0, #0x0 - add sp, #0xc - pop {r4-r7, pc} - - thumb_func_start FUN_0200C06C -FUN_0200C06C: ; 0x0200C06C - push {r3-r7, lr} - sub sp, #0x10 - add r4, r1, #0x0 - add r5, r0, #0x0 - ldr r0, [r4, #0x10] - ldr r1, [sp, #0x34] - add r6, r2, #0x0 - add r7, r3, #0x0 - bl FUN_0200945C - cmp r0, #0x0 - bne _0200C08C - mov r0, #0x0 - add sp, #0x10 - mvn r0, r0 - pop {r3-r7, pc} -_0200C08C: - ldr r0, [sp, #0x34] - ldr r3, [sp, #0x28] - str r0, [sp, #0x0] - ldr r0, [sp, #0x30] - add r1, r6, #0x0 - str r0, [sp, #0x4] - ldr r0, [sp, #0x2c] - add r2, r7, #0x0 - str r0, [sp, #0x8] - ldr r0, [r5, #0x0] - str r0, [sp, #0xc] - ldr r0, [r4, #0x10] - bl FUN_02008FEC - add r5, r0, #0x0 - beq _0200C0D0 - bl FUN_02009D68 - cmp r0, #0x1 - beq _0200C0B8 - bl ErrorHandling -_0200C0B8: - ldr r0, [r4, #0x28] - add r1, r5, #0x0 - bl FUN_0200C474 - ldr r1, [sp, #0x30] - add r0, r5, #0x0 - bl FUN_02009E88 - lsl r0, r0, #0x18 - add sp, #0x10 - asr r0, r0, #0x18 - pop {r3-r7, pc} -_0200C0D0: - bl ErrorHandling - mov r0, #0x0 - mvn r0, r0 - add sp, #0x10 - pop {r3-r7, pc} - - thumb_func_start FUN_0200C0DC -FUN_0200C0DC: ; 0x0200C0DC - push {r4-r6, lr} - sub sp, #0x10 - add r5, r0, #0x0 - ldr r0, [sp, #0x28] - add r6, r1, #0x0 - str r0, [sp, #0x0] - ldr r0, [sp, #0x2c] - add r1, r3, #0x0 - str r0, [sp, #0x4] - ldr r0, [sp, #0x30] - ldr r3, [sp, #0x24] - str r0, [sp, #0x8] - ldr r0, [sp, #0x34] - str r0, [sp, #0xc] - add r0, r2, #0x0 - ldr r2, [sp, #0x20] - bl FUN_0200C06C - add r4, r0, #0x0 - mov r0, #0x0 - mvn r0, r0 - cmp r4, r0 - beq _0200C11A - ldr r3, [sp, #0x2c] - lsl r2, r4, #0x14 - add r0, r5, #0x0 - add r1, r6, #0x0 - lsr r2, r2, #0x10 - lsl r3, r3, #0x5 - bl FUN_02003108 -_0200C11A: - lsl r0, r4, #0x18 - lsr r0, r0, #0x18 - add sp, #0x10 - pop {r4-r6, pc} - .balign 4 - - thumb_func_start FUN_0200C124 -FUN_0200C124: ; 0x0200C124 - push {r3-r4, lr} - sub sp, #0xc - ldr r4, [sp, #0x18] - str r4, [sp, #0x0] - mov r4, #0x2 - str r4, [sp, #0x4] - ldr r4, [sp, #0x1c] - str r4, [sp, #0x8] - bl FUN_0200C404 - add sp, #0xc - pop {r3-r4, pc} - - thumb_func_start FUN_0200C13C -FUN_0200C13C: ; 0x0200C13C - push {r3-r4, lr} - sub sp, #0xc - ldr r4, [sp, #0x18] - str r4, [sp, #0x0] - mov r4, #0x3 - str r4, [sp, #0x4] - ldr r4, [sp, #0x1c] - str r4, [sp, #0x8] - bl FUN_0200C404 - add sp, #0xc - pop {r3-r4, pc} - - thumb_func_start FUN_0200C154 -FUN_0200C154: ; 0x0200C154 - push {r4-r7, lr} - sub sp, #0x74 - add r7, r0, #0x0 - ldr r0, [r7, #0x0] - add r6, r1, #0x0 - mov r1, #0x10 - add r5, r2, #0x0 - bl AllocFromHeap - add r4, r0, #0x0 - bne _0200C170 - add sp, #0x74 - mov r0, #0x0 - pop {r4-r7, pc} -_0200C170: - ldr r0, [r7, #0x0] - mov r1, #0x8 - bl AllocFromHeap - str r0, [r4, #0x8] - cmp r0, #0x0 - bne _0200C184 - add sp, #0x74 - mov r0, #0x0 - pop {r4-r7, pc} -_0200C184: - ldr r0, [r7, #0x0] - mov r1, #0x24 - bl AllocFromHeap - ldr r1, [r4, #0x8] - str r0, [r1, #0x0] - ldr r0, [r4, #0x8] - ldr r0, [r0, #0x0] - str r0, [r4, #0x4] - ldr r0, [r4, #0x8] - ldr r1, [r0, #0x0] - cmp r1, #0x0 - bne _0200C1AC - cmp r0, #0x0 - beq _0200C1A6 - bl FreeToHeap -_0200C1A6: - add sp, #0x74 - mov r0, #0x0 - pop {r4-r7, pc} -_0200C1AC: - mov r1, #0x0 - add r2, r5, #0x0 - add r3, sp, #0x2c -_0200C1B2: - ldr r0, [r2, #0x14] - add r1, r1, #0x1 - add r2, r2, #0x4 - stmia r3!, {r0} - cmp r1, #0x6 - blt _0200C1B2 - ldr r0, [r6, #0x1c] - cmp r0, #0x0 - beq _0200C1CA - ldr r1, [r6, #0x20] - cmp r1, #0x0 - bne _0200C1D4 -_0200C1CA: - mov r0, #0x0 - mvn r0, r0 - str r0, [sp, #0x3c] - str r0, [sp, #0x40] - b _0200C206 -_0200C1D4: - mov r2, #0x0 - ldr r1, [sp, #0x3c] - mvn r2, r2 - cmp r1, r2 - beq _0200C1EC - bl FUN_0200945C - cmp r0, #0x0 - bne _0200C1EC - mov r0, #0x0 - mvn r0, r0 - str r0, [sp, #0x3c] -_0200C1EC: - mov r0, #0x0 - ldr r1, [sp, #0x40] - mvn r0, r0 - cmp r1, r0 - beq _0200C206 - ldr r0, [r6, #0x20] - bl FUN_0200945C - cmp r0, #0x0 - bne _0200C206 - mov r0, #0x0 - mvn r0, r0 - str r0, [sp, #0x40] -_0200C206: - ldr r0, [sp, #0x38] - str r0, [sp, #0x0] - ldr r0, [sp, #0x3c] - str r0, [sp, #0x4] - ldr r0, [sp, #0x40] - str r0, [sp, #0x8] - ldr r0, [r5, #0x30] - str r0, [sp, #0xc] - ldr r0, [r5, #0x2c] - str r0, [sp, #0x10] - ldr r0, [r6, #0xc] - str r0, [sp, #0x14] - ldr r0, [r6, #0x10] - str r0, [sp, #0x18] - ldr r0, [r6, #0x14] - str r0, [sp, #0x1c] - ldr r0, [r6, #0x18] - str r0, [sp, #0x20] - ldr r0, [r6, #0x1c] - str r0, [sp, #0x24] - ldr r0, [r6, #0x20] - str r0, [sp, #0x28] - ldr r0, [r4, #0x4] - ldr r1, [sp, #0x2c] - ldr r2, [sp, #0x30] - ldr r3, [sp, #0x34] - bl FUN_02008AA4 - ldr r0, [r6, #0x0] - str r0, [sp, #0x44] - ldr r0, [r4, #0x4] - str r0, [sp, #0x48] - mov r0, #0x0 - ldrsh r0, [r5, r0] - cmp r0, #0x0 - ble _0200C260 - lsl r0, r0, #0xc - bl _fflt - add r1, r0, #0x0 - mov r0, #0x3f - lsl r0, r0, #0x18 - bl _fadd - b _0200C26E -_0200C260: - lsl r0, r0, #0xc - bl _fflt - mov r1, #0x3f - lsl r1, r1, #0x18 - bl _fsub -_0200C26E: - bl _ffix - str r0, [sp, #0x4c] - mov r0, #0x2 - ldrsh r0, [r5, r0] - cmp r0, #0x0 - ble _0200C28E - lsl r0, r0, #0xc - bl _fflt - add r1, r0, #0x0 - mov r0, #0x3f - lsl r0, r0, #0x18 - bl _fadd - b _0200C29C -_0200C28E: - lsl r0, r0, #0xc - bl _fflt - mov r1, #0x3f - lsl r1, r1, #0x18 - bl _fsub -_0200C29C: - bl _ffix - str r0, [sp, #0x50] - mov r0, #0x4 - ldrsh r0, [r5, r0] - cmp r0, #0x0 - ble _0200C2BC - lsl r0, r0, #0xc - bl _fflt - add r1, r0, #0x0 - mov r0, #0x3f - lsl r0, r0, #0x18 - bl _fadd - b _0200C2CA -_0200C2BC: - lsl r0, r0, #0xc - bl _fflt - mov r1, #0x3f - lsl r1, r1, #0x18 - bl _fsub -_0200C2CA: - bl _ffix - str r0, [sp, #0x54] - ldr r0, [r5, #0x10] - cmp r0, #0x2 - bne _0200C2E0 - mov r0, #0x3 - ldr r1, [sp, #0x50] - lsl r0, r0, #0x12 - add r0, r1, r0 - str r0, [sp, #0x50] -_0200C2E0: - mov r0, #0x1 - lsl r0, r0, #0xc - str r0, [sp, #0x58] - str r0, [sp, #0x5c] - str r0, [sp, #0x60] - mov r1, #0x0 - add r0, sp, #0x2c - strh r1, [r0, #0x38] - ldr r0, [r5, #0x8] - str r0, [sp, #0x68] - ldr r0, [r5, #0x10] - str r0, [sp, #0x6c] - ldr r0, [r7, #0x0] - str r0, [sp, #0x70] - add r0, sp, #0x44 - bl FUN_0201FE94 - str r0, [r4, #0x0] - ldr r0, [r5, #0x30] - str r0, [r4, #0xc] - ldr r0, [r4, #0x0] - cmp r0, #0x0 - beq _0200C328 - bl FUN_020202A0 - add r6, r0, #0x0 - ldrh r1, [r5, #0x6] - ldr r0, [r4, #0x0] - bl FUN_02020130 - ldr r1, [r5, #0xc] - ldr r0, [r4, #0x0] - add r1, r6, r1 - bl FUN_02020248 - b _0200C32C -_0200C328: - bl ErrorHandling -_0200C32C: - add r0, r4, #0x0 - add sp, #0x74 - pop {r4-r7, pc} - .balign 4 - - thumb_func_start FUN_0200C334 -FUN_0200C334: ; 0x0200C334 - push {r3, lr} - ldr r0, [r0, #0x10] - bl FUN_020094F0 - mov r1, #0x0 - bl FUN_02009E54 - pop {r3, pc} - - thumb_func_start FUN_0200C344 -FUN_0200C344: ; 0x0200C344 - push {r4, lr} - ldr r0, [r0, #0x10] - add r4, r2, #0x0 - bl FUN_020094F0 - add r1, r4, #0x0 - bl FUN_02009E88 - pop {r4, pc} - .balign 4 - - thumb_func_start FUN_0200C358 -FUN_0200C358: ; 0x0200C358 - add r3, r0, #0x0 - add r2, r1, #0x0 - ldr r0, [r3, #0xc] - ldr r1, [r3, #0x24] - ldr r3, _0200C364 ; =FUN_0200C4F4 - bx r3 - .balign 4 -_0200C364: .word FUN_0200C4F4 - - thumb_func_start FUN_0200C368 -FUN_0200C368: ; 0x0200C368 - add r3, r0, #0x0 - add r2, r1, #0x0 - ldr r0, [r3, #0x10] - ldr r1, [r3, #0x28] - ldr r3, _0200C374 ; =FUN_0200C548 - bx r3 - .balign 4 -_0200C374: .word FUN_0200C548 - - thumb_func_start FUN_0200C378 -FUN_0200C378: ; 0x0200C378 - add r3, r0, #0x0 - add r2, r1, #0x0 - ldr r0, [r3, #0x14] - ldr r1, [r3, #0x2c] - ldr r3, _0200C384 ; =FUN_0200C4A8 - bx r3 - .balign 4 -_0200C384: .word FUN_0200C4A8 - - thumb_func_start FUN_0200C388 -FUN_0200C388: ; 0x0200C388 - add r3, r0, #0x0 - add r2, r1, #0x0 - ldr r0, [r3, #0x18] - ldr r1, [r3, #0x30] - ldr r3, _0200C394 ; =FUN_0200C4A8 - bx r3 - .balign 4 -_0200C394: .word FUN_0200C4A8 - - thumb_func_start FUN_0200C398 -FUN_0200C398: ; 0x0200C398 - push {r3-r7, lr} - add r6, r1, #0x0 - add r7, r0, #0x0 - add r0, r6, #0x0 - bl FUN_0200BC40 - ldr r0, [r6, #0x24] - bl FUN_02009C30 - ldr r0, [r6, #0x28] - bl FUN_02009E28 - ldr r0, [r6, #0x54] - mov r4, #0x0 - cmp r0, #0x0 - ble _0200C3D0 - add r5, r6, #0x0 -_0200C3BA: - ldr r0, [r5, #0x24] - bl FUN_02009448 - ldr r0, [r5, #0xc] - bl FUN_02008E2C - ldr r0, [r6, #0x54] - add r4, r4, #0x1 - add r5, r5, #0x4 - cmp r4, r0 - blt _0200C3BA -_0200C3D0: - add r0, r7, #0x0 - add r1, r6, #0x0 - bl FUN_0200BCD0 - pop {r3-r7, pc} - .balign 4 - - thumb_func_start FUN_0200C3DC -FUN_0200C3DC: ; 0x0200C3DC - push {r4, lr} - add r4, r0, #0x0 - ldr r0, [r4, #0xc] - cmp r0, #0x0 - beq _0200C3EE - ldr r0, [r4, #0x4] - ldr r0, [r0, #0x0] - bl FUN_02009CDC -_0200C3EE: - ldr r0, [r4, #0x0] - bl FUN_0201FFC8 - ldr r0, [r4, #0x8] - bl FUN_02008C80 - add r0, r4, #0x0 - bl FreeToHeap - pop {r4, pc} - .balign 4 - - thumb_func_start FUN_0200C404 -FUN_0200C404: ; 0x0200C404 - push {r4-r7, lr} - sub sp, #0x14 - add r6, r1, #0x0 - add r7, r0, #0x0 - ldr r0, [sp, #0x2c] - add r5, r6, #0x0 - lsl r4, r0, #0x2 - add r5, #0xc - ldr r0, [r5, r4] - ldr r1, [sp, #0x30] - str r2, [sp, #0xc] - str r3, [sp, #0x10] - bl FUN_0200945C - cmp r0, #0x0 - bne _0200C42A - add sp, #0x14 - mov r0, #0x0 - pop {r4-r7, pc} -_0200C42A: - ldr r0, [sp, #0x30] - ldr r1, [sp, #0xc] - str r0, [sp, #0x0] - ldr r0, [sp, #0x2c] - ldr r2, [sp, #0x10] - str r0, [sp, #0x4] - ldr r0, [r7, #0x0] - ldr r3, [sp, #0x28] - str r0, [sp, #0x8] - ldr r0, [r5, r4] - bl FUN_020090AC - add r5, r0, #0x0 - beq _0200C460 - add r0, r6, r4 - ldr r0, [r0, #0x24] - add r1, r5, #0x0 - bl FUN_0200C474 - add r4, r0, #0x0 - cmp r4, #0x1 - beq _0200C45A - bl ErrorHandling -_0200C45A: - add sp, #0x14 - add r0, r4, #0x0 - pop {r4-r7, pc} -_0200C460: - bl ErrorHandling - cmp r5, #0x0 - beq _0200C46E - add sp, #0x14 - mov r0, #0x1 - pop {r4-r7, pc} -_0200C46E: - mov r0, #0x0 - add sp, #0x14 - pop {r4-r7, pc} - - thumb_func_start FUN_0200C474 -FUN_0200C474: ; 0x0200C474 - push {r3-r6} - ldr r6, [r0, #0x4] - mov r3, #0x0 - cmp r6, #0x0 - ble _0200C4A0 - ldr r5, [r0, #0x0] - add r4, r5, #0x0 -_0200C482: - ldr r2, [r4, #0x0] - cmp r2, #0x0 - bne _0200C498 - lsl r2, r3, #0x2 - str r1, [r5, r2] - ldr r1, [r0, #0x8] - add r1, r1, #0x1 - str r1, [r0, #0x8] - mov r0, #0x1 - pop {r3-r6} - bx lr -_0200C498: - add r3, r3, #0x1 - add r4, r4, #0x4 - cmp r3, r6 - blt _0200C482 -_0200C4A0: - mov r0, #0x0 - pop {r3-r6} - bx lr - .balign 4 - - thumb_func_start FUN_0200C4A8 -FUN_0200C4A8: ; 0x0200C4A8 - push {r3-r7, lr} - add r5, r1, #0x0 - str r0, [sp, #0x0] - ldr r0, [r5, #0x4] - add r7, r2, #0x0 - mov r6, #0x0 - cmp r0, #0x0 - ble _0200C4F0 - add r4, r6, #0x0 -_0200C4BA: - ldr r0, [r5, #0x0] - ldr r0, [r0, r4] - cmp r0, #0x0 - beq _0200C4E6 - bl FUN_02009530 - cmp r0, r7 - bne _0200C4E6 - ldr r1, [r5, #0x0] - lsl r4, r6, #0x2 - ldr r0, [sp, #0x0] - ldr r1, [r1, r4] - bl FUN_02009490 - ldr r0, [r5, #0x0] - mov r1, #0x0 - str r1, [r0, r4] - ldr r0, [r5, #0x8] - sub r0, r0, #0x1 - str r0, [r5, #0x8] - mov r0, #0x1 - pop {r3-r7, pc} -_0200C4E6: - ldr r0, [r5, #0x4] - add r6, r6, #0x1 - add r4, r4, #0x4 - cmp r6, r0 - blt _0200C4BA -_0200C4F0: - mov r0, #0x0 - pop {r3-r7, pc} - - thumb_func_start FUN_0200C4F4 -FUN_0200C4F4: ; 0x0200C4F4 - push {r3-r7, lr} - add r5, r1, #0x0 - str r0, [sp, #0x0] - ldr r0, [r5, #0x4] - add r7, r2, #0x0 - mov r6, #0x0 - cmp r0, #0x0 - ble _0200C542 - add r4, r6, #0x0 -_0200C506: - ldr r0, [r5, #0x0] - ldr r0, [r0, r4] - cmp r0, #0x0 - beq _0200C538 - bl FUN_02009530 - cmp r0, r7 - bne _0200C538 - add r0, r7, #0x0 - bl FUN_0201D324 - ldr r1, [r5, #0x0] - lsl r4, r6, #0x2 - ldr r0, [sp, #0x0] - ldr r1, [r1, r4] - bl FUN_02009490 - ldr r0, [r5, #0x0] - mov r1, #0x0 - str r1, [r0, r4] - ldr r0, [r5, #0x8] - sub r0, r0, #0x1 - str r0, [r5, #0x8] - mov r0, #0x1 - pop {r3-r7, pc} -_0200C538: - ldr r0, [r5, #0x4] - add r6, r6, #0x1 - add r4, r4, #0x4 - cmp r6, r0 - blt _0200C506 -_0200C542: - mov r0, #0x0 - pop {r3-r7, pc} - .balign 4 - - thumb_func_start FUN_0200C548 -FUN_0200C548: ; 0x0200C548 - push {r3-r7, lr} - add r5, r1, #0x0 - str r0, [sp, #0x0] - ldr r0, [r5, #0x4] - add r7, r2, #0x0 - mov r6, #0x0 - cmp r0, #0x0 - ble _0200C596 - add r4, r6, #0x0 -_0200C55A: - ldr r0, [r5, #0x0] - ldr r0, [r0, r4] - cmp r0, #0x0 - beq _0200C58C - bl FUN_02009530 - cmp r0, r7 - bne _0200C58C - add r0, r7, #0x0 - bl FUN_0201E1C8 - ldr r1, [r5, #0x0] - lsl r4, r6, #0x2 - ldr r0, [sp, #0x0] - ldr r1, [r1, r4] - bl FUN_02009490 - ldr r0, [r5, #0x0] - mov r1, #0x0 - str r1, [r0, r4] - ldr r0, [r5, #0x8] - sub r0, r0, #0x1 - str r0, [r5, #0x8] - mov r0, #0x1 - pop {r3-r7, pc} -_0200C58C: - ldr r0, [r5, #0x4] - add r6, r6, #0x1 - add r4, r4, #0x4 - cmp r6, r0 - blt _0200C55A -_0200C596: - mov r0, #0x0 - pop {r3-r7, pc} - .balign 4 - - thumb_func_start FUN_0200C59C -FUN_0200C59C: ; 0x0200C59C - ldr r3, _0200C5A4 ; =FUN_020201E4 - mov r1, #0x1 - lsl r1, r1, #0xc - bx r3 - .balign 4 -_0200C5A4: .word FUN_020201E4 - - thumb_func_start FUN_0200C5A8 -FUN_0200C5A8: ; 0x0200C5A8 - ldr r3, _0200C5B0 ; =FUN_0200C59C - ldr r0, [r0, #0x0] - bx r3 - nop -_0200C5B0: .word FUN_0200C59C - - thumb_func_start FUN_0200C5B4 -FUN_0200C5B4: ; 0x0200C5B4 - ldr r3, _0200C5BC ; =FUN_020201E4 - ldr r0, [r0, #0x0] - bx r3 - nop -_0200C5BC: .word FUN_020201E4 - - thumb_func_start FUN_0200C5C0 -FUN_0200C5C0: ; 0x0200C5C0 - ldr r3, _0200C5C8 ; =FUN_02020130 - ldr r0, [r0, #0x0] - bx r3 - nop -_0200C5C8: .word FUN_02020130 - - thumb_func_start FUN_0200C5CC -FUN_0200C5CC: ; 0x0200C5CC - ldr r3, _0200C5D4 ; =FUN_020201DC - ldr r0, [r0, #0x0] - bx r3 - nop -_0200C5D4: .word FUN_020201DC - - thumb_func_start FUN_0200C5D8 -FUN_0200C5D8: ; 0x0200C5D8 - ldr r3, _0200C5DC ; =FUN_020200BC - bx r3 - .balign 4 -_0200C5DC: .word FUN_020200BC - - thumb_func_start FUN_0200C5E0 -FUN_0200C5E0: ; 0x0200C5E0 - ldr r3, _0200C5E8 ; =FUN_0200C5D8 - ldr r0, [r0, #0x0] - bx r3 - nop -_0200C5E8: .word FUN_0200C5D8 - - thumb_func_start FUN_0200C5EC -FUN_0200C5EC: ; 0x0200C5EC - ldr r3, _0200C5F0 ; =FUN_020200D8 - bx r3 - .balign 4 -_0200C5F0: .word FUN_020200D8 - - thumb_func_start FUN_0200C5F4 -FUN_0200C5F4: ; 0x0200C5F4 - ldr r3, _0200C5FC ; =FUN_0200C5EC - ldr r0, [r0, #0x0] - bx r3 - nop -_0200C5FC: .word FUN_0200C5EC - - thumb_func_start FUN_0200C600 -FUN_0200C600: ; 0x0200C600 - ldr r3, _0200C604 ; =FUN_02020388 - bx r3 - .balign 4 -_0200C604: .word FUN_02020388 - - thumb_func_start FUN_0200C608 -FUN_0200C608: ; 0x0200C608 - ldr r3, _0200C610 ; =FUN_0200C600 - ldr r0, [r0, #0x0] - bx r3 - nop -_0200C610: .word FUN_0200C600 - - thumb_func_start FUN_0200C614 -FUN_0200C614: ; 0x0200C614 - ldr r3, _0200C618 ; =FUN_02020208 - bx r3 - .balign 4 -_0200C618: .word FUN_02020208 - - thumb_func_start FUN_0200C61C -FUN_0200C61C: ; 0x0200C61C - ldr r3, _0200C624 ; =FUN_0200C614 - ldr r0, [r0, #0x0] - bx r3 - nop -_0200C624: .word FUN_0200C614 - - thumb_func_start FUN_0200C628 -FUN_0200C628: ; 0x0200C628 - ldr r3, _0200C62C ; =FUN_0202022C - bx r3 - .balign 4 -_0200C62C: .word FUN_0202022C - - thumb_func_start FUN_0200C630 -FUN_0200C630: ; 0x0200C630 - ldr r3, _0200C638 ; =FUN_0200C628 - ldr r0, [r0, #0x0] - bx r3 - nop -_0200C638: .word FUN_0200C628 - - thumb_func_start FUN_0200C63C -FUN_0200C63C: ; 0x0200C63C - ldr r3, _0200C640 ; =FUN_020200A0 - bx r3 - .balign 4 -_0200C640: .word FUN_020200A0 - - thumb_func_start FUN_0200C644 -FUN_0200C644: ; 0x0200C644 - ldr r3, _0200C64C ; =FUN_0200C63C - ldr r0, [r0, #0x0] - bx r3 - nop -_0200C64C: .word FUN_0200C63C - - thumb_func_start FUN_0200C650 -FUN_0200C650: ; 0x0200C650 - ldr r3, _0200C654 ; =FUN_02020128 - bx r3 - .balign 4 -_0200C654: .word FUN_02020128 - - thumb_func_start FUN_0200C658 -FUN_0200C658: ; 0x0200C658 - ldr r3, _0200C660 ; =FUN_0200C650 - ldr r0, [r0, #0x0] - bx r3 - nop -_0200C660: .word FUN_0200C650 - - thumb_func_start FUN_0200C664 -FUN_0200C664: ; 0x0200C664 - ldr r3, _0200C668 ; =FUN_02020248 - bx r3 - .balign 4 -_0200C668: .word FUN_02020248 - - thumb_func_start FUN_0200C66C -FUN_0200C66C: ; 0x0200C66C - ldr r3, _0200C674 ; =FUN_0200C664 - ldr r0, [r0, #0x0] - bx r3 - nop -_0200C674: .word FUN_0200C664 - - thumb_func_start FUN_0200C678 -FUN_0200C678: ; 0x0200C678 - ldr r3, _0200C67C ; =FUN_020202A8 - bx r3 - .balign 4 -_0200C67C: .word FUN_020202A8 - - thumb_func_start FUN_0200C680 -FUN_0200C680: ; 0x0200C680 - ldr r3, _0200C688 ; =FUN_0200C678 - ldr r0, [r0, #0x0] - bx r3 - nop -_0200C688: .word FUN_0200C678 - - thumb_func_start FUN_0200C68C -FUN_0200C68C: ; 0x0200C68C - ldr r3, _0200C694 ; =FUN_02020300 - ldr r0, [r0, #0x0] - bx r3 - nop -_0200C694: .word FUN_02020300 - - thumb_func_start FUN_0200C698 -FUN_0200C698: ; 0x0200C698 - ldr r3, _0200C6A0 ; =FUN_02020238 - lsl r1, r1, #0x18 - lsr r1, r1, #0x18 - bx r3 - .balign 4 -_0200C6A0: .word FUN_02020238 - - thumb_func_start FUN_0200C6A4 -FUN_0200C6A4: ; 0x0200C6A4 - ldr r3, _0200C6AC ; =FUN_02020240 - ldr r0, [r0, #0x0] - bx r3 - nop -_0200C6AC: .word FUN_02020240 - - thumb_func_start FUN_0200C6B0 -FUN_0200C6B0: ; 0x0200C6B0 - ldr r3, _0200C6B8 ; =FUN_0200C698 - ldr r0, [r0, #0x0] - bx r3 - nop -_0200C6B8: .word FUN_0200C698 - - thumb_func_start FUN_0200C6BC -FUN_0200C6BC: ; 0x0200C6BC - ldr r3, _0200C6C0 ; =FUN_02020310 - bx r3 - .balign 4 -_0200C6C0: .word FUN_02020310 - - thumb_func_start FUN_0200C6C4 -FUN_0200C6C4: ; 0x0200C6C4 - ldr r3, _0200C6CC ; =FUN_0200C6BC - ldr r0, [r0, #0x0] - bx r3 - nop -_0200C6CC: .word FUN_0200C6BC - - thumb_func_start FUN_0200C6D0 -FUN_0200C6D0: ; 0x0200C6D0 - ldr r3, _0200C6D4 ; =FUN_0202032C - bx r3 - .balign 4 -_0200C6D4: .word FUN_0202032C - - thumb_func_start FUN_0200C6D8 -FUN_0200C6D8: ; 0x0200C6D8 - ldr r3, _0200C6E0 ; =FUN_0200C6D0 - ldr r0, [r0, #0x0] - bx r3 - nop -_0200C6E0: .word FUN_0200C6D0 - - thumb_func_start FUN_0200C6E4 -FUN_0200C6E4: ; 0x0200C6E4 - push {r3-r4, lr} - sub sp, #0xc - lsl r1, r1, #0xc - str r1, [sp, #0x0] - lsl r1, r2, #0xc - add r4, r0, #0x0 - str r1, [sp, #0x4] - bl FUN_02020380 - cmp r0, #0x2 - bne _0200C704 - mov r0, #0x3 - ldr r1, [sp, #0x4] - lsl r0, r0, #0x12 - add r0, r1, r0 - str r0, [sp, #0x4] -_0200C704: - mov r0, #0x0 - str r0, [sp, #0x8] - add r0, r4, #0x0 - add r1, sp, #0x0 - bl FUN_02020044 - add sp, #0xc - pop {r3-r4, pc} - - thumb_func_start FUN_0200C714 -FUN_0200C714: ; 0x0200C714 - ldr r3, _0200C71C ; =FUN_0200C6E4 - ldr r0, [r0, #0x0] - bx r3 - nop -_0200C71C: .word FUN_0200C6E4 - - thumb_func_start FUN_0200C720 -FUN_0200C720: ; 0x0200C720 - push {r4-r5, lr} - sub sp, #0xc - lsl r1, r1, #0xc - str r1, [sp, #0x0] - lsl r1, r2, #0xc - add r5, r0, #0x0 - add r4, r3, #0x0 - str r1, [sp, #0x4] - bl FUN_02020380 - cmp r0, #0x2 - bne _0200C73E - ldr r0, [sp, #0x4] - add r0, r0, r4 - str r0, [sp, #0x4] -_0200C73E: - mov r0, #0x0 - str r0, [sp, #0x8] - add r0, r5, #0x0 - add r1, sp, #0x0 - bl FUN_02020044 - add sp, #0xc - pop {r4-r5, pc} - .balign 4 - - thumb_func_start FUN_0200C750 -FUN_0200C750: ; 0x0200C750 - push {r3, lr} - ldr r0, [r0, #0x0] - bl FUN_0200C720 - pop {r3, pc} - .balign 4 - - thumb_func_start FUN_0200C75C -FUN_0200C75C: ; 0x0200C75C - push {r3-r7, lr} - add r7, r0, #0x0 - add r6, r1, #0x0 - add r5, r2, #0x0 - bl FUN_0202011C - add r4, r0, #0x0 - ldr r1, [r4, #0x0] - asr r0, r1, #0xb - lsr r0, r0, #0x14 - add r0, r1, r0 - asr r0, r0, #0xc - strh r0, [r6, #0x0] - add r0, r7, #0x0 - bl FUN_02020380 - cmp r0, #0x2 - ldr r1, [r4, #0x4] - bne _0200C794 - mov r0, #0x3 - lsl r0, r0, #0x12 - sub r1, r1, r0 - asr r0, r1, #0xb - lsr r0, r0, #0x14 - add r0, r1, r0 - asr r0, r0, #0xc - strh r0, [r5, #0x0] - pop {r3-r7, pc} -_0200C794: - asr r0, r1, #0xb - lsr r0, r0, #0x14 - add r0, r1, r0 - asr r0, r0, #0xc - strh r0, [r5, #0x0] - pop {r3-r7, pc} - - thumb_func_start FUN_0200C7A0 -FUN_0200C7A0: ; 0x0200C7A0 - ldr r3, _0200C7A8 ; =FUN_0200C75C - ldr r0, [r0, #0x0] - bx r3 - nop -_0200C7A8: .word FUN_0200C75C - - thumb_func_start FUN_0200C7AC -FUN_0200C7AC: ; 0x0200C7AC - push {r3-r7, lr} - str r0, [sp, #0x0] - add r6, r1, #0x0 - add r5, r2, #0x0 - add r7, r3, #0x0 - bl FUN_0202011C - add r4, r0, #0x0 - ldr r1, [r4, #0x0] - asr r0, r1, #0xb - lsr r0, r0, #0x14 - add r0, r1, r0 - asr r0, r0, #0xc - strh r0, [r6, #0x0] - ldr r0, [sp, #0x0] - bl FUN_02020380 - cmp r0, #0x2 - bne _0200C7E2 - ldr r0, [r4, #0x4] - sub r1, r0, r7 - asr r0, r1, #0xb - lsr r0, r0, #0x14 - add r0, r1, r0 - asr r0, r0, #0xc - strh r0, [r5, #0x0] - pop {r3-r7, pc} -_0200C7E2: - ldr r1, [r4, #0x4] - asr r0, r1, #0xb - lsr r0, r0, #0x14 - add r0, r1, r0 - asr r0, r0, #0xc - strh r0, [r5, #0x0] - pop {r3-r7, pc} - - thumb_func_start FUN_0200C7F0 -FUN_0200C7F0: ; 0x0200C7F0 - push {r3, lr} - ldr r0, [r0, #0x0] - bl FUN_0200C7AC - pop {r3, pc} - .balign 4 - - thumb_func_start FUN_0200C7FC -FUN_0200C7FC: ; 0x0200C7FC - push {r3-r6, lr} - sub sp, #0xc - add r6, r0, #0x0 - add r5, r1, #0x0 - add r4, r2, #0x0 - bl FUN_0202011C - ldr r2, [r0, #0x0] - lsl r1, r5, #0xc - add r1, r2, r1 - str r1, [sp, #0x0] - ldr r2, [r0, #0x4] - lsl r1, r4, #0xc - add r1, r2, r1 - str r1, [sp, #0x4] - ldr r0, [r0, #0x8] - add r1, sp, #0x0 - str r0, [sp, #0x8] - add r0, r6, #0x0 - bl FUN_02020044 - add sp, #0xc - pop {r3-r6, pc} - .balign 4 - - thumb_func_start FUN_0200C82C -FUN_0200C82C: ; 0x0200C82C - ldr r3, _0200C834 ; =FUN_0200C7FC - ldr r0, [r0, #0x0] - bx r3 - nop -_0200C834: .word FUN_0200C7FC - - thumb_func_start FUN_0200C838 -FUN_0200C838: ; 0x0200C838 - ldr r3, _0200C83C ; =FUN_020200EC - bx r3 - .balign 4 -_0200C83C: .word FUN_020200EC - - thumb_func_start FUN_0200C840 -FUN_0200C840: ; 0x0200C840 - ldr r3, _0200C848 ; =FUN_0200C838 - ldr r0, [r0, #0x0] - bx r3 - nop -_0200C848: .word FUN_0200C838 - - thumb_func_start FUN_0200C84C -FUN_0200C84C: ; 0x0200C84C - push {r3-r7, lr} - add r5, r0, #0x0 - add r6, r1, #0x0 - add r7, r2, #0x0 - bl FUN_02020120 - add r4, r0, #0x0 - ldr r0, _0200C880 ; =0x45800000 - add r1, r6, #0x0 - bl _fmul - bl _ffix - str r0, [r4, #0x0] - ldr r0, _0200C880 ; =0x45800000 - add r1, r7, #0x0 - bl _fmul - bl _ffix - str r0, [r4, #0x4] - add r0, r5, #0x0 - add r1, r4, #0x0 - bl FUN_02020064 - pop {r3-r7, pc} - .balign 4 -_0200C880: .word 0x45800000 - - thumb_func_start FUN_0200C884 -FUN_0200C884: ; 0x0200C884 - ldr r3, _0200C88C ; =FUN_0200C84C - ldr r0, [r0, #0x0] - bx r3 - nop -_0200C88C: .word FUN_0200C84C - - thumb_func_start FUN_0200C890 -FUN_0200C890: ; 0x0200C890 - ldr r3, _0200C894 ; =FUN_02020088 - bx r3 - .balign 4 -_0200C894: .word FUN_02020088 - - thumb_func_start FUN_0200C898 -FUN_0200C898: ; 0x0200C898 - ldr r3, _0200C8A0 ; =FUN_0200C890 - ldr r0, [r0, #0x0] - bx r3 - nop -_0200C8A0: .word FUN_0200C890 - - thumb_func_start FUN_0200C8A4 -FUN_0200C8A4: ; 0x0200C8A4 - push {r3-r5, lr} - add r5, r1, #0x0 - add r4, r0, #0x0 - bl FUN_02020124 - add r0, r0, r5 - lsl r0, r0, #0x10 - lsr r1, r0, #0x10 - add r0, r4, #0x0 - bl FUN_02020088 - pop {r3-r5, pc} - - thumb_func_start FUN_0200C8BC -FUN_0200C8BC: ; 0x0200C8BC - ldr r3, _0200C8C4 ; =FUN_0200C8A4 - ldr r0, [r0, #0x0] - bx r3 - nop -_0200C8C4: .word FUN_0200C8A4 - - thumb_func_start FUN_0200C8C8 -FUN_0200C8C8: ; 0x0200C8C8 - ldr r3, _0200C8CC ; =FUN_02020100 - bx r3 - .balign 4 -_0200C8CC: .word FUN_02020100 - - thumb_func_start FUN_0200C8D0 -FUN_0200C8D0: ; 0x0200C8D0 - ldr r3, _0200C8D8 ; =FUN_0200C8C8 - ldr r0, [r0, #0x0] - bx r3 - nop -_0200C8D8: .word FUN_0200C8C8 - - thumb_func_start FUN_0200C8DC -FUN_0200C8DC: ; 0x0200C8DC - push {lr} - sub sp, #0xc - lsl r1, r1, #0xc - str r1, [sp, #0x0] - lsl r1, r2, #0xc - str r1, [sp, #0x4] - mov r1, #0x0 - str r1, [sp, #0x8] - ldr r0, [r0, #0x0] - add r1, sp, #0x0 - bl FUN_02020054 - add sp, #0xc - pop {pc} - - thumb_func_start FUN_0200C8F8 -FUN_0200C8F8: ; 0x0200C8F8 - ldr r3, _0200C900 ; =FUN_02020358 - ldr r0, [r0, #0x0] - bx r3 - nop -_0200C900: .word FUN_02020358 - - thumb_func_start FUN_0200C904 -FUN_0200C904: ; 0x0200C904 - ldr r3, _0200C908 ; =FUN_02020398 - bx r3 - .balign 4 -_0200C908: .word FUN_02020398 - - thumb_func_start FUN_0200C90C -FUN_0200C90C: ; 0x0200C90C - ldr r3, _0200C914 ; =FUN_0200C904 - ldr r0, [r0, #0x0] - bx r3 - nop -_0200C914: .word FUN_0200C904 - - thumb_func_start FUN_0200C918 -FUN_0200C918: ; 0x0200C918 - push {r4-r7, lr} - sub sp, #0xc - add r4, r1, #0x0 - add r5, r0, #0x0 - ldr r0, [r4, #0xc] - ldr r1, [sp, #0x28] - add r6, r2, #0x0 - add r7, r3, #0x0 - bl FUN_0200945C - cmp r0, #0x0 - bne _0200C936 - add sp, #0xc - mov r0, #0x0 - pop {r4-r7, pc} -_0200C936: - ldr r0, [sp, #0x28] - ldr r3, [sp, #0x20] - str r0, [sp, #0x0] - ldr r0, [sp, #0x24] - add r1, r6, #0x0 - str r0, [sp, #0x4] - ldr r0, [r5, #0x0] - add r2, r7, #0x0 - str r0, [sp, #0x8] - ldr r0, [r4, #0xc] - bl FUN_02008F34 - add r5, r0, #0x0 - beq _0200C964 - bl FUN_02009AC4 - ldr r0, [r4, #0x24] - add r1, r5, #0x0 - bl FUN_0200C474 - add sp, #0xc - mov r0, #0x1 - pop {r4-r7, pc} -_0200C964: - bl ErrorHandling - cmp r5, #0x0 - beq _0200C972 - add sp, #0xc - mov r0, #0x1 - pop {r4-r7, pc} -_0200C972: - mov r0, #0x0 - add sp, #0xc - pop {r4-r7, pc} - - thumb_func_start FUN_0200C978 -FUN_0200C978: ; 0x0200C978 - push {r4-r7, lr} - sub sp, #0xc - add r4, r1, #0x0 - add r5, r0, #0x0 - ldr r0, [r4, #0xc] - ldr r1, [sp, #0x28] - add r6, r2, #0x0 - add r7, r3, #0x0 - bl FUN_0200945C - cmp r0, #0x0 - bne _0200C996 - add sp, #0xc - mov r0, #0x0 - pop {r4-r7, pc} -_0200C996: - ldr r0, [sp, #0x28] - ldr r3, [sp, #0x20] - str r0, [sp, #0x0] - ldr r0, [sp, #0x24] - add r1, r6, #0x0 - str r0, [sp, #0x4] - ldr r0, [r5, #0x0] - add r2, r7, #0x0 - str r0, [sp, #0x8] - ldr r0, [r4, #0xc] - bl FUN_02008F34 - add r5, r0, #0x0 - beq _0200C9C4 - bl FUN_02009B78 - ldr r0, [r4, #0x24] - add r1, r5, #0x0 - bl FUN_0200C474 - add sp, #0xc - mov r0, #0x1 - pop {r4-r7, pc} -_0200C9C4: - bl ErrorHandling - cmp r5, #0x0 - beq _0200C9D2 - add sp, #0xc - mov r0, #0x1 - pop {r4-r7, pc} -_0200C9D2: - mov r0, #0x0 - add sp, #0xc - pop {r4-r7, pc} - - thumb_func_start FUN_0200C9D8 -FUN_0200C9D8: ; 0x0200C9D8 - push {r4-r7, lr} - sub sp, #0xc - add r4, r1, #0x0 - add r5, r0, #0x0 - ldr r0, [r4, #0xc] - ldr r1, [sp, #0x24] - add r7, r2, #0x0 - str r3, [sp, #0x8] - bl FUN_020094F0 - add r6, r0, #0x0 - ldr r0, [sp, #0x20] - ldr r3, [sp, #0x8] - str r0, [sp, #0x0] - ldr r0, [r5, #0x0] - add r1, r6, #0x0 - str r0, [sp, #0x4] - ldr r0, [r4, #0xc] - add r2, r7, #0x0 - bl FUN_020090FC - add r0, r6, #0x0 - bl FUN_02009BE8 - add sp, #0xc - pop {r4-r7, pc} - - thumb_func_start FUN_0200CA0C -FUN_0200CA0C: ; 0x0200CA0C - push {r4-r7, lr} - sub sp, #0xc - add r4, r1, #0x0 - add r5, r0, #0x0 - ldr r0, [r4, #0x10] - ldr r1, [sp, #0x24] - add r7, r2, #0x0 - str r3, [sp, #0x8] - bl FUN_020094F0 - add r6, r0, #0x0 - ldr r0, [sp, #0x20] - ldr r3, [sp, #0x8] - str r0, [sp, #0x0] - ldr r0, [r5, #0x0] - add r1, r6, #0x0 - str r0, [sp, #0x4] - ldr r0, [r4, #0x10] - add r2, r7, #0x0 - bl FUN_02009168 - add r0, r6, #0x0 - bl FUN_02009DE0 - add sp, #0xc - pop {r4-r7, pc} - - thumb_func_start FUN_0200CA40 -FUN_0200CA40: ; 0x0200CA40 - ldr r0, [r0, #0x0] - bx lr diff --git a/arm9/asm/unk_0200CABC.s b/arm9/asm/unk_0200CABC.s index 6d593845..9e8b3189 100644 --- a/arm9/asm/unk_0200CABC.s +++ b/arm9/asm/unk_0200CABC.s @@ -42,7 +42,7 @@ FUN_0200CABC: ; 0x0200CABC mov r0, #0x26 add r2, r5, #0x0 add r3, r4, #0x0 - bl FUN_0200687C + bl GfGfxLoader_LoadCharData add sp, #0x10 pop {r3-r5, pc} _0200CAE2: @@ -55,7 +55,7 @@ _0200CAE2: mov r0, #0x26 add r2, r5, #0x0 add r3, r4, #0x0 - bl FUN_0200687C + bl GfGfxLoader_LoadCharData add sp, #0x10 pop {r3-r5, pc} @@ -89,7 +89,7 @@ _0200CB18: str r0, [sp, #0xc] mov r0, #0x26 add r3, r5, #0x0 - bl FUN_0200687C + bl GfGfxLoader_LoadCharData add r0, sp, #0x10 ldrb r0, [r0, #0x10] cmp r0, #0x2 @@ -108,7 +108,7 @@ _0200CB3C: str r0, [sp, #0x4] mov r0, #0x26 lsl r3, r4, #0x5 - bl FUN_02006930 + bl GfGfxLoader_GXLoadPal add sp, #0x10 pop {r4-r6, pc} _0200CB56: @@ -119,7 +119,7 @@ _0200CB56: str r0, [sp, #0x4] mov r0, #0x26 lsl r3, r4, #0x5 - bl FUN_02006930 + bl GfGfxLoader_GXLoadPal add sp, #0x10 pop {r4-r6, pc} @@ -291,10 +291,10 @@ FUN_0200CCA4: ; 0x0200CCA4 bl FUN_0201AB18 str r0, [sp, #0x18] add r0, r5, #0x0 - bl FUN_0201AB0C + bl GetWindowWidth str r0, [sp, #0x1c] add r0, r5, #0x0 - bl FUN_0201AB10 + bl GetWindowHeight ldr r1, [sp, #0x1c] ldr r2, [sp, #0x14] str r1, [sp, #0x0] @@ -328,10 +328,10 @@ FUN_0200CCF8: ; 0x0200CCF8 bl FUN_0201AB18 add r7, r0, #0x0 add r0, r5, #0x0 - bl FUN_0201AB0C + bl GetWindowWidth str r0, [sp, #0x14] add r0, r5, #0x0 - bl FUN_0201AB10 + bl GetWindowHeight sub r1, r7, #0x1 lsl r1, r1, #0x18 lsr r1, r1, #0x18 @@ -394,7 +394,7 @@ FUN_0200CD68: ; 0x0200CD68 str r0, [sp, #0xc] mov r0, #0x26 add r3, r5, #0x0 - bl FUN_0200687C + bl GfGfxLoader_LoadCharData cmp r5, #0x4 bhs _0200CDB8 add r0, r7, #0x0 @@ -407,7 +407,7 @@ FUN_0200CD68: ; 0x0200CD68 str r0, [sp, #0x4] mov r0, #0x26 lsl r3, r4, #0x5 - bl FUN_02006930 + bl GfGfxLoader_GXLoadPal add sp, #0x14 pop {r4-r7, pc} _0200CDB8: @@ -421,7 +421,7 @@ _0200CDB8: str r0, [sp, #0x4] mov r0, #0x26 lsl r3, r4, #0x5 - bl FUN_02006930 + bl GfGfxLoader_GXLoadPal add sp, #0x14 pop {r4-r7, pc} .balign 4 @@ -758,10 +758,10 @@ FUN_0200D06C: ; 0x0200D06C bl FUN_0201AB18 str r0, [sp, #0x18] add r0, r5, #0x0 - bl FUN_0201AB0C + bl GetWindowWidth add r7, r0, #0x0 add r0, r5, #0x0 - bl FUN_0201AB10 + bl GetWindowHeight str r7, [sp, #0x0] str r0, [sp, #0x4] lsl r0, r6, #0x18 @@ -813,10 +813,10 @@ FUN_0200D0E0: ; 0x0200D0E0 bl FUN_0201AB18 add r7, r0, #0x0 add r0, r5, #0x0 - bl FUN_0201AB0C + bl GetWindowWidth str r0, [sp, #0x14] add r0, r5, #0x0 - bl FUN_0201AB10 + bl GetWindowHeight sub r1, r7, #0x1 lsl r1, r1, #0x18 lsr r1, r1, #0x18 @@ -879,7 +879,7 @@ FUN_0200D148: ; 0x0200D148 mov r0, #0x0 str r0, [sp, #0x10] add r0, sp, #0x1c - bl FUN_02018A60 + bl BlitBitmapRect4Bit add sp, #0x24 pop {r4-r5, pc} @@ -908,7 +908,7 @@ FUN_0200D18C: ; 0x0200D18C mov r1, #0x16 mov r2, #0x0 add r3, sp, #0x3c - bl FUN_02006BB0 + bl GfGfxLoader_GetCharData str r0, [sp, #0x2c] ldr r0, [sp, #0x3c] mov r7, #0x0 @@ -1006,7 +1006,7 @@ FUN_0200D274: ; 0x0200D274 str r0, [sp, #0x0] mov r0, #0x26 add r3, sp, #0x10 - bl FUN_02006BB0 + bl GfGfxLoader_GetCharData str r0, [sp, #0xc] mov r1, #0x9 ldr r0, [sp, #0x2c] @@ -1077,14 +1077,14 @@ FUN_0200D300: ; 0x0200D300 mov r0, #0x24 add r3, r6, #0x0 str r4, [sp, #0xc] - bl FUN_0200687C + bl GfGfxLoader_LoadCharData mov r0, #0x24 ; NARC_GRAPHIC_FIELD_BOARD mov r1, #0x1 add r2, r4, #0x0 bl AllocAndReadWholeNarcMemberByIdPair add r1, sp, #0x18 str r0, [sp, #0x14] - bl FUN_020B0138 + bl NNS_G2dGetUnpackedPaletteData add r2, sp, #0x20 ldr r1, [sp, #0x18] ldrb r2, [r2, #0x10] @@ -1098,7 +1098,7 @@ FUN_0200D300: ; 0x0200D300 bl FUN_02017FB4 ldr r1, [sp, #0x14] add r0, r4, #0x0 - bl FUN_02016A8C + bl FreeToHeapExplicit add r0, sp, #0x20 ldrb r3, [r0, #0x10] cmp r3, #0x1 @@ -1144,7 +1144,7 @@ _0200D390: str r0, [sp, #0xc] mov r0, #0x24 add r3, r4, #0x0 - bl FUN_0200687C + bl GfGfxLoader_LoadCharData add sp, #0x10 pop {r3-r5, pc} @@ -1575,10 +1575,10 @@ FUN_0200D6F8: ; 0x0200D6F8 bl FUN_0201AB18 str r0, [sp, #0x1c] add r0, r5, #0x0 - bl FUN_0201AB0C + bl GetWindowWidth add r7, r0, #0x0 add r0, r5, #0x0 - bl FUN_0201AB10 + bl GetWindowHeight str r7, [sp, #0x0] str r0, [sp, #0x4] str r6, [sp, #0x8] @@ -1604,10 +1604,10 @@ _0200D756: bl FUN_0201AB18 str r0, [sp, #0x24] add r0, r5, #0x0 - bl FUN_0201AB0C + bl GetWindowWidth add r7, r0, #0x0 add r0, r5, #0x0 - bl FUN_0201AB10 + bl GetWindowHeight str r7, [sp, #0x0] str r0, [sp, #0x4] str r6, [sp, #0x8] @@ -1648,10 +1648,10 @@ FUN_0200D7A0: ; 0x0200D7A0 bl FUN_0201AB18 add r7, r0, #0x0 add r0, r5, #0x0 - bl FUN_0201AB0C + bl GetWindowWidth add r6, r0, #0x0 add r0, r5, #0x0 - bl FUN_0201AB10 + bl GetWindowHeight sub r1, r7, #0x1 lsl r1, r1, #0x18 lsr r1, r1, #0x18 @@ -1681,10 +1681,10 @@ _0200D7FE: bl FUN_0201AB18 add r6, r0, #0x0 add r0, r5, #0x0 - bl FUN_0201AB0C + bl GetWindowWidth add r7, r0, #0x0 add r0, r5, #0x0 - bl FUN_0201AB10 + bl GetWindowHeight sub r1, r6, #0x1 lsl r1, r1, #0x18 lsr r1, r1, #0x18 @@ -1792,7 +1792,7 @@ _0200D8DA: mov r0, #0x26 mov r2, #0x0 add r3, sp, #0x30 - bl FUN_02006BB0 + bl GfGfxLoader_GetCharData mov r2, #0x80 add r5, r0, #0x0 str r2, [sp, #0x0] @@ -1863,7 +1863,7 @@ FUN_0200D980: ; 0x0200D980 bl FUN_0201AB18 str r0, [sp, #0x1c] ldr r0, [r5, #0x0] - bl FUN_0201AB0C + bl GetWindowWidth str r0, [sp, #0x20] cmp r6, #0x2 bne _0200DA8A @@ -2574,7 +2574,7 @@ FUN_0200DEF4: ; 0x0200DEF4 bl FUN_02009C5C mov r1, #0x1 str r0, [sp, #0x4] - bl FUN_020B1A14 + bl NNS_G2dGetImageLocation mov r1, #0x19 add r7, r0, #0x0 add r0, r4, #0x0 @@ -2601,7 +2601,7 @@ FUN_0200DEF4: ; 0x0200DEF4 ldr r1, [sp, #0x4] bl FUN_02009E54 mov r1, #0x1 - bl FUN_020B19C4 + bl NNS_G2dGetImagePaletteLocation add r5, r0, #0x0 add r0, r4, #0x0 mov r1, #0x20 diff --git a/arm9/asm/unk_0200E1D0.s b/arm9/asm/unk_0200E1D0.s index 85f4bfc2..3690752c 100644 --- a/arm9/asm/unk_0200E1D0.s +++ b/arm9/asm/unk_0200E1D0.s @@ -95,18 +95,18 @@ FUN_0200E1D0: ; 0x0200E1D0 add r6, r3, #0x0 cmp r0, #0x0 bne _0200E1E6 - bl ErrorHandling + bl GF_AssertFail _0200E1E6: ldr r0, [sp, #0x34] cmp r0, #0x0 bne _0200E1F0 - bl ErrorHandling + bl GF_AssertFail _0200E1F0: ldr r0, _0200E2AC ; =UNK_021C47F4 ldrh r0, [r0, #0xc] cmp r0, #0x0 beq _0200E1FC - bl ErrorHandling + bl GF_AssertFail _0200E1FC: ldr r0, _0200E2B0 ; =UNK_021C46B4 bl FUN_0200E808 @@ -672,14 +672,14 @@ FUN_0200E628: ; 0x0200E628 str r1, [sp, #0x0] cmp r0, #0x0 beq _0200E64A - bl ErrorHandling + bl GF_AssertFail _0200E64A: add r6, r5, #0x0 add r6, #0x8 ldr r0, [r6, r4] cmp r0, #0x0 bne _0200E658 - bl ErrorHandling + bl GF_AssertFail _0200E658: ldr r0, [r5, #0x10] cmp r0, #0x0 @@ -697,7 +697,7 @@ _0200E672: ldr r0, [sp, #0x4] cmp r0, #0x1 beq _0200E67C - bl ErrorHandling + bl GF_AssertFail _0200E67C: ldr r0, [sp, #0x0] cmp r7, #0x0 diff --git a/arm9/asm/unk_0200E850.s b/arm9/asm/unk_0200E850.s index 15526585..1919f15d 100644 --- a/arm9/asm/unk_0200E850.s +++ b/arm9/asm/unk_0200E850.s @@ -1,7 +1,7 @@ .include "asm/macros.inc" .include "global.inc" - .extern UNK_020FFA38 + .extern FX_SinCosTable_ .section .rodata @@ -1353,7 +1353,7 @@ FUN_0200F0B4: ; 0x0200F0B4 asr r0, r0, #0x4 lsl r1, r0, #0x1 lsl r0, r1, #0x1 - ldr r2, _0200F0C8 ; =UNK_020FFA38 + ldr r2, _0200F0C8 ; =FX_SinCosTable_ add r1, r1, #0x1 lsl r1, r1, #0x1 ldr r3, _0200F0CC ; =FX_Div @@ -1361,7 +1361,7 @@ FUN_0200F0B4: ; 0x0200F0B4 ldrsh r1, [r2, r1] bx r3 .balign 4 -_0200F0C8: .word UNK_020FFA38 +_0200F0C8: .word FX_SinCosTable_ _0200F0CC: .word FX_Div thumb_func_start FUN_0200F0D0 @@ -1572,7 +1572,7 @@ _0200F248: mov r7, #0xf mvn r7, r7 mov r6, #0x0 - bl ErrorHandling + bl GF_AssertFail b _0200F274 _0200F254: cmp r1, r0 @@ -1591,7 +1591,7 @@ _0200F26A: mov r7, #0x0 add r6, r7, #0x0 sub r6, #0x10 - bl ErrorHandling + bl GF_AssertFail _0200F274: ldr r0, [r5, #0x10] add r1, r7, #0x0 @@ -1701,7 +1701,7 @@ FUN_0200F330: ; 0x0200F330 push {r4-r6, lr} add r4, r0, #0x0 bne _0200F33A - bl ErrorHandling + bl GF_AssertFail _0200F33A: ldr r0, _0200F54C ; =0x04000006 ldrh r0, [r0, #0x0] @@ -2062,7 +2062,7 @@ FUN_0200F5D8: ; 0x0200F5D8 add r4, r1, #0x0 cmp r0, r4 bgt _0200F5E8 - bl ErrorHandling + bl GF_AssertFail _0200F5E8: ldr r0, _0200F5F4 ; =0x00000604 ldr r1, [r5, #0x0] @@ -2304,7 +2304,7 @@ FUN_0200F7AC: ; 0x0200F7AC push {r3-r5, lr} add r4, r0, #0x0 bne _0200F7B6 - bl ErrorHandling + bl GF_AssertFail _0200F7B6: ldr r0, _0200FAC0 ; =0x04000006 ldrh r0, [r0, #0x0] @@ -3371,7 +3371,7 @@ _0200FF9E: mov r6, #0x1 b _0200FFA6 _0200FFA2: - bl ErrorHandling + bl GF_AssertFail _0200FFA6: add r0, r6, #0x0 pop {r4-r6, pc} @@ -3740,7 +3740,7 @@ _02010272: mov r6, #0x1 b _0201027A _02010276: - bl ErrorHandling + bl GF_AssertFail _0201027A: add r0, r6, #0x0 pop {r4-r6, pc} @@ -4153,7 +4153,7 @@ FUN_020105A0: ; 0x020105A0 ldr r2, [r4, #0xc] asr r0, r0, #0x4 lsl r1, r0, #0x2 - ldr r0, _02010680 ; =UNK_020FFA38 + ldr r0, _02010680 ; =FX_SinCosTable_ asr r3, r2, #0x1f ldrsh r0, [r0, r1] asr r1, r0, #0x1f @@ -4189,7 +4189,7 @@ FUN_020105A0: ; 0x020105A0 str r0, [sp, #0x4] cmp r0, #0xc0 blt _0201060C - bl ErrorHandling + bl GF_AssertFail _0201060C: ldr r2, [sp, #0x4] add r0, r4, #0x0 @@ -4249,7 +4249,7 @@ _02010634: add sp, #0x110 pop {r4-r7, pc} .balign 4 -_02010680: .word UNK_020FFA38 +_02010680: .word FX_SinCosTable_ _02010684: .word 0x0000FFFF thumb_func_start FUN_02010688 @@ -4326,7 +4326,7 @@ _02010714: mov r6, #0x1 b _0201071C _02010718: - bl ErrorHandling + bl GF_AssertFail _0201071C: add r0, r6, #0x0 pop {r4-r6, pc} @@ -4350,7 +4350,7 @@ FUN_02010720: ; 0x02010720 str r0, [r7, #0xc] cmp r0, #0x0 bne _02010748 - bl ErrorHandling + bl GF_AssertFail _02010748: ldrb r0, [r5, #0x8] str r0, [r7, #0x10] @@ -4689,7 +4689,7 @@ _020109DC: mov r6, #0x1 b _020109E4 _020109E0: - bl ErrorHandling + bl GF_AssertFail _020109E4: add r0, r6, #0x0 pop {r4-r6, pc} @@ -5102,7 +5102,7 @@ _02010D10: mov r6, #0x1 b _02010D18 _02010D14: - bl ErrorHandling + bl GF_AssertFail _02010D18: add r0, r6, #0x0 pop {r4-r6, pc} @@ -5448,7 +5448,7 @@ _02010FC4: mov r6, #0x1 b _02010FCC _02010FC8: - bl ErrorHandling + bl GF_AssertFail _02010FCC: add r0, r6, #0x0 pop {r4-r6, pc} @@ -5809,7 +5809,7 @@ _0201126A: mov r4, #0x1 b _02011272 _0201126E: - bl ErrorHandling + bl GF_AssertFail _02011272: add r0, r4, #0x0 pop {r3-r5, pc} diff --git a/arm9/asm/unk_02011744.s b/arm9/asm/unk_02011744.s index 0f9f871b..bc9652c8 100644 --- a/arm9/asm/unk_02011744.s +++ b/arm9/asm/unk_02011744.s @@ -1,7 +1,7 @@ .include "asm/macros.inc" .include "global.inc" - .extern UNK_020FFA38 + .extern FX_SinCosTable_ .section .rodata @@ -20,81 +20,6 @@ UNK_020ED398: ; 0x020ED398 .byte 0x01, 0x02 .byte 0x01, 0x01 - .global UNK_020ED3B0 -UNK_020ED3B0: ; 0x020ED3B0 - .word 0x00000147 - .word 0x000001EF - - .global UNK_020ED3B8 -UNK_020ED3B8: ; 0x020ED3B8 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00 - - .global UNK_020ED3C8 -UNK_020ED3C8: ; 0x020ED3C8 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00 - - .global UNK_020ED3D8 -UNK_020ED3D8: ; 0x020ED3D8 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00 - .byte 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00 - .byte 0x08, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 - .byte 0x04, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 - .byte 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 - - .global UNK_020ED438 -UNK_020ED438: ; 0x020ED438 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00 - .byte 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00 - .byte 0x08, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 - .byte 0x04, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 - .byte 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 - - .global sMaxTime -sMaxTime: ; 0x020ED498 - ; 23:59:59 - .word 23, 59, 59 - - .global sMaxDate -sMaxDate: ; 0x020ED4A4 - ; 31 December, 2099 - .word 99, 12, 31, 0 - - .global sGF_DaysPerMonth -sGF_DaysPerMonth: ; 0x020ED4B2 - .short 0 - .short 31 - .short 59 - .short 90 - .short 120 - .short 151 - .short 181 - .short 212 - .short 243 - .short 273 - .short 304 - .short 334 - - .global sTimeOfDayByHour -sTimeOfDayByHour: ; 0x020ED4CC - ; 00:00 - 03:59 - .byte 0x04, 0x04, 0x04, 0x04 - ; 04:00 - 09:59 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ; 10:00 - 16:59 - .byte 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 - ; 17:00 - 19:59 - .byte 0x02, 0x02, 0x02 - ; 20:00 - 23:59 - .byte 0x03, 0x03, 0x03, 0x03 - - .section .bss - - .global sGFRTCWork -sGFRTCWork: ; 0x021C4808 - .space 0x48 - .text thumb_func_start FUN_02011744 @@ -109,7 +34,7 @@ FUN_02011744: ; 0x02011744 str r0, [sp, #0x8] cmp r0, #0x0 bne _0201175E - bl ErrorHandling + bl GF_AssertFail _0201175E: ldr r4, [sp, #0x8] ldr r5, [sp, #0x8] @@ -121,11 +46,11 @@ _02011766: mov r2, #0x0 add r3, r4, #0x0 str r7, [sp, #0x0] - bl FUN_02006C30 + bl GfGfxLoader_GetCellBank str r0, [r5, #0x0] cmp r0, #0x0 bne _0201177E - bl ErrorHandling + bl GF_AssertFail _0201177E: add r6, r6, #0x1 add r4, r4, #0x4 @@ -143,7 +68,7 @@ _0201177E: cmp r0, #0x0 str r0, [r1, #0x60] bne _020117A4 - bl ErrorHandling + bl GF_AssertFail _020117A4: ldr r1, [sp, #0x4] ldr r0, [sp, #0x8] @@ -162,7 +87,7 @@ FUN_020117BC: ; 0x020117BC push {r4-r6, lr} add r6, r0, #0x0 bne _020117C6 - bl ErrorHandling + bl GF_AssertFail _020117C6: mov r4, #0x0 add r5, r6, #0x0 @@ -186,13 +111,13 @@ FUN_020117E8: ; 0x020117E8 sub sp, #0x1c add r5, r0, #0x0 bne _020117F4 - bl ErrorHandling + bl GF_AssertFail _020117F4: ldr r0, [r5, #0x0] bl FUN_02011BA0 add r4, r0, #0x0 bne _02011802 - bl ErrorHandling + bl GF_AssertFail _02011802: ldr r0, [r5, #0x10] add r3, sp, #0x8 @@ -248,12 +173,12 @@ FUN_02011870: ; 0x02011870 push {r4, lr} add r4, r0, #0x0 bne _0201187A - bl ErrorHandling + bl GF_AssertFail _0201187A: ldr r0, [r4, #0x0] cmp r0, #0x0 bne _02011884 - bl ErrorHandling + bl GF_AssertFail _02011884: add r0, r4, #0x0 bl FUN_02011F00 @@ -294,7 +219,7 @@ FUN_020118C4: ; 0x020118C4 str r1, [sp, #0x0] cmp r5, #0x0 bne _020118D6 - bl ErrorHandling + bl GF_AssertFail _020118D6: ldr r0, [sp, #0x0] str r0, [r5, #0xc] @@ -353,7 +278,7 @@ FUN_02011938: ; 0x02011938 sub sp, #0x10 add r5, r0, #0x0 bne _02011944 - bl ErrorHandling + bl GF_AssertFail _02011944: ldr r0, [r5, #0x8] cmp r0, #0x0 @@ -412,15 +337,15 @@ FUN_020119A4: ; 0x020119A4 add r6, r2, #0x0 cmp r5, #0x0 bne _020119B4 - bl ErrorHandling + bl GF_AssertFail _020119B4: cmp r4, #0x0 bne _020119BC - bl ErrorHandling + bl GF_AssertFail _020119BC: cmp r6, #0x0 bne _020119C4 - bl ErrorHandling + bl GF_AssertFail _020119C4: ldr r0, [r5, #0xc] str r0, [r4, #0x0] @@ -436,7 +361,7 @@ FUN_020119D0: ; 0x020119D0 add r7, r1, #0x0 cmp r5, #0x0 bne _020119DE - bl ErrorHandling + bl GF_AssertFail _020119DE: ldr r0, [r5, #0x4] mov r6, #0x0 @@ -464,7 +389,7 @@ FUN_02011A00: ; 0x02011A00 add r7, r1, #0x0 cmp r5, #0x0 bne _02011A0E - bl ErrorHandling + bl GF_AssertFail _02011A0E: ldr r0, [r5, #0x4] mov r6, #0x0 @@ -492,7 +417,7 @@ FUN_02011A30: ; 0x02011A30 add r7, r1, #0x0 cmp r5, #0x0 bne _02011A3E - bl ErrorHandling + bl GF_AssertFail _02011A3E: ldr r0, [r5, #0x4] mov r6, #0x0 @@ -520,7 +445,7 @@ FUN_02011A60: ; 0x02011A60 add r7, r1, #0x0 cmp r5, #0x0 bne _02011A6E - bl ErrorHandling + bl GF_AssertFail _02011A6E: ldr r0, [r5, #0x4] mov r6, #0x0 @@ -548,7 +473,7 @@ FUN_02011A90: ; 0x02011A90 add r7, r1, #0x0 cmp r5, #0x0 bne _02011A9E - bl ErrorHandling + bl GF_AssertFail _02011A9E: ldr r0, [r5, #0x4] mov r6, #0x0 @@ -576,7 +501,7 @@ FUN_02011AC0: ; 0x02011AC0 add r7, r1, #0x0 cmp r5, #0x0 bne _02011ACE - bl ErrorHandling + bl GF_AssertFail _02011ACE: ldr r0, [r5, #0x4] mov r6, #0x0 @@ -604,7 +529,7 @@ FUN_02011AF0: ; 0x02011AF0 add r7, r1, #0x0 cmp r5, #0x0 bne _02011AFE - bl ErrorHandling + bl GF_AssertFail _02011AFE: ldr r0, [r5, #0x4] mov r6, #0x0 @@ -642,7 +567,7 @@ FUN_02011B20: ; 0x02011B20 str r3, [sp, #0x4] cmp r1, r0 bge _02011B42 - bl ErrorHandling + bl GF_AssertFail _02011B42: ldrb r2, [r6, #0x8] ldr r1, [sp, #0x0] @@ -650,7 +575,7 @@ _02011B42: add r0, r1, r0 cmp r2, r0 bge _02011B52 - bl ErrorHandling + bl GF_AssertFail _02011B52: ldr r0, [sp, #0x0] mov r4, #0x0 @@ -794,7 +719,7 @@ FUN_02011BF4: ; 0x02011BF4 ldrb r0, [r0, #0x0] cmp r0, #0x1 bne _02011C54 - bl ErrorHandling + bl GF_AssertFail _02011C54: add r0, r5, #0x0 mov r1, #0x1 @@ -849,12 +774,12 @@ FUN_02011CA4: ; 0x02011CA4 add r6, r3, #0x0 cmp r7, #0x0 bne _02011CB8 - bl ErrorHandling + bl GF_AssertFail _02011CB8: ldr r0, [sp, #0x0] cmp r0, #0x0 bne _02011CC2 - bl ErrorHandling + bl GF_AssertFail _02011CC2: ldr r0, [sp, #0x0] mov r4, #0x0 @@ -945,7 +870,7 @@ _02011D52: beq _02011D92 _02011D68: add r0, r5, #0x0 - bl FUN_020B1A24 + bl NNS_G2dInitImageProxy str r7, [sp, #0x0] ldr r0, [sp, #0x30] str r6, [sp, #0x4] @@ -1128,7 +1053,7 @@ _02011EC2: ldr r0, [r0, r5] cmp r0, #0x0 bne _02011EDC - bl ErrorHandling + bl GF_AssertFail _02011EDC: ldr r0, [r4, #0x0] add r7, #0x24 @@ -1249,7 +1174,7 @@ FUN_02011FAC: ; 0x02011FAC bl AllocFromHeapAtEnd add r4, r0, #0x0 bne _02011FBC - bl ErrorHandling + bl GF_AssertFail _02011FBC: mov r0, #0x0 str r0, [r4, #0xc] @@ -1263,7 +1188,7 @@ FUN_02011FC8: ; 0x02011FC8 push {r4, lr} add r4, r0, #0x0 bne _02011FD2 - bl ErrorHandling + bl GF_AssertFail _02011FD2: add r0, r4, #0x0 bl FreeToHeap @@ -1296,1738 +1221,3 @@ FUN_02011FF4: ; 0x02011FF4 str r0, [r1, #0xc] bx lr .balign 4 - - thumb_func_start FUN_02012004 -FUN_02012004: ; 0x02012004 - push {r3-r7, lr} - sub sp, #0x8 - str r0, [sp, #0x0] - ldr r0, [sp, #0x24] - ldr r6, [sp, #0x20] - str r1, [sp, #0x4] - add r5, r2, #0x0 - add r4, r3, #0x0 - str r0, [sp, #0x24] - mov r7, #0x0 -_02012018: - ldr r1, [r4, #0x0] - ldr r0, [sp, #0x4] - ldr r2, [r5, #0x0] - add r0, r0, r1 - ldr r1, [sp, #0x0] - add r1, r1, r2 - add r2, r6, #0x0 - bl memcpy - ldr r1, [r5, #0x0] - ldr r0, [sp, #0x24] - add r7, r7, #0x1 - add r0, r1, r0 - str r0, [r5, #0x0] - ldr r0, [r4, #0x0] - add r0, r0, r6 - str r0, [r4, #0x0] - cmp r7, #0x8 - blt _02012018 - add sp, #0x8 - pop {r3-r7, pc} - .balign 4 - - thumb_func_start FUN_02012044 -FUN_02012044: ; 0x02012044 - push {r4-r6, lr} - add r5, r3, #0x0 - bl AllocAndReadWholeNarcMemberByIdPair - add r4, r0, #0x0 - bne _02012054 - bl ErrorHandling -_02012054: - add r0, r4, #0x0 - add r1, r5, #0x0 - bl FUN_020B0088 - add r6, r0, #0x0 - cmp r5, #0x0 - bne _02012066 - bl ErrorHandling -_02012066: - cmp r6, #0x0 - bne _0201206E - bl ErrorHandling -_0201206E: - add r0, r4, #0x0 - bl FreeToHeap - pop {r4-r6, pc} - .balign 4 - - thumb_func_start FUN_02012078 -FUN_02012078: ; 0x02012078 - push {r4-r7, lr} - sub sp, #0x2c - ldr r4, [sp, #0x40] - str r0, [sp, #0x8] - add r6, r0, r2 - ldrh r0, [r4, #0x2] - str r1, [sp, #0xc] - add r5, r3, #0x0 - cmp r0, r6 - bge _02012090 - bl ErrorHandling -_02012090: - ldr r0, [sp, #0xc] - ldrh r1, [r4, #0x0] - add r0, r0, r5 - str r0, [sp, #0x14] - cmp r1, r0 - bge _020120A0 - bl ErrorHandling -_020120A0: - ldr r0, [r4, #0x14] - str r0, [sp, #0x20] - ldr r0, [sp, #0x44] - str r0, [sp, #0x1c] - ldrh r0, [r4, #0x2] - lsl r7, r0, #0x2 - ldr r0, [sp, #0xc] - add r1, r0, #0x0 - mul r1, r7 - ldr r0, [sp, #0x8] - str r1, [sp, #0x18] - lsl r1, r0, #0x2 - ldr r0, [sp, #0x18] - str r1, [sp, #0x10] - add r0, r1, r0 - str r0, [sp, #0x28] - mov r0, #0x0 - str r0, [sp, #0x24] - ldr r1, [sp, #0xc] - ldr r0, [sp, #0x14] - cmp r1, r0 - bge _0201210A -_020120CC: - ldr r4, [sp, #0x8] - add r0, r4, #0x0 - cmp r0, r6 - bge _020120F8 - ldr r0, [sp, #0x18] - lsl r1, r0, #0x3 - ldr r0, [sp, #0x10] - add r5, r0, r1 -_020120DC: - str r5, [sp, #0x28] - mov r0, #0x4 - str r0, [sp, #0x0] - ldr r0, [sp, #0x20] - ldr r1, [sp, #0x1c] - add r2, sp, #0x28 - add r3, sp, #0x24 - str r7, [sp, #0x4] - bl FUN_02012004 - add r4, r4, #0x1 - add r5, r5, #0x4 - cmp r4, r6 - blt _020120DC -_020120F8: - ldr r0, [sp, #0x18] - add r0, r0, r7 - str r0, [sp, #0x18] - ldr r0, [sp, #0xc] - add r1, r0, #0x1 - ldr r0, [sp, #0x14] - str r1, [sp, #0xc] - cmp r1, r0 - blt _020120CC -_0201210A: - add sp, #0x2c - pop {r4-r7, pc} - .balign 4 - - thumb_func_start FUN_02012110 -FUN_02012110: ; 0x02012110 - push {r4-r5} - sub sp, #0x8 - ldr r2, _02012148 ; =UNK_020ED3B0 - add r1, sp, #0x0 - ldr r3, [r2, #0x0] - ldr r2, [r2, #0x4] - str r3, [sp, #0x0] - str r2, [sp, #0x4] - ldr r2, _0201214C ; =0x000001EF - mov r5, #0x0 - add r3, r2, #0x0 -_02012126: - ldr r4, [r1, #0x0] - cmp r4, r3 - beq _02012140 - cmp r4, r0 - bne _02012138 - add sp, #0x8 - mov r0, #0x1 - pop {r4-r5} - bx lr -_02012138: - add r5, r5, #0x1 - add r1, r1, #0x4 - cmp r5, r2 - blt _02012126 -_02012140: - mov r0, #0x0 - add sp, #0x8 - pop {r4-r5} - bx lr - .balign 4 -_02012148: .word UNK_020ED3B0 -_0201214C: .word 0x000001EF - - thumb_func_start FUN_02012150 -FUN_02012150: ; 0x02012150 - push {r3-r4, lr} - sub sp, #0xc - add r4, r3, #0x0 - mov r3, #0x0 - str r3, [sp, #0x8] - add r3, sp, #0x8 - bl FUN_02012044 - ldr r0, [sp, #0x8] - ldr r0, [r0, #0x14] - bl FUN_02008A74 - ldr r0, [sp, #0x34] - bl FUN_02012110 - ldr r1, [sp, #0x30] - cmp r1, #0x2 - bne _02012184 - cmp r0, #0x1 - bne _02012184 - ldr r0, [sp, #0x8] - ldr r1, [sp, #0x28] - ldr r0, [r0, #0x14] - ldr r2, [sp, #0x2c] - bl FUN_02008904 -_02012184: - ldr r0, [sp, #0x8] - ldr r1, [sp, #0x18] - str r0, [sp, #0x0] - ldr r0, [sp, #0x24] - ldr r2, [sp, #0x1c] - str r0, [sp, #0x4] - ldr r3, [sp, #0x20] - add r0, r4, #0x0 - bl FUN_02012078 - add sp, #0xc - pop {r3-r4, pc} - - thumb_func_start FUN_0201219C -FUN_0201219C: ; 0x0201219C - push {r4-r7, lr} - sub sp, #0x24 - add r7, r1, #0x0 - add r5, r2, #0x0 - ldr r2, [sp, #0x3c] - ldr r1, [sp, #0x40] - add r6, r0, #0x0 - mul r1, r2 - add r0, r5, #0x0 - lsl r1, r1, #0x5 - str r3, [sp, #0x20] - bl AllocFromHeap - add r4, r0, #0x0 - ldr r0, [sp, #0x38] - ldr r3, [sp, #0x20] - str r0, [sp, #0x0] - ldr r0, [sp, #0x3c] - add r1, r7, #0x0 - str r0, [sp, #0x4] - ldr r0, [sp, #0x40] - add r2, r5, #0x0 - str r0, [sp, #0x8] - ldr r0, [sp, #0x44] - str r4, [sp, #0xc] - str r0, [sp, #0x10] - ldr r0, [sp, #0x48] - str r0, [sp, #0x14] - ldr r0, [sp, #0x4c] - str r0, [sp, #0x18] - ldr r0, [sp, #0x50] - str r0, [sp, #0x1c] - add r0, r6, #0x0 - bl FUN_02012150 - add r0, r4, #0x0 - add sp, #0x24 - pop {r4-r7, pc} - - thumb_func_start FUN_020121E8 -FUN_020121E8: ; 0x020121E8 - push {r3-r7, lr} - sub sp, #0x30 - str r3, [sp, #0x8] - ldr r3, [sp, #0x48] - str r3, [sp, #0x48] - mov r3, #0x0 - str r3, [sp, #0x2c] - bl AllocAndReadWholeNarcMemberByIdPair - str r0, [sp, #0x20] - cmp r0, #0x0 - bne _02012204 - bl ErrorHandling -_02012204: - ldr r0, [sp, #0x20] - add r1, sp, #0x2c - bl FUN_020B0088 - cmp r0, #0x0 - bne _02012214 - bl ErrorHandling -_02012214: - ldr r1, [sp, #0x4c] - ldr r0, [sp, #0x8] - add r6, r0, r1 - ldr r0, [sp, #0x2c] - ldrh r0, [r0, #0x2] - cmp r0, r6 - bge _02012226 - bl ErrorHandling -_02012226: - ldr r1, [sp, #0x50] - ldr r0, [sp, #0x48] - add r0, r0, r1 - str r0, [sp, #0x10] - ldr r0, [sp, #0x2c] - ldrh r1, [r0, #0x0] - ldr r0, [sp, #0x10] - cmp r1, r0 - bge _0201223C - bl ErrorHandling -_0201223C: - ldr r0, [sp, #0x2c] - ldr r0, [r0, #0x14] - str r0, [sp, #0x1c] - bl FUN_02008A74 - ldr r0, [sp, #0x54] - str r0, [sp, #0x18] - ldr r0, [sp, #0x2c] - ldrh r0, [r0, #0x2] - lsl r7, r0, #0x2 - ldr r0, [sp, #0x48] - add r1, r0, #0x0 - mul r1, r7 - ldr r0, [sp, #0x8] - str r1, [sp, #0x14] - lsl r1, r0, #0x2 - ldr r0, [sp, #0x14] - str r1, [sp, #0xc] - add r0, r1, r0 - str r0, [sp, #0x28] - mov r0, #0x0 - str r0, [sp, #0x24] - ldr r1, [sp, #0x48] - ldr r0, [sp, #0x10] - cmp r1, r0 - bge _020122AE -_02012270: - ldr r4, [sp, #0x8] - add r0, r4, #0x0 - cmp r0, r6 - bge _0201229C - ldr r0, [sp, #0x14] - lsl r1, r0, #0x3 - ldr r0, [sp, #0xc] - add r5, r0, r1 -_02012280: - str r5, [sp, #0x28] - mov r0, #0x4 - str r0, [sp, #0x0] - ldr r0, [sp, #0x1c] - ldr r1, [sp, #0x18] - add r2, sp, #0x28 - add r3, sp, #0x24 - str r7, [sp, #0x4] - bl FUN_02012004 - add r4, r4, #0x1 - add r5, r5, #0x4 - cmp r4, r6 - blt _02012280 -_0201229C: - ldr r0, [sp, #0x14] - add r0, r0, r7 - str r0, [sp, #0x14] - ldr r0, [sp, #0x48] - add r1, r0, #0x1 - ldr r0, [sp, #0x10] - str r1, [sp, #0x48] - cmp r1, r0 - blt _02012270 -_020122AE: - ldr r0, [sp, #0x20] - bl FreeToHeap - add sp, #0x30 - pop {r3-r7, pc} - - thumb_func_start FUN_020122B8 -FUN_020122B8: ; 0x020122B8 - push {r4-r7, lr} - sub sp, #0x14 - add r7, r1, #0x0 - add r5, r2, #0x0 - ldr r2, [sp, #0x2c] - ldr r1, [sp, #0x30] - add r6, r0, #0x0 - mul r1, r2 - add r0, r5, #0x0 - lsl r1, r1, #0x5 - str r3, [sp, #0x10] - bl AllocFromHeap - add r4, r0, #0x0 - ldr r0, [sp, #0x28] - ldr r3, [sp, #0x10] - str r0, [sp, #0x0] - ldr r0, [sp, #0x2c] - add r1, r7, #0x0 - str r0, [sp, #0x4] - ldr r0, [sp, #0x30] - add r2, r5, #0x0 - str r0, [sp, #0x8] - add r0, r6, #0x0 - str r4, [sp, #0xc] - bl FUN_020121E8 - add r0, r4, #0x0 - add sp, #0x14 - pop {r4-r7, pc} - - thumb_func_start FUN_020122F4 -FUN_020122F4: ; 0x020122F4 - push {r3-r7, lr} - sub sp, #0x20 - str r0, [sp, #0x0] - ldr r0, [sp, #0x44] - ldr r1, [sp, #0x38] - str r0, [sp, #0x18] - ldr r0, [sp, #0x48] - str r2, [sp, #0x4] - str r0, [sp, #0x14] - add r0, r2, #0x0 - add r7, r0, r1 - ldr r1, [sp, #0x3c] - add r0, r3, #0x0 - add r0, r0, r1 - add r1, r3, #0x0 - str r3, [sp, #0x8] - ldr r5, [sp, #0x40] - str r0, [sp, #0x10] - cmp r1, r0 - bge _0201236C - add r0, r3, #0x0 - lsl r0, r0, #0x5 - str r0, [sp, #0xc] - add r0, r2, #0x0 - lsl r0, r0, #0x5 - str r0, [sp, #0x1c] -_02012328: - ldr r6, [sp, #0x4] - add r0, r6, #0x0 - cmp r0, r7 - bge _0201235A - ldr r1, [sp, #0x0] - ldr r0, [sp, #0xc] - add r2, r1, #0x0 - mul r2, r0 - ldr r0, [sp, #0x1c] - add r4, r0, r2 -_0201233C: - ldr r1, [r5, #0x0] - ldr r0, [sp, #0x14] - mov r2, #0x20 - add r0, r0, r1 - ldr r1, [sp, #0x18] - add r1, r1, r4 - bl memcpy - ldr r0, [r5, #0x0] - add r6, r6, #0x1 - add r0, #0x20 - str r0, [r5, #0x0] - add r4, #0x20 - cmp r6, r7 - blt _0201233C -_0201235A: - ldr r0, [sp, #0xc] - add r0, #0x20 - str r0, [sp, #0xc] - ldr r0, [sp, #0x8] - add r1, r0, #0x1 - ldr r0, [sp, #0x10] - str r1, [sp, #0x8] - cmp r1, r0 - blt _02012328 -_0201236C: - add sp, #0x20 - pop {r3-r7, pc} - - thumb_func_start FUN_02012370 -FUN_02012370: ; 0x02012370 - push {r3-r4, lr} - sub sp, #0x14 - add r4, r2, #0x0 - ldr r2, [r4, #0x8] - str r2, [sp, #0x0] - ldr r2, [r4, #0xc] - str r2, [sp, #0x4] - ldr r2, [sp, #0x20] - str r3, [sp, #0x8] - str r2, [sp, #0xc] - ldr r2, [sp, #0x24] - str r2, [sp, #0x10] - ldr r2, [r4, #0x0] - ldr r3, [r4, #0x4] - bl FUN_020122F4 - add sp, #0x14 - pop {r3-r4, pc} - - thumb_func_start FUN_02012394 -FUN_02012394: ; 0x02012394 - push {r4-r7, lr} - sub sp, #0x7c - str r0, [sp, #0xc] - ldr r0, [sp, #0x9c] - mov r12, r3 - add r5, r2, #0x0 - ldr r6, [sp, #0x94] - ldr r7, [sp, #0x98] - ldr r3, _020123FC ; =UNK_020ED3D8 - str r1, [sp, #0x10] - str r0, [sp, #0x9c] - add r2, sp, #0x1c - mov r4, #0xc -_020123AE: - ldmia r3!, {r0-r1} - stmia r2!, {r0-r1} - sub r4, r4, #0x1 - bne _020123AE - mov r0, #0x0 - str r0, [sp, #0x18] - ldr r0, [sp, #0x90] - ldr r1, [sp, #0x10] - str r0, [sp, #0x0] - str r6, [sp, #0x4] - ldr r0, [sp, #0xc] - add r2, r5, #0x0 - mov r3, r12 - str r7, [sp, #0x8] - bl FUN_020122B8 - str r0, [sp, #0x14] - mov r4, #0x0 - add r5, sp, #0x1c -_020123D4: - ldr r0, [sp, #0x14] - add r1, r7, #0x0 - str r0, [sp, #0x0] - ldr r0, [sp, #0x9c] - add r2, r5, #0x0 - str r0, [sp, #0x4] - add r0, r6, #0x0 - add r3, sp, #0x18 - bl FUN_02012370 - add r4, r4, #0x1 - add r5, #0x10 - cmp r4, #0x6 - blt _020123D4 - ldr r0, [sp, #0x14] - bl FreeToHeap - add sp, #0x7c - pop {r4-r7, pc} - nop -_020123FC: .word UNK_020ED3D8 - - thumb_func_start FUN_02012400 -FUN_02012400: ; 0x02012400 - push {r4, lr} - sub sp, #0x10 - ldr r4, [r3, #0x4] - str r4, [sp, #0x0] - ldr r4, [r3, #0x8] - str r4, [sp, #0x4] - ldr r4, [r3, #0xc] - str r4, [sp, #0x8] - ldr r4, [sp, #0x18] - str r4, [sp, #0xc] - ldr r3, [r3, #0x0] - bl FUN_02012394 - add sp, #0x10 - pop {r4, pc} - .balign 4 - - thumb_func_start FUN_02012420 -FUN_02012420: ; 0x02012420 - push {r4-r7, lr} - sub sp, #0x14 - ldr r4, _02012448 ; =UNK_020ED3B8 - add r5, r3, #0x0 - add r3, sp, #0x4 - add r7, r0, #0x0 - mov r12, r1 - add r6, r3, #0x0 - ldmia r4!, {r0-r1} - stmia r3!, {r0-r1} - ldmia r4!, {r0-r1} - stmia r3!, {r0-r1} - add r0, r7, #0x0 - mov r1, r12 - add r3, r6, #0x0 - str r5, [sp, #0x0] - bl FUN_02012400 - add sp, #0x14 - pop {r4-r7, pc} - .balign 4 -_02012448: .word UNK_020ED3B8 - - thumb_func_start FUN_0201244C -FUN_0201244C: ; 0x0201244C - push {r3-r7, lr} - add r6, r1, #0x0 - mov r1, #0x32 - add r7, r2, #0x0 - add r5, r0, #0x0 - add r0, r7, #0x0 - lsl r1, r1, #0x6 - bl AllocFromHeap - add r4, r0, #0x0 - add r0, r5, #0x0 - add r1, r6, #0x0 - add r2, r7, #0x0 - add r3, r4, #0x0 - bl FUN_02012420 - add r0, r4, #0x0 - pop {r3-r7, pc} - - thumb_func_start FUN_02012470 -FUN_02012470: ; 0x02012470 - push {r3-r7, lr} - add r7, r2, #0x0 - add r5, r0, #0x0 - add r6, r1, #0x0 - add r0, r7, #0x0 - mov r1, #0x20 - bl AllocFromHeap - add r4, r0, #0x0 - add r0, r5, #0x0 - add r1, r6, #0x0 - add r2, r7, #0x0 - bl AllocAndReadWholeNarcMemberByIdPair - add r1, sp, #0x0 - add r5, r0, #0x0 - bl FUN_020B0138 - cmp r0, #0x1 - beq _0201249C - bl ErrorHandling -_0201249C: - ldr r0, [sp, #0x0] - add r1, r4, #0x0 - ldr r0, [r0, #0xc] - mov r2, #0x20 - bl MIi_CpuCopy16 - add r0, r5, #0x0 - bl FreeToHeap - add r0, r4, #0x0 - pop {r3-r7, pc} - .balign 4 - - thumb_func_start FUN_020124B4 -FUN_020124B4: ; 0x020124B4 - push {r4-r7, lr} - sub sp, #0x8c - str r0, [sp, #0x1c] - ldr r0, [sp, #0xac] - mov r12, r3 - add r5, r2, #0x0 - ldr r6, [sp, #0xa4] - ldr r7, [sp, #0xa8] - ldr r3, _0201252C ; =UNK_020ED438 - str r1, [sp, #0x20] - str r0, [sp, #0xac] - add r2, sp, #0x2c - mov r4, #0xc -_020124CE: - ldmia r3!, {r0-r1} - stmia r2!, {r0-r1} - sub r4, r4, #0x1 - bne _020124CE - mov r0, #0x0 - str r0, [sp, #0x28] - ldr r0, [sp, #0xa0] - ldr r1, [sp, #0x20] - str r0, [sp, #0x0] - str r6, [sp, #0x4] - ldr r0, [sp, #0xb0] - str r7, [sp, #0x8] - str r0, [sp, #0xc] - ldr r0, [sp, #0xb4] - add r2, r5, #0x0 - str r0, [sp, #0x10] - ldr r0, [sp, #0xb8] - mov r3, r12 - str r0, [sp, #0x14] - ldr r0, [sp, #0xbc] - str r0, [sp, #0x18] - ldr r0, [sp, #0x1c] - bl FUN_0201219C - str r0, [sp, #0x24] - mov r4, #0x0 - add r5, sp, #0x2c -_02012504: - ldr r0, [sp, #0x24] - add r1, r7, #0x0 - str r0, [sp, #0x0] - ldr r0, [sp, #0xac] - add r2, r5, #0x0 - str r0, [sp, #0x4] - add r0, r6, #0x0 - add r3, sp, #0x28 - bl FUN_02012370 - add r4, r4, #0x1 - add r5, #0x10 - cmp r4, #0x6 - blt _02012504 - ldr r0, [sp, #0x24] - bl FreeToHeap - add sp, #0x8c - pop {r4-r7, pc} - nop -_0201252C: .word UNK_020ED438 - - thumb_func_start FUN_02012530 -FUN_02012530: ; 0x02012530 - push {r4, lr} - sub sp, #0x20 - ldr r4, [r3, #0x4] - str r4, [sp, #0x0] - ldr r4, [r3, #0x8] - str r4, [sp, #0x4] - ldr r4, [r3, #0xc] - str r4, [sp, #0x8] - ldr r4, [sp, #0x28] - str r4, [sp, #0xc] - ldr r4, [sp, #0x2c] - str r4, [sp, #0x10] - ldr r4, [sp, #0x30] - str r4, [sp, #0x14] - ldr r4, [sp, #0x34] - str r4, [sp, #0x18] - ldr r4, [sp, #0x38] - str r4, [sp, #0x1c] - ldr r3, [r3, #0x0] - bl FUN_020124B4 - add sp, #0x20 - pop {r4, pc} - .balign 4 - - thumb_func_start FUN_02012560 -FUN_02012560: ; 0x02012560 - push {r4-r7, lr} - sub sp, #0x24 - ldr r4, _02012598 ; =UNK_020ED3C8 - add r5, r3, #0x0 - add r3, sp, #0x14 - add r7, r0, #0x0 - mov r12, r1 - add r6, r3, #0x0 - ldmia r4!, {r0-r1} - stmia r3!, {r0-r1} - ldmia r4!, {r0-r1} - stmia r3!, {r0-r1} - ldr r0, [sp, #0x38] - str r5, [sp, #0x0] - str r0, [sp, #0x4] - ldr r0, [sp, #0x3c] - mov r1, r12 - str r0, [sp, #0x8] - ldr r0, [sp, #0x40] - add r3, r6, #0x0 - str r0, [sp, #0xc] - ldr r0, [sp, #0x44] - str r0, [sp, #0x10] - add r0, r7, #0x0 - bl FUN_02012530 - add sp, #0x24 - pop {r4-r7, pc} - .balign 4 -_02012598: .word UNK_020ED3C8 - - thumb_func_start GF_InitRTCWork -GF_InitRTCWork: ; 0x0201259C - push {r3, lr} - bl RTC_Init - ldr r3, _020125CC ; =sGFRTCWork - mov r0, #0x0 - add r2, r3, #0x0 - add r1, r0, #0x0 - stmia r2!, {r0-r1} - stmia r2!, {r0-r1} - stmia r2!, {r0-r1} - stmia r2!, {r0-r1} - stmia r2!, {r0-r1} - stmia r2!, {r0-r1} - stmia r2!, {r0-r1} - stmia r2!, {r0-r1} - stmia r2!, {r0-r1} - ldr r1, _020125D0 ; =sGFRTCWork - str r0, [r1, #0x0] - str r0, [r1, #0x4] - str r0, [r1, #0x8] - add r0, r3, #0x0 - bl GF_RTC_GetDateTime - pop {r3, pc} - .balign 4 -_020125CC: .word sGFRTCWork -_020125D0: .word sGFRTCWork - - thumb_func_start GF_RTC_UpdateOnFrame -GF_RTC_UpdateOnFrame: ; 0x020125D4 - push {r3, lr} - ldr r0, _020125F4 ; =sGFRTCWork - ldr r1, [r0, #0x4] - cmp r1, #0x0 - bne _020125F2 - ldr r1, [r0, #0x8] - add r1, r1, #0x1 - str r1, [r0, #0x8] - cmp r1, #0xa - ble _020125F2 - mov r1, #0x0 - str r1, [r0, #0x8] - ldr r0, _020125F8 ; =sGFRTCWork - bl GF_RTC_GetDateTime -_020125F2: - pop {r3, pc} - .balign 4 -_020125F4: .word sGFRTCWork -_020125F8: .word sGFRTCWork - - thumb_func_start GF_RTC_GetDateTime_Callback -GF_RTC_GetDateTime_Callback: ; 0x020125FC - push {r4, lr} - add r4, r1, #0x0 - str r0, [r4, #0xc] - cmp r0, #0x0 - beq _0201260A - bl ErrorHandling -_0201260A: - add r3, r4, #0x0 - mov r0, #0x1 - add r2, r4, #0x0 - add r3, #0x2c - str r0, [r4, #0x0] - ldmia r3!, {r0-r1} - add r2, #0x10 - stmia r2!, {r0-r1} - ldmia r3!, {r0-r1} - stmia r2!, {r0-r1} - add r3, r4, #0x0 - add r3, #0x3c - add r2, r4, #0x0 - ldmia r3!, {r0-r1} - add r2, #0x20 - stmia r2!, {r0-r1} - ldr r0, [r3, #0x0] - str r0, [r2, #0x0] - mov r0, #0x0 - str r0, [r4, #0x4] - pop {r4, pc} - - thumb_func_start GF_RTC_GetDateTime -GF_RTC_GetDateTime: ; 0x02012634 - push {r4, lr} - add r4, r0, #0x0 - mov r0, #0x1 - str r0, [r4, #0x4] - add r0, r4, #0x0 - add r1, r4, #0x0 - ldr r2, _02012658 ; =GF_RTC_GetDateTime_Callback - add r0, #0x2c - add r1, #0x3c - add r3, r4, #0x0 - bl RTC_GetDateTimeAsync - str r0, [r4, #0xc] - cmp r0, #0x0 - beq _02012656 - bl ErrorHandling -_02012656: - pop {r4, pc} - .balign 4 -_02012658: .word GF_RTC_GetDateTime_Callback - - thumb_func_start GF_RTC_CopyDateTime -GF_RTC_CopyDateTime: ; 0x0201265C - push {r3-r5, lr} - add r5, r0, #0x0 - ldr r0, _02012684 ; =sGFRTCWork - add r4, r1, #0x0 - ldr r0, [r0, #0x0] - cmp r0, #0x1 - beq _0201266E - bl ErrorHandling -_0201266E: - ldr r2, _02012688 ; =sGFRTCWork + 16 - ldmia r2!, {r0-r1} - stmia r5!, {r0-r1} - ldmia r2!, {r0-r1} - ldr r2, _0201268C ; =sGFRTCWork + 32 - stmia r5!, {r0-r1} - ldmia r2!, {r0-r1} - stmia r4!, {r0-r1} - ldr r0, [r2, #0x0] - str r0, [r4, #0x0] - pop {r3-r5, pc} - .balign 4 -_02012684: .word sGFRTCWork -_02012688: .word sGFRTCWork + 16 -_0201268C: .word sGFRTCWork + 32 - - thumb_func_start GF_RTC_CopyTime -GF_RTC_CopyTime: ; 0x02012690 - push {r4, lr} - add r4, r0, #0x0 - ldr r0, _020126AC ; =sGFRTCWork - ldr r0, [r0, #0x0] - cmp r0, #0x1 - beq _020126A0 - bl ErrorHandling -_020126A0: - ldr r2, _020126B0 ; =sGFRTCWork + 32 - ldmia r2!, {r0-r1} - stmia r4!, {r0-r1} - ldr r0, [r2, #0x0] - str r0, [r4, #0x0] - pop {r4, pc} - .balign 4 -_020126AC: .word sGFRTCWork -_020126B0: .word sGFRTCWork + 32 - - thumb_func_start GF_RTC_CopyDate -GF_RTC_CopyDate: ; 0x020126B4 - push {r4, lr} - add r4, r0, #0x0 - ldr r0, _020126D0 ; =sGFRTCWork - ldr r0, [r0, #0x0] - cmp r0, #0x1 - beq _020126C4 - bl ErrorHandling -_020126C4: - ldr r2, _020126D4 ; =sGFRTCWork + 16 - ldmia r2!, {r0-r1} - stmia r4!, {r0-r1} - ldmia r2!, {r0-r1} - stmia r4!, {r0-r1} - pop {r4, pc} - .balign 4 -_020126D0: .word sGFRTCWork -_020126D4: .word sGFRTCWork + 16 - - thumb_func_start GF_RTC_TimeToSec -GF_RTC_TimeToSec: ; 0x020126D8 - push {r3-r4} - ldr r4, _020126F8 ; =sGFRTCWork + 32 - mov r0, #0x3c - ldr r1, [r4, #0x4] - ldr r3, [r4, #0x8] - add r2, r1, #0x0 - mul r2, r0 - mov r0, #0xe1 - ldr r1, [r4, #0x0] - lsl r0, r0, #0x4 - mul r0, r1 - add r0, r2, r0 - add r0, r3, r0 - pop {r3-r4} - bx lr - nop -_020126F8: .word sGFRTCWork + 32 - - thumb_func_start GF_RTC_DateTimeToSec -GF_RTC_DateTimeToSec: ; 0x020126FC - ldr r3, _02012704 ; =RTC_ConvertDateTimeToSecond - ldr r0, _02012708 ; =sGFRTCWork + 16 - ldr r1, _0201270C ; =sGFRTCWork + 32 - bx r3 - .balign 4 -_02012704: .word RTC_ConvertDateTimeToSecond -_02012708: .word sGFRTCWork + 16 -_0201270C: .word sGFRTCWork + 32 - - thumb_func_start FUN_02012710 -FUN_02012710: ; 0x02012710 - push {r4-r6, lr} - sub sp, #0x10 - add r5, r0, #0x0 - ldr r2, [r5, #0x4] - ldr r0, _02012778 ; =sGF_DaysPerMonth - 2 - lsl r1, r2, #0x1 - ldrh r0, [r0, r1] - ldr r3, [r5, #0x8] - add r4, r3, r0 - cmp r2, #0x3 - blo _02012752 - ldr r6, [r5, #0x0] - mov r0, #0x1e - lsr r2, r6, #0x1f - lsl r1, r6, #0x1e - sub r1, r1, r2 - ror r1, r0 - add r0, r2, r1 - bne _02012742 - add r0, r6, #0x0 - mov r1, #0x64 - bl _s32_div_f - cmp r1, #0x0 - bne _02012750 -_02012742: - mov r1, #0x19 - add r0, r6, #0x0 - lsl r1, r1, #0x4 - bl _s32_div_f - cmp r1, #0x0 - bne _02012752 -_02012750: - add r4, r4, #0x1 -_02012752: - add r6, r5, #0x0 - add r3, sp, #0x0 - add r2, r3, #0x0 - ldmia r6!, {r0-r1} - stmia r3!, {r0-r1} - ldmia r6!, {r0-r1} - stmia r3!, {r0-r1} - mov r0, #0x1 - str r0, [sp, #0x4] - str r0, [sp, #0x8] - add r0, r2, #0x0 - bl RTC_ConvertDateToDay - add r0, r5, #0x0 - bl RTC_ConvertDateToDay - add r0, r4, #0x0 - add sp, #0x10 - pop {r4-r6, pc} - .balign 4 -_02012778: .word sGF_DaysPerMonth - 2 - - thumb_func_start IsNighttime -IsNighttime: ; 0x0201277C - push {r3, lr} - bl GF_RTC_GetTimeOfDay - cmp r0, #0x3 - beq _0201278A - cmp r0, #0x4 - bne _0201278E -_0201278A: - mov r0, #0x1 - pop {r3, pc} -_0201278E: - mov r0, #0x0 - pop {r3, pc} - .balign 4 - - thumb_func_start GF_RTC_GetTimeOfDay -GF_RTC_GetTimeOfDay: ; 0x02012794 - push {lr} - sub sp, #0xc - add r0, sp, #0x0 - bl GF_RTC_CopyTime - ldr r0, [sp, #0x0] - bl GF_RTC_GetTimeOfDayByHour - add sp, #0xc - pop {pc} - - thumb_func_start GF_RTC_GetTimeOfDayByHour -GF_RTC_GetTimeOfDayByHour: ; 0x020127A8 - push {r4, lr} - add r4, r0, #0x0 - bmi _020127B2 - cmp r4, #0x18 - blt _020127B6 -_020127B2: - bl ErrorHandling -_020127B6: - ldr r0, _020127BC ; =sTimeOfDayByHour - ldrb r0, [r0, r4] - pop {r4, pc} - .balign 4 -_020127BC: .word sTimeOfDayByHour - - thumb_func_start FUN_020127C0 -FUN_020127C0: ; 0x020127C0 - push {r4-r7, lr} - sub sp, #0x24 - add r6, r3, #0x0 - ldr r3, _0201282C ; =sMaxDate - add r4, r0, #0x0 - add r7, r1, #0x0 - add r5, r2, #0x0 - add r2, sp, #0x14 - ldmia r3!, {r0-r1} - str r2, [sp, #0x0] - stmia r2!, {r0-r1} - ldmia r3!, {r0-r1} - stmia r2!, {r0-r1} - ldr r3, _02012830 ; =sMaxTime - add r2, sp, #0x8 - ldmia r3!, {r0-r1} - str r2, [sp, #0x4] - stmia r2!, {r0-r1} - ldr r0, [r3, #0x0] - ldr r1, [sp, #0x4] - str r0, [r2, #0x0] - ldr r0, [sp, #0x0] - bl RTC_ConvertDateTimeToSecond - add r2, r1, #0x0 - add r3, r0, #0x0 - mov r1, #0x0 - ldr r0, _02012834 ; =0xBC19137F - eor r1, r2 - eor r0, r3 - orr r0, r1 - beq _02012804 - bl ErrorHandling -_02012804: - sub r0, r4, r5 - mov r12, r7 - mov r0, r12 - sbc r0, r6 - bge _02012818 - sub r0, r5, r4 - sbc r6, r7 - add sp, #0x24 - add r1, r6, #0x0 - pop {r4-r7, pc} -_02012818: - ldr r0, _02012834 ; =0xBC19137F - mov r1, #0x0 - sub r0, r0, r4 - sbc r1, r7 - add r0, r5, r0 - adc r6, r1 - add r1, r6, #0x0 - add sp, #0x24 - pop {r4-r7, pc} - nop -_0201282C: .word sMaxDate -_02012830: .word sMaxTime -_02012834: .word 0xBC19137F - - thumb_func_start ListMenu_ctor -ListMenu_ctor: ; 0x02012838 - push {r3-r5, lr} - add r5, r0, #0x0 - add r4, r1, #0x0 - add r1, r5, #0x1 - add r0, r4, #0x0 - lsl r1, r1, #0x3 - bl AllocFromHeap - cmp r0, #0x0 - beq _0201286E - mov r2, #0x0 - cmp r5, #0x0 - bls _02012862 - add r3, r0, #0x0 - add r1, r2, #0x0 -_02012856: - str r1, [r3, #0x0] - str r1, [r3, #0x4] - add r2, r2, #0x1 - add r3, #0x8 - cmp r2, r5 - blo _02012856 -_02012862: - mov r1, #0x0 - lsl r2, r2, #0x3 - mvn r1, r1 - str r1, [r0, r2] - add r1, r0, r2 - str r4, [r1, #0x4] -_0201286E: - pop {r3-r5, pc} - - thumb_func_start ListMenu_dtor -ListMenu_dtor: ; 0x02012870 - push {r4, lr} - add r4, r0, #0x0 - bl ListMenu_DestroyMenuStrings - add r0, r4, #0x0 - bl FreeToHeap - pop {r4, pc} - - thumb_func_start ListMenu_ItemFromMsgData -ListMenu_ItemFromMsgData: ; 0x02012880 - push {r3-r7, lr} - add r6, r1, #0x0 - add r1, sp, #0x0 - add r7, r2, #0x0 - add r5, r3, #0x0 - bl ListMenu_NewItem - add r4, r0, #0x0 - beq _0201289E - add r0, r6, #0x0 - add r1, r7, #0x0 - bl NewString_ReadMsgData - str r0, [r4, #0x0] - str r5, [r4, #0x4] -_0201289E: - pop {r3-r7, pc} - - thumb_func_start ListMenu_AddItem -ListMenu_AddItem: ; 0x020128A0 - push {r3-r6, lr} - sub sp, #0x4 - add r6, r1, #0x0 - add r1, sp, #0x0 - add r5, r2, #0x0 - bl ListMenu_NewItem - add r4, r0, #0x0 - beq _020128BE - ldr r1, [sp, #0x0] - add r0, r6, #0x0 - bl StringDup - str r0, [r4, #0x0] - str r5, [r4, #0x4] -_020128BE: - add sp, #0x4 - pop {r3-r6, pc} - .balign 4 - - thumb_func_start ListMenu_CopyItem -ListMenu_CopyItem: ; 0x020128C4 - push {r3-r4, lr} - sub sp, #0x4 - add r4, r1, #0x0 - add r1, sp, #0x0 - bl ListMenu_NewItem - cmp r0, #0x0 - beq _020128DC - ldr r1, [r4, #0x0] - str r1, [r0, #0x0] - ldr r1, [r4, #0x4] - str r1, [r0, #0x4] -_020128DC: - add sp, #0x4 - pop {r3-r4, pc} - - thumb_func_start ListMenu_NewItem -ListMenu_NewItem: ; 0x020128E0 - push {r4, lr} - ldr r3, [r0, #0x0] - cmp r3, #0x0 - beq _02012900 - mov r2, #0x0 - mvn r2, r2 -_020128EC: - cmp r3, r2 - bne _020128F8 - bl ErrorHandling - mov r0, #0x0 - pop {r4, pc} -_020128F8: - add r0, #0x8 - ldr r3, [r0, #0x0] - cmp r3, #0x0 - bne _020128EC -_02012900: - mov r2, #0x0 - mvn r2, r2 - add r4, r0, #0x0 - cmp r3, r2 - beq _02012912 -_0201290A: - add r0, #0x8 - ldr r3, [r0, #0x0] - cmp r3, r2 - bne _0201290A -_02012912: - ldr r0, [r0, #0x4] - str r0, [r1, #0x0] - add r0, r4, #0x0 - pop {r4, pc} - .balign 4 - - thumb_func_start ListMenu_DestroyMenuStrings -ListMenu_DestroyMenuStrings: ; 0x0201291C - push {r4-r6, lr} - add r5, r0, #0x0 - mov r0, #0x0 - ldr r1, [r5, #0x0] - mvn r0, r0 - cmp r1, r0 - beq _02012942 - mov r4, #0x0 - add r6, r0, #0x0 -_0201292E: - ldr r0, [r5, #0x0] - cmp r0, #0x0 - beq _02012942 - bl String_dtor - str r4, [r5, #0x0] - add r5, #0x8 - ldr r0, [r5, #0x0] - cmp r0, r6 - bne _0201292E -_02012942: - pop {r4-r6, pc} - - thumb_func_start FUN_02012944 -FUN_02012944: ; 0x02012944 - push {r3-r5, lr} - add r5, r1, #0x0 - mov r1, #0xc - add r4, r2, #0x0 - bl AllocFromHeap - mov r1, #0x0 - strb r1, [r0, #0x0] - strb r1, [r0, #0x1] - strb r1, [r0, #0x2] - strb r1, [r0, #0x3] - strb r1, [r0, #0x4] - strb r1, [r0, #0x5] - strb r1, [r0, #0x6] - strb r1, [r0, #0x7] - strb r1, [r0, #0x8] - strb r1, [r0, #0x9] - strb r1, [r0, #0xa] - strb r1, [r0, #0xb] - mov r1, #0x1 - strb r1, [r0, #0x9] - str r5, [r0, #0x0] - str r4, [r0, #0x4] - pop {r3-r5, pc} - - thumb_func_start FUN_02012974 -FUN_02012974: ; 0x02012974 - push {r4, lr} - add r4, r0, #0x0 - bne _0201297E - bl ErrorHandling -_0201297E: - add r0, r4, #0x0 - bl FreeToHeap - pop {r4, pc} - .balign 4 - - thumb_func_start FUN_02012988 -FUN_02012988: ; 0x02012988 - push {r4, lr} - add r4, r0, #0x0 - bne _02012992 - bl ErrorHandling -_02012992: - ldrb r0, [r4, #0x8] - lsl r0, r0, #0x2 - ldr r0, [r4, r0] - pop {r4, pc} - .balign 4 - - thumb_func_start FUN_0201299C -FUN_0201299C: ; 0x0201299C - push {r4, lr} - add r4, r0, #0x0 - bne _020129A6 - bl ErrorHandling -_020129A6: - ldrb r1, [r4, #0x8] - mov r0, #0x1 - eor r0, r1 - lsl r0, r0, #0x2 - ldr r0, [r4, r0] - pop {r4, pc} - .balign 4 - - thumb_func_start FUN_020129B4 -FUN_020129B4: ; 0x020129B4 - cmp r0, #0x0 - beq _020129C6 - ldrb r1, [r0, #0x9] - cmp r1, #0x0 - beq _020129C6 - ldrb r2, [r0, #0x8] - mov r1, #0x1 - eor r1, r2 - strb r1, [r0, #0x8] -_020129C6: - bx lr - - thumb_func_start FUN_020129C8 -FUN_020129C8: ; 0x020129C8 - push {r3, lr} - mov r0, #0x0 - bl MI_StopDma - mov r0, #0x0 - bl MI_WaitDma - pop {r3, pc} - - thumb_func_start FUN_020129D8 -FUN_020129D8: ; 0x020129D8 - push {r4-r6, lr} - add r6, r0, #0x0 - add r5, r1, #0x0 - add r4, r2, #0x0 - cmp r3, #0x1 - bne _020129F2 - mov r0, #0x0 - add r1, r6, #0x0 - add r2, r5, #0x0 - add r3, r4, #0x0 - bl MI_HBlankDmaCopy32 - pop {r4-r6, pc} -_020129F2: - mov r0, #0x0 - add r1, r6, #0x0 - add r2, r5, #0x0 - add r3, r4, #0x0 - bl MI_HBlankDmaCopy16 - pop {r4-r6, pc} - - thumb_func_start FUN_02012A00 -FUN_02012A00: ; 0x02012A00 - push {r3-r5, lr} - ldr r1, _02012A2C ; =0x0000079C - add r5, r0, #0x0 - bl AllocFromHeap - ldr r2, _02012A2C ; =0x0000079C - mov r1, #0x0 - add r4, r0, #0x0 - bl memset - mov r2, #0x3 - lsl r2, r2, #0x8 - add r0, r5, #0x0 - add r1, r4, #0x0 - add r2, r4, r2 - bl FUN_02012944 - mov r1, #0x6 - lsl r1, r1, #0x8 - str r0, [r4, r1] - add r0, r4, #0x0 - pop {r3-r5, pc} - .balign 4 -_02012A2C: .word 0x0000079C - - thumb_func_start FUN_02012A30 -FUN_02012A30: ; 0x02012A30 - push {r3-r7, lr} - add r5, r0, #0x0 - add r4, r1, #0x0 - add r6, r2, #0x0 - add r7, r3, #0x0 - cmp r5, #0x0 - bne _02012A42 - bl ErrorHandling -_02012A42: - ldr r0, _02012AB0 ; =0x00000604 - ldr r0, [r5, r0] - cmp r0, #0x0 - beq _02012A4E - bl ErrorHandling -_02012A4E: - ldr r0, _02012AB4 ; =0x0000078C - mov r2, #0x0 - strb r4, [r5, r0] - add r1, r0, #0x1 - strb r6, [r5, r1] - add r1, r0, #0x0 - add r1, #0xc - strh r2, [r5, r1] - add r2, sp, #0x8 - mov r1, #0x14 - ldrsh r2, [r2, r1] - add r1, r0, #0x0 - add r1, #0xe - strh r2, [r5, r1] - add r1, r0, #0x4 - ldr r2, [sp, #0x20] - add r0, #0x8 - str r2, [r5, r1] - ldr r1, [sp, #0x24] - ldr r3, [sp, #0x18] - str r1, [r5, r0] - ldr r0, _02012AB8 ; =0x0000060C - mov r1, #0xc0 - add r0, r5, r0 - add r2, r7, #0x0 - bl FUN_02012B88 - ldr r0, _02012ABC ; =FUN_02012BE4 - ldr r2, [sp, #0x28] - add r1, r5, #0x0 - bl FUN_0200CA44 - ldr r1, _02012AB0 ; =0x00000604 - mov r2, #0x3 - str r0, [r5, r1] - ldr r0, _02012AC0 ; =0x00000794 - add r1, r5, #0x0 - ldr r0, [r5, r0] - lsl r2, r2, #0x8 - bl MIi_CpuClear32 - ldr r0, _02012AC0 ; =0x00000794 - mov r2, #0x3 - lsl r2, r2, #0x8 - ldr r0, [r5, r0] - add r1, r5, r2 - bl MIi_CpuClear32 - pop {r3-r7, pc} - .balign 4 -_02012AB0: .word 0x00000604 -_02012AB4: .word 0x0000078C -_02012AB8: .word 0x0000060C -_02012ABC: .word FUN_02012BE4 -_02012AC0: .word 0x00000794 - - thumb_func_start FUN_02012AC4 -FUN_02012AC4: ; 0x02012AC4 - push {r4, lr} - add r4, r0, #0x0 - bne _02012ACE - bl ErrorHandling -_02012ACE: - ldr r0, _02012AF8 ; =0x00000604 - ldr r0, [r4, r0] - cmp r0, #0x0 - beq _02012AF4 - bl FUN_0200CAB4 - ldr r0, _02012AF8 ; =0x00000604 - mov r1, #0x0 - str r1, [r4, r0] - sub r0, r0, #0x4 - ldr r0, [r4, r0] - bl FUN_02012988 - ldr r1, _02012AFC ; =0x00000794 - mov r2, #0x3 - ldr r1, [r4, r1] - lsl r2, r2, #0x8 - bl memset -_02012AF4: - pop {r4, pc} - nop -_02012AF8: .word 0x00000604 -_02012AFC: .word 0x00000794 - - thumb_func_start FUN_02012B00 -FUN_02012B00: ; 0x02012B00 - push {r4, lr} - add r4, r0, #0x0 - bl FUN_02012AC4 - bl FUN_02012C90 - mov r0, #0x6 - lsl r0, r0, #0x8 - ldr r0, [r4, r0] - bl FUN_02012974 - add r0, r4, #0x0 - bl FreeToHeap - pop {r4, pc} - .balign 4 - - thumb_func_start FUN_02012B20 -FUN_02012B20: ; 0x02012B20 - mov r1, #0x6 - lsl r1, r1, #0x8 - ldr r3, _02012B2C ; =FUN_02012988 - ldr r0, [r0, r1] - bx r3 - nop -_02012B2C: .word FUN_02012988 - - thumb_func_start FUN_02012B30 -FUN_02012B30: ; 0x02012B30 - push {r4, lr} - add r4, r0, #0x0 - beq _02012B5E - ldr r0, _02012B60 ; =0x00000604 - ldr r1, [r4, r0] - cmp r1, #0x0 - beq _02012B5E - sub r0, r0, #0x4 - ldr r0, [r4, r0] - bl FUN_020129B4 - mov r0, #0x6 - lsl r0, r0, #0x8 - ldr r0, [r4, r0] - bl FUN_02012988 - add r1, r0, #0x0 - ldr r0, _02012B64 ; =0x00000794 - mov r2, #0x3 - ldr r0, [r4, r0] - lsl r2, r2, #0x8 - bl MIi_CpuClear32 -_02012B5E: - pop {r4, pc} - .balign 4 -_02012B60: .word 0x00000604 -_02012B64: .word 0x00000794 - - thumb_func_start FUN_02012B68 -FUN_02012B68: ; 0x02012B68 - push {r4, lr} - add r4, r0, #0x0 - beq _02012B80 - ldr r0, _02012B84 ; =0x00000604 - ldr r0, [r4, r0] - cmp r0, #0x0 - beq _02012B80 - bl FUN_02012C90 - add r0, r4, #0x0 - bl FUN_02012C98 -_02012B80: - pop {r4, pc} - nop -_02012B84: .word 0x00000604 - - thumb_func_start FUN_02012B88 -FUN_02012B88: ; 0x02012B88 - push {r4-r7, lr} - sub sp, #0xc - mov r4, #0x0 - add r7, r1, #0x0 - add r5, r0, #0x0 - add r6, r4, #0x0 - str r2, [sp, #0x0] - cmp r7, #0x0 - bls _02012BD6 - asr r0, r3, #0x1f - str r3, [sp, #0x4] - str r0, [sp, #0x8] -_02012BA0: - asr r0, r4, #0x4 - lsl r1, r0, #0x2 - ldr r0, _02012BDC ; =UNK_020FFA38 - ldr r2, [sp, #0x4] - ldrsh r0, [r0, r1] - ldr r3, [sp, #0x8] - asr r1, r0, #0x1f - bl _ll_mul - mov r2, #0x2 - lsl r2, r2, #0xa - add r0, r0, r2 - ldr r2, _02012BE0 ; =0x00000000 - adc r1, r2 - lsl r1, r1, #0x14 - lsr r0, r0, #0xc - orr r0, r1 - asr r0, r0, #0xc - strh r0, [r5, #0x0] - ldr r0, [sp, #0x0] - add r6, r6, #0x1 - add r0, r4, r0 - lsl r0, r0, #0x10 - lsr r4, r0, #0x10 - add r5, r5, #0x2 - cmp r6, r7 - blo _02012BA0 -_02012BD6: - add sp, #0xc - pop {r4-r7, pc} - nop -_02012BDC: .word UNK_020FFA38 -_02012BE0: .word 0x00000000 - - thumb_func_start FUN_02012BE4 -FUN_02012BE4: ; 0x02012BE4 - push {r3-r7, lr} - mov r0, #0x6 - add r6, r1, #0x0 - lsl r0, r0, #0x8 - ldr r0, [r6, r0] - bl FUN_02012988 - add r5, r0, #0x0 - ldr r0, _02012C80 ; =0x00000798 - mov r1, #0x64 - ldrsh r0, [r6, r0] - bl _s32_div_f - lsl r0, r0, #0x18 - lsr r3, r0, #0x18 - ldr r0, _02012C84 ; =0x0000078C - ldrb r4, [r6, r0] - add r0, r0, #0x1 - ldrb r0, [r6, r0] - cmp r4, r0 - bgt _02012C4C - lsl r0, r4, #0x2 - add r5, r5, r0 -_02012C12: - ldr r2, [r5, #0x0] - lsl r0, r2, #0x10 - asr r7, r0, #0x10 - lsl r0, r3, #0x1 - add r1, r6, r0 - ldr r0, _02012C88 ; =0x0000060C - ldrsh r0, [r1, r0] - add r0, r7, r0 - lsl r0, r0, #0x10 - asr r1, r0, #0x10 - lsr r0, r2, #0x10 - lsl r0, r0, #0x10 - lsr r0, r0, #0x10 - lsl r1, r1, #0x10 - lsl r0, r0, #0x10 - lsr r1, r1, #0x10 - orr r0, r1 - stmia r5!, {r0} - add r0, r3, #0x1 - mov r1, #0xc0 - bl _s32_div_f - lsl r0, r1, #0x18 - lsr r3, r0, #0x18 - ldr r0, _02012C8C ; =0x0000078D - add r4, r4, #0x1 - ldrb r0, [r6, r0] - cmp r4, r0 - ble _02012C12 -_02012C4C: - ldr r1, _02012C80 ; =0x00000798 - add r0, r1, #0x2 - ldrsh r2, [r6, r1] - ldrsh r0, [r6, r0] - add r4, r6, r1 - add r0, r2, r0 - strh r0, [r4, #0x0] - ldrsh r0, [r6, r1] - mov r1, #0x4b - lsl r1, r1, #0x8 - cmp r0, r1 - blt _02012C70 - mov r0, #0x0 - ldrsh r0, [r4, r0] - bl _s32_div_f - strh r1, [r4, #0x0] - pop {r3-r7, pc} -_02012C70: - cmp r0, #0x0 - bge _02012C7C - mov r0, #0x0 - ldrsh r0, [r4, r0] - add r0, r0, r1 - strh r0, [r4, #0x0] -_02012C7C: - pop {r3-r7, pc} - nop -_02012C80: .word 0x00000798 -_02012C84: .word 0x0000078C -_02012C88: .word 0x0000060C -_02012C8C: .word 0x0000078D - - thumb_func_start FUN_02012C90 -FUN_02012C90: ; 0x02012C90 - ldr r3, _02012C94 ; =FUN_020129C8 - bx r3 - .balign 4 -_02012C94: .word FUN_020129C8 - - thumb_func_start FUN_02012C98 -FUN_02012C98: ; 0x02012C98 - push {r3-r5, lr} - add r4, r0, #0x0 - bne _02012CA2 - bl ErrorHandling -_02012CA2: - mov r0, #0x6 - lsl r0, r0, #0x8 - ldr r0, [r4, r0] - bl FUN_0201299C - mov r1, #0x3 - lsl r1, r1, #0x8 - add r5, r0, #0x0 - bl DC_FlushRange - mov r1, #0x79 - lsl r1, r1, #0x4 - ldr r1, [r4, r1] - add r0, r5, #0x0 - mov r2, #0x4 - mov r3, #0x1 - bl FUN_020129D8 - pop {r3-r5, pc} diff --git a/arm9/asm/unk_02012004.s b/arm9/asm/unk_02012004.s new file mode 100644 index 00000000..8c38ae93 --- /dev/null +++ b/arm9/asm/unk_02012004.s @@ -0,0 +1,787 @@ + .include "asm/macros.inc" + .include "global.inc" + + .rodata + + .global UNK_020ED3B0 +UNK_020ED3B0: ; 0x020ED3B0 + .word 0x00000147 + .word 0x000001EF + + .global UNK_020ED3B8 +UNK_020ED3B8: ; 0x020ED3B8 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00 + + .global UNK_020ED3C8 +UNK_020ED3C8: ; 0x020ED3C8 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00 + + .global UNK_020ED3D8 +UNK_020ED3D8: ; 0x020ED3D8 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00 + .byte 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00 + .byte 0x08, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 + .byte 0x04, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 + .byte 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 + + .global UNK_020ED438 +UNK_020ED438: ; 0x020ED438 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00 + .byte 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00 + .byte 0x08, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 + .byte 0x04, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 + .byte 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 + + .text + + thumb_func_start FUN_02012004 +FUN_02012004: ; 0x02012004 + push {r3-r7, lr} + sub sp, #0x8 + str r0, [sp, #0x0] + ldr r0, [sp, #0x24] + ldr r6, [sp, #0x20] + str r1, [sp, #0x4] + add r5, r2, #0x0 + add r4, r3, #0x0 + str r0, [sp, #0x24] + mov r7, #0x0 +_02012018: + ldr r1, [r4, #0x0] + ldr r0, [sp, #0x4] + ldr r2, [r5, #0x0] + add r0, r0, r1 + ldr r1, [sp, #0x0] + add r1, r1, r2 + add r2, r6, #0x0 + bl memcpy + ldr r1, [r5, #0x0] + ldr r0, [sp, #0x24] + add r7, r7, #0x1 + add r0, r1, r0 + str r0, [r5, #0x0] + ldr r0, [r4, #0x0] + add r0, r0, r6 + str r0, [r4, #0x0] + cmp r7, #0x8 + blt _02012018 + add sp, #0x8 + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_02012044 +FUN_02012044: ; 0x02012044 + push {r4-r6, lr} + add r5, r3, #0x0 + bl AllocAndReadWholeNarcMemberByIdPair + add r4, r0, #0x0 + bne _02012054 + bl GF_AssertFail +_02012054: + add r0, r4, #0x0 + add r1, r5, #0x0 + bl NNS_G2dGetUnpackedCharacterData + add r6, r0, #0x0 + cmp r5, #0x0 + bne _02012066 + bl GF_AssertFail +_02012066: + cmp r6, #0x0 + bne _0201206E + bl GF_AssertFail +_0201206E: + add r0, r4, #0x0 + bl FreeToHeap + pop {r4-r6, pc} + .balign 4 + + thumb_func_start FUN_02012078 +FUN_02012078: ; 0x02012078 + push {r4-r7, lr} + sub sp, #0x2c + ldr r4, [sp, #0x40] + str r0, [sp, #0x8] + add r6, r0, r2 + ldrh r0, [r4, #0x2] + str r1, [sp, #0xc] + add r5, r3, #0x0 + cmp r0, r6 + bge _02012090 + bl GF_AssertFail +_02012090: + ldr r0, [sp, #0xc] + ldrh r1, [r4, #0x0] + add r0, r0, r5 + str r0, [sp, #0x14] + cmp r1, r0 + bge _020120A0 + bl GF_AssertFail +_020120A0: + ldr r0, [r4, #0x14] + str r0, [sp, #0x20] + ldr r0, [sp, #0x44] + str r0, [sp, #0x1c] + ldrh r0, [r4, #0x2] + lsl r7, r0, #0x2 + ldr r0, [sp, #0xc] + add r1, r0, #0x0 + mul r1, r7 + ldr r0, [sp, #0x8] + str r1, [sp, #0x18] + lsl r1, r0, #0x2 + ldr r0, [sp, #0x18] + str r1, [sp, #0x10] + add r0, r1, r0 + str r0, [sp, #0x28] + mov r0, #0x0 + str r0, [sp, #0x24] + ldr r1, [sp, #0xc] + ldr r0, [sp, #0x14] + cmp r1, r0 + bge _0201210A +_020120CC: + ldr r4, [sp, #0x8] + add r0, r4, #0x0 + cmp r0, r6 + bge _020120F8 + ldr r0, [sp, #0x18] + lsl r1, r0, #0x3 + ldr r0, [sp, #0x10] + add r5, r0, r1 +_020120DC: + str r5, [sp, #0x28] + mov r0, #0x4 + str r0, [sp, #0x0] + ldr r0, [sp, #0x20] + ldr r1, [sp, #0x1c] + add r2, sp, #0x28 + add r3, sp, #0x24 + str r7, [sp, #0x4] + bl FUN_02012004 + add r4, r4, #0x1 + add r5, r5, #0x4 + cmp r4, r6 + blt _020120DC +_020120F8: + ldr r0, [sp, #0x18] + add r0, r0, r7 + str r0, [sp, #0x18] + ldr r0, [sp, #0xc] + add r1, r0, #0x1 + ldr r0, [sp, #0x14] + str r1, [sp, #0xc] + cmp r1, r0 + blt _020120CC +_0201210A: + add sp, #0x2c + pop {r4-r7, pc} + .balign 4 + + thumb_func_start FUN_02012110 +FUN_02012110: ; 0x02012110 + push {r4-r5} + sub sp, #0x8 + ldr r2, _02012148 ; =UNK_020ED3B0 + add r1, sp, #0x0 + ldr r3, [r2, #0x0] + ldr r2, [r2, #0x4] + str r3, [sp, #0x0] + str r2, [sp, #0x4] + ldr r2, _0201214C ; =0x000001EF + mov r5, #0x0 + add r3, r2, #0x0 +_02012126: + ldr r4, [r1, #0x0] + cmp r4, r3 + beq _02012140 + cmp r4, r0 + bne _02012138 + add sp, #0x8 + mov r0, #0x1 + pop {r4-r5} + bx lr +_02012138: + add r5, r5, #0x1 + add r1, r1, #0x4 + cmp r5, r2 + blt _02012126 +_02012140: + mov r0, #0x0 + add sp, #0x8 + pop {r4-r5} + bx lr + .balign 4 +_02012148: .word UNK_020ED3B0 +_0201214C: .word 0x000001EF + + thumb_func_start FUN_02012150 +FUN_02012150: ; 0x02012150 + push {r3-r4, lr} + sub sp, #0xc + add r4, r3, #0x0 + mov r3, #0x0 + str r3, [sp, #0x8] + add r3, sp, #0x8 + bl FUN_02012044 + ldr r0, [sp, #0x8] + ldr r0, [r0, #0x14] + bl FUN_02008A74 + ldr r0, [sp, #0x34] + bl FUN_02012110 + ldr r1, [sp, #0x30] + cmp r1, #0x2 + bne _02012184 + cmp r0, #0x1 + bne _02012184 + ldr r0, [sp, #0x8] + ldr r1, [sp, #0x28] + ldr r0, [r0, #0x14] + ldr r2, [sp, #0x2c] + bl FUN_02008904 +_02012184: + ldr r0, [sp, #0x8] + ldr r1, [sp, #0x18] + str r0, [sp, #0x0] + ldr r0, [sp, #0x24] + ldr r2, [sp, #0x1c] + str r0, [sp, #0x4] + ldr r3, [sp, #0x20] + add r0, r4, #0x0 + bl FUN_02012078 + add sp, #0xc + pop {r3-r4, pc} + + thumb_func_start FUN_0201219C +FUN_0201219C: ; 0x0201219C + push {r4-r7, lr} + sub sp, #0x24 + add r7, r1, #0x0 + add r5, r2, #0x0 + ldr r2, [sp, #0x3c] + ldr r1, [sp, #0x40] + add r6, r0, #0x0 + mul r1, r2 + add r0, r5, #0x0 + lsl r1, r1, #0x5 + str r3, [sp, #0x20] + bl AllocFromHeap + add r4, r0, #0x0 + ldr r0, [sp, #0x38] + ldr r3, [sp, #0x20] + str r0, [sp, #0x0] + ldr r0, [sp, #0x3c] + add r1, r7, #0x0 + str r0, [sp, #0x4] + ldr r0, [sp, #0x40] + add r2, r5, #0x0 + str r0, [sp, #0x8] + ldr r0, [sp, #0x44] + str r4, [sp, #0xc] + str r0, [sp, #0x10] + ldr r0, [sp, #0x48] + str r0, [sp, #0x14] + ldr r0, [sp, #0x4c] + str r0, [sp, #0x18] + ldr r0, [sp, #0x50] + str r0, [sp, #0x1c] + add r0, r6, #0x0 + bl FUN_02012150 + add r0, r4, #0x0 + add sp, #0x24 + pop {r4-r7, pc} + + thumb_func_start FUN_020121E8 +FUN_020121E8: ; 0x020121E8 + push {r3-r7, lr} + sub sp, #0x30 + str r3, [sp, #0x8] + ldr r3, [sp, #0x48] + str r3, [sp, #0x48] + mov r3, #0x0 + str r3, [sp, #0x2c] + bl AllocAndReadWholeNarcMemberByIdPair + str r0, [sp, #0x20] + cmp r0, #0x0 + bne _02012204 + bl GF_AssertFail +_02012204: + ldr r0, [sp, #0x20] + add r1, sp, #0x2c + bl NNS_G2dGetUnpackedCharacterData + cmp r0, #0x0 + bne _02012214 + bl GF_AssertFail +_02012214: + ldr r1, [sp, #0x4c] + ldr r0, [sp, #0x8] + add r6, r0, r1 + ldr r0, [sp, #0x2c] + ldrh r0, [r0, #0x2] + cmp r0, r6 + bge _02012226 + bl GF_AssertFail +_02012226: + ldr r1, [sp, #0x50] + ldr r0, [sp, #0x48] + add r0, r0, r1 + str r0, [sp, #0x10] + ldr r0, [sp, #0x2c] + ldrh r1, [r0, #0x0] + ldr r0, [sp, #0x10] + cmp r1, r0 + bge _0201223C + bl GF_AssertFail +_0201223C: + ldr r0, [sp, #0x2c] + ldr r0, [r0, #0x14] + str r0, [sp, #0x1c] + bl FUN_02008A74 + ldr r0, [sp, #0x54] + str r0, [sp, #0x18] + ldr r0, [sp, #0x2c] + ldrh r0, [r0, #0x2] + lsl r7, r0, #0x2 + ldr r0, [sp, #0x48] + add r1, r0, #0x0 + mul r1, r7 + ldr r0, [sp, #0x8] + str r1, [sp, #0x14] + lsl r1, r0, #0x2 + ldr r0, [sp, #0x14] + str r1, [sp, #0xc] + add r0, r1, r0 + str r0, [sp, #0x28] + mov r0, #0x0 + str r0, [sp, #0x24] + ldr r1, [sp, #0x48] + ldr r0, [sp, #0x10] + cmp r1, r0 + bge _020122AE +_02012270: + ldr r4, [sp, #0x8] + add r0, r4, #0x0 + cmp r0, r6 + bge _0201229C + ldr r0, [sp, #0x14] + lsl r1, r0, #0x3 + ldr r0, [sp, #0xc] + add r5, r0, r1 +_02012280: + str r5, [sp, #0x28] + mov r0, #0x4 + str r0, [sp, #0x0] + ldr r0, [sp, #0x1c] + ldr r1, [sp, #0x18] + add r2, sp, #0x28 + add r3, sp, #0x24 + str r7, [sp, #0x4] + bl FUN_02012004 + add r4, r4, #0x1 + add r5, r5, #0x4 + cmp r4, r6 + blt _02012280 +_0201229C: + ldr r0, [sp, #0x14] + add r0, r0, r7 + str r0, [sp, #0x14] + ldr r0, [sp, #0x48] + add r1, r0, #0x1 + ldr r0, [sp, #0x10] + str r1, [sp, #0x48] + cmp r1, r0 + blt _02012270 +_020122AE: + ldr r0, [sp, #0x20] + bl FreeToHeap + add sp, #0x30 + pop {r3-r7, pc} + + thumb_func_start FUN_020122B8 +FUN_020122B8: ; 0x020122B8 + push {r4-r7, lr} + sub sp, #0x14 + add r7, r1, #0x0 + add r5, r2, #0x0 + ldr r2, [sp, #0x2c] + ldr r1, [sp, #0x30] + add r6, r0, #0x0 + mul r1, r2 + add r0, r5, #0x0 + lsl r1, r1, #0x5 + str r3, [sp, #0x10] + bl AllocFromHeap + add r4, r0, #0x0 + ldr r0, [sp, #0x28] + ldr r3, [sp, #0x10] + str r0, [sp, #0x0] + ldr r0, [sp, #0x2c] + add r1, r7, #0x0 + str r0, [sp, #0x4] + ldr r0, [sp, #0x30] + add r2, r5, #0x0 + str r0, [sp, #0x8] + add r0, r6, #0x0 + str r4, [sp, #0xc] + bl FUN_020121E8 + add r0, r4, #0x0 + add sp, #0x14 + pop {r4-r7, pc} + + thumb_func_start FUN_020122F4 +FUN_020122F4: ; 0x020122F4 + push {r3-r7, lr} + sub sp, #0x20 + str r0, [sp, #0x0] + ldr r0, [sp, #0x44] + ldr r1, [sp, #0x38] + str r0, [sp, #0x18] + ldr r0, [sp, #0x48] + str r2, [sp, #0x4] + str r0, [sp, #0x14] + add r0, r2, #0x0 + add r7, r0, r1 + ldr r1, [sp, #0x3c] + add r0, r3, #0x0 + add r0, r0, r1 + add r1, r3, #0x0 + str r3, [sp, #0x8] + ldr r5, [sp, #0x40] + str r0, [sp, #0x10] + cmp r1, r0 + bge _0201236C + add r0, r3, #0x0 + lsl r0, r0, #0x5 + str r0, [sp, #0xc] + add r0, r2, #0x0 + lsl r0, r0, #0x5 + str r0, [sp, #0x1c] +_02012328: + ldr r6, [sp, #0x4] + add r0, r6, #0x0 + cmp r0, r7 + bge _0201235A + ldr r1, [sp, #0x0] + ldr r0, [sp, #0xc] + add r2, r1, #0x0 + mul r2, r0 + ldr r0, [sp, #0x1c] + add r4, r0, r2 +_0201233C: + ldr r1, [r5, #0x0] + ldr r0, [sp, #0x14] + mov r2, #0x20 + add r0, r0, r1 + ldr r1, [sp, #0x18] + add r1, r1, r4 + bl memcpy + ldr r0, [r5, #0x0] + add r6, r6, #0x1 + add r0, #0x20 + str r0, [r5, #0x0] + add r4, #0x20 + cmp r6, r7 + blt _0201233C +_0201235A: + ldr r0, [sp, #0xc] + add r0, #0x20 + str r0, [sp, #0xc] + ldr r0, [sp, #0x8] + add r1, r0, #0x1 + ldr r0, [sp, #0x10] + str r1, [sp, #0x8] + cmp r1, r0 + blt _02012328 +_0201236C: + add sp, #0x20 + pop {r3-r7, pc} + + thumb_func_start FUN_02012370 +FUN_02012370: ; 0x02012370 + push {r3-r4, lr} + sub sp, #0x14 + add r4, r2, #0x0 + ldr r2, [r4, #0x8] + str r2, [sp, #0x0] + ldr r2, [r4, #0xc] + str r2, [sp, #0x4] + ldr r2, [sp, #0x20] + str r3, [sp, #0x8] + str r2, [sp, #0xc] + ldr r2, [sp, #0x24] + str r2, [sp, #0x10] + ldr r2, [r4, #0x0] + ldr r3, [r4, #0x4] + bl FUN_020122F4 + add sp, #0x14 + pop {r3-r4, pc} + + thumb_func_start FUN_02012394 +FUN_02012394: ; 0x02012394 + push {r4-r7, lr} + sub sp, #0x7c + str r0, [sp, #0xc] + ldr r0, [sp, #0x9c] + mov r12, r3 + add r5, r2, #0x0 + ldr r6, [sp, #0x94] + ldr r7, [sp, #0x98] + ldr r3, _020123FC ; =UNK_020ED3D8 + str r1, [sp, #0x10] + str r0, [sp, #0x9c] + add r2, sp, #0x1c + mov r4, #0xc +_020123AE: + ldmia r3!, {r0-r1} + stmia r2!, {r0-r1} + sub r4, r4, #0x1 + bne _020123AE + mov r0, #0x0 + str r0, [sp, #0x18] + ldr r0, [sp, #0x90] + ldr r1, [sp, #0x10] + str r0, [sp, #0x0] + str r6, [sp, #0x4] + ldr r0, [sp, #0xc] + add r2, r5, #0x0 + mov r3, r12 + str r7, [sp, #0x8] + bl FUN_020122B8 + str r0, [sp, #0x14] + mov r4, #0x0 + add r5, sp, #0x1c +_020123D4: + ldr r0, [sp, #0x14] + add r1, r7, #0x0 + str r0, [sp, #0x0] + ldr r0, [sp, #0x9c] + add r2, r5, #0x0 + str r0, [sp, #0x4] + add r0, r6, #0x0 + add r3, sp, #0x18 + bl FUN_02012370 + add r4, r4, #0x1 + add r5, #0x10 + cmp r4, #0x6 + blt _020123D4 + ldr r0, [sp, #0x14] + bl FreeToHeap + add sp, #0x7c + pop {r4-r7, pc} + nop +_020123FC: .word UNK_020ED3D8 + + thumb_func_start FUN_02012400 +FUN_02012400: ; 0x02012400 + push {r4, lr} + sub sp, #0x10 + ldr r4, [r3, #0x4] + str r4, [sp, #0x0] + ldr r4, [r3, #0x8] + str r4, [sp, #0x4] + ldr r4, [r3, #0xc] + str r4, [sp, #0x8] + ldr r4, [sp, #0x18] + str r4, [sp, #0xc] + ldr r3, [r3, #0x0] + bl FUN_02012394 + add sp, #0x10 + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_02012420 +FUN_02012420: ; 0x02012420 + push {r4-r7, lr} + sub sp, #0x14 + ldr r4, _02012448 ; =UNK_020ED3B8 + add r5, r3, #0x0 + add r3, sp, #0x4 + add r7, r0, #0x0 + mov r12, r1 + add r6, r3, #0x0 + ldmia r4!, {r0-r1} + stmia r3!, {r0-r1} + ldmia r4!, {r0-r1} + stmia r3!, {r0-r1} + add r0, r7, #0x0 + mov r1, r12 + add r3, r6, #0x0 + str r5, [sp, #0x0] + bl FUN_02012400 + add sp, #0x14 + pop {r4-r7, pc} + .balign 4 +_02012448: .word UNK_020ED3B8 + + thumb_func_start FUN_0201244C +FUN_0201244C: ; 0x0201244C + push {r3-r7, lr} + add r6, r1, #0x0 + mov r1, #0x32 + add r7, r2, #0x0 + add r5, r0, #0x0 + add r0, r7, #0x0 + lsl r1, r1, #0x6 + bl AllocFromHeap + add r4, r0, #0x0 + add r0, r5, #0x0 + add r1, r6, #0x0 + add r2, r7, #0x0 + add r3, r4, #0x0 + bl FUN_02012420 + add r0, r4, #0x0 + pop {r3-r7, pc} + + thumb_func_start FUN_02012470 +FUN_02012470: ; 0x02012470 + push {r3-r7, lr} + add r7, r2, #0x0 + add r5, r0, #0x0 + add r6, r1, #0x0 + add r0, r7, #0x0 + mov r1, #0x20 + bl AllocFromHeap + add r4, r0, #0x0 + add r0, r5, #0x0 + add r1, r6, #0x0 + add r2, r7, #0x0 + bl AllocAndReadWholeNarcMemberByIdPair + add r1, sp, #0x0 + add r5, r0, #0x0 + bl NNS_G2dGetUnpackedPaletteData + cmp r0, #0x1 + beq _0201249C + bl GF_AssertFail +_0201249C: + ldr r0, [sp, #0x0] + add r1, r4, #0x0 + ldr r0, [r0, #0xc] + mov r2, #0x20 + bl MIi_CpuCopy16 + add r0, r5, #0x0 + bl FreeToHeap + add r0, r4, #0x0 + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_020124B4 +FUN_020124B4: ; 0x020124B4 + push {r4-r7, lr} + sub sp, #0x8c + str r0, [sp, #0x1c] + ldr r0, [sp, #0xac] + mov r12, r3 + add r5, r2, #0x0 + ldr r6, [sp, #0xa4] + ldr r7, [sp, #0xa8] + ldr r3, _0201252C ; =UNK_020ED438 + str r1, [sp, #0x20] + str r0, [sp, #0xac] + add r2, sp, #0x2c + mov r4, #0xc +_020124CE: + ldmia r3!, {r0-r1} + stmia r2!, {r0-r1} + sub r4, r4, #0x1 + bne _020124CE + mov r0, #0x0 + str r0, [sp, #0x28] + ldr r0, [sp, #0xa0] + ldr r1, [sp, #0x20] + str r0, [sp, #0x0] + str r6, [sp, #0x4] + ldr r0, [sp, #0xb0] + str r7, [sp, #0x8] + str r0, [sp, #0xc] + ldr r0, [sp, #0xb4] + add r2, r5, #0x0 + str r0, [sp, #0x10] + ldr r0, [sp, #0xb8] + mov r3, r12 + str r0, [sp, #0x14] + ldr r0, [sp, #0xbc] + str r0, [sp, #0x18] + ldr r0, [sp, #0x1c] + bl FUN_0201219C + str r0, [sp, #0x24] + mov r4, #0x0 + add r5, sp, #0x2c +_02012504: + ldr r0, [sp, #0x24] + add r1, r7, #0x0 + str r0, [sp, #0x0] + ldr r0, [sp, #0xac] + add r2, r5, #0x0 + str r0, [sp, #0x4] + add r0, r6, #0x0 + add r3, sp, #0x28 + bl FUN_02012370 + add r4, r4, #0x1 + add r5, #0x10 + cmp r4, #0x6 + blt _02012504 + ldr r0, [sp, #0x24] + bl FreeToHeap + add sp, #0x8c + pop {r4-r7, pc} + nop +_0201252C: .word UNK_020ED438 + + thumb_func_start FUN_02012530 +FUN_02012530: ; 0x02012530 + push {r4, lr} + sub sp, #0x20 + ldr r4, [r3, #0x4] + str r4, [sp, #0x0] + ldr r4, [r3, #0x8] + str r4, [sp, #0x4] + ldr r4, [r3, #0xc] + str r4, [sp, #0x8] + ldr r4, [sp, #0x28] + str r4, [sp, #0xc] + ldr r4, [sp, #0x2c] + str r4, [sp, #0x10] + ldr r4, [sp, #0x30] + str r4, [sp, #0x14] + ldr r4, [sp, #0x34] + str r4, [sp, #0x18] + ldr r4, [sp, #0x38] + str r4, [sp, #0x1c] + ldr r3, [r3, #0x0] + bl FUN_020124B4 + add sp, #0x20 + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_02012560 +FUN_02012560: ; 0x02012560 + push {r4-r7, lr} + sub sp, #0x24 + ldr r4, _02012598 ; =UNK_020ED3C8 + add r5, r3, #0x0 + add r3, sp, #0x14 + add r7, r0, #0x0 + mov r12, r1 + add r6, r3, #0x0 + ldmia r4!, {r0-r1} + stmia r3!, {r0-r1} + ldmia r4!, {r0-r1} + stmia r3!, {r0-r1} + ldr r0, [sp, #0x38] + str r5, [sp, #0x0] + str r0, [sp, #0x4] + ldr r0, [sp, #0x3c] + mov r1, r12 + str r0, [sp, #0x8] + ldr r0, [sp, #0x40] + add r3, r6, #0x0 + str r0, [sp, #0xc] + ldr r0, [sp, #0x44] + str r0, [sp, #0x10] + add r0, r7, #0x0 + bl FUN_02012530 + add sp, #0x24 + pop {r4-r7, pc} + .balign 4 +_02012598: .word UNK_020ED3C8 diff --git a/arm9/asm/unk_02012944.s b/arm9/asm/unk_02012944.s new file mode 100644 index 00000000..8b3029f2 --- /dev/null +++ b/arm9/asm/unk_02012944.s @@ -0,0 +1,471 @@ + .include "asm/macros.inc" + .include "global.inc" + + .text + + thumb_func_start FUN_02012944 +FUN_02012944: ; 0x02012944 + push {r3-r5, lr} + add r5, r1, #0x0 + mov r1, #0xc + add r4, r2, #0x0 + bl AllocFromHeap + mov r1, #0x0 + strb r1, [r0, #0x0] + strb r1, [r0, #0x1] + strb r1, [r0, #0x2] + strb r1, [r0, #0x3] + strb r1, [r0, #0x4] + strb r1, [r0, #0x5] + strb r1, [r0, #0x6] + strb r1, [r0, #0x7] + strb r1, [r0, #0x8] + strb r1, [r0, #0x9] + strb r1, [r0, #0xa] + strb r1, [r0, #0xb] + mov r1, #0x1 + strb r1, [r0, #0x9] + str r5, [r0, #0x0] + str r4, [r0, #0x4] + pop {r3-r5, pc} + + thumb_func_start FUN_02012974 +FUN_02012974: ; 0x02012974 + push {r4, lr} + add r4, r0, #0x0 + bne _0201297E + bl GF_AssertFail +_0201297E: + add r0, r4, #0x0 + bl FreeToHeap + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_02012988 +FUN_02012988: ; 0x02012988 + push {r4, lr} + add r4, r0, #0x0 + bne _02012992 + bl GF_AssertFail +_02012992: + ldrb r0, [r4, #0x8] + lsl r0, r0, #0x2 + ldr r0, [r4, r0] + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_0201299C +FUN_0201299C: ; 0x0201299C + push {r4, lr} + add r4, r0, #0x0 + bne _020129A6 + bl GF_AssertFail +_020129A6: + ldrb r1, [r4, #0x8] + mov r0, #0x1 + eor r0, r1 + lsl r0, r0, #0x2 + ldr r0, [r4, r0] + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_020129B4 +FUN_020129B4: ; 0x020129B4 + cmp r0, #0x0 + beq _020129C6 + ldrb r1, [r0, #0x9] + cmp r1, #0x0 + beq _020129C6 + ldrb r2, [r0, #0x8] + mov r1, #0x1 + eor r1, r2 + strb r1, [r0, #0x8] +_020129C6: + bx lr + + thumb_func_start FUN_020129C8 +FUN_020129C8: ; 0x020129C8 + push {r3, lr} + mov r0, #0x0 + bl MI_StopDma + mov r0, #0x0 + bl MI_WaitDma + pop {r3, pc} + + thumb_func_start FUN_020129D8 +FUN_020129D8: ; 0x020129D8 + push {r4-r6, lr} + add r6, r0, #0x0 + add r5, r1, #0x0 + add r4, r2, #0x0 + cmp r3, #0x1 + bne _020129F2 + mov r0, #0x0 + add r1, r6, #0x0 + add r2, r5, #0x0 + add r3, r4, #0x0 + bl MI_HBlankDmaCopy32 + pop {r4-r6, pc} +_020129F2: + mov r0, #0x0 + add r1, r6, #0x0 + add r2, r5, #0x0 + add r3, r4, #0x0 + bl MI_HBlankDmaCopy16 + pop {r4-r6, pc} + + thumb_func_start FUN_02012A00 +FUN_02012A00: ; 0x02012A00 + push {r3-r5, lr} + ldr r1, _02012A2C ; =0x0000079C + add r5, r0, #0x0 + bl AllocFromHeap + ldr r2, _02012A2C ; =0x0000079C + mov r1, #0x0 + add r4, r0, #0x0 + bl memset + mov r2, #0x3 + lsl r2, r2, #0x8 + add r0, r5, #0x0 + add r1, r4, #0x0 + add r2, r4, r2 + bl FUN_02012944 + mov r1, #0x6 + lsl r1, r1, #0x8 + str r0, [r4, r1] + add r0, r4, #0x0 + pop {r3-r5, pc} + .balign 4 +_02012A2C: .word 0x0000079C + + thumb_func_start FUN_02012A30 +FUN_02012A30: ; 0x02012A30 + push {r3-r7, lr} + add r5, r0, #0x0 + add r4, r1, #0x0 + add r6, r2, #0x0 + add r7, r3, #0x0 + cmp r5, #0x0 + bne _02012A42 + bl GF_AssertFail +_02012A42: + ldr r0, _02012AB0 ; =0x00000604 + ldr r0, [r5, r0] + cmp r0, #0x0 + beq _02012A4E + bl GF_AssertFail +_02012A4E: + ldr r0, _02012AB4 ; =0x0000078C + mov r2, #0x0 + strb r4, [r5, r0] + add r1, r0, #0x1 + strb r6, [r5, r1] + add r1, r0, #0x0 + add r1, #0xc + strh r2, [r5, r1] + add r2, sp, #0x8 + mov r1, #0x14 + ldrsh r2, [r2, r1] + add r1, r0, #0x0 + add r1, #0xe + strh r2, [r5, r1] + add r1, r0, #0x4 + ldr r2, [sp, #0x20] + add r0, #0x8 + str r2, [r5, r1] + ldr r1, [sp, #0x24] + ldr r3, [sp, #0x18] + str r1, [r5, r0] + ldr r0, _02012AB8 ; =0x0000060C + mov r1, #0xc0 + add r0, r5, r0 + add r2, r7, #0x0 + bl FUN_02012B88 + ldr r0, _02012ABC ; =FUN_02012BE4 + ldr r2, [sp, #0x28] + add r1, r5, #0x0 + bl FUN_0200CA44 + ldr r1, _02012AB0 ; =0x00000604 + mov r2, #0x3 + str r0, [r5, r1] + ldr r0, _02012AC0 ; =0x00000794 + add r1, r5, #0x0 + ldr r0, [r5, r0] + lsl r2, r2, #0x8 + bl MIi_CpuClear32 + ldr r0, _02012AC0 ; =0x00000794 + mov r2, #0x3 + lsl r2, r2, #0x8 + ldr r0, [r5, r0] + add r1, r5, r2 + bl MIi_CpuClear32 + pop {r3-r7, pc} + .balign 4 +_02012AB0: .word 0x00000604 +_02012AB4: .word 0x0000078C +_02012AB8: .word 0x0000060C +_02012ABC: .word FUN_02012BE4 +_02012AC0: .word 0x00000794 + + thumb_func_start FUN_02012AC4 +FUN_02012AC4: ; 0x02012AC4 + push {r4, lr} + add r4, r0, #0x0 + bne _02012ACE + bl GF_AssertFail +_02012ACE: + ldr r0, _02012AF8 ; =0x00000604 + ldr r0, [r4, r0] + cmp r0, #0x0 + beq _02012AF4 + bl FUN_0200CAB4 + ldr r0, _02012AF8 ; =0x00000604 + mov r1, #0x0 + str r1, [r4, r0] + sub r0, r0, #0x4 + ldr r0, [r4, r0] + bl FUN_02012988 + ldr r1, _02012AFC ; =0x00000794 + mov r2, #0x3 + ldr r1, [r4, r1] + lsl r2, r2, #0x8 + bl memset +_02012AF4: + pop {r4, pc} + nop +_02012AF8: .word 0x00000604 +_02012AFC: .word 0x00000794 + + thumb_func_start FUN_02012B00 +FUN_02012B00: ; 0x02012B00 + push {r4, lr} + add r4, r0, #0x0 + bl FUN_02012AC4 + bl FUN_02012C90 + mov r0, #0x6 + lsl r0, r0, #0x8 + ldr r0, [r4, r0] + bl FUN_02012974 + add r0, r4, #0x0 + bl FreeToHeap + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_02012B20 +FUN_02012B20: ; 0x02012B20 + mov r1, #0x6 + lsl r1, r1, #0x8 + ldr r3, _02012B2C ; =FUN_02012988 + ldr r0, [r0, r1] + bx r3 + nop +_02012B2C: .word FUN_02012988 + + thumb_func_start FUN_02012B30 +FUN_02012B30: ; 0x02012B30 + push {r4, lr} + add r4, r0, #0x0 + beq _02012B5E + ldr r0, _02012B60 ; =0x00000604 + ldr r1, [r4, r0] + cmp r1, #0x0 + beq _02012B5E + sub r0, r0, #0x4 + ldr r0, [r4, r0] + bl FUN_020129B4 + mov r0, #0x6 + lsl r0, r0, #0x8 + ldr r0, [r4, r0] + bl FUN_02012988 + add r1, r0, #0x0 + ldr r0, _02012B64 ; =0x00000794 + mov r2, #0x3 + ldr r0, [r4, r0] + lsl r2, r2, #0x8 + bl MIi_CpuClear32 +_02012B5E: + pop {r4, pc} + .balign 4 +_02012B60: .word 0x00000604 +_02012B64: .word 0x00000794 + + thumb_func_start FUN_02012B68 +FUN_02012B68: ; 0x02012B68 + push {r4, lr} + add r4, r0, #0x0 + beq _02012B80 + ldr r0, _02012B84 ; =0x00000604 + ldr r0, [r4, r0] + cmp r0, #0x0 + beq _02012B80 + bl FUN_02012C90 + add r0, r4, #0x0 + bl FUN_02012C98 +_02012B80: + pop {r4, pc} + nop +_02012B84: .word 0x00000604 + + thumb_func_start FUN_02012B88 +FUN_02012B88: ; 0x02012B88 + push {r4-r7, lr} + sub sp, #0xc + mov r4, #0x0 + add r7, r1, #0x0 + add r5, r0, #0x0 + add r6, r4, #0x0 + str r2, [sp, #0x0] + cmp r7, #0x0 + bls _02012BD6 + asr r0, r3, #0x1f + str r3, [sp, #0x4] + str r0, [sp, #0x8] +_02012BA0: + asr r0, r4, #0x4 + lsl r1, r0, #0x2 + ldr r0, _02012BDC ; =FX_SinCosTable_ + ldr r2, [sp, #0x4] + ldrsh r0, [r0, r1] + ldr r3, [sp, #0x8] + asr r1, r0, #0x1f + bl _ll_mul + mov r2, #0x2 + lsl r2, r2, #0xa + add r0, r0, r2 + ldr r2, _02012BE0 ; =0x00000000 + adc r1, r2 + lsl r1, r1, #0x14 + lsr r0, r0, #0xc + orr r0, r1 + asr r0, r0, #0xc + strh r0, [r5, #0x0] + ldr r0, [sp, #0x0] + add r6, r6, #0x1 + add r0, r4, r0 + lsl r0, r0, #0x10 + lsr r4, r0, #0x10 + add r5, r5, #0x2 + cmp r6, r7 + blo _02012BA0 +_02012BD6: + add sp, #0xc + pop {r4-r7, pc} + nop +_02012BDC: .word FX_SinCosTable_ +_02012BE0: .word 0x00000000 + + thumb_func_start FUN_02012BE4 +FUN_02012BE4: ; 0x02012BE4 + push {r3-r7, lr} + mov r0, #0x6 + add r6, r1, #0x0 + lsl r0, r0, #0x8 + ldr r0, [r6, r0] + bl FUN_02012988 + add r5, r0, #0x0 + ldr r0, _02012C80 ; =0x00000798 + mov r1, #0x64 + ldrsh r0, [r6, r0] + bl _s32_div_f + lsl r0, r0, #0x18 + lsr r3, r0, #0x18 + ldr r0, _02012C84 ; =0x0000078C + ldrb r4, [r6, r0] + add r0, r0, #0x1 + ldrb r0, [r6, r0] + cmp r4, r0 + bgt _02012C4C + lsl r0, r4, #0x2 + add r5, r5, r0 +_02012C12: + ldr r2, [r5, #0x0] + lsl r0, r2, #0x10 + asr r7, r0, #0x10 + lsl r0, r3, #0x1 + add r1, r6, r0 + ldr r0, _02012C88 ; =0x0000060C + ldrsh r0, [r1, r0] + add r0, r7, r0 + lsl r0, r0, #0x10 + asr r1, r0, #0x10 + lsr r0, r2, #0x10 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + lsl r1, r1, #0x10 + lsl r0, r0, #0x10 + lsr r1, r1, #0x10 + orr r0, r1 + stmia r5!, {r0} + add r0, r3, #0x1 + mov r1, #0xc0 + bl _s32_div_f + lsl r0, r1, #0x18 + lsr r3, r0, #0x18 + ldr r0, _02012C8C ; =0x0000078D + add r4, r4, #0x1 + ldrb r0, [r6, r0] + cmp r4, r0 + ble _02012C12 +_02012C4C: + ldr r1, _02012C80 ; =0x00000798 + add r0, r1, #0x2 + ldrsh r2, [r6, r1] + ldrsh r0, [r6, r0] + add r4, r6, r1 + add r0, r2, r0 + strh r0, [r4, #0x0] + ldrsh r0, [r6, r1] + mov r1, #0x4b + lsl r1, r1, #0x8 + cmp r0, r1 + blt _02012C70 + mov r0, #0x0 + ldrsh r0, [r4, r0] + bl _s32_div_f + strh r1, [r4, #0x0] + pop {r3-r7, pc} +_02012C70: + cmp r0, #0x0 + bge _02012C7C + mov r0, #0x0 + ldrsh r0, [r4, r0] + add r0, r0, r1 + strh r0, [r4, #0x0] +_02012C7C: + pop {r3-r7, pc} + nop +_02012C80: .word 0x00000798 +_02012C84: .word 0x0000078C +_02012C88: .word 0x0000060C +_02012C8C: .word 0x0000078D + + thumb_func_start FUN_02012C90 +FUN_02012C90: ; 0x02012C90 + ldr r3, _02012C94 ; =FUN_020129C8 + bx r3 + .balign 4 +_02012C94: .word FUN_020129C8 + + thumb_func_start FUN_02012C98 +FUN_02012C98: ; 0x02012C98 + push {r3-r5, lr} + add r4, r0, #0x0 + bne _02012CA2 + bl GF_AssertFail +_02012CA2: + mov r0, #0x6 + lsl r0, r0, #0x8 + ldr r0, [r4, r0] + bl FUN_0201299C + mov r1, #0x3 + lsl r1, r1, #0x8 + add r5, r0, #0x0 + bl DC_FlushRange + mov r1, #0x79 + lsl r1, r1, #0x4 + ldr r1, [r4, r1] + add r0, r5, #0x0 + mov r2, #0x4 + mov r3, #0x1 + bl FUN_020129D8 + pop {r3-r5, pc} diff --git a/arm9/asm/unk_02012CC8.s b/arm9/asm/unk_02012CC8.s index b77e441c..5f0f01c6 100644 --- a/arm9/asm/unk_02012CC8.s +++ b/arm9/asm/unk_02012CC8.s @@ -1,7 +1,7 @@ .include "asm/macros.inc" .include "global.inc" - .extern UNK_021CED64 + .extern NNS_G3dGlb .section .rodata @@ -96,7 +96,7 @@ _02012D04: bl AllocFromHeap add r4, r0, #0x0 bne _02012D14 - bl ErrorHandling + bl GF_AssertFail _02012D14: add r0, r4, #0x0 mov r1, #0x0 @@ -205,7 +205,7 @@ FUN_02012DE4: ; 0x02012DE4 beq _02012E02 add r0, r5, #0x0 add r0, #0x58 - bl FUN_020AE8CC + bl NNS_GfdSetFrmTexVramState b _02012E22 _02012E02: mov r0, #0x2 @@ -218,7 +218,7 @@ _02012E0E: ldr r0, [r4, #0x58] cmp r0, #0x0 beq _02012E1A - bl FUN_020AF894 + bl NNS_GfdFreeLnkTexVram str r7, [r4, #0x58] _02012E1A: add r6, r6, #0x1 @@ -234,7 +234,7 @@ _02012E22: beq _02012E38 add r0, r5, #0x0 add r0, #0x98 - bl FUN_020AEC7C + bl NNS_GfdSetFrmPlttVramState b _02012E60 _02012E38: mov r0, #0x8 @@ -249,7 +249,7 @@ _02012E44: ldr r0, [r0, #0x0] cmp r0, #0x0 beq _02012E58 - bl FUN_020AFA80 + bl NNS_GfdFreeLnkPlttVram add r0, r4, #0x0 add r0, #0x98 str r7, [r0, #0x0] @@ -337,7 +337,7 @@ _02012EE4: ldr r1, [r1, #0x14] cmp r0, r1 blo _02012EF0 - bl ErrorHandling + bl GF_AssertFail _02012EF0: add r0, r4, #0x0 pop {r4, pc} @@ -363,7 +363,7 @@ _02012F10: ldr r1, [r1, #0x14] cmp r0, r1 blo _02012F1C - bl ErrorHandling + bl GF_AssertFail _02012F1C: add r0, r4, #0x0 pop {r4, pc} @@ -389,7 +389,7 @@ _02012F3C: ldr r1, [r1, #0x14] cmp r0, r1 blo _02012F48 - bl ErrorHandling + bl GF_AssertFail _02012F48: add r0, r4, #0x0 pop {r4, pc} @@ -415,7 +415,7 @@ _02012F68: ldr r1, [r1, #0x14] cmp r0, r1 blo _02012F74 - bl ErrorHandling + bl GF_AssertFail _02012F74: add r0, r4, #0x0 pop {r4, pc} @@ -441,7 +441,7 @@ _02012F94: ldr r1, [r1, #0x14] cmp r0, r1 blo _02012FA0 - bl ErrorHandling + bl GF_AssertFail _02012FA0: add r0, r4, #0x0 pop {r4, pc} @@ -467,7 +467,7 @@ _02012FC0: ldr r1, [r1, #0x14] cmp r0, r1 blo _02012FCC - bl ErrorHandling + bl GF_AssertFail _02012FCC: add r0, r4, #0x0 pop {r4, pc} @@ -493,7 +493,7 @@ _02012FEC: ldr r1, [r1, #0x14] cmp r0, r1 blo _02012FF8 - bl ErrorHandling + bl GF_AssertFail _02012FF8: add r0, r4, #0x0 pop {r4, pc} @@ -519,7 +519,7 @@ _02013018: ldr r1, [r1, #0x14] cmp r0, r1 blo _02013024 - bl ErrorHandling + bl GF_AssertFail _02013024: add r0, r4, #0x0 pop {r4, pc} @@ -545,7 +545,7 @@ _02013044: ldr r1, [r1, #0x14] cmp r0, r1 blo _02013050 - bl ErrorHandling + bl GF_AssertFail _02013050: add r0, r4, #0x0 pop {r4, pc} @@ -571,7 +571,7 @@ _02013070: ldr r1, [r1, #0x14] cmp r0, r1 blo _0201307C - bl ErrorHandling + bl GF_AssertFail _0201307C: add r0, r4, #0x0 pop {r4, pc} @@ -597,7 +597,7 @@ _0201309C: ldr r1, [r1, #0x14] cmp r0, r1 blo _020130A8 - bl ErrorHandling + bl GF_AssertFail _020130A8: add r0, r4, #0x0 pop {r4, pc} @@ -623,7 +623,7 @@ _020130C8: ldr r1, [r1, #0x14] cmp r0, r1 blo _020130D4 - bl ErrorHandling + bl GF_AssertFail _020130D4: add r0, r4, #0x0 pop {r4, pc} @@ -649,7 +649,7 @@ _020130F4: ldr r1, [r1, #0x14] cmp r0, r1 blo _02013100 - bl ErrorHandling + bl GF_AssertFail _02013100: add r0, r4, #0x0 pop {r4, pc} @@ -675,7 +675,7 @@ _02013120: ldr r1, [r1, #0x14] cmp r0, r1 blo _0201312C - bl ErrorHandling + bl GF_AssertFail _0201312C: add r0, r4, #0x0 pop {r4, pc} @@ -701,7 +701,7 @@ _0201314C: ldr r1, [r1, #0x14] cmp r0, r1 blo _02013158 - bl ErrorHandling + bl GF_AssertFail _02013158: add r0, r4, #0x0 pop {r4, pc} @@ -727,7 +727,7 @@ _02013178: ldr r1, [r1, #0x14] cmp r0, r1 blo _02013184 - bl ErrorHandling + bl GF_AssertFail _02013184: add r0, r4, #0x0 pop {r4, pc} @@ -751,12 +751,12 @@ FUN_02013194: ; 0x02013194 add r7, r3, #0x0 cmp r0, #0x0 bne _020131A8 - bl ErrorHandling + bl GF_AssertFail _020131A8: ldr r0, [r5, #0x4] cmp r0, #0x0 beq _020131B2 - bl ErrorHandling + bl GF_AssertFail _020131B2: add r0, r5, #0x0 add r0, #0xd8 @@ -766,7 +766,7 @@ _020131B2: beq _020131C8 add r0, r5, #0x0 add r0, #0x58 - bl FUN_020AE918 + bl NNS_GfdGetFrmTexVramState b _020131DE _020131C8: mov r0, #0x2 @@ -787,7 +787,7 @@ _020131DE: beq _020131EE add r0, r5, #0x0 add r0, #0x98 - bl FUN_020AEC98 + bl NNS_GfdGetFrmPlttVramState b _02013208 _020131EE: mov r0, #0x8 @@ -870,13 +870,13 @@ FUN_0201327C: ; 0x0201327C push {r4, lr} add r4, r0, #0x0 bne _02013286 - bl ErrorHandling + bl GF_AssertFail _02013286: ldr r0, _020132B8 ; =UNK_021C4850 ldr r0, [r0, #0x0] cmp r0, #0x0 bne _02013292 - bl ErrorHandling + bl GF_AssertFail _02013292: ldr r0, _020132B8 ; =UNK_021C4850 mov r1, #0x0 @@ -895,7 +895,7 @@ _020132A8: add r2, r2, #0x4 cmp r1, #0x10 blt _0201329A - bl ErrorHandling + bl GF_AssertFail pop {r4, pc} nop _020132B8: .word UNK_021C4850 @@ -905,13 +905,13 @@ FUN_020132BC: ; 0x020132BC push {r4, lr} add r4, r0, #0x0 bne _020132C6 - bl ErrorHandling + bl GF_AssertFail _020132C6: ldr r0, _020132FC ; =UNK_021C4850 ldr r0, [r0, #0x0] cmp r0, #0x0 bne _020132D2 - bl ErrorHandling + bl GF_AssertFail _020132D2: ldr r0, _020132FC ; =UNK_021C4850 mov r1, #0x0 @@ -933,7 +933,7 @@ _020132EE: add r2, r2, #0x4 cmp r1, #0x10 blt _020132DA - bl ErrorHandling + bl GF_AssertFail pop {r4, pc} .balign 4 _020132FC: .word UNK_021C4850 @@ -952,19 +952,19 @@ FUN_02013300: ; 0x02013300 bl FUN_0201EB8C bl FUN_0201EBA4 _0201331C: - bl FUN_020B849C + bl NNS_G3dGlbFlushP ldr r0, [r4, #0x0] - ldr r1, _02013338 ; =UNK_021CED64 + ldr r1, _02013338 ; =NNS_G3dGlb + 0x4C bl FUN_0208AD80 ldr r0, [r4, #0x20] cmp r0, #0x0 beq _02013332 bl FUN_0201EB98 _02013332: - bl FUN_020B849C + bl NNS_G3dGlbFlushP pop {r4, pc} .balign 4 -_02013338: .word UNK_021CED64 +_02013338: .word NNS_G3dGlb + 0x4C thumb_func_start FUN_0201333C FUN_0201333C: ; 0x0201333C @@ -1488,8 +1488,8 @@ _02013688: strh r0, [r4, #0x0] pop {r4, pc} - thumb_func_start FUN_02013690 -FUN_02013690: ; 0x02013690 + thumb_func_start ListMenuCursorNew +ListMenuCursorNew: ; 0x02013690 push {r3-r5, lr} mov r1, #0x8 add r5, r0, #0x0 @@ -1511,12 +1511,12 @@ _020136B2: _020136B8: .word 0x0001020F _020136BC: .word UNK_020ED548 - thumb_func_start FUN_020136C0 -FUN_020136C0: ; 0x020136C0 + thumb_func_start DestroyListMenuCursorObj +DestroyListMenuCursorObj: ; 0x020136C0 push {r4, lr} add r4, r0, #0x0 bne _020136CA - bl ErrorHandling + bl GF_AssertFail _020136CA: cmp r4, #0x0 beq _020136DE @@ -1530,14 +1530,14 @@ _020136D8: _020136DE: pop {r4, pc} - thumb_func_start FUN_020136E0 -FUN_020136E0: ; 0x020136E0 + thumb_func_start ListMenuCursorSetColor +ListMenuCursorSetColor: ; 0x020136E0 push {r3-r5, lr} add r5, r0, #0x0 add r4, r1, #0x0 cmp r5, #0x0 bne _020136EE - bl ErrorHandling + bl GF_AssertFail _020136EE: cmp r5, #0x0 beq _020136F4 @@ -1546,8 +1546,8 @@ _020136F4: pop {r3-r5, pc} .balign 4 - thumb_func_start FUN_020136F8 -FUN_020136F8: ; 0x020136F8 + thumb_func_start ListMenuUpdateCursorObj +ListMenuUpdateCursorObj: ; 0x020136F8 push {r4-r6, lr} sub sp, #0x10 add r6, r0, #0x0 diff --git a/arm9/asm/unk_02013CD4.s b/arm9/asm/unk_02013CD4.s index 7f278032..8b846678 100644 --- a/arm9/asm/unk_02013CD4.s +++ b/arm9/asm/unk_02013CD4.s @@ -1,11 +1,11 @@ .include "asm/macros.inc" .include "global.inc" - .extern UNK_021064C0 - .extern UNK_020FFA38 - .extern UNK_021064B8 - .extern UNK_021064C4 - .extern UNK_021064BC + .extern NNS_GfdDefaultFuncAllocPlttVram + .extern FX_SinCosTable_ + .extern NNS_GfdDefaultFuncAllocTexVram + .extern NNS_GfdDefaultFuncFreePlttVram + .extern NNS_GfdDefaultFuncFreeTexVram .text @@ -18,7 +18,7 @@ FUN_02013CD4: ; 0x02013CD4 bl AllocFromHeap add r4, r0, #0x0 bne _02013CE8 - bl ErrorHandling + bl GF_AssertFail _02013CE8: ldr r0, [r5, #0x0] ldr r1, [r5, #0xc] @@ -47,22 +47,22 @@ FUN_02013D18: ; 0x02013D18 push {r4, lr} add r4, r0, #0x0 bne _02013D22 - bl ErrorHandling + bl GF_AssertFail _02013D22: ldr r0, [r4, #0x0] cmp r0, #0x0 bne _02013D2C - bl ErrorHandling + bl GF_AssertFail _02013D2C: ldr r0, [r4, #0x8] cmp r0, #0x0 bne _02013D36 - bl ErrorHandling + bl GF_AssertFail _02013D36: ldr r0, [r4, #0x10] cmp r0, #0x0 bne _02013D40 - bl ErrorHandling + bl GF_AssertFail _02013D40: ldr r0, [r4, #0x0] bl FreeToHeap @@ -116,20 +116,20 @@ FUN_02013D98: ; 0x02013D98 bl FUN_02014024 add r4, r0, #0x0 bne _02013DAA - bl ErrorHandling + bl GF_AssertFail _02013DAA: ldr r0, [r5, #0x4] ldr r0, [r0, #0x8] cmp r0, #0x0 beq _02013DB6 - bl ErrorHandling + bl GF_AssertFail _02013DB6: ldr r0, [r5, #0x4] bl FUN_0201407C str r0, [r4, #0x0] cmp r0, #0x0 bne _02013DC6 - bl ErrorHandling + bl GF_AssertFail _02013DC6: ldr r0, [r5, #0x4] ldr r1, [r4, #0x0] @@ -141,7 +141,7 @@ _02013DC6: thumb_func_start FUN_02013DD4 FUN_02013DD4: ; 0x02013DD4 push {r4, lr} - ldr r1, _02013DE8 ; =UNK_021064BC + ldr r1, _02013DE8 ; =NNS_GfdDefaultFuncFreeTexVram add r4, r0, #0x0 ldr r0, [r4, #0x0] ldr r1, [r1, #0x0] @@ -150,7 +150,7 @@ FUN_02013DD4: ; 0x02013DD4 bl FUN_02013F50 pop {r4, pc} .balign 4 -_02013DE8: .word UNK_021064BC +_02013DE8: .word NNS_GfdDefaultFuncFreeTexVram thumb_func_start FUN_02013DEC FUN_02013DEC: ; 0x02013DEC @@ -185,14 +185,14 @@ FUN_02013E14: ; 0x02013E14 bl FUN_02014050 add r4, r0, #0x0 bne _02013E26 - bl ErrorHandling + bl GF_AssertFail _02013E26: ldr r0, [r5, #0x8] bl FUN_02014090 str r0, [r4, #0x0] cmp r0, #0x0 bne _02013E36 - bl ErrorHandling + bl GF_AssertFail _02013E36: ldr r0, [r5, #0x4] ldr r1, [r4, #0x0] @@ -204,7 +204,7 @@ _02013E36: thumb_func_start FUN_02013E44 FUN_02013E44: ; 0x02013E44 push {r4, lr} - ldr r1, _02013E58 ; =UNK_021064C4 + ldr r1, _02013E58 ; =NNS_GfdDefaultFuncFreePlttVram add r4, r0, #0x0 ldr r0, [r4, #0x0] ldr r1, [r1, #0x0] @@ -213,7 +213,7 @@ FUN_02013E44: ; 0x02013E44 bl FUN_02013F5C pop {r4, pc} .balign 4 -_02013E58: .word UNK_021064C4 +_02013E58: .word NNS_GfdDefaultFuncFreePlttVram thumb_func_start FUN_02013E5C FUN_02013E5C: ; 0x02013E5C @@ -248,7 +248,7 @@ FUN_02013E84: ; 0x02013E84 bl FUN_02013FF8 add r4, r0, #0x0 bne _02013E96 - bl ErrorHandling + bl GF_AssertFail _02013E96: add r0, r4, #0x0 add r1, r5, #0x0 @@ -273,7 +273,7 @@ FUN_02013EB0: ; 0x02013EB0 add r4, r1, #0x0 cmp r5, #0x0 bne _02013EBE - bl ErrorHandling + bl GF_AssertFail _02013EBE: str r4, [r5, #0x20] pop {r3-r5, pc} @@ -401,21 +401,21 @@ _02013F4C: .word 0x00007FFF thumb_func_start FUN_02013F50 FUN_02013F50: ; 0x02013F50 - ldr r3, _02013F58 ; =FUN_020B1A24 + ldr r3, _02013F58 ; =NNS_G2dInitImageProxy mov r1, #0x0 stmia r0!, {r1} bx r3 .balign 4 -_02013F58: .word FUN_020B1A24 +_02013F58: .word NNS_G2dInitImageProxy thumb_func_start FUN_02013F5C FUN_02013F5C: ; 0x02013F5C - ldr r3, _02013F64 ; =FUN_020B19DC + ldr r3, _02013F64 ; =NNS_G2dInitImagePaletteProxy mov r1, #0x0 stmia r0!, {r1} bx r3 .balign 4 -_02013F64: .word FUN_020B19DC +_02013F64: .word NNS_G2dInitImagePaletteProxy thumb_func_start FUN_02013F68 FUN_02013F68: ; 0x02013F68 @@ -426,7 +426,7 @@ FUN_02013F68: ; 0x02013F68 bl AllocFromHeap add r7, r0, #0x0 bne _02013F7C - bl ErrorHandling + bl GF_AssertFail _02013F7C: mov r4, #0x0 cmp r6, #0x0 @@ -454,7 +454,7 @@ FUN_02013F98: ; 0x02013F98 bl AllocFromHeap add r7, r0, #0x0 bne _02013FAE - bl ErrorHandling + bl GF_AssertFail _02013FAE: mov r4, #0x0 cmp r6, #0x0 @@ -481,7 +481,7 @@ FUN_02013FC8: ; 0x02013FC8 bl AllocFromHeap add r7, r0, #0x0 bne _02013FDE - bl ErrorHandling + bl GF_AssertFail _02013FDE: mov r4, #0x0 cmp r6, #0x0 @@ -585,7 +585,7 @@ _02014076: thumb_func_start FUN_0201407C FUN_0201407C: ; 0x0201407C push {r3, lr} - ldr r3, _0201408C ; =UNK_021064B8 + ldr r3, _0201408C ; =NNS_GfdDefaultFuncAllocTexVram mov r1, #0x0 ldr r0, [r0, #0x10] ldr r3, [r3, #0x0] @@ -593,12 +593,12 @@ FUN_0201407C: ; 0x0201407C blx r3 pop {r3, pc} .balign 4 -_0201408C: .word UNK_021064B8 +_0201408C: .word NNS_GfdDefaultFuncAllocTexVram thumb_func_start FUN_02014090 FUN_02014090: ; 0x02014090 push {r3, lr} - ldr r3, _020140A0 ; =UNK_021064C0 + ldr r3, _020140A0 ; =NNS_GfdDefaultFuncAllocPlttVram mov r1, #0x0 ldr r3, [r3, #0x0] lsl r0, r0, #0x5 @@ -606,7 +606,7 @@ FUN_02014090: ; 0x02014090 blx r3 pop {r3, pc} .balign 4 -_020140A0: .word UNK_021064C0 +_020140A0: .word NNS_GfdDefaultFuncAllocPlttVram thumb_func_start FUN_020140A4 FUN_020140A4: ; 0x020140A4 @@ -615,7 +615,7 @@ FUN_020140A4: ; 0x020140A4 add r3, r2, #0x0 lsr r1, r1, #0xd mov r2, #0x0 - bl FUN_020B1528 + bl NNS_G2dLoadImage2DMapping pop {r3, pc} thumb_func_start FUN_020140B4 @@ -632,7 +632,7 @@ FUN_020140B4: ; 0x020140B4 str r2, [r5, #0x8] lsr r1, r1, #0xd mov r2, #0x0 - bl FUN_020B1240 + bl NNS_G2dLoadPalette str r4, [r5, #0x8] pop {r3-r5, pc} .balign 4 @@ -741,7 +741,7 @@ _02014172: str r1, [r3, #0x0] str r2, [r3, #0x0] ldr r0, [r5, #0x18] - ldr r1, _0201420C ; =UNK_020FFA38 + ldr r1, _0201420C ; =FX_SinCosTable_ asr r0, r0, #0x4 lsl r2, r0, #0x1 lsl r0, r2, #0x1 @@ -781,7 +781,7 @@ _02014172: str r4, [sp, #0x10] ldrsh r3, [r5, r3] add r1, r0, #0x0 - bl FUN_020B0250 + bl NNS_G2dDrawSpriteFast ldr r0, _02014214 ; =0x04000448 mov r1, #0x1 str r1, [r0, #0x0] @@ -793,7 +793,7 @@ _020141FC: .word 0x7FFF8000 _02014200: .word 0x00004210 _02014204: .word 0x040004AC _02014208: .word 0x04000470 -_0201420C: .word UNK_020FFA38 +_0201420C: .word FX_SinCosTable_ _02014210: .word 0x0400046C _02014214: .word 0x04000448 @@ -868,14 +868,14 @@ _0201424C: ldr r0, [r5, #0x4] mov r1, #0x0 add r0, r0, #0x4 - bl FUN_020B1A14 + bl NNS_G2dGetImageLocation add r1, r0, #0x0 add r0, r7, #0x0 bl FUN_02013F14 ldr r0, [r5, #0x8] mov r1, #0x0 add r0, r0, #0x4 - bl FUN_020B19C4 + bl NNS_G2dGetImagePaletteLocation add r1, r0, #0x0 add r0, r7, #0x0 bl FUN_02013F18 diff --git a/arm9/asm/unk_02014590.s b/arm9/asm/unk_02014590.s index ae4eadbd..189206a3 100644 --- a/arm9/asm/unk_02014590.s +++ b/arm9/asm/unk_02014590.s @@ -129,7 +129,7 @@ FUN_0201466C: ; 0x0201466C lsr r0, r0, #0x1c cmp r0, #0x1 beq _02014680 - bl ErrorHandling + bl GF_AssertFail _02014680: add r0, r4, #0x0 add r0, #0x9a @@ -471,7 +471,7 @@ _020148EA: ldr r0, [r5, #0x8] ldr r1, [r7, #0xc] add r3, r6, #0x0 - bl FUN_02006BDC + bl GfGfxLoader_GetScrnData str r0, [r4, #0x8] ldr r0, [r4, #0x18] ldr r1, [r5, #0x1c] @@ -672,7 +672,7 @@ _02014A58: add r0, r7, #0x0 mov r2, #0x1 add r3, r4, #0x4 - bl FUN_02006BB0 + bl GfGfxLoader_GetCharData str r0, [r4, #0x8] str r5, [r4, #0x0] ldr r0, [sp, #0x20] @@ -710,7 +710,7 @@ _02014AA6: ldr r3, [sp, #0x1c] add r0, r7, #0x0 add r2, r4, #0x0 - bl FUN_02006C08 + bl GfGfxLoader_GetPlttData str r0, [r4, #0x4] str r5, [r4, #0x8] ldr r0, [sp, #0x18] diff --git a/arm9/asm/unk_02014BF4.s b/arm9/asm/unk_02014BF4.s index 20e8fa45..566b8514 100644 --- a/arm9/asm/unk_02014BF4.s +++ b/arm9/asm/unk_02014BF4.s @@ -1,7 +1,7 @@ .include "asm/macros.inc" .include "global.inc" - .extern UNK_020FFA38 + .extern FX_SinCosTable_ .section .rodata @@ -116,7 +116,7 @@ FUN_02014C3C: ; 0x02014C3C add r4, r0, #0x0 cmp r4, #0x19 blo _02014C48 - bl ErrorHandling + bl GF_AssertFail _02014C48: ldr r0, _02014C50 ; =UNK_020ED64C ldrb r0, [r0, r4] @@ -140,7 +140,7 @@ FUN_02014C54: ; 0x02014C54 str r2, [sp, #0x0] cmp r0, r1 blo _02014C74 - bl ErrorHandling + bl GF_AssertFail _02014C74: ldr r0, [sp, #0x4] mov r1, #0x1d @@ -152,7 +152,7 @@ _02014C74: ldr r0, [r0, #0x10] cmp r0, #0x0 beq _02014C8C - bl ErrorHandling + bl GF_AssertFail _02014C8C: ldr r0, [r5, #0x0] mov r2, #0x1d @@ -280,7 +280,7 @@ FUN_02014D7C: ; 0x02014D7C add r4, r1, #0x0 cmp r4, r0 blo _02014D8C - bl ErrorHandling + bl GF_AssertFail _02014D8C: mov r0, #0x1d lsl r0, r0, #0x4 @@ -440,7 +440,7 @@ _02014EA0: ldr r0, [r0, #0x0] cmp r0, #0x22 blo _02014EB2 - bl ErrorHandling + bl GF_AssertFail _02014EB2: ldr r1, [r5, #0xc] add r0, r5, #0x0 @@ -472,7 +472,7 @@ _02014EE6: lsl r0, r0, #0x8 cmp r1, r0 blt _02014EA0 - bl ErrorHandling + bl GF_AssertFail mov r0, #0x1 str r0, [r5, #0x1c] _02014EF8: @@ -489,7 +489,7 @@ FUN_02014F08: ; 0x02014F08 ldr r4, [r0, r1] cmp r2, #0x1 beq _02014F16 - bl ErrorHandling + bl GF_AssertFail _02014F16: add r0, r4, #0x0 pop {r4, pc} @@ -546,7 +546,7 @@ _02014F68: lsr r3, r1, #0x18 cmp r3, #0x4 blo _02014F3E - bl ErrorHandling + bl GF_AssertFail mov r0, #0x0 pop {r3-r5, pc} nop @@ -589,7 +589,7 @@ FUN_02014FA8: ; 0x02014FA8 ldrb r0, [r4, #0x0] cmp r0, #0x8 blo _02014FC4 - bl ErrorHandling + bl GF_AssertFail _02014FC4: pop {r4, pc} .balign 4 @@ -658,7 +658,7 @@ _0201501C: str r0, [r6, #0x0] pop {r3-r6, pc} _02015048: - bl ErrorHandling + bl GF_AssertFail add sp, #0x4 pop {r3-r6, pc} @@ -700,7 +700,7 @@ _02015082: str r0, [r4, #0x0] b _020150A2 _0201509E: - bl ErrorHandling + bl GF_AssertFail _020150A2: add r0, sp, #0x0 ldrb r0, [r0, #0x0] @@ -727,7 +727,7 @@ _020150B6: str r0, [r6, #0x0] pop {r3-r6, pc} _020150D4: - bl ErrorHandling + bl GF_AssertFail add sp, #0x4 pop {r3-r6, pc} @@ -772,7 +772,7 @@ _02015112: str r0, [r6, #0x0] b _02015132 _0201512E: - bl ErrorHandling + bl GF_AssertFail _02015132: add r0, r5, #0x0 add r1, sp, #0x0 @@ -800,7 +800,7 @@ _0201514C: str r0, [sp, #0x4] b _0201516C _02015168: - bl ErrorHandling + bl GF_AssertFail _0201516C: ldr r0, [sp, #0x4] add r0, r7, r0 @@ -1071,7 +1071,7 @@ _02015334: str r0, [sp, #0x8] b _02015362 _0201535E: - bl ErrorHandling + bl GF_AssertFail _02015362: add r1, sp, #0x0 add r0, r5, #0x0 @@ -1081,7 +1081,7 @@ _02015362: ldrb r0, [r0, #0x1] cmp r0, #0x11 bls _02015378 - bl ErrorHandling + bl GF_AssertFail _02015378: add r0, sp, #0xc add r1, sp, #0x8 @@ -1119,7 +1119,7 @@ _020153A6: str r0, [sp, #0x4] b _020153CA _020153C6: - bl ErrorHandling + bl GF_AssertFail _020153CA: add r0, sp, #0x0 ldrb r1, [r0, #0x1] @@ -1160,7 +1160,7 @@ FUN_02015404: ; 0x02015404 ldr r0, [r4, #0x50] cmp r0, #0x0 beq _02015412 - bl ErrorHandling + bl GF_AssertFail _02015412: ldr r0, [r4, #0xc] add r0, r0, #0x4 @@ -1269,7 +1269,7 @@ _020154C4: str r0, [sp, #0x4] b _020154E4 _020154E0: - bl ErrorHandling + bl GF_AssertFail _020154E4: add r0, r4, #0x0 add r1, sp, #0x0 @@ -1294,7 +1294,7 @@ _02015502: add sp, #0xc pop {r3-r4, pc} _02015514: - bl ErrorHandling + bl GF_AssertFail add sp, #0xc pop {r3-r4, pc} @@ -1311,7 +1311,7 @@ FUN_0201551C: ; 0x0201551C ldr r2, [sp, #0x4] asr r0, r0, #0x4 lsl r1, r0, #0x2 - ldr r0, _0201554C ; =UNK_020FFA38 + ldr r0, _0201554C ; =FX_SinCosTable_ ldrsh r0, [r0, r1] mul r0, r2 asr r1, r0, #0xc @@ -1323,7 +1323,7 @@ FUN_0201551C: ; 0x0201551C add sp, #0xc pop {r3-r4, pc} nop -_0201554C: .word UNK_020FFA38 +_0201554C: .word FX_SinCosTable_ thumb_func_start FUN_02015550 FUN_02015550: ; 0x02015550 @@ -1340,7 +1340,7 @@ FUN_02015550: ; 0x02015550 lsl r1, r1, #0x1 add r1, r1, #0x1 lsl r2, r1, #0x1 - ldr r1, _02015584 ; =UNK_020FFA38 + ldr r1, _02015584 ; =FX_SinCosTable_ ldrsh r1, [r1, r2] mul r1, r0 add r0, sp, #0x0 @@ -1352,7 +1352,7 @@ FUN_02015550: ; 0x02015550 add sp, #0xc pop {r3-r4, pc} nop -_02015584: .word UNK_020FFA38 +_02015584: .word FX_SinCosTable_ thumb_func_start FUN_02015588 FUN_02015588: ; 0x02015588 @@ -1387,7 +1387,7 @@ _020155B4: str r0, [r4, #0x64] pop {r3-r4, pc} _020155C6: - bl ErrorHandling + bl GF_AssertFail add sp, #0x4 pop {r3-r4, pc} .balign 4 @@ -1429,7 +1429,7 @@ _02015600: str r0, [r4, #0x64] pop {r3-r4, pc} _02015616: - bl ErrorHandling + bl GF_AssertFail add sp, #0x4 pop {r3-r4, pc} .balign 4 @@ -1486,7 +1486,7 @@ _0201566E: add r4, #0x78 b _0201567C _02015678: - bl ErrorHandling + bl GF_AssertFail _0201567C: add r1, sp, #0x0 add r0, r5, #0x0 @@ -1515,7 +1515,7 @@ _02015698: str r0, [sp, #0x4] b _020156B8 _020156B4: - bl ErrorHandling + bl GF_AssertFail _020156B8: add r0, r5, #0x0 add r1, sp, #0x0 @@ -1538,7 +1538,7 @@ _020156D0: str r0, [r4, #0x0] pop {r3-r5, pc} _020156E0: - bl ErrorHandling + bl GF_AssertFail add sp, #0x8 pop {r3-r5, pc} @@ -1626,7 +1626,7 @@ _02015778: _0201578A: cmp r0, #0x1c beq _02015792 - bl ErrorHandling + bl GF_AssertFail _02015792: pop {r4, pc} .balign 4 @@ -1673,7 +1673,7 @@ _020157D2: str r0, [r4, #0x6c] pop {r3-r4, pc} _020157E2: - bl ErrorHandling + bl GF_AssertFail add sp, #0x4 pop {r3-r4, pc} .balign 4 @@ -1771,7 +1771,7 @@ _02015886: _02015890: cmp r1, #0x0 bne _02015898 - bl ErrorHandling + bl GF_AssertFail _02015898: pop {r4, pc} nop @@ -1842,7 +1842,7 @@ _020158F6: str r0, [r3, #0x0] pop {r3, pc} _02015904: - bl ErrorHandling + bl GF_AssertFail pop {r3, pc} .balign 4 @@ -1915,7 +1915,7 @@ _02015972: str r0, [r1, #0x30] pop {r3, pc} _02015984: - bl ErrorHandling + bl GF_AssertFail pop {r3, pc} .balign 4 @@ -2032,7 +2032,7 @@ _02015A5C: ; jump table (using 16-bit offset) _02015A64: asr r0, r1, #0x4 lsl r1, r0, #0x2 - ldr r0, _02015AE8 ; =UNK_020FFA38 + ldr r0, _02015AE8 ; =FX_SinCosTable_ ldr r2, [r4, #0xc] ldrsh r0, [r0, r1] mul r0, r2 @@ -2045,7 +2045,7 @@ _02015A78: lsl r1, r1, #0x1 add r1, r1, #0x1 lsl r2, r1, #0x1 - ldr r1, _02015AE8 ; =UNK_020FFA38 + ldr r1, _02015AE8 ; =FX_SinCosTable_ ldr r0, [r4, #0xc] ldrsh r1, [r1, r2] mul r1, r0 @@ -2056,7 +2056,7 @@ _02015A78: _02015A90: asr r0, r1, #0x4 lsl r1, r0, #0x2 - ldr r0, _02015AE8 ; =UNK_020FFA38 + ldr r0, _02015AE8 ; =FX_SinCosTable_ ldr r2, [r4, #0xc] ldrsh r0, [r0, r1] mul r0, r2 @@ -2070,7 +2070,7 @@ _02015AA6: lsl r1, r1, #0x1 add r1, r1, #0x1 lsl r2, r1, #0x1 - ldr r1, _02015AE8 ; =UNK_020FFA38 + ldr r1, _02015AE8 ; =FX_SinCosTable_ ldr r0, [r4, #0xc] ldrsh r1, [r1, r2] mul r1, r0 @@ -2080,7 +2080,7 @@ _02015AA6: str r1, [r0, #0x0] b _02015AC4 _02015AC0: - bl ErrorHandling + bl GF_AssertFail _02015AC4: add r0, r4, #0x0 add r0, #0x2c @@ -2101,7 +2101,7 @@ _02015AC4: _02015AE6: pop {r4, pc} .balign 4 -_02015AE8: .word UNK_020FFA38 +_02015AE8: .word FX_SinCosTable_ thumb_func_start FUN_02015AEC FUN_02015AEC: ; 0x02015AEC @@ -2135,7 +2135,7 @@ _02015B1A: ; jump table (using 16-bit offset) _02015B22: asr r0, r1, #0x4 lsl r1, r0, #0x2 - ldr r0, _02015BA8 ; =UNK_020FFA38 + ldr r0, _02015BA8 ; =FX_SinCosTable_ ldr r2, [r4, #0xc] ldrsh r0, [r0, r1] mul r0, r2 @@ -2148,7 +2148,7 @@ _02015B36: lsl r1, r1, #0x1 add r1, r1, #0x1 lsl r2, r1, #0x1 - ldr r1, _02015BA8 ; =UNK_020FFA38 + ldr r1, _02015BA8 ; =FX_SinCosTable_ ldr r0, [r4, #0xc] ldrsh r1, [r1, r2] mul r1, r0 @@ -2159,7 +2159,7 @@ _02015B36: _02015B4E: asr r0, r1, #0x4 lsl r1, r0, #0x2 - ldr r0, _02015BA8 ; =UNK_020FFA38 + ldr r0, _02015BA8 ; =FX_SinCosTable_ ldr r2, [r4, #0xc] ldrsh r0, [r0, r1] mul r0, r2 @@ -2173,7 +2173,7 @@ _02015B64: lsl r1, r1, #0x1 add r1, r1, #0x1 lsl r2, r1, #0x1 - ldr r1, _02015BA8 ; =UNK_020FFA38 + ldr r1, _02015BA8 ; =FX_SinCosTable_ ldr r0, [r4, #0xc] ldrsh r1, [r1, r2] mul r1, r0 @@ -2183,7 +2183,7 @@ _02015B64: str r1, [r0, #0x0] b _02015B82 _02015B7E: - bl ErrorHandling + bl GF_AssertFail _02015B82: add r0, r4, #0x0 add r0, #0x2c @@ -2204,7 +2204,7 @@ _02015B82: _02015BA4: pop {r4, pc} nop -_02015BA8: .word UNK_020FFA38 +_02015BA8: .word FX_SinCosTable_ thumb_func_start FUN_02015BAC FUN_02015BAC: ; 0x02015BAC @@ -2340,7 +2340,7 @@ _02015C90: str r0, [r4, #0x0] b _02015CA4 _02015CA0: - bl ErrorHandling + bl GF_AssertFail _02015CA4: add r0, r4, #0x0 add r0, #0x2c diff --git a/arm9/asm/unk_02016B94.s b/arm9/asm/unk_02016B94.s deleted file mode 100644 index 3c92650d..00000000 --- a/arm9/asm/unk_02016B94.s +++ /dev/null @@ -1,9653 +0,0 @@ - .include "asm/macros.inc" - .include "global.inc" - - .section .rodata - - .global UNK_020EDB30 -UNK_020EDB30: ; 0x020EDB30 - .byte 0x10, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00 - - .global UNK_020EDB38 -UNK_020EDB38: ; 0x020EDB38 - .word FUN_020192D4 - .word FUN_02019358 - .word FUN_020192D4 - - .global UNK_020EDB44 -UNK_020EDB44: ; 0x020EDB44 - .word FUN_020195D0 - .word FUN_0201960C - .word FUN_020195D0 - - .global UNK_020EDB50 -UNK_020EDB50: ; 0x020EDB50 - .word FUN_020195A8 - .word FUN_020195E4 - .word FUN_020195A8 - - .global UNK_020EDB5C -UNK_020EDB5C: ; 0x020EDB5C - .word FUN_020194C8 - .word FUN_0201951C - .word FUN_020194C8 - - .global UNK_020EDB68 -UNK_020EDB68: ; 0x020EDB68 - .word FUN_0201949C - .word FUN_020194E0 - .word FUN_0201949C - - .global UNK_020EDB74 -UNK_020EDB74: ; 0x020EDB74 - .word FUN_020193B4 - .word FUN_02019444 - .word FUN_020193B4 - - .text - - thumb_func_start FUN_02016B94 -FUN_02016B94: ; 0x02016B94 - push {r3-r5, lr} - mov r1, #0x5a - lsl r1, r1, #0x2 - add r5, r0, #0x0 - bl AllocFromHeap - mov r2, #0x5a - mov r1, #0x0 - lsl r2, r2, #0x2 - add r4, r0, #0x0 - bl memset - str r5, [r4, #0x0] - mov r0, #0x0 - strh r0, [r4, #0x4] - strh r0, [r4, #0x6] - add r0, r4, #0x0 - pop {r3-r5, pc} - - thumb_func_start FUN_02016BB8 -FUN_02016BB8: ; 0x02016BB8 - ldr r0, [r0, #0x0] - bx lr - - thumb_func_start FUN_02016BBC -FUN_02016BBC: ; 0x02016BBC - push {r4, lr} - add r4, r0, #0x0 - ldr r0, [r4, #0x0] - ldr r1, [r4, #0x4] - ldr r2, [r4, #0xc] - bl GX_SetGraphicsMode - ldr r0, [r4, #0x8] - bl GXS_SetGraphicsMode - mov r2, #0x1 - lsl r2, r2, #0x1a - ldr r1, [r2, #0x0] - ldr r0, _02016BF0 ; =0xC7FFFFFF - and r1, r0 - str r1, [r2, #0x0] - ldr r1, [r2, #0x0] - asr r0, r0, #0x3 - and r0, r1 - str r0, [r2, #0x0] - bl GX_DisableEngineALayers - bl GX_DisableEngineBLayers - pop {r4, pc} - nop -_02016BF0: .word 0xC7FFFFFF - - thumb_func_start FUN_02016BF4 -FUN_02016BF4: ; 0x02016BF4 - push {r3, lr} - add r2, r0, #0x0 - cmp r1, #0x0 - bne _02016C0C - ldr r0, [r2, #0x0] - ldr r1, [r2, #0x4] - ldr r2, [r2, #0xc] - bl GX_SetGraphicsMode - bl GX_DisableEngineALayers - pop {r3, pc} -_02016C0C: - ldr r0, [r2, #0x8] - bl GXS_SetGraphicsMode - bl GX_DisableEngineBLayers - pop {r3, pc} - - thumb_func_start FUN_02016C18 -FUN_02016C18: ; 0x02016C18 - push {r3-r7, lr} - sub sp, #0x18 - str r1, [sp, #0x4] - str r3, [sp, #0x8] - add r4, r2, #0x0 - str r0, [sp, #0x0] - ldrb r0, [r4, #0x10] - ldr r1, [sp, #0x8] - bl FUN_020177DC - add r5, r0, #0x0 - ldr r0, [sp, #0x4] - cmp r0, #0x7 - bls _02016C36 - b _0201705A -_02016C36: - add r0, r0, r0 - add r0, pc - ldrh r0, [r0, #0x6] - lsl r0, r0, #0x10 - asr r0, r0, #0x10 - add pc, r0 -_02016C42: ; jump table (using 16-bit offset) - .short _02016C52 - _02016C42 - 2; case 0 - .short _02016CAA - _02016C42 - 2; case 1 - .short _02016D02 - _02016C42 - 2; case 2 - .short _02016DA4 - _02016C42 - 2; case 3 - .short _02016E46 - _02016C42 - 2; case 4 - .short _02016E9E - _02016C42 - 2; case 5 - .short _02016EF6 - _02016C42 - 2; case 6 - .short _02016F98 - _02016C42 - 2; case 7 -_02016C52: - mov r0, #0x1 - add r1, r0, #0x0 - bl GX_EngineAToggleLayers - ldrb r3, [r4, #0x14] - ldrb r1, [r4, #0x12] - ldrb r0, [r4, #0x11] - ldrb r2, [r4, #0x13] - lsl r6, r3, #0xd - lsl r0, r0, #0x7 - lsl r3, r2, #0x2 - str r0, [sp, #0xc] - ldr r2, _02016FB4 ; =0x04000008 - lsl r7, r1, #0x8 - ldrh r1, [r2, #0x0] - mov r0, #0x43 - and r0, r1 - lsl r1, r5, #0xe - orr r1, r0 - ldr r0, [sp, #0xc] - orr r0, r1 - orr r0, r7 - orr r0, r3 - orr r0, r6 - strh r0, [r2, #0x0] - ldrh r1, [r2, #0x0] - mov r0, #0x3 - bic r1, r0 - ldrb r0, [r4, #0x15] - orr r0, r1 - strh r0, [r2, #0x0] - ldr r0, [r4, #0x18] - cmp r0, #0x0 - beq _02016CA0 - ldrh r1, [r2, #0x0] - mov r0, #0x40 - orr r0, r1 - strh r0, [r2, #0x0] - b _0201705A -_02016CA0: - ldrh r1, [r2, #0x0] - mov r0, #0x40 - bic r1, r0 - strh r1, [r2, #0x0] - b _0201705A -_02016CAA: - mov r0, #0x2 - mov r1, #0x1 - bl GX_EngineAToggleLayers - ldrb r3, [r4, #0x14] - ldrb r1, [r4, #0x12] - ldrb r0, [r4, #0x11] - ldrb r2, [r4, #0x13] - lsl r6, r3, #0xd - lsl r0, r0, #0x7 - lsl r3, r2, #0x2 - str r0, [sp, #0x10] - ldr r2, _02016FB8 ; =0x0400000A - lsl r7, r1, #0x8 - ldrh r1, [r2, #0x0] - mov r0, #0x43 - and r0, r1 - lsl r1, r5, #0xe - orr r1, r0 - ldr r0, [sp, #0x10] - orr r0, r1 - orr r0, r7 - orr r0, r3 - orr r0, r6 - strh r0, [r2, #0x0] - ldrh r1, [r2, #0x0] - mov r0, #0x3 - bic r1, r0 - ldrb r0, [r4, #0x15] - orr r0, r1 - strh r0, [r2, #0x0] - ldr r0, [r4, #0x18] - cmp r0, #0x0 - beq _02016CF8 - ldrh r1, [r2, #0x0] - mov r0, #0x40 - orr r0, r1 - strh r0, [r2, #0x0] - b _0201705A -_02016CF8: - ldrh r1, [r2, #0x0] - mov r0, #0x40 - bic r1, r0 - strh r1, [r2, #0x0] - b _0201705A -_02016D02: - mov r0, #0x4 - mov r1, #0x1 - bl GX_EngineAToggleLayers - ldr r0, [sp, #0x8] - cmp r0, #0x0 - beq _02016D18 - cmp r0, #0x1 - beq _02016D3A - cmp r0, #0x2 - beq _02016D5C -_02016D18: - ldrb r1, [r4, #0x12] - ldr r7, _02016FBC ; =0x0400000C - ldrb r2, [r4, #0x13] - lsl r3, r1, #0x8 - ldrb r0, [r4, #0x11] - lsl r6, r2, #0x2 - ldrh r1, [r7, #0x0] - lsl r2, r0, #0x7 - mov r0, #0x43 - and r0, r1 - lsl r1, r5, #0xe - orr r0, r1 - orr r0, r2 - orr r0, r3 - orr r0, r6 - strh r0, [r7, #0x0] - b _02016D7C -_02016D3A: - ldrb r2, [r4, #0x13] - ldrb r1, [r4, #0x12] - ldrb r0, [r4, #0x16] - lsl r3, r2, #0x2 - ldr r7, _02016FBC ; =0x0400000C - lsl r2, r1, #0x8 - lsl r6, r0, #0xd - ldrh r1, [r7, #0x0] - mov r0, #0x43 - and r0, r1 - lsl r1, r5, #0xe - orr r0, r1 - orr r0, r2 - orr r0, r3 - orr r0, r6 - strh r0, [r7, #0x0] - b _02016D7C -_02016D5C: - ldrb r1, [r4, #0x12] - ldr r7, _02016FBC ; =0x0400000C - ldrb r0, [r4, #0x16] - lsl r3, r1, #0x8 - ldrb r2, [r4, #0x13] - lsl r6, r0, #0xd - ldrh r1, [r7, #0x0] - mov r0, #0x43 - lsl r2, r2, #0x2 - and r0, r1 - lsl r1, r5, #0xe - orr r0, r1 - orr r0, r2 - orr r0, r3 - orr r0, r6 - strh r0, [r7, #0x0] -_02016D7C: - ldr r0, _02016FBC ; =0x0400000C - mov r1, #0x3 - ldrh r2, [r0, #0x0] - bic r2, r1 - ldrb r1, [r4, #0x15] - orr r1, r2 - strh r1, [r0, #0x0] - ldr r1, [r4, #0x18] - cmp r1, #0x0 - beq _02016D9A - ldrh r2, [r0, #0x0] - mov r1, #0x40 - orr r1, r2 - strh r1, [r0, #0x0] - b _0201705A -_02016D9A: - ldrh r2, [r0, #0x0] - mov r1, #0x40 - bic r2, r1 - strh r2, [r0, #0x0] - b _0201705A -_02016DA4: - mov r0, #0x8 - mov r1, #0x1 - bl GX_EngineAToggleLayers - ldr r0, [sp, #0x8] - cmp r0, #0x0 - beq _02016DBA - cmp r0, #0x1 - beq _02016DDC - cmp r0, #0x2 - beq _02016DFE -_02016DBA: - ldrb r1, [r4, #0x12] - ldr r7, _02016FC0 ; =0x0400000E - ldrb r2, [r4, #0x13] - lsl r3, r1, #0x8 - ldrb r0, [r4, #0x11] - lsl r6, r2, #0x2 - ldrh r1, [r7, #0x0] - lsl r2, r0, #0x7 - mov r0, #0x43 - and r0, r1 - lsl r1, r5, #0xe - orr r0, r1 - orr r0, r2 - orr r0, r3 - orr r0, r6 - strh r0, [r7, #0x0] - b _02016E1E -_02016DDC: - ldrb r2, [r4, #0x13] - ldrb r1, [r4, #0x12] - ldrb r0, [r4, #0x16] - lsl r3, r2, #0x2 - ldr r7, _02016FC0 ; =0x0400000E - lsl r2, r1, #0x8 - lsl r6, r0, #0xd - ldrh r1, [r7, #0x0] - mov r0, #0x43 - and r0, r1 - lsl r1, r5, #0xe - orr r0, r1 - orr r0, r2 - orr r0, r3 - orr r0, r6 - strh r0, [r7, #0x0] - b _02016E1E -_02016DFE: - ldrb r1, [r4, #0x12] - ldr r7, _02016FC0 ; =0x0400000E - ldrb r0, [r4, #0x16] - lsl r3, r1, #0x8 - ldrb r2, [r4, #0x13] - lsl r6, r0, #0xd - ldrh r1, [r7, #0x0] - mov r0, #0x43 - lsl r2, r2, #0x2 - and r0, r1 - lsl r1, r5, #0xe - orr r0, r1 - orr r0, r2 - orr r0, r3 - orr r0, r6 - strh r0, [r7, #0x0] -_02016E1E: - ldr r0, _02016FC0 ; =0x0400000E - mov r1, #0x3 - ldrh r2, [r0, #0x0] - bic r2, r1 - ldrb r1, [r4, #0x15] - orr r1, r2 - strh r1, [r0, #0x0] - ldr r1, [r4, #0x18] - cmp r1, #0x0 - beq _02016E3C - ldrh r2, [r0, #0x0] - mov r1, #0x40 - orr r1, r2 - strh r1, [r0, #0x0] - b _0201705A -_02016E3C: - ldrh r2, [r0, #0x0] - mov r1, #0x40 - bic r2, r1 - strh r2, [r0, #0x0] - b _0201705A -_02016E46: - mov r0, #0x1 - add r1, r0, #0x0 - bl GX_EngineBToggleLayers - ldrb r3, [r4, #0x14] - ldrb r1, [r4, #0x12] - ldrb r0, [r4, #0x11] - ldrb r2, [r4, #0x13] - lsl r6, r3, #0xd - lsl r0, r0, #0x7 - lsl r3, r2, #0x2 - str r0, [sp, #0x14] - ldr r2, _02016FC4 ; =0x04001008 - lsl r7, r1, #0x8 - ldrh r1, [r2, #0x0] - mov r0, #0x43 - and r0, r1 - lsl r1, r5, #0xe - orr r1, r0 - ldr r0, [sp, #0x14] - orr r0, r1 - orr r0, r7 - orr r0, r3 - orr r0, r6 - strh r0, [r2, #0x0] - ldrh r1, [r2, #0x0] - mov r0, #0x3 - bic r1, r0 - ldrb r0, [r4, #0x15] - orr r0, r1 - strh r0, [r2, #0x0] - ldr r0, [r4, #0x18] - cmp r0, #0x0 - beq _02016E94 - ldrh r1, [r2, #0x0] - mov r0, #0x40 - orr r0, r1 - strh r0, [r2, #0x0] - b _0201705A -_02016E94: - ldrh r1, [r2, #0x0] - mov r0, #0x40 - bic r1, r0 - strh r1, [r2, #0x0] - b _0201705A -_02016E9E: - mov r0, #0x2 - mov r1, #0x1 - bl GX_EngineBToggleLayers - ldrb r2, [r4, #0x13] - ldrb r1, [r4, #0x12] - ldrb r0, [r4, #0x11] - lsl r6, r2, #0x2 - ldrb r3, [r4, #0x14] - lsl r0, r0, #0x7 - mov r12, r0 - ldr r2, _02016FC8 ; =0x0400100A - lsl r7, r1, #0x8 - ldrh r1, [r2, #0x0] - mov r0, #0x43 - lsl r3, r3, #0xd - and r0, r1 - lsl r1, r5, #0xe - orr r0, r1 - mov r1, r12 - orr r0, r1 - orr r0, r7 - orr r0, r6 - orr r0, r3 - strh r0, [r2, #0x0] - ldrh r1, [r2, #0x0] - mov r0, #0x3 - bic r1, r0 - ldrb r0, [r4, #0x15] - orr r0, r1 - strh r0, [r2, #0x0] - ldr r0, [r4, #0x18] - cmp r0, #0x0 - beq _02016EEC - ldrh r1, [r2, #0x0] - mov r0, #0x40 - orr r0, r1 - strh r0, [r2, #0x0] - b _0201705A -_02016EEC: - ldrh r1, [r2, #0x0] - mov r0, #0x40 - bic r1, r0 - strh r1, [r2, #0x0] - b _0201705A -_02016EF6: - mov r0, #0x4 - mov r1, #0x1 - bl GX_EngineBToggleLayers - ldr r0, [sp, #0x8] - cmp r0, #0x0 - beq _02016F0C - cmp r0, #0x1 - beq _02016F2E - cmp r0, #0x2 - beq _02016F50 -_02016F0C: - ldrb r1, [r4, #0x12] - ldr r7, _02016FCC ; =0x0400100C - ldrb r2, [r4, #0x13] - lsl r3, r1, #0x8 - ldrb r0, [r4, #0x11] - lsl r6, r2, #0x2 - ldrh r1, [r7, #0x0] - lsl r2, r0, #0x7 - mov r0, #0x43 - and r0, r1 - lsl r1, r5, #0xe - orr r0, r1 - orr r0, r2 - orr r0, r3 - orr r0, r6 - strh r0, [r7, #0x0] - b _02016F70 -_02016F2E: - ldrb r2, [r4, #0x13] - ldrb r1, [r4, #0x12] - ldrb r0, [r4, #0x16] - lsl r3, r2, #0x2 - ldr r7, _02016FCC ; =0x0400100C - lsl r2, r1, #0x8 - lsl r6, r0, #0xd - ldrh r1, [r7, #0x0] - mov r0, #0x43 - and r0, r1 - lsl r1, r5, #0xe - orr r0, r1 - orr r0, r2 - orr r0, r3 - orr r0, r6 - strh r0, [r7, #0x0] - b _02016F70 -_02016F50: - ldrb r1, [r4, #0x12] - ldr r7, _02016FCC ; =0x0400100C - ldrb r0, [r4, #0x16] - lsl r3, r1, #0x8 - ldrb r2, [r4, #0x13] - lsl r6, r0, #0xd - ldrh r1, [r7, #0x0] - mov r0, #0x43 - lsl r2, r2, #0x2 - and r0, r1 - lsl r1, r5, #0xe - orr r0, r1 - orr r0, r2 - orr r0, r3 - orr r0, r6 - strh r0, [r7, #0x0] -_02016F70: - ldr r0, _02016FCC ; =0x0400100C - mov r1, #0x3 - ldrh r2, [r0, #0x0] - bic r2, r1 - ldrb r1, [r4, #0x15] - orr r1, r2 - strh r1, [r0, #0x0] - ldr r1, [r4, #0x18] - cmp r1, #0x0 - beq _02016F8E - ldrh r2, [r0, #0x0] - mov r1, #0x40 - orr r1, r2 - strh r1, [r0, #0x0] - b _0201705A -_02016F8E: - ldrh r2, [r0, #0x0] - mov r1, #0x40 - bic r2, r1 - strh r2, [r0, #0x0] - b _0201705A -_02016F98: - mov r0, #0x8 - mov r1, #0x1 - bl GX_EngineBToggleLayers - ldr r0, [sp, #0x8] - cmp r0, #0x0 - beq _02016FAE - cmp r0, #0x1 - beq _02016FF2 - cmp r0, #0x2 - beq _02017014 -_02016FAE: - ldrb r1, [r4, #0x12] - ldr r7, _02016FD0 ; =0x0400100E - b _02016FD4 - .balign 4 -_02016FB4: .word 0x04000008 -_02016FB8: .word 0x0400000A -_02016FBC: .word 0x0400000C -_02016FC0: .word 0x0400000E -_02016FC4: .word 0x04001008 -_02016FC8: .word 0x0400100A -_02016FCC: .word 0x0400100C -_02016FD0: .word 0x0400100E -_02016FD4: - ldrb r2, [r4, #0x13] - lsl r3, r1, #0x8 - ldrb r0, [r4, #0x11] - lsl r6, r2, #0x2 - ldrh r1, [r7, #0x0] - lsl r2, r0, #0x7 - mov r0, #0x43 - and r0, r1 - lsl r1, r5, #0xe - orr r0, r1 - orr r0, r2 - orr r0, r3 - orr r0, r6 - strh r0, [r7, #0x0] - b _02017034 -_02016FF2: - ldrb r2, [r4, #0x13] - ldrb r1, [r4, #0x12] - ldrb r0, [r4, #0x16] - lsl r3, r2, #0x2 - ldr r7, _020170F0 ; =0x0400100E - lsl r2, r1, #0x8 - lsl r6, r0, #0xd - ldrh r1, [r7, #0x0] - mov r0, #0x43 - and r0, r1 - lsl r1, r5, #0xe - orr r0, r1 - orr r0, r2 - orr r0, r3 - orr r0, r6 - strh r0, [r7, #0x0] - b _02017034 -_02017014: - ldrb r1, [r4, #0x12] - ldr r7, _020170F0 ; =0x0400100E - ldrb r0, [r4, #0x16] - lsl r3, r1, #0x8 - ldrb r2, [r4, #0x13] - lsl r6, r0, #0xd - ldrh r1, [r7, #0x0] - mov r0, #0x43 - lsl r2, r2, #0x2 - and r0, r1 - lsl r1, r5, #0xe - orr r0, r1 - orr r0, r2 - orr r0, r3 - orr r0, r6 - strh r0, [r7, #0x0] -_02017034: - ldr r0, _020170F0 ; =0x0400100E - mov r1, #0x3 - ldrh r2, [r0, #0x0] - bic r2, r1 - ldrb r1, [r4, #0x15] - orr r1, r2 - strh r1, [r0, #0x0] - ldr r1, [r4, #0x18] - cmp r1, #0x0 - beq _02017052 - ldrh r2, [r0, #0x0] - mov r1, #0x40 - orr r1, r2 - strh r1, [r0, #0x0] - b _0201705A -_02017052: - ldrh r2, [r0, #0x0] - mov r1, #0x40 - bic r2, r1 - strh r2, [r0, #0x0] -_0201705A: - ldr r0, [sp, #0x4] - mov r1, #0x2c - add r5, r0, #0x0 - ldr r0, [sp, #0x0] - mul r5, r1 - add r2, r0, r5 - mov r3, #0x0 - mov r0, #0x1 - strh r3, [r2, #0x20] - lsl r0, r0, #0xc - str r0, [r2, #0x24] - str r0, [r2, #0x28] - str r3, [r2, #0x2c] - str r3, [r2, #0x30] - ldr r1, [r4, #0x8] - cmp r1, #0x0 - beq _020170A2 - ldr r0, [sp, #0x0] - ldr r6, [sp, #0x0] - ldr r0, [r0, #0x0] - add r6, #0x8 - bl AllocFromHeap - str r0, [r6, r5] - ldr r1, [r6, r5] - ldr r2, [r4, #0x8] - mov r0, #0x0 - bl MIi_CpuClear16 - ldr r0, [sp, #0x0] - ldr r2, [r4, #0x8] - add r1, r0, r5 - str r2, [r1, #0xc] - ldr r0, [r4, #0xc] - str r0, [r1, #0x10] - b _020170A8 -_020170A2: - str r3, [r2, #0x8] - str r3, [r2, #0xc] - str r3, [r2, #0x10] -_020170A8: - ldr r0, [sp, #0x0] - ldrb r1, [r4, #0x10] - add r0, r0, r5 - strb r1, [r0, #0x1d] - ldr r1, [sp, #0x8] - strb r1, [r0, #0x1c] - ldrb r1, [r4, #0x11] - strb r1, [r0, #0x1e] - ldr r1, [sp, #0x8] - cmp r1, #0x0 - bne _020170CA - ldrb r1, [r4, #0x11] - cmp r1, #0x0 - bne _020170CA - mov r1, #0x20 - strb r1, [r0, #0x1f] - b _020170D2 -_020170CA: - ldr r0, [sp, #0x0] - mov r1, #0x40 - add r0, r0, r5 - strb r1, [r0, #0x1f] -_020170D2: - ldr r0, [sp, #0x0] - ldr r1, [sp, #0x4] - ldr r3, [r4, #0x0] - mov r2, #0x0 - bl FUN_020179E0 - ldr r0, [sp, #0x0] - ldr r1, [sp, #0x4] - ldr r3, [r4, #0x4] - mov r2, #0x3 - bl FUN_020179E0 - add sp, #0x18 - pop {r3-r7, pc} - nop -_020170F0: .word 0x0400100E - - thumb_func_start FUN_020170F4 -FUN_020170F4: ; 0x020170F4 - push {r3-r7, lr} - sub sp, #0x20 - add r4, r1, #0x0 - add r5, r0, #0x0 - add r1, r2, #0x0 - add r0, r3, #0x0 - cmp r1, #0x0 - bne _0201710C - mov r2, #0x2c - mul r2, r4 - add r2, r5, r2 - strb r0, [r2, #0x1e] -_0201710C: - cmp r4, #0x7 - bls _02017112 - b _020177C4 -_02017112: - add r2, r4, r4 - add r2, pc - ldrh r2, [r2, #0x6] - lsl r2, r2, #0x10 - asr r2, r2, #0x10 - add pc, r2 -_0201711E: ; jump table (using 16-bit offset) - .short _0201712E - _0201711E - 2; case 0 - .short _0201719A - _0201711E - 2; case 1 - .short _02017206 - _0201711E - 2; case 2 - .short _0201733A - _0201711E - 2; case 3 - .short _0201746E - _0201711E - 2; case 4 - .short _020174F4 - _0201711E - 2; case 5 - .short _02017560 - _0201711E - 2; case 6 - .short _02017694 - _0201711E - 2; case 7 -_0201712E: - ldr r2, _02017480 ; =0x04000008 - cmp r1, #0x1 - ldrh r3, [r2, #0x0] - add r2, sp, #0x0 - strh r3, [r2, #0x1e] - bne _0201714A - ldrh r3, [r2, #0x1e] - ldr r1, _02017484 ; =0xFFFFE0FF - lsl r0, r0, #0x1b - and r1, r3 - lsr r0, r0, #0x13 - orr r0, r1 - strh r0, [r2, #0x1e] - b _0201715C -_0201714A: - cmp r1, #0x2 - bne _0201715C - ldrh r3, [r2, #0x1e] - mov r1, #0x3c - lsl r0, r0, #0x1c - bic r3, r1 - lsr r0, r0, #0x1a - orr r0, r3 - strh r0, [r2, #0x1e] -_0201715C: - add r0, sp, #0x0 - ldrh r3, [r0, #0x1e] - add sp, #0x20 - lsl r0, r3, #0x12 - lsr r6, r0, #0x1f - lsl r0, r3, #0x1a - lsr r2, r0, #0x1c - lsl r0, r3, #0x13 - lsr r1, r0, #0x1b - mov r0, #0x2c - mul r0, r4 - add r0, r5, r0 - lsl r3, r3, #0x10 - lsr r5, r3, #0x1e - lsl r3, r2, #0x2 - ldrb r0, [r0, #0x1e] - lsl r2, r1, #0x8 - lsl r4, r6, #0xd - lsl r1, r0, #0x7 - ldr r0, _02017480 ; =0x04000008 - mov r6, #0x43 - ldrh r7, [r0, #0x0] - lsl r5, r5, #0xe - and r6, r7 - orr r5, r6 - orr r1, r5 - orr r1, r2 - orr r1, r3 - orr r1, r4 - strh r1, [r0, #0x0] - pop {r3-r7, pc} -_0201719A: - ldr r2, _02017488 ; =0x0400000A - cmp r1, #0x1 - ldrh r3, [r2, #0x0] - add r2, sp, #0x0 - strh r3, [r2, #0x1c] - bne _020171B6 - ldrh r3, [r2, #0x1c] - ldr r1, _02017484 ; =0xFFFFE0FF - lsl r0, r0, #0x1b - and r1, r3 - lsr r0, r0, #0x13 - orr r0, r1 - strh r0, [r2, #0x1c] - b _020171C8 -_020171B6: - cmp r1, #0x2 - bne _020171C8 - ldrh r3, [r2, #0x1c] - mov r1, #0x3c - lsl r0, r0, #0x1c - bic r3, r1 - lsr r0, r0, #0x1a - orr r0, r3 - strh r0, [r2, #0x1c] -_020171C8: - add r0, sp, #0x0 - ldrh r3, [r0, #0x1c] - add sp, #0x20 - lsl r0, r3, #0x12 - lsr r6, r0, #0x1f - lsl r0, r3, #0x1a - lsr r2, r0, #0x1c - lsl r0, r3, #0x13 - lsr r1, r0, #0x1b - mov r0, #0x2c - mul r0, r4 - add r0, r5, r0 - lsl r3, r3, #0x10 - lsr r5, r3, #0x1e - lsl r3, r2, #0x2 - ldrb r0, [r0, #0x1e] - lsl r2, r1, #0x8 - lsl r4, r6, #0xd - lsl r1, r0, #0x7 - ldr r0, _02017488 ; =0x0400000A - mov r6, #0x43 - ldrh r7, [r0, #0x0] - lsl r5, r5, #0xe - and r6, r7 - orr r5, r6 - orr r1, r5 - orr r1, r2 - orr r1, r3 - orr r1, r4 - strh r1, [r0, #0x0] - pop {r3-r7, pc} -_02017206: - mov r2, #0x2c - mul r2, r4 - add r3, r5, r2 - ldrb r3, [r3, #0x1c] - cmp r3, #0x0 - beq _0201721A - cmp r3, #0x1 - beq _0201727A - cmp r3, #0x2 - beq _020172DA -_0201721A: - ldr r3, _0201748C ; =0x0400000C - cmp r1, #0x1 - ldrh r4, [r3, #0x0] - add r3, sp, #0x0 - strh r4, [r3, #0x1a] - bne _02017236 - ldrh r4, [r3, #0x1a] - ldr r1, _02017484 ; =0xFFFFE0FF - lsl r0, r0, #0x1b - and r1, r4 - lsr r0, r0, #0x13 - orr r0, r1 - strh r0, [r3, #0x1a] - b _02017248 -_02017236: - cmp r1, #0x2 - bne _02017248 - ldrh r4, [r3, #0x1a] - mov r1, #0x3c - lsl r0, r0, #0x1c - bic r4, r1 - lsr r0, r0, #0x1a - orr r0, r4 - strh r0, [r3, #0x1a] -_02017248: - add r0, sp, #0x0 - ldrh r3, [r0, #0x1a] - add r2, r5, r2 - ldr r6, _0201748C ; =0x0400000C - lsl r0, r3, #0x1a - ldrb r4, [r2, #0x1e] - lsr r1, r0, #0x1c - lsl r0, r3, #0x13 - lsl r2, r3, #0x10 - lsr r3, r2, #0x1e - ldrh r5, [r6, #0x0] - lsr r0, r0, #0x1b - lsl r2, r1, #0x2 - lsl r1, r0, #0x8 - lsl r0, r4, #0x7 - mov r4, #0x43 - and r4, r5 - lsl r3, r3, #0xe - orr r3, r4 - orr r0, r3 - orr r0, r1 - orr r0, r2 - add sp, #0x20 - strh r0, [r6, #0x0] - pop {r3-r7, pc} -_0201727A: - ldr r2, _0201748C ; =0x0400000C - cmp r1, #0x1 - ldrh r3, [r2, #0x0] - add r2, sp, #0x0 - strh r3, [r2, #0x18] - bne _02017296 - ldrh r3, [r2, #0x18] - ldr r1, _02017484 ; =0xFFFFE0FF - lsl r0, r0, #0x1b - and r1, r3 - lsr r0, r0, #0x13 - orr r0, r1 - strh r0, [r2, #0x18] - b _020172A8 -_02017296: - cmp r1, #0x2 - bne _020172A8 - ldrh r3, [r2, #0x18] - mov r1, #0x3c - lsl r0, r0, #0x1c - bic r3, r1 - lsr r0, r0, #0x1a - orr r0, r3 - strh r0, [r2, #0x18] -_020172A8: - add r0, sp, #0x0 - ldrh r3, [r0, #0x18] - ldr r6, _0201748C ; =0x0400000C - add sp, #0x20 - lsl r1, r3, #0x13 - lsl r0, r3, #0x1a - lsr r4, r1, #0x1b - lsl r1, r3, #0x12 - lsr r2, r1, #0x1f - lsl r1, r3, #0x10 - lsr r3, r1, #0x1e - lsr r0, r0, #0x1c - lsl r1, r0, #0x2 - lsl r0, r4, #0x8 - ldrh r5, [r6, #0x0] - mov r4, #0x43 - lsl r3, r3, #0xe - and r4, r5 - orr r3, r4 - orr r0, r3 - lsl r2, r2, #0xd - orr r0, r1 - orr r0, r2 - strh r0, [r6, #0x0] - pop {r3-r7, pc} -_020172DA: - ldr r2, _0201748C ; =0x0400000C - cmp r1, #0x1 - ldrh r3, [r2, #0x0] - add r2, sp, #0x0 - strh r3, [r2, #0x16] - bne _020172F6 - ldrh r3, [r2, #0x16] - ldr r1, _02017484 ; =0xFFFFE0FF - lsl r0, r0, #0x1b - and r1, r3 - lsr r0, r0, #0x13 - orr r0, r1 - strh r0, [r2, #0x16] - b _02017308 -_020172F6: - cmp r1, #0x2 - bne _02017308 - ldrh r3, [r2, #0x16] - mov r1, #0x38 - lsl r0, r0, #0x1d - bic r3, r1 - lsr r0, r0, #0x1a - orr r0, r3 - strh r0, [r2, #0x16] -_02017308: - add r0, sp, #0x0 - ldrh r3, [r0, #0x16] - ldr r6, _0201748C ; =0x0400000C - add sp, #0x20 - lsl r1, r3, #0x13 - lsr r4, r1, #0x1b - lsl r1, r3, #0x12 - lsr r2, r1, #0x1f - lsl r0, r3, #0x1a - lsl r1, r3, #0x10 - lsr r3, r1, #0x1e - lsl r1, r4, #0x8 - lsr r0, r0, #0x1d - ldrh r5, [r6, #0x0] - mov r4, #0x43 - lsl r3, r3, #0xe - and r4, r5 - lsl r0, r0, #0x2 - orr r3, r4 - orr r0, r3 - lsl r2, r2, #0xd - orr r0, r1 - orr r0, r2 - strh r0, [r6, #0x0] - pop {r3-r7, pc} -_0201733A: - mov r2, #0x2c - mul r2, r4 - add r3, r5, r2 - ldrb r3, [r3, #0x1c] - cmp r3, #0x0 - beq _0201734E - cmp r3, #0x1 - beq _020173AE - cmp r3, #0x2 - beq _0201740E -_0201734E: - ldr r3, _02017490 ; =0x0400000E - cmp r1, #0x1 - ldrh r4, [r3, #0x0] - add r3, sp, #0x0 - strh r4, [r3, #0x14] - bne _0201736A - ldrh r4, [r3, #0x14] - ldr r1, _02017484 ; =0xFFFFE0FF - lsl r0, r0, #0x1b - and r1, r4 - lsr r0, r0, #0x13 - orr r0, r1 - strh r0, [r3, #0x14] - b _0201737C -_0201736A: - cmp r1, #0x2 - bne _0201737C - ldrh r4, [r3, #0x14] - mov r1, #0x3c - lsl r0, r0, #0x1c - bic r4, r1 - lsr r0, r0, #0x1a - orr r0, r4 - strh r0, [r3, #0x14] -_0201737C: - add r0, sp, #0x0 - ldrh r3, [r0, #0x14] - add r2, r5, r2 - ldr r6, _02017490 ; =0x0400000E - lsl r0, r3, #0x1a - ldrb r4, [r2, #0x1e] - lsr r1, r0, #0x1c - lsl r0, r3, #0x13 - lsl r2, r3, #0x10 - lsr r3, r2, #0x1e - ldrh r5, [r6, #0x0] - lsr r0, r0, #0x1b - lsl r2, r1, #0x2 - lsl r1, r0, #0x8 - lsl r0, r4, #0x7 - mov r4, #0x43 - and r4, r5 - lsl r3, r3, #0xe - orr r3, r4 - orr r0, r3 - orr r0, r1 - orr r0, r2 - add sp, #0x20 - strh r0, [r6, #0x0] - pop {r3-r7, pc} -_020173AE: - ldr r2, _02017490 ; =0x0400000E - cmp r1, #0x1 - ldrh r3, [r2, #0x0] - add r2, sp, #0x0 - strh r3, [r2, #0x12] - bne _020173CA - ldrh r3, [r2, #0x12] - ldr r1, _02017484 ; =0xFFFFE0FF - lsl r0, r0, #0x1b - and r1, r3 - lsr r0, r0, #0x13 - orr r0, r1 - strh r0, [r2, #0x12] - b _020173DC -_020173CA: - cmp r1, #0x2 - bne _020173DC - ldrh r3, [r2, #0x12] - mov r1, #0x3c - lsl r0, r0, #0x1c - bic r3, r1 - lsr r0, r0, #0x1a - orr r0, r3 - strh r0, [r2, #0x12] -_020173DC: - add r0, sp, #0x0 - ldrh r3, [r0, #0x12] - ldr r6, _02017490 ; =0x0400000E - add sp, #0x20 - lsl r1, r3, #0x13 - lsl r0, r3, #0x1a - lsr r4, r1, #0x1b - lsl r1, r3, #0x12 - lsr r2, r1, #0x1f - lsl r1, r3, #0x10 - lsr r3, r1, #0x1e - lsr r0, r0, #0x1c - lsl r1, r0, #0x2 - lsl r0, r4, #0x8 - ldrh r5, [r6, #0x0] - mov r4, #0x43 - lsl r3, r3, #0xe - and r4, r5 - orr r3, r4 - orr r0, r3 - lsl r2, r2, #0xd - orr r0, r1 - orr r0, r2 - strh r0, [r6, #0x0] - pop {r3-r7, pc} -_0201740E: - ldr r2, _02017490 ; =0x0400000E - cmp r1, #0x1 - ldrh r3, [r2, #0x0] - add r2, sp, #0x0 - strh r3, [r2, #0x10] - bne _0201742A - ldrh r3, [r2, #0x10] - ldr r1, _02017484 ; =0xFFFFE0FF - lsl r0, r0, #0x1b - and r1, r3 - lsr r0, r0, #0x13 - orr r0, r1 - strh r0, [r2, #0x10] - b _0201743C -_0201742A: - cmp r1, #0x2 - bne _0201743C - ldrh r3, [r2, #0x10] - mov r1, #0x38 - lsl r0, r0, #0x1d - bic r3, r1 - lsr r0, r0, #0x1a - orr r0, r3 - strh r0, [r2, #0x10] -_0201743C: - add r0, sp, #0x0 - ldrh r3, [r0, #0x10] - ldr r6, _02017490 ; =0x0400000E - add sp, #0x20 - lsl r1, r3, #0x13 - lsr r4, r1, #0x1b - lsl r1, r3, #0x12 - lsr r2, r1, #0x1f - lsl r0, r3, #0x1a - lsl r1, r3, #0x10 - lsr r3, r1, #0x1e - lsl r1, r4, #0x8 - lsr r0, r0, #0x1d - ldrh r5, [r6, #0x0] - mov r4, #0x43 - lsl r3, r3, #0xe - and r4, r5 - lsl r0, r0, #0x2 - orr r3, r4 - orr r0, r3 - lsl r2, r2, #0xd - orr r0, r1 - orr r0, r2 - strh r0, [r6, #0x0] - pop {r3-r7, pc} -_0201746E: - ldr r2, _02017494 ; =0x04001008 - cmp r1, #0x1 - ldrh r3, [r2, #0x0] - add r2, sp, #0x0 - strh r3, [r2, #0xe] - bne _020174A4 - ldrh r3, [r2, #0xe] - ldr r1, _02017484 ; =0xFFFFE0FF - b _02017498 - .balign 4 -_02017480: .word 0x04000008 -_02017484: .word 0xFFFFE0FF -_02017488: .word 0x0400000A -_0201748C: .word 0x0400000C -_02017490: .word 0x0400000E -_02017494: .word 0x04001008 -_02017498: - lsl r0, r0, #0x1b - and r1, r3 - lsr r0, r0, #0x13 - orr r0, r1 - strh r0, [r2, #0xe] - b _020174B6 -_020174A4: - cmp r1, #0x2 - bne _020174B6 - ldrh r3, [r2, #0xe] - mov r1, #0x3c - lsl r0, r0, #0x1c - bic r3, r1 - lsr r0, r0, #0x1a - orr r0, r3 - strh r0, [r2, #0xe] -_020174B6: - add r0, sp, #0x0 - ldrh r3, [r0, #0xe] - add sp, #0x20 - lsl r0, r3, #0x12 - lsr r6, r0, #0x1f - lsl r0, r3, #0x1a - lsr r2, r0, #0x1c - lsl r0, r3, #0x13 - lsr r1, r0, #0x1b - mov r0, #0x2c - mul r0, r4 - add r0, r5, r0 - lsl r3, r3, #0x10 - lsr r5, r3, #0x1e - lsl r3, r2, #0x2 - ldrb r0, [r0, #0x1e] - lsl r2, r1, #0x8 - lsl r4, r6, #0xd - lsl r1, r0, #0x7 - ldr r0, _020177C8 ; =0x04001008 - mov r6, #0x43 - ldrh r7, [r0, #0x0] - lsl r5, r5, #0xe - and r6, r7 - orr r5, r6 - orr r1, r5 - orr r1, r2 - orr r1, r3 - orr r1, r4 - strh r1, [r0, #0x0] - pop {r3-r7, pc} -_020174F4: - ldr r2, _020177CC ; =0x0400100A - cmp r1, #0x1 - ldrh r3, [r2, #0x0] - add r2, sp, #0x0 - strh r3, [r2, #0xc] - bne _02017510 - ldrh r3, [r2, #0xc] - ldr r1, _020177D0 ; =0xFFFFE0FF - lsl r0, r0, #0x1b - and r1, r3 - lsr r0, r0, #0x13 - orr r0, r1 - strh r0, [r2, #0xc] - b _02017522 -_02017510: - cmp r1, #0x2 - bne _02017522 - ldrh r3, [r2, #0xc] - mov r1, #0x3c - lsl r0, r0, #0x1c - bic r3, r1 - lsr r0, r0, #0x1a - orr r0, r3 - strh r0, [r2, #0xc] -_02017522: - add r0, sp, #0x0 - ldrh r3, [r0, #0xc] - add sp, #0x20 - lsl r0, r3, #0x12 - lsr r6, r0, #0x1f - lsl r0, r3, #0x1a - lsr r2, r0, #0x1c - lsl r0, r3, #0x13 - lsr r1, r0, #0x1b - mov r0, #0x2c - mul r0, r4 - add r0, r5, r0 - lsl r3, r3, #0x10 - lsr r5, r3, #0x1e - lsl r3, r2, #0x2 - ldrb r0, [r0, #0x1e] - lsl r2, r1, #0x8 - lsl r4, r6, #0xd - lsl r1, r0, #0x7 - ldr r0, _020177CC ; =0x0400100A - mov r6, #0x43 - ldrh r7, [r0, #0x0] - lsl r5, r5, #0xe - and r6, r7 - orr r5, r6 - orr r1, r5 - orr r1, r2 - orr r1, r3 - orr r1, r4 - strh r1, [r0, #0x0] - pop {r3-r7, pc} -_02017560: - mov r2, #0x2c - mul r2, r4 - add r3, r5, r2 - ldrb r3, [r3, #0x1c] - cmp r3, #0x0 - beq _02017574 - cmp r3, #0x1 - beq _020175D4 - cmp r3, #0x2 - beq _02017634 -_02017574: - ldr r3, _020177D4 ; =0x0400100C - cmp r1, #0x1 - ldrh r4, [r3, #0x0] - add r3, sp, #0x0 - strh r4, [r3, #0xa] - bne _02017590 - ldrh r4, [r3, #0xa] - ldr r1, _020177D0 ; =0xFFFFE0FF - lsl r0, r0, #0x1b - and r1, r4 - lsr r0, r0, #0x13 - orr r0, r1 - strh r0, [r3, #0xa] - b _020175A2 -_02017590: - cmp r1, #0x2 - bne _020175A2 - ldrh r4, [r3, #0xa] - mov r1, #0x3c - lsl r0, r0, #0x1c - bic r4, r1 - lsr r0, r0, #0x1a - orr r0, r4 - strh r0, [r3, #0xa] -_020175A2: - add r0, sp, #0x0 - ldrh r3, [r0, #0xa] - add r2, r5, r2 - ldr r6, _020177D4 ; =0x0400100C - lsl r0, r3, #0x1a - ldrb r4, [r2, #0x1e] - lsr r1, r0, #0x1c - lsl r0, r3, #0x13 - lsl r2, r3, #0x10 - lsr r3, r2, #0x1e - ldrh r5, [r6, #0x0] - lsr r0, r0, #0x1b - lsl r2, r1, #0x2 - lsl r1, r0, #0x8 - lsl r0, r4, #0x7 - mov r4, #0x43 - and r4, r5 - lsl r3, r3, #0xe - orr r3, r4 - orr r0, r3 - orr r0, r1 - orr r0, r2 - add sp, #0x20 - strh r0, [r6, #0x0] - pop {r3-r7, pc} -_020175D4: - ldr r2, _020177D4 ; =0x0400100C - cmp r1, #0x1 - ldrh r3, [r2, #0x0] - add r2, sp, #0x0 - strh r3, [r2, #0x8] - bne _020175F0 - ldrh r3, [r2, #0x8] - ldr r1, _020177D0 ; =0xFFFFE0FF - lsl r0, r0, #0x1b - and r1, r3 - lsr r0, r0, #0x13 - orr r0, r1 - strh r0, [r2, #0x8] - b _02017602 -_020175F0: - cmp r1, #0x2 - bne _02017602 - ldrh r3, [r2, #0x8] - mov r1, #0x3c - lsl r0, r0, #0x1c - bic r3, r1 - lsr r0, r0, #0x1a - orr r0, r3 - strh r0, [r2, #0x8] -_02017602: - add r0, sp, #0x0 - ldrh r3, [r0, #0x8] - ldr r6, _020177D4 ; =0x0400100C - add sp, #0x20 - lsl r1, r3, #0x13 - lsl r0, r3, #0x1a - lsr r4, r1, #0x1b - lsl r1, r3, #0x12 - lsr r2, r1, #0x1f - lsl r1, r3, #0x10 - lsr r3, r1, #0x1e - lsr r0, r0, #0x1c - lsl r1, r0, #0x2 - lsl r0, r4, #0x8 - ldrh r5, [r6, #0x0] - mov r4, #0x43 - lsl r3, r3, #0xe - and r4, r5 - orr r3, r4 - orr r0, r3 - lsl r2, r2, #0xd - orr r0, r1 - orr r0, r2 - strh r0, [r6, #0x0] - pop {r3-r7, pc} -_02017634: - ldr r2, _020177D4 ; =0x0400100C - cmp r1, #0x1 - ldrh r3, [r2, #0x0] - add r2, sp, #0x0 - strh r3, [r2, #0x6] - bne _02017650 - ldrh r3, [r2, #0x6] - ldr r1, _020177D0 ; =0xFFFFE0FF - lsl r0, r0, #0x1b - and r1, r3 - lsr r0, r0, #0x13 - orr r0, r1 - strh r0, [r2, #0x6] - b _02017662 -_02017650: - cmp r1, #0x2 - bne _02017662 - ldrh r3, [r2, #0x6] - mov r1, #0x38 - lsl r0, r0, #0x1d - bic r3, r1 - lsr r0, r0, #0x1a - orr r0, r3 - strh r0, [r2, #0x6] -_02017662: - add r0, sp, #0x0 - ldrh r3, [r0, #0x6] - ldr r6, _020177D4 ; =0x0400100C - add sp, #0x20 - lsl r1, r3, #0x13 - lsr r4, r1, #0x1b - lsl r1, r3, #0x12 - lsr r2, r1, #0x1f - lsl r0, r3, #0x1a - lsl r1, r3, #0x10 - lsr r3, r1, #0x1e - lsl r1, r4, #0x8 - lsr r0, r0, #0x1d - ldrh r5, [r6, #0x0] - mov r4, #0x43 - lsl r3, r3, #0xe - and r4, r5 - lsl r0, r0, #0x2 - orr r3, r4 - orr r0, r3 - lsl r2, r2, #0xd - orr r0, r1 - orr r0, r2 - strh r0, [r6, #0x0] - pop {r3-r7, pc} -_02017694: - mov r2, #0x2c - mul r2, r4 - add r3, r5, r2 - ldrb r3, [r3, #0x1c] - cmp r3, #0x0 - beq _020176A8 - cmp r3, #0x1 - beq _02017708 - cmp r3, #0x2 - beq _02017768 -_020176A8: - ldr r3, _020177D8 ; =0x0400100E - cmp r1, #0x1 - ldrh r4, [r3, #0x0] - add r3, sp, #0x0 - strh r4, [r3, #0x4] - bne _020176C4 - ldrh r4, [r3, #0x4] - ldr r1, _020177D0 ; =0xFFFFE0FF - lsl r0, r0, #0x1b - and r1, r4 - lsr r0, r0, #0x13 - orr r0, r1 - strh r0, [r3, #0x4] - b _020176D6 -_020176C4: - cmp r1, #0x2 - bne _020176D6 - ldrh r4, [r3, #0x4] - mov r1, #0x3c - lsl r0, r0, #0x1c - bic r4, r1 - lsr r0, r0, #0x1a - orr r0, r4 - strh r0, [r3, #0x4] -_020176D6: - add r0, sp, #0x0 - ldrh r3, [r0, #0x4] - add r2, r5, r2 - ldr r6, _020177D8 ; =0x0400100E - lsl r0, r3, #0x1a - ldrb r4, [r2, #0x1e] - lsr r1, r0, #0x1c - lsl r0, r3, #0x13 - lsl r2, r3, #0x10 - lsr r3, r2, #0x1e - ldrh r5, [r6, #0x0] - lsr r0, r0, #0x1b - lsl r2, r1, #0x2 - lsl r1, r0, #0x8 - lsl r0, r4, #0x7 - mov r4, #0x43 - and r4, r5 - lsl r3, r3, #0xe - orr r3, r4 - orr r0, r3 - orr r0, r1 - orr r0, r2 - add sp, #0x20 - strh r0, [r6, #0x0] - pop {r3-r7, pc} -_02017708: - ldr r2, _020177D8 ; =0x0400100E - cmp r1, #0x1 - ldrh r3, [r2, #0x0] - add r2, sp, #0x0 - strh r3, [r2, #0x2] - bne _02017724 - ldrh r3, [r2, #0x2] - ldr r1, _020177D0 ; =0xFFFFE0FF - lsl r0, r0, #0x1b - and r1, r3 - lsr r0, r0, #0x13 - orr r0, r1 - strh r0, [r2, #0x2] - b _02017736 -_02017724: - cmp r1, #0x2 - bne _02017736 - ldrh r3, [r2, #0x2] - mov r1, #0x3c - lsl r0, r0, #0x1c - bic r3, r1 - lsr r0, r0, #0x1a - orr r0, r3 - strh r0, [r2, #0x2] -_02017736: - add r0, sp, #0x0 - ldrh r3, [r0, #0x2] - ldr r6, _020177D8 ; =0x0400100E - add sp, #0x20 - lsl r1, r3, #0x13 - lsl r0, r3, #0x1a - lsr r4, r1, #0x1b - lsl r1, r3, #0x12 - lsr r2, r1, #0x1f - lsl r1, r3, #0x10 - lsr r3, r1, #0x1e - lsr r0, r0, #0x1c - lsl r1, r0, #0x2 - lsl r0, r4, #0x8 - ldrh r5, [r6, #0x0] - mov r4, #0x43 - lsl r3, r3, #0xe - and r4, r5 - orr r3, r4 - orr r0, r3 - lsl r2, r2, #0xd - orr r0, r1 - orr r0, r2 - strh r0, [r6, #0x0] - pop {r3-r7, pc} -_02017768: - ldr r2, _020177D8 ; =0x0400100E - cmp r1, #0x1 - ldrh r3, [r2, #0x0] - add r2, sp, #0x0 - strh r3, [r2, #0x0] - bne _02017784 - ldrh r3, [r2, #0x0] - ldr r1, _020177D0 ; =0xFFFFE0FF - lsl r0, r0, #0x1b - and r1, r3 - lsr r0, r0, #0x13 - orr r0, r1 - strh r0, [r2, #0x0] - b _02017796 -_02017784: - cmp r1, #0x2 - bne _02017796 - ldrh r3, [r2, #0x0] - mov r1, #0x38 - lsl r0, r0, #0x1d - bic r3, r1 - lsr r0, r0, #0x1a - orr r0, r3 - strh r0, [r2, #0x0] -_02017796: - add r0, sp, #0x0 - ldrh r3, [r0, #0x0] - ldr r6, _020177D8 ; =0x0400100E - lsl r1, r3, #0x13 - lsr r4, r1, #0x1b - lsl r1, r3, #0x12 - lsr r2, r1, #0x1f - lsl r0, r3, #0x1a - lsl r1, r3, #0x10 - lsr r3, r1, #0x1e - lsl r1, r4, #0x8 - lsr r0, r0, #0x1d - ldrh r5, [r6, #0x0] - mov r4, #0x43 - lsl r3, r3, #0xe - and r4, r5 - lsl r0, r0, #0x2 - orr r3, r4 - orr r0, r3 - lsl r2, r2, #0xd - orr r0, r1 - orr r0, r2 - strh r0, [r6, #0x0] -_020177C4: - add sp, #0x20 - pop {r3-r7, pc} - .balign 4 -_020177C8: .word 0x04001008 -_020177CC: .word 0x0400100A -_020177D0: .word 0xFFFFE0FF -_020177D4: .word 0x0400100C -_020177D8: .word 0x0400100E - - thumb_func_start FUN_020177DC -FUN_020177DC: ; 0x020177DC - cmp r1, #0x0 - beq _020177EA - cmp r1, #0x1 - beq _0201780A - cmp r1, #0x2 - beq _0201782A - b _0201784A -_020177EA: - cmp r0, #0x1 - bne _020177F2 - mov r0, #0x0 - bx lr -_020177F2: - cmp r0, #0x2 - bne _020177FA - mov r0, #0x2 - bx lr -_020177FA: - cmp r0, #0x3 - bne _02017802 - mov r0, #0x1 - bx lr -_02017802: - cmp r0, #0x4 - bne _0201784A - mov r0, #0x3 - bx lr -_0201780A: - cmp r0, #0x0 - bne _02017812 - mov r0, #0x0 - bx lr -_02017812: - cmp r0, #0x1 - bne _0201781A - mov r0, #0x1 - bx lr -_0201781A: - cmp r0, #0x4 - bne _02017822 - mov r0, #0x2 - bx lr -_02017822: - cmp r0, #0x5 - bne _0201784A - mov r0, #0x3 - bx lr -_0201782A: - cmp r0, #0x0 - bne _02017832 - mov r0, #0x0 - bx lr -_02017832: - cmp r0, #0x1 - bne _0201783A - mov r0, #0x1 - bx lr -_0201783A: - cmp r0, #0x4 - bne _02017842 - mov r0, #0x2 - bx lr -_02017842: - cmp r0, #0x5 - bne _0201784A - mov r0, #0x3 - bx lr -_0201784A: - mov r0, #0x0 - bx lr - .balign 4 - - thumb_func_start FUN_02017850 -FUN_02017850: ; 0x02017850 - cmp r0, #0x5 - bhi _0201789E - add r0, r0, r0 - add r0, pc - ldrh r0, [r0, #0x6] - lsl r0, r0, #0x10 - asr r0, r0, #0x10 - add pc, r0 -_02017860: ; jump table (using 16-bit offset) - .short _0201786C - _02017860 - 2; case 0 - .short _02017874 - _02017860 - 2; case 1 - .short _0201787C - _02017860 - 2; case 2 - .short _02017886 - _02017860 - 2; case 3 - .short _02017890 - _02017860 - 2; case 4 - .short _02017898 - _02017860 - 2; case 5 -_0201786C: - mov r0, #0x10 - strb r0, [r1, #0x0] - strb r0, [r2, #0x0] - bx lr -_02017874: - mov r0, #0x20 - strb r0, [r1, #0x0] - strb r0, [r2, #0x0] - bx lr -_0201787C: - mov r0, #0x20 - strb r0, [r1, #0x0] - mov r0, #0x40 - strb r0, [r2, #0x0] - bx lr -_02017886: - mov r0, #0x40 - strb r0, [r1, #0x0] - mov r0, #0x20 - strb r0, [r2, #0x0] - bx lr -_02017890: - mov r0, #0x40 - strb r0, [r1, #0x0] - strb r0, [r2, #0x0] - bx lr -_02017898: - mov r0, #0x80 - strb r0, [r1, #0x0] - strb r0, [r2, #0x0] -_0201789E: - bx lr - - thumb_func_start FUN_020178A0 -FUN_020178A0: ; 0x020178A0 - push {r3-r5, lr} - add r4, r0, #0x0 - mov r2, #0x2c - add r5, r1, #0x0 - mul r5, r2 - add r4, #0x8 - ldr r0, [r4, r5] - cmp r0, #0x0 - beq _020178BA - bl FreeToHeap - mov r0, #0x0 - str r0, [r4, r5] -_020178BA: - pop {r3-r5, pc} - - thumb_func_start FUN_020178BC -FUN_020178BC: ; 0x020178BC - cmp r0, #0x7 - bhi _0201795A - add r0, r0, r0 - add r0, pc - ldrh r0, [r0, #0x6] - lsl r0, r0, #0x10 - asr r0, r0, #0x10 - add pc, r0 -_020178CC: ; jump table (using 16-bit offset) - .short _020178DC - _020178CC - 2; case 0 - .short _020178EC - _020178CC - 2; case 1 - .short _020178FC - _020178CC - 2; case 2 - .short _0201790C - _020178CC - 2; case 3 - .short _0201791C - _020178CC - 2; case 4 - .short _0201792C - _020178CC - 2; case 5 - .short _0201793C - _020178CC - 2; case 6 - .short _0201794C - _020178CC - 2; case 7 -_020178DC: - ldr r2, _0201795C ; =0x04000008 - mov r0, #0x3 - ldrh r3, [r2, #0x0] - bic r3, r0 - add r0, r3, #0x0 - orr r0, r1 - strh r0, [r2, #0x0] - bx lr -_020178EC: - ldr r2, _02017960 ; =0x0400000A - mov r0, #0x3 - ldrh r3, [r2, #0x0] - bic r3, r0 - add r0, r3, #0x0 - orr r0, r1 - strh r0, [r2, #0x0] - bx lr -_020178FC: - ldr r2, _02017964 ; =0x0400000C - mov r0, #0x3 - ldrh r3, [r2, #0x0] - bic r3, r0 - add r0, r3, #0x0 - orr r0, r1 - strh r0, [r2, #0x0] - bx lr -_0201790C: - ldr r2, _02017968 ; =0x0400000E - mov r0, #0x3 - ldrh r3, [r2, #0x0] - bic r3, r0 - add r0, r3, #0x0 - orr r0, r1 - strh r0, [r2, #0x0] - bx lr -_0201791C: - ldr r2, _0201796C ; =0x04001008 - mov r0, #0x3 - ldrh r3, [r2, #0x0] - bic r3, r0 - add r0, r3, #0x0 - orr r0, r1 - strh r0, [r2, #0x0] - bx lr -_0201792C: - ldr r2, _02017970 ; =0x0400100A - mov r0, #0x3 - ldrh r3, [r2, #0x0] - bic r3, r0 - add r0, r3, #0x0 - orr r0, r1 - strh r0, [r2, #0x0] - bx lr -_0201793C: - ldr r2, _02017974 ; =0x0400100C - mov r0, #0x3 - ldrh r3, [r2, #0x0] - bic r3, r0 - add r0, r3, #0x0 - orr r0, r1 - strh r0, [r2, #0x0] - bx lr -_0201794C: - ldr r2, _02017978 ; =0x0400100E - mov r0, #0x3 - ldrh r3, [r2, #0x0] - bic r3, r0 - add r0, r3, #0x0 - orr r0, r1 - strh r0, [r2, #0x0] -_0201795A: - bx lr - .balign 4 -_0201795C: .word 0x04000008 -_02017960: .word 0x0400000A -_02017964: .word 0x0400000C -_02017968: .word 0x0400000E -_0201796C: .word 0x04001008 -_02017970: .word 0x0400100A -_02017974: .word 0x0400100C -_02017978: .word 0x0400100E - - thumb_func_start FUN_0201797C -FUN_0201797C: ; 0x0201797C - push {r3, lr} - cmp r0, #0x7 - bhi _020179DC - add r0, r0, r0 - add r0, pc - ldrh r0, [r0, #0x6] - lsl r0, r0, #0x10 - asr r0, r0, #0x10 - add pc, r0 -_0201798E: ; jump table (using 16-bit offset) - .short _0201799E - _0201798E - 2; case 0 - .short _020179A6 - _0201798E - 2; case 1 - .short _020179AE - _0201798E - 2; case 2 - .short _020179B6 - _0201798E - 2; case 3 - .short _020179BE - _0201798E - 2; case 4 - .short _020179C6 - _0201798E - 2; case 5 - .short _020179CE - _0201798E - 2; case 6 - .short _020179D6 - _0201798E - 2; case 7 -_0201799E: - mov r0, #0x1 - bl GX_EngineAToggleLayers - pop {r3, pc} -_020179A6: - mov r0, #0x2 - bl GX_EngineAToggleLayers - pop {r3, pc} -_020179AE: - mov r0, #0x4 - bl GX_EngineAToggleLayers - pop {r3, pc} -_020179B6: - mov r0, #0x8 - bl GX_EngineAToggleLayers - pop {r3, pc} -_020179BE: - mov r0, #0x1 - bl GX_EngineBToggleLayers - pop {r3, pc} -_020179C6: - mov r0, #0x2 - bl GX_EngineBToggleLayers - pop {r3, pc} -_020179CE: - mov r0, #0x4 - bl GX_EngineBToggleLayers - pop {r3, pc} -_020179D6: - mov r0, #0x8 - bl GX_EngineBToggleLayers -_020179DC: - pop {r3, pc} - .balign 4 - - thumb_func_start FUN_020179E0 -FUN_020179E0: ; 0x020179E0 - push {r4-r6, lr} - add r5, r1, #0x0 - add r4, r0, #0x0 - mov r0, #0x2c - add r6, r5, #0x0 - mul r6, r0 - add r0, r4, #0x0 - add r0, #0x8 - add r1, r2, #0x0 - add r2, r3, #0x0 - add r0, r0, r6 - bl FUN_02017B8C - add r0, r4, r6 - ldr r1, [r0, #0x14] - ldr r0, [r0, #0x18] - cmp r5, #0x7 - bls _02017A06 - b _02017B1C -_02017A06: - add r2, r5, r5 - add r2, pc - ldrh r2, [r2, #0x6] - lsl r2, r2, #0x10 - asr r2, r2, #0x10 - add pc, r2 -_02017A12: ; jump table (using 16-bit offset) - .short _02017A22 - _02017A12 - 2; case 0 - .short _02017A38 - _02017A12 - 2; case 1 - .short _02017A4E - _02017A12 - 2; case 2 - .short _02017A78 - _02017A12 - 2; case 3 - .short _02017AA2 - _02017A12 - 2; case 4 - .short _02017AB8 - _02017A12 - 2; case 5 - .short _02017ACE - _02017A12 - 2; case 6 - .short _02017AF6 - _02017A12 - 2; case 7 -_02017A22: - ldr r2, _02017B20 ; =0x000001FF - add r3, r1, #0x0 - lsl r1, r0, #0x10 - lsl r0, r2, #0x10 - and r3, r2 - and r0, r1 - add r1, r3, #0x0 - orr r1, r0 - ldr r0, _02017B24 ; =0x04000010 - str r1, [r0, #0x0] - pop {r4-r6, pc} -_02017A38: - ldr r2, _02017B20 ; =0x000001FF - add r3, r1, #0x0 - lsl r1, r0, #0x10 - lsl r0, r2, #0x10 - and r3, r2 - and r0, r1 - add r1, r3, #0x0 - orr r1, r0 - ldr r0, _02017B28 ; =0x04000014 - str r1, [r0, #0x0] - pop {r4-r6, pc} -_02017A4E: - add r2, r4, #0x0 - add r2, #0x74 - ldrb r2, [r2, #0x0] - cmp r2, #0x0 - bne _02017A6E - ldr r2, _02017B20 ; =0x000001FF - add r3, r1, #0x0 - lsl r1, r0, #0x10 - lsl r0, r2, #0x10 - and r3, r2 - and r0, r1 - add r1, r3, #0x0 - orr r1, r0 - ldr r0, _02017B2C ; =0x04000018 - str r1, [r0, #0x0] - pop {r4-r6, pc} -_02017A6E: - add r0, r4, #0x0 - mov r1, #0x2 - bl FUN_02017C6C - pop {r4-r6, pc} -_02017A78: - add r2, r4, #0x0 - add r2, #0xa0 - ldrb r2, [r2, #0x0] - cmp r2, #0x0 - bne _02017A98 - ldr r2, _02017B20 ; =0x000001FF - add r3, r1, #0x0 - lsl r1, r0, #0x10 - lsl r0, r2, #0x10 - and r3, r2 - and r0, r1 - add r1, r3, #0x0 - orr r1, r0 - ldr r0, _02017B30 ; =0x0400001C - str r1, [r0, #0x0] - pop {r4-r6, pc} -_02017A98: - add r0, r4, #0x0 - mov r1, #0x3 - bl FUN_02017C6C - pop {r4-r6, pc} -_02017AA2: - ldr r2, _02017B20 ; =0x000001FF - add r3, r1, #0x0 - lsl r1, r0, #0x10 - lsl r0, r2, #0x10 - and r3, r2 - and r0, r1 - add r1, r3, #0x0 - orr r1, r0 - ldr r0, _02017B34 ; =0x04001010 - str r1, [r0, #0x0] - pop {r4-r6, pc} -_02017AB8: - ldr r2, _02017B20 ; =0x000001FF - add r3, r1, #0x0 - lsl r1, r0, #0x10 - lsl r0, r2, #0x10 - and r3, r2 - and r0, r1 - add r1, r3, #0x0 - orr r1, r0 - ldr r0, _02017B38 ; =0x04001014 - str r1, [r0, #0x0] - pop {r4-r6, pc} -_02017ACE: - mov r2, #0x49 - lsl r2, r2, #0x2 - ldrb r3, [r4, r2] - cmp r3, #0x0 - bne _02017AEC - add r2, #0xdb - and r2, r1 - lsl r1, r0, #0x10 - ldr r0, _02017B3C ; =0x01FF0000 - and r0, r1 - add r1, r2, #0x0 - orr r1, r0 - ldr r0, _02017B40 ; =0x04001018 - str r1, [r0, #0x0] - pop {r4-r6, pc} -_02017AEC: - add r0, r4, #0x0 - mov r1, #0x6 - bl FUN_02017C6C - pop {r4-r6, pc} -_02017AF6: - mov r2, #0x15 - lsl r2, r2, #0x4 - ldrb r3, [r4, r2] - cmp r3, #0x0 - bne _02017B14 - add r2, #0xaf - and r2, r1 - lsl r1, r0, #0x10 - ldr r0, _02017B3C ; =0x01FF0000 - and r0, r1 - add r1, r2, #0x0 - orr r1, r0 - ldr r0, _02017B44 ; =0x0400101C - str r1, [r0, #0x0] - pop {r4-r6, pc} -_02017B14: - add r0, r4, #0x0 - mov r1, #0x7 - bl FUN_02017C6C -_02017B1C: - pop {r4-r6, pc} - nop -_02017B20: .word 0x000001FF -_02017B24: .word 0x04000010 -_02017B28: .word 0x04000014 -_02017B2C: .word 0x04000018 -_02017B30: .word 0x0400001C -_02017B34: .word 0x04001010 -_02017B38: .word 0x04001014 -_02017B3C: .word 0x01FF0000 -_02017B40: .word 0x04001018 -_02017B44: .word 0x0400101C - - thumb_func_start FUN_02017B48 -FUN_02017B48: ; 0x02017B48 - mov r2, #0x2c - mul r2, r1 - add r0, r0, r2 - ldr r0, [r0, #0x14] - bx lr - .balign 4 - - thumb_func_start FUN_02017B54 -FUN_02017B54: ; 0x02017B54 - mov r2, #0x2c - mul r2, r1 - add r0, r0, r2 - ldr r0, [r0, #0x18] - bx lr - .balign 4 - - thumb_func_start FUN_02017B60 -FUN_02017B60: ; 0x02017B60 - push {r3-r5, lr} - add r5, r0, #0x0 - add r4, r1, #0x0 - add r1, r5, #0x0 - mov r0, #0x2c - add r1, #0x8 - mul r0, r4 - add r0, r1, r0 - add r1, r2, #0x0 - add r2, r3, #0x0 - bl FUN_02017B8C - ldr r0, [sp, #0x18] - ldr r2, [sp, #0x10] - str r0, [sp, #0x0] - ldr r3, [sp, #0x14] - add r0, r5, #0x0 - add r1, r4, #0x0 - bl FUN_02017BD0 - pop {r3-r5, pc} - .balign 4 - - thumb_func_start FUN_02017B8C -FUN_02017B8C: ; 0x02017B8C - cmp r1, #0x5 - bhi _02017BCE - add r1, r1, r1 - add r1, pc - ldrh r1, [r1, #0x6] - lsl r1, r1, #0x10 - asr r1, r1, #0x10 - add pc, r1 -_02017B9C: ; jump table (using 16-bit offset) - .short _02017BA8 - _02017B9C - 2; case 0 - .short _02017BAC - _02017B9C - 2; case 1 - .short _02017BB4 - _02017B9C - 2; case 2 - .short _02017BBC - _02017B9C - 2; case 3 - .short _02017BC0 - _02017B9C - 2; case 4 - .short _02017BC8 - _02017B9C - 2; case 5 -_02017BA8: - str r2, [r0, #0xc] - bx lr -_02017BAC: - ldr r1, [r0, #0xc] - add r1, r1, r2 - str r1, [r0, #0xc] - bx lr -_02017BB4: - ldr r1, [r0, #0xc] - sub r1, r1, r2 - str r1, [r0, #0xc] - bx lr -_02017BBC: - str r2, [r0, #0x10] - bx lr -_02017BC0: - ldr r1, [r0, #0x10] - add r1, r1, r2 - str r1, [r0, #0x10] - bx lr -_02017BC8: - ldr r1, [r0, #0x10] - sub r1, r1, r2 - str r1, [r0, #0x10] -_02017BCE: - bx lr - - thumb_func_start FUN_02017BD0 -FUN_02017BD0: ; 0x02017BD0 - push {r3-r5, lr} - sub sp, #0x8 - add r4, r1, #0x0 - add r1, r2, #0x0 - add r2, r3, #0x0 - ldr r3, [sp, #0x18] - cmp r4, #0x7 - bhi _02017C58 - add r5, r4, r4 - add r5, pc - ldrh r5, [r5, #0x6] - lsl r5, r5, #0x10 - asr r5, r5, #0x10 - add pc, r5 -_02017BEC: ; jump table (using 16-bit offset) - .short _02017C58 - _02017BEC - 2; case 0 - .short _02017C58 - _02017BEC - 2; case 1 - .short _02017BFC - _02017BEC - 2; case 2 - .short _02017C14 - _02017BEC - 2; case 3 - .short _02017C58 - _02017BEC - 2; case 4 - .short _02017C58 - _02017BEC - 2; case 5 - .short _02017C2C - _02017BEC - 2; case 6 - .short _02017C44 - _02017BEC - 2; case 7 -_02017BFC: - mov r5, #0x2c - mul r5, r4 - add r4, r0, r5 - ldr r0, [r4, #0x14] - str r0, [sp, #0x0] - ldr r0, [r4, #0x18] - str r0, [sp, #0x4] - ldr r0, _02017C5C ; =0x04000020 - bl G2x_SetBGyAffine_ - add sp, #0x8 - pop {r3-r5, pc} -_02017C14: - mov r5, #0x2c - mul r5, r4 - add r4, r0, r5 - ldr r0, [r4, #0x14] - str r0, [sp, #0x0] - ldr r0, [r4, #0x18] - str r0, [sp, #0x4] - ldr r0, _02017C60 ; =0x04000030 - bl G2x_SetBGyAffine_ - add sp, #0x8 - pop {r3-r5, pc} -_02017C2C: - mov r5, #0x2c - mul r5, r4 - add r4, r0, r5 - ldr r0, [r4, #0x14] - str r0, [sp, #0x0] - ldr r0, [r4, #0x18] - str r0, [sp, #0x4] - ldr r0, _02017C64 ; =0x04001020 - bl G2x_SetBGyAffine_ - add sp, #0x8 - pop {r3-r5, pc} -_02017C44: - mov r5, #0x2c - mul r5, r4 - add r4, r0, r5 - ldr r0, [r4, #0x14] - str r0, [sp, #0x0] - ldr r0, [r4, #0x18] - str r0, [sp, #0x4] - ldr r0, _02017C68 ; =0x04001030 - bl G2x_SetBGyAffine_ -_02017C58: - add sp, #0x8 - pop {r3-r5, pc} - .balign 4 -_02017C5C: .word 0x04000020 -_02017C60: .word 0x04000030 -_02017C64: .word 0x04001020 -_02017C68: .word 0x04001030 - - thumb_func_start FUN_02017C6C -FUN_02017C6C: ; 0x02017C6C - push {r4-r5, lr} - sub sp, #0x14 - mov r2, #0x1 - lsl r2, r2, #0xc - add r5, r0, #0x0 - add r4, r1, #0x0 - mov r1, #0x0 - add r0, sp, #0x4 - add r3, r2, #0x0 - str r1, [sp, #0x0] - bl MTX22_2DAffine - mov r3, #0x0 - add r0, r5, #0x0 - add r1, r4, #0x0 - add r2, sp, #0x4 - str r3, [sp, #0x0] - bl FUN_02017BD0 - add sp, #0x14 - pop {r4-r5, pc} - .balign 4 - - thumb_func_start FUN_02017C98 -FUN_02017C98: ; 0x02017C98 - push {r3-r5, lr} - cmp r2, #0x0 - bne _02017CA4 - bl MI_UncompressLZ8 - pop {r3-r5, pc} -_02017CA4: - mov r4, #0x3 - add r3, r0, #0x0 - tst r3, r4 - bne _02017CCA - add r3, r1, #0x0 - tst r3, r4 - bne _02017CCA - lsl r3, r2, #0x10 - lsr r3, r3, #0x10 - lsr r4, r3, #0x1f - lsl r5, r3, #0x1e - sub r5, r5, r4 - mov r3, #0x1e - ror r5, r3 - add r3, r4, r5 - bne _02017CCA - bl MIi_CpuCopy32 - pop {r3-r5, pc} -_02017CCA: - bl MIi_CpuCopy16 - pop {r3-r5, pc} - - thumb_func_start FUN_02017CD0 -FUN_02017CD0: ; 0x02017CD0 - push {r3, lr} - mov r2, #0x2c - mul r2, r1 - add r3, r0, r2 - ldr r2, [r3, #0x10] - str r2, [sp, #0x0] - ldr r2, [r3, #0x8] - ldr r3, [r3, #0xc] - bl FUN_02017CE8 - pop {r3, pc} - .balign 4 - - thumb_func_start FUN_02017CE8 -FUN_02017CE8: ; 0x02017CE8 - push {r3-r7, lr} - sub sp, #0x8 - add r5, r0, #0x0 - add r4, r1, #0x0 - add r6, r2, #0x0 - str r3, [sp, #0x0] - cmp r3, #0x0 - bne _02017D56 - mov r0, #0x2c - add r7, r4, #0x0 - mul r7, r0 - add r0, r5, r7 - ldr r0, [r0, #0x8] - str r0, [sp, #0x4] - cmp r0, #0x0 - beq _02017D26 - ldr r1, [sp, #0x4] - add r0, r6, #0x0 - add r2, r3, #0x0 - bl FUN_02017C98 - add r3, r5, r7 - ldr r2, [r3, #0x10] - ldr r1, [sp, #0x4] - ldr r3, [r3, #0xc] - add r0, r4, #0x0 - lsl r2, r2, #0x1 - bl FUN_02017D68 - add sp, #0x8 - pop {r3-r7, pc} -_02017D26: - ldr r0, [r6, #0x0] - lsr r7, r0, #0x8 - ldr r0, [r5, #0x0] - add r1, r7, #0x0 - bl AllocFromHeapAtEnd - add r5, r0, #0x0 - ldr r2, [sp, #0x0] - add r0, r6, #0x0 - add r1, r5, #0x0 - bl FUN_02017C98 - ldr r2, [sp, #0x20] - add r0, r4, #0x0 - add r1, r5, #0x0 - lsl r2, r2, #0x1 - add r3, r7, #0x0 - bl FUN_02017D68 - add r0, r5, #0x0 - bl FreeToHeap - add sp, #0x8 - pop {r3-r7, pc} -_02017D56: - ldr r2, [sp, #0x20] - add r0, r4, #0x0 - add r1, r6, #0x0 - lsl r2, r2, #0x1 - bl FUN_02017D68 - add sp, #0x8 - pop {r3-r7, pc} - .balign 4 - - thumb_func_start FUN_02017D68 -FUN_02017D68: ; 0x02017D68 - push {r3-r7, lr} - add r4, r1, #0x0 - add r6, r3, #0x0 - add r7, r0, #0x0 - add r0, r4, #0x0 - add r1, r6, #0x0 - add r5, r2, #0x0 - bl DC_FlushRange - cmp r7, #0x7 - bhi _02017DF8 - add r0, r7, r7 - add r0, pc - ldrh r0, [r0, #0x6] - lsl r0, r0, #0x10 - asr r0, r0, #0x10 - add pc, r0 -_02017D8A: ; jump table (using 16-bit offset) - .short _02017D9A - _02017D8A - 2; case 0 - .short _02017DA6 - _02017D8A - 2; case 1 - .short _02017DB2 - _02017D8A - 2; case 2 - .short _02017DBE - _02017D8A - 2; case 3 - .short _02017DCA - _02017D8A - 2; case 4 - .short _02017DD6 - _02017D8A - 2; case 5 - .short _02017DE2 - _02017D8A - 2; case 6 - .short _02017DEE - _02017D8A - 2; case 7 -_02017D9A: - add r0, r4, #0x0 - add r1, r5, #0x0 - add r2, r6, #0x0 - bl GX_LoadBG0Scr - pop {r3-r7, pc} -_02017DA6: - add r0, r4, #0x0 - add r1, r5, #0x0 - add r2, r6, #0x0 - bl GX_LoadBG1Scr - pop {r3-r7, pc} -_02017DB2: - add r0, r4, #0x0 - add r1, r5, #0x0 - add r2, r6, #0x0 - bl GX_LoadBG2Scr - pop {r3-r7, pc} -_02017DBE: - add r0, r4, #0x0 - add r1, r5, #0x0 - add r2, r6, #0x0 - bl GX_LoadBG3Scr - pop {r3-r7, pc} -_02017DCA: - add r0, r4, #0x0 - add r1, r5, #0x0 - add r2, r6, #0x0 - bl GXS_LoadBG0Scr - pop {r3-r7, pc} -_02017DD6: - add r0, r4, #0x0 - add r1, r5, #0x0 - add r2, r6, #0x0 - bl GXS_LoadBG1Scr - pop {r3-r7, pc} -_02017DE2: - add r0, r4, #0x0 - add r1, r5, #0x0 - add r2, r6, #0x0 - bl GXS_LoadBG2Scr - pop {r3-r7, pc} -_02017DEE: - add r0, r4, #0x0 - add r1, r5, #0x0 - add r2, r6, #0x0 - bl GXS_LoadBG3Scr -_02017DF8: - pop {r3-r7, pc} - .balign 4 - - thumb_func_start FUN_02017DFC -FUN_02017DFC: ; 0x02017DFC - push {r4, lr} - add r4, r0, #0x0 - add r0, r2, #0x0 - mov r2, #0x2c - mul r2, r1 - add r1, r4, r2 - ldr r1, [r1, #0x8] - add r2, r3, #0x0 - bl FUN_02017C98 - pop {r4, pc} - .balign 4 - - thumb_func_start FUN_02017E14 -FUN_02017E14: ; 0x02017E14 - push {r3-r4, lr} - sub sp, #0x4 - mov r4, #0x2c - mul r4, r1 - add r4, r0, r4 - ldrb r4, [r4, #0x1e] - cmp r4, #0x0 - bne _02017E32 - ldr r4, [sp, #0x10] - lsl r4, r4, #0x5 - str r4, [sp, #0x0] - bl FUN_02017E40 - add sp, #0x4 - pop {r3-r4, pc} -_02017E32: - ldr r4, [sp, #0x10] - lsl r4, r4, #0x6 - str r4, [sp, #0x0] - bl FUN_02017E40 - add sp, #0x4 - pop {r3-r4, pc} - - thumb_func_start FUN_02017E40 -FUN_02017E40: ; 0x02017E40 - push {r3-r7, lr} - add r7, r1, #0x0 - add r5, r2, #0x0 - str r3, [sp, #0x0] - cmp r3, #0x0 - bne _02017E78 - ldr r1, [r5, #0x0] - ldr r0, [r0, #0x0] - lsr r4, r1, #0x8 - add r1, r4, #0x0 - bl AllocFromHeapAtEnd - add r6, r0, #0x0 - ldr r2, [sp, #0x0] - add r0, r5, #0x0 - add r1, r6, #0x0 - bl FUN_02017C98 - ldr r2, [sp, #0x18] - add r0, r7, #0x0 - add r1, r6, #0x0 - add r3, r4, #0x0 - bl FUN_02017E84 - add r0, r6, #0x0 - bl FreeToHeap - pop {r3-r7, pc} -_02017E78: - ldr r2, [sp, #0x18] - add r0, r7, #0x0 - add r1, r5, #0x0 - bl FUN_02017E84 - pop {r3-r7, pc} - - thumb_func_start FUN_02017E84 -FUN_02017E84: ; 0x02017E84 - push {r3-r7, lr} - add r4, r1, #0x0 - add r6, r3, #0x0 - add r7, r0, #0x0 - add r0, r4, #0x0 - add r1, r6, #0x0 - add r5, r2, #0x0 - bl DC_FlushRange - cmp r7, #0x7 - bhi _02017F14 - add r0, r7, r7 - add r0, pc - ldrh r0, [r0, #0x6] - lsl r0, r0, #0x10 - asr r0, r0, #0x10 - add pc, r0 -_02017EA6: ; jump table (using 16-bit offset) - .short _02017EB6 - _02017EA6 - 2; case 0 - .short _02017EC2 - _02017EA6 - 2; case 1 - .short _02017ECE - _02017EA6 - 2; case 2 - .short _02017EDA - _02017EA6 - 2; case 3 - .short _02017EE6 - _02017EA6 - 2; case 4 - .short _02017EF2 - _02017EA6 - 2; case 5 - .short _02017EFE - _02017EA6 - 2; case 6 - .short _02017F0A - _02017EA6 - 2; case 7 -_02017EB6: - add r0, r4, #0x0 - add r1, r5, #0x0 - add r2, r6, #0x0 - bl GX_LoadBG0Char - pop {r3-r7, pc} -_02017EC2: - add r0, r4, #0x0 - add r1, r5, #0x0 - add r2, r6, #0x0 - bl GX_LoadBG1Char - pop {r3-r7, pc} -_02017ECE: - add r0, r4, #0x0 - add r1, r5, #0x0 - add r2, r6, #0x0 - bl GX_LoadBG2Char - pop {r3-r7, pc} -_02017EDA: - add r0, r4, #0x0 - add r1, r5, #0x0 - add r2, r6, #0x0 - bl GX_LoadBG3Char - pop {r3-r7, pc} -_02017EE6: - add r0, r4, #0x0 - add r1, r5, #0x0 - add r2, r6, #0x0 - bl GXS_LoadBG0Char - pop {r3-r7, pc} -_02017EF2: - add r0, r4, #0x0 - add r1, r5, #0x0 - add r2, r6, #0x0 - bl GXS_LoadBG1Char - pop {r3-r7, pc} -_02017EFE: - add r0, r4, #0x0 - add r1, r5, #0x0 - add r2, r6, #0x0 - bl GXS_LoadBG2Char - pop {r3-r7, pc} -_02017F0A: - add r0, r4, #0x0 - add r1, r5, #0x0 - add r2, r6, #0x0 - bl GXS_LoadBG3Char -_02017F14: - pop {r3-r7, pc} - .balign 4 - - thumb_func_start FUN_02017F18 -FUN_02017F18: ; 0x02017F18 - push {r3-r7, lr} - add r6, r0, #0x0 - add r5, r1, #0x0 - add r0, r3, #0x0 - add r7, r2, #0x0 - str r3, [sp, #0x0] - bl AllocFromHeapAtEnd - add r4, r0, #0x0 - mov r1, #0x0 - add r2, r5, #0x0 - bl memset - add r0, r6, #0x0 - add r1, r4, #0x0 - add r2, r7, #0x0 - add r3, r5, #0x0 - bl FUN_02017E84 - ldr r0, [sp, #0x0] - add r1, r4, #0x0 - bl FUN_02016A8C - pop {r3-r7, pc} - - thumb_func_start FUN_02017F48 -FUN_02017F48: ; 0x02017F48 - push {r3-r7, lr} - sub sp, #0x8 - add r7, r1, #0x0 - add r4, r0, #0x0 - mov r1, #0x2c - add r6, r7, #0x0 - add r4, #0x1f - mul r6, r1 - ldrb r1, [r4, r6] - ldr r0, [r0, #0x0] - add r5, r2, #0x0 - mul r1, r3 - str r1, [sp, #0x0] - bl AllocFromHeapAtEnd - str r0, [sp, #0x4] - ldrb r0, [r4, r6] - cmp r0, #0x20 - bne _02017F82 - lsl r2, r5, #0xc - lsl r1, r5, #0x8 - lsl r0, r5, #0x4 - orr r1, r2 - orr r0, r1 - add r1, r5, #0x0 - orr r1, r0 - lsl r0, r1, #0x10 - add r5, r1, #0x0 - b _02017F8C -_02017F82: - lsl r2, r5, #0x18 - lsl r1, r5, #0x10 - lsl r0, r5, #0x8 - orr r1, r2 - orr r0, r1 -_02017F8C: - orr r5, r0 - ldr r1, [sp, #0x4] - ldr r2, [sp, #0x0] - add r0, r5, #0x0 - bl MIi_CpuClearFast - lsl r0, r7, #0x18 - ldrb r2, [r4, r6] - ldr r3, [sp, #0x20] - ldr r1, [sp, #0x4] - mul r2, r3 - ldr r3, [sp, #0x0] - lsr r0, r0, #0x18 - bl FUN_02017E84 - ldr r0, [sp, #0x4] - bl FreeToHeap - add sp, #0x8 - pop {r3-r7, pc} - - thumb_func_start FUN_02017FB4 -FUN_02017FB4: ; 0x02017FB4 - push {r3-r7, lr} - add r5, r1, #0x0 - add r4, r2, #0x0 - add r6, r0, #0x0 - add r0, r5, #0x0 - add r1, r4, #0x0 - add r7, r3, #0x0 - bl DC_FlushRange - cmp r6, #0x4 - bhs _02017FD6 - add r0, r5, #0x0 - add r1, r7, #0x0 - add r2, r4, #0x0 - bl GX_LoadBGPltt - pop {r3-r7, pc} -_02017FD6: - add r0, r5, #0x0 - add r1, r7, #0x0 - add r2, r4, #0x0 - bl GXS_LoadBGPltt - pop {r3-r7, pc} - .balign 4 - - thumb_func_start FUN_02017FE4 -FUN_02017FE4: ; 0x02017FE4 - push {r0-r3} - push {r3, lr} - add r1, sp, #0xc - mov r2, #0x2 - mov r3, #0x0 - bl FUN_02017FB4 - pop {r3} - pop {r3} - add sp, #0x10 - bx r3 - .balign 4 - - thumb_func_start FUN_02017FFC -FUN_02017FFC: ; 0x02017FFC - cmp r2, #0x5 - bhi _02018066 - add r2, r2, r2 - add r2, pc - ldrh r2, [r2, #0x6] - lsl r2, r2, #0x10 - asr r2, r2, #0x10 - add pc, r2 -_0201800C: ; jump table (using 16-bit offset) - .short _02018018 - _0201800C - 2; case 0 - .short _02018022 - _0201800C - 2; case 1 - .short _02018022 - _0201800C - 2; case 2 - .short _0201802C - _0201800C - 2; case 3 - .short _02018042 - _0201800C - 2; case 4 - .short _02018064 - _0201800C - 2; case 5 -_02018018: - lsl r1, r1, #0x4 - add r0, r0, r1 - lsl r0, r0, #0x10 - lsr r0, r0, #0x10 - bx lr -_02018022: - lsl r1, r1, #0x5 - add r0, r0, r1 - lsl r0, r0, #0x10 - lsr r0, r0, #0x10 - bx lr -_0201802C: - mov r2, #0x1f - add r3, r0, #0x0 - and r3, r2 - mov r2, #0x1f - bic r0, r2 - add r0, r1, r0 - lsl r0, r0, #0x5 - add r0, r3, r0 - lsl r0, r0, #0x10 - lsr r0, r0, #0x10 - bx lr -_02018042: - asr r2, r1, #0x5 - asr r3, r0, #0x5 - lsl r2, r2, #0x1 - add r2, r3, r2 - lsl r2, r2, #0x10 - lsr r2, r2, #0x10 - lsl r2, r2, #0x1a - lsr r3, r2, #0x10 - mov r2, #0x1f - and r2, r0 - lsl r0, r1, #0x1b - lsr r0, r0, #0x16 - add r0, r2, r0 - add r0, r3, r0 - lsl r0, r0, #0x10 - lsr r0, r0, #0x10 - bx lr -_02018064: - mov r0, #0x0 -_02018066: - bx lr - - thumb_func_start FUN_02018068 -FUN_02018068: ; 0x02018068 - push {r3-r7} - sub sp, #0x4 - str r3, [sp, #0x0] - add r6, r2, #0x0 - ldr r5, [sp, #0x0] - add r4, r6, #0x0 - sub r4, #0x20 - sub r5, #0x20 - mov r2, #0x0 - lsl r4, r4, #0x10 - lsl r5, r5, #0x10 - add r3, r2, #0x0 - asr r4, r4, #0x10 - asr r7, r5, #0x10 - lsr r5, r0, #0x5 - beq _0201808E - add r2, r2, #0x1 - lsl r2, r2, #0x18 - lsr r2, r2, #0x18 -_0201808E: - lsr r5, r1, #0x5 - beq _02018098 - add r2, r2, #0x2 - lsl r2, r2, #0x18 - lsr r2, r2, #0x18 -_02018098: - cmp r2, #0x3 - bhi _02018140 - add r2, r2, r2 - add r2, pc - ldrh r2, [r2, #0x6] - lsl r2, r2, #0x10 - asr r2, r2, #0x10 - add pc, r2 -_020180A8: ; jump table (using 16-bit offset) - .short _020180B0 - _020180A8 - 2; case 0 - .short _020180CE - _020180A8 - 2; case 1 - .short _020180F4 - _020180A8 - 2; case 2 - .short _02018120 - _020180A8 - 2; case 3 -_020180B0: - cmp r4, #0x0 - blt _020180C0 - lsl r1, r1, #0x5 - add r0, r0, r1 - add r0, r3, r0 - lsl r0, r0, #0x10 - lsr r3, r0, #0x10 - b _02018140 -_020180C0: - add r2, r1, #0x0 - mul r2, r6 - add r0, r0, r2 - add r0, r3, r0 - lsl r0, r0, #0x10 - lsr r3, r0, #0x10 - b _02018140 -_020180CE: - cmp r7, #0x0 - blt _020180D8 - mov r2, #0x1 - lsl r2, r2, #0xa - b _020180DC -_020180D8: - ldr r2, [sp, #0x0] - lsl r2, r2, #0x5 -_020180DC: - add r2, r3, r2 - lsl r2, r2, #0x10 - lsr r3, r2, #0x10 - mov r2, #0x1f - and r2, r0 - add r0, r1, #0x0 - mul r0, r4 - add r0, r2, r0 - add r0, r3, r0 - lsl r0, r0, #0x10 - lsr r3, r0, #0x10 - b _02018140 -_020180F4: - lsl r2, r6, #0x5 - add r2, r3, r2 - lsl r2, r2, #0x10 - lsr r2, r2, #0x10 - cmp r4, #0x0 - blt _0201810E - lsl r1, r1, #0x1b - lsr r1, r1, #0x16 - add r0, r0, r1 - add r0, r2, r0 - lsl r0, r0, #0x10 - lsr r3, r0, #0x10 - b _02018140 -_0201810E: - mov r3, #0x1f - and r1, r3 - add r3, r1, #0x0 - mul r3, r6 - add r0, r0, r3 - add r0, r2, r0 - lsl r0, r0, #0x10 - lsr r3, r0, #0x10 - b _02018140 -_02018120: - add r2, r6, r7 - lsl r2, r2, #0x5 - add r2, r3, r2 - add r5, r0, #0x0 - mov r3, #0x1f - add r0, r1, #0x0 - and r0, r3 - add r1, r0, #0x0 - lsl r2, r2, #0x10 - and r5, r3 - mul r1, r4 - lsr r2, r2, #0x10 - add r0, r5, r1 - add r0, r2, r0 - lsl r0, r0, #0x10 - lsr r3, r0, #0x10 -_02018140: - add r0, r3, #0x0 - add sp, #0x4 - pop {r3-r7} - bx lr - - thumb_func_start FUN_02018148 -FUN_02018148: ; 0x02018148 - push {r3-r6, lr} - sub sp, #0x1c - add r6, sp, #0x20 - ldrb r5, [r6, #0x14] - str r5, [sp, #0x0] - ldrb r4, [r6, #0x18] - str r4, [sp, #0x4] - str r2, [sp, #0x8] - mov r2, #0x0 - str r2, [sp, #0xc] - str r2, [sp, #0x10] - str r5, [sp, #0x14] - str r4, [sp, #0x18] - add r2, r3, #0x0 - ldrb r3, [r6, #0x10] - bl FUN_02018170 - add sp, #0x1c - pop {r3-r6, pc} - .balign 4 - - thumb_func_start FUN_02018170 -FUN_02018170: ; 0x02018170 - push {r4-r5, lr} - sub sp, #0x1c - add r4, r2, #0x0 - add r2, r3, #0x0 - mov r3, #0x2c - add r5, r1, #0x0 - mul r5, r3 - add r1, r0, r5 - ldrb r1, [r1, #0x1c] - add r3, sp, #0x18 - cmp r1, #0x1 - beq _020181BA - ldrb r1, [r3, #0x14] - add r0, #0x8 - add r0, r0, r5 - str r1, [sp, #0x0] - ldr r1, [sp, #0x30] - str r1, [sp, #0x4] - ldrb r1, [r3, #0x1c] - str r1, [sp, #0x8] - add r1, sp, #0x38 - ldrb r1, [r1, #0x0] - str r1, [sp, #0xc] - add r1, sp, #0x3c - ldrb r1, [r1, #0x0] - str r1, [sp, #0x10] - add r1, sp, #0x40 - ldrb r1, [r1, #0x0] - str r1, [sp, #0x14] - mov r1, #0x0 - str r1, [sp, #0x18] - ldrb r3, [r3, #0x10] - add r1, r4, #0x0 - bl FUN_02018268 - add sp, #0x1c - pop {r4-r5, pc} -_020181BA: - ldrb r1, [r3, #0x14] - add r0, #0x8 - add r0, r0, r5 - str r1, [sp, #0x0] - ldr r1, [sp, #0x30] - str r1, [sp, #0x4] - ldrb r1, [r3, #0x1c] - str r1, [sp, #0x8] - add r1, sp, #0x38 - ldrb r1, [r1, #0x0] - str r1, [sp, #0xc] - add r1, sp, #0x3c - ldrb r1, [r1, #0x0] - str r1, [sp, #0x10] - add r1, sp, #0x40 - ldrb r1, [r1, #0x0] - str r1, [sp, #0x14] - mov r1, #0x0 - str r1, [sp, #0x18] - ldrb r3, [r3, #0x10] - add r1, r4, #0x0 - bl FUN_020183DC - add sp, #0x1c - pop {r4-r5, pc} - - thumb_func_start FUN_020181EC -FUN_020181EC: ; 0x020181EC - push {r4-r5, lr} - sub sp, #0x1c - add r4, r2, #0x0 - add r2, r3, #0x0 - mov r3, #0x2c - add r5, r1, #0x0 - mul r5, r3 - add r1, r0, r5 - ldrb r1, [r1, #0x1c] - add r3, sp, #0x18 - cmp r1, #0x1 - beq _02018236 - ldrb r1, [r3, #0x14] - add r0, #0x8 - add r0, r0, r5 - str r1, [sp, #0x0] - ldr r1, [sp, #0x30] - str r1, [sp, #0x4] - ldrb r1, [r3, #0x1c] - str r1, [sp, #0x8] - add r1, sp, #0x38 - ldrb r1, [r1, #0x0] - str r1, [sp, #0xc] - add r1, sp, #0x3c - ldrb r1, [r1, #0x0] - str r1, [sp, #0x10] - add r1, sp, #0x40 - ldrb r1, [r1, #0x0] - str r1, [sp, #0x14] - mov r1, #0x1 - str r1, [sp, #0x18] - ldrb r3, [r3, #0x10] - add r1, r4, #0x0 - bl FUN_02018268 - add sp, #0x1c - pop {r4-r5, pc} -_02018236: - ldrb r1, [r3, #0x14] - add r0, #0x8 - add r0, r0, r5 - str r1, [sp, #0x0] - ldr r1, [sp, #0x30] - str r1, [sp, #0x4] - ldrb r1, [r3, #0x1c] - str r1, [sp, #0x8] - add r1, sp, #0x38 - ldrb r1, [r1, #0x0] - str r1, [sp, #0xc] - add r1, sp, #0x3c - ldrb r1, [r1, #0x0] - str r1, [sp, #0x10] - add r1, sp, #0x40 - ldrb r1, [r1, #0x0] - str r1, [sp, #0x14] - mov r1, #0x1 - str r1, [sp, #0x18] - ldrb r3, [r3, #0x10] - add r1, r4, #0x0 - bl FUN_020183DC - add sp, #0x1c - pop {r4-r5, pc} - - thumb_func_start FUN_02018268 -FUN_02018268: ; 0x02018268 - push {r4-r7, lr} - sub sp, #0x44 - str r1, [sp, #0x0] - str r2, [sp, #0x4] - add r7, r0, #0x0 - ldr r0, [sp, #0x58] - add r6, r3, #0x0 - str r0, [sp, #0x58] - ldr r0, [sp, #0x5c] - ldr r4, [sp, #0x68] - str r0, [sp, #0x5c] - ldr r0, [sp, #0x6c] - str r0, [sp, #0x6c] - ldr r0, [r7, #0x0] - str r0, [sp, #0x2c] - cmp r0, #0x0 - bne _0201828C - b _020183D6 -_0201828C: - ldrb r0, [r7, #0x15] - add r1, sp, #0x40 - add r1, #0x1 - add r2, sp, #0x40 - bl FUN_02017850 - add r0, sp, #0x70 - ldrb r0, [r0, #0x0] - cmp r0, #0x0 - bne _0201833A - mov r0, #0x0 - str r0, [sp, #0x28] - ldr r0, [sp, #0x58] - cmp r0, #0x0 - bls _020182CA - add r1, sp, #0x48 - ldrb r0, [r1, #0x1c] - str r0, [sp, #0x1c] - ldrb r0, [r1, #0x18] - str r0, [sp, #0x18] - lsl r1, r0, #0x1 - ldr r0, [sp, #0x5c] - add r0, r0, r1 - str r0, [sp, #0x14] -_020182BC: - ldr r1, [sp, #0x4] - ldr r0, [sp, #0x28] - add r0, r1, r0 - add r1, sp, #0x40 - ldrb r1, [r1, #0x0] - cmp r0, r1 - blt _020182CC -_020182CA: - b _020183D6 -_020182CC: - ldr r2, [sp, #0x1c] - ldr r1, [sp, #0x28] - add r2, r2, r1 - ldr r1, [sp, #0x6c] - cmp r2, r1 - bge _020183D6 - mov r5, #0x0 - cmp r6, #0x0 - bls _02018326 - add r1, r4, #0x0 - mul r1, r2 - lsl r2, r1, #0x1 - ldr r1, [sp, #0x14] - lsl r0, r0, #0x18 - add r1, r1, r2 - lsr r0, r0, #0x18 - str r1, [sp, #0x10] - str r0, [sp, #0x30] -_020182F0: - add r1, sp, #0x40 - ldr r0, [sp, #0x0] - ldrb r1, [r1, #0x1] - add r0, r0, r5 - cmp r0, r1 - bge _02018326 - ldr r1, [sp, #0x18] - add r1, r1, r5 - cmp r1, r4 - bge _02018326 - ldrb r2, [r7, #0x15] - lsl r0, r0, #0x18 - ldr r1, [sp, #0x30] - lsr r0, r0, #0x18 - bl FUN_02017FFC - ldr r1, [sp, #0x10] - lsl r2, r5, #0x1 - ldrh r1, [r1, r2] - lsl r2, r0, #0x1 - ldr r0, [sp, #0x2c] - strh r1, [r0, r2] - add r0, r5, #0x1 - lsl r0, r0, #0x18 - lsr r5, r0, #0x18 - cmp r5, r6 - blo _020182F0 -_02018326: - ldr r0, [sp, #0x28] - add r0, r0, #0x1 - lsl r0, r0, #0x18 - lsr r1, r0, #0x18 - str r1, [sp, #0x28] - ldr r0, [sp, #0x58] - cmp r1, r0 - blo _020182BC - add sp, #0x44 - pop {r4-r7, pc} -_0201833A: - mov r0, #0x0 - str r0, [sp, #0x8] - ldr r0, [sp, #0x58] - cmp r0, #0x0 - bls _020183D6 - add r1, sp, #0x48 - ldrb r0, [r1, #0x1c] - str r0, [sp, #0x24] - ldrb r0, [r1, #0x18] - str r0, [sp, #0x20] -_0201834E: - ldr r1, [sp, #0x4] - ldr r0, [sp, #0x8] - add r1, r1, r0 - add r0, sp, #0x40 - ldrb r0, [r0, #0x0] - cmp r1, r0 - bge _020183D6 - ldr r2, [sp, #0x24] - ldr r0, [sp, #0x8] - add r0, r2, r0 - ldr r2, [sp, #0x6c] - cmp r0, r2 - bge _020183D6 - mov r5, #0x0 - cmp r6, #0x0 - bls _020183C6 - lsl r1, r1, #0x18 - lsl r0, r0, #0x18 - lsr r1, r1, #0x18 - lsr r0, r0, #0x18 - str r1, [sp, #0x34] - str r0, [sp, #0x3c] -_0201837A: - add r1, sp, #0x40 - ldr r0, [sp, #0x0] - ldrb r1, [r1, #0x1] - add r0, r0, r5 - cmp r0, r1 - bge _020183C6 - ldr r1, [sp, #0x20] - add r1, r1, r5 - str r1, [sp, #0xc] - cmp r1, r4 - bge _020183C6 - ldrb r2, [r7, #0x15] - lsl r0, r0, #0x18 - ldr r1, [sp, #0x34] - lsr r0, r0, #0x18 - bl FUN_02017FFC - str r0, [sp, #0x38] - ldr r0, [sp, #0xc] - ldr r1, [sp, #0x3c] - lsl r0, r0, #0x18 - ldr r3, [sp, #0x6c] - lsr r0, r0, #0x18 - add r2, r4, #0x0 - bl FUN_02018068 - lsl r1, r0, #0x1 - ldr r0, [sp, #0x5c] - ldrh r0, [r0, r1] - ldr r1, [sp, #0x38] - lsl r2, r1, #0x1 - ldr r1, [sp, #0x2c] - strh r0, [r1, r2] - add r0, r5, #0x1 - lsl r0, r0, #0x18 - lsr r5, r0, #0x18 - cmp r5, r6 - blo _0201837A -_020183C6: - ldr r0, [sp, #0x8] - add r0, r0, #0x1 - lsl r0, r0, #0x18 - lsr r1, r0, #0x18 - str r1, [sp, #0x8] - ldr r0, [sp, #0x58] - cmp r1, r0 - blo _0201834E -_020183D6: - add sp, #0x44 - pop {r4-r7, pc} - .balign 4 - - thumb_func_start FUN_020183DC -FUN_020183DC: ; 0x020183DC - push {r4-r7, lr} - sub sp, #0x44 - str r1, [sp, #0x0] - str r2, [sp, #0x4] - add r7, r0, #0x0 - ldr r0, [sp, #0x58] - add r6, r3, #0x0 - str r0, [sp, #0x58] - ldr r0, [sp, #0x5c] - ldr r4, [sp, #0x68] - str r0, [sp, #0x5c] - ldr r0, [sp, #0x6c] - str r0, [sp, #0x6c] - ldr r0, [r7, #0x0] - str r0, [sp, #0x2c] - cmp r0, #0x0 - bne _02018400 - b _0201853C -_02018400: - ldrb r0, [r7, #0x15] - add r1, sp, #0x40 - add r1, #0x1 - add r2, sp, #0x40 - bl FUN_02017850 - add r0, sp, #0x70 - ldrb r0, [r0, #0x0] - cmp r0, #0x0 - bne _020184A4 - mov r0, #0x0 - str r0, [sp, #0x28] - ldr r0, [sp, #0x58] - cmp r0, #0x0 - bhi _02018420 - b _0201853C -_02018420: - add r1, sp, #0x48 - ldrb r0, [r1, #0x1c] - str r0, [sp, #0x1c] - ldrb r0, [r1, #0x18] - ldr r1, [sp, #0x5c] - str r0, [sp, #0x18] - add r0, r1, r0 - str r0, [sp, #0x14] -_02018430: - ldr r1, [sp, #0x4] - ldr r0, [sp, #0x28] - add r0, r1, r0 - add r1, sp, #0x40 - ldrb r1, [r1, #0x0] - cmp r0, r1 - bge _0201853C - ldr r2, [sp, #0x1c] - ldr r1, [sp, #0x28] - add r2, r2, r1 - ldr r1, [sp, #0x6c] - cmp r2, r1 - bge _0201853C - mov r5, #0x0 - cmp r6, #0x0 - bls _02018490 - ldr r1, [sp, #0x14] - mul r2, r4 - lsl r0, r0, #0x18 - add r1, r1, r2 - lsr r0, r0, #0x18 - str r1, [sp, #0x10] - str r0, [sp, #0x30] -_0201845E: - add r1, sp, #0x40 - ldr r0, [sp, #0x0] - ldrb r1, [r1, #0x1] - add r0, r0, r5 - cmp r0, r1 - bge _02018490 - ldr r1, [sp, #0x18] - add r1, r1, r5 - cmp r1, r4 - bge _02018490 - ldrb r2, [r7, #0x15] - lsl r0, r0, #0x18 - ldr r1, [sp, #0x30] - lsr r0, r0, #0x18 - bl FUN_02017FFC - ldr r1, [sp, #0x10] - ldrb r2, [r1, r5] - ldr r1, [sp, #0x2c] - strb r2, [r1, r0] - add r0, r5, #0x1 - lsl r0, r0, #0x18 - lsr r5, r0, #0x18 - cmp r5, r6 - blo _0201845E -_02018490: - ldr r0, [sp, #0x28] - add r0, r0, #0x1 - lsl r0, r0, #0x18 - lsr r1, r0, #0x18 - str r1, [sp, #0x28] - ldr r0, [sp, #0x58] - cmp r1, r0 - blo _02018430 - add sp, #0x44 - pop {r4-r7, pc} -_020184A4: - mov r0, #0x0 - str r0, [sp, #0x8] - ldr r0, [sp, #0x58] - cmp r0, #0x0 - bls _0201853C - add r1, sp, #0x48 - ldrb r0, [r1, #0x1c] - str r0, [sp, #0x24] - ldrb r0, [r1, #0x18] - str r0, [sp, #0x20] -_020184B8: - ldr r1, [sp, #0x4] - ldr r0, [sp, #0x8] - add r1, r1, r0 - add r0, sp, #0x40 - ldrb r0, [r0, #0x0] - cmp r1, r0 - bge _0201853C - ldr r2, [sp, #0x24] - ldr r0, [sp, #0x8] - add r0, r2, r0 - ldr r2, [sp, #0x6c] - cmp r0, r2 - bge _0201853C - mov r5, #0x0 - cmp r6, #0x0 - bls _0201852C - lsl r1, r1, #0x18 - lsl r0, r0, #0x18 - lsr r1, r1, #0x18 - lsr r0, r0, #0x18 - str r1, [sp, #0x34] - str r0, [sp, #0x3c] -_020184E4: - add r1, sp, #0x40 - ldr r0, [sp, #0x0] - ldrb r1, [r1, #0x1] - add r0, r0, r5 - cmp r0, r1 - bge _0201852C - ldr r1, [sp, #0x20] - add r1, r1, r5 - str r1, [sp, #0xc] - cmp r1, r4 - bge _0201852C - ldrb r2, [r7, #0x15] - lsl r0, r0, #0x18 - ldr r1, [sp, #0x34] - lsr r0, r0, #0x18 - bl FUN_02017FFC - str r0, [sp, #0x38] - ldr r0, [sp, #0xc] - ldr r1, [sp, #0x3c] - lsl r0, r0, #0x18 - ldr r3, [sp, #0x6c] - lsr r0, r0, #0x18 - add r2, r4, #0x0 - bl FUN_02018068 - ldr r1, [sp, #0x5c] - ldrb r2, [r1, r0] - ldr r1, [sp, #0x2c] - ldr r0, [sp, #0x38] - strb r2, [r1, r0] - add r0, r5, #0x1 - lsl r0, r0, #0x18 - lsr r5, r0, #0x18 - cmp r5, r6 - blo _020184E4 -_0201852C: - ldr r0, [sp, #0x8] - add r0, r0, #0x1 - lsl r0, r0, #0x18 - lsr r1, r0, #0x18 - str r1, [sp, #0x8] - ldr r0, [sp, #0x58] - cmp r1, r0 - blo _020184B8 -_0201853C: - add sp, #0x44 - pop {r4-r7, pc} - - thumb_func_start FUN_02018540 -FUN_02018540: ; 0x02018540 - push {r4-r5, lr} - sub sp, #0xc - add r4, r2, #0x0 - add r2, r3, #0x0 - mov r3, #0x2c - add r5, r1, #0x0 - mul r5, r3 - add r1, r0, r5 - ldrb r1, [r1, #0x1c] - add r3, sp, #0x8 - cmp r1, #0x1 - beq _02018574 - ldrb r1, [r3, #0x14] - add r0, #0x8 - add r0, r0, r5 - str r1, [sp, #0x0] - ldrb r1, [r3, #0x18] - str r1, [sp, #0x4] - ldrb r1, [r3, #0x1c] - str r1, [sp, #0x8] - ldrb r3, [r3, #0x10] - add r1, r4, #0x0 - bl FUN_02018590 - add sp, #0xc - pop {r4-r5, pc} -_02018574: - ldrb r1, [r3, #0x14] - add r0, #0x8 - add r0, r0, r5 - str r1, [sp, #0x0] - ldrb r1, [r3, #0x18] - str r1, [sp, #0x4] - lsl r1, r4, #0x18 - ldrb r3, [r3, #0x10] - lsr r1, r1, #0x18 - bl FUN_02018640 - add sp, #0xc - pop {r4-r5, pc} - .balign 4 - - thumb_func_start FUN_02018590 -FUN_02018590: ; 0x02018590 - push {r4-r7, lr} - sub sp, #0x1c - str r2, [sp, #0x4] - str r3, [sp, #0x8] - ldr r4, [r0, #0x0] - add r7, r1, #0x0 - str r0, [sp, #0x0] - ldr r6, [sp, #0x38] - cmp r4, #0x0 - beq _0201863A - ldrb r0, [r0, #0x15] - add r1, sp, #0x18 - add r1, #0x1 - add r2, sp, #0x18 - bl FUN_02017850 - add r0, sp, #0x20 - ldrb r2, [r0, #0x14] - ldr r1, [sp, #0x8] - add r1, r1, r2 - ldr r2, [sp, #0x8] - str r1, [sp, #0xc] - cmp r2, r1 - bge _0201863A - ldrb r2, [r0, #0x10] - ldr r0, [sp, #0x4] - lsl r1, r6, #0xc - add r0, r0, r2 - add r1, r1, r7 - str r0, [sp, #0x10] - lsl r0, r1, #0x10 - lsr r0, r0, #0x10 - str r0, [sp, #0x14] -_020185D2: - add r0, sp, #0x18 - ldrb r1, [r0, #0x0] - ldr r0, [sp, #0x8] - cmp r0, r1 - bhs _0201863A - ldr r5, [sp, #0x4] - ldr r0, [sp, #0x10] - add r1, r5, #0x0 - cmp r1, r0 - bge _0201862A -_020185E6: - add r0, sp, #0x18 - ldrb r0, [r0, #0x1] - cmp r5, r0 - bhs _0201862A - ldr r2, [sp, #0x0] - ldr r1, [sp, #0x8] - ldrb r2, [r2, #0x15] - add r0, r5, #0x0 - bl FUN_02017FFC - cmp r6, #0x11 - bne _02018604 - lsl r0, r0, #0x1 - strh r7, [r4, r0] - b _0201861E -_02018604: - cmp r6, #0x10 - bne _02018618 - lsl r0, r0, #0x1 - ldrh r2, [r4, r0] - mov r1, #0xf - lsl r1, r1, #0xc - and r1, r2 - add r1, r7, r1 - strh r1, [r4, r0] - b _0201861E -_02018618: - lsl r1, r0, #0x1 - ldr r0, [sp, #0x14] - strh r0, [r4, r1] -_0201861E: - add r0, r5, #0x1 - lsl r0, r0, #0x18 - lsr r5, r0, #0x18 - ldr r0, [sp, #0x10] - cmp r5, r0 - blt _020185E6 -_0201862A: - ldr r0, [sp, #0x8] - add r0, r0, #0x1 - lsl r0, r0, #0x18 - lsr r1, r0, #0x18 - ldr r0, [sp, #0xc] - str r1, [sp, #0x8] - cmp r1, r0 - blt _020185D2 -_0201863A: - add sp, #0x1c - pop {r4-r7, pc} - .balign 4 - - thumb_func_start FUN_02018640 -FUN_02018640: ; 0x02018640 - push {r4-r7, lr} - sub sp, #0x14 - str r1, [sp, #0x0] - add r7, r0, #0x0 - str r2, [sp, #0x4] - ldr r0, [r7, #0x0] - add r5, r3, #0x0 - str r0, [sp, #0xc] - cmp r0, #0x0 - beq _020186B0 - ldrb r0, [r7, #0x15] - add r1, sp, #0x10 - add r1, #0x1 - add r2, sp, #0x10 - bl FUN_02017850 - add r1, sp, #0x18 - ldrb r0, [r1, #0x14] - add r0, r5, r0 - str r0, [sp, #0x8] - cmp r5, r0 - bge _020186B0 - ldrb r1, [r1, #0x10] - ldr r0, [sp, #0x4] - add r6, r0, r1 -_02018672: - add r0, sp, #0x10 - ldrb r0, [r0, #0x0] - cmp r5, r0 - bhs _020186B0 - ldr r4, [sp, #0x4] - add r0, r4, #0x0 - cmp r0, r6 - bge _020186A4 -_02018682: - add r0, sp, #0x10 - ldrb r0, [r0, #0x1] - cmp r4, r0 - bhs _020186A4 - ldrb r2, [r7, #0x15] - add r0, r4, #0x0 - add r1, r5, #0x0 - bl FUN_02017FFC - ldr r2, [sp, #0x0] - ldr r1, [sp, #0xc] - strb r2, [r1, r0] - add r0, r4, #0x1 - lsl r0, r0, #0x18 - lsr r4, r0, #0x18 - cmp r4, r6 - blt _02018682 -_020186A4: - add r0, r5, #0x1 - lsl r0, r0, #0x18 - lsr r5, r0, #0x18 - ldr r0, [sp, #0x8] - cmp r5, r0 - blt _02018672 -_020186B0: - add sp, #0x14 - pop {r4-r7, pc} - - thumb_func_start FUN_020186B4 -FUN_020186B4: ; 0x020186B4 - push {r4-r7, lr} - sub sp, #0x14 - add r5, r0, #0x0 - mov r0, #0x2c - add r7, r1, #0x0 - mul r7, r0 - str r2, [sp, #0x0] - add r0, r5, r7 - ldr r4, [r0, #0x8] - add r6, r3, #0x0 - cmp r4, #0x0 - beq _0201873C - ldrb r0, [r0, #0x1d] - add r1, sp, #0x10 - add r1, #0x1 - add r2, sp, #0x10 - bl FUN_02017850 - add r0, sp, #0x18 - ldrb r1, [r0, #0x14] - add r1, r6, r1 - str r1, [sp, #0x4] - cmp r6, r1 - bge _0201873C - add r1, r5, r7 - str r1, [sp, #0xc] - ldrb r1, [r0, #0x18] - lsl r1, r1, #0xc - str r1, [sp, #0x8] - ldrb r1, [r0, #0x10] - ldr r0, [sp, #0x0] - add r7, r0, r1 -_020186F4: - add r0, sp, #0x10 - ldrb r0, [r0, #0x0] - cmp r6, r0 - bhs _0201873C - ldr r5, [sp, #0x0] - add r0, r5, #0x0 - cmp r0, r7 - bge _02018730 -_02018704: - add r0, sp, #0x10 - ldrb r0, [r0, #0x1] - cmp r5, r0 - bhs _02018730 - ldr r2, [sp, #0xc] - add r0, r5, #0x0 - ldrb r2, [r2, #0x1d] - add r1, r6, #0x0 - bl FUN_02017FFC - lsl r0, r0, #0x1 - ldrh r2, [r4, r0] - ldr r1, _02018740 ; =0x00000FFF - and r2, r1 - ldr r1, [sp, #0x8] - orr r1, r2 - strh r1, [r4, r0] - add r0, r5, #0x1 - lsl r0, r0, #0x18 - lsr r5, r0, #0x18 - cmp r5, r7 - blt _02018704 -_02018730: - add r0, r6, #0x1 - lsl r0, r0, #0x18 - lsr r6, r0, #0x18 - ldr r0, [sp, #0x4] - cmp r6, r0 - blt _020186F4 -_0201873C: - add sp, #0x14 - pop {r4-r7, pc} - .balign 4 -_02018740: .word 0x00000FFF - - thumb_func_start FUN_02018744 -FUN_02018744: ; 0x02018744 - push {r3-r5, lr} - add r5, r0, #0x0 - add r4, r1, #0x0 - mov r0, #0x2c - mul r0, r4 - add r2, r5, r0 - ldr r1, [r2, #0x8] - cmp r1, #0x0 - beq _02018766 - ldr r2, [r2, #0xc] - mov r0, #0x0 - bl MIi_CpuClear16 - add r0, r5, #0x0 - add r1, r4, #0x0 - bl FUN_02017CD0 -_02018766: - pop {r3-r5, pc} - - thumb_func_start FUN_02018768 -FUN_02018768: ; 0x02018768 - push {r3-r5, lr} - add r5, r0, #0x0 - add r4, r1, #0x0 - mov r0, #0x2c - mul r0, r4 - add r3, r5, r0 - ldr r1, [r3, #0x8] - cmp r1, #0x0 - beq _0201878A - add r0, r2, #0x0 - ldr r2, [r3, #0xc] - bl MIi_CpuClear16 - add r0, r5, #0x0 - add r1, r4, #0x0 - bl FUN_02017CD0 -_0201878A: - pop {r3-r5, pc} - - thumb_func_start FUN_0201878C -FUN_0201878C: ; 0x0201878C - push {r3-r5, lr} - add r5, r0, #0x0 - add r4, r1, #0x0 - mov r0, #0x2c - mul r0, r4 - add r3, r5, r0 - ldr r1, [r3, #0x8] - cmp r1, #0x0 - beq _020187AE - add r0, r2, #0x0 - ldr r2, [r3, #0xc] - bl MIi_CpuClear16 - add r0, r5, #0x0 - add r1, r4, #0x0 - bl FUN_0201AC68 -_020187AE: - pop {r3-r5, pc} - - thumb_func_start FUN_020187B0 -FUN_020187B0: ; 0x020187B0 - push {r3, lr} - cmp r0, #0x7 - bhi _02018802 - add r0, r0, r0 - add r0, pc - ldrh r0, [r0, #0x6] - lsl r0, r0, #0x10 - asr r0, r0, #0x10 - add pc, r0 -_020187C2: ; jump table (using 16-bit offset) - .short _020187D2 - _020187C2 - 2; case 0 - .short _020187D8 - _020187C2 - 2; case 1 - .short _020187DE - _020187C2 - 2; case 2 - .short _020187E4 - _020187C2 - 2; case 3 - .short _020187EA - _020187C2 - 2; case 4 - .short _020187F0 - _020187C2 - 2; case 5 - .short _020187F6 - _020187C2 - 2; case 6 - .short _020187FC - _020187C2 - 2; case 7 -_020187D2: - bl G2_GetBG0CharPtr - pop {r3, pc} -_020187D8: - bl G2_GetBG1CharPtr - pop {r3, pc} -_020187DE: - bl G2_GetBG2CharPtr - pop {r3, pc} -_020187E4: - bl G2_GetBG3CharPtr - pop {r3, pc} -_020187EA: - bl G2S_GetBG0CharPtr - pop {r3, pc} -_020187F0: - bl G2S_GetBG1CharPtr - pop {r3, pc} -_020187F6: - bl G2S_GetBG2CharPtr - pop {r3, pc} -_020187FC: - bl G2S_GetBG3CharPtr - pop {r3, pc} -_02018802: - mov r0, #0x0 - pop {r3, pc} - .balign 4 - - thumb_func_start FUN_02018808 -FUN_02018808: ; 0x02018808 - push {r4-r7} - lsl r3, r3, #0x1c - lsr r3, r3, #0x18 - mov r4, #0x0 - cmp r1, #0x0 - bls _02018842 - mov r5, #0xf - add r6, r5, #0x0 -_02018818: - ldrb r7, [r0, r4] - and r7, r6 - strb r7, [r2, #0x0] - ldrb r7, [r2, #0x0] - cmp r7, #0x0 - beq _02018828 - add r7, r7, r3 - strb r7, [r2, #0x0] -_02018828: - ldrb r7, [r0, r4] - asr r7, r7, #0x4 - and r7, r5 - strb r7, [r2, #0x1] - ldrb r7, [r2, #0x1] - cmp r7, #0x0 - beq _0201883A - add r7, r7, r3 - strb r7, [r2, #0x1] -_0201883A: - add r4, r4, #0x1 - add r2, r2, #0x2 - cmp r4, r1 - blo _02018818 -_02018842: - pop {r4-r7} - bx lr - .balign 4 - - thumb_func_start FUN_02018848 -FUN_02018848: ; 0x02018848 - push {r3-r7, lr} - add r5, r1, #0x0 - add r6, r0, #0x0 - add r0, r3, #0x0 - lsl r1, r5, #0x1 - add r7, r2, #0x0 - bl AllocFromHeap - add r4, r0, #0x0 - add r0, r6, #0x0 - add r1, r5, #0x0 - add r2, r4, #0x0 - add r3, r7, #0x0 - bl FUN_02018808 - add r0, r4, #0x0 - pop {r3-r7, pc} - .balign 4 - - thumb_func_start FUN_0201886C -FUN_0201886C: ; 0x0201886C - mov r2, #0x2c - mul r2, r1 - add r0, r0, r2 - ldr r0, [r0, #0x8] - bx lr - .balign 4 - - thumb_func_start FUN_02018878 -FUN_02018878: ; 0x02018878 - mov r2, #0x2c - mul r2, r1 - add r0, r0, r2 - ldrh r0, [r0, #0x20] - bx lr - .balign 4 - - thumb_func_start FUN_02018884 -FUN_02018884: ; 0x02018884 - sub sp, #0x20 - cmp r1, #0x7 - bls _0201888C - b _02018A38 -_0201888C: - add r2, r1, r1 - add r2, pc - ldrh r2, [r2, #0x6] - lsl r2, r2, #0x10 - asr r2, r2, #0x10 - add pc, r2 -_02018898: ; jump table (using 16-bit offset) - .short _020188A8 - _02018898 - 2; case 0 - .short _020188BC - _02018898 - 2; case 1 - .short _020188D0 - _02018898 - 2; case 2 - .short _02018920 - _02018898 - 2; case 3 - .short _02018970 - _02018898 - 2; case 4 - .short _02018984 - _02018898 - 2; case 5 - .short _02018998 - _02018898 - 2; case 6 - .short _020189E8 - _02018898 - 2; case 7 -_020188A8: - ldr r0, _02018A40 ; =0x04000008 - ldrh r1, [r0, #0x0] - add r0, sp, #0x0 - add sp, #0x20 - strh r1, [r0, #0x1e] - lsl r0, r1, #0x1e - lsr r0, r0, #0x1e - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - bx lr -_020188BC: - ldr r0, _02018A44 ; =0x0400000A - ldrh r1, [r0, #0x0] - add r0, sp, #0x0 - add sp, #0x20 - strh r1, [r0, #0x1c] - lsl r0, r1, #0x1e - lsr r0, r0, #0x1e - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - bx lr -_020188D0: - mov r2, #0x2c - mul r2, r1 - add r0, r0, r2 - ldrb r0, [r0, #0x1c] - cmp r0, #0x0 - beq _020188E4 - cmp r0, #0x1 - beq _020188F8 - cmp r0, #0x2 - beq _0201890C -_020188E4: - ldr r0, _02018A48 ; =0x0400000C - ldrh r1, [r0, #0x0] - add r0, sp, #0x0 - add sp, #0x20 - strh r1, [r0, #0x1a] - lsl r0, r1, #0x1e - lsr r0, r0, #0x1e - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - bx lr -_020188F8: - ldr r0, _02018A48 ; =0x0400000C - ldrh r1, [r0, #0x0] - add r0, sp, #0x0 - add sp, #0x20 - strh r1, [r0, #0x18] - lsl r0, r1, #0x1e - lsr r0, r0, #0x1e - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - bx lr -_0201890C: - ldr r0, _02018A48 ; =0x0400000C - ldrh r1, [r0, #0x0] - add r0, sp, #0x0 - add sp, #0x20 - strh r1, [r0, #0x16] - lsl r0, r1, #0x1e - lsr r0, r0, #0x1e - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - bx lr -_02018920: - mov r2, #0x2c - mul r2, r1 - add r0, r0, r2 - ldrb r0, [r0, #0x1c] - cmp r0, #0x0 - beq _02018934 - cmp r0, #0x1 - beq _02018948 - cmp r0, #0x2 - beq _0201895C -_02018934: - ldr r0, _02018A4C ; =0x0400000E - ldrh r1, [r0, #0x0] - add r0, sp, #0x0 - add sp, #0x20 - strh r1, [r0, #0x14] - lsl r0, r1, #0x1e - lsr r0, r0, #0x1e - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - bx lr -_02018948: - ldr r0, _02018A4C ; =0x0400000E - ldrh r1, [r0, #0x0] - add r0, sp, #0x0 - add sp, #0x20 - strh r1, [r0, #0x12] - lsl r0, r1, #0x1e - lsr r0, r0, #0x1e - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - bx lr -_0201895C: - ldr r0, _02018A4C ; =0x0400000E - ldrh r1, [r0, #0x0] - add r0, sp, #0x0 - add sp, #0x20 - strh r1, [r0, #0x10] - lsl r0, r1, #0x1e - lsr r0, r0, #0x1e - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - bx lr -_02018970: - ldr r0, _02018A50 ; =0x04001008 - ldrh r1, [r0, #0x0] - add r0, sp, #0x0 - add sp, #0x20 - strh r1, [r0, #0xe] - lsl r0, r1, #0x1e - lsr r0, r0, #0x1e - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - bx lr -_02018984: - ldr r0, _02018A54 ; =0x0400100A - ldrh r1, [r0, #0x0] - add r0, sp, #0x0 - add sp, #0x20 - strh r1, [r0, #0xc] - lsl r0, r1, #0x1e - lsr r0, r0, #0x1e - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - bx lr -_02018998: - mov r2, #0x2c - mul r2, r1 - add r0, r0, r2 - ldrb r0, [r0, #0x1c] - cmp r0, #0x0 - beq _020189AC - cmp r0, #0x1 - beq _020189C0 - cmp r0, #0x2 - beq _020189D4 -_020189AC: - ldr r0, _02018A58 ; =0x0400100C - ldrh r1, [r0, #0x0] - add r0, sp, #0x0 - add sp, #0x20 - strh r1, [r0, #0xa] - lsl r0, r1, #0x1e - lsr r0, r0, #0x1e - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - bx lr -_020189C0: - ldr r0, _02018A58 ; =0x0400100C - ldrh r1, [r0, #0x0] - add r0, sp, #0x0 - add sp, #0x20 - strh r1, [r0, #0x8] - lsl r0, r1, #0x1e - lsr r0, r0, #0x1e - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - bx lr -_020189D4: - ldr r0, _02018A58 ; =0x0400100C - ldrh r1, [r0, #0x0] - add r0, sp, #0x0 - add sp, #0x20 - strh r1, [r0, #0x6] - lsl r0, r1, #0x1e - lsr r0, r0, #0x1e - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - bx lr -_020189E8: - mov r2, #0x2c - mul r2, r1 - add r0, r0, r2 - ldrb r0, [r0, #0x1c] - cmp r0, #0x0 - beq _020189FC - cmp r0, #0x1 - beq _02018A10 - cmp r0, #0x2 - beq _02018A24 -_020189FC: - ldr r0, _02018A5C ; =0x0400100E - ldrh r1, [r0, #0x0] - add r0, sp, #0x0 - add sp, #0x20 - strh r1, [r0, #0x4] - lsl r0, r1, #0x1e - lsr r0, r0, #0x1e - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - bx lr -_02018A10: - ldr r0, _02018A5C ; =0x0400100E - ldrh r1, [r0, #0x0] - add r0, sp, #0x0 - add sp, #0x20 - strh r1, [r0, #0x2] - lsl r0, r1, #0x1e - lsr r0, r0, #0x1e - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - bx lr -_02018A24: - ldr r0, _02018A5C ; =0x0400100E - ldrh r1, [r0, #0x0] - add r0, sp, #0x0 - add sp, #0x20 - strh r1, [r0, #0x0] - lsl r0, r1, #0x1e - lsr r0, r0, #0x1e - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - bx lr -_02018A38: - mov r0, #0x0 - add sp, #0x20 - bx lr - nop -_02018A40: .word 0x04000008 -_02018A44: .word 0x0400000A -_02018A48: .word 0x0400000C -_02018A4C: .word 0x0400000E -_02018A50: .word 0x04001008 -_02018A54: .word 0x0400100A -_02018A58: .word 0x0400100C -_02018A5C: .word 0x0400100E - - thumb_func_start FUN_02018A60 -FUN_02018A60: ; 0x02018A60 - push {r3-r7, lr} - sub sp, #0x68 - str r2, [sp, #0x8] - str r3, [sp, #0xc] - add r2, sp, #0x70 - str r0, [sp, #0x0] - ldrh r0, [r2, #0x10] - str r1, [sp, #0x4] - ldrh r2, [r2, #0x18] - str r0, [sp, #0x10] - add r0, r1, #0x0 - ldrh r1, [r0, #0x4] - ldr r0, [sp, #0x10] - sub r3, r1, r0 - cmp r3, r2 - bge _02018A88 - ldr r0, [sp, #0x8] - add r0, r0, r3 - str r0, [sp, #0x50] - b _02018A8E -_02018A88: - ldr r0, [sp, #0x8] - add r0, r2, r0 - str r0, [sp, #0x50] -_02018A8E: - ldr r2, [sp, #0x4] - add r3, sp, #0x70 - ldrh r0, [r3, #0x14] - ldrh r2, [r2, #0x6] - ldrh r3, [r3, #0x1c] - sub r4, r2, r0 - cmp r4, r3 - bge _02018AA6 - ldr r2, [sp, #0xc] - add r2, r2, r4 - str r2, [sp, #0x4c] - b _02018AAC -_02018AA6: - ldr r2, [sp, #0xc] - add r2, r3, r2 - str r2, [sp, #0x4c] -_02018AAC: - ldr r2, [sp, #0x0] - mov r3, #0x7 - ldrh r4, [r2, #0x4] - add r2, r4, #0x0 - and r2, r3 - add r2, r4, r2 - asr r2, r2, #0x3 - str r2, [sp, #0x48] - add r2, r1, #0x0 - and r2, r3 - add r1, r1, r2 - asr r1, r1, #0x3 - str r1, [sp, #0x44] - add r1, sp, #0x70 - ldrh r1, [r1, #0x20] - ldr r2, _02018C98 ; =0x0000FFFF - str r1, [sp, #0x38] - cmp r1, r2 - bne _02018BB4 - ldr r2, [sp, #0xc] - ldr r1, [sp, #0x4c] - cmp r2, r1 - bge _02018ADE - cmp r2, r1 - blt _02018AE0 -_02018ADE: - b _02018C92 -_02018AE0: - add r1, r2, #0x0 - lsl r1, r1, #0x2 - lsl r0, r0, #0x2 - str r1, [sp, #0x28] - str r0, [sp, #0x24] -_02018AEA: - ldr r3, [sp, #0x8] - ldr r0, [sp, #0x50] - add r1, r3, #0x0 - ldr r4, [sp, #0x10] - cmp r1, r0 - bge _02018B96 - cmp r1, r0 - bge _02018B96 - add r0, r3, #0x0 - lsl r5, r0, #0x2 - add r0, r4, #0x0 - lsl r6, r0, #0x2 - ldr r0, _02018C9C ; =0x00003FE0 - ldr r1, [sp, #0x28] - ldr r2, [sp, #0x48] - and r1, r0 - mul r2, r1 - str r2, [sp, #0x20] - ldr r2, [sp, #0x28] - mov r1, #0x1c - and r2, r1 - str r2, [sp, #0x1c] - ldr r2, [sp, #0x24] - and r0, r2 - ldr r2, [sp, #0x44] - mul r2, r0 - ldr r0, [sp, #0x24] - str r2, [sp, #0x18] - and r0, r1 - str r0, [sp, #0x14] -_02018B26: - ldr r0, [sp, #0x4] - asr r2, r4, #0x1 - mov r1, #0x3 - ldr r0, [r0, #0x0] - and r1, r2 - add r1, r0, r1 - ldr r0, _02018C9C ; =0x00003FE0 - and r0, r6 - add r1, r1, r0 - ldr r0, [sp, #0x18] - add r6, r6, #0x4 - add r0, r1, r0 - str r0, [sp, #0x64] - lsl r0, r4, #0x1f - lsr r2, r0, #0x1d - ldr r0, [sp, #0x0] - asr r1, r3, #0x1 - ldr r7, [r0, #0x0] - mov r0, #0x3 - and r0, r1 - ldr r1, _02018C9C ; =0x00003FE0 - add r4, r4, #0x1 - and r1, r5 - str r1, [sp, #0x54] - add r1, r7, r0 - ldr r0, [sp, #0x54] - add r5, r5, #0x4 - add r1, r0, r1 - ldr r0, [sp, #0x20] - add r1, r0, r1 - ldr r0, [sp, #0x1c] - ldrb r1, [r0, r1] - lsl r0, r3, #0x1f - lsr r0, r0, #0x1d - asr r1, r0 - mov r0, #0xf - and r0, r1 - add r7, r0, #0x0 - ldr r1, [sp, #0x14] - ldr r0, [sp, #0x64] - lsl r7, r2 - ldrb r0, [r0, r1] - add r3, r3, #0x1 - str r0, [sp, #0x58] - mov r0, #0xf0 - asr r0, r2 - ldr r1, [sp, #0x58] - add r2, r7, #0x0 - and r0, r1 - orr r2, r0 - ldr r1, [sp, #0x14] - ldr r0, [sp, #0x64] - strb r2, [r0, r1] - ldr r0, [sp, #0x50] - cmp r3, r0 - blt _02018B26 -_02018B96: - ldr r0, [sp, #0x28] - add r0, r0, #0x4 - str r0, [sp, #0x28] - ldr r0, [sp, #0xc] - add r0, r0, #0x1 - str r0, [sp, #0xc] - ldr r0, [sp, #0x24] - ldr r1, [sp, #0xc] - add r0, r0, #0x4 - str r0, [sp, #0x24] - ldr r0, [sp, #0x4c] - cmp r1, r0 - blt _02018AEA - add sp, #0x68 - pop {r3-r7, pc} -_02018BB4: - ldr r2, [sp, #0xc] - ldr r1, [sp, #0x4c] - cmp r2, r1 - bge _02018C92 - cmp r2, r1 - bge _02018C92 - add r1, r2, #0x0 - lsl r1, r1, #0x2 - lsl r0, r0, #0x2 - str r1, [sp, #0x40] - str r0, [sp, #0x3c] -_02018BCA: - ldr r3, [sp, #0x8] - ldr r0, [sp, #0x50] - add r1, r3, #0x0 - ldr r4, [sp, #0x10] - cmp r1, r0 - bge _02018C78 - cmp r1, r0 - bge _02018C78 - add r0, r3, #0x0 - lsl r1, r0, #0x2 - add r0, r4, #0x0 - lsl r2, r0, #0x2 - ldr r0, _02018C9C ; =0x00003FE0 - ldr r5, [sp, #0x40] - ldr r6, [sp, #0x48] - and r5, r0 - mul r6, r5 - str r6, [sp, #0x34] - ldr r6, [sp, #0x40] - mov r5, #0x1c - and r6, r5 - str r6, [sp, #0x30] - ldr r6, [sp, #0x3c] - and r0, r6 - ldr r6, [sp, #0x44] - mul r6, r0 - ldr r0, [sp, #0x3c] - str r6, [sp, #0x2c] - and r0, r5 - str r0, [sp, #0x60] -_02018C06: - ldr r0, [sp, #0x4] - asr r6, r4, #0x1 - mov r5, #0x3 - and r5, r6 - ldr r0, [r0, #0x0] - asr r6, r3, #0x1 - add r5, r0, r5 - ldr r0, _02018C9C ; =0x00003FE0 - and r0, r2 - add r5, r5, r0 - ldr r0, [sp, #0x2c] - add r5, r5, r0 - ldr r0, [sp, #0x0] - ldr r7, [r0, #0x0] - mov r0, #0x3 - and r0, r6 - ldr r6, _02018C9C ; =0x00003FE0 - and r6, r1 - str r6, [sp, #0x5c] - add r6, r7, r0 - ldr r0, [sp, #0x5c] - add r6, r0, r6 - ldr r0, [sp, #0x34] - add r6, r0, r6 - ldr r0, [sp, #0x30] - ldrb r6, [r0, r6] - lsl r0, r3, #0x1f - lsr r0, r0, #0x1d - asr r6, r0 - mov r0, #0xf - and r0, r6 - ldr r6, [sp, #0x38] - cmp r0, r6 - beq _02018C6A - lsl r6, r4, #0x1f - lsr r7, r6, #0x1d - lsl r0, r7 - mov lr, r0 - ldr r0, [sp, #0x60] - ldrb r0, [r5, r0] - mov r12, r0 - mov r0, #0xf0 - add r6, r0, #0x0 - asr r6, r7 - mov r0, r12 - and r0, r6 - mov r6, lr - orr r6, r0 - ldr r0, [sp, #0x60] - strb r6, [r5, r0] -_02018C6A: - ldr r0, [sp, #0x50] - add r3, r3, #0x1 - add r1, r1, #0x4 - add r2, r2, #0x4 - add r4, r4, #0x1 - cmp r3, r0 - blt _02018C06 -_02018C78: - ldr r0, [sp, #0x40] - add r0, r0, #0x4 - str r0, [sp, #0x40] - ldr r0, [sp, #0xc] - add r0, r0, #0x1 - str r0, [sp, #0xc] - ldr r0, [sp, #0x3c] - ldr r1, [sp, #0xc] - add r0, r0, #0x4 - str r0, [sp, #0x3c] - ldr r0, [sp, #0x4c] - cmp r1, r0 - blt _02018BCA -_02018C92: - add sp, #0x68 - pop {r3-r7, pc} - nop -_02018C98: .word 0x0000FFFF -_02018C9C: .word 0x00003FE0 - - thumb_func_start FUN_02018CA0 -FUN_02018CA0: ; 0x02018CA0 - push {r3-r7, lr} - sub sp, #0x50 - str r2, [sp, #0x8] - str r3, [sp, #0xc] - add r2, sp, #0x58 - str r0, [sp, #0x0] - ldrh r0, [r2, #0x10] - str r1, [sp, #0x4] - ldrh r2, [r2, #0x18] - str r0, [sp, #0x10] - add r0, r1, #0x0 - ldrh r1, [r0, #0x4] - ldr r0, [sp, #0x10] - sub r3, r1, r0 - cmp r3, r2 - bge _02018CC6 - ldr r0, [sp, #0x8] - add r0, r0, r3 - b _02018CCA -_02018CC6: - ldr r0, [sp, #0x8] - add r0, r2, r0 -_02018CCA: - ldr r2, [sp, #0x4] - add r3, sp, #0x58 - mov r12, r0 - ldrh r0, [r3, #0x14] - ldrh r2, [r2, #0x6] - ldrh r3, [r3, #0x1c] - sub r4, r2, r0 - cmp r4, r3 - bge _02018CE2 - ldr r2, [sp, #0xc] - add r2, r2, r4 - b _02018CE6 -_02018CE2: - ldr r2, [sp, #0xc] - add r2, r3, r2 -_02018CE6: - mov lr, r2 - ldr r2, [sp, #0x0] - mov r3, #0x7 - ldrh r4, [r2, #0x4] - add r2, r4, #0x0 - and r2, r3 - add r2, r4, r2 - asr r2, r2, #0x3 - str r2, [sp, #0x4c] - add r2, r1, #0x0 - and r2, r3 - add r1, r1, r2 - asr r1, r1, #0x3 - str r1, [sp, #0x48] - add r1, sp, #0x58 - ldrh r1, [r1, #0x20] - ldr r2, _02018E80 ; =0x0000FFFF - str r1, [sp, #0x3c] - cmp r1, r2 - bne _02018DC6 - ldr r2, [sp, #0xc] - mov r1, lr - cmp r2, r1 - bge _02018D1C - mov r1, lr - cmp r2, r1 - blt _02018D1E -_02018D1C: - b _02018E7C -_02018D1E: - add r1, r2, #0x0 - lsl r1, r1, #0x3 - lsl r0, r0, #0x3 - str r1, [sp, #0x28] - str r0, [sp, #0x24] -_02018D28: - ldr r1, [sp, #0x8] - mov r0, r12 - add r2, r1, #0x0 - ldr r7, [sp, #0x10] - cmp r2, r0 - bge _02018DA8 - mov r0, r12 - cmp r2, r0 - bge _02018DA8 - add r0, r1, #0x0 - lsl r2, r0, #0x3 - add r0, r7, #0x0 - lsl r3, r0, #0x3 - ldr r6, _02018E84 ; =0x00007FC0 - ldr r0, [sp, #0x28] - ldr r4, [sp, #0x4c] - and r0, r6 - mul r4, r0 - str r4, [sp, #0x20] - ldr r0, [sp, #0x28] - mov r5, #0x38 - and r0, r5 - str r0, [sp, #0x1c] - ldr r0, [sp, #0x24] - ldr r4, [sp, #0x48] - and r0, r6 - mul r4, r0 - ldr r0, [sp, #0x24] - str r4, [sp, #0x18] - and r0, r5 - str r0, [sp, #0x14] -_02018D66: - ldr r0, [sp, #0x0] - add r5, r1, #0x0 - mov r4, #0x7 - and r5, r4 - ldr r0, [r0, #0x0] - ldr r4, _02018E84 ; =0x00007FC0 - add r0, r0, r5 - and r4, r2 - add r4, r4, r0 - ldr r0, [sp, #0x20] - add r5, r7, #0x0 - add r4, r0, r4 - ldr r0, [sp, #0x1c] - add r1, r1, #0x1 - ldrb r6, [r0, r4] - ldr r0, [sp, #0x4] - mov r4, #0x7 - and r5, r4 - ldr r0, [r0, #0x0] - ldr r4, _02018E84 ; =0x00007FC0 - add r0, r0, r5 - and r4, r3 - add r4, r4, r0 - ldr r0, [sp, #0x18] - add r2, #0x8 - add r4, r0, r4 - ldr r0, [sp, #0x14] - add r3, #0x8 - strb r6, [r0, r4] - mov r0, r12 - add r7, r7, #0x1 - cmp r1, r0 - blt _02018D66 -_02018DA8: - ldr r0, [sp, #0x28] - add r0, #0x8 - str r0, [sp, #0x28] - ldr r0, [sp, #0xc] - add r0, r0, #0x1 - str r0, [sp, #0xc] - ldr r0, [sp, #0x24] - ldr r1, [sp, #0xc] - add r0, #0x8 - str r0, [sp, #0x24] - mov r0, lr - cmp r1, r0 - blt _02018D28 - add sp, #0x50 - pop {r3-r7, pc} -_02018DC6: - ldr r2, [sp, #0xc] - mov r1, lr - cmp r2, r1 - bge _02018E7C - mov r1, lr - cmp r2, r1 - bge _02018E7C - add r1, r2, #0x0 - lsl r1, r1, #0x3 - lsl r0, r0, #0x3 - str r1, [sp, #0x44] - str r0, [sp, #0x40] -_02018DDE: - ldr r2, [sp, #0x8] - mov r0, r12 - add r1, r2, #0x0 - ldr r3, [sp, #0x10] - cmp r1, r0 - bge _02018E62 - mov r0, r12 - cmp r1, r0 - bge _02018E62 - add r0, r2, #0x0 - lsl r6, r0, #0x3 - add r0, r3, #0x0 - lsl r1, r0, #0x3 - ldr r7, _02018E84 ; =0x00007FC0 - ldr r0, [sp, #0x44] - ldr r4, [sp, #0x4c] - and r0, r7 - mul r4, r0 - str r4, [sp, #0x38] - ldr r0, [sp, #0x44] - mov r5, #0x38 - and r0, r5 - str r0, [sp, #0x34] - ldr r0, [sp, #0x40] - ldr r4, [sp, #0x48] - and r0, r7 - mul r4, r0 - ldr r0, [sp, #0x40] - str r4, [sp, #0x30] - and r0, r5 - str r0, [sp, #0x2c] -_02018E1C: - ldr r0, [sp, #0x4] - mov r4, #0x7 - ldr r0, [r0, #0x0] - and r4, r3 - add r0, r0, r4 - ldr r4, _02018E84 ; =0x00007FC0 - add r5, r2, #0x0 - and r4, r1 - add r4, r0, r4 - ldr r0, [sp, #0x30] - add r7, r4, r0 - ldr r0, [sp, #0x0] - mov r4, #0x7 - and r5, r4 - ldr r0, [r0, #0x0] - ldr r4, _02018E84 ; =0x00007FC0 - add r0, r0, r5 - and r4, r6 - add r4, r4, r0 - ldr r0, [sp, #0x38] - add r4, r0, r4 - ldr r0, [sp, #0x34] - ldrb r0, [r0, r4] - ldr r4, [sp, #0x3c] - cmp r0, r4 - beq _02018E54 - ldr r4, [sp, #0x2c] - strb r0, [r7, r4] -_02018E54: - add r2, r2, #0x1 - mov r0, r12 - add r6, #0x8 - add r1, #0x8 - add r3, r3, #0x1 - cmp r2, r0 - blt _02018E1C -_02018E62: - ldr r0, [sp, #0x44] - add r0, #0x8 - str r0, [sp, #0x44] - ldr r0, [sp, #0xc] - add r0, r0, #0x1 - str r0, [sp, #0xc] - ldr r0, [sp, #0x40] - ldr r1, [sp, #0xc] - add r0, #0x8 - str r0, [sp, #0x40] - mov r0, lr - cmp r1, r0 - blt _02018DDE -_02018E7C: - add sp, #0x50 - pop {r3-r7, pc} - .balign 4 -_02018E80: .word 0x0000FFFF -_02018E84: .word 0x00007FC0 - - thumb_func_start FUN_02018E88 -FUN_02018E88: ; 0x02018E88 - push {r4-r7, lr} - sub sp, #0x14 - str r1, [sp, #0x4] - str r2, [sp, #0x8] - str r0, [sp, #0x0] - ldr r0, [sp, #0x2c] - str r0, [sp, #0x2c] - ldr r0, [sp, #0x4] - add r6, r0, r3 - ldr r0, [sp, #0x0] - ldrh r0, [r0, #0x4] - cmp r6, r0 - ble _02018EA4 - add r6, r0, #0x0 -_02018EA4: - add r1, sp, #0x18 - ldrh r2, [r1, #0x10] - ldr r1, [sp, #0x8] - add r1, r1, r2 - mov r12, r1 - ldr r1, [sp, #0x0] - ldrh r2, [r1, #0x6] - mov r1, r12 - cmp r1, r2 - ble _02018EBA - mov r12, r2 -_02018EBA: - mov r1, #0x7 - and r1, r0 - add r0, r0, r1 - asr r0, r0, #0x3 - mov lr, r0 - ldr r1, [sp, #0x8] - mov r0, r12 - cmp r1, r0 - bge _02018F44 - add r0, r1, #0x0 - lsl r0, r0, #0x2 - str r0, [sp, #0xc] - ldr r0, [sp, #0x2c] - lsl r0, r0, #0x4 - str r0, [sp, #0x10] -_02018ED8: - ldr r1, [sp, #0x4] - add r0, r1, #0x0 - cmp r0, r6 - bge _02018F32 - lsl r5, r0, #0x2 - ldr r2, _02018F48 ; =0x00003FE0 - ldr r0, [sp, #0xc] - and r0, r2 - add r7, r0, #0x0 - mov r2, lr - mul r7, r2 - ldr r0, [sp, #0xc] - mov r2, #0x1c - and r2, r0 -_02018EF4: - ldr r0, [sp, #0x0] - asr r3, r1, #0x1 - ldr r4, [r0, #0x0] - mov r0, #0x3 - and r0, r3 - ldr r3, _02018F48 ; =0x00003FE0 - add r0, r4, r0 - and r3, r5 - add r0, r0, r3 - add r0, r0, r7 - mov r3, #0x1 - tst r3, r1 - ldrb r4, [r0, r2] - beq _02018F1C - mov r3, #0xf - and r3, r4 - strb r3, [r0, r2] - ldrb r4, [r0, r2] - ldr r3, [sp, #0x10] - b _02018F26 -_02018F1C: - mov r3, #0xf0 - and r3, r4 - strb r3, [r0, r2] - ldrb r4, [r0, r2] - ldr r3, [sp, #0x2c] -_02018F26: - orr r3, r4 - add r1, r1, #0x1 - strb r3, [r0, r2] - add r5, r5, #0x4 - cmp r1, r6 - blt _02018EF4 -_02018F32: - ldr r0, [sp, #0xc] - add r0, r0, #0x4 - str r0, [sp, #0xc] - ldr r0, [sp, #0x8] - add r1, r0, #0x1 - mov r0, r12 - str r1, [sp, #0x8] - cmp r1, r0 - blt _02018ED8 -_02018F44: - add sp, #0x14 - pop {r4-r7, pc} - .balign 4 -_02018F48: .word 0x00003FE0 - - thumb_func_start FUN_02018F4C -FUN_02018F4C: ; 0x02018F4C - push {r4-r7, lr} - sub sp, #0x14 - str r1, [sp, #0x4] - str r2, [sp, #0x8] - str r0, [sp, #0x0] - ldr r0, [sp, #0x2c] - str r0, [sp, #0x2c] - ldr r0, [sp, #0x4] - add r5, r0, r3 - ldr r0, [sp, #0x0] - ldrh r0, [r0, #0x4] - cmp r5, r0 - ble _02018F68 - add r5, r0, #0x0 -_02018F68: - add r1, sp, #0x18 - ldrh r2, [r1, #0x10] - ldr r1, [sp, #0x8] - add r1, r1, r2 - mov lr, r1 - ldr r1, [sp, #0x0] - ldrh r2, [r1, #0x6] - mov r1, lr - cmp r1, r2 - ble _02018F7E - mov lr, r2 -_02018F7E: - mov r1, #0x7 - and r1, r0 - add r0, r0, r1 - asr r0, r0, #0x3 - str r0, [sp, #0x10] - ldr r1, [sp, #0x8] - mov r0, lr - cmp r1, r0 - bge _02018FEA - add r0, r1, #0x0 - lsl r0, r0, #0x3 - str r0, [sp, #0xc] - ldr r0, [sp, #0x4] - lsl r0, r0, #0x3 - mov r12, r0 -_02018F9C: - ldr r2, [sp, #0x4] - add r0, r2, #0x0 - cmp r0, r5 - bge _02018FD8 - ldr r1, [sp, #0xc] - ldr r0, _02018FF0 ; =0x00007FC0 - mov r3, r12 - and r0, r1 - add r7, r0, #0x0 - ldr r1, [sp, #0x10] - mov r0, #0x38 - mul r7, r1 - ldr r1, [sp, #0xc] - add r6, r1, #0x0 - and r6, r0 -_02018FBA: - ldr r0, [sp, #0x0] - ldr r4, _02018FF0 ; =0x00007FC0 - ldr r1, [r0, #0x0] - mov r0, #0x7 - and r0, r2 - and r4, r3 - add r0, r1, r0 - add r0, r4, r0 - add r1, r7, r0 - ldr r0, [sp, #0x2c] - add r2, r2, #0x1 - strb r0, [r6, r1] - add r3, #0x8 - cmp r2, r5 - blt _02018FBA -_02018FD8: - ldr r0, [sp, #0xc] - add r0, #0x8 - str r0, [sp, #0xc] - ldr r0, [sp, #0x8] - add r1, r0, #0x1 - mov r0, lr - str r1, [sp, #0x8] - cmp r1, r0 - blt _02018F9C -_02018FEA: - add sp, #0x14 - pop {r4-r7, pc} - nop -_02018FF0: .word 0x00007FC0 - - thumb_func_start FUN_02018FF4 -FUN_02018FF4: ; 0x02018FF4 - push {r4-r6, lr} - add r5, r1, #0x0 - lsl r1, r5, #0x4 - bl AllocFromHeap - add r6, r0, #0x0 - mov r4, #0x0 - cmp r5, #0x0 - ble _02019018 -_02019006: - lsl r0, r4, #0x4 - add r0, r6, r0 - bl FUN_0201901C - add r0, r4, #0x1 - lsl r0, r0, #0x10 - lsr r4, r0, #0x10 - cmp r4, r5 - blt _02019006 -_02019018: - add r0, r6, #0x0 - pop {r4-r6, pc} - - thumb_func_start FUN_0201901C -FUN_0201901C: ; 0x0201901C - mov r3, #0x0 - str r3, [r0, #0x0] - mov r1, #0xff - strb r1, [r0, #0x4] - strb r3, [r0, #0x5] - strb r3, [r0, #0x6] - strb r3, [r0, #0x7] - strb r3, [r0, #0x8] - strb r3, [r0, #0x9] - ldrh r2, [r0, #0xa] - ldr r1, _02019044 ; =0xFFFF8000 - and r2, r1 - strh r2, [r0, #0xa] - str r3, [r0, #0xc] - ldrh r2, [r0, #0xa] - sub r1, r1, #0x1 - and r1, r2 - strh r1, [r0, #0xa] - bx lr - nop -_02019044: .word 0xFFFF8000 - - thumb_func_start FUN_02019048 -FUN_02019048: ; 0x02019048 - ldr r1, [r0, #0x0] - cmp r1, #0x0 - beq _0201905A - ldrb r1, [r0, #0x4] - cmp r1, #0xff - beq _0201905A - ldr r0, [r0, #0xc] - cmp r0, #0x0 - bne _0201905E -_0201905A: - mov r0, #0x0 - bx lr -_0201905E: - mov r0, #0x1 - bx lr - .balign 4 - - thumb_func_start FUN_02019064 -FUN_02019064: ; 0x02019064 - push {r3-r7, lr} - add r6, r2, #0x0 - add r5, r0, #0x0 - mov r0, #0x2c - add r7, r6, #0x0 - mul r7, r0 - add r4, r1, #0x0 - str r3, [sp, #0x0] - add r1, r5, r7 - ldr r0, [r1, #0x8] - cmp r0, #0x0 - beq _020190E0 - add r3, sp, #0x8 - ldrb r2, [r1, #0x1f] - ldrb r1, [r3, #0x14] - ldrb r3, [r3, #0x18] - ldr r0, [r5, #0x0] - mul r3, r1 - add r1, r2, #0x0 - mul r1, r3 - bl AllocFromHeap - add r1, r0, #0x0 - beq _020190E0 - str r5, [r4, #0x0] - strb r6, [r4, #0x4] - ldr r0, [sp, #0x0] - add r3, sp, #0x8 - strb r0, [r4, #0x5] - ldrb r0, [r3, #0x10] - ldr r2, _020190E4 ; =0xFFFF8000 - strb r0, [r4, #0x6] - ldrb r0, [r3, #0x14] - strb r0, [r4, #0x7] - ldrb r0, [r3, #0x18] - strb r0, [r4, #0x8] - ldrb r0, [r3, #0x1c] - strb r0, [r4, #0x9] - ldrh r0, [r4, #0xa] - ldrh r3, [r3, #0x20] - and r0, r2 - lsr r2, r2, #0x11 - and r2, r3 - orr r0, r2 - strh r0, [r4, #0xa] - str r1, [r4, #0xc] - add r0, r5, r7 - ldrb r0, [r0, #0x1e] - cmp r0, #0x0 - bne _020190CC - mov r2, #0x0 - b _020190CE -_020190CC: - mov r2, #0x1 -_020190CE: - ldrh r1, [r4, #0xa] - ldr r0, _020190E8 ; =0xFFFF7FFF - and r1, r0 - lsl r0, r2, #0x10 - lsr r0, r0, #0x10 - lsl r0, r0, #0x1f - lsr r0, r0, #0x10 - orr r0, r1 - strh r0, [r4, #0xa] -_020190E0: - pop {r3-r7, pc} - nop -_020190E4: .word 0xFFFF8000 -_020190E8: .word 0xFFFF7FFF - - thumb_func_start FUN_020190EC -FUN_020190EC: ; 0x020190EC - push {r3-r7, lr} - sub sp, #0x8 - str r3, [sp, #0x0] - add r5, r0, #0x0 - ldr r0, [sp, #0x24] - add r6, r2, #0x0 - str r0, [sp, #0x24] - ldr r0, [sp, #0x0] - add r4, r1, #0x0 - mul r0, r6 - lsl r0, r0, #0x5 - str r0, [sp, #0x4] - ldr r0, [r5, #0x0] - ldr r1, [sp, #0x4] - bl AllocFromHeap - ldr r1, [sp, #0x24] - add r7, r0, #0x0 - lsl r2, r1, #0x4 - orr r1, r2 - lsl r1, r1, #0x18 - ldr r2, [sp, #0x4] - lsr r1, r1, #0x18 - bl memset - cmp r7, #0x0 - beq _02019148 - str r5, [r4, #0x0] - strb r6, [r4, #0x7] - ldr r0, [sp, #0x0] - strb r0, [r4, #0x8] - ldrh r1, [r4, #0xa] - ldr r0, _0201914C ; =0xFFFF8000 - add r3, r1, #0x0 - add r1, sp, #0x10 - ldrh r2, [r1, #0x10] - lsr r1, r0, #0x11 - and r3, r0 - and r1, r2 - orr r1, r3 - strh r1, [r4, #0xa] - str r7, [r4, #0xc] - ldrh r1, [r4, #0xa] - sub r0, r0, #0x1 - and r0, r1 - strh r0, [r4, #0xa] -_02019148: - add sp, #0x8 - pop {r3-r7, pc} - .balign 4 -_0201914C: .word 0xFFFF8000 - - thumb_func_start FUN_02019150 -FUN_02019150: ; 0x02019150 - push {lr} - sub sp, #0x14 - add r3, r2, #0x0 - ldrb r2, [r3, #0x2] - str r2, [sp, #0x0] - ldrb r2, [r3, #0x3] - str r2, [sp, #0x4] - ldrb r2, [r3, #0x4] - str r2, [sp, #0x8] - ldrb r2, [r3, #0x5] - str r2, [sp, #0xc] - ldrh r2, [r3, #0x6] - str r2, [sp, #0x10] - ldrb r2, [r3, #0x0] - ldrb r3, [r3, #0x1] - bl FUN_02019064 - add sp, #0x14 - pop {pc} - .balign 4 - - thumb_func_start FUN_02019178 -FUN_02019178: ; 0x02019178 - push {r4, lr} - add r4, r0, #0x0 - ldr r0, [r4, #0xc] - bl FreeToHeap - mov r2, #0x0 - str r2, [r4, #0x0] - mov r0, #0xff - strb r0, [r4, #0x4] - strb r2, [r4, #0x5] - strb r2, [r4, #0x6] - strb r2, [r4, #0x7] - strb r2, [r4, #0x8] - strb r2, [r4, #0x9] - ldrh r1, [r4, #0xa] - ldr r0, _020191A0 ; =0xFFFF8000 - and r0, r1 - strh r0, [r4, #0xa] - str r2, [r4, #0xc] - pop {r4, pc} - .balign 4 -_020191A0: .word 0xFFFF8000 - - thumb_func_start FUN_020191A4 -FUN_020191A4: ; 0x020191A4 - push {r4-r6, lr} - add r6, r1, #0x0 - add r5, r0, #0x0 - mov r4, #0x0 - cmp r6, #0x0 - ble _020191C8 -_020191B0: - lsl r0, r4, #0x4 - add r0, r5, r0 - ldr r0, [r0, #0xc] - cmp r0, #0x0 - beq _020191BE - bl FreeToHeap -_020191BE: - add r0, r4, #0x1 - lsl r0, r0, #0x10 - lsr r4, r0, #0x10 - cmp r4, r6 - blt _020191B0 -_020191C8: - add r0, r5, #0x0 - bl FreeToHeap - pop {r4-r6, pc} - - thumb_func_start CopyWindowToVram -CopyWindowToVram: ; 0x020191D0 - push {r4, lr} - add r4, r0, #0x0 - bne _020191DA - bl ErrorHandling -_020191DA: - ldr r0, [r4, #0x0] - cmp r0, #0x0 - bne _020191E4 - bl ErrorHandling -_020191E4: - ldrb r0, [r4, #0x4] - cmp r0, #0x8 - blo _020191EE - bl ErrorHandling -_020191EE: - ldrb r1, [r4, #0x4] - mov r0, #0x2c - ldr r2, [r4, #0x0] - mul r0, r1 - add r0, r2, r0 - ldrb r0, [r0, #0x1c] - cmp r0, #0x3 - blo _02019202 - bl ErrorHandling -_02019202: - ldrb r2, [r4, #0x4] - mov r1, #0x2c - ldr r3, [r4, #0x0] - mul r1, r2 - add r1, r3, r1 - ldrb r1, [r1, #0x1c] - add r0, r4, #0x0 - lsl r2, r1, #0x2 - ldr r1, _0201921C ; =UNK_020EDB68 - ldr r1, [r1, r2] - blx r1 - pop {r4, pc} - nop -_0201921C: .word UNK_020EDB68 - - thumb_func_start FUN_02019220 -FUN_02019220: ; 0x02019220 - push {r4, lr} - add r4, r0, #0x0 - bne _0201922A - bl ErrorHandling -_0201922A: - ldr r0, [r4, #0x0] - cmp r0, #0x0 - bne _02019234 - bl ErrorHandling -_02019234: - ldrb r0, [r4, #0x4] - cmp r0, #0x8 - blo _0201923E - bl ErrorHandling -_0201923E: - ldrb r1, [r4, #0x4] - mov r0, #0x2c - ldr r2, [r4, #0x0] - mul r0, r1 - add r0, r2, r0 - ldrb r0, [r0, #0x1c] - cmp r0, #0x3 - blo _02019252 - bl ErrorHandling -_02019252: - ldrb r2, [r4, #0x4] - mov r1, #0x2c - ldr r3, [r4, #0x0] - mul r1, r2 - add r1, r3, r1 - ldrb r1, [r1, #0x1c] - add r0, r4, #0x0 - lsl r2, r1, #0x2 - ldr r1, _0201926C ; =UNK_020EDB5C - ldr r1, [r1, r2] - blx r1 - pop {r4, pc} - nop -_0201926C: .word UNK_020EDB5C - - thumb_func_start FUN_02019270 -FUN_02019270: ; 0x02019270 - push {r3, lr} - ldrb r2, [r0, #0x4] - mov r1, #0x2c - ldr r3, [r0, #0x0] - mul r1, r2 - add r1, r3, r1 - ldrb r1, [r1, #0x1c] - lsl r2, r1, #0x2 - ldr r1, _02019288 ; =UNK_020EDB38 - ldr r1, [r1, r2] - blx r1 - pop {r3, pc} - .balign 4 -_02019288: .word UNK_020EDB38 - - thumb_func_start FUN_0201928C -FUN_0201928C: ; 0x0201928C - push {r4-r6, lr} - add r5, r0, #0x0 - ldrb r6, [r5, #0x7] - ldrb r4, [r5, #0x8] - strb r1, [r5, #0x7] - strb r2, [r5, #0x8] - ldrb r3, [r5, #0x4] - mov r2, #0x2c - ldr r1, [r5, #0x0] - mul r2, r3 - add r1, r1, r2 - ldrb r1, [r1, #0x1c] - lsl r2, r1, #0x2 - ldr r1, _020192B4 ; =UNK_020EDB38 - ldr r1, [r1, r2] - blx r1 - strb r6, [r5, #0x7] - strb r4, [r5, #0x8] - pop {r4-r6, pc} - nop -_020192B4: .word UNK_020EDB38 - - thumb_func_start FUN_020192B8 -FUN_020192B8: ; 0x020192B8 - push {r3, lr} - ldrb r2, [r0, #0x4] - mov r1, #0x2c - ldr r3, [r0, #0x0] - mul r1, r2 - add r1, r3, r1 - ldrb r1, [r1, #0x1c] - lsl r2, r1, #0x2 - ldr r1, _020192D0 ; =UNK_020EDB74 - ldr r1, [r1, r2] - blx r1 - pop {r3, pc} - .balign 4 -_020192D0: .word UNK_020EDB74 - - thumb_func_start FUN_020192D4 -FUN_020192D4: ; 0x020192D4 - push {r3-r7, lr} - sub sp, #0x8 - add r5, r0, #0x0 - ldrb r1, [r5, #0x4] - mov r0, #0x2c - ldr r2, [r5, #0x0] - mul r0, r1 - add r0, r2, r0 - ldr r0, [r0, #0x8] - str r0, [sp, #0x4] - cmp r0, #0x0 - beq _02019354 - ldrh r0, [r5, #0xa] - ldrb r1, [r5, #0x5] - lsl r0, r0, #0x11 - lsr r3, r0, #0x11 - ldrb r0, [r5, #0x7] - add r7, r1, r0 - ldrb r0, [r5, #0x6] - ldrb r1, [r5, #0x8] - mov r12, r0 - add r0, r0, r1 - mov r1, r12 - mov lr, r0 - cmp r1, r0 - bhs _02019354 -_02019308: - ldrb r2, [r5, #0x5] - cmp r2, r7 - bhs _02019348 - mov r0, r12 - lsl r0, r0, #0x1b - lsr r0, r0, #0x16 - lsl r1, r0, #0x1 - ldr r0, [sp, #0x4] - add r0, r0, r1 - mov r1, r12 - str r0, [sp, #0x0] - mov r0, #0x20 - add r6, r1, #0x0 - and r6, r0 -_02019324: - ldrb r0, [r5, #0x9] - mov r4, #0x20 - add r1, r3, #0x0 - lsl r0, r0, #0xc - and r4, r2 - orr r1, r0 - mov r0, #0x1f - add r4, r6, r4 - and r0, r2 - lsl r4, r4, #0x5 - add r0, r0, r4 - lsl r4, r0, #0x1 - ldr r0, [sp, #0x0] - add r2, r2, #0x1 - strh r1, [r0, r4] - add r3, r3, #0x1 - cmp r2, r7 - blo _02019324 -_02019348: - mov r0, r12 - add r1, r0, #0x1 - mov r0, lr - mov r12, r1 - cmp r1, r0 - blo _02019308 -_02019354: - add sp, #0x8 - pop {r3-r7, pc} - - thumb_func_start FUN_02019358 -FUN_02019358: ; 0x02019358 - push {r4-r7} - ldrb r3, [r0, #0x4] - mov r1, #0x2c - add r2, r3, #0x0 - mul r2, r1 - ldr r1, [r0, #0x0] - add r1, r1, r2 - ldr r3, [r1, #0x8] - cmp r3, #0x0 - beq _020193AC - ldrb r2, [r1, #0x1d] - ldr r1, _020193B0 ; =UNK_020EDB30 - ldrb r6, [r1, r2] - ldrb r1, [r0, #0x6] - add r2, r1, #0x0 - mul r2, r6 - add r2, r3, r2 - ldrb r1, [r0, #0x5] - mov r3, #0x0 - add r4, r2, r1 - ldrh r1, [r0, #0xa] - lsl r1, r1, #0x11 - lsr r5, r1, #0x11 - ldrb r1, [r0, #0x8] - cmp r1, #0x0 - ble _020193AC - add r1, r3, #0x0 -_0201938E: - ldrb r7, [r0, #0x7] - add r2, r1, #0x0 - cmp r7, #0x0 - ble _020193A2 -_02019396: - strb r5, [r4, r2] - ldrb r7, [r0, #0x7] - add r2, r2, #0x1 - add r5, r5, #0x1 - cmp r2, r7 - blt _02019396 -_020193A2: - ldrb r2, [r0, #0x8] - add r3, r3, #0x1 - add r4, r4, r6 - cmp r3, r2 - blt _0201938E -_020193AC: - pop {r4-r7} - bx lr - .balign 4 -_020193B0: .word UNK_020EDB30 - - thumb_func_start FUN_020193B4 -FUN_020193B4: ; 0x020193B4 - push {r4-r7, lr} - sub sp, #0xc - ldrb r2, [r0, #0x4] - str r0, [sp, #0x0] - mov r0, #0x2c - add r1, r2, #0x0 - mul r1, r0 - ldr r0, [sp, #0x0] - ldr r0, [r0, #0x0] - add r1, r0, r1 - ldr r0, [r1, #0x8] - str r0, [sp, #0x4] - cmp r0, #0x0 - beq _0201943C - ldrb r1, [r1, #0x1d] - ldr r0, _02019440 ; =UNK_020EDB30 - ldrb r0, [r0, r1] - str r0, [sp, #0x8] - ldr r0, [sp, #0x0] - ldrb r1, [r0, #0x5] - ldrb r0, [r0, #0x7] - add r2, r1, r0 - ldr r0, [sp, #0x0] - ldrb r0, [r0, #0x6] - mov r12, r0 - ldr r0, [sp, #0x0] - ldrb r1, [r0, #0x8] - mov r0, r12 - add r0, r0, r1 - mov r1, r12 - mov lr, r0 - cmp r1, r0 - bhs _0201943C - mov r6, #0x0 - mov r7, #0x20 -_020193FA: - ldr r0, [sp, #0x0] - ldrb r1, [r0, #0x5] - cmp r1, r2 - bhs _02019430 - mov r3, r12 - mov r0, #0x1f - and r3, r0 - ldr r0, [sp, #0x8] - mul r0, r3 - lsl r3, r0, #0x1 - ldr r0, [sp, #0x4] - add r5, r0, r3 - mov r3, r12 - mov r0, #0x20 - and r3, r0 -_02019418: - add r4, r1, #0x0 - and r4, r7 - mov r0, #0x1f - add r4, r3, r4 - and r0, r1 - lsl r4, r4, #0x5 - add r0, r0, r4 - lsl r0, r0, #0x1 - add r1, r1, #0x1 - strh r6, [r5, r0] - cmp r1, r2 - blo _02019418 -_02019430: - mov r0, r12 - add r1, r0, #0x1 - mov r0, lr - mov r12, r1 - cmp r1, r0 - blo _020193FA -_0201943C: - add sp, #0xc - pop {r4-r7, pc} - .balign 4 -_02019440: .word UNK_020EDB30 - - thumb_func_start FUN_02019444 -FUN_02019444: ; 0x02019444 - push {r4-r7} - ldrb r3, [r0, #0x4] - mov r1, #0x2c - add r2, r3, #0x0 - mul r2, r1 - ldr r1, [r0, #0x0] - add r1, r1, r2 - ldr r3, [r1, #0x8] - cmp r3, #0x0 - beq _02019492 - ldrb r2, [r1, #0x1d] - ldr r1, _02019498 ; =UNK_020EDB30 - mov r4, #0x0 - ldrb r6, [r1, r2] - ldrb r1, [r0, #0x6] - add r2, r1, #0x0 - mul r2, r6 - ldrb r1, [r0, #0x5] - add r2, r3, r2 - add r5, r2, r1 - ldrb r1, [r0, #0x8] - cmp r1, #0x0 - ble _02019492 - add r1, r4, #0x0 - add r2, r4, #0x0 -_02019476: - ldrb r7, [r0, #0x7] - add r3, r2, #0x0 - cmp r7, #0x0 - ble _02019488 -_0201947E: - strb r1, [r5, r3] - ldrb r7, [r0, #0x7] - add r3, r3, #0x1 - cmp r3, r7 - blt _0201947E -_02019488: - ldrb r3, [r0, #0x8] - add r4, r4, #0x1 - add r5, r5, r6 - cmp r4, r3 - blt _02019476 -_02019492: - pop {r4-r7} - bx lr - nop -_02019498: .word UNK_020EDB30 - - thumb_func_start FUN_0201949C -FUN_0201949C: ; 0x0201949C - push {r3-r4, lr} - sub sp, #0x4 - add r4, r0, #0x0 - bl FUN_020192D4 - add r0, r4, #0x0 - bl FUN_02019548 - ldrb r1, [r4, #0x4] - mov r0, #0x2c - add r2, r1, #0x0 - mul r2, r0 - ldr r0, [r4, #0x0] - add r3, r0, r2 - ldr r2, [r3, #0x10] - str r2, [sp, #0x0] - ldr r2, [r3, #0x8] - ldr r3, [r3, #0xc] - bl FUN_02017CE8 - add sp, #0x4 - pop {r3-r4, pc} - - thumb_func_start FUN_020194C8 -FUN_020194C8: ; 0x020194C8 - push {r4, lr} - add r4, r0, #0x0 - bl FUN_020192D4 - ldrb r1, [r4, #0x4] - ldr r0, [r4, #0x0] - bl FUN_0201AC68 - add r0, r4, #0x0 - bl FUN_02019548 - pop {r4, pc} - - thumb_func_start FUN_020194E0 -FUN_020194E0: ; 0x020194E0 - push {r3-r5, lr} - add r4, r0, #0x0 - bl FUN_02019358 - ldrb r1, [r4, #0x4] - mov r0, #0x2c - add r2, r1, #0x0 - mul r2, r0 - ldr r0, [r4, #0x0] - add r3, r0, r2 - ldr r2, [r3, #0x10] - str r2, [sp, #0x0] - ldr r2, [r3, #0x8] - ldr r3, [r3, #0xc] - bl FUN_02017CE8 - ldrh r0, [r4, #0xa] - lsl r0, r0, #0x11 - lsr r0, r0, #0x11 - str r0, [sp, #0x0] - ldrb r5, [r4, #0x7] - ldrb r3, [r4, #0x8] - ldrb r1, [r4, #0x4] - ldr r0, [r4, #0x0] - mul r3, r5 - ldr r2, [r4, #0xc] - lsl r3, r3, #0x6 - bl FUN_02017E14 - pop {r3-r5, pc} - - thumb_func_start FUN_0201951C -FUN_0201951C: ; 0x0201951C - push {r3-r5, lr} - add r4, r0, #0x0 - bl FUN_02019358 - ldrb r1, [r4, #0x4] - ldr r0, [r4, #0x0] - bl FUN_0201AC68 - ldrh r0, [r4, #0xa] - lsl r0, r0, #0x11 - lsr r0, r0, #0x11 - str r0, [sp, #0x0] - ldrb r5, [r4, #0x7] - ldrb r3, [r4, #0x8] - ldrb r1, [r4, #0x4] - ldr r0, [r4, #0x0] - mul r3, r5 - ldr r2, [r4, #0xc] - lsl r3, r3, #0x6 - bl FUN_02017E14 - pop {r3-r5, pc} - - thumb_func_start FUN_02019548 -FUN_02019548: ; 0x02019548 - push {r3-r5, lr} - add r3, r0, #0x0 - ldrh r2, [r3, #0xa] - ldrb r1, [r3, #0x4] - mov r4, #0x2c - lsl r2, r2, #0x11 - ldr r0, [r3, #0x0] - lsr r2, r2, #0x11 - str r2, [sp, #0x0] - mul r4, r1 - add r4, r0, r4 - ldr r2, [r3, #0xc] - ldrb r5, [r3, #0x7] - ldrb r3, [r3, #0x8] - ldrb r4, [r4, #0x1f] - mul r3, r5 - mul r3, r4 - bl FUN_02017E14 - pop {r3-r5, pc} - - thumb_func_start FUN_02019570 -FUN_02019570: ; 0x02019570 - push {r3, lr} - ldrb r2, [r0, #0x4] - mov r1, #0x2c - ldr r3, [r0, #0x0] - mul r1, r2 - add r1, r3, r1 - ldrb r1, [r1, #0x1c] - lsl r2, r1, #0x2 - ldr r1, _02019588 ; =UNK_020EDB50 - ldr r1, [r1, r2] - blx r1 - pop {r3, pc} - .balign 4 -_02019588: .word UNK_020EDB50 - - thumb_func_start FUN_0201958C -FUN_0201958C: ; 0x0201958C - push {r3, lr} - ldrb r2, [r0, #0x4] - mov r1, #0x2c - ldr r3, [r0, #0x0] - mul r1, r2 - add r1, r3, r1 - ldrb r1, [r1, #0x1c] - lsl r2, r1, #0x2 - ldr r1, _020195A4 ; =UNK_020EDB44 - ldr r1, [r1, r2] - blx r1 - pop {r3, pc} - .balign 4 -_020195A4: .word UNK_020EDB44 - - thumb_func_start FUN_020195A8 -FUN_020195A8: ; 0x020195A8 - push {r3-r4, lr} - sub sp, #0x4 - add r4, r0, #0x0 - bl FUN_020193B4 - ldrb r1, [r4, #0x4] - mov r0, #0x2c - add r2, r1, #0x0 - mul r2, r0 - ldr r0, [r4, #0x0] - add r3, r0, r2 - ldr r2, [r3, #0x10] - str r2, [sp, #0x0] - ldr r2, [r3, #0x8] - ldr r3, [r3, #0xc] - bl FUN_02017CE8 - add sp, #0x4 - pop {r3-r4, pc} - .balign 4 - - thumb_func_start FUN_020195D0 -FUN_020195D0: ; 0x020195D0 - push {r4, lr} - add r4, r0, #0x0 - bl FUN_020193B4 - ldrb r1, [r4, #0x4] - ldr r0, [r4, #0x0] - bl FUN_0201AC68 - pop {r4, pc} - .balign 4 - - thumb_func_start FUN_020195E4 -FUN_020195E4: ; 0x020195E4 - push {r3-r4, lr} - sub sp, #0x4 - add r4, r0, #0x0 - bl FUN_02019444 - ldrb r1, [r4, #0x4] - mov r0, #0x2c - add r2, r1, #0x0 - mul r2, r0 - ldr r0, [r4, #0x0] - add r3, r0, r2 - ldr r2, [r3, #0x10] - str r2, [sp, #0x0] - ldr r2, [r3, #0x8] - ldr r3, [r3, #0xc] - bl FUN_02017CE8 - add sp, #0x4 - pop {r3-r4, pc} - .balign 4 - - thumb_func_start FUN_0201960C -FUN_0201960C: ; 0x0201960C - push {r4, lr} - add r4, r0, #0x0 - bl FUN_02019444 - ldrb r1, [r4, #0x4] - ldr r0, [r4, #0x0] - bl FUN_0201AC68 - pop {r4, pc} - .balign 4 - - thumb_func_start FUN_02019620 -FUN_02019620: ; 0x02019620 - push {r3-r5, lr} - add r4, r0, #0x0 - ldrb r2, [r4, #0x4] - mov r0, #0x2c - ldr r3, [r4, #0x0] - mul r0, r2 - add r0, r3, r0 - ldrb r2, [r0, #0x1f] - cmp r2, #0x20 - bne _0201963C - lsl r0, r1, #0x4 - orr r0, r1 - lsl r0, r0, #0x18 - lsr r1, r0, #0x18 -_0201963C: - lsl r3, r1, #0x18 - lsl r0, r1, #0x10 - orr r0, r3 - lsl r5, r1, #0x8 - orr r0, r5 - orr r0, r1 - ldr r1, [r4, #0xc] - ldrb r3, [r4, #0x8] - ldrb r4, [r4, #0x7] - mul r2, r4 - mul r2, r3 - bl MIi_CpuClearFast - pop {r3-r5, pc} - - thumb_func_start FUN_02019658 -FUN_02019658: ; 0x02019658 - push {r4-r5, lr} - sub sp, #0x1c - add r4, sp, #0x18 - ldrh r5, [r4, #0x10] - str r5, [sp, #0x0] - ldrh r5, [r4, #0x14] - str r5, [sp, #0x4] - ldrh r5, [r4, #0x18] - str r5, [sp, #0x8] - ldrh r5, [r4, #0x1c] - str r5, [sp, #0xc] - ldrh r5, [r4, #0x20] - str r5, [sp, #0x10] - ldrh r4, [r4, #0x24] - str r4, [sp, #0x14] - mov r4, #0x0 - str r4, [sp, #0x18] - bl FUN_02019684 - add sp, #0x1c - pop {r4-r5, pc} - .balign 4 - - thumb_func_start FUN_02019684 -FUN_02019684: ; 0x02019684 - push {r4-r5, lr} - sub sp, #0x24 - str r1, [sp, #0x1c] - add r4, sp, #0x20 - ldrh r5, [r4, #0x10] - add r1, sp, #0x14 - strh r5, [r1, #0xc] - ldrh r5, [r4, #0x14] - strh r5, [r1, #0xe] - ldr r5, [r0, #0xc] - str r5, [sp, #0x14] - ldrb r5, [r0, #0x7] - lsl r5, r5, #0x3 - strh r5, [r1, #0x4] - ldrb r5, [r0, #0x8] - lsl r5, r5, #0x3 - strh r5, [r1, #0x6] - ldrb r5, [r0, #0x4] - ldr r1, [r0, #0x0] - mov r0, #0x2c - mul r0, r5 - add r0, r1, r0 - ldrb r0, [r0, #0x1e] - add r1, sp, #0x14 - cmp r0, #0x0 - ldrh r0, [r4, #0x18] - bne _020196D6 - str r0, [sp, #0x0] - ldrh r0, [r4, #0x1c] - str r0, [sp, #0x4] - ldrh r0, [r4, #0x20] - str r0, [sp, #0x8] - ldrh r0, [r4, #0x24] - str r0, [sp, #0xc] - ldrh r0, [r4, #0x28] - str r0, [sp, #0x10] - add r0, sp, #0x1c - bl FUN_02018A60 - add sp, #0x24 - pop {r4-r5, pc} -_020196D6: - str r0, [sp, #0x0] - ldrh r0, [r4, #0x1c] - str r0, [sp, #0x4] - ldrh r0, [r4, #0x20] - str r0, [sp, #0x8] - ldrh r0, [r4, #0x24] - str r0, [sp, #0xc] - ldrh r0, [r4, #0x28] - str r0, [sp, #0x10] - add r0, sp, #0x1c - bl FUN_02018CA0 - add sp, #0x24 - pop {r4-r5, pc} - .balign 4 - - thumb_func_start FUN_020196F4 -FUN_020196F4: ; 0x020196F4 - push {r3-r5, lr} - sub sp, #0x10 - add r5, r1, #0x0 - ldr r1, [r0, #0xc] - add r4, r2, #0x0 - str r1, [sp, #0x8] - ldrb r1, [r0, #0x7] - add r2, r3, #0x0 - lsl r3, r1, #0x3 - add r1, sp, #0x8 - strh r3, [r1, #0x4] - ldrb r3, [r0, #0x8] - lsl r3, r3, #0x3 - strh r3, [r1, #0x6] - ldrb r3, [r0, #0x4] - ldr r1, [r0, #0x0] - mov r0, #0x2c - mul r0, r3 - add r0, r1, r0 - ldrb r0, [r0, #0x1e] - add r3, sp, #0x10 - cmp r0, #0x0 - bne _02019736 - ldrh r0, [r3, #0x14] - add r1, r4, #0x0 - str r0, [sp, #0x0] - str r5, [sp, #0x4] - ldrh r3, [r3, #0x10] - add r0, sp, #0x8 - bl FUN_02018E88 - add sp, #0x10 - pop {r3-r5, pc} -_02019736: - ldrh r0, [r3, #0x14] - add r1, r4, #0x0 - str r0, [sp, #0x0] - str r5, [sp, #0x4] - ldrh r3, [r3, #0x10] - add r0, sp, #0x8 - bl FUN_02018F4C - add sp, #0x10 - pop {r3-r5, pc} - .balign 4 - - thumb_func_start FUN_0201974C -FUN_0201974C: ; 0x0201974C - push {r4-r7, lr} - sub sp, #0x1fc - sub sp, #0x118 - add r5, r0, #0x0 - ldr r0, [sp, #0x330] - str r1, [sp, #0x0] - str r0, [sp, #0x330] - add r1, sp, #0x318 - ldrh r1, [r1, #0x10] - ldr r0, [r5, #0xc] - str r1, [sp, #0x5c] - ldrb r1, [r5, #0x7] - str r0, [sp, #0x278] - ldrb r0, [r5, #0x8] - lsl r1, r1, #0x13 - lsr r4, r1, #0x10 - ldr r1, [sp, #0x5c] - lsl r0, r0, #0x13 - sub r1, r4, r1 - lsr r0, r0, #0x10 - str r4, [sp, #0x58] - str r1, [sp, #0x8] - cmp r1, r2 - blt _0201977E - str r2, [sp, #0x8] -_0201977E: - add r1, sp, #0x318 - ldrh r1, [r1, #0x14] - sub r0, r0, r1 - str r1, [sp, #0x48] - str r0, [sp, #0x4] - cmp r0, r3 - blt _0201978E - str r3, [sp, #0x4] -_0201978E: - ldr r0, [sp, #0x8] - mov r4, #0x0 - cmp r0, #0x8 - ble _0201979E - mov r0, #0x1 - orr r0, r4 - lsl r0, r0, #0x18 - lsr r4, r0, #0x18 -_0201979E: - ldr r0, [sp, #0x4] - cmp r0, #0x8 - ble _020197AC - mov r0, #0x2 - orr r0, r4 - lsl r0, r0, #0x18 - lsr r4, r0, #0x18 -_020197AC: - ldrh r0, [r5, #0xa] - lsl r0, r0, #0x10 - lsr r0, r0, #0x1f - beq _020197B8 - bl FUN_0201A12C -_020197B8: - cmp r4, #0x3 - bls _020197C0 - bl FUN_0201A8BC -_020197C0: - add r0, r4, r4 - add r0, pc - ldrh r0, [r0, #0x6] - lsl r0, r0, #0x10 - asr r0, r0, #0x10 - add pc, r0 -_020197CC: ; jump table (using 16-bit offset) - .short _020197D4 - _020197CC - 2; case 0 - .short _020198D6 - _020197CC - 2; case 1 - .short _02019AE6 - _020197CC - 2; case 2 - .short _02019D06 - _020197CC - 2; case 3 -_020197D4: - ldr r0, [sp, #0x330] - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - str r0, [sp, #0x70] - mov r0, #0x0 - str r0, [sp, #0x274] - ldr r0, [sp, #0x4] - cmp r0, #0x0 - bgt _020197EA - bl FUN_0201A8BC -_020197EA: - ldr r0, [sp, #0x58] - mov r1, #0x7 - and r1, r0 - add r0, r0, r1 - asr r0, r0, #0x3 - str r0, [sp, #0x6c] -_020197F6: - ldr r0, [sp, #0x0] - ldr r1, [sp, #0x70] - ldr r0, [r0, #0x0] - ldr r2, [sp, #0x5c] - str r0, [sp, #0x26c] - ldr r0, [sp, #0x274] - asr r1, r0 - mov r0, #0x1 - and r0, r1 - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - str r0, [sp, #0x270] - ldr r0, [sp, #0x8] - mov r1, #0x0 - cmp r0, #0x0 - ble _020198AA - ble _020198AA - add r0, r2, #0x0 - lsl r3, r0, #0x2 - ldr r0, [sp, #0x48] - ldr r6, [sp, #0x6c] - lsl r5, r0, #0x2 - ldr r0, _02019B68 ; =0x00003FE0 - add r7, r5, #0x0 - and r0, r5 - mul r6, r0 - mov r0, #0x1c - and r7, r0 - ldr r0, [sp, #0x48] - str r6, [sp, #0x68] - add r0, r0, #0x1 - lsl r6, r0, #0x2 - ldr r0, _02019B68 ; =0x00003FE0 - ldr r5, [sp, #0x6c] - and r0, r6 - mul r5, r0 - mov r0, #0x1c - and r0, r6 - add r4, r1, #0x0 - str r5, [sp, #0x64] - str r0, [sp, #0x60] -_02019848: - asr r5, r2, #0x1 - mov r0, #0x3 - and r5, r0 - ldr r0, [sp, #0x278] - add r0, r0, r5 - ldr r5, _02019B68 ; =0x00003FE0 - and r5, r3 - add r5, r0, r5 - ldr r0, [sp, #0x68] - str r5, [sp, #0x27c] - add r0, r5, r0 - ldr r5, [sp, #0x26c] - add r6, r5, #0x0 - lsr r6, r4 - mov r5, #0xf - and r5, r6 - lsl r5, r5, #0x18 - lsr r5, r5, #0x18 - beq _0201989C - lsl r6, r2, #0x1f - lsr r6, r6, #0x1d - lsl r5, r6 - str r5, [sp, #0x280] - ldrb r5, [r0, r7] - str r5, [sp, #0x284] - mov r5, #0xf0 - asr r5, r6 - ldr r6, [sp, #0x284] - and r6, r5 - ldr r5, [sp, #0x280] - orr r5, r6 - lsl r5, r5, #0x18 - lsr r5, r5, #0x18 - strb r5, [r0, r7] - ldr r0, [sp, #0x270] - cmp r0, #0x0 - beq _0201989C - ldr r6, [sp, #0x27c] - ldr r0, [sp, #0x64] - add r6, r6, r0 - ldr r0, [sp, #0x60] - strb r5, [r0, r6] -_0201989C: - ldr r0, [sp, #0x8] - add r1, r1, #0x1 - add r4, r4, #0x4 - add r3, r3, #0x4 - add r2, r2, #0x1 - cmp r1, r0 - blt _02019848 -_020198AA: - ldr r0, [sp, #0x270] - cmp r0, #0x0 - beq _020198B8 - ldr r0, [sp, #0x48] - add r0, r0, #0x2 - str r0, [sp, #0x48] - b _020198BE -_020198B8: - ldr r0, [sp, #0x48] - add r0, r0, #0x1 - str r0, [sp, #0x48] -_020198BE: - ldr r0, [sp, #0x0] - add r0, r0, #0x4 - str r0, [sp, #0x0] - ldr r0, [sp, #0x274] - add r1, r0, #0x1 - ldr r0, [sp, #0x4] - str r1, [sp, #0x274] - cmp r1, r0 - blt _020197F6 - add sp, #0x1fc - add sp, #0x118 - pop {r4-r7, pc} -_020198D6: - ldr r0, [sp, #0x0] - str r0, [sp, #0x25c] - ldr r0, [sp, #0x48] - str r0, [sp, #0x264] - ldr r0, [sp, #0x330] - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - str r0, [sp, #0x54] - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - str r0, [sp, #0x84] - mov r0, #0x0 - str r0, [sp, #0x268] - ldr r0, [sp, #0x4] - cmp r0, #0x0 - ble _020199D2 - ldr r0, [sp, #0x58] - mov r1, #0x7 - and r1, r0 - add r0, r0, r1 - asr r0, r0, #0x3 - str r0, [sp, #0x80] -_02019902: - ldr r0, [sp, #0x25c] - ldr r1, [sp, #0x84] - ldr r0, [r0, #0x0] - ldr r2, [sp, #0x5c] - str r0, [sp, #0x258] - ldr r0, [sp, #0x268] - ldr r6, [sp, #0x80] - asr r1, r0 - mov r0, #0x1 - and r0, r1 - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - str r0, [sp, #0x260] - add r0, r2, #0x0 - lsl r3, r0, #0x2 - ldr r0, [sp, #0x264] - mov r1, #0x0 - lsl r5, r0, #0x2 - ldr r0, _02019B68 ; =0x00003FE0 - add r7, r5, #0x0 - and r0, r5 - mul r6, r0 - mov r0, #0x1c - and r7, r0 - ldr r0, [sp, #0x264] - str r6, [sp, #0x7c] - add r0, r0, #0x1 - lsl r6, r0, #0x2 - ldr r0, _02019B68 ; =0x00003FE0 - ldr r5, [sp, #0x80] - and r0, r6 - mul r5, r0 - mov r0, #0x1c - and r0, r6 - add r4, r1, #0x0 - str r5, [sp, #0x78] - str r0, [sp, #0x74] -_0201994C: - asr r5, r2, #0x1 - mov r0, #0x3 - and r5, r0 - ldr r0, [sp, #0x278] - add r0, r0, r5 - ldr r5, _02019B68 ; =0x00003FE0 - and r5, r3 - add r5, r0, r5 - ldr r0, [sp, #0x7c] - str r5, [sp, #0x288] - add r0, r5, r0 - ldr r5, [sp, #0x258] - add r6, r5, #0x0 - lsr r6, r4 - mov r5, #0xf - and r5, r6 - lsl r5, r5, #0x18 - lsr r5, r5, #0x18 - beq _020199A0 - lsl r6, r2, #0x1f - lsr r6, r6, #0x1d - lsl r5, r6 - str r5, [sp, #0x28c] - ldrb r5, [r0, r7] - str r5, [sp, #0x290] - mov r5, #0xf0 - asr r5, r6 - ldr r6, [sp, #0x290] - and r6, r5 - ldr r5, [sp, #0x28c] - orr r5, r6 - lsl r5, r5, #0x18 - lsr r5, r5, #0x18 - strb r5, [r0, r7] - ldr r0, [sp, #0x260] - cmp r0, #0x0 - beq _020199A0 - ldr r6, [sp, #0x288] - ldr r0, [sp, #0x78] - add r6, r6, r0 - ldr r0, [sp, #0x74] - strb r5, [r0, r6] -_020199A0: - add r1, r1, #0x1 - add r4, r4, #0x4 - add r3, r3, #0x4 - add r2, r2, #0x1 - cmp r1, #0x8 - blt _0201994C - ldr r0, [sp, #0x260] - cmp r0, #0x0 - beq _020199BA - ldr r0, [sp, #0x264] - add r0, r0, #0x2 - str r0, [sp, #0x264] - b _020199C0 -_020199BA: - ldr r0, [sp, #0x264] - add r0, r0, #0x1 - str r0, [sp, #0x264] -_020199C0: - ldr r0, [sp, #0x25c] - add r0, r0, #0x4 - str r0, [sp, #0x25c] - ldr r0, [sp, #0x268] - add r1, r0, #0x1 - ldr r0, [sp, #0x4] - str r1, [sp, #0x268] - cmp r1, r0 - blt _02019902 -_020199D2: - ldr r0, [sp, #0x0] - add r0, #0x20 - str r0, [sp, #0x0] - ldr r0, [sp, #0x54] - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - str r0, [sp, #0x98] - mov r0, #0x0 - str r0, [sp, #0x254] - ldr r0, [sp, #0x4] - cmp r0, #0x0 - bgt _020199EE - bl FUN_0201A8BC -_020199EE: - ldr r0, [sp, #0x5c] - mov r1, #0x7 - add r0, #0x8 - str r0, [sp, #0x5c] - ldr r0, [sp, #0x58] - and r1, r0 - add r0, r0, r1 - asr r0, r0, #0x3 - str r0, [sp, #0x94] -_02019A00: - ldr r0, [sp, #0x0] - ldr r1, [sp, #0x98] - ldr r0, [r0, #0x0] - ldr r2, [sp, #0x5c] - str r0, [sp, #0x24c] - ldr r0, [sp, #0x254] - asr r1, r0 - mov r0, #0x1 - and r0, r1 - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - str r0, [sp, #0x250] - ldr r0, [sp, #0x8] - mov r1, #0x0 - str r0, [sp, #0x294] - sub r0, #0x8 - str r0, [sp, #0x294] - cmp r0, #0x0 - ble _02019ABA - ble _02019ABA - add r0, r2, #0x0 - lsl r3, r0, #0x2 - ldr r0, [sp, #0x48] - ldr r6, [sp, #0x94] - lsl r5, r0, #0x2 - ldr r0, _02019B68 ; =0x00003FE0 - add r7, r5, #0x0 - and r0, r5 - mul r6, r0 - mov r0, #0x1c - and r7, r0 - ldr r0, [sp, #0x48] - str r6, [sp, #0x90] - add r0, r0, #0x1 - lsl r6, r0, #0x2 - ldr r0, _02019B68 ; =0x00003FE0 - ldr r5, [sp, #0x94] - and r0, r6 - mul r5, r0 - mov r0, #0x1c - and r0, r6 - add r4, r1, #0x0 - str r5, [sp, #0x8c] - str r0, [sp, #0x88] -_02019A58: - asr r5, r2, #0x1 - mov r0, #0x3 - and r5, r0 - ldr r0, [sp, #0x278] - add r0, r0, r5 - ldr r5, _02019B68 ; =0x00003FE0 - and r5, r3 - add r5, r0, r5 - ldr r0, [sp, #0x90] - str r5, [sp, #0x298] - add r0, r5, r0 - ldr r5, [sp, #0x24c] - add r6, r5, #0x0 - lsr r6, r4 - mov r5, #0xf - and r5, r6 - lsl r5, r5, #0x18 - lsr r5, r5, #0x18 - beq _02019AAC - lsl r6, r2, #0x1f - lsr r6, r6, #0x1d - lsl r5, r6 - str r5, [sp, #0x29c] - ldrb r5, [r0, r7] - str r5, [sp, #0x2a0] - mov r5, #0xf0 - asr r5, r6 - ldr r6, [sp, #0x2a0] - and r6, r5 - ldr r5, [sp, #0x29c] - orr r5, r6 - lsl r5, r5, #0x18 - lsr r5, r5, #0x18 - strb r5, [r0, r7] - ldr r0, [sp, #0x250] - cmp r0, #0x0 - beq _02019AAC - ldr r6, [sp, #0x298] - ldr r0, [sp, #0x8c] - add r6, r6, r0 - ldr r0, [sp, #0x88] - strb r5, [r0, r6] -_02019AAC: - ldr r0, [sp, #0x294] - add r1, r1, #0x1 - add r4, r4, #0x4 - add r3, r3, #0x4 - add r2, r2, #0x1 - cmp r1, r0 - blt _02019A58 -_02019ABA: - ldr r0, [sp, #0x250] - cmp r0, #0x0 - beq _02019AC8 - ldr r0, [sp, #0x48] - add r0, r0, #0x2 - str r0, [sp, #0x48] - b _02019ACE -_02019AC8: - ldr r0, [sp, #0x48] - add r0, r0, #0x1 - str r0, [sp, #0x48] -_02019ACE: - ldr r0, [sp, #0x0] - add r0, r0, #0x4 - str r0, [sp, #0x0] - ldr r0, [sp, #0x254] - add r1, r0, #0x1 - ldr r0, [sp, #0x4] - str r1, [sp, #0x254] - cmp r1, r0 - blt _02019A00 - add sp, #0x1fc - add sp, #0x118 - pop {r4-r7, pc} -_02019AE6: - ldr r0, [sp, #0x0] - mov r1, #0x7 - str r0, [sp, #0x23c] - ldr r0, [sp, #0x48] - str r0, [sp, #0x244] - mov r0, #0x0 - str r0, [sp, #0x248] - ldr r0, [sp, #0x330] - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - str r0, [sp, #0xa8] - ldr r0, [sp, #0x58] - and r1, r0 - add r0, r0, r1 - asr r0, r0, #0x3 - str r0, [sp, #0x40] -_02019B06: - ldr r0, [sp, #0x23c] - ldr r1, [sp, #0xa8] - ldr r0, [r0, #0x0] - ldr r2, [sp, #0x5c] - str r0, [sp, #0x238] - ldr r0, [sp, #0x248] - asr r1, r0 - mov r0, #0x1 - and r0, r1 - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - str r0, [sp, #0x240] - ldr r0, [sp, #0x8] - mov r1, #0x0 - cmp r0, #0x0 - ble _02019BC2 - ble _02019BC2 - add r0, r2, #0x0 - lsl r3, r0, #0x2 - ldr r0, [sp, #0x244] - ldr r6, [sp, #0x40] - lsl r5, r0, #0x2 - ldr r0, _02019B68 ; =0x00003FE0 - add r7, r5, #0x0 - and r0, r5 - mul r6, r0 - mov r0, #0x1c - and r7, r0 - ldr r0, [sp, #0x244] - str r6, [sp, #0xa4] - add r0, r0, #0x1 - lsl r6, r0, #0x2 - ldr r0, _02019B68 ; =0x00003FE0 - ldr r5, [sp, #0x40] - and r0, r6 - mul r5, r0 - mov r0, #0x1c - and r0, r6 - add r4, r1, #0x0 - str r5, [sp, #0xa0] - str r0, [sp, #0x9c] -_02019B58: - asr r5, r2, #0x1 - mov r0, #0x3 - and r5, r0 - ldr r0, [sp, #0x278] - add r0, r0, r5 - ldr r5, _02019B68 ; =0x00003FE0 - b _02019B6C - nop -_02019B68: .word 0x00003FE0 -_02019B6C: - and r5, r3 - add r5, r0, r5 - ldr r0, [sp, #0xa4] - str r5, [sp, #0x2a4] - add r0, r5, r0 - ldr r5, [sp, #0x238] - add r6, r5, #0x0 - lsr r6, r4 - mov r5, #0xf - and r5, r6 - lsl r5, r5, #0x18 - lsr r5, r5, #0x18 - beq _02019BB4 - lsl r6, r2, #0x1f - lsr r6, r6, #0x1d - lsl r5, r6 - str r5, [sp, #0x2a8] - ldrb r5, [r0, r7] - str r5, [sp, #0x2ac] - mov r5, #0xf0 - asr r5, r6 - ldr r6, [sp, #0x2ac] - and r6, r5 - ldr r5, [sp, #0x2a8] - orr r5, r6 - lsl r5, r5, #0x18 - lsr r5, r5, #0x18 - strb r5, [r0, r7] - ldr r0, [sp, #0x240] - cmp r0, #0x0 - beq _02019BB4 - ldr r6, [sp, #0x2a4] - ldr r0, [sp, #0xa0] - add r6, r6, r0 - ldr r0, [sp, #0x9c] - strb r5, [r0, r6] -_02019BB4: - ldr r0, [sp, #0x8] - add r1, r1, #0x1 - add r4, r4, #0x4 - add r3, r3, #0x4 - add r2, r2, #0x1 - cmp r1, r0 - blt _02019B58 -_02019BC2: - ldr r0, [sp, #0x240] - cmp r0, #0x0 - beq _02019BD0 - ldr r0, [sp, #0x244] - add r0, r0, #0x2 - str r0, [sp, #0x244] - b _02019BD6 -_02019BD0: - ldr r0, [sp, #0x244] - add r0, r0, #0x1 - str r0, [sp, #0x244] -_02019BD6: - ldr r0, [sp, #0x23c] - add r0, r0, #0x4 - str r0, [sp, #0x23c] - ldr r0, [sp, #0x248] - add r0, r0, #0x1 - str r0, [sp, #0x248] - cmp r0, #0x8 - blt _02019B06 - ldr r0, [sp, #0x0] - mov r2, #0x0 - add r0, #0x40 - str r0, [sp, #0x0] - ldr r0, [sp, #0x48] - mov r1, #0x1 - add r0, #0x8 - str r0, [sp, #0x48] -_02019BF6: - ldr r0, [sp, #0x330] - asr r0, r2 - tst r0, r1 - beq _02019C04 - ldr r0, [sp, #0x48] - add r0, r0, #0x1 - str r0, [sp, #0x48] -_02019C04: - add r2, r2, #0x1 - cmp r2, #0x8 - blt _02019BF6 - ldr r0, [sp, #0x330] - asr r0, r0, #0x8 - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - str r0, [sp, #0xb8] - mov r0, #0x0 - str r0, [sp, #0x20] - ldr r0, [sp, #0x4] - sub r0, #0x8 - cmp r0, #0x0 - bgt _02019C24 - bl FUN_0201A8BC -_02019C24: - ldr r0, [sp, #0x0] - ldr r1, [sp, #0xb8] - ldr r0, [r0, #0x0] - ldr r2, [sp, #0x5c] - str r0, [sp, #0x230] - ldr r0, [sp, #0x20] - asr r1, r0 - mov r0, #0x1 - and r0, r1 - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - str r0, [sp, #0x234] - ldr r0, [sp, #0x8] - mov r1, #0x0 - cmp r0, #0x0 - ble _02019CD8 - ble _02019CD8 - add r0, r2, #0x0 - lsl r3, r0, #0x2 - ldr r0, [sp, #0x48] - ldr r6, [sp, #0x40] - lsl r5, r0, #0x2 - ldr r0, _02019F88 ; =0x00003FE0 - add r7, r5, #0x0 - and r0, r5 - mul r6, r0 - mov r0, #0x1c - and r7, r0 - ldr r0, [sp, #0x48] - str r6, [sp, #0xb4] - add r0, r0, #0x1 - lsl r6, r0, #0x2 - ldr r0, _02019F88 ; =0x00003FE0 - ldr r5, [sp, #0x40] - and r0, r6 - mul r5, r0 - mov r0, #0x1c - and r0, r6 - add r4, r1, #0x0 - str r5, [sp, #0xb0] - str r0, [sp, #0xac] -_02019C76: - asr r5, r2, #0x1 - mov r0, #0x3 - and r5, r0 - ldr r0, [sp, #0x278] - add r0, r0, r5 - ldr r5, _02019F88 ; =0x00003FE0 - and r5, r3 - add r5, r0, r5 - ldr r0, [sp, #0xb4] - str r5, [sp, #0x2b0] - add r0, r5, r0 - ldr r5, [sp, #0x230] - add r6, r5, #0x0 - lsr r6, r4 - mov r5, #0xf - and r5, r6 - lsl r5, r5, #0x18 - lsr r5, r5, #0x18 - beq _02019CCA - lsl r6, r2, #0x1f - lsr r6, r6, #0x1d - lsl r5, r6 - str r5, [sp, #0x2b4] - ldrb r5, [r0, r7] - str r5, [sp, #0x2b8] - mov r5, #0xf0 - asr r5, r6 - ldr r6, [sp, #0x2b8] - and r6, r5 - ldr r5, [sp, #0x2b4] - orr r5, r6 - lsl r5, r5, #0x18 - lsr r5, r5, #0x18 - strb r5, [r0, r7] - ldr r0, [sp, #0x234] - cmp r0, #0x0 - beq _02019CCA - ldr r6, [sp, #0x2b0] - ldr r0, [sp, #0xb0] - add r6, r6, r0 - ldr r0, [sp, #0xac] - strb r5, [r0, r6] -_02019CCA: - ldr r0, [sp, #0x8] - add r1, r1, #0x1 - add r4, r4, #0x4 - add r3, r3, #0x4 - add r2, r2, #0x1 - cmp r1, r0 - blt _02019C76 -_02019CD8: - ldr r0, [sp, #0x234] - cmp r0, #0x0 - beq _02019CE6 - ldr r0, [sp, #0x48] - add r0, r0, #0x2 - str r0, [sp, #0x48] - b _02019CEC -_02019CE6: - ldr r0, [sp, #0x48] - add r0, r0, #0x1 - str r0, [sp, #0x48] -_02019CEC: - ldr r0, [sp, #0x0] - ldr r1, [sp, #0x4] - add r0, r0, #0x4 - str r0, [sp, #0x0] - ldr r0, [sp, #0x20] - sub r1, #0x8 - add r0, r0, #0x1 - str r0, [sp, #0x20] - cmp r0, r1 - blt _02019C24 - add sp, #0x1fc - add sp, #0x118 - pop {r4-r7, pc} -_02019D06: - ldr r0, [sp, #0x0] - str r0, [sp, #0x220] - ldr r0, [sp, #0x48] - str r0, [sp, #0x228] - ldr r0, [sp, #0x330] - lsl r0, r0, #0x18 - lsr r1, r0, #0x18 - mov r0, #0x0 - str r0, [sp, #0x22c] - lsl r0, r1, #0x18 - lsr r0, r0, #0x18 - str r0, [sp, #0x3c] - ldr r0, [sp, #0x58] - mov r1, #0x7 - and r1, r0 - add r0, r0, r1 - asr r0, r0, #0x3 - str r0, [sp, #0x38] -_02019D2A: - ldr r0, [sp, #0x220] - ldr r1, [sp, #0x3c] - ldr r0, [r0, #0x0] - ldr r2, [sp, #0x5c] - str r0, [sp, #0x21c] - ldr r0, [sp, #0x22c] - ldr r6, [sp, #0x38] - asr r1, r0 - mov r0, #0x1 - and r0, r1 - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - str r0, [sp, #0x224] - add r0, r2, #0x0 - lsl r3, r0, #0x2 - ldr r0, [sp, #0x228] - mov r1, #0x0 - lsl r5, r0, #0x2 - ldr r0, _02019F88 ; =0x00003FE0 - add r7, r5, #0x0 - and r0, r5 - mul r6, r0 - mov r0, #0x1c - and r7, r0 - ldr r0, [sp, #0x228] - str r6, [sp, #0xc4] - add r0, r0, #0x1 - lsl r6, r0, #0x2 - ldr r0, _02019F88 ; =0x00003FE0 - ldr r5, [sp, #0x38] - and r0, r6 - mul r5, r0 - mov r0, #0x1c - and r0, r6 - str r3, [sp, #0x34] - add r4, r1, #0x0 - str r5, [sp, #0xc0] - str r0, [sp, #0xbc] -_02019D76: - asr r5, r2, #0x1 - mov r0, #0x3 - and r5, r0 - ldr r0, [sp, #0x278] - add r0, r0, r5 - ldr r5, _02019F88 ; =0x00003FE0 - and r5, r3 - add r5, r0, r5 - ldr r0, [sp, #0xc4] - str r5, [sp, #0x2bc] - add r0, r5, r0 - ldr r5, [sp, #0x21c] - add r6, r5, #0x0 - lsr r6, r4 - mov r5, #0xf - and r5, r6 - lsl r5, r5, #0x18 - lsr r5, r5, #0x18 - beq _02019DCA - lsl r6, r2, #0x1f - lsr r6, r6, #0x1d - lsl r5, r6 - str r5, [sp, #0x2c0] - ldrb r5, [r0, r7] - str r5, [sp, #0x2c4] - mov r5, #0xf0 - asr r5, r6 - ldr r6, [sp, #0x2c4] - and r6, r5 - ldr r5, [sp, #0x2c0] - orr r5, r6 - lsl r5, r5, #0x18 - lsr r5, r5, #0x18 - strb r5, [r0, r7] - ldr r0, [sp, #0x224] - cmp r0, #0x0 - beq _02019DCA - ldr r6, [sp, #0x2bc] - ldr r0, [sp, #0xc0] - add r6, r6, r0 - ldr r0, [sp, #0xbc] - strb r5, [r0, r6] -_02019DCA: - add r1, r1, #0x1 - add r4, r4, #0x4 - add r3, r3, #0x4 - add r2, r2, #0x1 - cmp r1, #0x8 - blt _02019D76 - ldr r0, [sp, #0x224] - cmp r0, #0x0 - beq _02019DE4 - ldr r0, [sp, #0x228] - add r0, r0, #0x2 - str r0, [sp, #0x228] - b _02019DEA -_02019DE4: - ldr r0, [sp, #0x228] - add r0, r0, #0x1 - str r0, [sp, #0x228] -_02019DEA: - ldr r0, [sp, #0x220] - add r0, r0, #0x4 - str r0, [sp, #0x220] - ldr r0, [sp, #0x22c] - add r0, r0, #0x1 - str r0, [sp, #0x22c] - cmp r0, #0x8 - blt _02019D2A - ldr r0, [sp, #0x0] - str r0, [sp, #0x20c] - add r0, #0x20 - str r0, [sp, #0x20c] - ldr r0, [sp, #0x48] - str r0, [sp, #0x214] - mov r0, #0x0 - str r0, [sp, #0x218] - ldr r0, [sp, #0x5c] - str r0, [sp, #0xd4] - add r0, #0x8 - str r0, [sp, #0xd4] -_02019E12: - ldr r0, [sp, #0x20c] - ldr r1, [sp, #0x3c] - ldr r0, [r0, #0x0] - ldr r2, [sp, #0xd4] - str r0, [sp, #0x208] - ldr r0, [sp, #0x218] - asr r1, r0 - mov r0, #0x1 - and r0, r1 - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - str r0, [sp, #0x210] - ldr r0, [sp, #0x8] - mov r1, #0x0 - str r0, [sp, #0x2c8] - sub r0, #0x8 - str r0, [sp, #0x2c8] - cmp r0, #0x0 - ble _02019ECC - ble _02019ECC - add r0, r2, #0x0 - lsl r3, r0, #0x2 - ldr r0, [sp, #0x214] - ldr r6, [sp, #0x38] - lsl r5, r0, #0x2 - ldr r0, _02019F88 ; =0x00003FE0 - add r7, r5, #0x0 - and r0, r5 - mul r6, r0 - mov r0, #0x1c - and r7, r0 - ldr r0, [sp, #0x214] - str r6, [sp, #0xd0] - add r0, r0, #0x1 - lsl r6, r0, #0x2 - ldr r0, _02019F88 ; =0x00003FE0 - ldr r5, [sp, #0x38] - and r0, r6 - mul r5, r0 - mov r0, #0x1c - and r0, r6 - add r4, r1, #0x0 - str r5, [sp, #0xcc] - str r0, [sp, #0xc8] -_02019E6A: - asr r5, r2, #0x1 - mov r0, #0x3 - and r5, r0 - ldr r0, [sp, #0x278] - add r0, r0, r5 - ldr r5, _02019F88 ; =0x00003FE0 - and r5, r3 - add r5, r0, r5 - ldr r0, [sp, #0xd0] - str r5, [sp, #0x2cc] - add r0, r5, r0 - ldr r5, [sp, #0x208] - add r6, r5, #0x0 - lsr r6, r4 - mov r5, #0xf - and r5, r6 - lsl r5, r5, #0x18 - lsr r5, r5, #0x18 - beq _02019EBE - lsl r6, r2, #0x1f - lsr r6, r6, #0x1d - lsl r5, r6 - str r5, [sp, #0x2d0] - ldrb r5, [r0, r7] - str r5, [sp, #0x2d4] - mov r5, #0xf0 - asr r5, r6 - ldr r6, [sp, #0x2d4] - and r6, r5 - ldr r5, [sp, #0x2d0] - orr r5, r6 - lsl r5, r5, #0x18 - lsr r5, r5, #0x18 - strb r5, [r0, r7] - ldr r0, [sp, #0x210] - cmp r0, #0x0 - beq _02019EBE - ldr r6, [sp, #0x2cc] - ldr r0, [sp, #0xcc] - add r6, r6, r0 - ldr r0, [sp, #0xc8] - strb r5, [r0, r6] -_02019EBE: - ldr r0, [sp, #0x2c8] - add r1, r1, #0x1 - add r4, r4, #0x4 - add r3, r3, #0x4 - add r2, r2, #0x1 - cmp r1, r0 - blt _02019E6A -_02019ECC: - ldr r0, [sp, #0x210] - cmp r0, #0x0 - beq _02019EDA - ldr r0, [sp, #0x214] - add r0, r0, #0x2 - str r0, [sp, #0x214] - b _02019EE0 -_02019EDA: - ldr r0, [sp, #0x214] - add r0, r0, #0x1 - str r0, [sp, #0x214] -_02019EE0: - ldr r0, [sp, #0x20c] - add r0, r0, #0x4 - str r0, [sp, #0x20c] - ldr r0, [sp, #0x218] - add r0, r0, #0x1 - str r0, [sp, #0x218] - cmp r0, #0x8 - blt _02019E12 - ldr r0, [sp, #0x0] - mov r2, #0x0 - str r0, [sp, #0x1fc] - add r0, #0x40 - str r0, [sp, #0x1fc] - ldr r0, [sp, #0x48] - mov r1, #0x1 - add r0, #0x8 - str r0, [sp, #0x48] - str r0, [sp, #0x204] -_02019F04: - ldr r0, [sp, #0x330] - asr r0, r2 - tst r0, r1 - beq _02019F12 - ldr r0, [sp, #0x204] - add r0, r0, #0x1 - str r0, [sp, #0x204] -_02019F12: - add r2, r2, #0x1 - cmp r2, #0x8 - blt _02019F04 - ldr r0, [sp, #0x330] - asr r0, r0, #0x8 - str r0, [sp, #0x50] - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - str r0, [sp, #0xe4] - mov r0, #0x0 - str r0, [sp, #0x1c] - ldr r0, [sp, #0x4] - sub r0, #0x8 - cmp r0, #0x0 - ble _0201A008 -_02019F30: - ldr r0, [sp, #0x1fc] - ldr r1, [sp, #0xe4] - ldr r0, [r0, #0x0] - ldr r6, [sp, #0x38] - str r0, [sp, #0x1f8] - ldr r0, [sp, #0x1c] - ldr r2, [sp, #0x5c] - asr r1, r0 - mov r0, #0x1 - and r0, r1 - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - str r0, [sp, #0x200] - ldr r0, [sp, #0x204] - mov r1, #0x0 - lsl r5, r0, #0x2 - ldr r0, _02019F88 ; =0x00003FE0 - add r7, r5, #0x0 - and r0, r5 - mul r6, r0 - mov r0, #0x1c - and r7, r0 - ldr r0, [sp, #0x204] - str r6, [sp, #0xe0] - add r0, r0, #0x1 - lsl r6, r0, #0x2 - ldr r0, _02019F88 ; =0x00003FE0 - ldr r5, [sp, #0x38] - and r0, r6 - mul r5, r0 - mov r0, #0x1c - and r0, r6 - ldr r3, [sp, #0x34] - add r4, r1, #0x0 - str r5, [sp, #0xdc] - str r0, [sp, #0xd8] -_02019F78: - asr r5, r2, #0x1 - mov r0, #0x3 - and r5, r0 - ldr r0, [sp, #0x278] - add r0, r0, r5 - ldr r5, _02019F88 ; =0x00003FE0 - b _02019F8C - nop -_02019F88: .word 0x00003FE0 -_02019F8C: - and r5, r3 - add r5, r0, r5 - ldr r0, [sp, #0xe0] - str r5, [sp, #0x2d8] - add r0, r5, r0 - ldr r5, [sp, #0x1f8] - add r6, r5, #0x0 - lsr r6, r4 - mov r5, #0xf - and r5, r6 - lsl r5, r5, #0x18 - lsr r5, r5, #0x18 - beq _02019FD4 - lsl r6, r2, #0x1f - lsr r6, r6, #0x1d - lsl r5, r6 - str r5, [sp, #0x2dc] - ldrb r5, [r0, r7] - str r5, [sp, #0x2e0] - mov r5, #0xf0 - asr r5, r6 - ldr r6, [sp, #0x2e0] - and r6, r5 - ldr r5, [sp, #0x2dc] - orr r5, r6 - lsl r5, r5, #0x18 - lsr r5, r5, #0x18 - strb r5, [r0, r7] - ldr r0, [sp, #0x200] - cmp r0, #0x0 - beq _02019FD4 - ldr r6, [sp, #0x2d8] - ldr r0, [sp, #0xdc] - add r6, r6, r0 - ldr r0, [sp, #0xd8] - strb r5, [r0, r6] -_02019FD4: - add r1, r1, #0x1 - add r4, r4, #0x4 - add r3, r3, #0x4 - add r2, r2, #0x1 - cmp r1, #0x8 - blt _02019F78 - ldr r0, [sp, #0x200] - cmp r0, #0x0 - beq _02019FEE - ldr r0, [sp, #0x204] - add r0, r0, #0x2 - str r0, [sp, #0x204] - b _02019FF4 -_02019FEE: - ldr r0, [sp, #0x204] - add r0, r0, #0x1 - str r0, [sp, #0x204] -_02019FF4: - ldr r0, [sp, #0x1fc] - ldr r1, [sp, #0x4] - add r0, r0, #0x4 - str r0, [sp, #0x1fc] - ldr r0, [sp, #0x1c] - sub r1, #0x8 - add r0, r0, #0x1 - str r0, [sp, #0x1c] - cmp r0, r1 - blt _02019F30 -_0201A008: - ldr r0, [sp, #0x0] - mov r2, #0x0 - add r0, #0x60 - str r0, [sp, #0x0] - mov r1, #0x1 -_0201A012: - ldr r0, [sp, #0x330] - asr r0, r2 - tst r0, r1 - beq _0201A020 - ldr r0, [sp, #0x48] - add r0, r0, #0x1 - str r0, [sp, #0x48] -_0201A020: - add r2, r2, #0x1 - cmp r2, #0x8 - blt _0201A012 - ldr r0, [sp, #0x50] - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - str r0, [sp, #0xf4] - mov r0, #0x0 - str r0, [sp, #0x18] - ldr r0, [sp, #0x4] - sub r0, #0x8 - cmp r0, #0x0 - bgt _0201A03E - bl FUN_0201A8BC -_0201A03E: - ldr r0, [sp, #0x5c] - add r0, #0x8 - str r0, [sp, #0x5c] -_0201A044: - ldr r0, [sp, #0x0] - ldr r1, [sp, #0xf4] - ldr r0, [r0, #0x0] - ldr r2, [sp, #0x5c] - str r0, [sp, #0x1f0] - ldr r0, [sp, #0x18] - asr r1, r0 - mov r0, #0x1 - and r0, r1 - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - str r0, [sp, #0x1f4] - ldr r0, [sp, #0x8] - mov r1, #0x0 - str r0, [sp, #0x2e4] - sub r0, #0x8 - str r0, [sp, #0x2e4] - cmp r0, #0x0 - ble _0201A0FE - ble _0201A0FE - add r0, r2, #0x0 - lsl r3, r0, #0x2 - ldr r0, [sp, #0x48] - ldr r6, [sp, #0x38] - lsl r5, r0, #0x2 - ldr r0, _0201A3A8 ; =0x00003FE0 - add r7, r5, #0x0 - and r0, r5 - mul r6, r0 - mov r0, #0x1c - and r7, r0 - ldr r0, [sp, #0x48] - str r6, [sp, #0xf0] - add r0, r0, #0x1 - lsl r6, r0, #0x2 - ldr r0, _0201A3A8 ; =0x00003FE0 - ldr r5, [sp, #0x38] - and r0, r6 - mul r5, r0 - mov r0, #0x1c - and r0, r6 - add r4, r1, #0x0 - str r5, [sp, #0xec] - str r0, [sp, #0xe8] -_0201A09C: - asr r5, r2, #0x1 - mov r0, #0x3 - and r5, r0 - ldr r0, [sp, #0x278] - add r0, r0, r5 - ldr r5, _0201A3A8 ; =0x00003FE0 - and r5, r3 - add r5, r0, r5 - ldr r0, [sp, #0xf0] - str r5, [sp, #0x2e8] - add r0, r5, r0 - ldr r5, [sp, #0x1f0] - add r6, r5, #0x0 - lsr r6, r4 - mov r5, #0xf - and r5, r6 - lsl r5, r5, #0x18 - lsr r5, r5, #0x18 - beq _0201A0F0 - lsl r6, r2, #0x1f - lsr r6, r6, #0x1d - lsl r5, r6 - str r5, [sp, #0x2ec] - ldrb r5, [r0, r7] - mov r12, r5 - mov r5, #0xf0 - asr r5, r6 - mov r6, r12 - and r6, r5 - ldr r5, [sp, #0x2ec] - orr r5, r6 - lsl r5, r5, #0x18 - lsr r5, r5, #0x18 - strb r5, [r0, r7] - ldr r0, [sp, #0x1f4] - cmp r0, #0x0 - beq _0201A0F0 - ldr r6, [sp, #0x2e8] - ldr r0, [sp, #0xec] - add r6, r6, r0 - ldr r0, [sp, #0xe8] - strb r5, [r0, r6] -_0201A0F0: - ldr r0, [sp, #0x2e4] - add r1, r1, #0x1 - add r4, r4, #0x4 - add r3, r3, #0x4 - add r2, r2, #0x1 - cmp r1, r0 - blt _0201A09C -_0201A0FE: - ldr r0, [sp, #0x1f4] - cmp r0, #0x0 - beq _0201A10C - ldr r0, [sp, #0x48] - add r0, r0, #0x2 - str r0, [sp, #0x48] - b _0201A112 -_0201A10C: - ldr r0, [sp, #0x48] - add r0, r0, #0x1 - str r0, [sp, #0x48] -_0201A112: - ldr r0, [sp, #0x0] - ldr r1, [sp, #0x4] - add r0, r0, #0x4 - str r0, [sp, #0x0] - ldr r0, [sp, #0x18] - sub r1, #0x8 - add r0, r0, #0x1 - str r0, [sp, #0x18] - cmp r0, r1 - blt _0201A044 - add sp, #0x1fc - add sp, #0x118 - pop {r4-r7, pc} - - thumb_func_start FUN_0201A12C -FUN_0201A12C: ; 0x0201A12C - lsl r1, r2, #0x2 - mul r1, r3 - ldr r3, [r5, #0x0] - ldrb r2, [r5, #0x9] - ldr r0, [sp, #0x0] - ldr r3, [r3, #0x0] - lsl r1, r1, #0x3 - bl FUN_02018848 - str r0, [sp, #0x1ec] - cmp r4, #0x3 - bhi _0201A21E - add r0, r4, r4 - add r0, pc - ldrh r0, [r0, #0x6] - lsl r0, r0, #0x10 - asr r0, r0, #0x10 - add pc, r0 -_0201A150: ; jump table (using 16-bit offset) - .short _0201A158 - _0201A150 - 2; case 0 - .short _0201A220 - _0201A150 - 2; case 1 - .short _0201A3CA - _0201A150 - 2; case 2 - .short _0201A56E - _0201A150 - 2; case 3 -_0201A158: - ldr r0, [sp, #0x330] - ldr r7, [sp, #0x1ec] - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - str r0, [sp, #0x10c] - mov r0, #0x0 - str r0, [sp, #0x1e8] - ldr r0, [sp, #0x4] - cmp r0, #0x0 - ble _0201A21E - ldr r0, [sp, #0x58] - mov r1, #0x7 - and r1, r0 - add r0, r0, r1 - asr r0, r0, #0x3 - str r0, [sp, #0x108] -_0201A178: - ldr r1, [sp, #0x10c] - ldr r0, [sp, #0x1e8] - mov r4, #0x0 - asr r1, r0 - mov r0, #0x1 - and r0, r1 - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - str r0, [sp, #0x310] - ldr r0, [sp, #0x8] - ldr r5, [sp, #0x5c] - cmp r0, #0x0 - ble _0201A1FC - ble _0201A1FC - add r0, r5, #0x0 - lsl r6, r0, #0x3 - ldr r0, [sp, #0x48] - ldr r2, [sp, #0x108] - lsl r1, r0, #0x3 - ldr r0, _0201A3AC ; =0x00007FC0 - mov r3, #0x38 - and r0, r1 - mul r2, r0 - add r0, r1, #0x0 - and r0, r3 - str r0, [sp, #0x100] - ldr r0, [sp, #0x48] - str r2, [sp, #0x104] - add r0, r0, #0x1 - lsl r1, r0, #0x3 - ldr r0, _0201A3AC ; =0x00007FC0 - ldr r2, [sp, #0x108] - and r0, r1 - mul r2, r0 - add r0, r1, #0x0 - and r0, r3 - str r2, [sp, #0xfc] - str r0, [sp, #0xf8] -_0201A1C4: - mov r0, #0x7 - add r1, r5, #0x0 - and r1, r0 - ldr r0, [sp, #0x278] - add r1, r0, r1 - ldr r0, _0201A3AC ; =0x00007FC0 - and r0, r6 - add r3, r1, r0 - ldr r0, [sp, #0x104] - ldrb r1, [r7, r4] - add r2, r3, r0 - cmp r1, #0x0 - beq _0201A1F0 - ldr r0, [sp, #0x100] - strb r1, [r2, r0] - ldr r0, [sp, #0x310] - cmp r0, #0x0 - beq _0201A1F0 - ldr r0, [sp, #0xfc] - add r2, r3, r0 - ldr r0, [sp, #0xf8] - strb r1, [r0, r2] -_0201A1F0: - ldr r0, [sp, #0x8] - add r4, r4, #0x1 - add r6, #0x8 - add r5, r5, #0x1 - cmp r4, r0 - blt _0201A1C4 -_0201A1FC: - ldr r0, [sp, #0x310] - cmp r0, #0x0 - beq _0201A20A - ldr r0, [sp, #0x48] - add r0, r0, #0x2 - str r0, [sp, #0x48] - b _0201A210 -_0201A20A: - ldr r0, [sp, #0x48] - add r0, r0, #0x1 - str r0, [sp, #0x48] -_0201A210: - ldr r0, [sp, #0x1e8] - add r7, #0x8 - add r1, r0, #0x1 - ldr r0, [sp, #0x4] - str r1, [sp, #0x1e8] - cmp r1, r0 - blt _0201A178 -_0201A21E: - b _0201A8B6 -_0201A220: - ldr r0, [sp, #0x48] - ldr r7, [sp, #0x1ec] - str r0, [sp, #0x1e0] - ldr r0, [sp, #0x330] - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - str r0, [sp, #0x4c] - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - str r0, [sp, #0x124] - mov r0, #0x0 - str r0, [sp, #0x1e4] - ldr r0, [sp, #0x4] - cmp r0, #0x0 - ble _0201A2E6 - ldr r0, [sp, #0x58] - mov r1, #0x7 - and r1, r0 - add r0, r0, r1 - asr r0, r0, #0x3 - str r0, [sp, #0x120] -_0201A24A: - ldr r1, [sp, #0x124] - ldr r0, [sp, #0x1e4] - ldr r5, [sp, #0x5c] - asr r1, r0 - mov r0, #0x1 - and r0, r1 - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - str r0, [sp, #0x30c] - add r0, r5, #0x0 - lsl r6, r0, #0x3 - ldr r0, [sp, #0x1e0] - ldr r2, [sp, #0x120] - lsl r1, r0, #0x3 - ldr r0, _0201A3AC ; =0x00007FC0 - mov r3, #0x38 - and r0, r1 - mul r2, r0 - add r0, r1, #0x0 - and r0, r3 - str r0, [sp, #0x118] - ldr r0, [sp, #0x1e0] - str r2, [sp, #0x11c] - add r0, r0, #0x1 - lsl r1, r0, #0x3 - ldr r0, _0201A3AC ; =0x00007FC0 - ldr r2, [sp, #0x120] - and r0, r1 - mul r2, r0 - add r0, r1, #0x0 - and r0, r3 - mov r4, #0x0 - str r2, [sp, #0x114] - str r0, [sp, #0x110] -_0201A28E: - mov r0, #0x7 - add r1, r5, #0x0 - and r1, r0 - ldr r0, [sp, #0x278] - add r1, r0, r1 - ldr r0, _0201A3AC ; =0x00007FC0 - and r0, r6 - add r3, r1, r0 - ldr r0, [sp, #0x11c] - ldrb r1, [r7, r4] - add r2, r3, r0 - cmp r1, #0x0 - beq _0201A2BA - ldr r0, [sp, #0x118] - strb r1, [r2, r0] - ldr r0, [sp, #0x30c] - cmp r0, #0x0 - beq _0201A2BA - ldr r0, [sp, #0x114] - add r2, r3, r0 - ldr r0, [sp, #0x110] - strb r1, [r0, r2] -_0201A2BA: - add r4, r4, #0x1 - add r6, #0x8 - add r5, r5, #0x1 - cmp r4, #0x8 - blt _0201A28E - ldr r0, [sp, #0x30c] - cmp r0, #0x0 - beq _0201A2D2 - ldr r0, [sp, #0x1e0] - add r0, r0, #0x2 - str r0, [sp, #0x1e0] - b _0201A2D8 -_0201A2D2: - ldr r0, [sp, #0x1e0] - add r0, r0, #0x1 - str r0, [sp, #0x1e0] -_0201A2D8: - ldr r0, [sp, #0x1e4] - add r7, #0x8 - add r1, r0, #0x1 - ldr r0, [sp, #0x4] - str r1, [sp, #0x1e4] - cmp r1, r0 - blt _0201A24A -_0201A2E6: - ldr r0, [sp, #0x1ec] - str r0, [sp, #0x308] - add r0, #0x40 - str r0, [sp, #0x308] - ldr r0, [sp, #0x4c] - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - str r0, [sp, #0x13c] - mov r0, #0x0 - str r0, [sp, #0x1dc] - ldr r0, [sp, #0x4] - cmp r0, #0x0 - ble _0201A3C8 - ldr r0, [sp, #0x5c] - mov r1, #0x7 - add r0, #0x8 - str r0, [sp, #0x5c] - ldr r0, [sp, #0x58] - and r1, r0 - add r0, r0, r1 - asr r0, r0, #0x3 - str r0, [sp, #0x138] -_0201A312: - ldr r1, [sp, #0x13c] - ldr r0, [sp, #0x1dc] - ldr r7, [sp, #0x8] - asr r1, r0 - mov r0, #0x1 - and r0, r1 - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - sub r7, #0x8 - mov r4, #0x0 - str r0, [sp, #0x1d8] - ldr r5, [sp, #0x5c] - cmp r7, #0x0 - ble _0201A398 - ble _0201A398 - add r0, r5, #0x0 - lsl r6, r0, #0x3 - ldr r0, [sp, #0x48] - ldr r2, [sp, #0x138] - lsl r1, r0, #0x3 - ldr r0, _0201A3AC ; =0x00007FC0 - mov r3, #0x38 - and r0, r1 - mul r2, r0 - add r0, r1, #0x0 - and r0, r3 - str r0, [sp, #0x130] - ldr r0, [sp, #0x48] - str r2, [sp, #0x134] - add r0, r0, #0x1 - lsl r1, r0, #0x3 - ldr r0, _0201A3AC ; =0x00007FC0 - ldr r2, [sp, #0x138] - and r0, r1 - mul r2, r0 - add r0, r1, #0x0 - and r0, r3 - str r2, [sp, #0x12c] - str r0, [sp, #0x128] -_0201A360: - mov r0, #0x7 - add r1, r5, #0x0 - and r1, r0 - ldr r0, [sp, #0x278] - add r1, r0, r1 - ldr r0, _0201A3AC ; =0x00007FC0 - and r0, r6 - add r3, r1, r0 - ldr r0, [sp, #0x134] - add r2, r3, r0 - ldr r0, [sp, #0x308] - ldrb r1, [r0, r4] - cmp r1, #0x0 - beq _0201A38E - ldr r0, [sp, #0x130] - strb r1, [r2, r0] - ldr r0, [sp, #0x1d8] - cmp r0, #0x0 - beq _0201A38E - ldr r0, [sp, #0x12c] - add r2, r3, r0 - ldr r0, [sp, #0x128] - strb r1, [r0, r2] -_0201A38E: - add r4, r4, #0x1 - add r6, #0x8 - add r5, r5, #0x1 - cmp r4, r7 - blt _0201A360 -_0201A398: - ldr r0, [sp, #0x1d8] - cmp r0, #0x0 - beq _0201A3B0 - ldr r0, [sp, #0x48] - add r0, r0, #0x2 - str r0, [sp, #0x48] - b _0201A3B6 - nop -_0201A3A8: .word 0x00003FE0 -_0201A3AC: .word 0x00007FC0 -_0201A3B0: - ldr r0, [sp, #0x48] - add r0, r0, #0x1 - str r0, [sp, #0x48] -_0201A3B6: - ldr r0, [sp, #0x308] - add r0, #0x8 - str r0, [sp, #0x308] - ldr r0, [sp, #0x1dc] - add r1, r0, #0x1 - ldr r0, [sp, #0x4] - str r1, [sp, #0x1dc] - cmp r1, r0 - blt _0201A312 -_0201A3C8: - b _0201A8B6 -_0201A3CA: - ldr r0, [sp, #0x48] - mov r1, #0x7 - str r0, [sp, #0x1d0] - mov r0, #0x0 - str r0, [sp, #0x1d4] - ldr r0, [sp, #0x330] - ldr r7, [sp, #0x1ec] - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - str r0, [sp, #0x150] - ldr r0, [sp, #0x58] - and r1, r0 - add r0, r0, r1 - asr r0, r0, #0x3 - str r0, [sp, #0x30] -_0201A3E8: - ldr r1, [sp, #0x150] - ldr r0, [sp, #0x1d4] - mov r4, #0x0 - asr r1, r0 - mov r0, #0x1 - and r0, r1 - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - str r0, [sp, #0x304] - ldr r0, [sp, #0x8] - ldr r5, [sp, #0x5c] - cmp r0, #0x0 - ble _0201A46C - ble _0201A46C - add r0, r5, #0x0 - lsl r6, r0, #0x3 - ldr r0, [sp, #0x1d0] - ldr r2, [sp, #0x30] - lsl r1, r0, #0x3 - ldr r0, _0201A748 ; =0x00007FC0 - mov r3, #0x38 - and r0, r1 - mul r2, r0 - add r0, r1, #0x0 - and r0, r3 - str r0, [sp, #0x148] - ldr r0, [sp, #0x1d0] - str r2, [sp, #0x14c] - add r0, r0, #0x1 - lsl r1, r0, #0x3 - ldr r0, _0201A748 ; =0x00007FC0 - ldr r2, [sp, #0x30] - and r0, r1 - mul r2, r0 - add r0, r1, #0x0 - and r0, r3 - str r2, [sp, #0x144] - str r0, [sp, #0x140] -_0201A434: - mov r0, #0x7 - add r1, r5, #0x0 - and r1, r0 - ldr r0, [sp, #0x278] - add r1, r0, r1 - ldr r0, _0201A748 ; =0x00007FC0 - and r0, r6 - add r3, r1, r0 - ldr r0, [sp, #0x14c] - ldrb r1, [r7, r4] - add r2, r3, r0 - cmp r1, #0x0 - beq _0201A460 - ldr r0, [sp, #0x148] - strb r1, [r2, r0] - ldr r0, [sp, #0x304] - cmp r0, #0x0 - beq _0201A460 - ldr r0, [sp, #0x144] - add r2, r3, r0 - ldr r0, [sp, #0x140] - strb r1, [r0, r2] -_0201A460: - ldr r0, [sp, #0x8] - add r4, r4, #0x1 - add r6, #0x8 - add r5, r5, #0x1 - cmp r4, r0 - blt _0201A434 -_0201A46C: - ldr r0, [sp, #0x304] - cmp r0, #0x0 - beq _0201A47A - ldr r0, [sp, #0x1d0] - add r0, r0, #0x2 - str r0, [sp, #0x1d0] - b _0201A480 -_0201A47A: - ldr r0, [sp, #0x1d0] - add r0, r0, #0x1 - str r0, [sp, #0x1d0] -_0201A480: - ldr r0, [sp, #0x1d4] - add r7, #0x8 - add r0, r0, #0x1 - str r0, [sp, #0x1d4] - cmp r0, #0x8 - blt _0201A3E8 - ldr r0, [sp, #0x48] - ldr r7, [sp, #0x1ec] - add r0, #0x8 - str r0, [sp, #0x48] - add r7, #0x80 - mov r0, #0x0 - mov r2, #0x1 -_0201A49A: - ldr r1, [sp, #0x330] - asr r1, r0 - tst r1, r2 - beq _0201A4A8 - ldr r1, [sp, #0x48] - add r1, r1, #0x1 - str r1, [sp, #0x48] -_0201A4A8: - add r0, r0, #0x1 - cmp r0, #0x8 - blt _0201A49A - ldr r0, [sp, #0x330] - asr r0, r0, #0x8 - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - str r0, [sp, #0x164] - mov r0, #0x0 - str r0, [sp, #0x14] - ldr r0, [sp, #0x4] - sub r0, #0x8 - cmp r0, #0x0 - ble _0201A56C -_0201A4C4: - ldr r1, [sp, #0x164] - ldr r0, [sp, #0x14] - mov r4, #0x0 - asr r1, r0 - mov r0, #0x1 - and r0, r1 - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - str r0, [sp, #0x300] - ldr r0, [sp, #0x8] - ldr r5, [sp, #0x5c] - cmp r0, #0x0 - ble _0201A548 - ble _0201A548 - add r0, r5, #0x0 - lsl r6, r0, #0x3 - ldr r0, [sp, #0x48] - ldr r2, [sp, #0x30] - lsl r1, r0, #0x3 - ldr r0, _0201A748 ; =0x00007FC0 - mov r3, #0x38 - and r0, r1 - mul r2, r0 - add r0, r1, #0x0 - and r0, r3 - str r0, [sp, #0x15c] - ldr r0, [sp, #0x48] - str r2, [sp, #0x160] - add r0, r0, #0x1 - lsl r1, r0, #0x3 - ldr r0, _0201A748 ; =0x00007FC0 - ldr r2, [sp, #0x30] - and r0, r1 - mul r2, r0 - add r0, r1, #0x0 - and r0, r3 - str r2, [sp, #0x158] - str r0, [sp, #0x154] -_0201A510: - mov r0, #0x7 - add r1, r5, #0x0 - and r1, r0 - ldr r0, [sp, #0x278] - add r1, r0, r1 - ldr r0, _0201A748 ; =0x00007FC0 - and r0, r6 - add r3, r1, r0 - ldr r0, [sp, #0x160] - ldrb r1, [r7, r4] - add r2, r3, r0 - cmp r1, #0x0 - beq _0201A53C - ldr r0, [sp, #0x15c] - strb r1, [r2, r0] - ldr r0, [sp, #0x300] - cmp r0, #0x0 - beq _0201A53C - ldr r0, [sp, #0x158] - add r2, r3, r0 - ldr r0, [sp, #0x154] - strb r1, [r0, r2] -_0201A53C: - ldr r0, [sp, #0x8] - add r4, r4, #0x1 - add r6, #0x8 - add r5, r5, #0x1 - cmp r4, r0 - blt _0201A510 -_0201A548: - ldr r0, [sp, #0x300] - cmp r0, #0x0 - beq _0201A556 - ldr r0, [sp, #0x48] - add r0, r0, #0x2 - str r0, [sp, #0x48] - b _0201A55C -_0201A556: - ldr r0, [sp, #0x48] - add r0, r0, #0x1 - str r0, [sp, #0x48] -_0201A55C: - ldr r0, [sp, #0x14] - ldr r1, [sp, #0x4] - add r0, r0, #0x1 - sub r1, #0x8 - add r7, #0x8 - str r0, [sp, #0x14] - cmp r0, r1 - blt _0201A4C4 -_0201A56C: - b _0201A8B6 -_0201A56E: - ldr r0, [sp, #0x48] - ldr r7, [sp, #0x1ec] - str r0, [sp, #0x1c8] - ldr r0, [sp, #0x330] - lsl r0, r0, #0x18 - lsr r1, r0, #0x18 - mov r0, #0x0 - str r0, [sp, #0x1cc] - lsl r0, r1, #0x18 - lsr r0, r0, #0x18 - str r0, [sp, #0x2c] - ldr r0, [sp, #0x58] - mov r1, #0x7 - and r1, r0 - add r0, r0, r1 - asr r0, r0, #0x3 - str r0, [sp, #0x28] -_0201A590: - ldr r1, [sp, #0x2c] - ldr r0, [sp, #0x1cc] - ldr r5, [sp, #0x5c] - asr r1, r0 - mov r0, #0x1 - and r0, r1 - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - str r0, [sp, #0x2fc] - add r0, r5, #0x0 - lsl r6, r0, #0x3 - ldr r0, [sp, #0x1c8] - ldr r2, [sp, #0x28] - lsl r1, r0, #0x3 - ldr r0, _0201A748 ; =0x00007FC0 - mov r3, #0x38 - and r0, r1 - mul r2, r0 - add r0, r1, #0x0 - and r0, r3 - str r0, [sp, #0x170] - ldr r0, [sp, #0x1c8] - str r2, [sp, #0x174] - add r0, r0, #0x1 - lsl r1, r0, #0x3 - ldr r0, _0201A748 ; =0x00007FC0 - ldr r2, [sp, #0x28] - and r0, r1 - mul r2, r0 - add r0, r1, #0x0 - and r0, r3 - mov r4, #0x0 - str r6, [sp, #0x24] - str r2, [sp, #0x16c] - str r0, [sp, #0x168] -_0201A5D6: - mov r0, #0x7 - add r1, r5, #0x0 - and r1, r0 - ldr r0, [sp, #0x278] - add r1, r0, r1 - ldr r0, _0201A748 ; =0x00007FC0 - and r0, r6 - add r3, r1, r0 - ldr r0, [sp, #0x174] - ldrb r1, [r7, r4] - add r2, r3, r0 - cmp r1, #0x0 - beq _0201A602 - ldr r0, [sp, #0x170] - strb r1, [r2, r0] - ldr r0, [sp, #0x2fc] - cmp r0, #0x0 - beq _0201A602 - ldr r0, [sp, #0x16c] - add r2, r3, r0 - ldr r0, [sp, #0x168] - strb r1, [r0, r2] -_0201A602: - add r4, r4, #0x1 - add r6, #0x8 - add r5, r5, #0x1 - cmp r4, #0x8 - blt _0201A5D6 - ldr r0, [sp, #0x2fc] - cmp r0, #0x0 - beq _0201A61A - ldr r0, [sp, #0x1c8] - add r0, r0, #0x2 - str r0, [sp, #0x1c8] - b _0201A620 -_0201A61A: - ldr r0, [sp, #0x1c8] - add r0, r0, #0x1 - str r0, [sp, #0x1c8] -_0201A620: - ldr r0, [sp, #0x1cc] - add r7, #0x8 - add r0, r0, #0x1 - str r0, [sp, #0x1cc] - cmp r0, #0x8 - blt _0201A590 - ldr r0, [sp, #0x1ec] - str r0, [sp, #0x2f8] - add r0, #0x40 - str r0, [sp, #0x2f8] - ldr r0, [sp, #0x48] - str r0, [sp, #0x1c0] - mov r0, #0x0 - str r0, [sp, #0x1c4] - ldr r0, [sp, #0x5c] - str r0, [sp, #0x188] - add r0, #0x8 - str r0, [sp, #0x188] -_0201A644: - ldr r1, [sp, #0x2c] - ldr r0, [sp, #0x1c4] - ldr r7, [sp, #0x8] - asr r1, r0 - mov r0, #0x1 - and r0, r1 - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - sub r7, #0x8 - mov r4, #0x0 - str r0, [sp, #0x1bc] - ldr r5, [sp, #0x188] - cmp r7, #0x0 - ble _0201A6CA - ble _0201A6CA - add r0, r5, #0x0 - lsl r6, r0, #0x3 - ldr r0, [sp, #0x1c0] - ldr r2, [sp, #0x28] - lsl r1, r0, #0x3 - ldr r0, _0201A748 ; =0x00007FC0 - mov r3, #0x38 - and r0, r1 - mul r2, r0 - add r0, r1, #0x0 - and r0, r3 - str r0, [sp, #0x180] - ldr r0, [sp, #0x1c0] - str r2, [sp, #0x184] - add r0, r0, #0x1 - lsl r1, r0, #0x3 - ldr r0, _0201A748 ; =0x00007FC0 - ldr r2, [sp, #0x28] - and r0, r1 - mul r2, r0 - add r0, r1, #0x0 - and r0, r3 - str r2, [sp, #0x17c] - str r0, [sp, #0x178] -_0201A692: - mov r0, #0x7 - add r1, r5, #0x0 - and r1, r0 - ldr r0, [sp, #0x278] - add r1, r0, r1 - ldr r0, _0201A748 ; =0x00007FC0 - and r0, r6 - add r3, r1, r0 - ldr r0, [sp, #0x184] - add r2, r3, r0 - ldr r0, [sp, #0x2f8] - ldrb r1, [r0, r4] - cmp r1, #0x0 - beq _0201A6C0 - ldr r0, [sp, #0x180] - strb r1, [r2, r0] - ldr r0, [sp, #0x1bc] - cmp r0, #0x0 - beq _0201A6C0 - ldr r0, [sp, #0x17c] - add r2, r3, r0 - ldr r0, [sp, #0x178] - strb r1, [r0, r2] -_0201A6C0: - add r4, r4, #0x1 - add r6, #0x8 - add r5, r5, #0x1 - cmp r4, r7 - blt _0201A692 -_0201A6CA: - ldr r0, [sp, #0x1bc] - cmp r0, #0x0 - beq _0201A6D8 - ldr r0, [sp, #0x1c0] - add r0, r0, #0x2 - str r0, [sp, #0x1c0] - b _0201A6DE -_0201A6D8: - ldr r0, [sp, #0x1c0] - add r0, r0, #0x1 - str r0, [sp, #0x1c0] -_0201A6DE: - ldr r0, [sp, #0x2f8] - add r0, #0x8 - str r0, [sp, #0x2f8] - ldr r0, [sp, #0x1c4] - add r0, r0, #0x1 - str r0, [sp, #0x1c4] - cmp r0, #0x8 - blt _0201A644 - ldr r0, [sp, #0x48] - ldr r7, [sp, #0x1ec] - add r0, #0x8 - add r7, #0x80 - str r0, [sp, #0x48] - str r0, [sp, #0x1b8] - mov r0, #0x0 - mov r2, #0x1 -_0201A6FE: - ldr r1, [sp, #0x330] - asr r1, r0 - tst r1, r2 - beq _0201A70C - ldr r1, [sp, #0x1b8] - add r1, r1, #0x1 - str r1, [sp, #0x1b8] -_0201A70C: - add r0, r0, #0x1 - cmp r0, #0x8 - blt _0201A6FE - ldr r0, [sp, #0x330] - asr r0, r0, #0x8 - str r0, [sp, #0x44] - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - str r0, [sp, #0x19c] - mov r0, #0x0 - str r0, [sp, #0x10] - ldr r0, [sp, #0x4] - sub r0, #0x8 - cmp r0, #0x0 - ble _0201A7CE -_0201A72A: - ldr r1, [sp, #0x19c] - ldr r0, [sp, #0x10] - ldr r2, [sp, #0x28] - asr r1, r0 - mov r0, #0x1 - and r0, r1 - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - str r0, [sp, #0x2f4] - ldr r0, [sp, #0x1b8] - mov r3, #0x38 - lsl r1, r0, #0x3 - ldr r0, _0201A748 ; =0x00007FC0 - b _0201A74C - nop -_0201A748: .word 0x00007FC0 -_0201A74C: - ldr r5, [sp, #0x5c] - and r0, r1 - mul r2, r0 - add r0, r1, #0x0 - and r0, r3 - str r0, [sp, #0x194] - ldr r0, [sp, #0x1b8] - str r2, [sp, #0x198] - add r0, r0, #0x1 - lsl r1, r0, #0x3 - ldr r0, _0201A8C4 ; =0x00007FC0 - ldr r2, [sp, #0x28] - and r0, r1 - mul r2, r0 - add r0, r1, #0x0 - and r0, r3 - ldr r6, [sp, #0x24] - mov r4, #0x0 - str r2, [sp, #0x190] - str r0, [sp, #0x18c] -_0201A774: - mov r0, #0x7 - add r1, r5, #0x0 - and r1, r0 - ldr r0, [sp, #0x278] - add r1, r0, r1 - ldr r0, _0201A8C4 ; =0x00007FC0 - and r0, r6 - add r3, r1, r0 - ldr r0, [sp, #0x198] - ldrb r1, [r7, r4] - add r2, r3, r0 - cmp r1, #0x0 - beq _0201A7A0 - ldr r0, [sp, #0x194] - strb r1, [r2, r0] - ldr r0, [sp, #0x2f4] - cmp r0, #0x0 - beq _0201A7A0 - ldr r0, [sp, #0x190] - add r2, r3, r0 - ldr r0, [sp, #0x18c] - strb r1, [r0, r2] -_0201A7A0: - add r4, r4, #0x1 - add r6, #0x8 - add r5, r5, #0x1 - cmp r4, #0x8 - blt _0201A774 - ldr r0, [sp, #0x2f4] - cmp r0, #0x0 - beq _0201A7B8 - ldr r0, [sp, #0x1b8] - add r0, r0, #0x2 - str r0, [sp, #0x1b8] - b _0201A7BE -_0201A7B8: - ldr r0, [sp, #0x1b8] - add r0, r0, #0x1 - str r0, [sp, #0x1b8] -_0201A7BE: - ldr r0, [sp, #0x10] - ldr r1, [sp, #0x4] - add r0, r0, #0x1 - sub r1, #0x8 - add r7, #0x8 - str r0, [sp, #0x10] - cmp r0, r1 - blt _0201A72A -_0201A7CE: - ldr r0, [sp, #0x1ec] - mov r2, #0x0 - str r0, [sp, #0x2f0] - add r0, #0xc0 - str r0, [sp, #0x2f0] - mov r1, #0x1 -_0201A7DA: - ldr r0, [sp, #0x330] - asr r0, r2 - tst r0, r1 - beq _0201A7E8 - ldr r0, [sp, #0x48] - add r0, r0, #0x1 - str r0, [sp, #0x48] -_0201A7E8: - add r2, r2, #0x1 - cmp r2, #0x8 - blt _0201A7DA - ldr r0, [sp, #0x44] - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - str r0, [sp, #0x1b0] - mov r0, #0x0 - str r0, [sp, #0xc] - ldr r0, [sp, #0x4] - sub r0, #0x8 - cmp r0, #0x0 - ble _0201A8B6 - ldr r0, [sp, #0x5c] - add r0, #0x8 - str r0, [sp, #0x5c] -_0201A808: - ldr r1, [sp, #0x1b0] - ldr r0, [sp, #0xc] - ldr r7, [sp, #0x8] - asr r1, r0 - mov r0, #0x1 - and r0, r1 - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - sub r7, #0x8 - mov r4, #0x0 - str r0, [sp, #0x1b4] - ldr r5, [sp, #0x5c] - cmp r7, #0x0 - ble _0201A88E - ble _0201A88E - add r0, r5, #0x0 - lsl r6, r0, #0x3 - ldr r0, [sp, #0x48] - ldr r2, [sp, #0x28] - lsl r1, r0, #0x3 - ldr r0, _0201A8C4 ; =0x00007FC0 - mov r3, #0x38 - and r0, r1 - mul r2, r0 - add r0, r1, #0x0 - and r0, r3 - str r0, [sp, #0x1a8] - ldr r0, [sp, #0x48] - str r2, [sp, #0x1ac] - add r0, r0, #0x1 - lsl r1, r0, #0x3 - ldr r0, _0201A8C4 ; =0x00007FC0 - ldr r2, [sp, #0x28] - and r0, r1 - mul r2, r0 - add r0, r1, #0x0 - and r0, r3 - str r2, [sp, #0x1a4] - str r0, [sp, #0x1a0] -_0201A856: - mov r0, #0x7 - add r1, r5, #0x0 - and r1, r0 - ldr r0, [sp, #0x278] - add r1, r0, r1 - ldr r0, _0201A8C4 ; =0x00007FC0 - and r0, r6 - add r3, r1, r0 - ldr r0, [sp, #0x1ac] - add r2, r3, r0 - ldr r0, [sp, #0x2f0] - ldrb r1, [r0, r4] - cmp r1, #0x0 - beq _0201A884 - ldr r0, [sp, #0x1a8] - strb r1, [r2, r0] - ldr r0, [sp, #0x1b4] - cmp r0, #0x0 - beq _0201A884 - ldr r0, [sp, #0x1a4] - add r2, r3, r0 - ldr r0, [sp, #0x1a0] - strb r1, [r0, r2] -_0201A884: - add r4, r4, #0x1 - add r6, #0x8 - add r5, r5, #0x1 - cmp r4, r7 - blt _0201A856 -_0201A88E: - ldr r0, [sp, #0x1b4] - cmp r0, #0x0 - beq _0201A89C - ldr r0, [sp, #0x48] - add r0, r0, #0x2 - str r0, [sp, #0x48] - b _0201A8A2 -_0201A89C: - ldr r0, [sp, #0x48] - add r0, r0, #0x1 - str r0, [sp, #0x48] -_0201A8A2: - ldr r0, [sp, #0x2f0] - ldr r1, [sp, #0x4] - add r0, #0x8 - str r0, [sp, #0x2f0] - ldr r0, [sp, #0xc] - sub r1, #0x8 - add r0, r0, #0x1 - str r0, [sp, #0xc] - cmp r0, r1 - blt _0201A808 -_0201A8B6: - ldr r0, [sp, #0x1ec] - bl FreeToHeap - - thumb_func_start FUN_0201A8BC -FUN_0201A8BC: ; 0x0201A8BC - add sp, #0x1fc - add sp, #0x118 - pop {r4-r7, pc} - nop -_0201A8C4: .word 0x00007FC0 - - thumb_func_start FUN_0201A8C8 -FUN_0201A8C8: ; 0x0201A8C8 - push {r4-r6, lr} - ldrb r6, [r0, #0x4] - mov r5, #0x2c - ldr r4, [r0, #0x0] - mul r5, r6 - add r4, r4, r5 - ldrb r4, [r4, #0x1e] - cmp r4, #0x0 - bne _0201A8E0 - bl FUN_0201A8E8 - pop {r4-r6, pc} -_0201A8E0: - bl FUN_0201A9D4 - pop {r4-r6, pc} - .balign 4 - - thumb_func_start FUN_0201A8E8 -FUN_0201A8E8: ; 0x0201A8E8 - push {r3-r7, lr} - sub sp, #0x10 - add r6, r3, #0x0 - add r4, r0, #0x0 - add r0, r1, #0x0 - lsl r3, r6, #0x18 - lsl r1, r6, #0x10 - str r2, [sp, #0x0] - orr r1, r3 - lsl r5, r6, #0x8 - orr r1, r5 - orr r1, r6 - str r1, [sp, #0x4] - ldrb r1, [r4, #0x7] - ldrb r3, [r4, #0x8] - ldr r2, [r4, #0xc] - str r1, [sp, #0x8] - mul r1, r3 - lsl r1, r1, #0x5 - str r1, [sp, #0xc] - cmp r0, #0x3 - bhi _0201A9CE - add r0, r0, r0 - add r0, pc - ldrh r0, [r0, #0x6] - lsl r0, r0, #0x10 - asr r0, r0, #0x10 - add pc, r0 -_0201A920: ; jump table (using 16-bit offset) - .short _0201A928 - _0201A920 - 2; case 0 - .short _0201A976 - _0201A920 - 2; case 1 - .short _0201A9CE - _0201A920 - 2; case 2 - .short _0201A9CE - _0201A920 - 2; case 3 -_0201A928: - add r0, r1, #0x0 - mov r7, #0x0 - cmp r0, #0x0 - ble _0201A9CE - mov r0, #0x7 - mov lr, r0 -_0201A934: - ldr r3, [sp, #0x0] - mov r4, #0x0 - add r5, r7, #0x0 -_0201A93A: - mov r0, #0x7 - add r6, r3, #0x0 - and r6, r0 - add r1, r3, #0x0 - mov r0, lr - bic r1, r0 - ldr r0, [sp, #0x8] - mul r1, r0 - add r0, r6, #0x0 - orr r0, r1 - lsl r0, r0, #0x2 - add r1, r7, r0 - ldr r0, [sp, #0xc] - cmp r1, r0 - bge _0201A95C - ldr r0, [r2, r1] - b _0201A95E -_0201A95C: - ldr r0, [sp, #0x4] -_0201A95E: - add r4, r4, #0x1 - str r0, [r2, r5] - add r3, r3, #0x1 - add r5, r5, #0x4 - cmp r4, #0x8 - blt _0201A93A - ldr r0, [sp, #0xc] - add r7, #0x20 - cmp r7, r0 - blt _0201A934 - add sp, #0x10 - pop {r3-r7, pc} -_0201A976: - add r0, r1, #0x0 - sub r0, r0, #0x4 - add r2, r2, r0 - add r0, r1, #0x0 - mov r7, #0x0 - cmp r0, #0x0 - ble _0201A9CE - mov r0, #0x7 - mov r12, r0 -_0201A988: - ldr r4, [sp, #0x0] - mov r5, #0x0 - add r3, r7, #0x0 -_0201A98E: - mov r0, #0x7 - add r6, r4, #0x0 - and r6, r0 - add r1, r4, #0x0 - mov r0, r12 - bic r1, r0 - ldr r0, [sp, #0x8] - mul r1, r0 - add r0, r6, #0x0 - orr r0, r1 - lsl r0, r0, #0x2 - add r1, r7, r0 - ldr r0, [sp, #0xc] - cmp r1, r0 - bge _0201A9B6 - sub r0, r2, r1 - ldr r1, [r0, #0x0] - sub r0, r2, r3 - str r1, [r0, #0x0] - b _0201A9BC -_0201A9B6: - ldr r0, [sp, #0x4] - sub r1, r2, r3 - str r0, [r1, #0x0] -_0201A9BC: - add r5, r5, #0x1 - add r4, r4, #0x1 - add r3, r3, #0x4 - cmp r5, #0x8 - blt _0201A98E - ldr r0, [sp, #0xc] - add r7, #0x20 - cmp r7, r0 - blt _0201A988 -_0201A9CE: - add sp, #0x10 - pop {r3-r7, pc} - .balign 4 - - thumb_func_start FUN_0201A9D4 -FUN_0201A9D4: ; 0x0201A9D4 - push {r3-r7, lr} - sub sp, #0x20 - add r6, r3, #0x0 - add r4, r0, #0x0 - str r2, [sp, #0x0] - lsl r2, r6, #0x18 - lsl r0, r6, #0x10 - orr r0, r2 - ldrb r2, [r4, #0x7] - ldr r3, [r4, #0xc] - lsl r5, r6, #0x8 - orr r0, r5 - ldrb r4, [r4, #0x8] - str r2, [sp, #0x10] - orr r0, r6 - mul r2, r4 - lsl r2, r2, #0x6 - str r2, [sp, #0x1c] - cmp r1, #0x3 - bls _0201A9FE - b _0201AB04 -_0201A9FE: - add r1, r1, r1 - add r1, pc - ldrh r1, [r1, #0x6] - lsl r1, r1, #0x10 - asr r1, r1, #0x10 - add pc, r1 -_0201AA0A: ; jump table (using 16-bit offset) - .short _0201AA12 - _0201AA0A - 2; case 0 - .short _0201AA80 - _0201AA0A - 2; case 1 - .short _0201AB04 - _0201AA0A - 2; case 2 - .short _0201AB04 - _0201AA0A - 2; case 3 -_0201AA12: - mov r1, #0x0 - str r1, [sp, #0xc] - add r1, r2, #0x0 - cmp r1, #0x0 - ble _0201AB04 - add r1, r1, #0x4 - str r1, [sp, #0x14] - mov r1, #0x7 - mov lr, r1 -_0201AA24: - ldr r4, [sp, #0x0] - ldr r5, [sp, #0xc] - mov r7, #0x0 -_0201AA2A: - mov r1, #0x7 - add r6, r4, #0x0 - and r6, r1 - add r2, r4, #0x0 - mov r1, lr - bic r2, r1 - ldr r1, [sp, #0x10] - mul r2, r1 - add r1, r6, #0x0 - orr r1, r2 - lsl r2, r1, #0x3 - ldr r1, [sp, #0xc] - add r1, r1, r2 - ldr r2, [sp, #0x1c] - cmp r1, r2 - bge _0201AA50 - ldr r2, [r3, r1] - str r2, [r3, r5] - b _0201AA52 -_0201AA50: - str r0, [r3, r5] -_0201AA52: - add r2, r1, #0x4 - ldr r1, [sp, #0x14] - cmp r2, r1 - bge _0201AA62 - ldr r2, [r3, r2] - add r1, r5, #0x4 - str r2, [r3, r1] - b _0201AA66 -_0201AA62: - add r1, r5, #0x4 - str r0, [r3, r1] -_0201AA66: - add r7, r7, #0x1 - add r4, r4, #0x1 - add r5, #0x8 - cmp r7, #0x8 - blt _0201AA2A - ldr r2, [sp, #0xc] - ldr r1, [sp, #0x1c] - add r2, #0x40 - str r2, [sp, #0xc] - cmp r2, r1 - blt _0201AA24 - add sp, #0x20 - pop {r3-r7, pc} -_0201AA80: - add r1, r2, #0x0 - sub r1, #0x8 - add r3, r3, r1 - mov r1, #0x0 - str r1, [sp, #0x8] - add r1, r2, #0x0 - cmp r1, #0x0 - ble _0201AB04 -_0201AA90: - mov r1, #0x0 - str r1, [sp, #0x4] - ldr r1, [sp, #0x1c] - ldr r5, [sp, #0x0] - sub r1, r1, #0x4 - str r1, [sp, #0x18] - mov r1, #0x7 - ldr r4, [sp, #0x8] - mov r12, r1 -_0201AAA2: - mov r1, #0x7 - add r6, r5, #0x0 - and r6, r1 - add r2, r5, #0x0 - mov r1, r12 - bic r2, r1 - ldr r1, [sp, #0x10] - mul r2, r1 - add r1, r6, #0x0 - orr r1, r2 - lsl r2, r1, #0x3 - ldr r1, [sp, #0x8] - add r6, r1, r2 - ldr r1, [sp, #0x1c] - cmp r6, r1 - bge _0201AACC - sub r1, r3, r6 - ldr r2, [r1, #0x0] - sub r1, r3, r4 - str r2, [r1, #0x0] - b _0201AAD0 -_0201AACC: - sub r1, r3, r4 - str r0, [r1, #0x0] -_0201AAD0: - ldr r1, [sp, #0x18] - sub r2, r6, #0x4 - cmp r2, r1 - bge _0201AAE4 - sub r1, r3, r2 - sub r2, r4, #0x4 - ldr r1, [r1, #0x0] - sub r2, r3, r2 - str r1, [r2, #0x0] - b _0201AAEA -_0201AAE4: - sub r1, r4, #0x4 - sub r1, r3, r1 - str r0, [r1, #0x0] -_0201AAEA: - ldr r1, [sp, #0x4] - add r5, r5, #0x1 - add r1, r1, #0x1 - add r4, #0x8 - str r1, [sp, #0x4] - cmp r1, #0x8 - blt _0201AAA2 - ldr r2, [sp, #0x8] - ldr r1, [sp, #0x1c] - add r2, #0x40 - str r2, [sp, #0x8] - cmp r2, r1 - blt _0201AA90 -_0201AB04: - add sp, #0x20 - pop {r3-r7, pc} - - thumb_func_start FUN_0201AB08 -FUN_0201AB08: ; 0x0201AB08 - ldrb r0, [r0, #0x4] - bx lr - - thumb_func_start FUN_0201AB0C -FUN_0201AB0C: ; 0x0201AB0C - ldrb r0, [r0, #0x7] - bx lr - - thumb_func_start FUN_0201AB10 -FUN_0201AB10: ; 0x0201AB10 - ldrb r0, [r0, #0x8] - bx lr - - thumb_func_start FUN_0201AB14 -FUN_0201AB14: ; 0x0201AB14 - ldrb r0, [r0, #0x5] - bx lr - - thumb_func_start FUN_0201AB18 -FUN_0201AB18: ; 0x0201AB18 - ldrb r0, [r0, #0x6] - bx lr - - thumb_func_start FUN_0201AB1C -FUN_0201AB1C: ; 0x0201AB1C - strb r1, [r0, #0x5] - bx lr - - thumb_func_start FUN_0201AB20 -FUN_0201AB20: ; 0x0201AB20 - strb r1, [r0, #0x6] - bx lr - - thumb_func_start FUN_0201AB24 -FUN_0201AB24: ; 0x0201AB24 - strb r1, [r0, #0x9] - bx lr - - thumb_func_start FUN_0201AB28 -FUN_0201AB28: ; 0x0201AB28 - push {r3-r4, lr} - sub sp, #0x4 - add r4, r0, #0x0 - add r0, r1, #0x0 - add r1, r2, #0x0 - bl FUN_020161A4 - add r1, sp, #0x0 - str r0, [r4, #0x0] - bl FUN_020B0030 - ldr r0, [sp, #0x0] - add sp, #0x4 - pop {r3-r4, pc} - - thumb_func_start FUN_0201AB44 -FUN_0201AB44: ; 0x0201AB44 - push {r3-r4, lr} - sub sp, #0x4 - add r4, r0, #0x0 - add r0, r1, #0x0 - add r1, r2, #0x0 - bl FUN_020161A4 - add r1, sp, #0x0 - str r0, [r4, #0x0] - bl FUN_020B0138 - ldr r0, [sp, #0x0] - add sp, #0x4 - pop {r3-r4, pc} - - thumb_func_start FUN_0201AB60 -FUN_0201AB60: ; 0x0201AB60 - push {r4, lr} - add r4, r0, #0x0 - bl FUN_0201AC78 - add r0, r4, #0x0 - bl FUN_0201AB78 - mov r0, #0x0 - strh r0, [r4, #0x4] - strh r0, [r4, #0x6] - pop {r4, pc} - .balign 4 - - thumb_func_start FUN_0201AB78 -FUN_0201AB78: ; 0x0201AB78 - push {r4, lr} - add r4, r0, #0x0 - ldrh r1, [r4, #0x6] - mov r0, #0x1 - tst r0, r1 - beq _0201AB92 - ldr r2, [r4, #0x10] - ldr r1, [r4, #0x8] - ldr r3, [r4, #0xc] - mov r0, #0x0 - lsl r2, r2, #0x1 - bl FUN_02017D68 -_0201AB92: - ldrh r1, [r4, #0x6] - mov r0, #0x2 - tst r0, r1 - beq _0201ABA8 - ldr r2, [r4, #0x3c] - ldr r1, [r4, #0x34] - ldr r3, [r4, #0x38] - mov r0, #0x1 - lsl r2, r2, #0x1 - bl FUN_02017D68 -_0201ABA8: - ldrh r1, [r4, #0x6] - mov r0, #0x4 - tst r0, r1 - beq _0201ABBE - ldr r2, [r4, #0x68] - ldr r1, [r4, #0x60] - ldr r3, [r4, #0x64] - mov r0, #0x2 - lsl r2, r2, #0x1 - bl FUN_02017D68 -_0201ABBE: - ldrh r1, [r4, #0x6] - mov r0, #0x8 - tst r0, r1 - beq _0201ABE0 - add r2, r4, #0x0 - add r1, r4, #0x0 - add r2, #0x94 - add r3, r4, #0x0 - add r1, #0x8c - ldr r2, [r2, #0x0] - add r3, #0x90 - ldr r1, [r1, #0x0] - ldr r3, [r3, #0x0] - mov r0, #0x3 - lsl r2, r2, #0x1 - bl FUN_02017D68 -_0201ABE0: - ldrh r1, [r4, #0x6] - mov r0, #0x10 - tst r0, r1 - beq _0201AC02 - add r2, r4, #0x0 - add r1, r4, #0x0 - add r2, #0xc0 - add r3, r4, #0x0 - add r1, #0xb8 - ldr r2, [r2, #0x0] - add r3, #0xbc - ldr r1, [r1, #0x0] - ldr r3, [r3, #0x0] - mov r0, #0x4 - lsl r2, r2, #0x1 - bl FUN_02017D68 -_0201AC02: - ldrh r1, [r4, #0x6] - mov r0, #0x20 - tst r0, r1 - beq _0201AC24 - add r2, r4, #0x0 - add r1, r4, #0x0 - add r2, #0xec - add r3, r4, #0x0 - add r1, #0xe4 - ldr r2, [r2, #0x0] - add r3, #0xe8 - ldr r1, [r1, #0x0] - ldr r3, [r3, #0x0] - mov r0, #0x5 - lsl r2, r2, #0x1 - bl FUN_02017D68 -_0201AC24: - ldrh r0, [r4, #0x6] - mov r3, #0x40 - tst r0, r3 - beq _0201AC44 - add r2, r3, #0x0 - add r1, r3, #0x0 - add r2, #0xd8 - add r1, #0xd0 - ldr r2, [r4, r2] - add r3, #0xd4 - ldr r1, [r4, r1] - ldr r3, [r4, r3] - mov r0, #0x6 - lsl r2, r2, #0x1 - bl FUN_02017D68 -_0201AC44: - ldrh r0, [r4, #0x6] - mov r3, #0x80 - tst r0, r3 - beq _0201AC64 - add r2, r3, #0x0 - add r1, r3, #0x0 - add r2, #0xc4 - add r1, #0xbc - ldr r2, [r4, r2] - add r3, #0xc0 - ldr r1, [r4, r1] - ldr r3, [r4, r3] - mov r0, #0x7 - lsl r2, r2, #0x1 - bl FUN_02017D68 -_0201AC64: - pop {r4, pc} - .balign 4 - - thumb_func_start FUN_0201AC68 -FUN_0201AC68: ; 0x0201AC68 - ldrh r3, [r0, #0x6] - mov r2, #0x1 - lsl r2, r1 - add r1, r3, #0x0 - orr r1, r2 - strh r1, [r0, #0x6] - bx lr - .balign 4 - - thumb_func_start FUN_0201AC78 -FUN_0201AC78: ; 0x0201AC78 - push {r4, lr} - sub sp, #0x48 - add r4, r0, #0x0 - ldrh r1, [r4, #0x4] - mov r0, #0x1 - tst r0, r1 - beq _0201AC9E - ldr r1, [r4, #0x14] - ldr r0, _0201AEB0 ; =0x000001FF - add r2, r1, #0x0 - ldr r1, [r4, #0x18] - and r2, r0 - lsl r1, r1, #0x10 - lsl r0, r0, #0x10 - and r0, r1 - add r1, r2, #0x0 - orr r1, r0 - ldr r0, _0201AEB4 ; =0x04000010 - str r1, [r0, #0x0] -_0201AC9E: - ldrh r1, [r4, #0x4] - mov r0, #0x2 - tst r0, r1 - beq _0201ACBE - ldr r1, [r4, #0x40] - ldr r0, _0201AEB0 ; =0x000001FF - add r2, r1, #0x0 - ldr r1, [r4, #0x44] - and r2, r0 - lsl r1, r1, #0x10 - lsl r0, r0, #0x10 - and r0, r1 - add r1, r2, #0x0 - orr r1, r0 - ldr r0, _0201AEB8 ; =0x04000014 - str r1, [r0, #0x0] -_0201ACBE: - ldrh r1, [r4, #0x4] - mov r0, #0x4 - tst r0, r1 - beq _0201AD1E - add r0, r4, #0x0 - add r0, #0x74 - ldrb r0, [r0, #0x0] - cmp r0, #0x0 - bne _0201ACEA - ldr r1, [r4, #0x6c] - ldr r0, _0201AEB0 ; =0x000001FF - add r2, r1, #0x0 - ldr r1, [r4, #0x70] - and r2, r0 - lsl r1, r1, #0x10 - lsl r0, r0, #0x10 - and r0, r1 - add r1, r2, #0x0 - orr r1, r0 - ldr r0, _0201AEBC ; =0x04000018 - str r1, [r0, #0x0] - b _0201AD1E -_0201ACEA: - mov r0, #0x2 - str r0, [sp, #0x0] - add r1, r4, #0x0 - add r1, #0x78 - add r3, r4, #0x0 - add r3, #0x80 - ldrh r1, [r1, #0x0] - ldr r2, [r4, #0x7c] - ldr r3, [r3, #0x0] - add r0, sp, #0x38 - bl MTX22_2DAffine - ldr r0, [r4, #0x6c] - add r2, r4, #0x0 - str r0, [sp, #0x0] - ldr r0, [r4, #0x70] - add r3, r4, #0x0 - str r0, [sp, #0x4] - add r2, #0x84 - add r3, #0x88 - ldr r0, _0201AEC0 ; =0x04000020 - ldr r2, [r2, #0x0] - ldr r3, [r3, #0x0] - add r1, sp, #0x38 - bl G2x_SetBGyAffine_ -_0201AD1E: - ldrh r1, [r4, #0x4] - mov r0, #0x8 - tst r0, r1 - beq _0201AD8E - add r0, r4, #0x0 - add r0, #0xa0 - ldrb r0, [r0, #0x0] - cmp r0, #0x0 - bne _0201AD4E - add r0, r4, #0x0 - add r2, r4, #0x0 - add r0, #0x98 - add r2, #0x9c - ldr r2, [r2, #0x0] - ldr r0, [r0, #0x0] - ldr r1, _0201AEB0 ; =0x000001FF - lsl r2, r2, #0x10 - and r0, r1 - lsl r1, r1, #0x10 - and r1, r2 - orr r1, r0 - ldr r0, _0201AEC4 ; =0x0400001C - str r1, [r0, #0x0] - b _0201AD8E -_0201AD4E: - mov r0, #0x2 - add r1, r4, #0x0 - str r0, [sp, #0x0] - add r1, #0xa4 - add r2, r4, #0x0 - add r3, r4, #0x0 - add r2, #0xa8 - add r3, #0xac - ldrh r1, [r1, #0x0] - ldr r2, [r2, #0x0] - ldr r3, [r3, #0x0] - add r0, sp, #0x28 - bl MTX22_2DAffine - add r0, r4, #0x0 - add r0, #0x98 - ldr r0, [r0, #0x0] - add r2, r4, #0x0 - str r0, [sp, #0x0] - add r0, r4, #0x0 - add r0, #0x9c - ldr r0, [r0, #0x0] - add r3, r4, #0x0 - str r0, [sp, #0x4] - add r2, #0xb0 - add r3, #0xb4 - ldr r0, _0201AEC8 ; =0x04000030 - ldr r2, [r2, #0x0] - ldr r3, [r3, #0x0] - add r1, sp, #0x28 - bl G2x_SetBGyAffine_ -_0201AD8E: - ldrh r1, [r4, #0x4] - mov r0, #0x10 - tst r0, r1 - beq _0201ADB2 - add r0, r4, #0x0 - add r2, r4, #0x0 - add r0, #0xc4 - add r2, #0xc8 - ldr r2, [r2, #0x0] - ldr r0, [r0, #0x0] - ldr r1, _0201AEB0 ; =0x000001FF - lsl r2, r2, #0x10 - and r0, r1 - lsl r1, r1, #0x10 - and r1, r2 - orr r1, r0 - ldr r0, _0201AECC ; =0x04001010 - str r1, [r0, #0x0] -_0201ADB2: - ldrh r1, [r4, #0x4] - mov r0, #0x20 - tst r0, r1 - beq _0201ADD6 - add r0, r4, #0x0 - add r2, r4, #0x0 - add r0, #0xf0 - add r2, #0xf4 - ldr r2, [r2, #0x0] - ldr r0, [r0, #0x0] - ldr r1, _0201AEB0 ; =0x000001FF - lsl r2, r2, #0x10 - and r0, r1 - lsl r1, r1, #0x10 - and r1, r2 - orr r1, r0 - ldr r0, _0201AED0 ; =0x04001014 - str r1, [r0, #0x0] -_0201ADD6: - ldrh r0, [r4, #0x4] - mov r3, #0x40 - tst r0, r3 - beq _0201AE3E - add r0, r3, #0x0 - add r0, #0xe4 - ldrb r0, [r4, r0] - cmp r0, #0x0 - bne _0201AE04 - ldr r1, _0201AEB0 ; =0x000001FF - add r3, #0xdc - add r2, r1, #0x0 - sub r2, #0xdf - ldr r0, [r4, r3] - ldr r2, [r4, r2] - and r0, r1 - lsl r2, r2, #0x10 - lsl r1, r1, #0x10 - and r1, r2 - orr r1, r0 - ldr r0, _0201AED4 ; =0x04001018 - str r1, [r0, #0x0] - b _0201AE3E -_0201AE04: - mov r0, #0x2 - add r1, r3, #0x0 - add r2, r3, #0x0 - str r0, [sp, #0x0] - add r1, #0xe8 - add r2, #0xec - add r3, #0xf0 - ldrh r1, [r4, r1] - ldr r2, [r4, r2] - ldr r3, [r4, r3] - add r0, sp, #0x18 - bl MTX22_2DAffine - mov r3, #0x47 - lsl r3, r3, #0x2 - ldr r0, [r4, r3] - add r2, r3, #0x0 - str r0, [sp, #0x0] - add r0, r3, #0x4 - ldr r0, [r4, r0] - add r2, #0x18 - str r0, [sp, #0x4] - add r3, #0x1c - ldr r0, _0201AED8 ; =0x04001020 - ldr r2, [r4, r2] - ldr r3, [r4, r3] - add r1, sp, #0x18 - bl G2x_SetBGyAffine_ -_0201AE3E: - ldrh r0, [r4, #0x4] - mov r3, #0x80 - tst r0, r3 - beq _0201AEAC - add r0, r3, #0x0 - add r0, #0xd0 - ldrb r0, [r4, r0] - cmp r0, #0x0 - bne _0201AE72 - add r3, #0xc8 - ldr r1, [r4, r3] - ldr r0, _0201AEB0 ; =0x000001FF - add r2, r1, #0x0 - add r1, r0, #0x0 - sub r1, #0xb3 - ldr r1, [r4, r1] - and r2, r0 - lsl r1, r1, #0x10 - lsl r0, r0, #0x10 - and r0, r1 - add r1, r2, #0x0 - orr r1, r0 - ldr r0, _0201AEDC ; =0x0400101C - add sp, #0x48 - str r1, [r0, #0x0] - pop {r4, pc} -_0201AE72: - mov r0, #0x2 - add r1, r3, #0x0 - add r2, r3, #0x0 - str r0, [sp, #0x0] - add r1, #0xd4 - add r2, #0xd8 - add r3, #0xdc - ldrh r1, [r4, r1] - ldr r2, [r4, r2] - ldr r3, [r4, r3] - add r0, sp, #0x8 - bl MTX22_2DAffine - mov r3, #0x52 - lsl r3, r3, #0x2 - ldr r0, [r4, r3] - add r2, r3, #0x0 - str r0, [sp, #0x0] - add r0, r3, #0x4 - ldr r0, [r4, r0] - add r2, #0x18 - str r0, [sp, #0x4] - add r3, #0x1c - ldr r0, _0201AEE0 ; =0x04001030 - ldr r2, [r4, r2] - ldr r3, [r4, r3] - add r1, sp, #0x8 - bl G2x_SetBGyAffine_ -_0201AEAC: - add sp, #0x48 - pop {r4, pc} - .balign 4 -_0201AEB0: .word 0x000001FF -_0201AEB4: .word 0x04000010 -_0201AEB8: .word 0x04000014 -_0201AEBC: .word 0x04000018 -_0201AEC0: .word 0x04000020 -_0201AEC4: .word 0x0400001C -_0201AEC8: .word 0x04000030 -_0201AECC: .word 0x04001010 -_0201AED0: .word 0x04001014 -_0201AED4: .word 0x04001018 -_0201AED8: .word 0x04001020 -_0201AEDC: .word 0x0400101C -_0201AEE0: .word 0x04001030 - - thumb_func_start FUN_0201AEE4 -FUN_0201AEE4: ; 0x0201AEE4 - push {r3-r5, lr} - add r5, r0, #0x0 - add r4, r1, #0x0 - add r1, r5, #0x0 - mov r0, #0x2c - add r1, #0x8 - mul r0, r4 - add r0, r1, r0 - add r1, r2, #0x0 - add r2, r3, #0x0 - bl FUN_02017B8C - mov r0, #0x1 - ldrh r1, [r5, #0x4] - lsl r0, r4 - orr r0, r1 - strh r0, [r5, #0x4] - pop {r3-r5, pc} - - thumb_func_start FUN_0201AF08 -FUN_0201AF08: ; 0x0201AF08 - push {r3-r5, lr} - add r5, r0, #0x0 - add r4, r1, #0x0 - add r1, r5, #0x0 - mov r0, #0x2c - add r1, #0x8 - mul r0, r4 - add r0, r1, r0 - add r1, r2, #0x0 - add r2, r3, #0x0 - bl FUN_0201AF2C - mov r0, #0x1 - ldrh r1, [r5, #0x4] - lsl r0, r4 - orr r0, r1 - strh r0, [r5, #0x4] - pop {r3-r5, pc} - - thumb_func_start FUN_0201AF2C -FUN_0201AF2C: ; 0x0201AF2C - cmp r1, #0x0 - beq _0201AF3A - cmp r1, #0x1 - beq _0201AF3E - cmp r1, #0x2 - beq _0201AF46 - bx lr -_0201AF3A: - strh r2, [r0, #0x18] - bx lr -_0201AF3E: - ldrh r1, [r0, #0x18] - add r1, r1, r2 - strh r1, [r0, #0x18] - bx lr -_0201AF46: - ldrh r1, [r0, #0x18] - sub r1, r1, r2 - strh r1, [r0, #0x18] - bx lr - .balign 4 - - thumb_func_start FUN_0201AF50 -FUN_0201AF50: ; 0x0201AF50 - push {r3-r5, lr} - add r5, r0, #0x0 - add r4, r1, #0x0 - add r1, r5, #0x0 - mov r0, #0x2c - add r1, #0x8 - mul r0, r4 - add r0, r1, r0 - add r1, r2, #0x0 - add r2, r3, #0x0 - bl FUN_0201AF74 - mov r0, #0x1 - ldrh r1, [r5, #0x4] - lsl r0, r4 - orr r0, r1 - strh r0, [r5, #0x4] - pop {r3-r5, pc} - - thumb_func_start FUN_0201AF74 -FUN_0201AF74: ; 0x0201AF74 - sub r1, #0x9 - cmp r1, #0x5 - bhi _0201AFB8 - add r1, r1, r1 - add r1, pc - ldrh r1, [r1, #0x6] - lsl r1, r1, #0x10 - asr r1, r1, #0x10 - add pc, r1 -_0201AF86: ; jump table (using 16-bit offset) - .short _0201AF92 - _0201AF86 - 2; case 0 - .short _0201AF96 - _0201AF86 - 2; case 1 - .short _0201AF9E - _0201AF86 - 2; case 2 - .short _0201AFA6 - _0201AF86 - 2; case 3 - .short _0201AFAA - _0201AF86 - 2; case 4 - .short _0201AFB2 - _0201AF86 - 2; case 5 -_0201AF92: - str r2, [r0, #0x24] - bx lr -_0201AF96: - ldr r1, [r0, #0x24] - add r1, r1, r2 - str r1, [r0, #0x24] - bx lr -_0201AF9E: - ldr r1, [r0, #0x24] - sub r1, r1, r2 - str r1, [r0, #0x24] - bx lr -_0201AFA6: - str r2, [r0, #0x28] - bx lr -_0201AFAA: - ldr r1, [r0, #0x28] - add r1, r1, r2 - str r1, [r0, #0x28] - bx lr -_0201AFB2: - ldr r1, [r0, #0x28] - sub r1, r1, r2 - str r1, [r0, #0x28] -_0201AFB8: - bx lr - .balign 4 - - thumb_func_start FUN_0201AFBC -FUN_0201AFBC: ; 0x0201AFBC - push {r4-r7, lr} - sub sp, #0x1c - str r1, [sp, #0x0] - add r7, r0, #0x0 - str r2, [sp, #0x4] - ldr r0, [sp, #0x30] - str r3, [sp, #0x8] - str r0, [sp, #0x30] - ldr r0, [sp, #0x0] - add r4, r7, #0x0 - mov r1, #0x2c - add r5, r0, #0x0 - mul r5, r1 - add r4, #0x8 - ldr r0, [r4, r5] - cmp r0, #0x0 - bne _0201AFE4 - add sp, #0x1c - mov r0, #0x0 - pop {r4-r7, pc} -_0201AFE4: - ldr r0, [sp, #0x4] - ldr r1, [sp, #0x8] - add r2, r7, r5 - lsl r0, r0, #0x15 - lsl r1, r1, #0x15 - ldrb r2, [r2, #0x1d] - lsr r0, r0, #0x18 - lsr r1, r1, #0x18 - bl FUN_02017FFC - add r6, r0, #0x0 - ldr r0, [sp, #0x0] - bl FUN_020187B0 - str r0, [sp, #0x18] - ldr r1, [sp, #0x4] - mov r0, #0x7 - and r1, r0 - lsl r1, r1, #0x18 - lsr r1, r1, #0x18 - str r1, [sp, #0x14] - ldr r1, [sp, #0x8] - and r0, r1 - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - add r1, r7, r5 - str r0, [sp, #0x10] - ldrb r0, [r1, #0x1e] - cmp r0, #0x0 - bne _0201B096 - ldr r0, [r4, r5] - mov r1, #0x40 - str r0, [sp, #0xc] - ldr r0, [r7, #0x0] - bl AllocFromHeapAtEnd - add r4, r0, #0x0 - lsl r0, r6, #0x1 - ldr r1, [sp, #0xc] - mov r12, r0 - ldrh r0, [r1, r0] - mov r3, #0x0 - mov r6, #0xf - lsl r0, r0, #0x16 - lsr r1, r0, #0x11 - ldr r0, [sp, #0x18] - add r2, r0, r1 -_0201B042: - ldrb r5, [r2, r3] - lsl r0, r3, #0x1 - add r1, r4, r0 - and r5, r6 - strb r5, [r4, r0] - ldrb r0, [r2, r3] - asr r0, r0, #0x4 - strb r0, [r1, #0x1] - add r0, r3, #0x1 - lsl r0, r0, #0x18 - lsr r3, r0, #0x18 - cmp r3, #0x20 - blo _0201B042 - ldr r2, [sp, #0xc] - mov r1, r12 - ldrh r1, [r2, r1] - add r0, r7, #0x0 - asr r2, r1, #0xa - mov r1, #0x3 - and r1, r2 - lsl r1, r1, #0x18 - lsr r1, r1, #0x18 - add r2, r4, #0x0 - bl FUN_0201B118 - ldr r0, [sp, #0x10] - lsl r1, r0, #0x3 - ldr r0, [sp, #0x14] - add r0, r0, r1 - ldrb r5, [r4, r0] - add r0, r4, #0x0 - bl FreeToHeap - ldr r0, [sp, #0x30] - ldrh r2, [r0, #0x0] - mov r0, #0x1 - add r1, r0, #0x0 - lsl r1, r5 - tst r1, r2 - beq _0201B10C - add sp, #0x1c - pop {r4-r7, pc} -_0201B096: - ldrb r0, [r1, #0x1c] - cmp r0, #0x1 - beq _0201B0E0 - ldr r0, [r7, #0x0] - ldr r4, [r4, r5] - mov r1, #0x40 - bl AllocFromHeapAtEnd - lsl r6, r6, #0x1 - ldrh r1, [r4, r6] - add r5, r0, #0x0 - lsl r1, r1, #0x16 - lsr r2, r1, #0x10 - ldr r1, [sp, #0x18] - add r1, r1, r2 - mov r2, #0x40 - bl memcpy - ldrh r1, [r4, r6] - add r0, r7, #0x0 - asr r2, r1, #0xa - mov r1, #0x3 - and r1, r2 - lsl r1, r1, #0x18 - lsr r1, r1, #0x18 - add r2, r5, #0x0 - bl FUN_0201B118 - ldr r0, [sp, #0x10] - lsl r1, r0, #0x3 - ldr r0, [sp, #0x14] - add r0, r0, r1 - ldrb r4, [r5, r0] - add r0, r5, #0x0 - bl FreeToHeap - b _0201B0F4 -_0201B0E0: - ldr r1, [r4, r5] - ldr r0, [sp, #0x10] - ldrb r1, [r1, r6] - lsl r0, r0, #0x3 - lsl r2, r1, #0x6 - ldr r1, [sp, #0x14] - add r1, r1, r2 - add r1, r0, r1 - ldr r0, [sp, #0x18] - ldrb r4, [r0, r1] -_0201B0F4: - ldr r0, [sp, #0x30] - ldrh r2, [r0, #0x0] - lsl r0, r2, #0x18 - lsr r1, r0, #0x18 - ldr r0, _0201B114 ; =0x0000FFFF -_0201B0FE: - cmp r2, r0 - beq _0201B10C - cmp r4, r1 - bne _0201B0FE - add sp, #0x1c - mov r0, #0x1 - pop {r4-r7, pc} -_0201B10C: - mov r0, #0x0 - add sp, #0x1c - pop {r4-r7, pc} - nop -_0201B114: .word 0x0000FFFF - - thumb_func_start FUN_0201B118 -FUN_0201B118: ; 0x0201B118 - push {r3-r7, lr} - str r1, [sp, #0x0] - ldr r1, [sp, #0x0] - add r7, r2, #0x0 - cmp r1, #0x0 - beq _0201B1A4 - ldr r0, [r0, #0x0] - mov r1, #0x40 - bl AllocFromHeapAtEnd - add r4, r0, #0x0 - ldr r0, [sp, #0x0] - mov r1, #0x1 - tst r0, r1 - beq _0201B166 - mov r0, #0x0 - mov r5, #0x7 -_0201B13A: - lsl r3, r0, #0x3 - add r2, r7, r3 - mov r1, #0x0 - add r3, r4, r3 -_0201B142: - sub r6, r5, r1 - ldrb r6, [r2, r6] - strb r6, [r3, r1] - add r1, r1, #0x1 - lsl r1, r1, #0x18 - lsr r1, r1, #0x18 - cmp r1, #0x8 - blo _0201B142 - add r0, r0, #0x1 - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - cmp r0, #0x8 - blo _0201B13A - add r0, r7, #0x0 - add r1, r4, #0x0 - mov r2, #0x40 - bl memcpy -_0201B166: - ldr r0, [sp, #0x0] - mov r1, #0x2 - tst r0, r1 - beq _0201B19E - mov r5, #0x0 - mov r6, #0x7 -_0201B172: - lsl r0, r5, #0x3 - add r3, r4, r0 - sub r0, r6, r5 - lsl r0, r0, #0x3 - add r2, r7, r0 - mov r1, #0x8 -_0201B17E: - ldrb r0, [r2, #0x0] - add r2, r2, #0x1 - strb r0, [r3, #0x0] - add r3, r3, #0x1 - sub r1, r1, #0x1 - bne _0201B17E - add r0, r5, #0x1 - lsl r0, r0, #0x18 - lsr r5, r0, #0x18 - cmp r5, #0x8 - blo _0201B172 - add r0, r7, #0x0 - add r1, r4, #0x0 - mov r2, #0x40 - bl memcpy -_0201B19E: - add r0, r4, #0x0 - bl FreeToHeap -_0201B1A4: - pop {r3-r7, pc} - .balign 4 diff --git a/arm9/asm/unk_0201B1A8.s b/arm9/asm/unk_0201B1A8.s index 05245bc6..359f9bfe 100644 --- a/arm9/asm/unk_0201B1A8.s +++ b/arm9/asm/unk_0201B1A8.s @@ -1,12 +1,12 @@ .include "asm/macros.inc" .include "global.inc" - .extern UNK_021CED98 - .extern UNK_021CEDD4 - .extern UNK_021064C0 - .extern UNK_021064B8 - .extern UNK_021064C4 - .extern UNK_021064BC + .extern NNS_G3dGlb + .extern NNS_G3dGlb + .extern NNS_GfdDefaultFuncAllocPlttVram + .extern NNS_GfdDefaultFuncAllocTexVram + .extern NNS_GfdDefaultFuncFreePlttVram + .extern NNS_GfdDefaultFuncFreeTexVram .section .bss @@ -23,7 +23,7 @@ FUN_0201B1A8: ; 0x0201B1A8 add r4, r2, #0x0 bl FUN_020161A4 str r0, [r5, #0x0] - bl FUN_020BC0FC + bl NNS_G3dGetTex cmp r0, #0x0 beq _0201B1D2 bl FUN_0201B254 @@ -33,10 +33,10 @@ FUN_0201B1A8: ; 0x0201B1A8 ldr r1, [r0, #0x8] bl DC_FlushRange ldr r0, [r5, #0x0] - bl FUN_020BB59C + bl NNS_G3dResDefaultSetup _0201B1D2: ldr r0, [r5, #0x0] - bl FUN_020BC13C + bl NNS_G3dGetMdlSet ldrh r1, [r0, #0xe] add r1, r0, r1 ldr r1, [r1, #0xc] @@ -50,7 +50,7 @@ FUN_0201B1E4: ; 0x0201B1E4 add r5, r1, #0x0 add r4, r0, #0x0 ldr r0, [r5, #0x0] - bl FUN_020BC0FC + bl NNS_G3dGetTex cmp r0, #0x0 beq _0201B20A bl FUN_0201B254 @@ -60,10 +60,10 @@ FUN_0201B1E4: ; 0x0201B1E4 ldr r1, [r0, #0x8] bl DC_FlushRange ldr r0, [r5, #0x0] - bl FUN_020BB59C + bl NNS_G3dResDefaultSetup _0201B20A: ldr r0, [r5, #0x0] - bl FUN_020BC13C + bl NNS_G3dGetMdlSet ldrh r1, [r0, #0xe] add r1, r0, r1 ldr r1, [r1, #0xc] @@ -81,7 +81,7 @@ FUN_0201B21C: ; 0x0201B21C bl FUN_0201B1A8 ldr r1, [r4, #0x0] add r0, r5, #0x0 - bl FUN_020B80B4 + bl NNS_G3dRenderObjInit pop {r3-r5, pc} thumb_func_start FUN_0201B234 @@ -94,11 +94,11 @@ FUN_0201B234: ; 0x0201B234 bl FUN_0201B1E4 cmp r4, #0x0 bne _0201B24A - bl ErrorHandling + bl GF_AssertFail _0201B24A: ldr r1, [r4, #0x0] add r0, r5, #0x0 - bl FUN_020B80B4 + bl NNS_G3dRenderObjInit pop {r3-r5, pc} thumb_func_start FUN_0201B254 @@ -125,24 +125,24 @@ FUN_0201B26C: ; 0x0201B26C add r0, r1, #0x0 add r4, r2, #0x0 add r6, r3, #0x0 - bl FUN_020B8474 - ldr r1, _0201B2A0 ; =UNK_021CEDD4 + bl NNS_G3dGlbSetBaseTrans + ldr r1, _0201B2A0 ; =NNS_G3dGlb + 0xBC add r0, r4, #0x0 bl MI_Copy36B - ldr r1, _0201B2A4 ; =UNK_021CED98 + ldr r1, _0201B2A4 ; =NNS_G3dGlb + 0x80 mov r0, #0xa4 ldr r2, [r1, #0x7c] bic r2, r0 add r0, r6, #0x0 str r2, [r1, #0x7c] - bl FUN_020B844C - bl FUN_020B849C + bl NNS_G3dGlbSetBaseScale + bl NNS_G3dGlbFlushP add r0, r5, #0x0 - bl FUN_020BAC98 + bl NNS_G3dDraw pop {r4-r6, pc} nop -_0201B2A0: .word UNK_021CEDD4 -_0201B2A4: .word UNK_021CED98 +_0201B2A0: .word NNS_G3dGlb + 0xBC +_0201B2A4: .word NNS_G3dGlb + 0x80 thumb_func_start FUN_0201B2A8 FUN_0201B2A8: ; 0x0201B2A8 @@ -151,28 +151,28 @@ FUN_0201B2A8: ; 0x0201B2A8 add r0, r1, #0x0 add r4, r2, #0x0 add r6, r3, #0x0 - bl FUN_020B8474 - ldr r1, _0201B2E4 ; =UNK_021CEDD4 + bl NNS_G3dGlbSetBaseTrans + ldr r1, _0201B2E4 ; =NNS_G3dGlb + 0xBC add r0, r4, #0x0 bl MI_Copy36B - ldr r1, _0201B2E8 ; =UNK_021CED98 + ldr r1, _0201B2E8 ; =NNS_G3dGlb + 0x80 mov r0, #0xa4 ldr r2, [r1, #0x7c] bic r2, r0 str r2, [r1, #0x7c] add r0, r6, #0x0 - bl FUN_020B844C - bl FUN_020B849C + bl NNS_G3dGlbSetBaseScale + bl NNS_G3dGlbFlushP mov r1, #0x0 ldr r0, [r5, #0x4] add r2, r1, #0x0 mov r3, #0x1 - bl FUN_020BAFB8 - bl FUN_020BB394 + bl NNS_G3dDraw1Mat1Shp + bl NNS_G3dGeFlushBuffer pop {r4-r6, pc} .balign 4 -_0201B2E4: .word UNK_021CEDD4 -_0201B2E8: .word UNK_021CED98 +_0201B2E4: .word NNS_G3dGlb + 0xBC +_0201B2E8: .word NNS_G3dGlb + 0x80 thumb_func_start FUN_0201B2EC FUN_0201B2EC: ; 0x0201B2EC @@ -269,11 +269,11 @@ _0201B3A4: .word FUN_020223BC FUN_0201B3A8: ; 0x0201B3A8 push {r4, lr} add r4, r1, #0x0 - bl FUN_020BC13C + bl NNS_G3dGetMdlSet cmp r4, #0x0 beq _0201B3BE add r1, r4, #0x0 - bl FUN_020B7790 + bl NNS_G3dBindMdlSet mov r0, #0x1 pop {r4, pc} _0201B3BE: @@ -299,17 +299,17 @@ _0201B3D2: str r1, [sp, #0x0] cmp r5, #0x0 beq _0201B4D0 - bl FUN_020B7E1C + bl NNS_G3dTexGetRequiredSize add r6, r0, #0x0 add r0, r5, #0x0 - bl FUN_020B7E10 + bl NNS_G3dTex4x4GetRequiredSize add r4, r0, #0x0 add r0, r5, #0x0 - bl FUN_020B7CE4 + bl NNS_G3dPlttGetRequiredSize str r0, [sp, #0xc] cmp r6, #0x0 beq _0201B412 - ldr r3, _0201B4D8 ; =UNK_021064B8 + ldr r3, _0201B4D8 ; =NNS_GfdDefaultFuncAllocTexVram mov r1, #0x0 ldr r3, [r3, #0x0] add r0, r6, #0x0 @@ -325,7 +325,7 @@ _0201B412: _0201B414: cmp r4, #0x0 beq _0201B42E - ldr r3, _0201B4D8 ; =UNK_021064B8 + ldr r3, _0201B4D8 ; =NNS_GfdDefaultFuncAllocTexVram add r0, r4, #0x0 ldr r3, [r3, #0x0] mov r1, #0x1 @@ -342,7 +342,7 @@ _0201B430: ldr r0, [sp, #0xc] cmp r0, #0x0 beq _0201B450 - ldr r3, _0201B4DC ; =UNK_021064C0 + ldr r3, _0201B4DC ; =NNS_GfdDefaultFuncAllocPlttVram mov r1, #0x2 ldrh r2, [r5, #0x20] lsl r1, r1, #0xe @@ -361,13 +361,13 @@ _0201B452: ldr r0, [sp, #0x8] cmp r0, #0x0 bne _0201B46E - ldr r1, _0201B4E0 ; =UNK_021064BC + ldr r1, _0201B4E0 ; =NNS_GfdDefaultFuncFreeTexVram add r0, r7, #0x0 ldr r1, [r1, #0x0] blx r1 cmp r0, #0x0 beq _0201B468 - bl ErrorHandling + bl GF_AssertFail _0201B468: add sp, #0x10 mov r0, #0x0 @@ -376,13 +376,13 @@ _0201B46E: ldr r0, [sp, #0x4] cmp r0, #0x0 bne _0201B48A - ldr r1, _0201B4E0 ; =UNK_021064BC + ldr r1, _0201B4E0 ; =NNS_GfdDefaultFuncFreeTexVram add r0, r6, #0x0 ldr r1, [r1, #0x0] blx r1 cmp r0, #0x0 beq _0201B484 - bl ErrorHandling + bl GF_AssertFail _0201B484: add sp, #0x10 mov r0, #0x0 @@ -391,13 +391,13 @@ _0201B48A: ldr r0, [sp, #0x0] cmp r0, #0x0 bne _0201B4A6 - ldr r1, _0201B4E4 ; =UNK_021064C4 + ldr r1, _0201B4E4 ; =NNS_GfdDefaultFuncFreePlttVram add r0, r4, #0x0 ldr r1, [r1, #0x0] blx r1 cmp r0, #0x0 beq _0201B4A0 - bl ErrorHandling + bl GF_AssertFail _0201B4A0: add sp, #0x10 mov r0, #0x0 @@ -406,25 +406,25 @@ _0201B4A6: add r0, r5, #0x0 add r1, r7, #0x0 add r2, r6, #0x0 - bl FUN_020B7DFC + bl NNS_G3dTexSetTexKey add r0, r5, #0x0 add r1, r4, #0x0 - bl FUN_020B7CDC + bl NNS_G3dPlttSetPlttKey ldr r1, [r5, #0x4] add r0, r5, #0x0 bl DC_FlushRange add r0, r5, #0x0 mov r1, #0x1 - bl FUN_020B7D28 + bl NNS_G3dTexLoad add r0, r5, #0x0 mov r1, #0x1 - bl FUN_020B7C78 + bl NNS_G3dPlttLoad _0201B4D0: mov r0, #0x1 add sp, #0x10 pop {r3-r7, pc} nop -_0201B4D8: .word UNK_021064B8 -_0201B4DC: .word UNK_021064C0 -_0201B4E0: .word UNK_021064BC -_0201B4E4: .word UNK_021064C4 +_0201B4D8: .word NNS_GfdDefaultFuncAllocTexVram +_0201B4DC: .word NNS_GfdDefaultFuncAllocPlttVram +_0201B4E0: .word NNS_GfdDefaultFuncFreeTexVram +_0201B4E4: .word NNS_GfdDefaultFuncFreePlttVram diff --git a/arm9/asm/unk_0201B4E8.s b/arm9/asm/unk_0201B4E8.s index 4309da51..42074f95 100644 --- a/arm9/asm/unk_0201B4E8.s +++ b/arm9/asm/unk_0201B4E8.s @@ -103,7 +103,7 @@ FUN_0201B580: ; 0x0201B580 add r5, r0, #0x0 add r4, r1, #0x0 bne _0201B58C - bl ErrorHandling + bl GF_AssertFail _0201B58C: add r1, r4, #0x0 add r1, #0x34 diff --git a/arm9/asm/unk_0201B6D0.s b/arm9/asm/unk_0201B6D0.s index b65b3870..1d795e17 100644 --- a/arm9/asm/unk_0201B6D0.s +++ b/arm9/asm/unk_0201B6D0.s @@ -1,8 +1,8 @@ .include "asm/macros.inc" .include "global.inc" - .extern UNK_021CEDD4 - .extern UNK_021CED98 + .extern NNS_G3dGlb + .extern NNS_G3dGlb .text @@ -38,22 +38,22 @@ FUN_0201B6D0: ; 0x0201B6D0 ldrsh r3, [r4, r3] bl FUN_0201B808 add r0, sp, #0x1c - bl FUN_020B8474 - ldr r1, _0201B764 ; =UNK_021CEDD4 + bl NNS_G3dGlbSetBaseTrans + ldr r1, _0201B764 ; =NNS_G3dGlb + 0xBC add r0, r5, #0x0 bl MI_Copy36B - ldr r1, _0201B768 ; =UNK_021CED98 + ldr r1, _0201B768 ; =NNS_G3dGlb + 0x80 mov r0, #0xa4 ldr r2, [r1, #0x7c] bic r2, r0 add r0, r7, #0x0 str r2, [r1, #0x7c] - bl FUN_020B844C - bl FUN_020B849C + bl NNS_G3dGlbSetBaseScale + bl NNS_G3dGlbFlushP mov r1, #0x0 mov r0, #0x11 add r2, r1, #0x0 - bl FUN_020BB1C0 + bl NNS_G3dGeBufferOP_N ldr r0, [r4, #0x24] add r1, sp, #0x10 str r0, [sp, #0x10] @@ -61,7 +61,7 @@ FUN_0201B6D0: ; 0x0201B6D0 str r0, [sp, #0x18] mov r0, #0x1b mov r2, #0x3 - bl FUN_020BB1C0 + bl NNS_G3dGeBufferOP_N add r0, sp, #0x28 bl FUN_0201B82C add r4, r0, #0x0 @@ -69,13 +69,13 @@ FUN_0201B6D0: ; 0x0201B6D0 mov r0, #0x12 add r1, sp, #0xc str r2, [sp, #0xc] - bl FUN_020BB1C0 + bl NNS_G3dGeBufferOP_N add r0, r4, #0x0 add sp, #0x34 pop {r4-r7, pc} .balign 4 -_0201B764: .word UNK_021CEDD4 -_0201B768: .word UNK_021CED98 +_0201B764: .word NNS_G3dGlb + 0xBC +_0201B768: .word NNS_G3dGlb + 0x80 thumb_func_start FUN_0201B76C FUN_0201B76C: ; 0x0201B76C @@ -97,12 +97,12 @@ FUN_0201B76C: ; 0x0201B76C add r2, r0, #0x0 bl FUN_0201B808 add r0, r5, #0x0 - bl FUN_020B8474 - bl FUN_020B849C + bl NNS_G3dGlbSetBaseTrans + bl NNS_G3dGlbFlushP mov r1, #0x0 mov r0, #0x11 add r2, r1, #0x0 - bl FUN_020BB1C0 + bl NNS_G3dGeBufferOP_N ldr r0, [r4, #0x10] lsl r2, r0, #0xc ldr r0, [r4, #0xc] @@ -115,7 +115,7 @@ FUN_0201B76C: ; 0x0201B76C mov r0, #0x1b add r1, sp, #0x10 mov r2, #0x3 - bl FUN_020BB1C0 + bl NNS_G3dGeBufferOP_N add r0, sp, #0x1c bl FUN_0201B82C add r4, r0, #0x0 @@ -123,7 +123,7 @@ FUN_0201B76C: ; 0x0201B76C mov r0, #0x12 add r1, sp, #0xc str r2, [sp, #0xc] - bl FUN_020BB1C0 + bl NNS_G3dGeBufferOP_N add r0, r4, #0x0 add sp, #0x28 pop {r3-r5, pc} @@ -183,22 +183,22 @@ FUN_0201B82C: ; 0x0201B82C mov r0, #0x29 add r1, sp, #0x4 str r2, [sp, #0x8] - bl FUN_020BB1C0 + bl NNS_G3dGeBufferOP_N mov r0, #0x0 str r0, [sp, #0x0] mov r0, #0x40 add r1, sp, #0x0 mov r2, #0x1 - bl FUN_020BB1C0 + bl NNS_G3dGeBufferOP_N mov r1, #0x0 mov r0, #0x41 add r2, r1, #0x0 - bl FUN_020BB1C0 + bl NNS_G3dGeBufferOP_N mov r0, #0x70 add r1, r4, #0x0 mov r2, #0x3 - bl FUN_020BB1C0 - bl FUN_020BB394 + bl NNS_G3dGeBufferOP_N + bl NNS_G3dGeFlushBuffer add r4, sp, #0x8 _0201B86A: add r0, r4, #0x0 diff --git a/arm9/asm/unk_0201C24C.s b/arm9/asm/unk_0201C24C.s index 36817113..b0c55e93 100644 --- a/arm9/asm/unk_0201C24C.s +++ b/arm9/asm/unk_0201C24C.s @@ -18,7 +18,7 @@ FUN_0201C24C: ; 0x0201C24C ldr r0, [r0, #0x0] cmp r0, #0x0 beq _0201C25E - bl ErrorHandling + bl GF_AssertFail _0201C25E: add r0, r4, #0x0 mov r1, #0xc @@ -27,7 +27,7 @@ _0201C25E: cmp r0, #0x0 str r0, [r1, #0x0] bne _0201C272 - bl ErrorHandling + bl GF_AssertFail _0201C272: add r0, r4, #0x0 lsl r1, r5, #0x4 @@ -43,7 +43,7 @@ _0201C272: ldr r1, [r1, #0x0] ldr r0, [r1, #0x8] ldr r1, [r1, #0x0] - bl FUN_020AEF1C + bl NNS_GfdInitVramTransferManager pop {r3-r5, pc} nop _0201C298: .word UNK_021C5934 @@ -55,7 +55,7 @@ FUN_0201C29C: ; 0x0201C29C ldr r0, [r0, #0x0] cmp r0, #0x0 bne _0201C2AA - bl ErrorHandling + bl GF_AssertFail _0201C2AA: ldr r0, _0201C2C4 ; =UNK_021C5934 ldr r0, [r0, #0x0] @@ -82,7 +82,7 @@ FUN_0201C2C8: ; 0x0201C2C8 add r7, r3, #0x0 cmp r0, #0x0 bne _0201C2DE - bl ErrorHandling + bl GF_AssertFail _0201C2DE: ldr r1, _0201C308 ; =UNK_021C5934 ldr r0, [r1, #0x0] @@ -94,7 +94,7 @@ _0201C2DE: ldr r0, [r0, #0x0] cmp r1, r0 blo _0201C2FA - bl ErrorHandling + bl GF_AssertFail mov r0, #0x0 pop {r3-r7, pc} _0201C2FA: @@ -102,7 +102,7 @@ _0201C2FA: add r1, r4, #0x0 add r2, r6, #0x0 add r3, r7, #0x0 - bl FUN_020AEE40 + bl NNS_GfdRegisterNewVramTransferTask pop {r3-r7, pc} .balign 4 _0201C308: .word UNK_021C5934 @@ -114,7 +114,7 @@ FUN_0201C30C: ; 0x0201C30C ldr r0, [r0, #0x0] cmp r0, #0x0 beq _0201C322 - bl FUN_020AEEB8 + bl NNS_GfdDoVramTransfer ldr r0, _0201C324 ; =UNK_021C5934 mov r1, #0x0 ldr r0, [r0, #0x0] @@ -135,7 +135,7 @@ FUN_0201C328: ; 0x0201C328 ldr r2, _0201C344 ; =FUN_0201C358 add r1, r4, #0x0 add r5, r0, #0x0 - bl FUN_020B4568 + bl NNS_G2dInitCellTransferStateManager add r0, r5, #0x0 pop {r3-r5, pc} .balign 4 @@ -143,10 +143,10 @@ _0201C344: .word FUN_0201C358 thumb_func_start FUN_0201C348 FUN_0201C348: ; 0x0201C348 - ldr r3, _0201C34C ; =FUN_020B442C + ldr r3, _0201C34C ; =NNS_G2dUpdateCellTransferStateManager bx r3 .balign 4 -_0201C34C: .word FUN_020B442C +_0201C34C: .word NNS_G2dUpdateCellTransferStateManager thumb_func_start FUN_0201C350 FUN_0201C350: ; 0x0201C350 diff --git a/arm9/asm/unk_0201C360.s b/arm9/asm/unk_0201C360.s index 5f8ccb52..078b3ee3 100644 --- a/arm9/asm/unk_0201C360.s +++ b/arm9/asm/unk_0201C360.s @@ -321,7 +321,7 @@ FUN_0201C578: ; 0x0201C578 add r0, r4, #0x0 add r0, #0x3c add r1, sp, #0x0 - bl FUN_020BC2A0 + bl NNS_G3dGetResDataByName add r1, r0, #0x0 bne _0201C598 add sp, #0x10 @@ -397,7 +397,7 @@ FUN_0201C5FC: ; 0x0201C5FC add r0, r4, #0x0 add r0, #0x3c add r1, sp, #0x0 - bl FUN_020BC2A0 + bl NNS_G3dGetResDataByName add r1, r0, #0x0 add r0, r4, #0x0 bl FUN_0201C5A4 diff --git a/arm9/asm/unk_0201C7A0.s b/arm9/asm/unk_0201C7A0.s index 0a43b49f..aa8bfe83 100644 --- a/arm9/asm/unk_0201C7A0.s +++ b/arm9/asm/unk_0201C7A0.s @@ -2,7 +2,7 @@ .include "global.inc" .extern gSineTable - .extern UNK_020FFA38 + .extern FX_SinCosTable_ .text @@ -401,7 +401,7 @@ FUN_0201CAA8: ; 0x0201CAA8 sub sp, #0x24 add r4, r1, #0x0 ldr r1, [r4, #0x0] - ldr r3, _0201CB1C ; =UNK_020FFA38 + ldr r3, _0201CB1C ; =FX_SinCosTable_ lsl r1, r1, #0x10 lsr r1, r1, #0x10 asr r1, r1, #0x4 @@ -414,7 +414,7 @@ FUN_0201CAA8: ; 0x0201CAA8 add r5, r0, #0x0 bl MTX_RotX33_ ldr r0, [r4, #0x4] - ldr r3, _0201CB1C ; =UNK_020FFA38 + ldr r3, _0201CB1C ; =FX_SinCosTable_ lsl r0, r0, #0x10 lsr r0, r0, #0x10 asr r0, r0, #0x4 @@ -431,7 +431,7 @@ FUN_0201CAA8: ; 0x0201CAA8 add r2, r5, #0x0 bl MTX_Concat33 ldr r0, [r4, #0x8] - ldr r3, _0201CB1C ; =UNK_020FFA38 + ldr r3, _0201CB1C ; =FX_SinCosTable_ lsl r0, r0, #0x10 lsr r0, r0, #0x10 asr r0, r0, #0x4 @@ -450,7 +450,7 @@ FUN_0201CAA8: ; 0x0201CAA8 add sp, #0x24 pop {r4-r5, pc} nop -_0201CB1C: .word UNK_020FFA38 +_0201CB1C: .word FX_SinCosTable_ thumb_func_start FUN_0201CB20 FUN_0201CB20: ; 0x0201CB20 @@ -504,7 +504,7 @@ FUN_0201CB7C: ; 0x0201CB7C lsl r2, r0, #0x1 add r6, r1, #0x0 lsl r0, r2, #0x1 - ldr r1, _0201CBE8 ; =UNK_020FFA38 + ldr r1, _0201CBE8 ; =FX_SinCosTable_ add r2, r2, #0x1 lsl r2, r2, #0x1 ldrsh r0, [r1, r0] @@ -550,4 +550,4 @@ FUN_0201CB7C: ; 0x0201CB7C str r1, [r5, #0x0] pop {r3-r7, pc} .balign 4 -_0201CBE8: .word UNK_020FFA38 +_0201CBE8: .word FX_SinCosTable_ diff --git a/arm9/asm/unk_0201CC08.s b/arm9/asm/unk_0201CC08.s index c35c4b23..15457b23 100644 --- a/arm9/asm/unk_0201CC08.s +++ b/arm9/asm/unk_0201CC08.s @@ -26,7 +26,7 @@ FUN_0201CC08: ; 0x0201CC08 ldrh r0, [r0, #0x1a] cmp r0, #0x0 beq _0201CC16 - bl ErrorHandling + bl GF_AssertFail _0201CC16: ldr r0, _0201CC20 ; =UNK_021C5978 mov r1, #0x0 @@ -45,7 +45,7 @@ FUN_0201CC24: ; 0x0201CC24 ldrh r0, [r0, #0x1a] cmp r0, #0x0 beq _0201CC36 - bl ErrorHandling + bl GF_AssertFail _0201CC36: cmp r4, #0x5 bhs _0201CC3E @@ -168,7 +168,7 @@ FUN_0201CD04: ; 0x0201CD04 ldrh r0, [r0, #0x1a] cmp r0, #0x0 beq _0201CD14 - bl ErrorHandling + bl GF_AssertFail _0201CD14: bl FUN_0201CCC0 add r4, r0, #0x0 @@ -199,7 +199,7 @@ FUN_0201CD38: ; 0x0201CD38 mov r5, #0x3 cmp r0, #0x0 beq _0201CD4E - bl ErrorHandling + bl GF_AssertFail _0201CD4E: ldr r0, _0201CD8C ; =UNK_021C5978 ldrh r0, [r0, #0x18] @@ -285,7 +285,7 @@ FUN_0201CDD0: ; 0x0201CDD0 bl FUN_0201CE2C cmp r0, #0x1 beq _0201CDF2 - bl ErrorHandling + bl GF_AssertFail _0201CDF2: ldr r0, _0201CDFC ; =UNK_021C5978 mov r1, #0x0 @@ -309,7 +309,7 @@ FUN_0201CE04: ; 0x0201CE04 bl FUN_0201CCC0 cmp r0, #0x1 beq _0201CE20 - bl ErrorHandling + bl GF_AssertFail _0201CE20: ldr r0, _0201CE28 ; =UNK_021C5978 mov r1, #0x1 diff --git a/arm9/asm/unk_0201D040.s b/arm9/asm/unk_0201D040.s index ba8c7b75..b41b069c 100644 --- a/arm9/asm/unk_0201D040.s +++ b/arm9/asm/unk_0201D040.s @@ -230,12 +230,12 @@ FUN_0201D1F8: ; 0x0201D1F8 bl FUN_0201D2AC cmp r0, #0x1 bne _0201D20A - bl ErrorHandling + bl GF_AssertFail _0201D20A: bl FUN_0201DAAC add r4, r0, #0x0 bne _0201D21A - bl ErrorHandling + bl GF_AssertFail mov r0, #0x0 pop {r3-r5, pc} _0201D21A: @@ -274,12 +274,12 @@ FUN_0201D250: ; 0x0201D250 bl FUN_0201D2AC cmp r0, #0x1 bne _0201D262 - bl ErrorHandling + bl GF_AssertFail _0201D262: bl FUN_0201DAAC add r4, r0, #0x0 bne _0201D272 - bl ErrorHandling + bl GF_AssertFail mov r0, #0x0 pop {r3-r5, pc} _0201D272: @@ -348,13 +348,13 @@ FUN_0201D2DC: ; 0x0201D2DC add r4, r0, #0x0 add r5, r1, #0x0 bne _0201D2E8 - bl ErrorHandling + bl GF_AssertFail _0201D2E8: add r0, r4, #0x0 bl FUN_0201D7F8 add r4, r0, #0x0 bne _0201D2F6 - bl ErrorHandling + bl GF_AssertFail _0201D2F6: str r5, [r4, #0x0] ldr r1, [r4, #0x4] @@ -391,7 +391,7 @@ _0201D32C: bl FUN_0201D7F8 add r4, r0, #0x0 bne _0201D33A - bl ErrorHandling + bl GF_AssertFail _0201D33A: add r0, r4, #0x0 add r0, #0x3c @@ -465,7 +465,7 @@ FUN_0201D3B0: ; 0x0201D3B0 bl FUN_0201D7F8 add r4, r0, #0x0 bne _0201D3BE - bl ErrorHandling + bl GF_AssertFail _0201D3BE: add r0, r4, #0x0 add r0, #0x3c @@ -488,7 +488,7 @@ FUN_0201D3D4: ; 0x0201D3D4 bl FUN_0201D7F8 add r4, r0, #0x0 bne _0201D3E6 - bl ErrorHandling + bl GF_AssertFail _0201D3E6: add r0, r4, #0x0 add r0, #0x3c @@ -553,12 +553,12 @@ FUN_0201D458: ; 0x0201D458 bl FUN_0201D6D8 add r4, r0, #0x0 bne _0201D468 - bl ErrorHandling + bl GF_AssertFail _0201D468: bl FUN_0201DAAC add r5, r0, #0x0 bne _0201D474 - bl ErrorHandling + bl GF_AssertFail _0201D474: add r0, r4, #0x0 add r0, #0x3c @@ -818,7 +818,7 @@ FUN_0201D658: ; 0x0201D658 ldr r0, [r0, #0x0] cmp r0, #0x0 bne _0201D666 - bl ErrorHandling + bl GF_AssertFail _0201D666: ldr r1, _0201D670 ; =UNK_021C5994 mov r2, #0x0 @@ -836,7 +836,7 @@ FUN_0201D674: ; 0x0201D674 ldr r0, [r0, #0x0] cmp r0, #0x0 beq _0201D684 - bl ErrorHandling + bl GF_AssertFail _0201D684: ldr r0, _0201D68C ; =UNK_021C5994 str r4, [r0, #0x0] @@ -858,11 +858,11 @@ FUN_0201D690: ; 0x0201D690 add r1, #0x3c strb r2, [r1, #0x0] str r2, [r0, #0x40] - ldr r3, _0201D6B0 ; =FUN_020B1A24 + ldr r3, _0201D6B0 ; =NNS_G2dInitImageProxy add r0, #0x10 bx r3 nop -_0201D6B0: .word FUN_020B1A24 +_0201D6B0: .word NNS_G2dInitImageProxy thumb_func_start FUN_0201D6B4 FUN_0201D6B4: ; 0x0201D6B4 @@ -1145,7 +1145,7 @@ FUN_0201D86C: ; 0x0201D86C str r0, [r4, #0x0] cmp r0, r1 bne _0201D8B8 - bl ErrorHandling + bl GF_AssertFail mov r0, #0x0 pop {r3-r7, pc} _0201D8B8: @@ -1179,7 +1179,7 @@ _0201D8C4: str r0, [r6, #0x0] cmp r0, r1 bne _0201D902 - bl ErrorHandling + bl GF_AssertFail mov r0, #0x0 pop {r3-r7, pc} _0201D902: @@ -1277,7 +1277,7 @@ FUN_0201D9B0: ; 0x0201D9B0 push {r4, lr} add r4, r0, #0x0 add r0, #0x10 - bl FUN_020B1A24 + bl NNS_G2dInitImageProxy ldr r1, [r4, #0x4] cmp r1, #0x3 beq _0201D9C8 @@ -1325,13 +1325,13 @@ _0201DA04: add r5, #0x10 add r2, r4, #0x0 add r3, r5, #0x0 - bl FUN_020B1528 + bl NNS_G2dLoadImage2DMapping b _0201DA20 _0201DA16: add r5, #0x10 add r2, r4, #0x0 add r3, r5, #0x0 - bl FUN_020B1768 + bl NNS_G2dLoadImage1DMapping _0201DA20: cmp r4, #0x1 bne _0201DA2C @@ -1351,7 +1351,7 @@ FUN_0201DA38: ; 0x0201DA38 push {r4, lr} add r4, r0, #0x0 add r0, #0x10 - bl FUN_020B1A24 + bl NNS_G2dInitImageProxy ldr r1, [r4, #0x4] cmp r1, #0x3 beq _0201DA50 @@ -1394,7 +1394,7 @@ _0201DA88: add r5, #0x10 add r2, r4, #0x0 add r3, r5, #0x0 - bl FUN_020B1340 + bl NNS_G2dLoadImageVramTransfer cmp r4, #0x1 bne _0201DAA0 mov r0, #0x1 @@ -1613,7 +1613,7 @@ _0201DBD6: _0201DC12: cmp r2, #0x0 bne _0201DC1A - bl ErrorHandling + bl GF_AssertFail _0201DC1A: ldr r0, _0201DC38 ; =UNK_021C5994 mov r2, #0x0 @@ -1628,7 +1628,7 @@ _0201DC1A: _0201DC2E: cmp r2, #0x0 bne _0201DC36 - bl ErrorHandling + bl GF_AssertFail _0201DC36: pop {r3, pc} .balign 4 @@ -1783,7 +1783,7 @@ _0201DD32: ldrb r1, [r4, r1] tst r0, r1 beq _0201DD54 - bl ErrorHandling + bl GF_AssertFail _0201DD54: add r2, sp, #0x0 ldrb r3, [r2, #0x0] @@ -1901,7 +1901,7 @@ _0201DE0E: ldrb r1, [r4, r1] tst r0, r1 bne _0201DE2A - bl ErrorHandling + bl GF_AssertFail _0201DE2A: ldrb r0, [r7, #0x0] mov r1, #0x1 @@ -1932,7 +1932,7 @@ FUN_0201DE4C: ; 0x0201DE4C beq _0201DE8A add r0, r4, #0x0 add r0, #0x10 - bl FUN_020B1A14 + bl NNS_G2dGetImageLocation ldr r1, _0201DECC ; =UNK_021C5994 ldr r2, [r1, #0x0] ldr r1, [r2, #0x1c] @@ -1958,7 +1958,7 @@ _0201DE8A: beq _0201DEC4 add r0, r4, #0x0 add r0, #0x10 - bl FUN_020B1A14 + bl NNS_G2dGetImageLocation ldr r1, _0201DECC ; =UNK_021C5994 ldr r2, [r1, #0x0] ldr r1, [r2, #0x20] @@ -2077,7 +2077,7 @@ FUN_0201DF44: ; 0x0201DF44 add r3, r6, r5 cmp r3, r2 bls _0201DF6C - bl ErrorHandling + bl GF_AssertFail mov r0, #0x0 b _0201DF6E _0201DF6C: @@ -2093,7 +2093,7 @@ _0201DF6E: add r2, r3, r5 cmp r2, r1 bls _0201DF8A - bl ErrorHandling + bl GF_AssertFail mov r0, #0x0 pop {r3-r7, pc} _0201DF8A: diff --git a/arm9/asm/unk_0201E00C.s b/arm9/asm/unk_0201E00C.s index 744cbe95..d46fd5e0 100644 --- a/arm9/asm/unk_0201E00C.s +++ b/arm9/asm/unk_0201E00C.s @@ -134,7 +134,7 @@ FUN_0201E0E4: ; 0x0201E0E4 bl FUN_0201E428 add r4, r0, #0x0 bne _0201E0F8 - bl ErrorHandling + bl GF_AssertFail mov r0, #0x0 pop {r3-r5, pc} _0201E0F8: @@ -168,7 +168,7 @@ FUN_0201E128: ; 0x0201E128 bl FUN_0201E428 add r4, r0, #0x0 bne _0201E13C - bl ErrorHandling + bl GF_AssertFail mov r0, #0x0 pop {r3-r5, pc} _0201E13C: @@ -200,13 +200,13 @@ FUN_0201E168: ; 0x0201E168 add r4, r0, #0x0 add r5, r1, #0x0 bne _0201E174 - bl ErrorHandling + bl GF_AssertFail _0201E174: add r0, r4, #0x0 bl FUN_0201E3F0 add r4, r0, #0x0 bne _0201E182 - bl ErrorHandling + bl GF_AssertFail _0201E182: str r5, [r4, #0x0] ldr r1, [r4, #0x4] @@ -253,7 +253,7 @@ FUN_0201E1C8: ; 0x0201E1C8 bl FUN_0201E3F0 add r4, r0, #0x0 bne _0201E1D6 - bl ErrorHandling + bl GF_AssertFail _0201E1D6: add r0, r4, #0x0 add r0, #0x2c @@ -310,7 +310,7 @@ FUN_0201E230: ; 0x0201E230 cmp r0, #0x0 bne _0201E244 bne _0201E240 - bl ErrorHandling + bl GF_AssertFail _0201E240: mov r0, #0x0 pop {r3, pc} @@ -335,7 +335,7 @@ FUN_0201E258: ; 0x0201E258 cmp r0, #0x0 bne _0201E26E bne _0201E26A - bl ErrorHandling + bl GF_AssertFail _0201E26A: mov r0, #0x0 pop {r4, pc} @@ -378,7 +378,7 @@ _0201E2A4: _0201E2A6: cmp r4, #0x0 beq _0201E2B6 - bl FUN_020B19C4 + bl NNS_G2dGetImagePaletteLocation add r1, r4, #0x0 bl _u32_div_f pop {r4, pc} @@ -405,7 +405,7 @@ FUN_0201E2C4: ; 0x0201E2C4 bl FUN_0201E1B4 cmp r0, #0x1 bne _0201E2E0 - bl ErrorHandling + bl GF_AssertFail mov r0, #0x0 pop {r3-r5, pc} _0201E2E0: @@ -434,7 +434,7 @@ FUN_0201E2F8: ; 0x0201E2F8 str r0, [r4, #0xc] add r4, #0x10 add r0, r4, #0x0 - bl FUN_020B19DC + bl NNS_G2dInitImagePaletteProxy pop {r4, pc} thumb_func_start FUN_0201E314 @@ -490,7 +490,7 @@ FUN_0201E36C: ; 0x0201E36C ldr r0, [r0, #0x4] cmp r0, #0x0 beq _0201E37C - bl ErrorHandling + bl GF_AssertFail _0201E37C: ldr r1, [r5, #0x4] mov r0, #0x1 @@ -675,7 +675,7 @@ FUN_0201E4BC: ; 0x0201E4BC push {r4, lr} add r4, r0, #0x0 add r0, #0x10 - bl FUN_020B19DC + bl NNS_G2dInitImagePaletteProxy ldr r0, [r4, #0x4] mov r2, #0x1 tst r0, r2 @@ -684,7 +684,7 @@ FUN_0201E4BC: ; 0x0201E4BC ldr r0, [r4, #0x0] ldr r1, [r4, #0x24] add r3, #0x10 - bl FUN_020B1240 + bl NNS_G2dLoadPalette _0201E4DA: ldr r0, [r4, #0x4] mov r2, #0x2 @@ -694,7 +694,7 @@ _0201E4DA: ldr r1, [r4, #0x28] add r4, #0x10 add r3, r4, #0x0 - bl FUN_020B1240 + bl NNS_G2dLoadPalette _0201E4EE: pop {r4, pc} @@ -868,7 +868,7 @@ FUN_0201E5F4: ; 0x0201E5F4 add r2, r1, r2 cmp r2, r3 bls _0201E618 - bl ErrorHandling + bl GF_AssertFail bl FUN_0201E0B8 mov r0, #0x0 b _0201E61A @@ -885,7 +885,7 @@ _0201E61A: ldr r1, [sp, #0x10] cmp r2, r1 bls _0201E63A - bl ErrorHandling + bl GF_AssertFail bl FUN_0201E0B8 mov r0, #0x0 pop {r3-r5, pc} diff --git a/arm9/asm/unk_0201E7D8.s b/arm9/asm/unk_0201E7D8.s index a70f909d..43dcd254 100644 --- a/arm9/asm/unk_0201E7D8.s +++ b/arm9/asm/unk_0201E7D8.s @@ -1,13 +1,13 @@ .include "asm/macros.inc" .include "global.inc" - .extern UNK_021CED98 - .extern UNK_021CEF64 - .extern UNK_021CED20 - .extern UNK_020FFA38 - .extern UNK_021CEF58 - .extern UNK_021CEF70 - .extern UNK_021CED64 + .extern NNS_G3dGlb + .extern NNS_G3dGlb + .extern NNS_G3dGlb + .extern FX_SinCosTable_ + .extern NNS_G3dGlb + .extern NNS_G3dGlb + .extern NNS_G3dGlb .section .data @@ -32,7 +32,7 @@ FUN_0201E7D8: ; 0x0201E7D8 ldrh r4, [r5, #0x3c] asr r0, r0, #0x4 lsl r1, r0, #0x2 - ldr r0, _0201E8B4 ; =UNK_020FFA38 + ldr r0, _0201E8B4 ; =FX_SinCosTable_ asr r3, r2, #0x1f ldrsh r0, [r0, r1] asr r1, r0, #0x1f @@ -46,7 +46,7 @@ FUN_0201E7D8: ; 0x0201E7D8 lsl r2, r2, #0x1 add r2, r2, #0x1 lsl r3, r2, #0x1 - ldr r2, _0201E8B4 ; =UNK_020FFA38 + ldr r2, _0201E8B4 ; =FX_SinCosTable_ lsl r1, r1, #0x14 ldrsh r2, [r2, r3] lsr r0, r0, #0xc @@ -69,7 +69,7 @@ FUN_0201E7D8: ; 0x0201E7D8 lsl r0, r0, #0x1 add r0, r0, #0x1 lsl r1, r0, #0x1 - ldr r0, _0201E8B4 ; =UNK_020FFA38 + ldr r0, _0201E8B4 ; =FX_SinCosTable_ asr r3, r2, #0x1f ldrsh r0, [r0, r1] asr r1, r0, #0x1f @@ -86,7 +86,7 @@ FUN_0201E7D8: ; 0x0201E7D8 lsl r2, r2, #0x1 add r2, r2, #0x1 lsl r3, r2, #0x1 - ldr r2, _0201E8B4 ; =UNK_020FFA38 + ldr r2, _0201E8B4 ; =FX_SinCosTable_ orr r0, r1 ldrsh r2, [r2, r3] asr r1, r0, #0x1f @@ -106,7 +106,7 @@ FUN_0201E7D8: ; 0x0201E7D8 str r1, [r5, #0x1c] asr r0, r0, #0x4 lsl r1, r0, #0x2 - ldr r0, _0201E8B4 ; =UNK_020FFA38 + ldr r0, _0201E8B4 ; =FX_SinCosTable_ ldr r2, [r5, #0x38] ldrsh r0, [r0, r1] asr r3, r2, #0x1f @@ -129,7 +129,7 @@ FUN_0201E7D8: ; 0x0201E7D8 bl VEC_Add pop {r3-r5, pc} nop -_0201E8B4: .word UNK_020FFA38 +_0201E8B4: .word FX_SinCosTable_ thumb_func_start FUN_0201E8B8 FUN_0201E8B8: ; 0x0201E8B8 @@ -140,7 +140,7 @@ FUN_0201E8B8: ; 0x0201E8B8 ldrh r4, [r5, #0x3c] asr r0, r0, #0x4 lsl r1, r0, #0x2 - ldr r0, _0201E998 ; =UNK_020FFA38 + ldr r0, _0201E998 ; =FX_SinCosTable_ asr r3, r2, #0x1f ldrsh r0, [r0, r1] asr r1, r0, #0x1f @@ -154,7 +154,7 @@ FUN_0201E8B8: ; 0x0201E8B8 lsl r2, r2, #0x1 add r2, r2, #0x1 lsl r3, r2, #0x1 - ldr r2, _0201E998 ; =UNK_020FFA38 + ldr r2, _0201E998 ; =FX_SinCosTable_ lsl r1, r1, #0x14 ldrsh r2, [r2, r3] lsr r0, r0, #0xc @@ -178,7 +178,7 @@ FUN_0201E8B8: ; 0x0201E8B8 lsl r0, r0, #0x1 add r0, r0, #0x1 lsl r1, r0, #0x1 - ldr r0, _0201E998 ; =UNK_020FFA38 + ldr r0, _0201E998 ; =FX_SinCosTable_ asr r3, r2, #0x1f ldrsh r0, [r0, r1] asr r1, r0, #0x1f @@ -195,7 +195,7 @@ FUN_0201E8B8: ; 0x0201E8B8 lsl r2, r2, #0x1 add r2, r2, #0x1 lsl r3, r2, #0x1 - ldr r2, _0201E998 ; =UNK_020FFA38 + ldr r2, _0201E998 ; =FX_SinCosTable_ orr r0, r1 ldrsh r2, [r2, r3] asr r1, r0, #0x1f @@ -216,7 +216,7 @@ FUN_0201E8B8: ; 0x0201E8B8 lsr r0, r0, #0x10 asr r0, r0, #0x4 lsl r1, r0, #0x2 - ldr r0, _0201E998 ; =UNK_020FFA38 + ldr r0, _0201E998 ; =FX_SinCosTable_ ldr r2, [r5, #0x38] ldrsh r0, [r0, r1] asr r3, r2, #0x1f @@ -240,7 +240,7 @@ FUN_0201E8B8: ; 0x0201E8B8 bl VEC_Add pop {r3-r5, pc} .balign 4 -_0201E998: .word UNK_020FFA38 +_0201E998: .word FX_SinCosTable_ thumb_func_start FUN_0201E99C FUN_0201E99C: ; 0x0201E99C @@ -249,7 +249,7 @@ FUN_0201E99C: ; 0x0201E99C strh r0, [r2, #0x0] asr r0, r0, #0x4 lsl r3, r0, #0x1 - ldr r2, _0201E9E0 ; =UNK_020FFA38 + ldr r2, _0201E9E0 ; =FX_SinCosTable_ lsl r0, r3, #0x1 ldrsh r0, [r2, r0] str r0, [r1, #0x0] @@ -278,7 +278,7 @@ FUN_0201E99C: ; 0x0201E99C str r2, [r1, #0x64] bx lr nop -_0201E9E0: .word UNK_020FFA38 +_0201E9E0: .word FX_SinCosTable_ _0201E9E4: .word 0x00001555 thumb_func_start FUN_0201E9E8 @@ -415,7 +415,7 @@ FUN_0201EABC: ; 0x0201EABC add r0, r7, #0x1 cmp r0, r5 ble _0201EADA - bl ErrorHandling + bl GF_AssertFail _0201EADA: ldr r0, [sp, #0x0] mov r1, #0x24 @@ -576,7 +576,7 @@ FUN_0201EBA4: ; 0x0201EBA4 str r0, [r3, #0x0] _0201EBEE: ldr r0, _0201EC40 ; =UNK_021C59A4 - ldr r5, _0201EC44 ; =UNK_021CEF58 + ldr r5, _0201EC44 ; =NNS_G3dGlb + 0x240 ldr r4, [r0, #0x0] add r3, r4, #0x0 add r2, r4, #0x0 @@ -588,26 +588,26 @@ _0201EBEE: add r2, #0x2c str r0, [r5, #0x0] add r6, r2, #0x0 - ldr r5, _0201EC48 ; =UNK_021CEF64 + ldr r5, _0201EC48 ; =NNS_G3dGlb + 0x24C ldmia r6!, {r0-r1} stmia r5!, {r0-r1} ldr r0, [r6, #0x0] add r3, #0x20 str r0, [r5, #0x0] add r6, r3, #0x0 - ldr r5, _0201EC4C ; =UNK_021CEF70 + ldr r5, _0201EC4C ; =NNS_G3dGlb + 0x258 ldmia r6!, {r0-r1} stmia r5!, {r0-r1} ldr r0, [r6, #0x0] add r1, r2, #0x0 str r0, [r5, #0x0] - ldr r0, _0201EC50 ; =UNK_021CED64 + ldr r0, _0201EC50 ; =NNS_G3dGlb + 0x4C add r2, r3, #0x0 str r0, [sp, #0x0] add r0, r4, #0x0 mov r3, #0x0 bl G3i_LookAt_ - ldr r1, _0201EC54 ; =UNK_021CED98 + ldr r1, _0201EC54 ; =NNS_G3dGlb + 0x80 mov r0, #0xe8 ldr r2, [r1, #0x7c] bic r2, r0 @@ -617,11 +617,11 @@ _0201EC3A: pop {r3-r6, pc} nop _0201EC40: .word UNK_021C59A4 -_0201EC44: .word UNK_021CEF58 -_0201EC48: .word UNK_021CEF64 -_0201EC4C: .word UNK_021CEF70 -_0201EC50: .word UNK_021CED64 -_0201EC54: .word UNK_021CED98 +_0201EC44: .word NNS_G3dGlb + 0x240 +_0201EC48: .word NNS_G3dGlb + 0x24C +_0201EC4C: .word NNS_G3dGlb + 0x258 +_0201EC50: .word NNS_G3dGlb + 0x4C +_0201EC54: .word NNS_G3dGlb + 0x80 thumb_func_start FUN_0201EC58 FUN_0201EC58: ; 0x0201EC58 @@ -882,14 +882,14 @@ FUN_0201EE2C: ; 0x0201EE2C str r0, [sp, #0x4] mov r0, #0x0 str r0, [sp, #0x8] - ldr r0, _0201EEE4 ; =UNK_021CED20 + ldr r0, _0201EEE4 ; =NNS_G3dGlb + 0x8 str r0, [sp, #0xc] ldr r0, [r5, #0x0] ldr r1, [r5, #0x4] ldr r2, [r5, #0x8] ldr r3, [r5, #0xc] bl G3i_PerspectiveW_ - ldr r1, _0201EEE8 ; =UNK_021CED98 + ldr r1, _0201EEE8 ; =NNS_G3dGlb + 0x80 mov r0, #0x50 ldr r2, [r1, #0x7c] add r5, #0x44 @@ -939,12 +939,12 @@ _0201EE6C: lsl r0, r6, #0x1 str r0, [sp, #0x8] str r2, [sp, #0xc] - ldr r0, _0201EEE4 ; =UNK_021CED20 + ldr r0, _0201EEE4 ; =NNS_G3dGlb + 0x8 neg r2, r3 str r0, [sp, #0x10] add r0, r4, #0x0 bl G3i_OrthoW_ - ldr r1, _0201EEE8 ; =UNK_021CED98 + ldr r1, _0201EEE8 ; =NNS_G3dGlb + 0x80 mov r0, #0x50 ldr r2, [r1, #0x7c] add r5, #0x44 @@ -958,8 +958,8 @@ _0201EE6C: add sp, #0x14 pop {r3-r6, pc} nop -_0201EEE4: .word UNK_021CED20 -_0201EEE8: .word UNK_021CED98 +_0201EEE4: .word NNS_G3dGlb + 0x8 +_0201EEE8: .word NNS_G3dGlb + 0x80 _0201EEEC: .word UNK_02105BB8 thumb_func_start FUN_0201EEF0 @@ -973,7 +973,7 @@ FUN_0201EEF0: ; 0x0201EEF0 ldr r3, _0201EF24 ; =FUN_0201EE2C asr r0, r0, #0x4 lsl r2, r0, #0x2 - ldr r0, _0201EF28 ; =UNK_020FFA38 + ldr r0, _0201EF28 ; =FX_SinCosTable_ ldrsh r2, [r0, r2] str r2, [r1, #0x0] add r2, r1, #0x0 @@ -991,7 +991,7 @@ FUN_0201EEF0: ; 0x0201EEF0 bx r3 nop _0201EF24: .word FUN_0201EE2C -_0201EF28: .word UNK_020FFA38 +_0201EF28: .word FX_SinCosTable_ thumb_func_start FUN_0201EF2C FUN_0201EF2C: ; 0x0201EF2C @@ -1008,7 +1008,7 @@ FUN_0201EF2C: ; 0x0201EF2C ldrh r0, [r0, #0x0] asr r0, r0, #0x4 lsl r2, r0, #0x2 - ldr r0, _0201EF6C ; =UNK_020FFA38 + ldr r0, _0201EF6C ; =FX_SinCosTable_ ldrsh r2, [r0, r2] str r2, [r1, #0x0] add r2, r1, #0x0 @@ -1026,7 +1026,7 @@ FUN_0201EF2C: ; 0x0201EF2C bx r3 nop _0201EF68: .word FUN_0201EE2C -_0201EF6C: .word UNK_020FFA38 +_0201EF6C: .word FX_SinCosTable_ thumb_func_start FUN_0201EF70 FUN_0201EF70: ; 0x0201EF70 diff --git a/arm9/asm/unk_0201F06C.s b/arm9/asm/unk_0201F06C.s index e48364ec..03e1404e 100644 --- a/arm9/asm/unk_0201F06C.s +++ b/arm9/asm/unk_0201F06C.s @@ -1,11 +1,11 @@ .include "asm/macros.inc" .include "global.inc" - .extern UNK_020FFA38 - .extern UNK_021064C0 - .extern UNK_021064B8 - .extern UNK_021064BC - .extern UNK_021064C4 + .extern FX_SinCosTable_ + .extern NNS_GfdDefaultFuncAllocPlttVram + .extern NNS_GfdDefaultFuncAllocTexVram + .extern NNS_GfdDefaultFuncFreeTexVram + .extern NNS_GfdDefaultFuncFreePlttVram .section .rodata @@ -121,7 +121,7 @@ FUN_0201F100: ; 0x0201F100 ldr r0, [r0, #0x0] cmp r0, #0x0 beq _0201F112 - bl ErrorHandling + bl GF_AssertFail _0201F112: mov r1, #0xd4 add r0, r4, #0x0 @@ -219,7 +219,7 @@ FUN_0201F1B4: ; 0x0201F1B4 bl FUN_0201F2E4 add r4, r0, #0x0 bne _0201F1C8 - bl ErrorHandling + bl GF_AssertFail mov r0, #0x0 pop {r3-r5, pc} _0201F1C8: @@ -280,7 +280,7 @@ FUN_0201F23C: ; 0x0201F23C push {r4, lr} add r4, r0, #0x0 bne _0201F24A - bl ErrorHandling + bl GF_AssertFail mov r0, #0x0 pop {r4, pc} _0201F24A: @@ -315,7 +315,7 @@ FUN_0201F284: ; 0x0201F284 cmp r0, #0x0 bne _0201F294 bne _0201F290 - bl ErrorHandling + bl GF_AssertFail _0201F290: mov r0, #0x0 pop {r3-r5, pc} @@ -349,7 +349,7 @@ FUN_0201F2C0: ; 0x0201F2C0 push {r4, lr} add r4, r0, #0x0 bne _0201F2CA - bl ErrorHandling + bl GF_AssertFail _0201F2CA: ldrb r0, [r4, #0x3] cmp r0, #0x0 @@ -407,7 +407,7 @@ FUN_0201F318: ; 0x0201F318 sub sp, #0x24 add r5, r0, #0x0 bne _0201F324 - bl ErrorHandling + bl GF_AssertFail _0201F324: add r0, sp, #0x0 bl MTX_Identity33_ @@ -569,18 +569,18 @@ FUN_0201F454: ; 0x0201F454 add r4, r1, #0x0 add r6, r2, #0x0 add r7, r3, #0x0 - bl FUN_020B7E1C + bl NNS_G3dTexGetRequiredSize str r0, [sp, #0x8] add r0, r5, #0x0 - bl FUN_020B7E10 + bl NNS_G3dTex4x4GetRequiredSize str r0, [sp, #0x4] add r0, r5, #0x0 - bl FUN_020B7CE4 + bl NNS_G3dPlttGetRequiredSize str r0, [sp, #0x0] ldr r0, [sp, #0x8] cmp r0, #0x0 beq _0201F492 - ldr r3, _0201F4E4 ; =UNK_021064B8 + ldr r3, _0201F4E4 ; =NNS_GfdDefaultFuncAllocTexVram mov r1, #0x0 ldr r3, [r3, #0x0] add r2, r1, #0x0 @@ -588,7 +588,7 @@ FUN_0201F454: ; 0x0201F454 str r0, [r4, #0x0] cmp r0, #0x0 bne _0201F496 - bl ErrorHandling + bl GF_AssertFail b _0201F496 _0201F492: mov r0, #0x0 @@ -597,7 +597,7 @@ _0201F496: ldr r0, [sp, #0x4] cmp r0, #0x0 beq _0201F4B2 - ldr r3, _0201F4E4 ; =UNK_021064B8 + ldr r3, _0201F4E4 ; =NNS_GfdDefaultFuncAllocTexVram mov r1, #0x1 ldr r3, [r3, #0x0] mov r2, #0x0 @@ -605,7 +605,7 @@ _0201F496: str r0, [r6, #0x0] cmp r0, #0x0 bne _0201F4B6 - bl ErrorHandling + bl GF_AssertFail b _0201F4B6 _0201F4B2: mov r0, #0x0 @@ -614,7 +614,7 @@ _0201F4B6: ldr r0, [sp, #0x0] cmp r0, #0x0 beq _0201F4DA - ldr r3, _0201F4E8 ; =UNK_021064C0 + ldr r3, _0201F4E8 ; =NNS_GfdDefaultFuncAllocPlttVram mov r1, #0x2 ldrh r2, [r5, #0x20] lsl r1, r1, #0xe @@ -625,7 +625,7 @@ _0201F4B6: str r0, [r7, #0x0] cmp r0, #0x0 bne _0201F4DE - bl ErrorHandling + bl GF_AssertFail add sp, #0xc pop {r4-r7, pc} _0201F4DA: @@ -635,17 +635,17 @@ _0201F4DE: add sp, #0xc pop {r4-r7, pc} nop -_0201F4E4: .word UNK_021064B8 -_0201F4E8: .word UNK_021064C0 +_0201F4E4: .word NNS_GfdDefaultFuncAllocTexVram +_0201F4E8: .word NNS_GfdDefaultFuncAllocPlttVram thumb_func_start FUN_0201F4EC FUN_0201F4EC: ; 0x0201F4EC push {r3-r5, lr} add r5, r0, #0x0 add r4, r3, #0x0 - bl FUN_020B7CF0 + bl NNS_G3dTexReleaseTexKey add r0, r5, #0x0 - bl FUN_020B7C58 + bl NNS_G3dPlttReleasePlttKey str r0, [r4, #0x0] pop {r3-r5, pc} @@ -656,14 +656,14 @@ FUN_0201F500: ; 0x0201F500 ldr r1, [r2, #0x0] ldr r2, [r3, #0x0] add r5, r0, #0x0 - bl FUN_020B7DFC + bl NNS_G3dTexSetTexKey ldr r1, [sp, #0x10] add r0, r5, #0x0 ldr r1, [r1, #0x0] - bl FUN_020B7CDC + bl NNS_G3dPlttSetPlttKey add r0, r4, #0x0 add r1, r5, #0x0 - bl FUN_020B7790 + bl NNS_G3dBindMdlSet pop {r3-r5, pc} .balign 4 @@ -675,28 +675,28 @@ FUN_0201F524: ; 0x0201F524 add r4, r2, #0x0 cmp r0, #0x0 beq _0201F536 - ldr r1, _0201F550 ; =UNK_021064BC + ldr r1, _0201F550 ; =NNS_GfdDefaultFuncFreeTexVram ldr r1, [r1, #0x0] blx r1 _0201F536: ldr r0, [r5, #0x0] cmp r0, #0x0 beq _0201F542 - ldr r1, _0201F550 ; =UNK_021064BC + ldr r1, _0201F550 ; =NNS_GfdDefaultFuncFreeTexVram ldr r1, [r1, #0x0] blx r1 _0201F542: ldr r0, [r4, #0x0] cmp r0, #0x0 beq _0201F54E - ldr r1, _0201F554 ; =UNK_021064C4 + ldr r1, _0201F554 ; =NNS_GfdDefaultFuncFreePlttVram ldr r1, [r1, #0x0] blx r1 _0201F54E: pop {r3-r5, pc} .balign 4 -_0201F550: .word UNK_021064BC -_0201F554: .word UNK_021064C4 +_0201F550: .word NNS_GfdDefaultFuncFreeTexVram +_0201F554: .word NNS_GfdDefaultFuncFreePlttVram thumb_func_start FUN_0201F558 FUN_0201F558: ; 0x0201F558 @@ -713,22 +713,22 @@ _0201F568: mov r0, #0x0 pop {r3-r7, pc} _0201F56E: - bl FUN_020B7E1C + bl NNS_G3dTexGetRequiredSize str r0, [sp, #0x0] add r0, r4, #0x0 - bl FUN_020B7E10 + bl NNS_G3dTex4x4GetRequiredSize str r0, [sp, #0x4] add r0, r4, #0x0 - bl FUN_020B7CE4 + bl NNS_G3dPlttGetRequiredSize add r4, r0, #0x0 add r0, r5, #0x0 - bl FUN_020B7E1C + bl NNS_G3dTexGetRequiredSize add r6, r0, #0x0 add r0, r5, #0x0 - bl FUN_020B7E10 + bl NNS_G3dTex4x4GetRequiredSize add r7, r0, #0x0 add r0, r5, #0x0 - bl FUN_020B7CE4 + bl NNS_G3dPlttGetRequiredSize ldr r1, [sp, #0x0] cmp r1, r6 bne _0201F5AA @@ -780,7 +780,7 @@ FUN_0201F5D4: ; 0x0201F5D4 add r0, r5, #0x0 ldr r1, [r5, #0x7c] add r0, #0x24 - bl FUN_020B80B4 + bl NNS_G3dRenderObjInit add r0, r5, #0x0 add r0, #0xa8 ldrb r0, [r0, #0x0] @@ -882,7 +882,7 @@ FUN_0201F69C: ; 0x0201F69C add r0, r5, #0x0 ldr r1, [r5, #0x7c] add r0, #0x24 - bl FUN_020B80B4 + bl NNS_G3dRenderObjInit add r0, r4, #0x0 bl FUN_0201FBCC add r5, #0x84 @@ -962,14 +962,14 @@ FUN_0201F744: ; 0x0201F744 push {r3-r5, lr} add r5, r0, #0x0 bne _0201F74E - bl ErrorHandling + bl GF_AssertFail _0201F74E: add r0, r5, #0x0 add r0, #0xa8 ldrb r0, [r0, #0x0] cmp r0, #0x1 bne _0201F75C - bl ErrorHandling + bl GF_AssertFail _0201F75C: add r0, r5, #0x0 add r0, #0xa8 @@ -1034,7 +1034,7 @@ FUN_0201F7C8: ; 0x0201F7C8 add r5, r1, #0x0 cmp r4, #0x0 bne _0201F7D6 - bl ErrorHandling + bl GF_AssertFail _0201F7D6: ldmia r5!, {r0-r1} stmia r4!, {r0-r1} @@ -1047,7 +1047,7 @@ FUN_0201F7E0: ; 0x0201F7E0 push {r4, lr} add r4, r0, #0x0 bne _0201F7EA - bl ErrorHandling + bl GF_AssertFail _0201F7EA: add r0, r4, #0x0 pop {r4, pc} @@ -1060,7 +1060,7 @@ FUN_0201F7F0: ; 0x0201F7F0 add r5, r1, #0x0 cmp r4, #0x0 bne _0201F7FE - bl ErrorHandling + bl GF_AssertFail _0201F7FE: ldmia r5!, {r0-r1} add r4, #0xc @@ -1077,7 +1077,7 @@ FUN_0201F80C: ; 0x0201F80C add r4, r1, #0x0 cmp r5, #0x0 bne _0201F81A - bl ErrorHandling + bl GF_AssertFail _0201F81A: strb r4, [r5, #0x18] pop {r3-r5, pc} @@ -1088,7 +1088,7 @@ FUN_0201F820: ; 0x0201F820 push {r4, lr} add r4, r0, #0x0 bne _0201F82A - bl ErrorHandling + bl GF_AssertFail _0201F82A: ldrb r0, [r4, #0x18] pop {r4, pc} @@ -1101,7 +1101,7 @@ FUN_0201F830: ; 0x0201F830 add r4, r1, #0x0 cmp r5, #0x0 bne _0201F83E - bl ErrorHandling + bl GF_AssertFail _0201F83E: add r5, #0xaa strh r4, [r5, #0x0] @@ -1112,7 +1112,7 @@ FUN_0201F844: ; 0x0201F844 push {r4, lr} add r4, r0, #0x0 bne _0201F84E - bl ErrorHandling + bl GF_AssertFail _0201F84E: add r4, #0xaa ldrh r0, [r4, #0x0] @@ -1125,7 +1125,7 @@ FUN_0201F854: ; 0x0201F854 add r4, r1, #0x0 cmp r5, #0x0 bne _0201F862 - bl ErrorHandling + bl GF_AssertFail _0201F862: add r0, r5, #0x0 add r1, r4, #0x0 @@ -1139,7 +1139,7 @@ FUN_0201F86C: ; 0x0201F86C add r4, r1, #0x0 cmp r5, #0x0 bne _0201F87A - bl ErrorHandling + bl GF_AssertFail _0201F87A: add r5, #0xac str r4, [r5, #0x0] @@ -1150,7 +1150,7 @@ FUN_0201F880: ; 0x0201F880 push {r4, lr} add r4, r0, #0x0 bne _0201F88A - bl ErrorHandling + bl GF_AssertFail _0201F88A: add r4, #0xac ldr r0, [r4, #0x0] @@ -1163,7 +1163,7 @@ FUN_0201F890: ; 0x0201F890 add r4, r1, #0x0 cmp r5, #0x0 bne _0201F89E - bl ErrorHandling + bl GF_AssertFail _0201F89E: add r1, r5, #0x0 add r1, #0xaa @@ -1187,7 +1187,7 @@ FUN_0201F8C0: ; 0x0201F8C0 push {r4, lr} add r4, r0, #0x0 bne _0201F8CA - bl ErrorHandling + bl GF_AssertFail _0201F8CA: add r1, r4, #0x0 add r1, #0xaa @@ -1205,7 +1205,7 @@ FUN_0201F8E0: ; 0x0201F8E0 push {r4, lr} add r4, r0, #0x0 bne _0201F8EA - bl ErrorHandling + bl GF_AssertFail _0201F8EA: ldr r0, [r4, #0x7c] pop {r4, pc} @@ -1346,7 +1346,7 @@ _0201F9C4: ldr r0, _0201FA00 ; =0x0000FFFF cmp r1, r0 bls _0201F9EC - bl ErrorHandling + bl GF_AssertFail _0201F9EC: ldr r0, [r5, #0x14] add r4, r4, #0x1 @@ -1449,7 +1449,7 @@ _0201FA7C: ldr r0, _0201FAB8 ; =0x00001FFF cmp r1, r0 bls _0201FAA4 - bl ErrorHandling + bl GF_AssertFail _0201FAA4: ldrh r0, [r5, #0x1c] add r4, r4, #0x1 @@ -1602,7 +1602,7 @@ FUN_0201FB9C: ; 0x0201FB9C add r5, r2, #0x0 bl FUN_0201FC90 add r7, r0, #0x0 - bl FUN_020BC13C + bl NNS_G3dGetMdlSet add r4, r0, #0x0 ldrh r0, [r4, #0xe] add r0, r4, r0 @@ -1612,7 +1612,7 @@ FUN_0201FB9C: ; 0x0201FB9C cmp r5, #0x0 beq _0201FBC6 add r0, r7, #0x0 - bl FUN_020BC0FC + bl NNS_G3dGetTex str r0, [r5, #0x0] _0201FBC6: add r0, r4, #0x0 @@ -1724,7 +1724,7 @@ FUN_0201FC70: ; 0x0201FC70 sub sp, #0xc add r4, r0, #0x0 ldr r0, [r4, #0x78] - bl FUN_020B772C + bl NNS_G3dReleaseMdlSet add r4, #0x80 ldr r0, [r4, #0x0] add r1, sp, #0x4 @@ -1765,12 +1765,12 @@ FUN_0201FCB0: ; 0x0201FCB0 push {r3-r5, lr} add r5, r0, #0x0 bne _0201FCBA - bl ErrorHandling + bl GF_AssertFail _0201FCBA: ldr r0, [r5, #0x4] cmp r0, #0x0 bne _0201FCC4 - bl ErrorHandling + bl GF_AssertFail _0201FCC4: mov r1, #0x49 ldr r0, [r5, #0x8] @@ -1778,7 +1778,7 @@ _0201FCC4: bl AllocFromHeap add r4, r0, #0x0 bne _0201FCD6 - bl ErrorHandling + bl GF_AssertFail _0201FCD6: add r0, r4, #0x0 bl FUN_0201FE44 @@ -1791,7 +1791,7 @@ _0201FCD6: str r0, [r4, #0x0] cmp r0, #0x0 bne _0201FCF4 - bl ErrorHandling + bl GF_AssertFail _0201FCF4: ldr r0, [r5, #0x0] str r0, [r4, #0x4] @@ -1802,7 +1802,7 @@ _0201FCF4: str r0, [r4, #0x8] cmp r0, #0x0 bne _0201FD0C - bl ErrorHandling + bl GF_AssertFail _0201FD0C: add r0, r4, #0x0 bl FUN_0202083C @@ -1828,7 +1828,7 @@ _0201FD0C: ldr r0, [r4, r1] add r1, r1, #0x4 add r1, r4, r1 - bl thunk_FUN_020afda0_2 + bl NNS_G2dGetUnpackedAnimBank mov r0, #0x12 mov r1, #0x1 lsl r0, r0, #0x4 @@ -1927,7 +1927,7 @@ FUN_0201FDEC: ; 0x0201FDEC push {r3-r7, lr} add r5, r0, #0x0 bne _0201FDF6 - bl ErrorHandling + bl GF_AssertFail _0201FDF6: mov r0, #0x12 lsl r0, r0, #0x4 @@ -2002,10 +2002,10 @@ FUN_0201FE6C: ; 0x0201FE6C bl memset add r0, r4, #0x0 add r0, #0xb4 - bl FUN_020B1A24 + bl NNS_G2dInitImageProxy add r0, r4, #0x0 add r0, #0xd8 - bl FUN_020B19DC + bl NNS_G2dInitImagePaletteProxy mov r0, #0x0 str r0, [r4, #0x30] pop {r4, pc} @@ -2072,7 +2072,7 @@ _0201FEA6: add r1, r4, #0x0 add r1, #0x26 ldrb r1, [r1, #0x0] - bl FUN_020B502C + bl NNS_G2dSetRndCoreAffineOverwriteMode add r0, r4, #0x0 add r0, #0x27 ldrb r2, [r0, #0x0] @@ -2084,7 +2084,7 @@ _0201FEA6: mov r3, #0x2 and r1, r2 and r2, r3 - bl FUN_020B4F38 + bl NNS_G2dSetRndCoreFlipMode add r0, r4, #0x0 mov r2, #0x1 add r0, #0x34 @@ -2193,13 +2193,13 @@ _0201FFE4: ldr r1, [r1, #0x0] add r0, #0xb4 add r4, #0x40 - bl FUN_020B1A14 + bl NNS_G2dGetImageLocation mov r1, #0x0 mvn r1, r1 cmp r0, r1 beq _0202000E ldr r0, [r4, #0x5c] - bl FUN_020B4358 + bl NNS_G2dFreeCellTransferStateHandle _0202000E: add r0, r5, #0x0 add r0, #0xec @@ -2296,11 +2296,11 @@ FUN_020200A0: ; 0x020200A0 add r4, r1, #0x0 cmp r5, #0x0 bne _020200AE - bl ErrorHandling + bl GF_AssertFail _020200AE: cmp r4, #0x2 blt _020200B6 - bl ErrorHandling + bl GF_AssertFail _020200B6: add r5, #0x34 strb r4, [r5, #0x0] @@ -2313,11 +2313,11 @@ FUN_020200BC: ; 0x020200BC add r4, r1, #0x0 cmp r5, #0x0 bne _020200CA - bl ErrorHandling + bl GF_AssertFail _020200CA: cmp r4, #0x2 blt _020200D2 - bl ErrorHandling + bl GF_AssertFail _020200D2: add r5, #0x35 strb r4, [r5, #0x0] @@ -2330,7 +2330,7 @@ FUN_020200D8: ; 0x020200D8 add r4, r1, #0x0 cmp r5, #0x0 bne _020200E6 - bl ErrorHandling + bl GF_AssertFail _020200E6: str r4, [r5, #0x38] pop {r3-r5, pc} @@ -2343,7 +2343,7 @@ FUN_020200EC: ; 0x020200EC add r4, r1, #0x0 cmp r5, #0x0 bne _020200FA - bl ErrorHandling + bl GF_AssertFail _020200FA: add r5, #0x26 strb r4, [r5, #0x0] @@ -2356,7 +2356,7 @@ FUN_02020100: ; 0x02020100 add r4, r1, #0x0 cmp r5, #0x0 bne _0202010E - bl ErrorHandling + bl GF_AssertFail _0202010E: add r0, r5, #0x0 add r0, #0x27 @@ -2409,11 +2409,11 @@ _0202014A: lsl r1, r1, #0x10 ldr r0, [r4, #0x4] lsr r1, r1, #0x10 - bl FUN_020AFC04 + bl NNS_G2dGetAnimSequenceByIdx add r1, r0, #0x0 add r0, r4, #0x0 add r0, #0x8 - bl FUN_020B1EE4 + bl NNS_G2dSetCellAnimationSequence mov r0, #0x1 str r0, [r4, #0x10] pop {r4, pc} @@ -2422,11 +2422,11 @@ _02020168: add r4, #0x40 ldr r0, [r4, #0x6c] add r1, r3, #0x0 - bl FUN_020AFC04 + bl NNS_G2dGetAnimSequenceByIdx add r1, r0, #0x0 add r0, r4, #0x0 add r0, #0x8 - bl FUN_020B242C + bl NNS_G2dSetAnimSequenceToMCAnimation mov r0, #0x1 str r0, [r4, #0x10] pop {r4, pc} @@ -2459,7 +2459,7 @@ _020201A8: add r5, #0x40 add r0, r5, #0x0 add r0, #0x8 - bl FUN_020B0448 + bl NNS_G2dResetAnimCtrlState mov r0, #0x1 str r0, [r5, #0x10] add r0, r4, #0x0 @@ -2471,7 +2471,7 @@ _020201C2: add r5, #0x40 add r0, r5, #0x0 add r0, #0x8 - bl FUN_020B0448 + bl NNS_G2dResetAnimCtrlState mov r0, #0x1 str r0, [r5, #0x10] add r0, r4, #0x0 @@ -2499,12 +2499,12 @@ FUN_020201E4: ; 0x020201E4 _020201F4: add r0, #0x40 add r0, #0x8 - bl FUN_020B1EC4 + bl NNS_G2dTickCellAnimation pop {r3, pc} _020201FE: add r0, #0x40 add r0, #0x8 - bl FUN_020B224C + bl NNS_G2dTickMCAnimation pop {r3, pc} thumb_func_start FUN_02020208 @@ -2520,22 +2520,22 @@ FUN_02020208: ; 0x02020208 _02020218: add r0, #0x40 add r0, #0x8 - bl FUN_020B1EA4 + bl NNS_G2dSetCellAnimationCurrentFrame pop {r3, pc} _02020222: add r0, #0x40 add r0, #0x8 - bl FUN_020B2194 + bl NNS_G2dSetMCAnimationCurrentFrame pop {r3, pc} thumb_func_start FUN_0202022C FUN_0202022C: ; 0x0202022C - ldr r3, _02020234 ; =FUN_020B04FC + ldr r3, _02020234 ; =NNS_G2dGetAnimCtrlCurrentFrame add r0, #0x40 add r0, #0x8 bx r3 .balign 4 -_02020234: .word FUN_020B04FC +_02020234: .word NNS_G2dGetAnimCtrlCurrentFrame thumb_func_start FUN_02020238 FUN_02020238: ; 0x02020238 @@ -2558,7 +2558,7 @@ FUN_02020248: ; 0x02020248 add r4, r1, #0x0 cmp r5, #0x0 bne _02020256 - bl ErrorHandling + bl GF_AssertFail _02020256: add r0, r5, #0x0 add r0, #0x29 @@ -2613,7 +2613,7 @@ FUN_020202A8: ; 0x020202A8 add r4, r1, #0x0 cmp r5, #0x0 bne _020202B6 - bl ErrorHandling + bl GF_AssertFail _020202B6: add r0, r5, #0x0 add r0, #0x2a @@ -2659,7 +2659,7 @@ FUN_02020300: ; 0x02020300 push {r4, lr} add r4, r0, #0x0 bne _0202030A - bl ErrorHandling + bl GF_AssertFail _0202030A: add r4, #0x2a ldrb r0, [r4, #0x0] @@ -2751,7 +2751,7 @@ FUN_02020388: ; 0x02020388 push {r4, lr} add r4, r0, #0x0 bne _02020392 - bl ErrorHandling + bl GF_AssertFail _02020392: ldr r0, [r4, #0x50] pop {r4, pc} @@ -2764,7 +2764,7 @@ FUN_02020398: ; 0x02020398 add r5, r1, #0x0 cmp r4, #0x0 bne _020203A6 - bl ErrorHandling + bl GF_AssertFail _020203A6: str r5, [r4, #0x30] cmp r5, #0x0 @@ -2969,12 +2969,12 @@ FUN_0202050C: ; 0x0202050C add r4, #0x40 ldr r0, [r4, #0x4] mov r1, #0x0 - bl FUN_020AFC04 + bl NNS_G2dGetAnimSequenceByIdx add r4, #0x8 add r1, r0, #0x0 ldr r2, [r5, #0x40] add r0, r4, #0x0 - bl FUN_020B1F80 + bl NNS_G2dInitCellAnimation pop {r3-r5, pc} .balign 4 @@ -2986,22 +2986,22 @@ FUN_0202052C: ; 0x0202052C add r4, r6, #0x0 add r4, #0x40 add r5, r0, #0x0 - bl FUN_020B43A4 + bl NNS_G2dGetNewCellTransferStateHandle str r0, [r4, #0x5c] ldr r0, [r4, #0x4] mov r1, #0x0 ldr r5, [r5, #0x4] - bl FUN_020AFC04 + bl NNS_G2dGetAnimSequenceByIdx str r0, [sp, #0x18] add r0, r6, #0x0 add r0, #0xb4 mov r1, #0x1 - bl FUN_020B1A14 + bl NNS_G2dGetImageLocation add r7, r0, #0x0 add r0, r6, #0x0 add r0, #0xb4 mov r1, #0x2 - bl FUN_020B1A14 + bl NNS_G2dGetImageLocation mov r1, #0x0 mvn r1, r1 str r1, [sp, #0x0] @@ -3018,7 +3018,7 @@ FUN_0202052C: ; 0x0202052C ldr r2, [r6, #0x40] ldr r3, [r4, #0x5c] add r0, #0x8 - bl FUN_020B1EFC + bl NNS_G2dInitCellAnimationVramTransfered add sp, #0x1c pop {r4-r7, pc} @@ -3032,10 +3032,10 @@ FUN_02020588: ; 0x02020588 ldr r0, [r4, #0x6c] add r7, r1, #0x0 mov r1, #0x0 - bl FUN_020AFC04 + bl NNS_G2dGetAnimSequenceByIdx str r0, [sp, #0xc] ldr r0, [r4, #0x68] - bl FUN_020B23D8 + bl NNS_G2dGetMCBankNumNodesRequired add r6, r0, #0x0 mov r1, #0x28 add r0, r7, #0x0 @@ -3058,11 +3058,11 @@ FUN_02020588: ; 0x02020588 ldr r1, [r4, #0x70] ldr r2, [r4, #0x74] add r0, #0x8 - bl FUN_020B20C8 + bl NNS_G2dInitMCAnimation add r4, #0x8 ldr r1, [sp, #0xc] add r0, r4, #0x0 - bl FUN_020B242C + bl NNS_G2dSetAnimSequenceToMCAnimation add sp, #0x10 pop {r3-r7, pc} .balign 4 @@ -3087,7 +3087,7 @@ _02020600: _02020602: cmp r4, #0x0 beq _02020612 - bl FUN_020B19C4 + bl NNS_G2dGetImagePaletteLocation add r1, r4, #0x0 bl _u32_div_f pop {r4, pc} @@ -3115,19 +3115,19 @@ FUN_02020618: ; 0x02020618 ldr r0, [r5, r0] add r1, #0xb4 add r2, #0xd8 - bl thunk_FUN_020b5040 + bl NNS_G2dSetRendererImageProxy mov r0, #0x45 lsl r0, r0, #0x2 ldr r0, [r5, r0] - bl FUN_020B326C - bl FUN_020B2B58 + bl NNS_G2dBeginRendering + bl NNS_G2dPushMtx add r1, r4, #0x0 mov r0, #0x45 add r1, #0x26 lsl r0, r0, #0x2 ldrb r1, [r1, #0x0] ldr r0, [r5, r0] - bl FUN_020B502C + bl NNS_G2dSetRndCoreAffineOverwriteMode add r0, r4, #0x0 add r0, #0x26 ldrb r0, [r0, #0x0] @@ -3143,7 +3143,7 @@ FUN_02020618: ; 0x02020618 mov r3, #0x2 and r1, r2 and r2, r3 - bl FUN_020B4F38 + bl NNS_G2dSetRndCoreFlipMode b _0202068E _02020680: mov r0, #0x45 @@ -3151,12 +3151,12 @@ _02020680: mov r1, #0x0 ldr r0, [r5, r0] add r2, r1, #0x0 - bl FUN_020B4F38 + bl NNS_G2dSetRndCoreFlipMode _0202068E: ldr r0, [sp, #0x0] ldr r1, [sp, #0x4] ldr r2, [sp, #0x8] - bl FUN_020B2A08 + bl NNS_G2dTranslate add r0, r4, #0x0 add r0, #0x26 ldrb r0, [r0, #0x0] @@ -3165,13 +3165,13 @@ _0202068E: ldr r0, [r4, #0xc] ldr r1, [r4, #0x10] ldr r2, [r4, #0x14] - bl FUN_020B2A08 + bl NNS_G2dTranslate ldr r0, [r4, #0x18] ldr r1, [r4, #0x1c] ldr r2, [r4, #0x20] - bl FUN_020B28B4 + bl NNS_G2dScale ldrh r0, [r4, #0x24] - ldr r2, _02020770 ; =UNK_020FFA38 + ldr r2, _02020770 ; =FX_SinCosTable_ asr r0, r0, #0x4 lsl r1, r0, #0x1 lsl r0, r1, #0x1 @@ -3179,14 +3179,14 @@ _0202068E: lsl r1, r1, #0x1 ldrsh r0, [r2, r0] ldrsh r1, [r2, r1] - bl FUN_020B2794 + bl NNS_G2dRotZ ldr r0, [r4, #0xc] ldr r1, [r4, #0x10] ldr r2, [r4, #0x14] neg r0, r0 neg r1, r1 neg r2, r2 - bl FUN_020B2A08 + bl NNS_G2dTranslate _020206DC: add r0, r4, #0x0 add r0, #0x28 @@ -3249,20 +3249,20 @@ _0202074E: add r4, #0x40 add r4, #0x8 add r0, r4, #0x0 - bl FUN_020B317C + bl NNS_G2dDrawCellAnimation b _02020764 _0202075A: add r4, #0x40 add r4, #0x8 add r0, r4, #0x0 - bl FUN_020B2D9C + bl NNS_G2dDrawMultiCellAnimation _02020764: - bl FUN_020B2B08 - bl FUN_020B31F0 + bl NNS_G2dPopMtx + bl NNS_G2dEndRendering add sp, #0xc pop {r3-r6, pc} .balign 4 -_02020770: .word UNK_020FFA38 +_02020770: .word FX_SinCosTable_ thumb_func_start FUN_02020774 FUN_02020774: ; 0x02020774 diff --git a/arm9/asm/unk_02020C44.s b/arm9/asm/unk_02020C44.s index c1870c5a..235543ee 100644 --- a/arm9/asm/unk_02020C44.s +++ b/arm9/asm/unk_02020C44.s @@ -1,10 +1,10 @@ .include "asm/macros.inc" .include "global.inc" - .extern UNK_021064B8 - .extern UNK_021064C0 - .extern UNK_021064C4 - .extern UNK_021064BC + .extern NNS_GfdDefaultFuncAllocTexVram + .extern NNS_GfdDefaultFuncAllocPlttVram + .extern NNS_GfdDefaultFuncFreePlttVram + .extern NNS_GfdDefaultFuncFreeTexVram .text @@ -18,7 +18,7 @@ FUN_02020C44: ; 0x02020C44 bl AllocFromHeap add r6, r0, #0x0 bne _02020C5A - bl ErrorHandling + bl GF_AssertFail _02020C5A: add r0, r4, #0x0 lsl r1, r7, #0x3 @@ -26,7 +26,7 @@ _02020C5A: str r0, [r6, #0x0] cmp r0, #0x0 bne _02020C6C - bl ErrorHandling + bl GF_AssertFail _02020C6C: mov r4, #0x0 cmp r7, #0x0 @@ -53,7 +53,7 @@ FUN_02020C90: ; 0x02020C90 push {r4, lr} add r4, r0, #0x0 bne _02020C9A - bl ErrorHandling + bl GF_AssertFail _02020C9A: add r0, r4, #0x0 bl FUN_02020D9C @@ -71,7 +71,7 @@ FUN_02020CB0: ; 0x02020CB0 add r4, r1, #0x0 cmp r5, #0x0 bne _02020CBE - bl ErrorHandling + bl GF_AssertFail _02020CBE: add r0, r5, #0x0 add r1, r4, #0x0 @@ -93,20 +93,20 @@ FUN_02020CD4: ; 0x02020CD4 add r6, r2, #0x0 cmp r5, #0x0 bne _02020CE4 - bl ErrorHandling + bl GF_AssertFail _02020CE4: add r0, r5, #0x0 bl FUN_02020E48 add r4, r0, #0x0 bne _02020CF2 - bl ErrorHandling + bl GF_AssertFail _02020CF2: add r0, r5, #0x0 add r1, r6, #0x0 bl FUN_02020CB0 cmp r0, #0x1 beq _02020D02 - bl ErrorHandling + bl GF_AssertFail _02020D02: str r7, [r4, #0x4] str r6, [r4, #0x0] @@ -125,24 +125,24 @@ FUN_02020D10: ; 0x02020D10 str r3, [sp, #0x0] cmp r5, #0x0 bne _02020D22 - bl ErrorHandling + bl GF_AssertFail _02020D22: cmp r6, #0x0 bne _02020D2A - bl ErrorHandling + bl GF_AssertFail _02020D2A: add r0, r5, #0x0 bl FUN_02020E48 add r4, r0, #0x0 bne _02020D38 - bl ErrorHandling + bl GF_AssertFail _02020D38: add r0, r5, #0x0 add r1, r7, #0x0 bl FUN_02020CB0 cmp r0, #0x1 beq _02020D48 - bl ErrorHandling + bl GF_AssertFail _02020D48: ldr r0, [sp, #0x0] add r1, r6, #0x0 @@ -150,7 +150,7 @@ _02020D48: str r0, [r4, #0x4] cmp r0, #0x0 bne _02020D5A - bl ErrorHandling + bl GF_AssertFail _02020D5A: str r7, [r4, #0x0] ldr r0, [r5, #0x8] @@ -167,11 +167,11 @@ FUN_02020D68: ; 0x02020D68 add r4, r1, #0x0 cmp r5, #0x0 bne _02020D76 - bl ErrorHandling + bl GF_AssertFail _02020D76: cmp r4, #0x0 bne _02020D7E - bl ErrorHandling + bl GF_AssertFail _02020D7E: ldr r0, [r4, #0x4] cmp r0, #0x0 @@ -194,12 +194,12 @@ FUN_02020D9C: ; 0x02020D9C push {r3-r7, lr} add r5, r0, #0x0 bne _02020DA6 - bl ErrorHandling + bl GF_AssertFail _02020DA6: ldr r0, [r5, #0x0] cmp r0, #0x0 bne _02020DB0 - bl ErrorHandling + bl GF_AssertFail _02020DB0: ldr r0, [r5, #0x4] mov r6, #0x0 @@ -231,7 +231,7 @@ FUN_02020DD8: ; 0x02020DD8 add r4, r1, #0x0 cmp r5, #0x0 bne _02020DE6 - bl ErrorHandling + bl GF_AssertFail _02020DE6: ldr r6, [r5, #0x4] mov r1, #0x0 @@ -261,7 +261,7 @@ FUN_02020E0C: ; 0x02020E0C push {r4, lr} add r4, r0, #0x0 bne _02020E16 - bl ErrorHandling + bl GF_AssertFail _02020E16: ldr r0, [r4, #0x4] pop {r4, pc} @@ -274,7 +274,7 @@ FUN_02020E1C: ; 0x02020E1C add r4, r1, #0x0 cmp r5, #0x0 bne _02020E2A - bl ErrorHandling + bl GF_AssertFail _02020E2A: ldr r0, [r5, #0x4] cmp r0, #0x0 @@ -289,7 +289,7 @@ FUN_02020E38: ; 0x02020E38 push {r4, lr} add r4, r0, #0x0 bne _02020E42 - bl ErrorHandling + bl GF_AssertFail _02020E42: ldr r0, [r4, #0x0] pop {r4, pc} @@ -300,7 +300,7 @@ FUN_02020E48: ; 0x02020E48 push {r3-r5, lr} add r4, r0, #0x0 bne _02020E52 - bl ErrorHandling + bl GF_AssertFail _02020E52: ldr r5, [r4, #0x4] mov r2, #0x0 @@ -330,7 +330,7 @@ FUN_02020E78: ; 0x02020E78 push {r4, lr} add r4, r0, #0x0 bne _02020E82 - bl ErrorHandling + bl GF_AssertFail _02020E82: mov r0, #0x0 mvn r0, r0 @@ -380,7 +380,7 @@ FUN_02020ED4: ; 0x02020ED4 push {r4, lr} add r4, r0, #0x0 bne _02020EDE - bl ErrorHandling + bl GF_AssertFail _02020EDE: add r0, r4, #0x0 bl FUN_02021010 @@ -399,7 +399,7 @@ FUN_02020EF8: ; 0x02020EF8 add r4, r1, #0x0 cmp r5, #0x0 bne _02020F06 - bl ErrorHandling + bl GF_AssertFail _02020F06: ldr r0, [r5, #0x0] add r1, r4, #0x0 @@ -415,7 +415,7 @@ FUN_02020F10: ; 0x02020F10 str r2, [sp, #0x0] cmp r5, #0x0 bne _02020F22 - bl ErrorHandling + bl GF_AssertFail _02020F22: add r0, r5, #0x0 bl FUN_020211DC @@ -462,11 +462,11 @@ FUN_02020F6C: ; 0x02020F6C add r4, r1, #0x0 cmp r5, #0x0 bne _02020F7A - bl ErrorHandling + bl GF_AssertFail _02020F7A: cmp r4, #0x0 bne _02020F82 - bl ErrorHandling + bl GF_AssertFail _02020F82: ldrh r0, [r4, #0x16] cmp r0, #0x1 @@ -488,39 +488,39 @@ _02020FA4: ldr r0, [r4, #0x4] cmp r0, #0x0 beq _02020FB8 - ldr r1, _02020FE8 ; =UNK_021064BC + ldr r1, _02020FE8 ; =NNS_GfdDefaultFuncFreeTexVram ldr r1, [r1, #0x0] blx r1 cmp r0, #0x0 beq _02020FB8 - bl ErrorHandling + bl GF_AssertFail _02020FB8: ldr r0, [r4, #0x8] cmp r0, #0x0 beq _02020FCC - ldr r1, _02020FE8 ; =UNK_021064BC + ldr r1, _02020FE8 ; =NNS_GfdDefaultFuncFreeTexVram ldr r1, [r1, #0x0] blx r1 cmp r0, #0x0 beq _02020FCC - bl ErrorHandling + bl GF_AssertFail _02020FCC: ldr r0, [r4, #0xc] cmp r0, #0x0 beq _02020FE0 - ldr r1, _02020FEC ; =UNK_021064C4 + ldr r1, _02020FEC ; =NNS_GfdDefaultFuncFreePlttVram ldr r1, [r1, #0x0] blx r1 cmp r0, #0x0 beq _02020FE0 - bl ErrorHandling + bl GF_AssertFail _02020FE0: add r0, r4, #0x0 bl FUN_0202120C pop {r3-r5, pc} .balign 4 -_02020FE8: .word UNK_021064BC -_02020FEC: .word UNK_021064C4 +_02020FE8: .word NNS_GfdDefaultFuncFreeTexVram +_02020FEC: .word NNS_GfdDefaultFuncFreePlttVram thumb_func_start FUN_02020FF0 FUN_02020FF0: ; 0x02020FF0 @@ -529,7 +529,7 @@ FUN_02020FF0: ; 0x02020FF0 add r4, r1, #0x0 cmp r5, #0x0 bne _02020FFE - bl ErrorHandling + bl GF_AssertFail _02020FFE: add r0, r5, #0x0 add r1, r4, #0x0 @@ -544,12 +544,12 @@ FUN_02021010: ; 0x02021010 push {r4-r6, lr} add r5, r0, #0x0 bne _0202101A - bl ErrorHandling + bl GF_AssertFail _0202101A: ldr r0, [r5, #0x4] cmp r0, #0x0 bne _02021024 - bl ErrorHandling + bl GF_AssertFail _02021024: ldr r0, [r5, #0x0] mov r6, #0x0 @@ -583,7 +583,7 @@ FUN_02021050: ; 0x02021050 add r7, r1, #0x0 cmp r6, #0x0 bne _0202105E - bl ErrorHandling + bl GF_AssertFail _0202105E: ldr r0, [r6, #0x0] mov r4, #0x0 @@ -622,7 +622,7 @@ FUN_02021098: ; 0x02021098 push {r4, lr} add r4, r0, #0x0 bne _020210A2 - bl ErrorHandling + bl GF_AssertFail _020210A2: ldr r0, [r4, #0x0] bl FUN_02020E38 @@ -634,7 +634,7 @@ FUN_020210AC: ; 0x020210AC push {r4, lr} add r4, r0, #0x0 bne _020210B6 - bl ErrorHandling + bl GF_AssertFail _020210B6: add r0, r4, #0x0 bl FUN_02021220 @@ -646,17 +646,17 @@ FUN_020210C0: ; 0x020210C0 push {r4, lr} add r4, r0, #0x0 bne _020210CA - bl ErrorHandling + bl GF_AssertFail _020210CA: ldrh r0, [r4, #0x14] cmp r0, #0x0 beq _020210D4 - bl ErrorHandling + bl GF_AssertFail _020210D4: ldr r0, [r4, #0xc] cmp r0, #0x0 bne _020210E0 - bl ErrorHandling + bl GF_AssertFail pop {r4, pc} _020210E0: add r0, r4, #0x0 @@ -673,7 +673,7 @@ FUN_020210F0: ; 0x020210F0 add r4, r1, #0x0 cmp r5, #0x0 bne _020210FE - bl ErrorHandling + bl GF_AssertFail _020210FE: add r0, r5, #0x0 add r1, r4, #0x0 @@ -686,18 +686,18 @@ FUN_0202110C: ; 0x0202110C push {r4, lr} add r4, r0, #0x0 bne _02021116 - bl ErrorHandling + bl GF_AssertFail _02021116: ldrh r0, [r4, #0x16] cmp r0, #0x0 bne _02021122 - bl ErrorHandling + bl GF_AssertFail pop {r4, pc} _02021122: ldrh r0, [r4, #0x14] cmp r0, #0x0 beq _0202112E - bl ErrorHandling + bl GF_AssertFail pop {r4, pc} _0202112E: add r0, r4, #0x0 @@ -724,7 +724,7 @@ FUN_02021158: ; 0x02021158 add r4, r1, #0x0 cmp r5, #0x0 bne _02021166 - bl ErrorHandling + bl GF_AssertFail _02021166: add r0, r5, #0x0 add r1, r4, #0x0 @@ -737,17 +737,17 @@ FUN_02021174: ; 0x02021174 push {r4, lr} add r4, r0, #0x0 bne _0202117E - bl ErrorHandling + bl GF_AssertFail _0202117E: ldrh r0, [r4, #0x14] cmp r0, #0x0 beq _02021188 - bl ErrorHandling + bl GF_AssertFail _02021188: ldr r0, [r4, #0xc] cmp r0, #0x0 beq _02021194 - bl ErrorHandling + bl GF_AssertFail pop {r4, pc} _02021194: add r0, r4, #0x0 @@ -766,7 +766,7 @@ FUN_020211AC: ; 0x020211AC push {r4, lr} add r4, r0, #0x0 bne _020211B6 - bl ErrorHandling + bl GF_AssertFail _020211B6: ldr r0, [r4, #0x4] pop {r4, pc} @@ -777,7 +777,7 @@ FUN_020211BC: ; 0x020211BC push {r4, lr} add r4, r0, #0x0 bne _020211C6 - bl ErrorHandling + bl GF_AssertFail _020211C6: ldr r0, [r4, #0x8] pop {r4, pc} @@ -788,7 +788,7 @@ FUN_020211CC: ; 0x020211CC push {r4, lr} add r4, r0, #0x0 bne _020211D6 - bl ErrorHandling + bl GF_AssertFail _020211D6: ldr r0, [r4, #0xc] pop {r4, pc} @@ -842,7 +842,7 @@ FUN_02021220: ; 0x02021220 push {r3, lr} ldr r0, [r0, #0x0] bl FUN_02020E0C - bl FUN_020BC0FC + bl NNS_G3dGetTex pop {r3, pc} .balign 4 @@ -858,7 +858,7 @@ FUN_02021230: ; 0x02021230 _02021240: ldr r0, [r0, #0x10] _02021242: - bl FUN_020BC0FC + bl NNS_G3dGetTex pop {r3, pc} thumb_func_start FUN_02021248 @@ -869,17 +869,17 @@ FUN_02021248: ; 0x02021248 str r1, [sp, #0x0] str r2, [sp, #0x4] str r3, [sp, #0x8] - bl FUN_020B7E1C + bl NNS_G3dTexGetRequiredSize add r7, r0, #0x0 add r0, r5, #0x0 - bl FUN_020B7E10 + bl NNS_G3dTex4x4GetRequiredSize add r6, r0, #0x0 add r0, r5, #0x0 - bl FUN_020B7CE4 + bl NNS_G3dPlttGetRequiredSize add r4, r0, #0x0 cmp r7, #0x0 beq _0202127E - ldr r3, _020212B0 ; =UNK_021064B8 + ldr r3, _020212B0 ; =NNS_GfdDefaultFuncAllocTexVram mov r1, #0x0 ldr r3, [r3, #0x0] add r0, r7, #0x0 @@ -890,7 +890,7 @@ FUN_02021248: ; 0x02021248 _0202127E: cmp r6, #0x0 beq _02021292 - ldr r3, _020212B0 ; =UNK_021064B8 + ldr r3, _020212B0 ; =NNS_GfdDefaultFuncAllocTexVram add r0, r6, #0x0 ldr r3, [r3, #0x0] mov r1, #0x1 @@ -901,7 +901,7 @@ _0202127E: _02021292: cmp r4, #0x0 beq _020212AC - ldr r3, _020212B4 ; =UNK_021064C0 + ldr r3, _020212B4 ; =NNS_GfdDefaultFuncAllocPlttVram mov r1, #0x2 ldrh r2, [r5, #0x20] lsl r1, r1, #0xe @@ -916,8 +916,8 @@ _020212AC: add sp, #0xc pop {r4-r7, pc} .balign 4 -_020212B0: .word UNK_021064B8 -_020212B4: .word UNK_021064C0 +_020212B0: .word NNS_GfdDefaultFuncAllocTexVram +_020212B4: .word NNS_GfdDefaultFuncAllocPlttVram thumb_func_start FUN_020212B8 FUN_020212B8: ; 0x020212B8 @@ -933,10 +933,10 @@ FUN_020212B8: ; 0x020212B8 bl DC_FlushRange add r0, r4, #0x0 mov r1, #0x1 - bl FUN_020B7D28 + bl NNS_G3dTexLoad add r0, r4, #0x0 mov r1, #0x1 - bl FUN_020B7C78 + bl NNS_G3dPlttLoad pop {r4, pc} .balign 4 @@ -945,10 +945,10 @@ FUN_020212E4: ; 0x020212E4 push {r3-r5, lr} add r5, r0, #0x0 add r4, r3, #0x0 - bl FUN_020B7DFC + bl NNS_G3dTexSetTexKey add r0, r5, #0x0 add r1, r4, #0x0 - bl FUN_020B7CDC + bl NNS_G3dPlttSetPlttKey pop {r3-r5, pc} thumb_func_start FUN_020212F8 @@ -958,9 +958,9 @@ FUN_020212F8: ; 0x020212F8 add r4, r0, #0x0 add r1, sp, #0x4 add r2, sp, #0x0 - bl FUN_020B7CF0 + bl NNS_G3dTexReleaseTexKey add r0, r4, #0x0 - bl FUN_020B7C58 + bl NNS_G3dPlttReleasePlttKey add sp, #0x8 pop {r4, pc} @@ -986,10 +986,10 @@ FUN_02021310: ; 0x02021310 FUN_02021334: ; 0x02021334 push {r3-r5, lr} add r5, r0, #0x0 - bl FUN_020BC0FC + bl NNS_G3dGetTex add r4, r0, #0x0 bne _02021344 - bl ErrorHandling + bl GF_AssertFail _02021344: ldr r0, [r4, #0x14] add r0, r4, r0 diff --git a/arm9/asm/unk_0202134C.s b/arm9/asm/unk_0202134C.s index 30aa1d51..b45f4e91 100644 --- a/arm9/asm/unk_0202134C.s +++ b/arm9/asm/unk_0202134C.s @@ -8,7 +8,7 @@ FUN_0202134C: ; 0x0202134C push {r3-r5, lr} add r5, r0, #0x0 add r4, r1, #0x0 - bl FUN_020B33A0 + bl NNS_G2dInitRenderer add r5, #0x80 str r4, [r5, #0x0] pop {r3-r5, pc} @@ -20,7 +20,7 @@ FUN_0202135C: ; 0x0202135C add r4, r1, #0x0 add r6, r2, #0x0 add r7, r3, #0x0 - bl FUN_020B3334 + bl NNS_G2dInitRenderSurface add r2, r5, #0x0 ldmia r4!, {r0-r1} stmia r2!, {r0-r1} @@ -36,7 +36,7 @@ FUN_0202135C: ; 0x0202135C cmp r0, #0x0 beq _0202138C add r1, r5, #0x0 - bl FUN_020B3390 + bl NNS_G2dAddRendererTargetSurface _0202138C: pop {r3-r7, pc} .balign 4 diff --git a/arm9/asm/unk_02021590.s b/arm9/asm/unk_02021590.s index 67d46c65..ee27fc88 100644 --- a/arm9/asm/unk_02021590.s +++ b/arm9/asm/unk_02021590.s @@ -108,7 +108,7 @@ _02021638: ldr r0, [r5, #0x60] cmp r0, #0x0 bne _02021642 - bl ErrorHandling + bl GF_AssertFail _02021642: ldr r0, [sp, #0x18] ldr r1, [r5, #0x64] @@ -135,7 +135,7 @@ _02021660: cmp r0, #0x2 bls _02021678 _02021674: - bl ErrorHandling + bl GF_AssertFail _02021678: add r0, r5, #0x0 add r0, #0x6a diff --git a/arm9/asm/unk_02022318.s b/arm9/asm/unk_02022318.s index cf87cdb9..9564742c 100644 --- a/arm9/asm/unk_02022318.s +++ b/arm9/asm/unk_02022318.s @@ -15,7 +15,7 @@ FUN_02022318: ; 0x02022318 bl AllocFromHeap add r4, r0, #0x0 str r6, [r4, #0x0] - bl FUN_020BB7F4 + bl NNS_G3dInit bl G3X_InitMtxStack mov r1, #0x2 ldr r0, _020223B8 ; =0x04000540 @@ -23,7 +23,7 @@ FUN_02022318: ; 0x02022318 str r1, [r0, #0x0] bne _02022364 lsl r0, r5, #0x7 - bl FUN_020AFA28 + bl NNS_GfdGetLnkTexVramManagerWorkSize add r6, r0, #0x0 ldr r0, [r4, #0x0] add r1, r6, #0x0 @@ -35,20 +35,20 @@ FUN_02022318: ; 0x02022318 lsl r0, r5, #0x11 mov r1, #0x0 add r3, r6, #0x0 - bl FUN_020AF9C4 + bl NNS_GfdInitLnkTexVramManager b _0202236E _02022364: lsl r0, r5, #0x10 lsr r0, r0, #0x10 mov r1, #0x1 - bl FUN_020AEB70 + bl NNS_GfdInitFrmTexVramManager _0202236E: ldr r0, [sp, #0x4] cmp r0, #0x0 bne _02022398 ldr r0, [sp, #0x20] lsl r0, r0, #0x8 - bl FUN_020AFBFC + bl NNS_GfdGetLnkPlttVramManagerWorkSize add r5, r0, #0x0 ldr r0, [r4, #0x0] add r1, r5, #0x0 @@ -59,14 +59,14 @@ _0202236E: lsl r0, r0, #0xd add r2, r5, #0x0 mov r3, #0x1 - bl FUN_020AFBA8 + bl NNS_GfdInitLnkPlttVramManager b _020223A4 _02022398: ldr r0, [sp, #0x20] mov r1, #0x1 lsl r0, r0, #0x1d lsr r0, r0, #0x10 - bl FUN_020AEB70 + bl NNS_GfdInitFrmTexVramManager _020223A4: ldr r0, [sp, #0x24] cmp r0, #0x0 diff --git a/arm9/asm/unk_02022504.s b/arm9/asm/unk_02022504.s deleted file mode 100644 index e3463538..00000000 --- a/arm9/asm/unk_02022504.s +++ /dev/null @@ -1,53 +0,0 @@ - .include "asm/macros.inc" - .include "global.inc" - - .text - - thumb_func_start FUN_02022504 -FUN_02022504: ; 0x02022504 - ldr r3, _0202250C ; =SavArray_get - mov r1, #0x1b - bx r3 - nop -_0202250C: .word SavArray_get - - thumb_func_start GetStoragePCPointer -GetStoragePCPointer: ; 0x02022510 - ldr r3, _02022518 ; =SavArray_get - mov r1, #0x23 - bx r3 - nop -_02022518: .word SavArray_get - - thumb_func_start FUN_0202251C -FUN_0202251C: ; 0x0202251C - ldr r3, _02022524 ; =SavArray_get - mov r1, #0x1f - bx r3 - nop -_02022524: .word SavArray_get - - thumb_func_start FUN_02022528 -FUN_02022528: ; 0x02022528 - ldr r3, _02022530 ; =SavArray_get - mov r1, #0x20 - bx r3 - nop -_02022530: .word SavArray_get - - thumb_func_start LoadHallOfFame -LoadHallOfFame: ; 0x02022534 - push {r3, lr} - add r3, r2, #0x0 - mov r2, #0x0 - bl ReadSaveFileFromFlash - pop {r3, pc} - - thumb_func_start SaveHallOfFame -SaveHallOfFame: ; 0x02022540 - ldr r3, _02022548 ; =WriteSaveFileToFlash - add r2, r1, #0x0 - mov r1, #0x0 - bx r3 - .balign 4 -_02022548: .word WriteSaveFileToFlash diff --git a/arm9/asm/unk_02023AC4.s b/arm9/asm/unk_02023AC4.s index 31d23446..daa3a9a3 100644 --- a/arm9/asm/unk_02023AC4.s +++ b/arm9/asm/unk_02023AC4.s @@ -171,7 +171,7 @@ FUN_02023BA4: ; 0x02023BA4 add r4, r0, #0x0 cmp r5, #0x1 blt _02023BB2 - bl ErrorHandling + bl GF_AssertFail _02023BB2: add r0, r4, #0x0 mov r1, #0xd diff --git a/arm9/asm/unk_020250A4.s b/arm9/asm/unk_020250A4.s index 76e0e8ce..60cd4165 100644 --- a/arm9/asm/unk_020250A4.s +++ b/arm9/asm/unk_020250A4.s @@ -391,7 +391,7 @@ _0202531E: ; jump table (using 16-bit offset) .short _02025336 - _0202531E - 2; case 4 .short _0202534E - _0202531E - 2; case 5 _0202532A: - bl ErrorHandling + bl GF_AssertFail pop {r4, pc} _02025330: add r0, r2, #0x1 diff --git a/arm9/asm/unk_02025954.s b/arm9/asm/unk_02025954.s index 8cbf5483..40c1b236 100644 --- a/arm9/asm/unk_02025954.s +++ b/arm9/asm/unk_02025954.s @@ -482,7 +482,7 @@ _02025C50: ldr r0, [sp, #0x0] cmp r0, #0x5 blt _02025C72 - bl ErrorHandling + bl GF_AssertFail _02025C72: add r0, r6, #0x0 bl PlayerProfile_GetNamePtr @@ -593,11 +593,11 @@ FUN_02025D48: ; 0x02025D48 add r4, r0, #0x0 cmp r4, #0xb bge _02025D54 - bl ErrorHandling + bl GF_AssertFail _02025D54: cmp r4, #0x3c blt _02025D5C - bl ErrorHandling + bl GF_AssertFail _02025D5C: sub r4, #0xb ldr r0, _02025D68 ; =UNK_02105C74 @@ -685,7 +685,7 @@ FUN_02025DD4: ; 0x02025DD4 bl FUN_02025F0C cmp r0, #0x0 beq _02025DE6 - bl ErrorHandling + bl GF_AssertFail _02025DE6: mov r0, #0x81 add r1, r5, r4 @@ -827,11 +827,11 @@ FUN_02025EDC: ; 0x02025EDC add r4, r1, #0x0 cmp r6, #0x1 bge _02025EEC - bl ErrorHandling + bl GF_AssertFail _02025EEC: cmp r6, #0xf ble _02025EF4 - bl ErrorHandling + bl GF_AssertFail _02025EF4: sub r0, r6, #0x1 add r1, r5, r0 @@ -1458,7 +1458,7 @@ FUN_0202630C: ; 0x0202630C add r6, r3, #0x0 cmp r4, #0x40 blt _0202631E - bl ErrorHandling + bl GF_AssertFail _0202631E: ldr r0, _02026350 ; =0x0000010F add r1, r5, r4 @@ -1494,7 +1494,7 @@ FUN_02026354: ; 0x02026354 add r5, r0, #0x0 cmp r4, #0x40 blt _02026362 - bl ErrorHandling + bl GF_AssertFail _02026362: ldr r0, _0202636C ; =0x0000010F add r1, r5, r4 @@ -1510,7 +1510,7 @@ FUN_02026370: ; 0x02026370 add r5, r0, #0x0 cmp r4, #0x40 blt _0202637E - bl ErrorHandling + bl GF_AssertFail _0202637E: lsl r0, r4, #0x1 add r0, r4, r0 @@ -1535,7 +1535,7 @@ FUN_0202639C: ; 0x0202639C add r5, r0, #0x0 cmp r4, #0x40 blt _020263AA - bl ErrorHandling + bl GF_AssertFail _020263AA: lsl r0, r4, #0x1 add r0, r4, r0 @@ -1560,7 +1560,7 @@ FUN_020263C8: ; 0x020263C8 add r5, r0, #0x0 cmp r4, #0x40 blt _020263D6 - bl ErrorHandling + bl GF_AssertFail _020263D6: ldr r0, _020263F0 ; =0x0000010F mov r1, #0x0 @@ -1586,7 +1586,7 @@ FUN_020263F4: ; 0x020263F4 add r6, r3, #0x0 cmp r4, #0x10 blt _02026406 - bl ErrorHandling + bl GF_AssertFail _02026406: lsl r2, r4, #0x1 ldr r1, _02026440 ; =0x0000050C @@ -1682,7 +1682,7 @@ FUN_0202649C: ; 0x0202649C add r7, r3, #0x0 cmp r4, #0x64 blt _020264AE - bl ErrorHandling + bl GF_AssertFail _020264AE: ldr r1, _020264E8 ; =0x0000055C add r0, r5, r4 @@ -1840,7 +1840,7 @@ FUN_020265B8: ; 0x020265B8 add r5, r0, #0x0 cmp r4, #0xff blt _020265C6 - bl ErrorHandling + bl GF_AssertFail _020265C6: ldr r0, _020265DC ; =0x0000020F mov r2, #0x3 @@ -2059,20 +2059,20 @@ FUN_0202671C: ; 0x0202671C add r6, r3, #0x0 cmp r4, #0x20 blt _0202672E - bl ErrorHandling + bl GF_AssertFail _0202672E: cmp r6, #0x20 blt _02026736 - bl ErrorHandling + bl GF_AssertFail _02026736: ldr r0, [sp, #0x18] cmp r0, #0x20 blt _02026740 - bl ErrorHandling + bl GF_AssertFail _02026740: cmp r5, #0x0 bne _02026748 - bl ErrorHandling + bl GF_AssertFail _02026748: cmp r4, #0x0 beq _02026774 @@ -2154,7 +2154,7 @@ FUN_020267C4: ; 0x020267C4 add r4, r0, #0x0 cmp r5, #0x20 blt _020267D2 - bl ErrorHandling + bl GF_AssertFail _020267D2: cmp r5, #0x0 bne _020267DE @@ -2197,7 +2197,7 @@ FUN_02026810: ; 0x02026810 add r4, r0, #0x0 cmp r5, #0x20 blt _0202681E - bl ErrorHandling + bl GF_AssertFail _0202681E: cmp r5, #0x0 bne _02026826 @@ -2226,7 +2226,7 @@ FUN_02026840: ; 0x02026840 add r4, r0, #0x0 cmp r5, #0x20 blt _0202684E - bl ErrorHandling + bl GF_AssertFail _0202684E: cmp r5, #0x0 bne _02026856 diff --git a/arm9/asm/unk_02026CD0.s b/arm9/asm/unk_02026CD0.s index 1cfea136..28a1f682 100644 --- a/arm9/asm/unk_02026CD0.s +++ b/arm9/asm/unk_02026CD0.s @@ -72,20 +72,20 @@ FUN_02026D34: ; 0x02026D34 lsl r0, r0, #0x8 cmp r1, r0 blt _02026D5E - bl ErrorHandling + bl GF_AssertFail _02026D5E: mov r0, #0x1 ldr r1, [sp, #0x8] lsl r0, r0, #0x8 cmp r1, r0 blt _02026D6C - bl ErrorHandling + bl GF_AssertFail _02026D6C: mov r0, #0x7f mvn r0, r0 cmp r4, r0 bgt _02026D78 - bl ErrorHandling + bl GF_AssertFail _02026D78: lsl r0, r4, #0x18 asr r0, r0, #0x18 @@ -138,7 +138,7 @@ FUN_02026DC4: ; 0x02026DC4 add r6, r1, #0x0 cmp r4, #0x3d blo _02026DD4 - bl ErrorHandling + bl GF_AssertFail _02026DD4: lsr r2, r4, #0x1f lsl r1, r4, #0x1d @@ -174,7 +174,7 @@ FUN_02026E08: ; 0x02026E08 add r5, r0, #0x0 cmp r4, #0x3d blo _02026E16 - bl ErrorHandling + bl GF_AssertFail _02026E16: lsr r3, r4, #0x1f lsl r2, r4, #0x1d @@ -211,7 +211,7 @@ FUN_02026E48: ; 0x02026E48 add r6, r2, #0x0 cmp r4, #0x2 blo _02026E58 - bl ErrorHandling + bl GF_AssertFail _02026E58: lsr r2, r6, #0x1f lsl r1, r6, #0x1b @@ -269,7 +269,7 @@ FUN_02026EB0: ; 0x02026EB0 add r6, r2, #0x0 cmp r4, #0x12 bls _02026EC0 - bl ErrorHandling + bl GF_AssertFail _02026EC0: lsr r2, r6, #0x1f lsl r1, r6, #0x1e @@ -459,7 +459,7 @@ FUN_02027008: ; 0x02027008 add r5, r0, #0x0 cmp r6, #0xb blt _02027016 - bl ErrorHandling + bl GF_AssertFail _02027016: mov r0, #0x74 add r4, r6, #0x0 @@ -479,7 +479,7 @@ _0202702E: _02027030: cmp r0, #0x0 bne _02027038 - bl ErrorHandling + bl GF_AssertFail _02027038: add r0, r5, r4 pop {r4-r6, pc} @@ -494,7 +494,7 @@ FUN_02027044: ; 0x02027044 add r5, r0, #0x0 cmp r6, #0x5 blt _02027052 - bl ErrorHandling + bl GF_AssertFail _02027052: mov r0, #0x98 add r4, r6, #0x0 @@ -516,7 +516,7 @@ _0202706E: _02027070: cmp r0, #0x0 bne _02027078 - bl ErrorHandling + bl GF_AssertFail _02027078: ldr r0, _02027080 ; =0x000004FC add r0, r5, r0 @@ -542,7 +542,7 @@ FUN_02027098: ; 0x02027098 add r5, r0, #0x0 cmp r4, #0xb blt _020270A6 - bl ErrorHandling + bl GF_AssertFail _020270A6: mov r0, #0x74 mul r0, r4 @@ -558,7 +558,7 @@ FUN_020270B4: ; 0x020270B4 add r5, r0, #0x0 cmp r4, #0x5 blt _020270C2 - bl ErrorHandling + bl GF_AssertFail _020270C2: ldr r0, _020270D4 ; =0x000004FC add r1, r5, r0 @@ -614,7 +614,7 @@ FUN_02027114: ; 0x02027114 add r4, r0, #0x0 cmp r5, #0x64 blo _02027122 - bl ErrorHandling + bl GF_AssertFail _02027122: cmp r5, #0x3d bhs _02027132 @@ -625,7 +625,7 @@ _02027122: pop {r3-r5, pc} _02027132: bhs _02027138 - bl ErrorHandling + bl GF_AssertFail _02027138: sub r5, #0x3d lsl r0, r5, #0x18 @@ -644,7 +644,7 @@ FUN_0202714C: ; 0x0202714C add r5, r0, #0x0 cmp r4, #0x12 blo _0202715A - bl ErrorHandling + bl GF_AssertFail _0202715A: add r5, #0x28 lsl r1, r4, #0x18 @@ -698,7 +698,7 @@ FUN_020271A4: ; 0x020271A4 add r6, r2, #0x0 cmp r4, #0x64 blo _020271B4 - bl ErrorHandling + bl GF_AssertFail _020271B4: cmp r4, #0x3d bhs _020271DA @@ -733,7 +733,7 @@ _020271DA: _020271F2: cmp r4, #0x3d bhs _020271FA - bl ErrorHandling + bl GF_AssertFail _020271FA: sub r4, #0x3d lsl r0, r4, #0x18 @@ -754,7 +754,7 @@ FUN_02027210: ; 0x02027210 add r6, r2, #0x0 cmp r4, #0x64 blo _02027220 - bl ErrorHandling + bl GF_AssertFail _02027220: cmp r4, #0x3d bhs _02027248 @@ -778,7 +778,7 @@ _0202723C: pop {r4-r6, pc} _02027248: bhs _0202724E - bl ErrorHandling + bl GF_AssertFail _0202724E: sub r4, #0x3d lsl r0, r4, #0x18 @@ -798,7 +798,7 @@ FUN_02027264: ; 0x02027264 add r5, r0, #0x0 cmp r4, #0x12 blo _02027272 - bl ErrorHandling + bl GF_AssertFail _02027272: add r0, r5, #0x0 lsl r1, r4, #0x18 @@ -839,7 +839,7 @@ _020272B2: _020272B4: cmp r0, #0x0 bne _020272BC - bl ErrorHandling + bl GF_AssertFail _020272BC: ldr r1, [r4, #0x0] ldr r0, _020272D0 ; =0x00002345 @@ -873,7 +873,7 @@ _020272EA: _020272EC: cmp r0, #0x0 bne _020272F4 - bl ErrorHandling + bl GF_AssertFail _020272F4: ldr r0, _02027308 ; =0x00002345 str r0, [r4, #0x0] @@ -906,7 +906,7 @@ _02027326: _02027328: cmp r0, #0x0 bne _02027330 - bl ErrorHandling + bl GF_AssertFail _02027330: add r0, r4, #0x0 mov r1, #0x0 @@ -940,7 +940,7 @@ _02027362: _02027364: cmp r0, #0x0 bne _0202736C - bl ErrorHandling + bl GF_AssertFail _0202736C: add r0, r5, #0x4 add r1, r4, #0x0 @@ -973,7 +973,7 @@ FUN_02027380: ; 0x02027380 str r0, [sp, #0x8] cmp r6, #0xa blt _020273B0 - bl ErrorHandling + bl GF_AssertFail _020273B0: add r1, sp, #0xc mov r0, #0x4 @@ -981,7 +981,7 @@ _020273B0: add r0, #0xfc cmp r1, r0 blt _020273C0 - bl ErrorHandling + bl GF_AssertFail _020273C0: add r1, sp, #0xc mov r0, #0x6 @@ -989,14 +989,14 @@ _020273C0: add r0, #0xfa cmp r7, r0 blt _020273D0 - bl ErrorHandling + bl GF_AssertFail _020273D0: mov r1, #0x7f ldr r0, [sp, #0x8] mvn r1, r1 cmp r0, r1 bgt _020273DE - bl ErrorHandling + bl GF_AssertFail _020273DE: mov r0, #0x1 lsl r0, r6 @@ -1004,7 +1004,7 @@ _020273DE: str r0, [sp, #0x4] tst r0, r1 beq _020273EE - bl ErrorHandling + bl GF_AssertFail _020273EE: ldr r1, [r5, #0x0] ldr r0, _02027440 ; =0x00001234 @@ -1021,7 +1021,7 @@ _02027400: _02027402: cmp r0, #0x0 bne _0202740A - bl ErrorHandling + bl GF_AssertFail _0202740A: ldr r0, [sp, #0x8] add r1, r5, #0x0 @@ -1072,7 +1072,7 @@ _02027460: _02027462: cmp r0, #0x0 bne _0202746A - bl ErrorHandling + bl GF_AssertFail _0202746A: add r5, #0x70 strb r4, [r5, #0x0] @@ -1101,7 +1101,7 @@ _02027490: _02027492: cmp r0, #0x0 bne _0202749A - bl ErrorHandling + bl GF_AssertFail _0202749A: add r0, r5, #0x0 add r0, #0x40 @@ -1136,7 +1136,7 @@ _020274D0: _020274D2: cmp r0, #0x0 bne _020274DA - bl ErrorHandling + bl GF_AssertFail _020274DA: add r0, r5, #0x0 add r1, r4, #0x0 @@ -1168,7 +1168,7 @@ _0202750A: _0202750C: cmp r0, #0x0 bne _02027514 - bl ErrorHandling + bl GF_AssertFail _02027514: add r0, r5, #0x4 add r1, r4, #0x0 @@ -1186,7 +1186,7 @@ FUN_02027528: ; 0x02027528 add r5, r0, #0x0 cmp r4, #0xa blt _02027536 - bl ErrorHandling + bl GF_AssertFail _02027536: ldr r1, [r5, #0x0] ldr r0, _0202755C ; =0x00001234 @@ -1203,7 +1203,7 @@ _02027548: _0202754A: cmp r0, #0x0 bne _02027552 - bl ErrorHandling + bl GF_AssertFail _02027552: mov r0, #0x1 ldr r1, [r5, #0x3c] @@ -1233,7 +1233,7 @@ _0202757A: _0202757C: cmp r0, #0x0 bne _02027584 - bl ErrorHandling + bl GF_AssertFail _02027584: add r0, r4, #0x4 pop {r4, pc} @@ -1248,14 +1248,14 @@ FUN_02027590: ; 0x02027590 add r5, r0, #0x0 cmp r4, #0xa blt _0202759E - bl ErrorHandling + bl GF_AssertFail _0202759E: mov r0, #0x1 ldr r1, [r5, #0x3c] lsl r0, r4 tst r0, r1 bne _020275AC - bl ErrorHandling + bl GF_AssertFail _020275AC: ldr r1, [r5, #0x0] ldr r0, _020275D0 ; =0x00001234 @@ -1272,7 +1272,7 @@ _020275BE: _020275C0: cmp r0, #0x0 bne _020275C8 - bl ErrorHandling + bl GF_AssertFail _020275C8: add r5, #0x48 lsl r0, r4, #0x2 @@ -1301,7 +1301,7 @@ _020275EE: _020275F0: cmp r0, #0x0 bne _020275F8 - bl ErrorHandling + bl GF_AssertFail _020275F8: add r0, r4, #0x4 bl FUN_02027C84 @@ -1330,7 +1330,7 @@ _02027620: _02027622: cmp r0, #0x0 bne _0202762A - bl ErrorHandling + bl GF_AssertFail _0202762A: add r0, r5, #0x4 add r1, r4, #0x0 @@ -1359,7 +1359,7 @@ _02027652: _02027654: cmp r0, #0x0 bne _0202765C - bl ErrorHandling + bl GF_AssertFail _0202765C: add r0, r4, #0x4 bl FUN_02027C98 @@ -1387,7 +1387,7 @@ _02027682: _02027684: cmp r0, #0x0 bne _0202768C - bl ErrorHandling + bl GF_AssertFail _0202768C: add r4, #0x70 ldrb r0, [r4, #0x0] @@ -1424,7 +1424,7 @@ _020276BE: _020276C0: cmp r0, #0x0 bne _020276C8 - bl ErrorHandling + bl GF_AssertFail _020276C8: add r4, #0x71 ldrb r0, [r4, #0x0] @@ -1452,7 +1452,7 @@ _020276EE: _020276F0: cmp r0, #0x0 bne _020276F8 - bl ErrorHandling + bl GF_AssertFail _020276F8: ldr r1, [r4, #0x0] ldr r0, _0202770C ; =0x00002345 @@ -1486,7 +1486,7 @@ _02027726: _02027728: cmp r0, #0x0 bne _02027730 - bl ErrorHandling + bl GF_AssertFail _02027730: ldr r0, _0202773C ; =0x00002345 str r0, [r4, #0x0] @@ -1514,7 +1514,7 @@ _02027756: _02027758: cmp r0, #0x0 bne _02027760 - bl ErrorHandling + bl GF_AssertFail _02027760: add r0, r4, #0x0 mov r1, #0x0 @@ -1548,7 +1548,7 @@ _02027792: _02027794: cmp r0, #0x0 bne _0202779C - bl ErrorHandling + bl GF_AssertFail _0202779C: add r5, #0x8 add r0, r5, #0x0 @@ -1582,7 +1582,7 @@ FUN_020277B4: ; 0x020277B4 str r0, [sp, #0x8] cmp r6, #0x14 blt _020277E4 - bl ErrorHandling + bl GF_AssertFail _020277E4: add r1, sp, #0xc mov r0, #0x4 @@ -1590,7 +1590,7 @@ _020277E4: add r0, #0xfc cmp r1, r0 blt _020277F4 - bl ErrorHandling + bl GF_AssertFail _020277F4: add r1, sp, #0xc mov r0, #0x6 @@ -1598,14 +1598,14 @@ _020277F4: add r0, #0xfa cmp r7, r0 blt _02027804 - bl ErrorHandling + bl GF_AssertFail _02027804: mov r1, #0x7f ldr r0, [sp, #0x8] mvn r1, r1 cmp r0, r1 bgt _02027812 - bl ErrorHandling + bl GF_AssertFail _02027812: mov r0, #0x1 lsl r0, r6 @@ -1613,7 +1613,7 @@ _02027812: str r0, [sp, #0x4] tst r0, r1 beq _02027822 - bl ErrorHandling + bl GF_AssertFail _02027822: ldr r1, [r5, #0x0] ldr r0, _02027874 ; =0x00001234 @@ -1630,7 +1630,7 @@ _02027834: _02027836: cmp r0, #0x0 bne _0202783E - bl ErrorHandling + bl GF_AssertFail _0202783E: ldr r0, [sp, #0x8] add r1, r5, #0x0 @@ -1681,7 +1681,7 @@ _02027894: _02027896: cmp r0, #0x0 bne _0202789E - bl ErrorHandling + bl GF_AssertFail _0202789E: add r5, #0x94 strb r4, [r5, #0x0] @@ -1710,7 +1710,7 @@ _020278C4: _020278C6: cmp r0, #0x0 bne _020278CE - bl ErrorHandling + bl GF_AssertFail _020278CE: str r4, [r5, #0x4] pop {r3-r5, pc} @@ -1738,7 +1738,7 @@ _020278F4: _020278F6: cmp r0, #0x0 bne _020278FE - bl ErrorHandling + bl GF_AssertFail _020278FE: add r0, r5, #0x0 add r1, r4, #0x0 @@ -1771,7 +1771,7 @@ _02027930: _02027932: cmp r0, #0x0 bne _0202793A - bl ErrorHandling + bl GF_AssertFail _0202793A: add r1, sp, #0x4 add r0, r4, #0x0 @@ -1803,18 +1803,18 @@ FUN_02027964: ; 0x02027964 ldr r4, [sp, #0x24] cmp r6, #0x14 blo _0202797A - bl ErrorHandling + bl GF_AssertFail _0202797A: cmp r7, #0x64 blo _02027982 - bl ErrorHandling + bl GF_AssertFail _02027982: mov r1, #0x1 ldr r0, [sp, #0x4] lsl r1, r1, #0x8 cmp r0, r1 blt _02027990 - bl ErrorHandling + bl GF_AssertFail _02027990: add r0, sp, #0x10 ldrb r1, [r0, #0x10] @@ -1822,13 +1822,13 @@ _02027990: lsl r0, r0, #0x8 cmp r1, r0 blt _020279A0 - bl ErrorHandling + bl GF_AssertFail _020279A0: mov r0, #0x7f mvn r0, r0 cmp r4, r0 bgt _020279AC - bl ErrorHandling + bl GF_AssertFail _020279AC: mov r0, #0x1 lsl r0, r6 @@ -1836,7 +1836,7 @@ _020279AC: str r0, [sp, #0x8] tst r0, r1 beq _020279BC - bl ErrorHandling + bl GF_AssertFail _020279BC: ldr r1, [r5, #0x0] ldr r0, _02027A0C ; =0x00001234 @@ -1853,7 +1853,7 @@ _020279CE: _020279D0: cmp r0, #0x0 bne _020279D8 - bl ErrorHandling + bl GF_AssertFail _020279D8: mov r0, #0x38 ldrsb r0, [r5, r0] @@ -1892,7 +1892,7 @@ FUN_02027A14: ; 0x02027A14 add r5, r0, #0x0 cmp r4, #0x14 blt _02027A22 - bl ErrorHandling + bl GF_AssertFail _02027A22: ldr r1, [r5, #0x0] ldr r0, _02027A50 ; =0x00001234 @@ -1909,7 +1909,7 @@ _02027A34: _02027A36: cmp r0, #0x0 bne _02027A3E - bl ErrorHandling + bl GF_AssertFail _02027A3E: mov r0, #0x1 add r1, r0, #0x0 @@ -1945,7 +1945,7 @@ _02027A72: _02027A74: cmp r0, #0x0 bne _02027A7C - bl ErrorHandling + bl GF_AssertFail _02027A7C: add r5, #0x8 add r0, r5, #0x0 @@ -1976,7 +1976,7 @@ _02027AAA: _02027AAC: cmp r0, #0x0 bne _02027AB4 - bl ErrorHandling + bl GF_AssertFail _02027AB4: add r4, #0x8 add r0, r4, #0x0 @@ -1992,14 +1992,14 @@ FUN_02027AC4: ; 0x02027AC4 add r5, r0, #0x0 cmp r4, #0x14 blt _02027AD2 - bl ErrorHandling + bl GF_AssertFail _02027AD2: mov r0, #0x1 ldr r1, [r5, #0x40] lsl r0, r4 tst r0, r1 bne _02027AE0 - bl ErrorHandling + bl GF_AssertFail _02027AE0: ldr r1, [r5, #0x0] ldr r0, _02027B04 ; =0x00001234 @@ -2016,7 +2016,7 @@ _02027AF2: _02027AF4: cmp r0, #0x0 bne _02027AFC - bl ErrorHandling + bl GF_AssertFail _02027AFC: add r5, #0x44 lsl r0, r4, #0x2 @@ -2046,7 +2046,7 @@ _02027B24: _02027B26: cmp r0, #0x0 bne _02027B2E - bl ErrorHandling + bl GF_AssertFail _02027B2E: add r5, #0x8 add r0, r5, #0x0 @@ -2076,7 +2076,7 @@ _02027B5A: _02027B5C: cmp r0, #0x0 bne _02027B64 - bl ErrorHandling + bl GF_AssertFail _02027B64: add r4, #0x8 add r0, r4, #0x0 @@ -2107,7 +2107,7 @@ _02027B92: _02027B94: cmp r0, #0x0 bne _02027B9C - bl ErrorHandling + bl GF_AssertFail _02027B9C: mov r1, #0x1 str r1, [sp, #0x0] @@ -2144,14 +2144,14 @@ FUN_02027BDC: ; 0x02027BDC add r5, r0, #0x0 cmp r4, #0x14 blt _02027BEA - bl ErrorHandling + bl GF_AssertFail _02027BEA: mov r0, #0x1 ldr r1, [r5, #0x40] lsl r0, r4 tst r0, r1 bne _02027BF8 - bl ErrorHandling + bl GF_AssertFail _02027BF8: ldr r1, [r5, #0x0] ldr r0, _02027C20 ; =0x00001234 @@ -2168,7 +2168,7 @@ _02027C0A: _02027C0C: cmp r0, #0x0 bne _02027C14 - bl ErrorHandling + bl GF_AssertFail _02027C14: add r5, #0x44 lsl r0, r4, #0x2 @@ -2198,7 +2198,7 @@ _02027C3E: _02027C40: cmp r0, #0x0 bne _02027C48 - bl ErrorHandling + bl GF_AssertFail _02027C48: add r4, #0x94 ldrb r0, [r4, #0x0] @@ -2226,7 +2226,7 @@ _02027C6E: _02027C70: cmp r0, #0x0 bne _02027C78 - bl ErrorHandling + bl GF_AssertFail _02027C78: ldr r0, [r4, #0x4] pop {r4, pc} diff --git a/arm9/asm/unk_020281E0.s b/arm9/asm/unk_020281E0.s index e1a5729d..23822bb1 100644 --- a/arm9/asm/unk_020281E0.s +++ b/arm9/asm/unk_020281E0.s @@ -56,7 +56,7 @@ FUN_0202822C: ; 0x0202822C add r7, r2, #0x0 cmp r4, #0x20 blt _0202823C - bl ErrorHandling + bl GF_AssertFail _0202823C: cmp r7, #0x8 bhi _020282D0 @@ -161,7 +161,7 @@ FUN_020282E8: ; 0x020282E8 add r6, r3, #0x0 cmp r4, #0x20 blt _020282FA - bl ErrorHandling + bl GF_AssertFail _020282FA: cmp r7, #0x8 bhi _02028378 @@ -190,13 +190,13 @@ _0202831C: str r6, [r1, r0] pop {r3-r7, pc} _0202832A: - bl ErrorHandling + bl GF_AssertFail pop {r3-r7, pc} _02028330: - bl ErrorHandling + bl GF_AssertFail pop {r3-r7, pc} _02028336: - bl ErrorHandling + bl GF_AssertFail pop {r3-r7, pc} _0202833C: mov r0, #0x30 @@ -248,7 +248,7 @@ FUN_0202838C: ; 0x0202838C add r5, r0, #0x0 cmp r4, #0x20 blt _0202839A - bl ErrorHandling + bl GF_AssertFail _0202839A: mov r0, #0xc add r5, #0x40 @@ -263,7 +263,7 @@ FUN_020283A4: ; 0x020283A4 add r5, r0, #0x0 cmp r4, #0x20 blt _020283B2 - bl ErrorHandling + bl GF_AssertFail _020283B2: mov r0, #0x1d lsl r0, r0, #0x4 @@ -281,7 +281,7 @@ FUN_020283C0: ; 0x020283C0 add r6, r2, #0x0 cmp r4, #0x20 blt _020283D0 - bl ErrorHandling + bl GF_AssertFail _020283D0: mov r1, #0x1d lsl r1, r1, #0x4 @@ -302,7 +302,7 @@ FUN_020283E8: ; 0x020283E8 add r5, r0, #0x0 cmp r4, #0x20 blt _020283F6 - bl ErrorHandling + bl GF_AssertFail _020283F6: mov r0, #0x7 lsl r0, r0, #0x6 @@ -320,7 +320,7 @@ FUN_02028404: ; 0x02028404 add r6, r2, #0x0 cmp r4, #0x20 blt _02028414 - bl ErrorHandling + bl GF_AssertFail _02028414: mov r1, #0x7 lsl r1, r1, #0x6 @@ -341,7 +341,7 @@ FUN_0202842C: ; 0x0202842C add r5, r0, #0x0 cmp r4, #0x20 blt _0202843A - bl ErrorHandling + bl GF_AssertFail _0202843A: mov r0, #0xc add r5, #0x40 @@ -378,7 +378,7 @@ FUN_02028468: ; 0x02028468 str r0, [sp, #0x0] cmp r5, #0x20 blt _02028478 - bl ErrorHandling + bl GF_AssertFail _02028478: cmp r5, #0x1f bge _020284D2 diff --git a/arm9/asm/unk_02028980.s b/arm9/asm/unk_02028980.s index 8c9178e7..664e39e7 100644 --- a/arm9/asm/unk_02028980.s +++ b/arm9/asm/unk_02028980.s @@ -163,10 +163,10 @@ _02028A30: lsr r0, r0, #0x1d str r0, [sp, #0x1c] add r0, sp, #0x0 - bl FUN_02012710 + bl GF_RTC_GetDayOfYear add r4, r0, #0x0 add r0, sp, #0x10 - bl FUN_02012710 + bl GF_RTC_GetDayOfYear ldr r2, [sp, #0x4] sub r0, r4, r0 cmp r2, #0xc diff --git a/arm9/asm/unk_02029AE0.s b/arm9/asm/unk_02029AE0.s index 9e318412..3e6f8a2e 100644 --- a/arm9/asm/unk_02029AE0.s +++ b/arm9/asm/unk_02029AE0.s @@ -39,11 +39,11 @@ FUN_02029B08: ; 0x02029B08 add r4, r2, #0x0 cmp r5, r0 blt _02029B1C - bl ErrorHandling + bl GF_AssertFail _02029B1C: cmp r4, #0x40 blt _02029B24 - bl ErrorHandling + bl GF_AssertFail _02029B24: strb r5, [r6, #0x5] add r0, r6, #0x0 @@ -75,11 +75,11 @@ FUN_02029B40: ; 0x02029B40 add r4, r2, #0x0 cmp r5, r0 blt _02029B54 - bl ErrorHandling + bl GF_AssertFail _02029B54: cmp r4, #0x40 blt _02029B5C - bl ErrorHandling + bl GF_AssertFail _02029B5C: cmp r5, #0x0 bne _02029B64 @@ -118,17 +118,17 @@ FUN_02029B90: ; 0x02029B90 str r3, [sp, #0x0] cmp r3, #0x4 blt _02029BA2 - bl ErrorHandling + bl GF_AssertFail _02029BA2: mov r0, #0x1 lsl r0, r0, #0x8 cmp r5, r0 blt _02029BAE - bl ErrorHandling + bl GF_AssertFail _02029BAE: cmp r4, #0x40 blt _02029BB6 - bl ErrorHandling + bl GF_AssertFail _02029BB6: cmp r5, #0x0 beq _02029BFE diff --git a/arm9/asm/unk_02029EC4.s b/arm9/asm/unk_02029EC4.s deleted file mode 100644 index 03893fab..00000000 --- a/arm9/asm/unk_02029EC4.s +++ /dev/null @@ -1,149 +0,0 @@ - .include "asm/macros.inc" - .include "global.inc" - - .text - - thumb_func_start FUN_02029EC4 -FUN_02029EC4: ; 0x02029EC4 - mov r0, #0xfb - lsl r0, r0, #0x2 - bx lr - .balign 4 - - thumb_func_start FUN_02029ECC -FUN_02029ECC: ; 0x02029ECC - push {r4, lr} - add r4, r0, #0x0 - mov r2, #0xfb - mov r0, #0x0 - add r1, r4, #0x0 - lsl r2, r2, #0x2 - bl MIi_CpuClear32 - mov r0, #0x0 - str r0, [r4, #0x0] - pop {r4, pc} - .balign 4 - - thumb_func_start FUN_02029EE4 -FUN_02029EE4: ; 0x02029EE4 - push {r4, lr} - mov r1, #0xfb - lsl r1, r1, #0x2 - bl AllocFromHeap - add r4, r0, #0x0 - bl FUN_02029ECC - add r0, r4, #0x0 - pop {r4, pc} - - thumb_func_start FUN_02029EF8 -FUN_02029EF8: ; 0x02029EF8 - ldr r3, _02029F00 ; =SavArray_get - mov r1, #0x16 - bx r3 - nop -_02029F00: .word SavArray_get - - thumb_func_start FUN_02029F04 -FUN_02029F04: ; 0x02029F04 - ldr r0, [r0, #0x0] - bx lr - - thumb_func_start FUN_02029F08 -FUN_02029F08: ; 0x02029F08 - mov r1, #0x0 - str r1, [r0, #0x0] - bx lr - .balign 4 - - thumb_func_start FUN_02029F10 -FUN_02029F10: ; 0x02029F10 - add r0, r0, #0x4 - bx lr - - thumb_func_start FUN_02029F14 -FUN_02029F14: ; 0x02029F14 - push {r4-r7} - mov r5, #0x0 - mov r2, #0xfa - add r4, r5, #0x0 - mov r6, #0xf - lsl r2, r2, #0x2 -_02029F20: - ldrsb r7, [r1, r4] - add r3, r0, r5 - and r7, r6 - lsl r7, r7, #0x18 - lsr r7, r7, #0x18 - sub r7, #0x8 - lsl r7, r7, #0x18 - asr r7, r7, #0x14 - strb r7, [r0, r5] - ldrsb r7, [r1, r4] - add r4, r4, #0x1 - add r5, r5, #0x2 - lsl r7, r7, #0x14 - lsr r7, r7, #0x18 - sub r7, #0x8 - lsl r7, r7, #0x18 - asr r7, r7, #0x14 - strb r7, [r3, #0x1] - cmp r4, r2 - blt _02029F20 - pop {r4-r7} - bx lr - - thumb_func_start FUN_02029F4C -FUN_02029F4C: ; 0x02029F4C - push {r4-r7} - add r3, r0, #0x0 - add r2, r1, #0x0 - mov r0, #0x1 - mov r1, #0x0 - str r0, [r3, #0x0] - add r0, r1, #0x0 -_02029F5A: - ldrsb r4, [r2, r0] - add r6, r3, r1 - add r7, r2, r0 - asr r5, r4, #0x3 - lsr r5, r5, #0x1c - add r5, r4, r5 - lsl r4, r5, #0x14 - asr r4, r4, #0x18 - add r4, #0x8 - strb r4, [r6, #0x4] - mov r4, #0x4 - ldrsb r5, [r6, r4] - mov r4, #0x1 - ldrsb r4, [r7, r4] - add r0, r0, #0x2 - add r1, r1, #0x1 - asr r7, r4, #0x3 - lsr r7, r7, #0x1c - add r7, r4, r7 - lsl r4, r7, #0x14 - asr r4, r4, #0x18 - add r4, #0x8 - lsl r4, r4, #0x18 - lsr r4, r4, #0x14 - orr r4, r5 - strb r4, [r6, #0x4] - mov r4, #0x7d - lsl r4, r4, #0x4 - cmp r0, r4 - blt _02029F5A - pop {r4-r7} - bx lr - .balign 4 - - thumb_func_start FUN_02029F9C -FUN_02029F9C: ; 0x02029F9C - add r2, r0, #0x0 - add r0, r1, #0x0 - add r1, r2, #0x0 - mov r2, #0xfb - ldr r3, _02029FAC ; =MIi_CpuCopyFast - lsl r2, r2, #0x2 - bx r3 - nop -_02029FAC: .word MIi_CpuCopyFast diff --git a/arm9/asm/unk_02029FB0.s b/arm9/asm/unk_02029FB0.s index ac457105..c98b57b7 100644 --- a/arm9/asm/unk_02029FB0.s +++ b/arm9/asm/unk_02029FB0.s @@ -70,7 +70,7 @@ _02029FE0: ldrh r0, [r0, #0x0] pop {r3, pc} _02029FF0: - bl ErrorHandling + bl GF_AssertFail mov r0, #0x0 pop {r3, pc} @@ -95,7 +95,7 @@ _0202A008: strh r2, [r0, #0x0] b _0202A01E _0202A01A: - bl ErrorHandling + bl GF_AssertFail _0202A01E: add r0, r5, #0x0 add r1, r4, #0x0 @@ -129,7 +129,7 @@ _0202A04E: ldr r0, _0202A06C ; =0x0000270F pop {r3, pc} _0202A052: - bl ErrorHandling + bl GF_AssertFail mov r0, #0x0 pop {r3, pc} nop @@ -282,7 +282,7 @@ FUN_0202A170: ; 0x0202A170 add r5, r0, #0x0 cmp r4, #0x26 blt _0202A17E - bl ErrorHandling + bl GF_AssertFail _0202A17E: add r0, r5, #0x0 mov r1, #0x0 diff --git a/arm9/asm/unk_0202A924.s b/arm9/asm/unk_0202A924.s index d1dffcaf..f8784153 100644 --- a/arm9/asm/unk_0202A924.s +++ b/arm9/asm/unk_0202A924.s @@ -77,7 +77,7 @@ _0202A9A0: ldr r0, [r0, #0x4] pop {r3, pc} _0202A9A4: - bl ErrorHandling + bl GF_AssertFail mov r0, #0x0 pop {r3, pc} @@ -192,7 +192,7 @@ FUN_0202AA40: ; 0x0202AA40 add r5, r0, #0x0 cmp r4, #0x3 blo _0202AA4E - bl ErrorHandling + bl GF_AssertFail _0202AA4E: mov r0, #0x43 add r1, r5, r4 @@ -208,7 +208,7 @@ FUN_0202AA58: ; 0x0202AA58 add r6, r2, #0x0 cmp r4, #0x3 blo _0202AA68 - bl ErrorHandling + bl GF_AssertFail _0202AA68: mov r0, #0x43 add r1, r5, r4 @@ -224,7 +224,7 @@ FUN_0202AA74: ; 0x0202AA74 add r5, r0, #0x0 cmp r4, #0x3 blo _0202AA82 - bl ErrorHandling + bl GF_AssertFail _0202AA82: mov r0, #0x14 mul r0, r4 @@ -253,7 +253,7 @@ FUN_0202AAA0: ; 0x0202AAA0 add r5, r0, #0x0 cmp r4, #0x3 blo _0202AAAE - bl ErrorHandling + bl GF_AssertFail _0202AAAE: mov r0, #0x14 add r5, #0xd0 @@ -391,7 +391,7 @@ FUN_0202AB68: ; 0x0202AB68 add r5, r0, #0x0 cmp r4, #0x2 bls _0202AB76 - bl ErrorHandling + bl GF_AssertFail _0202AB76: ldr r0, _0202AB7C ; =0x00000112 strb r4, [r5, r0] @@ -427,7 +427,7 @@ FUN_0202ABA0: ; 0x0202ABA0 add r4, r0, #0x0 cmp r5, #0x10 blo _0202ABB2 - bl ErrorHandling + bl GF_AssertFail _0202ABB2: ldrh r0, [r4, #0xc] strh r0, [r4, #0xe] diff --git a/arm9/asm/unk_0202AC20.s b/arm9/asm/unk_0202AC20.s index e200b338..843845eb 100644 --- a/arm9/asm/unk_0202AC20.s +++ b/arm9/asm/unk_0202AC20.s @@ -28,7 +28,7 @@ FUN_0202AC2C: ; 0x0202AC2C add r5, r0, #0x0 cmp r4, #0x8 blt _0202AC3A - bl ErrorHandling + bl GF_AssertFail _0202AC3A: mov r0, #0x1 lsl r0, r0, #0x8 @@ -59,7 +59,7 @@ FUN_0202AC64: ; 0x0202AC64 add r5, r0, #0x0 cmp r4, #0x3 blt _0202AC72 - bl ErrorHandling + bl GF_AssertFail _0202AC72: lsl r0, r4, #0x2 add r1, r5, r0 @@ -220,7 +220,7 @@ FUN_0202AD94: ; 0x0202AD94 sub r0, r4, #0x1 cmp r0, #0x8 blt _0202ADA4 - bl ErrorHandling + bl GF_AssertFail _0202ADA4: sub r4, r4, #0x1 lsl r0, r4, #0x2 @@ -248,7 +248,7 @@ FUN_0202ADC8: ; 0x0202ADC8 add r5, r0, #0x0 cmp r4, #0x3 blt _0202ADD6 - bl ErrorHandling + bl GF_AssertFail _0202ADD6: lsl r0, r4, #0x2 add r1, r5, r0 @@ -308,7 +308,7 @@ FUN_0202AE28: ; 0x0202AE28 add r4, r0, #0x0 cmp r5, #0x8 blt _0202AE36 - bl ErrorHandling + bl GF_AssertFail _0202AE36: lsl r0, r5, #0x2 add r1, r4, r0 @@ -330,7 +330,7 @@ FUN_0202AE4C: ; 0x0202AE4C add r4, r0, #0x0 cmp r5, #0x3 blt _0202AE5A - bl ErrorHandling + bl GF_AssertFail _0202AE5A: lsl r0, r5, #0x2 add r1, r4, r0 @@ -434,7 +434,7 @@ FUN_0202AEF4: ; 0x0202AEF4 lsl r0, r0, #0xa cmp r4, r0 blt _0202AF06 - bl ErrorHandling + bl GF_AssertFail _0202AF06: mov r0, #0x1 mov r1, #0x7 @@ -462,7 +462,7 @@ FUN_0202AF24: ; 0x0202AF24 lsl r0, r0, #0xa cmp r4, r0 blt _0202AF36 - bl ErrorHandling + bl GF_AssertFail _0202AF36: asr r0, r4, #0x2 lsr r0, r0, #0x1d @@ -557,7 +557,7 @@ _0202AFCA: sub r0, r4, #0x1 cmp r0, #0x8 blt _0202AFD4 - bl ErrorHandling + bl GF_AssertFail _0202AFD4: ldr r0, _0202AFF8 ; =UNK_021C59D4 sub r1, r4, #0x1 diff --git a/arm9/asm/unk_0202B374.s b/arm9/asm/unk_0202B374.s index 67c01b0a..2becea26 100644 --- a/arm9/asm/unk_0202B374.s +++ b/arm9/asm/unk_0202B374.s @@ -112,7 +112,7 @@ _0202B422: add r3, r3, #0x1 cmp r3, #0x4 blt _0202B418 - bl ErrorHandling + bl GF_AssertFail pop {r3, pc} .balign 4 @@ -324,7 +324,7 @@ _0202B574: add r4, #0xcc b _0202B57E _0202B57A: - bl ErrorHandling + bl GF_AssertFail _0202B57E: add r0, r4, #0x0 pop {r4, pc} @@ -362,7 +362,7 @@ _0202B5B0: add r4, r0, r1 b _0202B5BA _0202B5B6: - bl ErrorHandling + bl GF_AssertFail _0202B5BA: add r0, r4, #0x0 pop {r4, pc} @@ -672,7 +672,7 @@ FUN_0202B7C8: ; 0x0202B7C8 bl FUN_0202B820 cmp r0, #0x1 beq _0202B7DE - bl ErrorHandling + bl GF_AssertFail _0202B7DE: add r0, r5, #0x0 add r1, r6, #0x0 @@ -695,7 +695,7 @@ FUN_0202B7F4: ; 0x0202B7F4 bl FUN_0202B820 cmp r0, #0x0 beq _0202B80A - bl ErrorHandling + bl GF_AssertFail _0202B80A: add r0, r5, #0x0 add r1, r6, #0x0 diff --git a/arm9/asm/unk_0202B870.s b/arm9/asm/unk_0202B870.s index ad45d567..55229d73 100644 --- a/arm9/asm/unk_0202B870.s +++ b/arm9/asm/unk_0202B870.s @@ -109,7 +109,7 @@ FUN_0202B8F0: ; 0x0202B8F0 cmp r2, #0x6 blo _0202B8FE blo _0202B930 - bl ErrorHandling + bl GF_AssertFail pop {r4-r6, pc} _0202B8FE: mov r3, #0x90 diff --git a/arm9/asm/unk_0202BE98.s b/arm9/asm/unk_0202BE98.s index 37bc1c4e..52f6b9ad 100644 --- a/arm9/asm/unk_0202BE98.s +++ b/arm9/asm/unk_0202BE98.s @@ -30,7 +30,7 @@ _0202BEB4: bl GetMonData cmp r0, #0x0 beq _0202BECC - bl ErrorHandling + bl GF_AssertFail _0202BECC: add r4, r4, #0x1 add r5, #0xec @@ -60,7 +60,7 @@ _0202BEF0: bl GetMonData cmp r0, #0x0 beq _0202BF08 - bl ErrorHandling + bl GF_AssertFail _0202BF08: add r4, r4, #0x1 add r5, #0xec @@ -178,7 +178,7 @@ FUN_0202BFD8: ; 0x0202BFD8 add r4, r2, #0x0 cmp r5, #0x6 blt _0202BFE8 - bl ErrorHandling + bl GF_AssertFail _0202BFE8: mov r0, #0xec mul r0, r5 diff --git a/arm9/asm/unk_0202D394.s b/arm9/asm/unk_0202D394.s index 1a6f2b87..ce635a79 100644 --- a/arm9/asm/unk_0202D394.s +++ b/arm9/asm/unk_0202D394.s @@ -38,7 +38,7 @@ _0202D3BC: _0202D3CC: cmp r7, #0x0 bne _0202D3D4 - bl ErrorHandling + bl GF_AssertFail _0202D3D4: add r0, r5, #0x0 add r1, r4, #0x0 diff --git a/arm9/asm/unk_0202D4C4.s b/arm9/asm/unk_0202D4C4.s index deb9a6ea..a809e579 100644 --- a/arm9/asm/unk_0202D4C4.s +++ b/arm9/asm/unk_0202D4C4.s @@ -276,7 +276,7 @@ _0202D69E: ldr r0, _0202D710 ; =0x0000FFFE cmp r7, r0 blt _0202D6A8 - bl ErrorHandling + bl GF_AssertFail _0202D6A8: ldr r0, [sp, #0x0] bl FUN_0202D9A0 diff --git a/arm9/asm/unk_0202D858.s b/arm9/asm/unk_0202D858.s deleted file mode 100644 index e678326d..00000000 --- a/arm9/asm/unk_0202D858.s +++ /dev/null @@ -1,90 +0,0 @@ - .include "asm/macros.inc" - .include "global.inc" - - .section .rodata - - .global UNK_020EEB04 -UNK_020EEB04: ; 0x020EEB04 - .byte 0x01, 0x01, 0x01, 0x01, 0x03, 0x03, 0x03, 0x04, 0x03, 0x04, 0x07, 0x03, 0x07, 0x04, 0x01, 0x04 - .byte 0x01, 0x01, 0x04, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00 - - .global UNK_020EEB1E -UNK_020EEB1E: ; 0x020EEB1E - .byte 0x01, 0x01, 0x01, 0x01, 0x03, 0x03, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 - .byte 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00 - - .text - - thumb_func_start FUN_0202D858 -FUN_0202D858: ; 0x0202D858 - push {r3-r4, lr} - sub sp, #0x1c - ldr r3, _0202D880 ; =UNK_020EEB04 - add r4, r0, #0x0 - add r2, sp, #0x0 - mov r1, #0x1a -_0202D864: - ldrb r0, [r3, #0x0] - add r3, r3, #0x1 - strb r0, [r2, #0x0] - add r2, r2, #0x1 - sub r1, r1, #0x1 - bne _0202D864 - cmp r4, #0x1a - blo _0202D878 - bl ErrorHandling -_0202D878: - add r0, sp, #0x0 - ldrb r0, [r0, r4] - add sp, #0x1c - pop {r3-r4, pc} - .balign 4 -_0202D880: .word UNK_020EEB04 - - thumb_func_start FUN_0202D884 -FUN_0202D884: ; 0x0202D884 - push {r3-r4, lr} - sub sp, #0x1c - ldr r3, _0202D8AC ; =UNK_020EEB1E - add r4, r0, #0x0 - add r2, sp, #0x0 - mov r1, #0x1a -_0202D890: - ldrb r0, [r3, #0x0] - add r3, r3, #0x1 - strb r0, [r2, #0x0] - add r2, r2, #0x1 - sub r1, r1, #0x1 - bne _0202D890 - cmp r4, #0x1a - blo _0202D8A4 - bl ErrorHandling -_0202D8A4: - add r0, sp, #0x0 - ldrb r0, [r0, r4] - add sp, #0x1c - pop {r3-r4, pc} - .balign 4 -_0202D8AC: .word UNK_020EEB1E - - thumb_func_start FUN_0202D8B0 -FUN_0202D8B0: ; 0x0202D8B0 - cmp r0, #0xd - bgt _0202D8C4 - cmp r0, #0x7 - blt _0202D8CC - beq _0202D8C8 - cmp r0, #0x9 - beq _0202D8C8 - cmp r0, #0xd - beq _0202D8C8 - b _0202D8CC -_0202D8C4: - cmp r0, #0x12 - bne _0202D8CC -_0202D8C8: - mov r0, #0x1 - bx lr -_0202D8CC: - mov r0, #0x0 - bx lr diff --git a/arm9/asm/unk_0202D8D0.s b/arm9/asm/unk_0202D8D0.s index d457ca4a..13ed76b8 100644 --- a/arm9/asm/unk_0202D8D0.s +++ b/arm9/asm/unk_0202D8D0.s @@ -110,7 +110,7 @@ _0202D94C: ldr r0, [r0, #0x0] cmp r0, #0x0 bne _0202D958 - bl ErrorHandling + bl GF_AssertFail _0202D958: ldr r0, _0202D99C ; =UNK_021C59E0 ldr r1, [r0, #0x0] @@ -169,7 +169,7 @@ _0202D9B6: ldr r0, [r0, #0x0] cmp r0, #0x0 bne _0202D9C2 - bl ErrorHandling + bl GF_AssertFail _0202D9C2: ldr r0, _0202DA00 ; =UNK_021C59E0 ldr r1, [r0, #0x0] diff --git a/arm9/asm/unk_0202DB14.s b/arm9/asm/unk_0202DB14.s index 22ffb2e4..490da58f 100644 --- a/arm9/asm/unk_0202DB14.s +++ b/arm9/asm/unk_0202DB14.s @@ -942,7 +942,7 @@ _0202E1EE: ldr r0, [sp, #0x8] cmp r0, #0x0 bge _0202E1F8 - bl ErrorHandling + bl GF_AssertFail _0202E1F8: ldr r0, _0202E254 ; =UNK_021C59E4 mov r2, #0xda diff --git a/arm9/asm/unk_0202E29C.s b/arm9/asm/unk_0202E29C.s deleted file mode 100644 index 4bb83bc8..00000000 --- a/arm9/asm/unk_0202E29C.s +++ /dev/null @@ -1,1970 +0,0 @@ - .include "asm/macros.inc" - .include "global.inc" - - .section .rodata - - .global UNK_020EEC40 -UNK_020EEC40: ; 0x020EEC40 - .byte 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF - - .section .bss - - .global UNK_021C59E8 -UNK_021C59E8: ; 0x021C59E8 - .space 0xc - - .text - - thumb_func_start FUN_0202E29C -FUN_0202E29C: ; 0x0202E29C - push {r4, lr} - add r4, r0, #0x0 - ldr r0, _0202E334 ; =UNK_021C59E8 - ldr r0, [r0, #0x8] - cmp r0, #0x0 - bne _0202E332 - mov r1, #0xdb - mov r0, #0xf - lsl r1, r1, #0x4 - bl AllocFromHeap - ldr r1, _0202E334 ; =UNK_021C59E8 - mov r2, #0xdb - str r0, [r1, #0x8] - mov r1, #0x0 - lsl r2, r2, #0x4 - bl MI_CpuFill8 - bl FUN_0202CEEC - add r1, r0, #0x0 - mov r0, #0xf - bl AllocFromHeap - ldr r1, _0202E334 ; =UNK_021C59E8 - ldr r2, [r1, #0x8] - ldr r1, _0202E338 ; =0x00000CA4 - str r0, [r2, r1] - bl FUN_0202CEEC - add r2, r0, #0x0 - ldr r0, _0202E334 ; =UNK_021C59E8 - ldr r1, [r0, #0x8] - ldr r0, _0202E338 ; =0x00000CA4 - ldr r0, [r1, r0] - mov r1, #0x0 - bl MI_CpuFill8 - bl FUN_02023AC4 - add r1, r0, #0x0 - mov r0, #0xf - bl AllocFromHeap - ldr r1, _0202E334 ; =UNK_021C59E8 - ldr r2, [r1, #0x8] - ldr r1, _0202E33C ; =0x00000CBC - str r0, [r2, r1] - bl FUN_02023AC4 - add r2, r0, #0x0 - ldr r0, _0202E334 ; =UNK_021C59E8 - ldr r1, [r0, #0x8] - ldr r0, _0202E33C ; =0x00000CBC - ldr r0, [r1, r0] - mov r1, #0x0 - bl MI_CpuFill8 - ldr r2, _0202E334 ; =UNK_021C59E8 - mov r1, #0x33 - ldr r3, _0202E340 ; =0x00000333 - ldr r0, [r2, #0x8] - lsl r1, r1, #0x6 - str r3, [r0, r1] - add r0, r1, #0x0 - ldr r3, [r2, #0x8] - sub r0, #0x8 - str r4, [r3, r0] - ldr r0, [r2, #0x8] - sub r1, #0x18 - add r0, r0, r1 - bl MailMsg_init - bl FUN_0202E500 -_0202E332: - pop {r4, pc} - .balign 4 -_0202E334: .word UNK_021C59E8 -_0202E338: .word 0x00000CA4 -_0202E33C: .word 0x00000CBC -_0202E340: .word 0x00000333 - - thumb_func_start FUN_0202E344 -FUN_0202E344: ; 0x0202E344 - ldr r0, _0202E354 ; =UNK_021C59E8 - ldr r0, [r0, #0x8] - cmp r0, #0x0 - beq _0202E350 - mov r0, #0x1 - bx lr -_0202E350: - mov r0, #0x0 - bx lr - .balign 4 -_0202E354: .word UNK_021C59E8 - - thumb_func_start FUN_0202E358 -FUN_0202E358: ; 0x0202E358 - push {r4-r5} - mov r5, #0x0 - cmp r2, #0x0 - ble _0202E378 -_0202E360: - ldrb r4, [r0, #0x0] - ldrb r3, [r1, #0x0] - cmp r4, r3 - beq _0202E36E - mov r0, #0x0 - pop {r4-r5} - bx lr -_0202E36E: - add r5, r5, #0x1 - add r0, r0, #0x1 - add r1, r1, #0x1 - cmp r5, r2 - blt _0202E360 -_0202E378: - mov r0, #0x1 - pop {r4-r5} - bx lr - .balign 4 - - thumb_func_start FUN_0202E380 -FUN_0202E380: ; 0x0202E380 - push {r3-r7, lr} - add r7, r0, #0x0 - bl FUN_02033534 - add r5, r0, #0x0 - bl FUN_0203354C - add r4, r7, #0x0 - add r6, r0, #0x0 - add r4, #0x50 - cmp r5, #0xe - beq _0202E3C2 - ldrb r0, [r4, #0x4] - bl FUN_0202D8B0 - cmp r0, #0x0 - beq _0202E3AC - add r0, r5, #0x0 - bl FUN_0202D8B0 - cmp r0, #0x0 - bne _0202E3C2 -_0202E3AC: - add r0, r4, #0x0 - add r0, #0x54 - ldrb r0, [r0, #0x0] - cmp r0, #0x0 - beq _0202E3BC - ldrb r0, [r4, #0x4] - cmp r0, #0xa - beq _0202E460 -_0202E3BC: - ldrb r0, [r4, #0x4] - cmp r0, r5 - bne _0202E460 -_0202E3C2: - cmp r5, #0xe - beq _0202E3CC - ldrb r0, [r4, #0x5] - cmp r0, r6 - bne _0202E460 -_0202E3CC: - mov r6, #0x0 - add r4, r6, #0x0 - add r5, r6, #0x0 -_0202E3D2: - ldr r0, _0202E464 ; =UNK_021C59E8 - ldr r1, _0202E468 ; =0x00000C84 - ldr r0, [r0, #0x8] - add r2, r0, r4 - ldrh r1, [r2, r1] - cmp r1, #0x0 - beq _0202E412 - add r0, #0x58 - add r0, r0, r5 - add r1, r7, #0x4 - mov r2, #0x6 - bl FUN_0202E358 - cmp r0, #0x0 - beq _0202E412 - ldr r2, _0202E464 ; =UNK_021C59E8 - lsl r1, r6, #0x1 - ldr r3, [r2, #0x8] - mov r0, #0x96 - add r3, r3, r1 - ldr r1, _0202E468 ; =0x00000C84 - strh r0, [r3, r1] - ldr r3, [r2, #0x8] - mov r2, #0xc0 - add r1, r6, #0x0 - add r3, #0x54 - mul r1, r2 - add r0, r7, #0x0 - add r1, r3, r1 - bl MI_CpuCopy8 - pop {r3-r7, pc} -_0202E412: - add r6, r6, #0x1 - add r4, r4, #0x2 - add r5, #0xc0 - cmp r6, #0x10 - blt _0202E3D2 - ldr r0, _0202E464 ; =UNK_021C59E8 - ldr r2, _0202E468 ; =0x00000C84 - ldr r0, [r0, #0x8] - mov r1, #0x0 - add r4, r0, #0x0 -_0202E426: - ldrh r3, [r4, r2] - cmp r3, #0x0 - beq _0202E434 - add r1, r1, #0x1 - add r4, r4, #0x2 - cmp r1, #0x10 - blt _0202E426 -_0202E434: - cmp r1, #0x10 - bge _0202E460 - lsl r2, r1, #0x1 - add r2, r0, r2 - ldr r0, _0202E468 ; =0x00000C84 - mov r3, #0x96 - strh r3, [r2, r0] - ldr r2, _0202E464 ; =UNK_021C59E8 - add r3, r1, #0x0 - ldr r4, [r2, #0x8] - mov r2, #0xc0 - add r4, #0x54 - mul r3, r2 - add r0, r7, #0x0 - add r1, r4, r3 - bl MI_CpuCopy8 - ldr r0, _0202E464 ; =UNK_021C59E8 - mov r2, #0x1 - ldr r1, [r0, #0x8] - ldr r0, _0202E46C ; =0x00000CB4 - strb r2, [r1, r0] -_0202E460: - pop {r3-r7, pc} - nop -_0202E464: .word UNK_021C59E8 -_0202E468: .word 0x00000C84 -_0202E46C: .word 0x00000CB4 - - thumb_func_start FUN_0202E470 -FUN_0202E470: ; 0x0202E470 - push {r3, lr} - cmp r1, #0x0 - beq _0202E47A - bl OS_Terminate -_0202E47A: - ldr r0, _0202E484 ; =UNK_021C59E8 - mov r1, #0x2 - str r1, [r0, #0x4] - pop {r3, pc} - nop -_0202E484: .word UNK_021C59E8 - - thumb_func_start FUN_0202E488 -FUN_0202E488: ; 0x0202E488 - ldr r0, _0202E494 ; =UNK_021C59E8 - mov r1, #0x0 - str r1, [r0, #0x4] - ldr r3, _0202E498 ; =FUN_02016454 - mov r0, #0x4 - bx r3 - .balign 4 -_0202E494: .word UNK_021C59E8 -_0202E498: .word FUN_02016454 - - thumb_func_start FUN_0202E49C -FUN_0202E49C: ; 0x0202E49C - push {r3, lr} - mov r0, #0x4 - bl FUN_02016444 - ldr r0, _0202E4C0 ; =UNK_021C59E8 - mov r1, #0x1 - str r1, [r0, #0x4] - ldr r1, _0202E4C4 ; =FUN_0202E470 - mov r0, #0x8 - mov r2, #0x0 - bl FUN_02090DB8 - cmp r0, #0x1 - beq _0202E4BC - bl OS_Terminate -_0202E4BC: - pop {r3, pc} - nop -_0202E4C0: .word UNK_021C59E8 -_0202E4C4: .word FUN_0202E470 - - thumb_func_start FUN_0202E4C8 -FUN_0202E4C8: ; 0x0202E4C8 - ldr r0, _0202E4D8 ; =UNK_021C59E8 - ldr r0, [r0, #0x4] - cmp r0, #0x2 - bne _0202E4D4 - mov r0, #0x1 - bx lr -_0202E4D4: - mov r0, #0x0 - bx lr - .balign 4 -_0202E4D8: .word UNK_021C59E8 - - thumb_func_start FUN_0202E4DC -FUN_0202E4DC: ; 0x0202E4DC - ldr r0, _0202E4EC ; =UNK_021C59E8 - ldr r0, [r0, #0x4] - cmp r0, #0x0 - beq _0202E4E8 - mov r0, #0x1 - bx lr -_0202E4E8: - mov r0, #0x0 - bx lr - .balign 4 -_0202E4EC: .word UNK_021C59E8 - - thumb_func_start FUN_0202E4F0 -FUN_0202E4F0: ; 0x0202E4F0 - ldr r3, _0202E4F8 ; =FUN_02090CC8 - ldr r0, _0202E4FC ; =FUN_0202E488 - mov r1, #0x0 - bx r3 - .balign 4 -_0202E4F8: .word FUN_02090CC8 -_0202E4FC: .word FUN_0202E488 - - thumb_func_start FUN_0202E500 -FUN_0202E500: ; 0x0202E500 - push {r3, lr} - ldr r1, _0202E534 ; =UNK_021C59E8 - mov r0, #0xcb - ldr r2, [r1, #0x8] - mov r3, #0x0 - lsl r0, r0, #0x4 - str r3, [r2, r0] - ldr r1, [r1, #0x8] - sub r0, #0xc - ldr r2, [r1, r0] - mov r0, #0x1f - add r1, r2, #0x0 - and r1, r0 - mov r0, #0x20 - sub r0, r0, r1 - add r0, r2, r0 - bl FUN_0202CE64 - ldr r0, _0202E534 ; =UNK_021C59E8 - ldr r1, [r0, #0x8] - mov r0, #0x33 - lsl r0, r0, #0x6 - ldr r0, [r1, r0] - bl FUN_0202CB70 - pop {r3, pc} - .balign 4 -_0202E534: .word UNK_021C59E8 - - thumb_func_start FUN_0202E538 -FUN_0202E538: ; 0x0202E538 - push {r3-r5, lr} - mov r4, #0x0 - ldr r2, _0202E564 ; =UNK_021C59E8 - ldr r0, _0202E568 ; =0x00000C84 - add r5, r4, #0x0 - add r1, r4, #0x0 -_0202E544: - ldr r3, [r2, #0x8] - add r4, r4, #0x1 - add r3, r3, r5 - add r5, r5, #0x2 - strh r1, [r3, r0] - cmp r4, #0x10 - blt _0202E544 - ldr r0, _0202E564 ; =UNK_021C59E8 - mov r2, #0x3 - ldr r0, [r0, #0x8] - lsl r2, r2, #0xa - add r0, #0x54 - bl MI_CpuFill8 - pop {r3-r5, pc} - nop -_0202E564: .word UNK_021C59E8 -_0202E568: .word 0x00000C84 - - thumb_func_start FUN_0202E56C -FUN_0202E56C: ; 0x0202E56C - push {r3-r4} - ldr r1, _0202E58C ; =UNK_021C59E8 - lsl r0, r0, #0x18 - ldr r2, [r1, #0x8] - ldr r4, _0202E590 ; =0x00000DAD - lsr r0, r0, #0x18 - ldrb r1, [r2, r4] - mov r3, #0x8 - lsl r0, r0, #0x1f - bic r1, r3 - lsr r0, r0, #0x1c - orr r0, r1 - strb r0, [r2, r4] - pop {r3-r4} - bx lr - nop -_0202E58C: .word UNK_021C59E8 -_0202E590: .word 0x00000DAD - - thumb_func_start FUN_0202E594 -FUN_0202E594: ; 0x0202E594 - push {r4-r5} - ldr r1, _0202E5F0 ; =UNK_021C59E8 - ldr r0, _0202E5F4 ; =0x00000CB4 - ldr r3, [r1, #0x8] - mov r2, #0x0 - strb r2, [r3, r0] - add r3, r0, #0x0 - ldr r5, [r1, #0x8] - add r3, #0xf9 - ldrb r4, [r5, r3] - mov r3, #0x1 - bic r4, r3 - add r3, r0, #0x0 - add r3, #0xf9 - strb r4, [r5, r3] - add r3, r0, #0x0 - ldr r5, [r1, #0x8] - add r3, #0xf9 - ldrb r4, [r5, r3] - mov r3, #0x4 - bic r4, r3 - add r3, r0, #0x0 - add r3, #0xf9 - strb r4, [r5, r3] - add r3, r0, #0x0 - ldr r4, [r1, #0x8] - add r3, #0xf6 - strb r2, [r4, r3] - add r3, r0, #0x0 - ldr r5, [r1, #0x8] - add r3, #0xf9 - ldrb r4, [r5, r3] - mov r3, #0x10 - bic r4, r3 - add r3, r0, #0x0 - add r3, #0xf9 - strb r4, [r5, r3] - add r3, r0, #0x0 - ldr r4, [r1, #0x8] - add r3, #0xf8 - strb r2, [r4, r3] - ldr r1, [r1, #0x8] - add r0, #0xf7 - strb r2, [r1, r0] - pop {r4-r5} - bx lr - .balign 4 -_0202E5F0: .word UNK_021C59E8 -_0202E5F4: .word 0x00000CB4 - - thumb_func_start FUN_0202E5F8 -FUN_0202E5F8: ; 0x0202E5F8 - push {r3-r5, lr} - add r5, r1, #0x0 - add r4, r2, #0x0 - bl FUN_0202E594 - add r0, r5, #0x0 - bl FUN_0202E56C - bl FUN_0202D2F4 - ldr r0, _0202E65C ; =UNK_021C59E8 - ldr r1, [r0, #0x8] - ldr r0, _0202E660 ; =0x00000DAB - ldrb r0, [r1, r0] - cmp r0, #0x0 - bne _0202E62A - ldr r0, _0202E664 ; =FUN_020303BC - mov r1, #0xe - bl FUN_0202D0A0 - ldr r0, _0202E65C ; =UNK_021C59E8 - mov r2, #0x1 - ldr r1, [r0, #0x8] - ldr r0, _0202E660 ; =0x00000DAB - strb r2, [r1, r0] -_0202E62A: - ldr r0, _0202E65C ; =UNK_021C59E8 - ldr r3, _0202E668 ; =0x00000DAD - ldr r1, [r0, #0x8] - mov r2, #0x20 - ldrb r0, [r1, r3] - bic r0, r2 - lsl r2, r4, #0x18 - lsr r2, r2, #0x18 - lsl r2, r2, #0x1f - lsr r2, r2, #0x1a - orr r0, r2 - strb r0, [r1, r3] - bl FUN_0202CBD4 - cmp r0, #0x1 - bne _0202E656 - bl FUN_0202CBFC - cmp r0, #0x0 - beq _0202E656 - mov r0, #0x1 - pop {r3-r5, pc} -_0202E656: - mov r0, #0x0 - pop {r3-r5, pc} - nop -_0202E65C: .word UNK_021C59E8 -_0202E660: .word 0x00000DAB -_0202E664: .word FUN_020303BC -_0202E668: .word 0x00000DAD - - thumb_func_start FUN_0202E66C -FUN_0202E66C: ; 0x0202E66C - push {r4, lr} - sub sp, #0x8 - add r4, r1, #0x0 - bl FUN_0202E594 - cmp r4, #0x0 - beq _0202E67E - bl FUN_0202E538 -_0202E67E: - ldr r0, _0202E6DC ; =UNK_021C59E8 - ldr r1, [r0, #0x8] - ldr r0, _0202E6E0 ; =0x00000DAB - ldrb r0, [r1, r0] - cmp r0, #0x0 - bne _0202E69C - ldr r0, _0202E6E4 ; =FUN_02030238 - mov r1, #0xe - bl FUN_0202D0A0 - ldr r0, _0202E6DC ; =UNK_021C59E8 - mov r2, #0x1 - ldr r1, [r0, #0x8] - ldr r0, _0202E6E0 ; =0x00000DAB - strb r2, [r1, r0] -_0202E69C: - bl FUN_0202CBD4 - cmp r0, #0x1 - bne _0202E6D4 - ldr r2, _0202E6E8 ; =UNK_020EEC40 - add r0, sp, #0x0 - ldrb r3, [r2, #0x0] - add r1, sp, #0x0 - strb r3, [r0, #0x0] - ldrb r3, [r2, #0x1] - strb r3, [r0, #0x1] - ldrb r3, [r2, #0x2] - strb r3, [r0, #0x2] - ldrb r3, [r2, #0x3] - strb r3, [r0, #0x3] - ldrb r3, [r2, #0x4] - ldrb r2, [r2, #0x5] - strb r3, [r0, #0x4] - strb r2, [r0, #0x5] - ldr r0, _0202E6EC ; =FUN_0202E380 - mov r2, #0x0 - bl FUN_0202C570 - cmp r0, #0x0 - beq _0202E6D4 - add sp, #0x8 - mov r0, #0x1 - pop {r4, pc} -_0202E6D4: - mov r0, #0x0 - add sp, #0x8 - pop {r4, pc} - nop -_0202E6DC: .word UNK_021C59E8 -_0202E6E0: .word 0x00000DAB -_0202E6E4: .word FUN_02030238 -_0202E6E8: .word UNK_020EEC40 -_0202E6EC: .word FUN_0202E380 - - thumb_func_start FUN_0202E6F0 -FUN_0202E6F0: ; 0x0202E6F0 - push {r3, lr} - ldr r0, _0202E77C ; =UNK_021C59E8 - ldr r1, [r0, #0x8] - cmp r1, #0x0 - bne _0202E6FE - mov r0, #0x1 - pop {r3, pc} -_0202E6FE: - ldr r0, _0202E780 ; =0x00000DAC - ldrb r0, [r1, r0] - cmp r0, #0x0 - beq _0202E710 - cmp r0, #0x1 - beq _0202E740 - cmp r0, #0x2 - beq _0202E758 - b _0202E776 -_0202E710: - bl FUN_0202D21C - cmp r0, #0x0 - beq _0202E728 - bl FUN_0202C770 - ldr r0, _0202E77C ; =UNK_021C59E8 - mov r2, #0x1 - ldr r1, [r0, #0x8] - ldr r0, _0202E780 ; =0x00000DAC - strb r2, [r1, r0] - b _0202E776 -_0202E728: - bl FUN_0202D1E4 - cmp r0, #0x0 - bne _0202E776 - bl FUN_0202D100 - ldr r0, _0202E77C ; =UNK_021C59E8 - mov r2, #0x2 - ldr r1, [r0, #0x8] - ldr r0, _0202E780 ; =0x00000DAC - strb r2, [r1, r0] - b _0202E776 -_0202E740: - bl FUN_0202D1E4 - cmp r0, #0x0 - bne _0202E776 - bl FUN_0202D100 - ldr r0, _0202E77C ; =UNK_021C59E8 - mov r2, #0x2 - ldr r1, [r0, #0x8] - ldr r0, _0202E780 ; =0x00000DAC - strb r2, [r1, r0] - b _0202E776 -_0202E758: - bl FUN_0202D1C8 - cmp r0, #0x0 - beq _0202E764 - mov r0, #0x1 - pop {r3, pc} -_0202E764: - bl FUN_0202D200 - cmp r0, #0x0 - beq _0202E776 - ldr r0, _0202E77C ; =UNK_021C59E8 - mov r2, #0x1 - ldr r1, [r0, #0x8] - ldr r0, _0202E780 ; =0x00000DAC - strb r2, [r1, r0] -_0202E776: - mov r0, #0x0 - pop {r3, pc} - nop -_0202E77C: .word UNK_021C59E8 -_0202E780: .word 0x00000DAC - - thumb_func_start FUN_0202E784 -FUN_0202E784: ; 0x0202E784 - push {r3, lr} - ldr r0, _0202E7A8 ; =UNK_021C59E8 - ldr r2, [r0, #0x8] - cmp r2, #0x0 - beq _0202E7A2 - ldr r0, _0202E7AC ; =0x00000DAA - ldrb r1, [r2, r0] - cmp r1, #0x0 - bne _0202E7A2 - mov r1, #0x1 - strb r1, [r2, r0] - bl FUN_0202D100 - mov r0, #0x1 - pop {r3, pc} -_0202E7A2: - mov r0, #0x0 - pop {r3, pc} - nop -_0202E7A8: .word UNK_021C59E8 -_0202E7AC: .word 0x00000DAA - - thumb_func_start FUN_0202E7B0 -FUN_0202E7B0: ; 0x0202E7B0 - push {r3, lr} - ldr r1, _0202E7D0 ; =UNK_021C59E8 - ldr r2, [r1, #0x8] - cmp r2, #0x0 - beq _0202E7CE - cmp r0, #0x0 - ldr r0, _0202E7D4 ; =0x00000DAA - beq _0202E7C6 - mov r1, #0x2 - strb r1, [r2, r0] - pop {r3, pc} -_0202E7C6: - mov r1, #0x0 - strb r1, [r2, r0] - bl FUN_0202E500 -_0202E7CE: - pop {r3, pc} - .balign 4 -_0202E7D0: .word UNK_021C59E8 -_0202E7D4: .word 0x00000DAA - - thumb_func_start FUN_0202E7D8 -FUN_0202E7D8: ; 0x0202E7D8 - push {r3, lr} - ldr r0, _0202E804 ; =UNK_021C59E8 - ldr r1, [r0, #0x8] - ldr r0, _0202E808 ; =0x00000CBC - ldr r0, [r1, r0] - bl FreeToHeap - ldr r0, _0202E804 ; =UNK_021C59E8 - ldr r1, [r0, #0x8] - ldr r0, _0202E80C ; =0x00000CA4 - ldr r0, [r1, r0] - bl FreeToHeap - ldr r0, _0202E804 ; =UNK_021C59E8 - ldr r0, [r0, #0x8] - bl FreeToHeap - ldr r0, _0202E804 ; =UNK_021C59E8 - mov r1, #0x0 - str r1, [r0, #0x8] - pop {r3, pc} - nop -_0202E804: .word UNK_021C59E8 -_0202E808: .word 0x00000CBC -_0202E80C: .word 0x00000CA4 - - thumb_func_start FUN_0202E810 -FUN_0202E810: ; 0x0202E810 - push {r4, lr} - bl FUN_02030F40 - cmp r0, #0x0 - bne _0202E81E - mov r0, #0x0 - pop {r4, pc} -_0202E81E: - ldr r1, _0202E83C ; =UNK_021C59E8 - mov r0, #0x0 - ldr r4, [r1, #0x8] - ldr r1, _0202E840 ; =0x00000C84 - add r3, r0, #0x0 -_0202E828: - ldrh r2, [r4, r1] - cmp r2, #0x0 - beq _0202E830 - add r0, r0, #0x1 -_0202E830: - add r3, r3, #0x1 - add r4, r4, #0x2 - cmp r3, #0x10 - blt _0202E828 - pop {r4, pc} - nop -_0202E83C: .word UNK_021C59E8 -_0202E840: .word 0x00000C84 - - thumb_func_start FUN_0202E844 -FUN_0202E844: ; 0x0202E844 - push {r3-r5, lr} - ldr r1, _0202E870 ; =UNK_021C59E8 - mov r4, #0x0 - ldr r5, [r1, #0x8] - ldr r1, _0202E874 ; =0x00000C84 - add r3, r4, #0x0 -_0202E850: - ldrh r2, [r5, r1] - cmp r2, #0x0 - beq _0202E860 - cmp r4, r0 - bne _0202E85E - add r0, r3, #0x0 - pop {r3-r5, pc} -_0202E85E: - add r4, r4, #0x1 -_0202E860: - add r3, r3, #0x1 - add r5, r5, #0x2 - cmp r3, #0x10 - blt _0202E850 - bl ErrorHandling - mov r0, #0x0 - pop {r3-r5, pc} - .balign 4 -_0202E870: .word UNK_021C59E8 -_0202E874: .word 0x00000C84 - - thumb_func_start FUN_0202E878 -FUN_0202E878: ; 0x0202E878 - ldr r0, _0202E884 ; =UNK_021C59E8 - ldr r1, [r0, #0x8] - ldr r0, _0202E888 ; =0x00000CB4 - ldrb r0, [r1, r0] - bx lr - nop -_0202E884: .word UNK_021C59E8 -_0202E888: .word 0x00000CB4 - - thumb_func_start FUN_0202E88C -FUN_0202E88C: ; 0x0202E88C - ldr r0, _0202E898 ; =UNK_021C59E8 - mov r2, #0x0 - ldr r1, [r0, #0x8] - ldr r0, _0202E89C ; =0x00000CB4 - strb r2, [r1, r0] - bx lr - .balign 4 -_0202E898: .word UNK_021C59E8 -_0202E89C: .word 0x00000CB4 - - thumb_func_start FUN_0202E8A0 -FUN_0202E8A0: ; 0x0202E8A0 - ldr r1, _0202E8C8 ; =UNK_021C59E8 - ldr r3, [r1, #0x8] - lsl r1, r0, #0x1 - add r2, r3, r1 - ldr r1, _0202E8CC ; =0x00000C84 - ldrh r1, [r2, r1] - cmp r1, #0x0 - beq _0202E8C2 - mov r1, #0xc0 - mul r1, r0 - add r0, r3, r1 - add r0, #0xaa - ldrb r0, [r0, #0x0] - cmp r0, #0x0 - bne _0202E8C4 - mov r0, #0x1 - bx lr -_0202E8C2: - mov r0, #0x0 -_0202E8C4: - bx lr - nop -_0202E8C8: .word UNK_021C59E8 -_0202E8CC: .word 0x00000C84 - - thumb_func_start FUN_0202E8D0 -FUN_0202E8D0: ; 0x0202E8D0 - push {r3-r5, lr} - add r5, r0, #0x0 - mov r4, #0xf -_0202E8D6: - add r0, r4, #0x0 - bl FUN_0202E8A0 - cmp r0, r5 - ble _0202E8E8 - cmp r0, #0x8 - bge _0202E8E8 - add r0, r4, #0x0 - pop {r3-r5, pc} -_0202E8E8: - sub r4, r4, #0x1 - bpl _0202E8D6 - mov r0, #0x0 - mvn r0, r0 - pop {r3-r5, pc} - .balign 4 - - thumb_func_start FUN_0202E8F4 -FUN_0202E8F4: ; 0x0202E8F4 - push {r3-r7, lr} - bl FUN_0202E810 - cmp r0, #0x0 - bne _0202E904 - mov r0, #0x0 - mvn r0, r0 - pop {r3-r7, pc} -_0202E904: - mov r5, #0x2d - ldr r7, _0202E948 ; =UNK_021C59E8 - mov r6, #0xf - mov r4, #0x1e - lsl r5, r5, #0x6 -_0202E90E: - ldr r0, [r7, #0x8] - ldr r1, _0202E94C ; =0x00000C84 - add r2, r0, r4 - ldrh r1, [r2, r1] - cmp r1, #0x0 - beq _0202E938 - add r0, #0x58 - add r0, r0, r5 - bl FUN_0202EFE4 - cmp r0, #0x0 - beq _0202E938 - add r0, r6, #0x0 - bl FUN_0202E8A0 - cmp r0, #0x1 - ble _0202E938 - cmp r0, #0x8 - bge _0202E938 - add r0, r6, #0x0 - pop {r3-r7, pc} -_0202E938: - sub r4, r4, #0x2 - sub r5, #0xc0 - sub r6, r6, #0x1 - bpl _0202E90E - mov r0, #0x0 - mvn r0, r0 - pop {r3-r7, pc} - nop -_0202E948: .word UNK_021C59E8 -_0202E94C: .word 0x00000C84 - - thumb_func_start FUN_0202E950 -FUN_0202E950: ; 0x0202E950 - push {r3-r7, lr} - bl FUN_0202E810 - cmp r0, #0x0 - bne _0202E960 - mov r0, #0x0 - mvn r0, r0 - pop {r3-r7, pc} -_0202E960: - mov r5, #0x2d - ldr r7, _0202E9A4 ; =UNK_021C59E8 - mov r6, #0xf - mov r4, #0x1e - lsl r5, r5, #0x6 -_0202E96A: - ldr r0, [r7, #0x8] - ldr r1, _0202E9A8 ; =0x00000C84 - add r2, r0, r4 - ldrh r1, [r2, r1] - cmp r1, #0x0 - beq _0202E986 - add r0, #0x58 - add r0, r0, r5 - bl FUN_0202EFE4 - cmp r0, #0x0 - beq _0202E986 - add r0, r6, #0x0 - pop {r3-r7, pc} -_0202E986: - sub r4, r4, #0x2 - sub r5, #0xc0 - sub r6, r6, #0x1 - bpl _0202E96A - mov r0, #0x1 - bl FUN_0202E8D0 - mov r1, #0x0 - mvn r1, r1 - cmp r0, r1 - bne _0202E9A2 - mov r0, #0x0 - bl FUN_0202E8D0 -_0202E9A2: - pop {r3-r7, pc} - .balign 4 -_0202E9A4: .word UNK_021C59E8 -_0202E9A8: .word 0x00000C84 - - thumb_func_start FUN_0202E9AC -FUN_0202E9AC: ; 0x0202E9AC - push {r4-r6, lr} - add r4, r1, #0x0 - ldr r1, _0202E9E0 ; =UNK_021C59E8 - mov r5, #0x0 - ldr r6, [r1, #0x8] - ldr r1, _0202E9E4 ; =0x00000C84 - add r3, r5, #0x0 -_0202E9BA: - ldrh r2, [r6, r1] - cmp r2, #0x0 - beq _0202E9D4 - cmp r0, r5 - bne _0202E9D2 - add r0, r3, #0x0 - bl FUN_0202EF84 - add r1, r4, #0x0 - bl PlayerProfile_Copy - pop {r4-r6, pc} -_0202E9D2: - add r5, r5, #0x1 -_0202E9D4: - add r3, r3, #0x1 - add r6, r6, #0x2 - cmp r3, #0x10 - blt _0202E9BA - pop {r4-r6, pc} - nop -_0202E9E0: .word UNK_021C59E8 -_0202E9E4: .word 0x00000C84 - - thumb_func_start FUN_0202E9E8 -FUN_0202E9E8: ; 0x0202E9E8 - push {r3-r5, lr} - add r5, r0, #0x0 - bl FUN_0202CBD4 - cmp r0, #0x2 - bne _0202E9FC - bl FUN_0202C770 - mov r0, #0x0 - pop {r3-r5, pc} -_0202E9FC: - bl FUN_0202CBD4 - cmp r0, #0x1 - bne _0202EA48 - bl FUN_02033534 - mov r1, #0xc0 - add r4, r5, #0x0 - mul r4, r1 - ldr r1, _0202EA4C ; =UNK_021C59E8 - ldr r3, [r1, #0x8] - add r1, r3, r4 - add r1, #0x8a - ldrh r2, [r1, #0x0] - ldr r1, _0202EA50 ; =0x00000DA8 - strb r2, [r3, r1] - bl FUN_0202D8B0 - cmp r0, #0x0 - beq _0202EA36 - ldr r1, _0202EA4C ; =UNK_021C59E8 - mov r0, #0x1 - ldr r1, [r1, #0x8] - mov r2, #0x0 - add r1, #0x58 - add r1, r1, r4 - bl FUN_0202C4D8 - b _0202EA44 -_0202EA36: - ldr r1, _0202EA4C ; =UNK_021C59E8 - mov r0, #0x1 - ldr r1, [r1, #0x8] - add r1, #0x54 - add r1, r1, r4 - bl FUN_0202D034 -_0202EA44: - mov r0, #0x1 - pop {r3-r5, pc} -_0202EA48: - mov r0, #0x0 - pop {r3-r5, pc} - .balign 4 -_0202EA4C: .word UNK_021C59E8 -_0202EA50: .word 0x00000DA8 - - thumb_func_start FUN_0202EA54 -FUN_0202EA54: ; 0x0202EA54 - push {r4-r7} - mov r4, #0x0 - ldr r1, _0202EA90 ; =UNK_021C59E8 - ldr r0, _0202EA94 ; =0x00000C84 - add r5, r4, #0x0 - mov r2, #0x1 -_0202EA60: - ldr r3, [r1, #0x8] - add r3, r3, r5 - ldrh r6, [r3, r0] - cmp r6, #0x0 - beq _0202EA84 - beq _0202EA84 - ldr r6, _0202EA94 ; =0x00000C84 - ldrh r6, [r3, r6] - sub r7, r6, #0x1 - ldr r6, _0202EA94 ; =0x00000C84 - strh r7, [r3, r6] - ldr r3, [r1, #0x8] - add r7, r3, r5 - ldrh r6, [r7, r6] - cmp r6, #0x0 - bne _0202EA84 - ldr r6, _0202EA98 ; =0x00000CB4 - strb r2, [r3, r6] -_0202EA84: - add r4, r4, #0x1 - add r5, r5, #0x2 - cmp r4, #0x10 - blt _0202EA60 - pop {r4-r7} - bx lr - .balign 4 -_0202EA90: .word UNK_021C59E8 -_0202EA94: .word 0x00000C84 -_0202EA98: .word 0x00000CB4 - - thumb_func_start FUN_0202EA9C -FUN_0202EA9C: ; 0x0202EA9C - push {r3-r5, lr} - bl FUN_02033534 - add r5, r0, #0x0 - bl FUN_0202EF70 - add r4, r0, #0x0 - cmp r5, #0xf - beq _0202EB24 - ldr r0, _0202EB6C ; =UNK_021C59E8 - ldr r1, [r0, #0x8] - ldr r0, _0202EB70 ; =0x00000CC4 - add r5, r1, r0 - bl FUN_02023AC4 - cmp r0, #0x20 - ble _0202EAC2 - bl ErrorHandling -_0202EAC2: - bl PlayerProfile_sizeof - cmp r0, #0x20 - beq _0202EACE - bl ErrorHandling -_0202EACE: - bl PlayerProfile_sizeof - add r1, r5, #0x0 - add r2, r0, #0x0 - add r0, r4, #0x0 - add r1, #0x10 - bl MI_CpuCopy8 - bl FUN_02023AC4 - add r2, r0, #0x0 - ldr r0, _0202EB6C ; =UNK_021C59E8 - ldr r1, [r0, #0x8] - ldr r0, _0202EB74 ; =0x00000CBC - ldr r0, [r1, r0] - add r1, r5, #0x0 - add r1, #0x30 - bl MI_CpuCopy8 - add r0, r4, #0x0 - bl PlayerProfile_GetTrainerID - str r0, [r5, #0x0] - bl FUN_02033534 - strb r0, [r5, #0x4] - bl FUN_0203354C - strb r0, [r5, #0x5] - ldr r0, _0202EB6C ; =UNK_021C59E8 - mov r2, #0x8 - ldr r1, [r0, #0x8] - ldr r0, _0202EB78 ; =0x00000CA8 - add r0, r1, r0 - add r1, r5, #0x0 - add r1, #0x8 - bl MI_CpuCopy8 - bl FUN_0202D358 - add r5, #0x54 - strb r0, [r5, #0x0] - b _0202EB4E -_0202EB24: - ldr r1, _0202EB6C ; =UNK_021C59E8 - ldr r4, [r1, #0x8] - ldr r1, _0202EB70 ; =0x00000CC4 - add r5, r4, r1 - bl PlayerProfile_GetTrainerID - ldr r1, _0202EB70 ; =0x00000CC4 - str r0, [r4, r1] - bl FUN_02033534 - strb r0, [r5, #0x4] - bl FUN_0203354C - strb r0, [r5, #0x5] - ldr r0, _0202EB6C ; =UNK_021C59E8 - add r5, #0x8 - ldr r0, [r0, #0x8] - add r1, r5, #0x0 - mov r2, #0x54 - bl MI_CpuCopy8 -_0202EB4E: - ldr r0, _0202EB6C ; =UNK_021C59E8 - ldr r1, [r0, #0x8] - ldr r0, _0202EB70 ; =0x00000CC4 - add r0, r1, r0 - mov r1, #0x5c - bl DC_FlushRange - ldr r0, _0202EB6C ; =UNK_021C59E8 - ldr r1, [r0, #0x8] - ldr r0, _0202EB70 ; =0x00000CC4 - add r0, r1, r0 - mov r1, #0x5c - bl FUN_0202CB7C - pop {r3-r5, pc} - .balign 4 -_0202EB6C: .word UNK_021C59E8 -_0202EB70: .word 0x00000CC4 -_0202EB74: .word 0x00000CBC -_0202EB78: .word 0x00000CA8 - - thumb_func_start FUN_0202EB7C -FUN_0202EB7C: ; 0x0202EB7C - push {r4, lr} - ldr r0, _0202EBC8 ; =UNK_021C59E8 - ldr r1, [r0, #0x8] - ldr r0, _0202EBCC ; =0x00000CC4 - add r4, r1, r0 - bl FUN_0202EDB8 - ldrb r1, [r4, #0x6] - cmp r1, r0 - beq _0202EBC6 - bl FUN_0202EDB8 - strb r0, [r4, #0x6] - ldr r0, _0202EBC8 ; =UNK_021C59E8 - ldr r1, [r0, #0x8] - ldr r0, _0202EBCC ; =0x00000CC4 - add r0, r1, r0 - mov r1, #0x5c - bl DC_FlushRange - ldr r0, _0202EBC8 ; =UNK_021C59E8 - ldr r1, [r0, #0x8] - ldr r0, _0202EBCC ; =0x00000CC4 - add r0, r1, r0 - mov r1, #0x5c - bl FUN_0202CB7C - ldr r3, _0202EBC8 ; =UNK_021C59E8 - ldr r2, _0202EBCC ; =0x00000CC4 - ldr r4, [r3, #0x8] - ldrh r3, [r3, #0x0] - add r0, r4, r2 - sub r2, r2, #0x4 - ldr r2, [r4, r2] - mov r1, #0x5c - bl FUN_0202D240 -_0202EBC6: - pop {r4, pc} - .balign 4 -_0202EBC8: .word UNK_021C59E8 -_0202EBCC: .word 0x00000CC4 - - thumb_func_start FUN_0202EBD0 -FUN_0202EBD0: ; 0x0202EBD0 - push {r3-r5, lr} - sub sp, #0x8 - add r4, r0, #0x0 - bl FUN_0202CBD4 - add r5, r0, #0x0 - bl FUN_0202DF54 - bl FUN_0202EB7C - bl FUN_0202D19C - cmp r0, #0x0 - bne _0202EC0C - bl FUN_0202EE24 - cmp r0, #0x0 - bne _0202EC0C - ldr r0, _0202ED50 ; =UNK_021C59E8 - ldr r2, [r0, #0x8] - ldr r0, _0202ED54 ; =0x00000DAD - ldrb r1, [r2, r0] - lsl r3, r1, #0x1d - lsr r3, r3, #0x1f - beq _0202EC0C - mov r3, #0x1 - bic r1, r3 - mov r3, #0x1 - orr r1, r3 - strb r1, [r2, r0] -_0202EC0C: - ldr r0, _0202ED50 ; =UNK_021C59E8 - ldr r1, _0202ED58 ; =0x0000FFFF - ldr r3, [r0, #0x8] - ldr r0, _0202ED5C ; =0x00000DA6 - ldrh r2, [r3, r0] - cmp r2, r1 - bne _0202EC1C - strh r4, [r3, r0] -_0202EC1C: - ldr r0, _0202ED50 ; =UNK_021C59E8 - ldr r2, [r0, #0x8] - ldr r0, _0202ED54 ; =0x00000DAD - ldrb r1, [r2, r0] - lsl r3, r1, #0x1e - lsr r3, r3, #0x1f - beq _0202EC3C - sub r3, r0, #0x7 - ldrh r3, [r2, r3] - cmp r3, r4 - bls _0202EC3C - mov r3, #0x1 - bic r1, r3 - mov r3, #0x1 - orr r1, r3 - strb r1, [r2, r0] -_0202EC3C: - bl FUN_0202CBE8 - cmp r0, #0x19 - bne _0202EC4A - mov r0, #0x0 - bl FUN_020335D0 -_0202EC4A: - cmp r5, #0x9 - bhi _0202ED4C - add r0, r5, r5 - add r0, pc - ldrh r0, [r0, #0x6] - lsl r0, r0, #0x10 - asr r0, r0, #0x10 - add pc, r0 -_0202EC5A: ; jump table (using 16-bit offset) - .short _0202EC6E - _0202EC5A - 2; case 0 - .short _0202EC8E - _0202EC5A - 2; case 1 - .short _0202ED4C - _0202EC5A - 2; case 2 - .short _0202ED4C - _0202EC5A - 2; case 3 - .short _0202ED4C - _0202EC5A - 2; case 4 - .short _0202ED4C - _0202EC5A - 2; case 5 - .short _0202ED4C - _0202EC5A - 2; case 6 - .short _0202ECD2 - _0202EC5A - 2; case 7 - .short _0202ECB8 - _0202EC5A - 2; case 8 - .short _0202ECB8 - _0202EC5A - 2; case 9 -_0202EC6E: - ldr r0, _0202ED50 ; =UNK_021C59E8 - ldr r2, [r0, #0x8] - ldr r0, _0202ED60 ; =0x00000DAA - ldrb r1, [r2, r0] - cmp r1, #0x1 - bne _0202EC82 - bl FUN_0202E7D8 - add sp, #0x8 - pop {r3-r5, pc} -_0202EC82: - cmp r1, #0x2 - bne _0202ED4C - mov r1, #0x3 - strb r1, [r2, r0] - add sp, #0x8 - pop {r3-r5, pc} -_0202EC8E: - ldr r0, _0202ED50 ; =UNK_021C59E8 - ldr r1, [r0, #0x8] - ldr r0, _0202ED60 ; =0x00000DAA - ldrb r0, [r1, r0] - cmp r0, #0x1 - bne _0202ECA2 - bl FUN_0202D178 - cmp r0, #0x0 - bne _0202ED4C -_0202ECA2: - ldr r0, _0202ED50 ; =UNK_021C59E8 - ldr r1, [r0, #0x8] - ldr r0, _0202ED60 ; =0x00000DAA - ldrb r0, [r1, r0] - cmp r0, #0x2 - bne _0202ED4C - bl FUN_0202D178 - add sp, #0x8 - cmp r0, #0x0 - pop {r3-r5, pc} -_0202ECB8: - ldr r0, _0202ED50 ; =UNK_021C59E8 - ldr r3, [r0, #0x8] - cmp r3, #0x0 - beq _0202ED4C - ldr r1, _0202ED54 ; =0x00000DAD - mov r0, #0x1 - ldrb r2, [r3, r1] - add sp, #0x8 - bic r2, r0 - mov r0, #0x1 - orr r0, r2 - strb r0, [r3, r1] - pop {r3-r5, pc} -_0202ECD2: - bl FUN_0202CDA4 - ldr r3, _0202ED50 ; =UNK_021C59E8 - ldr r2, _0202ED64 ; =0x00000DA9 - ldr r4, [r3, #0x8] - ldrb r1, [r4, r2] - cmp r1, #0x0 - bne _0202ECEE - sub r1, r2, #0x5 - strh r0, [r4, r1] - ldr r0, [r3, #0x8] - mov r1, #0x5 - strb r1, [r0, r2] - b _0202ECF2 -_0202ECEE: - sub r0, r1, #0x1 - strb r0, [r4, r2] -_0202ECF2: - ldr r1, _0202ED50 ; =UNK_021C59E8 - ldr r0, _0202ED68 ; =0x00000DA4 - ldr r2, [r1, #0x8] - ldrh r5, [r2, r0] - add r0, #0x9 - ldrb r0, [r2, r0] - lsl r0, r0, #0x1c - lsr r0, r0, #0x1f - beq _0202ED0A - ldrh r0, [r1, #0x0] - add r0, r0, #0x1 - strh r0, [r1, #0x0] -_0202ED0A: - bl FUN_0202EA9C - bl FUN_02033534 - lsl r0, r0, #0x10 - lsr r0, r0, #0x10 - bl FUN_0202D858 - add r4, r0, #0x0 - bl FUN_02033534 - lsl r0, r0, #0x10 - lsr r0, r0, #0x10 - bl FUN_0202EEE8 - str r0, [sp, #0x0] - ldr r1, _0202ED50 ; =UNK_021C59E8 - ldr r0, _0202ED54 ; =0x00000DAD - ldr r2, [r1, #0x8] - add r3, r4, #0x0 - ldrb r0, [r2, r0] - add r2, r5, #0x0 - lsl r0, r0, #0x1a - lsr r0, r0, #0x1f - str r0, [sp, #0x4] - ldrh r1, [r1, #0x0] - mov r0, #0x0 - bl FUN_0202CF84 - ldr r0, _0202ED50 ; =UNK_021C59E8 - ldr r1, [r0, #0x8] - ldr r0, _0202ED6C ; =0x00000DA8 - strb r5, [r1, r0] -_0202ED4C: - add sp, #0x8 - pop {r3-r5, pc} - .balign 4 -_0202ED50: .word UNK_021C59E8 -_0202ED54: .word 0x00000DAD -_0202ED58: .word 0x0000FFFF -_0202ED5C: .word 0x00000DA6 -_0202ED60: .word 0x00000DAA -_0202ED64: .word 0x00000DA9 -_0202ED68: .word 0x00000DA4 -_0202ED6C: .word 0x00000DA8 - - thumb_func_start FUN_0202ED70 -FUN_0202ED70: ; 0x0202ED70 - push {r3, lr} - ldr r1, _0202ED80 ; =UNK_021C59E8 - ldr r1, [r1, #0x8] - cmp r1, #0x0 - beq _0202ED7E - bl FUN_0202EBD0 -_0202ED7E: - pop {r3, pc} - .balign 4 -_0202ED80: .word UNK_021C59E8 - - thumb_func_start FUN_0202ED84 -FUN_0202ED84: ; 0x0202ED84 - push {r4, lr} - add r4, r0, #0x0 - ldr r0, _0202EDB4 ; =UNK_021C59E8 - ldr r0, [r0, #0x8] - cmp r0, #0x0 - bne _0202ED94 - mov r0, #0x0 - pop {r4, pc} -_0202ED94: - bl FUN_0202CBD4 - cmp r0, #0x4 - beq _0202EDA0 - mov r0, #0x0 - pop {r4, pc} -_0202EDA0: - bl FUN_0202CB8C - mov r2, #0x1 - add r1, r2, #0x0 - lsl r1, r4 - tst r0, r1 - bne _0202EDB0 - mov r2, #0x0 -_0202EDB0: - add r0, r2, #0x0 - pop {r4, pc} - .balign 4 -_0202EDB4: .word UNK_021C59E8 - - thumb_func_start FUN_0202EDB8 -FUN_0202EDB8: ; 0x0202EDB8 - push {r3-r5, lr} - mov r4, #0x0 - add r5, r4, #0x0 -_0202EDBE: - lsl r0, r5, #0x10 - lsr r0, r0, #0x10 - bl FUN_0202ED84 - cmp r0, #0x0 - beq _0202EDCC - add r4, r4, #0x1 -_0202EDCC: - add r5, r5, #0x1 - cmp r5, #0x8 - blt _0202EDBE - add r0, r4, #0x0 - pop {r3-r5, pc} - .balign 4 - - thumb_func_start FUN_0202EDD8 -FUN_0202EDD8: ; 0x0202EDD8 - ldr r0, _0202EDF0 ; =UNK_021C59E8 - ldr r1, [r0, #0x8] - cmp r1, #0x0 - beq _0202EDEC - ldr r0, _0202EDF4 ; =0x00000DAA - ldrb r0, [r1, r0] - cmp r0, #0x3 - bne _0202EDEC - mov r0, #0x1 - bx lr -_0202EDEC: - mov r0, #0x0 - bx lr - .balign 4 -_0202EDF0: .word UNK_021C59E8 -_0202EDF4: .word 0x00000DAA - - thumb_func_start FUN_0202EDF8 -FUN_0202EDF8: ; 0x0202EDF8 - ldr r0, _0202EE08 ; =UNK_021C59E8 - ldr r0, [r0, #0x8] - cmp r0, #0x0 - beq _0202EE04 - mov r0, #0x1 - bx lr -_0202EE04: - mov r0, #0x0 - bx lr - .balign 4 -_0202EE08: .word UNK_021C59E8 - - thumb_func_start FUN_0202EE0C -FUN_0202EE0C: ; 0x0202EE0C - push {r3, lr} - ldr r0, _0202EE20 ; =UNK_021C59E8 - ldr r0, [r0, #0x8] - cmp r0, #0x0 - beq _0202EE1C - bl FUN_0202D1C8 - pop {r3, pc} -_0202EE1C: - mov r0, #0x1 - pop {r3, pc} - .balign 4 -_0202EE20: .word UNK_021C59E8 - - thumb_func_start FUN_0202EE24 -FUN_0202EE24: ; 0x0202EE24 - push {r3, lr} - ldr r0, _0202EE3C ; =UNK_021C59E8 - ldr r0, [r0, #0x8] - cmp r0, #0x0 - beq _0202EE38 - bl FUN_0202CB8C - ldr r1, _0202EE40 ; =0x0000FFFE - and r0, r1 - pop {r3, pc} -_0202EE38: - mov r0, #0x0 - pop {r3, pc} - .balign 4 -_0202EE3C: .word UNK_021C59E8 -_0202EE40: .word 0x0000FFFE - - thumb_func_start FUN_0202EE44 -FUN_0202EE44: ; 0x0202EE44 - push {r3, lr} - bl FUN_0202EE60 - cmp r0, #0x0 - beq _0202EE5A - bl FUN_0202CBE8 - cmp r0, #0x14 - bne _0202EE5A - mov r0, #0x1 - pop {r3, pc} -_0202EE5A: - mov r0, #0x0 - pop {r3, pc} - .balign 4 - - thumb_func_start FUN_0202EE60 -FUN_0202EE60: ; 0x0202EE60 - ldr r0, _0202EE7C ; =UNK_021C59E8 - ldr r1, [r0, #0x8] - cmp r1, #0x0 - beq _0202EE76 - ldr r0, _0202EE80 ; =0x00000DAD - ldrb r0, [r1, r0] - lsl r0, r0, #0x1f - lsr r0, r0, #0x1f - beq _0202EE76 - mov r0, #0x1 - bx lr -_0202EE76: - mov r0, #0x0 - bx lr - nop -_0202EE7C: .word UNK_021C59E8 -_0202EE80: .word 0x00000DAD - - thumb_func_start FUN_0202EE84 -FUN_0202EE84: ; 0x0202EE84 - push {r3-r4} - ldr r1, _0202EEA8 ; =UNK_021C59E8 - ldr r2, [r1, #0x8] - cmp r2, #0x0 - beq _0202EEA2 - ldr r4, _0202EEAC ; =0x00000DAD - lsl r0, r0, #0x18 - ldrb r1, [r2, r4] - lsr r0, r0, #0x18 - mov r3, #0x4 - lsl r0, r0, #0x1f - bic r1, r3 - lsr r0, r0, #0x1d - orr r0, r1 - strb r0, [r2, r4] -_0202EEA2: - pop {r3-r4} - bx lr - nop -_0202EEA8: .word UNK_021C59E8 -_0202EEAC: .word 0x00000DAD - - thumb_func_start FUN_0202EEB0 -FUN_0202EEB0: ; 0x0202EEB0 - push {r4-r5} - ldr r5, _0202EEDC ; =UNK_021C59E8 - ldr r2, [r5, #0x8] - cmp r2, #0x0 - beq _0202EED6 - ldr r4, _0202EEE0 ; =0x00000DAD - lsl r0, r0, #0x18 - ldrb r1, [r2, r4] - lsr r0, r0, #0x18 - mov r3, #0x2 - lsl r0, r0, #0x1f - bic r1, r3 - lsr r0, r0, #0x1e - orr r0, r1 - strb r0, [r2, r4] - ldr r2, _0202EEE4 ; =0x0000FFFF - ldr r1, [r5, #0x8] - sub r0, r4, #0x7 - strh r2, [r1, r0] -_0202EED6: - pop {r4-r5} - bx lr - nop -_0202EEDC: .word UNK_021C59E8 -_0202EEE0: .word 0x00000DAD -_0202EEE4: .word 0x0000FFFF - - thumb_func_start FUN_0202EEE8 -FUN_0202EEE8: ; 0x0202EEE8 - push {r3-r5, lr} - add r5, r0, #0x0 - bl WM_GetDispersionBeaconPeriod - add r4, r0, #0x0 - cmp r5, #0x1a - blo _0202EEFA - bl ErrorHandling -_0202EEFA: - cmp r5, #0xa - bne _0202EF04 - lsl r0, r4, #0xe - lsr r0, r0, #0x10 - pop {r3-r5, pc} -_0202EF04: - cmp r5, #0x9 - beq _0202EF0C - cmp r5, #0xd - bne _0202EF12 -_0202EF0C: - lsl r0, r4, #0xe - lsr r0, r0, #0x10 - pop {r3-r5, pc} -_0202EF12: - add r0, r4, #0x0 - pop {r3-r5, pc} - .balign 4 - - thumb_func_start FUN_0202EF18 -FUN_0202EF18: ; 0x0202EF18 - ldr r1, _0202EF3C ; =UNK_021C59E8 - ldr r3, [r1, #0x8] - cmp r3, #0x0 - beq _0202EF36 - lsl r1, r0, #0x1 - add r2, r3, r1 - ldr r1, _0202EF40 ; =0x00000C84 - ldrh r1, [r2, r1] - cmp r1, #0x0 - beq _0202EF36 - mov r1, #0xc0 - add r3, #0x54 - mul r1, r0 - add r0, r3, r1 - bx lr -_0202EF36: - mov r0, #0x0 - bx lr - nop -_0202EF3C: .word UNK_021C59E8 -_0202EF40: .word 0x00000C84 - - thumb_func_start FUN_0202EF44 -FUN_0202EF44: ; 0x0202EF44 - ldr r1, _0202EF68 ; =UNK_021C59E8 - ldr r3, [r1, #0x8] - cmp r3, #0x0 - beq _0202EF62 - lsl r1, r0, #0x1 - add r2, r3, r1 - ldr r1, _0202EF6C ; =0x00000C84 - ldrh r1, [r2, r1] - cmp r1, #0x0 - beq _0202EF62 - mov r1, #0xc0 - add r3, #0xa4 - mul r1, r0 - add r0, r3, r1 - bx lr -_0202EF62: - mov r0, #0x0 - bx lr - nop -_0202EF68: .word UNK_021C59E8 -_0202EF6C: .word 0x00000C84 - - thumb_func_start FUN_0202EF70 -FUN_0202EF70: ; 0x0202EF70 - ldr r0, _0202EF7C ; =UNK_021C59E8 - ldr r1, [r0, #0x8] - ldr r0, _0202EF80 ; =0x00000CB8 - ldr r0, [r1, r0] - bx lr - nop -_0202EF7C: .word UNK_021C59E8 -_0202EF80: .word 0x00000CB8 - - thumb_func_start FUN_0202EF84 -FUN_0202EF84: ; 0x0202EF84 - ldr r1, _0202EFA4 ; =UNK_021C59E8 - ldr r3, [r1, #0x8] - lsl r1, r0, #0x1 - add r2, r3, r1 - ldr r1, _0202EFA8 ; =0x00000C84 - ldrh r1, [r2, r1] - cmp r1, #0x0 - bne _0202EF98 - mov r0, #0x0 - bx lr -_0202EF98: - mov r1, #0xc0 - add r3, #0xa4 - mul r1, r0 - add r0, r3, r1 - add r0, #0x10 - bx lr - .balign 4 -_0202EFA4: .word UNK_021C59E8 -_0202EFA8: .word 0x00000C84 - - thumb_func_start FUN_0202EFAC -FUN_0202EFAC: ; 0x0202EFAC - push {r3-r5, lr} - add r5, r0, #0x0 - ldr r0, _0202EFDC ; =UNK_021C59E8 - add r4, r1, #0x0 - ldr r0, [r0, #0x8] - cmp r0, #0x0 - beq _0202EFD8 - cmp r4, #0x8 - blt _0202EFC2 - bl ErrorHandling -_0202EFC2: - ldr r1, _0202EFDC ; =UNK_021C59E8 - add r0, r5, #0x0 - ldr r2, [r1, #0x8] - ldr r1, _0202EFE0 ; =0x00000C54 - add r3, r2, r1 - mov r2, #0x6 - add r1, r4, #0x0 - mul r1, r2 - add r1, r3, r1 - bl MI_CpuCopy8 -_0202EFD8: - pop {r3-r5, pc} - nop -_0202EFDC: .word UNK_021C59E8 -_0202EFE0: .word 0x00000C54 - - thumb_func_start FUN_0202EFE4 -FUN_0202EFE4: ; 0x0202EFE4 - push {r4-r5} - ldr r2, _0202F034 ; =UNK_021C59E8 - mov r1, #0x0 - ldr r3, [r2, #0x8] - ldr r2, _0202F038 ; =0x00000C54 - add r2, r3, r2 - ldrb r3, [r0, #0x0] -_0202EFF2: - ldrb r4, [r2, #0x0] - cmp r4, r3 - bne _0202F026 - ldrb r5, [r2, #0x1] - ldrb r4, [r0, #0x1] - cmp r5, r4 - bne _0202F026 - ldrb r5, [r2, #0x2] - ldrb r4, [r0, #0x2] - cmp r5, r4 - bne _0202F026 - ldrb r5, [r2, #0x3] - ldrb r4, [r0, #0x3] - cmp r5, r4 - bne _0202F026 - ldrb r5, [r2, #0x4] - ldrb r4, [r0, #0x4] - cmp r5, r4 - bne _0202F026 - ldrb r5, [r2, #0x5] - ldrb r4, [r0, #0x5] - cmp r5, r4 - bne _0202F026 - mov r0, #0x1 - pop {r4-r5} - bx lr -_0202F026: - add r1, r1, #0x1 - add r2, r2, #0x6 - cmp r1, #0x8 - blt _0202EFF2 - mov r0, #0x0 - pop {r4-r5} - bx lr - .balign 4 -_0202F034: .word UNK_021C59E8 -_0202F038: .word 0x00000C54 - - thumb_func_start FUN_0202F03C -FUN_0202F03C: ; 0x0202F03C - ldr r0, _0202F054 ; =UNK_021C59E8 - ldr r1, [r0, #0x8] - cmp r1, #0x0 - beq _0202F04E - ldr r0, _0202F058 ; =0x00000DAD - ldrb r0, [r1, r0] - lsl r0, r0, #0x1b - lsr r0, r0, #0x1f - bx lr -_0202F04E: - mov r0, #0x0 - bx lr - nop -_0202F054: .word UNK_021C59E8 -_0202F058: .word 0x00000DAD - - thumb_func_start FUN_0202F05C -FUN_0202F05C: ; 0x0202F05C - ldr r0, _0202F070 ; =UNK_021C59E8 - ldr r3, [r0, #0x8] - cmp r3, #0x0 - beq _0202F06E - ldr r1, _0202F074 ; =0x00000DAD - mov r0, #0x10 - ldrb r2, [r3, r1] - orr r0, r2 - strb r0, [r3, r1] -_0202F06E: - bx lr - .balign 4 -_0202F070: .word UNK_021C59E8 -_0202F074: .word 0x00000DAD - - thumb_func_start FUN_0202F078 -FUN_0202F078: ; 0x0202F078 - ldr r1, _0202F088 ; =UNK_021C59E8 - ldr r3, _0202F08C ; =MI_CpuCopy8 - ldr r2, [r1, #0x8] - ldr r1, _0202F090 ; =0x00000CA8 - add r1, r2, r1 - mov r2, #0x8 - bx r3 - nop -_0202F088: .word UNK_021C59E8 -_0202F08C: .word MI_CpuCopy8 -_0202F090: .word 0x00000CA8 - - thumb_func_start FUN_0202F094 -FUN_0202F094: ; 0x0202F094 - push {r4, lr} - add r4, r0, #0x0 - bl FUN_02023AC4 - ldr r1, _0202F0B0 ; =UNK_021C59E8 - add r2, r0, #0x0 - ldr r3, [r1, #0x8] - ldr r1, _0202F0B4 ; =0x00000CBC - add r0, r4, #0x0 - ldr r1, [r3, r1] - bl MI_CpuCopy8 - pop {r4, pc} - nop -_0202F0B0: .word UNK_021C59E8 -_0202F0B4: .word 0x00000CBC - - thumb_func_start FUN_0202F0B8 -FUN_0202F0B8: ; 0x0202F0B8 - push {r4, lr} - bl FUN_0202EA9C - ldr r3, _0202F0D4 ; =UNK_021C59E8 - ldr r2, _0202F0D8 ; =0x00000CC4 - ldr r4, [r3, #0x8] - ldrh r3, [r3, #0x0] - add r0, r4, r2 - sub r2, r2, #0x4 - ldr r2, [r4, r2] - mov r1, #0x5c - bl FUN_0202D240 - pop {r4, pc} - .balign 4 -_0202F0D4: .word UNK_021C59E8 -_0202F0D8: .word 0x00000CC4 - - thumb_func_start FUN_0202F0DC -FUN_0202F0DC: ; 0x0202F0DC - push {r4-r6, lr} - mov r5, #0x0 - add r6, r0, #0x0 - add r4, r5, #0x0 -_0202F0E4: - add r0, r4, #0x0 - bl FUN_0202EF44 - cmp r0, #0x0 - beq _0202F0F8 - ldrb r1, [r0, #0x4] - cmp r1, r6 - bne _0202F0F8 - ldrb r0, [r0, #0x6] - add r5, r5, r0 -_0202F0F8: - add r4, r4, #0x1 - cmp r4, #0x10 - blt _0202F0E4 - add r0, r5, #0x0 - pop {r4-r6, pc} - .balign 4 - - thumb_func_start FUN_0202F104 -FUN_0202F104: ; 0x0202F104 - ldr r3, _0202F108 ; =FUN_0202D2D0 - bx r3 - .balign 4 -_0202F108: .word FUN_0202D2D0 - - thumb_func_start FUN_0202F10C -FUN_0202F10C: ; 0x0202F10C - push {r3, lr} - ldr r1, _0202F120 ; =UNK_021C59E8 - mov r2, #0x54 - ldr r1, [r1, #0x8] - bl MI_CpuCopy8 - bl FUN_0202F0B8 - pop {r3, pc} - nop -_0202F120: .word UNK_021C59E8 - - thumb_func_start FUN_0202F124 -FUN_0202F124: ; 0x0202F124 - ldr r1, _0202F148 ; =UNK_021C59E8 - ldr r3, [r1, #0x8] - cmp r3, #0x0 - beq _0202F144 - lsl r1, r0, #0x1 - add r2, r3, r1 - ldr r1, _0202F14C ; =0x00000C84 - ldrh r1, [r2, r1] - cmp r1, #0x0 - beq _0202F144 - mov r1, #0xc0 - add r3, #0xa4 - mul r1, r0 - add r0, r3, r1 - add r0, #0x8 - bx lr -_0202F144: - mov r0, #0x0 - bx lr - .balign 4 -_0202F148: .word UNK_021C59E8 -_0202F14C: .word 0x00000C84 diff --git a/arm9/asm/unk_02031480.s b/arm9/asm/unk_02031480.s deleted file mode 100644 index 58ff4996..00000000 --- a/arm9/asm/unk_02031480.s +++ /dev/null @@ -1,405 +0,0 @@ - .include "asm/macros.inc" - .include "global.inc" - - .section .bss - - .global UNK_021C59FC -UNK_021C59FC: ; 0x021C59FC - .space 0x4 - - .text - - thumb_func_start FUN_02031480 -FUN_02031480: ; 0x02031480 - push {r4, lr} - ldr r1, _020314C8 ; =UNK_021C59FC - ldr r1, [r1, #0x0] - cmp r1, #0x0 - bne _0203149C - ldr r1, _020314CC ; =0x00000253 - bl AllocFromHeap - ldr r1, _020314C8 ; =UNK_021C59FC - ldr r2, _020314CC ; =0x00000253 - str r0, [r1, #0x0] - mov r1, #0x0 - bl MI_CpuFill8 -_0203149C: - ldr r1, _020314C8 ; =UNK_021C59FC - mov r3, #0x0 - mov r0, #0xff -_020314A2: - ldr r2, [r1, #0x0] - add r2, r2, r3 - add r3, r3, #0x1 - strb r0, [r2, #0x10] - cmp r3, #0x8 - blt _020314A2 - ldr r3, _020314C8 ; =UNK_021C59FC - mov r1, #0x25 - ldr r2, [r3, #0x0] - lsl r1, r1, #0x4 - strb r0, [r2, r1] - ldr r4, [r3, #0x0] - add r2, r1, #0x1 - strb r0, [r4, r2] - ldr r2, [r3, #0x0] - mov r4, #0x0 - add r0, r1, #0x2 - strb r4, [r2, r0] - pop {r4, pc} - .balign 4 -_020314C8: .word UNK_021C59FC -_020314CC: .word 0x00000253 - - thumb_func_start FUN_020314D0 -FUN_020314D0: ; 0x020314D0 - push {r3, lr} - ldr r0, _020314E4 ; =UNK_021C59FC - ldr r0, [r0, #0x0] - bl FreeToHeap - ldr r0, _020314E4 ; =UNK_021C59FC - mov r1, #0x0 - str r1, [r0, #0x0] - pop {r3, pc} - nop -_020314E4: .word UNK_021C59FC - - thumb_func_start FUN_020314E8 -FUN_020314E8: ; 0x020314E8 - ldr r0, _020314F8 ; =UNK_021C59FC - ldr r0, [r0, #0x0] - cmp r0, #0x0 - beq _020314F4 - mov r0, #0x1 - bx lr -_020314F4: - mov r0, #0x0 - bx lr - .balign 4 -_020314F8: .word UNK_021C59FC - - thumb_func_start FUN_020314FC -FUN_020314FC: ; 0x020314FC - push {r3-r6, lr} - sub sp, #0x4 - ldrb r1, [r2, #0x0] - add r5, r0, #0x0 - add r0, sp, #0x0 - strb r1, [r0, #0x0] - bl FUN_02031190 - cmp r0, #0x0 - bne _02031556 - add r0, sp, #0x0 - strb r5, [r0, #0x1] - ldrb r1, [r0, #0x0] - strb r1, [r0, #0x2] - add r1, sp, #0x0 - mov r0, #0x12 - add r1, #0x1 - bl FUN_02030C4C - ldr r6, _0203155C ; =UNK_021C59FC - add r4, sp, #0x0 - ldr r0, [r6, #0x0] - ldrb r1, [r4, #0x0] - add r0, r0, r5 - mov r5, #0x0 - strb r1, [r0, #0x10] -_02031530: - lsl r0, r5, #0x10 - lsr r0, r0, #0x10 - bl FUN_02030E7C - cmp r0, #0x0 - beq _02031548 - ldr r0, [r6, #0x0] - ldrb r1, [r4, #0x0] - add r0, r0, r5 - ldrb r0, [r0, #0x10] - cmp r1, r0 - bne _02031556 -_02031548: - add r5, r5, #0x1 - cmp r5, #0x8 - blt _02031530 - mov r0, #0x11 - add r1, sp, #0x0 - bl FUN_02030C4C -_02031556: - add sp, #0x4 - pop {r3-r6, pc} - nop -_0203155C: .word UNK_021C59FC - - thumb_func_start FUN_02031560 -FUN_02031560: ; 0x02031560 - ldr r0, _02031570 ; =UNK_021C59FC - ldrb r3, [r2, #0x1] - ldr r1, [r0, #0x0] - ldrb r0, [r2, #0x0] - add r0, r1, r0 - strb r3, [r0, #0x10] - bx lr - nop -_02031570: .word UNK_021C59FC - - thumb_func_start FUN_02031574 -FUN_02031574: ; 0x02031574 - ldr r0, _02031584 ; =UNK_021C59FC - ldrb r2, [r2, #0x0] - ldr r1, [r0, #0x0] - mov r0, #0x25 - lsl r0, r0, #0x4 - strb r2, [r1, r0] - bx lr - nop -_02031584: .word UNK_021C59FC - - thumb_func_start FUN_02031588 -FUN_02031588: ; 0x02031588 - ldr r2, _0203159C ; =UNK_021C59FC - ldr r1, _020315A0 ; =0x00000251 - ldr r3, [r2, #0x0] - strb r0, [r3, r1] - ldr r2, [r2, #0x0] - mov r3, #0x1 - add r0, r1, #0x1 - strb r3, [r2, r0] - bx lr - nop -_0203159C: .word UNK_021C59FC -_020315A0: .word 0x00000251 - - thumb_func_start FUN_020315A4 -FUN_020315A4: ; 0x020315A4 - push {r3, lr} - ldr r0, _020315D0 ; =UNK_021C59FC - ldr r2, [r0, #0x0] - cmp r2, #0x0 - beq _020315CE - ldr r1, _020315D4 ; =0x00000252 - ldrb r0, [r2, r1] - cmp r0, #0x0 - beq _020315CE - sub r1, r1, #0x1 - mov r0, #0x10 - add r1, r2, r1 - bl FUN_020311D0 - cmp r0, #0x0 - beq _020315CE - ldr r0, _020315D0 ; =UNK_021C59FC - mov r2, #0x0 - ldr r1, [r0, #0x0] - ldr r0, _020315D4 ; =0x00000252 - strb r2, [r1, r0] -_020315CE: - pop {r3, pc} - .balign 4 -_020315D0: .word UNK_021C59FC -_020315D4: .word 0x00000252 - - thumb_func_start FUN_020315D8 -FUN_020315D8: ; 0x020315D8 - ldr r1, _020315F8 ; =UNK_021C59FC - ldr r2, [r1, #0x0] - cmp r2, #0x0 - bne _020315E4 - mov r0, #0x1 - bx lr -_020315E4: - mov r1, #0x25 - lsl r1, r1, #0x4 - ldrb r1, [r2, r1] - cmp r1, r0 - bne _020315F2 - mov r0, #0x1 - bx lr -_020315F2: - mov r0, #0x0 - bx lr - nop -_020315F8: .word UNK_021C59FC - - thumb_func_start FUN_020315FC -FUN_020315FC: ; 0x020315FC - ldr r1, _02031608 ; =UNK_021C59FC - ldr r1, [r1, #0x0] - add r0, r1, r0 - ldrb r0, [r0, #0x10] - bx lr - nop -_02031608: .word UNK_021C59FC - - thumb_func_start FUN_0203160C -FUN_0203160C: ; 0x0203160C - push {r3-r4} - lsl r4, r0, #0x1 - ldr r0, _02031624 ; =UNK_021C59FC - ldrb r3, [r2, #0x0] - ldr r1, [r0, #0x0] - strb r3, [r1, r4] - ldr r0, [r0, #0x0] - ldrb r1, [r2, #0x1] - add r0, r0, r4 - strb r1, [r0, #0x1] - pop {r3-r4} - bx lr - .balign 4 -_02031624: .word UNK_021C59FC - - thumb_func_start FUN_02031628 -FUN_02031628: ; 0x02031628 - mov r0, #0x2 - bx lr - - thumb_func_start FUN_0203162C -FUN_0203162C: ; 0x0203162C - push {r3, lr} - add r2, sp, #0x0 - strb r0, [r2, #0x0] - strb r1, [r2, #0x1] - mov r0, #0x13 - add r1, sp, #0x0 - bl FUN_020311D0 - pop {r3, pc} - .balign 4 - - thumb_func_start FUN_02031640 -FUN_02031640: ; 0x02031640 - ldr r2, _02031664 ; =UNK_021C59FC - ldr r3, [r2, #0x0] - cmp r3, #0x0 - bne _0203164E - mov r0, #0x0 - mvn r0, r0 - bx lr -_0203164E: - lsl r2, r0, #0x1 - ldrb r0, [r3, r2] - cmp r1, r0 - bne _0203165C - add r0, r3, r2 - ldrb r0, [r0, #0x1] - bx lr -_0203165C: - mov r0, #0x0 - mvn r0, r0 - bx lr - nop -_02031664: .word UNK_021C59FC - - thumb_func_start FUN_02031668 -FUN_02031668: ; 0x02031668 - push {r3-r7, lr} - mov r4, #0x0 - ldr r6, _02031688 ; =UNK_021C59FC - add r5, r4, #0x0 - add r7, r4, #0x0 -_02031672: - ldr r0, [r6, #0x0] - add r1, r7, #0x0 - add r0, r0, r5 - mov r2, #0x2 - bl MI_CpuFill8 - add r4, r4, #0x1 - add r5, r5, #0x2 - cmp r4, #0x8 - blt _02031672 - pop {r3-r7, pc} - .balign 4 -_02031688: .word UNK_021C59FC - - thumb_func_start FUN_0203168C -FUN_0203168C: ; 0x0203168C - push {r3-r4} - mov r4, #0x0 - mov r0, #0x92 - ldr r1, _020316A8 ; =UNK_021C59FC - add r3, r4, #0x0 - lsl r0, r0, #0x2 -_02031698: - ldr r2, [r1, #0x0] - add r2, r2, r4 - add r4, r4, #0x1 - strb r3, [r2, r0] - cmp r4, #0x8 - blt _02031698 - pop {r3-r4} - bx lr - .balign 4 -_020316A8: .word UNK_021C59FC - - thumb_func_start FUN_020316AC -FUN_020316AC: ; 0x020316AC - push {r4, lr} - ldr r2, _020316DC ; =UNK_021C59FC - ldr r3, [r2, #0x0] - cmp r3, #0x0 - beq _020316D8 - add r4, r0, #0x0 - mov r2, #0x46 - mul r4, r2 - add r3, #0x18 - add r0, r1, #0x0 - add r1, r3, r4 - bl MI_CpuCopy8 - ldr r1, _020316DC ; =UNK_021C59FC - mov r0, #0x14 - ldr r1, [r1, #0x0] - add r1, #0x18 - add r1, r1, r4 - bl FUN_020311D0 - mov r0, #0x1 - pop {r4, pc} -_020316D8: - mov r0, #0x0 - pop {r4, pc} - .balign 4 -_020316DC: .word UNK_021C59FC - - thumb_func_start FUN_020316E0 -FUN_020316E0: ; 0x020316E0 - ldr r1, _02031700 ; =UNK_021C59FC - ldr r3, [r1, #0x0] - mov r1, #0x92 - add r2, r3, r0 - lsl r1, r1, #0x2 - ldrb r1, [r2, r1] - cmp r1, #0x0 - beq _020316FA - mov r1, #0x46 - add r3, #0x18 - mul r1, r0 - add r0, r3, r1 - bx lr -_020316FA: - mov r0, #0x0 - bx lr - nop -_02031700: .word UNK_021C59FC - - thumb_func_start FUN_02031704 -FUN_02031704: ; 0x02031704 - push {r3-r5, lr} - ldr r3, _0203172C ; =UNK_021C59FC - add r1, r0, #0x0 - ldr r0, [r3, #0x0] - mov r5, #0x1 - add r4, r0, r1 - mov r0, #0x92 - lsl r0, r0, #0x2 - strb r5, [r4, r0] - ldr r4, [r3, #0x0] - add r0, r2, #0x0 - mov r2, #0x46 - add r3, r1, #0x0 - add r4, #0x18 - mul r3, r2 - add r1, r4, r3 - bl MI_CpuCopy8 - pop {r3-r5, pc} - nop -_0203172C: .word UNK_021C59FC - - thumb_func_start FUN_02031730 -FUN_02031730: ; 0x02031730 - mov r0, #0x46 - bx lr diff --git a/arm9/asm/unk_02031734.s b/arm9/asm/unk_02031734.s deleted file mode 100644 index 5a054d51..00000000 --- a/arm9/asm/unk_02031734.s +++ /dev/null @@ -1,4136 +0,0 @@ - .include "asm/macros.inc" - .include "global.inc" - - .extern gMain - .section .rodata - .global UNK_020EEC48 -UNK_020EEC48: ; 0x020EEC48 - .word FUN_02032B84, 0x00000000 - - .global UNK_020EEC50 -UNK_020EEC50: ; 0x020EEC50 - .word FUN_0203213C, FUN_02032138, 0x00000000 - - .global UNK_020EEC5C -UNK_020EEC5C: ; 0x020EEC5C - .word FUN_02032234, FUN_0203234C, 0x00000000 - - .section .data - - .balign 4 - .global UNK_02105D5C -UNK_02105D5C: ; 0x02105D5C - .asciz "FREAK" - - .balign 4 - .global UNK_02105D64 -UNK_02105D64: ; 0x02105D64 - .asciz " FULL" - - .balign 4 - .global UNK_02105D6C -UNK_02105D6C: ; 0x02105D6C - .asciz " GAME" - - .section .bss - - .global UNK_021C5A00 -UNK_021C5A00: ; 0x021C5A00 - .space 0x4 - - .text - - thumb_func_start FUN_02031734 -FUN_02031734: ; 0x02031734 - push {r3-r5, lr} - add r5, r0, #0x0 - ldr r0, _020317BC ; =UNK_021C5A00 - add r4, r1, #0x0 - ldr r0, [r0, #0x0] - cmp r0, #0x0 - bne _020317B8 - bl FUN_0202E49C - mov r0, #0xf - mov r1, #0x50 - bl AllocFromHeap - ldr r1, _020317BC ; =UNK_021C5A00 - mov r2, #0x50 - str r0, [r1, #0x0] - mov r1, #0x0 - bl MI_CpuFill8 - ldr r0, _020317BC ; =UNK_021C5A00 - mov r2, #0x32 - ldr r1, [r0, #0x0] - strh r2, [r1, #0x3a] - ldr r1, [r0, #0x0] - mov r2, #0x1 - add r1, #0x43 - strb r2, [r1, #0x0] - ldr r0, [r0, #0x0] - str r5, [r0, #0x28] - add r0, r5, #0x0 - bl Sav2_PlayerData_GetProfileAddr - ldr r1, _020317BC ; =UNK_021C5A00 - ldr r2, [r1, #0x0] - str r0, [r2, #0x2c] - ldr r0, [r1, #0x0] - mov r2, #0x2 - add r0, #0x3c - strb r2, [r0, #0x0] - ldr r0, [r1, #0x0] - mov r2, #0x0 - add r0, #0x3d - strb r2, [r0, #0x0] - ldr r0, [r1, #0x0] - add r0, #0x48 - strb r2, [r0, #0x0] - ldr r0, [r1, #0x0] - add r0, #0x3f - strb r4, [r0, #0x0] - ldr r0, [r1, #0x0] - add r0, #0xc - bl FUN_020312BC - mov r0, #0x0 - add r1, r0, #0x0 - add r2, r0, #0x0 - bl FUN_0202D8D0 - cmp r4, #0x9 - beq _020317B8 - cmp r4, #0x11 - beq _020317B8 - cmp r4, #0xf - beq _020317B8 - bl FUN_02033E74 -_020317B8: - pop {r3-r5, pc} - nop -_020317BC: .word UNK_021C5A00 - - thumb_func_start FUN_020317C0 -FUN_020317C0: ; 0x020317C0 - push {r3, lr} - ldr r0, _0203180C ; =UNK_021C5A00 - ldr r0, [r0, #0x0] - cmp r0, #0x0 - beq _0203180A - bl FUN_0202D918 - ldr r0, _0203180C ; =UNK_021C5A00 - ldr r0, [r0, #0x0] - ldr r0, [r0, #0x0] - cmp r0, #0x0 - beq _020317DC - bl FreeToHeap -_020317DC: - ldr r0, _0203180C ; =UNK_021C5A00 - ldr r0, [r0, #0x0] - add r0, #0x3f - ldrb r0, [r0, #0x0] - cmp r0, #0x13 - blo _020317EE - mov r0, #0x31 - bl FUN_020168D0 -_020317EE: - bl FUN_02033ED0 - bl FUN_0202E4F0 - ldr r0, _0203180C ; =UNK_021C5A00 - ldr r0, [r0, #0x0] - bl FreeToHeap - mov r0, #0xf - bl FUN_020168D0 - ldr r0, _0203180C ; =UNK_021C5A00 - mov r1, #0x0 - str r1, [r0, #0x0] -_0203180A: - pop {r3, pc} - .balign 4 -_0203180C: .word UNK_021C5A00 - - thumb_func_start FUN_02031810 -FUN_02031810: ; 0x02031810 - ldr r0, _02031820 ; =UNK_021C5A00 - ldr r0, [r0, #0x0] - cmp r0, #0x0 - beq _0203181C - mov r0, #0x1 - bx lr -_0203181C: - mov r0, #0x0 - bx lr - .balign 4 -_02031820: .word UNK_021C5A00 - - thumb_func_start FUN_02031824 -FUN_02031824: ; 0x02031824 - push {r4, lr} - add r4, r0, #0x0 - ldr r0, _02031858 ; =UNK_021C5A00 - ldr r0, [r0, #0x0] - cmp r0, #0x0 - bne _02031856 - mov r2, #0xe - mov r0, #0x3 - mov r1, #0xf - lsl r2, r2, #0xc - bl FUN_02016828 - add r0, r4, #0x0 - mov r1, #0xa - bl FUN_02031734 - ldr r0, _02031858 ; =UNK_021C5A00 - mov r1, #0x0 - ldr r0, [r0, #0x0] - add r0, #0x40 - strb r1, [r0, #0x0] - ldr r0, _0203185C ; =FUN_02031D30 - mov r1, #0x32 - bl FUN_02031D20 -_02031856: - pop {r4, pc} - .balign 4 -_02031858: .word UNK_021C5A00 -_0203185C: .word FUN_02031D30 - - thumb_func_start FUN_02031860 -FUN_02031860: ; 0x02031860 - push {r3, lr} - ldr r0, _02031878 ; =UNK_021C5A00 - ldr r0, [r0, #0x0] - cmp r0, #0x0 - beq _02031876 - bl FUN_02031468 - ldr r0, _0203187C ; =FUN_020323CC - mov r1, #0x0 - bl FUN_02031D20 -_02031876: - pop {r3, pc} - .balign 4 -_02031878: .word UNK_021C5A00 -_0203187C: .word FUN_020323CC - - thumb_func_start FUN_02031880 -FUN_02031880: ; 0x02031880 - push {r3, lr} - bl FUN_0202FC60 - bl FUN_02031190 - ldr r1, _0203189C ; =UNK_021C5A00 - ldr r1, [r1, #0x0] - strh r0, [r1, #0x38] - ldr r0, _020318A0 ; =FUN_020321B8 - mov r1, #0x0 - bl FUN_02031D20 - pop {r3, pc} - nop -_0203189C: .word UNK_021C5A00 -_020318A0: .word FUN_020321B8 - - thumb_func_start FUN_020318A4 -FUN_020318A4: ; 0x020318A4 - ldr r1, _020318B0 ; =UNK_021C5A00 - ldr r1, [r1, #0x0] - add r1, #0x4f - strb r0, [r1, #0x0] - bx lr - nop -_020318B0: .word UNK_021C5A00 - - thumb_func_start FUN_020318B4 -FUN_020318B4: ; 0x020318B4 - ldr r3, _020318BC ; =FUN_02031D20 - ldr r0, _020318C0 ; =FUN_02032028 - mov r1, #0x0 - bx r3 - .balign 4 -_020318BC: .word FUN_02031D20 -_020318C0: .word FUN_02032028 - - thumb_func_start FUN_020318C4 -FUN_020318C4: ; 0x020318C4 - push {r4} - sub sp, #0xc - ldr r4, _0203190C ; =UNK_020EEC50 - add r3, sp, #0x0 - ldmia r4!, {r0-r1} - add r2, r3, #0x0 - stmia r3!, {r0-r1} - ldr r0, [r4, #0x0] - str r0, [r3, #0x0] - ldr r0, _02031910 ; =UNK_021C5A00 - ldr r0, [r0, #0x0] - ldr r1, [r0, #0x24] - cmp r0, #0x0 - bne _020318E8 - add sp, #0xc - mov r0, #0x0 - pop {r4} - bx lr -_020318E8: - ldr r0, [sp, #0x0] - cmp r0, #0x0 - beq _02031904 -_020318EE: - ldr r0, [r2, #0x0] - cmp r1, r0 - bne _020318FC - add sp, #0xc - mov r0, #0x1 - pop {r4} - bx lr -_020318FC: - add r2, r2, #0x4 - ldr r0, [r2, #0x0] - cmp r0, #0x0 - bne _020318EE -_02031904: - mov r0, #0x0 - add sp, #0xc - pop {r4} - bx lr - .balign 4 -_0203190C: .word UNK_020EEC50 -_02031910: .word UNK_021C5A00 - - thumb_func_start FUN_02031914 -FUN_02031914: ; 0x02031914 - ldr r3, _0203191C ; =FUN_02031D20 - ldr r0, _02031920 ; =FUN_02032178 - mov r1, #0x0 - bx r3 - .balign 4 -_0203191C: .word FUN_02031D20 -_02031920: .word FUN_02032178 - - thumb_func_start FUN_02031924 -FUN_02031924: ; 0x02031924 - ldr r0, _02031930 ; =UNK_021C5A00 - mov r1, #0x1 - ldr r0, [r0, #0x0] - add r0, #0x4c - strb r1, [r0, #0x0] - bx lr - .balign 4 -_02031930: .word UNK_021C5A00 - - thumb_func_start FUN_02031934 -FUN_02031934: ; 0x02031934 - push {r3, lr} - bl FUN_0202E49C - ldr r0, _02031944 ; =FUN_02032194 - mov r1, #0x0 - bl FUN_02031D20 - pop {r3, pc} - .balign 4 -_02031944: .word FUN_02032194 - - thumb_func_start FUN_02031948 -FUN_02031948: ; 0x02031948 - push {r3-r7, lr} - add r6, r0, #0x0 - add r7, r1, #0x0 - add r5, r2, #0x0 - add r4, r3, #0x0 - bl FUN_02030F40 - cmp r0, #0x0 - bne _02031980 - ldr r2, _02031984 ; =0x00007080 - mov r0, #0x3 - mov r1, #0xf - bl FUN_02016828 - add r0, r6, #0x0 - add r1, r7, #0x0 - bl FUN_02031734 - ldr r0, _02031988 ; =UNK_021C5A00 - ldr r1, [r0, #0x0] - add r1, #0x40 - strb r5, [r1, #0x0] - ldr r0, [r0, #0x0] - mov r1, #0x0 - str r4, [r0, #0x30] - ldr r0, _0203198C ; =FUN_020321D0 - bl FUN_02031D20 -_02031980: - pop {r3-r7, pc} - nop -_02031984: .word 0x00007080 -_02031988: .word UNK_021C5A00 -_0203198C: .word FUN_020321D0 - - thumb_func_start FUN_02031990 -FUN_02031990: ; 0x02031990 - push {r3-r7, lr} - add r6, r0, #0x0 - add r7, r1, #0x0 - add r5, r2, #0x0 - add r4, r3, #0x0 - bl FUN_02030F40 - cmp r0, #0x0 - bne _020319C8 - ldr r2, _020319CC ; =0x00007080 - mov r0, #0x3 - mov r1, #0xf - bl FUN_02016828 - add r0, r6, #0x0 - add r1, r7, #0x0 - bl FUN_02031734 - ldr r0, _020319D0 ; =UNK_021C5A00 - ldr r1, [r0, #0x0] - add r1, #0x40 - strb r5, [r1, #0x0] - ldr r0, [r0, #0x0] - mov r1, #0x0 - str r4, [r0, #0x30] - ldr r0, _020319D4 ; =FUN_0203224C - bl FUN_02031D20 -_020319C8: - pop {r3-r7, pc} - nop -_020319CC: .word 0x00007080 -_020319D0: .word UNK_021C5A00 -_020319D4: .word FUN_0203224C - - thumb_func_start FUN_020319D8 -FUN_020319D8: ; 0x020319D8 - ldr r1, _020319E8 ; =UNK_021C5A00 - ldr r3, _020319EC ; =FUN_02031D20 - ldr r1, [r1, #0x0] - add r1, #0x3e - strb r0, [r1, #0x0] - ldr r0, _020319F0 ; =FUN_02032298 - mov r1, #0x0 - bx r3 - .balign 4 -_020319E8: .word UNK_021C5A00 -_020319EC: .word FUN_02031D20 -_020319F0: .word FUN_02032298 - - thumb_func_start FUN_020319F4 -FUN_020319F4: ; 0x020319F4 - push {r3, lr} - bl FUN_0202FCA8 - ldr r0, _02031A04 ; =FUN_02032364 - mov r1, #0x0 - bl FUN_02031D20 - pop {r3, pc} - .balign 4 -_02031A04: .word FUN_02032364 - - thumb_func_start FUN_02031A08 -FUN_02031A08: ; 0x02031A08 - push {r3, lr} - ldr r0, _02031A1C ; =UNK_021C5A00 - ldr r0, [r0, #0x0] - cmp r0, #0x0 - beq _02031A1A - ldr r0, _02031A20 ; =FUN_02032440 - mov r1, #0x5 - bl FUN_02031D20 -_02031A1A: - pop {r3, pc} - .balign 4 -_02031A1C: .word UNK_021C5A00 -_02031A20: .word FUN_02032440 - - thumb_func_start FUN_02031A24 -FUN_02031A24: ; 0x02031A24 - ldr r3, _02031A28 ; =FUN_0202D298 - bx r3 - .balign 4 -_02031A28: .word FUN_0202D298 - - thumb_func_start FUN_02031A2C -FUN_02031A2C: ; 0x02031A2C - push {r4} - sub sp, #0xc - ldr r4, _02031A74 ; =UNK_020EEC5C - add r3, sp, #0x0 - ldmia r4!, {r0-r1} - add r2, r3, #0x0 - stmia r3!, {r0-r1} - ldr r0, [r4, #0x0] - str r0, [r3, #0x0] - ldr r0, _02031A78 ; =UNK_021C5A00 - ldr r0, [r0, #0x0] - ldr r1, [r0, #0x24] - cmp r0, #0x0 - bne _02031A50 - add sp, #0xc - mov r0, #0x0 - pop {r4} - bx lr -_02031A50: - ldr r0, [sp, #0x0] - cmp r0, #0x0 - beq _02031A6C -_02031A56: - ldr r0, [r2, #0x0] - cmp r1, r0 - bne _02031A64 - add sp, #0xc - mov r0, #0x1 - pop {r4} - bx lr -_02031A64: - add r2, r2, #0x4 - ldr r0, [r2, #0x0] - cmp r0, #0x0 - bne _02031A56 -_02031A6C: - mov r0, #0x0 - add sp, #0xc - pop {r4} - bx lr - .balign 4 -_02031A74: .word UNK_020EEC5C -_02031A78: .word UNK_021C5A00 - - thumb_func_start FUN_02031A7C -FUN_02031A7C: ; 0x02031A7C - push {r4, lr} - add r4, r0, #0x0 - ldr r0, _02031ABC ; =UNK_021C5A00 - ldr r0, [r0, #0x0] - cmp r0, #0x0 - bne _02031ABA - ldr r2, _02031AC0 ; =0x00007080 - mov r0, #0x3 - mov r1, #0xf - bl FUN_02016828 - cmp r0, #0x0 - bne _02031A9A - bl FUN_020335E0 -_02031A9A: - add r0, r4, #0x0 - mov r1, #0x9 - bl FUN_02031734 - ldr r0, _02031ABC ; =UNK_021C5A00 - mov r2, #0x9 - ldr r1, [r0, #0x0] - add r1, #0x3f - strb r2, [r1, #0x0] - ldr r0, [r0, #0x0] - mov r1, #0x0 - add r0, #0x40 - strb r1, [r0, #0x0] - ldr r0, _02031AC4 ; =FUN_02032478 - bl FUN_02031D20 -_02031ABA: - pop {r4, pc} - .balign 4 -_02031ABC: .word UNK_021C5A00 -_02031AC0: .word 0x00007080 -_02031AC4: .word FUN_02032478 - - thumb_func_start FUN_02031AC8 -FUN_02031AC8: ; 0x02031AC8 - push {r3, lr} - ldr r1, _02031AEC ; =UNK_021C5A00 - ldr r2, [r1, #0x0] - add r2, #0x3e - strb r0, [r2, #0x0] - ldr r0, [r1, #0x0] - mov r2, #0x3 - strh r2, [r0, #0x38] - mov r0, #0x1 - bl FUN_0202D344 - bl FUN_02033E74 - ldr r0, _02031AF0 ; =FUN_02032628 - mov r1, #0x0 - bl FUN_02031D20 - pop {r3, pc} - .balign 4 -_02031AEC: .word UNK_021C5A00 -_02031AF0: .word FUN_02032628 - - thumb_func_start FUN_02031AF4 -FUN_02031AF4: ; 0x02031AF4 - ldr r0, _02031B20 ; =UNK_021C5A00 - ldr r0, [r0, #0x0] - cmp r0, #0x0 - bne _02031B02 - mov r0, #0x0 - mvn r0, r0 - bx lr -_02031B02: - ldr r1, [r0, #0x24] - ldr r0, _02031B24 ; =FUN_0203279C - cmp r1, r0 - bne _02031B0E - mov r0, #0x1 - bx lr -_02031B0E: - ldr r0, _02031B28 ; =FUN_020327B4 - cmp r1, r0 - bne _02031B18 - mov r0, #0x1 - b _02031B1A -_02031B18: - mov r0, #0x0 -_02031B1A: - neg r0, r0 - bx lr - nop -_02031B20: .word UNK_021C5A00 -_02031B24: .word FUN_0203279C -_02031B28: .word FUN_020327B4 - - thumb_func_start FUN_02031B2C -FUN_02031B2C: ; 0x02031B2C - ldr r0, _02031B48 ; =UNK_021C5A00 - ldr r0, [r0, #0x0] - cmp r0, #0x0 - bne _02031B38 - mov r0, #0x0 - bx lr -_02031B38: - ldr r1, [r0, #0x24] - ldr r0, _02031B4C ; =FUN_020327FC - cmp r1, r0 - bne _02031B44 - mov r0, #0x1 - bx lr -_02031B44: - mov r0, #0x0 - bx lr - .balign 4 -_02031B48: .word UNK_021C5A00 -_02031B4C: .word FUN_020327FC - - thumb_func_start FUN_02031B50 -FUN_02031B50: ; 0x02031B50 - push {r3, lr} - mov r0, #0x0 - bl FUN_0202D344 - ldr r0, _02031BC4 ; =UNK_021C5A00 - ldr r1, [r0, #0x0] - add r0, r1, #0x0 - add r0, #0x44 - ldrb r0, [r0, #0x0] - cmp r0, #0x1 - bne _02031B78 - add r0, r1, #0x0 - add r0, #0x45 - ldrb r0, [r0, #0x0] - cmp r0, #0x1 - bne _02031B78 - add r1, #0x3f - ldrb r0, [r1, #0x0] - cmp r0, #0x9 - bne _02031B80 -_02031B78: - mov r0, #0x0 - add r1, r0, #0x0 - bl FUN_020334E8 -_02031B80: - bl FUN_02033ED0 - ldr r0, _02031BC4 ; =UNK_021C5A00 - mov r2, #0x9 - ldr r1, [r0, #0x0] - add r1, #0x3f - strb r2, [r1, #0x0] - ldr r1, [r0, #0x0] - mov r2, #0x0 - add r1, #0x48 - strb r2, [r1, #0x0] - ldr r0, [r0, #0x0] - add r0, #0x3c - ldrb r0, [r0, #0x0] - bl FUN_0202D1B0 - bl FUN_02031190 - cmp r0, #0x0 - bne _02031BB8 - mov r0, #0x1 - bl FUN_0202D36C - ldr r0, _02031BC8 ; =FUN_020323DC - mov r1, #0xf - bl FUN_02031D20 - pop {r3, pc} -_02031BB8: - ldr r0, _02031BCC ; =FUN_02032424 - mov r1, #0x5 - bl FUN_02031D20 - pop {r3, pc} - nop -_02031BC4: .word UNK_021C5A00 -_02031BC8: .word FUN_020323DC -_02031BCC: .word FUN_02032424 - - thumb_func_start FUN_02031BD0 -FUN_02031BD0: ; 0x02031BD0 - ldr r0, _02031BEC ; =UNK_021C5A00 - ldr r0, [r0, #0x0] - cmp r0, #0x0 - bne _02031BDC - mov r0, #0x1 - bx lr -_02031BDC: - ldr r1, [r0, #0x24] - ldr r0, _02031BF0 ; =FUN_020324F8 - cmp r1, r0 - beq _02031BE8 - mov r0, #0x1 - bx lr -_02031BE8: - mov r0, #0x0 - bx lr - .balign 4 -_02031BEC: .word UNK_021C5A00 -_02031BF0: .word FUN_020324F8 - - thumb_func_start FUN_02031BF4 -FUN_02031BF4: ; 0x02031BF4 - push {r3, lr} - ldr r0, _02031C08 ; =UNK_021C5A00 - ldr r0, [r0, #0x0] - cmp r0, #0x0 - beq _02031C06 - ldr r0, _02031C0C ; =FUN_02032440 - mov r1, #0x5 - bl FUN_02031D20 -_02031C06: - pop {r3, pc} - .balign 4 -_02031C08: .word UNK_021C5A00 -_02031C0C: .word FUN_02032440 - - thumb_func_start FUN_02031C10 -FUN_02031C10: ; 0x02031C10 - push {r3, lr} - ldr r0, _02031C28 ; =UNK_021C5A00 - ldr r1, [r0, #0x0] - cmp r1, #0x0 - beq _02031C24 - mov r0, #0x1 - add r1, #0x48 - strb r0, [r1, #0x0] - bl FUN_0202D344 -_02031C24: - pop {r3, pc} - nop -_02031C28: .word UNK_021C5A00 - - thumb_func_start FUN_02031C2C -FUN_02031C2C: ; 0x02031C2C - push {r3, lr} - ldr r0, _02031C4C ; =UNK_021C5A00 - ldr r1, [r0, #0x0] - cmp r1, #0x0 - beq _02031C48 - mov r0, #0x1 - add r1, #0x48 - strb r0, [r1, #0x0] - bl FUN_0202D344 - ldr r0, _02031C50 ; =FUN_02032850 - mov r1, #0x0 - bl FUN_02031D20 -_02031C48: - pop {r3, pc} - nop -_02031C4C: .word UNK_021C5A00 -_02031C50: .word FUN_02032850 - - thumb_func_start FUN_02031C54 -FUN_02031C54: ; 0x02031C54 - ldr r0, _02031C60 ; =UNK_021C5A00 - mov r1, #0x12 - ldr r0, [r0, #0x0] - add r0, #0x3f - strb r1, [r0, #0x0] - bx lr - .balign 4 -_02031C60: .word UNK_021C5A00 - - thumb_func_start FUN_02031C64 -FUN_02031C64: ; 0x02031C64 - ldr r0, _02031C70 ; =UNK_021C5A00 - mov r1, #0x9 - ldr r0, [r0, #0x0] - add r0, #0x3f - strb r1, [r0, #0x0] - bx lr - .balign 4 -_02031C70: .word UNK_021C5A00 - - thumb_func_start FUN_02031C74 -FUN_02031C74: ; 0x02031C74 - push {r3-r5, lr} - add r5, r0, #0x0 - add r4, r1, #0x0 - bl FUN_02030F40 - cmp r0, #0x0 - bne _02031C9C - ldr r2, _02031CA0 ; =0x00007080 - mov r0, #0x3 - mov r1, #0xf - bl FUN_02016828 - add r0, r5, #0x0 - add r1, r4, #0x0 - bl FUN_02031734 - ldr r0, _02031CA4 ; =FUN_02032E00 - mov r1, #0x0 - bl FUN_02031D20 -_02031C9C: - pop {r3-r5, pc} - nop -_02031CA0: .word 0x00007080 -_02031CA4: .word FUN_02032E00 - - thumb_func_start FUN_02031CA8 -FUN_02031CA8: ; 0x02031CA8 - push {r3-r5, lr} - add r5, r0, #0x0 - add r4, r1, #0x0 - bl FUN_02030F40 - cmp r0, #0x0 - bne _02031CD0 - ldr r2, _02031CD4 ; =0x00007080 - mov r0, #0x3 - mov r1, #0xf - bl FUN_02016828 - add r0, r5, #0x0 - add r1, r4, #0x0 - bl FUN_02031734 - ldr r0, _02031CD8 ; =FUN_02032E48 - mov r1, #0x0 - bl FUN_02031D20 -_02031CD0: - pop {r3-r5, pc} - nop -_02031CD4: .word 0x00007080 -_02031CD8: .word FUN_02032E48 - - thumb_func_start FUN_02031CDC -FUN_02031CDC: ; 0x02031CDC - push {r3, lr} - ldr r0, _02031D1C ; =UNK_021C5A00 - ldr r0, [r0, #0x0] - cmp r0, #0x0 - beq _02031CEE - ldr r0, [r0, #0x24] - cmp r0, #0x0 - beq _02031CEE - blx r0 -_02031CEE: - bl FUN_02033590 - cmp r0, #0x0 - beq _02031D04 - bl MOD04_021DDB08 - mov r1, #0x3 - sub r0, r1, r0 - bl FUN_02033EEC - pop {r3, pc} -_02031D04: - bl FUN_0202EDF8 - cmp r0, #0x0 - beq _02031D18 - bl WM_GetLinkLevel - mov r1, #0x3 - sub r0, r1, r0 - bl FUN_02033EEC -_02031D18: - pop {r3, pc} - nop -_02031D1C: .word UNK_021C5A00 - - thumb_func_start FUN_02031D20 -FUN_02031D20: ; 0x02031D20 - ldr r2, _02031D2C ; =UNK_021C5A00 - ldr r3, [r2, #0x0] - str r0, [r3, #0x24] - ldr r0, [r2, #0x0] - strh r1, [r0, #0x3a] - bx lr - .balign 4 -_02031D2C: .word UNK_021C5A00 - - thumb_func_start FUN_02031D30 -FUN_02031D30: ; 0x02031D30 - push {r3-r5, lr} - ldr r0, _02031DF8 ; =UNK_021C5A00 - ldr r1, [r0, #0x0] - ldrh r0, [r1, #0x3a] - cmp r0, #0x0 - beq _02031D42 - sub r0, r0, #0x1 - strh r0, [r1, #0x3a] - pop {r3-r5, pc} -_02031D42: - bl FUN_0202E4C8 - cmp r0, #0x0 - beq _02031DF6 - ldr r0, _02031DF8 ; =UNK_021C5A00 - ldr r0, [r0, #0x0] - ldr r0, [r0, #0x2c] - bl FUN_0202E29C - ldr r0, _02031DF8 ; =UNK_021C5A00 - mov r1, #0x0 - ldr r0, [r0, #0x0] - ldr r0, [r0, #0x28] - bl FUN_0202DB14 - mov r0, #0x1 - bl FUN_02031268 - bl FUN_02030FA8 - ldr r0, _02031DF8 ; =UNK_021C5A00 - ldr r1, [r0, #0x0] - add r0, r1, #0x0 - add r0, #0x4a - ldrb r0, [r0, #0x0] - cmp r0, #0x0 - beq _02031DC8 - add r1, #0x43 - ldrb r1, [r1, #0x0] - mov r0, #0x1 - mov r2, #0x7d - lsl r2, r2, #0x2 - add r3, r0, #0x0 - bl FUN_0202F918 - cmp r0, #0x0 - beq _02031DF6 - ldr r0, _02031DF8 ; =UNK_021C5A00 - ldr r5, [r0, #0x0] - add r4, r5, #0x0 - add r4, #0xc - ldr r0, [r4, #0x8] - ldr r1, [r4, #0xc] - ldr r2, [r5, #0xc] - ldr r3, [r4, #0x4] - bl _ll_mul - ldr r2, [r4, #0x10] - ldr r3, [r4, #0x14] - add r0, r2, r0 - adc r3, r1 - str r0, [r5, #0xc] - str r3, [r4, #0x4] - add r0, r3, #0x0 - mov r1, #0x0 - mov r2, #0x14 - mov r3, #0x0 - bl _ll_mul - mov r0, #0x0 - add r5, #0x43 - strb r0, [r5, #0x0] - ldr r0, _02031DFC ; =FUN_020320C4 - add r1, #0x14 - bl FUN_02031D20 - pop {r3-r5, pc} -_02031DC8: - mov r0, #0x1 - mov r2, #0x7d - add r1, r0, #0x0 - lsl r2, r2, #0x2 - bl FUN_0202F950 - cmp r0, #0x0 - beq _02031DF6 - ldr r0, _02031DF8 ; =UNK_021C5A00 - ldr r0, [r0, #0x0] - add r0, #0x4c - ldrb r0, [r0, #0x0] - cmp r0, #0x0 - beq _02031DEE - ldr r0, _02031E00 ; =FUN_020323B8 - mov r1, #0x0 - bl FUN_02031D20 - pop {r3-r5, pc} -_02031DEE: - ldr r0, _02031E04 ; =FUN_02031EE0 - mov r1, #0x40 - bl FUN_02031D20 -_02031DF6: - pop {r3-r5, pc} - .balign 4 -_02031DF8: .word UNK_021C5A00 -_02031DFC: .word FUN_020320C4 -_02031E00: .word FUN_020323B8 -_02031E04: .word FUN_02031EE0 - - thumb_func_start FUN_02031E08 -FUN_02031E08: ; 0x02031E08 - push {r3-r5, lr} - bl FUN_0202EE0C - cmp r0, #0x0 - beq _02031E7C - mov r0, #0x1 - bl FUN_02031268 - bl FUN_02030FA8 - ldr r0, _02031E80 ; =UNK_021C5A00 - ldr r0, [r0, #0x0] - add r0, #0x4a - ldrb r0, [r0, #0x0] - cmp r0, #0x0 - beq _02031E32 - ldr r0, _02031E84 ; =FUN_02032058 - mov r1, #0x0 - bl FUN_02031D20 - pop {r3-r5, pc} -_02031E32: - mov r2, #0x7d - mov r0, #0x0 - mov r1, #0x1 - lsl r2, r2, #0x2 - bl FUN_0202F950 - cmp r0, #0x0 - beq _02031E7C - ldr r0, _02031E80 ; =UNK_021C5A00 - ldr r5, [r0, #0x0] - add r4, r5, #0x0 - add r4, #0xc - ldr r0, [r4, #0x8] - ldr r1, [r4, #0xc] - ldr r2, [r5, #0xc] - ldr r3, [r4, #0x4] - bl _ll_mul - ldr r2, [r4, #0x10] - ldr r3, [r4, #0x14] - add r0, r2, r0 - adc r3, r1 - str r0, [r5, #0xc] - mov r1, #0x0 - str r3, [r4, #0x4] - lsr r0, r3, #0x1a - lsl r1, r1, #0x6 - orr r1, r0 - ldrh r0, [r5, #0x38] - cmp r0, #0x0 - beq _02031E76 - lsl r1, r0, #0x6 - mov r0, #0x0 - strh r0, [r5, #0x38] -_02031E76: - ldr r0, _02031E88 ; =FUN_02031EE0 - bl FUN_02031D20 -_02031E7C: - pop {r3-r5, pc} - nop -_02031E80: .word UNK_021C5A00 -_02031E84: .word FUN_02032058 -_02031E88: .word FUN_02031EE0 - - thumb_func_start FUN_02031E8C -FUN_02031E8C: ; 0x02031E8C - push {r3-r5, lr} - bl FUN_0202EE0C - cmp r0, #0x0 - beq _02031ED6 - mov r0, #0x0 - mov r2, #0x7d - add r1, r0, #0x0 - lsl r2, r2, #0x2 - bl FUN_0202F950 - cmp r0, #0x0 - beq _02031ED6 - ldr r0, _02031ED8 ; =UNK_021C5A00 - ldr r4, [r0, #0x0] - add r5, r4, #0x0 - add r5, #0xc - ldr r0, [r5, #0x8] - ldr r1, [r5, #0xc] - ldr r2, [r4, #0xc] - ldr r3, [r5, #0x4] - bl _ll_mul - ldr r2, [r5, #0x10] - ldr r3, [r5, #0x14] - add r0, r2, r0 - adc r3, r1 - str r0, [r4, #0xc] - mov r1, #0x0 - lsr r2, r3, #0x1b - lsl r1, r1, #0x5 - orr r1, r2 - ldr r0, _02031EDC ; =FUN_02031EE0 - add r1, #0x10 - str r3, [r5, #0x4] - bl FUN_02031D20 -_02031ED6: - pop {r3-r5, pc} - .balign 4 -_02031ED8: .word UNK_021C5A00 -_02031EDC: .word FUN_02031EE0 - - thumb_func_start FUN_02031EE0 -FUN_02031EE0: ; 0x02031EE0 - push {r3, lr} - bl FUN_0202EA54 - ldr r0, _02031F54 ; =UNK_021C5A00 - ldr r1, [r0, #0x0] - add r0, r1, #0x0 - add r0, #0x4f - ldrb r0, [r0, #0x0] - cmp r0, #0x0 - bne _02031F50 - add r1, #0x4b - ldrb r0, [r1, #0x0] - cmp r0, #0x0 - bne _02031F50 - bl FUN_0202E8F4 - mov r1, #0x0 - mvn r1, r1 - cmp r0, r1 - beq _02031F1A - ldr r1, _02031F54 ; =UNK_021C5A00 - ldr r1, [r1, #0x0] - add r1, #0x3e - strb r0, [r1, #0x0] - ldr r0, _02031F58 ; =FUN_02031F60 - mov r1, #0x20 - bl FUN_02031D20 - pop {r3, pc} -_02031F1A: - ldr r0, _02031F54 ; =UNK_021C5A00 - ldr r1, [r0, #0x0] - ldrh r0, [r1, #0x3a] - cmp r0, #0x0 - beq _02031F2A - sub r0, r0, #0x1 - strh r0, [r1, #0x3a] - pop {r3, pc} -_02031F2A: - bl FUN_0202E950 - mov r1, #0x0 - mvn r1, r1 - cmp r0, r1 - beq _02031F48 - ldr r1, _02031F54 ; =UNK_021C5A00 - ldr r1, [r1, #0x0] - add r1, #0x3e - strb r0, [r1, #0x0] - ldr r0, _02031F58 ; =FUN_02031F60 - mov r1, #0x20 - bl FUN_02031D20 - pop {r3, pc} -_02031F48: - ldr r0, _02031F5C ; =FUN_02032028 - mov r1, #0x0 - bl FUN_02031D20 -_02031F50: - pop {r3, pc} - nop -_02031F54: .word UNK_021C5A00 -_02031F58: .word FUN_02031F60 -_02031F5C: .word FUN_02032028 - - thumb_func_start FUN_02031F60 -FUN_02031F60: ; 0x02031F60 - push {r3, lr} - bl FUN_0202EA54 - ldr r0, _02031FBC ; =UNK_021C5A00 - ldr r0, [r0, #0x0] - add r0, #0x3e - ldrb r0, [r0, #0x0] - bl FUN_0202E8A0 - cmp r0, #0x0 - beq _02031F90 - ldr r0, _02031FBC ; =UNK_021C5A00 - ldr r0, [r0, #0x0] - add r0, #0x3e - ldrb r0, [r0, #0x0] - bl FUN_0202FB18 - cmp r0, #0x0 - beq _02031F90 - ldr r0, _02031FC0 ; =FUN_02031FC8 - mov r1, #0x64 - bl FUN_02031D20 - pop {r3, pc} -_02031F90: - bl FUN_020311F0 - cmp r0, #0x0 - beq _02031FA2 - ldr r0, _02031FC4 ; =FUN_02032028 - mov r1, #0x0 - bl FUN_02031D20 - pop {r3, pc} -_02031FA2: - ldr r0, _02031FBC ; =UNK_021C5A00 - ldr r1, [r0, #0x0] - ldrh r0, [r1, #0x3a] - cmp r0, #0x0 - beq _02031FB2 - sub r0, r0, #0x1 - strh r0, [r1, #0x3a] - pop {r3, pc} -_02031FB2: - ldr r0, _02031FC4 ; =FUN_02032028 - mov r1, #0x0 - bl FUN_02031D20 - pop {r3, pc} - .balign 4 -_02031FBC: .word UNK_021C5A00 -_02031FC0: .word FUN_02031FC8 -_02031FC4: .word FUN_02032028 - - thumb_func_start FUN_02031FC8 -FUN_02031FC8: ; 0x02031FC8 - push {r3, lr} - bl FUN_02031190 - bl FUN_02030E7C - cmp r0, #0x0 - beq _02031FEE - bl FUN_0202FC60 - mov r0, #0x0 - bl FUN_02031268 - bl FUN_02030FA8 - ldr r0, _0203201C ; =FUN_0203213C - mov r1, #0x0 - bl FUN_02031D20 - pop {r3, pc} -_02031FEE: - bl FUN_020311F0 - cmp r0, #0x0 - beq _02032000 - ldr r0, _02032020 ; =FUN_02032028 - mov r1, #0x0 - bl FUN_02031D20 - pop {r3, pc} -_02032000: - ldr r0, _02032024 ; =UNK_021C5A00 - ldr r1, [r0, #0x0] - ldrh r0, [r1, #0x3a] - cmp r0, #0x0 - beq _02032010 - sub r0, r0, #0x1 - strh r0, [r1, #0x3a] - pop {r3, pc} -_02032010: - ldr r0, _02032020 ; =FUN_02032028 - mov r1, #0x0 - bl FUN_02031D20 - pop {r3, pc} - nop -_0203201C: .word FUN_0203213C -_02032020: .word FUN_02032028 -_02032024: .word UNK_021C5A00 - - thumb_func_start FUN_02032028 -FUN_02032028: ; 0x02032028 - push {r3, lr} - bl FUN_0202E6F0 - cmp r0, #0x0 - beq _0203203A - ldr r0, _0203203C ; =FUN_02032058 - mov r1, #0x0 - bl FUN_02031D20 -_0203203A: - pop {r3, pc} - .balign 4 -_0203203C: .word FUN_02032058 - - thumb_func_start FUN_02032040 -FUN_02032040: ; 0x02032040 - push {r3, lr} - bl FUN_0202E6F0 - cmp r0, #0x0 - beq _02032052 - ldr r0, _02032054 ; =FUN_02031E8C - mov r1, #0x0 - bl FUN_02031D20 -_02032052: - pop {r3, pc} - .balign 4 -_02032054: .word FUN_02031E8C - - thumb_func_start FUN_02032058 -FUN_02032058: ; 0x02032058 - push {r3-r5, lr} - bl FUN_0202EE0C - cmp r0, #0x0 - beq _020320BA - mov r0, #0x1 - bl FUN_02031268 - ldr r1, _020320BC ; =UNK_021C5A00 - mov r2, #0x7d - ldr r1, [r1, #0x0] - mov r0, #0x0 - add r1, #0x43 - ldrb r1, [r1, #0x0] - lsl r2, r2, #0x2 - mov r3, #0x1 - bl FUN_0202F918 - cmp r0, #0x0 - beq _020320BA - ldr r0, _020320BC ; =UNK_021C5A00 - ldr r5, [r0, #0x0] - add r4, r5, #0x0 - add r4, #0xc - ldr r0, [r4, #0x8] - ldr r1, [r4, #0xc] - ldr r2, [r5, #0xc] - ldr r3, [r4, #0x4] - bl _ll_mul - ldr r2, [r4, #0x10] - ldr r3, [r4, #0x14] - add r0, r2, r0 - adc r3, r1 - str r0, [r5, #0xc] - str r3, [r4, #0x4] - add r0, r3, #0x0 - mov r1, #0x0 - mov r2, #0x14 - mov r3, #0x0 - bl _ll_mul - mov r0, #0x0 - add r5, #0x43 - strb r0, [r5, #0x0] - ldr r0, _020320C0 ; =FUN_020320C4 - add r1, #0x14 - bl FUN_02031D20 -_020320BA: - pop {r3-r5, pc} - .balign 4 -_020320BC: .word UNK_021C5A00 -_020320C0: .word FUN_020320C4 - - thumb_func_start FUN_020320C4 -FUN_020320C4: ; 0x020320C4 - push {r3, lr} - bl FUN_020311E8 - cmp r0, #0x0 - beq _020320E2 - ldr r0, _0203210C ; =UNK_021C5A00 - mov r1, #0x1 - ldr r0, [r0, #0x0] - add r0, #0x43 - strb r1, [r0, #0x0] - ldr r0, _02032110 ; =FUN_02032118 - mov r1, #0x0 - bl FUN_02031D20 - pop {r3, pc} -_020320E2: - ldr r0, _0203210C ; =UNK_021C5A00 - ldr r1, [r0, #0x0] - ldrh r0, [r1, #0x3a] - cmp r0, #0x0 - beq _020320F2 - sub r0, r0, #0x1 - strh r0, [r1, #0x3a] - pop {r3, pc} -_020320F2: - add r1, #0x4a - ldrb r0, [r1, #0x0] - cmp r0, #0x0 - bne _0203210A - bl FUN_0202E6F0 - cmp r0, #0x0 - beq _0203210A - ldr r0, _02032114 ; =FUN_02032040 - mov r1, #0x2 - bl FUN_02031D20 -_0203210A: - pop {r3, pc} - .balign 4 -_0203210C: .word UNK_021C5A00 -_02032110: .word FUN_02032118 -_02032114: .word FUN_02032040 - - thumb_func_start FUN_02032118 -FUN_02032118: ; 0x02032118 - push {r3, lr} - mov r0, #0x0 - bl FUN_02031268 - mov r0, #0x1 - bl FUN_0202EE84 - bl FUN_02030FA8 - ldr r0, _02032134 ; =FUN_02032138 - mov r1, #0x0 - bl FUN_02031D20 - pop {r3, pc} - .balign 4 -_02032134: .word FUN_02032138 - - thumb_func_start FUN_02032138 -FUN_02032138: ; 0x02032138 - bx lr - .balign 4 - - thumb_func_start FUN_0203213C -FUN_0203213C: ; 0x0203213C - bx lr - .balign 4 - - thumb_func_start FUN_02032140 -FUN_02032140: ; 0x02032140 - push {r3, lr} - ldr r0, _02032170 ; =UNK_021C5A00 - ldr r0, [r0, #0x0] - add r0, #0x3f - ldrb r0, [r0, #0x0] - cmp r0, #0x13 - bhs _02032166 - bl FUN_0202EE0C - cmp r0, #0x0 - beq _0203216E - mov r0, #0x1 - bl FUN_02031268 - bl FUN_02030FA8 - mov r0, #0x1 - bl FUN_0202E7B0 -_02032166: - ldr r0, _02032174 ; =FUN_020323B8 - mov r1, #0x0 - bl FUN_02031D20 -_0203216E: - pop {r3, pc} - .balign 4 -_02032170: .word UNK_021C5A00 -_02032174: .word FUN_020323B8 - - thumb_func_start FUN_02032178 -FUN_02032178: ; 0x02032178 - push {r3, lr} - bl FUN_0202E6F0 - cmp r0, #0x0 - beq _0203218E - bl FUN_0202FC60 - ldr r0, _02032190 ; =FUN_02032140 - mov r1, #0x0 - bl FUN_02031D20 -_0203218E: - pop {r3, pc} - .balign 4 -_02032190: .word FUN_02032140 - - thumb_func_start FUN_02032194 -FUN_02032194: ; 0x02032194 - push {r3, lr} - bl FUN_0202E4C8 - cmp r0, #0x0 - beq _020321B0 - mov r0, #0x0 - bl FUN_0202E7B0 - bl FUN_0202FC60 - ldr r0, _020321B4 ; =FUN_02031E08 - mov r1, #0x0 - bl FUN_02031D20 -_020321B0: - pop {r3, pc} - nop -_020321B4: .word FUN_02031E08 - - thumb_func_start FUN_020321B8 -FUN_020321B8: ; 0x020321B8 - push {r3, lr} - bl FUN_0202E6F0 - cmp r0, #0x0 - beq _020321CA - ldr r0, _020321CC ; =FUN_02031E08 - mov r1, #0x0 - bl FUN_02031D20 -_020321CA: - pop {r3, pc} - .balign 4 -_020321CC: .word FUN_02031E08 - - thumb_func_start FUN_020321D0 -FUN_020321D0: ; 0x020321D0 - push {r3, lr} - bl FUN_0202E4C8 - cmp r0, #0x0 - beq _0203220C - ldr r0, _02032210 ; =UNK_021C5A00 - ldr r0, [r0, #0x0] - ldr r0, [r0, #0x2c] - bl FUN_0202E29C - ldr r0, _02032210 ; =UNK_021C5A00 - ldr r1, [r0, #0x0] - ldr r0, [r1, #0x28] - ldr r1, [r1, #0x30] - bl FUN_0202DB14 - mov r0, #0x1 - add r1, r0, #0x0 - lsl r2, r0, #0x9 - add r3, r0, #0x0 - bl FUN_0202F918 - cmp r0, #0x0 - beq _0203220C - bl FUN_0202FA10 - ldr r0, _02032214 ; =FUN_02032218 - mov r1, #0x0 - bl FUN_02031D20 -_0203220C: - pop {r3, pc} - nop -_02032210: .word UNK_021C5A00 -_02032214: .word FUN_02032218 - - thumb_func_start FUN_02032218 -FUN_02032218: ; 0x02032218 - push {r3, lr} - bl FUN_02031190 - bl FUN_02030E7C - cmp r0, #0x0 - beq _0203222E - ldr r0, _02032230 ; =FUN_02032234 - mov r1, #0x0 - bl FUN_02031D20 -_0203222E: - pop {r3, pc} - .balign 4 -_02032230: .word FUN_02032234 - - thumb_func_start FUN_02032234 -FUN_02032234: ; 0x02032234 - push {r3, lr} - bl FUN_02030F40 - cmp r0, #0x0 - bne _02032246 - ldr r0, _02032248 ; =FUN_020323BC - mov r1, #0x0 - bl FUN_02031D20 -_02032246: - pop {r3, pc} - .balign 4 -_02032248: .word FUN_020323BC - - thumb_func_start FUN_0203224C -FUN_0203224C: ; 0x0203224C - push {r3, lr} - bl FUN_0202E4C8 - cmp r0, #0x0 - beq _02032286 - ldr r0, _02032288 ; =UNK_021C5A00 - ldr r0, [r0, #0x0] - ldr r0, [r0, #0x2c] - bl FUN_0202E29C - ldr r0, _02032288 ; =UNK_021C5A00 - ldr r1, [r0, #0x0] - ldr r0, [r1, #0x28] - ldr r1, [r1, #0x30] - bl FUN_0202DB14 - mov r0, #0x1 - add r1, r0, #0x0 - lsl r2, r0, #0x9 - bl FUN_0202F950 - cmp r0, #0x0 - beq _02032286 - bl FUN_0202FA10 - ldr r0, _0203228C ; =FUN_02032290 - mov r1, #0x0 - bl FUN_02031D20 -_02032286: - pop {r3, pc} - .balign 4 -_02032288: .word UNK_021C5A00 -_0203228C: .word FUN_02032290 - - thumb_func_start FUN_02032290 -FUN_02032290: ; 0x02032290 - ldr r3, _02032294 ; =FUN_0202EA54 - bx r3 - .balign 4 -_02032294: .word FUN_0202EA54 - - thumb_func_start FUN_02032298 -FUN_02032298: ; 0x02032298 - push {r3, lr} - bl FUN_0202EA54 - ldr r0, _020322B8 ; =UNK_021C5A00 - ldr r0, [r0, #0x0] - add r0, #0x3e - ldrb r0, [r0, #0x0] - bl FUN_0202FB18 - cmp r0, #0x0 - beq _020322B6 - ldr r0, _020322BC ; =FUN_020322C0 - mov r1, #0xa - bl FUN_02031D20 -_020322B6: - pop {r3, pc} - .balign 4 -_020322B8: .word UNK_021C5A00 -_020322BC: .word FUN_020322C0 - - thumb_func_start FUN_020322C0 -FUN_020322C0: ; 0x020322C0 - push {r3, lr} - bl FUN_020311F0 - cmp r0, #0x0 - beq _020322D2 - ldr r0, _020322F0 ; =FUN_020322F8 - mov r1, #0x0 - bl FUN_02031D20 -_020322D2: - bl FUN_02031190 - bl FUN_02030E7C - cmp r0, #0x0 - beq _020322EE - bl FUN_02031190 - cmp r0, #0x0 - beq _020322EE - ldr r0, _020322F4 ; =FUN_0203234C - mov r1, #0x0 - bl FUN_02031D20 -_020322EE: - pop {r3, pc} - .balign 4 -_020322F0: .word FUN_020322F8 -_020322F4: .word FUN_0203234C - - thumb_func_start FUN_020322F8 -FUN_020322F8: ; 0x020322F8 - push {r3, lr} - bl FUN_0202E6F0 - ldr r0, _02032308 ; =FUN_0203230C - mov r1, #0x2 - bl FUN_02031D20 - pop {r3, pc} - .balign 4 -_02032308: .word FUN_0203230C - - thumb_func_start FUN_0203230C -FUN_0203230C: ; 0x0203230C - push {r3, lr} - ldr r0, _02032344 ; =UNK_021C5A00 - ldr r1, [r0, #0x0] - ldrh r0, [r1, #0x3a] - cmp r0, #0x0 - beq _0203231E - sub r0, r0, #0x1 - strh r0, [r1, #0x3a] - pop {r3, pc} -_0203231E: - bl FUN_0202EE0C - cmp r0, #0x0 - beq _02032340 - mov r1, #0x1 - mov r0, #0x0 - lsl r2, r1, #0x9 - bl FUN_0202F950 - cmp r0, #0x0 - beq _02032340 - bl FUN_0202FA10 - ldr r0, _02032348 ; =FUN_02032298 - mov r1, #0xa - bl FUN_02031D20 -_02032340: - pop {r3, pc} - nop -_02032344: .word UNK_021C5A00 -_02032348: .word FUN_02032298 - - thumb_func_start FUN_0203234C -FUN_0203234C: ; 0x0203234C - push {r3, lr} - bl FUN_02030F40 - cmp r0, #0x0 - bne _0203235E - ldr r0, _02032360 ; =FUN_020323BC - mov r1, #0x0 - bl FUN_02031D20 -_0203235E: - pop {r3, pc} - .balign 4 -_02032360: .word FUN_020323BC - - thumb_func_start FUN_02032364 -FUN_02032364: ; 0x02032364 - push {r3, lr} - bl FUN_0202E6F0 - ldr r0, _02032374 ; =FUN_02032378 - mov r1, #0x2 - bl FUN_02031D20 - pop {r3, pc} - .balign 4 -_02032374: .word FUN_02032378 - - thumb_func_start FUN_02032378 -FUN_02032378: ; 0x02032378 - push {r3, lr} - ldr r0, _020323B0 ; =UNK_021C5A00 - ldr r1, [r0, #0x0] - ldrh r0, [r1, #0x3a] - cmp r0, #0x0 - beq _0203238A - sub r0, r0, #0x1 - strh r0, [r1, #0x3a] - pop {r3, pc} -_0203238A: - bl FUN_0202EE0C - cmp r0, #0x0 - beq _020323AC - mov r1, #0x1 - mov r0, #0x0 - lsl r2, r1, #0x9 - bl FUN_0202F950 - cmp r0, #0x0 - beq _020323AC - bl FUN_0202FA10 - ldr r0, _020323B4 ; =FUN_02032290 - mov r1, #0xa - bl FUN_02031D20 -_020323AC: - pop {r3, pc} - nop -_020323B0: .word UNK_021C5A00 -_020323B4: .word FUN_02032290 - - thumb_func_start FUN_020323B8 -FUN_020323B8: ; 0x020323B8 - bx lr - .balign 4 - - thumb_func_start FUN_020323BC -FUN_020323BC: ; 0x020323BC - push {r3, lr} - bl FUN_02030F40 - cmp r0, #0x0 - bne _020323CA - bl FUN_020317C0 -_020323CA: - pop {r3, pc} - - thumb_func_start FUN_020323CC -FUN_020323CC: ; 0x020323CC - ldr r3, _020323D4 ; =FUN_02031D20 - ldr r0, _020323D8 ; =FUN_02032440 - mov r1, #0x5 - bx r3 - .balign 4 -_020323D4: .word FUN_02031D20 -_020323D8: .word FUN_02032440 - - thumb_func_start FUN_020323DC -FUN_020323DC: ; 0x020323DC - push {r3, lr} - bl FUN_02030F20 - cmp r0, #0x1 - bgt _020323F8 - mov r0, #0x0 - bl FUN_0202D36C - bl FUN_0202FC80 - ldr r0, _0203241C ; =FUN_020324F8 - mov r1, #0x0 - bl FUN_02031D20 -_020323F8: - ldr r0, _02032420 ; =UNK_021C5A00 - ldr r1, [r0, #0x0] - ldrh r0, [r1, #0x3a] - cmp r0, #0x0 - beq _02032408 - sub r0, r0, #0x1 - strh r0, [r1, #0x3a] - pop {r3, pc} -_02032408: - mov r0, #0x0 - bl FUN_0202D36C - bl FUN_0202FC80 - ldr r0, _0203241C ; =FUN_020324F8 - mov r1, #0x0 - bl FUN_02031D20 - pop {r3, pc} - .balign 4 -_0203241C: .word FUN_020324F8 -_02032420: .word UNK_021C5A00 - - thumb_func_start FUN_02032424 -FUN_02032424: ; 0x02032424 - push {r3, lr} - bl FUN_0202E6F0 - cmp r0, #0x0 - beq _0203243A - bl FUN_0202FC60 - ldr r0, _0203243C ; =FUN_020324F8 - mov r1, #0x0 - bl FUN_02031D20 -_0203243A: - pop {r3, pc} - .balign 4 -_0203243C: .word FUN_020324F8 - - thumb_func_start FUN_02032440 -FUN_02032440: ; 0x02032440 - push {r3, lr} - ldr r0, _02032470 ; =UNK_021C5A00 - ldr r1, [r0, #0x0] - ldrh r0, [r1, #0x3a] - cmp r0, #0x0 - beq _02032450 - sub r0, r0, #0x1 - strh r0, [r1, #0x3a] -_02032450: - bl FUN_0202E6F0 - cmp r0, #0x0 - beq _0203246E - ldr r0, _02032470 ; =UNK_021C5A00 - ldr r0, [r0, #0x0] - ldrh r0, [r0, #0x3a] - cmp r0, #0x0 - bne _0203246E - bl FUN_0202FA5C - ldr r0, _02032474 ; =FUN_020323BC - mov r1, #0x0 - bl FUN_02031D20 -_0203246E: - pop {r3, pc} - .balign 4 -_02032470: .word UNK_021C5A00 -_02032474: .word FUN_020323BC - - thumb_func_start FUN_02032478 -FUN_02032478: ; 0x02032478 - push {r3, lr} - bl FUN_0202E4C8 - cmp r0, #0x0 - beq _020324BE - ldr r0, _020324C0 ; =UNK_021C5A00 - ldr r0, [r0, #0x0] - ldr r0, [r0, #0x2c] - bl FUN_0202E29C - ldr r0, _020324C0 ; =UNK_021C5A00 - ldr r0, [r0, #0x0] - add r0, #0x3c - ldrb r0, [r0, #0x0] - bl FUN_0202D1B0 - ldr r0, _020324C0 ; =UNK_021C5A00 - mov r1, #0x0 - ldr r0, [r0, #0x0] - ldr r0, [r0, #0x28] - bl FUN_0202DB14 - mov r0, #0x1 - add r1, r0, #0x0 - lsl r2, r0, #0x9 - bl FUN_0202F950 - cmp r0, #0x0 - beq _020324BE - bl FUN_0202FA10 - ldr r0, _020324C4 ; =FUN_020324C8 - mov r1, #0x40 - bl FUN_02031D20 -_020324BE: - pop {r3, pc} - .balign 4 -_020324C0: .word UNK_021C5A00 -_020324C4: .word FUN_020324C8 - - thumb_func_start FUN_020324C8 -FUN_020324C8: ; 0x020324C8 - push {r3, lr} - bl FUN_0202EA54 - ldr r0, _020324F0 ; =UNK_021C5A00 - ldr r1, [r0, #0x0] - ldrh r0, [r1, #0x3a] - cmp r0, #0x0 - beq _020324DE - sub r0, r0, #0x1 - strh r0, [r1, #0x3a] - pop {r3, pc} -_020324DE: - bl FUN_0202E6F0 - cmp r0, #0x0 - beq _020324EE - ldr r0, _020324F4 ; =FUN_02032510 - mov r1, #0x0 - bl FUN_02031D20 -_020324EE: - pop {r3, pc} - .balign 4 -_020324F0: .word UNK_021C5A00 -_020324F4: .word FUN_02032510 - - thumb_func_start FUN_020324F8 -FUN_020324F8: ; 0x020324F8 - push {r3, lr} - bl FUN_0202E6F0 - cmp r0, #0x0 - beq _0203250A - ldr r0, _0203250C ; =FUN_02032510 - mov r1, #0x0 - bl FUN_02031D20 -_0203250A: - pop {r3, pc} - .balign 4 -_0203250C: .word FUN_02032510 - - thumb_func_start FUN_02032510 -FUN_02032510: ; 0x02032510 - push {r3-r5, lr} - bl FUN_0202EE0C - cmp r0, #0x0 - beq _02032568 - ldr r1, _0203256C ; =UNK_021C5A00 - mov r2, #0x2 - ldr r1, [r1, #0x0] - mov r0, #0x0 - add r1, #0x43 - ldrb r1, [r1, #0x0] - lsl r2, r2, #0x8 - mov r3, #0x1 - bl FUN_0202F918 - cmp r0, #0x0 - beq _02032568 - ldr r0, _0203256C ; =UNK_021C5A00 - ldr r4, [r0, #0x0] - add r5, r4, #0x0 - add r5, #0xc - ldr r0, [r5, #0x8] - ldr r1, [r5, #0xc] - ldr r2, [r4, #0xc] - ldr r3, [r5, #0x4] - bl _ll_mul - ldr r2, [r5, #0x10] - ldr r3, [r5, #0x14] - add r0, r2, r0 - adc r3, r1 - str r0, [r4, #0xc] - str r3, [r5, #0x4] - bl FUN_0202FA10 - ldr r0, _0203256C ; =UNK_021C5A00 - mov r1, #0x0 - ldr r0, [r0, #0x0] - add r0, #0x43 - strb r1, [r0, #0x0] - ldr r0, _02032570 ; =FUN_02032578 - ldr r1, _02032574 ; =0x00002710 - bl FUN_02031D20 -_02032568: - pop {r3-r5, pc} - nop -_0203256C: .word UNK_021C5A00 -_02032570: .word FUN_02032578 -_02032574: .word 0x00002710 - - thumb_func_start FUN_02032578 -FUN_02032578: ; 0x02032578 - push {r3, lr} - bl FUN_0202F104 - cmp r0, #0x0 - bne _020325B2 - bl FUN_020311E8 - cmp r0, #0x0 - beq _020325A2 - ldr r0, _020325C4 ; =UNK_021C5A00 - mov r1, #0x1 - ldr r0, [r0, #0x0] - add r0, #0x43 - strb r1, [r0, #0x0] - bl FUN_02033E74 - ldr r0, _020325C8 ; =FUN_020327FC - mov r1, #0x0 - bl FUN_02031D20 - pop {r3, pc} -_020325A2: - ldr r0, _020325C4 ; =UNK_021C5A00 - ldr r1, [r0, #0x0] - ldrh r0, [r1, #0x3a] - cmp r0, #0x0 - beq _020325B2 - sub r0, r0, #0x1 - strh r0, [r1, #0x3a] - pop {r3, pc} -_020325B2: - bl FUN_0202E6F0 - cmp r0, #0x0 - beq _020325C2 - ldr r0, _020325CC ; =FUN_020325D0 - mov r1, #0x0 - bl FUN_02031D20 -_020325C2: - pop {r3, pc} - .balign 4 -_020325C4: .word UNK_021C5A00 -_020325C8: .word FUN_020327FC -_020325CC: .word FUN_020325D0 - - thumb_func_start FUN_020325D0 -FUN_020325D0: ; 0x020325D0 - push {r3-r5, lr} - bl FUN_0202EE0C - cmp r0, #0x0 - beq _0203261C - mov r0, #0x0 - mov r2, #0x2 - add r1, r0, #0x0 - lsl r2, r2, #0x8 - bl FUN_0202F950 - cmp r0, #0x0 - beq _0203261C - bl FUN_0202FA10 - ldr r0, _02032620 ; =UNK_021C5A00 - ldr r4, [r0, #0x0] - add r5, r4, #0x0 - add r5, #0xc - ldr r0, [r5, #0x8] - ldr r1, [r5, #0xc] - ldr r2, [r4, #0xc] - ldr r3, [r5, #0x4] - bl _ll_mul - ldr r2, [r5, #0x10] - ldr r3, [r5, #0x14] - add r0, r2, r0 - adc r3, r1 - str r0, [r4, #0xc] - mov r1, #0x0 - ldr r0, _02032624 ; =FUN_020324C8 - lsr r2, r3, #0x1b - lsl r1, r1, #0x5 - orr r1, r2 - str r3, [r5, #0x4] - bl FUN_02031D20 -_0203261C: - pop {r3-r5, pc} - nop -_02032620: .word UNK_021C5A00 -_02032624: .word FUN_020324C8 - - thumb_func_start FUN_02032628 -FUN_02032628: ; 0x02032628 - push {r3, lr} - bl FUN_0202E6F0 - cmp r0, #0x0 - beq _0203263A - ldr r0, _0203263C ; =FUN_02032640 - mov r1, #0x0 - bl FUN_02031D20 -_0203263A: - pop {r3, pc} - .balign 4 -_0203263C: .word FUN_02032640 - - thumb_func_start FUN_02032640 -FUN_02032640: ; 0x02032640 - push {r3, lr} - bl FUN_0202EE0C - cmp r0, #0x0 - beq _02032666 - mov r0, #0x0 - mov r2, #0x2 - add r1, r0, #0x0 - lsl r2, r2, #0x8 - bl FUN_0202F950 - cmp r0, #0x0 - beq _02032666 - bl FUN_0202FA10 - ldr r0, _02032668 ; =FUN_0203266C - mov r1, #0x64 - bl FUN_02031D20 -_02032666: - pop {r3, pc} - .balign 4 -_02032668: .word FUN_0203266C - - thumb_func_start FUN_0203266C -FUN_0203266C: ; 0x0203266C - push {r3, lr} - ldr r0, _020326C4 ; =UNK_021C5A00 - ldr r0, [r0, #0x0] - add r0, #0x3e - ldrb r0, [r0, #0x0] - bl FUN_0202E8A0 - cmp r0, #0x0 - beq _02032698 - ldr r0, _020326C4 ; =UNK_021C5A00 - ldr r0, [r0, #0x0] - add r0, #0x3e - ldrb r0, [r0, #0x0] - bl FUN_0202FB18 - cmp r0, #0x0 - beq _02032698 - ldr r0, _020326C8 ; =FUN_020326D0 - mov r1, #0x64 - bl FUN_02031D20 - pop {r3, pc} -_02032698: - bl FUN_020311F0 - cmp r0, #0x0 - beq _020326AA - ldr r0, _020326CC ; =FUN_020327B8 - mov r1, #0x0 - bl FUN_02031D20 - pop {r3, pc} -_020326AA: - ldr r0, _020326C4 ; =UNK_021C5A00 - ldr r1, [r0, #0x0] - ldrh r0, [r1, #0x3a] - cmp r0, #0x0 - beq _020326BA - sub r0, r0, #0x1 - strh r0, [r1, #0x3a] - pop {r3, pc} -_020326BA: - ldr r0, _020326CC ; =FUN_020327B8 - mov r1, #0x0 - bl FUN_02031D20 - pop {r3, pc} - .balign 4 -_020326C4: .word UNK_021C5A00 -_020326C8: .word FUN_020326D0 -_020326CC: .word FUN_020327B8 - - thumb_func_start FUN_020326D0 -FUN_020326D0: ; 0x020326D0 - push {r3, lr} - bl FUN_020311F0 - cmp r0, #0x0 - beq _020326E4 - ldr r0, _02032728 ; =FUN_020327B8 - mov r1, #0x0 - bl FUN_02031D20 - pop {r3, pc} -_020326E4: - bl FUN_02031190 - bl FUN_02030E7C - cmp r0, #0x0 - beq _0203270C - ldr r0, _0203272C ; =UNK_021C5A00 - mov r1, #0x0 - ldr r0, [r0, #0x0] - add r0, #0x3d - strb r1, [r0, #0x0] - ldr r1, _02032730 ; =UNK_02105D5C - mov r0, #0x6 - bl FUN_020311D0 - ldr r0, _02032734 ; =FUN_02032738 - mov r1, #0x78 - bl FUN_02031D20 - pop {r3, pc} -_0203270C: - ldr r0, _0203272C ; =UNK_021C5A00 - ldr r1, [r0, #0x0] - ldrh r0, [r1, #0x3a] - cmp r0, #0x0 - beq _0203271C - sub r0, r0, #0x1 - strh r0, [r1, #0x3a] - pop {r3, pc} -_0203271C: - ldr r0, _02032728 ; =FUN_020327B8 - mov r1, #0x0 - bl FUN_02031D20 - pop {r3, pc} - nop -_02032728: .word FUN_020327B8 -_0203272C: .word UNK_021C5A00 -_02032730: .word UNK_02105D5C -_02032734: .word FUN_02032738 - - thumb_func_start FUN_02032738 -FUN_02032738: ; 0x02032738 - push {r3, lr} - bl FUN_020311F0 - cmp r0, #0x0 - beq _0203274C - ldr r0, _0203278C ; =FUN_020327B8 - mov r1, #0x0 - bl FUN_02031D20 - pop {r3, pc} -_0203274C: - ldr r0, _02032790 ; =UNK_021C5A00 - ldr r1, [r0, #0x0] - add r0, r1, #0x0 - add r0, #0x3d - ldrb r0, [r0, #0x0] - cmp r0, #0x2 - bne _02032764 - ldr r0, _02032794 ; =FUN_020327B4 - mov r1, #0x0 - bl FUN_02031D20 - pop {r3, pc} -_02032764: - cmp r0, #0x1 - bne _02032776 - bl FUN_0202DBE0 - ldr r0, _02032798 ; =FUN_0203279C - mov r1, #0x0 - bl FUN_02031D20 - pop {r3, pc} -_02032776: - ldrh r0, [r1, #0x3a] - cmp r0, #0x0 - beq _02032782 - sub r0, r0, #0x1 - strh r0, [r1, #0x3a] - pop {r3, pc} -_02032782: - ldr r0, _0203278C ; =FUN_020327B8 - mov r1, #0x0 - bl FUN_02031D20 - pop {r3, pc} - .balign 4 -_0203278C: .word FUN_020327B8 -_02032790: .word UNK_021C5A00 -_02032794: .word FUN_020327B4 -_02032798: .word FUN_0203279C - - thumb_func_start FUN_0203279C -FUN_0203279C: ; 0x0203279C - push {r3, lr} - bl FUN_020311F0 - cmp r0, #0x0 - beq _020327AE - ldr r0, _020327B0 ; =FUN_020327B8 - mov r1, #0x0 - bl FUN_02031D20 -_020327AE: - pop {r3, pc} - .balign 4 -_020327B0: .word FUN_020327B8 - - thumb_func_start FUN_020327B4 -FUN_020327B4: ; 0x020327B4 - bx lr - .balign 4 - - thumb_func_start FUN_020327B8 -FUN_020327B8: ; 0x020327B8 - push {r3, lr} - ldr r0, _020327F0 ; =UNK_021C5A00 - mov r1, #0x0 - ldr r0, [r0, #0x0] - add r0, #0x3d - strb r1, [r0, #0x0] - bl FUN_0202E6F0 - cmp r0, #0x0 - beq _020327EC - ldr r0, _020327F0 ; =UNK_021C5A00 - ldr r1, [r0, #0x0] - ldrh r0, [r1, #0x38] - cmp r0, #0x0 - beq _020327E4 - sub r0, r0, #0x1 - strh r0, [r1, #0x38] - ldr r0, _020327F4 ; =FUN_02032640 - mov r1, #0x0 - bl FUN_02031D20 - pop {r3, pc} -_020327E4: - ldr r0, _020327F8 ; =FUN_020327B4 - mov r1, #0x0 - bl FUN_02031D20 -_020327EC: - pop {r3, pc} - nop -_020327F0: .word UNK_021C5A00 -_020327F4: .word FUN_02032640 -_020327F8: .word FUN_020327B4 - - thumb_func_start FUN_020327FC -FUN_020327FC: ; 0x020327FC - push {r3, lr} - bl FUN_020311E8 - cmp r0, #0x0 - bne _02032820 - bl FUN_02033510 - cmp r0, #0x0 - bne _0203282C - bl FUN_0202E6F0 - cmp r0, #0x0 - beq _0203282C - ldr r0, _02032848 ; =FUN_020325D0 - mov r1, #0x0 - bl FUN_02031D20 - b _0203282C -_02032820: - bl FUN_02031190 - cmp r0, #0x0 - bne _0203282C - bl FUN_0202DDE8 -_0203282C: - bl FUN_020311F0 - cmp r0, #0x0 - beq _02032844 - bl FUN_02033510 - cmp r0, #0x0 - bne _02032844 - ldr r0, _0203284C ; =FUN_020327B8 - mov r1, #0x0 - bl FUN_02031D20 -_02032844: - pop {r3, pc} - nop -_02032848: .word FUN_020325D0 -_0203284C: .word FUN_020327B8 - - thumb_func_start FUN_02032850 -FUN_02032850: ; 0x02032850 - push {r3, lr} - bl FUN_0202EE0C - cmp r0, #0x0 - beq _0203287E - ldr r1, _02032880 ; =UNK_021C5A00 - mov r0, #0x0 - ldr r1, [r1, #0x0] - mov r2, #0x2 - add r1, #0x43 - ldrb r1, [r1, #0x0] - lsl r2, r2, #0x8 - add r3, r0, #0x0 - bl FUN_0202F918 - cmp r0, #0x0 - beq _0203287E - bl FUN_0202FA10 - ldr r0, _02032884 ; =FUN_020323B8 - mov r1, #0x0 - bl FUN_02031D20 -_0203287E: - pop {r3, pc} - .balign 4 -_02032880: .word UNK_021C5A00 -_02032884: .word FUN_020323B8 - - thumb_func_start FUN_02032888 -FUN_02032888: ; 0x02032888 - push {r3, lr} - ldr r0, _020328BC ; =UNK_021C5A00 - mov r1, #0xd - ldr r0, [r0, #0x0] - add r0, #0x3f - strb r1, [r0, #0x0] - bl FUN_02031190 - cmp r0, #0x0 - add r0, sp, #0x0 - bne _020328AE - mov r1, #0x0 - strb r1, [r0, #0x1] - add r1, sp, #0x0 - mov r0, #0xa - add r1, #0x1 - bl FUN_020311D0 - pop {r3, pc} -_020328AE: - mov r1, #0x0 - strb r1, [r0, #0x0] - mov r0, #0xa - add r1, sp, #0x0 - bl FUN_020311D0 - pop {r3, pc} - .balign 4 -_020328BC: .word UNK_021C5A00 - - thumb_func_start FUN_020328C0 -FUN_020328C0: ; 0x020328C0 - ldr r1, _020328D8 ; =UNK_021C5A00 - ldr r3, _020328DC ; =FUN_02031D20 - ldr r2, [r1, #0x0] - add r2, #0x3e - strb r0, [r2, #0x0] - ldr r0, [r1, #0x0] - mov r2, #0x3 - strh r2, [r0, #0x38] - ldr r0, _020328E0 ; =FUN_02032924 - mov r1, #0x0 - bx r3 - nop -_020328D8: .word UNK_021C5A00 -_020328DC: .word FUN_02031D20 -_020328E0: .word FUN_02032924 - - thumb_func_start FUN_020328E4 -FUN_020328E4: ; 0x020328E4 - ldr r0, _020328F0 ; =UNK_021C5A00 - mov r1, #0x7 - ldr r0, [r0, #0x0] - add r0, #0x3f - strb r1, [r0, #0x0] - bx lr - .balign 4 -_020328F0: .word UNK_021C5A00 - - thumb_func_start FUN_020328F4 -FUN_020328F4: ; 0x020328F4 - push {r3, lr} - ldr r1, _0203291C ; =UNK_021C5A00 - ldr r2, [r1, #0x0] - add r2, #0x3e - strb r0, [r2, #0x0] - ldr r0, [r1, #0x0] - mov r2, #0x7 - add r0, #0x3f - strb r2, [r0, #0x0] - ldr r0, [r1, #0x0] - mov r2, #0x3 - strh r2, [r0, #0x38] - bl FUN_02033E74 - ldr r0, _02032920 ; =FUN_02032628 - mov r1, #0x0 - bl FUN_02031D20 - pop {r3, pc} - nop -_0203291C: .word UNK_021C5A00 -_02032920: .word FUN_02032628 - - thumb_func_start FUN_02032924 -FUN_02032924: ; 0x02032924 - push {r3, lr} - bl FUN_0202E6F0 - cmp r0, #0x0 - beq _02032936 - ldr r0, _02032938 ; =FUN_0203293C - mov r1, #0x0 - bl FUN_02031D20 -_02032936: - pop {r3, pc} - .balign 4 -_02032938: .word FUN_0203293C - - thumb_func_start FUN_0203293C -FUN_0203293C: ; 0x0203293C - push {r3, lr} - bl FUN_0202EE0C - cmp r0, #0x0 - beq _0203296C - ldr r0, _02032970 ; =UNK_021C5A00 - mov r2, #0x2 - ldr r0, [r0, #0x0] - mov r1, #0xd - add r0, #0x3f - strb r1, [r0, #0x0] - mov r0, #0x0 - add r1, r0, #0x0 - lsl r2, r2, #0x8 - bl FUN_0202F950 - cmp r0, #0x0 - beq _0203296C - bl FUN_0202FA1C - ldr r0, _02032974 ; =FUN_02032978 - mov r1, #0x64 - bl FUN_02031D20 -_0203296C: - pop {r3, pc} - nop -_02032970: .word UNK_021C5A00 -_02032974: .word FUN_02032978 - - thumb_func_start FUN_02032978 -FUN_02032978: ; 0x02032978 - push {r3, lr} - ldr r0, _020329E4 ; =UNK_021C5A00 - ldr r0, [r0, #0x0] - add r0, #0x3e - ldrb r0, [r0, #0x0] - bl FUN_0202E8A0 - cmp r0, #0x0 - beq _020329A4 - ldr r0, _020329E4 ; =UNK_021C5A00 - ldr r0, [r0, #0x0] - add r0, #0x3e - ldrb r0, [r0, #0x0] - bl FUN_0202FB18 - cmp r0, #0x0 - beq _020329A4 - ldr r0, _020329E8 ; =FUN_020329F4 - mov r1, #0x64 - bl FUN_02031D20 - pop {r3, pc} -_020329A4: - bl FUN_020311F0 - cmp r0, #0x0 - bne _020329B6 - ldr r0, _020329E4 ; =UNK_021C5A00 - ldr r1, [r0, #0x0] - ldrh r0, [r1, #0x3a] - cmp r0, #0x0 - bne _020329DC -_020329B6: - ldr r0, _020329E4 ; =UNK_021C5A00 - ldr r2, [r0, #0x0] - ldrh r1, [r2, #0x38] - sub r1, r1, #0x1 - strh r1, [r2, #0x38] - ldr r0, [r0, #0x0] - ldrh r0, [r0, #0x38] - cmp r0, #0x0 - bne _020329D2 - ldr r0, _020329EC ; =FUN_020327B4 - mov r1, #0x0 - bl FUN_02031D20 - pop {r3, pc} -_020329D2: - ldr r0, _020329F0 ; =FUN_02032924 - mov r1, #0x0 - bl FUN_02031D20 - pop {r3, pc} -_020329DC: - beq _020329E2 - sub r0, r0, #0x1 - strh r0, [r1, #0x3a] -_020329E2: - pop {r3, pc} - .balign 4 -_020329E4: .word UNK_021C5A00 -_020329E8: .word FUN_020329F4 -_020329EC: .word FUN_020327B4 -_020329F0: .word FUN_02032924 - - thumb_func_start FUN_020329F4 -FUN_020329F4: ; 0x020329F4 - push {r3, lr} - ldr r0, _02032A7C ; =UNK_021C5A00 - ldr r1, [r0, #0x0] - ldrh r0, [r1, #0x3a] - cmp r0, #0x5a - bls _02032A06 - sub r0, r0, #0x1 - strh r0, [r1, #0x3a] - pop {r3, pc} -_02032A06: - bl FUN_020311F0 - cmp r0, #0x0 - beq _02032A34 - ldr r0, _02032A7C ; =UNK_021C5A00 - ldr r2, [r0, #0x0] - ldrh r1, [r2, #0x38] - sub r1, r1, #0x1 - strh r1, [r2, #0x38] - ldr r0, [r0, #0x0] - ldrh r0, [r0, #0x38] - cmp r0, #0x0 - bne _02032A2A - ldr r0, _02032A80 ; =FUN_020327B4 - mov r1, #0x0 - bl FUN_02031D20 - pop {r3, pc} -_02032A2A: - ldr r0, _02032A84 ; =FUN_02032924 - mov r1, #0x0 - bl FUN_02031D20 - pop {r3, pc} -_02032A34: - bl FUN_02031190 - bl FUN_02030E7C - cmp r0, #0x0 - beq _02032A4A - ldr r0, _02032A88 ; =FUN_0203279C - mov r1, #0x0 - bl FUN_02031D20 - pop {r3, pc} -_02032A4A: - ldr r0, _02032A7C ; =UNK_021C5A00 - ldr r2, [r0, #0x0] - ldrh r1, [r2, #0x3a] - cmp r1, #0x0 - beq _02032A5A - sub r0, r1, #0x1 - strh r0, [r2, #0x3a] - pop {r3, pc} -_02032A5A: - ldrh r1, [r2, #0x38] - sub r1, r1, #0x1 - strh r1, [r2, #0x38] - ldr r0, [r0, #0x0] - ldrh r0, [r0, #0x38] - cmp r0, #0x0 - bne _02032A72 - ldr r0, _02032A80 ; =FUN_020327B4 - mov r1, #0x0 - bl FUN_02031D20 - pop {r3, pc} -_02032A72: - ldr r0, _02032A84 ; =FUN_02032924 - mov r1, #0x0 - bl FUN_02031D20 - pop {r3, pc} - .balign 4 -_02032A7C: .word UNK_021C5A00 -_02032A80: .word FUN_020327B4 -_02032A84: .word FUN_02032924 -_02032A88: .word FUN_0203279C - - thumb_func_start FUN_02032A8C -FUN_02032A8C: ; 0x02032A8C - push {r4-r6, lr} - add r5, r0, #0x0 - add r4, r2, #0x0 - bl FUN_02031190 - cmp r0, #0x0 - bne _02032ADA - ldr r6, _02032ADC ; =UNK_02105D5C - mov r3, #0x1 - mov r2, #0x0 -_02032AA0: - ldrb r1, [r6, #0x0] - ldrb r0, [r4, r2] - cmp r1, r0 - beq _02032AAC - mov r3, #0x0 - b _02032AB4 -_02032AAC: - add r2, r2, #0x1 - add r6, r6, #0x1 - cmp r2, #0x6 - blo _02032AA0 -_02032AB4: - cmp r3, #0x0 - beq _02032AD0 - ldr r0, _02032AE0 ; =UNK_021C5A00 - ldr r0, [r0, #0x0] - add r0, #0x48 - ldrb r0, [r0, #0x0] - cmp r0, #0x0 - bne _02032AD0 - ldr r1, _02032AE4 ; =UNK_02105D6C - mov r0, #0x7 - strb r5, [r1, #0x0] - bl FUN_02030C4C - pop {r4-r6, pc} -_02032AD0: - ldr r1, _02032AE8 ; =UNK_02105D64 - mov r0, #0x7 - strb r5, [r1, #0x0] - bl FUN_02030C4C -_02032ADA: - pop {r4-r6, pc} - .balign 4 -_02032ADC: .word UNK_02105D5C -_02032AE0: .word UNK_021C5A00 -_02032AE4: .word UNK_02105D6C -_02032AE8: .word UNK_02105D64 - - thumb_func_start FUN_02032AEC -FUN_02032AEC: ; 0x02032AEC - push {r3-r5, lr} - mov r4, #0x1 - ldr r5, _02032B5C ; =UNK_02105D6C + 1 - add r3, r4, #0x0 -_02032AF4: - ldrb r1, [r5, #0x0] - ldrb r0, [r2, r3] - cmp r1, r0 - beq _02032B00 - mov r4, #0x0 - b _02032B08 -_02032B00: - add r3, r3, #0x1 - add r5, r5, #0x1 - cmp r3, #0x6 - blo _02032AF4 -_02032B08: - cmp r4, #0x0 - beq _02032B22 - ldrb r4, [r2, #0x0] - bl FUN_02031190 - cmp r4, r0 - bne _02032B58 - ldr r0, _02032B60 ; =UNK_021C5A00 - mov r1, #0x1 - ldr r0, [r0, #0x0] - add r0, #0x3d - strb r1, [r0, #0x0] - pop {r3-r5, pc} -_02032B22: - mov r4, #0x1 - ldr r3, _02032B64 ; =UNK_02105D64 + 1 - add r5, r4, #0x0 -_02032B28: - ldrb r1, [r3, #0x0] - ldrb r0, [r2, r5] - cmp r1, r0 - beq _02032B34 - mov r4, #0x0 - b _02032B3C -_02032B34: - add r5, r5, #0x1 - add r3, r3, #0x1 - cmp r5, #0x6 - blo _02032B28 -_02032B3C: - cmp r4, #0x0 - beq _02032B58 - ldrb r4, [r2, #0x0] - bl FUN_02031190 - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - cmp r4, r0 - bne _02032B58 - ldr r0, _02032B60 ; =UNK_021C5A00 - mov r1, #0x2 - ldr r0, [r0, #0x0] - add r0, #0x3d - strb r1, [r0, #0x0] -_02032B58: - pop {r3-r5, pc} - nop -_02032B5C: .word UNK_02105D6C + 1 -_02032B60: .word UNK_021C5A00 -_02032B64: .word UNK_02105D64 + 1 - - thumb_func_start FUN_02032B68 -FUN_02032B68: ; 0x02032B68 - mov r0, #0x6 - bx lr - - thumb_func_start FUN_02032B6C -FUN_02032B6C: ; 0x02032B6C - push {r3, lr} - ldr r1, _02032B80 ; =UNK_021C5A00 - ldr r1, [r1, #0x0] - cmp r1, #0x0 - beq _02032B7E - add r1, #0x3c - strb r0, [r1, #0x0] - bl FUN_0202D1B0 -_02032B7E: - pop {r3, pc} - .balign 4 -_02032B80: .word UNK_021C5A00 - - thumb_func_start FUN_02032B84 -FUN_02032B84: ; 0x02032B84 - ldr r3, _02032B88 ; =FUN_0202EA54 - bx r3 - .balign 4 -_02032B88: .word FUN_0202EA54 - - thumb_func_start FUN_02032B8C -FUN_02032B8C: ; 0x02032B8C - push {r3, lr} - bl FUN_0202E4C8 - cmp r0, #0x0 - beq _02032BC6 - ldr r0, _02032BC8 ; =UNK_021C5A00 - ldr r0, [r0, #0x0] - ldr r0, [r0, #0x2c] - bl FUN_0202E29C - ldr r0, _02032BC8 ; =UNK_021C5A00 - mov r1, #0x0 - ldr r0, [r0, #0x0] - ldr r0, [r0, #0x28] - bl FUN_0202DB14 - mov r0, #0x1 - add r1, r0, #0x0 - mov r2, #0x20 - bl FUN_0202F950 - cmp r0, #0x0 - beq _02032BC6 - bl FUN_0202FA10 - ldr r0, _02032BCC ; =FUN_02032B84 - mov r1, #0x0 - bl FUN_02031D20 -_02032BC6: - pop {r3, pc} - .balign 4 -_02032BC8: .word UNK_021C5A00 -_02032BCC: .word FUN_02032B84 - - thumb_func_start FUN_02032BD0 -FUN_02032BD0: ; 0x02032BD0 - push {r4, lr} - add r4, r0, #0x0 - bl FUN_02030F40 - cmp r0, #0x0 - bne _02032C00 - mov r2, #0x7 - mov r0, #0x3 - mov r1, #0xf - lsl r2, r2, #0xc - bl FUN_02016828 - add r0, r4, #0x0 - mov r1, #0xe - bl FUN_02031734 - ldr r0, _02032C04 ; =UNK_021C5A00 - mov r1, #0x0 - ldr r0, [r0, #0x0] - add r0, #0x40 - strb r1, [r0, #0x0] - ldr r0, _02032C08 ; =FUN_02032B8C - bl FUN_02031D20 -_02032C00: - pop {r4, pc} - nop -_02032C04: .word UNK_021C5A00 -_02032C08: .word FUN_02032B8C - - thumb_func_start FUN_02032C0C -FUN_02032C0C: ; 0x02032C0C - push {r3, lr} - ldr r0, _02032C20 ; =UNK_021C5A00 - ldr r0, [r0, #0x0] - cmp r0, #0x0 - beq _02032C1E - ldr r0, _02032C24 ; =FUN_02032440 - mov r1, #0x5 - bl FUN_02031D20 -_02032C1E: - pop {r3, pc} - .balign 4 -_02032C20: .word UNK_021C5A00 -_02032C24: .word FUN_02032440 - - thumb_func_start FUN_02032C28 -FUN_02032C28: ; 0x02032C28 - sub sp, #0x8 - ldr r1, _02032C64 ; =UNK_020EEC48 - add r0, sp, #0x0 - ldr r2, [r1, #0x0] - ldr r1, [r1, #0x4] - str r2, [sp, #0x0] - str r1, [sp, #0x4] - ldr r1, _02032C68 ; =UNK_021C5A00 - ldr r1, [r1, #0x0] - ldr r3, [r1, #0x24] - cmp r1, #0x0 - bne _02032C46 - mov r0, #0x0 - add sp, #0x8 - bx lr -_02032C46: - cmp r2, #0x0 - beq _02032C5E -_02032C4A: - ldr r1, [r0, #0x0] - cmp r3, r1 - bne _02032C56 - mov r0, #0x1 - add sp, #0x8 - bx lr -_02032C56: - add r0, r0, #0x4 - ldr r1, [r0, #0x0] - cmp r1, #0x0 - bne _02032C4A -_02032C5E: - mov r0, #0x0 - add sp, #0x8 - bx lr - .balign 4 -_02032C64: .word UNK_020EEC48 -_02032C68: .word UNK_021C5A00 - - thumb_func_start FUN_02032C6C -FUN_02032C6C: ; 0x02032C6C - ldr r2, _02032CE4 ; =0x00400131 - cmp r0, r2 - bhi _02032C7C - bhs _02032CBA - ldr r2, _02032CE8 ; =0x00000333 - cmp r0, r2 - beq _02032C8E - bx lr -_02032C7C: - ldr r1, _02032CEC ; =0x00400286 - cmp r0, r1 - bhi _02032C86 - beq _02032CCE - bx lr -_02032C86: - add r1, #0x92 - cmp r0, r1 - beq _02032CA6 - bx lr -_02032C8E: - cmp r1, #0xf - bne _02032CE0 - ldr r0, _02032CF0 ; =UNK_021C5A00 - ldr r2, [r0, #0x0] - add r0, r2, #0x0 - add r0, #0x49 - ldrb r1, [r0, #0x0] - mov r0, #0x1 - add r2, #0x49 - orr r0, r1 - strb r0, [r2, #0x0] - bx lr -_02032CA6: - ldr r0, _02032CF0 ; =UNK_021C5A00 - ldr r2, [r0, #0x0] - add r0, r2, #0x0 - add r0, #0x49 - ldrb r1, [r0, #0x0] - mov r0, #0x1 - add r2, #0x49 - orr r0, r1 - strb r0, [r2, #0x0] - bx lr -_02032CBA: - ldr r0, _02032CF0 ; =UNK_021C5A00 - ldr r2, [r0, #0x0] - add r0, r2, #0x0 - add r0, #0x49 - ldrb r1, [r0, #0x0] - mov r0, #0x2 - add r2, #0x49 - orr r0, r1 - strb r0, [r2, #0x0] - bx lr -_02032CCE: - ldr r0, _02032CF0 ; =UNK_021C5A00 - ldr r2, [r0, #0x0] - add r0, r2, #0x0 - add r0, #0x49 - ldrb r1, [r0, #0x0] - mov r0, #0x4 - add r2, #0x49 - orr r0, r1 - strb r0, [r2, #0x0] -_02032CE0: - bx lr - nop -_02032CE4: .word 0x00400131 -_02032CE8: .word 0x00000333 -_02032CEC: .word 0x00400286 -_02032CF0: .word UNK_021C5A00 - - thumb_func_start FUN_02032CF4 -FUN_02032CF4: ; 0x02032CF4 - push {r3, lr} - bl FUN_0202E4C8 - cmp r0, #0x0 - beq _02032D34 - ldr r0, _02032D38 ; =UNK_021C5A00 - ldr r0, [r0, #0x0] - ldr r0, [r0, #0x2c] - bl FUN_0202E29C - ldr r0, _02032D38 ; =UNK_021C5A00 - mov r1, #0x0 - ldr r0, [r0, #0x0] - ldr r0, [r0, #0x28] - bl FUN_0202DB14 - ldr r0, _02032D3C ; =FUN_02032C6C - bl FUN_0202D308 - mov r0, #0x1 - add r1, r0, #0x0 - mov r2, #0x20 - bl FUN_0202F950 - cmp r0, #0x0 - beq _02032D34 - bl FUN_0202FA10 - ldr r0, _02032D40 ; =FUN_02032B84 - mov r1, #0x0 - bl FUN_02031D20 -_02032D34: - pop {r3, pc} - nop -_02032D38: .word UNK_021C5A00 -_02032D3C: .word FUN_02032C6C -_02032D40: .word FUN_02032B84 - - thumb_func_start FUN_02032D44 -FUN_02032D44: ; 0x02032D44 - push {r4, lr} - add r4, r0, #0x0 - bl FUN_02030F40 - cmp r0, #0x0 - bne _02032D74 - mov r2, #0x7 - mov r0, #0x3 - mov r1, #0xf - lsl r2, r2, #0xc - bl FUN_02016828 - add r0, r4, #0x0 - mov r1, #0x11 - bl FUN_02031734 - ldr r0, _02032D78 ; =UNK_021C5A00 - mov r1, #0x0 - ldr r0, [r0, #0x0] - add r0, #0x40 - strb r1, [r0, #0x0] - ldr r0, _02032D7C ; =FUN_02032CF4 - bl FUN_02031D20 -_02032D74: - pop {r4, pc} - nop -_02032D78: .word UNK_021C5A00 -_02032D7C: .word FUN_02032CF4 - - thumb_func_start FUN_02032D80 -FUN_02032D80: ; 0x02032D80 - push {r3, lr} - ldr r0, _02032D94 ; =UNK_021C5A00 - ldr r0, [r0, #0x0] - cmp r0, #0x0 - beq _02032D92 - ldr r0, _02032D98 ; =FUN_02032440 - mov r1, #0x5 - bl FUN_02031D20 -_02032D92: - pop {r3, pc} - .balign 4 -_02032D94: .word UNK_021C5A00 -_02032D98: .word FUN_02032440 - - thumb_func_start FUN_02032D9C -FUN_02032D9C: ; 0x02032D9C - ldr r0, _02032DA8 ; =UNK_021C5A00 - ldr r0, [r0, #0x0] - add r0, #0x49 - ldrb r0, [r0, #0x0] - bx lr - nop -_02032DA8: .word UNK_021C5A00 - - thumb_func_start FUN_02032DAC -FUN_02032DAC: ; 0x02032DAC - push {r3, lr} - bl FUN_02031468 - ldr r0, _02032DF4 ; =UNK_021C5A00 - ldr r0, [r0, #0x0] - cmp r0, #0x0 - bne _02032DBE - mov r0, #0x1 - pop {r3, pc} -_02032DBE: - add r0, #0x3f - ldrb r0, [r0, #0x0] - add r0, #0xe8 - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - cmp r0, #0x1 - bhi _02032DD4 - bl MOD04_021D83C0 - mov r0, #0x1 - pop {r3, pc} -_02032DD4: - bl FUN_02033590 - cmp r0, #0x0 - beq _02032DE6 - ldr r0, _02032DF8 ; =FUN_0203318C - mov r1, #0x0 - bl FUN_02031D20 - b _02032DEE -_02032DE6: - ldr r0, _02032DFC ; =FUN_02032178 - mov r1, #0x0 - bl FUN_02031D20 -_02032DEE: - mov r0, #0x0 - pop {r3, pc} - nop -_02032DF4: .word UNK_021C5A00 -_02032DF8: .word FUN_0203318C -_02032DFC: .word FUN_02032178 - - thumb_func_start FUN_02032E00 -FUN_02032E00: ; 0x02032E00 - push {r3, lr} - bl FUN_0202E4C8 - cmp r0, #0x0 - beq _02032E3C - ldr r0, _02032E40 ; =UNK_021C5A00 - ldr r0, [r0, #0x0] - ldr r0, [r0, #0x2c] - bl FUN_0202E29C - ldr r0, _02032E40 ; =UNK_021C5A00 - mov r1, #0x0 - ldr r0, [r0, #0x0] - ldr r0, [r0, #0x28] - bl FUN_0202DB14 - mov r0, #0x1 - add r1, r0, #0x0 - lsl r2, r0, #0x9 - add r3, r0, #0x0 - bl FUN_0202F918 - cmp r0, #0x0 - beq _02032E3C - bl FUN_0202FA10 - ldr r0, _02032E44 ; =FUN_02032218 - mov r1, #0x0 - bl FUN_02031D20 -_02032E3C: - pop {r3, pc} - nop -_02032E40: .word UNK_021C5A00 -_02032E44: .word FUN_02032218 - - thumb_func_start FUN_02032E48 -FUN_02032E48: ; 0x02032E48 - push {r3, lr} - bl FUN_0202E4C8 - cmp r0, #0x0 - beq _02032E82 - ldr r0, _02032E84 ; =UNK_021C5A00 - ldr r0, [r0, #0x0] - ldr r0, [r0, #0x2c] - bl FUN_0202E29C - ldr r0, _02032E84 ; =UNK_021C5A00 - mov r1, #0x0 - ldr r0, [r0, #0x0] - ldr r0, [r0, #0x28] - bl FUN_0202DB14 - mov r0, #0x1 - add r1, r0, #0x0 - lsl r2, r0, #0x9 - bl FUN_0202F950 - cmp r0, #0x0 - beq _02032E82 - bl FUN_0202FA10 - ldr r0, _02032E88 ; =FUN_02032290 - mov r1, #0x0 - bl FUN_02031D20 -_02032E82: - pop {r3, pc} - .balign 4 -_02032E84: .word UNK_021C5A00 -_02032E88: .word FUN_02032290 - - thumb_func_start FUN_02032E8C -FUN_02032E8C: ; 0x02032E8C - bx lr - .balign 4 - - thumb_func_start FUN_02032E90 -FUN_02032E90: ; 0x02032E90 - push {r3, lr} - bl MOD04_021D7F8C - cmp r0, #0x0 - bge _02032EA2 - ldr r0, _02032EA4 ; =FUN_02032E8C - mov r1, #0x0 - bl FUN_02031D20 -_02032EA2: - pop {r3, pc} - .balign 4 -_02032EA4: .word FUN_02032E8C - - thumb_func_start FUN_02032EA8 -FUN_02032EA8: ; 0x02032EA8 - bx lr - .balign 4 - - thumb_func_start FUN_02032EAC -FUN_02032EAC: ; 0x02032EAC - bx lr - .balign 4 - - thumb_func_start FUN_02032EB0 -FUN_02032EB0: ; 0x02032EB0 - push {r3, lr} - mov r0, #0x1 - bl FUN_020313A0 - bl MOD04_021D7F8C - cmp r0, #0xa - blt _02032ECA - ldr r0, _02032F0C ; =FUN_02032EAC - mov r1, #0x0 - bl FUN_02031D20 - pop {r3, pc} -_02032ECA: - cmp r0, #0x0 - bge _02032ED8 - ldr r0, _02032F10 ; =FUN_02032E8C - mov r1, #0x0 - bl FUN_02031D20 - pop {r3, pc} -_02032ED8: - cmp r0, #0x1 - bne _02032EE6 - ldr r0, _02032F14 ; =FUN_02032E90 - mov r1, #0x0 - bl FUN_02031D20 - pop {r3, pc} -_02032EE6: - cmp r0, #0x2 - bne _02032F08 - ldr r0, _02032F18 ; =UNK_021C5A00 - ldr r0, [r0, #0x0] - add r0, #0x44 - ldrb r0, [r0, #0x0] - cmp r0, #0x0 - beq _02032F00 - ldr r0, _02032F10 ; =FUN_02032E8C - mov r1, #0x0 - bl FUN_02031D20 - pop {r3, pc} -_02032F00: - ldr r0, _02032F1C ; =FUN_02032EA8 - mov r1, #0x0 - bl FUN_02031D20 -_02032F08: - pop {r3, pc} - nop -_02032F0C: .word FUN_02032EAC -_02032F10: .word FUN_02032E8C -_02032F14: .word FUN_02032E90 -_02032F18: .word UNK_021C5A00 -_02032F1C: .word FUN_02032EA8 - - thumb_func_start FUN_02032F20 -FUN_02032F20: ; 0x02032F20 - add r1, r0, #0x2 - cmp r1, #0x1 - bls _02032F28 - neg r0, r0 -_02032F28: - ldr r1, _02032F30 ; =UNK_021C5A00 - ldr r1, [r1, #0x0] - str r0, [r1, #0x34] - bx lr - .balign 4 -_02032F30: .word UNK_021C5A00 - - thumb_func_start FUN_02032F34 -FUN_02032F34: ; 0x02032F34 - push {r3, lr} - mov r0, #0x0 - bl MOD04_021D7800 - cmp r0, #0xa - blt _02032F4A - ldr r0, _02032F88 ; =FUN_02032EAC - mov r1, #0x0 - bl FUN_02031D20 - pop {r3, pc} -_02032F4A: - cmp r0, #0x0 - bge _02032F5C - bl FUN_02032F20 - ldr r0, _02032F8C ; =FUN_02032E8C - mov r1, #0x0 - bl FUN_02031D20 - pop {r3, pc} -_02032F5C: - cmp r0, #0x1 - bne _02032F6A - ldr r0, _02032F90 ; =FUN_02032EB0 - mov r1, #0x0 - bl FUN_02031D20 - pop {r3, pc} -_02032F6A: - cmp r0, #0x2 - bne _02032F78 - ldr r0, _02032F94 ; =FUN_02032EA8 - mov r1, #0x0 - bl FUN_02031D20 - pop {r3, pc} -_02032F78: - cmp r0, #0x3 - bne _02032F84 - ldr r0, _02032F88 ; =FUN_02032EAC - mov r1, #0x0 - bl FUN_02031D20 -_02032F84: - pop {r3, pc} - nop -_02032F88: .word FUN_02032EAC -_02032F8C: .word FUN_02032E8C -_02032F90: .word FUN_02032EB0 -_02032F94: .word FUN_02032EA8 - - thumb_func_start FUN_02032F98 -FUN_02032F98: ; 0x02032F98 - push {r3, lr} - mov r0, #0x1 - bl MOD04_021D7800 - cmp r0, #0x0 - bge _02032FB2 - bl FUN_02032F20 - ldr r0, _02032FD0 ; =FUN_02032E8C - mov r1, #0x0 - bl FUN_02031D20 - pop {r3, pc} -_02032FB2: - ldr r0, _02032FD4 ; =UNK_021C5A00 - ldr r0, [r0, #0x0] - add r0, #0x42 - ldrb r0, [r0, #0x0] - bl MOD04_021D8494 - cmp r0, #0x0 - beq _02032FCE - bl FUN_0202FC60 - ldr r0, _02032FD8 ; =FUN_02032F34 - mov r1, #0x0 - bl FUN_02031D20 -_02032FCE: - pop {r3, pc} - .balign 4 -_02032FD0: .word FUN_02032E8C -_02032FD4: .word UNK_021C5A00 -_02032FD8: .word FUN_02032F34 - - thumb_func_start FUN_02032FDC -FUN_02032FDC: ; 0x02032FDC - push {r4, lr} - add r4, r0, #0x0 - ldr r0, _02032FFC ; =FUN_020303BC - ldr r1, _02033000 ; =FUN_02030238 - bl MOD04_021D77C4 - ldr r0, _02033004 ; =UNK_021C5A00 - mov r1, #0x0 - ldr r0, [r0, #0x0] - add r0, #0x42 - strb r4, [r0, #0x0] - ldr r0, _02033008 ; =FUN_02032F98 - bl FUN_02031D20 - mov r0, #0x1 - pop {r4, pc} - .balign 4 -_02032FFC: .word FUN_020303BC -_02033000: .word FUN_02030238 -_02033004: .word UNK_021C5A00 -_02033008: .word FUN_02032F98 - - thumb_func_start FUN_0203300C -FUN_0203300C: ; 0x0203300C - ldr r0, _02033048 ; =UNK_021C5A00 - ldr r0, [r0, #0x0] - ldr r1, [r0, #0x24] - ldr r0, _0203304C ; =FUN_02032F34 - cmp r1, r0 - bne _0203301C - mov r0, #0x0 - bx lr -_0203301C: - ldr r0, _02033050 ; =FUN_02032EB0 - cmp r1, r0 - bne _02033026 - mov r0, #0x1 - bx lr -_02033026: - ldr r0, _02033054 ; =FUN_02032E90 - cmp r1, r0 - bne _02033030 - mov r0, #0x3 - bx lr -_02033030: - ldr r0, _02033058 ; =FUN_02032EA8 - cmp r1, r0 - bne _0203303A - mov r0, #0x4 - bx lr -_0203303A: - ldr r0, _0203305C ; =FUN_02032EAC - cmp r1, r0 - bne _02033044 - mov r0, #0x5 - bx lr -_02033044: - mov r0, #0x2 - bx lr - .balign 4 -_02033048: .word UNK_021C5A00 -_0203304C: .word FUN_02032F34 -_02033050: .word FUN_02032EB0 -_02033054: .word FUN_02032E90 -_02033058: .word FUN_02032EA8 -_0203305C: .word FUN_02032EAC - - thumb_func_start FUN_02033060 -FUN_02033060: ; 0x02033060 - push {r3, lr} - ldr r0, _02033090 ; =FUN_020303BC - ldr r1, _02033094 ; =FUN_02030238 - bl MOD04_021D77C4 - mov r0, #0x0 - mvn r0, r0 - bl MOD04_021D8494 - cmp r0, #0x0 - beq _0203308C - ldr r0, _02033098 ; =UNK_021C5A00 - mov r1, #0x0 - ldr r0, [r0, #0x0] - add r0, #0x4d - strb r1, [r0, #0x0] - bl FUN_0202FC60 - ldr r0, _0203309C ; =FUN_02032F34 - mov r1, #0x0 - bl FUN_02031D20 -_0203308C: - pop {r3, pc} - nop -_02033090: .word FUN_020303BC -_02033094: .word FUN_02030238 -_02033098: .word UNK_021C5A00 -_0203309C: .word FUN_02032F34 - - thumb_func_start FUN_020330A0 -FUN_020330A0: ; 0x020330A0 - push {r3, lr} - mov r0, #0x0 - bl FUN_020313A0 - ldr r0, _020330D8 ; =UNK_021C5A00 - ldr r0, [r0, #0x0] - add r0, #0x41 - ldrb r0, [r0, #0x0] - bl MOD04_021D82BC - cmp r0, #0x0 - beq _020330C6 - bl MOD04_021D836C - ldr r0, _020330DC ; =FUN_02033060 - mov r1, #0x0 - bl FUN_02031D20 - pop {r3, pc} -_020330C6: - bl MOD04_021D7F8C - cmp r0, #0x0 - bge _020330D6 - ldr r0, _020330E0 ; =FUN_02032E8C - mov r1, #0x0 - bl FUN_02031D20 -_020330D6: - pop {r3, pc} - .balign 4 -_020330D8: .word UNK_021C5A00 -_020330DC: .word FUN_02033060 -_020330E0: .word FUN_02032E8C - - thumb_func_start FUN_020330E4 -FUN_020330E4: ; 0x020330E4 - push {r3, lr} - bl FUN_02031190 - cmp r0, #0x0 - bne _02033100 - ldr r0, _02033120 ; =UNK_021C5A00 - mov r1, #0x0 - ldr r0, [r0, #0x0] - add r0, #0x41 - strb r1, [r0, #0x0] - ldr r0, _02033124 ; =FUN_020330A0 - bl FUN_02031D20 - b _02033112 -_02033100: - ldr r0, _02033120 ; =UNK_021C5A00 - mov r1, #0x1 - ldr r0, [r0, #0x0] - add r0, #0x41 - strb r1, [r0, #0x0] - ldr r0, _02033124 ; =FUN_020330A0 - mov r1, #0x0 - bl FUN_02031D20 -_02033112: - ldr r0, _02033120 ; =UNK_021C5A00 - mov r1, #0x1 - ldr r0, [r0, #0x0] - add r0, #0x4d - strb r1, [r0, #0x0] - pop {r3, pc} - nop -_02033120: .word UNK_021C5A00 -_02033124: .word FUN_020330A0 - - thumb_func_start FUN_02033128 -FUN_02033128: ; 0x02033128 - ldr r0, _02033134 ; =UNK_021C5A00 - ldr r0, [r0, #0x0] - add r0, #0x4d - ldrb r0, [r0, #0x0] - bx lr - nop -_02033134: .word UNK_021C5A00 - - thumb_func_start FUN_02033138 -FUN_02033138: ; 0x02033138 - ldr r0, _0203314C ; =UNK_021C5A00 - ldr r0, [r0, #0x0] - ldr r1, [r0, #0x24] - ldr r0, _02033150 ; =FUN_02033060 - cmp r1, r0 - bne _02033148 - mov r0, #0x1 - bx lr -_02033148: - mov r0, #0x0 - bx lr - .balign 4 -_0203314C: .word UNK_021C5A00 -_02033150: .word FUN_02033060 - - thumb_func_start FUN_02033154 -FUN_02033154: ; 0x02033154 - ldr r0, _02033174 ; =UNK_021C5A00 - ldr r0, [r0, #0x0] - ldr r1, [r0, #0x24] - ldr r0, _02033178 ; =FUN_02032F34 - cmp r1, r0 - bne _02033164 - mov r0, #0x1 - bx lr -_02033164: - ldr r0, _0203317C ; =FUN_02033060 - cmp r1, r0 - bne _0203316E - mov r0, #0x1 - bx lr -_0203316E: - mov r0, #0x0 - bx lr - nop -_02033174: .word UNK_021C5A00 -_02033178: .word FUN_02032F34 -_0203317C: .word FUN_02033060 - - thumb_func_start FUN_02033180 -FUN_02033180: ; 0x02033180 - ldr r0, _02033188 ; =UNK_021C5A00 - ldr r0, [r0, #0x0] - ldr r0, [r0, #0x34] - bx lr - .balign 4 -_02033188: .word UNK_021C5A00 - - thumb_func_start FUN_0203318C -FUN_0203318C: ; 0x0203318C - push {r3, lr} - mov r0, #0x0 - bl FUN_020313A0 - mov r0, #0x0 - bl MOD04_021D82BC - cmp r0, #0x0 - beq _020331AA - bl MOD04_021D836C - ldr r0, _020331BC ; =FUN_02032440 - mov r1, #0x0 - bl FUN_02031D20 -_020331AA: - bl MOD04_021D7F8C - cmp r0, #0x0 - bge _020331BA - ldr r0, _020331C0 ; =FUN_02032E8C - mov r1, #0x0 - bl FUN_02031D20 -_020331BA: - pop {r3, pc} - .balign 4 -_020331BC: .word FUN_02032440 -_020331C0: .word FUN_02032E8C - - thumb_func_start FUN_020331C4 -FUN_020331C4: ; 0x020331C4 - push {r3, lr} - ldr r0, _020331E0 ; =UNK_021C5A00 - ldr r0, [r0, #0x0] - cmp r0, #0x0 - beq _020331DC - mov r0, #0x1 - bl FUN_020166B8 - ldr r0, _020331E4 ; =FUN_02032440 - mov r1, #0x5 - bl FUN_02031D20 -_020331DC: - pop {r3, pc} - nop -_020331E0: .word UNK_021C5A00 -_020331E4: .word FUN_02032440 - - thumb_func_start FUN_020331E8 -FUN_020331E8: ; 0x020331E8 - push {r3, lr} - ldr r0, _02033200 ; =UNK_021C5A00 - ldr r0, [r0, #0x0] - cmp r0, #0x0 - beq _020331FE - mov r1, #0x0 - add r0, #0x41 - strb r1, [r0, #0x0] - ldr r0, _02033204 ; =FUN_020330A0 - bl FUN_02031D20 -_020331FE: - pop {r3, pc} - .balign 4 -_02033200: .word UNK_021C5A00 -_02033204: .word FUN_020330A0 - - thumb_func_start FUN_02033208 -FUN_02033208: ; 0x02033208 - push {r3, lr} - ldr r0, _02033234 ; =UNK_021C5A00 - ldr r0, [r0, #0x0] - cmp r0, #0x0 - beq _02033232 - bl FUN_02031190 - cmp r0, #0x0 - bne _02033220 - mov r1, #0x0 - ldr r0, _02033234 ; =UNK_021C5A00 - b _02033224 -_02033220: - ldr r0, _02033234 ; =UNK_021C5A00 - mov r1, #0x1 -_02033224: - ldr r0, [r0, #0x0] - add r0, #0x41 - strb r1, [r0, #0x0] - ldr r0, _02033238 ; =FUN_020330A0 - mov r1, #0x0 - bl FUN_02031D20 -_02033232: - pop {r3, pc} - .balign 4 -_02033234: .word UNK_021C5A00 -_02033238: .word FUN_020330A0 - - thumb_func_start FUN_0203323C -FUN_0203323C: ; 0x0203323C - push {r3, lr} - bl FUN_02031190 - add r1, sp, #0x0 - strb r0, [r1, #0x0] - mov r0, #0x15 - add r1, sp, #0x0 - bl FUN_020311D0 - pop {r3, pc} - - thumb_func_start FUN_02033250 -FUN_02033250: ; 0x02033250 - ldr r0, _0203327C ; =UNK_021C5A00 - ldr r2, [r0, #0x0] - cmp r2, #0x0 - beq _02033276 - ldr r1, [r2, #0x24] - ldr r0, _02033280 ; =FUN_02032E8C - cmp r1, r0 - bne _02033264 - mov r0, #0x1 - bx lr -_02033264: - ldr r0, _02033284 ; =FUN_02032E90 - cmp r1, r0 - bne _02033276 - add r2, #0x44 - ldrb r0, [r2, #0x0] - cmp r0, #0x0 - beq _02033276 - mov r0, #0x1 - bx lr -_02033276: - mov r0, #0x0 - bx lr - nop -_0203327C: .word UNK_021C5A00 -_02033280: .word FUN_02032E8C -_02033284: .word FUN_02032E90 - - thumb_func_start FUN_02033288 -FUN_02033288: ; 0x02033288 - push {r4, lr} - add r4, r0, #0x0 - ldr r0, _020332D8 ; =UNK_021C5A00 - ldr r0, [r0, #0x0] - cmp r0, #0x0 - bne _020332D6 - mov r1, #0xf - add r2, r1, #0x0 - mov r0, #0x3 - add r2, #0xf1 - bl FUN_02016828 - mov r0, #0xf - mov r1, #0x50 - bl AllocFromHeap - ldr r1, _020332D8 ; =UNK_021C5A00 - mov r2, #0x50 - str r0, [r1, #0x0] - mov r1, #0x0 - bl MI_CpuFill8 - ldr r0, _020332D8 ; =UNK_021C5A00 - mov r2, #0x18 - ldr r1, [r0, #0x0] - add r1, #0x3f - strb r2, [r1, #0x0] - ldr r2, [r0, #0x0] - mov r1, #0x1 - add r2, #0x46 - strb r1, [r2, #0x0] - ldr r0, [r0, #0x0] - str r4, [r0, #0x28] - mov r0, #0x0 - bl FUN_020334E8 - mov r0, #0x1 - bl FUN_020166A8 -_020332D6: - pop {r4, pc} - .balign 4 -_020332D8: .word UNK_021C5A00 - - thumb_func_start FUN_020332DC -FUN_020332DC: ; 0x020332DC - push {r3, lr} - ldr r0, _0203330C ; =UNK_021C5A00 - ldr r0, [r0, #0x0] - cmp r0, #0x0 - beq _02033308 - mov r0, #0x1 - bl FUN_020166B8 - mov r0, #0x0 - add r1, r0, #0x0 - bl FUN_020334E8 - ldr r0, _0203330C ; =UNK_021C5A00 - ldr r0, [r0, #0x0] - bl FreeToHeap - ldr r0, _0203330C ; =UNK_021C5A00 - mov r1, #0x0 - str r1, [r0, #0x0] - mov r0, #0xf - bl FUN_020168D0 -_02033308: - pop {r3, pc} - nop -_0203330C: .word UNK_021C5A00 - - thumb_func_start FUN_02033310 -FUN_02033310: ; 0x02033310 - push {r4, lr} - add r4, r0, #0x0 - ldr r0, _02033360 ; =UNK_021C5A00 - ldr r0, [r0, #0x0] - cmp r0, #0x0 - bne _0203335E - mov r1, #0xf - add r2, r1, #0x0 - mov r0, #0x3 - add r2, #0xf1 - bl FUN_02016828 - mov r0, #0xf - mov r1, #0x50 - bl AllocFromHeap - ldr r1, _02033360 ; =UNK_021C5A00 - mov r2, #0x50 - str r0, [r1, #0x0] - mov r1, #0x0 - bl MI_CpuFill8 - ldr r0, _02033360 ; =UNK_021C5A00 - mov r2, #0x19 - ldr r1, [r0, #0x0] - add r1, #0x3f - strb r2, [r1, #0x0] - ldr r2, [r0, #0x0] - mov r1, #0x1 - add r2, #0x46 - strb r1, [r2, #0x0] - ldr r0, [r0, #0x0] - str r4, [r0, #0x28] - mov r0, #0x0 - bl FUN_020334E8 - mov r0, #0x1 - bl FUN_020166A8 -_0203335E: - pop {r4, pc} - .balign 4 -_02033360: .word UNK_021C5A00 - - thumb_func_start FUN_02033364 -FUN_02033364: ; 0x02033364 - push {r3, lr} - ldr r0, _02033394 ; =UNK_021C5A00 - ldr r0, [r0, #0x0] - cmp r0, #0x0 - beq _02033390 - mov r0, #0x1 - bl FUN_020166B8 - mov r0, #0x0 - add r1, r0, #0x0 - bl FUN_020334E8 - ldr r0, _02033394 ; =UNK_021C5A00 - ldr r0, [r0, #0x0] - bl FreeToHeap - ldr r0, _02033394 ; =UNK_021C5A00 - mov r1, #0x0 - str r1, [r0, #0x0] - mov r0, #0xf - bl FUN_020168D0 -_02033390: - pop {r3, pc} - nop -_02033394: .word UNK_021C5A00 - - thumb_func_start FUN_02033398 -FUN_02033398: ; 0x02033398 - push {r3, lr} - sub sp, #0x8 - ldr r0, _020333EC ; =UNK_021C5A00 - ldr r0, [r0, #0x0] - cmp r0, #0x0 - bne _020333AA - add sp, #0x8 - mov r0, #0x0 - pop {r3, pc} -_020333AA: - add r0, #0x3f - ldrb r0, [r0, #0x0] - cmp r0, #0x18 - bne _020333C8 - add r0, sp, #0x4 - add r1, sp, #0x0 - bl MOD04_021DD718 - cmp r0, #0x0 - beq _020333E4 - bl MOD04_021DD6F0 - add sp, #0x8 - mov r0, #0x1 - pop {r3, pc} -_020333C8: - cmp r0, #0x19 - bne _020333E4 - add r0, sp, #0x4 - add r1, sp, #0x0 - bl MOD04_021DD718 - cmp r0, #0x0 - beq _020333E4 - ldr r0, [sp, #0x0] - cmp r0, #0x7 - bne _020333E4 - add sp, #0x8 - mov r0, #0x1 - pop {r3, pc} -_020333E4: - mov r0, #0x0 - add sp, #0x8 - pop {r3, pc} - nop -_020333EC: .word UNK_021C5A00 - - thumb_func_start FUN_020333F0 -FUN_020333F0: ; 0x020333F0 - push {r3, lr} - bl MOD04_021D76AC - cmp r0, #0x0 - bge _02033408 - bl FUN_02032F20 - ldr r0, _02033414 ; =FUN_02032E8C - mov r1, #0x0 - bl FUN_02031D20 - pop {r3, pc} -_02033408: - ble _02033412 - ldr r0, _02033418 ; =FUN_02033060 - mov r1, #0x0 - bl FUN_02031D20 -_02033412: - pop {r3, pc} - .balign 4 -_02033414: .word FUN_02032E8C -_02033418: .word FUN_02033060 - - thumb_func_start FUN_0203341C -FUN_0203341C: ; 0x0203341C - push {r3, lr} - bl FUN_0202E4C8 - cmp r0, #0x0 - beq _0203345E - mov r1, #0x31 - mov r0, #0x3 - lsl r2, r1, #0xc - bl FUN_02016828 - mov r0, #0x1 - add r1, r0, #0x0 - lsl r2, r0, #0x9 - add r3, r0, #0x0 - bl FUN_0202F918 - cmp r0, #0x0 - beq _0203345E - ldr r0, _02033460 ; =UNK_021C5A00 - mov r1, #0x31 - ldr r0, [r0, #0x0] - ldr r0, [r0, #0x28] - bl MOD05_021D74E0 - ldr r0, _02033464 ; =FUN_020335D0 - bl MOD04_021D83A8 - bl FUN_0202FA10 - ldr r0, _02033468 ; =FUN_020333F0 - mov r1, #0x0 - bl FUN_02031D20 -_0203345E: - pop {r3, pc} - .balign 4 -_02033460: .word UNK_021C5A00 -_02033464: .word FUN_020335D0 -_02033468: .word FUN_020333F0 - - thumb_func_start FUN_0203346C -FUN_0203346C: ; 0x0203346C - push {r3-r5, lr} - add r5, r0, #0x0 - add r4, r1, #0x0 - bl Sav2_PlayerData_GetProfileAddr - bl FUN_02030F40 - cmp r0, #0x0 - beq _02033482 - mov r0, #0x0 - pop {r3-r5, pc} -_02033482: - mov r0, #0x1 - bl FUN_020166A8 - ldr r2, _020334D0 ; =0x00007080 - mov r0, #0x3 - mov r1, #0xf - bl FUN_02016828 - add r0, r5, #0x0 - mov r1, #0x17 - bl FUN_02031734 - mov r0, #0xf - add r1, r4, #0x0 - bl AllocFromHeap - ldr r1, _020334D4 ; =UNK_021C5A00 - ldr r2, [r1, #0x0] - str r0, [r2, #0x0] - ldr r0, [r1, #0x0] - mov r1, #0x0 - ldr r0, [r0, #0x0] - add r2, r4, #0x0 - bl MI_CpuFill8 - ldr r0, _020334D4 ; =UNK_021C5A00 - mov r1, #0x0 - ldr r2, [r0, #0x0] - add r2, #0x40 - strb r1, [r2, #0x0] - ldr r0, [r0, #0x0] - str r5, [r0, #0x28] - ldr r0, _020334D8 ; =FUN_0203341C - bl FUN_02031D20 - ldr r0, _020334D4 ; =UNK_021C5A00 - ldr r0, [r0, #0x0] - ldr r0, [r0, #0x0] - pop {r3-r5, pc} - .balign 4 -_020334D0: .word 0x00007080 -_020334D4: .word UNK_021C5A00 -_020334D8: .word FUN_0203341C - - thumb_func_start FUN_020334DC -FUN_020334DC: ; 0x020334DC - ldr r0, _020334E4 ; =UNK_021C5A00 - ldr r0, [r0, #0x0] - ldr r0, [r0, #0x0] - bx lr - .balign 4 -_020334E4: .word UNK_021C5A00 - - thumb_func_start FUN_020334E8 -FUN_020334E8: ; 0x020334E8 - push {r4, lr} - add r4, r0, #0x0 - ldr r0, _0203350C ; =UNK_021C5A00 - ldr r2, [r0, #0x0] - cmp r2, #0x0 - beq _020334FE - add r2, #0x44 - strb r4, [r2, #0x0] - ldr r0, [r0, #0x0] - add r0, #0x45 - strb r1, [r0, #0x0] -_020334FE: - add r0, r4, #0x0 - bl FUN_0202EE84 - add r0, r4, #0x0 - bl FUN_0202EEB0 - pop {r4, pc} - .balign 4 -_0203350C: .word UNK_021C5A00 - - thumb_func_start FUN_02033510 -FUN_02033510: ; 0x02033510 - ldr r0, _02033530 ; =UNK_021C5A00 - ldr r1, [r0, #0x0] - cmp r1, #0x0 - beq _0203352C - add r0, r1, #0x0 - add r0, #0x4e - ldrb r0, [r0, #0x0] - cmp r0, #0x0 - beq _02033526 - mov r0, #0x1 - bx lr -_02033526: - add r1, #0x45 - ldrb r0, [r1, #0x0] - bx lr -_0203352C: - mov r0, #0x0 - bx lr - .balign 4 -_02033530: .word UNK_021C5A00 - - thumb_func_start FUN_02033534 -FUN_02033534: ; 0x02033534 - ldr r0, _02033548 ; =UNK_021C5A00 - ldr r0, [r0, #0x0] - cmp r0, #0x0 - beq _02033542 - add r0, #0x3f - ldrb r0, [r0, #0x0] - bx lr -_02033542: - mov r0, #0x1 - bx lr - nop -_02033548: .word UNK_021C5A00 - - thumb_func_start FUN_0203354C -FUN_0203354C: ; 0x0203354C - ldr r0, _02033560 ; =UNK_021C5A00 - ldr r0, [r0, #0x0] - cmp r0, #0x0 - beq _0203355A - add r0, #0x40 - ldrb r0, [r0, #0x0] - bx lr -_0203355A: - mov r0, #0x0 - bx lr - nop -_02033560: .word UNK_021C5A00 - - thumb_func_start FUN_02033564 -FUN_02033564: ; 0x02033564 - ldr r1, _02033570 ; =UNK_021C5A00 - ldr r3, _02033574 ; =MI_CpuCopy8 - ldr r1, [r1, #0x0] - mov r2, #0x6 - add r1, r1, #0x4 - bx r3 - .balign 4 -_02033570: .word UNK_021C5A00 -_02033574: .word MI_CpuCopy8 - - thumb_func_start FUN_02033578 -FUN_02033578: ; 0x02033578 - add r1, r0, #0x0 - ldr r0, _02033588 ; =UNK_021C5A00 - ldr r3, _0203358C ; =MI_CpuCopy8 - ldr r0, [r0, #0x0] - mov r2, #0x6 - add r0, r0, #0x4 - bx r3 - nop -_02033588: .word UNK_021C5A00 -_0203358C: .word MI_CpuCopy8 - - thumb_func_start FUN_02033590 -FUN_02033590: ; 0x02033590 - push {r3, lr} - bl FUN_02033534 - cmp r0, #0x13 - blt _0203359E - mov r0, #0x1 - pop {r3, pc} -_0203359E: - mov r0, #0x0 - pop {r3, pc} - .balign 4 - - thumb_func_start FUN_020335A4 -FUN_020335A4: ; 0x020335A4 - ldr r1, _020335B4 ; =UNK_021C5A00 - ldr r1, [r1, #0x0] - cmp r1, #0x0 - beq _020335B0 - add r1, #0x47 - strb r0, [r1, #0x0] -_020335B0: - bx lr - nop -_020335B4: .word UNK_021C5A00 - - thumb_func_start FUN_020335B8 -FUN_020335B8: ; 0x020335B8 - ldr r0, _020335CC ; =UNK_021C5A00 - ldr r0, [r0, #0x0] - cmp r0, #0x0 - beq _020335C6 - add r0, #0x47 - ldrb r0, [r0, #0x0] - bx lr -_020335C6: - mov r0, #0x0 - bx lr - nop -_020335CC: .word UNK_021C5A00 - - thumb_func_start FUN_020335D0 -FUN_020335D0: ; 0x020335D0 - push {r3, lr} - add r2, r0, #0x0 - mov r0, #0x0 - mov r1, #0x1 - bl FUN_02033F70 -_020335DC: - b _020335DC - .balign 4 - - thumb_func_start FUN_020335E0 -FUN_020335E0: ; 0x020335E0 - push {r3, lr} - mov r0, #0x0 - mov r1, #0x4 - add r2, r0, #0x0 - bl FUN_02033F70 -_020335EC: - b _020335EC - .balign 4 - - thumb_func_start FUN_020335F0 -FUN_020335F0: ; 0x020335F0 - bx lr - .balign 4 - - thumb_func_start FUN_020335F4 -FUN_020335F4: ; 0x020335F4 - push {r3, lr} - bl FUN_02033510 - cmp r0, #0x0 - beq _0203366C - bl FUN_020311F0 - cmp r0, #0x0 - bne _02033622 - bl FUN_02033250 - cmp r0, #0x0 - bne _02033622 - bl FUN_02033398 - cmp r0, #0x0 - bne _02033622 - ldr r0, _02033670 ; =UNK_021C5A00 - ldr r0, [r0, #0x0] - add r0, #0x4e - ldrb r0, [r0, #0x0] - cmp r0, #0x0 - beq _0203366C -_02033622: - bl FUN_020335B8 - cmp r0, #0x0 - bne _0203366C - bl FUN_0200541C - ldr r0, _02033670 ; =UNK_021C5A00 - ldr r0, [r0, #0x0] - ldr r0, [r0, #0x28] - bl FUN_0202287C - ldr r1, _02033674 ; =gMain + 0x60 - mov r0, #0x1 - strb r0, [r1, #0x4] - ldr r1, _02033670 ; =UNK_021C5A00 - ldr r2, [r1, #0x0] - add r1, r2, #0x0 - add r1, #0x4e - ldrb r1, [r1, #0x0] - cmp r1, #0x3 - bne _02033654 - mov r0, #0x3 - bl FUN_020335A4 - pop {r3, pc} -_02033654: - add r2, #0x3f - ldrb r1, [r2, #0x0] - cmp r1, #0x19 - beq _02033660 - cmp r1, #0xf - bne _02033668 -_02033660: - mov r0, #0x2 - bl FUN_020335A4 - pop {r3, pc} -_02033668: - bl FUN_020335A4 -_0203366C: - pop {r3, pc} - nop -_02033670: .word UNK_021C5A00 -_02033674: .word gMain + 0x60 - - thumb_func_start FUN_02033678 -FUN_02033678: ; 0x02033678 - push {r3, lr} - bl FUN_0202EDD8 - cmp r0, #0x0 - bne _0203368A - bl FUN_02031810 - cmp r0, #0x0 - bne _0203368E -_0203368A: - mov r0, #0x1 - pop {r3, pc} -_0203368E: - bl FUN_0202E344 - cmp r0, #0x0 - bne _0203369A - mov r0, #0x1 - pop {r3, pc} -_0203369A: - mov r0, #0x0 - pop {r3, pc} - .balign 4 - - thumb_func_start FUN_020336A0 -FUN_020336A0: ; 0x020336A0 - push {r3, lr} - ldr r1, _020336BC ; =UNK_021C5A00 - ldr r1, [r1, #0x0] - cmp r1, #0x0 - beq _020336B6 - add r1, #0x4e - strb r0, [r1, #0x0] - bl FUN_02031468 - mov r0, #0x1 - pop {r3, pc} -_020336B6: - mov r0, #0x0 - pop {r3, pc} - nop -_020336BC: .word UNK_021C5A00 diff --git a/arm9/asm/unk_020336C0.s b/arm9/asm/unk_020336C0.s index ac3863f2..4f2d4dc3 100644 --- a/arm9/asm/unk_020336C0.s +++ b/arm9/asm/unk_020336C0.s @@ -55,11 +55,11 @@ _02033714: add r5, r0, #0x0 cmp r5, #0x2 bne _02033722 - bl ErrorHandling + bl GF_AssertFail _02033722: cmp r5, #0x3 bne _0203372A - bl ErrorHandling + bl GF_AssertFail _0203372A: cmp r5, #0x1 bne _02033774 @@ -81,11 +81,11 @@ _0203374A: add r5, r0, #0x0 cmp r5, #0x3 bne _02033758 - bl ErrorHandling + bl GF_AssertFail _02033758: cmp r5, #0x1 bne _02033760 - bl ErrorHandling + bl GF_AssertFail _02033760: cmp r5, #0x2 bne _02033774 diff --git a/arm9/asm/unk_02033778.s b/arm9/asm/unk_02033778.s deleted file mode 100644 index 763e7b30..00000000 --- a/arm9/asm/unk_02033778.s +++ /dev/null @@ -1,60 +0,0 @@ - .include "asm/macros.inc" - .include "global.inc" - - .text - - thumb_func_start FUN_02033778 -FUN_02033778: ; 0x02033778 - push {r3-r7, lr} - str r0, [sp, #0x0] - bl FUN_02030F20 - add r7, r0, #0x0 - mov r0, #0x0 - bl FUN_0202DFA4 - cmp r0, #0x0 - beq _020337C6 - mov r5, #0x0 - cmp r7, #0x0 - ble _020337C6 -_02033792: - bl FUN_02031190 - cmp r5, r0 - beq _020337C0 - add r0, r5, #0x0 - bl FUN_0202E020 - add r4, r0, #0x0 - add r0, r5, #0x0 - bl FUN_0202E044 - add r6, r0, #0x0 - add r0, r5, #0x0 - bl FUN_0202DFA4 - bl PlayerProfile_GetLanguage - add r3, r0, #0x0 - ldr r0, [sp, #0x0] - add r1, r4, #0x0 - add r2, r6, #0x0 - bl FUN_020337C8 -_020337C0: - add r5, r5, #0x1 - cmp r5, r7 - blt _02033792 -_020337C6: - pop {r3-r7, pc} - - thumb_func_start FUN_020337C8 -FUN_020337C8: ; 0x020337C8 - push {r4-r6, lr} - add r5, r0, #0x0 - add r4, r1, #0x0 - add r6, r2, #0x0 - bl FUN_02029B40 - cmp r0, #0x0 - bne _020337E4 - add r0, r5, #0x0 - add r1, r4, #0x0 - add r2, r6, #0x0 - mov r3, #0x1 - bl FUN_02029B90 -_020337E4: - pop {r4-r6, pc} - .balign 4 diff --git a/arm9/asm/unk_020337E8.s b/arm9/asm/unk_020337E8.s deleted file mode 100644 index 99f778f2..00000000 --- a/arm9/asm/unk_020337E8.s +++ /dev/null @@ -1,74 +0,0 @@ - .include "asm/macros.inc" - .include "global.inc" - - .text - - thumb_func_start FUN_020337E8 -FUN_020337E8: ; 0x020337E8 - push {r3-r5, lr} - mov r1, #0x72 - lsl r1, r1, #0x4 - bl AllocFromHeap - add r4, r0, #0x0 - add r0, #0x1f - mov r1, #0x1f - bic r0, r1 - bl DWC_Init - add r5, r0, #0x0 - add r0, r4, #0x0 - bl FreeToHeap - add r0, r5, #0x0 - pop {r3-r5, pc} - .balign 4 - - thumb_func_start FUN_0203380C -FUN_0203380C: ; 0x0203380C - push {r4, lr} - bl FUN_02028228 - add r4, r0, #0x0 - bl DWC_CheckUserData - cmp r0, #0x0 - bne _0203382A - ldr r1, _0203382C ; =0x4144414A - add r0, r4, #0x0 - bl DWC_CreateUserData - add r0, r4, #0x0 - bl DWC_ClearDirtyFlag -_0203382A: - pop {r4, pc} - .balign 4 -_0203382C: .word 0x4144414A - - thumb_func_start FUN_02033830 -FUN_02033830: ; 0x02033830 - push {r3-r4, lr} - sub sp, #0xc - bl FUN_02028228 - add r4, r0, #0x0 - add r1, sp, #0x0 - bl DWC_CreateExchangeToken - add r0, r4, #0x0 - add r1, sp, #0x0 - bl DWC_GetGsProfileId - add sp, #0xc - pop {r3-r4, pc} - - thumb_func_start FUN_0203384C -FUN_0203384C: ; 0x0203384C - push {r4, lr} - bl FUN_020286EC - bl FUN_02028228 - add r4, r0, #0x0 - bl DWC_CheckHasProfile - cmp r0, #0x0 - beq _0203386E - add r0, r4, #0x0 - bl DWC_CheckValidConsole - cmp r0, #0x0 - beq _0203386E - mov r0, #0x1 - pop {r4, pc} -_0203386E: - mov r0, #0x0 - pop {r4, pc} - .balign 4 diff --git a/arm9/asm/unk_02033874.s b/arm9/asm/unk_02033874.s index ddd4483b..dfad7db2 100644 --- a/arm9/asm/unk_02033874.s +++ b/arm9/asm/unk_02033874.s @@ -191,7 +191,7 @@ _020339D8: str r0, [r6, #0x0] cmp r0, #0x3 bne _020339FE - bl ErrorHandling + bl GF_AssertFail _020339FE: ldr r0, [r6, #0x0] cmp r0, #0x0 diff --git a/arm9/asm/unk_02033B68.s b/arm9/asm/unk_02033B68.s index 39125d06..9e204377 100644 --- a/arm9/asm/unk_02033B68.s +++ b/arm9/asm/unk_02033B68.s @@ -333,7 +333,7 @@ FUN_02033D3C: ; 0x02033D3C bl DC_FlushRange ldr r0, [sp, #0x4] add r1, sp, #0x0 - bl FUN_020B0138 + bl NNS_G2dGetUnpackedPaletteData cmp r5, #0x1 bne _02033D80 ldr r0, [sp, #0x0] @@ -386,7 +386,7 @@ _02033DC8: bl DC_FlushRange ldr r0, [sp, #0x4] add r1, sp, #0x0 - bl FUN_020B0088 + bl NNS_G2dGetUnpackedCharacterData cmp r5, #0x1 bne _02033DF0 mov r0, #0x1 diff --git a/arm9/asm/unk_02033F50.s b/arm9/asm/unk_02033F50.s index a5439dfe..ed33e084 100644 --- a/arm9/asm/unk_02033F50.s +++ b/arm9/asm/unk_02033F50.s @@ -198,7 +198,7 @@ _02033FA4: add r0, sp, #0x18 mov r1, #0xf add r3, r2, #0x0 - bl FUN_020196F4 + bl FillWindowPixelRect ldr r2, _0203417C ; =0x000001F7 add r0, sp, #0x18 mov r1, #0x0 diff --git a/arm9/asm/unk_02034188.s b/arm9/asm/unk_02034188.s index 44144564..08265835 100644 --- a/arm9/asm/unk_02034188.s +++ b/arm9/asm/unk_02034188.s @@ -138,7 +138,7 @@ FUN_02034188: ; 0x02034188 add r0, sp, #0x14 mov r1, #0xf add r3, r2, #0x0 - bl FUN_020196F4 + bl FillWindowPixelRect ldr r2, _0203438C ; =0x000001F7 add r0, sp, #0x14 mov r1, #0x0 diff --git a/arm9/asm/unk_020343A8.s b/arm9/asm/unk_020343A8.s index 88fd2560..a4cac7e7 100644 --- a/arm9/asm/unk_020343A8.s +++ b/arm9/asm/unk_020343A8.s @@ -53,7 +53,7 @@ _020343D8: ldrb r7, [r6, #0x4] cmp r7, #0x10 bls _0203440A - bl ErrorHandling + bl GF_AssertFail _0203440A: ldr r1, _02034490 ; =0x00001196 add r0, r5, #0x0 @@ -170,7 +170,7 @@ FUN_020344D8: ; 0x020344D8 mul r0, r1 cmp r5, r0 blt _020344EC - bl ErrorHandling + bl GF_AssertFail _020344EC: lsl r0, r5, #0x1 add r1, r4, r0 @@ -185,7 +185,7 @@ FUN_020344FC: ; 0x020344FC push {r4, lr} add r4, r0, #0x0 bne _02034506 - bl ErrorHandling + bl GF_AssertFail _02034506: ldrb r0, [r4, #0x0] pop {r4, pc} @@ -196,7 +196,7 @@ FUN_0203450C: ; 0x0203450C push {r4, lr} add r4, r0, #0x0 bne _02034516 - bl ErrorHandling + bl GF_AssertFail _02034516: ldrb r0, [r4, #0x1] pop {r4, pc} @@ -216,7 +216,7 @@ FUN_0203451C: ; 0x0203451C cmp r5, r6 blt _02034536 _02034532: - bl ErrorHandling + bl GF_AssertFail _02034536: cmp r4, #0x0 blt _02034540 @@ -224,7 +224,7 @@ _02034536: cmp r4, r0 blt _02034544 _02034540: - bl ErrorHandling + bl GF_AssertFail _02034544: add r0, r4, #0x0 mul r0, r6 @@ -248,7 +248,7 @@ FUN_02034554: ; 0x02034554 cmp r4, r0 blt _0203456C _02034568: - bl ErrorHandling + bl GF_AssertFail _0203456C: lsl r0, r4, #0x1 add r0, r5, r0 @@ -269,7 +269,7 @@ FUN_02034578: ; 0x02034578 add r6, r3, #0x0 cmp r4, r0 blt _0203458A - bl ErrorHandling + bl GF_AssertFail _0203458A: ldr r0, [sp, #0x10] mul r0, r6 @@ -278,7 +278,7 @@ _0203458A: lsl r0, r0, #0x2 cmp r4, r0 blt _0203459C - bl ErrorHandling + bl GF_AssertFail _0203459C: ldr r0, _020345A4 ; =0x0000070E add r1, r5, r4 @@ -317,7 +317,7 @@ FUN_020345DC: ; 0x020345DC push {r4, lr} add r4, r0, #0x0 bne _020345E6 - bl ErrorHandling + bl GF_AssertFail _020345E6: add r0, r4, #0x0 bl FreeToHeap @@ -357,13 +357,13 @@ FUN_020345FC: ; 0x020345FC ldrb r0, [r0, #0x1] cmp r5, r0 blt _0203462E - bl ErrorHandling + bl GF_AssertFail _0203462E: add r0, sp, #0x0 ldrb r0, [r0, #0x0] cmp r4, r0 blt _0203463A - bl ErrorHandling + bl GF_AssertFail _0203463A: add r0, sp, #0x0 ldrb r0, [r0, #0x1] @@ -391,7 +391,7 @@ FUN_02034660: ; 0x02034660 add r5, r0, #0x0 add r4, r1, #0x0 bne _0203466C - bl ErrorHandling + bl GF_AssertFail _0203466C: add r0, r5, #0x0 add r1, r4, #0x0 diff --git a/arm9/asm/unk_02034A28.s b/arm9/asm/unk_02034A28.s index e4c8097a..19d0db80 100644 --- a/arm9/asm/unk_02034A28.s +++ b/arm9/asm/unk_02034A28.s @@ -11,7 +11,7 @@ FUN_02034A28: ; 0x02034A28 add r4, r1, #0x0 cmp r0, #0x0 beq _02034A38 - bl ErrorHandling + bl GF_AssertFail _02034A38: ldr r1, _02034A44 ; =0x00000AC8 add r0, r4, #0x0 @@ -28,7 +28,7 @@ FUN_02034A48: ; 0x02034A48 ldr r0, [r4, #0x14] cmp r0, #0x0 bne _02034A56 - bl ErrorHandling + bl GF_AssertFail _02034A56: ldr r0, [r4, #0x14] bl FreeToHeap @@ -43,7 +43,7 @@ FUN_02034A60: ; 0x02034A60 add r4, r1, #0x0 cmp r0, #0x0 bne _02034A70 - bl ErrorHandling + bl GF_AssertFail _02034A70: ldr r0, [r5, #0x14] add r1, r4, #0x0 @@ -76,7 +76,7 @@ FUN_02034A98: ; 0x02034A98 lsl r1, r1, #0xa cmp r0, r1 blo _02034AB8 - bl ErrorHandling + bl GF_AssertFail _02034AB8: add r5, #0x20 add r0, r5, #0x0 @@ -94,7 +94,7 @@ FUN_02034AC8: ; 0x02034AC8 ldr r4, [r0, #0x4] cmp r0, #0x0 bne _02034AD8 - bl ErrorHandling + bl GF_AssertFail _02034AD8: cmp r4, #0x0 beq _02034AEC @@ -232,7 +232,7 @@ _02034B9C: cmp r2, r5 blo _02034B8A _02034BA4: - bl ErrorHandling + bl GF_AssertFail mov r0, #0x0 pop {r3-r7, pc} @@ -261,7 +261,7 @@ _02034BCC: cmp r3, r5 blo _02034BBC _02034BD4: - bl ErrorHandling + bl GF_AssertFail mov r0, #0x0 pop {r4-r6, pc} @@ -290,7 +290,7 @@ _02034BFC: cmp r3, r5 blo _02034BEC _02034C04: - bl ErrorHandling + bl GF_AssertFail mov r0, #0x0 pop {r4-r6, pc} @@ -452,7 +452,7 @@ FUN_02034CEC: ; 0x02034CEC lsl r1, r1, #0x8 cmp r0, r1 blo _02034D1C - bl ErrorHandling + bl GF_AssertFail _02034D1C: mov r0, #0x82 lsl r0, r0, #0x4 @@ -469,7 +469,7 @@ FUN_02034D2C: ; 0x02034D2C ldr r0, [r4, #0x14] cmp r0, #0x0 bne _02034D3A - bl ErrorHandling + bl GF_AssertFail _02034D3A: mov r0, #0x82 ldr r1, [r4, #0x14] diff --git a/arm9/asm/unk_02034E84.s b/arm9/asm/unk_02034E84.s index 2a2e5e37..45f0b5d0 100644 --- a/arm9/asm/unk_02034E84.s +++ b/arm9/asm/unk_02034E84.s @@ -75,7 +75,7 @@ FUN_02034E78: ; 0x02034E78 cmp r0, #0x14 bls _02034E88 _02034E82: - bl ErrorHandling + bl GF_AssertFail mov r0, #0x1 _02034E88: sub r0, r0, #0x1 diff --git a/arm9/asm/unk_02034FE4.s b/arm9/asm/unk_02034FE4.s index 8ff7abe0..81135415 100644 --- a/arm9/asm/unk_02034FE4.s +++ b/arm9/asm/unk_02034FE4.s @@ -136,14 +136,14 @@ FUN_02034FE4: ; 0x02034FE4 bl Sav2_SysInfo_RTC_get add r6, r0, #0x0 add r0, r6, #0x4 - bl FUN_02012710 + bl GF_RTC_GetDayOfYear sub r5, r0, #0x1 bmi _0203500C ldr r0, _02035060 ; =0x0000016E cmp r5, r0 blt _02035010 _0203500C: - bl ErrorHandling + bl GF_AssertFail _02035010: ldr r0, [r6, #0x8] cmp r0, #0x2 diff --git a/arm9/asm/unk_02035068.s b/arm9/asm/unk_02035068.s index f0cdc150..c9df4ca4 100644 --- a/arm9/asm/unk_02035068.s +++ b/arm9/asm/unk_02035068.s @@ -639,7 +639,7 @@ FUN_0203549C: ; 0x0203549C str r0, [sp, #0x18] ldr r0, [sp, #0x14] mov r1, #0xb - bl ListMenu_ctor + bl ListMenuItems_ctor str r0, [r4, #0x24] mov r5, #0x0 ldr r0, [sp, #0x14] @@ -684,7 +684,7 @@ _02035526: ldrb r2, [r2, #0x0] ldr r0, [r4, #0x24] add r1, r7, #0x0 - bl ListMenu_AddItem + bl ListMenuItems_AddItem ldr r0, [sp, #0x20] bl String_dtor add r0, r7, #0x0 @@ -698,7 +698,7 @@ _02035594: ldr r0, [r4, #0x24] ldr r1, [sp, #0x18] ldr r2, [r2, r6] - bl ListMenu_ItemFromMsgData + bl ListMenuItems_AppendFromMsgData _020355A2: ldr r0, [sp, #0x1c] add r0, #0x8c @@ -902,7 +902,7 @@ FUN_02035718: ; 0x02035718 mov r1, #0x0 bl FUN_02001C5C ldr r0, [r4, #0x24] - bl ListMenu_dtor + bl ListMenuItems_dtor mov r0, #0x0 str r0, [r4, #0x20] pop {r4, pc} @@ -966,7 +966,7 @@ _0203576C: add r0, r5, #0x0 add r0, #0x10 mov r1, #0xf - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r2, _0203589C ; =0x00000143 mov r0, #0x0 mov r1, #0x1a @@ -1731,7 +1731,7 @@ FUN_02035DC8: ; 0x02035DC8 cmp r1, #0x0 beq _02035DF0 mov r0, #0xb - bl FUN_02016A8C + bl FreeToHeapExplicit _02035DF0: mov r0, #0xc strh r0, [r4, #0x2a] @@ -3193,7 +3193,7 @@ FUN_02036A14: ; 0x02036A14 lsl r1, r1, #0x2 ldr r1, [r4, r1] mov r0, #0xb - bl FUN_02016A8C + bl FreeToHeapExplicit mov r1, #0x73 lsl r1, r1, #0x2 add r0, r5, #0x0 @@ -3223,7 +3223,7 @@ FUN_02036A78: ; 0x02036A78 lsl r1, r1, #0x2 ldr r1, [r4, r1] mov r0, #0xb - bl FUN_02016A8C + bl FreeToHeapExplicit mov r1, #0x73 lsl r1, r1, #0x2 add r0, r5, #0x0 @@ -3255,7 +3255,7 @@ FUN_02036AB8: ; 0x02036AB8 ldr r1, [r4, r0] mov r0, #0xb ldr r7, [r1, #0x0] - bl FUN_02016A8C + bl FreeToHeapExplicit mov r0, #0x7e lsl r0, r0, #0x2 ldr r5, [r4, r0] @@ -3264,7 +3264,7 @@ FUN_02036AB8: ; 0x02036AB8 bne _02036B0E mov r0, #0xb add r1, r5, #0x0 - bl FUN_02016A8C + bl FreeToHeapExplicit mov r1, #0x7a lsl r1, r1, #0x2 lsl r2, r7, #0x18 @@ -3320,7 +3320,7 @@ _02036B0E: lsl r1, r1, #0x2 ldr r1, [r4, r1] mov r0, #0xb - bl FUN_02016A8C + bl FreeToHeapExplicit add r0, r6, #0x0 bl FUN_0204649C mov r0, #0x72 diff --git a/arm9/asm/unk_020372D4.s b/arm9/asm/unk_020372D4.s index c2bab3d0..26a50555 100644 --- a/arm9/asm/unk_020372D4.s +++ b/arm9/asm/unk_020372D4.s @@ -83,13 +83,13 @@ LoadOverlay_MODULE_05: ; 0x02037350 ldr r0, [r0, #0x4] cmp r0, #0x0 beq _02037360 - bl ErrorHandling + bl GF_AssertFail _02037360: ldr r0, [r4, #0x0] ldr r0, [r0, #0x0] cmp r0, #0x0 beq _0203736C - bl ErrorHandling + bl GF_AssertFail _0203736C: ldr r0, _0203738C ; =SDK_OVERLAY_MODULE_05_ID mov r1, #0x2 @@ -166,7 +166,7 @@ FUN_020373D4: ; 0x020373D4 add r6, r2, #0x0 cmp r0, #0x0 beq _020373E8 - bl ErrorHandling + bl GF_AssertFail _020373E8: add r0, r5, #0x0 bl FUN_02037394 diff --git a/arm9/asm/unk_020377F0.s b/arm9/asm/unk_020377F0.s index 7c45ad7a..9c2132bf 100644 --- a/arm9/asm/unk_020377F0.s +++ b/arm9/asm/unk_020377F0.s @@ -322,7 +322,7 @@ _020378BC: str r1, [r0, #0x0] b _020378C8 _020378C4: - bl ErrorHandling + bl GF_AssertFail _020378C8: ldr r1, _020378F4 ; =UNK_02105DB8 add r0, r6, #0x0 @@ -357,7 +357,7 @@ FUN_020378FC: ; 0x020378FC bl FUN_0206E384 cmp r0, #0x5 bne _02037916 - bl ErrorHandling + bl GF_AssertFail _02037916: add r0, r4, #0x0 pop {r3-r5, pc} @@ -2333,7 +2333,7 @@ FUN_020388B4: ; 0x020388B4 bl MOD05_021ED49C add r5, r0, #0x0 bne _020388CC - bl ErrorHandling + bl GF_AssertFail _020388CC: add r0, r4, #0x0 add r1, r5, #0x0 @@ -2417,7 +2417,7 @@ _02038956: ldr r1, [r5, #0x8] ldr r2, [sp, #0x4] add r3, r6, #0x0 - bl FUN_020127C0 + bl GF_RTC_TimeDelta mov r2, #0x3c mov r3, #0x0 bl _ll_sdiv diff --git a/arm9/asm/unk_02038C78.s b/arm9/asm/unk_02038C78.s index 08416fc7..bbed9516 100644 --- a/arm9/asm/unk_02038C78.s +++ b/arm9/asm/unk_02038C78.s @@ -199,9 +199,9 @@ gScriptCmdTable: ; 0x020F355C .word ScrCmd_Unk002F .word ScrCmd_WaitButtonAB .word ScrCmd_WaitButton - .word ScrCmd_Unk0032 + .word ScrCmd_WaitButtonABPad .word ScrCmd_Unk0033 - .word ScrCmd_Unk0034 + .word ScrCmd_CloseMessageBox .word ScrCmd_Unk0035 .word ScrCmd_CreateMessageBox .word ScrCmd_Unk0037 @@ -212,7 +212,7 @@ gScriptCmdTable: ; 0x020F355C .word ScrCmd_Menu .word ScrCmd_ScrollBg .word ScrCmd_YesNoMenu - .word FUN_0203DEA8 + .word ScrCmd_Unk003F .word ScrCmd_Unk0040 .word ScrCmd_Unk0041 .word ScrCmd_Unk0042 @@ -222,53 +222,53 @@ gScriptCmdTable: ; 0x020F355C .word ScrCmd_Unk0046 .word ScrCmd_Unk0047 .word ScrCmd_Unk0048 - .word FUN_020414E0 - .word FUN_020414FC - .word FUN_02041518 - .word FUN_02041558 - .word ScrCmd_waitcry - .word ScrCmd_playbgm - .word FUN_020415BC - .word FUN_020413E8 - .word FUN_020413F8 - .word FUN_0204140C - .word FUN_02041424 - .word FUN_0204143C - .word FUN_02041478 - .word FUN_0204149C - .word FUN_020414B8 - .word FUN_020414CC - .word FUN_020415E0 - .word FUN_02041618 - .word FUN_02041644 - .word FUN_02041650 - .word FUN_02041664 - .word FUN_0203AFC4 - .word FUN_0203B148 - .word FUN_0203B1F0 - .word FUN_0203B3B0 - .word FUN_0203B3C0 - .word FUN_0203B3DC - .word FUN_0203B3F8 - .word FUN_0203B440 - .word FUN_0203B468 - .word FUN_0203B500 - .word FUN_0203B544 - .word FUN_0203B574 - .word FUN_0203B5B8 - .word FUN_0203B640 - .word FUN_0203B724 - .word FUN_0203B758 - .word FUN_0203B7D8 + .word ScrCmd_PlayFanfare + .word ScrCmd_StopFanfare + .word ScrCmd_PlayFanfareWait + .word ScrCmd_PlayCry + .word ScrCmd_PlayCryWait + .word ScrCmd_PlaySound + .word ScrCmd_PlaySoundWait + .word ScrCmd_PlayBgm + .word ScrCmd_StopBgm + .word ScrCmd_PlayDefaultBgm + .word ScrCmd_Unk0053 + .word ScrCmd_FadeOutBgm + .word ScrCmd_FadeInBgm + .word ScrCmd_Unk0056 + .word ScrCmd_Unk0057 + .word ScrCmd_Unk0058 + .word ScrCmd_CheckChatotCry + .word ScrCmd_StartChatotRecord + .word ScrCmd_StopChatotRecord + .word ScrCmd_SaveChatotCry + .word ScrCmd_Unk005D + .word ScrCmd_Unk005E + .word ScrCmd_Unk005F + .word ScrCmd_Unk0060 + .word ScrCmd_Unk0061 + .word ScrCmd_Unk0062 + .word ScrCmd_Unk0063 + .word ScrCmd_Unk0064 + .word ScrCmd_Unk0065 + .word ScrCmd_Unk0066 + .word ScrCmd_Unk0067 + .word ScrCmd_Unk0068 + .word ScrCmd_Unk0069 + .word ScrCmd_Unk006A + .word ScrCmd_Unk006B + .word ScrCmd_Unk006C + .word ScrCmd_Unk006D + .word ScrCmd_Unk006E .word ScrCmd_GiveMoney .word ScrCmd_TakeMoneyImmediate .word ScrCmd_HasEnoughMoneyImmediate - .word ScrCmd_Unk0072 - .word ScrCmd_Unk0073 - .word ScrCmd_Unk0074 - .word ScrCmd_Unk0075 - .word ScrCmd_Unk0076 - .word ScrCmd_Unk0077 + .word ScrCmd_ShowMoneyBox + .word ScrCmd_HideMoneyBox + .word ScrCmd_UpdateMoneyBox + .word ScrCmd_ShowCoinBox + .word ScrCmd_HideCoinBox + .word ScrCmd_UpdateCoinBox .word ScrCmd_GetCoins .word ScrCmd_GiveCoins .word ScrCmd_TakeCoinsImmediate @@ -280,380 +280,380 @@ gScriptCmdTable: ; 0x020F355C .word ScrCmd_GetItemPocketId .word ScrCmd_Unk0081 .word ScrCmd_Unk0082 - .word ScrCmd_Unk0083 - .word ScrCmd_Unk0084 - .word ScrCmd_Unk0085 - .word ScrCmd_Unk0086 - .word ScrCmd_Unk0087 - .word ScrCmd_Unk0088 - .word ScrCmd_Unk0089 - .word ScrCmd_Unk008A - .word ScrCmd_Unk008B - .word ScrCmd_Unk008C - .word ScrCmd_Unk008D - .word ScrCmd_Unk008E - .word ScrCmd_Unk008F - .word ScrCmd_Unk0090 - .word ScrCmd_Unk0091 - .word ScrCmd_Unk0092 - .word FUN_0203B81C - .word FUN_0203B85C - .word FUN_0203B8A0 + .word ScrCmd_GiveSecretBaseDecoration + .word ScrCmd_TakeSecretBaseDecoration + .word ScrCmd_HasSpaceForDecoration + .word ScrCmd_GetDecorationCount + .word ScrCmd_GiveUndergroundTrap + .word ScrCmd_TakeUndergroundTrap + .word ScrCmd_HasSpaceForTrap + .word ScrCmd_GetTrapCount + .word ScrCmd_GiveTreasure + .word ScrCmd_TakeTreasure + .word ScrCmd_HasSpaceForTreasure + .word ScrCmd_GetTreasureCount + .word ScrCmd_GiveUndergroundSphere + .word ScrCmd_TakeUndergroundSphere + .word ScrCmd_HasSpaceForSphere + .word ScrCmd_GetSphereCount + .word ScrCmd_Unk0093 + .word ScrCmd_Unk0094 + .word ScrCmd_Unk0095 .word ScrCmd_GiveMon - .word ScrCmd_giveegg - .word ScrCmd_setpartymonmove - .word ScrCmd_partymonhasmove - .word ScrCmd_findpartymonwithmove - .word FUN_0203BB34 - .word FUN_0203BB80 - .word FUN_0203BB84 - .word FUN_0203BB88 - .word FUN_0203BB8C - .word FUN_02045264 - .word FUN_0203BC1C - .word FUN_0203BCBC - .word FUN_0203BCCC - .word FUN_0203BCD8 - .word FUN_0203BF20 - .word FUN_0203BF2C - .word FUN_0203BF84 - .word FUN_0203BFEC - .word FUN_0203C118 - .word FUN_0203C12C - .word ScrCmd_monstoragepc - .word FUN_0203C2C4 - .word FUN_0203C2E0 - .word FUN_0203C2F0 - .word FUN_0203C300 - .word ScrCmd_halloffame - .word FUN_0203C33C - .word FUN_0203C368 - .word FUN_0203C3C8 - .word FUN_0203C3E8 - .word FUN_0203C430 - .word FUN_020416A8 - .word FUN_02041770 - .word FUN_020417E0 - .word FUN_02041808 - .word FUN_0203C4F0 - .word FUN_0203C520 - .word FUN_0203C6C4 - .word FUN_0203C70C - .word FUN_0203C730 - .word FUN_0203C844 - .word FUN_0203C874 - .word FUN_0203C8B4 - .word FUN_0203C8E4 - .word FUN_0203C930 - .word FUN_0203C960 - .word FUN_0203C990 - .word FUN_0203CA20 - .word FUN_0203CA2C - .word FUN_0203CA5C - .word FUN_0203CB08 - .word FUN_0203CB20 - .word FUN_0203CB48 - .word FUN_0203CB60 + .word ScrCmd_GiveEgg + .word ScrCmd_SetPartyMonMove + .word ScrCmd_PartyMonHasMove + .word ScrCmd_FindPartyMonWithMove + .word ScrCmd_Unk009B + .word ScrCmd_Unk009C + .word ScrCmd_Unk009D + .word ScrCmd_Unk009E + .word ScrCmd_Unk009F + .word ScrCmd_Unk00A0 + .word ScrCmd_Unk00A1 + .word ScrCmd_Unk00A2 + .word ScrCmd_Unk00A3 + .word ScrCmd_Unk00A4 + .word ScrCmd_Unk00A5 + .word ScrCmd_Unk00A6 + .word ScrCmd_Unk00A7 + .word ScrCmd_Unk00A8 + .word ScrCmd_Unk00A9 + .word ScrCmd_Unk00AA + .word ScrCmd_MonStoragePC + .word ScrCmd_Unk00AC + .word ScrCmd_Unk00AD + .word ScrCmd_Unk00AE + .word ScrCmd_Unk00AF + .word ScrCmd_HallOfFame + .word ScrCmd_Unk00B1 + .word ScrCmd_Unk00B2 + .word ScrCmd_Unk00B3 + .word ScrCmd_Unk00B4 + .word ScrCmd_Unk00B5 + .word ScrCmd_Unk00B6 + .word ScrCmd_Unk00B7 + .word ScrCmd_Unk00B8 + .word ScrCmd_Unk00B9 + .word ScrCmd_Unk00BA + .word ScrCmd_Unk00BB + .word ScrCmd_Unk00BC + .word ScrCmd_Unk00BD + .word ScrCmd_Unk00BE + .word ScrCmd_Unk00BF + .word ScrCmd_Unk00C0 + .word ScrCmd_Unk00C1 + .word ScrCmd_Unk00C2 + .word ScrCmd_Unk00C3 + .word ScrCmd_Unk00C4 + .word ScrCmd_Unk00C5 + .word ScrCmd_Unk00C6 + .word ScrCmd_Unk00C7 + .word ScrCmd_Unk00C8 + .word ScrCmd_Unk00C9 + .word ScrCmd_Unk00CA + .word ScrCmd_Unk00CB + .word ScrCmd_Unk00CC .word ScrCmd_GetPlayerName .word ScrCmd_GetRivalName .word ScrCmd_GetFriendName - .word ScrCmd_Unk00D0 + .word ScrCmd_GetPokemonName .word ScrCmd_GetItemName .word ScrCmd_GetPocketName .word ScrCmd_GetTMHMMoveName .word ScrCmd_GetMoveName .word ScrCmd_Unk00D5 - .word ScrCmd_Unk00D6 + .word ScrCmd_GetPokemonNickname .word ScrCmd_GetPoketchAppName .word ScrCmd_GetTrainerClassName .word ScrCmd_Unk00D9 .word ScrCmd_Unk00DA - .word ScrCmd_Unk00DB - .word ScrCmd_Unk00DC - .word ScrCmd_Unk00DD - .word FUN_0203CBBC + .word ScrCmd_GetPlayerStarterName + .word ScrCmd_GetRivalStarterName + .word ScrCmd_GetCounterpartStarterName + .word ScrCmd_Unk00DE .word ScrCmd_GetDecorationName .word ScrCmd_GetUndergroundTrapName .word ScrCmd_GetUndergroundItemName - .word ScrCmd_Unk00E2 - .word FUN_0203CB70 - .word FUN_0204185C - .word FUN_0204188C - .word FUN_0203CBE8 - .word FUN_02041970 - .word FUN_020419F8 - .word FUN_02041A80 - .word FUN_02041AB4 - .word FUN_02041AD4 - .word FUN_02041AE0 - .word FUN_02041B10 - .word FUN_02041B70 - .word FUN_02041B9C - .word FUN_02041BC4 - .word FUN_02041BF0 - .word FUN_0203CC88 - .word FUN_0203CD20 - .word FUN_0203CDB8 - .word FUN_0203CDC4 - .word FUN_0203CDD0 - .word FUN_0203CE00 - .word FUN_0203FE90 - .word FUN_0203FEC0 - .word FUN_0203FF10 - .word FUN_02040028 - .word FUN_02040074 - .word FUN_020400C8 - .word FUN_0204011C - .word FUN_02040170 - .word FUN_020401CC - .word FUN_02040204 - .word FUN_02040220 - .word FUN_0204025C - .word FUN_02040298 - .word FUN_020402D4 - .word FUN_02040304 - .word FUN_02040340 - .word FUN_02040370 - .word FUN_020403A0 - .word FUN_020403D0 - .word FUN_02040414 - .word FUN_02040458 - .word FUN_020404FC - .word FUN_0204052C - .word FUN_0204056C - .word FUN_02040488 - .word FUN_020405CC - .word FUN_020405F8 - .word FUN_02040638 - .word FUN_0204064C - .word FUN_02040660 - .word FUN_020406C0 - .word FUN_0204059C - .word FUN_020405B4 - .word FUN_02044CE0 - .word FUN_02044D44 - .word FUN_0203CE0C - .word FUN_0203CE8C - .word FUN_0203CEBC - .word FUN_0203CF04 - .word FUN_0203CF34 - .word FUN_0203CF64 - .word FUN_0203CF94 - .word FUN_0203CFC4 - .word FUN_0203CFC8 - .word FUN_0203D050 - .word FUN_0203D0F8 - .word FUN_0203D134 - .word FUN_0203D140 - .word FUN_0203D150 - .word FUN_0203D178 - .word FUN_0203D194 - .word FUN_0203D1A4 - .word FUN_0203D1C0 - .word FUN_0203D214 - .word FUN_0203C054 - .word FUN_0203C090 - .word FUN_0203C0CC - .word FUN_0203D23C - .word FUN_0203D248 - .word FUN_0203D278 - .word FUN_0203D2A4 - .word FUN_0203D2E4 - .word FUN_0203D330 - .word FUN_0203D33C - .word FUN_0203D36C - .word FUN_0203D3A4 - .word FUN_0203D60C - .word FUN_0203D61C - .word FUN_0203D3DC - .word FUN_0203D448 - .word FUN_0203D458 - .word FUN_0203D490 - .word FUN_0203D528 - .word FUN_0203D5B0 - .word FUN_0203D5F8 - .word FUN_0203D630 - .word FUN_0203D66C - .word FUN_0203D6C4 - .word FUN_0203D560 - .word FUN_0203FCF4 - .word FUN_0203FDBC - .word FUN_0203FE08 - .word FUN_0203FE48 - .word FUN_0203D868 - .word FUN_0203D874 - .word ScrCmd_getplayergender - .word ScrCmd_healparty - .word FUN_0203D8E8 - .word FUN_0203D8EC - .word FUN_0203D938 - .word FUN_0203D948 - .word FUN_0203D728 - .word FUN_0203D738 - .word FUN_0203D774 - .word FUN_0203D834 - .word FUN_020453F4 - .word FUN_02045424 - .word FUN_02045438 - .word FUN_02045468 - .word FUN_02045484 - .word FUN_020454CC - .word FUN_0204552C - .word FUN_02045500 - .word FUN_0204557C - .word FUN_02045590 - .word FUN_020455BC - .word FUN_020455D0 - .word FUN_020455E4 - .word FUN_02045610 - .word FUN_02045624 - .word FUN_02045638 - .word FUN_02045664 - .word FUN_0203DC00 - .word FUN_0203DC58 - .word FUN_0203DC70 - .word FUN_0203DC88 - .word FUN_0203DCA0 - .word ScrCmd_Unk016D - .word ScrCmd_Unk016E - .word FUN_0203DCB8 - .word FUN_0203DCC8 - .word FUN_0203DCD8 - .word FUN_0203DCE8 - .word FUN_0203DCF8 - .word FUN_0203DD08 - .word FUN_0203DD18 - .word FUN_0203DD34 - .word FUN_02044B00 - .word FUN_0203C460 - .word FUN_0203C4B0 - .word FUN_0203D958 - .word ScrCmd_Unk017B + .word ScrCmd_GetMapName + .word ScrCmd_Unk00E3 + .word ScrCmd_Unk00E4 + .word ScrCmd_Unk00E5 + .word ScrCmd_Unk00E6 + .word ScrCmd_Unk00E7 + .word ScrCmd_Unk00E8 + .word ScrCmd_Unk00E9 + .word ScrCmd_Unk00EA + .word ScrCmd_Unk00EB + .word ScrCmd_Unk00EC + .word ScrCmd_Unk00ED + .word ScrCmd_Unk00EE + .word ScrCmd_Unk00EF + .word ScrCmd_Unk00F0 + .word ScrCmd_Unk00F1 + .word ScrCmd_Unk00F2 + .word ScrCmd_Unk00F3 + .word ScrCmd_Unk00F4 + .word ScrCmd_Unk00F5 + .word ScrCmd_Unk00F6 + .word ScrCmd_Unk00F7 + .word ScrCmd_Unk00F8 + .word ScrCmd_Unk00F9 + .word ScrCmd_Unk00FA + .word ScrCmd_Unk00FB + .word ScrCmd_Unk00FC + .word ScrCmd_Unk00FD + .word ScrCmd_Unk00FE + .word ScrCmd_Unk00FF + .word ScrCmd_Unk0100 + .word ScrCmd_Unk0101 + .word ScrCmd_Unk0102 + .word ScrCmd_Unk0103 + .word ScrCmd_Unk0104 + .word ScrCmd_Unk0105 + .word ScrCmd_Unk0106 + .word ScrCmd_Unk0107 + .word ScrCmd_Unk0108 + .word ScrCmd_Unk0109 + .word ScrCmd_Unk010A + .word ScrCmd_Unk010B + .word ScrCmd_Unk010C + .word ScrCmd_Unk010D + .word ScrCmd_Unk010E + .word ScrCmd_Unk010F + .word ScrCmd_Unk0110 + .word ScrCmd_Unk0111 + .word ScrCmd_Unk0112 + .word ScrCmd_Unk0113 + .word ScrCmd_Unk0114 + .word ScrCmd_Unk0115 + .word ScrCmd_Unk0116 + .word ScrCmd_Unk0117 + .word ScrCmd_Unk0118 + .word ScrCmd_Unk0119 + .word ScrCmd_Unk011A + .word ScrCmd_Unk011B + .word ScrCmd_Unk011C + .word ScrCmd_Unk011D + .word ScrCmd_Unk011E + .word ScrCmd_Unk011F + .word ScrCmd_Unk0120 + .word ScrCmd_Unk0121 + .word ScrCmd_Unk0122 + .word ScrCmd_Unk0123 + .word ScrCmd_Unk0124 + .word ScrCmd_Unk0125 + .word ScrCmd_Unk0126 + .word ScrCmd_Unk0127 + .word ScrCmd_Unk0128 + .word ScrCmd_Unk0129 + .word ScrCmd_Unk012A + .word ScrCmd_Unk012B + .word ScrCmd_Unk012C + .word ScrCmd_Unk012D + .word ScrCmd_Unk012E + .word ScrCmd_Unk012F + .word ScrCmd_Unk0130 + .word ScrCmd_Unk0131 + .word ScrCmd_Unk0132 + .word ScrCmd_Unk0133 + .word ScrCmd_Unk0134 + .word ScrCmd_Unk0135 + .word ScrCmd_Unk0136 + .word ScrCmd_Unk0137 + .word ScrCmd_Unk0138 + .word ScrCmd_Unk0139 + .word ScrCmd_Unk013A + .word ScrCmd_Unk013B + .word ScrCmd_Unk013C + .word ScrCmd_Unk013D + .word ScrCmd_Unk013E + .word ScrCmd_Unk013F + .word ScrCmd_Unk0140 + .word ScrCmd_Unk0141 + .word ScrCmd_Unk0142 + .word ScrCmd_Unk0143 + .word ScrCmd_Unk0144 + .word ScrCmd_Unk0145 + .word ScrCmd_Unk0146 + .word ScrCmd_NormalMart + .word ScrCmd_SpecialMart + .word ScrCmd_GoodsMart + .word ScrCmd_SealsMart + .word ScrCmd_Unk014B + .word ScrCmd_Unk014C + .word ScrCmd_GetPlayerGender + .word ScrCmd_HealParty + .word ScrCmd_Unk014F + .word ScrCmd_Unk0150 + .word ScrCmd_Unk0151 + .word ScrCmd_Unk0152 + .word ScrCmd_Unk0153 + .word ScrCmd_Unk0154 + .word ScrCmd_Unk0155 + .word ScrCmd_Unk0156 + .word ScrCmd_HasSinnohDex + .word ScrCmd_GiveSinnohDex + .word ScrCmd_HasRunningShoes + .word ScrCmd_GiveRunningShoes + .word ScrCmd_HasBadge + .word ScrCmd_GiveBadge + .word ScrCmd_GetTotalEarnedBadges + .word ScrCmd_GiveBag + .word ScrCmd_HasBag + .word ScrCmd_Unk0160 + .word ScrCmd_Unk0161 + .word ScrCmd_Unk0162 + .word ScrCmd_Unk0163 + .word ScrCmd_Unk0164 + .word ScrCmd_Unk0165 + .word ScrCmd_CheckGameCompleted + .word ScrCmd_SetGameCompleted + .word ScrCmd_Unk0168 + .word ScrCmd_Unk0169 + .word ScrCmd_Unk016A + .word ScrCmd_Unk016B + .word ScrCmd_Unk016C + .word ScrCmd_GetDaycarePokemonNames + .word ScrCmd_GetDaycareStatus + .word ScrCmd_Unk016F + .word ScrCmd_Unk0170 + .word ScrCmd_Unk0171 + .word ScrCmd_Unk0172 + .word ScrCmd_Unk0173 + .word ScrCmd_Unk0174 + .word ScrCmd_Unk0175 + .word ScrCmd_Unk0176 + .word ScrCmd_Unk0177 + .word ScrCmd_Unk0178 + .word ScrCmd_Unk0179 + .word ScrCmd_Unk017A + .word ScrCmd_GetBerryName .word ScrCmd_GetNatureName - .word ScrCmd_Unk017D - .word ScrCmd_Unk017E - .word ScrCmd_Unk017F - .word ScrCmd_Unk0180 - .word ScrCmd_Unk0181 - .word ScrCmd_Unk0182 - .word ScrCmd_Unk0183 + .word ScrCmd_GetBerryTreeGrowth + .word ScrCmd_GetBerryTreeType + .word ScrCmd_GetBerryTreeMulch + .word ScrCmd_GetBerryTreeWater + .word ScrCmd_GetBerryTreeAmount + .word ScrCmd_SetBerryTreeMulch + .word ScrCmd_SetBerryTreeType .word ScrCmd_Unk0184 - .word ScrCmd_Unk0185 - .word FUN_0203D998 - .word FUN_0203D9E8 - .word FUN_0203DA78 - .word FUN_0203DAB0 - .word FUN_0203DAE8 - .word FUN_0203DB38 - .word FUN_0203DB88 + .word ScrCmd_TakeBerryTreeBerries + .word ScrCmd_Unk0186 + .word ScrCmd_Unk0187 + .word ScrCmd_Unk0188 + .word ScrCmd_Unk0189 + .word ScrCmd_Unk018A + .word ScrCmd_Unk018B + .word ScrCmd_Unk018C .word ScrCmd_ShowSaveClock .word ScrCmd_HideSaveClock - .word FUN_0203DBD4 + .word ScrCmd_Unk018F .word ScrCmd_WaitButtonABTime - .word FUN_0203B8E4 - .word FUN_0203B944 - .word FUN_0203B968 - .word FUN_0203B9B4 - .word FUN_0203BA3C - .word FUN_0203BAB0 - .word FUN_0203BAF4 - .word ScrCmd_getpartyspecies - .word ScrCmd_checkpartymonotid - .word FUN_02044B2C - .word FUN_02044B84 - .word FUN_02044C0C - .word FUN_02044C88 - .word FUN_0203DD60 - .word FUN_0203DE00 - .word FUN_0203DE4C - .word FUN_0203DE58 - .word FUN_0203DE80 + .word ScrCmd_Unk0191 + .word ScrCmd_Unk0192 + .word ScrCmd_Unk0193 + .word ScrCmd_Unk0194 + .word ScrCmd_Unk0195 + .word ScrCmd_Unk0196 + .word ScrCmd_Unk0197 + .word ScrCmd_GetPartySpecies + .word ScrCmd_CheckPartyMonOTID + .word ScrCmd_Unk019A + .word ScrCmd_Unk019B + .word ScrCmd_Unk019C + .word ScrCmd_Unk019D + .word ScrCmd_Unk019E + .word ScrCmd_Unk019F + .word ScrCmd_Unk01A0 + .word ScrCmd_Unk01A1 + .word ScrCmd_Unk01A2 .word ScrCmd_TakeMoneyAddress .word ScrCmd_Unk01A4 .word ScrCmd_Unk01A5 .word ScrCmd_Unk01A6 .word ScrCmd_Unk01A7 - .word ScrCmd_Unk01A8 - .word ScrCmd_Unk01A9 + .word ScrCmd_DeleteDaycareEgg + .word ScrCmd_GiveDaycareEgg .word ScrCmd_Unk01AA .word ScrCmd_HasEnoughMoneyAddress - .word FUN_0203DD50 + .word ScrCmd_Unk01AC .word ScrCmd_Unk01AD - .word ScrCmd_Unk01AE + .word ScrCmd_GetDaycareLevel .word ScrCmd_Unk01AF .word ScrCmd_Unk01B0 - .word FUN_0203DEC4 - .word FUN_0203DEF8 - .word FUN_0203DF2C - .word FUN_0203DF38 - .word FUN_0203DF64 - .word FUN_0203DF84 - .word FUN_0203DFA8 - .word FUN_0203DFE0 - .word ScrCmd_getpartymonfriendship - .word FUN_020448D4 - .word FUN_020449A4 + .word ScrCmd_Unk01B1 + .word ScrCmd_Unk01B2 + .word ScrCmd_Unk01B3 + .word ScrCmd_Unk01B4 + .word ScrCmd_Unk01B5 + .word ScrCmd_Unk01B6 + .word ScrCmd_Unk01B7 + .word ScrCmd_Unk01B8 + .word ScrCmd_GetPartyMonFriendship + .word ScrCmd_Unk01BA + .word ScrCmd_Unk01BB .word ScrCmd_Unk01BC - .word FUN_0203B618 + .word ScrCmd_Unk01BD .word ScrCmd_Unk01BE .word ScrCmd_Unk01BF - .word FUN_02044F58 - .word FUN_0203E018 - .word FUN_0203E054 - .word FUN_0203E078 - .word FUN_0203E0CC - .word FUN_0203E120 - .word FUN_02045D88 - .word FUN_02045DD0 - .word FUN_02044D8C - .word FUN_02044E34 - .word FUN_02044E78 + .word ScrCmd_Unk01C0 + .word ScrCmd_Unk01C1 + .word ScrCmd_Unk01C2 + .word ScrCmd_Unk01C3 + .word ScrCmd_Unk01C4 + .word ScrCmd_Unk01C5 + .word ScrCmd_Unk01C6 + .word ScrCmd_Unk01C7 + .word ScrCmd_Unk01C8 + .word ScrCmd_Unk01C9 + .word ScrCmd_Unk01CA .word ScrCmd_GetPokemonMoveName - .word FUN_0203E138 - .word FUN_0203E168 - .word FUN_0203E254 - .word FUN_02045678 - .word FUN_020456D4 - .word FUN_0204572C - .word FUN_0203E258 - .word FUN_0203E29C - .word FUN_0203E2F8 - .word FUN_0203E35C - .word FUN_0203E38C - .word FUN_0203C174 - .word FUN_0203C1AC - .word FUN_0203C200 - .word FUN_02042354 - .word FUN_02042364 - .word FUN_02042394 - .word FUN_020423B0 - .word FUN_02042700 - .word FUN_02042780 - .word FUN_020427A8 - .word FUN_020427D0 - .word FUN_02042864 - .word FUN_02042894 - .word FUN_020428E0 - .word FUN_0203E4F0 - .word FUN_0203E510 - .word FUN_0203E568 - .word FUN_0203E3D0 - .word FUN_0203E408 - .word FUN_0203E440 - .word FUN_0203E470 - .word FUN_0203E4A0 - .word FUN_0203E4B0 - .word FUN_02044ED8 - .word FUN_0203E4D8 - .word FUN_02044F20 - .word ScrCmd_Unk01F1 + .word ScrCmd_Unk01CC + .word ScrCmd_Unk01CD + .word ScrCmd_Unk01CE + .word ScrCmd_GetSetStrength + .word ScrCmd_GetSetFlash + .word ScrCmd_GetSetDefog + .word ScrCmd_Unk01D2 + .word ScrCmd_Unk01D3 + .word ScrCmd_Unk01D4 + .word ScrCmd_Unk01D5 + .word ScrCmd_Unk01D6 + .word ScrCmd_Unk01D7 + .word ScrCmd_Unk01D8 + .word ScrCmd_Unk01D9 + .word ScrCmd_Unk01DA + .word ScrCmd_Unk01DB + .word ScrCmd_Unk01DC + .word ScrCmd_Unk01DD + .word ScrCmd_Unk01DE + .word ScrCmd_Unk01DF + .word ScrCmd_Unk01E0 + .word ScrCmd_Unk01E1 + .word ScrCmd_Unk01E2 + .word ScrCmd_Unk01E3 + .word ScrCmd_Unk01E4 + .word ScrCmd_Unk01E5 + .word ScrCmd_Unk01E6 + .word ScrCmd_Unk01E7 + .word ScrCmd_Unk01E8 + .word ScrCmd_Unk01E9 + .word ScrCmd_Unk01EA + .word ScrCmd_Unk01EB + .word ScrCmd_Unk01EC + .word ScrCmd_Unk01ED + .word ScrCmd_Unk01EE + .word ScrCmd_Unk01EF + .word ScrCmd_Unk01F0 + .word ScrCmd_CountFossils .word ScrCmd_Unk01F2 .word ScrCmd_Unk01F3 - .word ScrCmd_Unk01F4 - .word ScrCmd_Unk01F5 - .word ScrCmd_countpartymonsatorbelowlevel - .word ScrCmd_survivepsn - .word FUN_0203BC2C + .word ScrCmd_GetFossilPokemon + .word ScrCmd_GetFossilMinimumAmount + .word ScrCmd_CountPartyMonsAtOrBelowLevel + .word ScrCmd_SurvivePsn + .word ScrCmd_Unk01F8 .word ScrCmd_DebugWatch .word ScrCmd_MessageFrom .word ScrCmd_MessageFrom2 @@ -661,202 +661,202 @@ gScriptCmdTable: ; 0x020F355C .word ScrCmd_Unk01FD .word ScrCmd_Unk01FE .word ScrCmd_Unk01FF - .word FUN_0203C7F4 - .word FUN_0203C820 - .word FUN_0203E5DC - .word FUN_0203C788 - .word FUN_0203C7E4 - .word FUN_0203C0FC - .word FUN_0203E674 - .word FUN_0203BD08 - .word FUN_0203BD28 - .word FUN_0203BE50 - .word FUN_0203BECC - .word FUN_0203BF00 + .word ScrCmd_Unk0200 + .word ScrCmd_Unk0201 + .word ScrCmd_Unk0202 + .word ScrCmd_Unk0203 + .word ScrCmd_Unk0204 + .word ScrCmd_Unk0205 + .word ScrCmd_Unk0206 + .word ScrCmd_Unk0207 + .word ScrCmd_Unk0208 + .word ScrCmd_Unk0209 + .word ScrCmd_Unk020A + .word ScrCmd_Unk020B .word ScrCmd_Unk020C - .word FUN_0203E684 - .word FUN_0203E6B4 - .word FUN_0203E6C4 - .word FUN_0203E6FC - .word FUN_0203E72C - .word ScrCmd_getpartymonnature - .word ScrCmd_findpartymonwithnature - .word FUN_0203E744 - .word FUN_02044158 - .word FUN_0204416C - .word FUN_02044198 - .word FUN_0203E774 - .word FUN_0203E7F0 - .word FUN_0203E81C - .word FUN_0203E848 - .word FUN_0203E858 - .word FUN_02041C38 - .word FUN_02045E1C - .word FUN_02045E20 - .word FUN_02045EE0 - .word FUN_02045EE4 - .word FUN_02045F84 - .word FUN_02045F88 - .word FUN_02045F24 - .word FUN_02045FCC - .word FUN_0203E870 - .word FUN_0203E894 - .word FUN_0203E8C4 - .word FUN_0203E8F4 - .word FUN_0203E928 - .word FUN_0203E940 - .word FUN_0203E954 - .word FUN_0203E968 - .word FUN_02044FE8 - .word FUN_0204505C - .word FUN_02045104 - .word FUN_02045170 - .word ScrCmd_Unk0232 - .word FUN_0203E9CC - .word FUN_0203EA68 - .word FUN_02041E40 - .word FUN_02041FDC - .word FUN_02042038 - .word FUN_02042110 - .word FUN_0203EA90 - .word FUN_0203EAB0 - .word FUN_0203EB20 - .word FUN_0203EB48 - .word FUN_0203EB88 - .word FUN_02042D1C + .word ScrCmd_Unk020D + .word ScrCmd_Unk020E + .word ScrCmd_Unk020F + .word ScrCmd_Unk0210 + .word ScrCmd_Unk0211 + .word ScrCmd_GetPartyMonNature + .word ScrCmd_FindPartyMonWithNature + .word ScrCmd_Unk0214 + .word ScrCmd_Unk0215 + .word ScrCmd_Unk0216 + .word ScrCmd_Unk0217 + .word ScrCmd_Unk0218 + .word ScrCmd_Unk0219 + .word ScrCmd_Unk021A + .word ScrCmd_Unk021B + .word ScrCmd_Unk021C + .word ScrCmd_Unk021D + .word ScrCmd_Unk021E + .word ScrCmd_Unk021F + .word ScrCmd_Unk0220 + .word ScrCmd_Unk0221 + .word ScrCmd_Unk0222 + .word ScrCmd_Unk0223 + .word ScrCmd_Unk0224 + .word ScrCmd_Unk0225 + .word ScrCmd_Unk0226 + .word ScrCmd_Unk0227 + .word ScrCmd_Unk0228 + .word ScrCmd_Unk0229 + .word ScrCmd_Unk022A + .word ScrCmd_Unk022B + .word ScrCmd_Unk022C + .word ScrCmd_Unk022D + .word ScrCmd_Unk022E + .word ScrCmd_Unk022F + .word ScrCmd_Unk0230 + .word ScrCmd_Unk0231 + .word ScrCmd_GetRibbonName + .word ScrCmd_Unk0233 + .word ScrCmd_Unk0234 + .word ScrCmd_Unk0235 + .word ScrCmd_Unk0236 + .word ScrCmd_Unk0237 + .word ScrCmd_Unk0238 + .word ScrCmd_Unk0239 + .word ScrCmd_Unk023A + .word ScrCmd_Unk023B + .word ScrCmd_Unk023C + .word ScrCmd_Unk023D + .word ScrCmd_Unk023E .word ScrCmd_Unk023F .word ScrCmd_Unk0240 .word ScrCmd_Unk0241 .word ScrCmd_Unk0242 - .word FUN_0203C5BC - .word FUN_0203C614 - .word FUN_0203C680 - .word ScrCmd_gameversion - .word FUN_02044A6C - .word FUN_02044A94 - .word ScrCmd_givewallpaper - .word FUN_0203ECAC - .word FUN_0203ECD8 - .word FUN_0203ECF4 - .word FUN_0203ED10 - .word FUN_02041194 - .word FUN_020411C4 - .word FUN_02041340 + .word ScrCmd_Unk0243 + .word ScrCmd_Unk0244 + .word ScrCmd_Unk0245 + .word ScrCmd_GameVersion + .word ScrCmd_Unk0247 + .word ScrCmd_Unk0248 + .word ScrCmd_GiveWallpaper + .word ScrCmd_Unk024A + .word ScrCmd_Unk024B + .word ScrCmd_Unk024C + .word ScrCmd_Unk024D + .word ScrCmd_Unk024E + .word ScrCmd_Unk024F + .word ScrCmd_Unk0250 .word ScrCmd_Unk0251 - .word ScrCmd_pcfreespace + .word ScrCmd_PCFreeSpace .word ScrCmd_Unk0253 .word ScrCmd_Unk0254 .word ScrCmd_Unk0255 .word ScrCmd_Unk0256 - .word FUN_0203FE80 - .word FUN_0203EDA4 - .word FUN_0203EDC8 - .word FUN_0203EDE0 - .word FUN_0203EE08 - .word FUN_0203EE18 - .word FUN_0203EE28 - .word FUN_0203EE58 - .word FUN_0203EE68 - .word FUN_0203EE78 + .word ScrCmd_AccessoriesShop + .word ScrCmd_Unk0258 + .word ScrCmd_Unk0259 + .word ScrCmd_Unk025A + .word ScrCmd_Unk025B + .word ScrCmd_Unk025C + .word ScrCmd_Unk025D + .word ScrCmd_Unk025E + .word ScrCmd_Unk025F + .word ScrCmd_Unk0260 .word ScrCmd_GetFashionName - .word FUN_0203EE98 - .word FUN_0203EED8 - .word FUN_0203EF58 - .word FUN_0203F00C - .word FUN_0203F020 - .word FUN_0203F034 - .word FUN_0203F058 - .word FUN_0203F07C - .word FUN_0203F110 - .word FUN_0203F174 - .word FUN_0203F19C - .word ScrCmd_Unk026D - .word FUN_0203F234 - .word FUN_0203F254 - .word FUN_0203F26C - .word FUN_0203C58C - .word ScrCmd_Unk0272 - .word FUN_0203F2AC + .word ScrCmd_Unk0262 + .word ScrCmd_Unk0263 + .word ScrCmd_Unk0264 + .word ScrCmd_Unk0265 + .word ScrCmd_Unk0266 + .word ScrCmd_Unk0267 + .word ScrCmd_Unk0268 + .word ScrCmd_Unk0269 + .word ScrCmd_Unk026A + .word ScrCmd_Unk026B + .word ScrCmd_Unk026C + .word ScrCmd_MessageUnown + .word ScrCmd_Unk026E + .word ScrCmd_Unk026F + .word ScrCmd_Unk0270 + .word ScrCmd_Unk0271 + .word ScrCmd_GetWhiteRockInscription + .word ScrCmd_Unk0273 .word ScrCmd_HasEnoughCoinsImmediate - .word FUN_0203F2E4 + .word ScrCmd_Unk0275 .word ScrCmd_CanGiveCoins - .word FUN_0203F31C - .word ScrCmd_getpartymonlevel - .word FUN_0203F348 - .word FUN_0203F38C - .word FUN_0203F39C - .word FUN_0204214C - .word FUN_0203F3AC - .word FUN_0203F44C - .word FUN_0203F418 + .word ScrCmd_Unk0277 + .word ScrCmd_GetPartyMonLevel + .word ScrCmd_Unk0279 + .word ScrCmd_Unk027A + .word ScrCmd_Unk027B + .word ScrCmd_Unk027C + .word ScrCmd_Unk027D + .word ScrCmd_Unk027E + .word ScrCmd_Unk027F .word ScrCmd_Unk0280 - .word FUN_02044A0C - .word FUN_0203F484 - .word FUN_02041674 - .word FUN_0203F4D8 - .word FUN_0203F508 - .word FUN_0203F5D4 - .word FUN_0203F604 - .word FUN_0203F634 - .word FUN_0203F664 - .word FUN_0203F6E4 - .word FUN_0203F720 - .word FUN_0203BDB8 - .word FUN_0203BE68 - .word FUN_0203BE80 - .word FUN_0203F760 - .word FUN_0203F7C8 - .word FUN_0203F80C - .word FUN_0203F880 - .word FUN_0203F924 - .word FUN_02042950 - .word FUN_02042980 - .word FUN_02042998 - .word FUN_020429B8 - .word FUN_020429E8 - .word FUN_02042A18 - .word FUN_02042A48 - .word FUN_02042A98 - .word FUN_0203D7DC + .word ScrCmd_Unk0281 + .word ScrCmd_Unk0282 + .word ScrCmd_SetVolume + .word ScrCmd_Unk0284 + .word ScrCmd_Unk0285 + .word ScrCmd_Unk0286 + .word ScrCmd_Unk0287 + .word ScrCmd_Unk0288 + .word ScrCmd_Unk0289 + .word ScrCmd_Unk028A + .word ScrCmd_Unk028B + .word ScrCmd_Unk028C + .word ScrCmd_Unk028D + .word ScrCmd_Unk028E + .word ScrCmd_Unk028F + .word ScrCmd_Unk0290 + .word ScrCmd_Unk0291 + .word ScrCmd_Unk0292 + .word ScrCmd_Unk0293 + .word ScrCmd_Unk0294 + .word ScrCmd_Unk0295 + .word ScrCmd_Unk0296 + .word ScrCmd_Unk0297 + .word ScrCmd_Unk0298 + .word ScrCmd_Unk0299 + .word ScrCmd_Unk029A + .word ScrCmd_Unk029B + .word ScrCmd_Unk029C .word ScrCmd_Unk029D - .word FUN_0203F8C0 - .word FUN_0203F954 - .word FUN_0204190C - .word FUN_0203B024 - .word FUN_0203F9DC - .word FUN_0203F988 - .word FUN_0203F9B0 - .word FUN_0203B914 - .word ScrCmd_Unk02A6 - .word FUN_0203FA14 + .word ScrCmd_Unk029E + .word ScrCmd_Unk029F + .word ScrCmd_Unk02A0 + .word ScrCmd_Unk02A1 + .word ScrCmd_Unk02A2 + .word ScrCmd_Unk02A3 + .word ScrCmd_Unk02A4 + .word ScrCmd_Unk02A5 + .word ScrCmd_GetPrizeItemIdAndCost + .word ScrCmd_Unk02A7 .word ScrCmd_TakeCoinsAddress .word ScrCmd_HasEnoughCoinsAddress - .word FUN_0203FA58 - .word FUN_0203B7F0 - .word FUN_0203FB4C - .word FUN_0203B790 - .word FUN_020413C0 - .word FUN_0203FB64 - .word FUN_0203FB94 - .word FUN_0203FBA0 - .word FUN_0203FBAC + .word ScrCmd_Unk02AA + .word ScrCmd_Unk02AB + .word ScrCmd_Unk02AC + .word ScrCmd_Unk02AD + .word ScrCmd_Unk02AE + .word ScrCmd_Unk02AF + .word ScrCmd_Unk02B0 + .word ScrCmd_Unk02B1 + .word ScrCmd_Unk02B2 .word ScrCmd_GetSealName - .word FUN_0203B2E0 - .word FUN_0203FBBC - .word FUN_0203FC1C - .word FUN_020451D0 - .word FUN_02042000 + .word ScrCmd_Unk02B4 + .word ScrCmd_Unk02B5 + .word ScrCmd_Unk02B6 + .word ScrCmd_Unk02B7 + .word ScrCmd_Unk02B8 .word ScrCmd_Unk02B9 - .word FUN_0203D4E8 - .word FUN_0203D920 - .word FUN_02041B40 - .word FUN_0203D0A4 - .word FUN_0203FC58 - .word FUN_0203CAE8 + .word ScrCmd_Unk02BA + .word ScrCmd_Unk02BB + .word ScrCmd_Unk02BC + .word ScrCmd_Unk02BD + .word ScrCmd_Unk02BE + .word ScrCmd_Unk02BF .word ScrCmd_Unk02C0 - .word FUN_0203FC80 - .word FUN_0203FCB0 - .word FUN_0203FCDC + .word ScrCmd_Unk02C1 + .word ScrCmd_Unk02C2 + .word ScrCmd_Unk02C3 .word ScrCmd_GetItemNameWithIndefArticle .word ScrCmd_GetItemNamePlural .word ScrCmd_GetDecorationNameWithArticle @@ -1035,7 +1035,7 @@ _02038DA8: ldrb r0, [r4, #0x9] cmp r0, #0x0 bne _02038DC8 - bl ErrorHandling + bl GF_AssertFail _02038DC8: mov r0, #0x0 str r0, [r5, #0x38] @@ -1089,7 +1089,7 @@ CreateFieldContext: ; 0x02038E20 bl AllocFromHeap add r4, r0, #0x0 bne _02038E32 - bl ErrorHandling + bl GF_AssertFail _02038E32: add r0, r4, #0x0 mov r1, #0x0 @@ -1164,7 +1164,7 @@ CreateScriptContext: ; 0x02038EB0 bl AllocFromHeap add r4, r0, #0x0 bne _02038EC6 - bl ErrorHandling + bl GF_AssertFail _02038EC6: ldr r2, _02038EE4 ; =sNumScriptCmds ldr r1, _02038EE8 ; =gScriptCmdTable @@ -1865,7 +1865,7 @@ _02039426: add r0, r0, r1 pop {r3, pc} _02039430: - bl ErrorHandling + bl GF_AssertFail mov r0, #0x0 pop {r3, pc} @@ -1880,7 +1880,7 @@ FUN_02039438: ; 0x02039438 ldr r0, _0203945C ; =0x0003643F cmp r1, r0 beq _02039450 - bl ErrorHandling + bl GF_AssertFail _02039450: add r0, r4, #0x0 add r1, r5, #0x0 @@ -1989,7 +1989,7 @@ FUN_02039504: ; 0x02039504 add r5, r0, #0x0 cmp r4, #0x10 blo _02039512 - bl ErrorHandling + bl GF_AssertFail _02039512: ldr r1, _02039524 ; =0x00004020 add r0, r5, #0x0 @@ -2236,7 +2236,7 @@ _020396C0: _020396CE: cmp r1, #0xe5 blo _020396DA - bl ErrorHandling + bl GF_AssertFail mov r0, #0x0 pop {r4, pc} _020396DA: @@ -2280,7 +2280,7 @@ _02039718: _02039726: cmp r1, #0xe5 blo _02039732 - bl ErrorHandling + bl GF_AssertFail mov r0, #0x0 pop {r3-r7, pc} _02039732: diff --git a/arm9/asm/unk_02047500.s b/arm9/asm/unk_02047500.s index 905cf7b1..4a5b00a0 100644 --- a/arm9/asm/unk_02047500.s +++ b/arm9/asm/unk_02047500.s @@ -79,7 +79,7 @@ FUN_0204755C: ; 0x0204755C add r4, r1, #0x0 cmp r5, #0x1f blo _0204756A - bl ErrorHandling + bl GF_AssertFail _0204756A: ldr r0, _02047580 ; =UNK_020F457C lsl r1, r5, #0x2 @@ -101,7 +101,7 @@ FUN_02047588: ; 0x02047588 add r4, r0, #0x0 cmp r4, #0x1f blo _02047594 - bl ErrorHandling + bl GF_AssertFail _02047594: ldr r0, _0204759C ; =UNK_020F457E lsl r1, r4, #0x2 diff --git a/arm9/asm/unk_020476CC.s b/arm9/asm/unk_020476CC.s index 7e25689f..a06056dd 100644 --- a/arm9/asm/unk_020476CC.s +++ b/arm9/asm/unk_020476CC.s @@ -97,7 +97,7 @@ _0204775C: add r4, r7, #0x0 _02047774: add r0, r5, #0x0 - bl FUN_02029EE4 + bl Chatot_new mov r1, #0x46 lsl r1, r1, #0x2 str r0, [r4, r1] @@ -327,7 +327,7 @@ _0204796C: ldr r0, [r5, #0x4] cmp r0, #0x0 bne _02047976 - bl ErrorHandling + bl GF_AssertFail _02047976: ldr r0, [r5, #0x4] bl FreeToHeap @@ -343,7 +343,7 @@ _02047988: ldr r0, [r0, #0x0] cmp r0, #0x0 bne _02047996 - bl ErrorHandling + bl GF_AssertFail _02047996: add r0, r4, #0x0 add r0, #0xf8 @@ -361,7 +361,7 @@ _020479B0: ldr r0, [r4, r6] cmp r0, #0x0 bne _020479BA - bl ErrorHandling + bl GF_AssertFail _020479BA: mov r0, #0x46 lsl r0, r0, #0x2 @@ -399,7 +399,7 @@ FUN_020479FC: ; 0x020479FC add r6, r1, #0x0 cmp r4, #0x4 blt _02047A0C - bl ErrorHandling + bl GF_AssertFail _02047A0C: lsl r0, r4, #0x2 add r0, r5, r0 @@ -408,7 +408,7 @@ _02047A0C: bl AddMonToParty cmp r0, #0x0 bne _02047A20 - bl ErrorHandling + bl GF_AssertFail _02047A20: pop {r4-r6, pc} .balign 4 @@ -421,7 +421,7 @@ FUN_02047A24: ; 0x02047A24 add r6, r1, #0x0 cmp r4, #0x4 blt _02047A34 - bl ErrorHandling + bl GF_AssertFail _02047A34: lsl r1, r4, #0x2 add r1, r5, r1 @@ -439,7 +439,7 @@ FUN_02047A44: ; 0x02047A44 add r6, r1, #0x0 cmp r4, #0x4 blt _02047A54 - bl ErrorHandling + bl GF_AssertFail _02047A54: lsl r1, r4, #0x2 add r1, r5, r1 @@ -455,11 +455,11 @@ FUN_02047A64: ; 0x02047A64 add r2, r0, r2 mov r0, #0x46 lsl r0, r0, #0x2 - ldr r3, _02047A74 ; =FUN_02029F9C + ldr r3, _02047A74 ; =Chatot_copy ldr r0, [r2, r0] bx r3 nop -_02047A74: .word FUN_02029F9C +_02047A74: .word Chatot_copy thumb_func_start FUN_02047A78 FUN_02047A78: ; 0x02047A78 @@ -480,7 +480,7 @@ FUN_02047A78: ; 0x02047A78 bl Sav2_Pokedex_get str r0, [sp, #0x4] ldr r0, [r4, #0xc] - bl FUN_02029EF8 + bl Sav2_Chatot_get str r0, [sp, #0x8] ldr r0, [r4, #0xc] bl Sav2_PlayerData_GetOptionsAddr @@ -628,7 +628,7 @@ FUN_02047BC0: ; 0x02047BC0 str r0, [sp, #0xc] ldr r0, [sp, #0x0] ldr r0, [r0, #0xc] - bl FUN_02029EF8 + bl Sav2_Chatot_get str r0, [sp, #0x8] ldr r0, [sp, #0x0] ldr r0, [r0, #0xc] @@ -795,7 +795,7 @@ FUN_02047D48: ; 0x02047D48 str r0, [sp, #0x18] ldr r0, [sp, #0x0] ldr r0, [r0, #0xc] - bl FUN_02029EF8 + bl Sav2_Chatot_get str r0, [sp, #0x14] ldr r0, [sp, #0x0] ldr r0, [r0, #0xc] @@ -1144,7 +1144,7 @@ _02048054: ldr r0, [r0, r1] pop {r3-r5, pc} _02048060: - bl ErrorHandling + bl GF_AssertFail mov r0, #0xc pop {r3-r5, pc} .balign 4 diff --git a/arm9/asm/unk_02048120.s b/arm9/asm/unk_02048120.s index 6f303045..780c4833 100644 --- a/arm9/asm/unk_02048120.s +++ b/arm9/asm/unk_02048120.s @@ -49,7 +49,7 @@ FUN_02048120: ; 0x02048120 mov r1, #0x6 mov r2, #0x0 lsl r3, r3, #0x4 - bl FUN_02006930 + bl GfGfxLoader_GXLoadPal add sp, #0x8 pop {r4, pc} .balign 4 @@ -67,7 +67,7 @@ FUN_02048164: ; 0x02048164 bl AllocFromHeap add r4, r0, #0x0 bne _0204817A - bl ErrorHandling + bl GF_AssertFail _0204817A: add r0, r4, #0x0 mov r1, #0x0 @@ -209,7 +209,7 @@ _02048298: add r0, r4, #0x0 add r0, #0xc mov r1, #0x0 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, [r4, #0x0] add r0, r0, #0x1 str r0, [r4, #0x0] @@ -263,7 +263,7 @@ FUN_020482F4: ; 0x020482F4 add r0, r5, #0x0 add r0, #0xc mov r1, #0x0 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, [r5, #0x1c] ldr r1, [sp, #0x10] add r2, r6, #0x0 diff --git a/arm9/asm/unk_020484A8.s b/arm9/asm/unk_020484A8.s index 4750c7ea..929f1efa 100644 --- a/arm9/asm/unk_020484A8.s +++ b/arm9/asm/unk_020484A8.s @@ -343,7 +343,7 @@ FUN_02048764: ; 0x02048764 str r0, [r1, #0x30] add r1, #0x1c add r0, r1, #0x0 - bl FUN_0201901C + bl InitWindow ldr r0, _020487D4 ; =UNK_020F46B0 bl GX_SetBanks ldr r2, _020487D8 ; =0x04000304 diff --git a/arm9/asm/unk_02048904.s b/arm9/asm/unk_02048904.s index 1fcababe..f926f722 100644 --- a/arm9/asm/unk_02048904.s +++ b/arm9/asm/unk_02048904.s @@ -140,7 +140,7 @@ FUN_020489DC: ; 0x020489DC ldr r0, [r4, #0x6c] cmp r0, #0x5 blt _020489EA - bl ErrorHandling + bl GF_AssertFail _020489EA: ldr r0, [r4, #0x70] ldr r0, [r0, #0x0] @@ -226,7 +226,7 @@ _02048A82: bl MapHeader_GetCameraType cmp r6, r0 beq _02048AB4 - bl ErrorHandling + bl GF_AssertFail b _02048AB4 _02048AA6: add r0, r7, #0x0 @@ -341,7 +341,7 @@ FUN_02048B90: ; 0x02048B90 ldr r0, [r4, #0x58] cmp r0, #0x0 beq _02048BA2 - bl ErrorHandling + bl GF_AssertFail _02048BA2: ldr r0, [r4, #0x1c] ldr r1, [r4, #0x28] @@ -368,7 +368,7 @@ _02048BD8: ldr r0, [r4, #0x6c] cmp r0, #0x5 blt _02048BE2 - bl ErrorHandling + bl GF_AssertFail _02048BE2: ldr r0, [r4, #0x6c] ldr r1, _02048C28 ; =UNK_020F46E0 @@ -413,7 +413,7 @@ FUN_02048C2C: ; 0x02048C2C ldr r0, [r4, #0x58] cmp r0, #0x0 bne _02048C3A - bl ErrorHandling + bl GF_AssertFail _02048C3A: mov r0, #0x0 str r0, [r4, #0x58] @@ -1064,7 +1064,7 @@ FUN_02049160: ; 0x02049160 bl FUN_0203739C cmp r0, #0x0 beq _02049186 - bl ErrorHandling + bl GF_AssertFail pop {r3-r7, pc} _02049186: mov r0, #0x0 @@ -1431,7 +1431,7 @@ FUN_02049430: ; 0x02049430 bl FUN_0203739C cmp r0, #0x0 bne _02049452 - bl ErrorHandling + bl GF_AssertFail pop {r4-r6, pc} _02049452: ldr r0, [r5, #0x38] @@ -1561,7 +1561,7 @@ _0204954A: bl FUN_020637E0 b _0204955A _02049556: - bl ErrorHandling + bl GF_AssertFail _0204955A: add r0, r7, #0x0 bl FUN_020495B0 @@ -1682,7 +1682,7 @@ FUN_0204961C: ; 0x0204961C bl FUN_0203739C cmp r0, #0x0 bne _0204963E - bl ErrorHandling + bl GF_AssertFail pop {r4-r6, pc} _0204963E: ldr r2, [r6, #0x4] @@ -1883,11 +1883,11 @@ _020497A4: sub r4, r0, #0x6 cmp r6, #0x0 bge _020497D4 - bl ErrorHandling + bl GF_AssertFail _020497D4: cmp r4, #0x0 bge _020497DC - bl ErrorHandling + bl GF_AssertFail _020497DC: lsr r2, r6, #0x1f lsl r1, r6, #0x1f @@ -2395,7 +2395,7 @@ _02049BF4: ldr r0, _02049C08 ; =FUN_02049ACC pop {r3, pc} _02049BFC: - bl ErrorHandling + bl GF_AssertFail mov r0, #0x0 pop {r3, pc} .balign 4 @@ -2502,7 +2502,7 @@ FUN_02049CB0: ; 0x02049CB0 bl FUN_0203739C cmp r0, #0x0 beq _02049CD6 - bl ErrorHandling + bl GF_AssertFail pop {r3-r7, pc} _02049CD6: mov r0, #0x0 diff --git a/arm9/asm/unk_0204A368.s b/arm9/asm/unk_0204A368.s index 6a4e5e9b..f1f19746 100644 --- a/arm9/asm/unk_0204A368.s +++ b/arm9/asm/unk_0204A368.s @@ -160,7 +160,7 @@ _0204A478: _0204A482: cmp r4, #0x10 blo _0204A48A - bl ErrorHandling + bl GF_AssertFail _0204A48A: lsl r0, r4, #0x1 strh r5, [r6, r0] diff --git a/arm9/asm/unk_0204A498.s b/arm9/asm/unk_0204A498.s index 4a255af1..67863650 100644 --- a/arm9/asm/unk_0204A498.s +++ b/arm9/asm/unk_0204A498.s @@ -295,7 +295,7 @@ _0204A69C: str r1, [r0, #0x0] pop {r3, pc} _0204A6A6: - bl ErrorHandling + bl GF_AssertFail pop {r3, pc} .balign 4 _0204A6AC: .word UNK_020F4708 @@ -404,7 +404,7 @@ _0204A754: blt _0204A768 cmp r4, #0x0 bne _0204A76A - bl ErrorHandling + bl GF_AssertFail b _0204A76A _0204A768: mov r4, #0x0 @@ -542,7 +542,7 @@ FUN_0204A840: ; 0x0204A840 cmp r7, #0x0 bge _0204A868 _0204A864: - bl ErrorHandling + bl GF_AssertFail _0204A868: lsl r0, r6, #0x10 str r0, [r5, #0x0] diff --git a/arm9/asm/unk_0204AF24.s b/arm9/asm/unk_0204AF24.s index e6593c72..fb084cbc 100644 --- a/arm9/asm/unk_0204AF24.s +++ b/arm9/asm/unk_0204AF24.s @@ -26,7 +26,7 @@ FUN_0204AF3C: ; 0x0204AF3C bl FUN_0203739C cmp r0, #0x0 bne _0204AF54 - bl ErrorHandling + bl GF_AssertFail pop {r3-r5, pc} _0204AF54: add r0, r4, #0x0 @@ -62,7 +62,7 @@ FUN_0204AF84: ; 0x0204AF84 bl FUN_0203739C cmp r0, #0x0 beq _0204AF9C - bl ErrorHandling + bl GF_AssertFail pop {r3-r5, pc} _0204AF9C: add r0, r4, #0x0 @@ -97,7 +97,7 @@ FUN_0204AFC8: ; 0x0204AFC8 bl FUN_0203739C cmp r0, #0x0 bne _0204AFE2 - bl ErrorHandling + bl GF_AssertFail add sp, #0xc pop {r3-r4, pc} _0204AFE2: @@ -130,7 +130,7 @@ FUN_0204B00C: ; 0x0204B00C bl FUN_0203739C cmp r0, #0x0 bne _0204B026 - bl ErrorHandling + bl GF_AssertFail add sp, #0xc pop {r3-r4, pc} _0204B026: diff --git a/arm9/asm/unk_0204B0A0.s b/arm9/asm/unk_0204B0A0.s deleted file mode 100644 index a78c13d0..00000000 --- a/arm9/asm/unk_0204B0A0.s +++ /dev/null @@ -1,302 +0,0 @@ - .include "asm/macros.inc" - .include "global.inc" - - .text - - thumb_func_start FUN_0204B0F8 -FUN_0204B0F8: ; 0x0204B0F8 - push {r4-r5, lr} - sub sp, #0x1c - add r5, r0, #0x0 - ldr r0, [r5, #0xc] - bl Sav2_SysInfo_RTC_get - add r4, r0, #0x0 - ldr r0, [r4, #0x0] - cmp r0, #0x0 - beq _0204B12A - add r0, sp, #0xc - add r1, sp, #0x0 - bl GF_RTC_CopyDateTime - add r0, r5, #0x0 - add r1, r4, #0x0 - add r2, sp, #0xc - bl FUN_0204B130 - add r0, r5, #0x0 - add r1, r4, #0x0 - add r2, sp, #0xc - add r3, sp, #0x0 - bl FUN_0204B158 -_0204B12A: - add sp, #0x1c - pop {r4-r5, pc} - .balign 4 - - thumb_func_start FUN_0204B130 -FUN_0204B130: ; 0x0204B130 - push {r4-r6, lr} - add r6, r0, #0x0 - add r5, r1, #0x0 - add r0, r2, #0x0 - bl RTC_ConvertDateToDay - ldr r1, [r5, #0x20] - add r4, r0, #0x0 - cmp r4, r1 - bhs _0204B148 - str r4, [r5, #0x20] - pop {r4-r6, pc} -_0204B148: - cmp r4, r1 - bls _0204B156 - add r0, r6, #0x0 - sub r1, r4, r1 - bl FUN_0204B1DC - str r4, [r5, #0x20] -_0204B156: - pop {r4-r6, pc} - - thumb_func_start FUN_0204B158 -FUN_0204B158: ; 0x0204B158 - push {r4-r7, lr} - sub sp, #0xc - add r4, r2, #0x0 - str r0, [sp, #0x0] - add r6, r3, #0x0 - add r5, r1, #0x0 - add r0, r4, #0x0 - add r1, r6, #0x0 - bl RTC_ConvertDateTimeToSecond - str r1, [sp, #0x8] - add r1, r5, #0x0 - add r7, r0, #0x0 - add r0, r5, #0x4 - add r1, #0x14 - bl RTC_ConvertDateTimeToSecond - add r2, r1, #0x0 - sub r1, r7, r0 - ldr r1, [sp, #0x8] - sbc r1, r2 - bge _0204B19C - add r2, r5, #0x4 - ldmia r4!, {r0-r1} - stmia r2!, {r0-r1} - ldmia r4!, {r0-r1} - stmia r2!, {r0-r1} - ldmia r6!, {r0-r1} - add r5, #0x14 - stmia r5!, {r0-r1} - ldr r0, [r6, #0x0] - add sp, #0xc - str r0, [r5, #0x0] - pop {r4-r7, pc} -_0204B19C: - ldr r1, [sp, #0x8] - sub r0, r7, r0 - sbc r1, r2 - mov r2, #0x3c - mov r3, #0x0 - str r1, [sp, #0x8] - bl _ll_sdiv - add r7, r0, #0x0 - cmp r7, #0x0 - ble _0204B1D8 - add r0, r5, #0x0 - add r1, r7, #0x0 - bl FUN_02023884 - ldr r0, [sp, #0x0] - add r1, r7, #0x0 - add r2, r6, #0x0 - bl FUN_0204B270 - add r2, r5, #0x4 - ldmia r4!, {r0-r1} - stmia r2!, {r0-r1} - ldmia r4!, {r0-r1} - stmia r2!, {r0-r1} - ldmia r6!, {r0-r1} - add r5, #0x14 - stmia r5!, {r0-r1} - ldr r0, [r6, #0x0] - str r0, [r5, #0x0] -_0204B1D8: - add sp, #0xc - pop {r4-r7, pc} - - thumb_func_start FUN_0204B1DC -FUN_0204B1DC: ; 0x0204B1DC - push {r4-r6, lr} - add r4, r1, #0x0 - add r5, r0, #0x0 - bl ScriptEnvironment_GetSav2Ptr - add r1, r4, #0x0 - bl FUN_02025A60 - add r0, r5, #0x0 - bl FUN_0203959C - ldr r0, [r5, #0xc] - add r1, r4, #0x0 - bl FUN_02060344 - ldr r0, [r5, #0xc] - bl FUN_0202881C - add r1, r4, #0x0 - bl FUN_02028754 - ldr r0, [r5, #0xc] - bl FUN_0202A9B0 - add r6, r0, #0x0 - ldr r0, [r5, #0xc] - bl FUN_0202881C - bl FUN_020287A4 - add r1, r0, #0x0 - add r0, r6, #0x0 - bl FUN_0202A988 - ldr r0, [r5, #0xc] - bl SavArray_PlayerParty_get - add r1, r4, #0x0 - bl Party_UpdatePokerus - ldr r0, [r5, #0xc] - bl SavArray_Flags_get - add r6, r0, #0x0 - bl FUN_0205F594 - cmp r0, r4 - ble _0204B244 - sub r0, r0, r4 - lsl r0, r0, #0x10 - lsr r1, r0, #0x10 - b _0204B246 -_0204B244: - mov r1, #0x0 -_0204B246: - add r0, r6, #0x0 - bl FUN_0205F5A4 - lsl r1, r4, #0x10 - ldr r0, [r5, #0xc] - lsr r1, r1, #0x10 - bl FUN_0205F618 - ldr r0, [r5, #0xc] - bl FUN_0205F668 - ldr r0, [r5, #0xc] - bl FUN_0206007C - ldr r0, [r5, #0xc] - bl FUN_02029AFC - bl FUN_02029C08 - pop {r4-r6, pc} - .balign 4 - - thumb_func_start FUN_0204B270 -FUN_0204B270: ; 0x0204B270 - push {r4-r6, lr} - add r5, r0, #0x0 - add r4, r1, #0x0 - add r6, r2, #0x0 - bl FUN_0204B3D0 - ldr r0, [r5, #0xc] - add r1, r4, #0x0 - bl FUN_0202A9D0 - add r0, r5, #0x0 - bl FUN_0204B33C - add r2, r0, #0x0 - ldr r0, [r5, #0xc] - add r1, r4, #0x0 - bl FUN_02025B60 - ldr r0, [r5, #0xc] - bl FUN_02022504 - ldr r2, [r6, #0x4] - add r1, r4, #0x0 - bl FUN_0202B3C4 - pop {r4-r6, pc} - - thumb_func_start Script_GetTimeOfDay -Script_GetTimeOfDay: ; 0x0204B2A4 - push {r3, lr} - ldr r0, [r0, #0xc] - bl Sav2_SysInfo_RTC_get - ldr r0, [r0, #0x14] - bl GF_RTC_GetTimeOfDayByHour - pop {r3, pc} - - thumb_func_start Script_GetMonth -Script_GetMonth: ; 0x0204B2B4 - push {r3, lr} - ldr r0, [r0, #0xc] - bl Sav2_SysInfo_RTC_get - ldr r0, [r0, #0x8] - pop {r3, pc} - - thumb_func_start Script_GetDay -Script_GetDay: ; 0x0204B2C0 - push {r3, lr} - ldr r0, [r0, #0xc] - bl Sav2_SysInfo_RTC_get - ldr r0, [r0, #0xc] - pop {r3, pc} - - thumb_func_start Script_GetWeekday -Script_GetWeekday: ; 0x0204B2CC - push {r3, lr} - ldr r0, [r0, #0xc] - bl Sav2_SysInfo_RTC_get - ldr r0, [r0, #0x10] - pop {r3, pc} - - thumb_func_start Script_GetHour -Script_GetHour: ; 0x0204B2D8 - push {r3, lr} - ldr r0, [r0, #0xc] - bl Sav2_SysInfo_RTC_get - ldr r0, [r0, #0x14] - pop {r3, pc} - - thumb_func_start Script_GetMinute -Script_GetMinute: ; 0x0204B2E4 - push {r3, lr} - ldr r0, [r0, #0xc] - bl Sav2_SysInfo_RTC_get - ldr r0, [r0, #0x18] - pop {r3, pc} - - thumb_func_start Script_SavRTC_x24toDateTime -Script_SavRTC_x24toDateTime: ; 0x0204B2F0 - push {r3-r5, lr} - ldr r0, [r0, #0xc] - add r5, r1, #0x0 - add r4, r2, #0x0 - bl Sav2_SysInfo_RTC_get - add r3, r0, #0x0 - ldr r2, [r3, #0x24] - ldr r3, [r3, #0x28] - add r0, r5, #0x0 - add r1, r4, #0x0 - bl RTC_ConvertSecondToDateTime - pop {r3-r5, pc} - - thumb_func_start Script_SavRTC_x2CtoDateTime -Script_SavRTC_x2CtoDateTime: ; 0x0204B30C - push {r3-r5, lr} - ldr r0, [r0, #0xc] - add r5, r1, #0x0 - add r4, r2, #0x0 - bl Sav2_SysInfo_RTC_get - add r3, r0, #0x0 - ldr r2, [r3, #0x2c] - ldr r3, [r3, #0x30] - add r0, r5, #0x0 - add r1, r4, #0x0 - bl RTC_ConvertSecondToDateTime - pop {r3-r5, pc} - - thumb_func_start Script_SavRTC_DateTimeTox2C -Script_SavRTC_DateTimeTox2C: ; 0x0204B328 - push {r4, lr} - ldr r0, [r0, #0xc] - bl Sav2_SysInfo_RTC_get - add r4, r0, #0x0 - bl GF_RTC_DateTimeToSec - str r0, [r4, #0x2c] - str r1, [r4, #0x30] - pop {r4, pc} - - thumb_func_start FUN_0204B33C -FUN_0204B33C: ; 0x0204B33C - push {r3, lr} - ldr r0, [r0, #0xc] - bl Sav2_SysInfo_RTC_get - bl FUN_02023874 - pop {r3, pc} - .balign 4 diff --git a/arm9/asm/unk_0204B34C.s b/arm9/asm/unk_0204B34C.s index fe9cc3fd..ff93214d 100644 --- a/arm9/asm/unk_0204B34C.s +++ b/arm9/asm/unk_0204B34C.s @@ -532,7 +532,7 @@ _0204B73A: add r4, r4, #0x1 b _0204B746 _0204B742: - bl ErrorHandling + bl GF_AssertFail _0204B746: add r0, r7, #0x0 add r1, r6, #0x0 @@ -604,7 +604,7 @@ _0204B7C0: add r4, r4, #0x1 b _0204B7CC _0204B7C8: - bl ErrorHandling + bl GF_AssertFail _0204B7CC: ldr r0, [r5, #0x34] add r1, r7, #0x0 diff --git a/arm9/asm/unk_0204B9EC.s b/arm9/asm/unk_0204B9EC.s index 04b6134b..2511f182 100644 --- a/arm9/asm/unk_0204B9EC.s +++ b/arm9/asm/unk_0204B9EC.s @@ -44,7 +44,7 @@ FUN_0204BA1C: ; 0x0204BA1C add r2, r0, #0x0 ldr r0, [r1, #0x40] ldr r1, [r1, #0x44] - bl FUN_020127C0 + bl GF_RTC_TimeDelta mov r2, #0xfa mov r3, #0x0 lsl r2, r2, #0x2 @@ -157,7 +157,7 @@ FUN_0204BAF4: ; 0x0204BAF4 cmp r5, r0 bls _0204BB08 _0204BB04: - bl ErrorHandling + bl GF_AssertFail _0204BB08: mov r3, #0x6 add r0, r4, #0x0 @@ -267,7 +267,7 @@ FUN_0204BBC4: ; 0x0204BBC4 lsr r5, r0, #0x10 cmp r5, #0xa blo _0204BBDE - bl ErrorHandling + bl GF_AssertFail _0204BBDE: add r0, r5, #0x5 str r0, [r4, #0x38] @@ -373,7 +373,7 @@ _0204BC86: lsl r0, r0, #0x10 lsr r0, r0, #0x10 bne _0204BC94 - bl ErrorHandling + bl GF_AssertFail _0204BC94: add r0, r6, #0x0 add r0, #0x14 @@ -405,7 +405,7 @@ _0204BCA4: lsr r0, r0, #0x10 cmp r4, r0 blo _0204BCD8 - bl ErrorHandling + bl GF_AssertFail _0204BCD8: cmp r4, #0x14 bge _0204BCE0 @@ -437,7 +437,7 @@ _0204BD04: add r0, #0x8 cmp r1, #0x6 blt _0204BCE6 - bl ErrorHandling + bl GF_AssertFail mov r0, #0x0 pop {r3-r7, pc} .balign 4 @@ -463,7 +463,7 @@ _0204BD28: strb r1, [r0, #0x0] pop {r4, pc} _0204BD3A: - bl ErrorHandling + bl GF_AssertFail _0204BD3E: pop {r4, pc} diff --git a/arm9/asm/unk_0204C1B4.s b/arm9/asm/unk_0204C1B4.s index 73f9c7a5..6efee84e 100644 --- a/arm9/asm/unk_0204C1B4.s +++ b/arm9/asm/unk_0204C1B4.s @@ -186,7 +186,7 @@ _0204C2F4: mov r4, #0x6 b _0204C36A _0204C302: - bl ErrorHandling + bl GF_AssertFail b _0204C36A _0204C308: ldr r0, [sp, #0x8] @@ -207,7 +207,7 @@ _0204C320: mov r4, #0x6 b _0204C36A _0204C32E: - bl ErrorHandling + bl GF_AssertFail b _0204C36A _0204C334: ldr r0, [sp, #0x8] @@ -229,10 +229,10 @@ _0204C356: bl FUN_02034930 cmp r0, #0x0 bne _0204C36A - bl ErrorHandling + bl GF_AssertFail b _0204C36A _0204C366: - bl ErrorHandling + bl GF_AssertFail _0204C36A: ldr r1, _0204C37C ; =FUN_0204C380 add r0, r7, #0x0 @@ -556,7 +556,7 @@ _0204C5E6: bl FUN_0205ADDC b _0204C5F6 _0204C5F2: - bl ErrorHandling + bl GF_AssertFail _0204C5F6: ldr r0, [r4, #0x4] add r0, r0, #0x1 @@ -926,7 +926,7 @@ _0204C8EA: bl FUN_0205ADDC b _0204C8FC _0204C8F8: - bl ErrorHandling + bl GF_AssertFail _0204C8FC: ldr r0, [r4, #0x4] add r0, r0, #0x1 diff --git a/arm9/asm/unk_0204CB20.s b/arm9/asm/unk_0204CB20.s index 52fbcfa7..a0dc5ce2 100644 --- a/arm9/asm/unk_0204CB20.s +++ b/arm9/asm/unk_0204CB20.s @@ -360,7 +360,7 @@ FUN_0204CD78: ; 0x0204CD78 bl FUN_02064520 b _0204CDA2 _0204CD9E: - bl ErrorHandling + bl GF_AssertFail _0204CDA2: ldr r0, _0204CDB0 ; =UNK_021C5A68 mov r1, #0x0 @@ -1129,7 +1129,7 @@ _0204D37C: bl FUN_02055068 add r7, r0, #0x0 bne _0204D3B2 - bl ErrorHandling + bl GF_AssertFail _0204D3B2: ldr r0, _0204D430 ; =UNK_021C5A68 ldr r0, [r0, #0x0] @@ -1503,11 +1503,11 @@ FUN_0204D67C: ; 0x0204D67C beq _0204D6B8 cmp r1, #0x1 beq _0204D692 - bl ErrorHandling + bl GF_AssertFail _0204D692: cmp r5, #0x8 blt _0204D69A - bl ErrorHandling + bl GF_AssertFail _0204D69A: ldrb r0, [r4, #0x0] mov r1, #0x1 @@ -1519,7 +1519,7 @@ _0204D69A: _0204D6A8: cmp r1, #0x0 bne _0204D6B0 - bl ErrorHandling + bl GF_AssertFail _0204D6B0: ldrb r1, [r4, #0x0] add r0, r5, #0x0 @@ -1773,7 +1773,7 @@ FUN_0204D870: ; 0x0204D870 cmp r4, #0x5 str r0, [r2, #0x0] blt _0204D88E - bl ErrorHandling + bl GF_AssertFail _0204D88E: lsl r1, r4, #0x2 add r0, sp, #0x0 @@ -2180,7 +2180,7 @@ _0204DB5A: bl FUN_0204A6B4 cmp r0, #0x0 beq _0204DBBC - bl ErrorHandling + bl GF_AssertFail _0204DBBC: pop {r3-r7, pc} nop @@ -4023,7 +4023,7 @@ FUN_0204E96C: ; 0x0204E96C ldrb r0, [r5, #0x1] cmp r0, #0x8 blo _0204E988 - bl ErrorHandling + bl GF_AssertFail _0204E988: ldrb r0, [r5, #0x0] cmp r0, #0x4 @@ -5605,7 +5605,7 @@ _0204F62A: mov r0, #0x2 pop {r3, pc} _0204F632: - bl ErrorHandling + bl GF_AssertFail mov r0, #0x2 pop {r3, pc} .balign 4 @@ -6052,11 +6052,11 @@ _0204F96E: add r5, r0, #0x0 cmp r4, #0x0 bne _0204F988 - bl ErrorHandling + bl GF_AssertFail _0204F988: cmp r5, #0x0 bne _0204F990 - bl ErrorHandling + bl GF_AssertFail _0204F990: add r0, r4, #0x0 add r1, r5, #0x0 @@ -6150,7 +6150,7 @@ _0204FA26: strb r2, [r1, r0] pop {r3-r7, pc} _0204FA4C: - bl ErrorHandling + bl GF_AssertFail add sp, #0x8 pop {r3-r7, pc} .balign 4 diff --git a/arm9/asm/unk_0204FBA8.s b/arm9/asm/unk_0204FBA8.s index 32c2e3c1..f1101a82 100644 --- a/arm9/asm/unk_0204FBA8.s +++ b/arm9/asm/unk_0204FBA8.s @@ -2093,7 +2093,7 @@ FUN_02050BF8: ; 0x02050BF8 add r4, r0, #0x0 cmp r4, #0x4 blt _02050C04 - bl ErrorHandling + bl GF_AssertFail _02050C04: ldr r0, _02050C10 ; =UNK_021C5A6C ldr r1, [r0, #0x0] diff --git a/arm9/asm/unk_02050E48.s b/arm9/asm/unk_02050E48.s index c8a8a153..fbe0aed9 100644 --- a/arm9/asm/unk_02050E48.s +++ b/arm9/asm/unk_02050E48.s @@ -1255,7 +1255,7 @@ _02051836: bl FUN_02019178 add r0, r5, #0x0 add r0, #0x14 - bl FUN_0201901C + bl InitWindow _02051846: add r0, r5, #0x0 add r0, #0x54 @@ -1267,7 +1267,7 @@ _02051846: bl FUN_02019178 add r0, r5, #0x0 add r0, #0x54 - bl FUN_0201901C + bl InitWindow _02051862: add r0, r5, #0x0 add r0, #0x64 @@ -1279,7 +1279,7 @@ _02051862: bl FUN_02019178 add r5, #0x64 add r0, r5, #0x0 - bl FUN_0201901C + bl InitWindow _0205187E: pop {r3-r5, pc} @@ -1325,15 +1325,15 @@ _0205188E: str r0, [r4, #0x10] add r0, r4, #0x0 add r0, #0x14 - bl FUN_0201901C + bl InitWindow add r0, r4, #0x0 add r0, #0x54 - bl FUN_0201901C + bl InitWindow add r0, r4, #0x0 add r0, #0x64 - bl FUN_0201901C + bl InitWindow mov r0, #0xb - bl FUN_02013690 + bl ListMenuCursorNew str r0, [r4, #0x78] bl FUN_02033534 add r1, r4, #0x0 @@ -1442,7 +1442,7 @@ _020519BA: ldr r0, [r4, #0x10] bl String_dtor ldr r0, [r4, #0x78] - bl FUN_020136C0 + bl DestroyListMenuCursorObj add r0, r4, #0x0 mov r1, #0x1 bl FUN_02051810 @@ -1711,7 +1711,7 @@ FUN_02051B68: ; 0x02051B68 bl FUN_0200CB00 ldr r0, [sp, #0x20] mov r1, #0xf - bl FUN_02019620 + bl FillWindowPixelBuffer mov r7, #0x0 add r6, r7, #0x0 add r4, r7, #0x0 @@ -1769,14 +1769,14 @@ _02051C34: lsr r0, r0, #0x10 str r0, [sp, #0x4] ldr r0, [sp, #0x20] - bl FUN_020196F4 + bl FillWindowPixelRect ldr r3, [sp, #0x14] add r1, r5, #0x0 ldr r0, [r5, #0x78] add r1, #0x54 mov r2, #0x0 lsl r3, r3, #0x4 - bl FUN_020136F8 + bl ListMenuUpdateCursorObj add r0, r5, #0x0 add r0, #0x54 mov r1, #0x0 @@ -1837,7 +1837,7 @@ FUN_02051C88: ; 0x02051C88 bl FUN_0200CB00 add r0, r7, #0x0 mov r1, #0xf - bl FUN_02019620 + bl FillWindowPixelBuffer mov r6, #0x0 add r4, r6, #0x0 _02051CE0: @@ -1880,13 +1880,13 @@ _02051D0A: str r0, [sp, #0x4] add r0, r7, #0x0 add r3, r2, #0x0 - bl FUN_020196F4 + bl FillWindowPixelRect ldr r3, [sp, #0x14] ldr r0, [r5, #0x78] ldr r1, [r5, #0x7c] mov r2, #0x0 lsl r3, r3, #0x4 - bl FUN_020136F8 + bl ListMenuUpdateCursorObj ldr r0, [r5, #0x7c] mov r1, #0x0 mov r2, #0x1 @@ -1987,14 +1987,14 @@ _02051DE0: lsr r1, r1, #0x10 str r1, [sp, #0x4] mov r1, #0xf - bl FUN_020196F4 + bl FillWindowPixelRect mov r3, #0x81 ldrsb r3, [r4, r3] ldr r0, [r4, #0x78] ldr r1, [r4, #0x7c] mov r2, #0x0 lsl r3, r3, #0x4 - bl FUN_020136F8 + bl ListMenuUpdateCursorObj ldr r0, [r4, #0x7c] bl FUN_02019548 mov r0, #0x0 diff --git a/arm9/asm/unk_020520AC.s b/arm9/asm/unk_020520AC.s index d29ed837..8ff9a9a1 100644 --- a/arm9/asm/unk_020520AC.s +++ b/arm9/asm/unk_020520AC.s @@ -125,7 +125,7 @@ FUN_020520AC: ; 0x020520AC push {r3-r5, lr} add r4, r0, #0x0 bne _020520B6 - bl ErrorHandling + bl GF_AssertFail _020520B6: ldr r0, [r4, #0x78] cmp r0, #0x0 @@ -814,7 +814,7 @@ _020525F4: mov r0, #0x5 pop {r4-r6, pc} _020525F8: - bl ErrorHandling + bl GF_AssertFail mov r0, #0x0 pop {r4-r6, pc} .balign 4 @@ -1144,7 +1144,7 @@ FUN_02052814: ; 0x02052814 mvn r0, r0 cmp r4, r0 bne _02052836 - bl ErrorHandling + bl GF_AssertFail b _02052836 _02052834: add r5, r4, #0x0 @@ -1516,7 +1516,7 @@ _02052AF2: ldr r0, [r0, r1] pop {r4-r6, pc} _02052AFA: - bl ErrorHandling + bl GF_AssertFail mov r0, #0x28 pop {r4-r6, pc} nop diff --git a/arm9/asm/unk_02052EE8.s b/arm9/asm/unk_02052EE8.s index 3d8839c2..0c163fd8 100644 --- a/arm9/asm/unk_02052EE8.s +++ b/arm9/asm/unk_02052EE8.s @@ -300,7 +300,7 @@ FUN_02053104: ; 0x02053104 ldr r0, [r0, r5] cmp r3, r0 beq _02053120 - bl ErrorHandling + bl GF_AssertFail _02053120: pop {r4-r6, pc} nop @@ -426,7 +426,7 @@ _02053206: bl FUN_02058060 add r5, r0, #0x0 bne _02053216 - bl ErrorHandling + bl GF_AssertFail _02053216: ldrb r0, [r4, #0xd] cmp r0, #0x4 @@ -761,7 +761,7 @@ _020534AC: bl FUN_02058060 add r4, r0, #0x0 bne _020534BC - bl ErrorHandling + bl GF_AssertFail _020534BC: add r0, r4, #0x0 mov r1, #0x1 @@ -787,7 +787,7 @@ FUN_020534DC: ; 0x020534DC bl FUN_02058060 add r4, r0, #0x0 bne _020534F0 - bl ErrorHandling + bl GF_AssertFail _020534F0: add r0, r4, #0x0 bl FUN_0205AD98 @@ -811,7 +811,7 @@ _0205350E: bl FUN_02058060 add r4, r0, #0x0 bne _02053524 - bl ErrorHandling + bl GF_AssertFail _02053524: ldrb r1, [r5, #0x8] add r0, r4, #0x0 diff --git a/arm9/asm/unk_0205363C.s b/arm9/asm/unk_0205363C.s index 3b13ed24..aa73064c 100644 --- a/arm9/asm/unk_0205363C.s +++ b/arm9/asm/unk_0205363C.s @@ -148,7 +148,7 @@ _020536EE: ldr r0, [r0, r1] pop {r4, pc} _020536F8: - bl ErrorHandling + bl GF_AssertFail mov r0, #0x0 _020536FE: pop {r4, pc} @@ -165,7 +165,7 @@ FUN_02053708: ; 0x02053708 mov r1, #0x7 add r2, sp, #0x0 add r3, r5, #0x0 - bl FUN_02006C08 + bl GfGfxLoader_GetPlttData mov r1, #0x9 add r4, r0, #0x0 add r0, r5, #0x0 diff --git a/arm9/asm/unk_02053750.s b/arm9/asm/unk_02053750.s index 6ab54142..38f594ef 100644 --- a/arm9/asm/unk_02053750.s +++ b/arm9/asm/unk_02053750.s @@ -1,7 +1,7 @@ .include "asm/macros.inc" .include "global.inc" - .extern UNK_020FFA38 + .extern FX_SinCosTable_ .section .rodata .global UNK_020F5C04 @@ -1222,7 +1222,7 @@ FUN_02054008: ; 0x02054008 bl FUN_0201FE94 add r4, r0, #0x0 bne _02054064 - bl ErrorHandling + bl GF_AssertFail _02054064: add r0, r4, #0x0 add sp, #0x30 @@ -1291,7 +1291,7 @@ FUN_020540C8: ; 0x020540C8 bl FUN_0201FFC8 ldr r1, [r4, #0x0] mov r0, #0x4 - bl FUN_02016A8C + bl FreeToHeapExplicit mov r0, #0x0 str r0, [r4, #0x0] _020540E4: @@ -1320,7 +1320,7 @@ FUN_020540E8: ; 0x020540E8 ldr r1, [sp, #0x4] asr r0, r0, #0x4 lsl r5, r0, #0x2 - ldr r0, _02054164 ; =UNK_020FFA38 + ldr r0, _02054164 ; =FX_SinCosTable_ ldrsh r5, [r0, r5] asr r0, r5, #0x1f lsr r6, r5, #0x10 @@ -1363,7 +1363,7 @@ _0205415E: add sp, #0xc pop {r3-r6, pc} .balign 4 -_02054164: .word UNK_020FFA38 +_02054164: .word FX_SinCosTable_ thumb_func_start FUN_02054168 FUN_02054168: ; 0x02054168 @@ -1408,7 +1408,7 @@ FUN_020541A4: ; 0x020541A4 bl FUN_0201FFC8 ldr r1, [r4, #0x0] mov r0, #0x4 - bl FUN_02016A8C + bl FreeToHeapExplicit mov r0, #0x0 str r0, [r4, #0x0] _020541C0: @@ -1481,7 +1481,7 @@ FUN_02054228: ; 0x02054228 bl FUN_0201FFC8 ldr r1, [r4, #0x0] mov r0, #0x4 - bl FUN_02016A8C + bl FreeToHeapExplicit mov r0, #0x0 str r0, [r4, #0x0] _02054244: @@ -1581,7 +1581,7 @@ FUN_020542E8: ; 0x020542E8 bl FUN_0201FFC8 ldr r1, [r4, #0x0] mov r0, #0x4 - bl FUN_02016A8C + bl FreeToHeapExplicit mov r0, #0x0 str r0, [r4, #0x0] _02054304: @@ -1749,7 +1749,7 @@ FUN_0205442C: ; 0x0205442C bl FUN_0201FFC8 ldr r1, [r4, #0x0] mov r0, #0x4 - bl FUN_02016A8C + bl FreeToHeapExplicit mov r0, #0x0 str r0, [r4, #0x0] _02054448: @@ -1801,7 +1801,7 @@ _0205447E: ldr r6, [sp, #0x4] asr r0, r0, #0x4 lsl r1, r0, #0x2 - ldr r0, _02054500 ; =UNK_020FFA38 + ldr r0, _02054500 ; =FX_SinCosTable_ ldrsh r0, [r0, r1] asr r3, r0, #0x1f lsr r1, r0, #0xf @@ -1851,7 +1851,7 @@ _020544F8: add sp, #0xc pop {r4-r7, pc} nop -_02054500: .word UNK_020FFA38 +_02054500: .word FX_SinCosTable_ _02054504: .word 0x00000666 thumb_func_start FUN_02054508 @@ -1900,7 +1900,7 @@ FUN_0205454C: ; 0x0205454C bl FUN_0201FFC8 ldr r1, [r4, #0x0] mov r0, #0x4 - bl FUN_02016A8C + bl FreeToHeapExplicit mov r0, #0x0 str r0, [r4, #0x0] _02054568: diff --git a/arm9/asm/unk_02055068.s b/arm9/asm/unk_02055068.s index 7db8d152..61561cbe 100644 --- a/arm9/asm/unk_02055068.s +++ b/arm9/asm/unk_02055068.s @@ -82,7 +82,7 @@ FUN_02055108: ; 0x02055108 bl FUN_020553A0 add r4, r0, #0x0 bne _02055118 - bl ErrorHandling + bl GF_AssertFail _02055118: add r0, r4, #0x0 bl FUN_02058578 @@ -139,7 +139,7 @@ FUN_0205517C: ; 0x0205517C bl AllocFromHeap add r4, r0, #0x0 bne _0205518E - bl ErrorHandling + bl GF_AssertFail _0205518E: add r0, r4, #0x0 mov r1, #0x0 @@ -208,7 +208,7 @@ FUN_02055208: ; 0x02055208 bl FUN_0205753C add r5, r0, #0x0 bne _02055228 - bl ErrorHandling + bl GF_AssertFail _02055228: add r0, r5, #0x0 mov r1, #0xff @@ -300,7 +300,7 @@ FUN_020552E4: ; 0x020552E4 bl FUN_020552A4 add r4, r0, #0x0 bne _020552F2 - bl ErrorHandling + bl GF_AssertFail _020552F2: add r0, r4, #0x0 pop {r4, pc} @@ -432,7 +432,7 @@ FUN_020553A8: ; 0x020553A8 add r5, r0, #0x0 cmp r4, #0x3 blt _020553B6 - bl ErrorHandling + bl GF_AssertFail _020553B6: add r0, r5, #0x0 add r1, r4, #0x0 @@ -446,7 +446,7 @@ FUN_020553C4: ; 0x020553C4 push {r4, lr} add r4, r0, #0x0 bne _020553CE - bl ErrorHandling + bl GF_AssertFail _020553CE: ldr r0, [r4, #0x18] pop {r4, pc} @@ -884,7 +884,7 @@ _0205563A: mov r0, #0xc9 pop {r3, pc} _0205563E: - bl ErrorHandling + bl GF_AssertFail mov r0, #0x0 pop {r3, pc} .balign 4 @@ -937,7 +937,7 @@ _0205568A: lsl r0, r0, #0x8 pop {r3, pc} _02055690: - bl ErrorHandling + bl GF_AssertFail mov r0, #0x1 pop {r3, pc} diff --git a/arm9/asm/unk_020557F4.s b/arm9/asm/unk_020557F4.s index c2c01f1c..0a5c6e31 100644 --- a/arm9/asm/unk_020557F4.s +++ b/arm9/asm/unk_020557F4.s @@ -1157,7 +1157,7 @@ _0205614C: add sp, #0xc pop {r4-r7, pc} _02056162: - bl ErrorHandling + bl GF_AssertFail add sp, #0xc pop {r4-r7, pc} .balign 4 @@ -1248,7 +1248,7 @@ _02056204: mov r0, #0x2 pop {r3, pc} _02056208: - bl ErrorHandling + bl GF_AssertFail mov r0, #0x0 pop {r3, pc} @@ -1709,7 +1709,7 @@ _0205657E: mov r0, #0x1 pop {r3, pc} _02056582: - bl ErrorHandling + bl GF_AssertFail mov r0, #0x0 pop {r3, pc} .balign 4 @@ -2096,7 +2096,7 @@ _0205689A: mov r0, #0x1 pop {r3, pc} _0205689E: - bl ErrorHandling + bl GF_AssertFail mov r0, #0x0 pop {r3, pc} .balign 4 @@ -3227,7 +3227,7 @@ _02057172: b _0205718E _02057188: mov r4, #0x0 - bl ErrorHandling + bl GF_AssertFail _0205718E: add r0, r4, #0x0 pop {r3-r5, pc} diff --git a/arm9/asm/unk_02057380.s b/arm9/asm/unk_02057380.s index c6a25876..adfa2f07 100644 --- a/arm9/asm/unk_02057380.s +++ b/arm9/asm/unk_02057380.s @@ -33,10 +33,10 @@ FUN_020573AC: ; 0x020573AC bl FUN_020583CC add r1, r0, #0x0 mov r0, #0xb - bl FUN_02016A8C + bl FreeToHeapExplicit mov r0, #0xb add r1, r4, #0x0 - bl FUN_02016A8C + bl FreeToHeapExplicit pop {r4, pc} .balign 4 @@ -110,7 +110,7 @@ FUN_02057444: ; 0x02057444 bl AllocFromHeap add r5, r0, #0x0 bne _0205745A - bl ErrorHandling + bl GF_AssertFail _0205745A: mov r2, #0x4b add r0, r5, #0x0 @@ -126,7 +126,7 @@ _0205745A: bl AllocFromHeap add r4, r0, #0x0 bne _0205747E - bl ErrorHandling + bl GF_AssertFail _0205747E: add r0, r4, #0x0 mov r1, #0x0 @@ -455,7 +455,7 @@ FUN_02057750: ; 0x02057750 bl FUN_020587E0 cmp r0, #0x1 beq _02057760 - bl ErrorHandling + bl GF_AssertFail _02057760: add r0, r5, #0x0 mov r4, #0x0 @@ -497,7 +497,7 @@ FUN_020577A8: ; 0x020577A8 bl FUN_020587E0 cmp r0, #0x1 beq _020577B8 - bl ErrorHandling + bl GF_AssertFail _020577B8: add r0, r5, #0x0 mov r4, #0x0 @@ -559,7 +559,7 @@ _02057820: add r5, #0x50 cmp r4, #0x0 bgt _02057836 - bl ErrorHandling + bl GF_AssertFail _02057836: add r0, r6, #0x0 add r1, sp, #0x0 @@ -597,7 +597,7 @@ _02057866: bl FUN_02057C64 add r4, r0, #0x0 bne _0205787C - bl ErrorHandling + bl GF_AssertFail _0205787C: add r0, r4, #0x0 add r1, r5, #0x0 @@ -961,7 +961,7 @@ FUN_02057BAC: ; 0x02057BAC str r1, [sp, #0x0] cmp r5, #0x0 bne _02057BC0 - bl ErrorHandling + bl GF_AssertFail _02057BC0: lsl r0, r5, #0x5 str r0, [sp, #0x4] @@ -970,7 +970,7 @@ _02057BC0: bl AllocFromHeapAtEnd add r6, r0, #0x0 bne _02057BD4 - bl ErrorHandling + bl GF_AssertFail _02057BD4: ldr r2, [sp, #0x4] add r0, r6, #0x0 @@ -981,7 +981,7 @@ _02057BD4: bl AllocFromHeapAtEnd add r4, r0, #0x0 bne _02057BEE - bl ErrorHandling + bl GF_AssertFail _02057BEE: ldr r0, [sp, #0x0] str r0, [r4, #0x0] @@ -1023,7 +1023,7 @@ _02057C30: bl FUN_02057494 cmp r0, #0x0 bne _02057C42 - bl ErrorHandling + bl GF_AssertFail _02057C42: ldr r0, [r6, #0x0] add r4, #0x20 @@ -1035,10 +1035,10 @@ _02057C42: blt _02057C1A ldr r1, [r5, #0x10] mov r0, #0xb - bl FUN_02016A8C + bl FreeToHeapExplicit mov r0, #0xb add r1, r5, #0x0 - bl FUN_02016A8C + bl FreeToHeapExplicit pop {r3-r7, pc} thumb_func_start FUN_02057C64 @@ -1135,7 +1135,7 @@ _02057D0A: bl FUN_0200CA44 add r5, r0, #0x0 bne _02057D1C - bl ErrorHandling + bl GF_AssertFail _02057D1C: add r0, r4, #0x0 add r1, r5, #0x0 @@ -1512,7 +1512,7 @@ FUN_02058060: ; 0x02058060 add r6, r1, #0x0 cmp r5, #0x0 bne _0205806E - bl ErrorHandling + bl GF_AssertFail _0205806E: add r0, r5, #0x0 bl FUN_02058368 @@ -1745,7 +1745,7 @@ FUN_02058214: ; 0x02058214 bl FUN_020589CC cmp r0, #0x1 beq _02058228 - bl ErrorHandling + bl GF_AssertFail _02058228: add r0, r5, #0x0 mov r1, #0x0 @@ -1776,7 +1776,7 @@ FUN_02058258: ; 0x02058258 bl FUN_02058CE0 cmp r0, #0x1 beq _0205826E - bl ErrorHandling + bl GF_AssertFail _0205826E: add r0, r5, #0x0 mov r1, #0x1 @@ -2046,7 +2046,7 @@ FUN_020583F4: ; 0x020583F4 ldr r0, [r4, #0x14] cmp r0, #0x0 bne _02058402 - bl ErrorHandling + bl GF_AssertFail _02058402: ldr r0, [r4, #0x14] pop {r4, pc} @@ -2279,7 +2279,7 @@ _02058504: str r1, [r0, #0x40] pop {r3, pc} _02058508: - bl ErrorHandling + bl GF_AssertFail pop {r3, pc} .balign 4 @@ -2303,7 +2303,7 @@ _02058528: ldr r0, [r0, #0x40] pop {r3, pc} _0205852C: - bl ErrorHandling + bl GF_AssertFail mov r0, #0x0 pop {r3, pc} @@ -2392,7 +2392,7 @@ FUN_0205858C: ; 0x0205858C add r4, r0, #0x0 cmp r5, #0x10 ble _0205859A - bl ErrorHandling + bl GF_AssertFail _0205859A: add r0, r4, #0x0 bl FUN_020585B0 @@ -2416,7 +2416,7 @@ FUN_020585B4: ; 0x020585B4 add r4, r0, #0x0 cmp r5, #0x10 ble _020585C2 - bl ErrorHandling + bl GF_AssertFail _020585C2: add r0, r4, #0x0 bl FUN_020585D8 @@ -2440,7 +2440,7 @@ FUN_020585DC: ; 0x020585DC add r4, r0, #0x0 cmp r5, #0x10 ble _020585EA - bl ErrorHandling + bl GF_AssertFail _020585EA: add r0, r4, #0x0 bl FUN_02058600 @@ -2464,7 +2464,7 @@ FUN_02058604: ; 0x02058604 add r4, r0, #0x0 cmp r5, #0x20 ble _02058612 - bl ErrorHandling + bl GF_AssertFail _02058612: add r0, r4, #0x0 bl FUN_02058628 @@ -2712,7 +2712,7 @@ FUN_02058750: ; 0x02058750 bl FUN_020589CC cmp r0, #0x1 beq _02058760 - bl ErrorHandling + bl GF_AssertFail _02058760: add r0, r4, #0x0 bl FUN_02058490 @@ -3583,7 +3583,7 @@ _02058C4C: strh r1, [r0, #0x12] pop {r3, pc} _02058C50: - bl ErrorHandling + bl GF_AssertFail pop {r3, pc} .balign 4 @@ -3607,7 +3607,7 @@ _02058C70: ldrh r0, [r0, #0x12] pop {r3, pc} _02058C74: - bl ErrorHandling + bl GF_AssertFail mov r0, #0x0 pop {r3, pc} @@ -3718,7 +3718,7 @@ FUN_02058CFC: ; 0x02058CFC bl FUN_02058CE0 cmp r0, #0x1 beq _02058D0C - bl ErrorHandling + bl GF_AssertFail _02058D0C: add r0, r4, #0x0 bl FUN_02058C1C @@ -3730,7 +3730,7 @@ FUN_02058D14: ; 0x02058D14 add r4, r0, #0x0 cmp r4, #0x37 blo _02058D20 - bl ErrorHandling + bl GF_AssertFail _02058D20: ldr r0, _02058D28 ; =UNK_020F6364 lsl r1, r4, #0x2 @@ -3795,7 +3795,7 @@ _02058D5C: ldr r2, [r3, #0x0] cmp r2, r1 bne _02058D52 - bl ErrorHandling + bl GF_AssertFail mov r0, #0x0 pop {r3, pc} .balign 4 diff --git a/arm9/asm/unk_02058EE8.s b/arm9/asm/unk_02058EE8.s index 70e6414e..b021f2bd 100644 --- a/arm9/asm/unk_02058EE8.s +++ b/arm9/asm/unk_02058EE8.s @@ -2621,11 +2621,11 @@ FUN_02059A60: ; 0x02059A60 mvn r0, r0 cmp r5, r0 bne _02059A92 - bl ErrorHandling + bl GF_AssertFail _02059A92: cmp r5, #0x4 blt _02059A9A - bl ErrorHandling + bl GF_AssertFail _02059A9A: ldr r1, _02059ABC ; =UNK_020F6630 lsl r5, r5, #0x2 diff --git a/arm9/asm/unk_02059F04.s b/arm9/asm/unk_02059F04.s index 310d4f03..26971d97 100644 --- a/arm9/asm/unk_02059F04.s +++ b/arm9/asm/unk_02059F04.s @@ -480,7 +480,7 @@ _0205A254: str r0, [r4, #0xc] pop {r3-r7, pc} _0205A268: - bl ErrorHandling + bl GF_AssertFail add sp, #0x8 pop {r3-r7, pc} @@ -785,7 +785,7 @@ _0205A486: mvn r0, r0 cmp r1, r0 bne _0205A496 - bl ErrorHandling + bl GF_AssertFail _0205A496: add r4, r4, #0x1 lsl r0, r4, #0x2 @@ -942,7 +942,7 @@ _0205A5A2: mvn r0, r0 cmp r1, r0 bne _0205A5B2 - bl ErrorHandling + bl GF_AssertFail _0205A5B2: add r4, r4, #0x1 lsl r0, r4, #0x2 @@ -1617,7 +1617,7 @@ _0205AA9A: _0205AAA4: cmp r4, #0x0 bne _0205AAAC - bl ErrorHandling + bl GF_AssertFail _0205AAAC: add r0, r4, #0x0 pop {r4, pc} @@ -1674,7 +1674,7 @@ _0205AB0A: ldr r2, [r1, #0x0] cmp r2, #0x27 bne _0205AB02 - bl ErrorHandling + bl GF_AssertFail mov r0, #0x0 pop {r3, pc} nop @@ -1965,7 +1965,7 @@ _0205AD26: _0205AD36: cmp r4, #0x4 blt _0205AD3E - bl ErrorHandling + bl GF_AssertFail _0205AD3E: add r0, r4, #0x1 lsr r2, r0, #0x1f diff --git a/arm9/asm/unk_0205AD98.s b/arm9/asm/unk_0205AD98.s index bc0fa0dd..b780cf26 100644 --- a/arm9/asm/unk_0205AD98.s +++ b/arm9/asm/unk_0205AD98.s @@ -54,7 +54,7 @@ FUN_0205ADDC: ; 0x0205ADDC add r5, r0, #0x0 cmp r4, #0x69 blt _0205ADEA - bl ErrorHandling + bl GF_AssertFail _0205ADEA: add r0, r5, #0x0 add r1, r4, #0x0 @@ -160,7 +160,7 @@ FUN_0205AEA4: ; 0x0205AEA4 bl AllocFromHeapAtEnd add r4, r0, #0x0 bne _0205AEBA - bl ErrorHandling + bl GF_AssertFail _0205AEBA: add r2, r4, #0x0 mov r1, #0x14 @@ -179,7 +179,7 @@ _0205AEC0: bl FUN_0200CA44 add r7, r0, #0x0 bne _0205AEE4 - bl ErrorHandling + bl GF_AssertFail _0205AEE4: str r5, [r4, #0xc] str r6, [r4, #0x10] @@ -206,13 +206,13 @@ FUN_0205AEFC: ; 0x0205AEFC bl FUN_0205AE28 cmp r0, #0x1 beq _0205AF14 - bl ErrorHandling + bl GF_AssertFail _0205AF14: ldr r0, [r4, #0xc] bl FUN_0205AE50 mov r0, #0x4 add r1, r4, #0x0 - bl FUN_02016A8C + bl FreeToHeapExplicit add r0, r5, #0x0 bl FUN_0200CAB4 pop {r3-r5, pc} @@ -335,7 +335,7 @@ FUN_0205AFDC: ; 0x0205AFDC add r4, r1, #0x0 cmp r7, #0x4 blt _0205AFEA - bl ErrorHandling + bl GF_AssertFail _0205AFEA: ldr r3, _0205B01C ; =UNK_020F6308 ldr r6, [r3, #0x0] @@ -362,7 +362,7 @@ _0205B004: cmp r6, #0x0 bne _0205AFF4 _0205B014: - bl ErrorHandling + bl GF_AssertFail add r0, r4, #0x0 pop {r3-r7, pc} .balign 4 diff --git a/arm9/asm/unk_0205BEF8.s b/arm9/asm/unk_0205BEF8.s index bb032e3d..3df9f7d7 100644 --- a/arm9/asm/unk_0205BEF8.s +++ b/arm9/asm/unk_0205BEF8.s @@ -530,7 +530,7 @@ _0205C266: _0205C276: cmp r5, #0x4 blt _0205C27E - bl ErrorHandling + bl GF_AssertFail _0205C27E: add r0, r5, #0x1 lsr r2, r0, #0x1f diff --git a/arm9/asm/unk_0205C334.s b/arm9/asm/unk_0205C334.s index b975a3f0..22bba443 100644 --- a/arm9/asm/unk_0205C334.s +++ b/arm9/asm/unk_0205C334.s @@ -316,7 +316,7 @@ _0205C584: ldr r0, [r2, #0x8] pop {r3, pc} _0205C588: - bl ErrorHandling + bl GF_AssertFail ldr r0, _0205C590 ; =0x0000FFFF pop {r3, pc} .balign 4 diff --git a/arm9/asm/unk_0205C598.s b/arm9/asm/unk_0205C598.s index ac7a6808..b40cf1a7 100644 --- a/arm9/asm/unk_0205C598.s +++ b/arm9/asm/unk_0205C598.s @@ -153,7 +153,7 @@ _0205C650: mov r0, #0x1 pop {r3-r7, pc} _0205C6AE: - bl ErrorHandling + bl GF_AssertFail mov r0, #0x0 add sp, #0x58 pop {r3-r7, pc} @@ -627,7 +627,7 @@ _0205CA30: cmp r0, #0x0 bne _0205CA10 _0205CA40: - bl ErrorHandling + bl GF_AssertFail mov r0, #0x0 add sp, #0x8 pop {r3-r7, pc} @@ -652,7 +652,7 @@ FUN_0205CA64: ; 0x0205CA64 push {r4, lr} add r4, r0, #0x0 bne _0205CA6E - bl ErrorHandling + bl GF_AssertFail _0205CA6E: add r0, r4, #0x0 bl FUN_0205CAD4 @@ -678,7 +678,7 @@ FUN_0205CA80: ; 0x0205CA80 bl AllocFromHeapAtEnd add r4, r0, #0x0 bne _0205CA9A - bl ErrorHandling + bl GF_AssertFail _0205CA9A: add r0, r4, #0x0 mov r1, #0x0 @@ -701,7 +701,7 @@ _0205CA9A: bl FUN_0200CA44 add r4, r0, #0x0 bne _0205CACC - bl ErrorHandling + bl GF_AssertFail _0205CACC: add r0, r4, #0x0 pop {r3-r7, pc} @@ -723,7 +723,7 @@ FUN_0205CAE0: ; 0x0205CAE0 bl FUN_0201B6C8 add r1, r0, #0x0 mov r0, #0x4 - bl FUN_02016A8C + bl FreeToHeapExplicit add r0, r4, #0x0 bl FUN_0200CAB4 pop {r4, pc} @@ -840,7 +840,7 @@ _0205CBB6: mvn r0, r0 cmp r1, r0 bne _0205CBC4 - bl ErrorHandling + bl GF_AssertFail _0205CBC4: ldr r0, [r4, #0x8] mov r1, #0x0 diff --git a/arm9/asm/unk_0205DD18.s b/arm9/asm/unk_0205DD18.s index 80b7ca1a..890feee8 100644 --- a/arm9/asm/unk_0205DD18.s +++ b/arm9/asm/unk_0205DD18.s @@ -101,7 +101,7 @@ _0205DDB6: ldrb r4, [r0, r5] cmp r4, #0x0 bne _0205DDC2 - bl ErrorHandling + bl GF_AssertFail _0205DDC2: cmp r4, #0x1 bhi _0205DDCA @@ -123,7 +123,7 @@ _0205DDCA: lsr r6, r0, #0x10 cmp r6, r4 blo _0205DDF2 - bl ErrorHandling + bl GF_AssertFail _0205DDF2: lsl r1, r5, #0x1 mov r0, #0x9 @@ -158,7 +158,7 @@ _0205DE30: lsl r7, r4, #0x1 cmp r6, r7 bge _0205DE3A - bl ErrorHandling + bl GF_AssertFail _0205DE3A: sub r0, r6, r7 lsl r0, r0, #0x18 @@ -267,7 +267,7 @@ _0205DEE0: lsr r7, r0, #0x10 cmp r7, #0x64 blo _0205DF12 - bl ErrorHandling + bl GF_AssertFail _0205DF12: cmp r7, #0x32 bhs _0205DF1A @@ -477,7 +477,7 @@ FUN_0205E080: ; 0x0205E080 add r6, r2, #0x0 cmp r4, #0x0 bne _0205E090 - bl ErrorHandling + bl GF_AssertFail _0205E090: str r4, [r5, #0x8] str r6, [r5, #0xc] @@ -726,7 +726,7 @@ _0205E24C: add r1, r1, #0x1 cmp r1, #0x3 blt _0205E23A - bl ErrorHandling + bl GF_AssertFail _0205E256: pop {r4-r6, pc} @@ -814,7 +814,7 @@ _0205E2DC: lsr r4, r0, #0x10 cmp r4, #0x64 blo _0205E2F4 - bl ErrorHandling + bl GF_AssertFail _0205E2F4: ldrb r0, [r6, r5] cmp r4, r0 @@ -970,7 +970,7 @@ _0205E426: lsl r0, r5, #0x10 lsr r0, r0, #0x10 bne _0205E430 - bl ErrorHandling + bl GF_AssertFail _0205E430: lsl r0, r5, #0x10 lsr r0, r0, #0x10 @@ -997,7 +997,7 @@ _0205E43C: lsr r0, r0, #0x10 cmp r4, r0 blo _0205E46A - bl ErrorHandling + bl GF_AssertFail _0205E46A: cmp r4, #0x0 bne _0205E472 diff --git a/arm9/asm/unk_0205EC84.s b/arm9/asm/unk_0205EC84.s index 74662b87..a0c7d147 100644 --- a/arm9/asm/unk_0205EC84.s +++ b/arm9/asm/unk_0205EC84.s @@ -50,7 +50,7 @@ _0205ECC0: bl FUN_0205EC94 pop {r3, pc} _0205ECCA: - bl ErrorHandling + bl GF_AssertFail _0205ECCE: mov r0, #0x0 pop {r3, pc} @@ -886,7 +886,7 @@ FUN_0205F2E4: ; 0x0205F2E4 add r6, r1, #0x0 cmp r4, #0x45 blo _0205F2F4 - bl ErrorHandling + bl GF_AssertFail _0205F2F4: mov r2, #0x9b lsl r2, r2, #0x4 diff --git a/arm9/asm/unk_0205F314.s b/arm9/asm/unk_0205F314.s index d6c97ced..548cd5a4 100644 --- a/arm9/asm/unk_0205F314.s +++ b/arm9/asm/unk_0205F314.s @@ -27,7 +27,7 @@ FUN_0205F314: ; 0x0205F314 cmp r5, r1 bls _0205F334 _0205F32C: - bl ErrorHandling + bl GF_AssertFail mov r0, #0x0 pop {r3-r5, pc} _0205F334: @@ -212,7 +212,7 @@ FUN_0205F45C: ; 0x0205F45C cmp r4, #0x3 blo _0205F46A _0205F466: - bl ErrorHandling + bl GF_AssertFail _0205F46A: ldr r0, _0205F474 ; =UNK_020F7430 lsl r1, r4, #0x1 @@ -271,7 +271,7 @@ FUN_0205F4C8: ; 0x0205F4C8 cmp r4, #0x4 blt _0205F4D6 _0205F4D2: - bl ErrorHandling + bl GF_AssertFail _0205F4D6: ldr r0, _0205F4E0 ; =UNK_020F7436 lsl r1, r4, #0x1 diff --git a/arm9/asm/unk_0205F7A0.s b/arm9/asm/unk_0205F7A0.s index b781112b..624176f9 100644 --- a/arm9/asm/unk_0205F7A0.s +++ b/arm9/asm/unk_0205F7A0.s @@ -173,7 +173,7 @@ FUN_0205F8CC: ; 0x0205F8CC bl FS_OpenFile cmp r0, #0x0 bne _0205F8F8 - bl ErrorHandling + bl GF_AssertFail add sp, #0x70 pop {r3-r7, pc} _0205F8F8: @@ -183,7 +183,7 @@ _0205F8F8: bl FS_ReadFile cmp r0, #0x0 bge _0205F90A - bl ErrorHandling + bl GF_AssertFail _0205F90A: mov r0, #0xb mov r1, #0x4 diff --git a/arm9/asm/unk_0206015C.s b/arm9/asm/unk_0206015C.s deleted file mode 100644 index 296e65c5..00000000 --- a/arm9/asm/unk_0206015C.s +++ /dev/null @@ -1,233 +0,0 @@ - .include "asm/macros.inc" - .include "global.inc" - - .extern gMain - - .text - - thumb_func_start FUN_0206015C -FUN_0206015C: ; 0x0206015C - push {r3-r5, lr} - add r5, r0, #0x0 - mov r0, #0xb - mov r1, #0x10 - bl AllocFromHeapAtEnd - add r4, r0, #0x0 - mov r0, #0xb - bl MOD06_02244DB0 - str r0, [r4, #0x0] - mov r0, #0xb - add r1, r5, #0x0 - bl MOD06_02245114 - str r0, [r4, #0x4] - mov r0, #0x0 - strb r0, [r4, #0xc] - strb r0, [r4, #0xd] - ldr r0, [r5, #0x10] - ldr r1, _02060190 ; =FUN_02060194 - add r2, r4, #0x0 - bl FUN_0204640C - pop {r3-r5, pc} - nop -_02060190: .word FUN_02060194 - - thumb_func_start FUN_02060194 -FUN_02060194: ; 0x02060194 - push {r3-r7, lr} - sub sp, #0x10 - add r5, r0, #0x0 - bl FUN_02046528 - add r6, r0, #0x0 - add r0, r5, #0x0 - bl FUN_0204652C - add r4, r0, #0x0 - ldrb r0, [r4, #0xc] - cmp r0, #0x8 - bls _020601B0 - b _02060332 -_020601B0: - add r0, r0, r0 - add r0, pc - ldrh r0, [r0, #0x6] - lsl r0, r0, #0x10 - asr r0, r0, #0x10 - add pc, r0 -_020601BC: ; jump table (using 16-bit offset) - .short _020601CE - _020601BC - 2; case 0 - .short _020601F2 - _020601BC - 2; case 1 - .short _020601FE - _020601BC - 2; case 2 - .short _02060226 - _020601BC - 2; case 3 - .short _02060232 - _020601BC - 2; case 4 - .short _020602A2 - _020601BC - 2; case 5 - .short _020602F0 - _020601BC - 2; case 6 - .short _020602FC - _020601BC - 2; case 7 - .short _02060312 - _020601BC - 2; case 8 -_020601CE: - add r0, r6, #0x0 - mov r1, #0x1 - bl FUN_0206367C - ldrb r0, [r4, #0xd] - ldr r1, [r4, #0x4] - bl MOD06_02245198 - ldr r0, [r4, #0x4] - bl MOD06_022451F0 - str r0, [r4, #0x8] - add r0, r5, #0x0 - bl FUN_0204AFC8 - mov r0, #0x1 - strb r0, [r4, #0xc] - b _02060332 -_020601F2: - add r0, r5, #0x0 - bl FUN_0204AF3C - mov r0, #0x2 - strb r0, [r4, #0xc] - b _02060332 -_020601FE: - ldr r0, [r6, #0xc] - bl SavArray_Flags_get - ldrb r1, [r4, #0xd] - cmp r1, #0x0 - bne _02060210 - bl FUN_0205F1C4 - b _02060218 -_02060210: - cmp r1, #0x5 - bne _02060218 - bl FUN_0205F1D4 -_02060218: - ldr r1, [r4, #0x8] - add r0, r5, #0x0 - bl FUN_02049160 - mov r0, #0x3 - strb r0, [r4, #0xc] - b _02060332 -_02060226: - add r0, r5, #0x0 - bl FUN_0204AF84 - mov r0, #0x4 - strb r0, [r4, #0xc] - b _02060332 -_02060232: - ldr r0, [r6, #0x38] - bl FUN_020553A0 - ldrb r1, [r4, #0xd] - add r7, r0, #0x0 - add r1, r1, #0x1 - strb r1, [r4, #0xd] - ldrb r1, [r4, #0xd] - cmp r1, #0x5 - bhi _02060290 - add r0, r6, #0x0 - bl MOD06_02245088 - add r6, r0, #0x0 - add r0, r7, #0x0 - mov r1, #0x1 - bl FUN_0205889C - ldr r0, [r4, #0x0] - add r1, r6, #0x0 - bl MOD06_02244DC4 - ldr r0, [r4, #0x0] - bl MOD06_02244EF8 - mov r0, #0x0 - strb r0, [r4, #0xe] - ldr r0, _02060338 ; =0x00000679 - bl FUN_020054C8 - mov r0, #0x0 - str r0, [sp, #0x0] - mov r0, #0x6 - str r0, [sp, #0x4] - mov r0, #0x1 - str r0, [sp, #0x8] - mov r0, #0xb - str r0, [sp, #0xc] - ldr r3, _0206033C ; =0x0000FFFF - add r0, r5, #0x0 - mov r1, #0x3 - mov r2, #0x11 - bl FUN_0204C1B4 - mov r0, #0x5 - strb r0, [r4, #0xc] - b _02060332 -_02060290: - mov r1, #0x0 - bl FUN_0205889C - add r0, r5, #0x0 - bl FUN_0204B00C - mov r0, #0x8 - strb r0, [r4, #0xc] - b _02060332 -_020602A2: - ldrb r0, [r4, #0xe] - add r0, r0, #0x1 - strb r0, [r4, #0xe] - ldrb r0, [r4, #0xe] - cmp r0, #0x3c - bhs _020602B8 - ldr r0, _02060340 ; =gMain - ldr r1, [r0, #0x48] - mov r0, #0x1 - tst r0, r1 - beq _02060332 -_020602B8: - ldrb r0, [r4, #0xd] - ldr r1, [r4, #0x4] - bl MOD06_02245198 - ldr r0, [r4, #0x4] - bl MOD06_022451F0 - str r0, [r4, #0x8] - ldr r0, _02060338 ; =0x00000679 - bl FUN_020054C8 - mov r0, #0x0 - str r0, [sp, #0x0] - mov r0, #0x6 - str r0, [sp, #0x4] - mov r0, #0x1 - str r0, [sp, #0x8] - mov r0, #0xb - str r0, [sp, #0xc] - ldr r3, _0206033C ; =0x0000FFFF - add r0, r5, #0x0 - mov r1, #0x3 - mov r2, #0x10 - bl FUN_0204C1B4 - mov r0, #0x6 - strb r0, [r4, #0xc] - b _02060332 -_020602F0: - ldr r0, [r4, #0x0] - bl MOD06_02244F18 - mov r0, #0x7 - strb r0, [r4, #0xc] - b _02060332 -_020602FC: - ldr r0, [r4, #0x0] - bl MOD06_02244F24 - cmp r0, #0x0 - beq _02060332 - ldr r0, [r4, #0x0] - bl MOD06_02244F2C - mov r0, #0x1 - strb r0, [r4, #0xc] - b _02060332 -_02060312: - add r0, r6, #0x0 - mov r1, #0x0 - bl FUN_0206367C - ldr r0, [r4, #0x4] - bl MOD06_02245190 - ldr r0, [r4, #0x0] - bl MOD06_02244DBC - add r0, r4, #0x0 - bl FreeToHeap - add sp, #0x10 - mov r0, #0x1 - pop {r3-r7, pc} -_02060332: - mov r0, #0x0 - add sp, #0x10 - pop {r3-r7, pc} - .balign 4 -_02060338: .word 0x00000679 -_0206033C: .word 0x0000FFFF -_02060340: .word gMain diff --git a/arm9/asm/unk_02060344.s b/arm9/asm/unk_02060344.s index 8f67bca3..9dcfde2e 100644 --- a/arm9/asm/unk_02060344.s +++ b/arm9/asm/unk_02060344.s @@ -40,7 +40,7 @@ _0206036A: _0206038C: cmp r1, #0xc8 blt _02060394 - bl ErrorHandling + bl GF_AssertFail _02060394: mov r1, #0x0 _02060396: diff --git a/arm9/asm/unk_020603B0.s b/arm9/asm/unk_020603B0.s index 7550dc1d..d4aa42f5 100644 --- a/arm9/asm/unk_020603B0.s +++ b/arm9/asm/unk_020603B0.s @@ -100,7 +100,7 @@ _020603F6: lsr r6, r0, #0x10 cmp r6, #0x10 blo _02060412 - bl ErrorHandling + bl GF_AssertFail _02060412: cmp r6, #0x0 bne _02060420 @@ -129,7 +129,7 @@ FUN_0206043C: ; 0x0206043C add r4, r0, #0x0 cmp r4, #0x1d blo _02060448 - bl ErrorHandling + bl GF_AssertFail _02060448: ldr r0, _02060450 ; =UNK_020F7460 lsl r1, r4, #0x2 @@ -206,7 +206,7 @@ _020604C2: mov r6, #0x28 b _020604D0 _020604C8: - bl ErrorHandling + bl GF_AssertFail add sp, #0x20 pop {r3-r7, pc} _020604D0: @@ -303,7 +303,7 @@ _0206059C: lsr r5, r0, #0x10 cmp r5, #0x1d blo _020605B2 - bl ErrorHandling + bl GF_AssertFail _020605B2: lsl r0, r5, #0x18 lsr r2, r0, #0x18 @@ -361,7 +361,7 @@ _0206061E: ldrh r5, [r4, #0x0] cmp r5, #0x0 bne _02060628 - bl ErrorHandling + bl GF_AssertFail _02060628: cmp r5, #0x1 bhi _02060630 @@ -383,7 +383,7 @@ _02060630: lsr r6, r0, #0x10 cmp r6, r5 blo _02060658 - bl ErrorHandling + bl GF_AssertFail _02060658: lsl r0, r6, #0x18 lsr r0, r0, #0x17 diff --git a/arm9/asm/unk_020607D4.s b/arm9/asm/unk_020607D4.s index 45fc311a..2e2c4e21 100644 --- a/arm9/asm/unk_020607D4.s +++ b/arm9/asm/unk_020607D4.s @@ -149,7 +149,7 @@ _020608F0: bl FUN_020054C8 b _0206090A _020608F8: - bl ErrorHandling + bl GF_AssertFail add r0, r4, #0x0 bl FreeToHeap add sp, #0x28 @@ -472,7 +472,7 @@ _02060B6A: str r0, [r4, #0x24] b _02060B86 _02060B7C: - bl ErrorHandling + bl GF_AssertFail add sp, #0xc mov r0, #0x1 pop {r3-r4, pc} @@ -556,7 +556,7 @@ _02060BF6: add r0, r4, #0x0 bl MOD05_021F4BD0 ldr r0, [r0, #0x0] - bl FUN_020BC13C + bl NNS_G3dGetMdlSet ldrh r1, [r0, #0xe] add r2, sp, #0x20 mov r3, #0x0 @@ -569,7 +569,7 @@ _02060BF6: bl FUN_0204A9F0 cmp r0, #0x0 bne _02060C38 - bl ErrorHandling + bl GF_AssertFail _02060C38: ldr r0, [sp, #0x20] bl MOD05_021E7EC8 @@ -594,7 +594,7 @@ _02060C38: bl MOD05_021DA464 b _02060C6E _02060C6A: - bl ErrorHandling + bl GF_AssertFail _02060C6E: add r0, r6, #0x1 lsl r0, r0, #0x18 @@ -644,7 +644,7 @@ _02060CA8: str r1, [r0, #0x8] pop {r3, pc} _02060CC4: - bl ErrorHandling + bl GF_AssertFail _02060CC8: pop {r3, pc} .balign 4 diff --git a/arm9/asm/unk_02060CCC.s b/arm9/asm/unk_02060CCC.s index b6692f24..918488c5 100644 --- a/arm9/asm/unk_02060CCC.s +++ b/arm9/asm/unk_02060CCC.s @@ -153,7 +153,7 @@ FUN_02060CCC: ; 0x02060CCC cmp r5, #0x5 blt _02060CDC _02060CD8: - bl ErrorHandling + bl GF_AssertFail _02060CDC: sub r1, r5, #0x1 ldr r6, _02060CF4 ; =UNK_020F767C @@ -163,7 +163,7 @@ _02060CDC: ldr r0, [r6, r4] cmp r0, r5 beq _02060CF0 - bl ErrorHandling + bl GF_AssertFail _02060CF0: add r0, r6, r4 pop {r4-r6, pc} @@ -183,7 +183,7 @@ FUN_02060CF8: ; 0x02060CF8 cmp r4, r0 blt _02060D12 _02060D0E: - bl ErrorHandling + bl GF_AssertFail _02060D12: sub r0, r4, #0x1 ldr r1, [r5, #0x8] @@ -206,7 +206,7 @@ FUN_02060D1C: ; 0x02060D1C ldr r4, [r0, #0x0] cmp r4, #0x0 bne _02060D3E - bl ErrorHandling + bl GF_AssertFail _02060D3E: add r0, r6, #0x0 add r1, r7, #0x0 @@ -629,7 +629,7 @@ FUN_02061028: ; 0x02061028 ldrh r0, [r5, #0x22] cmp r0, #0x0 bne _0206106C - bl ErrorHandling + bl GF_AssertFail _0206106C: add r2, r5, #0x0 add r5, #0xc @@ -1207,7 +1207,7 @@ FUN_02061498: ; 0x02061498 lsr r4, r0, #0x10 cmp r4, #0x5 blo _020614F0 - bl ErrorHandling + bl GF_AssertFail _020614F0: add r4, #0x11 add r0, r4, #0x0 @@ -1615,7 +1615,7 @@ FUN_020617D8: ; 0x020617D8 lsr r4, r0, #0x10 cmp r4, #0x3 blo _02061826 - bl ErrorHandling + bl GF_AssertFail _02061826: add r4, #0x21 add r0, r4, #0x0 @@ -1663,7 +1663,7 @@ FUN_02061868: ; 0x02061868 ldr r1, [r4, #0x0] cmp r1, r0 beq _02061884 - bl ErrorHandling + bl GF_AssertFail _02061884: add r0, r5, #0x0 mov r1, #0x0 @@ -2724,7 +2724,7 @@ FUN_020620A0: ; 0x020620A0 add r4, r0, #0x0 cmp r4, #0x0 bgt _020620BE - bl ErrorHandling + bl GF_AssertFail _020620BE: cmp r4, #0x1 ble _020620D0 @@ -2760,7 +2760,7 @@ _020620F0: _020620F8: cmp r5, #0x0 beq _02062100 - bl ErrorHandling + bl GF_AssertFail _02062100: bl LCRandom mov r1, #0xf1 @@ -2770,7 +2770,7 @@ _02062100: lsr r4, r0, #0x10 cmp r4, #0x11 blo _02062118 - bl ErrorHandling + bl GF_AssertFail _02062118: cmp r4, #0x9 blt _0206211E @@ -2828,7 +2828,7 @@ FUN_02062170: ; 0x02062170 lsr r4, r0, #0x10 cmp r4, #0x5 blo _0206218C - bl ErrorHandling + bl GF_AssertFail _0206218C: ldr r0, _02062238 ; =UNK_02105FBC lsl r1, r4, #0x1 @@ -2870,7 +2870,7 @@ _020621D4: lsr r4, r0, #0x10 cmp r4, #0x4 blo _020621E4 - bl ErrorHandling + bl GF_AssertFail _020621E4: cmp r4, #0x3 bhi _0206220C @@ -2922,7 +2922,7 @@ _02062228: mov r0, #0xc pop {r3-r7, pc} _0206222C: - bl ErrorHandling + bl GF_AssertFail mov r0, #0x1 pop {r3-r7, pc} .balign 4 @@ -3014,7 +3014,7 @@ FUN_020622C4: ; 0x020622C4 lsr r5, r0, #0x10 cmp r5, #0x11 blo _020622E0 - bl ErrorHandling + bl GF_AssertFail _020622E0: cmp r5, #0x9 blt _020622E6 @@ -3028,7 +3028,7 @@ _020622E6: lsr r4, r0, #0x10 cmp r4, #0x11 blo _020622FE - bl ErrorHandling + bl GF_AssertFail _020622FE: cmp r4, #0x9 blt _02062304 @@ -3121,7 +3121,7 @@ _02062392: lsl r0, r4, #0x10 lsr r0, r0, #0x10 bne _020623A4 - bl ErrorHandling + bl GF_AssertFail _020623A4: lsl r0, r4, #0x10 lsr r0, r0, #0x10 @@ -3148,7 +3148,7 @@ _020623B0: lsr r0, r0, #0x10 cmp r5, r0 blo _020623DE - bl ErrorHandling + bl GF_AssertFail _020623DE: add r0, sp, #0x10 add r0, #0x2 @@ -3244,7 +3244,7 @@ FUN_02062474: ; 0x02062474 lsl r0, r0, #0x10 lsr r4, r0, #0x10 bne _02062496 - bl ErrorHandling + bl GF_AssertFail _02062496: cmp r4, #0x1 bhi _0206249E @@ -3266,7 +3266,7 @@ _0206249E: lsr r5, r0, #0x10 cmp r5, r4 blo _020624C6 - bl ErrorHandling + bl GF_AssertFail _020624C6: lsl r4, r5, #0x2 add r0, sp, #0x4 @@ -3363,7 +3363,7 @@ _0206256C: _02062572: cmp r4, #0xb blt _0206257A - bl ErrorHandling + bl GF_AssertFail _0206257A: ldr r1, [sp, #0x8] add r0, r6, #0x0 diff --git a/arm9/asm/unk_020625EC.s b/arm9/asm/unk_020625EC.s index 2ec122fa..fc235004 100644 --- a/arm9/asm/unk_020625EC.s +++ b/arm9/asm/unk_020625EC.s @@ -246,7 +246,7 @@ FUN_02062770: ; 0x02062770 add r4, r0, #0x0 add r0, #0xc0 ldr r0, [r0, #0x0] - bl FUN_02001204 + bl ListMenu_ProcessInput ldr r1, _020627C8 ; =gMain ldr r3, [r1, #0x48] mov r1, #0x2 @@ -467,7 +467,7 @@ _0206290C: _02062912: add r0, #0xe4 mov r1, #0xff - bl FUN_02019620 + bl FillWindowPixelBuffer mov r3, #0x0 str r3, [sp, #0x0] ldrh r0, [r4, #0x1a] @@ -578,7 +578,7 @@ FUN_020629D8: ; 0x020629D8 _020629EE: add r0, #0xe4 mov r1, #0xff - bl FUN_02019620 + bl FillWindowPixelBuffer mov r3, #0x0 str r3, [sp, #0x0] ldrh r0, [r4, #0x1a] @@ -1173,7 +1173,7 @@ FUN_02062DB0: ; 0x02062DB0 add r4, #0xe4 add r0, r4, #0x0 mov r1, #0xff - bl FUN_02019620 + bl FillWindowPixelBuffer add sp, #0x14 pop {r3-r4, pc} .balign 4 @@ -1361,7 +1361,7 @@ FUN_02063028: ; 0x02063028 ldr r1, [r5, #0x0] add r7, r0, #0x1 add r0, r7, #0x0 - bl ListMenu_ctor + bl ListMenuItems_ctor add r1, r5, #0x0 add r1, #0xc4 str r0, [r1, #0x0] @@ -1385,7 +1385,7 @@ FUN_02063028: ; 0x02063028 add r0, r5, #0x0 add r0, #0xd4 mov r1, #0xff - bl FUN_02019620 + bl FillWindowPixelBuffer ldrb r0, [r5, #0x18] mov r6, #0x0 cmp r0, #0x0 @@ -1397,7 +1397,7 @@ _0206307C: ldr r0, [r0, #0x0] ldr r1, [r4, #0x64] add r2, r6, #0x0 - bl ListMenu_AddItem + bl ListMenuItems_AddItem ldrb r0, [r5, #0x18] add r6, r6, #0x1 add r4, r4, #0x4 @@ -1409,7 +1409,7 @@ _02063094: ldr r0, [r0, #0x0] ldr r1, [r5, #0x38] ldr r2, _02063160 ; =0x0000FFFF - bl ListMenu_AddItem + bl ListMenuItems_AddItem add r1, r5, #0x0 ldr r0, _02063164 ; =UNK_020F7C2C add r1, #0xa0 @@ -1455,7 +1455,7 @@ _02063094: ldr r2, [sp, #0x18] add r0, #0xa0 lsr r3, r3, #0x18 - bl FUN_020010A8 + bl ListMenuInit add r1, r5, #0x0 add r1, #0xc0 str r0, [r1, #0x0] @@ -1474,7 +1474,7 @@ _02063094: add r0, r5, #0x0 add r0, #0xe4 mov r1, #0xff - bl FUN_02019620 + bl FillWindowPixelBuffer mov r3, #0x0 str r3, [sp, #0x0] ldr r0, _02063174 ; =0x0001020F @@ -1515,11 +1515,11 @@ FUN_02063178: ; 0x02063178 ldr r0, [r0, #0x0] add r1, #0x22 add r2, #0x24 - bl FUN_02001300 + bl DestroyListMenu add r0, r4, #0x0 add r0, #0xc4 ldr r0, [r0, #0x0] - bl ListMenu_dtor + bl ListMenuItems_dtor add r0, r4, #0x0 add r0, #0xd4 bl FUN_02019570 @@ -1546,16 +1546,16 @@ FUN_020631C8: ; 0x020631C8 push {r3-r5, lr} mov r1, #0x13 add r5, r0, #0x0 - bl FUN_02001470 + bl ListMenuGetTemplateField add r1, sp, #0x0 add r4, r0, #0x0 add r0, r5, #0x0 add r1, #0x2 add r2, sp, #0x0 - bl FUN_02001448 + bl ListMenuGetScrollAndRow add r0, r5, #0x0 mov r1, #0x2 - bl FUN_02001470 + bl ListMenuGetTemplateField add r2, sp, #0x0 ldrh r3, [r2, #0x0] ldrh r2, [r2, #0x2] @@ -1579,7 +1579,7 @@ FUN_02063208: ; 0x02063208 add r4, r0, #0x0 add r0, #0xe4 mov r1, #0xff - bl FUN_02019620 + bl FillWindowPixelBuffer mov r3, #0x0 str r3, [sp, #0x0] ldr r0, _02063234 ; =0x0001020F @@ -1626,7 +1626,7 @@ FUN_02063264: ; 0x02063264 add r4, r0, #0x0 add r0, #0xe4 mov r1, #0xff - bl FUN_02019620 + bl FillWindowPixelBuffer mov r3, #0x0 str r3, [sp, #0x0] ldr r0, _020632A0 ; =0x0001020F @@ -1675,7 +1675,7 @@ FUN_020632A4: ; 0x020632A4 add r0, r4, #0x0 add r0, #0xd4 mov r1, #0xff - bl FUN_02019620 + bl FillWindowPixelBuffer mov r0, #0x1 str r0, [sp, #0x1c] mov r0, #0x0 @@ -1901,7 +1901,7 @@ FUN_02063430: ; 0x02063430 add r0, r4, #0x0 add r0, #0xf4 mov r1, #0x0 - bl FUN_02019620 + bl FillWindowPixelBuffer mov r1, #0x0 str r1, [sp, #0x0] ldr r0, _020634D8 ; =0x00010200 diff --git a/arm9/asm/unk_02063888.s b/arm9/asm/unk_02063888.s index 0e213436..19cd07cc 100644 --- a/arm9/asm/unk_02063888.s +++ b/arm9/asm/unk_02063888.s @@ -77,7 +77,7 @@ _020638F8: lsl r0, r0, #0x10 lsr r6, r0, #0x10 bne _02063920 - bl ErrorHandling + bl GF_AssertFail _02063920: add r0, r6, #0x0 add r1, sp, #0x8 diff --git a/arm9/asm/unk_02063948.s b/arm9/asm/unk_02063948.s index 854eaedd..b111b655 100644 --- a/arm9/asm/unk_02063948.s +++ b/arm9/asm/unk_02063948.s @@ -189,7 +189,7 @@ FUN_02063A80: ; 0x02063A80 ldr r0, _02063A98 ; =0x19740205 cmp r1, r0 beq _02063A90 - bl ErrorHandling + bl GF_AssertFail _02063A90: add r0, r4, #0x0 bl FreeToHeap diff --git a/arm9/asm/unk_0206439C.s b/arm9/asm/unk_0206439C.s deleted file mode 100644 index 4cc91f4f..00000000 --- a/arm9/asm/unk_0206439C.s +++ /dev/null @@ -1,22 +0,0 @@ - .include "asm/macros.inc" - .include "global.inc" - - .text - - thumb_func_start FUN_0206439C -FUN_0206439C: ; 0x0206439C - push {r4-r6, lr} - add r5, r1, #0x0 - add r6, r2, #0x0 - mov r1, #0x8 - bl AllocFromHeapAtEnd - add r4, r0, #0x0 - add r0, r6, #0x0 - bl SavArray_PlayerParty_get - add r1, r5, #0x0 - bl GetPartyMonByIndex - str r0, [r4, #0x0] - mov r0, #0x0 - str r0, [r4, #0x4] - add r0, r4, #0x0 - pop {r4-r6, pc} diff --git a/arm9/asm/unk_020643C0.s b/arm9/asm/unk_020643C0.s index bc843c82..9215f816 100644 --- a/arm9/asm/unk_020643C0.s +++ b/arm9/asm/unk_020643C0.s @@ -175,7 +175,7 @@ FUN_02064520: ; 0x02064520 push {r4, lr} add r4, r0, #0x0 bne _0206452A - bl ErrorHandling + bl GF_AssertFail _0206452A: add r0, r4, #0x0 bl FUN_020646A0 @@ -254,7 +254,7 @@ FUN_020645B0: ; 0x020645B0 bl FUN_0200CA44 add r4, r0, #0x0 bne _020645C6 - bl ErrorHandling + bl GF_AssertFail _020645C6: add r0, r4, #0x0 pop {r4, pc} @@ -276,7 +276,7 @@ FUN_020645DC: ; 0x020645DC bl AllocFromHeap add r4, r0, #0x0 bne _020645EC - bl ErrorHandling + bl GF_AssertFail _020645EC: add r2, r4, #0x0 mov r1, #0x10 @@ -292,12 +292,12 @@ _020645F2: thumb_func_start FUN_02064600 FUN_02064600: ; 0x02064600 - ldr r3, _02064608 ; =FUN_02016A8C + ldr r3, _02064608 ; =FreeToHeapExplicit add r1, r0, #0x0 ldr r0, [r1, #0x8] bx r3 .balign 4 -_02064608: .word FUN_02016A8C +_02064608: .word FreeToHeapExplicit thumb_func_start FUN_0206460C FUN_0206460C: ; 0x0206460C @@ -309,7 +309,7 @@ FUN_0206460C: ; 0x0206460C bl AllocFromHeap add r4, r0, #0x0 bne _02064622 - bl ErrorHandling + bl GF_AssertFail _02064622: add r0, r4, #0x0 mov r1, #0x0 @@ -320,13 +320,13 @@ _02064622: thumb_func_start FUN_02064630 FUN_02064630: ; 0x02064630 - ldr r3, _0206463C ; =FUN_02016A8C + ldr r3, _0206463C ; =FreeToHeapExplicit add r1, r0, #0x0 ldr r0, [r1, #0x8] ldr r1, [r1, #0xc] bx r3 nop -_0206463C: .word FUN_02016A8C +_0206463C: .word FreeToHeapExplicit thumb_func_start FUN_02064640 FUN_02064640: ; 0x02064640 diff --git a/arm9/asm/unk_020647A4.s b/arm9/asm/unk_020647A4.s index cba18409..7476df71 100644 --- a/arm9/asm/unk_020647A4.s +++ b/arm9/asm/unk_020647A4.s @@ -105,7 +105,7 @@ _0206480A: bl FUN_0204AA5C cmp r0, #0x0 bne _0206482C - bl ErrorHandling + bl GF_AssertFail _0206482C: ldr r1, [sp, #0x14] add r0, sp, #0x18 @@ -316,7 +316,7 @@ _02064996: str r1, [r0, #0x8] pop {r3-r5, pc} _020649A0: - bl ErrorHandling + bl GF_AssertFail pop {r3-r5, pc} nop _020649A8: .word 0x00000123 @@ -474,7 +474,7 @@ _02064ACA: bl FUN_0204AA5C cmp r0, #0x0 bne _02064AEC - bl ErrorHandling + bl GF_AssertFail _02064AEC: ldr r1, [sp, #0xc] add r0, sp, #0x10 @@ -598,7 +598,7 @@ _02064BCA: bl FUN_0204AA5C cmp r0, #0x0 bne _02064BEC - bl ErrorHandling + bl GF_AssertFail _02064BEC: ldr r1, [sp, #0xc] add r0, sp, #0x10 diff --git a/arm9/asm/unk_02064CA8.s b/arm9/asm/unk_02064CA8.s index 851aec52..c81aafec 100644 --- a/arm9/asm/unk_02064CA8.s +++ b/arm9/asm/unk_02064CA8.s @@ -127,7 +127,7 @@ FUN_02064D88: ; 0x02064D88 add r7, r0, #0x0 cmp r5, #0x3 blo _02064D96 - bl ErrorHandling + bl GF_AssertFail _02064D96: add r0, r7, #0x0 bl ScriptEnvironment_GetSav2Ptr @@ -163,7 +163,7 @@ _02064DD2: mov r6, #0x19 b _02064DDE _02064DDA: - bl ErrorHandling + bl GF_AssertFail _02064DDE: ldr r0, [r7, #0x1c] ldr r0, [r0, #0xc] @@ -182,7 +182,7 @@ FUN_02064DEC: ; 0x02064DEC add r6, r2, #0x0 cmp r4, #0x1 bls _02064DFC - bl ErrorHandling + bl GF_AssertFail _02064DFC: mov r0, #0x0 mvn r0, r0 diff --git a/arm9/asm/unk_020653EC.s b/arm9/asm/unk_020653EC.s index 3d43d136..df203337 100644 --- a/arm9/asm/unk_020653EC.s +++ b/arm9/asm/unk_020653EC.s @@ -146,7 +146,7 @@ FUN_020654D0: ; 0x020654D0 add r5, r1, #0x0 lsl r0, r0, #0x4 ldr r0, [r5, r0] - bl FUN_02001204 + bl ListMenu_ProcessInput add r4, r0, #0x0 mov r0, #0x69 lsl r0, r0, #0x2 @@ -256,7 +256,7 @@ FUN_020655B0: ; 0x020655B0 add r4, r1, #0x0 lsl r0, r0, #0x4 ldr r0, [r4, r0] - bl FUN_02001204 + bl ListMenu_ProcessInput add r5, r0, #0x0 ldr r0, _02065638 ; =gMain mov r1, #0x2 @@ -967,16 +967,16 @@ FUN_02065AF4: ; 0x02065AF4 lsl r0, r0, #0x2 add r0, r5, r0 mov r1, #0xff - bl FUN_02019620 + bl FillWindowPixelBuffer mov r0, #0x65 lsl r0, r0, #0x2 add r0, r5, r0 mov r1, #0xff - bl FUN_02019620 + bl FillWindowPixelBuffer ldrb r0, [r5, #0x1b] ldr r1, [r5, #0x0] add r0, r0, #0x1 - bl ListMenu_ctor + bl ListMenuItems_ctor mov r1, #0x59 lsl r1, r1, #0x2 add r7, r5, #0x0 @@ -995,7 +995,7 @@ _02065B7E: ldr r1, [r2, #0x8] ldrb r2, [r2, #0x0] ldr r0, [r5, r0] - bl ListMenu_AddItem + bl ListMenuItems_AddItem add r0, r6, #0x1 lsl r0, r0, #0x18 lsr r6, r0, #0x18 @@ -1011,7 +1011,7 @@ _02065B9E: sub r1, #0x4c ldr r1, [r5, r1] ldr r2, _02065CE0 ; =0x0000FFFF - bl ListMenu_AddItem + bl ListMenuItems_AddItem add r0, r6, #0x1 lsl r0, r0, #0x18 mov r1, #0x5 @@ -1110,7 +1110,7 @@ _02065C64: lsl r3, r3, #0x18 ldrh r2, [r5, r2] lsr r3, r3, #0x18 - bl FUN_020010A8 + bl ListMenuInit mov r1, #0x16 lsl r1, r1, #0x4 str r0, [r5, r1] @@ -1169,7 +1169,7 @@ FUN_02065CFC: ; 0x02065CFC add r4, r1, #0x0 mov r1, #0x13 add r5, r0, #0x0 - bl FUN_02001470 + bl ListMenuGetTemplateField ldr r1, _02065D48 ; =0x0000FFFF cmp r4, r1 bne _02065D1C @@ -1177,7 +1177,7 @@ FUN_02065CFC: ; 0x02065CFC mov r1, #0x1 mov r2, #0xf mov r3, #0x2 - bl FUN_020013E8 + bl ListMenuOverrideSetColors pop {r3-r5, pc} _02065D1C: mov r1, #0xc @@ -1191,14 +1191,14 @@ _02065D1C: mov r1, #0x3 mov r2, #0xf mov r3, #0x4 - bl FUN_020013E8 + bl ListMenuOverrideSetColors pop {r3-r5, pc} _02065D38: add r0, r5, #0x0 mov r1, #0x7 mov r2, #0xf mov r3, #0x8 - bl FUN_020013E8 + bl ListMenuOverrideSetColors pop {r3-r5, pc} nop _02065D48: .word 0x0000FFFF @@ -1210,16 +1210,16 @@ FUN_02065D4C: ; 0x02065D4C mov r1, #0x13 add r4, r0, #0x0 add r6, r2, #0x0 - bl FUN_02001470 + bl ListMenuGetTemplateField add r1, sp, #0x0 add r5, r0, #0x0 add r0, r4, #0x0 add r1, #0x2 add r2, sp, #0x0 - bl FUN_02001448 + bl ListMenuGetScrollAndRow add r0, r4, #0x0 mov r1, #0x2 - bl FUN_02001470 + bl ListMenuGetTemplateField lsl r0, r0, #0x10 lsr r4, r0, #0x10 cmp r6, #0x0 @@ -1280,7 +1280,7 @@ FUN_02065DD8: ; 0x02065DD8 str r2, [sp, #0x4] ldr r1, [r5, #0x0] mov r0, #0x4 - bl ListMenu_ctor + bl ListMenuItems_ctor mov r1, #0x59 lsl r1, r1, #0x2 str r0, [r5, r1] @@ -1295,7 +1295,7 @@ FUN_02065DD8: ; 0x02065DD8 lsl r0, r0, #0x2 add r0, r5, r0 mov r1, #0xff - bl FUN_02019620 + bl FillWindowPixelBuffer mov r7, #0x43 ldr r6, _02065ECC ; =UNK_020F7EAC mov r4, #0x0 @@ -1309,7 +1309,7 @@ _02065E14: ldr r1, [r5, r7] ldr r2, [r6, r2] ldr r3, [r3, #0x4] - bl ListMenu_ItemFromMsgData + bl ListMenuItems_AppendFromMsgData add r0, r4, #0x1 lsl r0, r0, #0x18 lsr r4, r0, #0x18 @@ -1362,7 +1362,7 @@ _02065E14: ldr r2, [sp, #0x4] add r0, r5, r0 lsr r3, r3, #0x18 - bl FUN_020010A8 + bl ListMenuInit mov r1, #0x16 lsl r1, r1, #0x4 str r0, [r5, r1] @@ -1418,11 +1418,11 @@ FUN_02065EF8: ; 0x02065EF8 ldr r0, [r4, r0] add r1, #0x2 add r2, sp, #0x0 - bl FUN_02001300 + bl DestroyListMenu mov r0, #0x59 lsl r0, r0, #0x2 ldr r0, [r4, r0] - bl ListMenu_dtor + bl ListMenuItems_dtor mov r0, #0x65 lsl r0, r0, #0x2 add r0, r4, r0 @@ -1495,11 +1495,11 @@ FUN_02065F8C: ; 0x02065F8C ldr r0, [r4, r0] add r1, #0x2 add r2, sp, #0x0 - bl FUN_02001300 + bl DestroyListMenu mov r0, #0x59 lsl r0, r0, #0x2 ldr r0, [r4, r0] - bl ListMenu_dtor + bl ListMenuItems_dtor mov r0, #0x5d lsl r0, r0, #0x2 add r0, r4, r0 @@ -2006,7 +2006,7 @@ FUN_02066334: ; 0x02066334 lsl r0, r0, #0x2 add r0, r4, r0 mov r1, #0x0 - bl FUN_02019620 + bl FillWindowPixelBuffer add sp, #0x14 pop {r3-r4, pc} .balign 4 @@ -2066,7 +2066,7 @@ _02066426: add r0, r5, r1 mov r1, #0xff add r3, r2, #0x0 - bl FUN_020196F4 + bl FillWindowPixelRect mov r0, #0x1 bl FUN_02002B60 mov r0, #0x0 diff --git a/arm9/asm/unk_0206BF90.s b/arm9/asm/unk_0206BF90.s index d672d875..acf84738 100644 --- a/arm9/asm/unk_0206BF90.s +++ b/arm9/asm/unk_0206BF90.s @@ -572,7 +572,7 @@ _0206C350: add r0, r4, #0x0 ldr r1, [r2, r1] add r0, #0x20 - bl FUN_02029F9C + bl Chatot_copy mov r0, #0x1 pop {r4, pc} .balign 4 diff --git a/arm9/asm/unk_0206C700.s b/arm9/asm/unk_0206C700.s index 879f7f48..4ba1b745 100644 --- a/arm9/asm/unk_0206C700.s +++ b/arm9/asm/unk_0206C700.s @@ -117,7 +117,7 @@ FUN_0206C700: ; 0x0206C700 str r0, [r4, #0x0] add r0, r5, #0x0 mov r1, #0x1 - bl FUN_02018FF4 + bl AllocWindows str r0, [r4, #0x4] ldr r0, [sp, #0x18] str r0, [r4, #0x2c] @@ -147,7 +147,7 @@ FUN_0206C700: ; 0x0206C700 bl FUN_02019064 ldr r0, [r4, #0x4] mov r1, #0xff - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, [r4, #0x4] mov r1, #0x0 mov r2, #0x1 @@ -743,7 +743,7 @@ _0206CCCE: lsl r1, r1, #0xe cmp r0, r1 bhi _0206CD16 - bl ErrorHandling + bl GF_AssertFail _0206CD16: ldr r0, _0206CE24 ; =0x000005F9 bl FUN_020054C8 @@ -2365,7 +2365,7 @@ _0206DA26: str r0, [sp, #0xc] mov r0, #0x76 mov r3, #0x3 - bl FUN_0200687C + bl GfGfxLoader_LoadCharData mov r0, #0x0 str r0, [sp, #0x0] str r0, [sp, #0x4] @@ -2376,7 +2376,7 @@ _0206DA26: str r0, [sp, #0xc] mov r0, #0x76 mov r3, #0x3 - bl FUN_020068C8 + bl GfGfxLoader_LoadScrnData mov r1, #0x0 str r1, [sp, #0x0] mov r0, #0x40 @@ -2441,7 +2441,7 @@ _0206DA26: mov r0, #0xc add r2, r4, #0x0 mov r3, #0x4 - bl FUN_0200687C + bl GfGfxLoader_LoadCharData mov r0, #0x0 str r0, [sp, #0x0] str r0, [sp, #0x4] @@ -2453,7 +2453,7 @@ _0206DA26: mov r0, #0xc add r2, r4, #0x0 mov r3, #0x4 - bl FUN_020068C8 + bl GfGfxLoader_LoadScrnData mov r0, #0x1 str r0, [sp, #0x0] mov r0, #0x20 @@ -2673,7 +2673,7 @@ FUN_0206DD6C: ; 0x0206DD6C bl FreeToHeap ldr r0, [r4, #0x4] mov r1, #0xff - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, [r4, #0x2c] bl Options_GetTextFrameDelay mov r3, #0x0 @@ -2719,7 +2719,7 @@ _0206DDDC: b _0206DDFA _0206DDE4: ldr r0, _0206DE00 ; =0x00000484 - bl PlayBGM + bl PlaySound b _0206DDFA _0206DDEC: ldr r0, _0206DE04 ; =0x000005E6 @@ -2727,7 +2727,7 @@ _0206DDEC: b _0206DDFA _0206DDF4: ldr r0, _0206DE08 ; =0x00000483 - bl PlayBGM + bl PlaySound _0206DDFA: add r0, r4, #0x0 pop {r4, pc} diff --git a/arm9/asm/unk_0206DE24.s b/arm9/asm/unk_0206DE24.s index 0bc45eb2..3203cc10 100644 --- a/arm9/asm/unk_0206DE24.s +++ b/arm9/asm/unk_0206DE24.s @@ -1,8 +1,8 @@ .include "asm/macros.inc" .include "global.inc" - .extern UNK_021064C0 - .extern UNK_021064B8 + .extern NNS_GfdDefaultFuncAllocPlttVram + .extern NNS_GfdDefaultFuncAllocTexVram .text @@ -128,14 +128,14 @@ _0206DF14: .word 0x04000580 thumb_func_start FUN_0206DF18 FUN_0206DF18: ; 0x0206DF18 push {r3-r5, lr} - ldr r3, _0206DF50 ; =UNK_021064B8 + ldr r3, _0206DF50 ; =NNS_GfdDefaultFuncAllocTexVram mov r0, #0x2 mov r1, #0x0 ldr r3, [r3, #0x0] lsl r0, r0, #0xe add r2, r1, #0x0 blx r3 - ldr r3, _0206DF54 ; =UNK_021064C0 + ldr r3, _0206DF54 ; =NNS_GfdDefaultFuncAllocPlttVram mov r1, #0x0 add r4, r0, #0x0 ldr r3, [r3, #0x0] @@ -145,17 +145,17 @@ FUN_0206DF18: ; 0x0206DF18 add r5, r0, #0x0 cmp r4, #0x0 bne _0206DF40 - bl ErrorHandling + bl GF_AssertFail _0206DF40: cmp r5, #0x0 bne _0206DF48 - bl ErrorHandling + bl GF_AssertFail _0206DF48: bl FUN_02012CC8 pop {r3-r5, pc} nop -_0206DF50: .word UNK_021064B8 -_0206DF54: .word UNK_021064C0 +_0206DF50: .word NNS_GfdDefaultFuncAllocTexVram +_0206DF54: .word NNS_GfdDefaultFuncAllocPlttVram thumb_func_start FUN_0206DF58 FUN_0206DF58: ; 0x0206DF58 @@ -165,7 +165,7 @@ FUN_0206DF58: ; 0x0206DF58 cmp r0, #0x0 ble _0206DF6E bl FUN_020222AC - bl FUN_020B02C8 + bl NNS_G2dSetupSoftwareSpriteCamera _0206DF6E: bl FUN_02013388 mov r0, #0x1 @@ -176,7 +176,7 @@ _0206DF6E: thumb_func_start FUN_0206DF7C FUN_0206DF7C: ; 0x0206DF7C push {r4, lr} - ldr r3, _0206DF94 ; =UNK_021064B8 + ldr r3, _0206DF94 ; =NNS_GfdDefaultFuncAllocTexVram mov r2, #0x0 ldr r3, [r3, #0x0] blx r3 @@ -186,12 +186,12 @@ FUN_0206DF7C: ; 0x0206DF7C lsr r0, r0, #0xd pop {r4, pc} nop -_0206DF94: .word UNK_021064B8 +_0206DF94: .word NNS_GfdDefaultFuncAllocTexVram thumb_func_start FUN_0206DF98 FUN_0206DF98: ; 0x0206DF98 push {r4, lr} - ldr r3, _0206DFB0 ; =UNK_021064C0 + ldr r3, _0206DFB0 ; =NNS_GfdDefaultFuncAllocPlttVram mov r2, #0x0 ldr r3, [r3, #0x0] blx r3 @@ -201,7 +201,7 @@ FUN_0206DF98: ; 0x0206DF98 lsr r0, r0, #0xd pop {r4, pc} nop -_0206DFB0: .word UNK_021064C0 +_0206DFB0: .word NNS_GfdDefaultFuncAllocPlttVram thumb_func_start FUN_0206DFB4 FUN_0206DFB4: ; 0x0206DFB4 @@ -313,7 +313,7 @@ FUN_0206E07C: ; 0x0206E07C bl AllocFromHeap add r4, r0, #0x0 bne _0206E090 - bl ErrorHandling + bl GF_AssertFail _0206E090: ldr r0, [r5, #0x0] ldr r2, [r5, #0x4] diff --git a/arm9/asm/unk_0206E0F0.s b/arm9/asm/unk_0206E0F0.s index 533ddc30..d00119f8 100644 --- a/arm9/asm/unk_0206E0F0.s +++ b/arm9/asm/unk_0206E0F0.s @@ -33,7 +33,7 @@ FUN_0206E0F0: ; 0x0206E0F0 add r4, r0, #0x0 cmp r4, #0x17 blo _0206E0FC - bl ErrorHandling + bl GF_AssertFail _0206E0FC: ldr r0, _0206E104 ; =UNK_020F83E0 lsl r1, r4, #0x2 @@ -63,7 +63,7 @@ FUN_0206E114: ; 0x0206E114 add r4, r0, #0x0 cmp r4, #0x17 blo _0206E120 - bl ErrorHandling + bl GF_AssertFail _0206E120: ldr r0, _0206E128 ; =UNK_020F843C ldrb r0, [r0, r4] @@ -255,7 +255,7 @@ FUN_0206E278: ; 0x0206E278 add r4, r0, #0x0 cmp r4, #0x3 blo _0206E284 - bl ErrorHandling + bl GF_AssertFail _0206E284: ldr r0, _0206E28C ; =UNK_020F83D4 lsl r1, r4, #0x2 @@ -270,7 +270,7 @@ FUN_0206E290: ; 0x0206E290 add r4, r0, #0x0 cmp r4, #0x3 blo _0206E29C - bl ErrorHandling + bl GF_AssertFail _0206E29C: ldr r0, _0206E2A4 ; =UNK_020F83D0 ldrb r0, [r0, r4] diff --git a/arm9/asm/unk_0206F3FC.s b/arm9/asm/unk_0206F3FC.s index b7b79b0e..17adb2d2 100644 --- a/arm9/asm/unk_0206F3FC.s +++ b/arm9/asm/unk_0206F3FC.s @@ -781,7 +781,7 @@ _0206F914: bl FUN_02001C5C ldr r0, _0206F978 ; =0x000006F8 ldr r0, [r4, r0] - bl ListMenu_dtor + bl ListMenuItems_dtor add r0, r4, #0x0 mov r1, #0x1d mov r2, #0x1 @@ -1237,7 +1237,7 @@ FUN_0206FCD4: ; 0x0206FCD4 bl FUN_020178A0 mov r0, #0xc add r1, r4, #0x0 - bl FUN_02016A8C + bl FreeToHeapExplicit pop {r4, pc} .balign 4 @@ -1256,7 +1256,7 @@ FUN_0206FD24: ; 0x0206FD24 mov r0, #0x14 mov r1, #0xf mov r3, #0x3 - bl FUN_0200687C + bl GfGfxLoader_LoadCharData mov r0, #0x0 str r0, [sp, #0x0] str r0, [sp, #0x4] @@ -1267,14 +1267,14 @@ FUN_0206FD24: ; 0x0206FD24 mov r0, #0x14 mov r1, #0x11 mov r3, #0x3 - bl FUN_020068C8 + bl GfGfxLoader_LoadScrnData mov r0, #0x14 ; NARC_GRAPHIC_PLIST_GRA mov r1, #0x10 mov r2, #0xc bl AllocAndReadWholeNarcMemberByIdPair add r1, sp, #0x10 add r4, r0, #0x0 - bl FUN_020B0138 + bl NNS_G2dGetUnpackedPaletteData ldr r2, [sp, #0x10] mov r0, #0x3 ldr r1, [r2, #0xc] @@ -1293,7 +1293,7 @@ FUN_0206FD24: ; 0x0206FD24 bl memcpy mov r0, #0xc add r1, r4, #0x0 - bl FUN_02016A8C + bl FreeToHeapExplicit mov r1, #0x1a mov r0, #0x0 lsl r1, r1, #0x4 @@ -1331,7 +1331,7 @@ FUN_0206FD24: ; 0x0206FD24 mov r0, #0x14 mov r1, #0x3 mov r3, #0x4 - bl FUN_0200687C + bl GfGfxLoader_LoadCharData mov r3, #0x20 mov r1, #0x4 str r3, [sp, #0x0] @@ -1339,7 +1339,7 @@ FUN_0206FD24: ; 0x0206FD24 str r0, [sp, #0x4] mov r0, #0x14 add r2, r1, #0x0 - bl FUN_02006930 + bl GfGfxLoader_GXLoadPal mov r0, #0x0 str r0, [sp, #0x0] str r0, [sp, #0x4] @@ -1349,7 +1349,7 @@ FUN_0206FD24: ; 0x0206FD24 ldr r2, [r5, #0x0] mov r0, #0x14 mov r3, #0x5 - bl FUN_0200687C + bl GfGfxLoader_LoadCharData mov r0, #0x0 str r0, [sp, #0x0] str r0, [sp, #0x4] @@ -1360,7 +1360,7 @@ FUN_0206FD24: ; 0x0206FD24 mov r0, #0x14 mov r1, #0xe mov r3, #0x5 - bl FUN_020068C8 + bl GfGfxLoader_LoadScrnData mov r0, #0x20 str r0, [sp, #0x0] mov r0, #0xc @@ -1369,7 +1369,7 @@ FUN_0206FD24: ; 0x0206FD24 mov r1, #0xd mov r2, #0x4 mov r3, #0x0 - bl FUN_02006930 + bl GfGfxLoader_GXLoadPal mov r2, #0x99 lsl r2, r2, #0x2 mov r3, #0xf9 @@ -3729,7 +3729,7 @@ _02071146: bl FUN_02072844 mov r0, #0xc add r1, r4, #0x0 - bl FUN_02016A8C + bl FreeToHeapExplicit add r0, r5, #0x0 bl FUN_0207295C mov r1, #0x0 @@ -5223,7 +5223,7 @@ FUN_02071CB4: ; 0x02071CB4 lsl r1, r1, #0x4 add r0, r0, r1 mov r1, #0x0 - bl FUN_02019620 + bl FillWindowPixelBuffer add r0, r5, #0x0 add r1, r6, #0x0 bl FUN_02072B7C @@ -5645,7 +5645,7 @@ _02072054: bl FUN_0200D0BC add r0, r5, r7 mov r1, #0xf - bl FUN_02019620 + bl FillWindowPixelBuffer add r0, r5, #0x0 bl FUN_0207322C add r0, r4, #0x0 @@ -5902,7 +5902,7 @@ _02072282: lsl r0, r0, #0x2 add r0, r5, r0 mov r1, #0xf - bl FUN_02019620 + bl FillWindowPixelBuffer add r0, r5, #0x0 bl FUN_0207322C mov r0, #0xb @@ -6066,7 +6066,7 @@ _020723D6: lsl r0, r0, #0x2 add r0, r5, r0 mov r1, #0xf - bl FUN_02019620 + bl FillWindowPixelBuffer add r0, r5, #0x0 bl FUN_0207322C ldr r0, _02072410 ; =0x000005A4 @@ -6204,7 +6204,7 @@ FUN_020724D4: ; 0x020724D4 bl AllocAndReadWholeNarcMemberByIdPair add r1, sp, #0xc str r0, [sp, #0x8] - bl FUN_020B0180 + bl NNS_G2dGetUnpackedScreenData ldr r0, [sp, #0xc] mov r4, #0x0 str r0, [sp, #0x4] diff --git a/arm9/asm/unk_02072548.s b/arm9/asm/unk_02072548.s index 5b3ed0a3..a08d279d 100644 --- a/arm9/asm/unk_02072548.s +++ b/arm9/asm/unk_02072548.s @@ -453,7 +453,7 @@ FUN_02072844: ; 0x02072844 bl FUN_02019064 ldr r0, [sp, #0x14] mov r1, #0xc - bl ListMenu_ctor + bl ListMenuItems_ctor ldr r1, _0207294C ; =0x000006F8 mov r6, #0x0 str r0, [r5, r1] @@ -473,7 +473,7 @@ _02072890: ldr r1, _02072950 ; =0x000006E8 ldr r0, [r5, r0] ldr r1, [r3, r1] - bl ListMenu_AddItem + bl ListMenuItems_AddItem add r0, r6, #0x1 lsl r0, r0, #0x10 lsr r6, r0, #0x10 @@ -488,7 +488,7 @@ _020728B4: ldr r1, _02072954 ; =0x000006AC ldr r0, [r5, r0] ldr r1, [r3, r1] - bl ListMenu_AddItem + bl ListMenuItems_AddItem _020728CC: add r0, r4, #0x1 lsl r0, r0, #0x10 @@ -870,7 +870,7 @@ FUN_02072BBC: ; 0x02072BBC add r0, r5, r4 mov r2, #0x4 add r3, r1, #0x0 - bl FUN_020196F4 + bl FillWindowPixelRect add r0, r5, r4 bl FUN_02019220 add sp, #0x8 @@ -1000,7 +1000,7 @@ _02072CBE: mov r1, #0xa mov r2, #0x0 mov r3, #0x2 - bl FUN_020196F4 + bl FillWindowPixelRect str r5, [sp, #0x0] mov r0, #0x2 str r0, [sp, #0x4] @@ -1008,7 +1008,7 @@ _02072CBE: mov r1, #0x9 mov r2, #0x0 mov r3, #0x3 - bl FUN_020196F4 + bl FillWindowPixelRect str r5, [sp, #0x0] mov r0, #0x1 str r0, [sp, #0x4] @@ -1016,7 +1016,7 @@ _02072CBE: mov r1, #0xa mov r2, #0x0 mov r3, #0x5 - bl FUN_020196F4 + bl FillWindowPixelRect add r0, r4, #0x0 bl FUN_02019220 add sp, #0xc @@ -1042,14 +1042,14 @@ FUN_02072D1C: ; 0x02072D1C str r0, [sp, #0x4] add r0, r1, r0 mov r1, #0x0 - bl FUN_02019620 + bl FillWindowPixelBuffer add r0, r4, #0x1 lsl r0, r0, #0x4 add r7, r5, #0x4 str r0, [sp, #0x8] add r0, r7, r0 mov r1, #0x0 - bl FUN_02019620 + bl FillWindowPixelBuffer add r0, r7, #0x0 str r0, [sp, #0xc] add r0, r4, #0x2 @@ -1058,7 +1058,7 @@ FUN_02072D1C: ; 0x02072D1C str r0, [sp, #0x10] add r0, r1, r0 mov r1, #0x0 - bl FUN_02019620 + bl FillWindowPixelBuffer add r0, r7, #0x0 str r0, [sp, #0x14] add r0, r4, #0x3 @@ -1066,7 +1066,7 @@ FUN_02072D1C: ; 0x02072D1C ldr r0, [sp, #0x14] mov r1, #0x0 add r0, r0, r4 - bl FUN_02019620 + bl FillWindowPixelBuffer add r0, r5, #0x0 add r1, r6, #0x0 bl FUN_02072A54 @@ -1179,13 +1179,13 @@ FUN_02072E4C: ; 0x02072E4C lsl r0, r6, #0x4 add r0, r1, r0 mov r1, #0x0 - bl FUN_02019620 + bl FillWindowPixelBuffer add r0, r6, #0x1 add r1, r5, #0x4 lsl r0, r0, #0x4 add r0, r1, r0 mov r1, #0x0 - bl FUN_02019620 + bl FillWindowPixelBuffer add r0, r5, #0x0 add r1, r4, #0x0 bl FUN_02072A54 @@ -1249,13 +1249,13 @@ FUN_02072EE4: ; 0x02072EE4 lsl r0, r6, #0x4 add r0, r1, r0 mov r1, #0x0 - bl FUN_02019620 + bl FillWindowPixelBuffer add r0, r6, #0x1 add r1, r5, #0x4 lsl r0, r0, #0x4 add r0, r1, r0 mov r1, #0x0 - bl FUN_02019620 + bl FillWindowPixelBuffer add r0, r5, #0x0 add r1, r4, #0x0 bl FUN_02072A54 @@ -1319,13 +1319,13 @@ FUN_02072F78: ; 0x02072F78 lsl r0, r6, #0x4 add r0, r1, r0 mov r1, #0x0 - bl FUN_02019620 + bl FillWindowPixelBuffer add r0, r6, #0x1 add r1, r5, #0x4 lsl r0, r0, #0x4 add r0, r1, r0 mov r1, #0x0 - bl FUN_02019620 + bl FillWindowPixelBuffer add r0, r5, #0x0 add r1, r4, #0x0 bl FUN_02072A54 @@ -1367,13 +1367,13 @@ FUN_02072FDC: ; 0x02072FDC lsl r0, r6, #0x4 add r0, r1, r0 mov r1, #0x0 - bl FUN_02019620 + bl FillWindowPixelBuffer add r0, r6, #0x1 add r1, r5, #0x4 lsl r0, r0, #0x4 add r0, r1, r0 mov r1, #0x0 - bl FUN_02019620 + bl FillWindowPixelBuffer add r0, r5, #0x0 add r1, r4, #0x0 bl FUN_02072A54 @@ -1463,12 +1463,12 @@ FUN_02073094: ; 0x02073094 add r4, r1, #0x0 add r0, r5, r0 mov r1, #0x0 - bl FUN_02019620 + bl FillWindowPixelBuffer mov r0, #0x7d lsl r0, r0, #0x2 add r0, r5, r0 mov r1, #0x0 - bl FUN_02019620 + bl FillWindowPixelBuffer mov r0, #0x1 tst r0, r4 beq _020730FE @@ -1563,7 +1563,7 @@ FUN_02073160: ; 0x02073160 _0207317A: add r0, r4, #0x0 mov r1, #0xf - bl FUN_02019620 + bl FillWindowPixelBuffer mov r0, #0x0 mvn r0, r0 cmp r6, r0 @@ -1634,7 +1634,7 @@ FUN_020731E8: ; 0x020731E8 _02073202: add r0, r5, r6 mov r1, #0xf - bl FUN_02019620 + bl FillWindowPixelBuffer mov r0, #0x0 mvn r0, r0 cmp r4, r0 @@ -1717,7 +1717,7 @@ _020732A6: b _020732BE _020732AE: ldr r0, _020732C8 ; =0x00000483 - bl PlayBGM + bl PlaySound b _020732BE _020732B6: ldr r0, _020732C4 ; =0x000005E6 @@ -1763,7 +1763,7 @@ FUN_020732F4: ; 0x020732F4 add r0, r4, r6 mov r1, #0x0 add r7, r2, #0x0 - bl FUN_02019620 + bl FillWindowPixelBuffer cmp r7, #0x0 beq _02073318 cmp r7, #0x1 @@ -1817,7 +1817,7 @@ FUN_02073364: ; 0x02073364 add r0, r4, r7 mov r1, #0x0 add r6, r2, #0x0 - bl FUN_02019620 + bl FillWindowPixelBuffer cmp r6, #0x0 beq _0207338C cmp r6, #0x1 @@ -1880,7 +1880,7 @@ FUN_020733E4: ; 0x020733E4 add r0, r4, r6 mov r1, #0x0 add r7, r2, #0x0 - bl FUN_02019620 + bl FillWindowPixelBuffer cmp r7, #0x0 ldr r0, _02073440 ; =0x0000069C bne _0207340E @@ -1928,7 +1928,7 @@ FUN_02073448: ; 0x02073448 add r0, r4, r7 mov r1, #0x0 add r6, r2, #0x0 - bl FUN_02019620 + bl FillWindowPixelBuffer cmp r6, #0x6 ldr r0, _020734B8 ; =0x0000069C bhs _02073476 @@ -2046,7 +2046,7 @@ FUN_020734C0: ; 0x020734C0 lsl r0, r0, #0x2 add r0, r5, r0 mov r1, #0xf - bl FUN_02019620 + bl FillWindowPixelBuffer mov r4, #0x0 str r4, [sp, #0x14] add r7, r5, #0x0 @@ -2158,7 +2158,7 @@ FUN_0207363C: ; 0x0207363C mov r1, #0xf mov r2, #0x50 mov r3, #0x0 - bl FUN_020196F4 + bl FillWindowPixelRect ldr r0, _020736E8 ; =0x0000069C mov r1, #0xc0 ldr r0, [r5, r0] diff --git a/arm9/asm/unk_02073DA8.s b/arm9/asm/unk_02073DA8.s index 6635b399..9cac1662 100644 --- a/arm9/asm/unk_02073DA8.s +++ b/arm9/asm/unk_02073DA8.s @@ -46,7 +46,7 @@ FUN_02073DB4: ; 0x02073DB4 bl FUN_02001C5C ldr r0, _02073DF0 ; =0x000006F8 ldr r0, [r4, r0] - bl ListMenu_dtor + bl ListMenuItems_dtor mov r0, #0x95 lsl r0, r0, #0x2 add r0, r4, r0 @@ -69,7 +69,7 @@ FUN_02073DF4: ; 0x02073DF4 bl FUN_020731D4 mov r0, #0x3 mov r1, #0xc - bl ListMenu_ctor + bl ListMenuItems_ctor ldr r1, _02073EB0 ; =0x000006F8 str r0, [r5, r1] mov r0, #0x3 @@ -79,7 +79,7 @@ FUN_02073DF4: ; 0x02073DF4 ldr r0, [r5, r1] sub r1, #0x40 ldr r1, [r5, r1] - bl ListMenu_AddItem + bl ListMenuItems_AddItem mov r0, #0x4 bl FUN_02073DA8 ldr r1, _02073EB0 ; =0x000006F8 @@ -87,7 +87,7 @@ FUN_02073DF4: ; 0x02073DF4 ldr r0, [r5, r1] sub r1, #0x3c ldr r1, [r5, r1] - bl ListMenu_AddItem + bl ListMenuItems_AddItem mov r0, #0x9 bl FUN_02073DA8 ldr r1, _02073EB0 ; =0x000006F8 @@ -95,7 +95,7 @@ FUN_02073DF4: ; 0x02073DF4 ldr r0, [r5, r1] sub r1, #0x28 ldr r1, [r5, r1] - bl ListMenu_AddItem + bl ListMenuItems_AddItem ldr r0, _02073EB0 ; =0x000006F8 mov r1, #0x0 ldr r0, [r5, r0] @@ -155,7 +155,7 @@ FUN_02073EB8: ; 0x02073EB8 bl FUN_02001C5C ldr r0, _02073EE4 ; =0x000006F8 ldr r0, [r5, r0] - bl ListMenu_dtor + bl ListMenuItems_dtor ldr r0, _02073EE8 ; =0x000005A4 mov r1, #0x3 ldr r0, [r5, r0] @@ -186,7 +186,7 @@ FUN_02073EEC: ; 0x02073EEC bl FUN_02001C5C ldr r0, _02074048 ; =0x000006F8 ldr r0, [r5, r0] - bl ListMenu_dtor + bl ListMenuItems_dtor ldr r0, _0207404C ; =0x00000B25 ldrb r1, [r5, r0] mov r0, #0x2c @@ -316,7 +316,7 @@ _02074018: lsl r0, r0, #0x2 add r0, r5, r0 mov r1, #0xf - bl FUN_02019620 + bl FillWindowPixelBuffer add r0, r5, #0x0 bl FUN_0207322C mov r0, #0xf @@ -381,7 +381,7 @@ FUN_020740AC: ; 0x020740AC bl FUN_020731D4 mov r0, #0x3 mov r1, #0xc - bl ListMenu_ctor + bl ListMenuItems_ctor ldr r1, _02074168 ; =0x000006F8 str r0, [r5, r1] mov r0, #0x6 @@ -391,7 +391,7 @@ FUN_020740AC: ; 0x020740AC ldr r0, [r5, r1] sub r1, #0x34 ldr r1, [r5, r1] - bl ListMenu_AddItem + bl ListMenuItems_AddItem mov r0, #0x7 bl FUN_02073DA8 ldr r1, _02074168 ; =0x000006F8 @@ -399,7 +399,7 @@ FUN_020740AC: ; 0x020740AC ldr r0, [r5, r1] sub r1, #0x30 ldr r1, [r5, r1] - bl ListMenu_AddItem + bl ListMenuItems_AddItem mov r0, #0x9 bl FUN_02073DA8 ldr r1, _02074168 ; =0x000006F8 @@ -407,7 +407,7 @@ FUN_020740AC: ; 0x020740AC ldr r0, [r5, r1] sub r1, #0x28 ldr r1, [r5, r1] - bl ListMenu_AddItem + bl ListMenuItems_AddItem ldr r0, _02074168 ; =0x000006F8 mov r1, #0x0 ldr r0, [r5, r0] @@ -467,7 +467,7 @@ FUN_02074170: ; 0x02074170 bl FUN_02001C5C ldr r0, _0207419C ; =0x000006F8 ldr r0, [r5, r0] - bl ListMenu_dtor + bl ListMenuItems_dtor ldr r0, _020741A0 ; =0x000005A4 mov r1, #0x7 ldr r0, [r5, r0] @@ -497,7 +497,7 @@ FUN_020741A4: ; 0x020741A4 bl FUN_02001C5C ldr r0, _020741F0 ; =0x000006F8 ldr r0, [r5, r0] - bl ListMenu_dtor + bl ListMenuItems_dtor add r0, r5, #0x0 mov r1, #0x2b mov r2, #0x1 @@ -744,7 +744,7 @@ FUN_020743AC: ; 0x020743AC bl FUN_02001C5C ldr r0, _02074414 ; =0x000006F8 ldr r0, [r5, r0] - bl ListMenu_dtor + bl ListMenuItems_dtor ldr r0, _02074418 ; =0x000005A4 mov r1, #0x0 ldr r0, [r5, r0] @@ -1672,7 +1672,7 @@ _02074B6A: add r1, r7, #0x0 str r0, [r3, #0x0] mov r0, #0xc - bl FUN_02016A8C + bl FreeToHeapExplicit mov r1, #0x3 lsl r1, r1, #0x8 ldrb r3, [r4, r1] @@ -2324,7 +2324,7 @@ FUN_02075090: ; 0x02075090 bl FUN_02001C5C ldr r0, _020750C0 ; =0x000006F8 ldr r0, [r5, r0] - bl ListMenu_dtor + bl ListMenuItems_dtor mov r0, #0x1b str r0, [r4, #0x0] pop {r3-r5, pc} @@ -2349,7 +2349,7 @@ FUN_020750C4: ; 0x020750C4 bl FUN_02001C5C ldr r0, _020750F4 ; =0x000006F8 ldr r0, [r5, r0] - bl ListMenu_dtor + bl ListMenuItems_dtor mov r0, #0x1b str r0, [r4, #0x0] pop {r3-r5, pc} @@ -2482,7 +2482,7 @@ _020751E4: bl FUN_02001C5C ldr r0, _0207523C ; =0x000006F8 ldr r0, [r4, r0] - bl ListMenu_dtor + bl ListMenuItems_dtor mov r0, #0x1b str r0, [r6, #0x0] pop {r4-r6, pc} diff --git a/arm9/asm/unk_0207550C.s b/arm9/asm/unk_0207550C.s index 14488621..9e2ab9b0 100644 --- a/arm9/asm/unk_0207550C.s +++ b/arm9/asm/unk_0207550C.s @@ -1403,7 +1403,7 @@ _020760D4: lsl r1, r1, #0x4 add r0, r0, r1 mov r1, #0x0 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r1, _02076134 ; =0x00000B25 add r0, r5, #0x0 ldrb r1, [r5, r1] @@ -1672,7 +1672,7 @@ _020762DC: lsl r1, r1, #0x4 add r0, r0, r1 mov r1, #0x0 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r1, _020763E0 ; =0x00000B25 add r0, r4, #0x0 ldrb r1, [r4, r1] @@ -3174,7 +3174,7 @@ FUN_02076FB0: ; 0x02076FB0 mov r2, #0x2 ldr r1, [r5, r1] mvn r2, r2 - bl ListMenu_AddItem + bl ListMenuItems_AddItem mov r0, #0x0 pop {r3-r7, pc} _0207701C: @@ -3182,7 +3182,7 @@ _0207701C: sub r1, #0x50 ldr r1, [r5, r1] add r2, r6, #0x0 - bl ListMenu_AddItem + bl ListMenuItems_AddItem mov r0, #0x1 pop {r3-r7, pc} .balign 4 @@ -3209,7 +3209,7 @@ _02077050: _02077058: mov r0, #0x4 mov r1, #0xc - bl ListMenu_ctor + bl ListMenuItems_ctor ldr r1, _02077108 ; =0x000006F8 str r0, [r4, r1] add r0, r4, #0x0 @@ -3328,7 +3328,7 @@ _02077130: bl FUN_02001C5C ldr r0, _02077230 ; =0x000006F8 ldr r0, [r5, r0] - bl ListMenu_dtor + bl ListMenuItems_dtor add r0, r5, #0x0 mov r1, #0x20 mov r2, #0x1 @@ -3353,7 +3353,7 @@ _0207716A: bl FUN_02001C5C ldr r0, _02077230 ; =0x000006F8 ldr r0, [r5, r0] - bl ListMenu_dtor + bl ListMenuItems_dtor ldr r0, _02077234 ; =0x000005A4 ldr r6, [r5, r0] add r0, r5, #0x0 diff --git a/arm9/asm/unk_020772F0.s b/arm9/asm/unk_020772F0.s index a5d7b26d..87e9cab0 100644 --- a/arm9/asm/unk_020772F0.s +++ b/arm9/asm/unk_020772F0.s @@ -1013,7 +1013,7 @@ _02077594: ldr r0, _020776B0 ; =0x00000448 mov r1, #0xf add r0, r4, r0 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, _020776B0 ; =0x00000448 mov r2, #0x1 add r0, r4, r0 @@ -1509,18 +1509,18 @@ _02077982: ldr r1, _02077A70 ; =0x000004AC mov r0, #0x12 ldr r1, [r4, r1] - bl FUN_02016A8C + bl FreeToHeapExplicit ldr r0, [r4, #0x0] cmp r0, #0x1 bne _020779C2 ldr r1, _02077A74 ; =0x000004B4 mov r0, #0x12 ldr r1, [r4, r1] - bl FUN_02016A8C + bl FreeToHeapExplicit ldr r1, _02077A78 ; =0x000004BC mov r0, #0x12 ldr r1, [r4, r1] - bl FUN_02016A8C + bl FreeToHeapExplicit _020779C2: mov r0, #0x16 lsl r0, r0, #0x4 @@ -1639,11 +1639,11 @@ FUN_02077AC4: ; 0x02077AC4 ldr r0, [r4, #0x18] cmp r0, #0x0 bne _02077AD2 - bl ErrorHandling + bl GF_AssertFail _02077AD2: cmp r4, #0x0 bne _02077ADA - bl ErrorHandling + bl GF_AssertFail _02077ADA: ldr r0, [r4, #0x18] bl String_dtor @@ -2250,7 +2250,7 @@ _02077FB0: bl FUN_020178A0 mov r0, #0x12 add r1, r6, #0x0 - bl FUN_02016A8C + bl FreeToHeapExplicit pop {r4-r6, pc} thumb_func_start FUN_02077FE8 @@ -2269,7 +2269,7 @@ FUN_02077FE8: ; 0x02077FE8 mov r0, #0x1f add r2, r1, #0x0 add r3, r1, #0x0 - bl FUN_02006930 + bl GfGfxLoader_GXLoadPal mov r0, #0x20 str r0, [sp, #0x0] mov r0, #0x12 @@ -2278,7 +2278,7 @@ FUN_02077FE8: ; 0x02077FE8 add r1, r0, #0x0 mov r2, #0x4 mov r3, #0x0 - bl FUN_02006930 + bl GfGfxLoader_GXLoadPal mov r0, #0x4 mov r1, #0x0 bl FUN_02017FE4 @@ -2295,7 +2295,7 @@ FUN_02077FE8: ; 0x02077FE8 mov r0, #0x1f add r2, r4, #0x0 add r3, r1, #0x0 - bl FUN_0200687C + bl GfGfxLoader_LoadCharData mov r0, #0x0 str r0, [sp, #0x0] mov r0, #0x6 @@ -2309,7 +2309,7 @@ FUN_02077FE8: ; 0x02077FE8 mov r1, #0x4 add r2, r4, #0x0 mov r3, #0x2 - bl FUN_020068C8 + bl GfGfxLoader_LoadScrnData mov r0, #0x0 str r0, [sp, #0x0] mov r0, #0x2 @@ -2322,7 +2322,7 @@ FUN_02077FE8: ; 0x02077FE8 mov r0, #0x1f mov r1, #0x2 add r2, r4, #0x0 - bl FUN_0200687C + bl GfGfxLoader_LoadCharData mov r0, #0x0 str r0, [sp, #0x0] mov r0, #0xe @@ -2335,7 +2335,7 @@ FUN_02077FE8: ; 0x02077FE8 mov r0, #0x1f mov r1, #0x6 add r2, r4, #0x0 - bl FUN_020068C8 + bl GfGfxLoader_LoadScrnData mov r3, #0x0 mov r0, #0xe str r3, [sp, #0x0] @@ -2348,7 +2348,7 @@ FUN_02077FE8: ; 0x02077FE8 mov r0, #0x1f mov r1, #0x7 add r2, r4, #0x0 - bl FUN_020068C8 + bl GfGfxLoader_LoadScrnData mov r1, #0x6 mov r0, #0x0 lsl r1, r1, #0x6 @@ -2382,7 +2382,7 @@ FUN_02077FE8: ; 0x02077FE8 mov r1, #0x10 mov r2, #0x1 add r3, r5, r3 - bl FUN_02006BB0 + bl GfGfxLoader_GetCharData ldr r1, _0207810C ; =0x000004AC str r0, [r5, r1] add sp, #0x10 @@ -2418,7 +2418,7 @@ FUN_02078140: ; 0x02078140 push {r4-r7, lr} sub sp, #0x14 add r5, r0, #0x0 - bl FUN_020B0FC0 + bl NNS_G2dInitOamManagerModule mov r0, #0x0 str r0, [sp, #0x0] mov r1, #0x80 @@ -2533,7 +2533,7 @@ _0207818C: mov r0, #0x13 mov r2, #0x0 add r3, r5, r3 - bl FUN_02006BB0 + bl GfGfxLoader_GetCharData ldr r1, _02078320 ; =0x000004B4 str r0, [r5, r1] add r0, r1, #0x4 @@ -2547,7 +2547,7 @@ _0207818C: lsl r2, r0, #0x6 add r2, r5, r2 mov r3, #0x12 - bl FUN_02006C08 + bl GfGfxLoader_GetPlttData ldr r1, _02078324 ; =0x000004BC str r0, [r5, r1] add r0, r1, #0x4 @@ -3131,7 +3131,7 @@ _020786F0: mov r0, #0x1f add r1, r7, #0x6 add r3, r6, #0x0 - bl FUN_020068C8 + bl GfGfxLoader_LoadScrnData add r0, r4, #0x0 add r1, r6, #0x0 bl FUN_02078BA8 @@ -3359,7 +3359,7 @@ FUN_020788C4: ; 0x020788C4 _020788DE: add r0, r5, #0x0 mov r1, #0x1 - bl FUN_02019620 + bl FillWindowPixelBuffer mov r1, #0x0 str r1, [sp, #0x0] ldr r0, _02078908 ; =0x000E0F01 @@ -3435,7 +3435,7 @@ FUN_0207890C: ; 0x0207890C ldr r2, [r5, r2] mov r0, #0x1f mov r1, #0x9 - bl FUN_020068C8 + bl GfGfxLoader_LoadScrnData mov r0, #0x46 mov r1, #0x4 lsl r0, r0, #0x4 @@ -3524,7 +3524,7 @@ _020789D8: lsl r0, r0, #0x2 add r0, r5, r0 mov r1, #0x1 - bl FUN_02019620 + bl FillWindowPixelBuffer mov r0, #0x3 str r0, [sp, #0x0] mov r0, #0x7 @@ -3548,7 +3548,7 @@ _020789D8: ldr r0, _02078B74 ; =0x00000438 mov r1, #0x1 add r0, r5, r0 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r1, [r5, #0x0] cmp r1, #0x5 bne _02078A90 @@ -3581,7 +3581,7 @@ _02078A90: ldr r0, _02078B78 ; =0x00000448 mov r1, #0xf add r0, r5, r0 - bl FUN_02019620 + bl FillWindowPixelBuffer mov r2, #0x5e ldr r0, _02078B78 ; =0x00000448 lsl r2, r2, #0x2 @@ -3640,7 +3640,7 @@ _02078B0E: bl FUN_02019064 add r0, r7, r6 mov r1, #0x0 - bl FUN_02019620 + bl FillWindowPixelBuffer add r4, r4, #0x1 cmp r4, #0x3 blt _02078B0E @@ -3661,7 +3661,7 @@ _02078B0E: ldr r0, _02078B84 ; =0x00000428 mov r1, #0x0 add r0, r5, r0 - bl FUN_02019620 + bl FillWindowPixelBuffer add sp, #0x14 pop {r4-r7, pc} .balign 4 @@ -4119,7 +4119,7 @@ _02078EB4: mov r2, #0x0 ldr r0, [sp, #0x18] add r3, r2, #0x0 - bl FUN_02019658 + bl BlitBitmapRectToWindow b _02078F56 _02078F00: ldr r0, _02078F78 ; =0x0000D004 @@ -4212,7 +4212,7 @@ FUN_02078FA0: ; 0x02078FA0 mov r1, #0x0 add r5, r2, #0x0 add r4, r3, #0x0 - bl FUN_02019620 + bl FillWindowPixelBuffer add r0, r6, #0x0 ldr r3, _0207906C ; =0x000D0E0F add r0, #0x30 @@ -4266,7 +4266,7 @@ _02079012: strh r1, [r0, #0x2] add r0, r6, r7 mov r1, #0x0 - bl FUN_02019620 + bl FillWindowPixelBuffer add r0, r4, #0x0 add r1, sp, #0xc bl CopyU16ArrayToString @@ -4563,7 +4563,7 @@ _0207924A: lsl r0, r0, #0x2 add r0, r4, r0 mov r1, #0x1 - bl FUN_02019620 + bl FillWindowPixelBuffer mov r0, #0xc str r0, [sp, #0x0] mov r2, #0x0 @@ -4599,7 +4599,7 @@ _0207927C: lsl r0, r0, #0x2 add r0, r4, r0 mov r1, #0x1 - bl FUN_02019620 + bl FillWindowPixelBuffer mov r0, #0xc str r0, [sp, #0x0] mov r2, #0x0 @@ -4632,7 +4632,7 @@ _020792CA: lsl r0, r0, #0x2 add r0, r4, r0 mov r1, #0x1 - bl FUN_02019620 + bl FillWindowPixelBuffer mov r0, #0xc str r0, [sp, #0x0] mov r2, #0x0 @@ -4708,7 +4708,7 @@ _0207936A: lsl r0, r0, #0x2 add r0, r4, r0 mov r1, #0x1 - bl FUN_02019620 + bl FillWindowPixelBuffer mov r0, #0x56 lsl r0, r0, #0x2 ldrh r0, [r4, r0] @@ -4835,7 +4835,7 @@ _02079470: lsl r0, r0, #0x2 add r0, r4, r0 mov r1, #0x1 - bl FUN_02019620 + bl FillWindowPixelBuffer mov r0, #0xc str r0, [sp, #0x0] mov r2, #0x0 @@ -5203,7 +5203,7 @@ FUN_0207974C: ; 0x0207974C add r5, r0, #0x0 str r3, [sp, #0x14] str r2, [sp, #0x30] - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r1, _0207982C ; =UNK_020F9D30 ldr r0, [sp, #0x10] mov r7, #0x0 @@ -5219,7 +5219,7 @@ _0207976C: add r1, r4, #0x0 lsr r2, r2, #0x10 mov r3, #0x0 - bl FUN_020196F4 + bl FillWindowPixelRect mov r0, #0x10 str r0, [sp, #0x0] mov r0, #0x13 @@ -5229,7 +5229,7 @@ _0207976C: add r1, r4, #0x0 lsr r2, r2, #0x10 mov r3, #0x26 - bl FUN_020196F4 + bl FillWindowPixelRect mov r0, #0x10 str r0, [sp, #0x0] mov r0, #0x13 @@ -5239,7 +5239,7 @@ _0207976C: add r1, r4, #0x0 lsr r2, r2, #0x10 mov r3, #0x4c - bl FUN_020196F4 + bl FillWindowPixelRect add r7, r7, #0x1 add r6, #0x20 cmp r7, #0x6 @@ -5256,7 +5256,7 @@ _020797BA: add r1, r4, #0x0 lsr r2, r2, #0x10 mov r3, #0x13 - bl FUN_020196F4 + bl FillWindowPixelRect mov r0, #0x10 str r0, [sp, #0x0] mov r0, #0x13 @@ -5266,7 +5266,7 @@ _020797BA: add r1, r4, #0x0 lsr r2, r2, #0x10 mov r3, #0x39 - bl FUN_020196F4 + bl FillWindowPixelRect add r7, r7, #0x1 add r6, #0x20 cmp r7, #0x7 diff --git a/arm9/asm/unk_020799E8.s b/arm9/asm/unk_020799E8.s index 7f35d1a7..9227ca82 100644 --- a/arm9/asm/unk_020799E8.s +++ b/arm9/asm/unk_020799E8.s @@ -264,7 +264,7 @@ FUN_02079B60: ; 0x02079B60 _02079B9A: add r0, r7, #0x0 add r1, sp, #0x10 - bl FUN_020B0088 + bl NNS_G2dGetUnpackedCharacterData cmp r4, #0x0 bne _02079BAE ldr r0, [sp, #0x10] @@ -286,7 +286,7 @@ _02079BAE: _02079BC6: add r0, r7, #0x0 add r1, sp, #0xc - bl FUN_020B0180 + bl NNS_G2dGetUnpackedScreenData cmp r4, #0x0 bne _02079BDA ldr r0, [sp, #0xc] @@ -322,7 +322,7 @@ _02079BF8: _02079C10: add r0, r7, #0x0 add r1, sp, #0x8 - bl FUN_020B0138 + bl NNS_G2dGetUnpackedPaletteData cmp r4, #0x0 bne _02079C24 ldr r0, [sp, #0x8] @@ -363,6 +363,6 @@ FUN_02079C40: ; 0x02079C40 bl NARC_ReadWholeMember add r0, r4, #0x0 add r1, r7, #0x0 - bl FUN_020B0180 + bl NNS_G2dGetUnpackedScreenData add r0, r4, #0x0 pop {r3-r7, pc} diff --git a/arm9/asm/unk_02079C70.s b/arm9/asm/unk_02079C70.s index 722c8144..3134a96c 100644 --- a/arm9/asm/unk_02079C70.s +++ b/arm9/asm/unk_02079C70.s @@ -533,7 +533,7 @@ FUN_0207A08C: ; 0x0207A08C bl FUN_020178A0 mov r0, #0x13 add r1, r4, #0x0 - bl FUN_02016A8C + bl FreeToHeapExplicit pop {r4, pc} .balign 4 @@ -551,7 +551,7 @@ FUN_0207A0CC: ; 0x0207A0CC ldr r2, [r4, #0x0] mov r0, #0x27 mov r3, #0x3 - bl FUN_0200687C + bl GfGfxLoader_LoadCharData mov r0, #0x0 str r0, [sp, #0x0] str r0, [sp, #0x4] @@ -562,7 +562,7 @@ FUN_0207A0CC: ; 0x0207A0CC ldr r2, [r4, #0x0] mov r0, #0x27 add r3, r1, #0x0 - bl FUN_020068C8 + bl GfGfxLoader_LoadScrnData mov r2, #0x0 str r2, [sp, #0x0] mov r0, #0x13 @@ -570,7 +570,7 @@ FUN_0207A0CC: ; 0x0207A0CC mov r0, #0x27 mov r1, #0x1 add r3, r2, #0x0 - bl FUN_02006930 + bl GfGfxLoader_GXLoadPal mov r0, #0x0 str r0, [sp, #0x0] str r0, [sp, #0x4] @@ -581,7 +581,7 @@ FUN_0207A0CC: ; 0x0207A0CC mov r0, #0x27 mov r1, #0xb mov r3, #0x2 - bl FUN_020068C8 + bl GfGfxLoader_LoadScrnData mov r0, #0x0 str r0, [sp, #0x0] str r0, [sp, #0x4] @@ -592,7 +592,7 @@ FUN_0207A0CC: ; 0x0207A0CC mov r0, #0x27 mov r1, #0x2 mov r3, #0x4 - bl FUN_0200687C + bl GfGfxLoader_LoadCharData mov r0, #0x0 str r0, [sp, #0x0] str r0, [sp, #0x4] @@ -603,7 +603,7 @@ FUN_0207A0CC: ; 0x0207A0CC mov r0, #0x27 mov r1, #0x10 mov r3, #0x5 - bl FUN_0200687C + bl GfGfxLoader_LoadCharData mov r0, #0x0 str r0, [sp, #0x0] str r0, [sp, #0x4] @@ -614,7 +614,7 @@ FUN_0207A0CC: ; 0x0207A0CC mov r0, #0x27 mov r1, #0xf mov r3, #0x5 - bl FUN_020068C8 + bl GfGfxLoader_LoadScrnData mov r3, #0x0 str r3, [sp, #0x0] mov r0, #0x13 @@ -622,7 +622,7 @@ FUN_0207A0CC: ; 0x0207A0CC mov r0, #0x27 mov r1, #0xe mov r2, #0x4 - bl FUN_02006930 + bl GfGfxLoader_GXLoadPal add sp, #0x10 pop {r4, pc} @@ -2750,7 +2750,7 @@ _0207B256: bl AllocAndReadWholeNarcMemberByIdPair add r1, sp, #0xc add r4, r0, #0x0 - bl FUN_020B0180 + bl NNS_G2dGetUnpackedScreenData mov r3, #0x0 str r3, [sp, #0x0] mov r0, #0x20 diff --git a/arm9/asm/unk_0207D5BC.s b/arm9/asm/unk_0207D5BC.s index 2546b905..5a814a79 100644 --- a/arm9/asm/unk_0207D5BC.s +++ b/arm9/asm/unk_0207D5BC.s @@ -82,7 +82,7 @@ _0207D5C4: bl FUN_02019150 add r0, r4, r6 mov r1, #0x0 - bl FUN_02019620 + bl FillWindowPixelBuffer add r0, r5, #0x1 lsl r0, r0, #0x10 lsr r5, r0, #0x10 @@ -190,7 +190,7 @@ _0207D692: mov r0, #0x13 lsl r1, r1, #0x18 lsr r1, r1, #0x18 - bl FUN_02018FF4 + bl AllocWindows mov r1, #0x91 lsl r1, r1, #0x2 str r0, [r4, r1] @@ -300,7 +300,7 @@ FUN_0207D768: ; 0x0207D768 lsl r4, r4, #0x2 add r0, r5, r4 mov r1, #0x0 - bl FUN_02019620 + bl FillWindowPixelBuffer mov r1, #0x0 add r2, r4, #0x0 str r1, [sp, #0x0] @@ -371,7 +371,7 @@ FUN_0207D800: ; 0x0207D800 lsl r6, r6, #0x2 add r0, r5, r6 mov r1, #0x0 - bl FUN_02019620 + bl FillWindowPixelBuffer add r0, r6, #0x0 add r0, #0x8c ldr r0, [r5, r0] @@ -444,7 +444,7 @@ FUN_0207D8A0: ; 0x0207D8A0 lsl r0, r0, #0x2 add r0, r5, r0 mov r1, #0x0 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, _0207D918 ; =0x0000025E ldrh r2, [r5, r0] cmp r2, #0x0 @@ -504,7 +504,7 @@ FUN_0207D924: ; 0x0207D924 add r4, r1, #0x0 add r0, r5, r0 mov r1, #0x0 - bl FUN_02019620 + bl FillWindowPixelBuffer mov r0, #0x0 str r0, [sp, #0x0] ldr r3, _0207D954 ; =0x000F0E00 @@ -581,7 +581,7 @@ _0207D9B4: lsl r0, r0, #0x18 lsr r5, r0, #0x18 add r0, r6, #0x0 - bl FUN_0201AB0C + bl GetWindowWidth lsl r0, r0, #0x1b lsr r0, r0, #0x18 sub r0, r0, r5 @@ -598,7 +598,7 @@ _0207D9D8: lsl r0, r0, #0x18 lsr r5, r0, #0x18 add r0, r6, #0x0 - bl FUN_0201AB0C + bl GetWindowWidth lsl r0, r0, #0x1b lsr r0, r0, #0x18 sub r1, r0, r5 @@ -1151,37 +1151,37 @@ FUN_0207DE3C: ; 0x0207DE3C lsl r0, r0, #0x2 ldr r0, [r4, r0] mov r1, #0x0 - bl FUN_02019620 + bl FillWindowPixelBuffer mov r0, #0x91 lsl r0, r0, #0x2 ldr r0, [r4, r0] mov r1, #0x0 add r0, #0x10 - bl FUN_02019620 + bl FillWindowPixelBuffer mov r0, #0x91 lsl r0, r0, #0x2 ldr r0, [r4, r0] mov r1, #0x0 add r0, #0x20 - bl FUN_02019620 + bl FillWindowPixelBuffer mov r0, #0x91 lsl r0, r0, #0x2 ldr r0, [r4, r0] mov r1, #0x0 add r0, #0x30 - bl FUN_02019620 + bl FillWindowPixelBuffer mov r0, #0x91 lsl r0, r0, #0x2 ldr r0, [r4, r0] mov r1, #0x0 add r0, #0x40 - bl FUN_02019620 + bl FillWindowPixelBuffer mov r0, #0x91 lsl r0, r0, #0x2 ldr r0, [r4, r0] mov r1, #0x0 add r0, #0x50 - bl FUN_02019620 + bl FillWindowPixelBuffer mov r1, #0x93 lsl r1, r1, #0x2 ldr r0, [r4, r1] @@ -1522,7 +1522,7 @@ FUN_0207E190: ; 0x0207E190 lsl r0, r0, #0x2 ldr r0, [r5, r0] mov r1, #0x0 - bl FUN_02019620 + bl FillWindowPixelBuffer add r0, r5, #0x0 bl FUN_0207B628 add r6, r0, #0x0 @@ -1601,53 +1601,53 @@ FUN_0207E200: ; 0x0207E200 lsl r0, r0, #0x2 ldr r0, [r4, r0] mov r1, #0x0 - bl FUN_02019620 + bl FillWindowPixelBuffer mov r0, #0x91 lsl r0, r0, #0x2 ldr r0, [r4, r0] mov r1, #0x0 add r0, #0x10 - bl FUN_02019620 + bl FillWindowPixelBuffer mov r0, #0x91 lsl r0, r0, #0x2 ldr r0, [r4, r0] mov r1, #0x0 add r0, #0x20 - bl FUN_02019620 + bl FillWindowPixelBuffer mov r0, #0x91 lsl r0, r0, #0x2 ldr r0, [r4, r0] mov r1, #0x0 add r0, #0x30 - bl FUN_02019620 + bl FillWindowPixelBuffer mov r0, #0x91 lsl r0, r0, #0x2 ldr r0, [r4, r0] mov r1, #0x0 add r0, #0x40 - bl FUN_02019620 + bl FillWindowPixelBuffer mov r0, #0x91 lsl r0, r0, #0x2 ldr r0, [r4, r0] mov r1, #0x0 add r0, #0x50 - bl FUN_02019620 + bl FillWindowPixelBuffer mov r0, #0x91 lsl r0, r0, #0x2 ldr r0, [r4, r0] mov r1, #0x0 add r0, #0x60 - bl FUN_02019620 + bl FillWindowPixelBuffer mov r0, #0x91 lsl r0, r0, #0x2 ldr r0, [r4, r0] mov r1, #0x0 add r0, #0x70 - bl FUN_02019620 + bl FillWindowPixelBuffer mov r0, #0x91 lsl r0, r0, #0x2 ldr r0, [r4, r0] - bl FUN_0201AB0C + bl GetWindowWidth mov r1, #0x76 str r1, [sp, #0x0] mov r1, #0x9d @@ -1875,7 +1875,7 @@ _0207E4C6: ldr r0, [r4, r0] mov r1, #0x0 add r0, #0x10 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r2, _0207E584 ; =0x00000674 mov r1, #0xa5 ldr r0, [r4, r2] @@ -1929,7 +1929,7 @@ _0207E4C6: sub r0, #0x8 ldr r0, [r4, r0] mov r1, #0x0 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r2, _0207E584 ; =0x00000674 mov r1, #0xa3 ldr r0, [r4, r2] @@ -1991,25 +1991,25 @@ _0207E5BC: lsl r0, r0, #0x2 ldr r0, [r4, r0] mov r1, #0x0 - bl FUN_02019620 + bl FillWindowPixelBuffer mov r0, #0x91 lsl r0, r0, #0x2 ldr r0, [r4, r0] mov r1, #0x0 add r0, #0x10 - bl FUN_02019620 + bl FillWindowPixelBuffer mov r0, #0x91 lsl r0, r0, #0x2 ldr r0, [r4, r0] mov r1, #0x0 add r0, #0x20 - bl FUN_02019620 + bl FillWindowPixelBuffer mov r0, #0x91 lsl r0, r0, #0x2 ldr r0, [r4, r0] mov r1, #0x0 add r0, #0x30 - bl FUN_02019620 + bl FillWindowPixelBuffer add r0, r4, #0x0 mov r1, #0x0 bl FUN_0207EA44 @@ -2074,25 +2074,25 @@ _0207E678: lsl r0, r0, #0x2 ldr r0, [r4, r0] mov r1, #0x0 - bl FUN_02019620 + bl FillWindowPixelBuffer mov r0, #0x91 lsl r0, r0, #0x2 ldr r0, [r4, r0] mov r1, #0x0 add r0, #0x10 - bl FUN_02019620 + bl FillWindowPixelBuffer mov r0, #0x91 lsl r0, r0, #0x2 ldr r0, [r4, r0] mov r1, #0x0 add r0, #0x20 - bl FUN_02019620 + bl FillWindowPixelBuffer mov r0, #0x91 lsl r0, r0, #0x2 ldr r0, [r4, r0] mov r1, #0x0 add r0, #0x30 - bl FUN_02019620 + bl FillWindowPixelBuffer add r0, r4, #0x0 mov r1, #0x0 bl FUN_0207EA44 @@ -2144,7 +2144,7 @@ FUN_0207E70C: ; 0x0207E70C lsl r0, r0, #0x2 ldr r0, [r4, r0] mov r1, #0x0 - bl FUN_02019620 + bl FillWindowPixelBuffer mov r0, #0x0 str r0, [sp, #0x0] ldr r2, _0207E780 ; =0x00000699 @@ -2214,7 +2214,7 @@ _0207E7BC: ldr r0, [r4, r0] mov r1, #0x0 add r0, #0x10 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r2, _0207E830 ; =0x00000674 mov r1, #0xa5 ldr r0, [r4, r2] @@ -2278,7 +2278,7 @@ FUN_0207E840: ; 0x0207E840 ldr r0, [r5, r0] mov r1, #0x0 add r0, #0x10 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, _0207E994 ; =0x00000674 mov r1, #0xba ldr r0, [r5, r0] @@ -2436,13 +2436,13 @@ FUN_0207E9A0: ; 0x0207E9A0 ldr r0, [r4, r0] mov r1, #0x0 add r0, #0x20 - bl FUN_02019620 + bl FillWindowPixelBuffer mov r0, #0x91 lsl r0, r0, #0x2 ldr r0, [r4, r0] mov r1, #0x0 add r0, #0x30 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, _0207EA34 ; =0x0000069A mov r1, #0x3 ldrb r0, [r4, r0] @@ -2659,19 +2659,19 @@ FUN_0207EB64: ; 0x0207EB64 ldr r0, [r5, r0] mov r1, #0x0 add r0, #0x50 - bl FUN_02019620 + bl FillWindowPixelBuffer mov r0, #0x91 lsl r0, r0, #0x2 ldr r0, [r5, r0] mov r1, #0x0 add r0, #0x60 - bl FUN_02019620 + bl FillWindowPixelBuffer mov r0, #0x91 lsl r0, r0, #0x2 ldr r0, [r5, r0] mov r1, #0x0 add r0, #0x70 - bl FUN_02019620 + bl FillWindowPixelBuffer add r0, r4, #0x0 mov r1, #0x2 bl GetWazaAttr @@ -2819,7 +2819,7 @@ FUN_0207ECDC: ; 0x0207ECDC ldr r0, [r4, r0] mov r1, #0x0 add r0, #0x40 - bl FUN_02019620 + bl FillWindowPixelBuffer add r0, r4, #0x0 mov r1, #0x4 bl FUN_0207EA44 @@ -2862,7 +2862,7 @@ FUN_0207ED30: ; 0x0207ED30 lsl r0, r0, #0x4 add r0, r1, r0 mov r1, #0x0 - bl FUN_02019620 + bl FillWindowPixelBuffer mov r0, #0x91 lsl r0, r0, #0x2 ldr r1, [r4, r0] @@ -2873,7 +2873,7 @@ FUN_0207ED30: ; 0x0207ED30 lsl r0, r0, #0x4 add r0, r1, r0 mov r1, #0x0 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r1, _0207EDB0 ; =0x0000068D add r0, r4, #0x0 ldrb r1, [r4, r1] @@ -2946,7 +2946,7 @@ _0207EDEE: _0207EDF6: add r0, r4, #0x0 mov r1, #0x0 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r2, _0207EE24 ; =0x00000674 mov r1, #0x9c ldr r0, [r5, r2] @@ -2977,7 +2977,7 @@ FUN_0207EE2C: ; 0x0207EE2C add r4, r1, #0x0 add r0, #0x50 mov r1, #0x0 - bl FUN_02019620 + bl FillWindowPixelBuffer add r0, r4, #0x0 mov r1, #0xa bl GetWazaAttr @@ -3098,7 +3098,7 @@ _0207EF10: bl FUN_0200D0BC add r0, r6, #0x0 mov r1, #0xf - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r2, _0207EF64 ; =0x00000674 add r1, r5, #0x0 ldr r0, [r4, r2] diff --git a/arm9/asm/unk_0207EF6C.s b/arm9/asm/unk_0207EF6C.s index 8fcaed0c..e4e29259 100644 --- a/arm9/asm/unk_0207EF6C.s +++ b/arm9/asm/unk_0207EF6C.s @@ -99,7 +99,7 @@ UNK_020FB6E6: ; 0x020FB6E6 FUN_0207EF6C: ; 0x0207EF6C push {r3-r4, lr} sub sp, #0x4 - bl FUN_020BB7F4 + bl NNS_G3dInit bl G3X_Init bl G3X_InitMtxStack ldr r0, _0207EFEC ; =0x04000060 @@ -183,16 +183,16 @@ FUN_0207F008: ; 0x0207F008 mov r0, #0x2 str r0, [r2, #0x0] str r3, [r1, #0x0] - bl FUN_020B849C + bl NNS_G3dGlbFlushP mov r0, #0xb7 lsl r0, r0, #0x2 add r0, r4, r0 bl FUN_0207F108 - bl FUN_020B849C + bl NNS_G3dGlbFlushP add r0, r4, #0x0 bl FUN_0207F1A4 _0207F046: - bl FUN_020B02C8 + bl NNS_G2dSetupSoftwareSpriteCamera mov r0, #0xae lsl r0, r0, #0x2 ldr r0, [r4, r0] diff --git a/arm9/asm/unk_02080C38.s b/arm9/asm/unk_02080C38.s index 0f1630ed..3e0d058c 100644 --- a/arm9/asm/unk_02080C38.s +++ b/arm9/asm/unk_02080C38.s @@ -246,7 +246,7 @@ _02080DD4: str r0, [r4, #0x4] b _02080DF2 _02080DE2: - bl ErrorHandling + bl GF_AssertFail _02080DE6: add r0, r4, #0x0 bl FreeToHeap @@ -497,7 +497,7 @@ _02080FC0: str r0, [r4, #0x4] b _02080FDC _02080FCE: - bl ErrorHandling + bl GF_AssertFail _02080FD2: add r0, r4, #0x0 bl FreeToHeap @@ -747,7 +747,7 @@ _02081196: str r0, [r4, #0x4] b _020811B4 _020811A4: - bl ErrorHandling + bl GF_AssertFail _020811A8: add r0, r4, #0x0 bl FreeToHeap @@ -916,7 +916,7 @@ _020812F2: add r5, r4, #0x0 _02081304: mov r0, #0x14 - bl FUN_02029EE4 + bl Chatot_new mov r1, #0x57 lsl r1, r1, #0x2 str r0, [r5, r1] @@ -927,7 +927,7 @@ _02081304: add r0, r1, #0x0 ldr r0, [r4, r0] ldr r1, [r6, #0x20] - bl FUN_02029F9C + bl Chatot_copy ldr r0, [r6, #0x8] ldr r1, [r4, #0x0] bl CopyPokemonToPokemon @@ -1259,7 +1259,7 @@ _020815A6: add r6, r0, #0x0 b _020815BA _020815B6: - bl ErrorHandling + bl GF_AssertFail _020815BA: cmp r6, #0x0 beq _020815CA @@ -1900,7 +1900,7 @@ _02081A7C: strb r0, [r4, r2] pop {r3-r7, pc} _02081A8A: - bl FUN_02029EC4 + bl Sav2_Chatot_sizeof add r2, r0, #0x0 mov r0, #0x57 lsl r0, r0, #0x2 @@ -2347,7 +2347,7 @@ _02081DEC: bl FUN_0202DFA4 add r7, r0, #0x0 bne _02081DFA - bl ErrorHandling + bl GF_AssertFail _02081DFA: add r0, r7, #0x0 bl PlayerProfile_GetGameClearFlag @@ -2374,7 +2374,7 @@ _02081E1E: bl FUN_0202DFA4 add r7, r0, #0x0 bne _02081E2C - bl ErrorHandling + bl GF_AssertFail _02081E2C: add r0, r7, #0x0 bl PlayerProfile_GetNatDexFlag @@ -2471,7 +2471,7 @@ FUN_02081ED4: ; 0x02081ED4 ldr r0, [r4, r0] cmp r0, #0x0 beq _02081EE6 - bl ErrorHandling + bl GF_AssertFail _02081EE6: ldr r0, _02081F00 ; =0x00000176 mov r1, #0x0 @@ -3031,7 +3031,7 @@ _020822C8: add r0, #0x31 b _020822D6 _020822D0: - bl ErrorHandling + bl GF_AssertFail pop {r3-r5, pc} _020822D6: lsl r0, r0, #0x18 @@ -3229,7 +3229,7 @@ _02082412: _02082414: cmp r4, #0x64 bne _0208241C - bl ErrorHandling + bl GF_AssertFail _0208241C: ldr r0, _02082440 ; =0x0000198C ldr r0, [r5, r0] @@ -3258,7 +3258,7 @@ FUN_02082444: ; 0x02082444 ldr r0, [r5, r0] cmp r0, #0x0 beq _02082456 - bl ErrorHandling + bl GF_AssertFail _02082456: mov r0, #0x4 mov r1, #0x10 diff --git a/arm9/asm/unk_020828BC.s b/arm9/asm/unk_020828BC.s index f63a493e..a64d7ab7 100644 --- a/arm9/asm/unk_020828BC.s +++ b/arm9/asm/unk_020828BC.s @@ -177,7 +177,7 @@ _0208292A: mov r0, #0x5a add r2, r1, #0x0 add r3, r5, #0x0 - bl UncompressFromNarc + bl GfGfxLoader_LoadFromNarc str r0, [sp, #0x14] mov r0, #0x5a mov r1, #0x0 @@ -311,7 +311,7 @@ _02082A26: ldr r0, [sp, #0x8] cmp r6, r0 bge _02082A30 - bl ErrorHandling + bl GF_AssertFail _02082A30: mov r0, #0x0 str r0, [sp, #0x10] @@ -469,7 +469,7 @@ _02082B44: _02082B4E: cmp r6, #0x4 bhs _02082B56 - bl ErrorHandling + bl GF_AssertFail _02082B56: mov r6, #0x0 mov r7, #0x30 @@ -513,7 +513,7 @@ FUN_02082B90: ; 0x02082B90 mov r0, #0x5a mov r1, #0x2 mov r2, #0x0 - bl UncompressFromNarc + bl GfGfxLoader_LoadFromNarc str r0, [sp, #0x14] ldr r1, _02082D10 ; =0x00000121 ldr r0, [sp, #0x8] @@ -633,7 +633,7 @@ _02082C66: ldrb r2, [r0, #0x0] b _02082C74 _02082C6E: - bl ErrorHandling + bl GF_AssertFail mov r2, #0x0 _02082C74: mov r0, #0x54 @@ -891,7 +891,7 @@ FUN_02082E64: ; 0x02082E64 ldr r0, [r4, #0x0] cmp r0, #0x0 bne _02082E98 - bl ErrorHandling + bl GF_AssertFail _02082E98: add r1, sp, #0x14 ldrh r0, [r1, #0x0] @@ -938,7 +938,7 @@ FUN_02082ED0: ; 0x02082ED0 add r2, r5, #0x0 add r4, r5, #0x0 str r1, [sp, #0x0] - bl UncompressFromNarc + bl GfGfxLoader_LoadFromNarc str r0, [sp, #0x14] mov r0, #0x5a mov r1, #0x1 @@ -1094,7 +1094,7 @@ _0208300A: strb r1, [r0, r4] cmp r5, #0x2 bhs _0208301A - bl ErrorHandling + bl GF_AssertFail _0208301A: ldr r2, [sp, #0x4] mov r3, #0x0 @@ -1126,7 +1126,7 @@ _0208301E: blt _0208301E cmp r4, #0x1 bhs _02083058 - bl ErrorHandling + bl GF_AssertFail _02083058: ldr r0, [sp, #0x4] bl FUN_02082878 @@ -1224,7 +1224,7 @@ FUN_02083114: ; 0x02083114 add r4, r0, #0x0 cmp r4, #0x18 blo _02083120 - bl ErrorHandling + bl GF_AssertFail _02083120: mov r0, #0x1a add r1, r4, #0x0 @@ -1243,7 +1243,7 @@ FUN_02083130: ; 0x02083130 add r6, r2, #0x0 cmp r5, #0x18 blo _02083140 - bl ErrorHandling + bl GF_AssertFail _02083140: mov r0, #0x1a add r1, r5, #0x0 @@ -1265,7 +1265,7 @@ FUN_0208315C: ; 0x0208315C add r4, r0, #0x0 cmp r4, #0x18 blo _02083168 - bl ErrorHandling + bl GF_AssertFail _02083168: add r4, #0x2d add r0, r4, #0x0 @@ -1281,7 +1281,7 @@ FUN_02083170: ; 0x02083170 add r6, r3, #0x0 cmp r4, #0x18 blo _02083182 - bl ErrorHandling + bl GF_AssertFail _02083182: cmp r7, #0x4 bhi _0208319C @@ -1702,7 +1702,7 @@ _02083448: add r0, #0x8a pop {r3, pc} _0208344C: - bl ErrorHandling + bl GF_AssertFail mov r0, #0x7a pop {r3, pc} diff --git a/arm9/asm/unk_020834D0.s b/arm9/asm/unk_020834D0.s index e86c6f2d..88308c6e 100644 --- a/arm9/asm/unk_020834D0.s +++ b/arm9/asm/unk_020834D0.s @@ -43,7 +43,7 @@ FUN_020834E4: ; 0x020834E4 add r4, r1, #0x0 cmp r2, r0 blt _020834F6 - bl ErrorHandling + bl GF_AssertFail _020834F6: ldr r0, _02083500 ; =0x00000985 add r1, r4, r0 @@ -110,21 +110,21 @@ _0208354A: add r4, r1, r0 b _0208355E _02083558: - bl ErrorHandling + bl GF_AssertFail pop {r3-r7, pc} _0208355E: mov r0, #0x2 lsl r0, r0, #0x8 cmp r6, r0 ble _0208356A - bl ErrorHandling + bl GF_AssertFail _0208356A: ldr r0, _0208359C ; =0x00000A11 add r7, r4, r0 ldrb r0, [r7, r5] cmp r0, #0x0 beq _02083578 - bl ErrorHandling + bl GF_AssertFail _02083578: mov r1, #0x21 lsl r1, r1, #0x4 @@ -666,7 +666,7 @@ FUN_02083970: ; 0x02083970 lsl r0, r0, #0xa cmp r1, r0 blt _0208398C - bl ErrorHandling + bl GF_AssertFail _0208398C: mov r7, #0x0 ldr r4, [sp, #0x4] @@ -709,7 +709,7 @@ FUN_020839C0: ; 0x020839C0 str r0, [sp, #0x0] cmp r0, r1 blt _020839DE - bl ErrorHandling + bl GF_AssertFail _020839DE: ldr r0, _02083A18 ; =0x00000585 mov r7, #0x0 @@ -830,7 +830,7 @@ FUN_02083AA8: ; 0x02083AA8 push {r3-r5, lr} add r5, r2, #0x0 add r4, r3, #0x0 - bl FUN_02029EC4 + bl Sav2_Chatot_sizeof add r2, r0, #0x0 ldrb r1, [r5, r2] add r0, r5, #0x0 @@ -854,7 +854,7 @@ FUN_02083AD4: ; 0x02083AD4 add r4, r0, #0x0 add r7, r1, #0x0 add r6, r2, #0x0 - bl FUN_02029EC4 + bl Sav2_Chatot_sizeof add r5, r0, #0x0 ldr r0, _02083B0C ; =0x00000585 add r4, r4, r0 diff --git a/arm9/asm/unk_02083D48.s b/arm9/asm/unk_02083D48.s index 4a15e685..1974ae4b 100644 --- a/arm9/asm/unk_02083D48.s +++ b/arm9/asm/unk_02083D48.s @@ -472,7 +472,7 @@ FUN_02083FDC: ; 0x02083FDC bl FUN_02031190 cmp r0, #0x0 beq _02083FEE - bl ErrorHandling + bl GF_AssertFail _02083FEE: bl FUN_02031190 cmp r0, #0x0 diff --git a/arm9/asm/unk_020859C0.s b/arm9/asm/unk_020859C0.s index 2e98e9cf..a2f90e0a 100644 --- a/arm9/asm/unk_020859C0.s +++ b/arm9/asm/unk_020859C0.s @@ -586,7 +586,7 @@ FUN_02085D6C: ; 0x02085D6C ldr r0, [r4, #0x0] cmp r0, r1 bge _02085D7C - bl ErrorHandling + bl GF_AssertFail mov r1, #0x0 _02085D7C: lsl r0, r1, #0x2 @@ -712,7 +712,7 @@ _02085E48: beq _02085E5A cmp r0, #0x1 beq _02085E60 - bl ErrorHandling + bl GF_AssertFail _02085E5A: mov r0, #0x5 str r0, [r6, #0x14] @@ -874,7 +874,7 @@ FUN_02085FAC: ; 0x02085FAC ldr r0, _02085FC8 ; =0x0000032A cmp r4, r0 blo _02085FBA - bl ErrorHandling + bl GF_AssertFail _02085FBA: mov r0, #0xa add r1, r4, #0x0 @@ -893,7 +893,7 @@ FUN_02085FD0: ; 0x02085FD0 ldr r0, _02085FEC ; =0x0000032A cmp r4, r0 blo _02085FDE - bl ErrorHandling + bl GF_AssertFail _02085FDE: mov r0, #0xa add r1, r4, #0x0 @@ -912,7 +912,7 @@ FUN_02085FF4: ; 0x02085FF4 ldr r0, _02086010 ; =0x0000032A cmp r4, r0 blo _02086002 - bl ErrorHandling + bl GF_AssertFail _02086002: mov r0, #0xa add r1, r4, #0x0 @@ -931,7 +931,7 @@ FUN_02086018: ; 0x02086018 ldr r0, _02086034 ; =0x0000032A cmp r4, r0 blo _02086026 - bl ErrorHandling + bl GF_AssertFail _02086026: mov r0, #0xa add r1, r4, #0x0 @@ -950,7 +950,7 @@ FUN_0208603C: ; 0x0208603C ldr r0, _02086058 ; =0x0000032A cmp r4, r0 blo _0208604A - bl ErrorHandling + bl GF_AssertFail _0208604A: mov r0, #0xa add r1, r4, #0x0 @@ -969,7 +969,7 @@ FUN_02086060: ; 0x02086060 ldr r0, _0208607C ; =0x0000032A cmp r4, r0 blo _0208606E - bl ErrorHandling + bl GF_AssertFail _0208606E: mov r0, #0xa add r1, r4, #0x0 diff --git a/arm9/asm/unk_02086414.s b/arm9/asm/unk_02086414.s index 7e7745fe..54ce0190 100644 --- a/arm9/asm/unk_02086414.s +++ b/arm9/asm/unk_02086414.s @@ -1,8 +1,8 @@ .include "asm/macros.inc" .include "global.inc" - .extern UNK_021064B8 - .extern UNK_021064C0 + .extern NNS_GfdDefaultFuncAllocTexVram + .extern NNS_GfdDefaultFuncAllocPlttVram .section .rodata @@ -217,14 +217,14 @@ _02086508: .word 0x04000580 thumb_func_start FUN_0208650C FUN_0208650C: ; 0x0208650C push {r3-r5, lr} - ldr r3, _02086544 ; =UNK_021064B8 + ldr r3, _02086544 ; =NNS_GfdDefaultFuncAllocTexVram mov r0, #0x2 mov r1, #0x0 ldr r3, [r3, #0x0] lsl r0, r0, #0xe add r2, r1, #0x0 blx r3 - ldr r3, _02086548 ; =UNK_021064C0 + ldr r3, _02086548 ; =NNS_GfdDefaultFuncAllocPlttVram mov r1, #0x0 add r4, r0, #0x0 ldr r3, [r3, #0x0] @@ -234,17 +234,17 @@ FUN_0208650C: ; 0x0208650C add r5, r0, #0x0 cmp r4, #0x0 bne _02086534 - bl ErrorHandling + bl GF_AssertFail _02086534: cmp r5, #0x0 bne _0208653C - bl ErrorHandling + bl GF_AssertFail _0208653C: bl FUN_02012CC8 pop {r3-r5, pc} nop -_02086544: .word UNK_021064B8 -_02086548: .word UNK_021064C0 +_02086544: .word NNS_GfdDefaultFuncAllocTexVram +_02086548: .word NNS_GfdDefaultFuncAllocPlttVram thumb_func_start FUN_0208654C FUN_0208654C: ; 0x0208654C @@ -400,7 +400,7 @@ FUN_02086698: ; 0x02086698 cmp r0, #0x0 ble _020866AE bl FUN_020222AC - bl FUN_020B02C8 + bl NNS_G2dSetupSoftwareSpriteCamera _020866AE: bl FUN_02013388 mov r0, #0x1 @@ -517,7 +517,7 @@ FUN_02086784: ; 0x02086784 add r0, r5, #0x0 add r4, r2, #0x0 add r6, r3, #0x0 - bl FUN_0201901C + bl InitWindow ldr r0, [sp, #0x28] lsl r2, r4, #0x18 lsl r0, r0, #0x18 @@ -552,7 +552,7 @@ FUN_02086784: ; 0x02086784 bl FUN_0200D0BC add r0, r5, #0x0 mov r1, #0xf - bl FUN_02019620 + bl FillWindowPixelBuffer add r0, r5, #0x0 bl CopyWindowToVram add sp, #0x14 @@ -567,7 +567,7 @@ FUN_020867EC: ; 0x020867EC str r0, [sp, #0xc] str r2, [sp, #0x10] add r6, r3, #0x0 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r2, _02086874 ; =0x0000013F mov r0, #0x0 mov r1, #0x1a @@ -627,7 +627,7 @@ FUN_02086878: ; 0x02086878 add r6, r1, #0x0 str r2, [sp, #0x14] add r4, r3, #0x0 - bl FUN_0201901C + bl InitWindow ldr r0, [sp, #0x3c] ldr r3, [sp, #0x38] lsl r0, r0, #0x18 @@ -658,7 +658,7 @@ FUN_02086878: ; 0x02086878 bl FUN_02019064 mov r0, #0x2 mov r1, #0x47 - bl ListMenu_ctor + bl ListMenuItems_ctor str r0, [r5, #0x44] ldr r2, _0208695C ; =0x0000013F mov r0, #0x0 @@ -675,7 +675,7 @@ _020868DE: ldr r0, [r5, #0x44] add r1, r6, #0x0 add r2, r4, #0x0 - bl ListMenu_AddItem + bl ListMenuItems_AddItem add r0, r6, #0x0 bl String_dtor add r4, r4, #0x1 @@ -744,7 +744,7 @@ FUN_02086960: ; 0x02086960 mov r1, #0x0 bl FUN_02001C5C ldr r0, [r4, #0x44] - bl ListMenu_dtor + bl ListMenuItems_dtor pop {r4, pc} thumb_func_start FUN_0208698C @@ -772,7 +772,7 @@ FUN_0208699C: ; 0x0208699C mov r0, #0x76 add r2, r5, #0x0 mov r3, #0x3 - bl FUN_0200687C + bl GfGfxLoader_LoadCharData mov r0, #0x0 str r0, [sp, #0x0] str r0, [sp, #0x4] @@ -783,7 +783,7 @@ FUN_0208699C: ; 0x0208699C mov r0, #0x76 add r2, r5, #0x0 mov r3, #0x3 - bl FUN_020068C8 + bl GfGfxLoader_LoadScrnData mov r1, #0x0 str r1, [sp, #0x0] mov r0, #0x40 @@ -815,7 +815,7 @@ FUN_020869F0: ; 0x020869F0 mov r1, #0xa add r2, r5, #0x0 mov r3, #0x4 - bl FUN_0200687C + bl GfGfxLoader_LoadCharData mov r0, #0x0 str r0, [sp, #0x0] str r0, [sp, #0x4] @@ -827,7 +827,7 @@ FUN_020869F0: ; 0x020869F0 mov r1, #0xb add r2, r5, #0x0 mov r3, #0x4 - bl FUN_020068C8 + bl GfGfxLoader_LoadScrnData mov r0, #0x1 str r0, [sp, #0x0] mov r0, #0x20 @@ -845,7 +845,7 @@ FUN_020869F0: ; 0x020869F0 thumb_func_start FUN_02086A48 FUN_02086A48: ; 0x02086A48 push {r4, lr} - ldr r3, _02086A60 ; =UNK_021064B8 + ldr r3, _02086A60 ; =NNS_GfdDefaultFuncAllocTexVram mov r2, #0x0 ldr r3, [r3, #0x0] blx r3 @@ -855,12 +855,12 @@ FUN_02086A48: ; 0x02086A48 lsr r0, r0, #0xd pop {r4, pc} nop -_02086A60: .word UNK_021064B8 +_02086A60: .word NNS_GfdDefaultFuncAllocTexVram thumb_func_start FUN_02086A64 FUN_02086A64: ; 0x02086A64 push {r4, lr} - ldr r3, _02086A7C ; =UNK_021064C0 + ldr r3, _02086A7C ; =NNS_GfdDefaultFuncAllocPlttVram mov r2, #0x0 ldr r3, [r3, #0x0] blx r3 @@ -870,7 +870,7 @@ FUN_02086A64: ; 0x02086A64 lsr r0, r0, #0xd pop {r4, pc} nop -_02086A7C: .word UNK_021064C0 +_02086A7C: .word NNS_GfdDefaultFuncAllocPlttVram thumb_func_start FUN_02086A80 FUN_02086A80: ; 0x02086A80 @@ -978,7 +978,7 @@ FUN_02086B40: ; 0x02086B40 bl AllocFromHeap add r4, r0, #0x0 bne _02086B54 - bl ErrorHandling + bl GF_AssertFail _02086B54: ldr r0, [r5, #0x0] ldr r2, [r5, #0x4] @@ -1403,7 +1403,7 @@ FUN_02086E48: ; 0x02086E48 bl FUN_0200BBF0 cmp r0, #0x0 bne _02086EB2 - bl ErrorHandling + bl GF_AssertFail _02086EB2: ldr r0, [r4, #0x4c] ldr r1, [r4, #0x48] @@ -1411,7 +1411,7 @@ _02086EB2: bl FUN_0200BF60 cmp r0, #0x0 bne _02086EC4 - bl ErrorHandling + bl GF_AssertFail _02086EC4: add sp, #0x4c pop {r3-r6, pc} diff --git a/arm9/asm/unk_02086FA8.s b/arm9/asm/unk_02086FA8.s index 2ccd040d..5e0a8dfa 100644 --- a/arm9/asm/unk_02086FA8.s +++ b/arm9/asm/unk_02086FA8.s @@ -185,7 +185,7 @@ _0208710E: cmp r0, #0x0 bne _0208712A ldr r0, _02087244 ; =0x00000484 - bl PlayBGM + bl PlaySound ldr r0, [r4, #0x5c] add r0, r0, #0x1 str r0, [r4, #0x5c] @@ -463,14 +463,14 @@ _02087322: str r0, [r4, #0x5c] b _02087486 _0208735C: - bl ErrorHandling + bl GF_AssertFail b _02087486 _02087362: bl FUN_02005670 cmp r0, #0x0 bne _0208737E ldr r0, _02087498 ; =0x00000484 - bl PlayBGM + bl PlaySound ldr r0, [r4, #0x5c] add r0, r0, #0x1 str r0, [r4, #0x5c] diff --git a/arm9/asm/unk_02087A6C.s b/arm9/asm/unk_02087A6C.s index b343ac2c..1ab7b908 100644 --- a/arm9/asm/unk_02087A6C.s +++ b/arm9/asm/unk_02087A6C.s @@ -29,7 +29,7 @@ FUN_02087A84: ; 0x02087A84 push {r4, lr} add r4, r0, #0x0 bne _02087A8E - bl ErrorHandling + bl GF_AssertFail _02087A8E: add r0, r4, #0x0 bl FreeToHeap @@ -44,17 +44,17 @@ FUN_02087A98: ; 0x02087A98 add r4, r2, #0x0 cmp r5, #0x0 bne _02087AA8 - bl ErrorHandling + bl GF_AssertFail _02087AA8: ldr r0, [r5, #0x0] cmp r0, #0x0 beq _02087AB2 - bl ErrorHandling + bl GF_AssertFail _02087AB2: ldr r0, [r5, #0x4] cmp r0, #0x0 beq _02087ABC - bl ErrorHandling + bl GF_AssertFail _02087ABC: add r0, r4, #0x0 bl FUN_02087C18 @@ -99,12 +99,12 @@ FUN_02087B0C: ; 0x02087B0C ldr r0, [r4, #0x0] cmp r0, #0x0 bne _02087B1A - bl ErrorHandling + bl GF_AssertFail _02087B1A: ldr r0, [r4, #0x4] cmp r0, #0x0 bne _02087B24 - bl ErrorHandling + bl GF_AssertFail _02087B24: ldr r0, [r4, #0x0] bl FreeToHeap @@ -134,12 +134,12 @@ FUN_02087B58: ; 0x02087B58 add r4, r1, #0x0 cmp r5, #0x0 bne _02087B66 - bl ErrorHandling + bl GF_AssertFail _02087B66: ldr r0, [r5, #0x0] cmp r0, #0x0 bne _02087B70 - bl ErrorHandling + bl GF_AssertFail _02087B70: ldr r1, [r5, #0x0] lsl r0, r4, #0x2 @@ -153,12 +153,12 @@ FUN_02087B78: ; 0x02087B78 add r4, r1, #0x0 cmp r5, #0x0 bne _02087B86 - bl ErrorHandling + bl GF_AssertFail _02087B86: ldr r0, [r5, #0x4] cmp r0, #0x0 bne _02087B90 - bl ErrorHandling + bl GF_AssertFail _02087B90: ldr r1, [r5, #0x4] lsl r0, r4, #0x2 @@ -172,12 +172,12 @@ FUN_02087B98: ; 0x02087B98 add r4, r1, #0x0 cmp r5, #0x0 bne _02087BA6 - bl ErrorHandling + bl GF_AssertFail _02087BA6: ldr r0, [r5, #0x8] cmp r0, #0x0 bne _02087BB0 - bl ErrorHandling + bl GF_AssertFail _02087BB0: ldr r1, [r5, #0x8] lsl r0, r4, #0x1 @@ -191,12 +191,12 @@ FUN_02087BB8: ; 0x02087BB8 add r4, r1, #0x0 cmp r5, #0x0 bne _02087BC6 - bl ErrorHandling + bl GF_AssertFail _02087BC6: ldr r0, [r5, #0xc] cmp r0, #0x0 bne _02087BD0 - bl ErrorHandling + bl GF_AssertFail _02087BD0: ldr r1, [r5, #0xc] lsl r0, r4, #0x1 @@ -210,12 +210,12 @@ FUN_02087BD8: ; 0x02087BD8 add r4, r1, #0x0 cmp r5, #0x0 bne _02087BE6 - bl ErrorHandling + bl GF_AssertFail _02087BE6: ldr r0, [r5, #0x10] cmp r0, #0x0 bne _02087BF0 - bl ErrorHandling + bl GF_AssertFail _02087BF0: ldr r1, [r5, #0x10] lsl r0, r4, #0x1 @@ -229,12 +229,12 @@ FUN_02087BF8: ; 0x02087BF8 add r4, r1, #0x0 cmp r5, #0x0 bne _02087C06 - bl ErrorHandling + bl GF_AssertFail _02087C06: ldr r0, [r5, #0x14] cmp r0, #0x0 bne _02087C10 - bl ErrorHandling + bl GF_AssertFail _02087C10: ldr r1, [r5, #0x14] lsl r0, r4, #0x1 @@ -249,7 +249,7 @@ FUN_02087C18: ; 0x02087C18 mov r0, #0x4b add r2, r1, #0x0 str r1, [sp, #0x0] - bl UncompressFromNarc + bl GfGfxLoader_LoadFromNarc pop {r3, pc} .balign 4 @@ -261,7 +261,7 @@ FUN_02087C2C: ; 0x02087C2C mov r0, #0x4b mov r1, #0x1 str r2, [sp, #0x0] - bl UncompressFromNarc + bl GfGfxLoader_LoadFromNarc pop {r3, pc} .balign 4 @@ -277,14 +277,14 @@ FUN_02087C40: ; 0x02087C40 mov r0, #0x4b mov r1, #0x9 add r3, r6, #0x0 - bl UncompressFromNarc + bl GfGfxLoader_LoadFromNarc str r0, [r5, #0x0] mov r2, #0x0 mov r0, #0x4b mov r1, #0xa add r3, r6, #0x0 str r2, [sp, #0x0] - bl UncompressFromNarc + bl GfGfxLoader_LoadFromNarc str r0, [r4, #0x0] add sp, #0x4 pop {r3-r6, pc} @@ -302,14 +302,14 @@ FUN_02087C70: ; 0x02087C70 mov r0, #0x4b mov r1, #0x7 add r3, r6, #0x0 - bl UncompressFromNarc + bl GfGfxLoader_LoadFromNarc str r0, [r5, #0x0] mov r2, #0x0 mov r0, #0x4b mov r1, #0x8 add r3, r6, #0x0 str r2, [sp, #0x0] - bl UncompressFromNarc + bl GfGfxLoader_LoadFromNarc str r0, [r4, #0x0] add sp, #0x4 pop {r3-r6, pc} @@ -327,14 +327,14 @@ FUN_02087CA0: ; 0x02087CA0 mov r0, #0x4b mov r1, #0x5 add r3, r6, #0x0 - bl UncompressFromNarc + bl GfGfxLoader_LoadFromNarc str r0, [r5, #0x0] mov r2, #0x0 mov r0, #0x4b mov r1, #0x6 add r3, r6, #0x0 str r2, [sp, #0x0] - bl UncompressFromNarc + bl GfGfxLoader_LoadFromNarc str r0, [r4, #0x0] add sp, #0x4 pop {r3-r6, pc} @@ -352,14 +352,14 @@ FUN_02087CD0: ; 0x02087CD0 mov r0, #0x4b mov r1, #0x3 add r3, r6, #0x0 - bl UncompressFromNarc + bl GfGfxLoader_LoadFromNarc str r0, [r5, #0x0] mov r2, #0x0 mov r0, #0x4b mov r1, #0x4 add r3, r6, #0x0 str r2, [sp, #0x0] - bl UncompressFromNarc + bl GfGfxLoader_LoadFromNarc str r0, [r4, #0x0] add sp, #0x4 pop {r3-r6, pc} diff --git a/arm9/asm/unk_02088320.s b/arm9/asm/unk_02088320.s index 92381e59..aa080143 100644 --- a/arm9/asm/unk_02088320.s +++ b/arm9/asm/unk_02088320.s @@ -209,7 +209,7 @@ FUN_02088490: ; 0x02088490 str r0, [sp, #0x3c] cmp r0, #0x0 bge _020884B4 - bl ErrorHandling + bl GF_AssertFail add sp, #0x70 mov r0, #0x0 pop {r3-r7, pc} @@ -404,7 +404,7 @@ _02088612: bl FUN_02020248 b _02088656 _02088652: - bl ErrorHandling + bl GF_AssertFail _02088656: ldr r0, [sp, #0x38] str r4, [r0, #0x4] @@ -495,7 +495,7 @@ FUN_020886CC: ; 0x020886CC ldr r0, [r0, #0x0] cmp r0, #0x0 bne _02088704 - bl ErrorHandling + bl GF_AssertFail _02088704: ldr r0, [r5, #0x4] cmp r0, #0x0 @@ -546,7 +546,7 @@ _02088734: ldr r0, [r0, #0x0] cmp r0, #0x0 bne _02088768 - bl ErrorHandling + bl GF_AssertFail _02088768: add r4, r4, #0x1 add r6, r6, #0x4 @@ -584,7 +584,7 @@ _02088780: ldr r0, [r0, r4] cmp r0, #0x0 bne _020887B4 - bl ErrorHandling + bl GF_AssertFail _020887B4: ldr r0, [r6, #0x0] ldr r0, [r0, r4] diff --git a/arm9/asm/unk_0208890C.s b/arm9/asm/unk_0208890C.s deleted file mode 100644 index d27130c9..00000000 --- a/arm9/asm/unk_0208890C.s +++ /dev/null @@ -1,73 +0,0 @@ - .include "asm/macros.inc" - .include "global.inc" - - .section .rodata - - .global UNK_020FD6E4 -UNK_020FD6E4: ; 0x020FD6E4 - .word FUN_020889B0, FUN_02088A00, FUN_02088A78, 0xFFFFFFFF - - .text - - thumb_func_start FUN_0208890C -FUN_0208890C: ; 0x0208890C - push {r3-r7, lr} - add r6, r0, #0x0 - add r5, r1, #0x0 - add r0, r2, #0x0 - mov r1, #0x20 - add r7, r3, #0x0 - bl AllocFromHeap - add r4, r0, #0x0 - mov r1, #0x0 - mov r2, #0x20 - bl MI_CpuFill8 - str r5, [r4, #0xc] - add r0, r5, #0x0 - bl FUN_02028048 - str r0, [r4, #0x8] - add r0, r5, #0x0 - bl Sav2_PlayerData_GetProfileAddr - str r0, [r4, #0x10] - add r0, r5, #0x0 - bl Sav2_Bag_get - str r0, [r4, #0x14] - add r0, r5, #0x0 - bl Sav2_PlayerData_GetOptionsAddr - str r0, [r4, #0x18] - str r7, [r4, #0x1c] - str r6, [r4, #0x4] - add r0, r4, #0x0 - pop {r3-r7, pc} - - thumb_func_start FUN_02088950 -FUN_02088950: ; 0x02088950 - ldr r3, _02088958 ; =FUN_020373D4 - add r2, r1, #0x0 - ldr r1, _0208895C ; =UNK_020FD6E4 - bx r3 - .balign 4 -_02088958: .word FUN_020373D4 -_0208895C: .word UNK_020FD6E4 - - thumb_func_start FUN_02088960 -FUN_02088960: ; 0x02088960 - push {r4-r6, lr} - add r5, r0, #0x0 - add r4, r1, #0x0 - add r6, r2, #0x0 - bl ScriptEnvironment_GetSav2Ptr - add r3, r5, #0x0 - add r3, #0x98 - add r1, r0, #0x0 - ldr r3, [r3, #0x0] - add r0, r4, #0x0 - add r2, r6, #0x0 - bl FUN_0208890C - add r4, r0, #0x0 - add r0, r5, #0x0 - add r1, r4, #0x0 - bl FUN_02088950 - add r0, r4, #0x0 - pop {r4-r6, pc} - .balign 4 diff --git a/arm9/asm/unk_02088AAC.s b/arm9/asm/unk_02088AAC.s index 65ce7a60..6f47b864 100644 --- a/arm9/asm/unk_02088AAC.s +++ b/arm9/asm/unk_02088AAC.s @@ -217,7 +217,7 @@ _02088C12: mov r0, #0x5 pop {r3-r5, pc} _02088C16: - bl ErrorHandling + bl GF_AssertFail mov r0, #0x95 str r0, [r4, #0x8] _02088C1E: @@ -231,7 +231,7 @@ _02088C1E: bl Bag_TakeItem cmp r0, #0x0 bne _02088C38 - bl ErrorHandling + bl GF_AssertFail _02088C38: mov r0, #0x4 pop {r3-r5, pc} diff --git a/arm9/asm/unk_02088D1C.s b/arm9/asm/unk_02088D1C.s index a7a41701..f82d0498 100644 --- a/arm9/asm/unk_02088D1C.s +++ b/arm9/asm/unk_02088D1C.s @@ -209,7 +209,7 @@ FUN_02088D4C: ; 0x02088D4C add r4, r0, #0x0 cmp r4, #0x13 blo _02088D58 - bl ErrorHandling + bl GF_AssertFail _02088D58: mov r0, #0xc add r1, r4, #0x0 @@ -226,7 +226,7 @@ FUN_02088D68: ; 0x02088D68 add r4, r0, #0x0 cmp r4, #0x13 blo _02088D74 - bl ErrorHandling + bl GF_AssertFail _02088D74: mov r0, #0xc add r1, r4, #0x0 @@ -243,7 +243,7 @@ FUN_02088D84: ; 0x02088D84 add r4, r0, #0x0 cmp r4, #0x13 blo _02088D90 - bl ErrorHandling + bl GF_AssertFail _02088D90: mov r0, #0xc add r1, r4, #0x0 @@ -260,7 +260,7 @@ FUN_02088DA0: ; 0x02088DA0 add r4, r0, #0x0 cmp r4, #0x13 blo _02088DAC - bl ErrorHandling + bl GF_AssertFail _02088DAC: mov r0, #0xc add r1, r4, #0x0 @@ -277,7 +277,7 @@ FUN_02088DBC: ; 0x02088DBC add r4, r0, #0x0 cmp r4, #0x13 blo _02088DC8 - bl ErrorHandling + bl GF_AssertFail _02088DC8: mov r0, #0xc add r1, r4, #0x0 diff --git a/arm9/asm/unk_020893E0.s b/arm9/asm/unk_020893E0.s index d1cbe3de..566bab92 100644 --- a/arm9/asm/unk_020893E0.s +++ b/arm9/asm/unk_020893E0.s @@ -40,7 +40,7 @@ FUN_020893F0: ; 0x020893F0 str r4, [r0, #0x0] pop {r4, pc} _0208940A: - bl ErrorHandling + bl GF_AssertFail pop {r4, pc} .balign 4 _02089410: .word UNK_021C5C58 @@ -62,7 +62,7 @@ FUN_02089418: ; 0x02089418 mov r0, #0x1 pop {r3, pc} _02089434: - bl ErrorHandling + bl GF_AssertFail _02089438: mov r0, #0x0 pop {r3, pc} @@ -85,7 +85,7 @@ FUN_02089444: ; 0x02089444 str r4, [r0, #0x0] pop {r4, pc} _0208945E: - bl ErrorHandling + bl GF_AssertFail pop {r4, pc} .balign 4 _02089464: .word UNK_021C5C58 @@ -107,7 +107,7 @@ FUN_0208946C: ; 0x0208946C mov r0, #0x1 pop {r3, pc} _02089488: - bl ErrorHandling + bl GF_AssertFail _0208948C: mov r0, #0x0 pop {r3, pc} diff --git a/arm9/asm/unk_02089498.s b/arm9/asm/unk_02089498.s index b4c7a133..3facd182 100644 --- a/arm9/asm/unk_02089498.s +++ b/arm9/asm/unk_02089498.s @@ -360,7 +360,7 @@ FUN_02089734: ; 0x02089734 add r0, r4, #0x0 mov r1, #0xf add r3, r2, #0x0 - bl FUN_020196F4 + bl FillWindowPixelRect add sp, #0x8 pop {r4, pc} nop @@ -539,7 +539,7 @@ _020898B8: mov r1, #0xf add r2, r6, #0x0 add r3, r6, #0x0 - bl FUN_020196F4 + bl FillWindowPixelRect add r0, r5, #0x0 ldr r2, _02089958 ; =0x000001E2 add r0, #0x1c diff --git a/arm9/asm/unk_02089960.s b/arm9/asm/unk_02089960.s index 4502d1f9..9c06a4ab 100644 --- a/arm9/asm/unk_02089960.s +++ b/arm9/asm/unk_02089960.s @@ -299,7 +299,7 @@ FUN_02089B80: ; 0x02089B80 add r0, r4, #0x0 mov r1, #0xf add r3, r2, #0x0 - bl FUN_020196F4 + bl FillWindowPixelRect add sp, #0x8 pop {r4, pc} nop @@ -466,7 +466,7 @@ _02089CE8: mov r1, #0xf add r2, r6, #0x0 add r3, r6, #0x0 - bl FUN_020196F4 + bl FillWindowPixelRect add r0, r5, #0x0 ldr r2, _02089D88 ; =0x000001E2 add r0, #0x20 diff --git a/arm9/asm/unk_02089D90.s b/arm9/asm/unk_02089D90.s index 92b9e987..e7b88272 100644 --- a/arm9/asm/unk_02089D90.s +++ b/arm9/asm/unk_02089D90.s @@ -137,7 +137,7 @@ FUN_02089D90: ; 0x02089D90 add r0, sp, #0xc mov r1, #0xf add r3, r2, #0x0 - bl FUN_020196F4 + bl FillWindowPixelRect ldr r2, _02089F18 ; =0x000001F7 add r0, sp, #0xc mov r1, #0x0 diff --git a/arm9/asm/unk_02089F24.s b/arm9/asm/unk_02089F24.s index b678254c..b5c93a8a 100644 --- a/arm9/asm/unk_02089F24.s +++ b/arm9/asm/unk_02089F24.s @@ -141,7 +141,7 @@ FUN_02089F24: ; 0x02089F24 add r0, sp, #0xc mov r1, #0xf add r3, r2, #0x0 - bl FUN_020196F4 + bl FillWindowPixelRect ldr r2, _0208A0AC ; =0x000001F7 add r0, sp, #0xc mov r1, #0x0 @@ -310,7 +310,7 @@ _0208A0C8: add r0, sp, #0xc mov r1, #0xf add r3, r2, #0x0 - bl FUN_020196F4 + bl FillWindowPixelRect ldr r2, _0208A24C ; =0x000001F7 add r0, sp, #0xc mov r1, #0x0 diff --git a/arm9/asm/unk_0208A300.s b/arm9/asm/unk_0208A300.s deleted file mode 100644 index fe273a33..00000000 --- a/arm9/asm/unk_0208A300.s +++ /dev/null @@ -1,49 +0,0 @@ - .include "asm/macros.inc" - .include "global.inc" - - .text - - thumb_func_start FUN_0208A300 -FUN_0208A300: ; 0x0208A300 - push {r3, lr} - mov r1, #0x8 - bl AllocFromHeap - mov r1, #0x0 - strb r1, [r0, #0x0] - strb r1, [r0, #0x1] - strb r1, [r0, #0x2] - strb r1, [r0, #0x3] - strb r1, [r0, #0x4] - strb r1, [r0, #0x5] - strb r1, [r0, #0x6] - strb r1, [r0, #0x7] - mov r1, #0x2 - str r1, [r0, #0x4] - pop {r3, pc} - - thumb_func_start FUN_0208A320 -FUN_0208A320: ; 0x0208A320 - ldr r3, _0208A324 ; =FreeToHeap - bx r3 - .balign 4 -_0208A324: .word FreeToHeap - - thumb_func_start FUN_0208A328 -FUN_0208A328: ; 0x0208A328 - ldr r0, [r0, #0x0] - bx lr - - thumb_func_start FUN_0208A32C -FUN_0208A32C: ; 0x0208A32C - str r1, [r0, #0x0] - bx lr - - thumb_func_start FUN_0208A330 -FUN_0208A330: ; 0x0208A330 - ldr r0, [r0, #0x4] - bx lr - - thumb_func_start FUN_0208A334 -FUN_0208A334: ; 0x0208A334 - str r1, [r0, #0x4] - bx lr diff --git a/arm9/asm/unk_0208A338.s b/arm9/asm/unk_0208A338.s index 2be81a9f..bafa4c91 100644 --- a/arm9/asm/unk_0208A338.s +++ b/arm9/asm/unk_0208A338.s @@ -36,7 +36,7 @@ FUN_0208A338: ; 0x0208A338 bl NewMsgDataFromNarc str r0, [r4, #0x10] mov r0, #0x20 - bl FUN_02013690 + bl ListMenuCursorNew str r0, [r4, #0x14] ldr r2, [r4, #0x0] mov r0, #0x2 @@ -48,13 +48,13 @@ FUN_0208A338: ; 0x0208A338 bl FUN_020853DC add r0, r4, #0x0 add r0, #0x18 - bl FUN_0201901C + bl InitWindow add r0, r4, #0x0 add r0, #0x28 - bl FUN_0201901C + bl InitWindow add r0, r4, #0x0 add r0, #0x38 - bl FUN_0201901C + bl InitWindow mov r0, #0x0 str r0, [r4, #0x54] ldr r1, _0208A3C4 ; =FUN_0208A458 @@ -73,7 +73,7 @@ FUN_0208A3C8: ; 0x0208A3C8 ldr r0, [r4, #0x50] bl FUN_020853A8 ldr r0, [r4, #0x14] - bl FUN_020136C0 + bl DestroyListMenuCursorObj ldr r0, [r4, #0x4] bl String_dtor ldr r0, [r4, #0x8] @@ -102,7 +102,7 @@ FUN_0208A400: ; 0x0208A400 bl FUN_02019178 add r0, r4, #0x0 add r0, #0x18 - bl FUN_0201901C + bl InitWindow _0208A41E: add r0, r4, #0x0 add r0, #0x28 @@ -114,7 +114,7 @@ _0208A41E: bl FUN_02019178 add r0, r4, #0x0 add r0, #0x28 - bl FUN_0201901C + bl InitWindow _0208A43A: add r0, r4, #0x0 add r0, #0x38 @@ -126,7 +126,7 @@ _0208A43A: bl FUN_02019178 add r4, #0x38 add r0, r4, #0x0 - bl FUN_0201901C + bl InitWindow _0208A456: pop {r4, pc} @@ -556,7 +556,7 @@ FUN_0208A77C: ; 0x0208A77C bl FUN_02019064 add r0, r7, #0x0 mov r1, #0xf - bl FUN_02019620 + bl FillWindowPixelBuffer mov r6, #0x0 add r4, r6, #0x0 _0208A7D2: @@ -583,7 +583,7 @@ _0208A7D2: ldr r0, [r5, #0x14] add r1, r7, #0x0 add r3, r2, #0x0 - bl FUN_020136F8 + bl ListMenuUpdateCursorObj _0208A808: str r7, [r5, #0x68] mov r1, #0x0 @@ -644,7 +644,7 @@ FUN_0208A82C: ; 0x0208A82C bl FUN_02019064 add r0, r7, #0x0 mov r1, #0xf - bl FUN_02019620 + bl FillWindowPixelBuffer mov r6, #0x0 add r4, r6, #0x0 _0208A882: @@ -671,7 +671,7 @@ _0208A882: ldr r0, [r5, #0x14] add r1, r7, #0x0 add r3, r2, #0x0 - bl FUN_020136F8 + bl ListMenuUpdateCursorObj _0208A8B8: str r7, [r5, #0x68] mov r1, #0x0 @@ -771,13 +771,13 @@ _0208A954: lsr r1, r1, #0x10 str r1, [sp, #0x4] mov r1, #0xf - bl FUN_020196F4 + bl FillWindowPixelRect ldr r3, [r4, #0x5c] ldr r0, [r4, #0x14] ldr r1, [r4, #0x68] mov r2, #0x0 lsl r3, r3, #0x4 - bl FUN_020136F8 + bl ListMenuUpdateCursorObj ldr r0, [r4, #0x68] bl FUN_02019548 ldr r0, _0208A994 ; =0x000005DC diff --git a/arm9/asm/unk_0208AC14.s b/arm9/asm/unk_0208AC14.s index 4d334a19..2f1ab9a6 100644 --- a/arm9/asm/unk_0208AC14.s +++ b/arm9/asm/unk_0208AC14.s @@ -1,9 +1,9 @@ .include "asm/macros.inc" .include "global.inc" - .extern UNK_020FFA38 - .extern UNK_021064B8 - .extern UNK_021064C0 + .extern FX_SinCosTable_ + .extern NNS_GfdDefaultFuncAllocTexVram + .extern NNS_GfdDefaultFuncAllocPlttVram .section .data .global UNK_02106158 @@ -773,7 +773,7 @@ _0208B60C: FUN_0208B630: ; 0x0208B630 stmdb sp!, {lr} sub sp, sp, #0x4 - ldr r3, _0208B660 ; =UNK_021064C0 + ldr r3, _0208B660 ; =NNS_GfdDefaultFuncAllocPlttVram mov r2, #0x0 ldr r3, [r3, #0x0] blx r3 @@ -784,14 +784,14 @@ FUN_0208B630: ; 0x0208B630 ldmia sp!, {lr} bx lr .balign 4 -_0208B660: .word UNK_021064C0 +_0208B660: .word NNS_GfdDefaultFuncAllocPlttVram _0208B664: .word 0x0000FFFF arm_func_start FUN_0208B668 FUN_0208B668: ; 0x0208B668 stmdb sp!, {lr} sub sp, sp, #0x4 - ldr r3, _0208B698 ; =UNK_021064B8 + ldr r3, _0208B698 ; =NNS_GfdDefaultFuncAllocTexVram mov r2, #0x0 ldr r3, [r3, #0x0] blx r3 @@ -802,7 +802,7 @@ FUN_0208B668: ; 0x0208B668 ldmia sp!, {lr} bx lr .balign 4 -_0208B698: .word UNK_021064B8 +_0208B698: .word NNS_GfdDefaultFuncAllocTexVram _0208B69C: .word 0x0000FFFF arm_func_start FUN_0208B6A0 @@ -1823,7 +1823,7 @@ FUN_0208C4F4: ; 0x0208C4F4 ldr r0, [r5, #0x40] ldrh r1, [r4, #0x20] ldr r0, [r0, #0x20] - ldr r6, _0208C954 ; =UNK_020FFA38 + ldr r6, _0208C954 ; =FX_SinCosTable_ ldr r0, [r0, #0x14] mov r1, r1, asr #0x4 ldrh r0, [r0, #0x0] @@ -2087,7 +2087,7 @@ _0208C8BC: bx lr .balign 4 _0208C950: .word 0x040004A4 -_0208C954: .word UNK_020FFA38 +_0208C954: .word FX_SinCosTable_ _0208C958: .word UNK_02106160 _0208C95C: .word 0x00000CCD _0208C960: .word 0xFFFFF333 @@ -2125,7 +2125,7 @@ FUN_0208C974: ; 0x0208C974 ldr r0, [r5, #0x40] ldrh r1, [r4, #0x20] ldr r0, [r0, #0x20] - ldr r6, _0208CDD0 ; =UNK_020FFA38 + ldr r6, _0208CDD0 ; =FX_SinCosTable_ ldr r0, [r0, #0x0] mov r1, r1, asr #0x4 mov r2, r1, lsl #0x1 @@ -2388,7 +2388,7 @@ _0208CD38: bx lr .balign 4 _0208CDCC: .word 0x040004A4 -_0208CDD0: .word UNK_020FFA38 +_0208CDD0: .word FX_SinCosTable_ _0208CDD4: .word UNK_02106160 _0208CDD8: .word 0x00000CCD _0208CDDC: .word 0xFFFFF333 @@ -2426,7 +2426,7 @@ FUN_0208CDF0: ; 0x0208CDF0 ldr r0, [r5, #0x40] ldrh r1, [r4, #0x20] ldr r0, [r0, #0x20] - ldr r6, _0208D128 ; =UNK_020FFA38 + ldr r6, _0208D128 ; =FX_SinCosTable_ ldr r0, [r0, #0x14] mov r1, r1, asr #0x4 ldrh r0, [r0, #0x0] @@ -2612,7 +2612,7 @@ _0208D090: bx lr .balign 4 _0208D124: .word 0x040004A4 -_0208D128: .word UNK_020FFA38 +_0208D128: .word FX_SinCosTable_ _0208D12C: .word UNK_02106160 _0208D130: .word 0x04000454 _0208D134: .word 0x04000470 @@ -2648,7 +2648,7 @@ FUN_0208D140: ; 0x0208D140 ldr r0, [r5, #0x40] ldrh r1, [r4, #0x20] ldr r0, [r0, #0x20] - ldr r6, _0208D478 ; =UNK_020FFA38 + ldr r6, _0208D478 ; =FX_SinCosTable_ ldr r0, [r0, #0x0] mov r1, r1, asr #0x4 mov r2, r1, lsl #0x1 @@ -2834,7 +2834,7 @@ _0208D3E0: bx lr .balign 4 _0208D474: .word 0x040004A4 -_0208D478: .word UNK_020FFA38 +_0208D478: .word FX_SinCosTable_ _0208D47C: .word UNK_02106160 _0208D480: .word 0x04000454 _0208D484: .word 0x04000470 @@ -3854,7 +3854,7 @@ _0208E39C: str r3, [sp, #0x8] bl MTX_MultVec43 ldrh r0, [r6, #0x20] - ldr r2, _0208E69C ; =UNK_020FFA38 + ldr r2, _0208E69C ; =FX_SinCosTable_ mov r9, #0x0 mov r0, r0, asr #0x4 mov r3, r0, lsl #0x1 @@ -3935,7 +3935,7 @@ _0208E4BC: str r3, [sp, #0x8] bl MTX_MultVec43 ldrh r0, [r6, #0x20] - ldr r2, _0208E69C ; =UNK_020FFA38 + ldr r2, _0208E69C ; =FX_SinCosTable_ mov lr, #0x0 mov r0, r0, asr #0x4 mov r3, r0, lsl #0x1 @@ -4029,7 +4029,7 @@ _0208E620: bx lr .balign 4 _0208E698: .word 0x040004A4 -_0208E69C: .word UNK_020FFA38 +_0208E69C: .word FX_SinCosTable_ _0208E6A0: .word 0x04000454 _0208E6A4: .word 0x04000470 _0208E6A8: .word 0x04000480 @@ -4139,7 +4139,7 @@ _0208E7E0: str r3, [sp, #0x8] bl MTX_MultVec43 ldrh r0, [r8, #0x20] - ldr r2, _0208EAE8 ; =UNK_020FFA38 + ldr r2, _0208EAE8 ; =FX_SinCosTable_ ldr r12, [sp, #0x0] mov r0, r0, asr #0x4 mov r3, r0, lsl #0x1 @@ -4220,7 +4220,7 @@ _0208E90C: str r3, [sp, #0x8] bl MTX_MultVec43 ldrh r0, [r8, #0x20] - ldr r2, _0208EAE8 ; =UNK_020FFA38 + ldr r2, _0208EAE8 ; =FX_SinCosTable_ mov r8, #0x0 mov r0, r0, asr #0x4 mov r3, r0, lsl #0x1 @@ -4313,7 +4313,7 @@ _0208EA70: bx lr .balign 4 _0208EAE4: .word 0x040004A4 -_0208EAE8: .word UNK_020FFA38 +_0208EAE8: .word FX_SinCosTable_ _0208EAEC: .word 0x04000454 _0208EAF0: .word 0x04000470 _0208EAF4: .word 0x04000480 @@ -4846,12 +4846,12 @@ _0208F294: add r1, r1, #0x10000 mov r2, r0, lsl #0x1 str r1, [sp, #0x18] - ldr r0, _0208FD98 ; =UNK_020FFA38 + ldr r0, _0208FD98 ; =FX_SinCosTable_ mov r1, r2, lsl #0x1 ldrsh r0, [r0, r1] add r1, r2, #0x1 mov r2, r1, lsl #0x1 - ldr r1, _0208FD98 ; =UNK_020FFA38 + ldr r1, _0208FD98 ; =FX_SinCosTable_ ldrsh r3, [r1, r2] ldr r2, [r9, #0x5c] mov r1, #0x800 @@ -5562,7 +5562,7 @@ _0208FD88: .word 0x00000FFF _0208FD8C: .word UNK_021C8C5C _0208FD90: .word 0x5EEDF715 _0208FD94: .word 0x1B0CB173 -_0208FD98: .word UNK_020FFA38 +_0208FD98: .word FX_SinCosTable_ _0208FD9C: .word 0x00000003 _0208FDA0: .word 0xAAAAAAAB _0208FDA4: .word 0x0000FFFF @@ -6265,7 +6265,7 @@ FUN_02090780: ; 0x02090780 b _02090838 _020907AC: ldrh r1, [r0, #0x0] - ldr r3, _02090854 ; =UNK_020FFA38 + ldr r3, _02090854 ; =FX_SinCosTable_ add r0, sp, #0x0 mov r1, r1, asr #0x4 mov r2, r1, lsl #0x1 @@ -6278,7 +6278,7 @@ _020907AC: b _02090838 _020907DC: ldrh r1, [r0, #0x0] - ldr r3, _02090854 ; =UNK_020FFA38 + ldr r3, _02090854 ; =FX_SinCosTable_ add r0, sp, #0x0 mov r1, r1, asr #0x4 mov r2, r1, lsl #0x1 @@ -6291,7 +6291,7 @@ _020907DC: b _02090838 _0209080C: ldrh r1, [r0, #0x0] - ldr r3, _02090854 ; =UNK_020FFA38 + ldr r3, _02090854 ; =FX_SinCosTable_ add r0, sp, #0x0 mov r1, r1, asr #0x4 mov r2, r1, lsl #0x1 @@ -6310,7 +6310,7 @@ _02090838: ldmia sp!, {r4,lr} bx lr .balign 4 -_02090854: .word UNK_020FFA38 +_02090854: .word FX_SinCosTable_ arm_func_start FUN_02090858 FUN_02090858: ; 0x02090858 diff --git a/arm9/asm/unk_020ADA84.s b/arm9/asm/unk_020ADA84.s deleted file mode 100644 index 29fddc4a..00000000 --- a/arm9/asm/unk_020ADA84.s +++ /dev/null @@ -1,23258 +0,0 @@ - .include "asm/macros.inc" - .include "global.inc" - - .extern SNDi_DecibelTable - .extern GXi_DmaId - - .section .rodata - - .global UNK_020FF7CC -UNK_020FF7CC: ; 0x020FF7CC - .word FUN_020AE894 - .word FUN_020AE884 - - .global UNK_020FF7D4 -UNK_020FF7D4: ; 0x020FF7D4 - .word FUN_020AF2B4 - .word FUN_020AF288 - .word FUN_020AF25C - .word FUN_020AF230 - .word GX_LoadBG0Char_2 - .word GX_LoadBG1Char_2 - .word GX_LoadBG2Char_2 - .word GX_LoadBG3Char_2 - .word GX_LoadBG0Scr_2 - .word GX_LoadBG1Scr_2 - .word GX_LoadBG2Scr_2 - .word GX_LoadBG3Scr_2 - .word GX_LoadBG2Scr_3 - .word GX_LoadBG3Scr_3 - .word GX_LoadOBJPltt_2 - .word GX_LoadBGPltt_2 - .word FUN_020AF174 - .word FUN_020AF148 - .word GX_LoadOAM_2 - .word GX_LoadOBJ_2 - .word GXS_LoadBG0Char_2 - .word GXS_LoadBG1Char_2 - .word GXS_LoadBG2Char_2 - .word GXS_LoadBG3Char_2 - .word GXS_LoadBG0Scr_2 - .word GXS_LoadBG1Scr_2 - .word GXS_LoadBG2Scr_2 - .word GXS_LoadBG3Scr_2 - .word GXS_LoadBG2Scr_3 - .word GXS_LoadBG3Scr_3 - .word GXS_LoadOBJPltt_2 - .word GXS_LoadBGPltt_2 - .word FUN_020AF074 - .word FUN_020AF048 - .word GXS_LoadOAM_2 - .word GXS_LoadOBJ_2 - - .global UNK_020FF864 -UNK_020FF864: ; 0x020FF864 - .byte 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - - .global UNK_020FF894 -UNK_020FF894: ; 0x020FF894 - .byte 0x08, 0x00, 0x10, 0x00, 0x20, 0x00, 0x40, 0x00, 0x08, 0x00, 0x08, 0x00, 0x10, 0x00, 0x20, 0x00 - .byte 0x10, 0x00, 0x20, 0x00, 0x20, 0x00, 0x40, 0x00 - - .global UNK_020FF8AC -UNK_020FF8AC: ; 0x020FF8AC - .byte 0x08, 0x00, 0x10, 0x00, 0x20, 0x00, 0x40, 0x00, 0x10, 0x00, 0x20, 0x00, 0x20, 0x00, 0x40, 0x00 - .byte 0x08, 0x00, 0x08, 0x00, 0x10, 0x00, 0x20, 0x00 - - .global UNK_020FF8C4 -UNK_020FF8C4: ; 0x020FF8C4 - .byte 0x00, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00 - - .global UNK_020FF8D0 -UNK_020FF8D0: ; 0x020FF8D0 - .byte 0x03, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00 - - .global UNK_020FF8D8 -UNK_020FF8D8: ; 0x020FF8D8 - .byte 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00 - .byte 0x10, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00 - - .global UNK_020FF8F8 -UNK_020FF8F8: ; 0x020FF8F8 - .byte 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00 - .byte 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 - - .global UNK_020FF928 -UNK_020FF928: ; 0x020FF928 - .byte 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 - .byte 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00 - - .global UNK_020FF958 -UNK_020FF958: ; 0x020FF958 - .byte 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - - .global UNK_020FF970 -UNK_020FF970: ; 0x020FF970 - .byte 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x01, 0x01, 0x01, 0x02, 0x01, 0x02, 0x01 - .byte 0x00, 0x02, 0x01, 0x02, 0x02, 0x02, 0x03, 0x02, 0x00, 0x02, 0x01, 0x02, 0x02, 0x03, 0x03, 0x03 - - .global UNK_020FF990 -UNK_020FF990: ; 0x020FF990 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x40, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x40, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x80, 0x00, 0x40, 0x00, 0x80, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x40, 0x00, 0xC0 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0xC0, 0x00, 0x00, 0x00, 0xC0 - - .global UNK_020FF9D0 -UNK_020FF9D0: ; 0x020FF9D0 - .byte 0x00, 0x00, 0x00, 0x00, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F - .byte 0x00, 0x80, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x80, 0xFF, 0x7F, 0xFF, 0xFF, 0xFF, 0x7F - - .global UNK_020FF9F0 -UNK_020FF9F0: ; 0x020FF9F0 - .byte 0x04 - - .global UNK_020FF9F1 -UNK_020FF9F1: ; 0x020FF9F1 - .byte 0x05 - - .global UNK_020FF9F2 -UNK_020FF9F2: ; 0x020FF9F2 - .byte 0x07 - - .global UNK_020FF9F3 -UNK_020FF9F3: ; 0x020FF9F3 - .byte 0x08, 0x03, 0x05, 0x06, 0x08, 0x03, 0x04, 0x06, 0x07, 0x01, 0x02, 0x07, 0x08, 0x00, 0x02, 0x06 - .byte 0x08, 0x00, 0x01, 0x06, 0x07, 0x01, 0x02, 0x04, 0x05, 0x00, 0x02, 0x03, 0x05, 0x00, 0x01, 0x03 - .byte 0x04 - - .global UNK_020FFA14 -UNK_020FFA14: ; 0x020FFA14 - .byte 0x04 - - .global UNK_020FFA15 -UNK_020FFA15: ; 0x020FFA15 - .byte 0x05 - - .global UNK_020FFA16 -UNK_020FFA16: ; 0x020FFA16 - .byte 0x07 - - .global UNK_020FFA17 -UNK_020FFA17: ; 0x020FFA17 - .byte 0x08, 0x03, 0x05, 0x06, 0x08, 0x03, 0x04, 0x06, 0x07, 0x01, 0x02, 0x07, 0x08, 0x00, 0x02, 0x06 - .byte 0x08, 0x00, 0x01, 0x06, 0x07, 0x01, 0x02, 0x04, 0x05, 0x00, 0x02, 0x03, 0x05, 0x00, 0x01, 0x03 - .byte 0x04 - - .global UNK_020FFA38 -UNK_020FFA38: ; 0x020FFA38 - .byte 0x00, 0x00, 0x00, 0x10, 0x06, 0x00, 0x00, 0x10, 0x0D, 0x00, 0x00, 0x10, 0x13, 0x00, 0x00, 0x10, - .byte 0x19, 0x00, 0x00, 0x10, 0x1F, 0x00, 0x00, 0x10, 0x26, 0x00, 0x00, 0x10, 0x2C, 0x00, 0x00, 0x10, - .byte 0x32, 0x00, 0x00, 0x10, 0x39, 0x00, 0x00, 0x10, 0x3F, 0x00, 0x00, 0x10, 0x45, 0x00, 0xFF, 0x0F, - .byte 0x4B, 0x00, 0xFF, 0x0F, 0x52, 0x00, 0xFF, 0x0F, 0x58, 0x00, 0xFF, 0x0F, 0x5E, 0x00, 0xFF, 0x0F, - .byte 0x65, 0x00, 0xFF, 0x0F, 0x6B, 0x00, 0xFF, 0x0F, 0x71, 0x00, 0xFE, 0x0F, 0x77, 0x00, 0xFE, 0x0F, - .byte 0x7E, 0x00, 0xFE, 0x0F, 0x84, 0x00, 0xFE, 0x0F, 0x8A, 0x00, 0xFE, 0x0F, 0x90, 0x00, 0xFD, 0x0F, - .byte 0x97, 0x00, 0xFD, 0x0F, 0x9D, 0x00, 0xFD, 0x0F, 0xA3, 0x00, 0xFD, 0x0F, 0xAA, 0x00, 0xFC, 0x0F, - .byte 0xB0, 0x00, 0xFC, 0x0F, 0xB6, 0x00, 0xFC, 0x0F, 0xBC, 0x00, 0xFC, 0x0F, 0xC3, 0x00, 0xFB, 0x0F, - .byte 0xC9, 0x00, 0xFB, 0x0F, 0xCF, 0x00, 0xFB, 0x0F, 0xD6, 0x00, 0xFA, 0x0F, 0xDC, 0x00, 0xFA, 0x0F, - .byte 0xE2, 0x00, 0xFA, 0x0F, 0xE8, 0x00, 0xF9, 0x0F, 0xEF, 0x00, 0xF9, 0x0F, 0xF5, 0x00, 0xF9, 0x0F, - .byte 0xFB, 0x00, 0xF8, 0x0F, 0x01, 0x01, 0xF8, 0x0F, 0x08, 0x01, 0xF8, 0x0F, 0x0E, 0x01, 0xF7, 0x0F, - .byte 0x14, 0x01, 0xF7, 0x0F, 0x1B, 0x01, 0xF6, 0x0F, 0x21, 0x01, 0xF6, 0x0F, 0x27, 0x01, 0xF5, 0x0F, - .byte 0x2D, 0x01, 0xF5, 0x0F, 0x34, 0x01, 0xF4, 0x0F, 0x3A, 0x01, 0xF4, 0x0F, 0x40, 0x01, 0xF3, 0x0F, - .byte 0x46, 0x01, 0xF3, 0x0F, 0x4D, 0x01, 0xF2, 0x0F, 0x53, 0x01, 0xF2, 0x0F, 0x59, 0x01, 0xF1, 0x0F, - .byte 0x5F, 0x01, 0xF1, 0x0F, 0x66, 0x01, 0xF0, 0x0F, 0x6C, 0x01, 0xF0, 0x0F, 0x72, 0x01, 0xEF, 0x0F, - .byte 0x78, 0x01, 0xEF, 0x0F, 0x7F, 0x01, 0xEE, 0x0F, 0x85, 0x01, 0xED, 0x0F, 0x8B, 0x01, 0xED, 0x0F, - .byte 0x91, 0x01, 0xEC, 0x0F, 0x98, 0x01, 0xEC, 0x0F, 0x9E, 0x01, 0xEB, 0x0F, 0xA4, 0x01, 0xEA, 0x0F, - .byte 0xAA, 0x01, 0xEA, 0x0F, 0xB1, 0x01, 0xE9, 0x0F, 0xB7, 0x01, 0xE8, 0x0F, 0xBD, 0x01, 0xE8, 0x0F, - .byte 0xC3, 0x01, 0xE7, 0x0F, 0xCA, 0x01, 0xE6, 0x0F, 0xD0, 0x01, 0xE6, 0x0F, 0xD6, 0x01, 0xE5, 0x0F, - .byte 0xDC, 0x01, 0xE4, 0x0F, 0xE3, 0x01, 0xE3, 0x0F, 0xE9, 0x01, 0xE3, 0x0F, 0xEF, 0x01, 0xE2, 0x0F, - .byte 0xF5, 0x01, 0xE1, 0x0F, 0xFC, 0x01, 0xE0, 0x0F, 0x02, 0x02, 0xE0, 0x0F, 0x08, 0x02, 0xDF, 0x0F, - .byte 0x0E, 0x02, 0xDE, 0x0F, 0x15, 0x02, 0xDD, 0x0F, 0x1B, 0x02, 0xDC, 0x0F, 0x21, 0x02, 0xDC, 0x0F, - .byte 0x27, 0x02, 0xDB, 0x0F, 0x2D, 0x02, 0xDA, 0x0F, 0x34, 0x02, 0xD9, 0x0F, 0x3A, 0x02, 0xD8, 0x0F, - .byte 0x40, 0x02, 0xD7, 0x0F, 0x46, 0x02, 0xD6, 0x0F, 0x4D, 0x02, 0xD5, 0x0F, 0x53, 0x02, 0xD5, 0x0F, - .byte 0x59, 0x02, 0xD4, 0x0F, 0x5F, 0x02, 0xD3, 0x0F, 0x65, 0x02, 0xD2, 0x0F, 0x6C, 0x02, 0xD1, 0x0F, - .byte 0x72, 0x02, 0xD0, 0x0F, 0x78, 0x02, 0xCF, 0x0F, 0x7E, 0x02, 0xCE, 0x0F, 0x84, 0x02, 0xCD, 0x0F, - .byte 0x8B, 0x02, 0xCC, 0x0F, 0x91, 0x02, 0xCB, 0x0F, 0x97, 0x02, 0xCA, 0x0F, 0x9D, 0x02, 0xC9, 0x0F, - .byte 0xA3, 0x02, 0xC8, 0x0F, 0xAA, 0x02, 0xC7, 0x0F, 0xB0, 0x02, 0xC6, 0x0F, 0xB6, 0x02, 0xC5, 0x0F, - .byte 0xBC, 0x02, 0xC4, 0x0F, 0xC2, 0x02, 0xC3, 0x0F, 0xC9, 0x02, 0xC2, 0x0F, 0xCF, 0x02, 0xC0, 0x0F, - .byte 0xD5, 0x02, 0xBF, 0x0F, 0xDB, 0x02, 0xBE, 0x0F, 0xE1, 0x02, 0xBD, 0x0F, 0xE8, 0x02, 0xBC, 0x0F, - .byte 0xEE, 0x02, 0xBB, 0x0F, 0xF4, 0x02, 0xBA, 0x0F, 0xFA, 0x02, 0xB8, 0x0F, 0x00, 0x03, 0xB7, 0x0F, - .byte 0x06, 0x03, 0xB6, 0x0F, 0x0D, 0x03, 0xB5, 0x0F, 0x13, 0x03, 0xB4, 0x0F, 0x19, 0x03, 0xB3, 0x0F, - .byte 0x1F, 0x03, 0xB1, 0x0F, 0x25, 0x03, 0xB0, 0x0F, 0x2B, 0x03, 0xAF, 0x0F, 0x32, 0x03, 0xAE, 0x0F, - .byte 0x38, 0x03, 0xAC, 0x0F, 0x3E, 0x03, 0xAB, 0x0F, 0x44, 0x03, 0xAA, 0x0F, 0x4A, 0x03, 0xA8, 0x0F, - .byte 0x50, 0x03, 0xA7, 0x0F, 0x56, 0x03, 0xA6, 0x0F, 0x5D, 0x03, 0xA5, 0x0F, 0x63, 0x03, 0xA3, 0x0F, - .byte 0x69, 0x03, 0xA2, 0x0F, 0x6F, 0x03, 0xA1, 0x0F, 0x75, 0x03, 0x9F, 0x0F, 0x7B, 0x03, 0x9E, 0x0F, - .byte 0x81, 0x03, 0x9C, 0x0F, 0x88, 0x03, 0x9B, 0x0F, 0x8E, 0x03, 0x9A, 0x0F, 0x94, 0x03, 0x98, 0x0F, - .byte 0x9A, 0x03, 0x97, 0x0F, 0xA0, 0x03, 0x95, 0x0F, 0xA6, 0x03, 0x94, 0x0F, 0xAC, 0x03, 0x93, 0x0F, - .byte 0xB2, 0x03, 0x91, 0x0F, 0xB9, 0x03, 0x90, 0x0F, 0xBF, 0x03, 0x8E, 0x0F, 0xC5, 0x03, 0x8D, 0x0F, - .byte 0xCB, 0x03, 0x8B, 0x0F, 0xD1, 0x03, 0x8A, 0x0F, 0xD7, 0x03, 0x88, 0x0F, 0xDD, 0x03, 0x87, 0x0F, - .byte 0xE3, 0x03, 0x85, 0x0F, 0xE9, 0x03, 0x84, 0x0F, 0xEF, 0x03, 0x82, 0x0F, 0xF6, 0x03, 0x81, 0x0F, - .byte 0xFC, 0x03, 0x7F, 0x0F, 0x02, 0x04, 0x7D, 0x0F, 0x08, 0x04, 0x7C, 0x0F, 0x0E, 0x04, 0x7A, 0x0F, - .byte 0x14, 0x04, 0x79, 0x0F, 0x1A, 0x04, 0x77, 0x0F, 0x20, 0x04, 0x76, 0x0F, 0x26, 0x04, 0x74, 0x0F, - .byte 0x2C, 0x04, 0x72, 0x0F, 0x32, 0x04, 0x71, 0x0F, 0x38, 0x04, 0x6F, 0x0F, 0x3E, 0x04, 0x6D, 0x0F, - .byte 0x44, 0x04, 0x6C, 0x0F, 0x4B, 0x04, 0x6A, 0x0F, 0x51, 0x04, 0x68, 0x0F, 0x57, 0x04, 0x67, 0x0F, - .byte 0x5D, 0x04, 0x65, 0x0F, 0x63, 0x04, 0x63, 0x0F, 0x69, 0x04, 0x61, 0x0F, 0x6F, 0x04, 0x60, 0x0F, - .byte 0x75, 0x04, 0x5E, 0x0F, 0x7B, 0x04, 0x5C, 0x0F, 0x81, 0x04, 0x5A, 0x0F, 0x87, 0x04, 0x59, 0x0F, - .byte 0x8D, 0x04, 0x57, 0x0F, 0x93, 0x04, 0x55, 0x0F, 0x99, 0x04, 0x53, 0x0F, 0x9F, 0x04, 0x51, 0x0F, - .byte 0xA5, 0x04, 0x50, 0x0F, 0xAB, 0x04, 0x4E, 0x0F, 0xB1, 0x04, 0x4C, 0x0F, 0xB7, 0x04, 0x4A, 0x0F, - .byte 0xBD, 0x04, 0x48, 0x0F, 0xC3, 0x04, 0x46, 0x0F, 0xC9, 0x04, 0x45, 0x0F, 0xCF, 0x04, 0x43, 0x0F, - .byte 0xD5, 0x04, 0x41, 0x0F, 0xDB, 0x04, 0x3F, 0x0F, 0xE1, 0x04, 0x3D, 0x0F, 0xE7, 0x04, 0x3B, 0x0F, - .byte 0xED, 0x04, 0x39, 0x0F, 0xF3, 0x04, 0x37, 0x0F, 0xF9, 0x04, 0x35, 0x0F, 0xFF, 0x04, 0x33, 0x0F, - .byte 0x05, 0x05, 0x31, 0x0F, 0x0B, 0x05, 0x2F, 0x0F, 0x11, 0x05, 0x2D, 0x0F, 0x17, 0x05, 0x2B, 0x0F, - .byte 0x1D, 0x05, 0x29, 0x0F, 0x23, 0x05, 0x27, 0x0F, 0x29, 0x05, 0x25, 0x0F, 0x2F, 0x05, 0x23, 0x0F, - .byte 0x34, 0x05, 0x21, 0x0F, 0x3A, 0x05, 0x1F, 0x0F, 0x40, 0x05, 0x1D, 0x0F, 0x46, 0x05, 0x1B, 0x0F, - .byte 0x4C, 0x05, 0x19, 0x0F, 0x52, 0x05, 0x17, 0x0F, 0x58, 0x05, 0x15, 0x0F, 0x5E, 0x05, 0x13, 0x0F, - .byte 0x64, 0x05, 0x11, 0x0F, 0x6A, 0x05, 0x0E, 0x0F, 0x70, 0x05, 0x0C, 0x0F, 0x76, 0x05, 0x0A, 0x0F, - .byte 0x7C, 0x05, 0x08, 0x0F, 0x81, 0x05, 0x06, 0x0F, 0x87, 0x05, 0x04, 0x0F, 0x8D, 0x05, 0x02, 0x0F, - .byte 0x93, 0x05, 0xFF, 0x0E, 0x99, 0x05, 0xFD, 0x0E, 0x9F, 0x05, 0xFB, 0x0E, 0xA5, 0x05, 0xF9, 0x0E, - .byte 0xAB, 0x05, 0xF7, 0x0E, 0xB1, 0x05, 0xF4, 0x0E, 0xB6, 0x05, 0xF2, 0x0E, 0xBC, 0x05, 0xF0, 0x0E, - .byte 0xC2, 0x05, 0xEE, 0x0E, 0xC8, 0x05, 0xEB, 0x0E, 0xCE, 0x05, 0xE9, 0x0E, 0xD4, 0x05, 0xE7, 0x0E, - .byte 0xDA, 0x05, 0xE4, 0x0E, 0xDF, 0x05, 0xE2, 0x0E, 0xE5, 0x05, 0xE0, 0x0E, 0xEB, 0x05, 0xDD, 0x0E, - .byte 0xF1, 0x05, 0xDB, 0x0E, 0xF7, 0x05, 0xD9, 0x0E, 0xFD, 0x05, 0xD6, 0x0E, 0x02, 0x06, 0xD4, 0x0E, - .byte 0x08, 0x06, 0xD2, 0x0E, 0x0E, 0x06, 0xCF, 0x0E, 0x14, 0x06, 0xCD, 0x0E, 0x1A, 0x06, 0xCB, 0x0E, - .byte 0x1F, 0x06, 0xC8, 0x0E, 0x25, 0x06, 0xC6, 0x0E, 0x2B, 0x06, 0xC3, 0x0E, 0x31, 0x06, 0xC1, 0x0E, - .byte 0x37, 0x06, 0xBF, 0x0E, 0x3C, 0x06, 0xBC, 0x0E, 0x42, 0x06, 0xBA, 0x0E, 0x48, 0x06, 0xB7, 0x0E, - .byte 0x4E, 0x06, 0xB5, 0x0E, 0x54, 0x06, 0xB2, 0x0E, 0x59, 0x06, 0xB0, 0x0E, 0x5F, 0x06, 0xAD, 0x0E, - .byte 0x65, 0x06, 0xAB, 0x0E, 0x6B, 0x06, 0xA8, 0x0E, 0x70, 0x06, 0xA6, 0x0E, 0x76, 0x06, 0xA3, 0x0E, - .byte 0x7C, 0x06, 0xA1, 0x0E, 0x82, 0x06, 0x9E, 0x0E, 0x87, 0x06, 0x9B, 0x0E, 0x8D, 0x06, 0x99, 0x0E, - .byte 0x93, 0x06, 0x96, 0x0E, 0x99, 0x06, 0x94, 0x0E, 0x9E, 0x06, 0x91, 0x0E, 0xA4, 0x06, 0x8F, 0x0E, - .byte 0xAA, 0x06, 0x8C, 0x0E, 0xAF, 0x06, 0x89, 0x0E, 0xB5, 0x06, 0x87, 0x0E, 0xBB, 0x06, 0x84, 0x0E, - .byte 0xC1, 0x06, 0x81, 0x0E, 0xC6, 0x06, 0x7F, 0x0E, 0xCC, 0x06, 0x7C, 0x0E, 0xD2, 0x06, 0x79, 0x0E, - .byte 0xD7, 0x06, 0x77, 0x0E, 0xDD, 0x06, 0x74, 0x0E, 0xE3, 0x06, 0x71, 0x0E, 0xE8, 0x06, 0x6F, 0x0E, - .byte 0xEE, 0x06, 0x6C, 0x0E, 0xF4, 0x06, 0x69, 0x0E, 0xF9, 0x06, 0x66, 0x0E, 0xFF, 0x06, 0x64, 0x0E, - .byte 0x05, 0x07, 0x61, 0x0E, 0x0A, 0x07, 0x5E, 0x0E, 0x10, 0x07, 0x5B, 0x0E, 0x15, 0x07, 0x59, 0x0E, - .byte 0x1B, 0x07, 0x56, 0x0E, 0x21, 0x07, 0x53, 0x0E, 0x26, 0x07, 0x50, 0x0E, 0x2C, 0x07, 0x4D, 0x0E, - .byte 0x32, 0x07, 0x4B, 0x0E, 0x37, 0x07, 0x48, 0x0E, 0x3D, 0x07, 0x45, 0x0E, 0x42, 0x07, 0x42, 0x0E, - .byte 0x48, 0x07, 0x3F, 0x0E, 0x4E, 0x07, 0x3C, 0x0E, 0x53, 0x07, 0x3A, 0x0E, 0x59, 0x07, 0x37, 0x0E, - .byte 0x5E, 0x07, 0x34, 0x0E, 0x64, 0x07, 0x31, 0x0E, 0x6A, 0x07, 0x2E, 0x0E, 0x6F, 0x07, 0x2B, 0x0E, - .byte 0x75, 0x07, 0x28, 0x0E, 0x7A, 0x07, 0x25, 0x0E, 0x80, 0x07, 0x22, 0x0E, 0x85, 0x07, 0x1F, 0x0E, - .byte 0x8B, 0x07, 0x1C, 0x0E, 0x90, 0x07, 0x19, 0x0E, 0x96, 0x07, 0x16, 0x0E, 0x9B, 0x07, 0x13, 0x0E, - .byte 0xA1, 0x07, 0x10, 0x0E, 0xA6, 0x07, 0x0D, 0x0E, 0xAC, 0x07, 0x0A, 0x0E, 0xB2, 0x07, 0x07, 0x0E, - .byte 0xB7, 0x07, 0x04, 0x0E, 0xBD, 0x07, 0x01, 0x0E, 0xC2, 0x07, 0xFE, 0x0D, 0xC8, 0x07, 0xFB, 0x0D, - .byte 0xCD, 0x07, 0xF8, 0x0D, 0xD2, 0x07, 0xF5, 0x0D, 0xD8, 0x07, 0xF2, 0x0D, 0xDD, 0x07, 0xEF, 0x0D, - .byte 0xE3, 0x07, 0xEC, 0x0D, 0xE8, 0x07, 0xE9, 0x0D, 0xEE, 0x07, 0xE6, 0x0D, 0xF3, 0x07, 0xE3, 0x0D, - .byte 0xF9, 0x07, 0xDF, 0x0D, 0xFE, 0x07, 0xDC, 0x0D, 0x04, 0x08, 0xD9, 0x0D, 0x09, 0x08, 0xD6, 0x0D, - .byte 0x0E, 0x08, 0xD3, 0x0D, 0x14, 0x08, 0xD0, 0x0D, 0x19, 0x08, 0xCC, 0x0D, 0x1F, 0x08, 0xC9, 0x0D, - .byte 0x24, 0x08, 0xC6, 0x0D, 0x2A, 0x08, 0xC3, 0x0D, 0x2F, 0x08, 0xC0, 0x0D, 0x34, 0x08, 0xBC, 0x0D, - .byte 0x3A, 0x08, 0xB9, 0x0D, 0x3F, 0x08, 0xB6, 0x0D, 0x45, 0x08, 0xB3, 0x0D, 0x4A, 0x08, 0xB0, 0x0D, - .byte 0x4F, 0x08, 0xAC, 0x0D, 0x55, 0x08, 0xA9, 0x0D, 0x5A, 0x08, 0xA6, 0x0D, 0x5F, 0x08, 0xA2, 0x0D, - .byte 0x65, 0x08, 0x9F, 0x0D, 0x6A, 0x08, 0x9C, 0x0D, 0x6F, 0x08, 0x99, 0x0D, 0x75, 0x08, 0x95, 0x0D, - .byte 0x7A, 0x08, 0x92, 0x0D, 0x7F, 0x08, 0x8F, 0x0D, 0x85, 0x08, 0x8B, 0x0D, 0x8A, 0x08, 0x88, 0x0D, - .byte 0x8F, 0x08, 0x85, 0x0D, 0x95, 0x08, 0x81, 0x0D, 0x9A, 0x08, 0x7E, 0x0D, 0x9F, 0x08, 0x7A, 0x0D, - .byte 0xA5, 0x08, 0x77, 0x0D, 0xAA, 0x08, 0x74, 0x0D, 0xAF, 0x08, 0x70, 0x0D, 0xB4, 0x08, 0x6D, 0x0D, - .byte 0xBA, 0x08, 0x69, 0x0D, 0xBF, 0x08, 0x66, 0x0D, 0xC4, 0x08, 0x62, 0x0D, 0xC9, 0x08, 0x5F, 0x0D, - .byte 0xCF, 0x08, 0x5C, 0x0D, 0xD4, 0x08, 0x58, 0x0D, 0xD9, 0x08, 0x55, 0x0D, 0xDE, 0x08, 0x51, 0x0D, - .byte 0xE4, 0x08, 0x4E, 0x0D, 0xE9, 0x08, 0x4A, 0x0D, 0xEE, 0x08, 0x47, 0x0D, 0xF3, 0x08, 0x43, 0x0D, - .byte 0xF8, 0x08, 0x40, 0x0D, 0xFE, 0x08, 0x3C, 0x0D, 0x03, 0x09, 0x39, 0x0D, 0x08, 0x09, 0x35, 0x0D, - .byte 0x0D, 0x09, 0x32, 0x0D, 0x12, 0x09, 0x2E, 0x0D, 0x18, 0x09, 0x2A, 0x0D, 0x1D, 0x09, 0x27, 0x0D, - .byte 0x22, 0x09, 0x23, 0x0D, 0x27, 0x09, 0x20, 0x0D, 0x2C, 0x09, 0x1C, 0x0D, 0x31, 0x09, 0x18, 0x0D, - .byte 0x37, 0x09, 0x15, 0x0D, 0x3C, 0x09, 0x11, 0x0D, 0x41, 0x09, 0x0E, 0x0D, 0x46, 0x09, 0x0A, 0x0D, - .byte 0x4B, 0x09, 0x06, 0x0D, 0x50, 0x09, 0x03, 0x0D, 0x55, 0x09, 0xFF, 0x0C, 0x5A, 0x09, 0xFB, 0x0C, - .byte 0x5F, 0x09, 0xF8, 0x0C, 0x65, 0x09, 0xF4, 0x0C, 0x6A, 0x09, 0xF0, 0x0C, 0x6F, 0x09, 0xED, 0x0C, - .byte 0x74, 0x09, 0xE9, 0x0C, 0x79, 0x09, 0xE5, 0x0C, 0x7E, 0x09, 0xE1, 0x0C, 0x83, 0x09, 0xDE, 0x0C, - .byte 0x88, 0x09, 0xDA, 0x0C, 0x8D, 0x09, 0xD6, 0x0C, 0x92, 0x09, 0xD2, 0x0C, 0x97, 0x09, 0xCF, 0x0C, - .byte 0x9C, 0x09, 0xCB, 0x0C, 0xA1, 0x09, 0xC7, 0x0C, 0xA6, 0x09, 0xC3, 0x0C, 0xAB, 0x09, 0xC0, 0x0C, - .byte 0xB0, 0x09, 0xBC, 0x0C, 0xB5, 0x09, 0xB8, 0x0C, 0xBA, 0x09, 0xB4, 0x0C, 0xBF, 0x09, 0xB0, 0x0C, - .byte 0xC4, 0x09, 0xAC, 0x0C, 0xC9, 0x09, 0xA9, 0x0C, 0xCE, 0x09, 0xA5, 0x0C, 0xD3, 0x09, 0xA1, 0x0C, - .byte 0xD8, 0x09, 0x9D, 0x0C, 0xDD, 0x09, 0x99, 0x0C, 0xE2, 0x09, 0x95, 0x0C, 0xE7, 0x09, 0x91, 0x0C, - .byte 0xEC, 0x09, 0x8E, 0x0C, 0xF1, 0x09, 0x8A, 0x0C, 0xF6, 0x09, 0x86, 0x0C, 0xFB, 0x09, 0x82, 0x0C, - .byte 0xFF, 0x09, 0x7E, 0x0C, 0x04, 0x0A, 0x7A, 0x0C, 0x09, 0x0A, 0x76, 0x0C, 0x0E, 0x0A, 0x72, 0x0C, - .byte 0x13, 0x0A, 0x6E, 0x0C, 0x18, 0x0A, 0x6A, 0x0C, 0x1D, 0x0A, 0x66, 0x0C, 0x22, 0x0A, 0x62, 0x0C, - .byte 0x26, 0x0A, 0x5E, 0x0C, 0x2B, 0x0A, 0x5A, 0x0C, 0x30, 0x0A, 0x56, 0x0C, 0x35, 0x0A, 0x52, 0x0C, - .byte 0x3A, 0x0A, 0x4E, 0x0C, 0x3F, 0x0A, 0x4A, 0x0C, 0x44, 0x0A, 0x46, 0x0C, 0x48, 0x0A, 0x42, 0x0C, - .byte 0x4D, 0x0A, 0x3E, 0x0C, 0x52, 0x0A, 0x3A, 0x0C, 0x57, 0x0A, 0x36, 0x0C, 0x5C, 0x0A, 0x32, 0x0C, - .byte 0x60, 0x0A, 0x2E, 0x0C, 0x65, 0x0A, 0x2A, 0x0C, 0x6A, 0x0A, 0x26, 0x0C, 0x6F, 0x0A, 0x22, 0x0C, - .byte 0x73, 0x0A, 0x1E, 0x0C, 0x78, 0x0A, 0x19, 0x0C, 0x7D, 0x0A, 0x15, 0x0C, 0x82, 0x0A, 0x11, 0x0C, - .byte 0x86, 0x0A, 0x0D, 0x0C, 0x8B, 0x0A, 0x09, 0x0C, 0x90, 0x0A, 0x05, 0x0C, 0x95, 0x0A, 0x01, 0x0C, - .byte 0x99, 0x0A, 0xFC, 0x0B, 0x9E, 0x0A, 0xF8, 0x0B, 0xA3, 0x0A, 0xF4, 0x0B, 0xA7, 0x0A, 0xF0, 0x0B, - .byte 0xAC, 0x0A, 0xEC, 0x0B, 0xB1, 0x0A, 0xE8, 0x0B, 0xB5, 0x0A, 0xE3, 0x0B, 0xBA, 0x0A, 0xDF, 0x0B, - .byte 0xBF, 0x0A, 0xDB, 0x0B, 0xC3, 0x0A, 0xD7, 0x0B, 0xC8, 0x0A, 0xD2, 0x0B, 0xCD, 0x0A, 0xCE, 0x0B, - .byte 0xD1, 0x0A, 0xCA, 0x0B, 0xD6, 0x0A, 0xC6, 0x0B, 0xDB, 0x0A, 0xC1, 0x0B, 0xDF, 0x0A, 0xBD, 0x0B, - .byte 0xE4, 0x0A, 0xB9, 0x0B, 0xE8, 0x0A, 0xB5, 0x0B, 0xED, 0x0A, 0xB0, 0x0B, 0xF2, 0x0A, 0xAC, 0x0B, - .byte 0xF6, 0x0A, 0xA8, 0x0B, 0xFB, 0x0A, 0xA3, 0x0B, 0xFF, 0x0A, 0x9F, 0x0B, 0x04, 0x0B, 0x9B, 0x0B, - .byte 0x08, 0x0B, 0x97, 0x0B, 0x0D, 0x0B, 0x92, 0x0B, 0x11, 0x0B, 0x8E, 0x0B, 0x16, 0x0B, 0x89, 0x0B, - .byte 0x1B, 0x0B, 0x85, 0x0B, 0x1F, 0x0B, 0x81, 0x0B, 0x24, 0x0B, 0x7C, 0x0B, 0x28, 0x0B, 0x78, 0x0B, - .byte 0x2D, 0x0B, 0x74, 0x0B, 0x31, 0x0B, 0x6F, 0x0B, 0x36, 0x0B, 0x6B, 0x0B, 0x3A, 0x0B, 0x66, 0x0B, - .byte 0x3E, 0x0B, 0x62, 0x0B, 0x43, 0x0B, 0x5E, 0x0B, 0x47, 0x0B, 0x59, 0x0B, 0x4C, 0x0B, 0x55, 0x0B, - .byte 0x50, 0x0B, 0x50, 0x0B, 0x55, 0x0B, 0x4C, 0x0B, 0x59, 0x0B, 0x47, 0x0B, 0x5E, 0x0B, 0x43, 0x0B, - .byte 0x62, 0x0B, 0x3E, 0x0B, 0x66, 0x0B, 0x3A, 0x0B, 0x6B, 0x0B, 0x36, 0x0B, 0x6F, 0x0B, 0x31, 0x0B, - .byte 0x74, 0x0B, 0x2D, 0x0B, 0x78, 0x0B, 0x28, 0x0B, 0x7C, 0x0B, 0x24, 0x0B, 0x81, 0x0B, 0x1F, 0x0B, - .byte 0x85, 0x0B, 0x1B, 0x0B, 0x89, 0x0B, 0x16, 0x0B, 0x8E, 0x0B, 0x11, 0x0B, 0x92, 0x0B, 0x0D, 0x0B, - .byte 0x97, 0x0B, 0x08, 0x0B, 0x9B, 0x0B, 0x04, 0x0B, 0x9F, 0x0B, 0xFF, 0x0A, 0xA3, 0x0B, 0xFB, 0x0A, - .byte 0xA8, 0x0B, 0xF6, 0x0A, 0xAC, 0x0B, 0xF2, 0x0A, 0xB0, 0x0B, 0xED, 0x0A, 0xB5, 0x0B, 0xE8, 0x0A, - .byte 0xB9, 0x0B, 0xE4, 0x0A, 0xBD, 0x0B, 0xDF, 0x0A, 0xC1, 0x0B, 0xDB, 0x0A, 0xC6, 0x0B, 0xD6, 0x0A, - .byte 0xCA, 0x0B, 0xD1, 0x0A, 0xCE, 0x0B, 0xCD, 0x0A, 0xD2, 0x0B, 0xC8, 0x0A, 0xD7, 0x0B, 0xC3, 0x0A, - .byte 0xDB, 0x0B, 0xBF, 0x0A, 0xDF, 0x0B, 0xBA, 0x0A, 0xE3, 0x0B, 0xB5, 0x0A, 0xE8, 0x0B, 0xB1, 0x0A, - .byte 0xEC, 0x0B, 0xAC, 0x0A, 0xF0, 0x0B, 0xA7, 0x0A, 0xF4, 0x0B, 0xA3, 0x0A, 0xF8, 0x0B, 0x9E, 0x0A, - .byte 0xFC, 0x0B, 0x99, 0x0A, 0x01, 0x0C, 0x95, 0x0A, 0x05, 0x0C, 0x90, 0x0A, 0x09, 0x0C, 0x8B, 0x0A, - .byte 0x0D, 0x0C, 0x86, 0x0A, 0x11, 0x0C, 0x82, 0x0A, 0x15, 0x0C, 0x7D, 0x0A, 0x19, 0x0C, 0x78, 0x0A, - .byte 0x1E, 0x0C, 0x73, 0x0A, 0x22, 0x0C, 0x6F, 0x0A, 0x26, 0x0C, 0x6A, 0x0A, 0x2A, 0x0C, 0x65, 0x0A, - .byte 0x2E, 0x0C, 0x60, 0x0A, 0x32, 0x0C, 0x5C, 0x0A, 0x36, 0x0C, 0x57, 0x0A, 0x3A, 0x0C, 0x52, 0x0A, - .byte 0x3E, 0x0C, 0x4D, 0x0A, 0x42, 0x0C, 0x48, 0x0A, 0x46, 0x0C, 0x44, 0x0A, 0x4A, 0x0C, 0x3F, 0x0A, - .byte 0x4E, 0x0C, 0x3A, 0x0A, 0x52, 0x0C, 0x35, 0x0A, 0x56, 0x0C, 0x30, 0x0A, 0x5A, 0x0C, 0x2B, 0x0A, - .byte 0x5E, 0x0C, 0x26, 0x0A, 0x62, 0x0C, 0x22, 0x0A, 0x66, 0x0C, 0x1D, 0x0A, 0x6A, 0x0C, 0x18, 0x0A, - .byte 0x6E, 0x0C, 0x13, 0x0A, 0x72, 0x0C, 0x0E, 0x0A, 0x76, 0x0C, 0x09, 0x0A, 0x7A, 0x0C, 0x04, 0x0A, - .byte 0x7E, 0x0C, 0xFF, 0x09, 0x82, 0x0C, 0xFB, 0x09, 0x86, 0x0C, 0xF6, 0x09, 0x8A, 0x0C, 0xF1, 0x09, - .byte 0x8E, 0x0C, 0xEC, 0x09, 0x91, 0x0C, 0xE7, 0x09, 0x95, 0x0C, 0xE2, 0x09, 0x99, 0x0C, 0xDD, 0x09, - .byte 0x9D, 0x0C, 0xD8, 0x09, 0xA1, 0x0C, 0xD3, 0x09, 0xA5, 0x0C, 0xCE, 0x09, 0xA9, 0x0C, 0xC9, 0x09, - .byte 0xAC, 0x0C, 0xC4, 0x09, 0xB0, 0x0C, 0xBF, 0x09, 0xB4, 0x0C, 0xBA, 0x09, 0xB8, 0x0C, 0xB5, 0x09, - .byte 0xBC, 0x0C, 0xB0, 0x09, 0xC0, 0x0C, 0xAB, 0x09, 0xC3, 0x0C, 0xA6, 0x09, 0xC7, 0x0C, 0xA1, 0x09, - .byte 0xCB, 0x0C, 0x9C, 0x09, 0xCF, 0x0C, 0x97, 0x09, 0xD2, 0x0C, 0x92, 0x09, 0xD6, 0x0C, 0x8D, 0x09, - .byte 0xDA, 0x0C, 0x88, 0x09, 0xDE, 0x0C, 0x83, 0x09, 0xE1, 0x0C, 0x7E, 0x09, 0xE5, 0x0C, 0x79, 0x09, - .byte 0xE9, 0x0C, 0x74, 0x09, 0xED, 0x0C, 0x6F, 0x09, 0xF0, 0x0C, 0x6A, 0x09, 0xF4, 0x0C, 0x65, 0x09, - .byte 0xF8, 0x0C, 0x5F, 0x09, 0xFB, 0x0C, 0x5A, 0x09, 0xFF, 0x0C, 0x55, 0x09, 0x03, 0x0D, 0x50, 0x09, - .byte 0x06, 0x0D, 0x4B, 0x09, 0x0A, 0x0D, 0x46, 0x09, 0x0E, 0x0D, 0x41, 0x09, 0x11, 0x0D, 0x3C, 0x09, - .byte 0x15, 0x0D, 0x37, 0x09, 0x18, 0x0D, 0x31, 0x09, 0x1C, 0x0D, 0x2C, 0x09, 0x20, 0x0D, 0x27, 0x09, - .byte 0x23, 0x0D, 0x22, 0x09, 0x27, 0x0D, 0x1D, 0x09, 0x2A, 0x0D, 0x18, 0x09, 0x2E, 0x0D, 0x12, 0x09, - .byte 0x32, 0x0D, 0x0D, 0x09, 0x35, 0x0D, 0x08, 0x09, 0x39, 0x0D, 0x03, 0x09, 0x3C, 0x0D, 0xFE, 0x08, - .byte 0x40, 0x0D, 0xF8, 0x08, 0x43, 0x0D, 0xF3, 0x08, 0x47, 0x0D, 0xEE, 0x08, 0x4A, 0x0D, 0xE9, 0x08, - .byte 0x4E, 0x0D, 0xE4, 0x08, 0x51, 0x0D, 0xDE, 0x08, 0x55, 0x0D, 0xD9, 0x08, 0x58, 0x0D, 0xD4, 0x08, - .byte 0x5C, 0x0D, 0xCF, 0x08, 0x5F, 0x0D, 0xC9, 0x08, 0x62, 0x0D, 0xC4, 0x08, 0x66, 0x0D, 0xBF, 0x08, - .byte 0x69, 0x0D, 0xBA, 0x08, 0x6D, 0x0D, 0xB4, 0x08, 0x70, 0x0D, 0xAF, 0x08, 0x74, 0x0D, 0xAA, 0x08, - .byte 0x77, 0x0D, 0xA5, 0x08, 0x7A, 0x0D, 0x9F, 0x08, 0x7E, 0x0D, 0x9A, 0x08, 0x81, 0x0D, 0x95, 0x08, - .byte 0x85, 0x0D, 0x8F, 0x08, 0x88, 0x0D, 0x8A, 0x08, 0x8B, 0x0D, 0x85, 0x08, 0x8F, 0x0D, 0x7F, 0x08, - .byte 0x92, 0x0D, 0x7A, 0x08, 0x95, 0x0D, 0x75, 0x08, 0x99, 0x0D, 0x6F, 0x08, 0x9C, 0x0D, 0x6A, 0x08, - .byte 0x9F, 0x0D, 0x65, 0x08, 0xA2, 0x0D, 0x5F, 0x08, 0xA6, 0x0D, 0x5A, 0x08, 0xA9, 0x0D, 0x55, 0x08, - .byte 0xAC, 0x0D, 0x4F, 0x08, 0xB0, 0x0D, 0x4A, 0x08, 0xB3, 0x0D, 0x45, 0x08, 0xB6, 0x0D, 0x3F, 0x08, - .byte 0xB9, 0x0D, 0x3A, 0x08, 0xBC, 0x0D, 0x34, 0x08, 0xC0, 0x0D, 0x2F, 0x08, 0xC3, 0x0D, 0x2A, 0x08, - .byte 0xC6, 0x0D, 0x24, 0x08, 0xC9, 0x0D, 0x1F, 0x08, 0xCC, 0x0D, 0x19, 0x08, 0xD0, 0x0D, 0x14, 0x08, - .byte 0xD3, 0x0D, 0x0E, 0x08, 0xD6, 0x0D, 0x09, 0x08, 0xD9, 0x0D, 0x04, 0x08, 0xDC, 0x0D, 0xFE, 0x07, - .byte 0xDF, 0x0D, 0xF9, 0x07, 0xE3, 0x0D, 0xF3, 0x07, 0xE6, 0x0D, 0xEE, 0x07, 0xE9, 0x0D, 0xE8, 0x07, - .byte 0xEC, 0x0D, 0xE3, 0x07, 0xEF, 0x0D, 0xDD, 0x07, 0xF2, 0x0D, 0xD8, 0x07, 0xF5, 0x0D, 0xD2, 0x07, - .byte 0xF8, 0x0D, 0xCD, 0x07, 0xFB, 0x0D, 0xC8, 0x07, 0xFE, 0x0D, 0xC2, 0x07, 0x01, 0x0E, 0xBD, 0x07, - .byte 0x04, 0x0E, 0xB7, 0x07, 0x07, 0x0E, 0xB2, 0x07, 0x0A, 0x0E, 0xAC, 0x07, 0x0D, 0x0E, 0xA6, 0x07, - .byte 0x10, 0x0E, 0xA1, 0x07, 0x13, 0x0E, 0x9B, 0x07, 0x16, 0x0E, 0x96, 0x07, 0x19, 0x0E, 0x90, 0x07, - .byte 0x1C, 0x0E, 0x8B, 0x07, 0x1F, 0x0E, 0x85, 0x07, 0x22, 0x0E, 0x80, 0x07, 0x25, 0x0E, 0x7A, 0x07, - .byte 0x28, 0x0E, 0x75, 0x07, 0x2B, 0x0E, 0x6F, 0x07, 0x2E, 0x0E, 0x6A, 0x07, 0x31, 0x0E, 0x64, 0x07, - .byte 0x34, 0x0E, 0x5E, 0x07, 0x37, 0x0E, 0x59, 0x07, 0x3A, 0x0E, 0x53, 0x07, 0x3C, 0x0E, 0x4E, 0x07, - .byte 0x3F, 0x0E, 0x48, 0x07, 0x42, 0x0E, 0x42, 0x07, 0x45, 0x0E, 0x3D, 0x07, 0x48, 0x0E, 0x37, 0x07, - .byte 0x4B, 0x0E, 0x32, 0x07, 0x4D, 0x0E, 0x2C, 0x07, 0x50, 0x0E, 0x26, 0x07, 0x53, 0x0E, 0x21, 0x07, - .byte 0x56, 0x0E, 0x1B, 0x07, 0x59, 0x0E, 0x15, 0x07, 0x5B, 0x0E, 0x10, 0x07, 0x5E, 0x0E, 0x0A, 0x07, - .byte 0x61, 0x0E, 0x05, 0x07, 0x64, 0x0E, 0xFF, 0x06, 0x66, 0x0E, 0xF9, 0x06, 0x69, 0x0E, 0xF4, 0x06, - .byte 0x6C, 0x0E, 0xEE, 0x06, 0x6F, 0x0E, 0xE8, 0x06, 0x71, 0x0E, 0xE3, 0x06, 0x74, 0x0E, 0xDD, 0x06, - .byte 0x77, 0x0E, 0xD7, 0x06, 0x79, 0x0E, 0xD2, 0x06, 0x7C, 0x0E, 0xCC, 0x06, 0x7F, 0x0E, 0xC6, 0x06, - .byte 0x81, 0x0E, 0xC1, 0x06, 0x84, 0x0E, 0xBB, 0x06, 0x87, 0x0E, 0xB5, 0x06, 0x89, 0x0E, 0xAF, 0x06, - .byte 0x8C, 0x0E, 0xAA, 0x06, 0x8F, 0x0E, 0xA4, 0x06, 0x91, 0x0E, 0x9E, 0x06, 0x94, 0x0E, 0x99, 0x06, - .byte 0x96, 0x0E, 0x93, 0x06, 0x99, 0x0E, 0x8D, 0x06, 0x9B, 0x0E, 0x87, 0x06, 0x9E, 0x0E, 0x82, 0x06, - .byte 0xA1, 0x0E, 0x7C, 0x06, 0xA3, 0x0E, 0x76, 0x06, 0xA6, 0x0E, 0x70, 0x06, 0xA8, 0x0E, 0x6B, 0x06, - .byte 0xAB, 0x0E, 0x65, 0x06, 0xAD, 0x0E, 0x5F, 0x06, 0xB0, 0x0E, 0x59, 0x06, 0xB2, 0x0E, 0x54, 0x06, - .byte 0xB5, 0x0E, 0x4E, 0x06, 0xB7, 0x0E, 0x48, 0x06, 0xBA, 0x0E, 0x42, 0x06, 0xBC, 0x0E, 0x3C, 0x06, - .byte 0xBF, 0x0E, 0x37, 0x06, 0xC1, 0x0E, 0x31, 0x06, 0xC3, 0x0E, 0x2B, 0x06, 0xC6, 0x0E, 0x25, 0x06, - .byte 0xC8, 0x0E, 0x1F, 0x06, 0xCB, 0x0E, 0x1A, 0x06, 0xCD, 0x0E, 0x14, 0x06, 0xCF, 0x0E, 0x0E, 0x06, - .byte 0xD2, 0x0E, 0x08, 0x06, 0xD4, 0x0E, 0x02, 0x06, 0xD6, 0x0E, 0xFD, 0x05, 0xD9, 0x0E, 0xF7, 0x05, - .byte 0xDB, 0x0E, 0xF1, 0x05, 0xDD, 0x0E, 0xEB, 0x05, 0xE0, 0x0E, 0xE5, 0x05, 0xE2, 0x0E, 0xDF, 0x05, - .byte 0xE4, 0x0E, 0xDA, 0x05, 0xE7, 0x0E, 0xD4, 0x05, 0xE9, 0x0E, 0xCE, 0x05, 0xEB, 0x0E, 0xC8, 0x05, - .byte 0xEE, 0x0E, 0xC2, 0x05, 0xF0, 0x0E, 0xBC, 0x05, 0xF2, 0x0E, 0xB6, 0x05, 0xF4, 0x0E, 0xB1, 0x05, - .byte 0xF7, 0x0E, 0xAB, 0x05, 0xF9, 0x0E, 0xA5, 0x05, 0xFB, 0x0E, 0x9F, 0x05, 0xFD, 0x0E, 0x99, 0x05, - .byte 0xFF, 0x0E, 0x93, 0x05, 0x02, 0x0F, 0x8D, 0x05, 0x04, 0x0F, 0x87, 0x05, 0x06, 0x0F, 0x81, 0x05, - .byte 0x08, 0x0F, 0x7C, 0x05, 0x0A, 0x0F, 0x76, 0x05, 0x0C, 0x0F, 0x70, 0x05, 0x0E, 0x0F, 0x6A, 0x05, - .byte 0x11, 0x0F, 0x64, 0x05, 0x13, 0x0F, 0x5E, 0x05, 0x15, 0x0F, 0x58, 0x05, 0x17, 0x0F, 0x52, 0x05, - .byte 0x19, 0x0F, 0x4C, 0x05, 0x1B, 0x0F, 0x46, 0x05, 0x1D, 0x0F, 0x40, 0x05, 0x1F, 0x0F, 0x3A, 0x05, - .byte 0x21, 0x0F, 0x34, 0x05, 0x23, 0x0F, 0x2F, 0x05, 0x25, 0x0F, 0x29, 0x05, 0x27, 0x0F, 0x23, 0x05, - .byte 0x29, 0x0F, 0x1D, 0x05, 0x2B, 0x0F, 0x17, 0x05, 0x2D, 0x0F, 0x11, 0x05, 0x2F, 0x0F, 0x0B, 0x05, - .byte 0x31, 0x0F, 0x05, 0x05, 0x33, 0x0F, 0xFF, 0x04, 0x35, 0x0F, 0xF9, 0x04, 0x37, 0x0F, 0xF3, 0x04, - .byte 0x39, 0x0F, 0xED, 0x04, 0x3B, 0x0F, 0xE7, 0x04, 0x3D, 0x0F, 0xE1, 0x04, 0x3F, 0x0F, 0xDB, 0x04, - .byte 0x41, 0x0F, 0xD5, 0x04, 0x43, 0x0F, 0xCF, 0x04, 0x45, 0x0F, 0xC9, 0x04, 0x46, 0x0F, 0xC3, 0x04, - .byte 0x48, 0x0F, 0xBD, 0x04, 0x4A, 0x0F, 0xB7, 0x04, 0x4C, 0x0F, 0xB1, 0x04, 0x4E, 0x0F, 0xAB, 0x04, - .byte 0x50, 0x0F, 0xA5, 0x04, 0x51, 0x0F, 0x9F, 0x04, 0x53, 0x0F, 0x99, 0x04, 0x55, 0x0F, 0x93, 0x04, - .byte 0x57, 0x0F, 0x8D, 0x04, 0x59, 0x0F, 0x87, 0x04, 0x5A, 0x0F, 0x81, 0x04, 0x5C, 0x0F, 0x7B, 0x04, - .byte 0x5E, 0x0F, 0x75, 0x04, 0x60, 0x0F, 0x6F, 0x04, 0x61, 0x0F, 0x69, 0x04, 0x63, 0x0F, 0x63, 0x04, - .byte 0x65, 0x0F, 0x5D, 0x04, 0x67, 0x0F, 0x57, 0x04, 0x68, 0x0F, 0x51, 0x04, 0x6A, 0x0F, 0x4B, 0x04, - .byte 0x6C, 0x0F, 0x44, 0x04, 0x6D, 0x0F, 0x3E, 0x04, 0x6F, 0x0F, 0x38, 0x04, 0x71, 0x0F, 0x32, 0x04, - .byte 0x72, 0x0F, 0x2C, 0x04, 0x74, 0x0F, 0x26, 0x04, 0x76, 0x0F, 0x20, 0x04, 0x77, 0x0F, 0x1A, 0x04, - .byte 0x79, 0x0F, 0x14, 0x04, 0x7A, 0x0F, 0x0E, 0x04, 0x7C, 0x0F, 0x08, 0x04, 0x7D, 0x0F, 0x02, 0x04, - .byte 0x7F, 0x0F, 0xFC, 0x03, 0x81, 0x0F, 0xF6, 0x03, 0x82, 0x0F, 0xEF, 0x03, 0x84, 0x0F, 0xE9, 0x03, - .byte 0x85, 0x0F, 0xE3, 0x03, 0x87, 0x0F, 0xDD, 0x03, 0x88, 0x0F, 0xD7, 0x03, 0x8A, 0x0F, 0xD1, 0x03, - .byte 0x8B, 0x0F, 0xCB, 0x03, 0x8D, 0x0F, 0xC5, 0x03, 0x8E, 0x0F, 0xBF, 0x03, 0x90, 0x0F, 0xB9, 0x03, - .byte 0x91, 0x0F, 0xB2, 0x03, 0x93, 0x0F, 0xAC, 0x03, 0x94, 0x0F, 0xA6, 0x03, 0x95, 0x0F, 0xA0, 0x03, - .byte 0x97, 0x0F, 0x9A, 0x03, 0x98, 0x0F, 0x94, 0x03, 0x9A, 0x0F, 0x8E, 0x03, 0x9B, 0x0F, 0x88, 0x03, - .byte 0x9C, 0x0F, 0x81, 0x03, 0x9E, 0x0F, 0x7B, 0x03, 0x9F, 0x0F, 0x75, 0x03, 0xA1, 0x0F, 0x6F, 0x03, - .byte 0xA2, 0x0F, 0x69, 0x03, 0xA3, 0x0F, 0x63, 0x03, 0xA5, 0x0F, 0x5D, 0x03, 0xA6, 0x0F, 0x56, 0x03, - .byte 0xA7, 0x0F, 0x50, 0x03, 0xA8, 0x0F, 0x4A, 0x03, 0xAA, 0x0F, 0x44, 0x03, 0xAB, 0x0F, 0x3E, 0x03, - .byte 0xAC, 0x0F, 0x38, 0x03, 0xAE, 0x0F, 0x32, 0x03, 0xAF, 0x0F, 0x2B, 0x03, 0xB0, 0x0F, 0x25, 0x03, - .byte 0xB1, 0x0F, 0x1F, 0x03, 0xB3, 0x0F, 0x19, 0x03, 0xB4, 0x0F, 0x13, 0x03, 0xB5, 0x0F, 0x0D, 0x03, - .byte 0xB6, 0x0F, 0x06, 0x03, 0xB7, 0x0F, 0x00, 0x03, 0xB8, 0x0F, 0xFA, 0x02, 0xBA, 0x0F, 0xF4, 0x02, - .byte 0xBB, 0x0F, 0xEE, 0x02, 0xBC, 0x0F, 0xE8, 0x02, 0xBD, 0x0F, 0xE1, 0x02, 0xBE, 0x0F, 0xDB, 0x02, - .byte 0xBF, 0x0F, 0xD5, 0x02, 0xC0, 0x0F, 0xCF, 0x02, 0xC2, 0x0F, 0xC9, 0x02, 0xC3, 0x0F, 0xC2, 0x02, - .byte 0xC4, 0x0F, 0xBC, 0x02, 0xC5, 0x0F, 0xB6, 0x02, 0xC6, 0x0F, 0xB0, 0x02, 0xC7, 0x0F, 0xAA, 0x02, - .byte 0xC8, 0x0F, 0xA3, 0x02, 0xC9, 0x0F, 0x9D, 0x02, 0xCA, 0x0F, 0x97, 0x02, 0xCB, 0x0F, 0x91, 0x02, - .byte 0xCC, 0x0F, 0x8B, 0x02, 0xCD, 0x0F, 0x84, 0x02, 0xCE, 0x0F, 0x7E, 0x02, 0xCF, 0x0F, 0x78, 0x02, - .byte 0xD0, 0x0F, 0x72, 0x02, 0xD1, 0x0F, 0x6C, 0x02, 0xD2, 0x0F, 0x65, 0x02, 0xD3, 0x0F, 0x5F, 0x02, - .byte 0xD4, 0x0F, 0x59, 0x02, 0xD5, 0x0F, 0x53, 0x02, 0xD5, 0x0F, 0x4D, 0x02, 0xD6, 0x0F, 0x46, 0x02, - .byte 0xD7, 0x0F, 0x40, 0x02, 0xD8, 0x0F, 0x3A, 0x02, 0xD9, 0x0F, 0x34, 0x02, 0xDA, 0x0F, 0x2D, 0x02, - .byte 0xDB, 0x0F, 0x27, 0x02, 0xDC, 0x0F, 0x21, 0x02, 0xDC, 0x0F, 0x1B, 0x02, 0xDD, 0x0F, 0x15, 0x02, - .byte 0xDE, 0x0F, 0x0E, 0x02, 0xDF, 0x0F, 0x08, 0x02, 0xE0, 0x0F, 0x02, 0x02, 0xE0, 0x0F, 0xFC, 0x01, - .byte 0xE1, 0x0F, 0xF5, 0x01, 0xE2, 0x0F, 0xEF, 0x01, 0xE3, 0x0F, 0xE9, 0x01, 0xE3, 0x0F, 0xE3, 0x01, - .byte 0xE4, 0x0F, 0xDC, 0x01, 0xE5, 0x0F, 0xD6, 0x01, 0xE6, 0x0F, 0xD0, 0x01, 0xE6, 0x0F, 0xCA, 0x01, - .byte 0xE7, 0x0F, 0xC3, 0x01, 0xE8, 0x0F, 0xBD, 0x01, 0xE8, 0x0F, 0xB7, 0x01, 0xE9, 0x0F, 0xB1, 0x01, - .byte 0xEA, 0x0F, 0xAA, 0x01, 0xEA, 0x0F, 0xA4, 0x01, 0xEB, 0x0F, 0x9E, 0x01, 0xEC, 0x0F, 0x98, 0x01, - .byte 0xEC, 0x0F, 0x91, 0x01, 0xED, 0x0F, 0x8B, 0x01, 0xED, 0x0F, 0x85, 0x01, 0xEE, 0x0F, 0x7F, 0x01, - .byte 0xEF, 0x0F, 0x78, 0x01, 0xEF, 0x0F, 0x72, 0x01, 0xF0, 0x0F, 0x6C, 0x01, 0xF0, 0x0F, 0x66, 0x01, - .byte 0xF1, 0x0F, 0x5F, 0x01, 0xF1, 0x0F, 0x59, 0x01, 0xF2, 0x0F, 0x53, 0x01, 0xF2, 0x0F, 0x4D, 0x01, - .byte 0xF3, 0x0F, 0x46, 0x01, 0xF3, 0x0F, 0x40, 0x01, 0xF4, 0x0F, 0x3A, 0x01, 0xF4, 0x0F, 0x34, 0x01, - .byte 0xF5, 0x0F, 0x2D, 0x01, 0xF5, 0x0F, 0x27, 0x01, 0xF6, 0x0F, 0x21, 0x01, 0xF6, 0x0F, 0x1B, 0x01, - .byte 0xF7, 0x0F, 0x14, 0x01, 0xF7, 0x0F, 0x0E, 0x01, 0xF8, 0x0F, 0x08, 0x01, 0xF8, 0x0F, 0x01, 0x01, - .byte 0xF8, 0x0F, 0xFB, 0x00, 0xF9, 0x0F, 0xF5, 0x00, 0xF9, 0x0F, 0xEF, 0x00, 0xF9, 0x0F, 0xE8, 0x00, - .byte 0xFA, 0x0F, 0xE2, 0x00, 0xFA, 0x0F, 0xDC, 0x00, 0xFA, 0x0F, 0xD6, 0x00, 0xFB, 0x0F, 0xCF, 0x00, - .byte 0xFB, 0x0F, 0xC9, 0x00, 0xFB, 0x0F, 0xC3, 0x00, 0xFC, 0x0F, 0xBC, 0x00, 0xFC, 0x0F, 0xB6, 0x00, - .byte 0xFC, 0x0F, 0xB0, 0x00, 0xFC, 0x0F, 0xAA, 0x00, 0xFD, 0x0F, 0xA3, 0x00, 0xFD, 0x0F, 0x9D, 0x00, - .byte 0xFD, 0x0F, 0x97, 0x00, 0xFD, 0x0F, 0x90, 0x00, 0xFE, 0x0F, 0x8A, 0x00, 0xFE, 0x0F, 0x84, 0x00, - .byte 0xFE, 0x0F, 0x7E, 0x00, 0xFE, 0x0F, 0x77, 0x00, 0xFE, 0x0F, 0x71, 0x00, 0xFF, 0x0F, 0x6B, 0x00, - .byte 0xFF, 0x0F, 0x65, 0x00, 0xFF, 0x0F, 0x5E, 0x00, 0xFF, 0x0F, 0x58, 0x00, 0xFF, 0x0F, 0x52, 0x00, - .byte 0xFF, 0x0F, 0x4B, 0x00, 0xFF, 0x0F, 0x45, 0x00, 0x00, 0x10, 0x3F, 0x00, 0x00, 0x10, 0x39, 0x00, - .byte 0x00, 0x10, 0x32, 0x00, 0x00, 0x10, 0x2C, 0x00, 0x00, 0x10, 0x26, 0x00, 0x00, 0x10, 0x1F, 0x00, - .byte 0x00, 0x10, 0x19, 0x00, 0x00, 0x10, 0x13, 0x00, 0x00, 0x10, 0x0D, 0x00, 0x00, 0x10, 0x06, 0x00, - .byte 0x00, 0x10, 0x00, 0x00, 0x00, 0x10, 0xFA, 0xFF, 0x00, 0x10, 0xF3, 0xFF, 0x00, 0x10, 0xED, 0xFF, - .byte 0x00, 0x10, 0xE7, 0xFF, 0x00, 0x10, 0xE1, 0xFF, 0x00, 0x10, 0xDA, 0xFF, 0x00, 0x10, 0xD4, 0xFF, - .byte 0x00, 0x10, 0xCE, 0xFF, 0x00, 0x10, 0xC7, 0xFF, 0x00, 0x10, 0xC1, 0xFF, 0xFF, 0x0F, 0xBB, 0xFF, - .byte 0xFF, 0x0F, 0xB5, 0xFF, 0xFF, 0x0F, 0xAE, 0xFF, 0xFF, 0x0F, 0xA8, 0xFF, 0xFF, 0x0F, 0xA2, 0xFF, - .byte 0xFF, 0x0F, 0x9B, 0xFF, 0xFF, 0x0F, 0x95, 0xFF, 0xFE, 0x0F, 0x8F, 0xFF, 0xFE, 0x0F, 0x89, 0xFF, - .byte 0xFE, 0x0F, 0x82, 0xFF, 0xFE, 0x0F, 0x7C, 0xFF, 0xFE, 0x0F, 0x76, 0xFF, 0xFD, 0x0F, 0x70, 0xFF, - .byte 0xFD, 0x0F, 0x69, 0xFF, 0xFD, 0x0F, 0x63, 0xFF, 0xFD, 0x0F, 0x5D, 0xFF, 0xFC, 0x0F, 0x56, 0xFF, - .byte 0xFC, 0x0F, 0x50, 0xFF, 0xFC, 0x0F, 0x4A, 0xFF, 0xFC, 0x0F, 0x44, 0xFF, 0xFB, 0x0F, 0x3D, 0xFF, - .byte 0xFB, 0x0F, 0x37, 0xFF, 0xFB, 0x0F, 0x31, 0xFF, 0xFA, 0x0F, 0x2A, 0xFF, 0xFA, 0x0F, 0x24, 0xFF, - .byte 0xFA, 0x0F, 0x1E, 0xFF, 0xF9, 0x0F, 0x18, 0xFF, 0xF9, 0x0F, 0x11, 0xFF, 0xF9, 0x0F, 0x0B, 0xFF, - .byte 0xF8, 0x0F, 0x05, 0xFF, 0xF8, 0x0F, 0xFF, 0xFE, 0xF8, 0x0F, 0xF8, 0xFE, 0xF7, 0x0F, 0xF2, 0xFE, - .byte 0xF7, 0x0F, 0xEC, 0xFE, 0xF6, 0x0F, 0xE5, 0xFE, 0xF6, 0x0F, 0xDF, 0xFE, 0xF5, 0x0F, 0xD9, 0xFE, - .byte 0xF5, 0x0F, 0xD3, 0xFE, 0xF4, 0x0F, 0xCC, 0xFE, 0xF4, 0x0F, 0xC6, 0xFE, 0xF3, 0x0F, 0xC0, 0xFE, - .byte 0xF3, 0x0F, 0xBA, 0xFE, 0xF2, 0x0F, 0xB3, 0xFE, 0xF2, 0x0F, 0xAD, 0xFE, 0xF1, 0x0F, 0xA7, 0xFE, - .byte 0xF1, 0x0F, 0xA1, 0xFE, 0xF0, 0x0F, 0x9A, 0xFE, 0xF0, 0x0F, 0x94, 0xFE, 0xEF, 0x0F, 0x8E, 0xFE, - .byte 0xEF, 0x0F, 0x88, 0xFE, 0xEE, 0x0F, 0x81, 0xFE, 0xED, 0x0F, 0x7B, 0xFE, 0xED, 0x0F, 0x75, 0xFE, - .byte 0xEC, 0x0F, 0x6F, 0xFE, 0xEC, 0x0F, 0x68, 0xFE, 0xEB, 0x0F, 0x62, 0xFE, 0xEA, 0x0F, 0x5C, 0xFE, - .byte 0xEA, 0x0F, 0x56, 0xFE, 0xE9, 0x0F, 0x4F, 0xFE, 0xE8, 0x0F, 0x49, 0xFE, 0xE8, 0x0F, 0x43, 0xFE, - .byte 0xE7, 0x0F, 0x3D, 0xFE, 0xE6, 0x0F, 0x36, 0xFE, 0xE6, 0x0F, 0x30, 0xFE, 0xE5, 0x0F, 0x2A, 0xFE, - .byte 0xE4, 0x0F, 0x24, 0xFE, 0xE3, 0x0F, 0x1D, 0xFE, 0xE3, 0x0F, 0x17, 0xFE, 0xE2, 0x0F, 0x11, 0xFE, - .byte 0xE1, 0x0F, 0x0B, 0xFE, 0xE0, 0x0F, 0x04, 0xFE, 0xE0, 0x0F, 0xFE, 0xFD, 0xDF, 0x0F, 0xF8, 0xFD, - .byte 0xDE, 0x0F, 0xF2, 0xFD, 0xDD, 0x0F, 0xEB, 0xFD, 0xDC, 0x0F, 0xE5, 0xFD, 0xDC, 0x0F, 0xDF, 0xFD, - .byte 0xDB, 0x0F, 0xD9, 0xFD, 0xDA, 0x0F, 0xD3, 0xFD, 0xD9, 0x0F, 0xCC, 0xFD, 0xD8, 0x0F, 0xC6, 0xFD, - .byte 0xD7, 0x0F, 0xC0, 0xFD, 0xD6, 0x0F, 0xBA, 0xFD, 0xD5, 0x0F, 0xB3, 0xFD, 0xD5, 0x0F, 0xAD, 0xFD, - .byte 0xD4, 0x0F, 0xA7, 0xFD, 0xD3, 0x0F, 0xA1, 0xFD, 0xD2, 0x0F, 0x9B, 0xFD, 0xD1, 0x0F, 0x94, 0xFD, - .byte 0xD0, 0x0F, 0x8E, 0xFD, 0xCF, 0x0F, 0x88, 0xFD, 0xCE, 0x0F, 0x82, 0xFD, 0xCD, 0x0F, 0x7C, 0xFD, - .byte 0xCC, 0x0F, 0x75, 0xFD, 0xCB, 0x0F, 0x6F, 0xFD, 0xCA, 0x0F, 0x69, 0xFD, 0xC9, 0x0F, 0x63, 0xFD, - .byte 0xC8, 0x0F, 0x5D, 0xFD, 0xC7, 0x0F, 0x56, 0xFD, 0xC6, 0x0F, 0x50, 0xFD, 0xC5, 0x0F, 0x4A, 0xFD, - .byte 0xC4, 0x0F, 0x44, 0xFD, 0xC3, 0x0F, 0x3E, 0xFD, 0xC2, 0x0F, 0x37, 0xFD, 0xC0, 0x0F, 0x31, 0xFD, - .byte 0xBF, 0x0F, 0x2B, 0xFD, 0xBE, 0x0F, 0x25, 0xFD, 0xBD, 0x0F, 0x1F, 0xFD, 0xBC, 0x0F, 0x18, 0xFD, - .byte 0xBB, 0x0F, 0x12, 0xFD, 0xBA, 0x0F, 0x0C, 0xFD, 0xB8, 0x0F, 0x06, 0xFD, 0xB7, 0x0F, 0x00, 0xFD, - .byte 0xB6, 0x0F, 0xFA, 0xFC, 0xB5, 0x0F, 0xF3, 0xFC, 0xB4, 0x0F, 0xED, 0xFC, 0xB3, 0x0F, 0xE7, 0xFC, - .byte 0xB1, 0x0F, 0xE1, 0xFC, 0xB0, 0x0F, 0xDB, 0xFC, 0xAF, 0x0F, 0xD5, 0xFC, 0xAE, 0x0F, 0xCE, 0xFC, - .byte 0xAC, 0x0F, 0xC8, 0xFC, 0xAB, 0x0F, 0xC2, 0xFC, 0xAA, 0x0F, 0xBC, 0xFC, 0xA8, 0x0F, 0xB6, 0xFC, - .byte 0xA7, 0x0F, 0xB0, 0xFC, 0xA6, 0x0F, 0xAA, 0xFC, 0xA5, 0x0F, 0xA3, 0xFC, 0xA3, 0x0F, 0x9D, 0xFC, - .byte 0xA2, 0x0F, 0x97, 0xFC, 0xA1, 0x0F, 0x91, 0xFC, 0x9F, 0x0F, 0x8B, 0xFC, 0x9E, 0x0F, 0x85, 0xFC, - .byte 0x9C, 0x0F, 0x7F, 0xFC, 0x9B, 0x0F, 0x78, 0xFC, 0x9A, 0x0F, 0x72, 0xFC, 0x98, 0x0F, 0x6C, 0xFC, - .byte 0x97, 0x0F, 0x66, 0xFC, 0x95, 0x0F, 0x60, 0xFC, 0x94, 0x0F, 0x5A, 0xFC, 0x93, 0x0F, 0x54, 0xFC, - .byte 0x91, 0x0F, 0x4E, 0xFC, 0x90, 0x0F, 0x47, 0xFC, 0x8E, 0x0F, 0x41, 0xFC, 0x8D, 0x0F, 0x3B, 0xFC, - .byte 0x8B, 0x0F, 0x35, 0xFC, 0x8A, 0x0F, 0x2F, 0xFC, 0x88, 0x0F, 0x29, 0xFC, 0x87, 0x0F, 0x23, 0xFC, - .byte 0x85, 0x0F, 0x1D, 0xFC, 0x84, 0x0F, 0x17, 0xFC, 0x82, 0x0F, 0x11, 0xFC, 0x81, 0x0F, 0x0A, 0xFC, - .byte 0x7F, 0x0F, 0x04, 0xFC, 0x7D, 0x0F, 0xFE, 0xFB, 0x7C, 0x0F, 0xF8, 0xFB, 0x7A, 0x0F, 0xF2, 0xFB, - .byte 0x79, 0x0F, 0xEC, 0xFB, 0x77, 0x0F, 0xE6, 0xFB, 0x76, 0x0F, 0xE0, 0xFB, 0x74, 0x0F, 0xDA, 0xFB, - .byte 0x72, 0x0F, 0xD4, 0xFB, 0x71, 0x0F, 0xCE, 0xFB, 0x6F, 0x0F, 0xC8, 0xFB, 0x6D, 0x0F, 0xC2, 0xFB, - .byte 0x6C, 0x0F, 0xBC, 0xFB, 0x6A, 0x0F, 0xB5, 0xFB, 0x68, 0x0F, 0xAF, 0xFB, 0x67, 0x0F, 0xA9, 0xFB, - .byte 0x65, 0x0F, 0xA3, 0xFB, 0x63, 0x0F, 0x9D, 0xFB, 0x61, 0x0F, 0x97, 0xFB, 0x60, 0x0F, 0x91, 0xFB, - .byte 0x5E, 0x0F, 0x8B, 0xFB, 0x5C, 0x0F, 0x85, 0xFB, 0x5A, 0x0F, 0x7F, 0xFB, 0x59, 0x0F, 0x79, 0xFB, - .byte 0x57, 0x0F, 0x73, 0xFB, 0x55, 0x0F, 0x6D, 0xFB, 0x53, 0x0F, 0x67, 0xFB, 0x51, 0x0F, 0x61, 0xFB, - .byte 0x50, 0x0F, 0x5B, 0xFB, 0x4E, 0x0F, 0x55, 0xFB, 0x4C, 0x0F, 0x4F, 0xFB, 0x4A, 0x0F, 0x49, 0xFB, - .byte 0x48, 0x0F, 0x43, 0xFB, 0x46, 0x0F, 0x3D, 0xFB, 0x45, 0x0F, 0x37, 0xFB, 0x43, 0x0F, 0x31, 0xFB, - .byte 0x41, 0x0F, 0x2B, 0xFB, 0x3F, 0x0F, 0x25, 0xFB, 0x3D, 0x0F, 0x1F, 0xFB, 0x3B, 0x0F, 0x19, 0xFB, - .byte 0x39, 0x0F, 0x13, 0xFB, 0x37, 0x0F, 0x0D, 0xFB, 0x35, 0x0F, 0x07, 0xFB, 0x33, 0x0F, 0x01, 0xFB, - .byte 0x31, 0x0F, 0xFB, 0xFA, 0x2F, 0x0F, 0xF5, 0xFA, 0x2D, 0x0F, 0xEF, 0xFA, 0x2B, 0x0F, 0xE9, 0xFA, - .byte 0x29, 0x0F, 0xE3, 0xFA, 0x27, 0x0F, 0xDD, 0xFA, 0x25, 0x0F, 0xD7, 0xFA, 0x23, 0x0F, 0xD1, 0xFA, - .byte 0x21, 0x0F, 0xCC, 0xFA, 0x1F, 0x0F, 0xC6, 0xFA, 0x1D, 0x0F, 0xC0, 0xFA, 0x1B, 0x0F, 0xBA, 0xFA, - .byte 0x19, 0x0F, 0xB4, 0xFA, 0x17, 0x0F, 0xAE, 0xFA, 0x15, 0x0F, 0xA8, 0xFA, 0x13, 0x0F, 0xA2, 0xFA, - .byte 0x11, 0x0F, 0x9C, 0xFA, 0x0E, 0x0F, 0x96, 0xFA, 0x0C, 0x0F, 0x90, 0xFA, 0x0A, 0x0F, 0x8A, 0xFA, - .byte 0x08, 0x0F, 0x84, 0xFA, 0x06, 0x0F, 0x7F, 0xFA, 0x04, 0x0F, 0x79, 0xFA, 0x02, 0x0F, 0x73, 0xFA, - .byte 0xFF, 0x0E, 0x6D, 0xFA, 0xFD, 0x0E, 0x67, 0xFA, 0xFB, 0x0E, 0x61, 0xFA, 0xF9, 0x0E, 0x5B, 0xFA, - .byte 0xF7, 0x0E, 0x55, 0xFA, 0xF4, 0x0E, 0x4F, 0xFA, 0xF2, 0x0E, 0x4A, 0xFA, 0xF0, 0x0E, 0x44, 0xFA, - .byte 0xEE, 0x0E, 0x3E, 0xFA, 0xEB, 0x0E, 0x38, 0xFA, 0xE9, 0x0E, 0x32, 0xFA, 0xE7, 0x0E, 0x2C, 0xFA, - .byte 0xE4, 0x0E, 0x26, 0xFA, 0xE2, 0x0E, 0x21, 0xFA, 0xE0, 0x0E, 0x1B, 0xFA, 0xDD, 0x0E, 0x15, 0xFA, - .byte 0xDB, 0x0E, 0x0F, 0xFA, 0xD9, 0x0E, 0x09, 0xFA, 0xD6, 0x0E, 0x03, 0xFA, 0xD4, 0x0E, 0xFE, 0xF9, - .byte 0xD2, 0x0E, 0xF8, 0xF9, 0xCF, 0x0E, 0xF2, 0xF9, 0xCD, 0x0E, 0xEC, 0xF9, 0xCB, 0x0E, 0xE6, 0xF9, - .byte 0xC8, 0x0E, 0xE1, 0xF9, 0xC6, 0x0E, 0xDB, 0xF9, 0xC3, 0x0E, 0xD5, 0xF9, 0xC1, 0x0E, 0xCF, 0xF9, - .byte 0xBF, 0x0E, 0xC9, 0xF9, 0xBC, 0x0E, 0xC4, 0xF9, 0xBA, 0x0E, 0xBE, 0xF9, 0xB7, 0x0E, 0xB8, 0xF9, - .byte 0xB5, 0x0E, 0xB2, 0xF9, 0xB2, 0x0E, 0xAC, 0xF9, 0xB0, 0x0E, 0xA7, 0xF9, 0xAD, 0x0E, 0xA1, 0xF9, - .byte 0xAB, 0x0E, 0x9B, 0xF9, 0xA8, 0x0E, 0x95, 0xF9, 0xA6, 0x0E, 0x90, 0xF9, 0xA3, 0x0E, 0x8A, 0xF9, - .byte 0xA1, 0x0E, 0x84, 0xF9, 0x9E, 0x0E, 0x7E, 0xF9, 0x9B, 0x0E, 0x79, 0xF9, 0x99, 0x0E, 0x73, 0xF9, - .byte 0x96, 0x0E, 0x6D, 0xF9, 0x94, 0x0E, 0x67, 0xF9, 0x91, 0x0E, 0x62, 0xF9, 0x8F, 0x0E, 0x5C, 0xF9, - .byte 0x8C, 0x0E, 0x56, 0xF9, 0x89, 0x0E, 0x51, 0xF9, 0x87, 0x0E, 0x4B, 0xF9, 0x84, 0x0E, 0x45, 0xF9, - .byte 0x81, 0x0E, 0x3F, 0xF9, 0x7F, 0x0E, 0x3A, 0xF9, 0x7C, 0x0E, 0x34, 0xF9, 0x79, 0x0E, 0x2E, 0xF9, - .byte 0x77, 0x0E, 0x29, 0xF9, 0x74, 0x0E, 0x23, 0xF9, 0x71, 0x0E, 0x1D, 0xF9, 0x6F, 0x0E, 0x18, 0xF9, - .byte 0x6C, 0x0E, 0x12, 0xF9, 0x69, 0x0E, 0x0C, 0xF9, 0x66, 0x0E, 0x07, 0xF9, 0x64, 0x0E, 0x01, 0xF9, - .byte 0x61, 0x0E, 0xFB, 0xF8, 0x5E, 0x0E, 0xF6, 0xF8, 0x5B, 0x0E, 0xF0, 0xF8, 0x59, 0x0E, 0xEB, 0xF8, - .byte 0x56, 0x0E, 0xE5, 0xF8, 0x53, 0x0E, 0xDF, 0xF8, 0x50, 0x0E, 0xDA, 0xF8, 0x4D, 0x0E, 0xD4, 0xF8, - .byte 0x4B, 0x0E, 0xCE, 0xF8, 0x48, 0x0E, 0xC9, 0xF8, 0x45, 0x0E, 0xC3, 0xF8, 0x42, 0x0E, 0xBE, 0xF8, - .byte 0x3F, 0x0E, 0xB8, 0xF8, 0x3C, 0x0E, 0xB2, 0xF8, 0x3A, 0x0E, 0xAD, 0xF8, 0x37, 0x0E, 0xA7, 0xF8, - .byte 0x34, 0x0E, 0xA2, 0xF8, 0x31, 0x0E, 0x9C, 0xF8, 0x2E, 0x0E, 0x96, 0xF8, 0x2B, 0x0E, 0x91, 0xF8, - .byte 0x28, 0x0E, 0x8B, 0xF8, 0x25, 0x0E, 0x86, 0xF8, 0x22, 0x0E, 0x80, 0xF8, 0x1F, 0x0E, 0x7B, 0xF8, - .byte 0x1C, 0x0E, 0x75, 0xF8, 0x19, 0x0E, 0x70, 0xF8, 0x16, 0x0E, 0x6A, 0xF8, 0x13, 0x0E, 0x65, 0xF8, - .byte 0x10, 0x0E, 0x5F, 0xF8, 0x0D, 0x0E, 0x5A, 0xF8, 0x0A, 0x0E, 0x54, 0xF8, 0x07, 0x0E, 0x4E, 0xF8, - .byte 0x04, 0x0E, 0x49, 0xF8, 0x01, 0x0E, 0x43, 0xF8, 0xFE, 0x0D, 0x3E, 0xF8, 0xFB, 0x0D, 0x38, 0xF8, - .byte 0xF8, 0x0D, 0x33, 0xF8, 0xF5, 0x0D, 0x2E, 0xF8, 0xF2, 0x0D, 0x28, 0xF8, 0xEF, 0x0D, 0x23, 0xF8, - .byte 0xEC, 0x0D, 0x1D, 0xF8, 0xE9, 0x0D, 0x18, 0xF8, 0xE6, 0x0D, 0x12, 0xF8, 0xE3, 0x0D, 0x0D, 0xF8, - .byte 0xDF, 0x0D, 0x07, 0xF8, 0xDC, 0x0D, 0x02, 0xF8, 0xD9, 0x0D, 0xFC, 0xF7, 0xD6, 0x0D, 0xF7, 0xF7, - .byte 0xD3, 0x0D, 0xF2, 0xF7, 0xD0, 0x0D, 0xEC, 0xF7, 0xCC, 0x0D, 0xE7, 0xF7, 0xC9, 0x0D, 0xE1, 0xF7, - .byte 0xC6, 0x0D, 0xDC, 0xF7, 0xC3, 0x0D, 0xD6, 0xF7, 0xC0, 0x0D, 0xD1, 0xF7, 0xBC, 0x0D, 0xCC, 0xF7, - .byte 0xB9, 0x0D, 0xC6, 0xF7, 0xB6, 0x0D, 0xC1, 0xF7, 0xB3, 0x0D, 0xBB, 0xF7, 0xB0, 0x0D, 0xB6, 0xF7, - .byte 0xAC, 0x0D, 0xB1, 0xF7, 0xA9, 0x0D, 0xAB, 0xF7, 0xA6, 0x0D, 0xA6, 0xF7, 0xA2, 0x0D, 0xA1, 0xF7, - .byte 0x9F, 0x0D, 0x9B, 0xF7, 0x9C, 0x0D, 0x96, 0xF7, 0x99, 0x0D, 0x91, 0xF7, 0x95, 0x0D, 0x8B, 0xF7, - .byte 0x92, 0x0D, 0x86, 0xF7, 0x8F, 0x0D, 0x81, 0xF7, 0x8B, 0x0D, 0x7B, 0xF7, 0x88, 0x0D, 0x76, 0xF7, - .byte 0x85, 0x0D, 0x71, 0xF7, 0x81, 0x0D, 0x6B, 0xF7, 0x7E, 0x0D, 0x66, 0xF7, 0x7A, 0x0D, 0x61, 0xF7, - .byte 0x77, 0x0D, 0x5B, 0xF7, 0x74, 0x0D, 0x56, 0xF7, 0x70, 0x0D, 0x51, 0xF7, 0x6D, 0x0D, 0x4C, 0xF7, - .byte 0x69, 0x0D, 0x46, 0xF7, 0x66, 0x0D, 0x41, 0xF7, 0x62, 0x0D, 0x3C, 0xF7, 0x5F, 0x0D, 0x37, 0xF7, - .byte 0x5C, 0x0D, 0x31, 0xF7, 0x58, 0x0D, 0x2C, 0xF7, 0x55, 0x0D, 0x27, 0xF7, 0x51, 0x0D, 0x22, 0xF7, - .byte 0x4E, 0x0D, 0x1C, 0xF7, 0x4A, 0x0D, 0x17, 0xF7, 0x47, 0x0D, 0x12, 0xF7, 0x43, 0x0D, 0x0D, 0xF7, - .byte 0x40, 0x0D, 0x08, 0xF7, 0x3C, 0x0D, 0x02, 0xF7, 0x39, 0x0D, 0xFD, 0xF6, 0x35, 0x0D, 0xF8, 0xF6, - .byte 0x32, 0x0D, 0xF3, 0xF6, 0x2E, 0x0D, 0xEE, 0xF6, 0x2A, 0x0D, 0xE8, 0xF6, 0x27, 0x0D, 0xE3, 0xF6, - .byte 0x23, 0x0D, 0xDE, 0xF6, 0x20, 0x0D, 0xD9, 0xF6, 0x1C, 0x0D, 0xD4, 0xF6, 0x18, 0x0D, 0xCF, 0xF6, - .byte 0x15, 0x0D, 0xC9, 0xF6, 0x11, 0x0D, 0xC4, 0xF6, 0x0E, 0x0D, 0xBF, 0xF6, 0x0A, 0x0D, 0xBA, 0xF6, - .byte 0x06, 0x0D, 0xB5, 0xF6, 0x03, 0x0D, 0xB0, 0xF6, 0xFF, 0x0C, 0xAB, 0xF6, 0xFB, 0x0C, 0xA6, 0xF6, - .byte 0xF8, 0x0C, 0xA1, 0xF6, 0xF4, 0x0C, 0x9B, 0xF6, 0xF0, 0x0C, 0x96, 0xF6, 0xED, 0x0C, 0x91, 0xF6, - .byte 0xE9, 0x0C, 0x8C, 0xF6, 0xE5, 0x0C, 0x87, 0xF6, 0xE1, 0x0C, 0x82, 0xF6, 0xDE, 0x0C, 0x7D, 0xF6, - .byte 0xDA, 0x0C, 0x78, 0xF6, 0xD6, 0x0C, 0x73, 0xF6, 0xD2, 0x0C, 0x6E, 0xF6, 0xCF, 0x0C, 0x69, 0xF6, - .byte 0xCB, 0x0C, 0x64, 0xF6, 0xC7, 0x0C, 0x5F, 0xF6, 0xC3, 0x0C, 0x5A, 0xF6, 0xC0, 0x0C, 0x55, 0xF6, - .byte 0xBC, 0x0C, 0x50, 0xF6, 0xB8, 0x0C, 0x4B, 0xF6, 0xB4, 0x0C, 0x46, 0xF6, 0xB0, 0x0C, 0x41, 0xF6, - .byte 0xAC, 0x0C, 0x3C, 0xF6, 0xA9, 0x0C, 0x37, 0xF6, 0xA5, 0x0C, 0x32, 0xF6, 0xA1, 0x0C, 0x2D, 0xF6, - .byte 0x9D, 0x0C, 0x28, 0xF6, 0x99, 0x0C, 0x23, 0xF6, 0x95, 0x0C, 0x1E, 0xF6, 0x91, 0x0C, 0x19, 0xF6, - .byte 0x8E, 0x0C, 0x14, 0xF6, 0x8A, 0x0C, 0x0F, 0xF6, 0x86, 0x0C, 0x0A, 0xF6, 0x82, 0x0C, 0x05, 0xF6, - .byte 0x7E, 0x0C, 0x01, 0xF6, 0x7A, 0x0C, 0xFC, 0xF5, 0x76, 0x0C, 0xF7, 0xF5, 0x72, 0x0C, 0xF2, 0xF5, - .byte 0x6E, 0x0C, 0xED, 0xF5, 0x6A, 0x0C, 0xE8, 0xF5, 0x66, 0x0C, 0xE3, 0xF5, 0x62, 0x0C, 0xDE, 0xF5, - .byte 0x5E, 0x0C, 0xDA, 0xF5, 0x5A, 0x0C, 0xD5, 0xF5, 0x56, 0x0C, 0xD0, 0xF5, 0x52, 0x0C, 0xCB, 0xF5, - .byte 0x4E, 0x0C, 0xC6, 0xF5, 0x4A, 0x0C, 0xC1, 0xF5, 0x46, 0x0C, 0xBC, 0xF5, 0x42, 0x0C, 0xB8, 0xF5, - .byte 0x3E, 0x0C, 0xB3, 0xF5, 0x3A, 0x0C, 0xAE, 0xF5, 0x36, 0x0C, 0xA9, 0xF5, 0x32, 0x0C, 0xA4, 0xF5, - .byte 0x2E, 0x0C, 0xA0, 0xF5, 0x2A, 0x0C, 0x9B, 0xF5, 0x26, 0x0C, 0x96, 0xF5, 0x22, 0x0C, 0x91, 0xF5, - .byte 0x1E, 0x0C, 0x8D, 0xF5, 0x19, 0x0C, 0x88, 0xF5, 0x15, 0x0C, 0x83, 0xF5, 0x11, 0x0C, 0x7E, 0xF5, - .byte 0x0D, 0x0C, 0x7A, 0xF5, 0x09, 0x0C, 0x75, 0xF5, 0x05, 0x0C, 0x70, 0xF5, 0x01, 0x0C, 0x6B, 0xF5, - .byte 0xFC, 0x0B, 0x67, 0xF5, 0xF8, 0x0B, 0x62, 0xF5, 0xF4, 0x0B, 0x5D, 0xF5, 0xF0, 0x0B, 0x59, 0xF5, - .byte 0xEC, 0x0B, 0x54, 0xF5, 0xE8, 0x0B, 0x4F, 0xF5, 0xE3, 0x0B, 0x4B, 0xF5, 0xDF, 0x0B, 0x46, 0xF5, - .byte 0xDB, 0x0B, 0x41, 0xF5, 0xD7, 0x0B, 0x3D, 0xF5, 0xD2, 0x0B, 0x38, 0xF5, 0xCE, 0x0B, 0x33, 0xF5, - .byte 0xCA, 0x0B, 0x2F, 0xF5, 0xC6, 0x0B, 0x2A, 0xF5, 0xC1, 0x0B, 0x25, 0xF5, 0xBD, 0x0B, 0x21, 0xF5, - .byte 0xB9, 0x0B, 0x1C, 0xF5, 0xB5, 0x0B, 0x18, 0xF5, 0xB0, 0x0B, 0x13, 0xF5, 0xAC, 0x0B, 0x0E, 0xF5, - .byte 0xA8, 0x0B, 0x0A, 0xF5, 0xA3, 0x0B, 0x05, 0xF5, 0x9F, 0x0B, 0x01, 0xF5, 0x9B, 0x0B, 0xFC, 0xF4, - .byte 0x97, 0x0B, 0xF8, 0xF4, 0x92, 0x0B, 0xF3, 0xF4, 0x8E, 0x0B, 0xEF, 0xF4, 0x89, 0x0B, 0xEA, 0xF4, - .byte 0x85, 0x0B, 0xE5, 0xF4, 0x81, 0x0B, 0xE1, 0xF4, 0x7C, 0x0B, 0xDC, 0xF4, 0x78, 0x0B, 0xD8, 0xF4, - .byte 0x74, 0x0B, 0xD3, 0xF4, 0x6F, 0x0B, 0xCF, 0xF4, 0x6B, 0x0B, 0xCA, 0xF4, 0x66, 0x0B, 0xC6, 0xF4, - .byte 0x62, 0x0B, 0xC2, 0xF4, 0x5E, 0x0B, 0xBD, 0xF4, 0x59, 0x0B, 0xB9, 0xF4, 0x55, 0x0B, 0xB4, 0xF4, - .byte 0x50, 0x0B, 0xB0, 0xF4, 0x4C, 0x0B, 0xAB, 0xF4, 0x47, 0x0B, 0xA7, 0xF4, 0x43, 0x0B, 0xA2, 0xF4, - .byte 0x3E, 0x0B, 0x9E, 0xF4, 0x3A, 0x0B, 0x9A, 0xF4, 0x36, 0x0B, 0x95, 0xF4, 0x31, 0x0B, 0x91, 0xF4, - .byte 0x2D, 0x0B, 0x8C, 0xF4, 0x28, 0x0B, 0x88, 0xF4, 0x24, 0x0B, 0x84, 0xF4, 0x1F, 0x0B, 0x7F, 0xF4, - .byte 0x1B, 0x0B, 0x7B, 0xF4, 0x16, 0x0B, 0x77, 0xF4, 0x11, 0x0B, 0x72, 0xF4, 0x0D, 0x0B, 0x6E, 0xF4, - .byte 0x08, 0x0B, 0x69, 0xF4, 0x04, 0x0B, 0x65, 0xF4, 0xFF, 0x0A, 0x61, 0xF4, 0xFB, 0x0A, 0x5D, 0xF4, - .byte 0xF6, 0x0A, 0x58, 0xF4, 0xF2, 0x0A, 0x54, 0xF4, 0xED, 0x0A, 0x50, 0xF4, 0xE8, 0x0A, 0x4B, 0xF4, - .byte 0xE4, 0x0A, 0x47, 0xF4, 0xDF, 0x0A, 0x43, 0xF4, 0xDB, 0x0A, 0x3F, 0xF4, 0xD6, 0x0A, 0x3A, 0xF4, - .byte 0xD1, 0x0A, 0x36, 0xF4, 0xCD, 0x0A, 0x32, 0xF4, 0xC8, 0x0A, 0x2E, 0xF4, 0xC3, 0x0A, 0x29, 0xF4, - .byte 0xBF, 0x0A, 0x25, 0xF4, 0xBA, 0x0A, 0x21, 0xF4, 0xB5, 0x0A, 0x1D, 0xF4, 0xB1, 0x0A, 0x18, 0xF4, - .byte 0xAC, 0x0A, 0x14, 0xF4, 0xA7, 0x0A, 0x10, 0xF4, 0xA3, 0x0A, 0x0C, 0xF4, 0x9E, 0x0A, 0x08, 0xF4, - .byte 0x99, 0x0A, 0x04, 0xF4, 0x95, 0x0A, 0xFF, 0xF3, 0x90, 0x0A, 0xFB, 0xF3, 0x8B, 0x0A, 0xF7, 0xF3, - .byte 0x86, 0x0A, 0xF3, 0xF3, 0x82, 0x0A, 0xEF, 0xF3, 0x7D, 0x0A, 0xEB, 0xF3, 0x78, 0x0A, 0xE7, 0xF3, - .byte 0x73, 0x0A, 0xE2, 0xF3, 0x6F, 0x0A, 0xDE, 0xF3, 0x6A, 0x0A, 0xDA, 0xF3, 0x65, 0x0A, 0xD6, 0xF3, - .byte 0x60, 0x0A, 0xD2, 0xF3, 0x5C, 0x0A, 0xCE, 0xF3, 0x57, 0x0A, 0xCA, 0xF3, 0x52, 0x0A, 0xC6, 0xF3, - .byte 0x4D, 0x0A, 0xC2, 0xF3, 0x48, 0x0A, 0xBE, 0xF3, 0x44, 0x0A, 0xBA, 0xF3, 0x3F, 0x0A, 0xB6, 0xF3, - .byte 0x3A, 0x0A, 0xB2, 0xF3, 0x35, 0x0A, 0xAE, 0xF3, 0x30, 0x0A, 0xAA, 0xF3, 0x2B, 0x0A, 0xA6, 0xF3, - .byte 0x26, 0x0A, 0xA2, 0xF3, 0x22, 0x0A, 0x9E, 0xF3, 0x1D, 0x0A, 0x9A, 0xF3, 0x18, 0x0A, 0x96, 0xF3, - .byte 0x13, 0x0A, 0x92, 0xF3, 0x0E, 0x0A, 0x8E, 0xF3, 0x09, 0x0A, 0x8A, 0xF3, 0x04, 0x0A, 0x86, 0xF3, - .byte 0xFF, 0x09, 0x82, 0xF3, 0xFB, 0x09, 0x7E, 0xF3, 0xF6, 0x09, 0x7A, 0xF3, 0xF1, 0x09, 0x76, 0xF3, - .byte 0xEC, 0x09, 0x72, 0xF3, 0xE7, 0x09, 0x6F, 0xF3, 0xE2, 0x09, 0x6B, 0xF3, 0xDD, 0x09, 0x67, 0xF3, - .byte 0xD8, 0x09, 0x63, 0xF3, 0xD3, 0x09, 0x5F, 0xF3, 0xCE, 0x09, 0x5B, 0xF3, 0xC9, 0x09, 0x57, 0xF3, - .byte 0xC4, 0x09, 0x54, 0xF3, 0xBF, 0x09, 0x50, 0xF3, 0xBA, 0x09, 0x4C, 0xF3, 0xB5, 0x09, 0x48, 0xF3, - .byte 0xB0, 0x09, 0x44, 0xF3, 0xAB, 0x09, 0x40, 0xF3, 0xA6, 0x09, 0x3D, 0xF3, 0xA1, 0x09, 0x39, 0xF3, - .byte 0x9C, 0x09, 0x35, 0xF3, 0x97, 0x09, 0x31, 0xF3, 0x92, 0x09, 0x2E, 0xF3, 0x8D, 0x09, 0x2A, 0xF3, - .byte 0x88, 0x09, 0x26, 0xF3, 0x83, 0x09, 0x22, 0xF3, 0x7E, 0x09, 0x1F, 0xF3, 0x79, 0x09, 0x1B, 0xF3, - .byte 0x74, 0x09, 0x17, 0xF3, 0x6F, 0x09, 0x13, 0xF3, 0x6A, 0x09, 0x10, 0xF3, 0x65, 0x09, 0x0C, 0xF3, - .byte 0x5F, 0x09, 0x08, 0xF3, 0x5A, 0x09, 0x05, 0xF3, 0x55, 0x09, 0x01, 0xF3, 0x50, 0x09, 0xFD, 0xF2, - .byte 0x4B, 0x09, 0xFA, 0xF2, 0x46, 0x09, 0xF6, 0xF2, 0x41, 0x09, 0xF2, 0xF2, 0x3C, 0x09, 0xEF, 0xF2, - .byte 0x37, 0x09, 0xEB, 0xF2, 0x31, 0x09, 0xE8, 0xF2, 0x2C, 0x09, 0xE4, 0xF2, 0x27, 0x09, 0xE0, 0xF2, - .byte 0x22, 0x09, 0xDD, 0xF2, 0x1D, 0x09, 0xD9, 0xF2, 0x18, 0x09, 0xD6, 0xF2, 0x12, 0x09, 0xD2, 0xF2, - .byte 0x0D, 0x09, 0xCE, 0xF2, 0x08, 0x09, 0xCB, 0xF2, 0x03, 0x09, 0xC7, 0xF2, 0xFE, 0x08, 0xC4, 0xF2, - .byte 0xF8, 0x08, 0xC0, 0xF2, 0xF3, 0x08, 0xBD, 0xF2, 0xEE, 0x08, 0xB9, 0xF2, 0xE9, 0x08, 0xB6, 0xF2, - .byte 0xE4, 0x08, 0xB2, 0xF2, 0xDE, 0x08, 0xAF, 0xF2, 0xD9, 0x08, 0xAB, 0xF2, 0xD4, 0x08, 0xA8, 0xF2, - .byte 0xCF, 0x08, 0xA4, 0xF2, 0xC9, 0x08, 0xA1, 0xF2, 0xC4, 0x08, 0x9E, 0xF2, 0xBF, 0x08, 0x9A, 0xF2, - .byte 0xBA, 0x08, 0x97, 0xF2, 0xB4, 0x08, 0x93, 0xF2, 0xAF, 0x08, 0x90, 0xF2, 0xAA, 0x08, 0x8C, 0xF2, - .byte 0xA5, 0x08, 0x89, 0xF2, 0x9F, 0x08, 0x86, 0xF2, 0x9A, 0x08, 0x82, 0xF2, 0x95, 0x08, 0x7F, 0xF2, - .byte 0x8F, 0x08, 0x7B, 0xF2, 0x8A, 0x08, 0x78, 0xF2, 0x85, 0x08, 0x75, 0xF2, 0x7F, 0x08, 0x71, 0xF2, - .byte 0x7A, 0x08, 0x6E, 0xF2, 0x75, 0x08, 0x6B, 0xF2, 0x6F, 0x08, 0x67, 0xF2, 0x6A, 0x08, 0x64, 0xF2, - .byte 0x65, 0x08, 0x61, 0xF2, 0x5F, 0x08, 0x5E, 0xF2, 0x5A, 0x08, 0x5A, 0xF2, 0x55, 0x08, 0x57, 0xF2, - .byte 0x4F, 0x08, 0x54, 0xF2, 0x4A, 0x08, 0x50, 0xF2, 0x45, 0x08, 0x4D, 0xF2, 0x3F, 0x08, 0x4A, 0xF2, - .byte 0x3A, 0x08, 0x47, 0xF2, 0x34, 0x08, 0x44, 0xF2, 0x2F, 0x08, 0x40, 0xF2, 0x2A, 0x08, 0x3D, 0xF2, - .byte 0x24, 0x08, 0x3A, 0xF2, 0x1F, 0x08, 0x37, 0xF2, 0x19, 0x08, 0x34, 0xF2, 0x14, 0x08, 0x30, 0xF2, - .byte 0x0E, 0x08, 0x2D, 0xF2, 0x09, 0x08, 0x2A, 0xF2, 0x04, 0x08, 0x27, 0xF2, 0xFE, 0x07, 0x24, 0xF2, - .byte 0xF9, 0x07, 0x21, 0xF2, 0xF3, 0x07, 0x1D, 0xF2, 0xEE, 0x07, 0x1A, 0xF2, 0xE8, 0x07, 0x17, 0xF2, - .byte 0xE3, 0x07, 0x14, 0xF2, 0xDD, 0x07, 0x11, 0xF2, 0xD8, 0x07, 0x0E, 0xF2, 0xD2, 0x07, 0x0B, 0xF2, - .byte 0xCD, 0x07, 0x08, 0xF2, 0xC8, 0x07, 0x05, 0xF2, 0xC2, 0x07, 0x02, 0xF2, 0xBD, 0x07, 0xFF, 0xF1, - .byte 0xB7, 0x07, 0xFC, 0xF1, 0xB2, 0x07, 0xF9, 0xF1, 0xAC, 0x07, 0xF6, 0xF1, 0xA6, 0x07, 0xF3, 0xF1, - .byte 0xA1, 0x07, 0xF0, 0xF1, 0x9B, 0x07, 0xED, 0xF1, 0x96, 0x07, 0xEA, 0xF1, 0x90, 0x07, 0xE7, 0xF1, - .byte 0x8B, 0x07, 0xE4, 0xF1, 0x85, 0x07, 0xE1, 0xF1, 0x80, 0x07, 0xDE, 0xF1, 0x7A, 0x07, 0xDB, 0xF1, - .byte 0x75, 0x07, 0xD8, 0xF1, 0x6F, 0x07, 0xD5, 0xF1, 0x6A, 0x07, 0xD2, 0xF1, 0x64, 0x07, 0xCF, 0xF1, - .byte 0x5E, 0x07, 0xCC, 0xF1, 0x59, 0x07, 0xC9, 0xF1, 0x53, 0x07, 0xC6, 0xF1, 0x4E, 0x07, 0xC4, 0xF1, - .byte 0x48, 0x07, 0xC1, 0xF1, 0x42, 0x07, 0xBE, 0xF1, 0x3D, 0x07, 0xBB, 0xF1, 0x37, 0x07, 0xB8, 0xF1, - .byte 0x32, 0x07, 0xB5, 0xF1, 0x2C, 0x07, 0xB3, 0xF1, 0x26, 0x07, 0xB0, 0xF1, 0x21, 0x07, 0xAD, 0xF1, - .byte 0x1B, 0x07, 0xAA, 0xF1, 0x15, 0x07, 0xA7, 0xF1, 0x10, 0x07, 0xA5, 0xF1, 0x0A, 0x07, 0xA2, 0xF1, - .byte 0x05, 0x07, 0x9F, 0xF1, 0xFF, 0x06, 0x9C, 0xF1, 0xF9, 0x06, 0x9A, 0xF1, 0xF4, 0x06, 0x97, 0xF1, - .byte 0xEE, 0x06, 0x94, 0xF1, 0xE8, 0x06, 0x91, 0xF1, 0xE3, 0x06, 0x8F, 0xF1, 0xDD, 0x06, 0x8C, 0xF1, - .byte 0xD7, 0x06, 0x89, 0xF1, 0xD2, 0x06, 0x87, 0xF1, 0xCC, 0x06, 0x84, 0xF1, 0xC6, 0x06, 0x81, 0xF1, - .byte 0xC1, 0x06, 0x7F, 0xF1, 0xBB, 0x06, 0x7C, 0xF1, 0xB5, 0x06, 0x79, 0xF1, 0xAF, 0x06, 0x77, 0xF1, - .byte 0xAA, 0x06, 0x74, 0xF1, 0xA4, 0x06, 0x71, 0xF1, 0x9E, 0x06, 0x6F, 0xF1, 0x99, 0x06, 0x6C, 0xF1, - .byte 0x93, 0x06, 0x6A, 0xF1, 0x8D, 0x06, 0x67, 0xF1, 0x87, 0x06, 0x65, 0xF1, 0x82, 0x06, 0x62, 0xF1, - .byte 0x7C, 0x06, 0x5F, 0xF1, 0x76, 0x06, 0x5D, 0xF1, 0x70, 0x06, 0x5A, 0xF1, 0x6B, 0x06, 0x58, 0xF1, - .byte 0x65, 0x06, 0x55, 0xF1, 0x5F, 0x06, 0x53, 0xF1, 0x59, 0x06, 0x50, 0xF1, 0x54, 0x06, 0x4E, 0xF1, - .byte 0x4E, 0x06, 0x4B, 0xF1, 0x48, 0x06, 0x49, 0xF1, 0x42, 0x06, 0x46, 0xF1, 0x3C, 0x06, 0x44, 0xF1, - .byte 0x37, 0x06, 0x41, 0xF1, 0x31, 0x06, 0x3F, 0xF1, 0x2B, 0x06, 0x3D, 0xF1, 0x25, 0x06, 0x3A, 0xF1, - .byte 0x1F, 0x06, 0x38, 0xF1, 0x1A, 0x06, 0x35, 0xF1, 0x14, 0x06, 0x33, 0xF1, 0x0E, 0x06, 0x31, 0xF1, - .byte 0x08, 0x06, 0x2E, 0xF1, 0x02, 0x06, 0x2C, 0xF1, 0xFD, 0x05, 0x2A, 0xF1, 0xF7, 0x05, 0x27, 0xF1, - .byte 0xF1, 0x05, 0x25, 0xF1, 0xEB, 0x05, 0x23, 0xF1, 0xE5, 0x05, 0x20, 0xF1, 0xDF, 0x05, 0x1E, 0xF1, - .byte 0xDA, 0x05, 0x1C, 0xF1, 0xD4, 0x05, 0x19, 0xF1, 0xCE, 0x05, 0x17, 0xF1, 0xC8, 0x05, 0x15, 0xF1, - .byte 0xC2, 0x05, 0x12, 0xF1, 0xBC, 0x05, 0x10, 0xF1, 0xB6, 0x05, 0x0E, 0xF1, 0xB1, 0x05, 0x0C, 0xF1, - .byte 0xAB, 0x05, 0x09, 0xF1, 0xA5, 0x05, 0x07, 0xF1, 0x9F, 0x05, 0x05, 0xF1, 0x99, 0x05, 0x03, 0xF1, - .byte 0x93, 0x05, 0x01, 0xF1, 0x8D, 0x05, 0xFE, 0xF0, 0x87, 0x05, 0xFC, 0xF0, 0x81, 0x05, 0xFA, 0xF0, - .byte 0x7C, 0x05, 0xF8, 0xF0, 0x76, 0x05, 0xF6, 0xF0, 0x70, 0x05, 0xF4, 0xF0, 0x6A, 0x05, 0xF2, 0xF0, - .byte 0x64, 0x05, 0xEF, 0xF0, 0x5E, 0x05, 0xED, 0xF0, 0x58, 0x05, 0xEB, 0xF0, 0x52, 0x05, 0xE9, 0xF0, - .byte 0x4C, 0x05, 0xE7, 0xF0, 0x46, 0x05, 0xE5, 0xF0, 0x40, 0x05, 0xE3, 0xF0, 0x3A, 0x05, 0xE1, 0xF0, - .byte 0x34, 0x05, 0xDF, 0xF0, 0x2F, 0x05, 0xDD, 0xF0, 0x29, 0x05, 0xDB, 0xF0, 0x23, 0x05, 0xD9, 0xF0, - .byte 0x1D, 0x05, 0xD7, 0xF0, 0x17, 0x05, 0xD5, 0xF0, 0x11, 0x05, 0xD3, 0xF0, 0x0B, 0x05, 0xD1, 0xF0, - .byte 0x05, 0x05, 0xCF, 0xF0, 0xFF, 0x04, 0xCD, 0xF0, 0xF9, 0x04, 0xCB, 0xF0, 0xF3, 0x04, 0xC9, 0xF0, - .byte 0xED, 0x04, 0xC7, 0xF0, 0xE7, 0x04, 0xC5, 0xF0, 0xE1, 0x04, 0xC3, 0xF0, 0xDB, 0x04, 0xC1, 0xF0, - .byte 0xD5, 0x04, 0xBF, 0xF0, 0xCF, 0x04, 0xBD, 0xF0, 0xC9, 0x04, 0xBB, 0xF0, 0xC3, 0x04, 0xBA, 0xF0, - .byte 0xBD, 0x04, 0xB8, 0xF0, 0xB7, 0x04, 0xB6, 0xF0, 0xB1, 0x04, 0xB4, 0xF0, 0xAB, 0x04, 0xB2, 0xF0, - .byte 0xA5, 0x04, 0xB0, 0xF0, 0x9F, 0x04, 0xAF, 0xF0, 0x99, 0x04, 0xAD, 0xF0, 0x93, 0x04, 0xAB, 0xF0, - .byte 0x8D, 0x04, 0xA9, 0xF0, 0x87, 0x04, 0xA7, 0xF0, 0x81, 0x04, 0xA6, 0xF0, 0x7B, 0x04, 0xA4, 0xF0, - .byte 0x75, 0x04, 0xA2, 0xF0, 0x6F, 0x04, 0xA0, 0xF0, 0x69, 0x04, 0x9F, 0xF0, 0x63, 0x04, 0x9D, 0xF0, - .byte 0x5D, 0x04, 0x9B, 0xF0, 0x57, 0x04, 0x99, 0xF0, 0x51, 0x04, 0x98, 0xF0, 0x4B, 0x04, 0x96, 0xF0, - .byte 0x44, 0x04, 0x94, 0xF0, 0x3E, 0x04, 0x93, 0xF0, 0x38, 0x04, 0x91, 0xF0, 0x32, 0x04, 0x8F, 0xF0, - .byte 0x2C, 0x04, 0x8E, 0xF0, 0x26, 0x04, 0x8C, 0xF0, 0x20, 0x04, 0x8A, 0xF0, 0x1A, 0x04, 0x89, 0xF0, - .byte 0x14, 0x04, 0x87, 0xF0, 0x0E, 0x04, 0x86, 0xF0, 0x08, 0x04, 0x84, 0xF0, 0x02, 0x04, 0x83, 0xF0, - .byte 0xFC, 0x03, 0x81, 0xF0, 0xF6, 0x03, 0x7F, 0xF0, 0xEF, 0x03, 0x7E, 0xF0, 0xE9, 0x03, 0x7C, 0xF0, - .byte 0xE3, 0x03, 0x7B, 0xF0, 0xDD, 0x03, 0x79, 0xF0, 0xD7, 0x03, 0x78, 0xF0, 0xD1, 0x03, 0x76, 0xF0, - .byte 0xCB, 0x03, 0x75, 0xF0, 0xC5, 0x03, 0x73, 0xF0, 0xBF, 0x03, 0x72, 0xF0, 0xB9, 0x03, 0x70, 0xF0, - .byte 0xB2, 0x03, 0x6F, 0xF0, 0xAC, 0x03, 0x6D, 0xF0, 0xA6, 0x03, 0x6C, 0xF0, 0xA0, 0x03, 0x6B, 0xF0, - .byte 0x9A, 0x03, 0x69, 0xF0, 0x94, 0x03, 0x68, 0xF0, 0x8E, 0x03, 0x66, 0xF0, 0x88, 0x03, 0x65, 0xF0, - .byte 0x81, 0x03, 0x64, 0xF0, 0x7B, 0x03, 0x62, 0xF0, 0x75, 0x03, 0x61, 0xF0, 0x6F, 0x03, 0x5F, 0xF0, - .byte 0x69, 0x03, 0x5E, 0xF0, 0x63, 0x03, 0x5D, 0xF0, 0x5D, 0x03, 0x5B, 0xF0, 0x56, 0x03, 0x5A, 0xF0, - .byte 0x50, 0x03, 0x59, 0xF0, 0x4A, 0x03, 0x58, 0xF0, 0x44, 0x03, 0x56, 0xF0, 0x3E, 0x03, 0x55, 0xF0, - .byte 0x38, 0x03, 0x54, 0xF0, 0x32, 0x03, 0x52, 0xF0, 0x2B, 0x03, 0x51, 0xF0, 0x25, 0x03, 0x50, 0xF0, - .byte 0x1F, 0x03, 0x4F, 0xF0, 0x19, 0x03, 0x4D, 0xF0, 0x13, 0x03, 0x4C, 0xF0, 0x0D, 0x03, 0x4B, 0xF0, - .byte 0x06, 0x03, 0x4A, 0xF0, 0x00, 0x03, 0x49, 0xF0, 0xFA, 0x02, 0x48, 0xF0, 0xF4, 0x02, 0x46, 0xF0, - .byte 0xEE, 0x02, 0x45, 0xF0, 0xE8, 0x02, 0x44, 0xF0, 0xE1, 0x02, 0x43, 0xF0, 0xDB, 0x02, 0x42, 0xF0, - .byte 0xD5, 0x02, 0x41, 0xF0, 0xCF, 0x02, 0x40, 0xF0, 0xC9, 0x02, 0x3E, 0xF0, 0xC2, 0x02, 0x3D, 0xF0, - .byte 0xBC, 0x02, 0x3C, 0xF0, 0xB6, 0x02, 0x3B, 0xF0, 0xB0, 0x02, 0x3A, 0xF0, 0xAA, 0x02, 0x39, 0xF0, - .byte 0xA3, 0x02, 0x38, 0xF0, 0x9D, 0x02, 0x37, 0xF0, 0x97, 0x02, 0x36, 0xF0, 0x91, 0x02, 0x35, 0xF0, - .byte 0x8B, 0x02, 0x34, 0xF0, 0x84, 0x02, 0x33, 0xF0, 0x7E, 0x02, 0x32, 0xF0, 0x78, 0x02, 0x31, 0xF0, - .byte 0x72, 0x02, 0x30, 0xF0, 0x6C, 0x02, 0x2F, 0xF0, 0x65, 0x02, 0x2E, 0xF0, 0x5F, 0x02, 0x2D, 0xF0, - .byte 0x59, 0x02, 0x2C, 0xF0, 0x53, 0x02, 0x2B, 0xF0, 0x4D, 0x02, 0x2B, 0xF0, 0x46, 0x02, 0x2A, 0xF0, - .byte 0x40, 0x02, 0x29, 0xF0, 0x3A, 0x02, 0x28, 0xF0, 0x34, 0x02, 0x27, 0xF0, 0x2D, 0x02, 0x26, 0xF0, - .byte 0x27, 0x02, 0x25, 0xF0, 0x21, 0x02, 0x24, 0xF0, 0x1B, 0x02, 0x24, 0xF0, 0x15, 0x02, 0x23, 0xF0, - .byte 0x0E, 0x02, 0x22, 0xF0, 0x08, 0x02, 0x21, 0xF0, 0x02, 0x02, 0x20, 0xF0, 0xFC, 0x01, 0x20, 0xF0, - .byte 0xF5, 0x01, 0x1F, 0xF0, 0xEF, 0x01, 0x1E, 0xF0, 0xE9, 0x01, 0x1D, 0xF0, 0xE3, 0x01, 0x1D, 0xF0, - .byte 0xDC, 0x01, 0x1C, 0xF0, 0xD6, 0x01, 0x1B, 0xF0, 0xD0, 0x01, 0x1A, 0xF0, 0xCA, 0x01, 0x1A, 0xF0, - .byte 0xC3, 0x01, 0x19, 0xF0, 0xBD, 0x01, 0x18, 0xF0, 0xB7, 0x01, 0x18, 0xF0, 0xB1, 0x01, 0x17, 0xF0, - .byte 0xAA, 0x01, 0x16, 0xF0, 0xA4, 0x01, 0x16, 0xF0, 0x9E, 0x01, 0x15, 0xF0, 0x98, 0x01, 0x14, 0xF0, - .byte 0x91, 0x01, 0x14, 0xF0, 0x8B, 0x01, 0x13, 0xF0, 0x85, 0x01, 0x13, 0xF0, 0x7F, 0x01, 0x12, 0xF0, - .byte 0x78, 0x01, 0x11, 0xF0, 0x72, 0x01, 0x11, 0xF0, 0x6C, 0x01, 0x10, 0xF0, 0x66, 0x01, 0x10, 0xF0, - .byte 0x5F, 0x01, 0x0F, 0xF0, 0x59, 0x01, 0x0F, 0xF0, 0x53, 0x01, 0x0E, 0xF0, 0x4D, 0x01, 0x0E, 0xF0, - .byte 0x46, 0x01, 0x0D, 0xF0, 0x40, 0x01, 0x0D, 0xF0, 0x3A, 0x01, 0x0C, 0xF0, 0x34, 0x01, 0x0C, 0xF0, - .byte 0x2D, 0x01, 0x0B, 0xF0, 0x27, 0x01, 0x0B, 0xF0, 0x21, 0x01, 0x0A, 0xF0, 0x1B, 0x01, 0x0A, 0xF0, - .byte 0x14, 0x01, 0x09, 0xF0, 0x0E, 0x01, 0x09, 0xF0, 0x08, 0x01, 0x08, 0xF0, 0x01, 0x01, 0x08, 0xF0, - .byte 0xFB, 0x00, 0x08, 0xF0, 0xF5, 0x00, 0x07, 0xF0, 0xEF, 0x00, 0x07, 0xF0, 0xE8, 0x00, 0x07, 0xF0, - .byte 0xE2, 0x00, 0x06, 0xF0, 0xDC, 0x00, 0x06, 0xF0, 0xD6, 0x00, 0x06, 0xF0, 0xCF, 0x00, 0x05, 0xF0, - .byte 0xC9, 0x00, 0x05, 0xF0, 0xC3, 0x00, 0x05, 0xF0, 0xBC, 0x00, 0x04, 0xF0, 0xB6, 0x00, 0x04, 0xF0, - .byte 0xB0, 0x00, 0x04, 0xF0, 0xAA, 0x00, 0x04, 0xF0, 0xA3, 0x00, 0x03, 0xF0, 0x9D, 0x00, 0x03, 0xF0, - .byte 0x97, 0x00, 0x03, 0xF0, 0x90, 0x00, 0x03, 0xF0, 0x8A, 0x00, 0x02, 0xF0, 0x84, 0x00, 0x02, 0xF0, - .byte 0x7E, 0x00, 0x02, 0xF0, 0x77, 0x00, 0x02, 0xF0, 0x71, 0x00, 0x02, 0xF0, 0x6B, 0x00, 0x01, 0xF0, - .byte 0x65, 0x00, 0x01, 0xF0, 0x5E, 0x00, 0x01, 0xF0, 0x58, 0x00, 0x01, 0xF0, 0x52, 0x00, 0x01, 0xF0, - .byte 0x4B, 0x00, 0x01, 0xF0, 0x45, 0x00, 0x01, 0xF0, 0x3F, 0x00, 0x00, 0xF0, 0x39, 0x00, 0x00, 0xF0, - .byte 0x32, 0x00, 0x00, 0xF0, 0x2C, 0x00, 0x00, 0xF0, 0x26, 0x00, 0x00, 0xF0, 0x1F, 0x00, 0x00, 0xF0, - .byte 0x19, 0x00, 0x00, 0xF0, 0x13, 0x00, 0x00, 0xF0, 0x0D, 0x00, 0x00, 0xF0, 0x06, 0x00, 0x00, 0xF0, - .byte 0x00, 0x00, 0x00, 0xF0, 0xFA, 0xFF, 0x00, 0xF0, 0xF3, 0xFF, 0x00, 0xF0, 0xED, 0xFF, 0x00, 0xF0, - .byte 0xE7, 0xFF, 0x00, 0xF0, 0xE1, 0xFF, 0x00, 0xF0, 0xDA, 0xFF, 0x00, 0xF0, 0xD4, 0xFF, 0x00, 0xF0, - .byte 0xCE, 0xFF, 0x00, 0xF0, 0xC7, 0xFF, 0x00, 0xF0, 0xC1, 0xFF, 0x00, 0xF0, 0xBB, 0xFF, 0x01, 0xF0, - .byte 0xB5, 0xFF, 0x01, 0xF0, 0xAE, 0xFF, 0x01, 0xF0, 0xA8, 0xFF, 0x01, 0xF0, 0xA2, 0xFF, 0x01, 0xF0, - .byte 0x9B, 0xFF, 0x01, 0xF0, 0x95, 0xFF, 0x01, 0xF0, 0x8F, 0xFF, 0x02, 0xF0, 0x89, 0xFF, 0x02, 0xF0, - .byte 0x82, 0xFF, 0x02, 0xF0, 0x7C, 0xFF, 0x02, 0xF0, 0x76, 0xFF, 0x02, 0xF0, 0x70, 0xFF, 0x03, 0xF0, - .byte 0x69, 0xFF, 0x03, 0xF0, 0x63, 0xFF, 0x03, 0xF0, 0x5D, 0xFF, 0x03, 0xF0, 0x56, 0xFF, 0x04, 0xF0, - .byte 0x50, 0xFF, 0x04, 0xF0, 0x4A, 0xFF, 0x04, 0xF0, 0x44, 0xFF, 0x04, 0xF0, 0x3D, 0xFF, 0x05, 0xF0, - .byte 0x37, 0xFF, 0x05, 0xF0, 0x31, 0xFF, 0x05, 0xF0, 0x2A, 0xFF, 0x06, 0xF0, 0x24, 0xFF, 0x06, 0xF0, - .byte 0x1E, 0xFF, 0x06, 0xF0, 0x18, 0xFF, 0x07, 0xF0, 0x11, 0xFF, 0x07, 0xF0, 0x0B, 0xFF, 0x07, 0xF0, - .byte 0x05, 0xFF, 0x08, 0xF0, 0xFF, 0xFE, 0x08, 0xF0, 0xF8, 0xFE, 0x08, 0xF0, 0xF2, 0xFE, 0x09, 0xF0, - .byte 0xEC, 0xFE, 0x09, 0xF0, 0xE5, 0xFE, 0x0A, 0xF0, 0xDF, 0xFE, 0x0A, 0xF0, 0xD9, 0xFE, 0x0B, 0xF0, - .byte 0xD3, 0xFE, 0x0B, 0xF0, 0xCC, 0xFE, 0x0C, 0xF0, 0xC6, 0xFE, 0x0C, 0xF0, 0xC0, 0xFE, 0x0D, 0xF0, - .byte 0xBA, 0xFE, 0x0D, 0xF0, 0xB3, 0xFE, 0x0E, 0xF0, 0xAD, 0xFE, 0x0E, 0xF0, 0xA7, 0xFE, 0x0F, 0xF0, - .byte 0xA1, 0xFE, 0x0F, 0xF0, 0x9A, 0xFE, 0x10, 0xF0, 0x94, 0xFE, 0x10, 0xF0, 0x8E, 0xFE, 0x11, 0xF0, - .byte 0x88, 0xFE, 0x11, 0xF0, 0x81, 0xFE, 0x12, 0xF0, 0x7B, 0xFE, 0x13, 0xF0, 0x75, 0xFE, 0x13, 0xF0, - .byte 0x6F, 0xFE, 0x14, 0xF0, 0x68, 0xFE, 0x14, 0xF0, 0x62, 0xFE, 0x15, 0xF0, 0x5C, 0xFE, 0x16, 0xF0, - .byte 0x56, 0xFE, 0x16, 0xF0, 0x4F, 0xFE, 0x17, 0xF0, 0x49, 0xFE, 0x18, 0xF0, 0x43, 0xFE, 0x18, 0xF0, - .byte 0x3D, 0xFE, 0x19, 0xF0, 0x36, 0xFE, 0x1A, 0xF0, 0x30, 0xFE, 0x1A, 0xF0, 0x2A, 0xFE, 0x1B, 0xF0, - .byte 0x24, 0xFE, 0x1C, 0xF0, 0x1D, 0xFE, 0x1D, 0xF0, 0x17, 0xFE, 0x1D, 0xF0, 0x11, 0xFE, 0x1E, 0xF0, - .byte 0x0B, 0xFE, 0x1F, 0xF0, 0x04, 0xFE, 0x20, 0xF0, 0xFE, 0xFD, 0x20, 0xF0, 0xF8, 0xFD, 0x21, 0xF0, - .byte 0xF2, 0xFD, 0x22, 0xF0, 0xEB, 0xFD, 0x23, 0xF0, 0xE5, 0xFD, 0x24, 0xF0, 0xDF, 0xFD, 0x24, 0xF0, - .byte 0xD9, 0xFD, 0x25, 0xF0, 0xD3, 0xFD, 0x26, 0xF0, 0xCC, 0xFD, 0x27, 0xF0, 0xC6, 0xFD, 0x28, 0xF0, - .byte 0xC0, 0xFD, 0x29, 0xF0, 0xBA, 0xFD, 0x2A, 0xF0, 0xB3, 0xFD, 0x2B, 0xF0, 0xAD, 0xFD, 0x2B, 0xF0, - .byte 0xA7, 0xFD, 0x2C, 0xF0, 0xA1, 0xFD, 0x2D, 0xF0, 0x9B, 0xFD, 0x2E, 0xF0, 0x94, 0xFD, 0x2F, 0xF0, - .byte 0x8E, 0xFD, 0x30, 0xF0, 0x88, 0xFD, 0x31, 0xF0, 0x82, 0xFD, 0x32, 0xF0, 0x7C, 0xFD, 0x33, 0xF0, - .byte 0x75, 0xFD, 0x34, 0xF0, 0x6F, 0xFD, 0x35, 0xF0, 0x69, 0xFD, 0x36, 0xF0, 0x63, 0xFD, 0x37, 0xF0, - .byte 0x5D, 0xFD, 0x38, 0xF0, 0x56, 0xFD, 0x39, 0xF0, 0x50, 0xFD, 0x3A, 0xF0, 0x4A, 0xFD, 0x3B, 0xF0, - .byte 0x44, 0xFD, 0x3C, 0xF0, 0x3E, 0xFD, 0x3D, 0xF0, 0x37, 0xFD, 0x3E, 0xF0, 0x31, 0xFD, 0x40, 0xF0, - .byte 0x2B, 0xFD, 0x41, 0xF0, 0x25, 0xFD, 0x42, 0xF0, 0x1F, 0xFD, 0x43, 0xF0, 0x18, 0xFD, 0x44, 0xF0, - .byte 0x12, 0xFD, 0x45, 0xF0, 0x0C, 0xFD, 0x46, 0xF0, 0x06, 0xFD, 0x48, 0xF0, 0x00, 0xFD, 0x49, 0xF0, - .byte 0xFA, 0xFC, 0x4A, 0xF0, 0xF3, 0xFC, 0x4B, 0xF0, 0xED, 0xFC, 0x4C, 0xF0, 0xE7, 0xFC, 0x4D, 0xF0, - .byte 0xE1, 0xFC, 0x4F, 0xF0, 0xDB, 0xFC, 0x50, 0xF0, 0xD5, 0xFC, 0x51, 0xF0, 0xCE, 0xFC, 0x52, 0xF0, - .byte 0xC8, 0xFC, 0x54, 0xF0, 0xC2, 0xFC, 0x55, 0xF0, 0xBC, 0xFC, 0x56, 0xF0, 0xB6, 0xFC, 0x58, 0xF0, - .byte 0xB0, 0xFC, 0x59, 0xF0, 0xAA, 0xFC, 0x5A, 0xF0, 0xA3, 0xFC, 0x5B, 0xF0, 0x9D, 0xFC, 0x5D, 0xF0, - .byte 0x97, 0xFC, 0x5E, 0xF0, 0x91, 0xFC, 0x5F, 0xF0, 0x8B, 0xFC, 0x61, 0xF0, 0x85, 0xFC, 0x62, 0xF0, - .byte 0x7F, 0xFC, 0x64, 0xF0, 0x78, 0xFC, 0x65, 0xF0, 0x72, 0xFC, 0x66, 0xF0, 0x6C, 0xFC, 0x68, 0xF0, - .byte 0x66, 0xFC, 0x69, 0xF0, 0x60, 0xFC, 0x6B, 0xF0, 0x5A, 0xFC, 0x6C, 0xF0, 0x54, 0xFC, 0x6D, 0xF0, - .byte 0x4E, 0xFC, 0x6F, 0xF0, 0x47, 0xFC, 0x70, 0xF0, 0x41, 0xFC, 0x72, 0xF0, 0x3B, 0xFC, 0x73, 0xF0, - .byte 0x35, 0xFC, 0x75, 0xF0, 0x2F, 0xFC, 0x76, 0xF0, 0x29, 0xFC, 0x78, 0xF0, 0x23, 0xFC, 0x79, 0xF0, - .byte 0x1D, 0xFC, 0x7B, 0xF0, 0x17, 0xFC, 0x7C, 0xF0, 0x11, 0xFC, 0x7E, 0xF0, 0x0A, 0xFC, 0x7F, 0xF0, - .byte 0x04, 0xFC, 0x81, 0xF0, 0xFE, 0xFB, 0x83, 0xF0, 0xF8, 0xFB, 0x84, 0xF0, 0xF2, 0xFB, 0x86, 0xF0, - .byte 0xEC, 0xFB, 0x87, 0xF0, 0xE6, 0xFB, 0x89, 0xF0, 0xE0, 0xFB, 0x8A, 0xF0, 0xDA, 0xFB, 0x8C, 0xF0, - .byte 0xD4, 0xFB, 0x8E, 0xF0, 0xCE, 0xFB, 0x8F, 0xF0, 0xC8, 0xFB, 0x91, 0xF0, 0xC2, 0xFB, 0x93, 0xF0, - .byte 0xBC, 0xFB, 0x94, 0xF0, 0xB5, 0xFB, 0x96, 0xF0, 0xAF, 0xFB, 0x98, 0xF0, 0xA9, 0xFB, 0x99, 0xF0, - .byte 0xA3, 0xFB, 0x9B, 0xF0, 0x9D, 0xFB, 0x9D, 0xF0, 0x97, 0xFB, 0x9F, 0xF0, 0x91, 0xFB, 0xA0, 0xF0, - .byte 0x8B, 0xFB, 0xA2, 0xF0, 0x85, 0xFB, 0xA4, 0xF0, 0x7F, 0xFB, 0xA6, 0xF0, 0x79, 0xFB, 0xA7, 0xF0, - .byte 0x73, 0xFB, 0xA9, 0xF0, 0x6D, 0xFB, 0xAB, 0xF0, 0x67, 0xFB, 0xAD, 0xF0, 0x61, 0xFB, 0xAF, 0xF0, - .byte 0x5B, 0xFB, 0xB0, 0xF0, 0x55, 0xFB, 0xB2, 0xF0, 0x4F, 0xFB, 0xB4, 0xF0, 0x49, 0xFB, 0xB6, 0xF0, - .byte 0x43, 0xFB, 0xB8, 0xF0, 0x3D, 0xFB, 0xBA, 0xF0, 0x37, 0xFB, 0xBB, 0xF0, 0x31, 0xFB, 0xBD, 0xF0, - .byte 0x2B, 0xFB, 0xBF, 0xF0, 0x25, 0xFB, 0xC1, 0xF0, 0x1F, 0xFB, 0xC3, 0xF0, 0x19, 0xFB, 0xC5, 0xF0, - .byte 0x13, 0xFB, 0xC7, 0xF0, 0x0D, 0xFB, 0xC9, 0xF0, 0x07, 0xFB, 0xCB, 0xF0, 0x01, 0xFB, 0xCD, 0xF0, - .byte 0xFB, 0xFA, 0xCF, 0xF0, 0xF5, 0xFA, 0xD1, 0xF0, 0xEF, 0xFA, 0xD3, 0xF0, 0xE9, 0xFA, 0xD5, 0xF0, - .byte 0xE3, 0xFA, 0xD7, 0xF0, 0xDD, 0xFA, 0xD9, 0xF0, 0xD7, 0xFA, 0xDB, 0xF0, 0xD1, 0xFA, 0xDD, 0xF0, - .byte 0xCC, 0xFA, 0xDF, 0xF0, 0xC6, 0xFA, 0xE1, 0xF0, 0xC0, 0xFA, 0xE3, 0xF0, 0xBA, 0xFA, 0xE5, 0xF0, - .byte 0xB4, 0xFA, 0xE7, 0xF0, 0xAE, 0xFA, 0xE9, 0xF0, 0xA8, 0xFA, 0xEB, 0xF0, 0xA2, 0xFA, 0xED, 0xF0, - .byte 0x9C, 0xFA, 0xEF, 0xF0, 0x96, 0xFA, 0xF2, 0xF0, 0x90, 0xFA, 0xF4, 0xF0, 0x8A, 0xFA, 0xF6, 0xF0, - .byte 0x84, 0xFA, 0xF8, 0xF0, 0x7F, 0xFA, 0xFA, 0xF0, 0x79, 0xFA, 0xFC, 0xF0, 0x73, 0xFA, 0xFE, 0xF0, - .byte 0x6D, 0xFA, 0x01, 0xF1, 0x67, 0xFA, 0x03, 0xF1, 0x61, 0xFA, 0x05, 0xF1, 0x5B, 0xFA, 0x07, 0xF1, - .byte 0x55, 0xFA, 0x09, 0xF1, 0x4F, 0xFA, 0x0C, 0xF1, 0x4A, 0xFA, 0x0E, 0xF1, 0x44, 0xFA, 0x10, 0xF1, - .byte 0x3E, 0xFA, 0x12, 0xF1, 0x38, 0xFA, 0x15, 0xF1, 0x32, 0xFA, 0x17, 0xF1, 0x2C, 0xFA, 0x19, 0xF1, - .byte 0x26, 0xFA, 0x1C, 0xF1, 0x21, 0xFA, 0x1E, 0xF1, 0x1B, 0xFA, 0x20, 0xF1, 0x15, 0xFA, 0x23, 0xF1, - .byte 0x0F, 0xFA, 0x25, 0xF1, 0x09, 0xFA, 0x27, 0xF1, 0x03, 0xFA, 0x2A, 0xF1, 0xFE, 0xF9, 0x2C, 0xF1, - .byte 0xF8, 0xF9, 0x2E, 0xF1, 0xF2, 0xF9, 0x31, 0xF1, 0xEC, 0xF9, 0x33, 0xF1, 0xE6, 0xF9, 0x35, 0xF1, - .byte 0xE1, 0xF9, 0x38, 0xF1, 0xDB, 0xF9, 0x3A, 0xF1, 0xD5, 0xF9, 0x3D, 0xF1, 0xCF, 0xF9, 0x3F, 0xF1, - .byte 0xC9, 0xF9, 0x41, 0xF1, 0xC4, 0xF9, 0x44, 0xF1, 0xBE, 0xF9, 0x46, 0xF1, 0xB8, 0xF9, 0x49, 0xF1, - .byte 0xB2, 0xF9, 0x4B, 0xF1, 0xAC, 0xF9, 0x4E, 0xF1, 0xA7, 0xF9, 0x50, 0xF1, 0xA1, 0xF9, 0x53, 0xF1, - .byte 0x9B, 0xF9, 0x55, 0xF1, 0x95, 0xF9, 0x58, 0xF1, 0x90, 0xF9, 0x5A, 0xF1, 0x8A, 0xF9, 0x5D, 0xF1, - .byte 0x84, 0xF9, 0x5F, 0xF1, 0x7E, 0xF9, 0x62, 0xF1, 0x79, 0xF9, 0x65, 0xF1, 0x73, 0xF9, 0x67, 0xF1, - .byte 0x6D, 0xF9, 0x6A, 0xF1, 0x67, 0xF9, 0x6C, 0xF1, 0x62, 0xF9, 0x6F, 0xF1, 0x5C, 0xF9, 0x71, 0xF1, - .byte 0x56, 0xF9, 0x74, 0xF1, 0x51, 0xF9, 0x77, 0xF1, 0x4B, 0xF9, 0x79, 0xF1, 0x45, 0xF9, 0x7C, 0xF1, - .byte 0x3F, 0xF9, 0x7F, 0xF1, 0x3A, 0xF9, 0x81, 0xF1, 0x34, 0xF9, 0x84, 0xF1, 0x2E, 0xF9, 0x87, 0xF1, - .byte 0x29, 0xF9, 0x89, 0xF1, 0x23, 0xF9, 0x8C, 0xF1, 0x1D, 0xF9, 0x8F, 0xF1, 0x18, 0xF9, 0x91, 0xF1, - .byte 0x12, 0xF9, 0x94, 0xF1, 0x0C, 0xF9, 0x97, 0xF1, 0x07, 0xF9, 0x9A, 0xF1, 0x01, 0xF9, 0x9C, 0xF1, - .byte 0xFB, 0xF8, 0x9F, 0xF1, 0xF6, 0xF8, 0xA2, 0xF1, 0xF0, 0xF8, 0xA5, 0xF1, 0xEB, 0xF8, 0xA7, 0xF1, - .byte 0xE5, 0xF8, 0xAA, 0xF1, 0xDF, 0xF8, 0xAD, 0xF1, 0xDA, 0xF8, 0xB0, 0xF1, 0xD4, 0xF8, 0xB3, 0xF1, - .byte 0xCE, 0xF8, 0xB5, 0xF1, 0xC9, 0xF8, 0xB8, 0xF1, 0xC3, 0xF8, 0xBB, 0xF1, 0xBE, 0xF8, 0xBE, 0xF1, - .byte 0xB8, 0xF8, 0xC1, 0xF1, 0xB2, 0xF8, 0xC4, 0xF1, 0xAD, 0xF8, 0xC6, 0xF1, 0xA7, 0xF8, 0xC9, 0xF1, - .byte 0xA2, 0xF8, 0xCC, 0xF1, 0x9C, 0xF8, 0xCF, 0xF1, 0x96, 0xF8, 0xD2, 0xF1, 0x91, 0xF8, 0xD5, 0xF1, - .byte 0x8B, 0xF8, 0xD8, 0xF1, 0x86, 0xF8, 0xDB, 0xF1, 0x80, 0xF8, 0xDE, 0xF1, 0x7B, 0xF8, 0xE1, 0xF1, - .byte 0x75, 0xF8, 0xE4, 0xF1, 0x70, 0xF8, 0xE7, 0xF1, 0x6A, 0xF8, 0xEA, 0xF1, 0x65, 0xF8, 0xED, 0xF1, - .byte 0x5F, 0xF8, 0xF0, 0xF1, 0x5A, 0xF8, 0xF3, 0xF1, 0x54, 0xF8, 0xF6, 0xF1, 0x4E, 0xF8, 0xF9, 0xF1, - .byte 0x49, 0xF8, 0xFC, 0xF1, 0x43, 0xF8, 0xFF, 0xF1, 0x3E, 0xF8, 0x02, 0xF2, 0x38, 0xF8, 0x05, 0xF2, - .byte 0x33, 0xF8, 0x08, 0xF2, 0x2E, 0xF8, 0x0B, 0xF2, 0x28, 0xF8, 0x0E, 0xF2, 0x23, 0xF8, 0x11, 0xF2, - .byte 0x1D, 0xF8, 0x14, 0xF2, 0x18, 0xF8, 0x17, 0xF2, 0x12, 0xF8, 0x1A, 0xF2, 0x0D, 0xF8, 0x1D, 0xF2, - .byte 0x07, 0xF8, 0x21, 0xF2, 0x02, 0xF8, 0x24, 0xF2, 0xFC, 0xF7, 0x27, 0xF2, 0xF7, 0xF7, 0x2A, 0xF2, - .byte 0xF2, 0xF7, 0x2D, 0xF2, 0xEC, 0xF7, 0x30, 0xF2, 0xE7, 0xF7, 0x34, 0xF2, 0xE1, 0xF7, 0x37, 0xF2, - .byte 0xDC, 0xF7, 0x3A, 0xF2, 0xD6, 0xF7, 0x3D, 0xF2, 0xD1, 0xF7, 0x40, 0xF2, 0xCC, 0xF7, 0x44, 0xF2, - .byte 0xC6, 0xF7, 0x47, 0xF2, 0xC1, 0xF7, 0x4A, 0xF2, 0xBB, 0xF7, 0x4D, 0xF2, 0xB6, 0xF7, 0x50, 0xF2, - .byte 0xB1, 0xF7, 0x54, 0xF2, 0xAB, 0xF7, 0x57, 0xF2, 0xA6, 0xF7, 0x5A, 0xF2, 0xA1, 0xF7, 0x5E, 0xF2, - .byte 0x9B, 0xF7, 0x61, 0xF2, 0x96, 0xF7, 0x64, 0xF2, 0x91, 0xF7, 0x67, 0xF2, 0x8B, 0xF7, 0x6B, 0xF2, - .byte 0x86, 0xF7, 0x6E, 0xF2, 0x81, 0xF7, 0x71, 0xF2, 0x7B, 0xF7, 0x75, 0xF2, 0x76, 0xF7, 0x78, 0xF2, - .byte 0x71, 0xF7, 0x7B, 0xF2, 0x6B, 0xF7, 0x7F, 0xF2, 0x66, 0xF7, 0x82, 0xF2, 0x61, 0xF7, 0x86, 0xF2, - .byte 0x5B, 0xF7, 0x89, 0xF2, 0x56, 0xF7, 0x8C, 0xF2, 0x51, 0xF7, 0x90, 0xF2, 0x4C, 0xF7, 0x93, 0xF2, - .byte 0x46, 0xF7, 0x97, 0xF2, 0x41, 0xF7, 0x9A, 0xF2, 0x3C, 0xF7, 0x9E, 0xF2, 0x37, 0xF7, 0xA1, 0xF2, - .byte 0x31, 0xF7, 0xA4, 0xF2, 0x2C, 0xF7, 0xA8, 0xF2, 0x27, 0xF7, 0xAB, 0xF2, 0x22, 0xF7, 0xAF, 0xF2, - .byte 0x1C, 0xF7, 0xB2, 0xF2, 0x17, 0xF7, 0xB6, 0xF2, 0x12, 0xF7, 0xB9, 0xF2, 0x0D, 0xF7, 0xBD, 0xF2, - .byte 0x08, 0xF7, 0xC0, 0xF2, 0x02, 0xF7, 0xC4, 0xF2, 0xFD, 0xF6, 0xC7, 0xF2, 0xF8, 0xF6, 0xCB, 0xF2, - .byte 0xF3, 0xF6, 0xCE, 0xF2, 0xEE, 0xF6, 0xD2, 0xF2, 0xE8, 0xF6, 0xD6, 0xF2, 0xE3, 0xF6, 0xD9, 0xF2, - .byte 0xDE, 0xF6, 0xDD, 0xF2, 0xD9, 0xF6, 0xE0, 0xF2, 0xD4, 0xF6, 0xE4, 0xF2, 0xCF, 0xF6, 0xE8, 0xF2, - .byte 0xC9, 0xF6, 0xEB, 0xF2, 0xC4, 0xF6, 0xEF, 0xF2, 0xBF, 0xF6, 0xF2, 0xF2, 0xBA, 0xF6, 0xF6, 0xF2, - .byte 0xB5, 0xF6, 0xFA, 0xF2, 0xB0, 0xF6, 0xFD, 0xF2, 0xAB, 0xF6, 0x01, 0xF3, 0xA6, 0xF6, 0x05, 0xF3, - .byte 0xA1, 0xF6, 0x08, 0xF3, 0x9B, 0xF6, 0x0C, 0xF3, 0x96, 0xF6, 0x10, 0xF3, 0x91, 0xF6, 0x13, 0xF3, - .byte 0x8C, 0xF6, 0x17, 0xF3, 0x87, 0xF6, 0x1B, 0xF3, 0x82, 0xF6, 0x1F, 0xF3, 0x7D, 0xF6, 0x22, 0xF3, - .byte 0x78, 0xF6, 0x26, 0xF3, 0x73, 0xF6, 0x2A, 0xF3, 0x6E, 0xF6, 0x2E, 0xF3, 0x69, 0xF6, 0x31, 0xF3, - .byte 0x64, 0xF6, 0x35, 0xF3, 0x5F, 0xF6, 0x39, 0xF3, 0x5A, 0xF6, 0x3D, 0xF3, 0x55, 0xF6, 0x40, 0xF3, - .byte 0x50, 0xF6, 0x44, 0xF3, 0x4B, 0xF6, 0x48, 0xF3, 0x46, 0xF6, 0x4C, 0xF3, 0x41, 0xF6, 0x50, 0xF3, - .byte 0x3C, 0xF6, 0x54, 0xF3, 0x37, 0xF6, 0x57, 0xF3, 0x32, 0xF6, 0x5B, 0xF3, 0x2D, 0xF6, 0x5F, 0xF3, - .byte 0x28, 0xF6, 0x63, 0xF3, 0x23, 0xF6, 0x67, 0xF3, 0x1E, 0xF6, 0x6B, 0xF3, 0x19, 0xF6, 0x6F, 0xF3, - .byte 0x14, 0xF6, 0x72, 0xF3, 0x0F, 0xF6, 0x76, 0xF3, 0x0A, 0xF6, 0x7A, 0xF3, 0x05, 0xF6, 0x7E, 0xF3, - .byte 0x01, 0xF6, 0x82, 0xF3, 0xFC, 0xF5, 0x86, 0xF3, 0xF7, 0xF5, 0x8A, 0xF3, 0xF2, 0xF5, 0x8E, 0xF3, - .byte 0xED, 0xF5, 0x92, 0xF3, 0xE8, 0xF5, 0x96, 0xF3, 0xE3, 0xF5, 0x9A, 0xF3, 0xDE, 0xF5, 0x9E, 0xF3, - .byte 0xDA, 0xF5, 0xA2, 0xF3, 0xD5, 0xF5, 0xA6, 0xF3, 0xD0, 0xF5, 0xAA, 0xF3, 0xCB, 0xF5, 0xAE, 0xF3, - .byte 0xC6, 0xF5, 0xB2, 0xF3, 0xC1, 0xF5, 0xB6, 0xF3, 0xBC, 0xF5, 0xBA, 0xF3, 0xB8, 0xF5, 0xBE, 0xF3, - .byte 0xB3, 0xF5, 0xC2, 0xF3, 0xAE, 0xF5, 0xC6, 0xF3, 0xA9, 0xF5, 0xCA, 0xF3, 0xA4, 0xF5, 0xCE, 0xF3, - .byte 0xA0, 0xF5, 0xD2, 0xF3, 0x9B, 0xF5, 0xD6, 0xF3, 0x96, 0xF5, 0xDA, 0xF3, 0x91, 0xF5, 0xDE, 0xF3, - .byte 0x8D, 0xF5, 0xE2, 0xF3, 0x88, 0xF5, 0xE7, 0xF3, 0x83, 0xF5, 0xEB, 0xF3, 0x7E, 0xF5, 0xEF, 0xF3, - .byte 0x7A, 0xF5, 0xF3, 0xF3, 0x75, 0xF5, 0xF7, 0xF3, 0x70, 0xF5, 0xFB, 0xF3, 0x6B, 0xF5, 0xFF, 0xF3, - .byte 0x67, 0xF5, 0x04, 0xF4, 0x62, 0xF5, 0x08, 0xF4, 0x5D, 0xF5, 0x0C, 0xF4, 0x59, 0xF5, 0x10, 0xF4, - .byte 0x54, 0xF5, 0x14, 0xF4, 0x4F, 0xF5, 0x18, 0xF4, 0x4B, 0xF5, 0x1D, 0xF4, 0x46, 0xF5, 0x21, 0xF4, - .byte 0x41, 0xF5, 0x25, 0xF4, 0x3D, 0xF5, 0x29, 0xF4, 0x38, 0xF5, 0x2E, 0xF4, 0x33, 0xF5, 0x32, 0xF4, - .byte 0x2F, 0xF5, 0x36, 0xF4, 0x2A, 0xF5, 0x3A, 0xF4, 0x25, 0xF5, 0x3F, 0xF4, 0x21, 0xF5, 0x43, 0xF4, - .byte 0x1C, 0xF5, 0x47, 0xF4, 0x18, 0xF5, 0x4B, 0xF4, 0x13, 0xF5, 0x50, 0xF4, 0x0E, 0xF5, 0x54, 0xF4, - .byte 0x0A, 0xF5, 0x58, 0xF4, 0x05, 0xF5, 0x5D, 0xF4, 0x01, 0xF5, 0x61, 0xF4, 0xFC, 0xF4, 0x65, 0xF4, - .byte 0xF8, 0xF4, 0x69, 0xF4, 0xF3, 0xF4, 0x6E, 0xF4, 0xEF, 0xF4, 0x72, 0xF4, 0xEA, 0xF4, 0x77, 0xF4, - .byte 0xE5, 0xF4, 0x7B, 0xF4, 0xE1, 0xF4, 0x7F, 0xF4, 0xDC, 0xF4, 0x84, 0xF4, 0xD8, 0xF4, 0x88, 0xF4, - .byte 0xD3, 0xF4, 0x8C, 0xF4, 0xCF, 0xF4, 0x91, 0xF4, 0xCA, 0xF4, 0x95, 0xF4, 0xC6, 0xF4, 0x9A, 0xF4, - .byte 0xC2, 0xF4, 0x9E, 0xF4, 0xBD, 0xF4, 0xA2, 0xF4, 0xB9, 0xF4, 0xA7, 0xF4, 0xB4, 0xF4, 0xAB, 0xF4, - .byte 0xB0, 0xF4, 0xB0, 0xF4, 0xAB, 0xF4, 0xB4, 0xF4, 0xA7, 0xF4, 0xB9, 0xF4, 0xA2, 0xF4, 0xBD, 0xF4, - .byte 0x9E, 0xF4, 0xC2, 0xF4, 0x9A, 0xF4, 0xC6, 0xF4, 0x95, 0xF4, 0xCA, 0xF4, 0x91, 0xF4, 0xCF, 0xF4, - .byte 0x8C, 0xF4, 0xD3, 0xF4, 0x88, 0xF4, 0xD8, 0xF4, 0x84, 0xF4, 0xDC, 0xF4, 0x7F, 0xF4, 0xE1, 0xF4, - .byte 0x7B, 0xF4, 0xE5, 0xF4, 0x77, 0xF4, 0xEA, 0xF4, 0x72, 0xF4, 0xEF, 0xF4, 0x6E, 0xF4, 0xF3, 0xF4, - .byte 0x69, 0xF4, 0xF8, 0xF4, 0x65, 0xF4, 0xFC, 0xF4, 0x61, 0xF4, 0x01, 0xF5, 0x5D, 0xF4, 0x05, 0xF5, - .byte 0x58, 0xF4, 0x0A, 0xF5, 0x54, 0xF4, 0x0E, 0xF5, 0x50, 0xF4, 0x13, 0xF5, 0x4B, 0xF4, 0x18, 0xF5, - .byte 0x47, 0xF4, 0x1C, 0xF5, 0x43, 0xF4, 0x21, 0xF5, 0x3F, 0xF4, 0x25, 0xF5, 0x3A, 0xF4, 0x2A, 0xF5, - .byte 0x36, 0xF4, 0x2F, 0xF5, 0x32, 0xF4, 0x33, 0xF5, 0x2E, 0xF4, 0x38, 0xF5, 0x29, 0xF4, 0x3D, 0xF5, - .byte 0x25, 0xF4, 0x41, 0xF5, 0x21, 0xF4, 0x46, 0xF5, 0x1D, 0xF4, 0x4B, 0xF5, 0x18, 0xF4, 0x4F, 0xF5, - .byte 0x14, 0xF4, 0x54, 0xF5, 0x10, 0xF4, 0x59, 0xF5, 0x0C, 0xF4, 0x5D, 0xF5, 0x08, 0xF4, 0x62, 0xF5, - .byte 0x04, 0xF4, 0x67, 0xF5, 0xFF, 0xF3, 0x6B, 0xF5, 0xFB, 0xF3, 0x70, 0xF5, 0xF7, 0xF3, 0x75, 0xF5, - .byte 0xF3, 0xF3, 0x7A, 0xF5, 0xEF, 0xF3, 0x7E, 0xF5, 0xEB, 0xF3, 0x83, 0xF5, 0xE7, 0xF3, 0x88, 0xF5, - .byte 0xE2, 0xF3, 0x8D, 0xF5, 0xDE, 0xF3, 0x91, 0xF5, 0xDA, 0xF3, 0x96, 0xF5, 0xD6, 0xF3, 0x9B, 0xF5, - .byte 0xD2, 0xF3, 0xA0, 0xF5, 0xCE, 0xF3, 0xA4, 0xF5, 0xCA, 0xF3, 0xA9, 0xF5, 0xC6, 0xF3, 0xAE, 0xF5, - .byte 0xC2, 0xF3, 0xB3, 0xF5, 0xBE, 0xF3, 0xB8, 0xF5, 0xBA, 0xF3, 0xBC, 0xF5, 0xB6, 0xF3, 0xC1, 0xF5, - .byte 0xB2, 0xF3, 0xC6, 0xF5, 0xAE, 0xF3, 0xCB, 0xF5, 0xAA, 0xF3, 0xD0, 0xF5, 0xA6, 0xF3, 0xD5, 0xF5, - .byte 0xA2, 0xF3, 0xDA, 0xF5, 0x9E, 0xF3, 0xDE, 0xF5, 0x9A, 0xF3, 0xE3, 0xF5, 0x96, 0xF3, 0xE8, 0xF5, - .byte 0x92, 0xF3, 0xED, 0xF5, 0x8E, 0xF3, 0xF2, 0xF5, 0x8A, 0xF3, 0xF7, 0xF5, 0x86, 0xF3, 0xFC, 0xF5, - .byte 0x82, 0xF3, 0x01, 0xF6, 0x7E, 0xF3, 0x05, 0xF6, 0x7A, 0xF3, 0x0A, 0xF6, 0x76, 0xF3, 0x0F, 0xF6, - .byte 0x72, 0xF3, 0x14, 0xF6, 0x6F, 0xF3, 0x19, 0xF6, 0x6B, 0xF3, 0x1E, 0xF6, 0x67, 0xF3, 0x23, 0xF6, - .byte 0x63, 0xF3, 0x28, 0xF6, 0x5F, 0xF3, 0x2D, 0xF6, 0x5B, 0xF3, 0x32, 0xF6, 0x57, 0xF3, 0x37, 0xF6, - .byte 0x54, 0xF3, 0x3C, 0xF6, 0x50, 0xF3, 0x41, 0xF6, 0x4C, 0xF3, 0x46, 0xF6, 0x48, 0xF3, 0x4B, 0xF6, - .byte 0x44, 0xF3, 0x50, 0xF6, 0x40, 0xF3, 0x55, 0xF6, 0x3D, 0xF3, 0x5A, 0xF6, 0x39, 0xF3, 0x5F, 0xF6, - .byte 0x35, 0xF3, 0x64, 0xF6, 0x31, 0xF3, 0x69, 0xF6, 0x2E, 0xF3, 0x6E, 0xF6, 0x2A, 0xF3, 0x73, 0xF6, - .byte 0x26, 0xF3, 0x78, 0xF6, 0x22, 0xF3, 0x7D, 0xF6, 0x1F, 0xF3, 0x82, 0xF6, 0x1B, 0xF3, 0x87, 0xF6, - .byte 0x17, 0xF3, 0x8C, 0xF6, 0x13, 0xF3, 0x91, 0xF6, 0x10, 0xF3, 0x96, 0xF6, 0x0C, 0xF3, 0x9B, 0xF6, - .byte 0x08, 0xF3, 0xA1, 0xF6, 0x05, 0xF3, 0xA6, 0xF6, 0x01, 0xF3, 0xAB, 0xF6, 0xFD, 0xF2, 0xB0, 0xF6, - .byte 0xFA, 0xF2, 0xB5, 0xF6, 0xF6, 0xF2, 0xBA, 0xF6, 0xF2, 0xF2, 0xBF, 0xF6, 0xEF, 0xF2, 0xC4, 0xF6, - .byte 0xEB, 0xF2, 0xC9, 0xF6, 0xE8, 0xF2, 0xCF, 0xF6, 0xE4, 0xF2, 0xD4, 0xF6, 0xE0, 0xF2, 0xD9, 0xF6, - .byte 0xDD, 0xF2, 0xDE, 0xF6, 0xD9, 0xF2, 0xE3, 0xF6, 0xD6, 0xF2, 0xE8, 0xF6, 0xD2, 0xF2, 0xEE, 0xF6, - .byte 0xCE, 0xF2, 0xF3, 0xF6, 0xCB, 0xF2, 0xF8, 0xF6, 0xC7, 0xF2, 0xFD, 0xF6, 0xC4, 0xF2, 0x02, 0xF7, - .byte 0xC0, 0xF2, 0x08, 0xF7, 0xBD, 0xF2, 0x0D, 0xF7, 0xB9, 0xF2, 0x12, 0xF7, 0xB6, 0xF2, 0x17, 0xF7, - .byte 0xB2, 0xF2, 0x1C, 0xF7, 0xAF, 0xF2, 0x22, 0xF7, 0xAB, 0xF2, 0x27, 0xF7, 0xA8, 0xF2, 0x2C, 0xF7, - .byte 0xA4, 0xF2, 0x31, 0xF7, 0xA1, 0xF2, 0x37, 0xF7, 0x9E, 0xF2, 0x3C, 0xF7, 0x9A, 0xF2, 0x41, 0xF7, - .byte 0x97, 0xF2, 0x46, 0xF7, 0x93, 0xF2, 0x4C, 0xF7, 0x90, 0xF2, 0x51, 0xF7, 0x8C, 0xF2, 0x56, 0xF7, - .byte 0x89, 0xF2, 0x5B, 0xF7, 0x86, 0xF2, 0x61, 0xF7, 0x82, 0xF2, 0x66, 0xF7, 0x7F, 0xF2, 0x6B, 0xF7, - .byte 0x7B, 0xF2, 0x71, 0xF7, 0x78, 0xF2, 0x76, 0xF7, 0x75, 0xF2, 0x7B, 0xF7, 0x71, 0xF2, 0x81, 0xF7, - .byte 0x6E, 0xF2, 0x86, 0xF7, 0x6B, 0xF2, 0x8B, 0xF7, 0x67, 0xF2, 0x91, 0xF7, 0x64, 0xF2, 0x96, 0xF7, - .byte 0x61, 0xF2, 0x9B, 0xF7, 0x5E, 0xF2, 0xA1, 0xF7, 0x5A, 0xF2, 0xA6, 0xF7, 0x57, 0xF2, 0xAB, 0xF7, - .byte 0x54, 0xF2, 0xB1, 0xF7, 0x50, 0xF2, 0xB6, 0xF7, 0x4D, 0xF2, 0xBB, 0xF7, 0x4A, 0xF2, 0xC1, 0xF7, - .byte 0x47, 0xF2, 0xC6, 0xF7, 0x44, 0xF2, 0xCC, 0xF7, 0x40, 0xF2, 0xD1, 0xF7, 0x3D, 0xF2, 0xD6, 0xF7, - .byte 0x3A, 0xF2, 0xDC, 0xF7, 0x37, 0xF2, 0xE1, 0xF7, 0x34, 0xF2, 0xE7, 0xF7, 0x30, 0xF2, 0xEC, 0xF7, - .byte 0x2D, 0xF2, 0xF2, 0xF7, 0x2A, 0xF2, 0xF7, 0xF7, 0x27, 0xF2, 0xFC, 0xF7, 0x24, 0xF2, 0x02, 0xF8, - .byte 0x21, 0xF2, 0x07, 0xF8, 0x1D, 0xF2, 0x0D, 0xF8, 0x1A, 0xF2, 0x12, 0xF8, 0x17, 0xF2, 0x18, 0xF8, - .byte 0x14, 0xF2, 0x1D, 0xF8, 0x11, 0xF2, 0x23, 0xF8, 0x0E, 0xF2, 0x28, 0xF8, 0x0B, 0xF2, 0x2E, 0xF8, - .byte 0x08, 0xF2, 0x33, 0xF8, 0x05, 0xF2, 0x38, 0xF8, 0x02, 0xF2, 0x3E, 0xF8, 0xFF, 0xF1, 0x43, 0xF8, - .byte 0xFC, 0xF1, 0x49, 0xF8, 0xF9, 0xF1, 0x4E, 0xF8, 0xF6, 0xF1, 0x54, 0xF8, 0xF3, 0xF1, 0x5A, 0xF8, - .byte 0xF0, 0xF1, 0x5F, 0xF8, 0xED, 0xF1, 0x65, 0xF8, 0xEA, 0xF1, 0x6A, 0xF8, 0xE7, 0xF1, 0x70, 0xF8, - .byte 0xE4, 0xF1, 0x75, 0xF8, 0xE1, 0xF1, 0x7B, 0xF8, 0xDE, 0xF1, 0x80, 0xF8, 0xDB, 0xF1, 0x86, 0xF8, - .byte 0xD8, 0xF1, 0x8B, 0xF8, 0xD5, 0xF1, 0x91, 0xF8, 0xD2, 0xF1, 0x96, 0xF8, 0xCF, 0xF1, 0x9C, 0xF8, - .byte 0xCC, 0xF1, 0xA2, 0xF8, 0xC9, 0xF1, 0xA7, 0xF8, 0xC6, 0xF1, 0xAD, 0xF8, 0xC4, 0xF1, 0xB2, 0xF8, - .byte 0xC1, 0xF1, 0xB8, 0xF8, 0xBE, 0xF1, 0xBE, 0xF8, 0xBB, 0xF1, 0xC3, 0xF8, 0xB8, 0xF1, 0xC9, 0xF8, - .byte 0xB5, 0xF1, 0xCE, 0xF8, 0xB3, 0xF1, 0xD4, 0xF8, 0xB0, 0xF1, 0xDA, 0xF8, 0xAD, 0xF1, 0xDF, 0xF8, - .byte 0xAA, 0xF1, 0xE5, 0xF8, 0xA7, 0xF1, 0xEB, 0xF8, 0xA5, 0xF1, 0xF0, 0xF8, 0xA2, 0xF1, 0xF6, 0xF8, - .byte 0x9F, 0xF1, 0xFB, 0xF8, 0x9C, 0xF1, 0x01, 0xF9, 0x9A, 0xF1, 0x07, 0xF9, 0x97, 0xF1, 0x0C, 0xF9, - .byte 0x94, 0xF1, 0x12, 0xF9, 0x91, 0xF1, 0x18, 0xF9, 0x8F, 0xF1, 0x1D, 0xF9, 0x8C, 0xF1, 0x23, 0xF9, - .byte 0x89, 0xF1, 0x29, 0xF9, 0x87, 0xF1, 0x2E, 0xF9, 0x84, 0xF1, 0x34, 0xF9, 0x81, 0xF1, 0x3A, 0xF9, - .byte 0x7F, 0xF1, 0x3F, 0xF9, 0x7C, 0xF1, 0x45, 0xF9, 0x79, 0xF1, 0x4B, 0xF9, 0x77, 0xF1, 0x51, 0xF9, - .byte 0x74, 0xF1, 0x56, 0xF9, 0x71, 0xF1, 0x5C, 0xF9, 0x6F, 0xF1, 0x62, 0xF9, 0x6C, 0xF1, 0x67, 0xF9, - .byte 0x6A, 0xF1, 0x6D, 0xF9, 0x67, 0xF1, 0x73, 0xF9, 0x65, 0xF1, 0x79, 0xF9, 0x62, 0xF1, 0x7E, 0xF9, - .byte 0x5F, 0xF1, 0x84, 0xF9, 0x5D, 0xF1, 0x8A, 0xF9, 0x5A, 0xF1, 0x90, 0xF9, 0x58, 0xF1, 0x95, 0xF9, - .byte 0x55, 0xF1, 0x9B, 0xF9, 0x53, 0xF1, 0xA1, 0xF9, 0x50, 0xF1, 0xA7, 0xF9, 0x4E, 0xF1, 0xAC, 0xF9, - .byte 0x4B, 0xF1, 0xB2, 0xF9, 0x49, 0xF1, 0xB8, 0xF9, 0x46, 0xF1, 0xBE, 0xF9, 0x44, 0xF1, 0xC4, 0xF9, - .byte 0x41, 0xF1, 0xC9, 0xF9, 0x3F, 0xF1, 0xCF, 0xF9, 0x3D, 0xF1, 0xD5, 0xF9, 0x3A, 0xF1, 0xDB, 0xF9, - .byte 0x38, 0xF1, 0xE1, 0xF9, 0x35, 0xF1, 0xE6, 0xF9, 0x33, 0xF1, 0xEC, 0xF9, 0x31, 0xF1, 0xF2, 0xF9, - .byte 0x2E, 0xF1, 0xF8, 0xF9, 0x2C, 0xF1, 0xFE, 0xF9, 0x2A, 0xF1, 0x03, 0xFA, 0x27, 0xF1, 0x09, 0xFA, - .byte 0x25, 0xF1, 0x0F, 0xFA, 0x23, 0xF1, 0x15, 0xFA, 0x20, 0xF1, 0x1B, 0xFA, 0x1E, 0xF1, 0x21, 0xFA, - .byte 0x1C, 0xF1, 0x26, 0xFA, 0x19, 0xF1, 0x2C, 0xFA, 0x17, 0xF1, 0x32, 0xFA, 0x15, 0xF1, 0x38, 0xFA, - .byte 0x12, 0xF1, 0x3E, 0xFA, 0x10, 0xF1, 0x44, 0xFA, 0x0E, 0xF1, 0x4A, 0xFA, 0x0C, 0xF1, 0x4F, 0xFA, - .byte 0x09, 0xF1, 0x55, 0xFA, 0x07, 0xF1, 0x5B, 0xFA, 0x05, 0xF1, 0x61, 0xFA, 0x03, 0xF1, 0x67, 0xFA, - .byte 0x01, 0xF1, 0x6D, 0xFA, 0xFE, 0xF0, 0x73, 0xFA, 0xFC, 0xF0, 0x79, 0xFA, 0xFA, 0xF0, 0x7F, 0xFA, - .byte 0xF8, 0xF0, 0x84, 0xFA, 0xF6, 0xF0, 0x8A, 0xFA, 0xF4, 0xF0, 0x90, 0xFA, 0xF2, 0xF0, 0x96, 0xFA, - .byte 0xEF, 0xF0, 0x9C, 0xFA, 0xED, 0xF0, 0xA2, 0xFA, 0xEB, 0xF0, 0xA8, 0xFA, 0xE9, 0xF0, 0xAE, 0xFA, - .byte 0xE7, 0xF0, 0xB4, 0xFA, 0xE5, 0xF0, 0xBA, 0xFA, 0xE3, 0xF0, 0xC0, 0xFA, 0xE1, 0xF0, 0xC6, 0xFA, - .byte 0xDF, 0xF0, 0xCC, 0xFA, 0xDD, 0xF0, 0xD1, 0xFA, 0xDB, 0xF0, 0xD7, 0xFA, 0xD9, 0xF0, 0xDD, 0xFA, - .byte 0xD7, 0xF0, 0xE3, 0xFA, 0xD5, 0xF0, 0xE9, 0xFA, 0xD3, 0xF0, 0xEF, 0xFA, 0xD1, 0xF0, 0xF5, 0xFA, - .byte 0xCF, 0xF0, 0xFB, 0xFA, 0xCD, 0xF0, 0x01, 0xFB, 0xCB, 0xF0, 0x07, 0xFB, 0xC9, 0xF0, 0x0D, 0xFB, - .byte 0xC7, 0xF0, 0x13, 0xFB, 0xC5, 0xF0, 0x19, 0xFB, 0xC3, 0xF0, 0x1F, 0xFB, 0xC1, 0xF0, 0x25, 0xFB, - .byte 0xBF, 0xF0, 0x2B, 0xFB, 0xBD, 0xF0, 0x31, 0xFB, 0xBB, 0xF0, 0x37, 0xFB, 0xBA, 0xF0, 0x3D, 0xFB, - .byte 0xB8, 0xF0, 0x43, 0xFB, 0xB6, 0xF0, 0x49, 0xFB, 0xB4, 0xF0, 0x4F, 0xFB, 0xB2, 0xF0, 0x55, 0xFB, - .byte 0xB0, 0xF0, 0x5B, 0xFB, 0xAF, 0xF0, 0x61, 0xFB, 0xAD, 0xF0, 0x67, 0xFB, 0xAB, 0xF0, 0x6D, 0xFB, - .byte 0xA9, 0xF0, 0x73, 0xFB, 0xA7, 0xF0, 0x79, 0xFB, 0xA6, 0xF0, 0x7F, 0xFB, 0xA4, 0xF0, 0x85, 0xFB, - .byte 0xA2, 0xF0, 0x8B, 0xFB, 0xA0, 0xF0, 0x91, 0xFB, 0x9F, 0xF0, 0x97, 0xFB, 0x9D, 0xF0, 0x9D, 0xFB, - .byte 0x9B, 0xF0, 0xA3, 0xFB, 0x99, 0xF0, 0xA9, 0xFB, 0x98, 0xF0, 0xAF, 0xFB, 0x96, 0xF0, 0xB5, 0xFB, - .byte 0x94, 0xF0, 0xBC, 0xFB, 0x93, 0xF0, 0xC2, 0xFB, 0x91, 0xF0, 0xC8, 0xFB, 0x8F, 0xF0, 0xCE, 0xFB, - .byte 0x8E, 0xF0, 0xD4, 0xFB, 0x8C, 0xF0, 0xDA, 0xFB, 0x8A, 0xF0, 0xE0, 0xFB, 0x89, 0xF0, 0xE6, 0xFB, - .byte 0x87, 0xF0, 0xEC, 0xFB, 0x86, 0xF0, 0xF2, 0xFB, 0x84, 0xF0, 0xF8, 0xFB, 0x83, 0xF0, 0xFE, 0xFB, - .byte 0x81, 0xF0, 0x04, 0xFC, 0x7F, 0xF0, 0x0A, 0xFC, 0x7E, 0xF0, 0x11, 0xFC, 0x7C, 0xF0, 0x17, 0xFC, - .byte 0x7B, 0xF0, 0x1D, 0xFC, 0x79, 0xF0, 0x23, 0xFC, 0x78, 0xF0, 0x29, 0xFC, 0x76, 0xF0, 0x2F, 0xFC, - .byte 0x75, 0xF0, 0x35, 0xFC, 0x73, 0xF0, 0x3B, 0xFC, 0x72, 0xF0, 0x41, 0xFC, 0x70, 0xF0, 0x47, 0xFC, - .byte 0x6F, 0xF0, 0x4E, 0xFC, 0x6D, 0xF0, 0x54, 0xFC, 0x6C, 0xF0, 0x5A, 0xFC, 0x6B, 0xF0, 0x60, 0xFC, - .byte 0x69, 0xF0, 0x66, 0xFC, 0x68, 0xF0, 0x6C, 0xFC, 0x66, 0xF0, 0x72, 0xFC, 0x65, 0xF0, 0x78, 0xFC, - .byte 0x64, 0xF0, 0x7F, 0xFC, 0x62, 0xF0, 0x85, 0xFC, 0x61, 0xF0, 0x8B, 0xFC, 0x5F, 0xF0, 0x91, 0xFC, - .byte 0x5E, 0xF0, 0x97, 0xFC, 0x5D, 0xF0, 0x9D, 0xFC, 0x5B, 0xF0, 0xA3, 0xFC, 0x5A, 0xF0, 0xAA, 0xFC, - .byte 0x59, 0xF0, 0xB0, 0xFC, 0x58, 0xF0, 0xB6, 0xFC, 0x56, 0xF0, 0xBC, 0xFC, 0x55, 0xF0, 0xC2, 0xFC, - .byte 0x54, 0xF0, 0xC8, 0xFC, 0x52, 0xF0, 0xCE, 0xFC, 0x51, 0xF0, 0xD5, 0xFC, 0x50, 0xF0, 0xDB, 0xFC, - .byte 0x4F, 0xF0, 0xE1, 0xFC, 0x4D, 0xF0, 0xE7, 0xFC, 0x4C, 0xF0, 0xED, 0xFC, 0x4B, 0xF0, 0xF3, 0xFC, - .byte 0x4A, 0xF0, 0xFA, 0xFC, 0x49, 0xF0, 0x00, 0xFD, 0x48, 0xF0, 0x06, 0xFD, 0x46, 0xF0, 0x0C, 0xFD, - .byte 0x45, 0xF0, 0x12, 0xFD, 0x44, 0xF0, 0x18, 0xFD, 0x43, 0xF0, 0x1F, 0xFD, 0x42, 0xF0, 0x25, 0xFD, - .byte 0x41, 0xF0, 0x2B, 0xFD, 0x40, 0xF0, 0x31, 0xFD, 0x3E, 0xF0, 0x37, 0xFD, 0x3D, 0xF0, 0x3E, 0xFD, - .byte 0x3C, 0xF0, 0x44, 0xFD, 0x3B, 0xF0, 0x4A, 0xFD, 0x3A, 0xF0, 0x50, 0xFD, 0x39, 0xF0, 0x56, 0xFD, - .byte 0x38, 0xF0, 0x5D, 0xFD, 0x37, 0xF0, 0x63, 0xFD, 0x36, 0xF0, 0x69, 0xFD, 0x35, 0xF0, 0x6F, 0xFD, - .byte 0x34, 0xF0, 0x75, 0xFD, 0x33, 0xF0, 0x7C, 0xFD, 0x32, 0xF0, 0x82, 0xFD, 0x31, 0xF0, 0x88, 0xFD, - .byte 0x30, 0xF0, 0x8E, 0xFD, 0x2F, 0xF0, 0x94, 0xFD, 0x2E, 0xF0, 0x9B, 0xFD, 0x2D, 0xF0, 0xA1, 0xFD, - .byte 0x2C, 0xF0, 0xA7, 0xFD, 0x2B, 0xF0, 0xAD, 0xFD, 0x2B, 0xF0, 0xB3, 0xFD, 0x2A, 0xF0, 0xBA, 0xFD, - .byte 0x29, 0xF0, 0xC0, 0xFD, 0x28, 0xF0, 0xC6, 0xFD, 0x27, 0xF0, 0xCC, 0xFD, 0x26, 0xF0, 0xD3, 0xFD, - .byte 0x25, 0xF0, 0xD9, 0xFD, 0x24, 0xF0, 0xDF, 0xFD, 0x24, 0xF0, 0xE5, 0xFD, 0x23, 0xF0, 0xEB, 0xFD, - .byte 0x22, 0xF0, 0xF2, 0xFD, 0x21, 0xF0, 0xF8, 0xFD, 0x20, 0xF0, 0xFE, 0xFD, 0x20, 0xF0, 0x04, 0xFE, - .byte 0x1F, 0xF0, 0x0B, 0xFE, 0x1E, 0xF0, 0x11, 0xFE, 0x1D, 0xF0, 0x17, 0xFE, 0x1D, 0xF0, 0x1D, 0xFE, - .byte 0x1C, 0xF0, 0x24, 0xFE, 0x1B, 0xF0, 0x2A, 0xFE, 0x1A, 0xF0, 0x30, 0xFE, 0x1A, 0xF0, 0x36, 0xFE, - .byte 0x19, 0xF0, 0x3D, 0xFE, 0x18, 0xF0, 0x43, 0xFE, 0x18, 0xF0, 0x49, 0xFE, 0x17, 0xF0, 0x4F, 0xFE, - .byte 0x16, 0xF0, 0x56, 0xFE, 0x16, 0xF0, 0x5C, 0xFE, 0x15, 0xF0, 0x62, 0xFE, 0x14, 0xF0, 0x68, 0xFE, - .byte 0x14, 0xF0, 0x6F, 0xFE, 0x13, 0xF0, 0x75, 0xFE, 0x13, 0xF0, 0x7B, 0xFE, 0x12, 0xF0, 0x81, 0xFE, - .byte 0x11, 0xF0, 0x88, 0xFE, 0x11, 0xF0, 0x8E, 0xFE, 0x10, 0xF0, 0x94, 0xFE, 0x10, 0xF0, 0x9A, 0xFE, - .byte 0x0F, 0xF0, 0xA1, 0xFE, 0x0F, 0xF0, 0xA7, 0xFE, 0x0E, 0xF0, 0xAD, 0xFE, 0x0E, 0xF0, 0xB3, 0xFE, - .byte 0x0D, 0xF0, 0xBA, 0xFE, 0x0D, 0xF0, 0xC0, 0xFE, 0x0C, 0xF0, 0xC6, 0xFE, 0x0C, 0xF0, 0xCC, 0xFE, - .byte 0x0B, 0xF0, 0xD3, 0xFE, 0x0B, 0xF0, 0xD9, 0xFE, 0x0A, 0xF0, 0xDF, 0xFE, 0x0A, 0xF0, 0xE5, 0xFE, - .byte 0x09, 0xF0, 0xEC, 0xFE, 0x09, 0xF0, 0xF2, 0xFE, 0x08, 0xF0, 0xF8, 0xFE, 0x08, 0xF0, 0xFF, 0xFE, - .byte 0x08, 0xF0, 0x05, 0xFF, 0x07, 0xF0, 0x0B, 0xFF, 0x07, 0xF0, 0x11, 0xFF, 0x07, 0xF0, 0x18, 0xFF, - .byte 0x06, 0xF0, 0x1E, 0xFF, 0x06, 0xF0, 0x24, 0xFF, 0x06, 0xF0, 0x2A, 0xFF, 0x05, 0xF0, 0x31, 0xFF, - .byte 0x05, 0xF0, 0x37, 0xFF, 0x05, 0xF0, 0x3D, 0xFF, 0x04, 0xF0, 0x44, 0xFF, 0x04, 0xF0, 0x4A, 0xFF, - .byte 0x04, 0xF0, 0x50, 0xFF, 0x04, 0xF0, 0x56, 0xFF, 0x03, 0xF0, 0x5D, 0xFF, 0x03, 0xF0, 0x63, 0xFF, - .byte 0x03, 0xF0, 0x69, 0xFF, 0x03, 0xF0, 0x70, 0xFF, 0x02, 0xF0, 0x76, 0xFF, 0x02, 0xF0, 0x7C, 0xFF, - .byte 0x02, 0xF0, 0x82, 0xFF, 0x02, 0xF0, 0x89, 0xFF, 0x02, 0xF0, 0x8F, 0xFF, 0x01, 0xF0, 0x95, 0xFF, - .byte 0x01, 0xF0, 0x9B, 0xFF, 0x01, 0xF0, 0xA2, 0xFF, 0x01, 0xF0, 0xA8, 0xFF, 0x01, 0xF0, 0xAE, 0xFF, - .byte 0x01, 0xF0, 0xB5, 0xFF, 0x01, 0xF0, 0xBB, 0xFF, 0x00, 0xF0, 0xC1, 0xFF, 0x00, 0xF0, 0xC7, 0xFF, - .byte 0x00, 0xF0, 0xCE, 0xFF, 0x00, 0xF0, 0xD4, 0xFF, 0x00, 0xF0, 0xDA, 0xFF, 0x00, 0xF0, 0xE1, 0xFF, - .byte 0x00, 0xF0, 0xE7, 0xFF, 0x00, 0xF0, 0xED, 0xFF, 0x00, 0xF0, 0xF3, 0xFF, 0x00, 0xF0, 0xFA, 0xFF, - .byte 0x00, 0xF0, 0x00, 0x00, 0x00, 0xF0, 0x06, 0x00, 0x00, 0xF0, 0x0D, 0x00, 0x00, 0xF0, 0x13, 0x00, - .byte 0x00, 0xF0, 0x19, 0x00, 0x00, 0xF0, 0x1F, 0x00, 0x00, 0xF0, 0x26, 0x00, 0x00, 0xF0, 0x2C, 0x00, - .byte 0x00, 0xF0, 0x32, 0x00, 0x00, 0xF0, 0x39, 0x00, 0x00, 0xF0, 0x3F, 0x00, 0x01, 0xF0, 0x45, 0x00, - .byte 0x01, 0xF0, 0x4B, 0x00, 0x01, 0xF0, 0x52, 0x00, 0x01, 0xF0, 0x58, 0x00, 0x01, 0xF0, 0x5E, 0x00, - .byte 0x01, 0xF0, 0x65, 0x00, 0x01, 0xF0, 0x6B, 0x00, 0x02, 0xF0, 0x71, 0x00, 0x02, 0xF0, 0x77, 0x00, - .byte 0x02, 0xF0, 0x7E, 0x00, 0x02, 0xF0, 0x84, 0x00, 0x02, 0xF0, 0x8A, 0x00, 0x03, 0xF0, 0x90, 0x00, - .byte 0x03, 0xF0, 0x97, 0x00, 0x03, 0xF0, 0x9D, 0x00, 0x03, 0xF0, 0xA3, 0x00, 0x04, 0xF0, 0xAA, 0x00, - .byte 0x04, 0xF0, 0xB0, 0x00, 0x04, 0xF0, 0xB6, 0x00, 0x04, 0xF0, 0xBC, 0x00, 0x05, 0xF0, 0xC3, 0x00, - .byte 0x05, 0xF0, 0xC9, 0x00, 0x05, 0xF0, 0xCF, 0x00, 0x06, 0xF0, 0xD6, 0x00, 0x06, 0xF0, 0xDC, 0x00, - .byte 0x06, 0xF0, 0xE2, 0x00, 0x07, 0xF0, 0xE8, 0x00, 0x07, 0xF0, 0xEF, 0x00, 0x07, 0xF0, 0xF5, 0x00, - .byte 0x08, 0xF0, 0xFB, 0x00, 0x08, 0xF0, 0x01, 0x01, 0x08, 0xF0, 0x08, 0x01, 0x09, 0xF0, 0x0E, 0x01, - .byte 0x09, 0xF0, 0x14, 0x01, 0x0A, 0xF0, 0x1B, 0x01, 0x0A, 0xF0, 0x21, 0x01, 0x0B, 0xF0, 0x27, 0x01, - .byte 0x0B, 0xF0, 0x2D, 0x01, 0x0C, 0xF0, 0x34, 0x01, 0x0C, 0xF0, 0x3A, 0x01, 0x0D, 0xF0, 0x40, 0x01, - .byte 0x0D, 0xF0, 0x46, 0x01, 0x0E, 0xF0, 0x4D, 0x01, 0x0E, 0xF0, 0x53, 0x01, 0x0F, 0xF0, 0x59, 0x01, - .byte 0x0F, 0xF0, 0x5F, 0x01, 0x10, 0xF0, 0x66, 0x01, 0x10, 0xF0, 0x6C, 0x01, 0x11, 0xF0, 0x72, 0x01, - .byte 0x11, 0xF0, 0x78, 0x01, 0x12, 0xF0, 0x7F, 0x01, 0x13, 0xF0, 0x85, 0x01, 0x13, 0xF0, 0x8B, 0x01, - .byte 0x14, 0xF0, 0x91, 0x01, 0x14, 0xF0, 0x98, 0x01, 0x15, 0xF0, 0x9E, 0x01, 0x16, 0xF0, 0xA4, 0x01, - .byte 0x16, 0xF0, 0xAA, 0x01, 0x17, 0xF0, 0xB1, 0x01, 0x18, 0xF0, 0xB7, 0x01, 0x18, 0xF0, 0xBD, 0x01, - .byte 0x19, 0xF0, 0xC3, 0x01, 0x1A, 0xF0, 0xCA, 0x01, 0x1A, 0xF0, 0xD0, 0x01, 0x1B, 0xF0, 0xD6, 0x01, - .byte 0x1C, 0xF0, 0xDC, 0x01, 0x1D, 0xF0, 0xE3, 0x01, 0x1D, 0xF0, 0xE9, 0x01, 0x1E, 0xF0, 0xEF, 0x01, - .byte 0x1F, 0xF0, 0xF5, 0x01, 0x20, 0xF0, 0xFC, 0x01, 0x20, 0xF0, 0x02, 0x02, 0x21, 0xF0, 0x08, 0x02, - .byte 0x22, 0xF0, 0x0E, 0x02, 0x23, 0xF0, 0x15, 0x02, 0x24, 0xF0, 0x1B, 0x02, 0x24, 0xF0, 0x21, 0x02, - .byte 0x25, 0xF0, 0x27, 0x02, 0x26, 0xF0, 0x2D, 0x02, 0x27, 0xF0, 0x34, 0x02, 0x28, 0xF0, 0x3A, 0x02, - .byte 0x29, 0xF0, 0x40, 0x02, 0x2A, 0xF0, 0x46, 0x02, 0x2B, 0xF0, 0x4D, 0x02, 0x2B, 0xF0, 0x53, 0x02, - .byte 0x2C, 0xF0, 0x59, 0x02, 0x2D, 0xF0, 0x5F, 0x02, 0x2E, 0xF0, 0x65, 0x02, 0x2F, 0xF0, 0x6C, 0x02, - .byte 0x30, 0xF0, 0x72, 0x02, 0x31, 0xF0, 0x78, 0x02, 0x32, 0xF0, 0x7E, 0x02, 0x33, 0xF0, 0x84, 0x02, - .byte 0x34, 0xF0, 0x8B, 0x02, 0x35, 0xF0, 0x91, 0x02, 0x36, 0xF0, 0x97, 0x02, 0x37, 0xF0, 0x9D, 0x02, - .byte 0x38, 0xF0, 0xA3, 0x02, 0x39, 0xF0, 0xAA, 0x02, 0x3A, 0xF0, 0xB0, 0x02, 0x3B, 0xF0, 0xB6, 0x02, - .byte 0x3C, 0xF0, 0xBC, 0x02, 0x3D, 0xF0, 0xC2, 0x02, 0x3E, 0xF0, 0xC9, 0x02, 0x40, 0xF0, 0xCF, 0x02, - .byte 0x41, 0xF0, 0xD5, 0x02, 0x42, 0xF0, 0xDB, 0x02, 0x43, 0xF0, 0xE1, 0x02, 0x44, 0xF0, 0xE8, 0x02, - .byte 0x45, 0xF0, 0xEE, 0x02, 0x46, 0xF0, 0xF4, 0x02, 0x48, 0xF0, 0xFA, 0x02, 0x49, 0xF0, 0x00, 0x03, - .byte 0x4A, 0xF0, 0x06, 0x03, 0x4B, 0xF0, 0x0D, 0x03, 0x4C, 0xF0, 0x13, 0x03, 0x4D, 0xF0, 0x19, 0x03, - .byte 0x4F, 0xF0, 0x1F, 0x03, 0x50, 0xF0, 0x25, 0x03, 0x51, 0xF0, 0x2B, 0x03, 0x52, 0xF0, 0x32, 0x03, - .byte 0x54, 0xF0, 0x38, 0x03, 0x55, 0xF0, 0x3E, 0x03, 0x56, 0xF0, 0x44, 0x03, 0x58, 0xF0, 0x4A, 0x03, - .byte 0x59, 0xF0, 0x50, 0x03, 0x5A, 0xF0, 0x56, 0x03, 0x5B, 0xF0, 0x5D, 0x03, 0x5D, 0xF0, 0x63, 0x03, - .byte 0x5E, 0xF0, 0x69, 0x03, 0x5F, 0xF0, 0x6F, 0x03, 0x61, 0xF0, 0x75, 0x03, 0x62, 0xF0, 0x7B, 0x03, - .byte 0x64, 0xF0, 0x81, 0x03, 0x65, 0xF0, 0x88, 0x03, 0x66, 0xF0, 0x8E, 0x03, 0x68, 0xF0, 0x94, 0x03, - .byte 0x69, 0xF0, 0x9A, 0x03, 0x6B, 0xF0, 0xA0, 0x03, 0x6C, 0xF0, 0xA6, 0x03, 0x6D, 0xF0, 0xAC, 0x03, - .byte 0x6F, 0xF0, 0xB2, 0x03, 0x70, 0xF0, 0xB9, 0x03, 0x72, 0xF0, 0xBF, 0x03, 0x73, 0xF0, 0xC5, 0x03, - .byte 0x75, 0xF0, 0xCB, 0x03, 0x76, 0xF0, 0xD1, 0x03, 0x78, 0xF0, 0xD7, 0x03, 0x79, 0xF0, 0xDD, 0x03, - .byte 0x7B, 0xF0, 0xE3, 0x03, 0x7C, 0xF0, 0xE9, 0x03, 0x7E, 0xF0, 0xEF, 0x03, 0x7F, 0xF0, 0xF6, 0x03, - .byte 0x81, 0xF0, 0xFC, 0x03, 0x83, 0xF0, 0x02, 0x04, 0x84, 0xF0, 0x08, 0x04, 0x86, 0xF0, 0x0E, 0x04, - .byte 0x87, 0xF0, 0x14, 0x04, 0x89, 0xF0, 0x1A, 0x04, 0x8A, 0xF0, 0x20, 0x04, 0x8C, 0xF0, 0x26, 0x04, - .byte 0x8E, 0xF0, 0x2C, 0x04, 0x8F, 0xF0, 0x32, 0x04, 0x91, 0xF0, 0x38, 0x04, 0x93, 0xF0, 0x3E, 0x04, - .byte 0x94, 0xF0, 0x44, 0x04, 0x96, 0xF0, 0x4B, 0x04, 0x98, 0xF0, 0x51, 0x04, 0x99, 0xF0, 0x57, 0x04, - .byte 0x9B, 0xF0, 0x5D, 0x04, 0x9D, 0xF0, 0x63, 0x04, 0x9F, 0xF0, 0x69, 0x04, 0xA0, 0xF0, 0x6F, 0x04, - .byte 0xA2, 0xF0, 0x75, 0x04, 0xA4, 0xF0, 0x7B, 0x04, 0xA6, 0xF0, 0x81, 0x04, 0xA7, 0xF0, 0x87, 0x04, - .byte 0xA9, 0xF0, 0x8D, 0x04, 0xAB, 0xF0, 0x93, 0x04, 0xAD, 0xF0, 0x99, 0x04, 0xAF, 0xF0, 0x9F, 0x04, - .byte 0xB0, 0xF0, 0xA5, 0x04, 0xB2, 0xF0, 0xAB, 0x04, 0xB4, 0xF0, 0xB1, 0x04, 0xB6, 0xF0, 0xB7, 0x04, - .byte 0xB8, 0xF0, 0xBD, 0x04, 0xBA, 0xF0, 0xC3, 0x04, 0xBB, 0xF0, 0xC9, 0x04, 0xBD, 0xF0, 0xCF, 0x04, - .byte 0xBF, 0xF0, 0xD5, 0x04, 0xC1, 0xF0, 0xDB, 0x04, 0xC3, 0xF0, 0xE1, 0x04, 0xC5, 0xF0, 0xE7, 0x04, - .byte 0xC7, 0xF0, 0xED, 0x04, 0xC9, 0xF0, 0xF3, 0x04, 0xCB, 0xF0, 0xF9, 0x04, 0xCD, 0xF0, 0xFF, 0x04, - .byte 0xCF, 0xF0, 0x05, 0x05, 0xD1, 0xF0, 0x0B, 0x05, 0xD3, 0xF0, 0x11, 0x05, 0xD5, 0xF0, 0x17, 0x05, - .byte 0xD7, 0xF0, 0x1D, 0x05, 0xD9, 0xF0, 0x23, 0x05, 0xDB, 0xF0, 0x29, 0x05, 0xDD, 0xF0, 0x2F, 0x05, - .byte 0xDF, 0xF0, 0x34, 0x05, 0xE1, 0xF0, 0x3A, 0x05, 0xE3, 0xF0, 0x40, 0x05, 0xE5, 0xF0, 0x46, 0x05, - .byte 0xE7, 0xF0, 0x4C, 0x05, 0xE9, 0xF0, 0x52, 0x05, 0xEB, 0xF0, 0x58, 0x05, 0xED, 0xF0, 0x5E, 0x05, - .byte 0xEF, 0xF0, 0x64, 0x05, 0xF2, 0xF0, 0x6A, 0x05, 0xF4, 0xF0, 0x70, 0x05, 0xF6, 0xF0, 0x76, 0x05, - .byte 0xF8, 0xF0, 0x7C, 0x05, 0xFA, 0xF0, 0x81, 0x05, 0xFC, 0xF0, 0x87, 0x05, 0xFE, 0xF0, 0x8D, 0x05, - .byte 0x01, 0xF1, 0x93, 0x05, 0x03, 0xF1, 0x99, 0x05, 0x05, 0xF1, 0x9F, 0x05, 0x07, 0xF1, 0xA5, 0x05, - .byte 0x09, 0xF1, 0xAB, 0x05, 0x0C, 0xF1, 0xB1, 0x05, 0x0E, 0xF1, 0xB6, 0x05, 0x10, 0xF1, 0xBC, 0x05, - .byte 0x12, 0xF1, 0xC2, 0x05, 0x15, 0xF1, 0xC8, 0x05, 0x17, 0xF1, 0xCE, 0x05, 0x19, 0xF1, 0xD4, 0x05, - .byte 0x1C, 0xF1, 0xDA, 0x05, 0x1E, 0xF1, 0xDF, 0x05, 0x20, 0xF1, 0xE5, 0x05, 0x23, 0xF1, 0xEB, 0x05, - .byte 0x25, 0xF1, 0xF1, 0x05, 0x27, 0xF1, 0xF7, 0x05, 0x2A, 0xF1, 0xFD, 0x05, 0x2C, 0xF1, 0x02, 0x06, - .byte 0x2E, 0xF1, 0x08, 0x06, 0x31, 0xF1, 0x0E, 0x06, 0x33, 0xF1, 0x14, 0x06, 0x35, 0xF1, 0x1A, 0x06, - .byte 0x38, 0xF1, 0x1F, 0x06, 0x3A, 0xF1, 0x25, 0x06, 0x3D, 0xF1, 0x2B, 0x06, 0x3F, 0xF1, 0x31, 0x06, - .byte 0x41, 0xF1, 0x37, 0x06, 0x44, 0xF1, 0x3C, 0x06, 0x46, 0xF1, 0x42, 0x06, 0x49, 0xF1, 0x48, 0x06, - .byte 0x4B, 0xF1, 0x4E, 0x06, 0x4E, 0xF1, 0x54, 0x06, 0x50, 0xF1, 0x59, 0x06, 0x53, 0xF1, 0x5F, 0x06, - .byte 0x55, 0xF1, 0x65, 0x06, 0x58, 0xF1, 0x6B, 0x06, 0x5A, 0xF1, 0x70, 0x06, 0x5D, 0xF1, 0x76, 0x06, - .byte 0x5F, 0xF1, 0x7C, 0x06, 0x62, 0xF1, 0x82, 0x06, 0x65, 0xF1, 0x87, 0x06, 0x67, 0xF1, 0x8D, 0x06, - .byte 0x6A, 0xF1, 0x93, 0x06, 0x6C, 0xF1, 0x99, 0x06, 0x6F, 0xF1, 0x9E, 0x06, 0x71, 0xF1, 0xA4, 0x06, - .byte 0x74, 0xF1, 0xAA, 0x06, 0x77, 0xF1, 0xAF, 0x06, 0x79, 0xF1, 0xB5, 0x06, 0x7C, 0xF1, 0xBB, 0x06, - .byte 0x7F, 0xF1, 0xC1, 0x06, 0x81, 0xF1, 0xC6, 0x06, 0x84, 0xF1, 0xCC, 0x06, 0x87, 0xF1, 0xD2, 0x06, - .byte 0x89, 0xF1, 0xD7, 0x06, 0x8C, 0xF1, 0xDD, 0x06, 0x8F, 0xF1, 0xE3, 0x06, 0x91, 0xF1, 0xE8, 0x06, - .byte 0x94, 0xF1, 0xEE, 0x06, 0x97, 0xF1, 0xF4, 0x06, 0x9A, 0xF1, 0xF9, 0x06, 0x9C, 0xF1, 0xFF, 0x06, - .byte 0x9F, 0xF1, 0x05, 0x07, 0xA2, 0xF1, 0x0A, 0x07, 0xA5, 0xF1, 0x10, 0x07, 0xA7, 0xF1, 0x15, 0x07, - .byte 0xAA, 0xF1, 0x1B, 0x07, 0xAD, 0xF1, 0x21, 0x07, 0xB0, 0xF1, 0x26, 0x07, 0xB3, 0xF1, 0x2C, 0x07, - .byte 0xB5, 0xF1, 0x32, 0x07, 0xB8, 0xF1, 0x37, 0x07, 0xBB, 0xF1, 0x3D, 0x07, 0xBE, 0xF1, 0x42, 0x07, - .byte 0xC1, 0xF1, 0x48, 0x07, 0xC4, 0xF1, 0x4E, 0x07, 0xC6, 0xF1, 0x53, 0x07, 0xC9, 0xF1, 0x59, 0x07, - .byte 0xCC, 0xF1, 0x5E, 0x07, 0xCF, 0xF1, 0x64, 0x07, 0xD2, 0xF1, 0x6A, 0x07, 0xD5, 0xF1, 0x6F, 0x07, - .byte 0xD8, 0xF1, 0x75, 0x07, 0xDB, 0xF1, 0x7A, 0x07, 0xDE, 0xF1, 0x80, 0x07, 0xE1, 0xF1, 0x85, 0x07, - .byte 0xE4, 0xF1, 0x8B, 0x07, 0xE7, 0xF1, 0x90, 0x07, 0xEA, 0xF1, 0x96, 0x07, 0xED, 0xF1, 0x9B, 0x07, - .byte 0xF0, 0xF1, 0xA1, 0x07, 0xF3, 0xF1, 0xA6, 0x07, 0xF6, 0xF1, 0xAC, 0x07, 0xF9, 0xF1, 0xB2, 0x07, - .byte 0xFC, 0xF1, 0xB7, 0x07, 0xFF, 0xF1, 0xBD, 0x07, 0x02, 0xF2, 0xC2, 0x07, 0x05, 0xF2, 0xC8, 0x07, - .byte 0x08, 0xF2, 0xCD, 0x07, 0x0B, 0xF2, 0xD2, 0x07, 0x0E, 0xF2, 0xD8, 0x07, 0x11, 0xF2, 0xDD, 0x07, - .byte 0x14, 0xF2, 0xE3, 0x07, 0x17, 0xF2, 0xE8, 0x07, 0x1A, 0xF2, 0xEE, 0x07, 0x1D, 0xF2, 0xF3, 0x07, - .byte 0x21, 0xF2, 0xF9, 0x07, 0x24, 0xF2, 0xFE, 0x07, 0x27, 0xF2, 0x04, 0x08, 0x2A, 0xF2, 0x09, 0x08, - .byte 0x2D, 0xF2, 0x0E, 0x08, 0x30, 0xF2, 0x14, 0x08, 0x34, 0xF2, 0x19, 0x08, 0x37, 0xF2, 0x1F, 0x08, - .byte 0x3A, 0xF2, 0x24, 0x08, 0x3D, 0xF2, 0x2A, 0x08, 0x40, 0xF2, 0x2F, 0x08, 0x44, 0xF2, 0x34, 0x08, - .byte 0x47, 0xF2, 0x3A, 0x08, 0x4A, 0xF2, 0x3F, 0x08, 0x4D, 0xF2, 0x45, 0x08, 0x50, 0xF2, 0x4A, 0x08, - .byte 0x54, 0xF2, 0x4F, 0x08, 0x57, 0xF2, 0x55, 0x08, 0x5A, 0xF2, 0x5A, 0x08, 0x5E, 0xF2, 0x5F, 0x08, - .byte 0x61, 0xF2, 0x65, 0x08, 0x64, 0xF2, 0x6A, 0x08, 0x67, 0xF2, 0x6F, 0x08, 0x6B, 0xF2, 0x75, 0x08, - .byte 0x6E, 0xF2, 0x7A, 0x08, 0x71, 0xF2, 0x7F, 0x08, 0x75, 0xF2, 0x85, 0x08, 0x78, 0xF2, 0x8A, 0x08, - .byte 0x7B, 0xF2, 0x8F, 0x08, 0x7F, 0xF2, 0x95, 0x08, 0x82, 0xF2, 0x9A, 0x08, 0x86, 0xF2, 0x9F, 0x08, - .byte 0x89, 0xF2, 0xA5, 0x08, 0x8C, 0xF2, 0xAA, 0x08, 0x90, 0xF2, 0xAF, 0x08, 0x93, 0xF2, 0xB4, 0x08, - .byte 0x97, 0xF2, 0xBA, 0x08, 0x9A, 0xF2, 0xBF, 0x08, 0x9E, 0xF2, 0xC4, 0x08, 0xA1, 0xF2, 0xC9, 0x08, - .byte 0xA4, 0xF2, 0xCF, 0x08, 0xA8, 0xF2, 0xD4, 0x08, 0xAB, 0xF2, 0xD9, 0x08, 0xAF, 0xF2, 0xDE, 0x08, - .byte 0xB2, 0xF2, 0xE4, 0x08, 0xB6, 0xF2, 0xE9, 0x08, 0xB9, 0xF2, 0xEE, 0x08, 0xBD, 0xF2, 0xF3, 0x08, - .byte 0xC0, 0xF2, 0xF8, 0x08, 0xC4, 0xF2, 0xFE, 0x08, 0xC7, 0xF2, 0x03, 0x09, 0xCB, 0xF2, 0x08, 0x09, - .byte 0xCE, 0xF2, 0x0D, 0x09, 0xD2, 0xF2, 0x12, 0x09, 0xD6, 0xF2, 0x18, 0x09, 0xD9, 0xF2, 0x1D, 0x09, - .byte 0xDD, 0xF2, 0x22, 0x09, 0xE0, 0xF2, 0x27, 0x09, 0xE4, 0xF2, 0x2C, 0x09, 0xE8, 0xF2, 0x31, 0x09, - .byte 0xEB, 0xF2, 0x37, 0x09, 0xEF, 0xF2, 0x3C, 0x09, 0xF2, 0xF2, 0x41, 0x09, 0xF6, 0xF2, 0x46, 0x09, - .byte 0xFA, 0xF2, 0x4B, 0x09, 0xFD, 0xF2, 0x50, 0x09, 0x01, 0xF3, 0x55, 0x09, 0x05, 0xF3, 0x5A, 0x09, - .byte 0x08, 0xF3, 0x5F, 0x09, 0x0C, 0xF3, 0x65, 0x09, 0x10, 0xF3, 0x6A, 0x09, 0x13, 0xF3, 0x6F, 0x09, - .byte 0x17, 0xF3, 0x74, 0x09, 0x1B, 0xF3, 0x79, 0x09, 0x1F, 0xF3, 0x7E, 0x09, 0x22, 0xF3, 0x83, 0x09, - .byte 0x26, 0xF3, 0x88, 0x09, 0x2A, 0xF3, 0x8D, 0x09, 0x2E, 0xF3, 0x92, 0x09, 0x31, 0xF3, 0x97, 0x09, - .byte 0x35, 0xF3, 0x9C, 0x09, 0x39, 0xF3, 0xA1, 0x09, 0x3D, 0xF3, 0xA6, 0x09, 0x40, 0xF3, 0xAB, 0x09, - .byte 0x44, 0xF3, 0xB0, 0x09, 0x48, 0xF3, 0xB5, 0x09, 0x4C, 0xF3, 0xBA, 0x09, 0x50, 0xF3, 0xBF, 0x09, - .byte 0x54, 0xF3, 0xC4, 0x09, 0x57, 0xF3, 0xC9, 0x09, 0x5B, 0xF3, 0xCE, 0x09, 0x5F, 0xF3, 0xD3, 0x09, - .byte 0x63, 0xF3, 0xD8, 0x09, 0x67, 0xF3, 0xDD, 0x09, 0x6B, 0xF3, 0xE2, 0x09, 0x6F, 0xF3, 0xE7, 0x09, - .byte 0x72, 0xF3, 0xEC, 0x09, 0x76, 0xF3, 0xF1, 0x09, 0x7A, 0xF3, 0xF6, 0x09, 0x7E, 0xF3, 0xFB, 0x09, - .byte 0x82, 0xF3, 0xFF, 0x09, 0x86, 0xF3, 0x04, 0x0A, 0x8A, 0xF3, 0x09, 0x0A, 0x8E, 0xF3, 0x0E, 0x0A, - .byte 0x92, 0xF3, 0x13, 0x0A, 0x96, 0xF3, 0x18, 0x0A, 0x9A, 0xF3, 0x1D, 0x0A, 0x9E, 0xF3, 0x22, 0x0A, - .byte 0xA2, 0xF3, 0x26, 0x0A, 0xA6, 0xF3, 0x2B, 0x0A, 0xAA, 0xF3, 0x30, 0x0A, 0xAE, 0xF3, 0x35, 0x0A, - .byte 0xB2, 0xF3, 0x3A, 0x0A, 0xB6, 0xF3, 0x3F, 0x0A, 0xBA, 0xF3, 0x44, 0x0A, 0xBE, 0xF3, 0x48, 0x0A, - .byte 0xC2, 0xF3, 0x4D, 0x0A, 0xC6, 0xF3, 0x52, 0x0A, 0xCA, 0xF3, 0x57, 0x0A, 0xCE, 0xF3, 0x5C, 0x0A, - .byte 0xD2, 0xF3, 0x60, 0x0A, 0xD6, 0xF3, 0x65, 0x0A, 0xDA, 0xF3, 0x6A, 0x0A, 0xDE, 0xF3, 0x6F, 0x0A, - .byte 0xE2, 0xF3, 0x73, 0x0A, 0xE7, 0xF3, 0x78, 0x0A, 0xEB, 0xF3, 0x7D, 0x0A, 0xEF, 0xF3, 0x82, 0x0A, - .byte 0xF3, 0xF3, 0x86, 0x0A, 0xF7, 0xF3, 0x8B, 0x0A, 0xFB, 0xF3, 0x90, 0x0A, 0xFF, 0xF3, 0x95, 0x0A, - .byte 0x04, 0xF4, 0x99, 0x0A, 0x08, 0xF4, 0x9E, 0x0A, 0x0C, 0xF4, 0xA3, 0x0A, 0x10, 0xF4, 0xA7, 0x0A, - .byte 0x14, 0xF4, 0xAC, 0x0A, 0x18, 0xF4, 0xB1, 0x0A, 0x1D, 0xF4, 0xB5, 0x0A, 0x21, 0xF4, 0xBA, 0x0A, - .byte 0x25, 0xF4, 0xBF, 0x0A, 0x29, 0xF4, 0xC3, 0x0A, 0x2E, 0xF4, 0xC8, 0x0A, 0x32, 0xF4, 0xCD, 0x0A, - .byte 0x36, 0xF4, 0xD1, 0x0A, 0x3A, 0xF4, 0xD6, 0x0A, 0x3F, 0xF4, 0xDB, 0x0A, 0x43, 0xF4, 0xDF, 0x0A, - .byte 0x47, 0xF4, 0xE4, 0x0A, 0x4B, 0xF4, 0xE8, 0x0A, 0x50, 0xF4, 0xED, 0x0A, 0x54, 0xF4, 0xF2, 0x0A, - .byte 0x58, 0xF4, 0xF6, 0x0A, 0x5D, 0xF4, 0xFB, 0x0A, 0x61, 0xF4, 0xFF, 0x0A, 0x65, 0xF4, 0x04, 0x0B, - .byte 0x69, 0xF4, 0x08, 0x0B, 0x6E, 0xF4, 0x0D, 0x0B, 0x72, 0xF4, 0x11, 0x0B, 0x77, 0xF4, 0x16, 0x0B, - .byte 0x7B, 0xF4, 0x1B, 0x0B, 0x7F, 0xF4, 0x1F, 0x0B, 0x84, 0xF4, 0x24, 0x0B, 0x88, 0xF4, 0x28, 0x0B, - .byte 0x8C, 0xF4, 0x2D, 0x0B, 0x91, 0xF4, 0x31, 0x0B, 0x95, 0xF4, 0x36, 0x0B, 0x9A, 0xF4, 0x3A, 0x0B, - .byte 0x9E, 0xF4, 0x3E, 0x0B, 0xA2, 0xF4, 0x43, 0x0B, 0xA7, 0xF4, 0x47, 0x0B, 0xAB, 0xF4, 0x4C, 0x0B, - .byte 0xB0, 0xF4, 0x50, 0x0B, 0xB4, 0xF4, 0x55, 0x0B, 0xB9, 0xF4, 0x59, 0x0B, 0xBD, 0xF4, 0x5E, 0x0B, - .byte 0xC2, 0xF4, 0x62, 0x0B, 0xC6, 0xF4, 0x66, 0x0B, 0xCA, 0xF4, 0x6B, 0x0B, 0xCF, 0xF4, 0x6F, 0x0B, - .byte 0xD3, 0xF4, 0x74, 0x0B, 0xD8, 0xF4, 0x78, 0x0B, 0xDC, 0xF4, 0x7C, 0x0B, 0xE1, 0xF4, 0x81, 0x0B, - .byte 0xE5, 0xF4, 0x85, 0x0B, 0xEA, 0xF4, 0x89, 0x0B, 0xEF, 0xF4, 0x8E, 0x0B, 0xF3, 0xF4, 0x92, 0x0B, - .byte 0xF8, 0xF4, 0x97, 0x0B, 0xFC, 0xF4, 0x9B, 0x0B, 0x01, 0xF5, 0x9F, 0x0B, 0x05, 0xF5, 0xA3, 0x0B, - .byte 0x0A, 0xF5, 0xA8, 0x0B, 0x0E, 0xF5, 0xAC, 0x0B, 0x13, 0xF5, 0xB0, 0x0B, 0x18, 0xF5, 0xB5, 0x0B, - .byte 0x1C, 0xF5, 0xB9, 0x0B, 0x21, 0xF5, 0xBD, 0x0B, 0x25, 0xF5, 0xC1, 0x0B, 0x2A, 0xF5, 0xC6, 0x0B, - .byte 0x2F, 0xF5, 0xCA, 0x0B, 0x33, 0xF5, 0xCE, 0x0B, 0x38, 0xF5, 0xD2, 0x0B, 0x3D, 0xF5, 0xD7, 0x0B, - .byte 0x41, 0xF5, 0xDB, 0x0B, 0x46, 0xF5, 0xDF, 0x0B, 0x4B, 0xF5, 0xE3, 0x0B, 0x4F, 0xF5, 0xE8, 0x0B, - .byte 0x54, 0xF5, 0xEC, 0x0B, 0x59, 0xF5, 0xF0, 0x0B, 0x5D, 0xF5, 0xF4, 0x0B, 0x62, 0xF5, 0xF8, 0x0B, - .byte 0x67, 0xF5, 0xFC, 0x0B, 0x6B, 0xF5, 0x01, 0x0C, 0x70, 0xF5, 0x05, 0x0C, 0x75, 0xF5, 0x09, 0x0C, - .byte 0x7A, 0xF5, 0x0D, 0x0C, 0x7E, 0xF5, 0x11, 0x0C, 0x83, 0xF5, 0x15, 0x0C, 0x88, 0xF5, 0x19, 0x0C, - .byte 0x8D, 0xF5, 0x1E, 0x0C, 0x91, 0xF5, 0x22, 0x0C, 0x96, 0xF5, 0x26, 0x0C, 0x9B, 0xF5, 0x2A, 0x0C, - .byte 0xA0, 0xF5, 0x2E, 0x0C, 0xA4, 0xF5, 0x32, 0x0C, 0xA9, 0xF5, 0x36, 0x0C, 0xAE, 0xF5, 0x3A, 0x0C, - .byte 0xB3, 0xF5, 0x3E, 0x0C, 0xB8, 0xF5, 0x42, 0x0C, 0xBC, 0xF5, 0x46, 0x0C, 0xC1, 0xF5, 0x4A, 0x0C, - .byte 0xC6, 0xF5, 0x4E, 0x0C, 0xCB, 0xF5, 0x52, 0x0C, 0xD0, 0xF5, 0x56, 0x0C, 0xD5, 0xF5, 0x5A, 0x0C, - .byte 0xDA, 0xF5, 0x5E, 0x0C, 0xDE, 0xF5, 0x62, 0x0C, 0xE3, 0xF5, 0x66, 0x0C, 0xE8, 0xF5, 0x6A, 0x0C, - .byte 0xED, 0xF5, 0x6E, 0x0C, 0xF2, 0xF5, 0x72, 0x0C, 0xF7, 0xF5, 0x76, 0x0C, 0xFC, 0xF5, 0x7A, 0x0C, - .byte 0x01, 0xF6, 0x7E, 0x0C, 0x05, 0xF6, 0x82, 0x0C, 0x0A, 0xF6, 0x86, 0x0C, 0x0F, 0xF6, 0x8A, 0x0C, - .byte 0x14, 0xF6, 0x8E, 0x0C, 0x19, 0xF6, 0x91, 0x0C, 0x1E, 0xF6, 0x95, 0x0C, 0x23, 0xF6, 0x99, 0x0C, - .byte 0x28, 0xF6, 0x9D, 0x0C, 0x2D, 0xF6, 0xA1, 0x0C, 0x32, 0xF6, 0xA5, 0x0C, 0x37, 0xF6, 0xA9, 0x0C, - .byte 0x3C, 0xF6, 0xAC, 0x0C, 0x41, 0xF6, 0xB0, 0x0C, 0x46, 0xF6, 0xB4, 0x0C, 0x4B, 0xF6, 0xB8, 0x0C, - .byte 0x50, 0xF6, 0xBC, 0x0C, 0x55, 0xF6, 0xC0, 0x0C, 0x5A, 0xF6, 0xC3, 0x0C, 0x5F, 0xF6, 0xC7, 0x0C, - .byte 0x64, 0xF6, 0xCB, 0x0C, 0x69, 0xF6, 0xCF, 0x0C, 0x6E, 0xF6, 0xD2, 0x0C, 0x73, 0xF6, 0xD6, 0x0C, - .byte 0x78, 0xF6, 0xDA, 0x0C, 0x7D, 0xF6, 0xDE, 0x0C, 0x82, 0xF6, 0xE1, 0x0C, 0x87, 0xF6, 0xE5, 0x0C, - .byte 0x8C, 0xF6, 0xE9, 0x0C, 0x91, 0xF6, 0xED, 0x0C, 0x96, 0xF6, 0xF0, 0x0C, 0x9B, 0xF6, 0xF4, 0x0C, - .byte 0xA1, 0xF6, 0xF8, 0x0C, 0xA6, 0xF6, 0xFB, 0x0C, 0xAB, 0xF6, 0xFF, 0x0C, 0xB0, 0xF6, 0x03, 0x0D, - .byte 0xB5, 0xF6, 0x06, 0x0D, 0xBA, 0xF6, 0x0A, 0x0D, 0xBF, 0xF6, 0x0E, 0x0D, 0xC4, 0xF6, 0x11, 0x0D, - .byte 0xC9, 0xF6, 0x15, 0x0D, 0xCF, 0xF6, 0x18, 0x0D, 0xD4, 0xF6, 0x1C, 0x0D, 0xD9, 0xF6, 0x20, 0x0D, - .byte 0xDE, 0xF6, 0x23, 0x0D, 0xE3, 0xF6, 0x27, 0x0D, 0xE8, 0xF6, 0x2A, 0x0D, 0xEE, 0xF6, 0x2E, 0x0D, - .byte 0xF3, 0xF6, 0x32, 0x0D, 0xF8, 0xF6, 0x35, 0x0D, 0xFD, 0xF6, 0x39, 0x0D, 0x02, 0xF7, 0x3C, 0x0D, - .byte 0x08, 0xF7, 0x40, 0x0D, 0x0D, 0xF7, 0x43, 0x0D, 0x12, 0xF7, 0x47, 0x0D, 0x17, 0xF7, 0x4A, 0x0D, - .byte 0x1C, 0xF7, 0x4E, 0x0D, 0x22, 0xF7, 0x51, 0x0D, 0x27, 0xF7, 0x55, 0x0D, 0x2C, 0xF7, 0x58, 0x0D, - .byte 0x31, 0xF7, 0x5C, 0x0D, 0x37, 0xF7, 0x5F, 0x0D, 0x3C, 0xF7, 0x62, 0x0D, 0x41, 0xF7, 0x66, 0x0D, - .byte 0x46, 0xF7, 0x69, 0x0D, 0x4C, 0xF7, 0x6D, 0x0D, 0x51, 0xF7, 0x70, 0x0D, 0x56, 0xF7, 0x74, 0x0D, - .byte 0x5B, 0xF7, 0x77, 0x0D, 0x61, 0xF7, 0x7A, 0x0D, 0x66, 0xF7, 0x7E, 0x0D, 0x6B, 0xF7, 0x81, 0x0D, - .byte 0x71, 0xF7, 0x85, 0x0D, 0x76, 0xF7, 0x88, 0x0D, 0x7B, 0xF7, 0x8B, 0x0D, 0x81, 0xF7, 0x8F, 0x0D, - .byte 0x86, 0xF7, 0x92, 0x0D, 0x8B, 0xF7, 0x95, 0x0D, 0x91, 0xF7, 0x99, 0x0D, 0x96, 0xF7, 0x9C, 0x0D, - .byte 0x9B, 0xF7, 0x9F, 0x0D, 0xA1, 0xF7, 0xA2, 0x0D, 0xA6, 0xF7, 0xA6, 0x0D, 0xAB, 0xF7, 0xA9, 0x0D, - .byte 0xB1, 0xF7, 0xAC, 0x0D, 0xB6, 0xF7, 0xB0, 0x0D, 0xBB, 0xF7, 0xB3, 0x0D, 0xC1, 0xF7, 0xB6, 0x0D, - .byte 0xC6, 0xF7, 0xB9, 0x0D, 0xCC, 0xF7, 0xBC, 0x0D, 0xD1, 0xF7, 0xC0, 0x0D, 0xD6, 0xF7, 0xC3, 0x0D, - .byte 0xDC, 0xF7, 0xC6, 0x0D, 0xE1, 0xF7, 0xC9, 0x0D, 0xE7, 0xF7, 0xCC, 0x0D, 0xEC, 0xF7, 0xD0, 0x0D, - .byte 0xF2, 0xF7, 0xD3, 0x0D, 0xF7, 0xF7, 0xD6, 0x0D, 0xFC, 0xF7, 0xD9, 0x0D, 0x02, 0xF8, 0xDC, 0x0D, - .byte 0x07, 0xF8, 0xDF, 0x0D, 0x0D, 0xF8, 0xE3, 0x0D, 0x12, 0xF8, 0xE6, 0x0D, 0x18, 0xF8, 0xE9, 0x0D, - .byte 0x1D, 0xF8, 0xEC, 0x0D, 0x23, 0xF8, 0xEF, 0x0D, 0x28, 0xF8, 0xF2, 0x0D, 0x2E, 0xF8, 0xF5, 0x0D, - .byte 0x33, 0xF8, 0xF8, 0x0D, 0x38, 0xF8, 0xFB, 0x0D, 0x3E, 0xF8, 0xFE, 0x0D, 0x43, 0xF8, 0x01, 0x0E, - .byte 0x49, 0xF8, 0x04, 0x0E, 0x4E, 0xF8, 0x07, 0x0E, 0x54, 0xF8, 0x0A, 0x0E, 0x5A, 0xF8, 0x0D, 0x0E, - .byte 0x5F, 0xF8, 0x10, 0x0E, 0x65, 0xF8, 0x13, 0x0E, 0x6A, 0xF8, 0x16, 0x0E, 0x70, 0xF8, 0x19, 0x0E, - .byte 0x75, 0xF8, 0x1C, 0x0E, 0x7B, 0xF8, 0x1F, 0x0E, 0x80, 0xF8, 0x22, 0x0E, 0x86, 0xF8, 0x25, 0x0E, - .byte 0x8B, 0xF8, 0x28, 0x0E, 0x91, 0xF8, 0x2B, 0x0E, 0x96, 0xF8, 0x2E, 0x0E, 0x9C, 0xF8, 0x31, 0x0E, - .byte 0xA2, 0xF8, 0x34, 0x0E, 0xA7, 0xF8, 0x37, 0x0E, 0xAD, 0xF8, 0x3A, 0x0E, 0xB2, 0xF8, 0x3C, 0x0E, - .byte 0xB8, 0xF8, 0x3F, 0x0E, 0xBE, 0xF8, 0x42, 0x0E, 0xC3, 0xF8, 0x45, 0x0E, 0xC9, 0xF8, 0x48, 0x0E, - .byte 0xCE, 0xF8, 0x4B, 0x0E, 0xD4, 0xF8, 0x4D, 0x0E, 0xDA, 0xF8, 0x50, 0x0E, 0xDF, 0xF8, 0x53, 0x0E, - .byte 0xE5, 0xF8, 0x56, 0x0E, 0xEB, 0xF8, 0x59, 0x0E, 0xF0, 0xF8, 0x5B, 0x0E, 0xF6, 0xF8, 0x5E, 0x0E, - .byte 0xFB, 0xF8, 0x61, 0x0E, 0x01, 0xF9, 0x64, 0x0E, 0x07, 0xF9, 0x66, 0x0E, 0x0C, 0xF9, 0x69, 0x0E, - .byte 0x12, 0xF9, 0x6C, 0x0E, 0x18, 0xF9, 0x6F, 0x0E, 0x1D, 0xF9, 0x71, 0x0E, 0x23, 0xF9, 0x74, 0x0E, - .byte 0x29, 0xF9, 0x77, 0x0E, 0x2E, 0xF9, 0x79, 0x0E, 0x34, 0xF9, 0x7C, 0x0E, 0x3A, 0xF9, 0x7F, 0x0E, - .byte 0x3F, 0xF9, 0x81, 0x0E, 0x45, 0xF9, 0x84, 0x0E, 0x4B, 0xF9, 0x87, 0x0E, 0x51, 0xF9, 0x89, 0x0E, - .byte 0x56, 0xF9, 0x8C, 0x0E, 0x5C, 0xF9, 0x8F, 0x0E, 0x62, 0xF9, 0x91, 0x0E, 0x67, 0xF9, 0x94, 0x0E, - .byte 0x6D, 0xF9, 0x96, 0x0E, 0x73, 0xF9, 0x99, 0x0E, 0x79, 0xF9, 0x9B, 0x0E, 0x7E, 0xF9, 0x9E, 0x0E, - .byte 0x84, 0xF9, 0xA1, 0x0E, 0x8A, 0xF9, 0xA3, 0x0E, 0x90, 0xF9, 0xA6, 0x0E, 0x95, 0xF9, 0xA8, 0x0E, - .byte 0x9B, 0xF9, 0xAB, 0x0E, 0xA1, 0xF9, 0xAD, 0x0E, 0xA7, 0xF9, 0xB0, 0x0E, 0xAC, 0xF9, 0xB2, 0x0E, - .byte 0xB2, 0xF9, 0xB5, 0x0E, 0xB8, 0xF9, 0xB7, 0x0E, 0xBE, 0xF9, 0xBA, 0x0E, 0xC4, 0xF9, 0xBC, 0x0E, - .byte 0xC9, 0xF9, 0xBF, 0x0E, 0xCF, 0xF9, 0xC1, 0x0E, 0xD5, 0xF9, 0xC3, 0x0E, 0xDB, 0xF9, 0xC6, 0x0E, - .byte 0xE1, 0xF9, 0xC8, 0x0E, 0xE6, 0xF9, 0xCB, 0x0E, 0xEC, 0xF9, 0xCD, 0x0E, 0xF2, 0xF9, 0xCF, 0x0E, - .byte 0xF8, 0xF9, 0xD2, 0x0E, 0xFE, 0xF9, 0xD4, 0x0E, 0x03, 0xFA, 0xD6, 0x0E, 0x09, 0xFA, 0xD9, 0x0E, - .byte 0x0F, 0xFA, 0xDB, 0x0E, 0x15, 0xFA, 0xDD, 0x0E, 0x1B, 0xFA, 0xE0, 0x0E, 0x21, 0xFA, 0xE2, 0x0E, - .byte 0x26, 0xFA, 0xE4, 0x0E, 0x2C, 0xFA, 0xE7, 0x0E, 0x32, 0xFA, 0xE9, 0x0E, 0x38, 0xFA, 0xEB, 0x0E, - .byte 0x3E, 0xFA, 0xEE, 0x0E, 0x44, 0xFA, 0xF0, 0x0E, 0x4A, 0xFA, 0xF2, 0x0E, 0x4F, 0xFA, 0xF4, 0x0E, - .byte 0x55, 0xFA, 0xF7, 0x0E, 0x5B, 0xFA, 0xF9, 0x0E, 0x61, 0xFA, 0xFB, 0x0E, 0x67, 0xFA, 0xFD, 0x0E, - .byte 0x6D, 0xFA, 0xFF, 0x0E, 0x73, 0xFA, 0x02, 0x0F, 0x79, 0xFA, 0x04, 0x0F, 0x7F, 0xFA, 0x06, 0x0F, - .byte 0x84, 0xFA, 0x08, 0x0F, 0x8A, 0xFA, 0x0A, 0x0F, 0x90, 0xFA, 0x0C, 0x0F, 0x96, 0xFA, 0x0E, 0x0F, - .byte 0x9C, 0xFA, 0x11, 0x0F, 0xA2, 0xFA, 0x13, 0x0F, 0xA8, 0xFA, 0x15, 0x0F, 0xAE, 0xFA, 0x17, 0x0F, - .byte 0xB4, 0xFA, 0x19, 0x0F, 0xBA, 0xFA, 0x1B, 0x0F, 0xC0, 0xFA, 0x1D, 0x0F, 0xC6, 0xFA, 0x1F, 0x0F, - .byte 0xCC, 0xFA, 0x21, 0x0F, 0xD1, 0xFA, 0x23, 0x0F, 0xD7, 0xFA, 0x25, 0x0F, 0xDD, 0xFA, 0x27, 0x0F, - .byte 0xE3, 0xFA, 0x29, 0x0F, 0xE9, 0xFA, 0x2B, 0x0F, 0xEF, 0xFA, 0x2D, 0x0F, 0xF5, 0xFA, 0x2F, 0x0F, - .byte 0xFB, 0xFA, 0x31, 0x0F, 0x01, 0xFB, 0x33, 0x0F, 0x07, 0xFB, 0x35, 0x0F, 0x0D, 0xFB, 0x37, 0x0F, - .byte 0x13, 0xFB, 0x39, 0x0F, 0x19, 0xFB, 0x3B, 0x0F, 0x1F, 0xFB, 0x3D, 0x0F, 0x25, 0xFB, 0x3F, 0x0F, - .byte 0x2B, 0xFB, 0x41, 0x0F, 0x31, 0xFB, 0x43, 0x0F, 0x37, 0xFB, 0x45, 0x0F, 0x3D, 0xFB, 0x46, 0x0F, - .byte 0x43, 0xFB, 0x48, 0x0F, 0x49, 0xFB, 0x4A, 0x0F, 0x4F, 0xFB, 0x4C, 0x0F, 0x55, 0xFB, 0x4E, 0x0F, - .byte 0x5B, 0xFB, 0x50, 0x0F, 0x61, 0xFB, 0x51, 0x0F, 0x67, 0xFB, 0x53, 0x0F, 0x6D, 0xFB, 0x55, 0x0F, - .byte 0x73, 0xFB, 0x57, 0x0F, 0x79, 0xFB, 0x59, 0x0F, 0x7F, 0xFB, 0x5A, 0x0F, 0x85, 0xFB, 0x5C, 0x0F, - .byte 0x8B, 0xFB, 0x5E, 0x0F, 0x91, 0xFB, 0x60, 0x0F, 0x97, 0xFB, 0x61, 0x0F, 0x9D, 0xFB, 0x63, 0x0F, - .byte 0xA3, 0xFB, 0x65, 0x0F, 0xA9, 0xFB, 0x67, 0x0F, 0xAF, 0xFB, 0x68, 0x0F, 0xB5, 0xFB, 0x6A, 0x0F, - .byte 0xBC, 0xFB, 0x6C, 0x0F, 0xC2, 0xFB, 0x6D, 0x0F, 0xC8, 0xFB, 0x6F, 0x0F, 0xCE, 0xFB, 0x71, 0x0F, - .byte 0xD4, 0xFB, 0x72, 0x0F, 0xDA, 0xFB, 0x74, 0x0F, 0xE0, 0xFB, 0x76, 0x0F, 0xE6, 0xFB, 0x77, 0x0F, - .byte 0xEC, 0xFB, 0x79, 0x0F, 0xF2, 0xFB, 0x7A, 0x0F, 0xF8, 0xFB, 0x7C, 0x0F, 0xFE, 0xFB, 0x7D, 0x0F, - .byte 0x04, 0xFC, 0x7F, 0x0F, 0x0A, 0xFC, 0x81, 0x0F, 0x11, 0xFC, 0x82, 0x0F, 0x17, 0xFC, 0x84, 0x0F, - .byte 0x1D, 0xFC, 0x85, 0x0F, 0x23, 0xFC, 0x87, 0x0F, 0x29, 0xFC, 0x88, 0x0F, 0x2F, 0xFC, 0x8A, 0x0F, - .byte 0x35, 0xFC, 0x8B, 0x0F, 0x3B, 0xFC, 0x8D, 0x0F, 0x41, 0xFC, 0x8E, 0x0F, 0x47, 0xFC, 0x90, 0x0F, - .byte 0x4E, 0xFC, 0x91, 0x0F, 0x54, 0xFC, 0x93, 0x0F, 0x5A, 0xFC, 0x94, 0x0F, 0x60, 0xFC, 0x95, 0x0F, - .byte 0x66, 0xFC, 0x97, 0x0F, 0x6C, 0xFC, 0x98, 0x0F, 0x72, 0xFC, 0x9A, 0x0F, 0x78, 0xFC, 0x9B, 0x0F, - .byte 0x7F, 0xFC, 0x9C, 0x0F, 0x85, 0xFC, 0x9E, 0x0F, 0x8B, 0xFC, 0x9F, 0x0F, 0x91, 0xFC, 0xA1, 0x0F, - .byte 0x97, 0xFC, 0xA2, 0x0F, 0x9D, 0xFC, 0xA3, 0x0F, 0xA3, 0xFC, 0xA5, 0x0F, 0xAA, 0xFC, 0xA6, 0x0F, - .byte 0xB0, 0xFC, 0xA7, 0x0F, 0xB6, 0xFC, 0xA8, 0x0F, 0xBC, 0xFC, 0xAA, 0x0F, 0xC2, 0xFC, 0xAB, 0x0F, - .byte 0xC8, 0xFC, 0xAC, 0x0F, 0xCE, 0xFC, 0xAE, 0x0F, 0xD5, 0xFC, 0xAF, 0x0F, 0xDB, 0xFC, 0xB0, 0x0F, - .byte 0xE1, 0xFC, 0xB1, 0x0F, 0xE7, 0xFC, 0xB3, 0x0F, 0xED, 0xFC, 0xB4, 0x0F, 0xF3, 0xFC, 0xB5, 0x0F, - .byte 0xFA, 0xFC, 0xB6, 0x0F, 0x00, 0xFD, 0xB7, 0x0F, 0x06, 0xFD, 0xB8, 0x0F, 0x0C, 0xFD, 0xBA, 0x0F, - .byte 0x12, 0xFD, 0xBB, 0x0F, 0x18, 0xFD, 0xBC, 0x0F, 0x1F, 0xFD, 0xBD, 0x0F, 0x25, 0xFD, 0xBE, 0x0F, - .byte 0x2B, 0xFD, 0xBF, 0x0F, 0x31, 0xFD, 0xC0, 0x0F, 0x37, 0xFD, 0xC2, 0x0F, 0x3E, 0xFD, 0xC3, 0x0F, - .byte 0x44, 0xFD, 0xC4, 0x0F, 0x4A, 0xFD, 0xC5, 0x0F, 0x50, 0xFD, 0xC6, 0x0F, 0x56, 0xFD, 0xC7, 0x0F, - .byte 0x5D, 0xFD, 0xC8, 0x0F, 0x63, 0xFD, 0xC9, 0x0F, 0x69, 0xFD, 0xCA, 0x0F, 0x6F, 0xFD, 0xCB, 0x0F, - .byte 0x75, 0xFD, 0xCC, 0x0F, 0x7C, 0xFD, 0xCD, 0x0F, 0x82, 0xFD, 0xCE, 0x0F, 0x88, 0xFD, 0xCF, 0x0F, - .byte 0x8E, 0xFD, 0xD0, 0x0F, 0x94, 0xFD, 0xD1, 0x0F, 0x9B, 0xFD, 0xD2, 0x0F, 0xA1, 0xFD, 0xD3, 0x0F, - .byte 0xA7, 0xFD, 0xD4, 0x0F, 0xAD, 0xFD, 0xD5, 0x0F, 0xB3, 0xFD, 0xD5, 0x0F, 0xBA, 0xFD, 0xD6, 0x0F, - .byte 0xC0, 0xFD, 0xD7, 0x0F, 0xC6, 0xFD, 0xD8, 0x0F, 0xCC, 0xFD, 0xD9, 0x0F, 0xD3, 0xFD, 0xDA, 0x0F, - .byte 0xD9, 0xFD, 0xDB, 0x0F, 0xDF, 0xFD, 0xDC, 0x0F, 0xE5, 0xFD, 0xDC, 0x0F, 0xEB, 0xFD, 0xDD, 0x0F, - .byte 0xF2, 0xFD, 0xDE, 0x0F, 0xF8, 0xFD, 0xDF, 0x0F, 0xFE, 0xFD, 0xE0, 0x0F, 0x04, 0xFE, 0xE0, 0x0F, - .byte 0x0B, 0xFE, 0xE1, 0x0F, 0x11, 0xFE, 0xE2, 0x0F, 0x17, 0xFE, 0xE3, 0x0F, 0x1D, 0xFE, 0xE3, 0x0F, - .byte 0x24, 0xFE, 0xE4, 0x0F, 0x2A, 0xFE, 0xE5, 0x0F, 0x30, 0xFE, 0xE6, 0x0F, 0x36, 0xFE, 0xE6, 0x0F, - .byte 0x3D, 0xFE, 0xE7, 0x0F, 0x43, 0xFE, 0xE8, 0x0F, 0x49, 0xFE, 0xE8, 0x0F, 0x4F, 0xFE, 0xE9, 0x0F, - .byte 0x56, 0xFE, 0xEA, 0x0F, 0x5C, 0xFE, 0xEA, 0x0F, 0x62, 0xFE, 0xEB, 0x0F, 0x68, 0xFE, 0xEC, 0x0F, - .byte 0x6F, 0xFE, 0xEC, 0x0F, 0x75, 0xFE, 0xED, 0x0F, 0x7B, 0xFE, 0xED, 0x0F, 0x81, 0xFE, 0xEE, 0x0F, - .byte 0x88, 0xFE, 0xEF, 0x0F, 0x8E, 0xFE, 0xEF, 0x0F, 0x94, 0xFE, 0xF0, 0x0F, 0x9A, 0xFE, 0xF0, 0x0F, - .byte 0xA1, 0xFE, 0xF1, 0x0F, 0xA7, 0xFE, 0xF1, 0x0F, 0xAD, 0xFE, 0xF2, 0x0F, 0xB3, 0xFE, 0xF2, 0x0F, - .byte 0xBA, 0xFE, 0xF3, 0x0F, 0xC0, 0xFE, 0xF3, 0x0F, 0xC6, 0xFE, 0xF4, 0x0F, 0xCC, 0xFE, 0xF4, 0x0F, - .byte 0xD3, 0xFE, 0xF5, 0x0F, 0xD9, 0xFE, 0xF5, 0x0F, 0xDF, 0xFE, 0xF6, 0x0F, 0xE5, 0xFE, 0xF6, 0x0F, - .byte 0xEC, 0xFE, 0xF7, 0x0F, 0xF2, 0xFE, 0xF7, 0x0F, 0xF8, 0xFE, 0xF8, 0x0F, 0xFF, 0xFE, 0xF8, 0x0F, - .byte 0x05, 0xFF, 0xF8, 0x0F, 0x0B, 0xFF, 0xF9, 0x0F, 0x11, 0xFF, 0xF9, 0x0F, 0x18, 0xFF, 0xF9, 0x0F, - .byte 0x1E, 0xFF, 0xFA, 0x0F, 0x24, 0xFF, 0xFA, 0x0F, 0x2A, 0xFF, 0xFA, 0x0F, 0x31, 0xFF, 0xFB, 0x0F, - .byte 0x37, 0xFF, 0xFB, 0x0F, 0x3D, 0xFF, 0xFB, 0x0F, 0x44, 0xFF, 0xFC, 0x0F, 0x4A, 0xFF, 0xFC, 0x0F, - .byte 0x50, 0xFF, 0xFC, 0x0F, 0x56, 0xFF, 0xFC, 0x0F, 0x5D, 0xFF, 0xFD, 0x0F, 0x63, 0xFF, 0xFD, 0x0F, - .byte 0x69, 0xFF, 0xFD, 0x0F, 0x70, 0xFF, 0xFD, 0x0F, 0x76, 0xFF, 0xFE, 0x0F, 0x7C, 0xFF, 0xFE, 0x0F, - .byte 0x82, 0xFF, 0xFE, 0x0F, 0x89, 0xFF, 0xFE, 0x0F, 0x8F, 0xFF, 0xFE, 0x0F, 0x95, 0xFF, 0xFF, 0x0F, - .byte 0x9B, 0xFF, 0xFF, 0x0F, 0xA2, 0xFF, 0xFF, 0x0F, 0xA8, 0xFF, 0xFF, 0x0F, 0xAE, 0xFF, 0xFF, 0x0F, - .byte 0xB5, 0xFF, 0xFF, 0x0F, 0xBB, 0xFF, 0xFF, 0x0F, 0xC1, 0xFF, 0x00, 0x10, 0xC7, 0xFF, 0x00, 0x10, - .byte 0xCE, 0xFF, 0x00, 0x10, 0xD4, 0xFF, 0x00, 0x10, 0xDA, 0xFF, 0x00, 0x10, 0xE1, 0xFF, 0x00, 0x10, - .byte 0xE7, 0xFF, 0x00, 0x10, 0xED, 0xFF, 0x00, 0x10, 0xF3, 0xFF, 0x00, 0x10, 0xFA, 0xFF, 0x00, 0x10 - - .section .data - - .global UNK_021064B8 -UNK_021064B8: ; 0x021064B8 - .word FUN_020AE8B4 - - .global UNK_021064BC -UNK_021064BC: ; 0x021064BC - .word FUN_020AE8AC - - .global UNK_021064C0 -UNK_021064C0: ; 0x021064C0 - .word FUN_020AE8C4 - - .global UNK_021064C4 -UNK_021064C4: ; 0x021064C4 - .word FUN_020AE8BC - - .global UNK_021064C8 -UNK_021064C8: ; 0x021064C8 - .word UNK_021064E4 - .word UNK_0210652C - - .global UNK_021064D0 -UNK_021064D0: ; 0x021064D0 - .word UNK_02106544 - .word UNK_0210652C - .word UNK_021064E4 - .word UNK_02106514 - .word UNK_021064FC - - .global UNK_021064E4 -UNK_021064E4: ; 0x021064E4 - .byte 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00 - - .global UNK_021064FC -UNK_021064FC: ; 0x021064FC - .byte 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00 - .byte 0x01, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x02, 0x00 - - .global UNK_02106514 -UNK_02106514: ; 0x02106514 - .byte 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00 - .byte 0x02, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x03, 0x00 - - .global UNK_0210652C -UNK_0210652C: ; 0x0210652C - .byte 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x03, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x04, 0x00 - - .global UNK_02106544 -UNK_02106544: ; 0x02106544 - .byte 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x04, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x06, 0x00 - - .global UNK_0210655C -UNK_0210655C: ; 0x0210655C - .word FUN_020B1088 - .word FUN_020B1098 - .word 0 - .word 0 - .word 0 - - .global UNK_02106570 -UNK_02106570: ; 0x02106570 - .short -2 - - .balign 4, 0 - .global UNK_02106574 -UNK_02106574: ; 0x02106574 - .word -1 - - .global UNK_02106578 -UNK_02106578: ; 0x02106578 - .byte 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - - .global UNK_02106590 -UNK_02106590: ; 0x02106590 - .byte 0x00, 0xF0, 0xFF, 0xFF - - .global UNK_02106594 -UNK_02106594: ; 0x02106594 - .byte 0x05, 0x00, 0x00, 0x00 - - .global UNK_02106598 -UNK_02106598: ; 0x02106598 - .word FUN_020BE5A0 - - .global UNK_0210659C -UNK_0210659C: ; 0x0210659C - .word FUN_020BDA70 - - .global UNK_021065A0 -UNK_021065A0: ; 0x021065A0 - .word FUN_020BDF38 - - .global UNK_021065A4 -UNK_021065A4: ; 0x021065A4 - .word FUN_020BE334 - - .global UNK_021065A8 -UNK_021065A8: ; 0x021065A8 - .word FUN_020BDB40 - - .global UNK_021065AC -UNK_021065AC: ; 0x021065AC - .word FUN_020B8640 - - .global UNK_021065B0 -UNK_021065B0: ; 0x021065B0 - .word FUN_020B86B0 - - .global UNK_021065B4 -UNK_021065B4: ; 0x021065B4 - .word FUN_020B8A08 - - .global UNK_021065B8 -UNK_021065B8: ; 0x021065B8 - .byte 0x4D, 0x00, 0x41, 0x4D - - .global UNK_021065BC -UNK_021065BC: ; 0x021065BC - .word FUN_020BDC0C - .byte 0x4D, 0x00, 0x50, 0x54 - .word FUN_020BE4F0 - .byte 0x4D, 0x00, 0x41, 0x54 - .word FUN_020BDF84 - .byte 0x56, 0x00, 0x41, 0x56 - .word FUN_020BE5E0 - .byte 0x4A, 0x00, 0x41, 0x43 - .word FUN_020BDAB4 - .byte 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, 0x00, 0x00, 0x00, 0x00 - - .global UNK_02106608 -UNK_02106608: ; 0x02106608 - .word FUN_020BE668 - .word FUN_020BEE3C - .word FUN_020BF2FC - - .global UNK_02106614 -UNK_02106614: ; 0x02106614 - .word FUN_020BE62C - .word FUN_020BECEC - .word FUN_020BF0D4 - - .global UNK_02106620 -UNK_02106620: ; 0x02106620 - .word FUN_020BE6E4 - .word FUN_020BEF10 - .word FUN_020BF42C - .word FUN_020BFA9C - - .global UNK_02106630 -UNK_02106630: ; 0x02106630 - .byte 0x2A, 0x00, 0x00, 0x00 - - .global UNK_02106634 -UNK_02106634: ; 0x02106634 - .byte 0x00, 0x00, 0x00, 0x00 - - .global UNK_02106638 -UNK_02106638: ; 0x02106638 - .byte 0x2A, 0x00, 0x00, 0x00 - - .global UNK_0210663C -UNK_0210663C: ; 0x0210663C - .byte 0x00, 0x00, 0x00, 0x00 - - .global UNK_02106640 -UNK_02106640: ; 0x02106640 - .word FUN_020BA58C - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - - .global UNK_02106650 -UNK_02106650: ; 0x02106650 - .word FUN_020BA438 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - - .global UNK_02106660 -UNK_02106660: ; 0x02106660 - .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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00 - - .global UNK_021066A0 -UNK_021066A0: ; 0x021066A0 - .byte 0x12, 0x10, 0x17, 0x1B - - .global UNK_021066A4 -UNK_021066A4: ; 0x021066A4 - .byte 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 - - .global UNK_021066AC -UNK_021066AC: ; 0x021066AC - .byte 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x10, 0x00, 0x00 - - .global UNK_021066D0 -UNK_021066D0: ; 0x021066D0 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - - .global UNK_021066DC -UNK_021066DC: ; 0x021066DC - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - - .global UNK_021066E8 -UNK_021066E8: ; 0x021066E8 - .byte 0x12, 0x10, 0x17, 0x1B - - .global UNK_021066EC -UNK_021066EC: ; 0x021066EC - .byte 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 - - .global UNK_021066F4 -UNK_021066F4: ; 0x021066F4 - .byte 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x10, 0x00, 0x00 - - .global UNK_02106718 -UNK_02106718: ; 0x02106718 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - - .global UNK_02106724 -UNK_02106724: ; 0x02106724 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - - .global UNK_02106730 -UNK_02106730: ; 0x02106730 - .word FUN_020BAC70 - .word FUN_020BAC48 - .word FUN_020BAAC0 - .word FUN_020BA9EC - .word FUN_020BA50C - .word FUN_020BA3C4 - .word FUN_020B9F84 - .word FUN_020B9C54 - .word FUN_020B98C4 - .word FUN_020B9258 - .word FUN_020B9178 - .word FUN_020B9110 - .word FUN_020B8DF0 - .word FUN_020B8A60 - .byte 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, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - - .global UNK_021067B0 -UNK_021067B0: ; 0x021067B0 - .word FUN_020BEBD8 - .word FUN_020BEB00 - .word FUN_020BEA84 - .word FUN_020BEA3C - .word FUN_020BE954 - .word FUN_020BE894 - .word FUN_020BE850 - .word FUN_020BE82C - - .global UNK_021067D0 -UNK_021067D0: ; 0x021067D0 - .word FUN_020BF988 - .word FUN_020BF894 - .word FUN_020BF810 - .word FUN_020BF7C8 - .word FUN_020BF6C8 - .word FUN_020BF5E8 - .word FUN_020BF598 - .word FUN_020BF574 - - .global UNK_021067F0 -UNK_021067F0: ; 0x021067F0 - .word FUN_020BFFD4 - .word FUN_020BFEEC - .word FUN_020BFE68 - .word FUN_020BFE0C - .word FUN_020BFD38 - .word FUN_020BFC8C - .word FUN_020BFC4C - .word FUN_020BFC28 - - .section .bss - - .global UNK_021CCD38 -UNK_021CCD38: ; 0x021CCD38 - .space 0x4 - - .global UNK_021CCD3C -UNK_021CCD3C: ; 0x021CCD3C - .space 0xc - - .global UNK_021CCD48 -UNK_021CCD48: ; 0x021CCD48 - .space 0x4 - - .global UNK_021CCD4C -UNK_021CCD4C: ; 0x021CCD4C - .space 0xc - - .global UNK_021CCD58 -UNK_021CCD58: ; 0x021CCD58 - .space 0x14 - - .global UNK_021CCD6C -UNK_021CCD6C: ; 0x021CCD6C - .space 0x4 - - .global UNK_021CCD70 -UNK_021CCD70: ; 0x021CCD70 - .space 0x4 - - .global UNK_021CCD74 -UNK_021CCD74: ; 0x021CCD74 - .space 0x14 - - .global UNK_021CCD88 -UNK_021CCD88: ; 0x021CCD88 - .space 0x4 - - .global UNK_021CCD8C -UNK_021CCD8C: ; 0x021CCD8C - .space 0x10 - - .global UNK_021CCD9C -UNK_021CCD9C: ; 0x021CCD9C - .space 0x4 - - .global UNK_021CCDA0 -UNK_021CCDA0: ; 0x021CCDA0 - .space 0x100 - - .global UNK_021CCEA0 -UNK_021CCEA0: ; 0x021CCEA0 - .space 0x400 - - .global UNK_021CD2A0 -UNK_021CD2A0: ; 0x021CD2A0 - .space 0x40 - - .global UNK_021CD2E0 -UNK_021CD2E0: ; 0x021CD2E0 - .space 0x100 - - .global UNK_021CD3E0 -UNK_021CD3E0: ; 0x021CD3E0 - .space 0x400 - - .global UNK_021CD7E0 -UNK_021CD7E0: ; 0x021CD7E0 - .space 0x40 - - .global UNK_021CD820 -UNK_021CD820: ; 0x021CD820 - .space 0x100 - - .global UNK_021CD920 -UNK_021CD920: ; 0x021CD920 - .space 0x400 - - .global UNK_021CDD20 -UNK_021CDD20: ; 0x021CDD20 - .space 0x40 - - .global UNK_021CDD60 -UNK_021CDD60: ; 0x021CDD60 - .space 0x4 - - .global UNK_021CDD64 -UNK_021CDD64: ; 0x021CDD64 - .space 0x4 - - .global UNK_021CDD68 -UNK_021CDD68: ; 0x021CDD68 - .space 0x4 - - .global UNK_021CDD6C -UNK_021CDD6C: ; 0x021CDD6C - .space 0x4 - - .global UNK_021CDD70 -UNK_021CDD70: ; 0x021CDD70 - .space 0x4 - - .global UNK_021CDD74 -UNK_021CDD74: ; 0x021CDD74 - .space 0x80 - - .global UNK_021CDDF4 -UNK_021CDDF4: ; 0x021CDDF4 - .space 0x4 - - .global UNK_021CDDF8 -UNK_021CDDF8: ; 0x021CDDF8 - .space 0xfc - - .global UNK_021CDEF4 -UNK_021CDEF4: ; 0x021CDEF4 - .space 0x10 - - .global UNK_021CDF04 -UNK_021CDF04: ; 0x021CDF04 - .space 0x4 - - .global UNK_021CDF08 -UNK_021CDF08: ; 0x021CDF08 - .space 0x2ec - - .global UNK_021CE1F4 -UNK_021CE1F4: ; 0x021CE1F4 - .space 0x300 - - .global UNK_021CE4F4 -UNK_021CE4F4: ; 0x021CE4F4 - .space 0x400 - - .global UNK_021CE8F4 -UNK_021CE8F4: ; 0x021CE8F4 - .space 0x4 - - .global UNK_021CE8F8 -UNK_021CE8F8: ; 0x021CE8F8 - .space 0x404 - - .global UNK_021CECFC -UNK_021CECFC: ; 0x021CECFC - .space 0x4 - - .global UNK_021CED00 -UNK_021CED00: ; 0x021CED00 - .space 0x4 - - .global UNK_021CED04 -UNK_021CED04: ; 0x021CED04 - .space 0x4 - - .global UNK_021CED08 -UNK_021CED08: ; 0x021CED08 - .space 0x4 - - .global UNK_021CED0C -UNK_021CED0C: ; 0x021CED0C - .space 0x4 - - .global UNK_021CED10 -UNK_021CED10: ; 0x021CED10 - .space 0x4 - - .global UNK_021CED14 -UNK_021CED14: ; 0x021CED14 - .space 0x4 - - .global UNK_021CED18 -UNK_021CED18: ; 0x021CED18 - .space 0x8 - - .global UNK_021CED20 -UNK_021CED20: ; 0x021CED20 - .space 0x44 - - .global UNK_021CED64 -UNK_021CED64: ; 0x021CED64 - .space 0x34 - - .global UNK_021CED98 -UNK_021CED98: ; 0x021CED98 - .space 0x28 - - .global UNK_021CEDC0 -UNK_021CEDC0: ; 0x021CEDC0 - .space 0x14 - - .global UNK_021CEDD4 -UNK_021CEDD4: ; 0x021CEDD4 - .space 0x24 - - .global UNK_021CEDF8 -UNK_021CEDF8: ; 0x021CEDF8 - .space 0xc - - .global UNK_021CEE04 -UNK_021CEE04: ; 0x021CEE04 - .space 0x14 - - .global UNK_021CEE18 -UNK_021CEE18: ; 0x021CEE18 - .space 0x30 - - .global UNK_021CEE48 -UNK_021CEE48: ; 0x021CEE48 - .space 0x30 - - .global UNK_021CEE78 -UNK_021CEE78: ; 0x021CEE78 - .space 0xe0 - - .global UNK_021CEF58 -UNK_021CEF58: ; 0x021CEF58 - .space 0xc - - .global UNK_021CEF64 -UNK_021CEF64: ; 0x021CEF64 - .space 0xc - - .global UNK_021CEF70 -UNK_021CEF70: ; 0x021CEF70 - .space 0xc - - .global UNK_021CEF7C -UNK_021CEF7C: ; 0x021CEF7C - .space 0x4 - - .global UNK_021CEF80 -UNK_021CEF80: ; 0x021CEF80 - .space 0xe00 - - .global UNK_021CFD80 -UNK_021CFD80: ; 0x021CFD80 - .space 0x4 - - .global UNK_021CFD84 -UNK_021CFD84: ; 0x021CFD84 - .space 0x4 - - .global UNK_021CFD88 -UNK_021CFD88: ; 0x021CFD88 - .space 0x4 - - .global UNK_021CFD8C -UNK_021CFD8C: ; 0x021CFD8C - .space 0x4 - - .global UNK_021CFD90 -UNK_021CFD90: ; 0x021CFD90 - .space 0x4 - - .global UNK_021CFD94 -UNK_021CFD94: ; 0x021CFD94 - .space 0x2ba - - .global UNK_021D004E -UNK_021D004E: ; 0x021D004E - .space 0x332 - - .global UNK_021D0380 -UNK_021D0380: ; 0x021D0380 - .space 0x40 - - .global UNK_021D03C0 -UNK_021D03C0: ; 0x021D03C0 - .space 0xb42 - - .global UNK_021D0F02 -UNK_021D0F02: ; 0x021D0F02 - .space 0xd7e - - .global UNK_021D1C80 -UNK_021D1C80: ; 0x021D1C80 - .space 0x4 - - .global UNK_021D1C84 -UNK_021D1C84: ; 0x021D1C84 - .space 0x4 - - .global UNK_021D1C88 -UNK_021D1C88: ; 0x021D1C88 - .space 0x4 - - .text - - arm_func_start FUN_020ADA84 -FUN_020ADA84: ; 0x020ADA84 - cmp r1, #0x0 - ldreq r0, [r0, #0x4] - ldrneh r0, [r0, #0xa] - ldrne r0, [r1, r0] - bx lr - - arm_func_start FUN_020ADA98 -FUN_020ADA98: ; 0x020ADA98 - cmp r1, #0x0 - ldreq r0, [r0, #0x0] - ldrneh r0, [r0, #0xa] - addne r0, r1, r0 - ldrne r0, [r0, #0x4] - bx lr - - arm_func_start FUN_020ADAB0 -FUN_020ADAB0: ; 0x020ADAB0 - stmdb sp!, {lr} - sub sp, sp, #0x4 - ldrh r12, [r0, #0xa] - ldr r3, [r1, r12] - add lr, r1, r12 - cmp r3, #0x0 - ldreq r1, [lr, #0x4] - streq r1, [r0, #0x0] - ldrne r2, [lr, #0x4] - addne r1, r3, r12 - strne r2, [r1, #0x4] - ldr r3, [lr, #0x4] - cmp r3, #0x0 - ldreq r1, [lr, #0x0] - streq r1, [r0, #0x4] - ldrneh r1, [r0, #0xa] - ldrne r2, [lr, #0x0] - strne r2, [r3, r1] - mov r1, #0x0 - str r1, [lr, #0x0] - str r1, [lr, #0x4] - ldrh r1, [r0, #0x8] - sub r1, r1, #0x1 - strh r1, [r0, #0x8] - add sp, sp, #0x4 - ldmia sp!, {pc} - - arm_func_start FUN_020ADB18 -FUN_020ADB18: ; 0x020ADB18 - stmdb sp!, {lr} - sub sp, sp, #0x4 - cmp r1, #0x0 - bne _020ADB38 - mov r1, r2 - bl FUN_020ADBE8 - add sp, sp, #0x4 - ldmia sp!, {pc} -_020ADB38: - ldr r3, [r0, #0x0] - cmp r1, r3 - bne _020ADB54 - mov r1, r2 - bl FUN_020ADB8C - add sp, sp, #0x4 - ldmia sp!, {pc} -_020ADB54: - ldrh lr, [r0, #0xa] - ldr r3, [r1, lr] - add r12, r2, lr - str r3, [r2, lr] - str r1, [r12, #0x4] - add r3, r3, lr - str r2, [r3, #0x4] - ldrh r3, [r0, #0xa] - str r2, [r1, r3] - ldrh r1, [r0, #0x8] - add r1, r1, #0x1 - strh r1, [r0, #0x8] - add sp, sp, #0x4 - ldmia sp!, {pc} - - arm_func_start FUN_020ADB8C -FUN_020ADB8C: ; 0x020ADB8C - stmdb sp!, {lr} - sub sp, sp, #0x4 - ldr r2, [r0, #0x0] - cmp r2, #0x0 - bne _020ADBAC - bl FUN_020ADC48 - add sp, sp, #0x4 - ldmia sp!, {pc} -_020ADBAC: - ldrh r3, [r0, #0xa] - mov r2, #0x0 - str r2, [r1, r3] - ldr r2, [r0, #0x0] - add r3, r1, r3 - str r2, [r3, #0x4] - ldrh r2, [r0, #0xa] - ldr r3, [r0, #0x0] - str r1, [r3, r2] - str r1, [r0, #0x0] - ldrh r1, [r0, #0x8] - add r1, r1, #0x1 - strh r1, [r0, #0x8] - add sp, sp, #0x4 - ldmia sp!, {pc} - - arm_func_start FUN_020ADBE8 -FUN_020ADBE8: ; 0x020ADBE8 - stmdb sp!, {lr} - sub sp, sp, #0x4 - ldr r2, [r0, #0x0] - cmp r2, #0x0 - bne _020ADC08 - bl FUN_020ADC48 - add sp, sp, #0x4 - ldmia sp!, {pc} -_020ADC08: - ldrh r12, [r0, #0xa] - ldr r3, [r0, #0x4] - mov r2, #0x0 - str r3, [r1, r12] - add r3, r1, r12 - str r2, [r3, #0x4] - ldrh r2, [r0, #0xa] - ldr r3, [r0, #0x4] - add r2, r3, r2 - str r1, [r2, #0x4] - str r1, [r0, #0x4] - ldrh r1, [r0, #0x8] - add r1, r1, #0x1 - strh r1, [r0, #0x8] - add sp, sp, #0x4 - ldmia sp!, {pc} - - arm_func_start FUN_020ADC48 -FUN_020ADC48: ; 0x020ADC48 - ldrh r3, [r0, #0xa] - mov r2, #0x0 - add r12, r1, r3 - str r2, [r12, #0x4] - str r2, [r1, r3] - str r1, [r0, #0x0] - str r1, [r0, #0x4] - ldrh r1, [r0, #0x8] - add r1, r1, #0x1 - strh r1, [r0, #0x8] - bx lr - - arm_func_start FUN_020ADC74 -FUN_020ADC74: ; 0x020ADC74 - mov r2, #0x0 - str r2, [r0, #0x0] - str r2, [r0, #0x4] - strh r2, [r0, #0x8] - strh r1, [r0, #0xa] - bx lr - - arm_func_start FUN_020ADC8C -FUN_020ADC8C: ; 0x020ADC8C - stmdb sp!, {r4,lr} - mov r4, r0 - bl FUN_020ADD30 - mov r1, r4 - bl FUN_020ADAB0 - ldmia sp!, {r4,pc} - - arm_func_start FUN_020ADCA4 -FUN_020ADCA4: - stmdb sp!, {r4,lr} - mov r4, r0 - str r1, [r4, #0x0] - str r2, [r4, #0x18] - str r3, [r4, #0x1c] - mov r0, #0x0 - str r0, [r4, #0x20] - ldr r1, [r4, #0x20] - ldrh r0, [sp, #0x8] - bic r1, r1, #0xff - str r1, [r4, #0x20] - ldr r1, [r4, #0x20] - and r0, r0, #0xff - orr r2, r1, r0 - add r0, r4, #0xc - mov r1, #0x4 - str r2, [r4, #0x20] - bl FUN_020ADC74 - ldr r0, _020ADD28 ; =UNK_021CCD38 - ldr r0, [r0, #0x0] - cmp r0, #0x0 - bne _020ADD14 - ldr r0, _020ADD2C ; =UNK_021CCD3C - mov r1, #0x4 - bl FUN_020ADC74 - ldr r0, _020ADD28 ; =UNK_021CCD38 - mov r1, #0x1 - str r1, [r0, #0x0] -_020ADD14: - mov r0, r4 - bl FUN_020ADD30 - mov r1, r4 - bl FUN_020ADBE8 - ldmia sp!, {r4,pc} - .balign 4 -_020ADD28: .word UNK_021CCD38 -_020ADD2C: .word UNK_021CCD3C - - arm_func_start FUN_020ADD30 -FUN_020ADD30: ; 0x020ADD30 - stmdb sp!, {r4,lr} - ldr r4, _020ADD54 ; =UNK_021CCD3C - mov r1, r0 - mov r0, r4 - bl FUN_020ADD58 - cmp r0, #0x0 - addne r4, r0, #0xc - mov r0, r4 - ldmia sp!, {r4,pc} - .balign 4 -_020ADD54: .word UNK_021CCD3C - - arm_func_start FUN_020ADD58 -FUN_020ADD58: - stmdb sp!, {r4-r6,lr} - mov r5, r1 - mov r1, #0x0 - mov r6, r0 - bl FUN_020ADA98 - movs r4, r0 - beq _020ADDB8 -_020ADD74: - ldr r0, [r4, #0x18] - cmp r0, r5 - bhi _020ADDA4 - ldr r0, [r4, #0x1c] - cmp r5, r0 - bhs _020ADDA4 - mov r1, r5 - add r0, r4, #0xc - bl FUN_020ADD58 - cmp r0, #0x0 - moveq r0, r4 - ldmia sp!, {r4-r6,pc} -_020ADDA4: - mov r0, r6 - mov r1, r4 - bl FUN_020ADA98 - movs r4, r0 - bne _020ADD74 -_020ADDB8: - mov r0, #0x0 - ldmia sp!, {r4-r6,pc} - - arm_func_start FUN_020ADDC0 -FUN_020ADDC0: ; 0x020ADDC0 - ldr r0, [r0, #-0xc] - bx lr - - arm_func_start FUN_020ADDC8 -FUN_020ADDC8: ; 0x020ADDC8 - ldr r2, [r0, #0x24] - mov r0, #0x0 - cmp r2, #0x0 - bxeq lr -_020ADDD8: - ldr r1, [r2, #0x4] - ldr r2, [r2, #0xc] - add r0, r0, r1 - cmp r2, #0x0 - bne _020ADDD8 - bx lr - - arm_func_start FUN_020ADDF0 -FUN_020ADDF0: ; 0x020ADDF0 - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0xc - sub r4, r1, #0x10 - add r5, r0, #0x24 - add r0, sp, #0x0 - mov r1, r4 - bl FUN_020AE528 - mov r1, r4 - add r0, r5, #0x8 - bl FUN_020AE500 - add r1, sp, #0x0 - mov r0, r5 - bl FUN_020AE02C - add sp, sp, #0xc - ldmia sp!, {r4-r5,pc} - - arm_func_start FUN_020ADE2C -FUN_020ADE2C: ; 0x020ADE2C - stmdb sp!, {r4-r10,lr} - sub sp, sp, #0x10 - mov r4, r1 - mov r10, r2 - sub r6, r4, #0x10 - add r1, r10, #0x3 - mov r5, r0 - ldr r8, [r6, #0x4] - bic r10, r1, #0x3 - cmp r10, r8 - add r7, r5, #0x24 - addeq sp, sp, #0x10 - moveq r0, r10 - ldmeqia sp!, {r4-r10,pc} - cmp r10, r8 - bls _020ADF60 - ldr r9, [r7, #0x0] - add r0, r6, #0x10 - cmp r9, #0x0 - add r0, r8, r0 - beq _020ADE94 -_020ADE80: - cmp r9, r0 - beq _020ADE94 - ldr r9, [r9, #0xc] - cmp r9, #0x0 - bne _020ADE80 -_020ADE94: - cmp r9, #0x0 - beq _020ADEB0 - ldr r0, [r9, #0x4] - add r1, r8, #0x10 - add r0, r1, r0 - cmp r10, r0 - bls _020ADEBC -_020ADEB0: - add sp, sp, #0x10 - mov r0, #0x0 - ldmia sp!, {r4-r10,pc} -_020ADEBC: - add r0, sp, #0x0 - mov r1, r9 - bl FUN_020AE528 - mov r0, r7 - mov r1, r9 - bl FUN_020AE500 - ldr r2, [sp, #0x4] - add r3, r10, r4 - ldr r9, [sp, #0x0] - sub r1, r2, r3 - str r3, [sp, #0x0] - cmp r1, #0x10 - strcc r2, [sp, #0x0] - mov r8, r0 - ldr r0, [sp, #0x0] - sub r0, r0, r4 - str r0, [r6, #0x4] - ldr r1, [sp, #0x4] - ldr r0, [sp, #0x0] - sub r0, r1, r0 - cmp r0, #0x10 - blo _020ADF30 - ldr r1, _020ADF9C ; =0x00004652 - add r0, sp, #0x0 - bl FUN_020AE4A0 - mov r1, r0 - mov r0, r7 - mov r2, r8 - bl FUN_020AE4D0 -_020ADF30: - ldr r0, [r5, #0x20] - ldr r1, [sp, #0x0] - and r0, r0, #0xff - mov r0, r0, lsl #0x10 - mov r0, r0, lsr #0x10 - sub r2, r1, r9 - ands r0, r0, #0x1 - beq _020ADF90 - mov r1, r9 - mov r0, #0x0 - bl MIi_CpuClear32 - b _020ADF90 -_020ADF60: - add r0, r10, r4 - str r0, [sp, #0x8] - ldr r1, [r6, #0x4] - add r0, r6, #0x10 - add r0, r1, r0 - str r0, [sp, #0xc] - add r1, sp, #0x8 - mov r0, r7 - str r10, [r6, #0x4] - bl FUN_020AE02C - cmp r0, #0x0 - streq r8, [r6, #0x4] -_020ADF90: - ldr r0, [r6, #0x4] - add sp, sp, #0x10 - ldmia sp!, {r4-r10,pc} - .balign 4 -_020ADF9C: .word 0x00004652 - - arm_func_start tempName_NNS_FndAllocFromExpHeapEx -tempName_NNS_FndAllocFromExpHeapEx: ; 0x020ADFA0 - stmdb sp!, {lr} - sub sp, sp, #0x4 - cmp r1, #0x0 - moveq r1, #0x1 - add r1, r1, #0x3 - cmp r2, #0x0 - bic r1, r1, #0x3 - blt _020ADFCC - bl FUN_020AE1D8 - add sp, sp, #0x4 - ldmia sp!, {pc} -_020ADFCC: - rsb r2, r2, #0x0 - bl FUN_020AE11C - add sp, sp, #0x4 - ldmia sp!, {pc} - - arm_func_start thunk_FUN_020adc8c -thunk_FUN_020adc8c: ; 0x020ADFDC - ldr ip, _020ADFE4 ; =FUN_020ADC8C - bx r12 - .balign 4 -_020ADFE4: .word FUN_020ADC8C - - arm_func_start tempName_NNS_FndCreateExpHeapEx -tempName_NNS_FndCreateExpHeapEx: ; 0x020ADFE8 - stmdb sp!, {lr} - sub sp, sp, #0x4 - add r1, r1, r0 - add r0, r0, #0x3 - bic r1, r1, #0x3 - bic r0, r0, #0x3 - cmp r0, r1 - bhi _020AE014 - sub r3, r1, r0 - cmp r3, #0x4c - bhs _020AE020 -_020AE014: - add sp, sp, #0x4 - mov r0, #0x0 - ldmia sp!, {pc} -_020AE020: - bl FUN_020AE420 - add sp, sp, #0x4 - ldmia sp!, {pc} - - arm_func_start FUN_020AE02C -FUN_020AE02C: - stmdb sp!, {r4-r6,lr} - sub sp, sp, #0x8 - mov r5, r1 - ldr r2, [r5, #0x0] - ldr r1, [r5, #0x4] - mov r6, r0 - str r2, [sp, #0x0] - str r1, [sp, #0x4] - ldr r1, [r6, #0x0] - mov r4, #0x0 - cmp r1, #0x0 - beq _020AE0A0 - ldr r0, [r5, #0x0] -_020AE060: - cmp r1, r0 - movcc r4, r1 - blo _020AE094 - ldr r0, [r5, #0x4] - cmp r1, r0 - bne _020AE0A0 - ldr r2, [r1, #0x4] - add r0, r1, #0x10 - add r2, r2, r0 - mov r0, r6 - str r2, [sp, #0x4] - bl FUN_020AE500 - b _020AE0A0 -_020AE094: - ldr r1, [r1, #0xc] - cmp r1, #0x0 - bne _020AE060 -_020AE0A0: - cmp r4, #0x0 - beq _020AE0D4 - ldr r2, [r4, #0x4] - add r1, r4, #0x10 - ldr r0, [r5, #0x0] - add r1, r2, r1 - cmp r1, r0 - bne _020AE0D4 - mov r0, r6 - mov r1, r4 - str r4, [sp, #0x0] - bl FUN_020AE500 - mov r4, r0 -_020AE0D4: - ldr r1, [sp, #0x4] - ldr r0, [sp, #0x0] - sub r0, r1, r0 - cmp r0, #0x10 - addcc sp, sp, #0x8 - movcc r0, #0x0 - ldmccia sp!, {r4-r6,pc} - ldr r1, _020AE118 ; =0x00004652 - add r0, sp, #0x0 - bl FUN_020AE4A0 - mov r1, r0 - mov r0, r6 - mov r2, r4 - bl FUN_020AE4D0 - mov r0, #0x1 - add sp, sp, #0x8 - ldmia sp!, {r4-r6,pc} - .balign 4 -_020AE118: .word 0x00004652 - - arm_func_start FUN_020AE11C -FUN_020AE11C: ; 0x020AE11C - stmdb sp!, {r4-r9,lr} - sub sp, sp, #0x4 - add r0, r0, #0x24 - ldrh r4, [r0, #0x12] - mov r3, r1 - mvn lr, #0x0 - and r1, r4, #0x1 - mov r1, r1, lsl #0x10 - movs r1, r1, lsr #0x10 - moveq r5, #0x1 - mov r1, #0x0 - ldr r4, [r0, #0x4] - movne r5, #0x0 - mov r12, r1 - cmp r4, #0x0 - beq _020AE1B0 - sub r2, r2, #0x1 - mvn r2, r2 -_020AE164: - ldr r8, [r4, #0x4] - add r9, r4, #0x10 - add r6, r8, r9 - sub r6, r6, r3 - and r7, r2, r6 - subs r6, r7, r9 - bmi _020AE1A4 - cmp lr, r8 - bls _020AE1A4 - mov r1, r4 - mov lr, r8 - mov r12, r7 - cmp r5, #0x0 - bne _020AE1B0 - cmp r8, r3 - beq _020AE1B0 -_020AE1A4: - ldr r4, [r4, #0x8] - cmp r4, #0x0 - bne _020AE164 -_020AE1B0: - cmp r1, #0x0 - addeq sp, sp, #0x4 - moveq r0, #0x0 - ldmeqia sp!, {r4-r9,pc} - mov r4, #0x1 - mov r2, r12 - str r4, [sp, #0x0] - bl FUN_020AE298 - add sp, sp, #0x4 - ldmia sp!, {r4-r9,pc} - - arm_func_start FUN_020AE1D8 -FUN_020AE1D8: ; 0x020AE1D8 - stmdb sp!, {r4-r9,lr} - sub sp, sp, #0x4 - add r0, r0, #0x24 - ldrh r4, [r0, #0x12] - mov r3, r1 - ldr r5, [r0, #0x0] - and r1, r4, #0x1 - mov r1, r1, lsl #0x10 - movs r1, r1, lsr #0x10 - moveq r6, #0x1 - mov r1, #0x0 - movne r6, #0x0 - mov lr, r1 - cmp r5, #0x0 - mvn r4, #0x0 - beq _020AE270 - sub r12, r2, #0x1 - mvn r2, r12 -_020AE220: - add r8, r5, #0x10 - add r7, r12, r8 - and r9, r2, r7 - sub r7, r9, r8 - ldr r8, [r5, #0x4] - add r7, r3, r7 - cmp r8, r7 - blo _020AE264 - cmp r4, r8 - bls _020AE264 - mov r1, r5 - mov r4, r8 - mov lr, r9 - cmp r6, #0x0 - bne _020AE270 - cmp r8, r3 - beq _020AE270 -_020AE264: - ldr r5, [r5, #0xc] - cmp r5, #0x0 - bne _020AE220 -_020AE270: - cmp r1, #0x0 - addeq sp, sp, #0x4 - moveq r0, #0x0 - ldmeqia sp!, {r4-r9,pc} - mov r4, #0x0 - mov r2, lr - str r4, [sp, #0x0] - bl FUN_020AE298 - add sp, sp, #0x4 - ldmia sp!, {r4-r9,pc} - - arm_func_start FUN_020AE298 -FUN_020AE298: ; 0x020AE298 - stmdb sp!, {r4-r8,lr} - sub sp, sp, #0x18 - mov r7, r0 - add r0, sp, #0x0 - mov r8, r1 - mov r6, r2 - mov r5, r3 - bl FUN_020AE528 - ldr r3, [sp, #0x4] - sub r4, r6, #0x10 - add r2, r5, r6 - mov r0, r7 - mov r1, r8 - str r4, [sp, #0x4] - str r3, [sp, #0xc] - str r2, [sp, #0x8] - bl FUN_020AE500 - ldr r2, [sp, #0x0] - ldr r1, [sp, #0x4] - mov r5, r0 - sub r0, r1, r2 - cmp r0, #0x10 - strcc r2, [sp, #0x4] - blo _020AE318 - ldr r1, _020AE418 ; =0x00004652 - add r0, sp, #0x0 - bl FUN_020AE4A0 - mov r1, r0 - mov r0, r7 - mov r2, r5 - bl FUN_020AE4D0 - mov r5, r0 -_020AE318: - ldr r1, [sp, #0xc] - ldr r0, [sp, #0x8] - sub r0, r1, r0 - cmp r0, #0x10 - strcc r1, [sp, #0x8] - blo _020AE34C - ldr r1, _020AE418 ; =0x00004652 - add r0, sp, #0x8 - bl FUN_020AE4A0 - mov r1, r0 - mov r0, r7 - mov r2, r5 - bl FUN_020AE4D0 -_020AE34C: - ldr r0, [r7, #-0x4] - ldr r1, [sp, #0x4] - and r0, r0, #0xff - mov r0, r0, lsl #0x10 - ldr r2, [sp, #0x8] - mov r0, r0, lsr #0x10 - sub r2, r2, r1 - ands r0, r0, #0x1 - beq _020AE378 - mov r0, #0x0 - bl MIi_CpuClear32 -_020AE378: - ldr r2, [sp, #0x8] - ldr r1, _020AE41C ; =0x00005544 - add r0, sp, #0x10 - str r4, [sp, #0x10] - str r2, [sp, #0x14] - bl FUN_020AE4A0 - mov r1, r0 - ldrh r3, [r1, #0x2] - ldrh r2, [sp, #0x30] - add r0, r7, #0x8 - bic r3, r3, #0x8000 - strh r3, [r1, #0x2] - ldrh r3, [r1, #0x2] - and r2, r2, #0x1 - orr r2, r3, r2, lsl #0xf - strh r2, [r1, #0x2] - ldrh r2, [r1, #0x2] - ldr r3, [sp, #0x4] - bic r2, r2, #0x7f00 - strh r2, [r1, #0x2] - sub r2, r1, r3 - mov r2, r2, lsl #0x10 - mov r2, r2, lsr #0x10 - ldrh r3, [r1, #0x2] - and r2, r2, #0x7f - orr r2, r3, r2, lsl #0x8 - strh r2, [r1, #0x2] - ldrh r2, [r1, #0x2] - ldrh r3, [r7, #0x10] - bic r2, r2, #0xff - strh r2, [r1, #0x2] - ldrh r2, [r1, #0x2] - and r3, r3, #0xff - orr r2, r2, r3 - strh r2, [r1, #0x2] - ldr r2, [r7, #0xc] - bl FUN_020AE4D0 - mov r0, r6 - add sp, sp, #0x18 - ldmia sp!, {r4-r8,pc} - .balign 4 -_020AE418: .word 0x00004652 -_020AE41C: .word 0x00005544 - - arm_func_start FUN_020AE420 -FUN_020AE420: ; 0x020AE420 - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0xc - mov r5, r0 - mov r3, r1 - add r4, r5, #0x24 - str r2, [sp, #0x0] - ldr r1, _020AE498 ; =0x45585048 - add r2, r4, #0x14 - bl FUN_020ADCA4 - mov r0, #0x0 - strh r0, [r4, #0x10] - strh r0, [r4, #0x12] - ldrh r2, [r4, #0x12] - ldr r1, _020AE49C ; =0x00004652 - add r0, sp, #0x4 - bic r2, r2, #0x1 - strh r2, [r4, #0x12] - ldr r2, [r5, #0x18] - str r2, [sp, #0x4] - ldr r2, [r5, #0x1c] - str r2, [sp, #0x8] - bl FUN_020AE4A0 - str r0, [r5, #0x24] - str r0, [r4, #0x4] - mov r1, #0x0 - str r1, [r4, #0x8] - mov r0, r5 - str r1, [r4, #0xc] - add sp, sp, #0xc - ldmia sp!, {r4-r5,pc} - .balign 4 -_020AE498: .word 0x45585048 -_020AE49C: .word 0x00004652 - - arm_func_start FUN_020AE4A0 -FUN_020AE4A0: ; 0x020AE4A0 - ldr r3, [r0, #0x0] - mov r2, #0x0 - strh r1, [r3, #0x0] - strh r2, [r3, #0x2] - ldr r1, [r0, #0x4] - add r0, r3, #0x10 - sub r0, r1, r0 - str r0, [r3, #0x4] - str r2, [r3, #0x8] - mov r0, r3 - str r2, [r3, #0xc] - bx lr - - arm_func_start FUN_020AE4D0 -FUN_020AE4D0: ; 0x020AE4D0 - str r2, [r1, #0x8] - cmp r2, #0x0 - ldrne r3, [r2, #0xc] - strne r1, [r2, #0xc] - ldreq r3, [r0, #0x0] - streq r1, [r0, #0x0] - str r3, [r1, #0xc] - cmp r3, #0x0 - strne r1, [r3, #0x8] - streq r1, [r0, #0x4] - mov r0, r1 - bx lr - - arm_func_start FUN_020AE500 -FUN_020AE500: ; 0x020AE500 - ldr r2, [r1, #0x8] - ldr r1, [r1, #0xc] - cmp r2, #0x0 - strne r1, [r2, #0xc] - streq r1, [r0, #0x0] - cmp r1, #0x0 - strne r2, [r1, #0x8] - streq r2, [r0, #0x4] - mov r0, r2 - bx lr - - arm_func_start FUN_020AE528 -FUN_020AE528: ; 0x020AE528 - ldrh r2, [r1, #0x2] - add r3, r1, #0x10 - mov r2, r2, asr #0x8 - and r2, r2, #0x7f - mov r2, r2, lsl #0x10 - sub r2, r1, r2, lsr #0x10 - str r2, [r0, #0x0] - ldr r1, [r1, #0x4] - add r1, r1, r3 - str r1, [r0, #0x4] - bx lr - - arm_func_start FUN_020AE554 -FUN_020AE554: ; 0x020AE554 - add r2, r0, #0x24 - cmp r1, #0x0 - ldr r3, [r2, #0x8] - beq _020AE584 - cmp r3, #0x0 - beq _020AE584 -_020AE56C: - ldr r0, [r3, #0x0] - cmp r0, r1 - beq _020AE584 - ldr r3, [r3, #0xc] - cmp r3, #0x0 - bne _020AE56C -_020AE584: - cmp r3, #0x0 - moveq r0, #0x0 - bxeq lr - ldr r1, [r3, #0x4] - mov r0, #0x1 - str r1, [r2, #0x0] - ldr r1, [r3, #0x8] - str r1, [r2, #0x4] - ldr r1, [r3, #0xc] - str r1, [r2, #0x8] - bx lr - - arm_func_start FUN_020AE5B0 -FUN_020AE5B0: ; 0x020AE5B0 - stmdb sp!, {r4-r6,lr} - add r4, r0, #0x24 - ldr r5, [r0, #0x24] - mov r6, r1 - mov r0, r4 - mov r1, #0x10 - mov r2, #0x4 - bl FUN_020AE77C - cmp r0, #0x0 - moveq r0, #0x0 - ldmeqia sp!, {r4-r6,pc} - str r6, [r0, #0x0] - str r5, [r0, #0x4] - ldr r1, [r4, #0x4] - str r1, [r0, #0x8] - ldr r1, [r4, #0x8] - str r1, [r0, #0xc] - str r0, [r4, #0x8] - mov r0, #0x1 - ldmia sp!, {r4-r6,pc} - - arm_func_start FUN_020AE600 -FUN_020AE600: ; 0x020AE600 - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - mov r4, r1 - mov r5, r0 - ands r1, r4, #0x1 - beq _020AE61C - bl FUN_020AE6F8 -_020AE61C: - ands r0, r4, #0x2 - addeq sp, sp, #0x4 - ldmeqia sp!, {r4-r5,pc} - mov r0, r5 - bl FUN_020AE6C8 - add sp, sp, #0x4 - ldmia sp!, {r4-r5,pc} - - arm_func_start FUN_020AE638 -FUN_020AE638: ; 0x020AE638 - stmdb sp!, {lr} - sub sp, sp, #0x4 - cmp r1, #0x0 - moveq r1, #0x1 - add r1, r1, #0x3 - add r0, r0, #0x24 - cmp r2, #0x0 - bic r1, r1, #0x3 - blt _020AE668 - bl FUN_020AE77C - add sp, sp, #0x4 - ldmia sp!, {pc} -_020AE668: - rsb r2, r2, #0x0 - bl FUN_020AE710 - add sp, sp, #0x4 - ldmia sp!, {pc} - - arm_func_start thunk_FUN_020adc8c_2 -thunk_FUN_020adc8c_2: ; 0x020AE678 - ldr ip, _020AE680 ; =FUN_020ADC8C - bx r12 - .balign 4 -_020AE680: .word FUN_020ADC8C - - arm_func_start FUN_020AE684 -FUN_020AE684: ; 0x020AE684 - stmdb sp!, {lr} - sub sp, sp, #0x4 - add r1, r1, r0 - add r0, r0, #0x3 - bic r1, r1, #0x3 - bic r0, r0, #0x3 - cmp r0, r1 - bhi _020AE6B0 - sub r3, r1, r0 - cmp r3, #0x30 - bhs _020AE6BC -_020AE6B0: - add sp, sp, #0x4 - mov r0, #0x0 - ldmia sp!, {pc} -_020AE6BC: - bl FUN_020AE7E0 - add sp, sp, #0x4 - ldmia sp!, {pc} - - arm_func_start FUN_020AE6C8 -FUN_020AE6C8: ; 0x020AE6C8 - add r2, r0, #0x24 - ldr r3, [r2, #0x8] - cmp r3, #0x0 - beq _020AE6EC -_020AE6D8: - ldr r1, [r0, #0x1c] - str r1, [r3, #0x8] - ldr r3, [r3, #0xc] - cmp r3, #0x0 - bne _020AE6D8 -_020AE6EC: - ldr r0, [r0, #0x1c] - str r0, [r2, #0x4] - bx lr - - arm_func_start FUN_020AE6F8 -FUN_020AE6F8: ; 0x020AE6F8 - ldr r1, [r0, #0x18] - add r2, r0, #0x24 - str r1, [r0, #0x24] - mov r0, #0x0 - str r0, [r2, #0x8] - bx lr - - arm_func_start FUN_020AE710 -FUN_020AE710: ; 0x020AE710 - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - mov r5, r0 - ldr r3, [r5, #0x4] - sub r0, r2, #0x1 - mvn r2, r0 - sub r1, r3, r1 - ldr r0, [r5, #0x0] - and r4, r2, r1 - cmp r4, r0 - addcc sp, sp, #0x4 - movcc r0, #0x0 - ldmccia sp!, {r4-r5,pc} - ldr r0, [r5, #-0x4] - sub r2, r3, r4 - and r0, r0, #0xff - mov r0, r0, lsl #0x10 - mov r0, r0, lsr #0x10 - ands r0, r0, #0x1 - beq _020AE76C - mov r1, r4 - mov r0, #0x0 - bl MIi_CpuClear32 -_020AE76C: - mov r0, r4 - str r4, [r5, #0x4] - add sp, sp, #0x4 - ldmia sp!, {r4-r5,pc} - - arm_func_start FUN_020AE77C -FUN_020AE77C: - stmdb sp!, {r4-r6,lr} - mov r6, r0 - ldr r0, [r6, #0x0] - sub r2, r2, #0x1 - mvn r3, r2 - add r2, r2, r0 - and r5, r3, r2 - ldr r2, [r6, #0x4] - add r4, r1, r5 - cmp r4, r2 - movhi r0, #0x0 - ldmhiia sp!, {r4-r6,pc} - ldr r1, [r6, #-0x4] - sub r2, r4, r0 - and r1, r1, #0xff - mov r1, r1, lsl #0x10 - mov r1, r1, lsr #0x10 - ands r1, r1, #0x1 - beq _020AE7D4 - mov r1, r0 - mov r0, #0x0 - bl MIi_CpuClear32 -_020AE7D4: - mov r0, r5 - str r4, [r6, #0x0] - ldmia sp!, {r4-r6,pc} - - arm_func_start FUN_020AE7E0 -FUN_020AE7E0: ; 0x020AE7E0 - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - mov r5, r0 - mov r3, r1 - add r4, r5, #0x24 - str r2, [sp, #0x0] - ldr r1, _020AE828 ; =0x46524D48 - add r2, r4, #0xc - bl FUN_020ADCA4 - ldr r0, [r5, #0x18] - mov r1, #0x0 - str r0, [r5, #0x24] - ldr r2, [r5, #0x1c] - mov r0, r5 - str r2, [r4, #0x4] - str r1, [r4, #0x8] - add sp, sp, #0x4 - ldmia sp!, {r4-r5,pc} - .balign 4 -_020AE828: .word 0x46524D48 - - arm_func_start FUN_020AE82C -FUN_020AE82C: ; 0x020AE82C - ldr ip, _020AE848 ; =UNK_020FF7CC - mov r3, #0x0 - str r12, [r0, #0x0] - str r1, [r0, #0x4] - str r2, [r0, #0x8] - str r3, [r0, #0xc] - bx lr - .balign 4 -_020AE848: .word UNK_020FF7CC - - arm_func_start FUN_020AE84C -FUN_020AE84C: ; 0x020AE84C - stmdb sp!, {lr} - sub sp, sp, #0x4 - ldr r2, [r0, #0x0] - ldr r2, [r2, #0x4] - blx r2 - add sp, sp, #0x4 - ldmia sp!, {pc} - - arm_func_start FUN_020AE868 -FUN_020AE868: ; 0x020AE868 - stmdb sp!, {lr} - sub sp, sp, #0x4 - ldr r2, [r0, #0x0] - ldr r2, [r2, #0x0] - blx r2 - add sp, sp, #0x4 - ldmia sp!, {pc} - - arm_func_start FUN_020AE884 -FUN_020AE884: ; 0x020AE884 - ldr ip, _020AE890 ; =FUN_020ADDF0 - ldr r0, [r0, #0x4] - bx r12 - .balign 4 -_020AE890: .word FUN_020ADDF0 - - arm_func_start FUN_020AE894 -FUN_020AE894: ; 0x020AE894 - ldr ip, _020AE8A8 ; =tempName_NNS_FndAllocFromExpHeapEx - mov r2, r0 - ldr r0, [r2, #0x4] - ldr r2, [r2, #0x8] - bx r12 - .balign 4 -_020AE8A8: .word tempName_NNS_FndAllocFromExpHeapEx - - arm_func_start FUN_020AE8AC -FUN_020AE8AC: ; 0x020AE8AC - mvn r0, #0x0 - bx lr - - arm_func_start FUN_020AE8B4 -FUN_020AE8B4: ; 0x020AE8B4 - mov r0, #0x0 - bx lr - - arm_func_start FUN_020AE8BC -FUN_020AE8BC: ; 0x020AE8BC - mvn r0, #0x0 - bx lr - - arm_func_start FUN_020AE8C4 -FUN_020AE8C4: ; 0x020AE8C4 - mov r0, #0x0 - bx lr - - arm_func_start FUN_020AE8CC -FUN_020AE8CC: ; 0x020AE8CC - stmdb sp!, {lr} - sub sp, sp, #0x4 - mov lr, #0x0 - ldr r3, _020AE914 ; =UNK_021064E4 - mov r12, lr - mov r2, #0x1 -_020AE8E4: - ldr r1, [r0, r12, lsl #0x2] - add lr, lr, #0x1 - str r1, [r3, #0x0] - ldr r1, [r0, r2, lsl #0x2] - cmp lr, #0x5 - str r1, [r3, #0x4] - add r12, r12, #0x2 - add r3, r3, #0x18 - add r2, r2, #0x2 - blt _020AE8E4 - add sp, sp, #0x4 - ldmia sp!, {pc} - .balign 4 -_020AE914: .word UNK_021064E4 - - arm_func_start FUN_020AE918 -FUN_020AE918: ; 0x020AE918 - stmdb sp!, {lr} - sub sp, sp, #0x4 - mov lr, #0x0 - ldr ip, _020AE960 ; =UNK_021064E4 - mov r3, lr - mov r2, #0x1 -_020AE930: - ldr r1, [r12, #0x0] - add lr, lr, #0x1 - str r1, [r0, r3, lsl #0x2] - ldr r1, [r12, #0x4] - cmp lr, #0x5 - str r1, [r0, r2, lsl #0x2] - add r12, r12, #0x18 - add r3, r3, #0x2 - add r2, r2, #0x2 - blt _020AE930 - add sp, sp, #0x4 - ldmia sp!, {pc} - .balign 4 -_020AE960: .word UNK_021064E4 - - arm_func_start FUN_020AE964 -FUN_020AE964: ; 0x020AE964 - mov r0, #0x0 - bx lr - - arm_func_start FUN_020AE96C -FUN_020AE96C: ; 0x020AE96C - stmdb sp!, {r4-r10,lr} - cmp r0, #0x0 - moveq r7, #0x10 - addne r0, r0, #0xf - bicne r7, r0, #0xf - ldr r0, _020AEADC ; =0x0007FFF0 - cmp r7, r0 - movcs r0, #0x0 - ldmcsia sp!, {r4-r10,pc} - cmp r1, #0x0 - beq _020AEA5C - mov lr, r7, lsr #0x1 - mov r6, #0x0 - ldr r2, _020AEAE0 ; =UNK_02106514 - ldr r3, _020AEAE4 ; =UNK_021064FC - ldr ip, _020AEAE8 ; =UNK_021064C8 - mov r0, r6 -_020AE9B0: - ldr r5, [r12, r6, lsl #0x2] - ldr r4, [r5, #0x8] - cmp r4, #0x0 - beq _020AEA48 - ldr r9, [r5, #0x4] - ldr r4, [r5, #0x0] - sub r4, r9, r4 - cmp r4, r7 - blo _020AEA48 - ldrh r4, [r5, #0x10] - cmp r4, #0x0 - beq _020AE9EC - cmp r4, #0x3 - beq _020AE9F4 - b _020AE9FC -_020AE9EC: - mov r4, r3 - b _020AEA00 -_020AE9F4: - mov r4, r2 - b _020AEA00 -_020AE9FC: - mov r4, r0 -_020AEA00: - ldr r9, [r4, #0x8] - cmp r9, #0x0 - beq _020AEA48 - ldr r10, [r4, #0x4] - ldr r9, [r4, #0x0] - sub r9, r10, r9 - cmp r9, lr - blo _020AEA48 - ldr r3, [r5, #0x0] - mov r0, #0x1 - add r2, r3, r7 - str r2, [r5, #0x0] - ldr r2, [r4, #0x0] - add r2, r2, lr - str r2, [r4, #0x0] - ldr r2, [r5, #0x14] - add r8, r3, r2 - b _020AEAB8 -_020AEA48: - add r6, r6, #0x1 - cmp r6, #0x2 - blt _020AE9B0 - mov r0, #0x0 - b _020AEAB8 -_020AEA5C: - ldr r3, _020AEAEC ; =UNK_021064D0 - mov r5, #0x0 -_020AEA64: - ldr r4, [r3, r5, lsl #0x2] - ldr r0, [r4, #0x8] - cmp r0, #0x0 - beq _020AEAA8 - ldr r2, [r4, #0x4] - ldr r0, [r4, #0x0] - sub r0, r2, r0 - cmp r0, r7 - blo _020AEAA8 - ldr r2, [r4, #0x4] - mov r0, #0x1 - sub r2, r2, r7 - str r2, [r4, #0x4] - ldr r3, [r4, #0x4] - ldr r2, [r4, #0x14] - add r8, r3, r2 - b _020AEAB8 -_020AEAA8: - add r5, r5, #0x1 - cmp r5, #0x5 - blt _020AEA64 - mov r0, #0x0 -_020AEAB8: - cmp r0, #0x0 - moveq r0, #0x0 - ldmeqia sp!, {r4-r10,pc} - ldr r0, _020AEAF0 ; =0x0000FFFF - mov r2, r7, lsr #0x4 - and r0, r0, r8, lsr #0x3 - orr r0, r0, r2, lsl #0x10 - orr r0, r0, r1, lsl #0x1f - ldmia sp!, {r4-r10,pc} - .balign 4 -_020AEADC: .word 0x0007FFF0 -_020AEAE0: .word UNK_02106514 -_020AEAE4: .word UNK_021064FC -_020AEAE8: .word UNK_021064C8 -_020AEAEC: .word UNK_021064D0 -_020AEAF0: .word 0x0000FFFF - - arm_func_start FUN_020AEAF4 -FUN_020AEAF4: - stmdb sp!, {r4-r7,lr} - sub sp, sp, #0x4 - ldr r0, _020AEB68 ; =UNK_021CCD48 - mov r6, #0x0 - ldrh r7, [r0, #0x0] - ldr r5, _020AEB6C ; =UNK_021064E4 - mov lr, r6 - cmp r7, #0x1 - addhi r7, r7, #0x1 - mov r1, r6 - mov r3, r6 - mov r4, #0x1 - mov r0, #0x20000 - mov r2, #0x10000 -_020AEB2C: - cmp r6, r7 - strlt r4, [r5, #0x8] - strge lr, [r5, #0x8] - ldr r12, [r5, #0xc] - add r6, r6, #0x1 - cmp r12, #0x0 - strne r3, [r5, #0x0] - strne r2, [r5, #0x4] - streq r1, [r5, #0x0] - streq r0, [r5, #0x4] - cmp r6, #0x5 - add r5, r5, #0x18 - blt _020AEB2C - add sp, sp, #0x4 - ldmia sp!, {r4-r7,pc} - .balign 4 -_020AEB68: .word UNK_021CCD48 -_020AEB6C: .word UNK_021064E4 - - arm_func_start FUN_020AEB70 -FUN_020AEB70: ; 0x020AEB70 - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - mov r5, r0 - mov r4, r1 - cmp r5, #0x2 - bhi _020AEBA8 - mov r12, #0x1 - mov r0, #0x4 - mov r1, #0x3 - mov r2, #0x2 - mov r3, #0x0 - str r12, [sp, #0x0] - bl FUN_020AEC10 - b _020AEBC4 -_020AEBA8: - mov r12, #0x1 - mov r0, #0x4 - mov r1, #0x3 - mov r2, #0x0 - mov r3, #0x2 - str r12, [sp, #0x0] - bl FUN_020AEC10 -_020AEBC4: - ldr r0, _020AEBFC ; =UNK_021CCD48 - strh r5, [r0, #0x0] - bl FUN_020AEAF4 - cmp r4, #0x0 - addeq sp, sp, #0x4 - ldmeqia sp!, {r4-r5,pc} - ldr r3, _020AEC00 ; =FUN_020AE96C - ldr r1, _020AEC04 ; =UNK_021064B8 - ldr r2, _020AEC08 ; =FUN_020AE964 - ldr r0, _020AEC0C ; =UNK_021064BC - str r3, [r1, #0x0] - str r2, [r0, #0x0] - add sp, sp, #0x4 - ldmia sp!, {r4-r5,pc} - .balign 4 -_020AEBFC: .word UNK_021CCD48 -_020AEC00: .word FUN_020AE96C -_020AEC04: .word UNK_021064B8 -_020AEC08: .word FUN_020AE964 -_020AEC0C: .word UNK_021064BC - - arm_func_start FUN_020AEC10 -FUN_020AEC10: ; 0x020AEC10 - stmdb sp!, {r4-r7,lr} - sub sp, sp, #0x4 - ldr lr, [sp, #0x18] - ldr r6, _020AEC58 ; =UNK_021064E4 - mov r12, #0x18 - mla r7, r0, r12, r6 - ldr r0, _020AEC5C ; =UNK_021064D0 - mla r5, r1, r12, r6 - mla r4, r2, r12, r6 - mla r2, r3, r12, r6 - mla r1, lr, r12, r6 - str r7, [r0, #0x0] - str r5, [r0, #0x4] - str r4, [r0, #0x8] - str r2, [r0, #0xc] - str r1, [r0, #0x10] - add sp, sp, #0x4 - ldmia sp!, {r4-r7,pc} - .balign 4 -_020AEC58: .word UNK_021064E4 -_020AEC5C: .word UNK_021064D0 - - arm_func_start FUN_020AEC60 -FUN_020AEC60: - ldr r0, _020AEC78 ; =UNK_021CCD4C - mov r2, #0x0 - ldr r1, [r0, #0x8] - str r2, [r0, #0x0] - str r1, [r0, #0x4] - bx lr - .balign 4 -_020AEC78: .word UNK_021CCD4C - - arm_func_start FUN_020AEC7C -FUN_020AEC7C: ; 0x020AEC7C - ldr r2, [r0, #0x0] - ldr r1, _020AEC94 ; =UNK_021CCD4C - str r2, [r1, #0x0] - ldr r0, [r0, #0x4] - str r0, [r1, #0x4] - bx lr - .balign 4 -_020AEC94: .word UNK_021CCD4C - - arm_func_start FUN_020AEC98 -FUN_020AEC98: ; 0x020AEC98 - ldr r1, _020AECB0 ; =UNK_021CCD4C - ldr r2, [r1, #0x0] - str r2, [r0, #0x0] - ldr r1, [r1, #0x4] - str r1, [r0, #0x4] - bx lr - .balign 4 -_020AECB0: .word UNK_021CCD4C - - arm_func_start FUN_020AECB4 -FUN_020AECB4: ; 0x020AECB4 - mov r0, #0x0 - bx lr - - arm_func_start FUN_020AECBC -FUN_020AECBC: ; 0x020AECBC - stmdb sp!, {r4,lr} - cmp r0, #0x0 - moveq r0, #0x8 - addne r0, r0, #0x7 - ldr ip, _020AEDE8 ; =0x0007FFF8 - bicne r0, r0, #0x7 - cmp r0, r12 - mov r3, #0x0 - movcs r0, #0x0 - ldmcsia sp!, {r4,pc} - cmp r2, #0x1 - bne _020AED64 - ldr r2, _020AEDEC ; =UNK_021CCD4C - cmp r1, #0x0 - ldr r12, [r2, #0x0] - andne r2, r12, #0x7 - rsbne r2, r2, #0x8 - andne r4, r2, #0x7 - andeq r2, r12, #0xf - rsbeq r2, r2, #0x10 - andeq r4, r2, #0xf - ldr r2, _020AEDEC ; =UNK_021CCD4C - add lr, r0, r4 - ldr r2, [r2, #0x4] - sub r2, r2, r12 - cmp r2, lr - blo _020AED5C - cmp r1, #0x0 - add r1, r12, lr - beq _020AED40 - cmp r1, #0x10000 - movhi r12, #0x0 - bhi _020AEDCC -_020AED40: - ldr r1, _020AEDEC ; =UNK_021CCD4C - add r3, r12, r4 - ldr r2, [r1, #0x0] - mov r12, #0x1 - add r2, r2, lr - str r2, [r1, #0x0] - b _020AEDCC -_020AED5C: - mov r12, #0x0 - b _020AEDCC -_020AED64: - ldr r2, _020AEDEC ; =UNK_021CCD4C - ldr r12, [r2, #0x4] - cmp r12, r0 - blo _020AEDC8 - sub r2, r12, r0 - cmp r1, #0x0 - andne r4, r2, #0x7 - andeq r4, r2, #0xf - ldr r2, _020AEDEC ; =UNK_021CCD4C - add lr, r0, r4 - ldr r2, [r2, #0x0] - sub r2, r12, r2 - cmp r2, lr - blo _020AEDC8 - cmp r1, #0x0 - beq _020AEDB0 - cmp r12, #0x10000 - movhi r12, #0x0 - bhi _020AEDCC -_020AEDB0: - ldr r1, _020AEDEC ; =UNK_021CCD4C - mov r12, #0x1 - ldr r2, [r1, #0x4] - sub r3, r2, lr - str r3, [r1, #0x4] - b _020AEDCC -_020AEDC8: - mov r12, #0x0 -_020AEDCC: - cmp r12, #0x0 - ldrne r1, _020AEDF0 ; =0x0000FFFF - movne r2, r0, lsr #0x3 - andne r0, r1, r3, lsr #0x3 - orrne r0, r0, r2, lsl #0x10 - moveq r0, #0x0 - ldmia sp!, {r4,pc} - .balign 4 -_020AEDE8: .word 0x0007FFF8 -_020AEDEC: .word UNK_021CCD4C -_020AEDF0: .word 0x0000FFFF - - arm_func_start FUN_020AEDF4 -FUN_020AEDF4: ; 0x020AEDF4 - stmdb sp!, {r4,lr} - ldr r2, _020AEE2C ; =UNK_021CCD4C - mov r4, r1 - str r0, [r2, #0x8] - bl FUN_020AEC60 - cmp r4, #0x0 - ldmeqia sp!, {r4,pc} - ldr r3, _020AEE30 ; =FUN_020AECBC - ldr r1, _020AEE34 ; =UNK_021064C0 - ldr r2, _020AEE38 ; =FUN_020AECB4 - ldr r0, _020AEE3C ; =UNK_021064C4 - str r3, [r1, #0x0] - str r2, [r0, #0x0] - ldmia sp!, {r4,pc} - .balign 4 -_020AEE2C: .word UNK_021CCD4C -_020AEE30: .word FUN_020AECBC -_020AEE34: .word UNK_021064C0 -_020AEE38: .word FUN_020AECB4 -_020AEE3C: .word UNK_021064C4 - - arm_func_start FUN_020AEE40 -FUN_020AEE40: ; 0x020AEE40 - stmdb sp!, {r4-r9,lr} - sub sp, sp, #0x4 - ldr r5, _020AEEB4 ; =UNK_021CCD58 - mov r9, r0 - mov r0, r5 - mov r8, r1 - mov r7, r2 - mov r6, r3 - bl FUN_020AF2F4 - cmp r0, #0x0 - addne sp, sp, #0x4 - movne r0, #0x0 - ldmneia sp!, {r4-r9,pc} - mov r0, r5 - bl FUN_020AEF78 - mov r4, r0 - str r9, [r4, #0x0] - str r7, [r4, #0x4] - str r8, [r4, #0x8] - mov r0, r5 - str r6, [r4, #0xc] - bl FUN_020AEF98 - ldr r2, [r5, #0x10] - ldr r1, [r4, #0xc] - mov r0, #0x1 - add r1, r2, r1 - str r1, [r5, #0x10] - add sp, sp, #0x4 - ldmia sp!, {r4-r9,pc} - .balign 4 -_020AEEB4: .word UNK_021CCD58 - - arm_func_start FUN_020AEEB8 -FUN_020AEEB8: ; 0x020AEEB8 - stmdb sp!, {r4-r6,lr} - ldr r6, _020AEF18 ; =UNK_021CCD58 - mov r0, r6 - bl FUN_020AEF88 - mov r5, r0 - mov r0, r6 - bl FUN_020AEF3C - cmp r0, #0x0 - ldmeqia sp!, {r4-r6,pc} - add r4, r6, #0x10 -_020AEEE0: - mov r0, r5 - bl FUN_020AEFF0 - ldr r2, [r4, #0x0] - ldr r1, [r5, #0xc] - mov r0, r6 - sub r1, r2, r1 - str r1, [r4, #0x0] - bl FUN_020AEF88 - mov r5, r0 - mov r0, r6 - bl FUN_020AEF3C - cmp r0, #0x0 - bne _020AEEE0 - ldmia sp!, {r4-r6,pc} - .balign 4 -_020AEF18: .word UNK_021CCD58 - - arm_func_start FUN_020AEF1C -FUN_020AEF1C: ; 0x020AEF1C - ldr r2, _020AEF34 ; =UNK_021CCD58 - ldr ip, _020AEF38 ; =FUN_020AEFD4 - str r0, [r2, #0x0] - mov r0, r2 - str r1, [r2, #0x4] - bx r12 - .balign 4 -_020AEF34: .word UNK_021CCD58 -_020AEF38: .word FUN_020AEFD4 - - arm_func_start FUN_020AEF3C -FUN_020AEF3C: - stmdb sp!, {r4,lr} - mov r4, r0 - bl FUN_020AF2E0 - cmp r0, #0x0 - movne r0, #0x0 - ldmneia sp!, {r4,pc} - ldrh r1, [r4, #0x8] - mov r0, r4 - bl FUN_020AF30C - strh r0, [r4, #0x8] - ldrh r1, [r4, #0xc] - mov r0, #0x1 - sub r1, r1, #0x1 - strh r1, [r4, #0xc] - ldmia sp!, {r4,pc} - - arm_func_start FUN_020AEF78 -FUN_020AEF78: ; 0x020AEF78 - ldrh r1, [r0, #0xa] - ldr r0, [r0, #0x0] - add r0, r0, r1, lsl #0x4 - bx lr - - arm_func_start FUN_020AEF88 -FUN_020AEF88: ; 0x020AEF88 - ldrh r1, [r0, #0x8] - ldr r0, [r0, #0x0] - add r0, r0, r1, lsl #0x4 - bx lr - - arm_func_start FUN_020AEF98 -FUN_020AEF98: ; 0x020AEF98 - stmdb sp!, {r4,lr} - mov r4, r0 - bl FUN_020AF2F4 - cmp r0, #0x0 - movne r0, #0x0 - ldmneia sp!, {r4,pc} - ldrh r1, [r4, #0xa] - mov r0, r4 - bl FUN_020AF30C - strh r0, [r4, #0xa] - ldrh r1, [r4, #0xc] - mov r0, #0x1 - add r1, r1, #0x1 - strh r1, [r4, #0xc] - ldmia sp!, {r4,pc} - - arm_func_start FUN_020AEFD4 -FUN_020AEFD4: ; 0x020AEFD4 - mov r2, #0x0 - strh r2, [r0, #0xa] - ldrh r1, [r0, #0xa] - strh r1, [r0, #0x8] - strh r2, [r0, #0xc] - str r2, [r0, #0x10] - bx lr - - arm_func_start FUN_020AEFF0 -FUN_020AEFF0: ; 0x020AEFF0 - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - mov r5, r0 - ldr r3, [r5, #0x0] - ldr r2, _020AF02C ; =UNK_020FF7D4 - ldr r0, [r5, #0x4] - ldr r1, [r5, #0xc] - ldr r4, [r2, r3, lsl #0x2] - bl DC_FlushRange - ldr r0, [r5, #0x4] - ldr r1, [r5, #0x8] - ldr r2, [r5, #0xc] - blx r4 - add sp, sp, #0x4 - ldmia sp!, {r4-r5,pc} - .balign 4 -_020AF02C: .word UNK_020FF7D4 - - arm_func_start GXS_LoadOBJ_2 -GXS_LoadOBJ_2: - ldr ip, _020AF038 ; =GXS_LoadOBJ - bx r12 - .balign 4 -_020AF038: .word GXS_LoadOBJ - - arm_func_start GXS_LoadOAM_2 -GXS_LoadOAM_2: ; 0x020AF03C - ldr ip, _020AF044 ; =GXS_LoadOAM - bx r12 - .balign 4 -_020AF044: .word GXS_LoadOAM - - arm_func_start FUN_020AF048 -FUN_020AF048: ; 0x020AF048 - stmdb sp!, {r4-r6,lr} - mov r6, r0 - mov r5, r1 - mov r4, r2 - bl GXS_BeginLoadBGExtPltt - mov r0, r6 - mov r1, r5 - mov r2, r4 - bl GXS_LoadBGExtPltt - bl GXS_EndLoadBGExtPltt - ldmia sp!, {r4-r6,pc} - - arm_func_start FUN_020AF074 -FUN_020AF074: ; 0x020AF074 - stmdb sp!, {r4-r6,lr} - mov r6, r0 - mov r5, r1 - mov r4, r2 - bl GXS_BeginLoadOBJExtPltt - mov r0, r6 - mov r1, r5 - mov r2, r4 - bl GXS_LoadOBJExtPltt - bl GXS_EndLoadOBJExtPltt - ldmia sp!, {r4-r6,pc} - - arm_func_start GXS_LoadBGPltt_2 -GXS_LoadBGPltt_2: ; 0x020AF0A0 - ldr ip, _020AF0A8 ; =GXS_LoadBGPltt - bx r12 - .balign 4 -_020AF0A8: .word GXS_LoadBGPltt - - arm_func_start GXS_LoadOBJPltt_2 -GXS_LoadOBJPltt_2: ; 0x020AF0AC - ldr ip, _020AF0B4 ; =GXS_LoadOBJPltt - bx r12 - .balign 4 -_020AF0B4: .word GXS_LoadOBJPltt - - arm_func_start GXS_LoadBG3Scr_3 -GXS_LoadBG3Scr_3: ; 0x020AF0B8 - ldr ip, _020AF0C0 ; =GXS_LoadBG3Scr - bx r12 - .balign 4 -_020AF0C0: .word GXS_LoadBG3Scr - - arm_func_start GXS_LoadBG2Scr_3 -GXS_LoadBG2Scr_3: ; 0x020AF0C4 - ldr ip, _020AF0CC ; =GXS_LoadBG2Scr - bx r12 - .balign 4 -_020AF0CC: .word GXS_LoadBG2Scr - - arm_func_start GXS_LoadBG3Scr_2 -GXS_LoadBG3Scr_2: ; 0x020AF0D0 - ldr ip, _020AF0D8 ; =GXS_LoadBG3Scr - bx r12 - .balign 4 -_020AF0D8: .word GXS_LoadBG3Scr - - arm_func_start GXS_LoadBG2Scr_2 -GXS_LoadBG2Scr_2: ; 0x020AF0DC - ldr ip, _020AF0E4 ; =GXS_LoadBG2Scr - bx r12 - .balign 4 -_020AF0E4: .word GXS_LoadBG2Scr - - arm_func_start GXS_LoadBG1Scr_2 -GXS_LoadBG1Scr_2: ; 0x020AF0E8 - ldr ip, _020AF0F0 ; =GXS_LoadBG1Scr - bx r12 - .balign 4 -_020AF0F0: .word GXS_LoadBG1Scr - - arm_func_start GXS_LoadBG0Scr_2 -GXS_LoadBG0Scr_2: ; 0x020AF0F4 - ldr ip, _020AF0FC ; =GXS_LoadBG0Scr - bx r12 - .balign 4 -_020AF0FC: .word GXS_LoadBG0Scr - - arm_func_start GXS_LoadBG3Char_2 -GXS_LoadBG3Char_2: ; 0x020AF100 - ldr ip, _020AF108 ; =GXS_LoadBG3Char - bx r12 - .balign 4 -_020AF108: .word GXS_LoadBG3Char - - arm_func_start GXS_LoadBG2Char_2 -GXS_LoadBG2Char_2: ; 0x020AF10C - ldr ip, _020AF114 ; =GXS_LoadBG2Char - bx r12 - .balign 4 -_020AF114: .word GXS_LoadBG2Char - - arm_func_start GXS_LoadBG1Char_2 -GXS_LoadBG1Char_2: ; 0x020AF118 - ldr ip, _020AF120 ; =GXS_LoadBG1Char - bx r12 - .balign 4 -_020AF120: .word GXS_LoadBG1Char - - arm_func_start GXS_LoadBG0Char_2 -GXS_LoadBG0Char_2: ; 0x020AF124 - ldr ip, _020AF12C ; =GXS_LoadBG0Char - bx r12 - .balign 4 -_020AF12C: .word GXS_LoadBG0Char - - arm_func_start GX_LoadOBJ_2 -GX_LoadOBJ_2: ; 0x020AF130 - ldr ip, _020AF138 ; =GX_LoadOBJ - bx r12 - .balign 4 -_020AF138: .word GX_LoadOBJ - - arm_func_start GX_LoadOAM_2 -GX_LoadOAM_2: ; 0x020AF13C - ldr ip, _020AF144 ; =GX_LoadOAM - bx r12 - .balign 4 -_020AF144: .word GX_LoadOAM - - arm_func_start FUN_020AF148 -FUN_020AF148: ; 0x020AF148 - stmdb sp!, {r4-r6,lr} - mov r6, r0 - mov r5, r1 - mov r4, r2 - bl GX_BeginLoadBGExtPltt - mov r0, r6 - mov r1, r5 - mov r2, r4 - bl GX_LoadBGExtPltt - bl GX_EndLoadBGExtPltt - ldmia sp!, {r4-r6,pc} - - arm_func_start FUN_020AF174 -FUN_020AF174: ; 0x020AF174 - stmdb sp!, {r4-r6,lr} - mov r6, r0 - mov r5, r1 - mov r4, r2 - bl GX_BeginLoadOBJExtPltt - mov r0, r6 - mov r1, r5 - mov r2, r4 - bl GX_LoadOBJExtPltt - bl GX_EndLoadOBJExtPltt - ldmia sp!, {r4-r6,pc} - - arm_func_start GX_LoadBGPltt_2 -GX_LoadBGPltt_2: ; 0x020AF1A0 - ldr ip, _020AF1A8 ; =GX_LoadBGPltt - bx r12 - .balign 4 -_020AF1A8: .word GX_LoadBGPltt - - arm_func_start GX_LoadOBJPltt_2 -GX_LoadOBJPltt_2: ; 0x020AF1AC - ldr ip, _020AF1B4 ; =GX_LoadOBJPltt - bx r12 - .balign 4 -_020AF1B4: .word GX_LoadOBJPltt - - arm_func_start GX_LoadBG3Scr_3 -GX_LoadBG3Scr_3: ; 0x020AF1B8 - ldr ip, _020AF1C0 ; =GX_LoadBG3Scr - bx r12 - .balign 4 -_020AF1C0: .word GX_LoadBG3Scr - - arm_func_start GX_LoadBG2Scr_3 -GX_LoadBG2Scr_3: ; 0x020AF1C4 - ldr ip, _020AF1CC ; =GX_LoadBG2Scr - bx r12 - .balign 4 -_020AF1CC: .word GX_LoadBG2Scr - - arm_func_start GX_LoadBG3Scr_2 -GX_LoadBG3Scr_2: ; 0x020AF1D0 - ldr ip, _020AF1D8 ; =GX_LoadBG3Scr - bx r12 - .balign 4 -_020AF1D8: .word GX_LoadBG3Scr - - arm_func_start GX_LoadBG2Scr_2 -GX_LoadBG2Scr_2: ; 0x020AF1DC - ldr ip, _020AF1E4 ; =GX_LoadBG2Scr - bx r12 - .balign 4 -_020AF1E4: .word GX_LoadBG2Scr - - arm_func_start GX_LoadBG1Scr_2 -GX_LoadBG1Scr_2: ; 0x020AF1E8 - ldr ip, _020AF1F0 ; =GX_LoadBG1Scr - bx r12 - .balign 4 -_020AF1F0: .word GX_LoadBG1Scr - - arm_func_start GX_LoadBG0Scr_2 -GX_LoadBG0Scr_2: ; 0x020AF1F4 - ldr ip, _020AF1FC ; =GX_LoadBG0Scr - bx r12 - .balign 4 -_020AF1FC: .word GX_LoadBG0Scr - - arm_func_start GX_LoadBG3Char_2 -GX_LoadBG3Char_2: ; 0x020AF200 - ldr ip, _020AF208 ; =GX_LoadBG3Char - bx r12 - .balign 4 -_020AF208: .word GX_LoadBG3Char - - arm_func_start GX_LoadBG2Char_2 -GX_LoadBG2Char_2: ; 0x020AF20C - ldr ip, _020AF214 ; =GX_LoadBG2Char - bx r12 - .balign 4 -_020AF214: .word GX_LoadBG2Char - - arm_func_start GX_LoadBG1Char_2 -GX_LoadBG1Char_2: ; 0x020AF218 - ldr ip, _020AF220 ; =GX_LoadBG1Char - bx r12 - .balign 4 -_020AF220: .word GX_LoadBG1Char - - arm_func_start GX_LoadBG0Char_2 -GX_LoadBG0Char_2: ; 0x020AF224 - ldr ip, _020AF22C ; =GX_LoadBG0Char - bx r12 - .balign 4 -_020AF22C: .word GX_LoadBG0Char - - arm_func_start FUN_020AF230 -FUN_020AF230: ; 0x020AF230 - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - mov r5, r0 - mov r4, r2 - bl GX_BeginLoadClearImage - mov r0, r5 - mov r1, r4 - bl GX_LoadClearImageDepth - bl GX_EndLoadClearImage - add sp, sp, #0x4 - ldmia sp!, {r4-r5,pc} - - arm_func_start FUN_020AF25C -FUN_020AF25C: ; 0x020AF25C - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - mov r5, r0 - mov r4, r2 - bl GX_BeginLoadClearImage - mov r0, r5 - mov r1, r4 - bl GX_LoadClearImageColor - bl GX_EndLoadClearImage - add sp, sp, #0x4 - ldmia sp!, {r4-r5,pc} - - arm_func_start FUN_020AF288 -FUN_020AF288: ; 0x020AF288 - stmdb sp!, {r4-r6,lr} - mov r6, r0 - mov r5, r1 - mov r4, r2 - bl GX_BeginLoadTexPltt - mov r0, r6 - mov r1, r5 - mov r2, r4 - bl GX_LoadTexPltt - bl GX_EndLoadTexPltt - ldmia sp!, {r4-r6,pc} - - arm_func_start FUN_020AF2B4 -FUN_020AF2B4: ; 0x020AF2B4 - stmdb sp!, {r4-r6,lr} - mov r6, r0 - mov r5, r1 - mov r4, r2 - bl GX_BeginLoadTex - mov r0, r6 - mov r1, r5 - mov r2, r4 - bl GX_LoadTex - bl GX_EndLoadTex - ldmia sp!, {r4-r6,pc} - - arm_func_start FUN_020AF2E0 -FUN_020AF2E0: ; 0x020AF2E0 - ldrh r0, [r0, #0xc] - cmp r0, #0x0 - moveq r0, #0x1 - movne r0, #0x0 - bx lr - - arm_func_start FUN_020AF2F4 -FUN_020AF2F4: ; 0x020AF2F4 - ldrh r1, [r0, #0xc] - ldr r0, [r0, #0x4] - cmp r1, r0 - moveq r0, #0x1 - movne r0, #0x0 - bx lr - - arm_func_start FUN_020AF30C -FUN_020AF30C: ; 0x020AF30C - stmdb sp!, {lr} - sub sp, sp, #0x4 - mov r2, r0 - add r0, r1, #0x1 - ldr r1, [r2, #0x4] - bl _u32_div_f - mov r0, r1, lsl #0x10 - mov r0, r0, lsr #0x10 - add sp, sp, #0x4 - ldmia sp!, {pc} - - arm_func_start FUN_020AF334 -FUN_020AF334: - stmdb sp!, {r4-r6,lr} - sub sp, sp, #0x10 - add r3, r2, r3 - str r2, [sp, #0x0] - str r2, [sp, #0x8] - str r3, [sp, #0x4] - str r3, [sp, #0xc] - ldr r3, [r0, #0x0] - add r12, sp, #0x0 - cmp r3, #0x0 - beq _020AF418 - mov r6, #0x0 -_020AF364: - ldr r5, [r3, #0x0] - ldr r4, [r12, #0x4] - ldr r2, [r3, #0xc] - cmp r5, r4 - bne _020AF3B8 - ldr r4, [r3, #0x4] - add r4, r5, r4 - str r4, [sp, #0xc] - ldr r4, [r3, #0x8] - cmp r4, #0x0 - strne r2, [r4, #0xc] - streq r2, [r0, #0x0] - cmp r2, #0x0 - strne r4, [r2, #0x8] - ldr r4, [r1, #0x0] - cmp r4, #0x0 - strne r3, [r4, #0x8] - ldr r4, [r1, #0x0] - str r4, [r3, #0xc] - str r6, [r3, #0x8] - str r3, [r1, #0x0] -_020AF3B8: - ldr r5, [r3, #0x0] - ldr lr, [r3, #0x4] - ldr r4, [r12, #0x0] - add lr, r5, lr - cmp r4, lr - bne _020AF40C - str r5, [sp, #0x8] - ldr r5, [r3, #0x8] - ldr r4, [r3, #0xc] - cmp r5, #0x0 - strne r4, [r5, #0xc] - streq r4, [r0, #0x0] - cmp r4, #0x0 - strne r5, [r4, #0x8] - ldr lr, [r1, #0x0] - cmp lr, #0x0 - strne r3, [lr, #0x8] - ldr lr, [r1, #0x0] - str lr, [r3, #0xc] - str r6, [r3, #0x8] - str r3, [r1, #0x0] -_020AF40C: - mov r3, r2 - cmp r2, #0x0 - bne _020AF364 -_020AF418: - ldr r4, [r1, #0x0] - cmp r4, #0x0 - ldrne r2, [r4, #0xc] - strne r2, [r1, #0x0] - cmp r4, #0x0 - addeq sp, sp, #0x10 - moveq r0, #0x0 - ldmeqia sp!, {r4-r6,pc} - ldr r2, [sp, #0x8] - mov r1, #0x0 - str r2, [r4, #0x0] - ldr r3, [sp, #0xc] - ldr r2, [sp, #0x8] - sub r2, r3, r2 - str r2, [r4, #0x4] - str r1, [r4, #0x8] - str r1, [r4, #0xc] - ldr r1, [r0, #0x0] - cmp r1, #0x0 - strne r4, [r1, #0x8] - ldr r2, [r0, #0x0] - mov r1, #0x0 - str r2, [r4, #0xc] - str r1, [r4, #0x8] - str r4, [r0, #0x0] - mov r0, #0x1 - add sp, sp, #0x10 - ldmia sp!, {r4-r6,pc} - - arm_func_start FUN_020AF488 -FUN_020AF488: - stmdb sp!, {r4-r10,lr} - ldr r4, [r0, #0x0] - ldr r9, [sp, #0x20] - cmp r4, #0x0 - mov r5, #0x0 - beq _020AF4EC - sub r12, r9, #0x1 - mvn lr, r12 -_020AF4A8: - cmp r9, #0x1 - ldrls r8, [r4, #0x0] - movls r6, r5 - movls r7, r3 - bls _020AF4D0 - ldr r7, [r4, #0x0] - add r6, r7, r12 - and r8, lr, r6 - sub r6, r8, r7 - add r7, r3, r6 -_020AF4D0: - ldr r10, [r4, #0x4] - cmp r10, r7 - movcs r5, r4 - bhs _020AF4EC - ldr r4, [r4, #0xc] - cmp r4, #0x0 - bne _020AF4A8 -_020AF4EC: - cmp r5, #0x0 - beq _020AF5B8 - cmp r6, #0x0 - beq _020AF54C - ldr r9, [r1, #0x0] - cmp r9, #0x0 - ldrne r3, [r9, #0xc] - strne r3, [r1, #0x0] - cmp r9, #0x0 - beq _020AF5B8 - ldr r4, [r5, #0x0] - mov r3, #0x0 - str r4, [r9, #0x0] - str r6, [r9, #0x4] - str r3, [r9, #0x8] - str r3, [r9, #0xc] - ldr r3, [r0, #0x0] - cmp r3, #0x0 - strne r9, [r3, #0x8] - ldr r4, [r0, #0x0] - mov r3, #0x0 - str r4, [r9, #0xc] - str r3, [r9, #0x8] - str r9, [r0, #0x0] -_020AF54C: - ldr r3, [r5, #0x4] - sub r3, r3, r7 - str r3, [r5, #0x4] - ldr r3, [r5, #0x0] - add r3, r3, r7 - str r3, [r5, #0x0] - ldr r3, [r5, #0x4] - cmp r3, #0x0 - bne _020AF5AC - ldr r4, [r5, #0x8] - ldr r3, [r5, #0xc] - cmp r4, #0x0 - strne r3, [r4, #0xc] - streq r3, [r0, #0x0] - cmp r3, #0x0 - strne r4, [r3, #0x8] - ldr r0, [r1, #0x0] - cmp r0, #0x0 - strne r5, [r0, #0x8] - ldr r3, [r1, #0x0] - mov r0, #0x0 - str r3, [r5, #0xc] - str r0, [r5, #0x8] - str r5, [r1, #0x0] -_020AF5AC: - str r8, [r2, #0x0] - mov r0, #0x1 - ldmia sp!, {r4-r10,pc} -_020AF5B8: - mov r0, #0x0 - str r0, [r2, #0x0] - ldmia sp!, {r4-r10,pc} - - arm_func_start FUN_020AF5C4 -FUN_020AF5C4: - stmdb sp!, {lr} - sub sp, sp, #0x4 - mov r12, #0x0 - str r12, [sp, #0x0] - bl FUN_020AF488 - add sp, sp, #0x4 - ldmia sp!, {pc} - - arm_func_start FUN_020AF5E0 -FUN_020AF5E0: ; 0x020AF5E0 - stmdb sp!, {lr} - sub sp, sp, #0x4 - ldr lr, [r1, #0x0] - cmp lr, #0x0 - ldrne r12, [lr, #0xc] - strne r12, [r1, #0x0] - cmp lr, #0x0 - beq _020AF640 - str r2, [lr, #0x0] - str r3, [lr, #0x4] - mov r1, #0x0 - str r1, [lr, #0x8] - str r1, [lr, #0xc] - ldr r1, [r0, #0x0] - add sp, sp, #0x4 - cmp r1, #0x0 - strne lr, [r1, #0x8] - ldr r2, [r0, #0x0] - mov r1, #0x0 - str r2, [lr, #0xc] - str r1, [lr, #0x8] - str lr, [r0, #0x0] - mov r0, #0x1 - ldmia sp!, {pc} -_020AF640: - mov r0, #0x0 - add sp, sp, #0x4 - ldmia sp!, {pc} - - arm_func_start FUN_020AF64C -FUN_020AF64C: ; 0x020AF64C - stmdb sp!, {r4,lr} - subs lr, r1, #0x1 - mov r2, #0x0 - beq _020AF684 - mov r4, r0 -_020AF660: - add r12, r2, #0x1 - add r2, r0, r2, lsl #0x4 - add r3, r0, r12, lsl #0x4 - str r3, [r2, #0xc] - str r4, [r3, #0x8] - mov r2, r12 - cmp r12, lr - add r4, r4, #0x10 - blo _020AF660 -_020AF684: - mov r2, #0x0 - str r2, [r0, #0x8] - add r1, r0, r1, lsl #0x4 - str r2, [r1, #-0x4] - ldmia sp!, {r4,pc} - - arm_func_start FUN_020AF698 -FUN_020AF698: ; 0x020AF698 - mov r1, #0x0 - str r1, [r0, #0x0] - bx lr - - arm_func_start FUN_020AF6A4 -FUN_020AF6A4: ; 0x020AF6A4 - stmdb sp!, {r4-r6,lr} - sub sp, sp, #0x30 - ldr r6, _020AF884 ; =UNK_020FF864 - add r5, sp, #0x0 - ldmia r6!, {r0-r3} - mov r12, r5 - stmia r5!, {r0-r3} - ldmia r6!, {r0-r3} - stmia r5!, {r0-r3} - ldr r4, _020AF888 ; =UNK_021CCD6C - ldmia r6, {r0-r3} - stmia r5, {r0-r3} - ldr lr, [r4, #0x10] - ldr r1, [r4, #0xc] - add r0, lr, lr, lsr #0x1 - mov r4, lr, lsr #0x1 - sub r0, r1, r0 - mov r3, #0x0 -_020AF6EC: - cmp r3, #0x0 - beq _020AF6FC - cmp r3, #0x2 - bne _020AF734 -_020AF6FC: - ldr r2, [r12, #0x0] - cmp r2, #0x0 - beq _020AF734 - cmp lr, #0x0 - beq _020AF734 - ldr r1, [r12, #0x8] - cmp r2, lr - movhi r2, lr - add r1, r1, r2 - str r1, [r12, #0x8] - ldr r1, [r12, #0x0] - sub lr, lr, r2 - sub r1, r1, r2 - str r1, [r12, #0x0] -_020AF734: - add r3, r3, #0x1 - cmp r3, #0x4 - add r12, r12, #0xc - blo _020AF6EC - ldr r1, [sp, #0xc] - add r5, sp, #0x0 - sub r1, r1, r4 - str r1, [sp, #0xc] - mov r3, #0x0 -_020AF758: - ldr r2, [r5, #0x0] - cmp r2, #0x0 - beq _020AF790 - cmp r0, #0x0 - beq _020AF790 - ldr r1, [r5, #0x4] - cmp r2, r0 - movhi r2, r0 - add r1, r1, r2 - str r1, [r5, #0x4] - ldr r1, [r5, #0x0] - sub r0, r0, r2 - sub r1, r1, r2 - str r1, [r5, #0x0] -_020AF790: - add r3, r3, #0x1 - cmp r3, #0x4 - add r5, r5, #0xc - blo _020AF758 - ldr r0, _020AF888 ; =UNK_021CCD6C - bl FUN_020AF698 - ldr r0, _020AF88C ; =UNK_021CCD70 - bl FUN_020AF698 - ldr r0, _020AF888 ; =UNK_021CCD6C - ldr r1, [r0, #0x18] - ldr r0, [r0, #0x14] - mov r1, r1, lsr #0x4 - bl FUN_020AF64C - ldr r3, [sp, #0x8] - ldr r1, _020AF888 ; =UNK_021CCD6C - cmp r3, #0x0 - str r0, [r1, #0x8] - beq _020AF7E8 - ldr r0, _020AF88C ; =UNK_021CCD70 - ldr r1, _020AF890 ; =UNK_021CCD74 - mov r2, #0x0 - bl FUN_020AF5E0 -_020AF7E8: - ldr r3, [sp, #0x4] - ldr r2, [sp, #0x8] - cmp r3, #0x0 - beq _020AF804 - ldr r0, _020AF888 ; =UNK_021CCD6C - ldr r1, _020AF890 ; =UNK_021CCD74 - bl FUN_020AF5E0 -_020AF804: - ldr r3, [sp, #0x20] - cmp r3, #0x0 - beq _020AF820 - ldr r0, _020AF88C ; =UNK_021CCD70 - ldr r1, _020AF890 ; =UNK_021CCD74 - mov r2, #0x40000 - bl FUN_020AF5E0 -_020AF820: - ldr r3, [sp, #0x1c] - ldr r0, [sp, #0x20] - cmp r3, #0x0 - add r2, r0, #0x40000 - beq _020AF840 - ldr r0, _020AF888 ; =UNK_021CCD6C - ldr r1, _020AF890 ; =UNK_021CCD74 - bl FUN_020AF5E0 -_020AF840: - ldr r3, [sp, #0x28] - cmp r3, #0x0 - beq _020AF85C - ldr r0, _020AF888 ; =UNK_021CCD6C - ldr r1, _020AF890 ; =UNK_021CCD74 - mov r2, #0x60000 - bl FUN_020AF5E0 -_020AF85C: - ldr r3, [sp, #0x10] - cmp r3, #0x0 - addeq sp, sp, #0x30 - ldmeqia sp!, {r4-r6,pc} - ldr r0, _020AF888 ; =UNK_021CCD6C - ldr r1, _020AF890 ; =UNK_021CCD74 - add r2, r4, #0x20000 - bl FUN_020AF5E0 - add sp, sp, #0x30 - ldmia sp!, {r4-r6,pc} - .balign 4 -_020AF884: .word UNK_020FF864 -_020AF888: .word UNK_021CCD6C -_020AF88C: .word UNK_021CCD70 -_020AF890: .word UNK_021CCD74 - - arm_func_start FUN_020AF894 -FUN_020AF894: ; 0x020AF894 - stmdb sp!, {lr} - sub sp, sp, #0x4 - ldr r2, _020AF908 ; =0x7FFF0000 - ldr r1, _020AF90C ; =0x0000FFFF - and r2, r0, r2 - and r3, r0, r1 - mov r1, r2, lsr #0x10 - and r0, r0, #0x80000000 - mov r2, r3, lsl #0x3 - movs r3, r1, lsl #0x4 - mov r0, r0, lsr #0x1f - beq _020AF8FC - cmp r0, #0x0 - beq _020AF8DC - ldr r0, _020AF910 ; =UNK_021CCD70 - ldr r1, _020AF914 ; =UNK_021CCD74 - bl FUN_020AF334 - b _020AF8E8 -_020AF8DC: - ldr r0, _020AF918 ; =UNK_021CCD6C - ldr r1, _020AF914 ; =UNK_021CCD74 - bl FUN_020AF334 -_020AF8E8: - cmp r0, #0x0 - movne r0, #0x0 - add sp, sp, #0x4 - moveq r0, #0x1 - ldmia sp!, {pc} -_020AF8FC: - mov r0, #0x2 - add sp, sp, #0x4 - ldmia sp!, {pc} - .balign 4 -_020AF908: .word 0x7FFF0000 -_020AF90C: .word 0x0000FFFF -_020AF910: .word UNK_021CCD70 -_020AF914: .word UNK_021CCD74 -_020AF918: .word UNK_021CCD6C - - arm_func_start FUN_020AF91C -FUN_020AF91C: ; 0x020AF91C - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - cmp r0, #0x0 - moveq r5, #0x10 - addne r0, r0, #0xf - bicne r5, r0, #0xf - ldr r0, _020AF9B0 ; =0x0007FFF0 - mov r4, r1 - cmp r5, r0 - addcs sp, sp, #0x4 - movcs r0, #0x0 - ldmcsia sp!, {r4-r5,pc} - cmp r4, #0x0 - beq _020AF96C - ldr r0, _020AF9B4 ; =UNK_021CCD70 - ldr r1, _020AF9B8 ; =UNK_021CCD74 - add r2, sp, #0x0 - mov r3, r5 - bl FUN_020AF5C4 - b _020AF980 -_020AF96C: - ldr r0, _020AF9BC ; =UNK_021CCD6C - ldr r1, _020AF9B8 ; =UNK_021CCD74 - add r2, sp, #0x0 - mov r3, r5 - bl FUN_020AF5C4 -_020AF980: - cmp r0, #0x0 - addeq sp, sp, #0x4 - moveq r0, #0x0 - ldmeqia sp!, {r4-r5,pc} - ldr r1, [sp, #0x0] - ldr r0, _020AF9C0 ; =0x0000FFFF - mov r2, r5, lsr #0x4 - and r0, r0, r1, lsr #0x3 - orr r0, r0, r2, lsl #0x10 - orr r0, r0, r4, lsl #0x1f - add sp, sp, #0x4 - ldmia sp!, {r4-r5,pc} - .balign 4 -_020AF9B0: .word 0x0007FFF0 -_020AF9B4: .word UNK_021CCD70 -_020AF9B8: .word UNK_021CCD74 -_020AF9BC: .word UNK_021CCD6C -_020AF9C0: .word 0x0000FFFF - - arm_func_start FUN_020AF9C4 -FUN_020AF9C4: ; 0x020AF9C4 - stmdb sp!, {lr} - sub sp, sp, #0x4 - ldr ip, _020AFA14 ; =UNK_021CCD6C - str r0, [r12, #0xc] - str r1, [r12, #0x10] - str r2, [r12, #0x14] - str r3, [r12, #0x18] - bl FUN_020AF6A4 - ldr r0, [sp, #0x8] - cmp r0, #0x0 - addeq sp, sp, #0x4 - ldmeqia sp!, {pc} - ldr r3, _020AFA18 ; =FUN_020AF91C - ldr r1, _020AFA1C ; =UNK_021064B8 - ldr r2, _020AFA20 ; =FUN_020AF894 - ldr r0, _020AFA24 ; =UNK_021064BC - str r3, [r1, #0x0] - str r2, [r0, #0x0] - add sp, sp, #0x4 - ldmia sp!, {pc} - .balign 4 -_020AFA14: .word UNK_021CCD6C -_020AFA18: .word FUN_020AF91C -_020AFA1C: .word UNK_021064B8 -_020AFA20: .word FUN_020AF894 -_020AFA24: .word UNK_021064BC - - arm_func_start FUN_020AFA28 -FUN_020AFA28: ; 0x020AFA28 - mov r0, r0, lsl #0x4 - bx lr - - arm_func_start FUN_020AFA30 -FUN_020AFA30: - stmdb sp!, {lr} - sub sp, sp, #0x4 - ldr r0, _020AFA78 ; =UNK_021CCD88 - ldr r1, [r0, #0x10] - ldr r0, [r0, #0xc] - mov r1, r1, lsr #0x4 - bl FUN_020AF64C - ldr r1, _020AFA78 ; =UNK_021CCD88 - str r0, [r1, #0x4] - mov r0, r1 - bl FUN_020AF698 - ldr r0, _020AFA78 ; =UNK_021CCD88 - ldr r1, _020AFA7C ; =UNK_021CCD8C - ldr r3, [r0, #0x8] - mov r2, #0x0 - bl FUN_020AF5E0 - add sp, sp, #0x4 - ldmia sp!, {pc} - .balign 4 -_020AFA78: .word UNK_021CCD88 -_020AFA7C: .word UNK_021CCD8C - - arm_func_start FUN_020AFA80 -FUN_020AFA80: ; 0x020AFA80 - stmdb sp!, {lr} - sub sp, sp, #0x4 - mov r1, #0x10000 - rsb r2, r1, #0x0 - ldr r1, _020AFAC8 ; =0x0000FFFF - and r2, r0, r2 - and r12, r0, r1 - mov r3, r2, lsr #0x10 - ldr r0, _020AFACC ; =UNK_021CCD88 - ldr r1, _020AFAD0 ; =UNK_021CCD8C - mov r2, r12, lsl #0x3 - mov r3, r3, lsl #0x3 - bl FUN_020AF334 - cmp r0, #0x0 - moveq r0, #0x1 - movne r0, #0x0 - add sp, sp, #0x4 - ldmia sp!, {pc} - .balign 4 -_020AFAC8: .word 0x0000FFFF -_020AFACC: .word UNK_021CCD88 -_020AFAD0: .word UNK_021CCD8C - - arm_func_start FUN_020AFAD4 -FUN_020AFAD4: ; 0x020AFAD4 - stmdb sp!, {r4,lr} - sub sp, sp, #0x8 - cmp r0, #0x0 - moveq r4, #0x8 - addne r0, r0, #0x7 - bicne r4, r0, #0x7 - ldr r0, _020AFB98 ; =0x0007FFF8 - cmp r4, r0 - addcs sp, sp, #0x8 - movcs r0, #0x0 - ldmcsia sp!, {r4,pc} - cmp r1, #0x0 - beq _020AFB50 - mov r12, #0x8 - ldr r0, _020AFB9C ; =UNK_021CCD88 - ldr r1, _020AFBA0 ; =UNK_021CCD8C - add r2, sp, #0x4 - mov r3, r4 - str r12, [sp, #0x0] - bl FUN_020AF488 - ldr r2, [sp, #0x4] - add r1, r2, r4 - cmp r1, #0x10000 - bls _020AFB6C - ldr r0, _020AFB9C ; =UNK_021CCD88 - ldr r1, _020AFBA0 ; =UNK_021CCD8C - mov r3, r4 - bl FUN_020AF334 - add sp, sp, #0x8 - mov r0, #0x0 - ldmia sp!, {r4,pc} -_020AFB50: - ldr r0, _020AFB9C ; =UNK_021CCD88 - mov r12, #0x10 - ldr r1, _020AFBA0 ; =UNK_021CCD8C - add r2, sp, #0x4 - mov r3, r4 - str r12, [sp, #0x0] - bl FUN_020AF488 -_020AFB6C: - cmp r0, #0x0 - addeq sp, sp, #0x8 - moveq r0, #0x0 - ldmeqia sp!, {r4,pc} - ldr r1, [sp, #0x4] - ldr r0, _020AFBA4 ; =0x0000FFFF - mov r2, r4, lsr #0x3 - and r0, r0, r1, lsr #0x3 - orr r0, r0, r2, lsl #0x10 - add sp, sp, #0x8 - ldmia sp!, {r4,pc} - .balign 4 -_020AFB98: .word 0x0007FFF8 -_020AFB9C: .word UNK_021CCD88 -_020AFBA0: .word UNK_021CCD8C -_020AFBA4: .word 0x0000FFFF - - arm_func_start FUN_020AFBA8 -FUN_020AFBA8: ; 0x020AFBA8 - stmdb sp!, {r4,lr} - ldr ip, _020AFBE8 ; =UNK_021CCD88 - mov r4, r3 - str r0, [r12, #0x8] - str r1, [r12, #0xc] - str r2, [r12, #0x10] - bl FUN_020AFA30 - cmp r4, #0x0 - ldmeqia sp!, {r4,pc} - ldr r3, _020AFBEC ; =FUN_020AFAD4 - ldr r1, _020AFBF0 ; =UNK_021064C0 - ldr r2, _020AFBF4 ; =FUN_020AFA80 - ldr r0, _020AFBF8 ; =UNK_021064C4 - str r3, [r1, #0x0] - str r2, [r0, #0x0] - ldmia sp!, {r4,pc} - .balign 4 -_020AFBE8: .word UNK_021CCD88 -_020AFBEC: .word FUN_020AFAD4 -_020AFBF0: .word UNK_021064C0 -_020AFBF4: .word FUN_020AFA80 -_020AFBF8: .word UNK_021064C4 - - arm_func_start FUN_020AFBFC -FUN_020AFBFC: ; 0x020AFBFC - mov r0, r0, lsl #0x4 - bx lr - - arm_func_start FUN_020AFC04 -FUN_020AFC04: ; 0x020AFC04 - ldrh r2, [r0, #0x0] - cmp r2, r1 - ldrhi r0, [r0, #0x4] - addhi r0, r0, r1, lsl #0x4 - movls r0, #0x0 - bx lr - - arm_func_start FUN_020AFC1C -FUN_020AFC1C: ; 0x020AFC1C - stmdb sp!, {r4-r9,lr} - sub sp, sp, #0x4 - ldr r1, [r0, #0x4] - mov r6, #0x0 - add r1, r1, r0 - str r1, [r0, #0x4] - ldr r1, [r0, #0x8] - add r1, r1, r0 - str r1, [r0, #0x8] - ldr r1, [r0, #0xc] - add r1, r1, r0 - str r1, [r0, #0xc] - ldrh r1, [r0, #0x0] - ldr r4, [r0, #0x4] - ldr lr, [r0, #0x8] - cmp r1, #0x0 - ldr r12, [r0, #0xc] - bls _020AFCCC - mov r1, r6 -_020AFC68: - add r2, r4, r6, lsl #0x4 - ldr r5, [r2, #0xc] - mov r3, r6, lsl #0x4 - add r5, lr, r5 - str r5, [r2, #0xc] - ldrh r7, [r4, r3] - mov r5, r1 - cmp r7, #0x0 - bls _020AFCB4 -_020AFC8C: - ldr r9, [r2, #0xc] - add r7, r5, #0x1 - ldr r8, [r9, r5, lsl #0x3] - mov r7, r7, lsl #0x10 - add r8, r12, r8 - str r8, [r9, r5, lsl #0x3] - ldrh r8, [r4, r3] - mov r5, r7, lsr #0x10 - cmp r5, r8 - blo _020AFC8C -_020AFCB4: - add r2, r6, #0x1 - mov r2, r2, lsl #0x10 - ldrh r3, [r0, #0x0] - mov r6, r2, lsr #0x10 - cmp r6, r3 - blo _020AFC68 -_020AFCCC: - ldr r1, [r0, #0x14] - cmp r1, #0x0 - addeq sp, sp, #0x4 - ldmeqia sp!, {r4-r9,pc} - add r1, r1, r0 - str r1, [r0, #0x14] - ldr r1, [r0, #0x14] - mov r12, #0x0 - add r2, r1, #0x8 - ldr r0, [r2, #0x4] - add r0, r0, r2 - str r0, [r2, #0x4] - ldrh r0, [r1, #0x8] - cmp r0, #0x0 - addls sp, sp, #0x4 - ldmlsia sp!, {r4-r9,pc} - mov r0, r12 - mov r6, r12 -_020AFD14: - ldr r5, [r2, #0x4] - mov r3, r6 - add r1, r5, r0 - ldr r4, [r1, #0x4] - add r4, r4, r2 - str r4, [r1, #0x4] - ldr r4, [r1, #0x8] - add r4, r4, r2 - str r4, [r1, #0x8] - ldrh r4, [r5, r0] - cmp r4, #0x0 - bls _020AFD6C - mov r7, r6 -_020AFD48: - ldr r5, [r1, #0x8] - add r3, r3, #0x1 - ldr r4, [r5, r7] - add r4, r4, r2 - str r4, [r5, r7] - ldrh r4, [r1, #0x0] - add r7, r7, #0x4 - cmp r3, r4 - blo _020AFD48 -_020AFD6C: - ldrh r1, [r2, #0x0] - add r12, r12, #0x1 - add r0, r0, #0xc - cmp r12, r1 - blo _020AFD14 - add sp, sp, #0x4 - ldmia sp!, {r4-r9,pc} - - arm_func_start thunk_FUN_020afda0 -thunk_FUN_020afda0: ; 0x020AFD88 - ldr ip, _020AFD90 ; =FUN_020AFDA0 - bx r12 - .balign 4 -_020AFD90: .word FUN_020AFDA0 - - arm_func_start thunk_FUN_020afda0_2 -thunk_FUN_020afda0_2: ; 0x020AFD94 - ldr ip, _020AFD9C ; =FUN_020AFDA0 - bx r12 - .balign 4 -_020AFD9C: .word FUN_020AFDA0 - - arm_func_start FUN_020AFDA0 -FUN_020AFDA0: ; 0x020AFDA0 - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - mov r5, r1 - ldr r1, _020AFDE4 ; =0x41424E4B - bl FUN_020B01F8 - movs r4, r0 - moveq r0, #0x0 - addeq sp, sp, #0x4 - streq r0, [r5, #0x0] - ldmeqia sp!, {r4-r5,pc} - add r0, r4, #0x8 - bl FUN_020AFC1C - add r0, r4, #0x8 - str r0, [r5, #0x0] - mov r0, #0x1 - add sp, sp, #0x4 - ldmia sp!, {r4-r5,pc} - .balign 4 -_020AFDE4: .word 0x41424E4B - - arm_func_start FUN_020AFDE8 -FUN_020AFDE8: ; 0x020AFDE8 - stmdb sp!, {r4-r6,lr} - mov r5, r0 - ldr r1, [r5, #0x4] - add r1, r1, r5 - str r1, [r5, #0x4] - bl FUN_020AFF10 - ldrh r1, [r5, #0x0] - mov r4, r0 - mov r6, #0x0 - cmp r1, #0x0 - bls _020AFE44 -_020AFE14: - mov r0, r5 - mov r1, r6 - bl FUN_020AFE8C - ldr r2, [r0, #0x4] - add r1, r6, #0x1 - add r2, r2, r4 - str r2, [r0, #0x4] - mov r0, r1, lsl #0x10 - ldrh r1, [r5, #0x0] - mov r6, r0, lsr #0x10 - cmp r6, r1 - blo _020AFE14 -_020AFE44: - ldr r0, [r5, #0xc] - cmp r0, #0x0 - beq _020AFE6C - add r0, r0, r5 - str r0, [r5, #0xc] - ldr r1, [r5, #0xc] - ldr r0, [r1, #0x4] - add r0, r0, r1 - str r0, [r1, #0x4] - str r1, [r5, #0xc] -_020AFE6C: - ldr r0, [r5, #0x14] - cmp r0, #0x0 - ldmeqia sp!, {r4-r6,pc} - add r0, r0, r5 - str r0, [r5, #0x14] - ldr r0, [r5, #0x14] - bl FUN_020AFF00 - ldmia sp!, {r4-r6,pc} - - arm_func_start FUN_020AFE8C -FUN_020AFE8C: ; 0x020AFE8C - ldrh r2, [r0, #0x0] - cmp r1, r2 - movcs r0, #0x0 - bxcs lr - ldrh r2, [r0, #0x2] - ands r2, r2, #0x1 - ldrne r0, [r0, #0x4] - addne r0, r0, r1, lsl #0x4 - ldreq r0, [r0, #0x4] - addeq r0, r0, r1, lsl #0x3 - bx lr - - arm_func_start FUN_020AFEB8 -FUN_020AFEB8: ; 0x020AFEB8 - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - mov r5, r1 - ldr r1, _020AFEFC ; =0x4345424B - bl FUN_020B01F8 - movs r4, r0 - moveq r0, #0x0 - addeq sp, sp, #0x4 - streq r0, [r5, #0x0] - ldmeqia sp!, {r4-r5,pc} - add r0, r4, #0x8 - bl FUN_020AFDE8 - add r0, r4, #0x8 - str r0, [r5, #0x0] - mov r0, #0x1 - add sp, sp, #0x4 - ldmia sp!, {r4-r5,pc} - .balign 4 -_020AFEFC: .word 0x4345424B - - arm_func_start FUN_020AFF00 -FUN_020AFF00: ; 0x020AFF00 - ldr ip, _020AFF0C ; =FUN_020B01B0 - add r0, r0, #0x8 - bx r12 - .balign 4 -_020AFF0C: .word FUN_020B01B0 - - arm_func_start FUN_020AFF10 -FUN_020AFF10: ; 0x020AFF10 - ldrh r1, [r0, #0x2] - ands r1, r1, #0x1 - ldrneh r1, [r0, #0x0] - ldrne r0, [r0, #0x4] - addne r0, r0, r1, lsl #0x4 - ldreqh r1, [r0, #0x0] - ldreq r0, [r0, #0x4] - addeq r0, r0, r1, lsl #0x3 - bx lr - - arm_func_start FUN_020AFF34 -FUN_020AFF34: ; 0x020AFF34 - ldrh r2, [r0, #0x0] - cmp r1, r2 - ldrcc r0, [r0, #0x4] - addcc r0, r0, r1, lsl #0x3 - movcs r0, #0x0 - bx lr - - arm_func_start FUN_020AFF4C -FUN_020AFF4C: ; 0x020AFF4C - stmdb sp!, {r4,lr} - ldr r1, [r0, #0x4] - mov r4, #0x0 - add r1, r1, r0 - str r1, [r0, #0x4] - ldr r1, [r0, #0x8] - add r1, r1, r0 - str r1, [r0, #0x8] - ldrh r1, [r0, #0x0] - ldr lr, [r0, #0x4] - cmp r1, #0x0 - bls _020AFFA8 -_020AFF7C: - add r3, lr, r4, lsl #0x3 - ldr r12, [r0, #0x8] - ldr r2, [r3, #0x4] - add r1, r4, #0x1 - add r2, r12, r2 - str r2, [r3, #0x4] - mov r1, r1, lsl #0x10 - ldrh r2, [r0, #0x0] - mov r4, r1, lsr #0x10 - cmp r4, r2 - blo _020AFF7C -_020AFFA8: - ldr r1, [r0, #0x10] - cmp r1, #0x0 - ldmeqia sp!, {r4,pc} - add r1, r1, r0 - str r1, [r0, #0x10] - ldr r0, [r0, #0x10] - bl FUN_020AFFC8 - ldmia sp!, {r4,pc} - - arm_func_start FUN_020AFFC8 -FUN_020AFFC8: ; 0x020AFFC8 - ldr ip, _020AFFD4 ; =FUN_020B01B0 - add r0, r0, #0x8 - bx r12 - .balign 4 -_020AFFD4: .word FUN_020B01B0 - - arm_func_start FUN_020AFFD8 -FUN_020AFFD8: ; 0x020AFFD8 - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - mov r5, r1 - ldr r1, _020B001C ; =0x4D43424B - bl FUN_020B01F8 - movs r4, r0 - moveq r0, #0x0 - addeq sp, sp, #0x4 - streq r0, [r5, #0x0] - ldmeqia sp!, {r4-r5,pc} - add r0, r4, #0x8 - bl FUN_020AFF4C - add r0, r4, #0x8 - str r0, [r5, #0x0] - mov r0, #0x1 - add sp, sp, #0x4 - ldmia sp!, {r4-r5,pc} - .balign 4 -_020B001C: .word 0x4D43424B - - arm_func_start FUN_020B0020 -FUN_020B0020: ; 0x020B0020 - ldr r1, [r0, #0x14] - add r1, r1, r0 - str r1, [r0, #0x14] - bx lr - - arm_func_start FUN_020B0030 -FUN_020B0030: ; 0x020B0030 - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - mov r5, r1 - ldr r1, _020B0074 ; =0x43484152 - bl FUN_020B01F8 - movs r4, r0 - moveq r0, #0x0 - addeq sp, sp, #0x4 - streq r0, [r5, #0x0] - ldmeqia sp!, {r4-r5,pc} - add r0, r4, #0x8 - bl FUN_020B0020 - add r0, r4, #0x8 - str r0, [r5, #0x0] - mov r0, #0x1 - add sp, sp, #0x4 - ldmia sp!, {r4-r5,pc} - .balign 4 -_020B0074: .word 0x43484152 - - arm_func_start FUN_020B0078 -FUN_020B0078: ; 0x020B0078 - ldr r1, [r0, #0x14] - add r1, r1, r0 - str r1, [r0, #0x14] - bx lr - - arm_func_start FUN_020B0088 -FUN_020B0088: ; 0x020B0088 - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - mov r5, r1 - ldr r1, _020B00CC ; =0x43484152 - bl FUN_020B01F8 - movs r4, r0 - moveq r0, #0x0 - addeq sp, sp, #0x4 - streq r0, [r5, #0x0] - ldmeqia sp!, {r4-r5,pc} - add r0, r4, #0x8 - bl FUN_020B0078 - add r0, r4, #0x8 - str r0, [r5, #0x0] - mov r0, #0x1 - add sp, sp, #0x4 - ldmia sp!, {r4-r5,pc} - .balign 4 -_020B00CC: .word 0x43484152 - - arm_func_start FUN_020B00D0 -FUN_020B00D0: ; 0x020B00D0 - ldr r1, [r0, #0xc] - add r1, r1, r0 - str r1, [r0, #0xc] - bx lr - - arm_func_start FUN_020B00E0 -FUN_020B00E0: ; 0x020B00E0 - ldr r1, [r0, #0x4] - add r1, r1, r0 - str r1, [r0, #0x4] - bx lr - - arm_func_start FUN_020B00F0 -FUN_020B00F0: ; 0x020B00F0 - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - mov r5, r1 - ldr r1, _020B0134 ; =0x50434D50 - bl FUN_020B01F8 - movs r4, r0 - moveq r0, #0x0 - addeq sp, sp, #0x4 - streq r0, [r5, #0x0] - ldmeqia sp!, {r4-r5,pc} - add r0, r4, #0x8 - bl FUN_020B00E0 - add r0, r4, #0x8 - str r0, [r5, #0x0] - mov r0, #0x1 - add sp, sp, #0x4 - ldmia sp!, {r4-r5,pc} - .balign 4 -_020B0134: .word 0x50434D50 - - arm_func_start FUN_020B0138 -FUN_020B0138: ; 0x020B0138 - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - mov r5, r1 - ldr r1, _020B017C ; =0x504C5454 - bl FUN_020B01F8 - movs r4, r0 - moveq r0, #0x0 - addeq sp, sp, #0x4 - streq r0, [r5, #0x0] - ldmeqia sp!, {r4-r5,pc} - add r0, r4, #0x8 - bl FUN_020B00D0 - add r0, r4, #0x8 - str r0, [r5, #0x0] - mov r0, #0x1 - add sp, sp, #0x4 - ldmia sp!, {r4-r5,pc} - .balign 4 -_020B017C: .word 0x504C5454 - - arm_func_start FUN_020B0180 -FUN_020B0180: ; 0x020B0180 - stmdb sp!, {r4,lr} - mov r4, r1 - ldr r1, _020B01AC ; =0x5343524E - bl FUN_020B01F8 - cmp r0, #0x0 - addne r0, r0, #0x8 - strne r0, [r4, #0x0] - movne r0, #0x1 - moveq r0, #0x0 - streq r0, [r4, #0x0] - ldmia sp!, {r4,pc} - .balign 4 -_020B01AC: .word 0x5343524E - - arm_func_start FUN_020B01B0 -FUN_020B01B0: ; 0x020B01B0 - ldr r1, [r0, #0x4] - mov r12, #0x0 - add r1, r1, r0 - str r1, [r0, #0x4] - ldrh r1, [r0, #0x0] - cmp r1, #0x0 - bxls lr -_020B01CC: - ldr r3, [r0, #0x4] - add r1, r12, #0x1 - ldr r2, [r3, r12, lsl #0x2] - mov r1, r1, lsl #0x10 - add r2, r0, r2 - str r2, [r3, r12, lsl #0x2] - ldrh r2, [r0, #0x0] - mov r12, r1, lsr #0x10 - cmp r12, r2 - blo _020B01CC - bx lr - - arm_func_start FUN_020B01F8 -FUN_020B01F8: - stmdb sp!, {lr} - sub sp, sp, #0x4 - ldrh r2, [r0, #0xc] - ldrh r12, [r0, #0xe] - mov lr, #0x0 - add r0, r0, r2 - cmp r12, #0x0 - bls _020B0244 -_020B0218: - ldr r2, [r0, #0x0] - cmp r2, r1 - addeq sp, sp, #0x4 - ldmeqia sp!, {pc} - add r2, lr, #0x1 - mov r2, r2, lsl #0x10 - ldr r3, [r0, #0x4] - mov lr, r2, lsr #0x10 - cmp lr, r12 - add r0, r0, r3 - blo _020B0218 -_020B0244: - mov r0, #0x0 - add sp, sp, #0x4 - ldmia sp!, {pc} - - arm_func_start FUN_020B0250 -FUN_020B0250: ; 0x020B0250 - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - ldr r5, _020B02C0 ; =0x04000470 - mov r0, r0, lsl #0xc - str r0, [r5, #0x0] - mov r4, r1, lsl #0xc - ldr r12, [sp, #0x10] - ldr r0, [sp, #0x14] - ldr r1, [sp, #0x1c] - str r4, [r5, #0x0] - mov r4, r2, lsl #0xc - ldr r2, [sp, #0x18] - ldr lr, _020B02C4 ; =0x0400046C - str r4, [r5, #0x0] - mov r4, r3, lsl #0xc - ldr r3, [sp, #0x20] - str r4, [lr, #0x0] - mov r12, r12, lsl #0xc - str r12, [lr, #0x0] - mov r12, #0x1000 - mov r0, r0, lsl #0xc - mov r1, r1, lsl #0xc - mov r2, r2, lsl #0xc - mov r3, r3, lsl #0xc - str r12, [lr, #0x0] - bl FUN_020B0340 - add sp, sp, #0x4 - ldmia sp!, {r4-r5,pc} - .balign 4 -_020B02C0: .word 0x04000470 -_020B02C4: .word 0x0400046C - - arm_func_start FUN_020B02C8 -FUN_020B02C8: ; 0x020B02C8 - stmdb sp!, {lr} - sub sp, sp, #0x14 - ldr r2, _020B0330 ; =0xBFFF0000 - ldr r0, _020B0334 ; =0x04000580 - mov r1, #0x400000 - str r2, [r0, #0x0] - rsb r0, r1, #0x0 - str r0, [sp, #0x0] - str r1, [sp, #0x4] - mov r0, #0x0 - str r1, [sp, #0x8] - mov r1, #0x1 - str r1, [sp, #0xc] - mov r2, r0 - mov r1, #0xc0000 - mov r3, #0x100000 - str r0, [sp, #0x10] - bl G3i_OrthoW_ - ldr r1, _020B0338 ; =0x0400044C - mov r2, #0x0 - ldr r0, _020B033C ; =0x04000440 - str r2, [r1, #0x0] - mov r1, #0x1 - str r1, [r0, #0x0] - add sp, sp, #0x14 - ldmia sp!, {pc} - .balign 4 -_020B0330: .word 0xBFFF0000 -_020B0334: .word 0x04000580 -_020B0338: .word 0x0400044C -_020B033C: .word 0x04000440 - - arm_func_start FUN_020B0340 -FUN_020B0340: ; 0x020B0340 - stmdb sp!, {r4-r6,lr} - mov r3, r3, lsl #0x8 - mov r0, r0, lsl #0x8 - mov r4, r3, asr #0x10 - mov r3, r0, asr #0x10 - mov r0, r4, lsl #0x10 - mov r3, r3, lsl #0x10 - mov r1, r1, lsl #0x8 - mov r1, r1, asr #0x10 - mov r1, r1, lsl #0x10 - mov r2, r2, lsl #0x8 - mov r2, r2, asr #0x10 - mov r2, r2, lsl #0x10 - ldr ip, _020B03F4 ; =0x04000500 - mov lr, #0x1 - mov r6, r0, lsr #0x10 - mov r5, r3, lsr #0x10 - mov r3, r1, lsr #0x10 - mov r1, r2, lsr #0x10 - ldr r4, _020B03F8 ; =0x04000488 - str lr, [r12, #0x0] - orr r0, r5, r6, lsl #0x10 - ldr lr, _020B03FC ; =0x0400048C - str r0, [r4, #0x0] - mov r0, #0x10000000 - str r0, [lr, #0x0] - mov r12, #0x0 - str r12, [lr, #0x0] - orr r2, r3, r6, lsl #0x10 - ldr r0, _020B0400 ; =0x10001000 - str r2, [r4, #0x0] - str r0, [lr, #0x0] - str r12, [lr, #0x0] - orr r0, r3, r1, lsl #0x10 - str r0, [r4, #0x0] - mov r0, #0x1000 - str r0, [lr, #0x0] - str r12, [lr, #0x0] - orr r0, r5, r1, lsl #0x10 - str r0, [r4, #0x0] - str r12, [lr, #0x0] - ldr r0, _020B0404 ; =0x04000504 - str r12, [lr, #0x0] - str r12, [r0, #0x0] - ldmia sp!, {r4-r6,pc} - .balign 4 -_020B03F4: .word 0x04000500 -_020B03F8: .word 0x04000488 -_020B03FC: .word 0x0400048C -_020B0400: .word 0x10001000 -_020B0404: .word 0x04000504 - - arm_func_start FUN_020B0408 -FUN_020B0408: - ldr r1, [r0, #0x14] - cmp r1, #0x0 - ldreq r0, [r0, #0x18] - ldreq r1, [r0, #0x8] - cmp r1, #0x2 - beq _020B0428 - cmp r1, #0x4 - bne _020B0430 -_020B0428: - mov r0, #0x1 - bx lr -_020B0430: - mov r0, #0x0 - bx lr - - arm_func_start FUN_020B0438 -FUN_020B0438: ; 0x020B0438 - ldr ip, _020B0444 ; =FUN_020B0448 - str r1, [r0, #0x18] - bx r12 - .balign 4 -_020B0444: .word FUN_020B0448 - - arm_func_start FUN_020B0448 -FUN_020B0448: ; 0x020B0448 - ldr r1, [r0, #0x10] - cmp r1, #0x0 - movgt r2, #0x1 - ldr r1, [r0, #0x4] - movle r2, #0x0 - eors r1, r2, r1 - beq _020B047C - ldr r2, [r0, #0x18] - ldrh r1, [r2, #0x2] - ldr r2, [r2, #0xc] - add r1, r2, r1, lsl #0x3 - str r1, [r0, #0x0] - b _020B0494 -_020B047C: - ldr r2, [r0, #0x18] - ldrh r1, [r2, #0x0] - ldr r2, [r2, #0xc] - add r1, r2, r1, lsl #0x3 - sub r1, r1, #0x8 - str r1, [r0, #0x0] -_020B0494: - ldr ip, _020B04A4 ; =FUN_020B0534 - mov r1, #0x0 - str r1, [r0, #0xc] - bx r12 - .balign 4 -_020B04A4: .word FUN_020B0534 - - arm_func_start FUN_020B04A8 -FUN_020B04A8: ; 0x020B04A8 - mov r1, #0x0 - str r1, [r0, #0x0] - str r1, [r0, #0x4] - str r1, [r0, #0x8] - strh r1, [r0, #0xc] - bx lr - - arm_func_start FUN_020B04C0 -FUN_020B04C0: ; 0x020B04C0 - stmdb sp!, {r4,lr} - mov r4, r0 - add r0, r4, #0x1c - bl FUN_020B04A8 - mov r1, #0x0 - str r1, [r4, #0x0] - str r1, [r4, #0x4] - mov r0, #0x1 - str r0, [r4, #0x8] - str r1, [r4, #0xc] - mov r0, #0x1000 - str r0, [r4, #0x10] - str r1, [r4, #0x14] - str r1, [r4, #0x18] - ldmia sp!, {r4,pc} - - arm_func_start FUN_020B04FC -FUN_020B04FC: ; 0x020B04FC - ldr r1, [r0, #0x18] - ldr r2, [r0, #0x0] - ldr r0, [r1, #0xc] - sub r0, r2, r0 - mov r0, r0, lsl #0xd - mov r0, r0, lsr #0x10 - bx lr - - arm_func_start FUN_020B0518 -FUN_020B0518: - stmdb sp!, {r4,lr} - mov r4, r0 - bl FUN_020B06EC - cmp r0, #0x0 - movne r1, #0x0 - strne r1, [r4, #0xc] - ldmia sp!, {r4,pc} - - arm_func_start FUN_020B0534 -FUN_020B0534: - stmdb sp!, {r4-r8,lr} - mov r8, r0 - ldr r0, [r8, #0x8] - mov r7, #0x0 - cmp r0, #0x1 - movne r0, r7 - ldmneia sp!, {r4-r8,pc} - ldr r2, [r8, #0x10] - mov r0, #0x800 - smull r3, r1, r2, r1 - adds r0, r3, r0 - adc r1, r1, r7 - mov r0, r0, lsr #0xc - orr r0, r0, r1, lsl #0x14 - bl abs - ldr r1, [r8, #0xc] - add r6, r8, #0xc - add r0, r1, r0 - str r0, [r8, #0xc] - mov r4, r7 - mov r5, #0x1 - b _020B06A8 -_020B058C: - ldr r0, [r8, #0x0] - ldr r1, [r6, #0x0] - ldrh r0, [r0, #0x4] - mov r7, r5 - sub r0, r1, r0, lsl #0xc - str r0, [r6, #0x0] - ldr r0, [r8, #0x10] - cmp r0, #0x0 - movgt r1, r5 - ldr r0, [r8, #0x4] - movle r1, r4 - eors r0, r1, r0 - ldrne r0, [r8, #0x0] - addne r0, r0, #0x8 - strne r0, [r8, #0x0] - ldreq r0, [r8, #0x0] - subeq r0, r0, #0x8 - streq r0, [r8, #0x0] - ldr r1, [r8, #0x10] - ldr r0, [r8, #0x0] - cmp r1, #0x0 - movgt r2, r5 - ldr r1, [r8, #0x4] - movle r2, r4 - eors r1, r2, r1 - beq _020B0614 - ldr r2, [r8, #0x18] - ldrh r1, [r2, #0x0] - ldr r2, [r2, #0xc] - add r1, r2, r1, lsl #0x3 - cmp r0, r1 - movcs r0, r5 - movcc r0, r4 - b _020B0634 -_020B0614: - ldr r2, [r8, #0x18] - ldrh r1, [r2, #0x2] - ldr r2, [r2, #0xc] - add r1, r2, r1, lsl #0x3 - sub r1, r1, #0x8 - cmp r0, r1 - movls r0, r5 - movhi r0, r4 -_020B0634: - cmp r0, #0x0 - beq _020B0644 - mov r0, r8 - bl FUN_020B0710 -_020B0644: - ldr r0, [r8, #0x1c] - cmp r0, #0x0 - beq _020B06A8 - ldr r0, [r8, #0x18] - ldr r2, [r8, #0x1c] - ldr r1, [r8, #0x0] - ldr r0, [r0, #0xc] - cmp r2, #0x2 - sub r0, r1, r0 - mov r0, r0, lsl #0xd - mov r1, r0, lsr #0x10 - beq _020B0680 - cmp r2, #0x3 - beq _020B069C - b _020B06A8 -_020B0680: - ldrh r0, [r8, #0x28] - cmp r1, r0 - bne _020B06A8 - ldr r0, [r8, #0x20] - ldr r2, [r8, #0x24] - blx r2 - b _020B06A8 -_020B069C: - ldr r0, [r8, #0x20] - ldr r2, [r8, #0x24] - blx r2 -_020B06A8: - ldr r0, [r8, #0x8] - cmp r0, #0x0 - beq _020B06CC - ldr r0, [r8, #0x0] - ldr r1, [r8, #0xc] - ldrh r0, [r0, #0x4] - cmp r1, r0, lsl #0xc - movge r0, r5 - bge _020B06D0 -_020B06CC: - mov r0, r4 -_020B06D0: - cmp r0, #0x0 - bne _020B058C - mov r0, r7 - ldmia sp!, {r4-r8,pc} - - arm_func_start FUN_020B06E0 -FUN_020B06E0: ; 0x020B06E0 - ldr r0, [r0, #0x0] - ldr r0, [r0, #0x0] - bx lr - - arm_func_start FUN_020B06EC -FUN_020B06EC: - ldr r3, [r0, #0x18] - ldrh r2, [r3, #0x0] - cmp r1, r2 - ldrcc r2, [r3, #0xc] - addcc r1, r2, r1, lsl #0x3 - strcc r1, [r0, #0x0] - movcc r0, #0x1 - movcs r0, #0x0 - bx lr - - arm_func_start FUN_020B0710 -FUN_020B0710: ; 0x020B0710 - stmdb sp!, {r4,lr} - mov r4, r0 - ldr r0, [r4, #0x14] - cmp r0, #0x0 - ldreq r0, [r4, #0x18] - ldreq r0, [r0, #0x8] - cmp r0, #0x3 - beq _020B0738 - cmp r0, #0x4 - bne _020B07B4 -_020B0738: - ldr r0, [r4, #0x4] - eor r0, r0, #0x1 - str r0, [r4, #0x4] - ldr r1, [r4, #0x18] - ldr r2, [r4, #0x0] - ldrh r0, [r1, #0x2] - ldr r1, [r1, #0xc] - add r0, r1, r0, lsl #0x3 - sub r0, r0, #0x8 - cmp r2, r0 - bhi _020B0800 - ldr r0, [r4, #0x1c] - cmp r0, #0x1 - bne _020B0780 - ldr r0, [r4, #0x20] - ldr r1, [r4, #0xc] - ldr r2, [r4, #0x24] - blx r2 -_020B0780: - ldr r0, [r4, #0x14] - cmp r0, #0x0 - ldreq r0, [r4, #0x18] - ldreq r0, [r0, #0x8] - cmp r0, #0x2 - beq _020B07A8 - cmp r0, #0x4 - movne r0, #0x0 - strne r0, [r4, #0x8] - bne _020B0800 -_020B07A8: - mov r0, r4 - bl FUN_020B0448 - b _020B0800 -_020B07B4: - ldr r0, [r4, #0x1c] - cmp r0, #0x1 - bne _020B07D0 - ldr r0, [r4, #0x20] - ldr r1, [r4, #0xc] - ldr r2, [r4, #0x24] - blx r2 -_020B07D0: - ldr r0, [r4, #0x14] - cmp r0, #0x0 - ldreq r0, [r4, #0x18] - ldreq r0, [r0, #0x8] - cmp r0, #0x2 - beq _020B07F8 - cmp r0, #0x4 - movne r0, #0x0 - strne r0, [r4, #0x8] - bne _020B0800 -_020B07F8: - mov r0, r4 - bl FUN_020B0448 -_020B0800: - ldr r1, [r4, #0x18] - ldr r2, [r4, #0x0] - ldrh r0, [r1, #0x0] - ldr r1, [r1, #0xc] - add r0, r1, r0, lsl #0x3 - sub r0, r0, #0x8 - cmp r2, r0 - strhi r0, [r4, #0x0] - ldmhiia sp!, {r4,pc} - cmp r2, r1 - strcc r1, [r4, #0x0] - ldmia sp!, {r4,pc} - - arm_func_start FUN_020B0830 -FUN_020B0830: ; 0x020B0830 - ldrh r3, [r0, #0x6] - ldrh r2, [r0, #0x8] - mov r12, #0x0 - add r1, r3, #0x1 - cmp r2, r1 - bgt _020B0854 - ldrh r0, [r0, #0x4] - cmp r0, r3 - movls r12, #0x1 -_020B0854: - cmp r12, #0x0 - subne r0, r3, r2 - addne r0, r0, #0x1 - movne r0, r0, lsl #0x10 - movne r0, r0, lsr #0x10 - moveq r0, #0x0 - bx lr - - arm_func_start FUN_020B0870 -FUN_020B0870: ; 0x020B0870 - stmdb sp!, {r4,lr} - mov r4, r0 - bl FUN_020B09B4 - mov r0, r4 - bl FUN_020B0888 - ldmia sp!, {r4,pc} - - arm_func_start FUN_020B0888 -FUN_020B0888: ; 0x020B0888 - stmdb sp!, {r4-r6,lr} - mov r5, r0 - ldr r0, [r5, #0x14] - cmp r0, #0x0 - beq _020B0944 - ldrh r2, [r5, #0x6] - ldrh r1, [r5, #0x8] - mov r3, #0x0 - add r0, r2, #0x1 - cmp r1, r0 - bgt _020B08C0 - ldrh r0, [r5, #0x4] - cmp r0, r2 - movls r3, #0x1 -_020B08C0: - cmp r3, #0x0 - moveq r4, #0x0 - beq _020B08E0 - ldrh r0, [r5, #0x4] - sub r0, r2, r0 - add r0, r0, #0x1 - mov r0, r0, lsl #0x10 - mov r4, r0, lsr #0xd -_020B08E0: - ldr r2, [r5, #0x0] - ldr r1, _020B09AC ; =UNK_021CCDA0 - mov r0, #0x540 - mla r1, r2, r0, r1 - ldrh r0, [r5, #0x4] - add r2, r1, #0x100 - mov r1, r4 - add r6, r2, r0, lsl #0x3 - mov r0, r6 - bl DC_InvalidateRange - ldr r0, _020B09B0 ; =GXi_DmaId - mvn r1, #0x0 - ldr r0, [r0, #0x0] - cmp r0, r1 - beq _020B0930 - mov r1, r6 - mov r3, r4 - mov r2, #0xc0 - bl MI_DmaFill32 - b _020B0998 -_020B0930: - mov r1, r6 - mov r2, r4 - mov r0, #0xc0 - bl MIi_CpuClear32 - b _020B0998 -_020B0944: - ldr r2, [r5, #0x0] - ldr r1, _020B09AC ; =UNK_021CCDA0 - mov r0, #0x540 - mla r1, r2, r0, r1 - ldrh r2, [r5, #0x4] - ldrh r0, [r5, #0x6] - add r1, r1, #0x100 - add r3, r1, r2, lsl #0x3 - sub r0, r0, r2 - add r0, r0, #0x1 - mov r0, r0, lsl #0x10 - movs r2, r0, lsr #0x10 - mov r0, #0x0 - beq _020B0998 - mov r1, #0xc0 -_020B0980: - add r0, r0, #0x1 - mov r0, r0, lsl #0x10 - mov r0, r0, lsr #0x10 - cmp r0, r2 - strh r1, [r3], #0x8 - blo _020B0980 -_020B0998: - ldrh r0, [r5, #0x4] - strh r0, [r5, #0x8] - ldrh r0, [r5, #0xa] - strh r0, [r5, #0xe] - ldmia sp!, {r4-r6,pc} - .balign 4 -_020B09AC: .word UNK_021CCDA0 -_020B09B0: .word GXi_DmaId - - arm_func_start FUN_020B09B4 -FUN_020B09B4: ; 0x020B09B4 - stmdb sp!, {r4-r10,lr} - mov r7, r0 - ldr r0, [r7, #0x14] - cmp r0, #0x0 - beq _020B0A48 - ldr r5, [r7, #0x0] - ldr r1, _020B0BA8 ; =UNK_021CCDA0 - mov r0, #0x540 - mla r1, r5, r0, r1 - ldrh r2, [r7, #0x4] - ldrh r0, [r7, #0x6] - add r1, r1, #0x100 - add r4, r1, r2, lsl #0x3 - sub r0, r0, r2 - add r0, r0, #0x1 - mov r0, r0, lsl #0x13 - mov r6, r0, lsr #0x10 - mov r2, r2, lsl #0x13 - mov r0, r4 - mov r1, r6 - mov r7, r2, lsr #0x10 - bl DC_FlushRange - cmp r5, #0x0 - beq _020B0A20 - cmp r5, #0x1 - beq _020B0A34 - ldmia sp!, {r4-r10,pc} -_020B0A20: - mov r0, r4 - mov r1, r7 - mov r2, r6 - bl GX_LoadOAM - ldmia sp!, {r4-r10,pc} -_020B0A34: - mov r0, r4 - mov r1, r7 - mov r2, r6 - bl GXS_LoadOAM - ldmia sp!, {r4-r10,pc} -_020B0A48: - ldr r0, [r7, #0x0] - ldr r2, _020B0BA8 ; =UNK_021CCDA0 - mov r1, #0x540 - mla r2, r0, r1, r2 - ldrh r5, [r7, #0x4] - ldrh r1, [r7, #0x6] - ldr r3, _020B0BAC ; =UNK_0210655C - add r4, r2, #0x100 - sub r1, r1, r5 - add r1, r1, #0x1 - mov r1, r1, lsl #0x10 - mov r2, r5, lsl #0x13 - add r6, r4, r5, lsl #0x3 - movs r5, r1, lsr #0x10 - mov r4, r2, lsr #0x10 - ldr r9, [r3, r0, lsl #0x2] - mov r10, #0x0 - beq _020B0AC8 - mov r8, #0x6 -_020B0A94: - mov r0, r6 - mov r1, r4 - mov r2, r8 - blx r9 - add r0, r10, #0x1 - add r2, r4, #0x8 - mov r1, r0, lsl #0x10 - mov r0, r2, lsl #0x10 - mov r10, r1, lsr #0x10 - cmp r10, r5 - mov r4, r0, lsr #0x10 - add r6, r6, #0x8 - blo _020B0A94 -_020B0AC8: - ldrh r2, [r7, #0xc] - ldrh r1, [r7, #0xe] - mov r3, #0x0 - add r0, r2, #0x1 - cmp r1, r0 - bgt _020B0AEC - ldrh r0, [r7, #0xa] - cmp r0, r2 - movls r3, #0x1 -_020B0AEC: - cmp r3, #0x0 - ldmeqia sp!, {r4-r10,pc} - ldr r0, [r7, #0x0] - ldr r2, _020B0BA8 ; =UNK_021CCDA0 - mov r1, #0x540 - mla r2, r0, r1, r2 - ldrh r5, [r7, #0xa] - add r4, r2, #0x100 - ldrh r1, [r7, #0xc] - mov r2, r5, lsl #0x15 - ldr r3, _020B0BAC ; =UNK_0210655C - sub r1, r1, r5 - add r1, r1, #0x1 - mov r1, r1, lsl #0x10 - add r9, r4, r5, lsl #0x5 - ldr r5, [r3, r0, lsl #0x2] - movs r8, r1, lsr #0x10 - mov r7, r2, lsr #0x10 - mov r6, #0x0 - ldmeqia sp!, {r4-r10,pc} - mov r4, #0x2 -_020B0B40: - mov r2, r4 - add r0, r9, #0x6 - add r1, r7, #0x6 - blx r5 - mov r2, r4 - add r0, r9, #0xe - add r1, r7, #0xe - blx r5 - mov r2, r4 - add r0, r9, #0x16 - add r1, r7, #0x16 - blx r5 - add r0, r9, #0x1e - add r1, r7, #0x1e - mov r2, r4 - blx r5 - add r0, r7, #0x20 - mov r0, r0, lsl #0x10 - mov r7, r0, lsr #0x10 - add r9, r9, #0x20 - add r0, r6, #0x1 - mov r0, r0, lsl #0x10 - mov r6, r0, lsr #0x10 - cmp r6, r8 - blo _020B0B40 - ldmia sp!, {r4-r10,pc} - .balign 4 -_020B0BA8: .word UNK_021CCDA0 -_020B0BAC: .word UNK_0210655C - - arm_func_start FUN_020B0BB0 -FUN_020B0BB0: ; 0x020B0BB0 - stmdb sp!, {lr} - sub sp, sp, #0x4 - ldrh r12, [r0, #0xc] - ldrh r3, [r0, #0xe] - mov lr, #0x0 - add r2, r12, #0x1 - cmp r3, r2 - bgt _020B0BDC - ldrh r2, [r0, #0xa] - cmp r2, r12 - movls lr, #0x1 -_020B0BDC: - cmp lr, #0x0 - subne r2, r12, r3 - addne r2, r2, #0x1 - movne r2, r2, lsl #0x10 - movne r2, r2, lsr #0x10 - moveq r2, #0x0 - cmp r2, #0x1 - movcs r2, #0x1 - movcc r2, #0x0 - cmp r2, #0x0 - addeq sp, sp, #0x4 - ldreq r0, _020B0C74 ; =0x0000FFFE - ldmeqia sp!, {pc} - ldr lr, [r0, #0x0] - ldr r3, _020B0C78 ; =UNK_021CCDA0 - mov r2, #0x540 - mla r12, lr, r2, r3 - ldr r3, [r1, #0x0] - ldrh r2, [r0, #0xe] - add r12, r12, #0x100 - mov r3, r3, asr #0x4 - add r12, r12, r2, lsl #0x5 - strh r3, [r12, #0x6] - ldr r3, [r1, #0x4] - mov r3, r3, asr #0x4 - strh r3, [r12, #0xe] - ldr r3, [r1, #0x8] - mov r3, r3, asr #0x4 - strh r3, [r12, #0x16] - ldr r1, [r1, #0xc] - mov r1, r1, asr #0x4 - strh r1, [r12, #0x1e] - ldrh r1, [r0, #0xe] - add r1, r1, #0x1 - strh r1, [r0, #0xe] - mov r0, r2 - add sp, sp, #0x4 - ldmia sp!, {pc} - .balign 4 -_020B0C74: .word 0x0000FFFE -_020B0C78: .word UNK_021CCDA0 - - arm_func_start FUN_020B0C7C -FUN_020B0C7C: ; 0x020B0C7C - stmdb sp!, {r4,lr} - ldrh r12, [r0, #0x6] - ldrh r4, [r0, #0x8] - mov lr, #0x0 - add r3, r12, #0x1 - cmp r4, r3 - bgt _020B0CA4 - ldrh r3, [r0, #0x4] - cmp r3, r12 - movls lr, #0x1 -_020B0CA4: - cmp lr, #0x0 - subne r3, r12, r4 - addne r3, r3, #0x1 - movne r3, r3, lsl #0x10 - movne r3, r3, lsr #0x10 - moveq r3, #0x0 - cmp r3, #0x1 - movcs r3, #0x1 - movcc r3, #0x0 - cmp r3, #0x0 - beq _020B0D48 - ldr r4, [r0, #0x0] - ldr ip, _020B0D50 ; =UNK_021CCDA0 - mov r3, #0x540 - mla r12, r4, r3, r12 - ldrh r3, [r0, #0x8] - add r4, r12, #0x100 - ldrh r12, [r1, #0x0] - mov lr, r3, lsl #0x3 - add r3, r4, r3, lsl #0x3 - strh r12, [r4, lr] - ldrh lr, [r1, #0x2] - ldr ip, _020B0D54 ; =0x0000FFFE - strh lr, [r3, #0x2] - ldrh r1, [r1, #0x4] - cmp r2, r12 - strh r1, [r3, #0x4] - beq _020B0D34 - ldr r1, [r3, #0x0] - mov r12, r1, lsl #0x16 - mov r12, r12, lsr #0x1e - ands r12, r12, #0x1 - bicne r12, r1, #0x3e000000 - andne r1, r2, #0x1f - orrne r1, r12, r1, lsl #0x19 - strne r1, [r3, #0x0] -_020B0D34: - ldrh r1, [r0, #0x8] - add r1, r1, #0x1 - strh r1, [r0, #0x8] - mov r0, #0x1 - ldmia sp!, {r4,pc} -_020B0D48: - mov r0, #0x0 - ldmia sp!, {r4,pc} - .balign 4 -_020B0D50: .word UNK_021CCDA0 -_020B0D54: .word 0x0000FFFE - - arm_func_start FUN_020B0D58 -FUN_020B0D58: ; 0x020B0D58 - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - ldrh lr, [r0, #0x6] - ldrh r12, [r0, #0x8] - mov r4, #0x0 - add r3, lr, #0x1 - cmp r12, r3 - bgt _020B0D84 - ldrh r3, [r0, #0x4] - cmp r3, lr - movls r4, #0x1 -_020B0D84: - cmp r4, #0x0 - subne r3, lr, r12 - addne r3, r3, #0x1 - movne r3, r3, lsl #0x10 - movne r3, r3, lsr #0x10 - moveq r3, #0x0 - cmp r3, r2 - movcs r3, #0x1 - movcc r3, #0x0 - cmp r3, #0x0 - beq _020B0E24 - ldr lr, [r0, #0x0] - ldr ip, _020B0E30 ; =UNK_021CCDA0 - mov r3, #0x540 - mla r12, lr, r3, r12 - ldrh r3, [r0, #0x8] - add r12, r12, #0x100 - cmp r2, #0x0 - add r4, r12, r3, lsl #0x3 - mov r5, #0x0 - ble _020B0E18 - add r3, r0, #0x8 -_020B0DDC: - ldrh lr, [r1, #0x0] - mov r0, r5, lsl #0x3 - add r12, r4, r5, lsl #0x3 - strh lr, [r4, r0] - ldrh r0, [r1, #0x2] - add r5, r5, #0x1 - cmp r5, r2 - strh r0, [r12, #0x2] - ldrh r0, [r1, #0x4] - add r1, r1, #0x8 - strh r0, [r12, #0x4] - ldrh r0, [r3, #0x0] - add r0, r0, #0x1 - strh r0, [r3, #0x0] - blt _020B0DDC -_020B0E18: - add sp, sp, #0x4 - mov r0, #0x1 - ldmia sp!, {r4-r5,pc} -_020B0E24: - mov r0, #0x0 - add sp, sp, #0x4 - ldmia sp!, {r4-r5,pc} - .balign 4 -_020B0E30: .word UNK_021CCDA0 - - arm_func_start FUN_020B0E34 -FUN_020B0E34: ; 0x020B0E34 - stmdb sp!, {r4-r7,lr} - sub sp, sp, #0x4 - ldr r5, [sp, #0x1c] - ldr r6, _020B0FB4 ; =UNK_021CCDA0 - mov r4, #0x540 - mla r4, r5, r4, r6 - mov lr, r1 - sub r1, r2, #0x1 - add r1, lr, r1 - mov r1, r1, lsl #0x10 - mov r12, r1, lsr #0x10 - add r7, r4, lr, lsl #0x1 - add r2, r4, r12, lsl #0x1 - mov r6, r0 - mov r5, r3 - cmp r7, r2 - mov r3, lr, lsl #0x1 - bhi _020B0E9C - ldr r0, _020B0FB8 ; =0x0000FFFF -_020B0E80: - ldrh r1, [r7, #0x0] - cmp r1, r0 - movne r0, #0x0 - bne _020B0EA0 - add r7, r7, #0x2 - cmp r7, r2 - bls _020B0E80 -_020B0E9C: - mov r0, #0x1 -_020B0EA0: - cmp r0, #0x0 - beq _020B0EE0 - ldr r0, _020B0FBC ; =UNK_021CCD9C - sub r2, r12, lr - ldrh r7, [r0, #0x0] - add r1, r4, r3 - mov r2, r2, lsl #0x1 - add r3, r7, #0x1 - strh r3, [r0, #0x0] - strh r7, [r6, #0x10] - strh lr, [r6, #0x4] - strh r12, [r6, #0x6] - strh lr, [r6, #0x8] - ldrh r0, [r6, #0x10] - bl MIi_CpuClear16 - b _020B0EEC -_020B0EE0: - add sp, sp, #0x4 - mov r0, #0x0 - ldmia sp!, {r4-r7,pc} -_020B0EEC: - ldrh r0, [sp, #0x18] - add r4, r4, #0x500 - cmp r0, #0x0 - bne _020B0F18 - mov r0, #0x20 - strh r0, [r6, #0xa] - mov r0, #0x0 - strh r0, [r6, #0xc] - ldrh r0, [r6, #0xa] - strh r0, [r6, #0xe] - b _020B0F98 -_020B0F18: - sub r0, r0, #0x1 - add r0, r5, r0 - mov r0, r0, lsl #0x10 - mov r12, r0, lsr #0x10 - add r7, r4, r5, lsl #0x1 - add r2, r4, r12, lsl #0x1 - cmp r7, r2 - mov r3, r5, lsl #0x1 - bhi _020B0F5C - ldr r0, _020B0FB8 ; =0x0000FFFF -_020B0F40: - ldrh r1, [r7, #0x0] - cmp r1, r0 - movne r0, #0x0 - bne _020B0F60 - add r7, r7, #0x2 - cmp r7, r2 - bls _020B0F40 -_020B0F5C: - mov r0, #0x1 -_020B0F60: - cmp r0, #0x0 - beq _020B0F8C - strh r5, [r6, #0xa] - strh r12, [r6, #0xc] - strh r5, [r6, #0xe] - ldrh r0, [r6, #0x10] - sub r2, r12, r5 - add r1, r4, r3 - mov r2, r2, lsl #0x1 - bl MIi_CpuClear16 - b _020B0F98 -_020B0F8C: - add sp, sp, #0x4 - mov r0, #0x0 - ldmia sp!, {r4-r7,pc} -_020B0F98: - mov r1, #0x0 - ldr r0, [sp, #0x1c] - str r1, [r6, #0x14] - str r0, [r6, #0x0] - mov r0, #0x1 - add sp, sp, #0x4 - ldmia sp!, {r4-r7,pc} - .balign 4 -_020B0FB4: .word UNK_021CCDA0 -_020B0FB8: .word 0x0000FFFF -_020B0FBC: .word UNK_021CCD9C - - arm_func_start FUN_020B0FC0 -FUN_020B0FC0: ; 0x020B0FC0 - stmdb sp!, {lr} - sub sp, sp, #0x4 - ldr r1, _020B1060 ; =UNK_021CCEA0 - mov r0, #0xc0 - mov r2, #0x400 - bl MIi_CpuClear16 - ldr r1, _020B1064 ; =UNK_021CD3E0 - mov r0, #0xc0 - mov r2, #0x400 - bl MIi_CpuClear16 - ldr r1, _020B1068 ; =UNK_021CD920 - mov r0, #0xc0 - mov r2, #0x400 - bl MIi_CpuClear16 - ldr r0, _020B106C ; =0x0000FFFF - ldr r1, _020B1070 ; =UNK_021CCDA0 - mov r2, #0x100 - bl MIi_CpuClear16 - ldr r0, _020B106C ; =0x0000FFFF - ldr r1, _020B1074 ; =UNK_021CD2E0 - mov r2, #0x100 - bl MIi_CpuClear16 - ldr r0, _020B106C ; =0x0000FFFF - ldr r1, _020B1078 ; =UNK_021CD820 - mov r2, #0x100 - bl MIi_CpuClear16 - ldr r0, _020B106C ; =0x0000FFFF - ldr r1, _020B107C ; =UNK_021CD2A0 - mov r2, #0x40 - bl MIi_CpuClear16 - ldr r0, _020B106C ; =0x0000FFFF - ldr r1, _020B1080 ; =UNK_021CD7E0 - mov r2, #0x40 - bl MIi_CpuClear16 - ldr r0, _020B106C ; =0x0000FFFF - ldr r1, _020B1084 ; =UNK_021CDD20 - mov r2, #0x40 - bl MIi_CpuClear16 - add sp, sp, #0x4 - ldmia sp!, {pc} - .balign 4 -_020B1060: .word UNK_021CCEA0 -_020B1064: .word UNK_021CD3E0 -_020B1068: .word UNK_021CD920 -_020B106C: .word 0x0000FFFF -_020B1070: .word UNK_021CCDA0 -_020B1074: .word UNK_021CD2E0 -_020B1078: .word UNK_021CD820 -_020B107C: .word UNK_021CD2A0 -_020B1080: .word UNK_021CD7E0 -_020B1084: .word UNK_021CDD20 - - arm_func_start FUN_020B1088 -FUN_020B1088: ; 0x020B1088 - ldr ip, _020B1094 ; =MIi_CpuCopy16 - add r1, r1, #0x7000000 - bx r12 - .balign 4 -_020B1094: .word MIi_CpuCopy16 - - arm_func_start FUN_020B1098 -FUN_020B1098: ; 0x020B1098 - ldr r3, _020B10A8 ; =0x07000400 - ldr ip, _020B10AC ; =MIi_CpuCopy16 - add r1, r1, r3 - bx r12 - .balign 4 -_020B10A8: .word 0x07000400 -_020B10AC: .word MIi_CpuCopy16 - - arm_func_start FUN_020B10B0 -FUN_020B10B0: ; 0x020B10B0 - mov r1, r1, lsl #0x1 - ldrh r0, [r0, r1] - bx lr - - arm_func_start FUN_020B10BC -FUN_020B10BC: ; 0x020B10BC - ldr r0, [r0, r1, lsl #0x2] - bx lr - - arm_func_start FUN_020B10C4 -FUN_020B10C4: - str r2, [r0, r1, lsl #0x2] - bx lr - - arm_func_start FUN_020B10CC -FUN_020B10CC: - mov r2, #0x0 - mvn r1, #0x0 -_020B10D4: - str r1, [r0, r2, lsl #0x2] - add r2, r2, #0x1 - cmp r2, #0x3 - blt _020B10D4 - bx lr - - arm_func_start FUN_020B10E8 -FUN_020B10E8: ; 0x020B10E8 - stmdb sp!, {r4-r11,lr} - sub sp, sp, #0x4 - mov r10, r0 - ldr r0, [r10, #0x0] - mov r9, r1 - cmp r0, #0x3 - ldr r0, [sp, #0x28] - moveq r7, #0x20 - str r0, [sp, #0x28] - ldrh r0, [r9, #0x0] - movne r7, #0x200 - mov r11, r2 - mov r8, r3 - str r0, [sp, #0x0] - mov r6, #0x0 - cmp r0, #0x0 - bls _020B1210 -_020B112C: - ldr r1, [r9, #0x4] - mov r0, r6, lsl #0x1 - ldrh r2, [r1, r0] - ldr r0, [r10, #0xc] - ldr r1, [r10, #0x8] - mla r5, r7, r2, r11 - mla r4, r7, r6, r0 - bl DC_FlushRange - cmp r8, #0x0 - beq _020B11E0 - cmp r8, #0x1 - beq _020B1168 - cmp r8, #0x2 - beq _020B11A4 - b _020B11F8 -_020B1168: - ldr r0, [r10, #0x4] - cmp r0, #0x0 - beq _020B1190 - bl GX_BeginLoadOBJExtPltt - mov r0, r4 - mov r1, r5 - mov r2, r7 - bl GX_LoadOBJExtPltt - bl GX_EndLoadOBJExtPltt - b _020B11F8 -_020B1190: - mov r0, r4 - mov r1, r5 - mov r2, r7 - bl GX_LoadOBJPltt - b _020B11F8 -_020B11A4: - ldr r0, [r10, #0x4] - cmp r0, #0x0 - beq _020B11CC - bl GXS_BeginLoadOBJExtPltt - mov r0, r4 - mov r1, r5 - mov r2, r7 - bl GXS_LoadOBJExtPltt - bl GXS_EndLoadOBJExtPltt - b _020B11F8 -_020B11CC: - mov r0, r4 - mov r1, r5 - mov r2, r7 - bl GXS_LoadOBJPltt - b _020B11F8 -_020B11E0: - bl GX_BeginLoadTexPltt - mov r0, r4 - mov r1, r5 - mov r2, r7 - bl GX_LoadTexPltt - bl GX_EndLoadTexPltt -_020B11F8: - add r0, r6, #0x1 - mov r0, r0, lsl #0x10 - mov r6, r0, lsr #0x10 - ldr r0, [sp, #0x0] - cmp r6, r0 - blo _020B112C -_020B1210: - ldr r0, [sp, #0x28] - ldr r2, [r10, #0x0] - mov r1, r0 - str r2, [r1, #0x0] - ldr r4, [r10, #0x4] - mov r3, r0 - mov r1, r8 - mov r2, r11 - str r4, [r3, #0x4] - bl FUN_020B19D0 - add sp, sp, #0x4 - ldmia sp!, {r4-r11,pc} - - arm_func_start FUN_020B1240 -FUN_020B1240: ; 0x020B1240 - stmdb sp!, {r4-r9,lr} - sub sp, sp, #0x4 - mov r9, r0 - ldr r5, [r9, #0xc] - ldr r4, [r9, #0x8] - mov r8, r1 - mov r7, r2 - mov r0, r5 - mov r1, r4 - mov r6, r3 - bl DC_FlushRange - cmp r7, #0x0 - beq _020B1300 - cmp r7, #0x1 - beq _020B1288 - cmp r7, #0x2 - beq _020B12C4 - b _020B1318 -_020B1288: - ldr r0, [r9, #0x4] - cmp r0, #0x0 - beq _020B12B0 - bl GX_BeginLoadOBJExtPltt - mov r0, r5 - mov r1, r8 - mov r2, r4 - bl GX_LoadOBJExtPltt - bl GX_EndLoadOBJExtPltt - b _020B1318 -_020B12B0: - mov r0, r5 - mov r1, r8 - mov r2, r4 - bl GX_LoadOBJPltt - b _020B1318 -_020B12C4: - ldr r0, [r9, #0x4] - cmp r0, #0x0 - beq _020B12EC - bl GXS_BeginLoadOBJExtPltt - mov r0, r5 - mov r1, r8 - mov r2, r4 - bl GXS_LoadOBJExtPltt - bl GXS_EndLoadOBJExtPltt - b _020B1318 -_020B12EC: - mov r0, r5 - mov r1, r8 - mov r2, r4 - bl GXS_LoadOBJPltt - b _020B1318 -_020B1300: - bl GX_BeginLoadTexPltt - mov r0, r5 - mov r1, r8 - mov r2, r4 - bl GX_LoadTexPltt - bl GX_EndLoadTexPltt -_020B1318: - ldr r1, [r9, #0x0] - mov r0, r6 - str r1, [r6, #0x0] - ldr r3, [r9, #0x4] - mov r1, r7 - mov r2, r8 - str r3, [r6, #0x4] - bl FUN_020B19D0 - add sp, sp, #0x4 - ldmia sp!, {r4-r9,pc} - - arm_func_start FUN_020B1340 -FUN_020B1340: ; 0x020B1340 - stmdb sp!, {r4-r7,lr} - sub sp, sp, #0x4 - mov r7, r0 - mov r6, r1 - ldr r0, [r7, #0x14] - ldr r1, [r7, #0x10] - mov r5, r2 - mov r4, r3 - bl DC_FlushRange - cmp r5, #0x0 - ldr r0, [r7, #0x8] - beq _020B13B8 - cmp r5, #0x1 - beq _020B1384 - cmp r5, #0x2 - beq _020B13A0 - b _020B13B8 -_020B1384: - mov r3, #0x4000000 - ldr r2, [r3, #0x0] - ldr r1, _020B1520 ; =0xFFCFFFEF - and r1, r2, r1 - orr r0, r1, r0 - str r0, [r3, #0x0] - b _020B13B8 -_020B13A0: - ldr r3, _020B1524 ; =0x04001000 - ldr r1, _020B1520 ; =0xFFCFFFEF - ldr r2, [r3, #0x0] - and r1, r2, r1 - orr r0, r1, r0 - str r0, [r3, #0x0] -_020B13B8: - ldr r0, [r7, #0x8] - cmp r0, #0x0 - bne _020B14D8 - ldrh r0, [r7, #0x2] - cmp r0, #0x10 - bgt _020B1408 - cmp r0, #0x10 - bge _020B1434 - cmp r0, #0x8 - addls pc, pc, r0, lsl #0x2 - b _020B1444 - ; Jump table - b _020B1444 ; case 0 - b _020B1414 ; case 1 - b _020B141C ; case 2 - b _020B1444 ; case 3 - b _020B1424 ; case 4 - b _020B1444 ; case 5 - b _020B1444 ; case 6 - b _020B1444 ; case 7 - b _020B142C ; case 8 -_020B1408: - cmp r0, #0x20 - beq _020B143C - b _020B1444 -_020B1414: - mov r0, #0x0 - b _020B1448 -_020B141C: - mov r0, #0x1 - b _020B1448 -_020B1424: - mov r0, #0x2 - b _020B1448 -_020B142C: - mov r0, #0x3 - b _020B1448 -_020B1434: - mov r0, #0x4 - b _020B1448 -_020B143C: - mov r0, #0x5 - b _020B1448 -_020B1444: - mov r0, #0x0 -_020B1448: - str r0, [r4, #0xc] - ldrh r0, [r7, #0x0] - cmp r0, #0x10 - bgt _020B1490 - cmp r0, #0x10 - bge _020B14BC - cmp r0, #0x8 - addls pc, pc, r0, lsl #0x2 - b _020B14CC - ; Jump table - b _020B14CC ; case 0 - b _020B149C ; case 1 - b _020B14A4 ; case 2 - b _020B14CC ; case 3 - b _020B14AC ; case 4 - b _020B14CC ; case 5 - b _020B14CC ; case 6 - b _020B14CC ; case 7 - b _020B14B4 ; case 8 -_020B1490: - cmp r0, #0x20 - beq _020B14C4 - b _020B14CC -_020B149C: - mov r0, #0x0 - b _020B14D0 -_020B14A4: - mov r0, #0x1 - b _020B14D0 -_020B14AC: - mov r0, #0x2 - b _020B14D0 -_020B14B4: - mov r0, #0x3 - b _020B14D0 -_020B14BC: - mov r0, #0x4 - b _020B14D0 -_020B14C4: - mov r0, #0x5 - b _020B14D0 -_020B14CC: - mov r0, #0x0 -_020B14D0: - str r0, [r4, #0x10] - b _020B14E8 -_020B14D8: - ldrh r0, [r7, #0x2] - str r0, [r4, #0xc] - ldrh r0, [r7, #0x0] - str r0, [r4, #0x10] -_020B14E8: - ldr r1, [r7, #0x4] - mov r0, #0x0 - str r1, [r4, #0x14] - str r0, [r4, #0x18] - mov r0, #0x1 - str r0, [r4, #0x1c] - ldr r3, [r7, #0x8] - mov r0, r4 - mov r1, r5 - mov r2, r6 - str r3, [r4, #0x20] - bl FUN_020B1A1C - add sp, sp, #0x4 - ldmia sp!, {r4-r7,pc} - .balign 4 -_020B1520: .word 0xFFCFFFEF -_020B1524: .word 0x04001000 - - arm_func_start FUN_020B1528 -FUN_020B1528: ; 0x020B1528 - stmdb sp!, {r4-r7,lr} - sub sp, sp, #0x4 - mov r7, r0 - movs r5, r2 - mov r6, r1 - mov r4, r3 - ldr r0, [r7, #0x8] - beq _020B1590 - cmp r5, #0x1 - beq _020B155C - cmp r5, #0x2 - beq _020B1578 - b _020B1590 -_020B155C: - mov r3, #0x4000000 - ldr r2, [r3, #0x0] - ldr r1, _020B1760 ; =0xFFCFFFEF - and r1, r2, r1 - orr r0, r1, r0 - str r0, [r3, #0x0] - b _020B1590 -_020B1578: - ldr r3, _020B1764 ; =0x04001000 - ldr r1, _020B1760 ; =0xFFCFFFEF - ldr r2, [r3, #0x0] - and r1, r2, r1 - orr r0, r1, r0 - str r0, [r3, #0x0] -_020B1590: - ldr r0, [r7, #0x14] - ldr r1, [r7, #0x10] - bl DC_FlushRange - cmp r5, #0x0 - beq _020B15B8 - cmp r5, #0x1 - beq _020B15D4 - cmp r5, #0x2 - beq _020B15E8 - b _020B15F8 -_020B15B8: - bl GX_BeginLoadTex - ldr r0, [r7, #0x14] - ldr r2, [r7, #0x10] - mov r1, r6 - bl GX_LoadTex - bl GX_EndLoadTex - b _020B15F8 -_020B15D4: - ldr r0, [r7, #0x14] - ldr r2, [r7, #0x10] - mov r1, r6 - bl GX_LoadOBJ - b _020B15F8 -_020B15E8: - ldr r0, [r7, #0x14] - ldr r2, [r7, #0x10] - mov r1, r6 - bl GXS_LoadOBJ -_020B15F8: - ldr r0, [r7, #0x8] - cmp r0, #0x0 - bne _020B1718 - ldrh r0, [r7, #0x2] - cmp r0, #0x10 - bgt _020B1648 - cmp r0, #0x10 - bge _020B1674 - cmp r0, #0x8 - addls pc, pc, r0, lsl #0x2 - b _020B1684 - ; Jump table - b _020B1684 ; case 0 - b _020B1654 ; case 1 - b _020B165C ; case 2 - b _020B1684 ; case 3 - b _020B1664 ; case 4 - b _020B1684 ; case 5 - b _020B1684 ; case 6 - b _020B1684 ; case 7 - b _020B166C ; case 8 -_020B1648: - cmp r0, #0x20 - beq _020B167C - b _020B1684 -_020B1654: - mov r0, #0x0 - b _020B1688 -_020B165C: - mov r0, #0x1 - b _020B1688 -_020B1664: - mov r0, #0x2 - b _020B1688 -_020B166C: - mov r0, #0x3 - b _020B1688 -_020B1674: - mov r0, #0x4 - b _020B1688 -_020B167C: - mov r0, #0x5 - b _020B1688 -_020B1684: - mov r0, #0x0 -_020B1688: - str r0, [r4, #0xc] - ldrh r0, [r7, #0x0] - cmp r0, #0x10 - bgt _020B16D0 - cmp r0, #0x10 - bge _020B16FC - cmp r0, #0x8 - addls pc, pc, r0, lsl #0x2 - b _020B170C - ; Jump table - b _020B170C ; case 0 - b _020B16DC ; case 1 - b _020B16E4 ; case 2 - b _020B170C ; case 3 - b _020B16EC ; case 4 - b _020B170C ; case 5 - b _020B170C ; case 6 - b _020B170C ; case 7 - b _020B16F4 ; case 8 -_020B16D0: - cmp r0, #0x20 - beq _020B1704 - b _020B170C -_020B16DC: - mov r0, #0x0 - b _020B1710 -_020B16E4: - mov r0, #0x1 - b _020B1710 -_020B16EC: - mov r0, #0x2 - b _020B1710 -_020B16F4: - mov r0, #0x3 - b _020B1710 -_020B16FC: - mov r0, #0x4 - b _020B1710 -_020B1704: - mov r0, #0x5 - b _020B1710 -_020B170C: - mov r0, #0x0 -_020B1710: - str r0, [r4, #0x10] - b _020B1728 -_020B1718: - ldrh r0, [r7, #0x2] - str r0, [r4, #0xc] - ldrh r0, [r7, #0x0] - str r0, [r4, #0x10] -_020B1728: - ldr r1, [r7, #0x4] - mov r0, #0x0 - str r1, [r4, #0x14] - str r0, [r4, #0x18] - mov r0, #0x1 - str r0, [r4, #0x1c] - ldr r3, [r7, #0x8] - mov r0, r4 - mov r1, r5 - mov r2, r6 - str r3, [r4, #0x20] - bl FUN_020B1A1C - add sp, sp, #0x4 - ldmia sp!, {r4-r7,pc} - .balign 4 -_020B1760: .word 0xFFCFFFEF -_020B1764: .word 0x04001000 - - arm_func_start FUN_020B1768 -FUN_020B1768: ; 0x020B1768 - stmdb sp!, {r4-r7,lr} - sub sp, sp, #0x4 - mov r7, r0 - movs r5, r2 - mov r6, r1 - mov r4, r3 - ldr r0, [r7, #0x8] - beq _020B17D0 - cmp r5, #0x1 - beq _020B179C - cmp r5, #0x2 - beq _020B17B8 - b _020B17D0 -_020B179C: - mov r3, #0x4000000 - ldr r2, [r3, #0x0] - ldr r1, _020B19A0 ; =0xFFCFFFEF - and r1, r2, r1 - orr r0, r1, r0 - str r0, [r3, #0x0] - b _020B17D0 -_020B17B8: - ldr r3, _020B19A4 ; =0x04001000 - ldr r1, _020B19A0 ; =0xFFCFFFEF - ldr r2, [r3, #0x0] - and r1, r2, r1 - orr r0, r1, r0 - str r0, [r3, #0x0] -_020B17D0: - ldr r0, [r7, #0x14] - ldr r1, [r7, #0x10] - bl DC_FlushRange - cmp r5, #0x0 - beq _020B17F8 - cmp r5, #0x1 - beq _020B1814 - cmp r5, #0x2 - beq _020B1828 - b _020B1838 -_020B17F8: - bl GX_BeginLoadTex - ldr r0, [r7, #0x14] - ldr r2, [r7, #0x10] - mov r1, r6 - bl GX_LoadTex - bl GX_EndLoadTex - b _020B1838 -_020B1814: - ldr r0, [r7, #0x14] - ldr r2, [r7, #0x10] - mov r1, r6 - bl GX_LoadOBJ - b _020B1838 -_020B1828: - ldr r0, [r7, #0x14] - ldr r2, [r7, #0x10] - mov r1, r6 - bl GXS_LoadOBJ -_020B1838: - ldr r0, [r7, #0x8] - cmp r0, #0x0 - bne _020B1958 - ldrh r0, [r7, #0x2] - cmp r0, #0x10 - bgt _020B1888 - cmp r0, #0x10 - bge _020B18B4 - cmp r0, #0x8 - addls pc, pc, r0, lsl #0x2 - b _020B18C4 - ; Jump table - b _020B18C4 ; case 0 - b _020B1894 ; case 1 - b _020B189C ; case 2 - b _020B18C4 ; case 3 - b _020B18A4 ; case 4 - b _020B18C4 ; case 5 - b _020B18C4 ; case 6 - b _020B18C4 ; case 7 - b _020B18AC ; case 8 -_020B1888: - cmp r0, #0x20 - beq _020B18BC - b _020B18C4 -_020B1894: - mov r0, #0x0 - b _020B18C8 -_020B189C: - mov r0, #0x1 - b _020B18C8 -_020B18A4: - mov r0, #0x2 - b _020B18C8 -_020B18AC: - mov r0, #0x3 - b _020B18C8 -_020B18B4: - mov r0, #0x4 - b _020B18C8 -_020B18BC: - mov r0, #0x5 - b _020B18C8 -_020B18C4: - mov r0, #0x0 -_020B18C8: - str r0, [r4, #0xc] - ldrh r0, [r7, #0x0] - cmp r0, #0x10 - bgt _020B1910 - cmp r0, #0x10 - bge _020B193C - cmp r0, #0x8 - addls pc, pc, r0, lsl #0x2 - b _020B194C - ; Jump table - b _020B194C ; case 0 - b _020B191C ; case 1 - b _020B1924 ; case 2 - b _020B194C ; case 3 - b _020B192C ; case 4 - b _020B194C ; case 5 - b _020B194C ; case 6 - b _020B194C ; case 7 - b _020B1934 ; case 8 -_020B1910: - cmp r0, #0x20 - beq _020B1944 - b _020B194C -_020B191C: - mov r0, #0x0 - b _020B1950 -_020B1924: - mov r0, #0x1 - b _020B1950 -_020B192C: - mov r0, #0x2 - b _020B1950 -_020B1934: - mov r0, #0x3 - b _020B1950 -_020B193C: - mov r0, #0x4 - b _020B1950 -_020B1944: - mov r0, #0x5 - b _020B1950 -_020B194C: - mov r0, #0x0 -_020B1950: - str r0, [r4, #0x10] - b _020B1968 -_020B1958: - ldrh r0, [r7, #0x2] - str r0, [r4, #0xc] - ldrh r0, [r7, #0x0] - str r0, [r4, #0x10] -_020B1968: - ldr r1, [r7, #0x4] - mov r0, #0x0 - str r1, [r4, #0x14] - str r0, [r4, #0x18] - mov r0, #0x1 - str r0, [r4, #0x1c] - ldr r3, [r7, #0x8] - mov r0, r4 - mov r1, r5 - mov r2, r6 - str r3, [r4, #0x20] - bl FUN_020B1A1C - add sp, sp, #0x4 - ldmia sp!, {r4-r7,pc} - .balign 4 -_020B19A0: .word 0xFFCFFFEF -_020B19A4: .word 0x04001000 - - arm_func_start FUN_020B19A8 -FUN_020B19A8: - add r0, r0, r1, lsl #0x2 - ldr r1, [r0, #0x8] - mvn r0, #0x0 - cmp r1, r0 - movne r0, #0x1 - moveq r0, #0x0 - bx lr - - arm_func_start FUN_020B19C4 -FUN_020B19C4: ; 0x020B19C4 - add r0, r0, r1, lsl #0x2 - ldr r0, [r0, #0x8] - bx lr - - arm_func_start FUN_020B19D0 -FUN_020B19D0: ; 0x020B19D0 - add r0, r0, r1, lsl #0x2 - str r2, [r0, #0x8] - bx lr - - arm_func_start FUN_020B19DC -FUN_020B19DC: ; 0x020B19DC - mov r3, #0x0 - mvn r2, #0x0 -_020B19E4: - add r1, r0, r3, lsl #0x2 - add r3, r3, #0x1 - str r2, [r1, #0x8] - cmp r3, #0x3 - blt _020B19E4 - bx lr - - arm_func_start FUN_020B19FC -FUN_020B19FC: - ldr r1, [r0, r1, lsl #0x2] - mvn r0, #0x0 - cmp r1, r0 - movne r0, #0x1 - moveq r0, #0x0 - bx lr - - arm_func_start FUN_020B1A14 -FUN_020B1A14: ; 0x020B1A14 - ldr r0, [r0, r1, lsl #0x2] - bx lr - - arm_func_start FUN_020B1A1C -FUN_020B1A1C: ; 0x020B1A1C - str r2, [r0, r1, lsl #0x2] - bx lr - - arm_func_start FUN_020B1A24 -FUN_020B1A24: ; 0x020B1A24 - mov r2, #0x0 - mvn r1, #0x0 -_020B1A2C: - str r1, [r0, r2, lsl #0x2] - add r2, r2, #0x1 - cmp r2, #0x3 - blt _020B1A2C - bx lr - - arm_func_start FUN_020B1A40 -FUN_020B1A40: ; 0x020B1A40 - stmdb sp!, {r4,lr} - mov r4, r0 - add r1, r4, #0x4 - mov r0, #0x0 - mov r2, #0x18 - bl MIi_CpuClear16 - mov r0, #0x1000 - str r0, [r4, #0x4] - str r0, [r4, #0x8] - ldmia sp!, {r4,pc} - - arm_func_start FUN_020B1A68 -FUN_020B1A68: - ldr ip, _020B1A74 ; =FUN_020B1A40 - str r1, [r0, #0x0] - bx r12 - .balign 4 -_020B1A74: .word FUN_020B1A40 - - arm_func_start FUN_020B1A78 -FUN_020B1A78: ; 0x020B1A78 - ldr r3, [r0, #0x0] - cmp r3, #0x1 - ldreqh r3, [r0, #0x12] - orreq r3, r3, #0x2 - streqh r3, [r0, #0x12] - streq r1, [r0, #0x4] - streq r2, [r0, #0x8] - bx lr - - arm_func_start FUN_020B1A98 -FUN_020B1A98: ; 0x020B1A98 - ldr r2, [r0, #0x0] - cmp r2, #0x1 - ldreqh r2, [r0, #0x12] - orreq r2, r2, #0x4 - streqh r2, [r0, #0x12] - streqh r1, [r0, #0x10] - bx lr - - arm_func_start FUN_020B1AB4 -FUN_020B1AB4: ; 0x020B1AB4 - ldr r3, [r0, #0x0] - cmp r3, #0x1 - ldreqh r3, [r0, #0x12] - orreq r3, r3, #0x8 - streqh r3, [r0, #0x12] - streqh r1, [r0, #0xc] - streqh r2, [r0, #0xe] - bx lr - - arm_func_start FUN_020B1AD4 -FUN_020B1AD4: ; 0x020B1AD4 - mov r2, #0x0 - str r2, [r0, #0x0] - str r1, [r0, #0x4] - mov r1, #0x1 - str r1, [r0, #0x8] - ldr ip, _020B1AF4 ; =FUN_020B1A68 - add r0, r0, #0xc - bx r12 - .balign 4 -_020B1AF4: .word FUN_020B1A68 - - arm_func_start FUN_020B1AF8 -FUN_020B1AF8: ; 0x020B1AF8 - stmdb sp!, {r4-r11,lr} - sub sp, sp, #0x34 - ldrh r5, [r2, #0x0] - ldr r4, [sp, #0x60] - ldr r10, [sp, #0x58] - str r4, [sp, #0x60] - cmp r1, r5 - movcs r1, r5 - mov r4, #0x0 - cmp r1, #0x0 - str r4, [sp, #0x0] - bls _020B1E7C - ldrh r4, [sp, #0x5c] - mov r4, r4, lsl #0x19 - str r4, [sp, #0x4] - ldr r4, [sp, #0x0] - str r4, [sp, #0x14] - mov r4, #0x100 - str r4, [sp, #0xc] - mov r4, #0x300 - str r4, [sp, #0x8] - mov r4, #0x1 - str r4, [sp, #0x10] -_020B1B54: - ldr r5, [sp, #0x0] - mov r6, #0x6 - mul r6, r5, r6 - ldr r8, [r2, #0x4] - ldr r4, [sp, #0x0] - add r7, r0, r5, lsl #0x3 - ldrh r5, [r8, r6] - mov r4, r4, lsl #0x3 - add r9, r8, r6 - strh r5, [r0, r4] - ldrh r4, [r9, #0x2] - cmp r3, #0x0 - strh r4, [r7, #0x2] - ldrh r4, [r9, #0x4] - strh r4, [r7, #0x4] - bne _020B1B9C - cmp r10, #0x0 - beq _020B1E60 -_020B1B9C: - ldr r5, [r7, #0x0] - ldr r4, _020B1E88 ; =0x01FF0000 - and r4, r5, r4 - mov r4, r4, lsr #0x10 - mov r4, r4, lsl #0x10 - mov r4, r4, asr #0x10 - cmp r4, #0xff - orrgt r4, r4, #0xff00 - movgt r4, r4, lsl #0x10 - movgt r4, r4, asr #0x10 - mov r4, r4, lsl #0xc - str r4, [sp, #0x20] - ldr r4, [r7, #0x0] - and r4, r4, #0xff - mov r4, r4, lsl #0x10 - mov r4, r4, asr #0x10 - cmp r4, #0x7f - orrgt r4, r4, #0xff00 - movgt r4, r4, lsl #0x10 - movgt r4, r4, asr #0x10 - mov r4, r4, lsl #0xc - str r4, [sp, #0x24] - cmp r3, #0x0 - beq _020B1E00 - ldr r5, [r7, #0x0] - and r6, r5, #0x300 - cmp r6, #0x100 - beq _020B1C1C - cmp r6, #0x300 - beq _020B1C1C - and r4, r5, #0x30000000 - orr r6, r6, r4 -_020B1C1C: - cmp r6, #0x300 - bne _020B1C70 - ldr r4, _020B1E8C ; =0xC000C000 - ldr r8, _020B1E90 ; =UNK_020FF8AC - and r5, r5, r4 - and r4, r5, #0xc000 - mov r6, r4, asr #0xe - and r4, r5, #0xc0000000 - mov r4, r4, lsr #0x1e - mov r4, r4, lsl #0x1 - add r8, r8, r6, lsl #0x3 - ldrh r9, [r4, r8] - ldr r8, _020B1E94 ; =UNK_020FF894 - ldr r5, [sp, #0x20] - add r6, r8, r6, lsl #0x3 - add r5, r5, r9, lsl #0xb - str r5, [sp, #0x20] - ldrh r4, [r4, r6] - ldr r5, [sp, #0x24] - add r4, r5, r4, lsl #0xb - str r4, [sp, #0x24] -_020B1C70: - ldr r4, [sp, #0x60] - ldr r5, [r3, #0x8] - cmp r4, #0x0 - ldrne r8, [sp, #0x8] - add r4, sp, #0x20 - ldreq r8, [sp, #0xc] - mov r6, r4 - cmp r8, #0x300 - ldreq r9, [sp, #0x10] - mov r12, #0x1000 - ldrne r9, [sp, #0x14] - cmp r4, r4 - ldr r4, [sp, #0x24] - addeq r6, sp, #0x28 - smull r11, r4, r5, r4 - adds r5, r11, r12 - adc r11, r4, #0x0 - ldr r4, [r3, #0x0] - ldr lr, [sp, #0x20] - smlal r5, r11, r4, lr - mov r4, r5, lsr #0xc - orr r4, r4, r11, lsl #0x14 - str r4, [r6, #0x0] - ldr r4, [r3, #0xc] - ldr r5, [sp, #0x24] - ldr lr, [r3, #0x4] - smull r11, r5, r4, r5 - adds r11, r11, r12 - adc r4, r5, #0x0 - add r5, sp, #0x28 - cmp r6, r5 - ldr r5, [sp, #0x20] - smlal r11, r4, lr, r5 - mov r5, r11, lsr #0xc - orr r5, r5, r4, lsl #0x14 - str r5, [r6, #0x4] - ldreq r5, [sp, #0x28] - ldreq r4, [sp, #0x2c] - streq r5, [sp, #0x20] - streq r4, [sp, #0x24] - cmp r8, #0x100 - beq _020B1D38 - cmp r8, #0x300 - beq _020B1D38 - ldr r5, [r7, #0x0] - ldr r4, _020B1E98 ; =0xC1FFFCFF - and r4, r5, r4 - orr r4, r4, r8 - str r4, [r7, #0x0] - b _020B1D54 -_020B1D38: - ldr r5, [r7, #0x0] - ldr r4, _020B1E98 ; =0xC1FFFCFF - and r4, r5, r4 - orr r5, r4, r8 - ldr r4, [sp, #0x4] - orr r4, r4, r5 - str r4, [r7, #0x0] -_020B1D54: - ldr r6, [r7, #0x0] - ldr r5, _020B1E8C ; =0xC000C000 - cmp r9, #0x0 - and r8, r6, r5 - and r5, r8, #0xc000 - mov r6, r5, asr #0xe - and r5, r8, #0xc0000000 - ldr r8, _020B1E90 ; =UNK_020FF8AC - mov r5, r5, lsr #0x1e - mov r5, r5, lsl #0x1 - add r8, r8, r6, lsl #0x3 - ldrh r9, [r5, r8] - ldr r8, _020B1E94 ; =UNK_020FF894 - ldr r4, [sp, #0x20] - add r6, r8, r6, lsl #0x3 - mov r11, r9, asr #0x1 - ldrh r5, [r5, r6] - mov r8, r11, lsl #0xc - ldr r6, [r3, #0x0] - rsb r12, r8, #0x0 - mov r9, r5, asr #0x1 - mla r12, r6, r11, r12 - ldr r5, [r3, #0x8] - mla r6, r5, r9, r12 - add r6, r4, r6 - str r6, [sp, #0x20] - ldr r12, [r3, #0x4] - mov r5, r9, lsl #0xc - str r12, [sp, #0x1c] - ldr r12, [r3, #0xc] - rsb lr, r5, #0x0 - str r12, [sp, #0x18] - ldr r12, [sp, #0x1c] - ldr r4, [sp, #0x24] - mla r11, r12, r11, lr - ldr r12, [sp, #0x18] - subne r6, r6, r8 - mla r9, r12, r9, r11 - add r4, r4, r9 - str r4, [sp, #0x24] - subne r4, r4, r5 - strne r6, [sp, #0x20] - strne r4, [sp, #0x24] -_020B1E00: - cmp r10, #0x0 - beq _020B1E28 - ldr r6, [sp, #0x20] - ldr r4, [r10, #0x0] - ldr r5, [sp, #0x24] - add r4, r6, r4 - str r4, [sp, #0x20] - ldr r4, [r10, #0x4] - add r4, r5, r4 - str r4, [sp, #0x24] -_020B1E28: - ldr r4, [sp, #0x20] - ldr r6, [r7, #0x0] - add r5, r4, #0x800 - ldr r4, _020B1E9C ; =0x000001FF - and r4, r4, r5, asr #0xc - ldr r5, _020B1EA0 ; =0xFE00FF00 - and r6, r6, r5 - ldr r5, [sp, #0x24] - add r5, r5, #0x800 - mov r5, r5, asr #0xc - and r5, r5, #0xff - orr r5, r6, r5 - orr r4, r5, r4, lsl #0x10 - str r4, [r7, #0x0] -_020B1E60: - ldr r4, [sp, #0x0] - add r4, r4, #0x1 - mov r4, r4, lsl #0x10 - mov r4, r4, lsr #0x10 - str r4, [sp, #0x0] - cmp r4, r1 - blo _020B1B54 -_020B1E7C: - mov r0, r1 - add sp, sp, #0x34 - ldmia sp!, {r4-r11,pc} - .balign 4 -_020B1E88: .word 0x01FF0000 -_020B1E8C: .word 0xC000C000 -_020B1E90: .word UNK_020FF8AC -_020B1E94: .word UNK_020FF894 -_020B1E98: .word 0xC1FFFCFF -_020B1E9C: .word 0x000001FF -_020B1EA0: .word 0xFE00FF00 - - arm_func_start FUN_020B1EA4 -FUN_020B1EA4: ; 0x020B1EA4 - stmdb sp!, {r4,lr} - mov r4, r0 - bl FUN_020B0518 - cmp r0, #0x0 - ldmeqia sp!, {r4,pc} - mov r0, r4 - bl FUN_020B1FC4 - ldmia sp!, {r4,pc} - - arm_func_start FUN_020B1EC4 -FUN_020B1EC4: ; 0x020B1EC4 - stmdb sp!, {r4,lr} - mov r4, r0 - bl FUN_020B0534 - cmp r0, #0x0 - ldmeqia sp!, {r4,pc} - mov r0, r4 - bl FUN_020B1FC4 - ldmia sp!, {r4,pc} - - arm_func_start FUN_020B1EE4 -FUN_020B1EE4: ; 0x020B1EE4 - stmdb sp!, {r4,lr} - mov r4, r0 - bl FUN_020B0438 - mov r0, r4 - bl FUN_020B1FC4 - ldmia sp!, {r4,pc} - - arm_func_start FUN_020B1EFC -FUN_020B1EFC: ; 0x020B1EFC - stmdb sp!, {r4-r7,lr} - sub sp, sp, #0x14 - mov r4, r2 - ldr r2, [r4, #0xc] - mov r5, r1 - ldr r1, [r2, #0x0] - ldr r2, [sp, #0x34] - str r1, [sp, #0x0] - ldr r1, [sp, #0x38] - str r2, [sp, #0x4] - mov r6, r3 - mov r7, r0 - ldr r12, [sp, #0x3c] - str r1, [sp, #0x8] - ldr r1, [sp, #0x28] - ldr r2, [sp, #0x2c] - ldr r3, [sp, #0x30] - mov r0, r6 - str r12, [sp, #0xc] - bl FUN_020B45F0 - str r6, [r7, #0x34] - str r4, [r7, #0x30] - add r0, r7, #0x38 - mov r1, #0x1 - str r6, [r7, #0x34] - bl FUN_020B1A68 - mov r0, r7 - bl FUN_020B04C0 - mov r0, r7 - mov r1, r5 - bl FUN_020B1EE4 - add sp, sp, #0x14 - ldmia sp!, {r4-r7,pc} - - arm_func_start FUN_020B1F80 -FUN_020B1F80: ; 0x020B1F80 - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - mov r5, r0 - mov r4, r1 - str r2, [r5, #0x30] - mvn r2, #0x0 - add r0, r5, #0x38 - mov r1, #0x1 - str r2, [r5, #0x34] - bl FUN_020B1A68 - mov r0, r5 - bl FUN_020B04C0 - mov r0, r5 - mov r1, r4 - bl FUN_020B1EE4 - add sp, sp, #0x4 - ldmia sp!, {r4-r5,pc} - - arm_func_start FUN_020B1FC4 -FUN_020B1FC4: ; 0x020B1FC4 - stmdb sp!, {r4-r7,lr} - sub sp, sp, #0x4 - mov r5, r0 - ldr r1, [r5, #0x0] - ldrh r1, [r1, #0x4] - cmp r1, #0x0 - addeq sp, sp, #0x4 - ldmeqia sp!, {r4-r7,pc} - bl FUN_020B06E0 - mov r4, r0 - ldr r7, [r5, #0x30] - ldrh r1, [r4, #0x0] - mov r0, r7 - bl FUN_020AFE8C - str r0, [r5, #0x2c] - ldr r1, [r5, #0x18] - add r0, r5, #0x38 - ldr r2, [r1, #0x4] - mov r1, #0x1 - and r6, r2, #0xff - bl FUN_020B1A68 - cmp r6, #0x0 - beq _020B2068 - cmp r6, #0x2 - bne _020B203C - ldrsh r1, [r4, #0x4] - ldrsh r2, [r4, #0x6] - add r0, r5, #0x38 - bl FUN_020B1AB4 - b _020B2068 -_020B203C: - ldr r1, [r4, #0x4] - ldr r2, [r4, #0x8] - add r0, r5, #0x38 - bl FUN_020B1A78 - ldrh r1, [r4, #0x2] - add r0, r5, #0x38 - bl FUN_020B1A98 - ldrsh r1, [r4, #0xc] - ldrsh r2, [r4, #0xe] - add r0, r5, #0x38 - bl FUN_020B1AB4 -_020B2068: - ldr r2, [r7, #0xc] - cmp r2, #0x0 - movne r0, #0x1 - moveq r0, #0x0 - cmp r0, #0x0 - addeq sp, sp, #0x4 - ldmeqia sp!, {r4-r7,pc} - ldr r1, [r5, #0x34] - mvn r0, #0x0 - cmp r1, r0 - movne r0, #0x1 - moveq r0, #0x0 - cmp r0, #0x0 - addeq sp, sp, #0x4 - ldmeqia sp!, {r4-r7,pc} - ldrh r1, [r4, #0x0] - ldr r2, [r2, #0x4] - ldr r0, [r5, #0x34] - add r3, r2, r1, lsl #0x3 - ldr r1, [r2, r1, lsl #0x3] - ldr r2, [r3, #0x4] - bl FUN_020B4400 - add sp, sp, #0x4 - ldmia sp!, {r4-r7,pc} - - arm_func_start FUN_020B20C8 -FUN_020B20C8: ; 0x020B20C8 - stmdb sp!, {r4-r11,lr} - sub sp, sp, #0xc - mov r6, #0x0 - str r6, [r0, #0x38] - ldr r7, [sp, #0x30] - str r6, [r0, #0x30] - mov r10, r1 - str r7, [r0, #0x34] - str r0, [sp, #0x0] - movs r8, r3 - mov r9, r2 - str r10, [r0, #0x3c] - ldr r11, [sp, #0x34] - beq _020B215C - mov r0, #0x1 - str r6, [sp, #0x8] - str r0, [sp, #0x4] -_020B210C: - mov r0, #0x28 - mul r4, r6, r0 - ldr r1, [sp, #0x4] - add r0, r10, r4 - bl FUN_020B1AD4 - mov r0, #0x54 - mla r5, r6, r0, r9 - ldr r1, [sp, #0x8] - mov r0, r7 - str r5, [r10, r4] - bl FUN_020AFC04 - mov r1, r0 - mov r0, r5 - mov r2, r11 - bl FUN_020B1F80 - add r0, r6, #0x1 - mov r0, r0, lsl #0x10 - mov r6, r0, lsr #0x10 - cmp r6, r8 - blo _020B210C -_020B215C: - ldr r0, [sp, #0x0] - bl FUN_020B04C0 - ldr r0, [sp, #0x0] - ldr r3, [sp, #0x38] - ldr r2, [sp, #0x0] - add r0, r0, #0x44 - mov r1, #0x1 - str r3, [r2, #0x40] - bl FUN_020B1A68 - ldr r0, [sp, #0x0] - mov r1, #0x0 - strh r1, [r0, #0x2c] - add sp, sp, #0xc - ldmia sp!, {r4-r11,pc} - - arm_func_start FUN_020B2194 -FUN_020B2194: ; 0x020B2194 - stmdb sp!, {r4-r7,lr} - sub sp, sp, #0x4 - mov r7, r0 - bl FUN_020B0518 - cmp r0, #0x0 - addeq sp, sp, #0x4 - ldmeqia sp!, {r4-r7,pc} - mov r0, r7 - bl FUN_020B06E0 - mov r4, r0 - ldrh r1, [r4, #0x0] - ldr r0, [r7, #0x40] - bl FUN_020AFF34 - ldr r1, [r7, #0x18] - mov r6, r0 - ldr r1, [r1, #0x4] - add r0, r7, #0x44 - and r5, r1, #0xff - mov r1, #0x1 - bl FUN_020B1A68 - cmp r5, #0x0 - beq _020B2234 - cmp r5, #0x2 - bne _020B2208 - ldrsh r1, [r4, #0x4] - ldrsh r2, [r4, #0x6] - add r0, r7, #0x44 - bl FUN_020B1AB4 - b _020B2234 -_020B2208: - ldr r1, [r4, #0x4] - ldr r2, [r4, #0x8] - add r0, r7, #0x44 - bl FUN_020B1A78 - ldrh r1, [r4, #0x2] - add r0, r7, #0x44 - bl FUN_020B1A98 - ldrsh r1, [r4, #0xc] - ldrsh r2, [r4, #0xe] - add r0, r7, #0x44 - bl FUN_020B1AB4 -_020B2234: - ldrh r2, [r7, #0x2c] - mov r1, r6 - add r0, r7, #0x30 - bl FUN_020B24E0 - add sp, sp, #0x4 - ldmia sp!, {r4-r7,pc} - - arm_func_start FUN_020B224C -FUN_020B224C: ; 0x020B224C - stmdb sp!, {r4-r7,lr} - sub sp, sp, #0x4 - mov r4, r0 - ldr r2, [r4, #0x0] - mov r6, r1 - ldrh r5, [r2, #0x4] - bl FUN_020B0534 - cmp r0, #0x0 - beq _020B2318 - ldrh r1, [r4, #0x2c] - mov r0, r4 - add r1, r1, r5 - strh r1, [r4, #0x2c] - bl FUN_020B06E0 - mov r5, r0 - ldrh r1, [r5, #0x0] - ldr r0, [r4, #0x40] - bl FUN_020AFF34 - ldr r1, [r4, #0x18] - mov r7, r0 - ldr r1, [r1, #0x4] - add r0, r4, #0x44 - and r6, r1, #0xff - mov r1, #0x1 - bl FUN_020B1A68 - cmp r6, #0x0 - beq _020B2300 - cmp r6, #0x2 - bne _020B22D4 - ldrsh r1, [r5, #0x4] - ldrsh r2, [r5, #0x6] - add r0, r4, #0x44 - bl FUN_020B1AB4 - b _020B2300 -_020B22D4: - ldr r1, [r5, #0x4] - ldr r2, [r5, #0x8] - add r0, r4, #0x44 - bl FUN_020B1A78 - ldrh r1, [r5, #0x2] - add r0, r4, #0x44 - bl FUN_020B1A98 - ldrsh r1, [r5, #0xc] - ldrsh r2, [r5, #0xe] - add r0, r4, #0x44 - bl FUN_020B1AB4 -_020B2300: - ldrh r2, [r4, #0x2c] - mov r1, r7 - add r0, r4, #0x30 - bl FUN_020B24E0 - add sp, sp, #0x4 - ldmia sp!, {r4-r7,pc} -_020B2318: - mov r1, r6 - add r0, r4, #0x30 - bl FUN_020B232C - add sp, sp, #0x4 - ldmia sp!, {r4-r7,pc} - - arm_func_start FUN_020B232C -FUN_020B232C: ; 0x020B232C - stmdb sp!, {r4-r8,lr} - mov r7, r0 - ldr r0, [r7, #0x8] - mov r6, r1 - cmp r0, #0x1 - bne _020B238C - ldr r0, [r7, #0x0] - ldr r4, [r7, #0xc] - ldrh r0, [r0, #0x2] - mov r5, #0x0 - cmp r0, #0x0 - ldmlsia sp!, {r4-r8,pc} - mov r8, #0x58 -_020B2360: - mla r0, r5, r8, r4 - mov r1, r6 - bl FUN_020B1EC4 - ldr r1, [r7, #0x0] - add r0, r5, #0x1 - mov r0, r0, lsl #0x10 - ldrh r1, [r1, #0x2] - mov r5, r0, lsr #0x10 - cmp r5, r1 - blo _020B2360 - ldmia sp!, {r4-r8,pc} -_020B238C: - ldr r0, [r7, #0x0] - ldr r4, [r7, #0xc] - ldrh r0, [r0, #0x0] - mov r5, #0x0 - cmp r0, #0x0 - ldmlsia sp!, {r4-r8,pc} - mov r8, #0x28 -_020B23A8: - mul r0, r5, r8 - ldr r0, [r4, r0] - mov r1, r6 - bl FUN_020B1EC4 - ldr r1, [r7, #0x0] - add r0, r5, #0x1 - mov r0, r0, lsl #0x10 - ldrh r1, [r1, #0x0] - mov r5, r0, lsr #0x10 - cmp r5, r1 - blo _020B23A8 - ldmia sp!, {r4-r8,pc} - - arm_func_start FUN_020B23D8 -FUN_020B23D8: ; 0x020B23D8 - stmdb sp!, {r4-r6,lr} - mov r5, r0 - ldrh r0, [r5, #0x0] - mov r4, #0x0 - mov r6, r4 - cmp r0, #0x0 - bls _020B2424 -_020B23F4: - mov r0, r5 - mov r1, r6 - bl FUN_020AFF34 - ldrh r0, [r0, #0x0] - ldrh r1, [r5, #0x0] - cmp r0, r4 - movhi r4, r0 - add r0, r6, #0x1 - mov r0, r0, lsl #0x10 - mov r6, r0, lsr #0x10 - cmp r6, r1 - blo _020B23F4 -_020B2424: - mov r0, r4 - ldmia sp!, {r4-r6,pc} - - arm_func_start FUN_020B242C -FUN_020B242C: ; 0x020B242C - stmdb sp!, {r4-r7,lr} - sub sp, sp, #0x4 - mov r7, r0 - bl FUN_020B0438 - mov r1, #0x0 - mov r0, r7 - strh r1, [r7, #0x2c] - bl FUN_020B06E0 - mov r4, r0 - ldrh r1, [r4, #0x0] - ldr r0, [r7, #0x40] - bl FUN_020AFF34 - ldr r1, [r7, #0x18] - mov r6, r0 - ldr r1, [r1, #0x4] - add r0, r7, #0x44 - and r5, r1, #0xff - mov r1, #0x1 - bl FUN_020B1A68 - cmp r5, #0x0 - beq _020B24C8 - cmp r5, #0x2 - bne _020B249C - ldrsh r1, [r4, #0x4] - ldrsh r2, [r4, #0x6] - add r0, r7, #0x44 - bl FUN_020B1AB4 - b _020B24C8 -_020B249C: - ldr r1, [r4, #0x4] - ldr r2, [r4, #0x8] - add r0, r7, #0x44 - bl FUN_020B1A78 - ldrh r1, [r4, #0x2] - add r0, r7, #0x44 - bl FUN_020B1A98 - ldrsh r1, [r4, #0xc] - ldrsh r2, [r4, #0xe] - add r0, r7, #0x44 - bl FUN_020B1AB4 -_020B24C8: - ldrh r2, [r7, #0x2c] - mov r1, r6 - add r0, r7, #0x30 - bl FUN_020B24E0 - add sp, sp, #0x4 - ldmia sp!, {r4-r7,pc} - - arm_func_start FUN_020B24E0 -FUN_020B24E0: ; 0x020B24E0 - stmdb sp!, {r4-r11,lr} - sub sp, sp, #0x14 - mov r10, r1 - str r0, [sp, #0x0] - str r10, [r0, #0x0] - ldr r0, [r0, #0x8] - mov r9, r2 - cmp r0, #0x1 - bne _020B2654 - ldrh r1, [r10, #0x2] - ldr r0, [sp, #0x0] - mov r4, #0x0 - ldr r8, [r0, #0xc] - cmp r1, #0x0 - bls _020B2544 - mov r3, r4 - mov r0, #0x58 -_020B2524: - mla r1, r4, r0, r8 - str r3, [r1, #0x54] - add r1, r4, #0x1 - mov r1, r1, lsl #0x10 - ldrh r2, [r10, #0x2] - mov r4, r1, lsr #0x10 - cmp r4, r2 - blo _020B2524 -_020B2544: - ldrh r0, [r10, #0x0] - mov r5, #0x0 - cmp r0, #0x0 - addls sp, sp, #0x14 - ldmlsia sp!, {r4-r11,pc} - str r5, [sp, #0x4] - mov r11, #0x1 -_020B2560: - ldr r0, [r10, #0x4] - mov r1, #0x58 - add r7, r0, r5, lsl #0x3 - ldrh r0, [r7, #0x6] - and r0, r0, #0xff00 - mov r0, r0, lsl #0x8 - mov r0, r0, lsr #0x10 - mla r6, r0, r1, r8 - ldr r0, [r6, #0x54] - cmp r0, #0x0 - bne _020B2634 - ldr r0, [sp, #0x0] - ldrh r1, [r7, #0x0] - ldr r0, [r0, #0x4] - bl FUN_020AFC04 - mov r4, r0 - mov r0, r6 - mov r1, r4 - bl FUN_020B1EE4 - str r11, [r6, #0x8] - ldrh r0, [r7, #0x6] - and r0, r0, #0xf - cmp r0, #0x1 - bne _020B2630 - ldrh r1, [r4, #0x0] - ldr r7, [sp, #0x4] - mov r3, r7 - cmp r1, #0x0 - bls _020B25F0 - ldr r2, [r4, #0xc] -_020B25D8: - add r0, r2, r3, lsl #0x3 - ldrh r0, [r0, #0x4] - add r3, r3, #0x1 - cmp r3, r1 - add r7, r7, r0 - blo _020B25D8 -_020B25F0: - mov r0, r6 - bl FUN_020B0408 - cmp r0, #0x0 - beq _020B261C - mov r0, r9 - mov r1, r7 - bl _u32_div_f - mov r0, r6 - mov r1, r1, lsl #0xc - bl FUN_020B1EC4 - b _020B2630 -_020B261C: - cmp r9, r7 - movcc r7, r9 - mov r0, r6 - mov r1, r7, lsl #0xc - bl FUN_020B1EC4 -_020B2630: - str r11, [r6, #0x54] -_020B2634: - add r0, r5, #0x1 - mov r0, r0, lsl #0x10 - ldrh r1, [r10, #0x0] - mov r5, r0, lsr #0x10 - cmp r5, r1 - blo _020B2560 - add sp, sp, #0x14 - ldmia sp!, {r4-r11,pc} -_020B2654: - ldrh r1, [r10, #0x0] - ldr r0, [sp, #0x0] - mov r4, #0x0 - cmp r1, #0x0 - ldr r11, [r0, #0xc] - addls sp, sp, #0x14 - ldmlsia sp!, {r4-r11,pc} - mov r0, #0x1 - str r4, [sp, #0xc] - str r0, [sp, #0x8] -_020B267C: - mov r0, #0x28 - mul r2, r4, r0 - ldr r3, [r10, #0x4] - mov r0, r4, lsl #0x3 - ldrh r1, [r3, r0] - ldr r0, [sp, #0x0] - ldr r6, [r11, r2] - ldr r0, [r0, #0x4] - add r7, r3, r4, lsl #0x3 - bl FUN_020AFC04 - mov r5, r0 - mov r0, r6 - mov r1, r5 - bl FUN_020B1EE4 - ldr r0, [sp, #0x8] - str r0, [r6, #0x8] - ldrh r0, [r7, #0x6] - and r0, r0, #0xf - cmp r0, #0x1 - bne _020B2740 - ldrh r1, [r5, #0x0] - ldr r8, [sp, #0xc] - mov r0, r8 - cmp r1, #0x0 - bls _020B2700 - ldr r3, [r5, #0xc] -_020B26E4: - add r1, r3, r0, lsl #0x3 - ldrh r2, [r1, #0x4] - add r0, r0, #0x1 - ldrh r1, [r5, #0x0] - add r8, r8, r2 - cmp r0, r1 - blo _020B26E4 -_020B2700: - mov r0, r6 - bl FUN_020B0408 - cmp r0, #0x0 - beq _020B272C - mov r0, r9 - mov r1, r8 - bl _u32_div_f - mov r0, r6 - mov r1, r1, lsl #0xc - bl FUN_020B1EC4 - b _020B2740 -_020B272C: - cmp r9, r8 - movcc r8, r9 - mov r0, r6 - mov r1, r8, lsl #0xc - bl FUN_020B1EC4 -_020B2740: - mov r0, #0x28 - mla r3, r4, r0, r11 - ldr r0, [sp, #0x8] - str r0, [r3, #0x8] - ldrsh r1, [r7, #0x2] - ldrsh r2, [r7, #0x4] - add r0, r3, #0xc - bl FUN_020B1AB4 - add r0, r4, #0x1 - mov r0, r0, lsl #0x10 - ldrh r1, [r10, #0x0] - mov r4, r0, lsr #0x10 - cmp r4, r1 - blo _020B267C - add sp, sp, #0x14 - ldmia sp!, {r4-r11,pc} - - arm_func_start thunk_FUN_020b5040 -thunk_FUN_020b5040: ; 0x020B2780 - ldr ip, _020B2788 ; =FUN_020B5040 - bx r12 - .balign 4 -_020B2788: .word FUN_020B5040 - - arm_func_start FUN_020B278C -FUN_020B278C: - ldr r0, [r0, #0x78] - bx lr - - arm_func_start FUN_020B2794 -FUN_020B2794: ; 0x020B2794 - stmdb sp!, {lr} - sub sp, sp, #0x1c - ldr r2, _020B2894 ; =UNK_021CDD70 - mov lr, #0x0 - ldr r12, [r2, #0x0] - ldr r3, _020B2898 ; =UNK_021CDEF4 - mov r2, #0x18 - str r1, [sp, #0x0] - str r1, [sp, #0xc] - mla r1, r12, r2, r3 - rsb r3, r0, #0x0 - str r0, [sp, #0x4] - add r0, sp, #0x0 - mov r2, r1 - str r3, [sp, #0x8] - str lr, [sp, #0x10] - str lr, [sp, #0x14] - bl FUN_020B423C - ldr r0, _020B2894 ; =UNK_021CDD70 - ldr r1, _020B289C ; =UNK_021CE1F4 - ldr r2, [r0, #0x0] - mov r0, #0x18 - mla r1, r2, r0, r1 - add r0, sp, #0x0 - mov r2, r1 - bl FUN_020B423C - ldr r0, _020B28A0 ; =UNK_021CDD68 - ldr r0, [r0, #0x0] - cmp r0, #0x0 - bne _020B2824 - ldr r1, _020B28A4 ; =UNK_02106570 - ldr r0, _020B28A8 ; =0x0000FFFE - ldrh r1, [r1, #0x0] - cmp r1, r0 - movne r0, #0x1 - bne _020B2828 -_020B2824: - mov r0, #0x0 -_020B2828: - cmp r0, #0x0 - ldreq r1, _020B2894 ; =UNK_021CDD70 - ldreq r0, _020B28A4 ; =UNK_02106570 - ldreq r1, [r1, #0x0] - streqh r1, [r0, #0x0] - ldr r0, _020B2894 ; =UNK_021CDD70 - ldr r1, _020B28AC ; =UNK_021CDDF4 - ldr r0, [r0, #0x0] - mov r0, r0, lsl #0x10 - add r12, r1, r0, lsr #0xd - ldrh r0, [r12, #0x4] - cmp r0, #0x3 - addls pc, pc, r0, lsl #0x2 - b _020B288C - ; Jump table - b _020B2870 ; case 0 - b _020B288C ; case 1 - b _020B2870 ; case 2 - b _020B2870 ; case 3 -_020B2870: - ldr r0, _020B28B0 ; =UNK_021CDD64 - mov r1, #0x1 - ldrh r3, [r0, #0x0] - add r2, r3, #0x1 - strh r2, [r0, #0x0] - strh r3, [r12, #0x2] - strh r1, [r12, #0x4] -_020B288C: - add sp, sp, #0x1c - ldmia sp!, {pc} - .balign 4 -_020B2894: .word UNK_021CDD70 -_020B2898: .word UNK_021CDEF4 -_020B289C: .word UNK_021CE1F4 -_020B28A0: .word UNK_021CDD68 -_020B28A4: .word UNK_02106570 -_020B28A8: .word 0x0000FFFE -_020B28AC: .word UNK_021CDDF4 -_020B28B0: .word UNK_021CDD64 - - arm_func_start FUN_020B28B4 -FUN_020B28B4: ; 0x020B28B4 - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x1c - ldr r2, _020B29E8 ; =UNK_021CDD70 - mov r12, #0x0 - ldr r3, [r2, #0x0] - mov r4, r1 - ldr r2, _020B29EC ; =UNK_021CDEF4 - mov r1, #0x18 - mla r1, r3, r1, r2 - mov r5, r0 - add r0, sp, #0x0 - mov r2, r1 - str r5, [sp, #0x0] - str r12, [sp, #0x4] - str r12, [sp, #0x8] - str r4, [sp, #0xc] - str r12, [sp, #0x10] - str r12, [sp, #0x14] - bl FUN_020B423C - mov r0, r5 - bl FX_Inv - mov r1, #0x0 - str r0, [sp, #0x0] - mov r0, r4 - str r1, [sp, #0x4] - str r1, [sp, #0x8] - bl FX_Inv - mov r3, #0x0 - ldr r1, _020B29E8 ; =UNK_021CDD70 - str r0, [sp, #0xc] - ldr r2, [r1, #0x0] - ldr r1, _020B29F0 ; =UNK_021CE1F4 - mov r0, #0x18 - mla r1, r2, r0, r1 - add r0, sp, #0x0 - mov r2, r1 - str r3, [sp, #0x10] - str r3, [sp, #0x14] - bl FUN_020B423C - ldr r0, _020B29F4 ; =UNK_021CDD68 - ldr r0, [r0, #0x0] - cmp r0, #0x0 - bne _020B2978 - ldr r1, _020B29F8 ; =UNK_02106570 - ldr r0, _020B29FC ; =0x0000FFFE - ldrh r1, [r1, #0x0] - cmp r1, r0 - movne r0, #0x1 - bne _020B297C -_020B2978: - mov r0, #0x0 -_020B297C: - cmp r0, #0x0 - ldreq r1, _020B29E8 ; =UNK_021CDD70 - ldreq r0, _020B29F8 ; =UNK_02106570 - ldreq r1, [r1, #0x0] - streqh r1, [r0, #0x0] - ldr r0, _020B29E8 ; =UNK_021CDD70 - ldr r1, _020B2A00 ; =UNK_021CDDF4 - ldr r0, [r0, #0x0] - mov r0, r0, lsl #0x10 - add r12, r1, r0, lsr #0xd - ldrh r0, [r12, #0x4] - cmp r0, #0x3 - addls pc, pc, r0, lsl #0x2 - b _020B29E0 - ; Jump table - b _020B29C4 ; case 0 - b _020B29E0 ; case 1 - b _020B29C4 ; case 2 - b _020B29C4 ; case 3 -_020B29C4: - ldr r0, _020B2A04 ; =UNK_021CDD64 - mov r1, #0x1 - ldrh r3, [r0, #0x0] - add r2, r3, #0x1 - strh r2, [r0, #0x0] - strh r3, [r12, #0x2] - strh r1, [r12, #0x4] -_020B29E0: - add sp, sp, #0x1c - ldmia sp!, {r4-r5,pc} - .balign 4 -_020B29E8: .word UNK_021CDD70 -_020B29EC: .word UNK_021CDEF4 -_020B29F0: .word UNK_021CE1F4 -_020B29F4: .word UNK_021CDD68 -_020B29F8: .word UNK_02106570 -_020B29FC: .word 0x0000FFFE -_020B2A00: .word UNK_021CDDF4 -_020B2A04: .word UNK_021CDD64 - - arm_func_start FUN_020B2A08 -FUN_020B2A08: ; 0x020B2A08 - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x1c - ldr r3, _020B2AEC ; =UNK_021CDD68 - mov r4, r2 - ldr r2, [r3, #0x0] - cmp r2, #0x0 - beq _020B2A6C - ldr r2, _020B2AF0 ; =UNK_021CDD70 - mov r3, #0x18 - ldr r2, [r2, #0x0] - ldr lr, _020B2AF4 ; =UNK_021CDF04 - mul r5, r2, r3 - ldr r3, [lr, r5] - ldr ip, _020B2AF8 ; =UNK_021CDF08 - add r0, r3, r0 - str r0, [lr, r5] - ldr r0, [r12, r5] - ldr r3, _020B2AFC ; =UNK_021CDD74 - add r0, r0, r1 - str r0, [r12, r5] - ldr r0, [r3, r2, lsl #0x2] - add sp, sp, #0x1c - add r0, r0, r4 - str r0, [r3, r2, lsl #0x2] - ldmia sp!, {r4-r5,pc} -_020B2A6C: - ldr r2, _020B2AF0 ; =UNK_021CDD70 - mov lr, #0x1000 - ldr r12, [r2, #0x0] - ldr r3, _020B2B00 ; =UNK_021CDEF4 - mov r2, #0x18 - str r1, [sp, #0x14] - mla r1, r12, r2, r3 - mov r3, #0x0 - str r0, [sp, #0x10] - add r0, sp, #0x0 - mov r2, r1 - str lr, [sp, #0x0] - str r3, [sp, #0x4] - str r3, [sp, #0x8] - str lr, [sp, #0xc] - bl FUN_020B423C - ldr r0, _020B2AF0 ; =UNK_021CDD70 - ldr r1, _020B2B04 ; =UNK_021CE1F4 - ldr r2, [r0, #0x0] - mov r0, #0x18 - mla r1, r2, r0, r1 - add r0, sp, #0x0 - mov r2, r1 - bl FUN_020B423C - ldr r0, _020B2AF0 ; =UNK_021CDD70 - ldr r2, _020B2AFC ; =UNK_021CDD74 - ldr r1, [r0, #0x0] - ldr r0, [r2, r1, lsl #0x2] - add r0, r0, r4 - str r0, [r2, r1, lsl #0x2] - add sp, sp, #0x1c - ldmia sp!, {r4-r5,pc} - .balign 4 -_020B2AEC: .word UNK_021CDD68 -_020B2AF0: .word UNK_021CDD70 -_020B2AF4: .word UNK_021CDF04 -_020B2AF8: .word UNK_021CDF08 -_020B2AFC: .word UNK_021CDD74 -_020B2B00: .word UNK_021CDEF4 -_020B2B04: .word UNK_021CE1F4 - - arm_func_start FUN_020B2B08 -FUN_020B2B08: ; 0x020B2B08 - ldr r0, _020B2B4C ; =UNK_021CDD70 - ldr r0, [r0, #0x0] - cmp r0, #0x0 - movle r0, #0x1 - movgt r0, #0x0 - cmp r0, #0x0 - bxne lr - ldr r1, _020B2B4C ; =UNK_021CDD70 - ldr r0, _020B2B50 ; =UNK_02106570 - ldr r3, [r1, #0x0] - ldrh r2, [r0, #0x0] - sub r3, r3, #0x1 - str r3, [r1, #0x0] - cmp r2, r3 - ldrgt r1, _020B2B54 ; =0x0000FFFE - strgth r1, [r0, #0x0] - bx lr - .balign 4 -_020B2B4C: .word UNK_021CDD70 -_020B2B50: .word UNK_02106570 -_020B2B54: .word 0x0000FFFE - - arm_func_start FUN_020B2B58 -FUN_020B2B58: ; 0x020B2B58 - stmdb sp!, {r4-r10,lr} - ldr r0, _020B2D74 ; =UNK_021CDD6C - ldr r0, [r0, #0x0] - ldr r0, [r0, #0x7c] - ands r0, r0, #0x1 - bne _020B2CA4 - ldr r0, _020B2D78 ; =UNK_021CDD70 - ldr r1, [r0, #0x0] - mov r0, r1, lsl #0x10 - add r5, r1, #0x1 - cmp r5, #0x20 - mov r4, r0, lsr #0x10 - movlt r0, #0x1 - movge r0, #0x0 - cmp r0, #0x0 - beq _020B2C44 - ldr r0, _020B2D7C ; =UNK_021CDD68 - ldr r0, [r0, #0x0] - cmp r0, #0x0 - beq _020B2BE4 - ldr r1, _020B2D78 ; =UNK_021CDD70 - mov r0, #0x18 - ldr r3, [r1, #0x0] - ldr r1, _020B2D80 ; =UNK_021CDD74 - mul r8, r3, r0 - ldr r6, _020B2D84 ; =UNK_021CDF04 - mul r7, r5, r0 - ldr r2, [r6, r8] - ldr r0, [r1, r3, lsl #0x2] - ldr r3, _020B2D88 ; =UNK_021CDF08 - str r2, [r6, r7] - ldr r2, [r3, r8] - str r0, [r1, r5, lsl #0x2] - str r2, [r3, r7] - b _020B2C3C -_020B2BE4: - ldr r1, _020B2D78 ; =UNK_021CDD70 - mov r0, #0x18 - ldr r2, [r1, #0x0] - ldr r7, _020B2D80 ; =UNK_021CDD74 - mul lr, r2, r0 - ldr r1, _020B2D8C ; =UNK_021CDEF4 - mul r12, r5, r0 - ldr r8, _020B2D90 ; =UNK_021CE1F4 - add r10, r1, lr - ldr r6, [r7, r2, lsl #0x2] - add r9, r1, r12 - ldmia r10!, {r0-r3} - stmia r9!, {r0-r3} - ldmia r10, {r0-r1} - str r6, [r7, r5, lsl #0x2] - add r7, r8, lr - stmia r9, {r0-r1} - add r6, r8, r12 - ldmia r7!, {r0-r3} - stmia r6!, {r0-r3} - ldmia r7, {r0-r1} - stmia r6, {r0-r1} -_020B2C3C: - ldr r0, _020B2D78 ; =UNK_021CDD70 - str r5, [r0, #0x0] -_020B2C44: - ldr r0, _020B2D78 ; =UNK_021CDD70 - ldr r2, _020B2D94 ; =UNK_021CDDF4 - ldr r0, [r0, #0x0] - mov r5, r4, lsl #0x3 - mov r0, r0, lsl #0x10 - mov r3, r0, lsr #0x10 - add r4, r2, r4, lsl #0x3 - mov r6, r3, lsl #0x3 - ldrh r1, [r2, r5] - ldrh r0, [r4, #0x2] - add r3, r2, r3, lsl #0x3 - strh r1, [r2, r6] - strh r0, [r3, #0x2] - ldrh r2, [r4, #0x4] - ldrh r0, [r4, #0x6] - ldr r1, _020B2D98 ; =UNK_021CDDF8 - strh r2, [r3, #0x4] - strh r0, [r3, #0x6] - ldrh r0, [r1, r5] - cmp r0, #0x1 - moveq r0, #0x2 - streqh r0, [r1, r6] - strneh r0, [r1, r6] - ldmia sp!, {r4-r10,pc} -_020B2CA4: - ldr r0, _020B2D78 ; =UNK_021CDD70 - ldr r0, [r0, #0x0] - add r4, r0, #0x1 - cmp r4, #0x20 - movlt r0, #0x1 - movge r0, #0x0 - cmp r0, #0x0 - ldmeqia sp!, {r4-r10,pc} - ldr r0, _020B2D7C ; =UNK_021CDD68 - ldr r0, [r0, #0x0] - cmp r0, #0x0 - beq _020B2D10 - ldr r1, _020B2D78 ; =UNK_021CDD70 - mov r0, #0x18 - ldr r3, [r1, #0x0] - ldr r1, _020B2D80 ; =UNK_021CDD74 - mul r7, r3, r0 - ldr r5, _020B2D84 ; =UNK_021CDF04 - mul r6, r4, r0 - ldr r2, [r5, r7] - ldr r0, [r1, r3, lsl #0x2] - ldr r3, _020B2D88 ; =UNK_021CDF08 - str r2, [r5, r6] - ldr r2, [r3, r7] - str r0, [r1, r4, lsl #0x2] - str r2, [r3, r6] - b _020B2D68 -_020B2D10: - ldr r1, _020B2D78 ; =UNK_021CDD70 - mov r0, #0x18 - ldr r2, [r1, #0x0] - ldr ip, _020B2D80 ; =UNK_021CDD74 - mul r9, r2, r0 - ldr r1, _020B2D8C ; =UNK_021CDEF4 - mul r8, r4, r0 - ldr lr, _020B2D90 ; =UNK_021CE1F4 - add r6, r1, r9 - ldr r5, [r12, r2, lsl #0x2] - add r7, r1, r8 - ldmia r6!, {r0-r3} - stmia r7!, {r0-r3} - ldmia r6, {r0-r1} - add r6, lr, r9 - stmia r7, {r0-r1} - add lr, lr, r8 - ldmia r6!, {r0-r3} - stmia lr!, {r0-r3} - ldmia r6, {r0-r1} - stmia lr, {r0-r1} - str r5, [r12, r4, lsl #0x2] -_020B2D68: - ldr r0, _020B2D78 ; =UNK_021CDD70 - str r4, [r0, #0x0] - ldmia sp!, {r4-r10,pc} - .balign 4 -_020B2D74: .word UNK_021CDD6C -_020B2D78: .word UNK_021CDD70 -_020B2D7C: .word UNK_021CDD68 -_020B2D80: .word UNK_021CDD74 -_020B2D84: .word UNK_021CDF04 -_020B2D88: .word UNK_021CDF08 -_020B2D8C: .word UNK_021CDEF4 -_020B2D90: .word UNK_021CE1F4 -_020B2D94: .word UNK_021CDDF4 -_020B2D98: .word UNK_021CDDF8 - - arm_func_start FUN_020B2D9C -FUN_020B2D9C: ; 0x020B2D9C - stmdb sp!, {r4-r6,lr} - mov r4, r0 - ldrh r0, [r4, #0x56] - cmp r0, #0x0 - bne _020B2DBC - add r0, r4, #0x30 - bl FUN_020B2E78 - ldmia sp!, {r4-r6,pc} -_020B2DBC: - bl FUN_020B2B58 - ldrh r0, [r4, #0x56] - ands r0, r0, #0x8 - beq _020B2E0C - ldr r0, _020B2E70 ; =UNK_021CDD6C - ldrsh r6, [r4, #0x52] - ldr r0, [r0, #0x0] - ldrsh r5, [r4, #0x50] - bl FUN_020B4F88 - cmp r0, #0x0 - ldr r0, _020B2E70 ; =UNK_021CDD6C - rsbne r5, r5, #0x0 - ldr r0, [r0, #0x0] - bl FUN_020B4F74 - cmp r0, #0x0 - rsbne r6, r6, #0x0 - mov r0, r5, lsl #0xc - mov r1, r6, lsl #0xc - mov r2, #0x0 - bl FUN_020B2A08 -_020B2E0C: - ldrh r0, [r4, #0x56] - ands r0, r0, #0x4 - beq _020B2E40 - ldrh r0, [r4, #0x54] - ldr r2, _020B2E74 ; =UNK_020FFA38 - mov r0, r0, asr #0x4 - mov r1, r0, lsl #0x1 - add r0, r1, #0x1 - mov r3, r1, lsl #0x1 - mov r1, r0, lsl #0x1 - ldrsh r0, [r2, r3] - ldrsh r1, [r2, r1] - bl FUN_020B2794 -_020B2E40: - ldrh r0, [r4, #0x56] - ands r0, r0, #0x2 - beq _020B2E5C - ldr r0, [r4, #0x48] - ldr r1, [r4, #0x4c] - mov r2, #0x1000 - bl FUN_020B28B4 -_020B2E5C: - add r0, r4, #0x30 - bl FUN_020B2E78 - mov r0, #0x1 - bl FUN_020B2B08 - ldmia sp!, {r4-r6,pc} - .balign 4 -_020B2E70: .word UNK_021CDD6C -_020B2E74: .word UNK_020FFA38 - - arm_func_start FUN_020B2E78 -FUN_020B2E78: ; 0x020B2E78 - stmdb sp!, {r4-r11,lr} - sub sp, sp, #0xc - mov r5, r0 - ldr r0, [r5, #0x8] - cmp r0, #0x1 - bne _020B309C - ldr r0, [r5, #0x0] - mov r2, #0x0 - ldrh r0, [r0, #0x2] - cmp r0, #0x0 - bls _020B2ED0 - ldr r3, _020B3174 ; =UNK_021CE8F4 - mov r4, r2 -_020B2EAC: - add r0, r3, r2, lsl #0x2 - str r4, [r0, #0x4] - ldr r0, [r5, #0x0] - add r2, r2, #0x1 - ldrh r1, [r0, #0x2] - mov r0, r2, lsl #0x10 - mov r2, r0, lsr #0x10 - cmp r2, r1 - blo _020B2EAC -_020B2ED0: - ldr r0, _020B3178 ; =UNK_021CDD6C - mov r6, #0x1 - ldr r1, [r0, #0x0] - ldr r0, _020B3174 ; =UNK_021CE8F4 - str r6, [r0, #0x404] - ldr r0, [r1, #0x80] - cmp r0, #0x0 - beq _020B2FD8 - bl FUN_020B4948 - str r0, [sp, #0x0] - mov r0, r6 - bl FUN_020B497C - ldr r0, _020B3178 ; =UNK_021CDD6C - ldr r0, [r0, #0x0] - ldr r0, [r0, #0x80] - bl FUN_020B4958 - ldr r2, [r5, #0x0] - mov r7, #0x0 - ldrh r0, [r2, #0x0] - cmp r0, #0x0 - bls _020B2FC0 - mov r11, r7 -_020B2F28: - ldr r0, [r2, #0x4] - ldr r9, [r5, #0xc] - add r10, r0, r7, lsl #0x3 - ldrh r0, [r10, #0x6] - and r0, r0, #0xff00 - mov r0, r0, lsl #0x8 - mov r8, r0, lsr #0x10 - ldr r0, _020B3174 ; =UNK_021CE8F4 - strh r8, [r0, #0x0] - bl FUN_020B2B58 - ldr r0, _020B3178 ; =UNK_021CDD6C - ldrsh r4, [r10, #0x4] - ldr r0, [r0, #0x0] - ldrsh r10, [r10, #0x2] - bl FUN_020B4F88 - cmp r0, #0x0 - ldr r0, _020B3178 ; =UNK_021CDD6C - rsbne r10, r10, #0x0 - ldr r0, [r0, #0x0] - bl FUN_020B4F74 - cmp r0, #0x0 - rsbne r4, r4, #0x0 - mov r2, r11 - mov r0, r10, lsl #0xc - mov r1, r4, lsl #0xc - bl FUN_020B2A08 - mov r0, #0x58 - mla r0, r8, r0, r9 - bl FUN_020B3554 - mov r0, r6 - bl FUN_020B2B08 - ldr r2, [r5, #0x0] - add r0, r7, #0x1 - mov r0, r0, lsl #0x10 - ldrh r1, [r2, #0x0] - mov r7, r0, lsr #0x10 - cmp r7, r1 - blo _020B2F28 -_020B2FC0: - mov r0, #0x0 - bl FUN_020B497C - ldr r0, [sp, #0x0] - bl FUN_020B4958 - bl FUN_020B4968 - b _020B3088 -_020B2FD8: - ldr r2, [r5, #0x0] - mov r7, #0x0 - ldrh r0, [r2, #0x0] - cmp r0, #0x0 - bls _020B3088 - str r7, [sp, #0x4] - mov r11, #0x58 -_020B2FF4: - ldr r0, [r2, #0x4] - ldr r9, [r5, #0xc] - add r10, r0, r7, lsl #0x3 - ldrh r0, [r10, #0x6] - and r0, r0, #0xff00 - mov r0, r0, lsl #0x8 - mov r8, r0, lsr #0x10 - ldr r0, _020B3174 ; =UNK_021CE8F4 - strh r8, [r0, #0x0] - bl FUN_020B2B58 - ldr r0, _020B3178 ; =UNK_021CDD6C - ldrsh r4, [r10, #0x4] - ldr r0, [r0, #0x0] - ldrsh r10, [r10, #0x2] - bl FUN_020B4F88 - cmp r0, #0x0 - ldr r0, _020B3178 ; =UNK_021CDD6C - rsbne r10, r10, #0x0 - ldr r0, [r0, #0x0] - bl FUN_020B4F74 - cmp r0, #0x0 - rsbne r4, r4, #0x0 - ldr r2, [sp, #0x4] - mov r0, r10, lsl #0xc - mov r1, r4, lsl #0xc - bl FUN_020B2A08 - mla r0, r8, r11, r9 - bl FUN_020B3554 - mov r0, r6 - bl FUN_020B2B08 - ldr r2, [r5, #0x0] - add r0, r7, #0x1 - mov r0, r0, lsl #0x10 - ldrh r1, [r2, #0x0] - mov r7, r0, lsr #0x10 - cmp r7, r1 - blo _020B2FF4 -_020B3088: - ldr r0, _020B3174 ; =UNK_021CE8F4 - mov r1, #0x0 - str r1, [r0, #0x404] - add sp, sp, #0xc - ldmia sp!, {r4-r11,pc} -_020B309C: - ldr r0, _020B3178 ; =UNK_021CDD6C - ldr r7, [r5, #0xc] - ldr r0, [r0, #0x0] - ldr r0, [r0, #0x80] - cmp r0, #0x0 - beq _020B312C - bl FUN_020B4948 - mov r6, r0 - mov r0, #0x1 - bl FUN_020B497C - ldr r0, _020B3178 ; =UNK_021CDD6C - ldr r0, [r0, #0x0] - ldr r0, [r0, #0x80] - bl FUN_020B4958 - ldr r0, [r5, #0x0] - mov r4, #0x0 - ldrh r0, [r0, #0x0] - cmp r0, #0x0 - bls _020B3110 - mov r8, #0x28 -_020B30EC: - mla r0, r4, r8, r7 - bl FUN_020B3474 - ldr r1, [r5, #0x0] - add r0, r4, #0x1 - mov r0, r0, lsl #0x10 - ldrh r1, [r1, #0x0] - mov r4, r0, lsr #0x10 - cmp r4, r1 - blo _020B30EC -_020B3110: - mov r0, #0x0 - bl FUN_020B497C - mov r0, r6 - bl FUN_020B4958 - bl FUN_020B4968 - add sp, sp, #0xc - ldmia sp!, {r4-r11,pc} -_020B312C: - ldr r0, [r5, #0x0] - mov r4, #0x0 - ldrh r0, [r0, #0x0] - cmp r0, #0x0 - addls sp, sp, #0xc - ldmlsia sp!, {r4-r11,pc} - mov r6, #0x28 -_020B3148: - mla r0, r4, r6, r7 - bl FUN_020B3474 - ldr r1, [r5, #0x0] - add r0, r4, #0x1 - mov r0, r0, lsl #0x10 - ldrh r1, [r1, #0x0] - mov r4, r0, lsr #0x10 - cmp r4, r1 - blo _020B3148 - add sp, sp, #0xc - ldmia sp!, {r4-r11,pc} - .balign 4 -_020B3174: .word UNK_021CE8F4 -_020B3178: .word UNK_021CDD6C - - arm_func_start FUN_020B317C -FUN_020B317C: ; 0x020B317C - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - ldr r1, _020B31EC ; =UNK_021CDD6C - mov r5, r0 - ldr r1, [r1, #0x0] - ldr r1, [r1, #0x80] - cmp r1, #0x0 - beq _020B31E0 - bl FUN_020B4948 - mov r4, r0 - mov r0, #0x1 - bl FUN_020B497C - ldr r0, _020B31EC ; =UNK_021CDD6C - ldr r0, [r0, #0x0] - ldr r0, [r0, #0x80] - bl FUN_020B4958 - mov r0, r5 - bl FUN_020B3554 - mov r0, #0x0 - bl FUN_020B497C - mov r0, r4 - bl FUN_020B4958 - bl FUN_020B4968 - add sp, sp, #0x4 - ldmia sp!, {r4-r5,pc} -_020B31E0: - bl FUN_020B3554 - add sp, sp, #0x4 - ldmia sp!, {r4-r5,pc} - .balign 4 -_020B31EC: .word UNK_021CDD6C - - arm_func_start FUN_020B31F0 -FUN_020B31F0: ; 0x020B31F0 - stmdb sp!, {lr} - sub sp, sp, #0x4 - ldr r1, _020B3260 ; =0x04000448 - mov r2, #0x1 - ldr r0, _020B3264 ; =UNK_021CDD6C - str r2, [r1, #0x0] - ldr r2, [r0, #0x0] - ldr r3, [r2, #0x7c] - cmp r3, #0x0 - beq _020B324C - ands r0, r3, #0x1 - ldrne r0, _020B3268 ; =UNK_021CDD68 - movne r1, #0x0 - strne r1, [r0, #0x0] - ands r0, r3, #0x2 - beq _020B323C - mov r0, #0x0 - str r0, [r2, #0x74] - bl FUN_020B4DA0 -_020B323C: - ldr r0, _020B3264 ; =UNK_021CDD6C - mov r1, #0x0 - ldr r0, [r0, #0x0] - str r1, [r0, #0x7c] -_020B324C: - ldr r0, _020B3264 ; =UNK_021CDD6C - mov r1, #0x0 - str r1, [r0, #0x0] - add sp, sp, #0x4 - ldmia sp!, {pc} - .balign 4 -_020B3260: .word 0x04000448 -_020B3264: .word UNK_021CDD6C -_020B3268: .word UNK_021CDD68 - - arm_func_start FUN_020B326C -FUN_020B326C: ; 0x020B326C - stmdb sp!, {r4-r8,lr} - ldr r5, _020B330C ; =UNK_021CDD60 - ldr r3, _020B3310 ; =UNK_021CDD6C - ldrh r6, [r5, #0x0] - ldr r2, _020B3314 ; =UNK_021CDD70 - mov r4, #0x0 - ldr r7, _020B3318 ; =0x0000FFFE - ldr r1, _020B331C ; =UNK_02106570 - str r0, [r3, #0x0] - str r4, [r2, #0x0] - strh r7, [r1, #0x0] - cmp r6, #0x0 - ble _020B32D0 - ldr r8, _020B3320 ; =UNK_021CE4F4 - mvn r7, #0x0 - mov r6, #0x10 -_020B32AC: - mov r0, r7 - mov r2, r6 - add r1, r8, #0x10 - bl MIi_CpuClearFast - ldrh r0, [r5, #0x0] - add r4, r4, #0x1 - add r8, r8, #0x20 - cmp r4, r0 - blt _020B32AC -_020B32D0: - ldr r4, _020B330C ; =UNK_021CDD60 - mov r0, #0x0 - ldr r3, _020B3324 ; =UNK_021CDD64 - ldr r1, _020B3328 ; =UNK_021CDDF4 - mov r2, #0x100 - strh r0, [r4, #0x0] - strh r0, [r3, #0x0] - bl MIi_CpuClearFast - ldr r1, _020B332C ; =0x04000444 - mov r2, #0x0 - ldr r0, _020B3330 ; =0x04000454 - str r2, [r1, #0x0] - str r2, [r0, #0x0] - bl FUN_020B4178 - ldmia sp!, {r4-r8,pc} - .balign 4 -_020B330C: .word UNK_021CDD60 -_020B3310: .word UNK_021CDD6C -_020B3314: .word UNK_021CDD70 -_020B3318: .word 0x0000FFFE -_020B331C: .word UNK_02106570 -_020B3320: .word UNK_021CE4F4 -_020B3324: .word UNK_021CDD64 -_020B3328: .word UNK_021CDDF4 -_020B332C: .word 0x04000444 -_020B3330: .word 0x04000454 - - arm_func_start FUN_020B3334 -FUN_020B3334: ; 0x020B3334 - stmdb sp!, {r4,lr} - mov r4, r0 - mov r1, r4 - mov r0, #0x0 - mov r2, #0x48 - bl MIi_CpuClear16 - mov r0, #0x1 - str r0, [r4, #0x10] - mov r0, #0x3 - ldr r1, _020B3380 ; =FUN_020B3EE0 - str r0, [r4, #0x14] - ldr r0, _020B3384 ; =FUN_020B3E48 - str r1, [r4, #0x18] - ldr r1, _020B3388 ; =FUN_020B3C40 - str r0, [r4, #0x1c] - ldr r0, _020B338C ; =FUN_020B3B90 - str r1, [r4, #0x20] - str r0, [r4, #0x24] - ldmia sp!, {r4,pc} - .balign 4 -_020B3380: .word FUN_020B3EE0 -_020B3384: .word FUN_020B3E48 -_020B3388: .word FUN_020B3C40 -_020B338C: .word FUN_020B3B90 - - arm_func_start FUN_020B3390 -FUN_020B3390: ; 0x020B3390 - ldr r2, [r0, #0x70] - str r2, [r1, #0x30] - str r1, [r0, #0x70] - bx lr - - arm_func_start FUN_020B33A0 -FUN_020B33A0: ; 0x020B33A0 - stmdb sp!, {r4-r7,lr} - sub sp, sp, #0x4 - mov r4, r0 - bl FUN_020B504C - mov r7, #0x0 - str r7, [r4, #0x70] - str r7, [r4, #0x74] - str r7, [r4, #0x78] - str r7, [r4, #0x7c] - str r7, [r4, #0x80] - str r7, [r4, #0x84] - strh r7, [r4, #0x88] - strh r7, [r4, #0x8a] - str r7, [r4, #0x8c] - str r7, [r4, #0x90] - ldr r1, _020B3454 ; =UNK_021CDD70 - strh r7, [r4, #0x94] - ldr r2, _020B3458 ; =0x0000FFFE - ldr r0, _020B345C ; =UNK_02106570 - ldr r6, _020B3460 ; =UNK_021CE4F4 - str r7, [r1, #0x0] - strh r2, [r0, #0x0] - mvn r5, #0x0 - mov r4, #0x10 -_020B3400: - mov r0, r5 - mov r2, r4 - add r1, r6, #0x10 - bl MIi_CpuClearFast - add r7, r7, #0x1 - cmp r7, #0x20 - add r6, r6, #0x20 - blt _020B3400 - ldr ip, _020B3464 ; =UNK_021CDD60 - mov r0, #0x0 - ldr r3, _020B3468 ; =UNK_021CDD64 - ldr r1, _020B346C ; =UNK_021CDDF4 - mov r2, #0x100 - strh r0, [r12, #0x0] - strh r0, [r3, #0x0] - bl MIi_CpuClearFast - ldr r0, _020B3470 ; =UNK_021CDD68 - mov r1, #0x0 - str r1, [r0, #0x0] - add sp, sp, #0x4 - ldmia sp!, {r4-r7,pc} - .balign 4 -_020B3454: .word UNK_021CDD70 -_020B3458: .word 0x0000FFFE -_020B345C: .word UNK_02106570 -_020B3460: .word UNK_021CE4F4 -_020B3464: .word UNK_021CDD60 -_020B3468: .word UNK_021CDD64 -_020B346C: .word UNK_021CDDF4 -_020B3470: .word UNK_021CDD68 - - arm_func_start FUN_020B3474 -FUN_020B3474: ; 0x020B3474 - stmdb sp!, {r4-r7,lr} - sub sp, sp, #0x4 - mov r5, r0 - ldr r0, [r5, #0x8] - cmp r0, #0x0 - addeq sp, sp, #0x4 - ldmeqia sp!, {r4-r7,pc} - ldr r4, [r5, #0x0] - bl FUN_020B2B58 - ldrh r0, [r5, #0x1e] - ands r0, r0, #0x8 - beq _020B34E4 - ldr r0, _020B354C ; =UNK_021CDD6C - ldrsh r7, [r5, #0x1a] - ldr r0, [r0, #0x0] - ldrsh r6, [r5, #0x18] - bl FUN_020B4F88 - cmp r0, #0x0 - ldr r0, _020B354C ; =UNK_021CDD6C - rsbne r6, r6, #0x0 - ldr r0, [r0, #0x0] - bl FUN_020B4F74 - cmp r0, #0x0 - rsbne r7, r7, #0x0 - mov r0, r6, lsl #0xc - mov r1, r7, lsl #0xc - mov r2, #0x0 - bl FUN_020B2A08 -_020B34E4: - ldrh r0, [r5, #0x1e] - ands r0, r0, #0x4 - beq _020B3518 - ldrh r0, [r5, #0x1c] - ldr r2, _020B3550 ; =UNK_020FFA38 - mov r0, r0, asr #0x4 - mov r1, r0, lsl #0x1 - add r0, r1, #0x1 - mov r3, r1, lsl #0x1 - mov r1, r0, lsl #0x1 - ldrsh r0, [r2, r3] - ldrsh r1, [r2, r1] - bl FUN_020B2794 -_020B3518: - ldrh r0, [r5, #0x1e] - ands r0, r0, #0x2 - beq _020B3534 - ldr r0, [r5, #0x10] - ldr r1, [r5, #0x14] - mov r2, #0x1000 - bl FUN_020B28B4 -_020B3534: - mov r0, r4 - bl FUN_020B3554 - mov r0, #0x1 - bl FUN_020B2B08 - add sp, sp, #0x4 - ldmia sp!, {r4-r7,pc} - .balign 4 -_020B354C: .word UNK_021CDD6C -_020B3550: .word UNK_020FFA38 - - arm_func_start FUN_020B3554 -FUN_020B3554: - stmdb sp!, {r4-r7,lr} - sub sp, sp, #0x4 - mov r5, r0 - ldrh r0, [r5, #0x4a] - ldr r4, [r5, #0x2c] - cmp r0, #0x0 - bne _020B35C0 - ldr r2, [r5, #0x34] - mvn r0, #0x0 - cmp r2, r0 - movne r0, #0x1 - moveq r0, #0x0 - cmp r0, #0x0 - beq _020B35B0 - ldr r1, _020B36B4 ; =UNK_02106574 - mov r0, r4 - str r2, [r1, #0x0] - bl FUN_020B36C0 - ldr r0, _020B36B4 ; =UNK_02106574 - mvn r1, #0x0 - str r1, [r0, #0x0] - add sp, sp, #0x4 - ldmia sp!, {r4-r7,pc} -_020B35B0: - mov r0, r4 - bl FUN_020B36C0 - add sp, sp, #0x4 - ldmia sp!, {r4-r7,pc} -_020B35C0: - bl FUN_020B2B58 - ldrh r0, [r5, #0x4a] - ands r0, r0, #0x8 - beq _020B3610 - ldr r0, _020B36B8 ; =UNK_021CDD6C - ldrsh r7, [r5, #0x46] - ldr r0, [r0, #0x0] - ldrsh r6, [r5, #0x44] - bl FUN_020B4F88 - cmp r0, #0x0 - ldr r0, _020B36B8 ; =UNK_021CDD6C - rsbne r6, r6, #0x0 - ldr r0, [r0, #0x0] - bl FUN_020B4F74 - cmp r0, #0x0 - rsbne r7, r7, #0x0 - mov r0, r6, lsl #0xc - mov r1, r7, lsl #0xc - mov r2, #0x0 - bl FUN_020B2A08 -_020B3610: - ldrh r0, [r5, #0x4a] - ands r0, r0, #0x4 - beq _020B3644 - ldrh r0, [r5, #0x48] - ldr r2, _020B36BC ; =UNK_020FFA38 - mov r0, r0, asr #0x4 - mov r1, r0, lsl #0x1 - add r0, r1, #0x1 - mov r3, r1, lsl #0x1 - mov r1, r0, lsl #0x1 - ldrsh r0, [r2, r3] - ldrsh r1, [r2, r1] - bl FUN_020B2794 -_020B3644: - ldrh r0, [r5, #0x4a] - ands r0, r0, #0x2 - beq _020B3660 - ldr r0, [r5, #0x3c] - ldr r1, [r5, #0x40] - mov r2, #0x1000 - bl FUN_020B28B4 -_020B3660: - ldr r2, [r5, #0x34] - mvn r0, #0x0 - cmp r2, r0 - movne r0, #0x1 - moveq r0, #0x0 - cmp r0, #0x0 - beq _020B369C - ldr r1, _020B36B4 ; =UNK_02106574 - mov r0, r4 - str r2, [r1, #0x0] - bl FUN_020B36C0 - ldr r0, _020B36B4 ; =UNK_02106574 - mvn r1, #0x0 - str r1, [r0, #0x0] - b _020B36A4 -_020B369C: - mov r0, r4 - bl FUN_020B36C0 -_020B36A4: - mov r0, #0x1 - bl FUN_020B2B08 - add sp, sp, #0x4 - ldmia sp!, {r4-r7,pc} - .balign 4 -_020B36B4: .word UNK_02106574 -_020B36B8: .word UNK_021CDD6C -_020B36BC: .word UNK_020FFA38 - - arm_func_start FUN_020B36C0 -FUN_020B36C0: ; 0x020B36C0 - stmdb sp!, {r4-r11,lr} - sub sp, sp, #0x4 - ldr r5, _020B3B54 ; =UNK_021CDD6C - mov r10, r0 - ldr r0, [r5, #0x0] - ldr r1, [r0, #0x7c] - str r0, [sp, #0x0] - ldr r9, [r0, #0x70] - ands r0, r1, #0x2 - beq _020B38EC - ldr r0, [r9, #0x14] - cmp r0, #0x0 - beq _020B3840 - ldr r0, _020B3B58 ; =UNK_021CDD68 - mov r1, #0x0 - ldr r0, [r0, #0x0] - cmp r0, #0x0 - bne _020B3720 - ldr r2, _020B3B5C ; =UNK_02106570 - ldr r0, _020B3B60 ; =0x0000FFFE - ldrh r2, [r2, #0x0] - cmp r2, r0 - movne r0, #0x1 - bne _020B3724 -_020B3720: - mov r0, #0x0 -_020B3724: - cmp r0, #0x0 - beq _020B37AC - ldr r0, _020B3B64 ; =UNK_021CE8F4 - ldr r1, [r0, #0x404] - cmp r1, #0x0 - beq _020B3788 - ldrh r1, [r0, #0x0] - ldr r0, _020B3B68 ; =UNK_021CE8F8 - ldr r1, [r0, r1, lsl #0x2] - cmp r1, #0x0 - bne _020B37AC - bl FUN_020B4010 - ldr r0, _020B3B6C ; =UNK_021CDD70 - ldr r2, _020B3B70 ; =UNK_021CDDF4 - ldr r0, [r0, #0x0] - ldr r1, _020B3B64 ; =UNK_021CE8F4 - mov r0, r0, lsl #0x10 - mov r0, r0, lsr #0xd - ldrh r3, [r2, r0] - ldr r4, _020B3B74 ; =UNK_021CE4F4 - ldrh r2, [r1, #0x0] - ldr r0, _020B3B68 ; =UNK_021CE8F8 - add r1, r4, r3, lsl #0x5 - str r1, [r0, r2, lsl #0x2] - b _020B37AC -_020B3788: - bl FUN_020B4010 - ldr r0, _020B3B6C ; =UNK_021CDD70 - ldr r1, _020B3B70 ; =UNK_021CDDF4 - ldr r0, [r0, #0x0] - ldr r2, _020B3B74 ; =UNK_021CE4F4 - mov r0, r0, lsl #0x10 - mov r0, r0, lsr #0xd - ldrh r0, [r1, r0] - add r1, r2, r0, lsl #0x5 -_020B37AC: - ldr r0, _020B3B58 ; =UNK_021CDD68 - ldr r0, [r0, #0x0] - cmp r0, #0x0 - ldreq r0, _020B3B6C ; =UNK_021CDD70 - ldreq r3, _020B3B78 ; =UNK_021CDEF4 - ldreq r2, [r0, #0x0] - moveq r0, #0x18 - mlaeq r0, r2, r0, r3 - beq _020B37FC - ldr r2, _020B3B6C ; =UNK_021CDD70 - mov r0, #0x18 - ldr r2, [r2, #0x0] - ldr r3, _020B3B7C ; =UNK_021CDF04 - mul r4, r2, r0 - ldr r2, _020B3B80 ; =UNK_021CDF08 - ldr r3, [r3, r4] - ldr r0, _020B3B84 ; =UNK_02106578 - ldr r2, [r2, r4] - str r3, [r0, #0x10] - str r2, [r0, #0x14] -_020B37FC: - bl FUN_020B4FAC - ldr r1, _020B3B88 ; =UNK_02106574 - mvn r0, #0x0 - ldr r1, [r1, #0x0] - cmp r1, r0 - movne r0, #0x1 - moveq r0, #0x0 - cmp r0, #0x0 - beq _020B3830 - mov r0, r10 - bl FUN_020B4BF4 - add sp, sp, #0x4 - ldmia sp!, {r4-r11,pc} -_020B3830: - mov r0, r10 - bl FUN_020B4CDC - add sp, sp, #0x4 - ldmia sp!, {r4-r11,pc} -_020B3840: - ldr r0, _020B3B6C ; =UNK_021CDD70 - ldr r1, _020B3B8C ; =UNK_021CDD74 - ldr r2, [r0, #0x0] - ldr r0, [sp, #0x0] - ldr r1, [r1, r2, lsl #0x2] - bl FUN_020B4FA4 - ldr r0, _020B3B58 ; =UNK_021CDD68 - ldr r0, [r0, #0x0] - cmp r0, #0x0 - ldreq r0, _020B3B6C ; =UNK_021CDD70 - ldreq r2, _020B3B78 ; =UNK_021CDEF4 - ldreq r1, [r0, #0x0] - moveq r0, #0x18 - mlaeq r0, r1, r0, r2 - beq _020B38A8 - ldr r1, _020B3B6C ; =UNK_021CDD70 - mov r0, #0x18 - ldr r1, [r1, #0x0] - ldr r2, _020B3B7C ; =UNK_021CDF04 - mul r3, r1, r0 - ldr r1, _020B3B80 ; =UNK_021CDF08 - ldr r2, [r2, r3] - ldr r0, _020B3B84 ; =UNK_02106578 - ldr r1, [r1, r3] - str r2, [r0, #0x10] - str r1, [r0, #0x14] -_020B38A8: - bl FUN_020B4FC4 - ldr r1, _020B3B88 ; =UNK_02106574 - mvn r0, #0x0 - ldr r1, [r1, #0x0] - cmp r1, r0 - movne r0, #0x1 - moveq r0, #0x0 - cmp r0, #0x0 - beq _020B38DC - mov r0, r10 - bl FUN_020B4BF4 - add sp, sp, #0x4 - ldmia sp!, {r4-r11,pc} -_020B38DC: - mov r0, r10 - bl FUN_020B4CDC - add sp, sp, #0x4 - ldmia sp!, {r4-r11,pc} -_020B38EC: - cmp r9, #0x0 - addeq sp, sp, #0x4 - ldmeqia sp!, {r4-r11,pc} - ldr r4, _020B3B6C ; =UNK_021CDD70 - ldr fp, _020B3B78 ; =UNK_021CDEF4 - mov r7, #0x0 - mov r6, #0x1 -_020B3908: - ldr r0, [r9, #0x10] - cmp r0, #0x0 - beq _020B3B40 - ldr r0, [r9, #0x14] - cmp r0, #0x0 - beq _020B3A8C - ldr r8, [r5, #0x0] - mov r1, r9 - str r9, [r8, #0x74] - mov r0, r8 - bl FUN_020B4F9C - ldr r1, [r9, #0x28] - ldr r2, [r9, #0x2c] - mov r0, r8 - bl FUN_020B5034 - mov r0, r8 - bl FUN_020B4E0C - ldr r0, _020B3B58 ; =UNK_021CDD68 - mov r1, r7 - ldr r0, [r0, #0x0] - cmp r0, #0x0 - bne _020B3978 - ldr r0, _020B3B5C ; =UNK_02106570 - ldrh r2, [r0, #0x0] - ldr r0, _020B3B60 ; =0x0000FFFE - cmp r2, r0 - movne r0, r6 - bne _020B397C -_020B3978: - mov r0, r7 -_020B397C: - cmp r0, #0x0 - beq _020B3A04 - ldr r0, _020B3B64 ; =UNK_021CE8F4 - ldr r0, [r0, #0x404] - cmp r0, #0x0 - beq _020B39E4 - ldr r0, _020B3B64 ; =UNK_021CE8F4 - ldrh r1, [r0, #0x0] - add r0, r0, r1, lsl #0x2 - ldr r1, [r0, #0x4] - cmp r1, #0x0 - bne _020B3A04 - bl FUN_020B4010 - ldr r0, _020B3B64 ; =UNK_021CE8F4 - ldr r2, [r4, #0x0] - ldrh r1, [r0, #0x0] - mov r0, r2, lsl #0x10 - mov r2, r0, lsr #0xd - ldr r0, _020B3B70 ; =UNK_021CDDF4 - ldrh r3, [r0, r2] - ldr r0, _020B3B64 ; =UNK_021CE8F4 - add r2, r0, r1, lsl #0x2 - ldr r0, _020B3B74 ; =UNK_021CE4F4 - add r1, r0, r3, lsl #0x5 - str r1, [r2, #0x4] - b _020B3A04 -_020B39E4: - bl FUN_020B4010 - ldr r0, [r4, #0x0] - mov r0, r0, lsl #0x10 - mov r1, r0, lsr #0xd - ldr r0, _020B3B70 ; =UNK_021CDDF4 - ldrh r1, [r0, r1] - ldr r0, _020B3B74 ; =UNK_021CE4F4 - add r1, r0, r1, lsl #0x5 -_020B3A04: - ldr r0, _020B3B58 ; =UNK_021CDD68 - ldr r0, [r0, #0x0] - cmp r0, #0x0 - ldreq r2, [r4, #0x0] - moveq r0, #0x18 - mlaeq r0, r2, r0, r11 - beq _020B3A44 - ldr r2, [r4, #0x0] - mov r0, #0x18 - mla r8, r2, r0, r11 - ldr r0, _020B3B84 ; =UNK_02106578 - ldr r3, [r8, #0x10] - mov r2, r0 - str r3, [r2, #0x10] - ldr r3, [r8, #0x14] - str r3, [r2, #0x14] -_020B3A44: - bl FUN_020B4FAC - ldr r0, _020B3B88 ; =UNK_02106574 - ldr r1, [r0, #0x0] - mvn r0, #0x0 - cmp r1, r0 - movne r0, r6 - moveq r0, r7 - cmp r0, #0x0 - beq _020B3A74 - mov r0, r10 - bl FUN_020B4BF4 - b _020B3A7C -_020B3A74: - mov r0, r10 - bl FUN_020B4CDC -_020B3A7C: - ldr r0, [r5, #0x0] - str r7, [r0, #0x74] - bl FUN_020B4DA0 - b _020B3B40 -_020B3A8C: - ldr r8, [r5, #0x0] - mov r1, r9 - mov r0, r8 - str r9, [r8, #0x74] - bl FUN_020B4F9C - mov r0, r8 - bl FUN_020B4E0C - ldr r2, [r4, #0x0] - ldr r1, _020B3B8C ; =UNK_021CDD74 - ldr r0, [sp, #0x0] - ldr r1, [r1, r2, lsl #0x2] - bl FUN_020B4FA4 - ldr r0, _020B3B58 ; =UNK_021CDD68 - ldr r0, [r0, #0x0] - cmp r0, #0x0 - ldreq r1, [r4, #0x0] - moveq r0, #0x18 - mlaeq r0, r1, r0, r11 - beq _020B3AFC - ldr r1, [r4, #0x0] - mov r0, #0x18 - mla r3, r1, r0, r11 - ldr r0, _020B3B84 ; =UNK_02106578 - ldr r2, [r3, #0x10] - mov r1, r0 - str r2, [r1, #0x10] - ldr r2, [r3, #0x14] - str r2, [r1, #0x14] -_020B3AFC: - bl FUN_020B4FC4 - ldr r0, _020B3B88 ; =UNK_02106574 - ldr r1, [r0, #0x0] - mvn r0, #0x0 - cmp r1, r0 - movne r0, r6 - moveq r0, r7 - cmp r0, #0x0 - beq _020B3B2C - mov r0, r10 - bl FUN_020B4BF4 - b _020B3B34 -_020B3B2C: - mov r0, r10 - bl FUN_020B4CDC -_020B3B34: - ldr r0, [r5, #0x0] - str r7, [r0, #0x74] - bl FUN_020B4DA0 -_020B3B40: - ldr r9, [r9, #0x30] - cmp r9, #0x0 - bne _020B3908 - add sp, sp, #0x4 - ldmia sp!, {r4-r11,pc} - .balign 4 -_020B3B54: .word UNK_021CDD6C -_020B3B58: .word UNK_021CDD68 -_020B3B5C: .word UNK_02106570 -_020B3B60: .word 0x0000FFFE -_020B3B64: .word UNK_021CE8F4 -_020B3B68: .word UNK_021CE8F8 -_020B3B6C: .word UNK_021CDD70 -_020B3B70: .word UNK_021CDDF4 -_020B3B74: .word UNK_021CE4F4 -_020B3B78: .word UNK_021CDEF4 -_020B3B7C: .word UNK_021CDF04 -_020B3B80: .word UNK_021CDF08 -_020B3B84: .word UNK_02106578 -_020B3B88: .word UNK_02106574 -_020B3B8C: .word UNK_021CDD74 - - arm_func_start FUN_020B3B90 -FUN_020B3B90: ; 0x020B3B90 - stmdb sp!, {r4-r6,lr} - sub sp, sp, #0x8 - ldr r0, _020B3C24 ; =UNK_021CDD6C - mov r12, r1 - ldr r0, [r0, #0x0] - mov r3, r2 - ldr r1, [r0, #0x74] - ldr r2, [r1, #0x44] - cmp r2, #0x0 - addeq sp, sp, #0x8 - ldmeqia sp!, {r4-r6,pc} - ldr r2, _020B3C28 ; =UNK_021CDD68 - ldr r2, [r2, #0x0] - cmp r2, #0x0 - ldreq r2, _020B3C2C ; =UNK_021CDD70 - ldreq r4, _020B3C30 ; =UNK_021CDEF4 - ldreq lr, [r2, #0x0] - moveq r2, #0x18 - mlaeq r6, lr, r2, r4 - beq _020B3C0C - ldr lr, _020B3C2C ; =UNK_021CDD70 - mov r2, #0x18 - ldr lr, [lr, #0x0] - ldr r4, _020B3C34 ; =UNK_021CDF04 - mul r5, lr, r2 - ldr r2, _020B3C38 ; =UNK_021CDF08 - ldr r4, [r4, r5] - ldr r6, _020B3C3C ; =UNK_02106578 - ldr r2, [r2, r5] - str r4, [r6, #0x10] - str r2, [r6, #0x14] -_020B3C0C: - str r6, [sp, #0x0] - ldr lr, [r1, #0x44] - mov r2, r12 - blx lr - add sp, sp, #0x8 - ldmia sp!, {r4-r6,pc} - .balign 4 -_020B3C24: .word UNK_021CDD6C -_020B3C28: .word UNK_021CDD68 -_020B3C2C: .word UNK_021CDD70 -_020B3C30: .word UNK_021CDEF4 -_020B3C34: .word UNK_021CDF04 -_020B3C38: .word UNK_021CDF08 -_020B3C3C: .word UNK_02106578 - - arm_func_start FUN_020B3C40 -FUN_020B3C40: ; 0x020B3C40 - stmdb sp!, {r4-r6,lr} - sub sp, sp, #0x8 - ldr r3, _020B3E2C ; =UNK_021CDD6C - add r4, r0, #0x38 - ldr r0, [r3, #0x0] - mov r6, r1 - mov r5, r2 - bl FUN_020B278C - cmp r0, #0x0 - beq _020B3C90 - ldrh r1, [r4, #0x4] - and r1, r1, #0xf000 - mov r1, r1, lsl #0x4 - mov r1, r1, lsr #0x10 - bl FUN_020B10B0 - ldr r1, [r4, #0x4] - and r0, r0, #0xf - bic r1, r1, #0xf000 - orr r0, r1, r0, lsl #0xc - str r0, [r4, #0x4] -_020B3C90: - ldr r0, _020B3E2C ; =UNK_021CDD6C - ldr r1, [r0, #0x0] - ldr r0, [r1, #0x84] - cmp r0, #0x0 - beq _020B3DA4 - ldr r0, [r1, #0x84] - ands r0, r0, #0x1 - beq _020B3CC8 - ldrh r0, [r1, #0x88] - ldr r1, [r4, #0x4] - bic r1, r1, #0xc00 - and r0, r0, #0x3 - orr r0, r1, r0, lsl #0xa - str r0, [r4, #0x4] -_020B3CC8: - ldr r0, _020B3E2C ; =UNK_021CDD6C - ldr r1, [r0, #0x0] - ldr r0, [r1, #0x84] - ands r0, r0, #0x2 - beq _020B3CF4 - ldrh r0, [r1, #0x8a] - ldr r1, [r4, #0x4] - bic r1, r1, #0xf000 - and r0, r0, #0xf - orr r0, r1, r0, lsl #0xc - str r0, [r4, #0x4] -_020B3CF4: - ldr r0, _020B3E2C ; =UNK_021CDD6C - ldr r1, [r0, #0x0] - ldr r0, [r1, #0x84] - ands r0, r0, #0x10 - beq _020B3D2C - ldr r2, [r4, #0x4] - ldrh r0, [r1, #0x94] - mov r1, r2, lsl #0x10 - bic r2, r2, #0xf000 - add r0, r0, r1, lsr #0x1c - and r0, r0, #0xf - and r0, r0, #0xf - orr r0, r2, r0, lsl #0xc - str r0, [r4, #0x4] -_020B3D2C: - ldr r0, _020B3E2C ; =UNK_021CDD6C - ldr r1, [r0, #0x0] - ldr r0, [r1, #0x84] - ands r0, r0, #0x4 - beq _020B3D60 - ldr r0, [r1, #0x90] - cmp r0, #0x0 - ldrne r0, [r4, #0x0] - orrne r0, r0, #0x1000 - strne r0, [r4, #0x0] - ldreq r0, [r4, #0x0] - biceq r0, r0, #0x1000 - streq r0, [r4, #0x0] -_020B3D60: - ldr r0, _020B3E2C ; =UNK_021CDD6C - ldr r1, [r0, #0x0] - ldr r0, [r1, #0x84] - ands r0, r0, #0x8 - beq _020B3DA4 - ldr r0, [r4, #0x0] - ldrh r2, [r4, #0x4] - ldr r1, [r1, #0x8c] - bic r0, r0, #0xc00 - orr r0, r0, r1, lsl #0xa - str r0, [r4, #0x0] - ldrh r0, [r4, #0x4] - and r1, r2, #0xf000 - mov r1, r1, asr #0xc - bic r0, r0, #0xf000 - orr r0, r0, r1, lsl #0xc - strh r0, [r4, #0x4] -_020B3DA4: - ldr r0, _020B3E2C ; =UNK_021CDD6C - ldr r0, [r0, #0x0] - ldr r1, [r0, #0x74] - ldr r2, [r1, #0x40] - cmp r2, #0x0 - addeq sp, sp, #0x8 - ldmeqia sp!, {r4-r6,pc} - ldr r2, _020B3E30 ; =UNK_021CDD68 - ldr r2, [r2, #0x0] - cmp r2, #0x0 - ldreq r2, _020B3E34 ; =UNK_021CDD70 - ldreq r4, _020B3E38 ; =UNK_021CDEF4 - ldreq r3, [r2, #0x0] - moveq r2, #0x18 - mlaeq r4, r3, r2, r4 - beq _020B3E10 - ldr r3, _020B3E34 ; =UNK_021CDD70 - mov r2, #0x18 - ldr r4, [r3, #0x0] - ldr r3, _020B3E3C ; =UNK_021CDF04 - mul r12, r4, r2 - ldr r2, _020B3E40 ; =UNK_021CDF08 - ldr r3, [r3, r12] - ldr r4, _020B3E44 ; =UNK_02106578 - ldr r2, [r2, r12] - str r3, [r4, #0x10] - str r2, [r4, #0x14] -_020B3E10: - str r4, [sp, #0x0] - ldr r4, [r1, #0x40] - mov r2, r6 - mov r3, r5 - blx r4 - add sp, sp, #0x8 - ldmia sp!, {r4-r6,pc} - .balign 4 -_020B3E2C: .word UNK_021CDD6C -_020B3E30: .word UNK_021CDD68 -_020B3E34: .word UNK_021CDD70 -_020B3E38: .word UNK_021CDEF4 -_020B3E3C: .word UNK_021CDF04 -_020B3E40: .word UNK_021CDF08 -_020B3E44: .word UNK_02106578 - - arm_func_start FUN_020B3E48 -FUN_020B3E48: ; 0x020B3E48 - stmdb sp!, {r4,lr} - ldr r0, _020B3EC4 ; =UNK_021CDD6C - mov r2, r1 - ldr r0, [r0, #0x0] - ldr r1, [r0, #0x74] - ldr r3, [r1, #0x3c] - cmp r3, #0x0 - ldmeqia sp!, {r4,pc} - ldr r3, _020B3EC8 ; =UNK_021CDD68 - ldr r3, [r3, #0x0] - cmp r3, #0x0 - ldreq r3, _020B3ECC ; =UNK_021CDD70 - ldreq lr, _020B3ED0 ; =UNK_021CDEF4 - ldreq r12, [r3, #0x0] - moveq r3, #0x18 - mlaeq r3, r12, r3, lr - beq _020B3EB8 - ldr ip, _020B3ECC ; =UNK_021CDD70 - mov r3, #0x18 - ldr r12, [r12, #0x0] - ldr lr, _020B3ED4 ; =UNK_021CDF04 - mul r4, r12, r3 - ldr ip, _020B3ED8 ; =UNK_021CDF08 - ldr lr, [lr, r4] - ldr r3, _020B3EDC ; =UNK_02106578 - ldr r12, [r12, r4] - str lr, [r3, #0x10] - str r12, [r3, #0x14] -_020B3EB8: - ldr r12, [r1, #0x3c] - blx r12 - ldmia sp!, {r4,pc} - .balign 4 -_020B3EC4: .word UNK_021CDD6C -_020B3EC8: .word UNK_021CDD68 -_020B3ECC: .word UNK_021CDD70 -_020B3ED0: .word UNK_021CDEF4 -_020B3ED4: .word UNK_021CDF04 -_020B3ED8: .word UNK_021CDF08 -_020B3EDC: .word UNK_02106578 - - arm_func_start FUN_020B3EE0 -FUN_020B3EE0: ; 0x020B3EE0 - stmdb sp!, {r4-r6,lr} - ldr r2, _020B3FF4 ; =UNK_021CDD6C - mov r6, r0 - ldr r0, [r2, #0x0] - mov r5, r1 - ldr r4, [r0, #0x74] - ldr r0, [r4, #0x34] - cmp r0, #0x0 - beq _020B3F7C - ldr r0, _020B3FF8 ; =UNK_021CDD68 - ldr r0, [r0, #0x0] - cmp r0, #0x0 - ldreq r0, _020B3FFC ; =UNK_021CDD70 - ldreq r1, _020B4000 ; =UNK_021CDEF4 - ldreq r2, [r0, #0x0] - moveq r0, #0x18 - mlaeq r1, r2, r0, r1 - beq _020B3F54 - ldr r1, _020B3FFC ; =UNK_021CDD70 - mov r0, #0x18 - ldr r2, [r1, #0x0] - ldr r1, _020B4004 ; =UNK_021CDF04 - mul r3, r2, r0 - ldr r0, _020B4008 ; =UNK_021CDF08 - ldr r2, [r1, r3] - ldr r1, _020B400C ; =UNK_02106578 - ldr r0, [r0, r3] - str r2, [r1, #0x10] - str r0, [r1, #0x14] -_020B3F54: - ldr r3, [r4, #0x34] - mov r0, r5 - mov r2, r4 - blx r3 - cmp r0, #0x0 - moveq r0, #0x0 - streq r0, [r6, #0x30] - ldmeqia sp!, {r4-r6,pc} - mov r0, #0x1 - str r0, [r6, #0x30] -_020B3F7C: - ldr r0, [r4, #0x38] - cmp r0, #0x0 - ldmeqia sp!, {r4-r6,pc} - ldr r0, _020B3FF8 ; =UNK_021CDD68 - ldr r0, [r0, #0x0] - cmp r0, #0x0 - ldreq r0, _020B3FFC ; =UNK_021CDD70 - ldreq r2, _020B4000 ; =UNK_021CDEF4 - ldreq r1, [r0, #0x0] - moveq r0, #0x18 - mlaeq r3, r1, r0, r2 - beq _020B3FD8 - ldr r1, _020B3FFC ; =UNK_021CDD70 - mov r0, #0x18 - ldr r2, [r1, #0x0] - ldr r1, _020B4004 ; =UNK_021CDF04 - mul r6, r2, r0 - ldr r0, _020B4008 ; =UNK_021CDF08 - ldr r1, [r1, r6] - ldr r3, _020B400C ; =UNK_02106578 - ldr r0, [r0, r6] - str r1, [r3, #0x10] - str r0, [r3, #0x14] -_020B3FD8: - ldr r0, _020B3FF4 ; =UNK_021CDD6C - ldr r6, [r4, #0x38] - ldr r0, [r0, #0x0] - mov r1, r4 - mov r2, r5 - blx r6 - ldmia sp!, {r4-r6,pc} - .balign 4 -_020B3FF4: .word UNK_021CDD6C -_020B3FF8: .word UNK_021CDD68 -_020B3FFC: .word UNK_021CDD70 -_020B4000: .word UNK_021CDEF4 -_020B4004: .word UNK_021CDF04 -_020B4008: .word UNK_021CDF08 -_020B400C: .word UNK_02106578 - - arm_func_start FUN_020B4010 -FUN_020B4010: - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - ldr r0, _020B4154 ; =UNK_021CDD70 - ldr r1, _020B4158 ; =UNK_021CDDF4 - ldr r0, [r0, #0x0] - mov r2, #0x1 - mov r0, r0, lsl #0x10 - add r3, r1, r0, lsr #0xd - ldrh r0, [r3, #0x4] - cmp r0, #0x1 - beq _020B4044 - cmp r0, #0x2 - movne r2, #0x0 -_020B4044: - cmp r2, #0x0 - addeq sp, sp, #0x4 - ldmeqia sp!, {r4-r5,pc} - ldr r0, _020B415C ; =UNK_021CDD60 - mov r2, #0x10 - ldrh r4, [r0, #0x0] - cmp r4, #0x1f - addcc r1, r4, #0x1 - strcch r1, [r0, #0x0] - ldr r0, _020B4160 ; =UNK_021CE4F4 - ldrh r5, [r3, #0x2] - add r0, r0, r4, lsl #0x5 - add r1, r0, #0x10 - mvn r0, #0x0 - strh r4, [r3, #0x0] - bl MIi_CpuClearFast - ldr r0, _020B4154 ; =UNK_021CDD70 - ldr r1, _020B4164 ; =UNK_021CDD68 - ldr r0, [r0, #0x0] - ldr r2, [r1, #0x0] - mov r1, r0, lsl #0x10 - cmp r2, #0x0 - ldr r3, _020B4158 ; =UNK_021CDDF4 - mov r1, r1, lsr #0xd - ldrh r1, [r3, r1] - ldr r3, _020B4160 ; =UNK_021CE4F4 - moveq r2, #0x18 - add r1, r3, r1, lsl #0x5 - ldreq r3, _020B4168 ; =UNK_021CE1F4 - mlaeq r12, r0, r2, r3 - beq _020B40E4 - mov r2, #0x18 - mul r3, r0, r2 - ldr r2, _020B416C ; =UNK_021CDF04 - ldr r0, _020B4170 ; =UNK_021CDF08 - ldr r2, [r2, r3] - ldr ip, _020B4174 ; =UNK_02106578 - ldr r0, [r0, r3] - str r2, [r12, #0x10] - str r0, [r12, #0x14] -_020B40E4: - ldr r2, [r12, #0x0] - ldr r0, _020B4154 ; =UNK_021CDD70 - str r2, [r1, #0x0] - ldr r2, [r12, #0x4] - str r2, [r1, #0x4] - ldr r2, [r12, #0x8] - str r2, [r1, #0x8] - ldr r2, [r12, #0xc] - str r2, [r1, #0xc] - ldr r0, [r0, #0x0] - mov r0, r0, lsl #0x10 - movs lr, r0, lsr #0x10 - addmi sp, sp, #0x4 - ldmmiia sp!, {r4-r5,pc} - ldr r3, _020B4158 ; =UNK_021CDDF4 - mov r0, #0x3 -_020B4124: - add r2, r3, lr, lsl #0x3 - ldrh r1, [r2, #0x2] - mov r12, lr, lsl #0x3 - cmp r5, r1 - addne sp, sp, #0x4 - ldmneia sp!, {r4-r5,pc} - strh r0, [r2, #0x4] - strh r4, [r3, r12] - subs lr, lr, #0x1 - bpl _020B4124 - add sp, sp, #0x4 - ldmia sp!, {r4-r5,pc} - .balign 4 -_020B4154: .word UNK_021CDD70 -_020B4158: .word UNK_021CDDF4 -_020B415C: .word UNK_021CDD60 -_020B4160: .word UNK_021CE4F4 -_020B4164: .word UNK_021CDD68 -_020B4168: .word UNK_021CE1F4 -_020B416C: .word UNK_021CDF04 -_020B4170: .word UNK_021CDF08 -_020B4174: .word UNK_02106578 - - arm_func_start FUN_020B4178 -FUN_020B4178: ; 0x020B4178 - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - ldr r0, _020B4220 ; =UNK_021CDD68 - ldr r0, [r0, #0x0] - cmp r0, #0x0 - beq _020B41B8 - ldr r1, _020B4224 ; =UNK_021CDD70 - mov r0, #0x18 - ldr r12, [r1, #0x0] - ldr r1, _020B4228 ; =UNK_021CDF04 - mul r3, r12, r0 - mov r2, #0x0 - ldr r0, _020B422C ; =UNK_021CDF08 - str r2, [r1, r3] - str r2, [r0, r3] - b _020B420C -_020B41B8: - ldr r0, _020B4224 ; =UNK_021CDD70 - mov lr, #0x18 - ldr r1, [r0, #0x0] - ldr r4, _020B4230 ; =UNK_021CDEF4 - mul r3, r1, lr - mov r2, #0x1000 - str r2, [r4, r3] - add r5, r4, r3 - mov r1, #0x0 - str r1, [r5, #0x4] - str r1, [r5, #0x8] - str r2, [r5, #0xc] - str r1, [r5, #0x10] - str r1, [r5, #0x14] - ldr r12, [r0, #0x0] - ldr r4, _020B4234 ; =UNK_021CE1F4 - ldmia r5!, {r0-r3} - mla lr, r12, lr, r4 - stmia lr!, {r0-r3} - ldmia r5, {r0-r1} - stmia lr, {r0-r1} -_020B420C: - ldr r0, _020B4238 ; =UNK_021CDD74 - mov r1, #0x0 - str r1, [r0, r12, lsl #0x2] - add sp, sp, #0x4 - ldmia sp!, {r4-r5,pc} - .balign 4 -_020B4220: .word UNK_021CDD68 -_020B4224: .word UNK_021CDD70 -_020B4228: .word UNK_021CDF04 -_020B422C: .word UNK_021CDF08 -_020B4230: .word UNK_021CDEF4 -_020B4234: .word UNK_021CE1F4 -_020B4238: .word UNK_021CDD74 - - arm_func_start FUN_020B423C -FUN_020B423C: ; 0x020B423C - stmdb sp!, {r4-r7,lr} - sub sp, sp, #0x1c - ldr r4, [r0, #0x4] - ldr r3, [r1, #0x8] - mov r12, r2 - smull r6, r5, r4, r3 - ldr r4, [r0, #0x0] - ldr r3, [r1, #0x0] - cmp r12, r1 - smlal r6, r5, r4, r3 - mov r3, r6, lsr #0xc - addeq r2, sp, #0x0 - orr r3, r3, r5, lsl #0x14 - str r3, [r2, #0x0] - ldr r4, [r0, #0x4] - ldr r3, [r1, #0xc] - ldr r5, [r0, #0x0] - smull r7, r6, r4, r3 - ldr r3, [r1, #0x4] - add lr, sp, #0x0 - smlal r7, r6, r5, r3 - mov r3, r7, lsr #0xc - orr r3, r3, r6, lsl #0x14 - str r3, [r2, #0x4] - ldr r4, [r0, #0xc] - ldr r3, [r1, #0x8] - ldr r5, [r0, #0x8] - smull r7, r6, r4, r3 - ldr r3, [r1, #0x0] - cmp r2, lr - smlal r7, r6, r5, r3 - mov r3, r7, lsr #0xc - orr r3, r3, r6, lsl #0x14 - str r3, [r2, #0x8] - ldr r4, [r0, #0xc] - ldr r3, [r1, #0xc] - ldr r5, [r0, #0x8] - smull r7, r6, r4, r3 - ldr r3, [r1, #0x4] - smlal r7, r6, r5, r3 - mov r3, r7, lsr #0xc - orr r3, r3, r6, lsl #0x14 - str r3, [r2, #0xc] - ldr r4, [r0, #0x14] - ldr r3, [r1, #0x8] - ldr r5, [r0, #0x10] - smull r7, r6, r4, r3 - ldr r3, [r1, #0x0] - ldr r4, [r1, #0x10] - smlal r7, r6, r5, r3 - mov r3, r7, lsr #0xc - orr r3, r3, r6, lsl #0x14 - add r3, r4, r3 - str r3, [r2, #0x10] - ldr r4, [r0, #0x14] - ldr r3, [r1, #0xc] - ldr r5, [r0, #0x10] - ldr r0, [r1, #0x4] - smull r6, r3, r4, r3 - smlal r6, r3, r5, r0 - mov r0, r6, lsr #0xc - ldr r1, [r1, #0x14] - orr r0, r0, r3, lsl #0x14 - add r0, r1, r0 - str r0, [r2, #0x14] - ldmeqia lr!, {r0-r3} - stmeqia r12!, {r0-r3} - ldmeqia lr, {r0-r1} - stmeqia r12, {r0-r1} - add sp, sp, #0x1c - ldmia sp!, {r4-r7,pc} - - arm_func_start FUN_020B4358 -FUN_020B4358: ; 0x020B4358 - stmdb sp!, {r4,lr} - ldr r2, _020B43A0 ; =UNK_021CED04 - mov r1, #0x30 - ldr r2, [r2, #0x0] - mla r4, r0, r1, r2 - mov r0, r4 - bl FUN_020B10CC - mov r0, #0x0 - str r0, [r4, #0xc] - str r0, [r4, #0x10] - str r0, [r4, #0x14] - str r0, [r4, #0x18] - str r0, [r4, #0x1c] - str r0, [r4, #0x20] - str r0, [r4, #0x24] - str r0, [r4, #0x28] - str r0, [r4, #0x2c] - ldmia sp!, {r4,pc} - .balign 4 -_020B43A0: .word UNK_021CED04 - - arm_func_start FUN_020B43A4 -FUN_020B43A4: ; 0x020B43A4 - ldr r1, _020B43F8 ; =UNK_021CED00 - mov r0, #0x0 - ldr r3, [r1, #0x0] - cmp r3, #0x0 - bls _020B43F0 - ldr r1, _020B43FC ; =UNK_021CED04 - ldr r2, [r1, #0x0] - mov r12, r2 -_020B43C4: - ldr r1, [r12, #0x1c] - cmp r1, #0x1 - movne r1, #0x30 - mlane r1, r0, r1, r2 - movne r2, #0x1 - strne r2, [r1, #0x1c] - bxne lr - add r0, r0, #0x1 - cmp r0, r3 - add r12, r12, #0x30 - blo _020B43C4 -_020B43F0: - mvn r0, #0x0 - bx lr - .balign 4 -_020B43F8: .word UNK_021CED00 -_020B43FC: .word UNK_021CED04 - - arm_func_start FUN_020B4400 -FUN_020B4400: ; 0x020B4400 - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - mov r5, r1 - mov r4, r2 - bl FUN_020B469C - mvn r1, #0x0 - str r1, [r0, #0x24] - str r5, [r0, #0x28] - str r4, [r0, #0x2c] - add sp, sp, #0x4 - ldmia sp!, {r4-r5,pc} - - arm_func_start FUN_020B442C -FUN_020B442C: ; 0x020B442C - stmdb sp!, {r4-r11,lr} - sub sp, sp, #0x14 - mov r0, #0x0 - str r0, [sp, #0x0] - ldr r0, _020B4558 ; =UNK_021CED00 - ldr r0, [r0, #0x0] - cmp r0, #0x0 - addls sp, sp, #0x14 - ldmlsia sp!, {r4-r11,pc} - ldr r0, [sp, #0x0] - mov r5, #0x1 - str r0, [sp, #0x4] - mov r11, r0 - str r0, [sp, #0x8] - str r0, [sp, #0xc] -_020B4468: - ldr r0, _020B455C ; =UNK_021CED04 - ldr r1, [r0, #0x0] - ldr r0, [sp, #0x4] - add r8, r1, r0 - ldr r0, [r8, #0x1c] - cmp r0, #0x0 - beq _020B4528 - ldr r9, [sp, #0x8] - mov r0, r9 - cmp r0, #0x3 - bge _020B4520 - add r4, r8, #0x24 -_020B4498: - mov r6, r5, lsl r9 - mov r1, r11 - ldr r0, [r8, #0x24] - ands r0, r0, r6 - beq _020B44B8 - ldr r0, [r8, #0x20] - ands r0, r0, r6 - movne r1, r5 -_020B44B8: - cmp r1, #0x0 - beq _020B4514 - ldr r0, _020B4560 ; =UNK_020FF8C4 - cmp r9, #0x0 - ldr r7, [r0, r9, lsl #0x2] - ldreq r10, [r8, #0x14] - mov r0, r8 - mov r1, r9 - ldrne r10, [r8, #0x10] - bl FUN_020B10BC - mov r1, r0 - mov r0, r7 - ldr r7, _020B4564 ; =UNK_021CECFC - ldr r2, [r8, #0x28] - ldr r3, [r8, #0x2c] - ldr r7, [r7, #0x0] - add r2, r10, r2 - blx r7 - cmp r0, #0x0 - ldrne r1, [r4, #0x0] - mvnne r0, r6 - andne r0, r1, r0 - strne r0, [r4, #0x0] -_020B4514: - add r9, r9, #0x1 - cmp r9, #0x3 - blt _020B4498 -_020B4520: - ldr r0, [sp, #0xc] - str r0, [r8, #0x20] -_020B4528: - ldr r0, _020B4558 ; =UNK_021CED00 - ldr r1, [r0, #0x0] - ldr r0, [sp, #0x0] - add r0, r0, #0x1 - str r0, [sp, #0x0] - cmp r0, r1 - ldr r0, [sp, #0x4] - add r0, r0, #0x30 - str r0, [sp, #0x4] - blo _020B4468 - add sp, sp, #0x14 - ldmia sp!, {r4-r11,pc} - .balign 4 -_020B4558: .word UNK_021CED00 -_020B455C: .word UNK_021CED04 -_020B4560: .word UNK_020FF8C4 -_020B4564: .word UNK_021CECFC - - arm_func_start FUN_020B4568 -FUN_020B4568: ; 0x020B4568 - stmdb sp!, {r4-r7,lr} - sub sp, sp, #0x4 - ldr ip, _020B45E4 ; =UNK_021CECFC - movs r6, r1 - ldr r1, _020B45E8 ; =UNK_021CED00 - ldr r3, _020B45EC ; =UNK_021CED04 - mov r7, r0 - str r2, [r12, #0x0] - mov r5, #0x0 - addeq sp, sp, #0x4 - str r7, [r3, #0x0] - str r6, [r1, #0x0] - ldmeqia sp!, {r4-r7,pc} - mov r4, r5 -_020B45A0: - mov r0, r7 - bl FUN_020B10CC - str r4, [r7, #0xc] - str r4, [r7, #0x10] - str r4, [r7, #0x14] - str r4, [r7, #0x18] - str r4, [r7, #0x1c] - str r4, [r7, #0x20] - str r4, [r7, #0x24] - str r4, [r7, #0x28] - add r5, r5, #0x1 - str r4, [r7, #0x2c] - cmp r5, r6 - add r7, r7, #0x30 - blo _020B45A0 - add sp, sp, #0x4 - ldmia sp!, {r4-r7,pc} - .balign 4 -_020B45E4: .word UNK_021CECFC -_020B45E8: .word UNK_021CED00 -_020B45EC: .word UNK_021CED04 - - arm_func_start FUN_020B45F0 -FUN_020B45F0: ; 0x020B45F0 - stmdb sp!, {r4-r7,lr} - sub sp, sp, #0x4 - ldr ip, _020B4698 ; =UNK_021CED04 - mov r4, #0x30 - ldr r12, [r12, #0x0] - mov r7, r1 - mla r4, r0, r4, r12 - mov r0, r4 - mov r6, r2 - mov r5, r3 - bl FUN_020B10CC - mvn r0, #0x0 - cmp r7, r0 - beq _020B4638 - mov r0, r4 - mov r2, r7 - mov r1, #0x0 - bl FUN_020B10C4 -_020B4638: - mvn r0, #0x0 - cmp r6, r0 - beq _020B4654 - mov r0, r4 - mov r2, r6 - mov r1, #0x1 - bl FUN_020B10C4 -_020B4654: - mvn r0, #0x0 - cmp r5, r0 - beq _020B4670 - mov r0, r4 - mov r2, r5 - mov r1, #0x2 - bl FUN_020B10C4 -_020B4670: - ldr r1, [sp, #0x18] - ldr r0, [sp, #0x1c] - str r1, [r4, #0xc] - ldr r1, [sp, #0x20] - str r0, [r4, #0x10] - ldr r0, [sp, #0x24] - str r1, [r4, #0x14] - str r0, [r4, #0x18] - add sp, sp, #0x4 - ldmia sp!, {r4-r7,pc} - .balign 4 -_020B4698: .word UNK_021CED04 - - arm_func_start FUN_020B469C -FUN_020B469C: ; 0x020B469C - ldr r2, _020B46B0 ; =UNK_021CED04 - mov r1, #0x30 - ldr r2, [r2, #0x0] - mla r0, r1, r0, r2 - bx lr - .balign 4 -_020B46B0: .word UNK_021CED04 - - arm_func_start FUN_020B46B4 -FUN_020B46B4: ; 0x020B46B4 - stmdb sp!, {r4-r7,lr} - sub sp, sp, #0x1c - add r12, sp, #0x4 - mov r5, r1 - mov r4, r2 - mov r7, r3 - mov r6, r0 - ldr r1, [sp, #0x30] - ldr r2, [sp, #0x34] - ldr r3, [sp, #0x38] - mov r0, r7 - str r12, [sp, #0x0] - bl FUN_020B498C - ldr r2, [r7, #0x0] - and r1, r2, #0x300 - cmp r1, #0x100 - beq _020B4708 - cmp r1, #0x300 - beq _020B4708 - and r0, r2, #0x30000000 - orr r1, r1, r0 -_020B4708: - cmp r1, #0x300 - bne _020B478C - ldr r0, _020B4914 ; =0xC000C000 - ldr r1, _020B4918 ; =UNK_021CED08 - and r0, r2, r0 - and r2, r0, #0xc0000000 - mov r12, r2, lsr #0x1e - and r0, r0, #0xc000 - mov lr, r0, asr #0xe - ldr r3, _020B491C ; =UNK_020FF8AC - ldr r0, [r1, #0x0] - ldr r2, _020B4920 ; =UNK_020FF894 - cmp r0, #0x0 - ldrne r0, _020B4924 ; =UNK_021CED10 - mov r12, r12, lsl #0x1 - add r1, r2, lr, lsl #0x3 - add r3, r3, lr, lsl #0x3 - ldrh r2, [r12, r3] - ldrh r1, [r12, r1] - ldrne r0, [r0, #0x0] - mov r2, r2, asr #0x1 - addne r3, r0, r4, lsl #0xc - mov r1, r1, asr #0x1 - add r0, r5, r1 - add r2, r6, r2 - ldr r1, _020B4928 ; =0x04000470 - mov r2, r2, lsl #0xc - str r2, [r1, #0x0] - mov r0, r0, lsl #0xc - moveq r3, r4, lsl #0xc - str r0, [r1, #0x0] - str r3, [r1, #0x0] - b _020B47C0 -_020B478C: - ldr r0, _020B4918 ; =UNK_021CED08 - ldr r1, _020B4928 ; =0x04000470 - ldr r0, [r0, #0x0] - cmp r0, #0x0 - ldrne r0, _020B4924 ; =UNK_021CED10 - ldrne r0, [r0, #0x0] - addne r2, r0, r4, lsl #0xc - mov r0, r6, lsl #0xc - str r0, [r1, #0x0] - mov r0, r5, lsl #0xc - moveq r2, r4, lsl #0xc - str r0, [r1, #0x0] - str r2, [r1, #0x0] -_020B47C0: - ldr r0, [sp, #0x14] - ldr r1, [sp, #0x18] - ldr r2, _020B492C ; =0x0400046C - mov r0, r0, lsl #0xc - str r0, [r2, #0x0] - mov r0, r1, lsl #0xc - str r0, [r2, #0x0] - mov r1, #0x1000 - str r1, [r2, #0x0] - ldr r0, _020B4930 ; =0x04000500 - mov r1, #0x1 - str r1, [r0, #0x0] - ldr r0, [sp, #0x4] - ldr r1, [sp, #0x10] - mov r0, r0, lsl #0x8 - mov r1, r1, lsl #0x8 - mov r0, r0, asr #0x10 - mov r1, r1, asr #0x10 - mov r0, r0, lsl #0x10 - mov r1, r1, lsl #0x10 - mov r2, r0, lsr #0x10 - mov r0, r1, lsr #0x10 - orr r2, r2, r0, lsl #0x10 - ldr r1, _020B4934 ; =0x04000488 - ldr r0, _020B4938 ; =0x04000490 - str r2, [r1, #0x0] - mov r2, #0x10000 - str r2, [r0, #0x0] - ldr r2, [sp, #0xc] - ldr r3, [sp, #0x10] - mov r2, r2, lsl #0x8 - mov r3, r3, lsl #0x8 - mov r2, r2, asr #0x10 - mov r3, r3, asr #0x10 - mov r2, r2, lsl #0x10 - mov r3, r3, lsl #0x10 - mov r4, r2, lsr #0x10 - mov r2, r3, lsr #0x10 - orr r3, r4, r2, lsl #0x10 - ldr r2, _020B493C ; =0x00010040 - str r3, [r1, #0x0] - str r2, [r0, #0x0] - ldr r2, [sp, #0xc] - ldr r3, [sp, #0x8] - mov r2, r2, lsl #0x8 - mov r3, r3, lsl #0x8 - mov r2, r2, asr #0x10 - mov r3, r3, asr #0x10 - mov r2, r2, lsl #0x10 - mov r3, r3, lsl #0x10 - mov r4, r2, lsr #0x10 - mov r2, r3, lsr #0x10 - orr r2, r4, r2, lsl #0x10 - str r2, [r1, #0x0] - mov r2, #0x40 - str r2, [r0, #0x0] - ldr r2, [sp, #0x4] - ldr r3, [sp, #0x8] - mov r2, r2, lsl #0x8 - mov r3, r3, lsl #0x8 - mov r2, r2, asr #0x10 - mov r3, r3, asr #0x10 - mov r2, r2, lsl #0x10 - mov r3, r3, lsl #0x10 - mov r4, r2, lsr #0x10 - mov r2, r3, lsr #0x10 - orr r2, r4, r2, lsl #0x10 - str r2, [r1, #0x0] - mov r2, #0x0 - str r2, [r0, #0x0] - ldr r1, _020B4940 ; =0x04000504 - ldr r0, _020B4918 ; =UNK_021CED08 - str r2, [r1, #0x0] - ldr r0, [r0, #0x0] - cmp r0, #0x0 - addeq sp, sp, #0x1c - ldmeqia sp!, {r4-r7,pc} - ldr r1, _020B4924 ; =UNK_021CED10 - ldr r0, _020B4944 ; =UNK_02106590 - ldr r2, [r1, #0x0] - ldr r0, [r0, #0x0] - add r0, r2, r0 - str r0, [r1, #0x0] - add sp, sp, #0x1c - ldmia sp!, {r4-r7,pc} - .balign 4 -_020B4914: .word 0xC000C000 -_020B4918: .word UNK_021CED08 -_020B491C: .word UNK_020FF8AC -_020B4920: .word UNK_020FF894 -_020B4924: .word UNK_021CED10 -_020B4928: .word 0x04000470 -_020B492C: .word 0x0400046C -_020B4930: .word 0x04000500 -_020B4934: .word 0x04000488 -_020B4938: .word 0x04000490 -_020B493C: .word 0x00010040 -_020B4940: .word 0x04000504 -_020B4944: .word UNK_02106590 - - arm_func_start FUN_020B4948 -FUN_020B4948: - ldr r0, _020B4954 ; =UNK_02106590 - ldr r0, [r0, #0x0] - bx lr - .balign 4 -_020B4954: .word UNK_02106590 - - arm_func_start FUN_020B4958 -FUN_020B4958: - ldr r1, _020B4964 ; =UNK_02106590 - str r0, [r1, #0x0] - bx lr - .balign 4 -_020B4964: .word UNK_02106590 - - arm_func_start FUN_020B4968 -FUN_020B4968: ; 0x020B4968 - ldr r0, _020B4978 ; =UNK_021CED10 - mov r1, #0x0 - str r1, [r0, #0x0] - bx lr - .balign 4 -_020B4978: .word UNK_021CED10 - - arm_func_start FUN_020B497C -FUN_020B497C: - ldr r1, _020B4988 ; =UNK_021CED08 - str r0, [r1, #0x0] - bx lr - .balign 4 -_020B4988: .word UNK_021CED08 - - arm_func_start FUN_020B498C -FUN_020B498C: ; 0x020B498C - stmdb sp!, {r4-r9,lr} - sub sp, sp, #0xc - mov r6, r0 - ldr r4, [r6, #0x0] - ldr r0, _020B4BCC ; =0xC000C000 - ldr r5, [r6, #0x4] - and r4, r4, r0 - and r0, r4, #0xc0000000 - and r4, r4, #0xc000 - mov lr, r0, lsr #0x1e - ldr r0, _020B4BD0 ; =UNK_020FF8AC - mov r12, r4, asr #0xe - ldr r8, _020B4BD4 ; =UNK_020FF894 - mov r4, lr, lsl #0x1 - add r0, r0, r12, lsl #0x3 - ldrh r9, [r4, r0] - ldr r0, [sp, #0x28] - mov r5, r5, lsl #0x16 - mov r5, r5, lsr #0x16 - mov r7, r5, lsl #0x10 - str r9, [r0, #0x10] - add r5, r8, r12, lsl #0x3 - ldrh r8, [r4, r5] - mov r5, r1 - mov r4, r3 - str r8, [r0, #0x14] - ldr r1, [r5, #0x14] - mov r7, r7, lsr #0x10 - cmp r1, #0x0 - bne _020B4A74 - ldr r1, [r5, #0x8] - mov r2, r2, lsr #0x3 - orr r1, r2, r1, lsl #0x1a - ldr r2, [r5, #0x0] - orr r1, r1, #0x40000000 - ldr r3, [r5, #0x4] - orr r1, r1, r2, lsl #0x14 - orr r2, r1, r3, lsl #0x17 - ldr r8, [r5, #0x10] - ldr r1, _020B4BD8 ; =0x040004A8 - orr r2, r2, r8, lsl #0x1d - str r2, [r1, #0x0] - ldr r1, [r5, #0x8] - ldr r2, [r5, #0x0] - cmp r1, #0x4 - moveq r1, r7, lsl #0xf - moveq r7, r1, lsr #0x10 - ldr r1, _020B4BDC ; =UNK_020FF8D8 - ldr r1, [r1, r2, lsl #0x2] - sub r1, r1, #0x1 - and r1, r7, r1 - mov r1, r1, lsl #0xf - str r1, [r0, #0x0] - ldr r1, [r5, #0x0] - mov r1, r7, asr r1 - mov r1, r1, lsl #0xf - str r1, [r0, #0x4] - b _020B4AE0 -_020B4A74: - and r1, r1, #0x700000 - mov r1, r1, asr #0x14 - mov r12, r12, lsl #0x10 - add r1, r1, #0x5 - ldr r3, [r5, #0x8] - mov lr, lr, lsl #0x10 - ldr sb, _020B4BE0 ; =UNK_020FF8F8 - mov r12, r12, lsr #0x10 - ldr r8, _020B4BE4 ; =UNK_020FF928 - add r1, r2, r7, lsl r1 - mov r2, r3, lsl #0x1a - orr r3, r2, r1, lsr #0x3 - mov r7, lr, lsr #0x10 - add r2, r9, r12, lsl #0x4 - add r1, r8, r12, lsl #0x4 - ldr r2, [r2, r7, lsl #0x2] - orr r3, r3, #0x40000000 - ldr r1, [r1, r7, lsl #0x2] - orr r2, r3, r2, lsl #0x14 - ldr r3, [r5, #0x10] - orr r2, r2, r1, lsl #0x17 - ldr r1, _020B4BD8 ; =0x040004A8 - orr r2, r2, r3, lsl #0x1d - str r2, [r1, #0x0] - mov r1, #0x0 - str r1, [r0, #0x0] - str r1, [r0, #0x4] -_020B4AE0: - ldr r2, [r0, #0x0] - ldr r1, [r0, #0x10] - add r1, r2, r1, lsl #0xc - str r1, [r0, #0x8] - ldr r2, [r0, #0x4] - ldr r1, [r0, #0x14] - add r1, r2, r1, lsl #0xc - str r1, [r0, #0xc] - ldr r1, [r6, #0x0] - mov r2, r1, lsl #0x2 - mov r1, r1, lsl #0x3 - movs r3, r1, lsr #0x1f - mov r12, r2, lsr #0x1f - ldrne r2, [r0, #0x0] - ldrne r1, [r0, #0x8] - strne r1, [r0, #0x0] - strne r2, [r0, #0x8] - cmp r12, #0x0 - ldrne r2, [r0, #0x4] - ldrne r1, [r0, #0xc] - strne r1, [r0, #0x4] - ldr r1, _020B4BE8 ; =UNK_021CED0C - strne r2, [r0, #0xc] - ldr r7, [r1, #0x0] - cmp r7, #0x0 - beq _020B4B60 - str r3, [sp, #0x0] - add r1, r0, #0x4 - add r2, r0, #0x8 - add r3, r0, #0xc - str r12, [sp, #0x4] - blx r7 -_020B4B60: - ldr r0, [r6, #0x4] - ldr r1, [r6, #0x0] - mov r0, r0, lsl #0x10 - mov r0, r0, lsr #0x1c - mov r3, r1, lsl #0x12 - ldr r1, [r5, #0xc] - mov r0, r0, lsl #0x10 - ldr r2, _020B4BEC ; =UNK_020FF8D0 - mov r3, r3, lsr #0x1f - cmp r1, #0x0 - mov r0, r0, lsr #0x10 - ldr r1, [r2, r3, lsl #0x2] - movne r0, r0, lsl #0x9 - bne _020B4BA4 - cmp r1, #0x4 - moveq r0, #0x0 - movne r0, r0, lsl #0x5 -_020B4BA4: - cmp r1, #0x2 - moveq r2, #0x1 - movne r2, #0x0 - add r1, r4, r0 - rsb r0, r2, #0x4 - mov r1, r1, lsr r0 - ldr r0, _020B4BF0 ; =0x040004AC - str r1, [r0, #0x0] - add sp, sp, #0xc - ldmia sp!, {r4-r9,pc} - .balign 4 -_020B4BCC: .word 0xC000C000 -_020B4BD0: .word UNK_020FF8AC -_020B4BD4: .word UNK_020FF894 -_020B4BD8: .word 0x040004A8 -_020B4BDC: .word UNK_020FF8D8 -_020B4BE0: .word UNK_020FF8F8 -_020B4BE4: .word UNK_020FF928 -_020B4BE8: .word UNK_021CED0C -_020B4BEC: .word UNK_020FF8D0 -_020B4BF0: .word 0x040004AC - - arm_func_start FUN_020B4BF4 -FUN_020B4BF4: ; 0x020B4BF4 - stmdb sp!, {r4-r6,lr} - ldr r2, _020B4CD8 ; =UNK_021CED14 - mov r6, r0 - ldr r3, [r2, #0x0] - mov r4, r1 - ldr r5, [r3, #0x0] - ldr r0, [r5, #0x10] - cmp r0, #0x0 - ldmeqia sp!, {r4-r6,pc} - mov r0, #0x1 - str r0, [r3, #0x30] - ldr r3, [r5, #0x18] - cmp r3, #0x0 - beq _020B4C38 - ldr r0, [r2, #0x0] - mov r1, r6 - blx r3 -_020B4C38: - ldr r0, _020B4CD8 ; =UNK_021CED14 - ldr r0, [r0, #0x0] - ldr r0, [r0, #0x30] - cmp r0, #0x0 - beq _020B4CB8 - mvn r0, #0x0 - cmp r4, r0 - beq _020B4C7C - mov r0, r4 - ldr r4, [r5, #0x14] - bl FUN_020B469C - mov r3, #0x1 - mvn r1, r3, lsl r4 - ldr r2, [r0, #0x20] - and r1, r2, r1 - orr r1, r1, r3, lsl r4 - str r1, [r0, #0x20] -_020B4C7C: - ldr r0, [r5, #0x14] - cmp r0, #0x3 - addls pc, pc, r0, lsl #0x2 - b _020B4CB8 - ; Jump table - b _020B4C9C ; case 0 - b _020B4CAC ; case 1 - b _020B4CAC ; case 2 - b _020B4CB8 ; case 3 -_020B4C9C: - mov r0, r5 - mov r1, r6 - bl FUN_020B5090 - b _020B4CB8 -_020B4CAC: - mov r0, r5 - mov r1, r6 - bl FUN_020B53B4 -_020B4CB8: - ldr r2, [r5, #0x1c] - cmp r2, #0x0 - ldmeqia sp!, {r4-r6,pc} - ldr r0, _020B4CD8 ; =UNK_021CED14 - mov r1, r6 - ldr r0, [r0, #0x0] - blx r2 - ldmia sp!, {r4-r6,pc} - .balign 4 -_020B4CD8: .word UNK_021CED14 - - arm_func_start FUN_020B4CDC -FUN_020B4CDC: - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - ldr r1, _020B4D9C ; =UNK_021CED14 - mov r5, r0 - ldr r2, [r1, #0x0] - ldr r4, [r2, #0x0] - ldr r0, [r4, #0x10] - cmp r0, #0x0 - addeq sp, sp, #0x4 - ldmeqia sp!, {r4-r5,pc} - mov r0, #0x1 - str r0, [r2, #0x30] - ldr r2, [r4, #0x18] - cmp r2, #0x0 - beq _020B4D24 - ldr r0, [r1, #0x0] - mov r1, r5 - blx r2 -_020B4D24: - ldr r0, _020B4D9C ; =UNK_021CED14 - ldr r0, [r0, #0x0] - ldr r0, [r0, #0x30] - cmp r0, #0x0 - beq _020B4D74 - ldr r0, [r4, #0x14] - cmp r0, #0x3 - addls pc, pc, r0, lsl #0x2 - b _020B4D74 - ; Jump table - b _020B4D58 ; case 0 - b _020B4D68 ; case 1 - b _020B4D68 ; case 2 - b _020B4D74 ; case 3 -_020B4D58: - mov r0, r4 - mov r1, r5 - bl FUN_020B5090 - b _020B4D74 -_020B4D68: - mov r0, r4 - mov r1, r5 - bl FUN_020B53B4 -_020B4D74: - ldr r2, [r4, #0x1c] - cmp r2, #0x0 - addeq sp, sp, #0x4 - ldmeqia sp!, {r4-r5,pc} - ldr r0, _020B4D9C ; =UNK_021CED14 - mov r1, r5 - ldr r0, [r0, #0x0] - blx r2 - add sp, sp, #0x4 - ldmia sp!, {r4-r5,pc} - .balign 4 -_020B4D9C: .word UNK_021CED14 - - arm_func_start FUN_020B4DA0 -FUN_020B4DA0: ; 0x020B4DA0 - ldr r0, _020B4E00 ; =UNK_021CED14 - ldr r3, [r0, #0x0] - ldr r1, [r3, #0x0] - ldr r1, [r1, #0x14] - cmp r1, #0x0 - bne _020B4DD8 - ldr r2, _020B4E04 ; =0x04000440 - mov r1, #0x0 - ldr r0, _020B4E08 ; =0x04000448 - str r1, [r2, #0x0] - mov r1, #0x1 - str r1, [r0, #0x0] - str r1, [r2, #0x0] - b _020B4DF0 -_020B4DD8: - mov r2, #0x0 - str r2, [r3, #0x10] - ldr r1, [r0, #0x0] - str r2, [r1, #0x2c] - ldr r0, [r0, #0x0] - str r2, [r0, #0x28] -_020B4DF0: - ldr r0, _020B4E00 ; =UNK_021CED14 - mov r1, #0x0 - str r1, [r0, #0x0] - bx lr - .balign 4 -_020B4E00: .word UNK_021CED14 -_020B4E04: .word 0x04000440 -_020B4E08: .word 0x04000448 - - arm_func_start FUN_020B4E0C -FUN_020B4E0C: ; 0x020B4E0C - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - ldr r2, _020B4F28 ; =UNK_021CED14 - mov r4, r0 - str r4, [r2, #0x0] - ldr r0, [r4, #0x0] - ldr r5, [r0, #0x14] - cmp r5, #0x0 - bne _020B4ED8 - ldr lr, _020B4F2C ; =0x04000440 - mov r1, #0x0 - ldr r0, _020B4F30 ; =0x04000444 - str r1, [lr, #0x0] - str r1, [r0, #0x0] - ldr r12, [r4, #0x0] - ldr r0, _020B4F34 ; =0x04000470 - ldr r3, [r12, #0x0] - ldr r12, [r12, #0x4] - rsb r3, r3, #0x0 - str r3, [r0, #0x0] - rsb r3, r12, #0x0 - str r3, [r0, #0x0] - str r1, [r0, #0x0] - mov r0, #0x1 - str r0, [lr, #0x0] - ldr r0, [r2, #0x0] - ldr r5, [r0, #0x8] - mov r0, r5 - bl FUN_020B19FC - cmp r0, #0x0 - moveq r0, #0x0 - beq _020B4E98 - mov r0, r5 - mov r1, #0x0 - bl FUN_020B1A14 -_020B4E98: - ldr r1, _020B4F28 ; =UNK_021CED14 - str r0, [r4, #0x14] - ldr r0, [r1, #0x0] - mov r1, #0x0 - ldr r5, [r0, #0xc] - mov r0, r5 - bl FUN_020B19A8 - cmp r0, #0x0 - moveq r0, #0x0 - beq _020B4ECC - mov r0, r5 - mov r1, #0x0 - bl FUN_020B19C4 -_020B4ECC: - add sp, sp, #0x4 - str r0, [r4, #0x18] - ldmia sp!, {r4-r5,pc} -_020B4ED8: - ldr r4, [r4, #0x8] - mov r1, r5 - mov r0, r4 - bl FUN_020B19FC - cmp r0, #0x0 - moveq r1, #0x0 - beq _020B4F14 - mov r0, r4 - mov r1, r5 - bl FUN_020B1A14 - ldr r1, [r4, #0x20] - and r1, r1, #0x700000 - mov r1, r1, asr #0x14 - add r1, r1, #0x5 - mov r1, r0, lsr r1 -_020B4F14: - ldr r0, _020B4F28 ; =UNK_021CED14 - ldr r0, [r0, #0x0] - str r1, [r0, #0x10] - add sp, sp, #0x4 - ldmia sp!, {r4-r5,pc} - .balign 4 -_020B4F28: .word UNK_021CED14 -_020B4F2C: .word 0x04000440 -_020B4F30: .word 0x04000444 -_020B4F34: .word 0x04000470 - - arm_func_start FUN_020B4F38 -FUN_020B4F38: ; 0x020B4F38 - cmp r1, #0x0 - ldrne r1, [r0, #0x24] - orrne r1, r1, #0x1 - strne r1, [r0, #0x24] - ldreq r1, [r0, #0x24] - biceq r1, r1, #0x1 - streq r1, [r0, #0x24] - cmp r2, #0x0 - ldrne r1, [r0, #0x24] - orrne r1, r1, #0x2 - strne r1, [r0, #0x24] - ldreq r1, [r0, #0x24] - biceq r1, r1, #0x2 - streq r1, [r0, #0x24] - bx lr - - arm_func_start FUN_020B4F74 -FUN_020B4F74: - ldr r0, [r0, #0x24] - ands r0, r0, #0x2 - movne r0, #0x1 - moveq r0, #0x0 - bx lr - - arm_func_start FUN_020B4F88 -FUN_020B4F88: - ldr r0, [r0, #0x24] - ands r0, r0, #0x1 - movne r0, #0x1 - moveq r0, #0x0 - bx lr - - arm_func_start FUN_020B4F9C -FUN_020B4F9C: ; 0x020B4F9C - str r1, [r0, #0x0] - bx lr - - arm_func_start FUN_020B4FA4 -FUN_020B4FA4: ; 0x020B4FA4 - str r1, [r0, #0x34] - bx lr - - arm_func_start FUN_020B4FAC -FUN_020B4FAC: ; 0x020B4FAC - ldr r2, _020B4FC0 ; =UNK_021CED14 - ldr r2, [r2, #0x0] - str r0, [r2, #0x2c] - str r1, [r2, #0x28] - bx lr - .balign 4 -_020B4FC0: .word UNK_021CED14 - - arm_func_start FUN_020B4FC4 -FUN_020B4FC4: ; 0x020B4FC4 - ldr r1, _020B5028 ; =UNK_021CED14 - mov r3, #0x0 - ldr r12, [r1, #0x0] - mov r1, #0x1000 - str r0, [r12, #0x2c] - ldr r2, [r0, #0x0] - str r2, [r12, #0x40] - ldr r2, [r0, #0x4] - str r2, [r12, #0x44] - str r3, [r12, #0x48] - ldr r2, [r0, #0x8] - str r2, [r12, #0x4c] - ldr r2, [r0, #0xc] - str r2, [r12, #0x50] - str r3, [r12, #0x54] - str r3, [r12, #0x58] - str r3, [r12, #0x5c] - str r1, [r12, #0x60] - ldr r1, [r0, #0x10] - str r1, [r12, #0x64] - ldr r0, [r0, #0x14] - str r0, [r12, #0x68] - ldr r0, [r12, #0x34] - str r0, [r12, #0x6c] - bx lr - .balign 4 -_020B5028: .word UNK_021CED14 - - arm_func_start FUN_020B502C -FUN_020B502C: ; 0x020B502C - str r1, [r0, #0x4] - bx lr - - arm_func_start FUN_020B5034 -FUN_020B5034: ; 0x020B5034 - str r1, [r0, #0x1c] - str r2, [r0, #0x20] - bx lr - - arm_func_start FUN_020B5040 -FUN_020B5040: ; 0x020B5040 - str r1, [r0, #0x8] - str r2, [r0, #0xc] - bx lr - - arm_func_start FUN_020B504C -FUN_020B504C: ; 0x020B504C - stmdb sp!, {r4,lr} - mov r4, r0 - mov r1, r4 - mov r0, #0x0 - mov r2, #0x70 - bl MIi_CpuClear16 - mov r1, #0x0 - str r1, [r4, #0x0] - mov r0, #0x2 - str r0, [r4, #0x4] - str r1, [r4, #0x8] - str r1, [r4, #0xc] - str r1, [r4, #0x24] - mov r0, #0x1 - str r0, [r4, #0x30] - str r1, [r4, #0x28] - ldmia sp!, {r4,pc} - - arm_func_start FUN_020B5090 -FUN_020B5090: ; 0x020B5090 - stmdb sp!, {r4-r10,lr} - ldr r5, _020B5158 ; =UNK_021CED14 - mov r9, r1 - ldrh r1, [r9, #0x0] - ldr r2, [r5, #0x0] - mov r10, r0 - add r7, r2, #0x38 - mov r8, #0x0 - cmp r1, #0x0 - ldmlsia sp!, {r4-r10,pc} - mov r6, #0x1 - mov r4, #0x6 -_020B50C0: - mul r1, r8, r4 - ldr r0, [r5, #0x0] - str r6, [r0, #0x30] - ldr r2, [r9, #0x4] - ldrh r0, [r2, r1] - add r1, r2, r1 - strh r0, [r7, #0x0] - ldrh r0, [r1, #0x2] - strh r0, [r7, #0x2] - ldrh r0, [r1, #0x4] - strh r0, [r7, #0x4] - ldr r3, [r10, #0x20] - cmp r3, #0x0 - beq _020B5108 - ldr r0, [r5, #0x0] - mov r1, r9 - mov r2, r8 - blx r3 -_020B5108: - ldr r0, [r5, #0x0] - ldr r0, [r0, #0x30] - cmp r0, #0x0 - beq _020B5120 - mov r0, r7 - bl FUN_020B515C -_020B5120: - ldr r3, [r10, #0x24] - cmp r3, #0x0 - beq _020B513C - ldr r0, [r5, #0x0] - mov r1, r9 - mov r2, r8 - blx r3 -_020B513C: - add r0, r8, #0x1 - mov r0, r0, lsl #0x10 - ldrh r1, [r9, #0x0] - mov r8, r0, lsr #0x10 - cmp r8, r1 - blo _020B50C0 - ldmia sp!, {r4-r10,pc} - .balign 4 -_020B5158: .word UNK_021CED14 - - arm_func_start FUN_020B515C -FUN_020B515C: ; 0x020B515C - stmdb sp!, {r4-r8,lr} - sub sp, sp, #0x10 - ldr r1, _020B53A4 ; =UNK_021CED14 - mov r7, r0 - ldr r0, [r1, #0x0] - add r0, r0, #0x40 - bl G3_LoadMtx43 - ldr r0, _020B53A4 ; =UNK_021CED14 - ldr r0, [r0, #0x0] - ldr r1, [r0, #0x24] - cmp r1, #0x0 - beq _020B533C - ldr r2, [r7, #0x0] - ldr r1, _020B53A8 ; =0xC000C000 - and r4, r2, r1 - bl FUN_020B4F88 - cmp r0, #0x0 - beq _020B51F4 - ldr r0, [r7, #0x0] - and r2, r4, #0xc000 - mov r0, r0, lsl #0x7 - mov r3, r0, lsr #0x17 - and r1, r4, #0xc0000000 - mov r1, r1, lsr #0x1e - ldr r0, _020B53AC ; =UNK_020FF8AC - mov r2, r2, asr #0xe - mov r1, r1, lsl #0x1 - add r0, r0, r2, lsl #0x3 - cmp r3, #0xff - ldrh r1, [r1, r0] - orrgt r0, r3, #0xff00 - movgt r0, r0, lsl #0x10 - movgt r3, r0, asr #0x10 - add r0, r3, r1 - rsb r0, r0, #0x0 - mov r0, r0, lsl #0x10 - mov r1, r0, lsr #0x10 - b _020B5218 -_020B51F4: - ldr r0, [r7, #0x0] - mov r0, r0, lsl #0x7 - mov r0, r0, lsr #0x17 - cmp r0, #0xff - orrgt r0, r0, #0xff00 - movgt r0, r0, lsl #0x10 - movgt r0, r0, asr #0x10 - mov r0, r0, lsl #0x10 - mov r1, r0, lsr #0x10 -_020B5218: - ldr r0, _020B53A4 ; =UNK_021CED14 - mov r1, r1, lsl #0x10 - ldr r0, [r0, #0x0] - mov r6, r1, asr #0x10 - bl FUN_020B4F74 - cmp r0, #0x0 - beq _020B527C - and r1, r4, #0xc000 - and r0, r4, #0xc0000000 - ldrb r4, [r7, #0x0] - ldr r2, _020B53B0 ; =UNK_020FF894 - mov r0, r0, lsr #0x1e - mov r3, r1, asr #0xe - mov r1, r0, lsl #0x1 - add r0, r2, r3, lsl #0x3 - cmp r4, #0x7f - ldrh r1, [r1, r0] - orrgt r0, r4, #0xff00 - movgt r0, r0, lsl #0x10 - movgt r4, r0, asr #0x10 - add r0, r4, r1 - rsb r0, r0, #0x0 - mov r0, r0, lsl #0x10 - mov r4, r0, lsr #0x10 - b _020B5298 -_020B527C: - ldrb r0, [r7, #0x0] - cmp r0, #0x7f - orrgt r0, r0, #0xff00 - movgt r0, r0, lsl #0x10 - movgt r0, r0, asr #0x10 - mov r0, r0, lsl #0x10 - mov r4, r0, lsr #0x10 -_020B5298: - ldr r0, _020B53A4 ; =UNK_021CED14 - ldr r1, [r7, #0x0] - ldr r0, [r0, #0x0] - mov r5, r1, lsl #0x3 - bl FUN_020B4F88 - ldr r2, [r7, #0x0] - ldr r1, _020B53A4 ; =UNK_021CED14 - eor r5, r0, r5, lsr #0x1f - ldr r0, [r1, #0x0] - mov r8, r2, lsl #0x2 - bl FUN_020B4F74 - ldr r2, [r7, #0x0] - eor r1, r0, r8, lsr #0x1f - bic r0, r2, #0x10000000 - str r0, [r7, #0x0] - ldr r2, [r7, #0x0] - ldr r3, _020B53A4 ; =UNK_021CED14 - orr r2, r2, r5, lsl #0x1c - str r2, [r7, #0x0] - ldr r2, [r7, #0x0] - mov r0, r6 - bic r2, r2, #0x20000000 - str r2, [r7, #0x0] - ldr r5, [r7, #0x0] - mov r2, r4, lsl #0x10 - orr r1, r5, r1, lsl #0x1d - str r1, [r7, #0x0] - ldr r5, [r3, #0x0] - mov r1, r2, asr #0x10 - ldr r4, [r5, #0x8] - mov r3, r7 - add r2, r4, #0xc - str r2, [sp, #0x0] - ldr r4, [r5, #0x14] - mvn r2, #0x0 - str r4, [sp, #0x4] - ldr r4, [r5, #0x18] - str r4, [sp, #0x8] - bl FUN_020B46B4 - add sp, sp, #0x10 - ldmia sp!, {r4-r8,pc} -_020B533C: - ldr r2, _020B53A4 ; =UNK_021CED14 - ldr r0, [r7, #0x0] - ldr r5, [r2, #0x0] - mov r0, r0, lsl #0x7 - ldr r4, [r5, #0x8] - mov r0, r0, lsr #0x17 - cmp r0, #0xff - orrgt r0, r0, #0xff00 - movgt r0, r0, lsl #0x10 - ldrb r1, [r7, #0x0] - add r4, r4, #0xc - movgt r0, r0, asr #0x10 - str r4, [sp, #0x0] - ldr r4, [r5, #0x14] - cmp r1, #0x7f - orrgt r1, r1, #0xff00 - movgt r1, r1, lsl #0x10 - str r4, [sp, #0x4] - ldr r4, [r5, #0x18] - movgt r1, r1, asr #0x10 - mov r3, r7 - mvn r2, #0x0 - str r4, [sp, #0x8] - bl FUN_020B46B4 - add sp, sp, #0x10 - ldmia sp!, {r4-r8,pc} - .balign 4 -_020B53A4: .word UNK_021CED14 -_020B53A8: .word 0xC000C000 -_020B53AC: .word UNK_020FF8AC -_020B53B0: .word UNK_020FF894 - - arm_func_start FUN_020B53B4 -FUN_020B53B4: ; 0x020B53B4 - stmdb sp!, {r4-r11,lr} - sub sp, sp, #0x44 - ldr r2, _020B57B0 ; =UNK_021CED14 - mov r10, r0 - ldr r0, [r2, #0x0] - mov r11, r1 - ldr r9, [r0, #0x2c] - ldr r1, _020B57B0 ; =UNK_021CED14 - cmp r9, #0x0 - ldreq sb, _020B57B4 ; =UNK_020FF958 - ldr r3, [r1, #0x0] - ldr r4, [r9, #0x10] - str r4, [sp, #0x18] - ldr r2, [r9, #0x14] - str r2, [sp, #0x1c] - ldr r1, [r10, #0x0] - sub r1, r4, r1 - str r1, [sp, #0x18] - ldr r1, [r10, #0x4] - sub r1, r2, r1 - str r1, [sp, #0x1c] - ldr r2, [r3, #0x24] - ldr r1, [r3, #0x10] - cmp r2, #0x0 - str r1, [sp, #0x4] - bne _020B5430 - ldr r1, [r3, #0x28] - cmp r1, #0x0 - movne r1, #0x1 - strne r1, [sp, #0x0] - bne _020B5438 -_020B5430: - mov r1, #0x0 - str r1, [sp, #0x0] -_020B5438: - ldrh r1, [r11, #0x0] - add r7, r0, #0x38 - mov r8, #0x0 - cmp r1, #0x0 - addls sp, sp, #0x44 - ldmlsia sp!, {r4-r11,pc} - mov r0, #0x1 - ldr r4, _020B57B0 ; =UNK_021CED14 - str r8, [sp, #0x14] - str r0, [sp, #0xc] -_020B5460: - ldr r2, [r4, #0x0] - ldr r0, [sp, #0xc] - mov r1, #0x6 - str r0, [r2, #0x30] - mul r0, r8, r1 - ldr r1, [r11, #0x4] - add r2, r1, r0 - ldrh r0, [r1, r0] - strh r0, [r7, #0x0] - ldrh r0, [r2, #0x2] - strh r0, [r7, #0x2] - ldrh r0, [r2, #0x4] - strh r0, [r7, #0x4] - ldr r3, [r10, #0x20] - cmp r3, #0x0 - beq _020B54B0 - ldr r0, [r4, #0x0] - mov r1, r11 - mov r2, r8 - blx r3 -_020B54B0: - ldr r0, [r4, #0x0] - ldr r0, [r0, #0x30] - cmp r0, #0x0 - beq _020B5790 - ldr r0, [sp, #0x0] - ldr r1, [r7, #0x4] - cmp r0, #0x0 - mov r0, #0x400 - rsb r0, r0, #0x0 - and r2, r1, r0 - ldr r0, [sp, #0x4] - mov r1, r1, lsl #0x16 - add r1, r0, r1, lsr #0x16 - ldr r0, _020B57B8 ; =0x000003FF - and r0, r1, r0 - orr r0, r2, r0 - str r0, [r7, #0x4] - beq _020B5600 - ldr r0, [r10, #0x14] - ldr lr, [r4, #0x0] - sub r1, r0, #0x1 - ldr r0, [r7, #0x0] - ldr r6, [lr, #0x28] - mov r2, r0, lsl #0x2 - mov r2, r2, lsr #0x1f - mov r2, r2, lsl #0x1 - mov r0, r0, lsl #0x3 - orr r5, r2, r0, lsr #0x1f - add r0, r6, r5, lsl #0x2 - add r0, r0, r1, lsl #0x1 - ldrh r1, [r0, #0x10] - ldr r0, _020B57BC ; =0x0000FFFF - str r1, [sp, #0x8] - cmp r1, r0 - bne _020B55CC - cmp r5, #0x0 - bne _020B5558 - ldr r1, [lr, #0x20] - mov r0, r6 - blx r1 - str r0, [sp, #0x8] - b _020B55B4 -_020B5558: - ands r0, r5, #0x1 - add r12, sp, #0x30 - ldmia r6, {r0-r3} - stmia r12, {r0-r3} - beq _020B5584 - ldr r1, [sp, #0x30] - ldr r0, [sp, #0x34] - rsb r1, r1, #0x0 - str r1, [sp, #0x30] - rsb r0, r0, #0x0 - str r0, [sp, #0x34] -_020B5584: - ands r0, r5, #0x2 - beq _020B55A4 - ldr r1, [sp, #0x38] - ldr r0, [sp, #0x3c] - rsb r1, r1, #0x0 - str r1, [sp, #0x38] - rsb r0, r0, #0x0 - str r0, [sp, #0x3c] -_020B55A4: - ldr r1, [lr, #0x20] - add r0, sp, #0x30 - blx r1 - str r0, [sp, #0x8] -_020B55B4: - ldr r1, [r10, #0x14] - add r0, r6, r5, lsl #0x2 - sub r1, r1, #0x1 - add r1, r0, r1, lsl #0x1 - ldr r0, [sp, #0x8] - strh r0, [r1, #0x10] -_020B55CC: - ldr r1, [r9, #0x0] - add r0, sp, #0x20 - str r1, [sp, #0x20] - ldr r2, [r9, #0x4] - mov r1, r7 - str r2, [sp, #0x24] - ldr r3, [r9, #0x8] - add r2, sp, #0x18 - str r3, [sp, #0x28] - ldr r3, [r9, #0xc] - str r3, [sp, #0x2c] - bl FUN_020B57D8 - b _020B5750 -_020B5600: - ldr r0, _020B57C0 ; =0x0000FFFE - str r0, [sp, #0x8] - ldr r0, [r4, #0x0] - ldr r1, [r0, #0x24] - cmp r1, #0x0 - beq _020B5714 - ldr r2, [r7, #0x0] - ldr r1, _020B57C4 ; =0xC000C000 - mov r6, r2, lsl #0x3 - and r5, r2, r1 - bl FUN_020B4F88 - ldr r1, [r7, #0x0] - eor r6, r0, r6, lsr #0x1f - mov r1, r1, lsl #0x2 - ldr r0, [r4, #0x0] - str r1, [sp, #0x10] - bl FUN_020B4F74 - ldr r1, [sp, #0x10] - eor r0, r0, r1, lsr #0x1f - ldr r1, [r7, #0x0] - bic r1, r1, #0x10000000 - str r1, [r7, #0x0] - ldr r1, [r7, #0x0] - orr r1, r1, r6, lsl #0x1c - str r1, [r7, #0x0] - ldr r1, [r7, #0x0] - bic r1, r1, #0x20000000 - str r1, [r7, #0x0] - ldr r1, [r7, #0x0] - orr r0, r1, r0, lsl #0x1d - str r0, [r7, #0x0] - ldr r0, [r4, #0x0] - bl FUN_020B4F88 - cmp r0, #0x0 - beq _020B56D4 - and r1, r5, #0xc000 - mov r2, r1, asr #0xe - ldr r1, _020B57C8 ; =UNK_020FF8AC - and r3, r5, #0xc0000000 - mov r3, r3, lsr #0x1e - add r2, r1, r2, lsl #0x3 - mov r3, r3, lsl #0x1 - ldr r0, [r7, #0x0] - ldr r1, _020B57CC ; =0xFE00FFFF - ldrh r2, [r3, r2] - and r1, r0, r1 - mov r0, r0, lsl #0x7 - add r0, r2, r0, lsr #0x17 - rsb r2, r0, #0x0 - ldr r0, _020B57D0 ; =0x000001FF - and r0, r2, r0 - orr r0, r1, r0, lsl #0x10 - str r0, [r7, #0x0] -_020B56D4: - ldr r0, [r4, #0x0] - bl FUN_020B4F74 - cmp r0, #0x0 - beq _020B5714 - and r1, r5, #0xc000 - mov r3, r1, asr #0xe - and r1, r5, #0xc0000000 - mov r1, r1, lsr #0x1e - mov r2, r1, lsl #0x1 - ldr r1, _020B57D4 ; =UNK_020FF894 - ldrb r0, [r7, #0x0] - add r1, r1, r3, lsl #0x3 - ldrh r1, [r2, r1] - add r0, r0, r1 - rsb r0, r0, #0x0 - strb r0, [r7, #0x0] -_020B5714: - ldr r2, [r7, #0x0] - ldr r0, _020B57CC ; =0xFE00FFFF - ldr r1, [sp, #0x18] - and r0, r2, r0 - mov r2, r2, lsl #0x7 - mov r2, r2, lsr #0x17 - add r2, r2, r1, asr #0xc - ldr r1, _020B57D0 ; =0x000001FF - and r1, r2, r1 - orr r0, r0, r1, lsl #0x10 - str r0, [r7, #0x0] - ldrb r1, [r7, #0x0] - ldr r0, [sp, #0x1c] - add r0, r1, r0, asr #0xc - strb r0, [r7, #0x0] -_020B5750: - ldr r3, [r4, #0x0] - ldr r1, [sp, #0x8] - ldr r2, [sp, #0x14] - ldr r3, [r3, #0x1c] - mov r0, r7 - blx r3 - cmp r0, #0x1 - addne sp, sp, #0x44 - ldmneia sp!, {r4-r11,pc} - ldr r3, [r10, #0x24] - cmp r3, #0x0 - beq _020B5790 - ldr r0, [r4, #0x0] - mov r1, r11 - mov r2, r8 - blx r3 -_020B5790: - add r0, r8, #0x1 - mov r0, r0, lsl #0x10 - mov r8, r0, lsr #0x10 - ldrh r0, [r11, #0x0] - cmp r8, r0 - blo _020B5460 - add sp, sp, #0x44 - ldmia sp!, {r4-r11,pc} - .balign 4 -_020B57B0: .word UNK_021CED14 -_020B57B4: .word UNK_020FF958 -_020B57B8: .word 0x000003FF -_020B57BC: .word 0x0000FFFF -_020B57C0: .word 0x0000FFFE -_020B57C4: .word 0xC000C000 -_020B57C8: .word UNK_020FF8AC -_020B57CC: .word 0xFE00FFFF -_020B57D0: .word 0x000001FF -_020B57D4: .word UNK_020FF894 - - arm_func_start FUN_020B57D8 -FUN_020B57D8: ; 0x020B57D8 - stmdb sp!, {r4-r8,lr} - sub sp, sp, #0x10 - ldr r4, [r1, #0x0] - ldr r3, _020B5A9C ; =0x01FF0000 - and r3, r4, r3 - mov r3, r3, lsr #0x10 - mov r3, r3, lsl #0x10 - mov r3, r3, asr #0x10 - cmp r3, #0xff - orrgt r3, r3, #0xff00 - movgt r3, r3, lsl #0x10 - movgt r3, r3, asr #0x10 - mov r3, r3, lsl #0xc - str r3, [sp, #0x0] - ldr r3, [r1, #0x0] - and r3, r3, #0xff - mov r3, r3, lsl #0x10 - mov r3, r3, asr #0x10 - cmp r3, #0x7f - orrgt r3, r3, #0xff00 - movgt r3, r3, lsl #0x10 - movgt r3, r3, asr #0x10 - mov r3, r3, lsl #0xc - str r3, [sp, #0x4] - ldr r5, [r1, #0x0] - and r4, r5, #0x300 - cmp r4, #0x100 - beq _020B5858 - cmp r4, #0x300 - beq _020B5858 - and r3, r5, #0x30000000 - orr r4, r4, r3 -_020B5858: - cmp r4, #0x300 - bne _020B58AC - ldr r3, _020B5AA0 ; =0xC000C000 - ldr r4, _020B5AA4 ; =UNK_020FF8AC - and r3, r5, r3 - and r5, r3, #0xc0000000 - and r3, r3, #0xc000 - mov r6, r5, lsr #0x1e - mov r5, r3, asr #0xe - ldr r3, _020B5AA8 ; =UNK_020FF894 - mov r6, r6, lsl #0x1 - add r4, r4, r5, lsl #0x3 - add r3, r3, r5, lsl #0x3 - ldrh r5, [r6, r4] - ldr r7, [sp, #0x0] - ldrh r3, [r6, r3] - ldr r4, [sp, #0x4] - add r5, r7, r5, lsl #0xb - add r3, r4, r3, lsl #0xb - str r5, [sp, #0x0] - str r3, [sp, #0x4] -_020B58AC: - ldr r5, [r0, #0x8] - ldr r4, [sp, #0x4] - add r3, sp, #0x0 - smull r8, r7, r5, r4 - cmp r3, r3 - ldr r6, [r0, #0x0] - mov r4, #0x1000 - addeq r3, sp, #0x8 - adds r8, r8, r4 - ldr r5, [sp, #0x0] - adc r7, r7, #0x0 - smlal r8, r7, r6, r5 - mov r5, r8, lsr #0xc - orr r5, r5, r7, lsl #0x14 - str r5, [r3, #0x0] - ldr r7, [r0, #0xc] - ldr r6, [sp, #0x4] - ldr r5, [r0, #0x4] - smull r8, r6, r7, r6 - adds r7, r8, r4 - ldr r4, [sp, #0x0] - adc r6, r6, #0x0 - smlal r7, r6, r5, r4 - mov r5, r7, lsr #0xc - add r4, sp, #0x8 - orr r5, r5, r6, lsl #0x14 - str r5, [r3, #0x4] - cmp r3, r4 - ldreq r3, [sp, #0xc] - ldreq r4, [sp, #0x8] - streq r3, [sp, #0x4] - ldr r3, _020B5AAC ; =UNK_021CED14 - streq r4, [sp, #0x0] - ldr r3, [r3, #0x0] - ldr r3, [r3, #0x4] - cmp r3, #0x0 - beq _020B597C - cmp r3, #0x2 - moveq r5, #0x300 - movne r5, #0x100 - cmp r5, #0x100 - ldreq r4, [r1, #0x0] - ldreq r3, _020B5AB0 ; =0xC1FFFCFF - andeq r3, r4, r3 - orreq r3, r3, r5 - streq r3, [r1, #0x0] - beq _020B597C - ldr r4, [r1, #0x0] - ldr r3, _020B5AB0 ; =0xC1FFFCFF - and r3, r4, r3 - orr r3, r3, r5 - str r3, [r1, #0x0] -_020B597C: - ldr r6, [r1, #0x0] - and r5, r6, #0x300 - cmp r5, #0x100 - beq _020B599C - cmp r5, #0x300 - beq _020B599C - and r3, r6, #0x30000000 - orr r5, r5, r3 -_020B599C: - ldr r3, _020B5AA0 ; =0xC000C000 - ldr r4, _020B5AA4 ; =UNK_020FF8AC - and r3, r6, r3 - and r6, r3, #0xc0000000 - and r3, r3, #0xc000 - mov lr, r3, asr #0xe - mov r6, r6, lsr #0x1e - mov r3, r6, lsl #0x1 - add r4, r4, lr, lsl #0x3 - ldrh r4, [r3, r4] - ldr r6, [r0, #0x0] - ldr r8, _020B5AA8 ; =UNK_020FF894 - mov r12, r4, asr #0x1 - mov r4, r12, lsl #0xc - rsb r7, r4, #0x0 - mla r7, r6, r12, r7 - add lr, r8, lr, lsl #0x3 - ldrh r3, [r3, lr] - ldr r6, [r0, #0x8] - ldr lr, [sp, #0x0] - mov r3, r3, asr #0x1 - mla r7, r6, r3, r7 - add r6, lr, r7 - str r6, [sp, #0x0] - mov lr, r3, lsl #0xc - ldr r6, [r0, #0x4] - rsb r7, lr, #0x0 - mla r7, r6, r12, r7 - ldr r0, [r0, #0xc] - ldr r6, [sp, #0x4] - mla r3, r0, r3, r7 - add r0, r6, r3 - str r0, [sp, #0x4] - cmp r5, #0x300 - moveq r0, #0x1 - movne r0, #0x0 - cmp r0, #0x0 - beq _020B5A4C - ldr r3, [sp, #0x0] - ldr r0, [sp, #0x4] - sub r3, r3, r4 - sub r0, r0, lr - str r3, [sp, #0x0] - str r0, [sp, #0x4] -_020B5A4C: - ldr r4, [sp, #0x0] - ldr r0, [r2, #0x0] - ldr r3, [sp, #0x4] - add r5, r4, r0 - str r5, [sp, #0x0] - ldr r2, [r2, #0x4] - ldr r0, _020B5AB4 ; =0x000001FF - add r2, r3, r2 - str r2, [sp, #0x4] - mov r3, r2, asr #0xc - ldr r4, [r1, #0x0] - ldr r2, _020B5AB8 ; =0xFE00FF00 - and r3, r3, #0xff - and r2, r4, r2 - and r4, r0, r5, asr #0xc - orr r0, r2, r3 - orr r0, r0, r4, lsl #0x10 - str r0, [r1, #0x0] - add sp, sp, #0x10 - ldmia sp!, {r4-r8,pc} - .balign 4 -_020B5A9C: .word 0x01FF0000 -_020B5AA0: .word 0xC000C000 -_020B5AA4: .word UNK_020FF8AC -_020B5AA8: .word UNK_020FF894 -_020B5AAC: .word UNK_021CED14 -_020B5AB0: .word 0xC1FFFCFF -_020B5AB4: .word 0x000001FF -_020B5AB8: .word 0xFE00FF00 - - arm_func_start FUN_020B5ABC -FUN_020B5ABC: ; 0x020B5ABC - stmdb sp!, {r4-r9,lr} - sub sp, sp, #0xc - add r5, sp, #0x0 - mov r4, #0x0 - str r4, [r5, #0x0] - str r4, [r5, #0x4] - mov r8, r2 - ldr r2, [sp, #0x28] - mov r5, r0 - mov r9, r1 - mov r4, r3 - cmp r2, #0x0 - mov r7, #0x1 - beq _020B5B24 - add r6, sp, #0x28 -_020B5AF8: - mov r0, r9 - mov r1, r8 - mov r3, r6 - bl FUN_020B5BC8 - ldr r1, [sp, #0x0] - ldr r2, [sp, #0x28] - cmp r0, r1 - strgt r0, [sp, #0x0] - add r7, r7, #0x1 - cmp r2, #0x0 - bne _020B5AF8 -_020B5B24: - ldr r0, [r9, #0x0] - sub r2, r7, #0x1 - ldrsb r1, [r0, #0x1] - ldr r0, [sp, #0x0] - add r1, r4, r1 - mul r1, r2, r1 - sub r1, r1, r4 - str r1, [sp, #0x4] - str r0, [r5, #0x0] - str r1, [r5, #0x4] - add sp, sp, #0xc - ldmia sp!, {r4-r9,pc} - - arm_func_start FUN_020B5B54 -FUN_020B5B54: ; 0x020B5B54 - stmdb sp!, {r4-r8,lr} - sub sp, sp, #0x10 - str r2, [sp, #0x0] - add r3, sp, #0x4 - mov r2, #0x0 - str r2, [r3, #0x0] - mov r8, r0 - str r2, [r3, #0x4] - ldr r7, [r8, #0x4] - add r0, sp, #0x0 - mov r5, r1 - mov r4, #0x1 - blx r7 - cmp r0, #0x0 - beq _020B5BAC - add r6, sp, #0x0 -_020B5B94: - cmp r0, #0xa - mov r0, r6 - addeq r4, r4, #0x1 - blx r7 - cmp r0, #0x0 - bne _020B5B94 -_020B5BAC: - ldr r0, [r8, #0x0] - ldrsb r0, [r0, #0x1] - add r0, r5, r0 - mul r0, r4, r0 - sub r0, r0, r5 - add sp, sp, #0x10 - ldmia sp!, {r4-r8,pc} - - arm_func_start FUN_020B5BC8 -FUN_020B5BC8: - stmdb sp!, {r4-r10,lr} - sub sp, sp, #0x8 - mov r8, r0 - str r2, [sp, #0x0] - ldr r4, [r8, #0x4] - add r0, sp, #0x0 - mov r7, r1 - mov r6, r3 - mov r5, #0x0 - blx r4 - movs r1, r0 - beq _020B5C58 - ldr sb, _020B5C84 ; =0x0000FFFF - add r10, sp, #0x0 -_020B5C00: - cmp r1, #0xa - beq _020B5C58 - mov r0, r8 - bl FUN_020B5CE4 - mov r1, r0 - cmp r1, r9 - ldreq r0, [r8, #0x0] - ldreqh r1, [r0, #0x2] - mov r0, r8 - bl FUN_020B5C88 - ldrh r1, [r8, #0x8] - cmp r1, #0x0 - ldrnesb r1, [r0, #0x0] - ldrneb r0, [r0, #0x1] - addne r0, r1, r0 - ldreqsb r0, [r0, #0x2] - add r1, r7, r0 - mov r0, r10 - add r5, r5, r1 - blx r4 - movs r1, r0 - bne _020B5C00 -_020B5C58: - cmp r6, #0x0 - beq _020B5C70 - cmp r1, #0xa - ldreq r0, [sp, #0x0] - movne r0, #0x0 - str r0, [r6, #0x0] -_020B5C70: - cmp r5, #0x0 - subgt r5, r5, r7 - mov r0, r5 - add sp, sp, #0x8 - ldmia sp!, {r4-r10,pc} - .balign 4 -_020B5C84: .word 0x0000FFFF - - arm_func_start FUN_020B5C88 -FUN_020B5C88: ; 0x020B5C88 - stmdb sp!, {lr} - sub sp, sp, #0x4 - ldr r3, [r0, #0x0] - ldr lr, [r3, #0xc] - cmp lr, #0x0 - beq _020B5CD8 -_020B5CA0: - ldrh r12, [lr, #0x0] - cmp r12, r1 - bhi _020B5CCC - ldrh r2, [lr, #0x2] - cmp r1, r2 - ldrlsh r2, [r0, #0xa] - addls r3, lr, #0x8 - subls r0, r1, r12 - mlals r0, r2, r0, r3 - addls sp, sp, #0x4 - ldmlsia sp!, {pc} -_020B5CCC: - ldr lr, [lr, #0x4] - cmp lr, #0x0 - bne _020B5CA0 -_020B5CD8: - add r0, r3, #0x4 - add sp, sp, #0x4 - ldmia sp!, {pc} - - arm_func_start FUN_020B5CE4 -FUN_020B5CE4: ; 0x020B5CE4 - stmdb sp!, {lr} - sub sp, sp, #0x4 - ldr r0, [r0, #0x0] - ldr r0, [r0, #0x10] - cmp r0, #0x0 - beq _020B5D2C -_020B5CFC: - ldrh r2, [r0, #0x0] - cmp r2, r1 - bhi _020B5D20 - ldrh r2, [r0, #0x2] - cmp r1, r2 - bhi _020B5D20 - bl FUN_020B5D7C - add sp, sp, #0x4 - ldmia sp!, {pc} -_020B5D20: - ldr r0, [r0, #0x8] - cmp r0, #0x0 - bne _020B5CFC -_020B5D2C: - ldr r0, _020B5D38 ; =0x0000FFFF - add sp, sp, #0x4 - ldmia sp!, {pc} - .balign 4 -_020B5D38: .word 0x0000FFFF - - arm_func_start FUN_020B5D3C -FUN_020B5D3C: ; 0x020B5D3C - stmdb sp!, {r4,lr} - mov r4, r0 - mov r0, r1 - mov r1, r4 - bl FUN_020B7558 - sub r0, r0, #0x1 - strh r0, [r4, #0x8] - ldrh r0, [r4, #0x8] - cmp r0, #0x0 - movne r1, #0x2 - moveq r1, #0x3 - ldr r0, _020B5D78 ; =FUN_020B7718 - strh r1, [r4, #0xa] - str r0, [r4, #0x4] - ldmia sp!, {r4,pc} - .balign 4 -_020B5D78: .word FUN_020B7718 - - arm_func_start FUN_020B5D7C -FUN_020B5D7C: ; 0x020B5D7C - stmdb sp!, {lr} - sub sp, sp, #0x4 - ldrh r3, [r0, #0x4] - ldr r2, _020B5E4C ; =0x0000FFFF - cmp r3, #0x0 - beq _020B5DA8 - cmp r3, #0x1 - beq _020B5DC4 - cmp r3, #0x2 - beq _020B5DD8 - b _020B5E40 -_020B5DA8: - ldrh r2, [r0, #0x0] - ldrh r3, [r0, #0xc] - sub r0, r1, r2 - add r0, r3, r0 - mov r0, r0, lsl #0x10 - mov r2, r0, lsr #0x10 - b _020B5E40 -_020B5DC4: - ldrh r2, [r0, #0x0] - sub r1, r1, r2 - add r0, r0, r1, lsl #0x1 - ldrh r2, [r0, #0xc] - b _020B5E40 -_020B5DD8: - ldrh r3, [r0, #0xc] - add r0, r0, #0xc - add r0, r0, #0x2 - sub r3, r3, #0x1 - add lr, r0, r3, lsl #0x2 - cmp r0, lr - bhi _020B5E40 -_020B5DF4: - sub r12, lr, r0 - mov r3, r12, asr #0x1 - add r3, r12, r3, lsr #0x1e - mov r3, r3, asr #0x2 - add r3, r3, r3, lsr #0x1f - mov r12, r3, asr #0x1 - mov r3, r12, lsl #0x2 - ldrh r3, [r0, r3] - add r12, r0, r12, lsl #0x2 - cmp r3, r1 - addcc r0, r12, #0x4 - blo _020B5E38 - cmp r1, r3 - subcc lr, r12, #0x4 - blo _020B5E38 - ldrh r2, [r12, #0x2] - b _020B5E40 -_020B5E38: - cmp r0, lr - bls _020B5DF4 -_020B5E40: - mov r0, r2 - add sp, sp, #0x4 - ldmia sp!, {pc} - .balign 4 -_020B5E4C: .word 0x0000FFFF - - arm_func_start FUN_020B5E50 -FUN_020B5E50: ; 0x020B5E50 - stmdb sp!, {r4-r11,lr} - sub sp, sp, #0x3c - mov r7, r0 - mov r0, r1 - cmp r0, #0x8 - ldr r0, [sp, #0x60] - str r1, [sp, #0x10] - str r0, [sp, #0x60] - ldr r0, [sp, #0x6c] - str r2, [sp, #0x14] - str r0, [sp, #0x6c] - ldrlt r0, [sp, #0x10] - mov r11, r3 - ldr r6, [sp, #0x64] - ldr r5, [sp, #0x68] - movge r2, #0x3 - clzlt r0, r0 - rsblt r2, r0, #0x1f - ldr r0, [sp, #0x14] - cmp r0, #0x8 - ldrlt r0, [sp, #0x14] - movge r1, #0x3 - clzlt r0, r0 - rsblt r1, r0, #0x1f - ldr r0, _020B6170 ; =UNK_020FF970 - mvn r3, #0x0 - add r1, r0, r1, lsl #0x3 - add r0, r1, r2, lsl #0x1 - ldrb r4, [r1, r2, lsl #0x1] - ldrb r1, [r0, #0x1] - ldr r2, [sp, #0x14] - cmp r6, #0x0 - str r1, [sp, #0x18] - ldr r1, [sp, #0x10] - and r1, r1, r3, lsl r4 - str r1, [sp, #0x1c] - ldr r1, [sp, #0x18] - and r1, r2, r3, lsl r1 - str r1, [sp, #0x20] - moveq r1, #0x1 - streq r1, [sp, #0x24] - movne r1, #0x2 - strne r1, [sp, #0x24] - mov r1, #0x0 - str r1, [sp, #0x28] - bl FUN_020B704C - ldr r1, [sp, #0x10] - ldr r2, [sp, #0x14] - mov r10, r1, asr r4 - ldr r1, [sp, #0x18] - mov r1, r2, asr r1 - str r1, [sp, #0x2c] - ldr r1, [sp, #0x24] - mov r2, r1, lsl r4 - ldr r1, [sp, #0x18] - mov r2, r2, lsl r1 - ldr r1, [sp, #0x6c] - mov r9, r2, asr r1 - mov r1, #0x0 - str r1, [sp, #0x30] - str r1, [sp, #0x34] - b _020B5FE8 -_020B5F48: - ldr r2, [sp, #0x30] - ldr r1, [sp, #0x18] - ldr r8, [sp, #0x34] - mov r2, r2, lsl r1 - ldr r1, [sp, #0x60] - add lr, r1, r2, lsl #0x3 - b _020B5FD4 -_020B5F64: - mov r1, r8, lsl r4 - add r2, r11, r1, lsl #0x3 - ldr r1, _020B6174 ; =0x000001FF - ldr r3, [r7, #0x0] - and r12, r2, r1 - ldr r1, _020B6178 ; =0xFE00FF00 - and r2, lr, #0xff - and r1, r3, r1 - orr r1, r1, r2 - orr r1, r1, r12, lsl #0x10 - str r1, [r7, #0x0] - ldr r3, [r7, #0x0] - ldr r1, _020B617C ; =0x3FFF3FFF - mov r2, #0x400 - and r1, r3, r1 - orr r1, r1, r0 - str r1, [r7, #0x0] - rsb r1, r2, #0x0 - ldrh r2, [r7, #0x4] - add r8, r8, #0x1 - and r1, r2, r1 - orr r1, r1, r5 - strh r1, [r7, #0x4] - ldr r1, [r7, #0x0] - add r5, r5, r9 - bic r1, r1, #0x2000 - orr r1, r1, r6, lsl #0xd - str r1, [r7], #0x8 -_020B5FD4: - cmp r8, r10 - blt _020B5F64 - ldr r1, [sp, #0x30] - add r1, r1, #0x1 - str r1, [sp, #0x30] -_020B5FE8: - ldr r2, [sp, #0x30] - ldr r1, [sp, #0x2c] - cmp r2, r1 - blt _020B5F48 - ldr r0, [sp, #0x28] - mla r0, r10, r1, r0 - str r0, [sp, #0x28] - ldr r1, [sp, #0x1c] - ldr r0, [sp, #0x10] - cmp r1, r0 - bhs _020B6078 - ldr r0, [sp, #0x60] - ldr r1, [sp, #0x10] - str r0, [sp, #0x0] - ldr r0, [sp, #0x1c] - str r6, [sp, #0x4] - sub r4, r1, r0 - ldr r1, [sp, #0x6c] - str r5, [sp, #0x8] - str r1, [sp, #0xc] - ldr r1, [sp, #0x1c] - ldr r2, [sp, #0x20] - add r3, r11, r1, lsl #0x3 - mov r0, r7 - mov r1, r4 - bl FUN_020B5E50 - ldr r1, [sp, #0x24] - add r7, r7, r0, lsl #0x3 - mul r2, r1, r4 - ldr r1, [sp, #0x20] - mul r2, r1, r2 - ldr r1, [sp, #0x6c] - add r5, r5, r2, lsr r1 - ldr r1, [sp, #0x28] - add r0, r1, r0 - str r0, [sp, #0x28] -_020B6078: - ldr r1, [sp, #0x20] - ldr r0, [sp, #0x14] - cmp r1, r0 - bhs _020B60F0 - ldr r1, [sp, #0x60] - ldr r0, [sp, #0x20] - mov r3, r11 - add r0, r1, r0, lsl #0x3 - str r0, [sp, #0x0] - str r6, [sp, #0x4] - ldr r1, [sp, #0x14] - ldr r0, [sp, #0x20] - str r5, [sp, #0x8] - sub r4, r1, r0 - ldr r1, [sp, #0x6c] - mov r0, r7 - str r1, [sp, #0xc] - ldr r1, [sp, #0x1c] - mov r2, r4 - bl FUN_020B5E50 - ldr r2, [sp, #0x24] - ldr r1, [sp, #0x1c] - add r7, r7, r0, lsl #0x3 - mul r1, r2, r1 - mul r2, r4, r1 - ldr r1, [sp, #0x6c] - add r5, r5, r2, lsr r1 - ldr r1, [sp, #0x28] - add r0, r1, r0 - str r0, [sp, #0x28] -_020B60F0: - ldr r1, [sp, #0x1c] - ldr r0, [sp, #0x10] - cmp r1, r0 - bhs _020B6164 - ldr r1, [sp, #0x20] - ldr r0, [sp, #0x14] - cmp r1, r0 - bhs _020B6164 - ldr r1, [sp, #0x60] - ldr r0, [sp, #0x20] - ldr r2, [sp, #0x10] - add r0, r1, r0, lsl #0x3 - ldr r1, [sp, #0x1c] - ldr r3, [sp, #0x14] - str r0, [sp, #0x0] - sub r1, r2, r1 - ldr r2, [sp, #0x20] - str r6, [sp, #0x4] - sub r2, r3, r2 - ldr r3, [sp, #0x1c] - ldr r4, [sp, #0x6c] - str r5, [sp, #0x8] - mov r0, r7 - add r3, r11, r3, lsl #0x3 - str r4, [sp, #0xc] - bl FUN_020B5E50 - ldr r1, [sp, #0x28] - add r0, r1, r0 - str r0, [sp, #0x28] -_020B6164: - ldr r0, [sp, #0x28] - add sp, sp, #0x3c - ldmia sp!, {r4-r11,pc} - .balign 4 -_020B6170: .word UNK_020FF970 -_020B6174: .word 0x000001FF -_020B6178: .word 0xFE00FF00 -_020B617C: .word 0x3FFF3FFF - - arm_func_start FUN_020B6180 -FUN_020B6180: ; 0x020B6180 - stmdb sp!, {r4-r6,lr} - mov r3, r0, lsr #0x3 - mov r6, r1, lsr #0x3 - mul r12, r3, r6 - and r2, r0, #0x4 - and lr, r0, #0x2 - and r0, r0, #0x1 - add r4, r0, lr, lsr #0x1 - mov r5, r2, lsr #0x2 - and r0, r1, #0x4 - add lr, r12, #0x0 - add r12, r5, r4, lsl #0x1 - mla r12, r6, r12, lr - and lr, r1, #0x2 - and r1, r1, #0x1 - add lr, r1, lr, lsr #0x1 - mov r1, r0, lsr #0x2 - add r1, r1, lr, lsl #0x1 - mla r12, r3, r1, r12 - add r1, r4, r2, lsr #0x2 - add r0, lr, r0, lsr #0x2 - mla r0, r1, r0, r12 - ldmia sp!, {r4-r6,pc} - - arm_func_start FUN_020B61DC -FUN_020B61DC: ; 0x020B61DC - stmdb sp!, {r4-r8,lr} - ldr r12, [sp, #0x1c] - ldr r8, [sp, #0x18] - mov r12, r12, lsl #0x1c - mov r4, r12, lsr #0x10 - mov r6, #0x0 - cmp r2, #0x0 - ldmleia sp!, {r4-r8,pc} - mov lr, r3, lsl #0x1 - mov r12, r6 -_020B6204: - mov r5, r0 - mov r7, r12 - cmp r1, #0x0 - ble _020B622C -_020B6214: - orr r3, r4, r8 - add r7, r7, #0x1 - cmp r7, r1 - add r8, r8, #0x1 - strh r3, [r5], #0x2 - blt _020B6214 -_020B622C: - add r6, r6, #0x1 - cmp r6, r2 - add r0, r0, lr - blt _020B6204 - ldmia sp!, {r4-r8,pc} - - arm_func_start FUN_020B6240 -FUN_020B6240: ; 0x020B6240 - stmdb sp!, {r4-r8,lr} - sub sp, sp, #0x8 - ldr r5, [sp, #0x24] - ldr lr, [sp, #0x20] - cmp r5, #0x20 - ldr r12, [sp, #0x28] - bgt _020B6280 - mla r4, r5, lr, r3 - ldr lr, [sp, #0x2c] - str r12, [sp, #0x0] - mov r3, r5 - add r0, r0, r4, lsl #0x1 - str lr, [sp, #0x4] - bl FUN_020B61DC - add sp, sp, #0x8 - ldmia sp!, {r4-r8,pc} -_020B6280: - ldr r4, [sp, #0x2c] - add r7, lr, r2 - mov r2, r4, lsl #0x1c - cmp lr, r7 - add r8, r3, r1 - mov r4, r2, lsr #0x10 - addge sp, sp, #0x8 - ldmgeia sp!, {r4-r8,pc} -_020B62A0: - cmp lr, #0x20 - movlt r1, lr - addge r1, lr, #0x20 - mov r6, r3 - cmp r3, r8 - add r5, r0, r1, lsl #0x6 - bge _020B62E4 -_020B62BC: - cmp r6, #0x20 - movlt r1, r6 - addge r1, r6, #0x3e0 - orr r2, r4, r12 - mov r1, r1, lsl #0x1 - add r6, r6, #0x1 - strh r2, [r5, r1] - cmp r6, r8 - add r12, r12, #0x1 - blt _020B62BC -_020B62E4: - add lr, lr, #0x1 - cmp lr, r7 - blt _020B62A0 - add sp, sp, #0x8 - ldmia sp!, {r4-r8,pc} - - arm_func_start FUN_020B62F8 -FUN_020B62F8: ; 0x020B62F8 - stmdb sp!, {r4-r6,lr} - sub sp, sp, #0x18 - cmp r2, #0x8 - movlt r4, r2 - movge r12, #0x3 - clzlt r4, r4 - rsblt r12, r4, #0x1f - cmp r3, #0x8 - movlt r4, r3 - movge r6, #0x3 - clzlt r4, r4 - rsblt r6, r4, #0x1f - ldr r4, _020B6378 ; =UNK_020FF970 - ldr r5, [sp, #0x28] - add r4, r4, r6, lsl #0x3 - ldrb r6, [r4, r12, lsl #0x1] - add r12, r4, r12, lsl #0x1 - ldr r4, _020B637C ; =FUN_020B6908 - strb r6, [sp, #0x14] - ldrb r6, [r12, #0x1] - ldr lr, _020B6380 ; =FUN_020B68AC - ldr ip, _020B6384 ; =FUN_020B64C0 - strb r6, [sp, #0x15] - str r5, [sp, #0x0] - str r4, [sp, #0x4] - str lr, [sp, #0x8] - str r12, [sp, #0xc] - ldr r12, [sp, #0x14] - str r12, [sp, #0x10] - bl FUN_020B6488 - add sp, sp, #0x18 - ldmia sp!, {r4-r6,pc} - .balign 4 -_020B6378: .word UNK_020FF970 -_020B637C: .word FUN_020B6908 -_020B6380: .word FUN_020B68AC -_020B6384: .word FUN_020B64C0 - - arm_func_start FUN_020B6388 -FUN_020B6388: ; 0x020B6388 - stmdb sp!, {lr} - sub sp, sp, #0x14 - ldr lr, [sp, #0x18] - ldr ip, _020B63C0 ; =FUN_020B6B10 - str lr, [sp, #0x0] - ldr lr, _020B63C4 ; =FUN_020B68AC - str r12, [sp, #0x4] - ldr ip, _020B63C8 ; =FUN_020B66D4 - str lr, [sp, #0x8] - str r12, [sp, #0xc] - str r2, [sp, #0x10] - bl FUN_020B6488 - add sp, sp, #0x14 - ldmia sp!, {pc} - .balign 4 -_020B63C0: .word FUN_020B6B10 -_020B63C4: .word FUN_020B68AC -_020B63C8: .word FUN_020B66D4 - - arm_func_start FUN_020B63CC -FUN_020B63CC: ; 0x020B63CC - stmdb sp!, {r4-r8,lr} - sub sp, sp, #0x10 - mov r7, r1 - ldrh r1, [sp, #0x2c] - mov r8, r0 - mov r0, r7 - mov r6, r2 - mov r5, r3 - bl FUN_020B5CE4 - ldr r1, _020B6484 ; =0x0000FFFF - mov r4, r0 - cmp r4, r1 - ldreq r0, [r7, #0x0] - ldreqh r4, [r0, #0x2] - mov r0, r7 - mov r1, r4 - bl FUN_020B5C88 - str r0, [sp, #0x8] - ldr r0, [r7, #0x0] - ldr r2, [sp, #0x28] - ldr r0, [r0, #0x8] - add r1, sp, #0x8 - ldrh r3, [r0, #0x2] - add r12, r0, #0x8 - mov r0, r8 - mla r3, r4, r3, r12 - str r3, [sp, #0xc] - str r2, [sp, #0x0] - str r1, [sp, #0x4] - ldr r1, [sp, #0x8] - ldr r4, [r8, #0x14] - ldrsb r2, [r1, #0x0] - mov r1, r7 - mov r3, r5 - add r2, r6, r2 - blx r4 - ldrh r0, [r7, #0x8] - cmp r0, #0x0 - ldrne r0, [sp, #0x8] - ldrnesb r1, [r0, #0x0] - ldrneb r0, [r0, #0x1] - addne r0, r1, r0 - ldreq r0, [sp, #0x8] - ldreqsb r0, [r0, #0x2] - add sp, sp, #0x10 - ldmia sp!, {r4-r8,pc} - .balign 4 -_020B6484: .word 0x0000FFFF - - arm_func_start FUN_020B6488 -FUN_020B6488: ; 0x020B6488 - str r2, [r0, #0x4] - ldr r2, [sp, #0x0] - str r3, [r0, #0x8] - strb r2, [r0, #0xc] - ldr r2, [sp, #0x4] - str r1, [r0, #0x0] - ldr r1, [sp, #0x8] - str r2, [r0, #0x14] - ldr r2, [sp, #0xc] - str r1, [r0, #0x18] - ldr r1, [sp, #0x10] - str r2, [r0, #0x1c] - str r1, [r0, #0x10] - bx lr - - arm_func_start FUN_020B64C0 -FUN_020B64C0: ; 0x020B64C0 - stmdb sp!, {r4-r11,lr} - sub sp, sp, #0x54 - ldrb r4, [r0, #0xc] - mov r10, r2 - str r1, [sp, #0xc] - str r4, [sp, #0x44] - ldr r1, [sp, #0x44] - ldr r4, [sp, #0x78] - cmp r1, #0x4 - add r1, r10, r4 - str r1, [sp, #0x1c] - ldr r2, [sp, #0x7c] - mov r1, r3 - add r1, r1, r2 - str r1, [sp, #0x20] - ldrne r1, [sp, #0xc] - str r3, [sp, #0x10] - orrne r1, r1, r1, lsl #0x8 - orrne r1, r1, r1, lsl #0x10 - strne r1, [sp, #0xc] - bne _020B6528 - ldr r1, [sp, #0xc] - orr r1, r1, r1, lsl #0x4 - orr r1, r1, r1, lsl #0x8 - orr r1, r1, r1, lsl #0x10 - str r1, [sp, #0xc] -_020B6528: - bic r1, r10, #0x7 - str r1, [sp, #0x30] - ldr r1, [sp, #0x10] - ldr r2, [r0, #0x10] - bic r1, r1, #0x7 - str r1, [sp, #0x14] - ldr r1, [sp, #0x44] - str r2, [sp, #0x4c] - mov r3, r1, lsl #0x6 - mov r2, r3, asr #0x2 - ldr r1, [sp, #0x20] - add r3, r3, r2, lsr #0x1d - ldr r2, [sp, #0x1c] - add r6, r1, #0x7 - add r2, r2, #0x7 - bic r5, r2, #0x7 - bic r2, r6, #0x7 - ldr r1, [sp, #0x30] - str r2, [sp, #0x24] - mov r2, r3, asr #0x3 - str r2, [sp, #0x48] - mov r4, r1, asr #0x2 - ldr r2, [sp, #0x30] - ldr r1, [sp, #0x14] - add r2, r2, r4, lsr #0x1d - mov r2, r2, asr #0x3 - str r2, [sp, #0x2c] - ldr r2, [sp, #0x14] - mov r1, r1, asr #0x2 - add r1, r2, r1, lsr #0x1d - mov r6, r1, asr #0x3 - ldr r1, [sp, #0x24] - cmp r2, r1 - ldr r1, [r0, #0x4] - str r1, [sp, #0x40] - ldr r1, [r0, #0x8] - ldr r0, [r0, #0x0] - str r1, [sp, #0x3c] - str r0, [sp, #0x28] - ldrb r0, [sp, #0x4c] - str r0, [sp, #0x38] - ldrb r0, [sp, #0x4d] - str r0, [sp, #0x34] - addge sp, sp, #0x54 - ldmgeia sp!, {r4-r11,pc} - mov r4, #0x0 - mov r11, #0x8 -_020B65E4: - ldr r1, [sp, #0x14] - ldr r0, [sp, #0x10] - ldr r7, [sp, #0x2c] - cmp r1, r0 - movlt r1, r0 - ldrlt r0, [sp, #0x14] - sublt r9, r1, r0 - ldr r1, [sp, #0x20] - ldr r0, [sp, #0x14] - movge r9, r4 - sub r0, r1, r0 - cmp r0, #0x8 - movgt r0, r11 - sub r0, r0, r9 - str r0, [sp, #0x18] - ldr r0, [sp, #0x30] - cmp r0, r5 - mov r8, r0 - bge _020B66B0 -_020B6630: - ldr r0, [sp, #0x38] - ldr r2, [sp, #0x40] - str r0, [sp, #0x0] - ldr r0, [sp, #0x34] - ldr r3, [sp, #0x3c] - str r0, [sp, #0x4] - mov r0, r7 - mov r1, r6 - bl FUN_020B7068 - ldr r2, [sp, #0x1c] - cmp r8, r10 - sublt r1, r10, r8 - sub r2, r2, r8 - movge r1, r4 - cmp r2, #0x8 - movgt r2, r11 - sub r3, r2, r1 - ldr r2, [sp, #0x18] - ldr r12, [sp, #0x48] - str r2, [sp, #0x0] - ldr r2, [sp, #0xc] - str r2, [sp, #0x4] - ldr r2, [sp, #0x44] - str r2, [sp, #0x8] - ldr r2, [sp, #0x28] - mla r0, r12, r0, r2 - mov r2, r9 - bl FUN_020B6F18 - add r8, r8, #0x8 - add r7, r7, #0x1 - cmp r8, r5 - blt _020B6630 -_020B66B0: - ldr r0, [sp, #0x14] - add r6, r6, #0x1 - add r1, r0, #0x8 - ldr r0, [sp, #0x24] - str r1, [sp, #0x14] - cmp r1, r0 - blt _020B65E4 - add sp, sp, #0x54 - ldmia sp!, {r4-r11,pc} - - arm_func_start FUN_020B66D4 -FUN_020B66D4: ; 0x020B66D4 - stmdb sp!, {r4-r11,lr} - sub sp, sp, #0x3c - ldrb r4, [r0, #0xc] - mov r10, r2 - str r1, [sp, #0xc] - str r4, [sp, #0x2c] - ldr r1, [sp, #0x2c] - ldr r4, [sp, #0x60] - cmp r1, #0x4 - add r1, r10, r4 - str r1, [sp, #0x18] - ldr r2, [sp, #0x64] - mov r1, r3 - add r1, r1, r2 - str r1, [sp, #0x1c] - ldrne r1, [sp, #0xc] - str r3, [sp, #0x10] - orrne r1, r1, r1, lsl #0x8 - orrne r1, r1, r1, lsl #0x10 - strne r1, [sp, #0xc] - bne _020B673C - ldr r1, [sp, #0xc] - orr r1, r1, r1, lsl #0x4 - orr r1, r1, r1, lsl #0x8 - orr r1, r1, r1, lsl #0x10 - str r1, [sp, #0xc] -_020B673C: - ldr r1, [sp, #0x10] - bic r1, r1, #0x7 - mov r2, r1, asr #0x2 - str r1, [sp, #0x14] - add r1, r1, r2, lsr #0x1d - ldr r2, [r0, #0x10] - mov r3, r1, asr #0x3 - mul r1, r3, r2 - bic r3, r10, #0x7 - str r3, [sp, #0x28] - ldr r3, [sp, #0x2c] - mov r6, r3, lsl #0x6 - ldr r3, [sp, #0x28] - mov r4, r6, asr #0x2 - mov r5, r3, asr #0x2 - add r5, r3, r5, lsr #0x1d - add r4, r6, r4, lsr #0x1d - mov r3, r4, asr #0x3 - str r3, [sp, #0x30] - ldr r3, [sp, #0x1c] - add r1, r1, r5, asr #0x3 - add r4, r3, #0x7 - ldr r3, [r0, #0x0] - ldr r0, [sp, #0x18] - add r5, r0, #0x7 - ldr r0, [sp, #0x30] - bic r7, r5, #0x7 - mla r1, r0, r1, r3 - bic r0, r4, #0x7 - str r0, [sp, #0x20] - ldr r0, [sp, #0x30] - str r1, [sp, #0x24] - mul r0, r2, r0 - str r0, [sp, #0x34] - ldr r1, [sp, #0x14] - ldr r0, [sp, #0x20] - cmp r1, r0 - addge sp, sp, #0x3c - ldmgeia sp!, {r4-r11,pc} - mov r5, #0x0 - mov r4, #0x8 -_020B67E0: - ldr r1, [sp, #0x14] - ldr r0, [sp, #0x10] - ldr r6, [sp, #0x24] - cmp r1, r0 - movlt r1, r0 - ldrlt r0, [sp, #0x14] - sublt r9, r1, r0 - ldr r1, [sp, #0x1c] - ldr r0, [sp, #0x14] - movge r9, r5 - sub r0, r1, r0 - cmp r0, #0x8 - movgt r0, r4 - sub r11, r0, r9 - ldr r0, [sp, #0x28] - cmp r0, r7 - mov r8, r0 - bge _020B687C -_020B6828: - ldr r0, [sp, #0x18] - cmp r8, r10 - sublt r1, r10, r8 - sub r0, r0, r8 - movge r1, r5 - cmp r0, #0x8 - movgt r0, r4 - sub r3, r0, r1 - ldr r0, [sp, #0xc] - str r11, [sp, #0x0] - str r0, [sp, #0x4] - ldr r0, [sp, #0x2c] - mov r2, r9 - str r0, [sp, #0x8] - mov r0, r6 - bl FUN_020B6F18 - ldr r0, [sp, #0x30] - add r8, r8, #0x8 - add r6, r6, r0 - cmp r8, r7 - blt _020B6828 -_020B687C: - ldr r1, [sp, #0x24] - ldr r0, [sp, #0x34] - add r0, r1, r0 - str r0, [sp, #0x24] - ldr r0, [sp, #0x14] - add r1, r0, #0x8 - ldr r0, [sp, #0x20] - str r1, [sp, #0x14] - cmp r1, r0 - blt _020B67E0 - add sp, sp, #0x3c - ldmia sp!, {r4-r11,pc} - - arm_func_start FUN_020B68AC -FUN_020B68AC: ; 0x020B68AC - stmdb sp!, {lr} - sub sp, sp, #0x4 - mov r3, r0 - ldrb r2, [r3, #0xc] - ldr r12, [r3, #0x4] - cmp r2, #0x4 - orreq r0, r1, r1, lsl #0x4 - orreq r0, r0, r0, lsl #0x8 - orreq r1, r0, r0, lsl #0x10 - orrne r0, r1, r1, lsl #0x8 - orrne r1, r0, r0, lsl #0x10 - ldr r0, [r3, #0x8] - mov r2, r2, lsl #0x6 - mul lr, r12, r0 - mov r0, r2, asr #0x2 - add r0, r2, r0, lsr #0x1d - mov r2, r0, asr #0x3 - mov r0, r1 - mul r2, lr, r2 - ldr r1, [r3, #0x0] - bl MIi_CpuClearFast - add sp, sp, #0x4 - ldmia sp!, {pc} - - arm_func_start FUN_020B6908 -FUN_020B6908: ; 0x020B6908 - stmdb sp!, {r4-r11,lr} - sub sp, sp, #0x4c - ldr r7, [sp, #0x74] - ldrb r5, [r0, #0xc] - ldr r6, [r1, #0x0] - ldr r4, [r7, #0x0] - ldr r9, [r6, #0x8] - mov r8, r5, lsl #0x6 - ldrb r4, [r4, #0x1] - mov r5, r8, asr #0x2 - add r5, r8, r5, lsr #0x1d - ldrb r9, [r9, #0x1] - ldr r8, [r0, #0x4] - ldr r6, [r0, #0x8] - str r2, [sp, #0x8] - str r3, [sp, #0xc] - cmp r4, #0x0 - mov r5, r5, asr #0x3 - addeq sp, sp, #0x4c - ldmeqia sp!, {r4-r11,pc} - adds r3, r2, r4 - addmi sp, sp, #0x4c - ldmmiia sp!, {r4-r11,pc} - ldr r2, [sp, #0xc] - adds r2, r2, r9 - addmi sp, sp, #0x4c - ldmmiia sp!, {r4-r11,pc} - ldr r10, [sp, #0x8] - add r3, r3, #0x7 - cmp r10, #0x0 - movle r10, #0x0 - strle r10, [sp, #0x10] - movgt r10, r10, lsr #0x3 - strgt r10, [sp, #0x10] - ldr r10, [sp, #0xc] - add r2, r2, #0x7 - cmp r10, #0x0 - movle r10, #0x0 - mov r11, r2, lsr #0x3 - mov r3, r3, lsr #0x3 - movgt r10, r10, lsr #0x3 - cmp r3, r8 - movcs r3, r8 - cmp r11, r6 - ldr r2, [sp, #0x10] - movcs r11, r6 - subs r8, r3, r2 - addmi sp, sp, #0x4c - sub r3, r11, r10 - ldmmiia sp!, {r4-r11,pc} - cmp r3, #0x0 - addlt sp, sp, #0x4c - ldmltia sp!, {r4-r11,pc} - ldr r2, [sp, #0x8] - ldr r6, [r0, #0x0] - cmp r2, #0x0 - andge r2, r2, #0x7 - strge r2, [sp, #0x8] - ldr r2, [sp, #0xc] - ldr r11, [sp, #0x8] - cmp r2, #0x0 - andge r2, r2, #0x7 - strge r2, [sp, #0xc] - sub r8, r11, r8, lsl #0x3 - ldr r11, [sp, #0xc] - ldr r2, [sp, #0x70] - sub r3, r11, r3, lsl #0x3 - str r3, [sp, #0x14] - ldr r3, [r7, #0x4] - sub r2, r2, #0x1 - str r3, [sp, #0x28] - str r2, [sp, #0x48] - str r9, [sp, #0x38] - str r4, [sp, #0x34] - ldr r4, [r1, #0x0] - ldr r2, [sp, #0x14] - mov r3, r11 - cmp r3, r2 - ldr r2, [r4, #0x8] - ldrb r3, [r2, #0x6] - str r3, [sp, #0x40] - ldrb r2, [r0, #0xc] - str r2, [sp, #0x44] - ldr r1, [r1, #0x0] - ldr r1, [r1, #0x8] - ldrb r1, [r1, #0x0] - mul r1, r3, r1 - str r1, [sp, #0x3c] - ldr r1, [r0, #0x10] - str r1, [sp, #0x20] - ldr r1, [r0, #0x4] - ldr r0, [r0, #0x8] - ldrb r11, [sp, #0x20] - ldrb r4, [sp, #0x21] - str r1, [sp, #0x1c] - str r0, [sp, #0x18] - addle sp, sp, #0x4c - ldmleia sp!, {r4-r11,pc} -_020B6A90: - ldr r0, [sp, #0xc] - ldr r7, [sp, #0x10] - str r0, [sp, #0x30] - ldr r0, [sp, #0x8] - cmp r0, r8 - mov r9, r0 - ble _020B6AEC -_020B6AAC: - ldr r2, [sp, #0x1c] - str r11, [sp, #0x0] - ldr r3, [sp, #0x18] - mov r0, r7 - mov r1, r10 - str r4, [sp, #0x4] - bl FUN_020B7068 - mla r1, r0, r5, r6 - add r0, sp, #0x24 - str r9, [sp, #0x2c] - str r1, [sp, #0x24] - bl FUN_020B6CAC - sub r9, r9, #0x8 - add r7, r7, #0x1 - cmp r9, r8 - bgt _020B6AAC -_020B6AEC: - ldr r0, [sp, #0xc] - add r10, r10, #0x1 - sub r1, r0, #0x8 - ldr r0, [sp, #0x14] - str r1, [sp, #0xc] - cmp r1, r0 - bgt _020B6A90 - add sp, sp, #0x4c - ldmia sp!, {r4-r11,pc} - - arm_func_start FUN_020B6B10 -FUN_020B6B10: ; 0x020B6B10 - stmdb sp!, {r4-r11,lr} - sub sp, sp, #0x2c - ldr r4, [sp, #0x54] - ldrb r5, [r0, #0xc] - str r4, [sp, #0x54] - ldr r4, [r4, #0x0] - ldr r6, [r1, #0x0] - mov r7, r5, lsl #0x6 - ldrb r4, [r4, #0x1] - mov r5, r7, asr #0x2 - add r5, r7, r5, lsr #0x1d - cmp r4, #0x0 - ldr r6, [r6, #0x8] - mov r9, r3 - ldr r8, [r0, #0x4] - ldr r7, [r0, #0x8] - mov r10, r2 - mov r5, r5, asr #0x3 - addeq sp, sp, #0x2c - ldr lr, [r0, #0x0] - ldrb r3, [r6, #0x1] - ldmeqia sp!, {r4-r11,pc} - adds r6, r10, r4 - addmi sp, sp, #0x2c - ldmmiia sp!, {r4-r11,pc} - adds r2, r9, r3 - addmi sp, sp, #0x2c - ldmmiia sp!, {r4-r11,pc} - cmp r10, #0x0 - movle r11, #0x0 - add r6, r6, #0x7 - movgt r11, r10, lsr #0x3 - cmp r9, #0x0 - movle r12, #0x0 - add r2, r2, #0x7 - mov r6, r6, lsr #0x3 - movgt r12, r9, lsr #0x3 - cmp r6, r8 - movcs r6, r8 - mov r2, r2, lsr #0x3 - cmp r2, r7 - movcs r2, r7 - subs r7, r6, r11 - addmi sp, sp, #0x2c - sub r2, r2, r12 - ldmmiia sp!, {r4-r11,pc} - cmp r2, #0x0 - addlt sp, sp, #0x2c - ldmltia sp!, {r4-r11,pc} - ldr r6, [r0, #0x10] - cmp r10, #0x0 - sub r8, r6, r7 - mul r8, r5, r8 - mla r11, r6, r12, r11 - andge r10, r10, #0x7 - str r8, [sp, #0x0] - ldr r8, [sp, #0x54] - mla r6, r5, r11, lr - ldr r12, [r8, #0x4] - ldr r11, [sp, #0x50] - cmp r9, #0x0 - sub r8, r11, #0x1 - andge r9, r9, #0x7 - sub r11, r9, r2, lsl #0x3 - str r12, [sp, #0x8] - str r4, [sp, #0x14] - str r8, [sp, #0x28] - str r3, [sp, #0x18] - ldr r3, [r1, #0x0] - cmp r9, r11 - ldr r2, [r3, #0x8] - sub r7, r10, r7, lsl #0x3 - ldrb r2, [r2, #0x6] - str r2, [sp, #0x20] - ldrb r0, [r0, #0xc] - str r0, [sp, #0x24] - ldr r0, [r1, #0x0] - ldr r0, [r0, #0x8] - ldrb r0, [r0, #0x0] - mul r0, r2, r0 - str r0, [sp, #0x1c] - addle sp, sp, #0x2c - ldmleia sp!, {r4-r11,pc} - add r4, sp, #0x4 -_020B6C60: - mov r8, r10 - str r9, [sp, #0x10] - cmp r10, r7 - ble _020B6C90 -_020B6C70: - mov r0, r4 - str r6, [sp, #0x4] - str r8, [sp, #0xc] - bl FUN_020B6CAC - sub r8, r8, #0x8 - cmp r8, r7 - add r6, r6, r5 - bgt _020B6C70 -_020B6C90: - ldr r0, [sp, #0x0] - sub r9, r9, #0x8 - cmp r9, r11 - add r6, r6, r0 - bgt _020B6C60 - add sp, sp, #0x2c - ldmia sp!, {r4-r11,pc} - - arm_func_start FUN_020B6CAC -FUN_020B6CAC: ; 0x020B6CAC - stmdb sp!, {r4-r11,lr} - sub sp, sp, #0x34 - ldr r5, [r0, #0x8] - ldr r4, [r0, #0xc] - cmp r5, #0x0 - strge r5, [sp, #0x0] - movlt r1, #0x0 - strlt r1, [sp, #0x0] - ldr r1, [r0, #0x10] - cmp r4, #0x0 - add r10, r5, r1 - ldr r1, [r0, #0x14] - movge r2, r4 - movlt r2, #0x0 - cmp r10, #0x8 - add r3, r4, r1 - movge r10, #0x8 - cmp r3, #0x8 - movge r3, #0x8 - cmp r4, #0x0 - movgt r4, #0x0 - cmp r5, #0x0 - ldr r8, [r0, #0x20] - movgt r5, #0x0 - rsb r1, r4, #0x0 - mul r7, r10, r8 - ldr r6, [r0, #0x1c] - rsb r4, r5, #0x0 - mul r9, r6, r4 - ldr r4, [r0, #0x18] - mov r10, r7 - str r4, [sp, #0x8] - ldr r4, [sp, #0x0] - cmp r8, #0x4 - mul r5, r4, r8 - ldr r4, [sp, #0x8] - str r5, [sp, #0x0] - mla r11, r1, r4, r9 - ldr r1, [r0, #0x4] - str r1, [sp, #0x4] - bne _020B6E24 - ldr r1, [r0, #0x0] - ldr r7, [r0, #0x24] - add r0, r1, r2, lsl #0x2 - str r0, [sp, #0xc] - add r0, r1, r3, lsl #0x2 - ldr r1, [sp, #0xc] - str r0, [sp, #0x10] - cmp r1, r0 - addcs sp, sp, #0x34 - ldmcsia sp!, {r4-r11,pc} - mov r0, #0x0 - add r9, sp, #0x24 - mov r4, #0xf - str r0, [sp, #0x1c] -_020B6D88: - ldr r0, [sp, #0xc] - mov r1, r11, lsr #0x1f - ldr r5, [r0, #0x0] - ldr r0, [sp, #0x4] - rsb r2, r1, r11, lsl #0x1d - add r0, r0, r11, lsr #0x3 - str r0, [sp, #0x24] - ldr r0, [sp, #0x1c] - add r1, r1, r2, ror #0x1d - strb r0, [sp, #0x28] - strb r0, [sp, #0x29] - mov r0, r9 - bl FUN_020B76B0 - ldr r8, [sp, #0x0] - mov r0, r8 - cmp r0, r10 - bhs _020B6DF8 -_020B6DCC: - mov r0, r9 - mov r1, r6 - bl FUN_020B76B0 - cmp r0, #0x0 - mvnne r1, r4, lsl r8 - addne r0, r7, r0 - andne r1, r5, r1 - orrne r5, r1, r0, lsl r8 - add r8, r8, #0x4 - cmp r8, r10 - blo _020B6DCC -_020B6DF8: - ldr r0, [sp, #0xc] - add r1, r0, #0x4 - str r5, [r0, #0x0] - ldr r0, [sp, #0x10] - str r1, [sp, #0xc] - cmp r1, r0 - ldr r0, [sp, #0x8] - add r11, r11, r0 - blo _020B6D88 - add sp, sp, #0x34 - ldmia sp!, {r4-r11,pc} -_020B6E24: - ldr r1, [r0, #0x0] - ldr r9, [r0, #0x24] - add r0, r1, r2, lsl #0x3 - str r0, [sp, #0x14] - add r0, r1, r3, lsl #0x3 - ldr r1, [sp, #0x14] - str r0, [sp, #0x18] - cmp r1, r0 - addcs sp, sp, #0x34 - ldmcsia sp!, {r4-r11,pc} - mov r0, #0x0 - mov r4, #0xff - str r0, [sp, #0x20] -_020B6E58: - mov r1, r11, lsr #0x1f - rsb r0, r1, r11, lsl #0x1d - add r1, r1, r0, ror #0x1d - ldr r0, [sp, #0x14] - ldr r8, [r0, #0x0] - ldr r7, [r0, #0x4] - ldr r0, [sp, #0x4] - add r0, r0, r11, lsr #0x3 - str r0, [sp, #0x2c] - ldr r0, [sp, #0x20] - strb r0, [sp, #0x30] - strb r0, [sp, #0x31] - add r0, sp, #0x2c - bl FUN_020B76B0 - ldr r0, [sp, #0x0] - cmp r0, r10 - mov r5, r0 - bhs _020B6EE8 -_020B6EA0: - add r0, sp, #0x2c - mov r1, r6 - bl FUN_020B76B0 - cmp r0, #0x0 - beq _020B6EDC - cmp r5, #0x20 - mvncc r1, r4, lsl r5 - addcc r0, r9, r0 - andcc r1, r8, r1 - orrcc r8, r1, r0, lsl r5 - subcs r2, r5, #0x20 - mvncs r1, r4, lsl r2 - addcs r0, r9, r0 - andcs r1, r7, r1 - orrcs r7, r1, r0, lsl r2 -_020B6EDC: - add r5, r5, #0x8 - cmp r5, r10 - blo _020B6EA0 -_020B6EE8: - ldr r0, [sp, #0x14] - str r8, [r0, #0x0] - add r1, r0, #0x8 - str r7, [r0, #0x4] - ldr r0, [sp, #0x18] - str r1, [sp, #0x14] - cmp r1, r0 - ldr r0, [sp, #0x8] - add r11, r11, r0 - blo _020B6E58 - add sp, sp, #0x34 - ldmia sp!, {r4-r11,pc} - - arm_func_start FUN_020B6F18 -FUN_020B6F18: ; 0x020B6F18 - stmdb sp!, {r4-r6,lr} - mov lr, r0 - cmp r3, #0x8 - ldr r0, [sp, #0x14] - bne _020B6F4C - ldr r4, [sp, #0x10] - cmp r4, #0x8 - bne _020B6F4C - ldr r2, [sp, #0x18] - mov r1, lr - mov r2, r2, lsl #0x3 - bl MIi_CpuClearFast - ldmia sp!, {r4-r6,pc} -_020B6F4C: - ldr r4, [sp, #0x18] - cmp r4, #0x4 - bne _020B6FAC - mov r5, r1, lsl #0x2 - add r4, r5, r3, lsl #0x2 - mvn r3, #0x0 - rsb r4, r4, #0x20 - mov r3, r3, lsr r5 - add r1, r4, r1, lsl #0x2 - mov r3, r3, lsl r1 - ldr r1, [sp, #0x10] - add r5, lr, r2, lsl #0x2 - add r2, r5, r1, lsl #0x2 - and r6, r0, r3, lsr r4 - cmp r5, r2 - mvn r1, r3, lsr r4 - ldmcsia sp!, {r4-r6,pc} -_020B6F90: - ldr r0, [r5, #0x0] - and r0, r0, r1 - orr r0, r6, r0 - str r0, [r5], #0x4 - cmp r5, r2 - blo _020B6F90 - ldmia sp!, {r4-r6,pc} -_020B6FAC: - mov r12, r1, lsl #0x3 - add r1, r12, r3, lsl #0x3 - rsb r1, r1, #0x40 - mvn r3, #0x0 - cmp r1, #0x20 - mov r5, r3, lsr r12 - subcs r4, r1, #0x20 - addcs r3, r12, r4 - movcs r3, r5, lsl r3 - movcs r3, r3, lsr r4 - movcc r3, r5, lsl r12 - mvn r4, #0x0 - add r5, lr, r2, lsl #0x3 - cmp r12, #0x20 - mov r4, r4, lsl r1 - subcs r12, r12, #0x20 - addcs r1, r12, r1 - movcs r1, r4, lsr r1 - movcs r6, r1, lsl r12 - movcc r6, r4, lsr r1 - ldr r1, [sp, #0x10] - and lr, r0, r3 - add r4, r5, r1, lsl #0x3 - cmp r5, r4 - and r12, r0, r6 - mvn r2, r3 - mvn r1, r6 - ldmcsia sp!, {r4-r6,pc} -_020B701C: - ldr r0, [r5, #0x0] - and r0, r0, r2 - orr r0, lr, r0 - str r0, [r5, #0x0] - ldr r0, [r5, #0x4] - and r0, r0, r1 - orr r0, r12, r0 - str r0, [r5, #0x4] - add r5, r5, #0x8 - cmp r5, r4 - blo _020B701C - ldmia sp!, {r4-r6,pc} - - arm_func_start FUN_020B704C -FUN_020B704C: ; 0x020B704C - ldrb r3, [r0, #0x1] - ldr r2, _020B7064 ; =UNK_020FF990 - ldrb r1, [r0, #0x0] - add r0, r2, r3, lsl #0x4 - ldr r0, [r0, r1, lsl #0x2] - bx lr - .balign 4 -_020B7064: .word UNK_020FF990 - - arm_func_start FUN_020B7068 -FUN_020B7068: ; 0x020B7068 - stmdb sp!, {r4-r11,lr} - sub sp, sp, #0x4 - ldr fp, _020B7164 ; =UNK_020FF970 - mov r9, #0x0 - mov r10, #0x3 - mvn r7, #0x0 -_020B7080: - ldr r4, [sp, #0x2c] - ldr r6, [sp, #0x28] - and r12, r3, r7, lsl r4 - cmp r12, r1 - mov r8, r7, lsl r6 - mov r5, r7, lsl r4 - and lr, r2, r7, lsl r6 - bhi _020B70D0 - mla r9, r2, r12, r9 - cmp lr, r0 - movhi r2, lr - subhi r1, r1, r12 - subhi r3, r3, r12 - bhi _020B7118 - sub r3, r3, r12 - mla r9, lr, r3, r9 - sub r0, r0, lr - sub r1, r1, r12 - sub r2, r2, lr - b _020B7118 -_020B70D0: - cmp lr, r0 - mlals r9, lr, r12, r9 - mvn r3, r5 - movls r3, r12 - subls r0, r0, lr - subls r2, r2, lr - bls _020B7118 - and r2, r1, r5 - mla r5, lr, r2, r9 - and r2, r0, r8 - and r1, r1, r3 - add r2, r5, r2, lsl r4 - mvn r3, r8 - add r1, r2, r1, lsl r6 - and r0, r0, r3 - add sp, sp, #0x4 - add r0, r1, r0 - ldmia sp!, {r4-r11,pc} -_020B7118: - cmp r2, #0x8 - movlt r4, r2 - movge r5, r10 - clzlt r4, r4 - rsblt r5, r4, #0x1f - cmp r3, #0x8 - movge r4, r10 - movlt r4, r3 - clzlt r4, r4 - rsblt r4, r4, #0x1f - add r4, r11, r4, lsl #0x3 - add r6, r4, r5, lsl #0x1 - ldrb r5, [r4, r5, lsl #0x1] - ldrb r4, [r6, #0x1] - str r5, [sp, #0x28] - str r4, [sp, #0x2c] - b _020B7080 - add sp, sp, #0x4 - ldmia sp!, {r4-r11,pc} - .balign 4 -_020B7164: .word UNK_020FF970 - - arm_func_start FUN_020B7168 -FUN_020B7168: ; 0x020B7168 - stmdb sp!, {r4-r7,lr} - sub sp, sp, #0xc - ldr r12, [sp, #0x28] - mov r7, r0 - mov r6, r1 - mov r5, r2 - mov r4, r3 - ands r0, r12, #0x100 - beq _020B71AC - ldr r0, [r7, #0x4] - ldr r1, [r7, #0xc] - ldr r2, [sp, #0x2c] - bl FUN_020B5B54 - ldr r1, [sp, #0x20] - sub r0, r1, r0 - add r5, r5, r0 - b _020B71E4 -_020B71AC: - ands r0, r12, #0x80 - beq _020B71E4 - ldr r0, [r7, #0x4] - ldr r1, [r7, #0xc] - ldr r2, [sp, #0x2c] - bl FUN_020B5B54 - ldr r2, [sp, #0x20] - add r1, r0, #0x1 - add r0, r2, #0x1 - add r0, r0, r0, lsr #0x1f - mov r2, r0, asr #0x1 - add r0, r1, r1, lsr #0x1f - sub r0, r2, r0, asr #0x1 - add r5, r5, r0 -_020B71E4: - ldr r1, [sp, #0x24] - ldr r0, [sp, #0x28] - str r1, [sp, #0x0] - ldr r12, [sp, #0x2c] - str r0, [sp, #0x4] - mov r0, r7 - mov r1, r6 - mov r2, r5 - mov r3, r4 - str r12, [sp, #0x8] - bl FUN_020B72C4 - add sp, sp, #0xc - ldmia sp!, {r4-r7,pc} - - arm_func_start FUN_020B7218 -FUN_020B7218: ; 0x020B7218 - stmdb sp!, {r4-r8,lr} - sub sp, sp, #0x18 - ldr r4, [sp, #0x34] - mov r8, r0 - str r4, [sp, #0x0] - mov r7, r1 - mov r6, r2 - mov r5, r3 - ldr r4, [sp, #0x30] - ldr r1, [r8, #0x4] - ldr r2, [r8, #0x8] - ldr r3, [r8, #0xc] - add r0, sp, #0xc - bl FUN_020B5ABC - ands r0, r4, #0x10 - ldrne r0, [sp, #0xc] - addne r0, r0, #0x1 - addne r0, r0, r0, lsr #0x1f - subne r7, r7, r0, asr #0x1 - bne _020B7274 - ands r0, r4, #0x20 - ldrne r0, [sp, #0xc] - subne r7, r7, r0 -_020B7274: - ands r0, r4, #0x2 - ldrne r0, [sp, #0x10] - addne r0, r0, #0x1 - addne r0, r0, r0, lsr #0x1f - subne r6, r6, r0, asr #0x1 - bne _020B7298 - ands r0, r4, #0x4 - ldrne r0, [sp, #0x10] - subne r6, r6, r0 -_020B7298: - str r5, [sp, #0x0] - ldr r0, [sp, #0x34] - str r4, [sp, #0x4] - str r0, [sp, #0x8] - ldr r3, [sp, #0xc] - mov r0, r8 - mov r1, r7 - mov r2, r6 - bl FUN_020B72C4 - add sp, sp, #0x18 - ldmia sp!, {r4-r8,pc} - - arm_func_start FUN_020B72C4 -FUN_020B72C4: ; 0x020B72C4 - stmdb sp!, {r4-r11,lr} - sub sp, sp, #0x14 - mov r10, r0 - ldr r4, [r10, #0x4] - ldr r0, [sp, #0x40] - ldr r4, [r4, #0x0] - ldr r5, [r10, #0xc] - ldrsb r4, [r4, #0x1] - cmp r0, #0x0 - mov r9, r1 - str r0, [sp, #0xc] - ldr r0, [sp, #0x38] - mov r8, r2 - str r0, [sp, #0x38] - mov r7, r3 - add r6, r5, r4 - addeq sp, sp, #0x14 - ldmeqia sp!, {r4-r11,pc} - add r0, r7, #0x1 - ldr r1, [sp, #0x3c] - add r0, r0, r0, lsr #0x1f - mov r0, r0, asr #0x1 - and r5, r1, #0x800 - and r11, r1, #0x400 - str r0, [sp, #0x8] - mov r4, #0x0 -_020B732C: - mov r1, r9 - cmp r5, #0x0 - beq _020B7358 - ldr r0, [r10, #0x4] - ldr r1, [r10, #0x8] - ldr r2, [sp, #0xc] - mov r3, r4 - bl FUN_020B5BC8 - sub r0, r7, r0 - add r1, r9, r0 - b _020B7388 -_020B7358: - cmp r11, #0x0 - beq _020B7388 - ldr r0, [r10, #0x4] - ldr r1, [r10, #0x8] - ldr r2, [sp, #0xc] - mov r3, r4 - bl FUN_020B5BC8 - add r0, r0, #0x1 - add r1, r0, r0, lsr #0x1f - ldr r0, [sp, #0x8] - sub r0, r0, r1, asr #0x1 - add r1, r9, r0 -_020B7388: - ldr r2, [sp, #0xc] - add r3, sp, #0xc - str r2, [sp, #0x0] - str r3, [sp, #0x4] - ldr r3, [sp, #0x38] - mov r0, r10 - mov r2, r8 - bl FUN_020B73C0 - ldr r0, [sp, #0xc] - add r8, r8, r6 - cmp r0, #0x0 - bne _020B732C - add sp, sp, #0x14 - ldmia sp!, {r4-r11,pc} - - arm_func_start FUN_020B73C0 -FUN_020B73C0: ; 0x020B73C0 - stmdb sp!, {r4-r11,lr} - sub sp, sp, #0xc - mov r10, r0 - ldr r6, [r10, #0x8] - ldr r5, [r10, #0x4] - ldr r4, [sp, #0x30] - add r0, sp, #0x8 - str r4, [sp, #0x8] - ldr r4, [r5, #0x4] - mov r9, r1 - mov r8, r2 - mov r7, r3 - blx r4 - cmp r0, #0x0 - beq _020B743C - add r11, sp, #0x8 -_020B7400: - cmp r0, #0xa - beq _020B743C - str r7, [sp, #0x0] - str r0, [sp, #0x4] - ldr r0, [r10, #0x0] - mov r1, r5 - mov r2, r9 - mov r3, r8 - bl FUN_020B63CC - add r1, r9, r0 - mov r0, r11 - add r9, r1, r6 - blx r4 - cmp r0, #0x0 - bne _020B7400 -_020B743C: - ldr r1, [sp, #0x34] - cmp r1, #0x0 - addeq sp, sp, #0xc - ldmeqia sp!, {r4-r11,pc} - cmp r0, #0xa - ldreq r1, [sp, #0x8] - ldr r0, [sp, #0x34] - movne r1, #0x0 - str r1, [r0, #0x0] - add sp, sp, #0xc - ldmia sp!, {r4-r11,pc} - - arm_func_start FUN_020B7468 -FUN_020B7468: ; 0x020B7468 - stmdb sp!, {r4-r6,lr} - ldrh r2, [r0, #0xc] - ldrh r3, [r0, #0xe] - mov r1, #0x0 - add r2, r0, r2 - cmp r3, #0x0 - ldmleia sp!, {r4-r6,pc} - ldr r3, _020B7548 ; =0x46494E46 - ldr ip, _020B754C ; =0x43574448 - ldr r4, _020B7550 ; =0x434D4150 - ldr lr, _020B7554 ; =0x43474C50 -_020B7494: - ldr r5, [r2, #0x0] - cmp r5, r4 - bhi _020B74B0 - cmp r5, r4 - bhs _020B7518 - cmp r5, lr - b _020B752C -_020B74B0: - cmp r5, r12 - bhi _020B74C4 - cmp r5, r12 - beq _020B7500 - b _020B752C -_020B74C4: - cmp r5, r3 - bne _020B752C - add r6, r2, #0x8 - ldr r5, [r6, #0x8] - add r5, r5, r0 - str r5, [r6, #0x8] - ldr r5, [r6, #0xc] - cmp r5, #0x0 - addne r5, r5, r0 - strne r5, [r6, #0xc] - ldr r5, [r6, #0x10] - cmp r5, #0x0 - addne r5, r5, r0 - strne r5, [r6, #0x10] - b _020B752C -_020B7500: - add r6, r2, #0x8 - ldr r5, [r6, #0x4] - cmp r5, #0x0 - addne r5, r5, r0 - strne r5, [r6, #0x4] - b _020B752C -_020B7518: - add r6, r2, #0x8 - ldr r5, [r6, #0x8] - cmp r5, #0x0 - addne r5, r5, r0 - strne r5, [r6, #0x8] -_020B752C: - ldrh r5, [r0, #0xe] - ldr r6, [r2, #0x4] - add r1, r1, #0x1 - cmp r1, r5 - add r2, r2, r6 - blt _020B7494 - ldmia sp!, {r4-r6,pc} - .balign 4 -_020B7548: .word 0x46494E46 -_020B754C: .word 0x43574448 -_020B7550: .word 0x434D4150 -_020B7554: .word 0x43474C50 - - arm_func_start FUN_020B7558 -FUN_020B7558: ; 0x020B7558 - stmdb sp!, {r4-r6,lr} - movs r6, r0 - mov r5, r1 - beq _020B75C8 - cmp r6, #0x0 - beq _020B7584 - ldr r1, [r6, #0x0] - ldr r0, _020B76A8 ; =0x4E465452 - cmp r1, r0 - moveq r0, #0x1 - beq _020B7588 -_020B7584: - mov r0, #0x0 -_020B7588: - cmp r0, #0x0 - movne r0, #0x1 - moveq r0, #0x0 - cmp r0, #0x0 - beq _020B75CC - cmp r6, #0x0 - beq _020B75B4 - ldrh r0, [r6, #0x6] - cmp r0, #0x100 - movcs r0, #0x1 - bhs _020B75B8 -_020B75B4: - mov r0, #0x0 -_020B75B8: - cmp r0, #0x0 - movne r0, #0x1 - moveq r0, #0x0 - b _020B75CC -_020B75C8: - mov r0, #0x0 -_020B75CC: - cmp r0, #0x0 - movne r4, #0x0 - bne _020B7654 - cmp r6, #0x0 - beq _020B7640 - cmp r6, #0x0 - beq _020B75FC - ldr r1, [r6, #0x0] - ldr r0, _020B76A8 ; =0x4E465452 - cmp r1, r0 - moveq r0, #0x1 - beq _020B7600 -_020B75FC: - mov r0, #0x0 -_020B7600: - cmp r0, #0x0 - movne r0, #0x1 - moveq r0, #0x0 - cmp r0, #0x0 - beq _020B7644 - cmp r6, #0x0 - beq _020B762C - ldrh r0, [r6, #0x6] - cmp r0, #0x1 - movcs r0, #0x1 - bhs _020B7630 -_020B762C: - mov r0, #0x0 -_020B7630: - cmp r0, #0x0 - movne r0, #0x1 - moveq r0, #0x0 - b _020B7644 -_020B7640: - mov r0, #0x0 -_020B7644: - cmp r0, #0x0 - movne r4, #0x1 - bne _020B7654 - bl OS_Terminate -_020B7654: - mov r0, r6 - bl FUN_020B7468 - ldr r1, _020B76AC ; =0x46494E46 - mov r0, r6 - bl FUN_020B01F8 - cmp r0, #0x0 - moveq r0, #0x0 - streq r0, [r5, #0x0] - ldmeqia sp!, {r4-r6,pc} - add r0, r0, #0x8 - str r0, [r5, #0x0] - cmp r4, #0x0 - beq _020B76A0 - ldr r2, [r5, #0x0] - mov r1, #0x0 - ldrsb r0, [r2, #0x6] - strb r0, [r2, #0x7] - ldr r0, [r5, #0x0] - strb r1, [r0, #0x6] -_020B76A0: - add r0, r4, #0x1 - ldmia sp!, {r4-r6,pc} - .balign 4 -_020B76A8: .word 0x4E465452 -_020B76AC: .word 0x46494E46 - - arm_func_start FUN_020B76B0 -FUN_020B76B0: - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - ldrsb r2, [r0, #0x4] - ldrb r12, [r0, #0x5] - mov r4, r1 - cmp r2, r4 - subge r1, r2, r4 - movge r5, r12, lsr r1 - strgeb r1, [r0, #0x4] - bge _020B7704 - ldr r3, [r0, #0x0] - sub r1, r4, r2 - add r2, r3, #0x1 - str r2, [r0, #0x0] - ldrb r2, [r3, #0x0] - mov r5, r12, lsl r1 - strb r2, [r0, #0x5] - mov r2, #0x8 - strb r2, [r0, #0x4] - bl FUN_020B76B0 - orr r5, r0, r5 -_020B7704: - rsb r0, r4, #0x8 - mov r1, #0xff - and r0, r5, r1, asr r0 - add sp, sp, #0x4 - ldmia sp!, {r4-r5,pc} - - arm_func_start FUN_020B7718 -FUN_020B7718: ; 0x020B7718 - ldr r1, [r0, #0x0] - ldrh r2, [r1], #0x2 - str r1, [r0, #0x0] - mov r0, r2 - bx lr - - arm_func_start FUN_020B772C -FUN_020B772C: ; 0x020B772C - stmdb sp!, {r4-r7,lr} - sub sp, sp, #0x4 - mov r6, r0 - ldrb r0, [r6, #0x9] - mov r5, #0x0 - cmp r0, #0x0 - addls sp, sp, #0x4 - ldmlsia sp!, {r4-r7,pc} - add r4, r6, #0x8 -_020B7750: - ldrh r0, [r6, #0xe] - ldrh r1, [r4, r0] - add r0, r4, r0 - mla r0, r1, r5, r0 - ldr r0, [r0, #0x4] - add r7, r6, r0 - mov r0, r7 - bl FUN_020B79A4 - mov r0, r7 - bl FUN_020B780C - ldrb r0, [r6, #0x9] - add r5, r5, #0x1 - cmp r5, r0 - blo _020B7750 - add sp, sp, #0x4 - ldmia sp!, {r4-r7,pc} - - arm_func_start FUN_020B7790 -FUN_020B7790: ; 0x020B7790 - stmdb sp!, {r4-r9,lr} - sub sp, sp, #0x4 - mov r8, r0 - ldrb r0, [r8, #0x9] - mov r7, r1 - mov r5, #0x1 - cmp r0, #0x0 - mov r6, #0x0 - bls _020B7800 - add r4, r8, #0x8 -_020B77B8: - ldrh r0, [r8, #0xe] - mov r1, r7 - ldrh r2, [r4, r0] - add r0, r4, r0 - mla r0, r2, r6, r0 - ldr r0, [r0, #0x4] - add r9, r8, r0 - mov r0, r9 - bl FUN_020B7A04 - and r5, r5, r0 - mov r0, r9 - mov r1, r7 - bl FUN_020B7864 - ldrb r1, [r8, #0x9] - add r6, r6, #0x1 - and r5, r5, r0 - cmp r6, r1 - blo _020B77B8 -_020B7800: - mov r0, r5 - add sp, sp, #0x4 - ldmia sp!, {r4-r9,pc} - - arm_func_start FUN_020B780C -FUN_020B780C: ; 0x020B780C - ldr r2, [r0, #0x8] - mov r1, #0x0 - add r2, r0, r2 - ldrh r0, [r2, #0x2] - add r12, r2, r0 - ldrb r0, [r12, #0x1] - cmp r0, #0x0 - bxls lr -_020B782C: - ldrh r2, [r12, #0x6] - ldrh r0, [r12, r2] - add r2, r12, r2 - add r2, r2, #0x4 - mla r3, r0, r1, r2 - ldrb r0, [r3, #0x3] - add r1, r1, #0x1 - ands r2, r0, #0x1 - bicne r0, r0, #0x1 - strneb r0, [r3, #0x3] - ldrb r0, [r12, #0x1] - cmp r1, r0 - blo _020B782C - bx lr - - arm_func_start FUN_020B7864 -FUN_020B7864: ; 0x020B7864 - stmdb sp!, {r4-r10,lr} - ldr r2, [r0, #0x8] - mov r10, r1 - add r9, r0, r2 - ldrh r0, [r9, #0x2] - mov r6, #0x1 - mov r7, #0x0 - add r8, r9, r0 - ldrb r0, [r8, #0x1] - cmp r0, #0x0 - bls _020B7908 - mov r5, r7 - mov r4, r7 -_020B7898: - ldrh r1, [r8, #0x6] - ldrh r0, [r10, #0x34] - add r2, r8, r1 - ldrh r1, [r2, #0x2] - add r0, r10, r0 - add r1, r2, r1 - add r1, r1, r5 - bl FUN_020BC2A0 - movs r3, r0 - beq _020B78F0 - ldrh r1, [r8, #0x6] - ldrh r0, [r8, r1] - add r1, r8, r1 - add r1, r1, #0x4 - mla r1, r0, r7, r1 - ldrb r0, [r1, #0x3] - ands r0, r0, #0x1 - bne _020B78F4 - mov r0, r9 - mov r2, r10 - bl FUN_020B7910 - b _020B78F4 -_020B78F0: - mov r6, r4 -_020B78F4: - ldrb r0, [r8, #0x1] - add r7, r7, #0x1 - add r5, r5, #0x10 - cmp r7, r0 - blo _020B7898 -_020B7908: - mov r0, r6 - ldmia sp!, {r4-r10,pc} - - arm_func_start FUN_020B7910 -FUN_020B7910: - stmdb sp!, {r4-r6,lr} - ldrh r5, [r1, #0x0] - ldr r2, [r2, #0x2c] - ldrh r4, [r3, #0x2] - mov r2, r2, lsl #0x10 - add r12, r0, r5 - mov r5, r2, lsr #0x10 - ands r2, r4, #0x1 - ldrh r4, [r3, #0x0] - moveq r3, r5, lsl #0xf - moveq r5, r3, lsr #0x10 - moveq r2, r4, lsl #0xf - moveq r4, r2, lsr #0x10 - ldrb r3, [r1, #0x2] - mov r2, #0x0 - cmp r3, #0x0 - bls _020B7994 - add r3, r4, r5 - mov r3, r3, lsl #0x10 - add r6, r0, #0x4 - mov r4, r3, lsr #0x10 -_020B7964: - ldrh r5, [r0, #0xa] - ldrb r3, [r12, r2] - add r2, r2, #0x1 - ldrh lr, [r6, r5] - add r5, r6, r5 - mla r3, lr, r3, r5 - ldr r3, [r3, #0x4] - add r3, r0, r3 - strh r4, [r3, #0x1c] - ldrb r3, [r1, #0x2] - cmp r2, r3 - blo _020B7964 -_020B7994: - ldrb r0, [r1, #0x3] - orr r0, r0, #0x1 - strb r0, [r1, #0x3] - ldmia sp!, {r4-r6,pc} - - arm_func_start FUN_020B79A4 -FUN_020B79A4: ; 0x020B79A4 - stmdb sp!, {r4-r6,lr} - ldr r2, [r0, #0x8] - mov r4, #0x0 - ldrh r1, [r0, r2] - add r6, r0, r2 - add r5, r6, r1 - ldrb r0, [r5, #0x1] - cmp r0, #0x0 - ldmlsia sp!, {r4-r6,pc} -_020B79C8: - ldrh r1, [r5, #0x6] - ldrh r0, [r5, r1] - add r1, r5, r1 - add r1, r1, #0x4 - mla r1, r0, r4, r1 - ldrb r0, [r1, #0x3] - ands r0, r0, #0x1 - beq _020B79F0 - mov r0, r6 - bl FUN_020B7AB8 -_020B79F0: - ldrb r0, [r5, #0x1] - add r4, r4, #0x1 - cmp r4, r0 - blo _020B79C8 - ldmia sp!, {r4-r6,pc} - - arm_func_start FUN_020B7A04 -FUN_020B7A04: ; 0x020B7A04 - stmdb sp!, {r4-r11,lr} - sub sp, sp, #0x4 - ldr r2, [r0, #0x8] - mov r10, r1 - ldrh r1, [r0, r2] - add r9, r0, r2 - mov r11, #0x1 - add r8, r9, r1 - ldrb r0, [r8, #0x1] - mov r7, #0x0 - cmp r0, #0x0 - bls _020B7AAC - mov r6, r7 - mov r4, r7 - add r5, r10, #0x3c -_020B7A40: - ldrh r1, [r8, #0x6] - mov r0, r5 - add r2, r8, r1 - ldrh r1, [r2, #0x2] - add r1, r2, r1 - add r1, r1, r6 - bl FUN_020BC2A0 - movs r3, r0 - beq _020B7A94 - ldrh r1, [r8, #0x6] - ldrh r0, [r8, r1] - add r1, r8, r1 - add r1, r1, #0x4 - mla r1, r0, r7, r1 - ldrb r0, [r1, #0x3] - ands r0, r0, #0x1 - bne _020B7A98 - mov r0, r9 - mov r2, r10 - bl FUN_020B7B40 - b _020B7A98 -_020B7A94: - mov r11, r4 -_020B7A98: - ldrb r0, [r8, #0x1] - add r7, r7, #0x1 - add r6, r6, #0x10 - cmp r7, r0 - blo _020B7A40 -_020B7AAC: - mov r0, r11 - add sp, sp, #0x4 - ldmia sp!, {r4-r11,pc} - - arm_func_start FUN_020B7AB8 -FUN_020B7AB8: ; 0x020B7AB8 - stmdb sp!, {r4-r7,lr} - sub sp, sp, #0x4 - ldrh r4, [r1, #0x0] - ldrb r2, [r1, #0x2] - mov r3, #0x0 - add r12, r0, r4 - cmp r2, #0x0 - bls _020B7B28 - add r2, r0, #0x4 - mov r5, #0x1000 - ldr lr, _020B7B3C ; =0xC00F0000 -_020B7AE4: - ldrh r7, [r0, #0xa] - ldrb r4, [r12, r3] - add r3, r3, #0x1 - ldrh r6, [r2, r7] - add r7, r2, r7 - mla r4, r6, r4, r7 - ldr r4, [r4, #0x4] - add r6, r0, r4 - ldr r4, [r6, #0x14] - and r4, r4, lr - str r4, [r6, #0x14] - str r5, [r6, #0x24] - ldr r4, [r6, #0x24] - str r4, [r6, #0x28] - ldrb r4, [r1, #0x2] - cmp r3, r4 - blo _020B7AE4 -_020B7B28: - ldrb r0, [r1, #0x3] - bic r0, r0, #0x1 - strb r0, [r1, #0x3] - add sp, sp, #0x4 - ldmia sp!, {r4-r7,pc} - .balign 4 -_020B7B3C: .word 0xC00F0000 - - arm_func_start FUN_020B7B40 -FUN_020B7B40: - stmdb sp!, {r4-r11,lr} - sub sp, sp, #0xc - mov r11, r1 - mov r9, r3 - ldr r1, [r9, #0x0] - mov r10, r0 - and r0, r1, #0x1c000000 - cmp r0, #0x14000000 - ldrh r3, [r11, #0x0] - ldrne r1, [r2, #0x8] - mov r8, #0x0 - add r0, r10, r3 - str r0, [sp, #0x4] - ldrne r0, _020B7C50 ; =0x0000FFFF - andne r0, r1, r0 - strne r0, [sp, #0x0] - ldreq r1, [r2, #0x18] - ldreq r0, _020B7C50 ; =0x0000FFFF - andeq r0, r1, r0 - streq r0, [sp, #0x0] - ldrb r0, [r11, #0x2] - cmp r0, #0x0 - bls _020B7C3C - mov r4, #0x1000 - add r5, r10, #0x4 -_020B7BA4: - ldrh r6, [r10, #0xa] - ldr r0, [sp, #0x4] - ldr r1, [r9, #0x0] - ldrb r2, [r0, r8] - ldrh r3, [r5, r6] - ldr r0, [sp, #0x0] - add r6, r5, r6 - add r0, r1, r0 - mla r1, r3, r2, r6 - ldr r1, [r1, #0x4] - add r6, r10, r1 - ldr r1, [r6, #0x14] - orr r0, r1, r0 - str r0, [r6, #0x14] - ldr r3, [r9, #0x4] - ldr r0, _020B7C54 ; =0x000007FF - ldrh r1, [r6, #0x20] - and r2, r3, r0 - and r7, r0, r3, lsr #0xb - cmp r2, r1 - moveq r0, r4 - beq _020B7C08 - mov r0, r2, lsl #0xc - mov r1, r1, lsl #0xc - bl FX_Div -_020B7C08: - str r0, [r6, #0x24] - ldrh r1, [r6, #0x22] - cmp r7, r1 - moveq r0, r4 - beq _020B7C28 - mov r0, r7, lsl #0xc - mov r1, r1, lsl #0xc - bl FX_Div -_020B7C28: - str r0, [r6, #0x28] - ldrb r0, [r11, #0x2] - add r8, r8, #0x1 - cmp r8, r0 - blo _020B7BA4 -_020B7C3C: - ldrb r0, [r11, #0x3] - orr r0, r0, #0x1 - strb r0, [r11, #0x3] - add sp, sp, #0xc - ldmia sp!, {r4-r11,pc} - .balign 4 -_020B7C50: .word 0x0000FFFF -_020B7C54: .word 0x000007FF - - arm_func_start FUN_020B7C58 -FUN_020B7C58: ; 0x020B7C58 - ldrh r2, [r0, #0x32] - mov r1, #0x0 - bic r2, r2, #0x1 - strh r2, [r0, #0x32] - ldr r2, [r0, #0x2c] - str r1, [r0, #0x2c] - mov r0, r2 - bx lr - - arm_func_start FUN_020B7C78 -FUN_020B7C78: ; 0x020B7C78 - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - movs r4, r1 - mov r5, r0 - beq _020B7C90 - bl GX_BeginLoadTexPltt -_020B7C90: - ldrh r2, [r5, #0x30] - ldr r0, [r5, #0x38] - ldr r3, [r5, #0x2c] - ldr r1, _020B7CD8 ; =0x0000FFFF - add r0, r5, r0 - and r1, r3, r1 - mov r1, r1, lsl #0x3 - mov r2, r2, lsl #0x3 - bl GX_LoadTexPltt - ldrh r0, [r5, #0x32] - cmp r4, #0x0 - addeq sp, sp, #0x4 - orr r0, r0, #0x1 - strh r0, [r5, #0x32] - ldmeqia sp!, {r4-r5,pc} - bl GX_EndLoadTexPltt - add sp, sp, #0x4 - ldmia sp!, {r4-r5,pc} - .balign 4 -_020B7CD8: .word 0x0000FFFF - - arm_func_start FUN_020B7CDC -FUN_020B7CDC: ; 0x020B7CDC - str r1, [r0, #0x2c] - bx lr - - arm_func_start FUN_020B7CE4 -FUN_020B7CE4: ; 0x020B7CE4 - ldrh r0, [r0, #0x30] - mov r0, r0, lsl #0x3 - bx lr - - arm_func_start FUN_020B7CF0 -FUN_020B7CF0: ; 0x020B7CF0 - ldrh r12, [r0, #0x10] - mov r3, #0x0 - bic r12, r12, #0x1 - strh r12, [r0, #0x10] - ldrh r12, [r0, #0x20] - bic r12, r12, #0x1 - strh r12, [r0, #0x20] - ldr r12, [r0, #0x8] - str r12, [r1, #0x0] - str r3, [r0, #0x8] - ldr r1, [r0, #0x18] - str r1, [r2, #0x0] - str r3, [r0, #0x18] - bx lr - - arm_func_start FUN_020B7D28 -FUN_020B7D28: ; 0x020B7D28 - stmdb sp!, {r4-r9,lr} - sub sp, sp, #0x4 - movs r8, r1 - mov r9, r0 - beq _020B7D40 - bl GX_BeginLoadTex -_020B7D40: - ldrh r0, [r9, #0xc] - movs r2, r0, lsl #0x3 - beq _020B7D74 - ldr r1, [r9, #0x8] - ldr r0, _020B7DF4 ; =0x0000FFFF - ldr r3, [r9, #0x14] - and r1, r1, r0 - add r0, r9, r3 - mov r1, r1, lsl #0x3 - bl GX_LoadTex - ldrh r0, [r9, #0x10] - orr r0, r0, #0x1 - strh r0, [r9, #0x10] -_020B7D74: - ldrh r0, [r9, #0x1c] - movs r7, r0, lsl #0x3 - beq _020B7DDC - ldr r1, [r9, #0x18] - ldr r0, _020B7DF4 ; =0x0000FFFF - ldr r3, [r9, #0x24] - and r4, r1, r0 - mov r5, r4, lsl #0x3 - ldr r6, [r9, #0x28] - mov r1, r5 - mov r2, r7 - add r0, r9, r3 - add r6, r9, r6 - bl GX_LoadTex - ldr r0, _020B7DF8 ; =0x0001FFFF - and r1, r5, #0x40000 - and r0, r0, r4, lsl #0x3 - mov r0, r0, lsr #0x1 - add r2, r0, #0x20000 - mov r0, r6 - add r1, r2, r1, lsr #0x2 - mov r2, r7, lsr #0x1 - bl GX_LoadTex - ldrh r0, [r9, #0x20] - orr r0, r0, #0x1 - strh r0, [r9, #0x20] -_020B7DDC: - cmp r8, #0x0 - addeq sp, sp, #0x4 - ldmeqia sp!, {r4-r9,pc} - bl GX_EndLoadTex - add sp, sp, #0x4 - ldmia sp!, {r4-r9,pc} - .balign 4 -_020B7DF4: .word 0x0000FFFF -_020B7DF8: .word 0x0001FFFF - - arm_func_start FUN_020B7DFC -FUN_020B7DFC: ; 0x020B7DFC - cmp r1, #0x0 - strne r1, [r0, #0x8] - cmp r2, #0x0 - strne r2, [r0, #0x18] - bx lr - - arm_func_start FUN_020B7E10 -FUN_020B7E10: ; 0x020B7E10 - ldrh r0, [r0, #0x1c] - mov r0, r0, lsl #0x3 - bx lr - - arm_func_start FUN_020B7E1C -FUN_020B7E1C: ; 0x020B7E1C - ldrh r0, [r0, #0xc] - mov r0, r0, lsl #0x3 - bx lr - - arm_func_start FUN_020B7E28 -FUN_020B7E28: ; 0x020B7E28 - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - mov r5, r0 - add r0, r5, #0x8 - mov r4, r1 - bl FUN_020B7E88 - cmp r0, #0x0 - bne _020B7E74 - mov r1, r4 - add r0, r5, #0x10 - bl FUN_020B7E88 - cmp r0, #0x0 - bne _020B7E74 - mov r1, r4 - add r0, r5, #0x18 - bl FUN_020B7E88 - cmp r0, #0x0 - addeq sp, sp, #0x4 - ldmeqia sp!, {r4-r5,pc} -_020B7E74: - ldr r0, [r5, #0x0] - orr r0, r0, #0x10 - str r0, [r5, #0x0] - add sp, sp, #0x4 - ldmia sp!, {r4-r5,pc} - - arm_func_start FUN_020B7E88 -FUN_020B7E88: - ldr r2, [r0, #0x0] - cmp r2, #0x0 - moveq r0, #0x0 - bxeq lr - cmp r2, r1 - bne _020B7EB8 - ldr r3, [r2, #0x10] - mov r2, #0x0 - str r3, [r0, #0x0] - str r2, [r1, #0x10] - mov r0, #0x1 - bx lr -_020B7EB8: - ldr r3, [r2, #0x10] - cmp r3, #0x0 - beq _020B7EF4 -_020B7EC4: - cmp r3, r1 - bne _020B7EE4 - ldr r1, [r3, #0x10] - mov r0, #0x0 - str r1, [r2, #0x10] - str r0, [r3, #0x10] - mov r0, #0x1 - bx lr -_020B7EE4: - mov r2, r3 - ldr r3, [r3, #0x10] - cmp r3, #0x0 - bne _020B7EC4 -_020B7EF4: - mov r0, #0x0 - bx lr - - arm_func_start FUN_020B7EFC -FUN_020B7EFC: ; 0x020B7EFC - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - mov r4, r1 - ldr r2, [r4, #0x8] - mov r5, r0 - ldrb r0, [r2, #0x0] - cmp r0, #0x4a - beq _020B7F50 - cmp r0, #0x4d - beq _020B7F34 - cmp r0, #0x56 - beq _020B7F6C - add sp, sp, #0x4 - ldmia sp!, {r4-r5,pc} -_020B7F34: - add r0, r5, #0x3c - bl FUN_020B7F88 - mov r1, r4 - add r0, r5, #0x8 - bl FUN_020B7FF8 - add sp, sp, #0x4 - ldmia sp!, {r4-r5,pc} -_020B7F50: - add r0, r5, #0x44 - bl FUN_020B7F88 - mov r1, r4 - add r0, r5, #0x10 - bl FUN_020B7FF8 - add sp, sp, #0x4 - ldmia sp!, {r4-r5,pc} -_020B7F6C: - add r0, r5, #0x4c - bl FUN_020B7F88 - mov r1, r4 - add r0, r5, #0x18 - bl FUN_020B7FF8 - add sp, sp, #0x4 - ldmia sp!, {r4-r5,pc} - - arm_func_start FUN_020B7F88 -FUN_020B7F88: ; 0x020B7F88 - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - cmp r1, #0x0 - addeq sp, sp, #0x4 - ldmeqia sp!, {r4-r5,pc} - mov r3, #0x1 - mov r4, #0x0 -_020B7FA4: - ldrb r2, [r1, #0x19] - mov r5, r4 - cmp r2, #0x0 - ble _020B7FE4 -_020B7FB4: - add r2, r1, r5, lsl #0x1 - ldrh r2, [r2, #0x1a] - ands r2, r2, #0x100 - movne lr, r5, asr #0x5 - andne r2, r5, #0x1f - ldrne r12, [r0, lr, lsl #0x2] - add r5, r5, #0x1 - orrne r2, r12, r3, lsl r2 - strne r2, [r0, lr, lsl #0x2] - ldrb r2, [r1, #0x19] - cmp r5, r2 - blt _020B7FB4 -_020B7FE4: - ldr r1, [r1, #0x10] - cmp r1, #0x0 - bne _020B7FA4 - add sp, sp, #0x4 - ldmia sp!, {r4-r5,pc} - - arm_func_start FUN_020B7FF8 -FUN_020B7FF8: ; 0x020B7FF8 - ldr r12, [r0, #0x0] - cmp r12, #0x0 - streq r1, [r0, #0x0] - bxeq lr - ldr r3, [r12, #0x10] - cmp r3, #0x0 - bne _020B8058 - ldrb r3, [r12, #0x18] - ldrb r2, [r1, #0x18] - cmp r3, r2 - bls _020B8050 - ldr r2, [r1, #0x10] - mov r3, r1 - cmp r2, #0x0 - beq _020B8044 -_020B8034: - ldr r3, [r3, #0x10] - ldr r2, [r3, #0x10] - cmp r2, #0x0 - bne _020B8034 -_020B8044: - str r12, [r3, #0x10] - str r1, [r0, #0x0] - bx lr -_020B8050: - str r1, [r12, #0x10] - bx lr -_020B8058: - cmp r3, #0x0 - beq _020B80AC - ldrb r2, [r1, #0x18] -_020B8064: - ldrb r0, [r3, #0x18] - cmp r0, r2 - blo _020B809C - ldr r0, [r1, #0x10] - mov r2, r1 - cmp r0, #0x0 - beq _020B8090 -_020B8080: - ldr r2, [r2, #0x10] - ldr r0, [r2, #0x10] - cmp r0, #0x0 - bne _020B8080 -_020B8090: - str r1, [r12, #0x10] - str r3, [r2, #0x10] - bx lr -_020B809C: - mov r12, r3 - ldr r3, [r3, #0x10] - cmp r3, #0x0 - bne _020B8064 -_020B80AC: - str r1, [r12, #0x10] - bx lr - - arm_func_start FUN_020B80B4 -FUN_020B80B4: ; 0x020B80B4 - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - mov r5, r0 - mov r4, r1 - mov r1, r5 - mov r0, #0x0 - mov r2, #0x54 - bl MIi_CpuClear32 - ldr r0, _020B8104 ; =UNK_021065B4 - ldr r1, _020B8108 ; =UNK_021065B0 - ldr r2, [r0, #0x0] - ldr r0, _020B810C ; =UNK_021065AC - str r2, [r5, #0xc] - ldr r1, [r1, #0x0] - str r1, [r5, #0x14] - ldr r0, [r0, #0x0] - str r0, [r5, #0x1c] - str r4, [r5, #0x4] - add sp, sp, #0x4 - ldmia sp!, {r4-r5,pc} - .balign 4 -_020B8104: .word UNK_021065B4 -_020B8108: .word UNK_021065B0 -_020B810C: .word UNK_021065AC - - arm_func_start FUN_020B8110 -FUN_020B8110: ; 0x020B8110 - stmdb sp!, {r4-r7,lr} - sub sp, sp, #0x4 - mov r12, #0x0 - str r12, [r0, #0x0] - str r1, [r0, #0x8] - str r12, [r0, #0x10] - mov r4, #0x7f - strb r4, [r0, #0x18] - mov r4, #0x1000 - str r4, [r0, #0x4] - ldr lr, _020B81A4 ; =UNK_02106594 - str r3, [r0, #0x14] - ldr r6, [lr, #0x0] - cmp r6, #0x0 - addls sp, sp, #0x4 - ldmlsia sp!, {r4-r7,pc} - ldrb r7, [r1, #0x0] - ldr r4, _020B81A8 ; =UNK_021065B8 -_020B8158: - ldrb r3, [r4, r12, lsl #0x3] - mov r5, r12, lsl #0x3 - cmp r7, r3 - bne _020B8190 - add r3, r4, r5 - ldrh lr, [r1, #0x2] - ldrh r3, [r3, #0x2] - cmp lr, r3 - bne _020B8190 - ldr r3, _020B81AC ; =UNK_021065BC - ldr r3, [r3, r5] - blx r3 - add sp, sp, #0x4 - ldmia sp!, {r4-r7,pc} -_020B8190: - add r12, r12, #0x1 - cmp r12, r6 - blo _020B8158 - add sp, sp, #0x4 - ldmia sp!, {r4-r7,pc} - .balign 4 -_020B81A4: .word UNK_02106594 -_020B81A8: .word UNK_021065B8 -_020B81AC: .word UNK_021065BC - - arm_func_start FUN_020B81B0 -FUN_020B81B0: ; 0x020B81B0 - ldrb r0, [r0, #0x0] - cmp r0, #0x4a - beq _020B81E4 - cmp r0, #0x4d - beq _020B81D0 - cmp r0, #0x56 - beq _020B81E4 - b _020B81F8 -_020B81D0: - ldrb r0, [r1, #0x18] - mov r0, r0, lsl #0x1 - add r0, r0, #0x1c - bic r0, r0, #0x3 - bx lr -_020B81E4: - ldrb r0, [r1, #0x17] - mov r0, r0, lsl #0x1 - add r0, r0, #0x1c - bic r0, r0, #0x3 - bx lr -_020B81F8: - mov r0, #0x0 - bx lr - - arm_func_start FUN_020B8200 -FUN_020B8200: ; 0x020B8200 - cmp r0, #0x0 - ldrne ip, _020B8260 ; =UNK_021CED18 - ldrne r12, [r12, #0xa0] - andne r12, r12, #0xff - strne r12, [r0, #0x0] - cmp r1, #0x0 - ldrne r0, _020B8260 ; =UNK_021CED18 - ldrne r0, [r0, #0xa0] - movne r0, r0, lsr #0x8 - andne r0, r0, #0xff - strne r0, [r1, #0x0] - cmp r2, #0x0 - ldrne r0, _020B8260 ; =UNK_021CED18 - ldrne r0, [r0, #0xa0] - movne r0, r0, lsr #0x10 - andne r0, r0, #0xff - strne r0, [r2, #0x0] - cmp r3, #0x0 - ldrne r0, _020B8260 ; =UNK_021CED18 - ldrne r0, [r0, #0xa0] - movne r0, r0, lsr #0x18 - andne r0, r0, #0xff - strne r0, [r3, #0x0] - bx lr - .balign 4 -_020B8260: .word UNK_021CED18 - - arm_func_start FUN_020B8264 -FUN_020B8264: ; 0x020B8264 - stmdb sp!, {lr} - sub sp, sp, #0x4 - ldr r0, _020B829C ; =UNK_021CED18 - ldr r0, [r0, #0xfc] - ands r0, r0, #0x80 - bne _020B8290 - bl FUN_020B82E4 - ldr r0, _020B829C ; =UNK_021CED18 - ldr r1, [r0, #0xfc] - orr r1, r1, #0x80 - str r1, [r0, #0xfc] -_020B8290: - ldr r0, _020B82A0 ; =UNK_021CEE78 - add sp, sp, #0x4 - ldmia sp!, {pc} - .balign 4 -_020B829C: .word UNK_021CED18 -_020B82A0: .word UNK_021CEE78 - - arm_func_start FUN_020B82A4 -FUN_020B82A4: ; 0x020B82A4 - stmdb sp!, {lr} - sub sp, sp, #0x4 - ldr r0, _020B82DC ; =UNK_021CED18 - ldr r0, [r0, #0xfc] - ands r0, r0, #0x80 - bne _020B82D0 - bl FUN_020B82E4 - ldr r0, _020B82DC ; =UNK_021CED18 - ldr r1, [r0, #0xfc] - orr r1, r1, #0x80 - str r1, [r0, #0xfc] -_020B82D0: - ldr r0, _020B82E0 ; =UNK_021CEE48 - add sp, sp, #0x4 - ldmia sp!, {pc} - .balign 4 -_020B82DC: .word UNK_021CED18 -_020B82E0: .word UNK_021CEE48 - - arm_func_start FUN_020B82E4 -FUN_020B82E4: ; 0x020B82E4 - stmdb sp!, {lr} - sub sp, sp, #0x4 - ldr r0, _020B8330 ; =UNK_021CEDD4 - ldr r1, _020B8334 ; =UNK_021CED64 - ldr r2, _020B8338 ; =UNK_021CEE48 - bl MTX_Concat43 - ldr r3, _020B833C ; =UNK_021CED18 - ldr r0, _020B8338 ; =UNK_021CEE48 - ldr r2, [r3, #0xf4] - mov r1, r0 - str r2, [sp, #0x0] - ldr r2, [r3, #0xec] - ldr r3, [r3, #0xf0] - bl MTX_ScaleApply43 - ldr r0, _020B8338 ; =UNK_021CEE48 - ldr r1, _020B8340 ; =UNK_021CEE78 - bl MTX_Inverse43 - add sp, sp, #0x4 - ldmia sp!, {pc} - .balign 4 -_020B8330: .word UNK_021CEDD4 -_020B8334: .word UNK_021CED64 -_020B8338: .word UNK_021CEE48 -_020B833C: .word UNK_021CED18 -_020B8340: .word UNK_021CEE78 - - arm_func_start FUN_020B8344 -FUN_020B8344: ; 0x020B8344 - stmdb sp!, {lr} - sub sp, sp, #0x4 - ldr r0, _020B8384 ; =UNK_021CED18 - ldr r0, [r0, #0xfc] - ands r0, r0, #0x8 - bne _020B8378 - ldr r0, _020B8388 ; =UNK_021CED64 - ldr r1, _020B838C ; =UNK_021CEE18 - bl MTX_Inverse43 - ldr r0, _020B8384 ; =UNK_021CED18 - ldr r1, [r0, #0xfc] - orr r1, r1, #0x8 - str r1, [r0, #0xfc] -_020B8378: - ldr r0, _020B838C ; =UNK_021CEE18 - add sp, sp, #0x4 - ldmia sp!, {pc} - .balign 4 -_020B8384: .word UNK_021CED18 -_020B8388: .word UNK_021CED64 -_020B838C: .word UNK_021CEE18 - - arm_func_start FUN_020B8390 -FUN_020B8390: ; 0x020B8390 - orr r0, r0, r1, lsl #0x4 - - arm_func_start FUN_020B8394 -FUN_020B8394: ; 0x020B8394 - ldr r1, [sp, #0x4] - orr r0, r0, r2, lsl #0x6 - orr r0, r1, r0 - ldr r2, [sp, #0x0] - orr r1, r0, r3, lsl #0x18 - ldr r0, _020B83B8 ; =UNK_021CED18 - orr r1, r1, r2, lsl #0x10 - str r1, [r0, #0x9c] - bx lr - .balign 4 -_020B83B8: .word UNK_021CED18 - - arm_func_start FUN_020B83BC -FUN_020B83BC: ; 0x020B83BC - cmp r2, #0x0 - movne r2, #0x1 - orr r1, r0, r1, lsl #0x10 - moveq r2, #0x0 - ldr r0, _020B83DC ; =UNK_021CED18 - orr r1, r1, r2, lsl #0xf - str r1, [r0, #0x98] - bx lr - .balign 4 -_020B83DC: .word UNK_021CED18 - - arm_func_start FUN_020B83E0 -FUN_020B83E0: ; 0x020B83E0 - cmp r2, #0x0 - movne r2, #0x1 - orr r1, r0, r1, lsl #0x10 - moveq r2, #0x0 - ldr r0, _020B8400 ; =UNK_021CED18 - orr r1, r1, r2, lsl #0xf - str r1, [r0, #0x94] - bx lr - .balign 4 -_020B8400: .word UNK_021CED18 - - arm_func_start FUN_020B8404 -FUN_020B8404: ; 0x020B8404 - ldr r2, _020B8414 ; =UNK_021CEDC0 - orr r1, r1, r0, lsl #0x1e - str r1, [r2, r0, lsl #0x2] - bx lr - .balign 4 -_020B8414: .word UNK_021CEDC0 - - arm_func_start FUN_020B8418 -FUN_020B8418: ; 0x020B8418 - stmdb sp!, {r4,lr} - ldr ip, _020B8444 ; =0x000003FF - ldr lr, _020B8448 ; =UNK_021CED98 - and r4, r12, r1, asr #0x3 - and r1, r12, r2, asr #0x3 - and r2, r12, r3, asr #0x3 - orr r1, r4, r1, lsl #0xa - orr r1, r1, r2, lsl #0x14 - orr r1, r1, r0, lsl #0x1e - str r1, [lr, r0, lsl #0x2] - ldmia sp!, {r4,pc} - .balign 4 -_020B8444: .word 0x000003FF -_020B8448: .word UNK_021CED98 - - arm_func_start FUN_020B844C -FUN_020B844C: ; 0x020B844C - ldr r3, _020B846C ; =UNK_021CEE04 - ldmia r0, {r0-r2} - stmia r3, {r0-r2} - ldr r0, _020B8470 ; =UNK_021CED18 - ldr r1, [r0, #0xfc] - bic r1, r1, #0xa4 - str r1, [r0, #0xfc] - bx lr - .balign 4 -_020B846C: .word UNK_021CEE04 -_020B8470: .word UNK_021CED18 - - arm_func_start FUN_020B8474 -FUN_020B8474: ; 0x020B8474 - ldr r3, _020B8494 ; =UNK_021CEDF8 - ldmia r0, {r0-r2} - stmia r3, {r0-r2} - ldr r0, _020B8498 ; =UNK_021CED18 - ldr r1, [r0, #0xfc] - bic r1, r1, #0xa4 - str r1, [r0, #0xfc] - bx lr - .balign 4 -_020B8494: .word UNK_021CEDF8 -_020B8498: .word UNK_021CED18 - - arm_func_start FUN_020B849C -FUN_020B849C: ; 0x020B849C - stmdb sp!, {lr} - sub sp, sp, #0x4 - ldr r1, _020B84D4 ; =UNK_021CED18 - mov r2, #0x3e - ldr r0, [r1], #0x4 - bl FUN_020BB1C0 - ldr r0, _020B84D4 ; =UNK_021CED18 - ldr r1, [r0, #0xfc] - bic r1, r1, #0x1 - str r1, [r0, #0xfc] - bic r1, r1, #0x2 - str r1, [r0, #0xfc] - add sp, sp, #0x4 - ldmia sp!, {pc} - .balign 4 -_020B84D4: .word UNK_021CED18 - - arm_func_start FUN_020B84D8 -FUN_020B84D8: ; 0x020B84D8 - stmdb sp!, {r4-r9,lr} - sub sp, sp, #0x4 - ldr r8, _020B85F4 ; =0x17101610 - ldr r1, _020B85F8 ; =UNK_021CED18 - ldr r5, _020B85FC ; =0x32323232 - ldr r4, _020B8600 ; =0x60293130 - ldr r3, _020B8604 ; =0x33333333 - ldr r2, _020B8608 ; =0x002A1B19 - mov r7, #0x0 - mov r6, #0x2 - ldr r0, _020B860C ; =UNK_021CED64 - str r8, [r1, #0x0] - str r7, [r1, #0x4] - str r6, [r1, #0x48] - str r5, [r1, #0x7c] - str r4, [r1, #0x90] - str r3, [r1, #0xa4] - str r2, [r1, #0xb8] - bl MTX_Identity43_ - ldr r0, _020B8610 ; =UNK_021CED20 - bl MTX_Identity44_ - mov r2, r7 - ldr r1, _020B85F8 ; =UNK_021CED18 - ldr r7, _020B8614 ; =0x4210C210 - ldr r0, _020B8618 ; =0x40000200 - ldr lr, _020B861C ; =0x2D8B62D8 - ldr sb, _020B8620 ; =0x800001FF - ldr r8, _020B8624 ; =0xC0080000 - ldr r6, _020B8628 ; =0x001F008F - ldr r5, _020B862C ; =0xBFFF0000 - ldr r4, _020B8630 ; =0x00007FFF - ldr ip, _020B8634 ; =0x800003E0 - ldr r3, _020B8638 ; =0xC0007C00 - str r0, [r1, #0x84] - str lr, [r1, #0x80] - mov lr, #0x4000001f - ldr r0, _020B863C ; =UNK_021CEDD4 - str r9, [r1, #0x88] - str r8, [r1, #0x8c] - str r7, [r1, #0x94] - str r7, [r1, #0x98] - str r6, [r1, #0x9c] - str r5, [r1, #0xa0] - str r4, [r1, #0xa8] - str lr, [r1, #0xac] - str r12, [r1, #0xb0] - str r3, [r1, #0xb4] - str r2, [r1, #0xe0] - str r2, [r1, #0xe4] - str r2, [r1, #0xe8] - bl MTX_Identity33_ - mov r3, #0x1000 - ldr r0, _020B85F8 ; =UNK_021CED18 - mov r2, #0x0 - rsb r1, r3, #0x0 - str r3, [r0, #0xec] - str r3, [r0, #0xf0] - str r3, [r0, #0xf4] - str r2, [r0, #0xf8] - str r2, [r0, #0xfc] - str r2, [r0, #0x248] - str r2, [r0, #0x244] - str r2, [r0, #0x240] - str r2, [r0, #0x254] - str r2, [r0, #0x24c] - str r3, [r0, #0x250] - str r2, [r0, #0x25c] - str r2, [r0, #0x258] - str r1, [r0, #0x260] - add sp, sp, #0x4 - ldmia sp!, {r4-r9,pc} - .balign 4 -_020B85F4: .word 0x17101610 -_020B85F8: .word UNK_021CED18 -_020B85FC: .word 0x32323232 -_020B8600: .word 0x60293130 -_020B8604: .word 0x33333333 -_020B8608: .word 0x002A1B19 -_020B860C: .word UNK_021CED64 -_020B8610: .word UNK_021CED20 -_020B8614: .word 0x4210C210 -_020B8618: .word 0x40000200 -_020B861C: .word 0x2D8B62D8 -_020B8620: .word 0x800001FF -_020B8624: .word 0xC0080000 -_020B8628: .word 0x001F008F -_020B862C: .word 0xBFFF0000 -_020B8630: .word 0x00007FFF -_020B8634: .word 0x800003E0 -_020B8638: .word 0xC0007C00 -_020B863C: .word UNK_021CEDD4 - - arm_func_start FUN_020B8640 -FUN_020B8640: ; 0x020B8640 - stmdb sp!, {r4-r8,lr} - sub sp, sp, #0x8 - mov r7, r0 - mov r0, #0x0 - mov r6, r1 - str r0, [r7, #0x0] - add r4, sp, #0x0 - mov r5, r2, lsl #0x1 - mov r8, #0x1 -_020B8664: - add r1, r5, r6 - ldrh r2, [r1, #0x1a] - ands r1, r2, #0x100 - beq _020B869C - ldr r3, [r6, #0xc] - mov r0, r4 - mov r1, r6 - and r2, r2, #0xff - blx r3 - ldr r2, [r7, #0x0] - ldr r1, [sp, #0x0] - mov r0, r8 - orr r1, r2, r1 - str r1, [r7, #0x0] -_020B869C: - ldr r6, [r6, #0x10] - cmp r6, #0x0 - bne _020B8664 - add sp, sp, #0x8 - ldmia sp!, {r4-r8,pc} - - arm_func_start FUN_020B86B0 -FUN_020B86B0: ; 0x020B86B0 - stmdb sp!, {r4-r11,lr} - sub sp, sp, #0x5c - mov r9, r1 - ldr r3, [r9, #0x10] - mov r10, r0 - mov r8, r2 - cmp r3, #0x0 - bne _020B8704 - add r2, r9, r8, lsl #0x1 - ldrh r4, [r2, #0x1a] - and r2, r4, #0x300 - cmp r2, #0x100 - addne sp, sp, #0x5c - movne r0, #0x0 - ldmneia sp!, {r4-r11,pc} - ldr r3, [r9, #0xc] - and r2, r4, #0xff - blx r3 - add sp, sp, #0x5c - mov r0, #0x1 - ldmia sp!, {r4-r11,pc} -_020B8704: - mov r7, #0x0 - mov r3, r7 - mov r4, r9 - mov r2, r8, lsl #0x1 -_020B8714: - add r0, r2, r4 - ldrh r0, [r0, #0x1a] - and r0, r0, #0x300 - cmp r0, #0x100 - ldreq r0, [r4, #0x4] - moveq r1, r4 - ldr r4, [r4, #0x10] - addeq r7, r7, r0 - addeq r3, r3, #0x1 - cmp r4, #0x0 - bne _020B8714 - cmp r7, #0x0 - addeq sp, sp, #0x5c - moveq r0, #0x0 - ldmeqia sp!, {r4-r11,pc} - cmp r3, #0x1 - bne _020B877C - add r0, r1, r8, lsl #0x1 - ldrh r2, [r0, #0x1a] - ldr r3, [r1, #0xc] - mov r0, r10 - and r2, r2, #0xff - blx r3 - add sp, sp, #0x5c - mov r0, #0x1 - ldmia sp!, {r4-r11,pc} -_020B877C: - mov r1, r10 - mov r0, #0x0 - mov r2, #0x58 - bl MIi_CpuClearFast - mvn r0, #0x0 - str r0, [r10, #0x0] - add r5, sp, #0x0 - add r4, sp, #0x4 - add r11, sp, #0x10 -_020B87A0: - add r0, r9, r8, lsl #0x1 - ldrh r2, [r0, #0x1a] - and r0, r2, #0x300 - cmp r0, #0x100 - bne _020B8948 - ldr r0, [r9, #0x4] - cmp r0, #0x0 - ble _020B8948 - ldr r3, [r9, #0xc] - mov r0, r5 - mov r1, r9 - and r2, r2, #0xff - blx r3 - cmp r7, #0x1000 - ldreq r6, [r9, #0x4] - beq _020B87F0 - ldr r0, [r9, #0x4] - mov r1, r7 - bl FX_Div - mov r6, r0 -_020B87F0: - ldr r3, [sp, #0x0] - mov r1, r4 - mov r2, r6 - add r0, r10, #0x4 - and r3, r3, #0x1 - bl FUN_020B8998 - ldr r1, [sp, #0x0] - add r0, r10, #0x10 - and r3, r1, #0x8 - mov r1, r11 - mov r2, r6 - bl FUN_020B8998 - ldr r3, [sp, #0x0] - add r0, r10, #0x1c - add r1, sp, #0x1c - mov r2, r6 - and r3, r3, #0x10 - bl FUN_020B8998 - ldr r0, [sp, #0x0] - ands r0, r0, #0x4 - bne _020B8898 - ldr r0, [sp, #0x4c] - ldr r2, [r10, #0x4c] - smull r1, r0, r6, r0 - mov r1, r1, lsr #0xc - orr r1, r1, r0, lsl #0x14 - add r0, r2, r1 - str r0, [r10, #0x4c] - ldr r0, [sp, #0x50] - ldr r2, [r10, #0x50] - smull r1, r0, r6, r0 - mov r1, r1, lsr #0xc - orr r1, r1, r0, lsl #0x14 - add r0, r2, r1 - str r0, [r10, #0x50] - ldr r0, [sp, #0x54] - ldr r2, [r10, #0x54] - smull r1, r0, r6, r0 - mov r1, r1, lsr #0xc - orr r1, r1, r0, lsl #0x14 - add r0, r2, r1 - str r0, [r10, #0x54] -_020B8898: - ldr r0, [sp, #0x0] - ands r0, r0, #0x2 - bne _020B8920 - ldr r0, [sp, #0x28] - ldr r1, [r10, #0x28] - mul r0, r6, r0 - add r0, r1, r0, asr #0xc - str r0, [r10, #0x28] - ldr r0, [sp, #0x2c] - ldr r1, [r10, #0x2c] - mul r0, r6, r0 - add r0, r1, r0, asr #0xc - str r0, [r10, #0x2c] - ldr r0, [sp, #0x30] - ldr r1, [r10, #0x30] - mul r0, r6, r0 - add r0, r1, r0, asr #0xc - str r0, [r10, #0x30] - ldr r0, [sp, #0x34] - ldr r1, [r10, #0x34] - mul r0, r6, r0 - add r0, r1, r0, asr #0xc - str r0, [r10, #0x34] - ldr r0, [sp, #0x38] - ldr r1, [r10, #0x38] - mul r0, r6, r0 - add r0, r1, r0, asr #0xc - str r0, [r10, #0x38] - ldr r0, [sp, #0x3c] - ldr r1, [r10, #0x3c] - mul r0, r6, r0 - add r0, r1, r0, asr #0xc - str r0, [r10, #0x3c] - b _020B8938 -_020B8920: - ldr r0, [r10, #0x28] - add r0, r0, r6 - str r0, [r10, #0x28] - ldr r0, [r10, #0x38] - add r0, r0, r6 - str r0, [r10, #0x38] -_020B8938: - ldr r1, [r10, #0x0] - ldr r0, [sp, #0x0] - and r0, r1, r0 - str r0, [r10, #0x0] -_020B8948: - ldr r9, [r9, #0x10] - cmp r9, #0x0 - bne _020B87A0 - add r0, r10, #0x28 - add r1, r10, #0x34 - add r2, r10, #0x40 - bl VEC_CrossProduct - add r0, r10, #0x28 - mov r1, r0 - bl VEC_Normalize - add r0, r10, #0x40 - mov r1, r0 - bl VEC_Normalize - add r0, r10, #0x40 - add r1, r10, #0x28 - add r2, r10, #0x34 - bl VEC_CrossProduct - mov r0, #0x1 - add sp, sp, #0x5c - ldmia sp!, {r4-r11,pc} - - arm_func_start FUN_020B8998 -FUN_020B8998: - cmp r3, #0x0 - beq _020B89C8 - ldr r1, [r0, #0x0] - add r1, r1, r2 - str r1, [r0, #0x0] - ldr r1, [r0, #0x4] - add r1, r1, r2 - str r1, [r0, #0x4] - ldr r1, [r0, #0x8] - add r1, r1, r2 - str r1, [r0, #0x8] - bx lr -_020B89C8: - ldr r3, [r1, #0x0] - ldr r12, [r0, #0x0] - mul r3, r2, r3 - add r3, r12, r3, asr #0xc - str r3, [r0, #0x0] - ldr r3, [r1, #0x4] - ldr r12, [r0, #0x4] - mul r3, r2, r3 - add r3, r12, r3, asr #0xc - str r3, [r0, #0x4] - ldr r1, [r1, #0x8] - ldr r3, [r0, #0x8] - mul r1, r2, r1 - add r1, r3, r1, asr #0xc - str r1, [r0, #0x8] - bx lr - - arm_func_start FUN_020B8A08 -FUN_020B8A08: ; 0x020B8A08 - stmdb sp!, {r4-r7,lr} - sub sp, sp, #0x4 - mov r6, r0 - mov r5, r1 - mov r0, #0x0 - mov r4, r2, lsl #0x1 - mov r7, #0x1 -_020B8A24: - add r1, r4, r5 - ldrh r2, [r1, #0x1a] - ands r1, r2, #0x100 - beq _020B8A4C - ldr r3, [r5, #0xc] - mov r0, r6 - mov r1, r5 - and r2, r2, #0xff - blx r3 - mov r0, r7 -_020B8A4C: - ldr r5, [r5, #0x10] - cmp r5, #0x0 - bne _020B8A24 - add sp, sp, #0x4 - ldmia sp!, {r4-r7,pc} - - arm_func_start FUN_020B8A60 -FUN_020B8A60: ; 0x020B8A60 - stmdb sp!, {r4-r6,lr} - sub sp, sp, #0x80 - mov r5, r0 - ldr r1, [r5, #0x8] - ands r0, r1, #0x200 - bne _020B8DB4 - ands r0, r1, #0x1 - beq _020B8DB4 - add r0, sp, #0x10 - mov r1, #0x0 - bl FUN_020BB824 - mov r0, #0x1e - str r0, [sp, #0x0] - add r1, sp, #0x0 - mov r0, #0x13 - mov r2, #0x1 - bl FUN_020BB1C0 - ldr r2, [r5, #0xb0] - ldr r0, [r2, #0x10] - and r1, r0, #0xc0000000 - cmp r1, #0xc0000000 - beq _020B8AF0 - bic r0, r0, #0xc0000000 - str r0, [r2, #0x10] - ldr r2, [r5, #0xb0] - ldr r3, _020B8DC8 ; =UNK_02106630 - ldr r0, [r2, #0x10] - ldr r1, _020B8DCC ; =UNK_02106634 - orr r0, r0, #0xc0000000 - str r0, [r2, #0x10] - ldr r2, [r5, #0xb0] - ldr r0, [r3, #0x0] - ldr r4, [r2, #0x10] - mov r2, #0x1 - str r4, [r3, #0x4] - bl FUN_020BB1C0 -_020B8AF0: - ldr r0, [r5, #0x40] - cmp r0, #0x0 - ldrneb r4, [r5, #0x99] - moveq r4, #0x0 - cmp r4, #0x1 - bne _020B8B3C - ldr r1, [r5, #0x8] - mov r0, r5 - bic r1, r1, #0x40 - str r1, [r5, #0x8] - ldr r1, [r5, #0x40] - blx r1 - ldr r0, [r5, #0x40] - cmp r0, #0x0 - ldrneb r4, [r5, #0x99] - ldr r0, [r5, #0x8] - moveq r4, #0x0 - and r0, r0, #0x40 - b _020B8B40 -_020B8B3C: - mov r0, #0x0 -_020B8B40: - cmp r0, #0x0 - bne _020B8B84 - ldr r0, [r5, #0xb0] - ldr r1, _020B8DD0 ; =UNK_02106660 - ldrh r6, [r0, #0x2e] - ldrh r3, [r0, #0x2c] - mov r0, #0x16 - rsb r2, r6, #0x0 - mov lr, r3, lsl #0xf - mov r12, r2, lsl #0xf - mov r3, r6, lsl #0xf - mov r2, #0x10 - str lr, [r1, #0x0] - str r12, [r1, #0x14] - str lr, [r1, #0x30] - str r3, [r1, #0x34] - bl FUN_020BB1C0 -_020B8B84: - cmp r4, #0x2 - bne _020B8BC0 - ldr r1, [r5, #0x8] - mov r0, r5 - bic r1, r1, #0x40 - str r1, [r5, #0x8] - ldr r1, [r5, #0x40] - blx r1 - ldr r0, [r5, #0x40] - cmp r0, #0x0 - ldrneb r4, [r5, #0x99] - ldr r0, [r5, #0x8] - moveq r4, #0x0 - and r0, r0, #0x40 - b _020B8BC4 -_020B8BC0: - mov r0, #0x0 -_020B8BC4: - cmp r0, #0x0 - bne _020B8C28 - ldr r12, [r5, #0xd8] - ldr r0, [r5, #0x0] - ldrh r2, [r12, #0xa] - add r3, r12, #0x4 - ldrb r0, [r0, #0x1] - ldrh r1, [r3, r2] - add r2, r3, r2 - mla r0, r1, r0, r2 - ldr r0, [r0, #0x4] - add r1, r12, r0 - ldrh r2, [r1, #0x1e] - ands r0, r2, #0x2000 - beq _020B8C28 - add r1, r1, #0x2c - ands r0, r2, #0x2 - addeq r1, r1, #0x8 - ands r0, r2, #0x4 - addeq r1, r1, #0x4 - ands r0, r2, #0x8 - addeq r1, r1, #0x8 - mov r0, #0x18 - mov r2, #0x10 - bl FUN_020BB1C0 -_020B8C28: - cmp r4, #0x3 - movne r0, #0x0 - bne _020B8C54 - ldr r1, [r5, #0x8] - mov r0, r5 - bic r1, r1, #0x40 - str r1, [r5, #0x8] - ldr r1, [r5, #0x40] - blx r1 - ldr r0, [r5, #0x8] - and r0, r0, #0x40 -_020B8C54: - cmp r0, #0x0 - bne _020B8D84 - ldr r0, _020B8DD4 ; =UNK_021CED18 - ldr r1, [r0, #0xfc] - ands r0, r1, #0x1 - beq _020B8CA0 - ldr r1, _020B8DD8 ; =UNK_021CEDF8 - mov r0, #0x1c - mov r2, #0x3 - bl FUN_020BB1C0 - ldr r1, _020B8DDC ; =UNK_021CEDD4 - mov r0, #0x1a - mov r2, #0x9 - bl FUN_020BB1C0 - add r1, sp, #0x10 - mov r0, #0x19 - mov r2, #0xc - bl FUN_020BB1C0 - b _020B8CE0 -_020B8CA0: - ands r0, r1, #0x2 - beq _020B8CBC - add r1, sp, #0x10 - mov r0, #0x19 - mov r2, #0xc - bl FUN_020BB1C0 - b _020B8CE0 -_020B8CBC: - bl FUN_020B8344 - mov r1, r0 - mov r0, #0x19 - mov r2, #0xc - bl FUN_020BB1C0 - add r1, sp, #0x10 - mov r0, #0x19 - mov r2, #0xc - bl FUN_020BB1C0 -_020B8CE0: - bl FUN_020BB394 - ldr r0, _020B8DE0 ; =0x04000440 - mov r2, #0x0 - ldr r1, _020B8DE4 ; =0x04000444 - str r2, [r0, #0x0] - ldr r0, _020B8DE8 ; =0x04000454 - str r2, [r1, #0x0] - str r2, [r0, #0x0] - add r4, sp, #0x40 -_020B8D04: - mov r0, r4 - bl G3X_GetClipMtx - cmp r0, #0x0 - bne _020B8D04 - ldr r1, _020B8DEC ; =0x04000448 - mov r2, #0x1 - str r2, [r1, #0x0] - ldr r0, _020B8DE0 ; =0x04000440 - mov r2, #0x3 - str r2, [r0, #0x0] - add r1, sp, #0x40 - mov r0, #0x16 - mov r2, #0x10 - bl FUN_020BB1C0 - ldr r1, [sp, #0x70] - ldr r0, [sp, #0x74] - mov r2, r1, asr #0x4 - mov r1, r0, asr #0x4 - mov r0, r2, lsl #0x8 - mov r1, r1, lsl #0x8 - mov r0, r0, asr #0x10 - mov r1, r1, asr #0x10 - mov r0, r0, lsl #0x10 - mov r1, r1, lsl #0x10 - mov r2, r0, lsr #0x10 - mov r0, r1, lsr #0x10 - orr r3, r2, r0, lsl #0x10 - add r1, sp, #0x4 - mov r0, #0x22 - mov r2, #0x1 - str r3, [sp, #0x4] - bl FUN_020BB1C0 -_020B8D84: - mov r3, #0x2 - add r1, sp, #0x8 - mov r0, #0x10 - mov r2, #0x1 - str r3, [sp, #0x8] - bl FUN_020BB1C0 - mov r3, #0x1e - add r1, sp, #0xc - mov r0, #0x14 - mov r2, #0x1 - str r3, [sp, #0xc] - bl FUN_020BB1C0 -_020B8DB4: - ldr r0, [r5, #0x0] - add r0, r0, #0x3 - str r0, [r5, #0x0] - add sp, sp, #0x80 - ldmia sp!, {r4-r6,pc} - .balign 4 -_020B8DC8: .word UNK_02106630 -_020B8DCC: .word UNK_02106634 -_020B8DD0: .word UNK_02106660 -_020B8DD4: .word UNK_021CED18 -_020B8DD8: .word UNK_021CEDF8 -_020B8DDC: .word UNK_021CEDD4 -_020B8DE0: .word 0x04000440 -_020B8DE4: .word 0x04000444 -_020B8DE8: .word 0x04000454 -_020B8DEC: .word 0x04000448 - - arm_func_start FUN_020B8DF0 -FUN_020B8DF0: ; 0x020B8DF0 - stmdb sp!, {r4-r7,lr} - sub sp, sp, #0x44 - mov r7, r0 - ldr r1, [r7, #0x8] - ands r0, r1, #0x200 - bne _020B90E8 - ands r0, r1, #0x1 - beq _020B90E8 - ldr r2, [r7, #0xb0] - ldr r0, [r2, #0x10] - and r1, r0, #0xc0000000 - cmp r1, #0x80000000 - beq _020B8E5C - bic r0, r0, #0xc0000000 - str r0, [r2, #0x10] - ldr r2, [r7, #0xb0] - ldr r3, _020B90FC ; =UNK_02106638 - ldr r0, [r2, #0x10] - ldr r1, _020B9100 ; =UNK_0210663C - orr r0, r0, #0x80000000 - str r0, [r2, #0x10] - ldr r2, [r7, #0xb0] - ldr r0, [r3, #0x0] - ldr r4, [r2, #0x10] - mov r2, #0x1 - str r4, [r3, #0x4] - bl FUN_020BB1C0 -_020B8E5C: - mov r0, #0x3 - str r0, [sp, #0x0] - add r1, sp, #0x0 - mov r0, #0x10 - mov r2, #0x1 - bl FUN_020BB1C0 - ldr r0, [r7, #0x3c] - cmp r0, #0x0 - ldrneb r6, [r7, #0x98] - moveq r6, #0x0 - cmp r6, #0x1 - bne _020B8EC0 - ldr r1, [r7, #0x8] - mov r0, r7 - bic r1, r1, #0x40 - str r1, [r7, #0x8] - ldr r1, [r7, #0x3c] - blx r1 - ldr r0, [r7, #0x3c] - cmp r0, #0x0 - ldrneb r6, [r7, #0x98] - ldr r0, [r7, #0x8] - moveq r6, #0x0 - and r0, r0, #0x40 - b _020B8EC4 -_020B8EC0: - mov r0, #0x0 -_020B8EC4: - cmp r0, #0x0 - bne _020B8F3C - ldr r0, [r7, #0xb0] - add r1, sp, #0x38 - ldrh r4, [r0, #0x2e] - ldrh r5, [r0, #0x2c] - mov r3, #0x10000 - rsb r0, r4, #0x0 - mov r12, r0, lsl #0xf - mov lr, r5, lsl #0xf - mov r0, #0x1b - mov r2, #0x3 - str lr, [sp, #0x38] - str r12, [sp, #0x3c] - str r3, [sp, #0x40] - bl FUN_020BB1C0 - mov r0, r5, lsl #0x13 - mov r1, r4, lsl #0x13 - mov r0, r0, asr #0x10 - mov r1, r1, asr #0x10 - mov r0, r0, lsl #0x10 - mov r1, r1, lsl #0x10 - mov r2, r0, lsr #0x10 - mov r0, r1, lsr #0x10 - orr r3, r2, r0, lsl #0x10 - add r1, sp, #0x4 - mov r0, #0x22 - mov r2, #0x1 - str r3, [sp, #0x4] - bl FUN_020BB1C0 -_020B8F3C: - cmp r6, #0x2 - bne _020B8F78 - ldr r1, [r7, #0x8] - mov r0, r7 - bic r1, r1, #0x40 - str r1, [r7, #0x8] - ldr r1, [r7, #0x3c] - blx r1 - ldr r0, [r7, #0x3c] - cmp r0, #0x0 - ldrneb r6, [r7, #0x98] - ldr r0, [r7, #0x8] - moveq r6, #0x0 - and r0, r0, #0x40 - b _020B8F7C -_020B8F78: - mov r0, #0x0 -_020B8F7C: - cmp r0, #0x0 - bne _020B8FE0 - ldr r4, [r7, #0xd8] - ldr r0, [r7, #0x0] - ldrh r2, [r4, #0xa] - add r3, r4, #0x4 - ldrb r0, [r0, #0x1] - ldrh r1, [r3, r2] - add r2, r3, r2 - mla r0, r1, r0, r2 - ldr r0, [r0, #0x4] - add r1, r4, r0 - ldrh r2, [r1, #0x1e] - ands r0, r2, #0x2000 - beq _020B8FE0 - add r1, r1, #0x2c - ands r0, r2, #0x2 - addeq r1, r1, #0x8 - ands r0, r2, #0x4 - addeq r1, r1, #0x4 - ands r0, r2, #0x8 - addeq r1, r1, #0x8 - mov r0, #0x18 - mov r2, #0x10 - bl FUN_020BB1C0 -_020B8FE0: - cmp r6, #0x3 - movne r0, #0x0 - bne _020B900C - ldr r1, [r7, #0x8] - mov r0, r7 - bic r1, r1, #0x40 - str r1, [r7, #0x8] - ldr r1, [r7, #0x3c] - blx r1 - ldr r0, [r7, #0x8] - and r0, r0, #0x40 -_020B900C: - cmp r0, #0x0 - bne _020B90D0 - mov r3, #0x2 - add r1, sp, #0x8 - mov r0, #0x10 - mov r2, #0x1 - str r3, [sp, #0x8] - bl FUN_020BB1C0 - add r1, sp, #0x14 - mov r0, #0x0 - bl FUN_020BB824 - mov r3, #0x3 - add r1, sp, #0xc - mov r0, #0x10 - mov r2, #0x1 - str r3, [sp, #0xc] - bl FUN_020BB1C0 - ldr r0, _020B9104 ; =UNK_021CED18 - ldr r1, [r0, #0xfc] - ands r0, r1, #0x1 - beq _020B9094 - ldr r1, _020B9108 ; =UNK_021CED64 - mov r0, #0x1a - mov r2, #0x9 - bl FUN_020BB1C0 - ldr r1, _020B910C ; =UNK_021CEDD4 - mov r0, #0x1a - mov r2, #0x9 - bl FUN_020BB1C0 - add r1, sp, #0x14 - mov r0, #0x1a - mov r2, #0x9 - bl FUN_020BB1C0 - b _020B90D0 -_020B9094: - ands r0, r1, #0x2 - beq _020B90C0 - ldr r1, _020B9108 ; =UNK_021CED64 - mov r0, #0x1a - mov r2, #0x9 - bl FUN_020BB1C0 - add r1, sp, #0x14 - mov r0, #0x1a - mov r2, #0x9 - bl FUN_020BB1C0 - b _020B90D0 -_020B90C0: - add r1, sp, #0x14 - mov r0, #0x1a - mov r2, #0x9 - bl FUN_020BB1C0 -_020B90D0: - mov r3, #0x2 - add r1, sp, #0x10 - mov r0, #0x10 - mov r2, #0x1 - str r3, [sp, #0x10] - bl FUN_020BB1C0 -_020B90E8: - ldr r0, [r7, #0x0] - add r0, r0, #0x3 - str r0, [r7, #0x0] - add sp, sp, #0x44 - ldmia sp!, {r4-r7,pc} - .balign 4 -_020B90FC: .word UNK_02106638 -_020B9100: .word UNK_0210663C -_020B9104: .word UNK_021CED18 -_020B9108: .word UNK_021CED64 -_020B910C: .word UNK_021CEDD4 - - arm_func_start FUN_020B9110 -FUN_020B9110: ; 0x020B9110 - stmdb sp!, {r4,lr} - sub sp, sp, #0x10 - mov r4, r0 - ldr r2, [r4, #0x8] - ands r0, r2, #0x100 - bne _020B9164 - ands r0, r2, #0x200 - bne _020B9164 - cmp r1, #0x0 - ldreq r0, [r4, #0xe0] - add r1, sp, #0x0 - streq r0, [sp, #0x8] - streq r0, [sp, #0x4] - streq r0, [sp, #0x0] - ldrne r0, [r4, #0xe4] - mov r2, #0x3 - strne r0, [sp, #0x8] - strne r0, [sp, #0x4] - strne r0, [sp, #0x0] - mov r0, #0x1b - bl FUN_020BB1C0 -_020B9164: - ldr r0, [r4, #0x0] - add r0, r0, #0x1 - str r0, [r4, #0x0] - add sp, sp, #0x10 - ldmia sp!, {r4,pc} - - arm_func_start FUN_020B9178 -FUN_020B9178: ; 0x020B9178 - stmdb sp!, {r4-r6,lr} - mov r5, r0 - ldr r0, [r5, #0x34] - cmp r0, #0x0 - ldrneb r4, [r5, #0x96] - moveq r4, #0x0 - cmp r4, #0x1 - bne _020B91CC - ldr r1, [r5, #0x8] - mov r0, r5 - bic r1, r1, #0x40 - str r1, [r5, #0x8] - ldr r1, [r5, #0x34] - blx r1 - ldr r0, [r5, #0x34] - cmp r0, #0x0 - ldrneb r4, [r5, #0x96] - ldr r0, [r5, #0x8] - moveq r4, #0x0 - and r1, r0, #0x40 - b _020B91D0 -_020B91CC: - mov r1, #0x0 -_020B91D0: - ldr r0, [r5, #0x8] - ands r0, r0, #0x100 - bne _020B9228 - cmp r1, #0x0 - bne _020B9228 - ldr r0, [r5, #0x0] - ldrb r12, [r0, #0x1] - ldrb r3, [r0, #0x2] - ldrb lr, [r0, #0x3] - ldrb r2, [r0, #0x5] - ldrb r1, [r0, #0x6] - orr r3, r12, r3, lsl #0x8 - ldrb r6, [r0, #0x4] - orr r12, r3, lr, lsl #0x10 - ldrb r3, [r0, #0x7] - orr r1, r2, r1, lsl #0x8 - orr r6, r12, r6, lsl #0x18 - ldrb r2, [r0, #0x8] - orr r1, r1, r3, lsl #0x10 - add r0, r0, r6 - orr r1, r1, r2, lsl #0x18 - bl FUN_020BB2B0 -_020B9228: - cmp r4, #0x3 - bne _020B9248 - ldr r1, [r5, #0x8] - mov r0, r5 - bic r1, r1, #0x40 - str r1, [r5, #0x8] - ldr r1, [r5, #0x34] - blx r1 -_020B9248: - ldr r0, [r5, #0x0] - add r0, r0, #0x9 - str r0, [r5, #0x0] - ldmia sp!, {r4-r6,pc} - - arm_func_start FUN_020B9258 -FUN_020B9258: ; 0x020B9258 - stmdb sp!, {r4-r11,lr} - sub sp, sp, #0x8c - ldr r1, [r0, #0x4] - ldr r4, [r0, #0x0] - ldr r6, [r1, #0x4] - ldrb r2, [r4, #0x2] - ldr r3, [r6, #0x10] - mov r10, #0x0 - str r0, [sp, #0x0] - str r2, [sp, #0x8] - add r3, r6, r3 - add r1, sp, #0x34 - mov r0, r10 - mov r2, #0x54 - mov r9, r10 - str r3, [sp, #0x4] - add r8, r4, #0x3 - bl MIi_CpuClearFast - bl FUN_020BB394 - ldr r0, _020B98AC ; =0x04000440 - mov r7, r10 - str r7, [r0, #0x0] - mov r0, #0x1 - ldr r2, _020B98B0 ; =0x0400044C - ldr r1, _020B98B4 ; =0x04000454 - str r0, [r2, #0x0] - str r0, [sp, #0x10] - str r7, [r1, #0x0] - mov r1, #0x2 - ldr r0, _020B98AC ; =0x04000440 - str r1, [sp, #0x14] - str r1, [r0, #0x0] - ldr r0, [sp, #0x8] - cmp r0, #0x0 - bls _020B96CC -_020B92E4: - ldrb r4, [r8, #0x1] - mov r0, #0x64 - ldr r3, _020B98B8 ; =UNK_021D0380 - mul r0, r4, r0 - str r0, [sp, #0xc] - ldr r0, [sp, #0x0] - mov r1, r4, lsr #0x5 - add r0, r0, r1, lsl #0x2 - ldr r1, [sp, #0x10] - and r2, r4, #0x1f - mov r1, r1, lsl r2 - ldr r11, [r0, #0xcc] - ldr r2, [sp, #0xc] - ands r11, r1, r11 - add r6, r3, r2 - bne _020B9358 - ldr r3, [r0, #0xcc] - mov r2, #0x54 - orr r1, r3, r1 - str r1, [r0, #0xcc] - ldr r0, [sp, #0x4] - ldr r1, _020B98BC ; =0x04000450 - mla r0, r4, r2, r0 - ldrb r2, [r8, #0x0] - str r2, [r1, #0x0] - ldr r2, [sp, #0x10] - ldr r1, _020B98AC ; =0x04000440 - str r2, [r1, #0x0] - bl G3_MultMtx43 -_020B9358: - cmp r7, #0x0 - beq _020B9500 - ldr r2, [sp, #0x6c] - ldr r1, [r5, #0x0] - str r2, [sp, #0x18] - ldr r2, [sp, #0x70] - mov r0, r1, asr #0x1f - str r2, [sp, #0x1c] - ldr r2, [sp, #0x74] - ldr r12, [sp, #0x64] - str r2, [sp, #0x20] - ldr r2, [sp, #0x78] - ldr lr, [sp, #0x68] - str r2, [sp, #0x24] - ldr r2, [sp, #0x7c] - str r2, [sp, #0x28] - ldr r2, [sp, #0x80] - str r2, [sp, #0x2c] - ldr r2, [sp, #0x84] - str r2, [sp, #0x30] - umull r3, r2, r10, r1 - mla r2, r10, r0, r2 - mla r2, r9, r1, r2 - mov r0, r3, lsr #0xc - orr r0, r0, r2, lsl #0x14 - adds r0, r12, r0 - str r0, [sp, #0x64] - ldr r1, [r5, #0x4] - mov r0, r1, asr #0x1f - umull r3, r2, r10, r1 - mla r2, r10, r0, r2 - mla r2, r9, r1, r2 - mov r0, r3, lsr #0xc - orr r0, r0, r2, lsl #0x14 - adds r0, lr, r0 - str r0, [sp, #0x68] - ldr r1, [r5, #0x8] - mov r0, r1, asr #0x1f - umull r3, r2, r10, r1 - mla r2, r10, r0, r2 - mla r2, r9, r1, r2 - mov r1, r3, lsr #0xc - ldr r0, [sp, #0x18] - orr r1, r1, r2, lsl #0x14 - adds r0, r0, r1 - str r0, [sp, #0x6c] - ldr r1, [r5, #0xc] - mov r0, r1, asr #0x1f - umull r3, r2, r10, r1 - mla r2, r10, r0, r2 - mla r2, r9, r1, r2 - mov r1, r3, lsr #0xc - ldr r0, [sp, #0x1c] - orr r1, r1, r2, lsl #0x14 - adds r0, r0, r1 - str r0, [sp, #0x70] - ldr r1, [r5, #0x10] - mov r0, r1, asr #0x1f - umull r3, r2, r10, r1 - mla r2, r10, r0, r2 - mla r2, r9, r1, r2 - mov r1, r3, lsr #0xc - ldr r0, [sp, #0x20] - orr r1, r1, r2, lsl #0x14 - adds r0, r0, r1 - str r0, [sp, #0x74] - ldr r1, [r5, #0x14] - mov r0, r1, asr #0x1f - umull r3, r2, r10, r1 - mla r2, r10, r0, r2 - mla r2, r9, r1, r2 - mov r1, r3, lsr #0xc - ldr r0, [sp, #0x24] - orr r1, r1, r2, lsl #0x14 - adds r0, r0, r1 - str r0, [sp, #0x78] - ldr r1, [r5, #0x18] - mov r0, r1, asr #0x1f - umull r3, r2, r10, r1 - mla r2, r10, r0, r2 - mla r2, r9, r1, r2 - mov r1, r3, lsr #0xc - ldr r0, [sp, #0x28] - orr r1, r1, r2, lsl #0x14 - adds r0, r0, r1 - str r0, [sp, #0x7c] - ldr r1, [r5, #0x1c] - mov r0, r1, asr #0x1f - umull r3, r2, r10, r1 - mla r2, r10, r0, r2 - mla r2, r9, r1, r2 - mov r1, r3, lsr #0xc - ldr r0, [sp, #0x2c] - orr r1, r1, r2, lsl #0x14 - adds r0, r0, r1 - str r0, [sp, #0x80] - ldr r1, [r5, #0x20] - mov r0, r1, asr #0x1f - umull r3, r2, r10, r1 - mla r2, r10, r0, r2 - mla r2, r9, r1, r2 - mov r1, r3, lsr #0xc - ldr r0, [sp, #0x30] - orr r1, r1, r2, lsl #0x14 - adds r0, r0, r1 - str r0, [sp, #0x84] -_020B9500: - cmp r11, #0x0 - bne _020B9538 -_020B9508: - mov r0, r6 - bl G3X_GetClipMtx - cmp r0, #0x0 - bne _020B9508 - ldr r1, [sp, #0x14] - ldr r0, _020B98AC ; =0x04000440 - str r1, [r0, #0x0] - ldr r0, [sp, #0x4] - mov r1, #0x54 - mla r0, r4, r1, r0 - add r0, r0, #0x30 - bl G3_MultMtx33 -_020B9538: - ldrb r1, [r8, #0x2] - ldr r2, [sp, #0x34] - ldr r0, [r6, #0x0] - mov r10, r1, lsl #0x4 - smull r1, r0, r10, r0 - mov r1, r1, lsr #0xc - orr r1, r1, r0, lsl #0x14 - adds r0, r2, r1 - str r0, [sp, #0x34] - mov r9, r10, asr #0x1f - ldr r2, [sp, #0x38] - ldr r0, [r6, #0x4] - ldr r3, [sp, #0x3c] - smull r1, r0, r10, r0 - mov r1, r1, lsr #0xc - orr r1, r1, r0, lsl #0x14 - adds r0, r2, r1 - str r0, [sp, #0x38] - ldr r0, [r6, #0x8] - ldr r2, [sp, #0x40] - smull r1, r0, r10, r0 - mov r1, r1, lsr #0xc - orr r1, r1, r0, lsl #0x14 - adds r0, r3, r1 - str r0, [sp, #0x3c] - ldr r0, [r6, #0x10] - ldr r3, [sp, #0x44] - smull r1, r0, r10, r0 - mov r1, r1, lsr #0xc - orr r1, r1, r0, lsl #0x14 - adds r0, r2, r1 - str r0, [sp, #0x40] - ldr r0, [r6, #0x14] - ldr r2, [sp, #0x48] - smull r1, r0, r10, r0 - mov r1, r1, lsr #0xc - orr r1, r1, r0, lsl #0x14 - adds r0, r3, r1 - str r0, [sp, #0x44] - ldr r0, [r6, #0x18] - ldr r3, [sp, #0x4c] - smull r1, r0, r10, r0 - mov r1, r1, lsr #0xc - orr r1, r1, r0, lsl #0x14 - adds r0, r2, r1 - str r0, [sp, #0x48] - ldr r0, [r6, #0x20] - ldr r2, [sp, #0x50] - smull r1, r0, r10, r0 - mov r1, r1, lsr #0xc - orr r1, r1, r0, lsl #0x14 - adds r0, r3, r1 - str r0, [sp, #0x4c] - ldr r0, [r6, #0x24] - ldr r3, [sp, #0x54] - smull r1, r0, r10, r0 - mov r1, r1, lsr #0xc - orr r1, r1, r0, lsl #0x14 - adds r0, r2, r1 - str r0, [sp, #0x50] - ldr r0, [r6, #0x28] - ldr r2, [sp, #0x58] - smull r1, r0, r10, r0 - mov r1, r1, lsr #0xc - orr r1, r1, r0, lsl #0x14 - adds r0, r3, r1 - str r0, [sp, #0x54] - ldr r0, [r6, #0x30] - ldr r3, [sp, #0x5c] - smull r1, r0, r10, r0 - mov r1, r1, lsr #0xc - orr r1, r1, r0, lsl #0x14 - adds r0, r2, r1 - str r0, [sp, #0x58] - ldr r0, [r6, #0x34] - ldr r2, [sp, #0x60] - smull r1, r0, r10, r0 - mov r1, r1, lsr #0xc - orr r1, r1, r0, lsl #0x14 - adds r0, r3, r1 - str r0, [sp, #0x5c] - ldr r0, [r6, #0x38] - smull r1, r0, r10, r0 - mov r1, r1, lsr #0xc - orr r1, r1, r0, lsl #0x14 - adds r0, r2, r1 - str r0, [sp, #0x60] - cmp r11, #0x0 - ldr r1, _020B98C0 ; =UNK_021D03C0 - ldr r0, [sp, #0xc] - add r5, r1, r0 - add r8, r8, #0x3 - bne _020B96BC -_020B96AC: - mov r0, r5 - bl G3X_GetVectorMtx - cmp r0, #0x0 - bne _020B96AC -_020B96BC: - ldr r0, [sp, #0x8] - add r7, r7, #0x1 - cmp r7, r0 - blo _020B92E4 -_020B96CC: - ldr r1, [r5, #0x0] - ldr r4, [sp, #0x64] - mov r0, r1, asr #0x1f - umull r3, r2, r10, r1 - mla r2, r10, r0, r2 - mla r2, r9, r1, r2 - mov r0, r3, lsr #0xc - orr r0, r0, r2, lsl #0x14 - adds r0, r4, r0 - str r0, [sp, #0x64] - ldr r1, [r5, #0x4] - ldr r4, [sp, #0x68] - mov r0, r1, asr #0x1f - umull r3, r2, r10, r1 - mla r2, r10, r0, r2 - mla r2, r9, r1, r2 - mov r0, r3, lsr #0xc - orr r0, r0, r2, lsl #0x14 - adds r0, r4, r0 - str r0, [sp, #0x68] - ldr r1, [r5, #0x8] - ldr r4, [sp, #0x6c] - umull r0, r2, r10, r1 - mov r3, r0, lsr #0xc - mov r0, r1, asr #0x1f - mla r2, r10, r0, r2 - mla r2, r9, r1, r2 - orr r3, r3, r2, lsl #0x14 - adds r0, r4, r3 - str r0, [sp, #0x6c] - ldr r7, [r5, #0xc] - ldr r12, [sp, #0x70] - mov r6, r7, asr #0x1f - umull r11, r8, r10, r7 - mla r8, r10, r6, r8 - mla r8, r9, r7, r8 - mov r6, r11, lsr #0xc - orr r6, r6, r8, lsl #0x14 - adds r6, r12, r6 - str r6, [sp, #0x70] - ldr r7, [r5, #0x10] - ldr r4, [sp, #0x74] - mov r6, r7, asr #0x1f - umull r11, r8, r10, r7 - mla r8, r10, r6, r8 - mla r8, r9, r7, r8 - mov r6, r11, lsr #0xc - orr r6, r6, r8, lsl #0x14 - adds r4, r4, r6 - str r4, [sp, #0x74] - ldr r6, [r5, #0x14] - ldr r3, [sp, #0x78] - mov r4, r6, asr #0x1f - umull r8, r7, r10, r6 - mla r7, r10, r4, r7 - mla r7, r9, r6, r7 - mov r4, r8, lsr #0xc - orr r4, r4, r7, lsl #0x14 - adds r3, r3, r4 - str r3, [sp, #0x78] - ldr r4, [r5, #0x18] - ldr r2, [sp, #0x7c] - mov r3, r4, asr #0x1f - umull r7, r6, r10, r4 - mla r6, r10, r3, r6 - mla r6, r9, r4, r6 - mov r3, r7, lsr #0xc - orr r3, r3, r6, lsl #0x14 - adds r2, r2, r3 - str r2, [sp, #0x7c] - ldr r3, [r5, #0x1c] - ldr r1, [sp, #0x80] - mov r2, r3, asr #0x1f - umull r6, r4, r10, r3 - mla r4, r10, r2, r4 - mla r4, r9, r3, r4 - mov r2, r6, lsr #0xc - orr r2, r2, r4, lsl #0x14 - adds r1, r1, r2 - str r1, [sp, #0x80] - ldr r2, [r5, #0x20] - ldr lr, [sp, #0x84] - mov r1, r2, asr #0x1f - umull r4, r3, r10, r2 - mla r3, r10, r1, r3 - mla r3, r9, r2, r3 - mov r1, r4, lsr #0xc - orr r1, r1, r3, lsl #0x14 - adds r1, lr, r1 - add r0, sp, #0x64 - str r1, [sp, #0x84] - bl G3_LoadMtx43 - ldr r1, _020B98AC ; =0x04000440 - mov r2, #0x1 - add r0, sp, #0x34 - str r2, [r1, #0x0] - bl G3_LoadMtx43 - ldr r3, _020B98AC ; =0x04000440 - mov r0, #0x0 - str r0, [r3, #0x0] - ldr r1, _020B98BC ; =0x04000450 - mov r2, #0x1 - mov r0, #0x2 - str r2, [r1, #0x0] - str r0, [r3, #0x0] - ldr r0, [sp, #0x0] - ldr r1, [r0, #0x0] - ldr r0, _020B98B0 ; =0x0400044C - ldrb r2, [r1, #0x1] - mov r1, #0x3 - str r2, [r0, #0x0] - ldr r0, [sp, #0x0] - ldr r2, [r0, #0x0] - ldrb r0, [r2, #0x2] - add r0, r0, #0x1 - mla r1, r0, r1, r2 - ldr r0, [sp, #0x0] - str r1, [r0, #0x0] - add sp, sp, #0x8c - ldmia sp!, {r4-r11,pc} - .balign 4 -_020B98AC: .word 0x04000440 -_020B98B0: .word 0x0400044C -_020B98B4: .word 0x04000454 -_020B98B8: .word UNK_021D0380 -_020B98BC: .word 0x04000450 -_020B98C0: .word UNK_021D03C0 - - arm_func_start FUN_020B98C4 -FUN_020B98C4: ; 0x020B98C4 - stmdb sp!, {r4-r11,lr} - sub sp, sp, #0xcc - mov r10, r0 - ldr r2, [r10, #0x8] - mov r9, r1 - ands r0, r2, #0x200 - mov r7, #0x2 - ldr r6, _020B9C28 ; =UNK_02106718 - ldr fp, _020B9C2C ; =UNK_02106724 - ldr r5, _020B9C30 ; =UNK_021066F4 - beq _020B992C - cmp r9, #0x40 - beq _020B9900 - cmp r9, #0x60 - bne _020B9904 -_020B9900: - add r7, r7, #0x1 -_020B9904: - cmp r9, #0x20 - beq _020B9914 - cmp r9, #0x60 - bne _020B9918 -_020B9914: - add r7, r7, #0x1 -_020B9918: - ldr r0, [r10, #0x0] - add sp, sp, #0xcc - add r0, r0, r7 - str r0, [r10, #0x0] - ldmia sp!, {r4-r11,pc} -_020B992C: - cmp r9, #0x40 - beq _020B993C - cmp r9, #0x60 - bne _020B9974 -_020B993C: - add r7, r7, #0x1 - ands r0, r2, #0x100 - bne _020B9974 - cmp r9, #0x40 - ldreq r0, [r10, #0x0] - add r1, sp, #0x0 - ldreqb r0, [r0, #0x2] - mov r2, #0x1 - streq r0, [sp, #0x0] - ldrne r0, [r10, #0x0] - ldrneb r0, [r0, #0x3] - strne r0, [sp, #0x0] - mov r0, #0x14 - bl FUN_020BB1C0 -_020B9974: - ldr r0, [r10, #0x2c] - cmp r0, #0x0 - ldrneb r8, [r10, #0x94] - moveq r8, #0x0 - cmp r8, #0x1 - bne _020B99C0 - ldr r1, [r10, #0x8] - mov r0, r10 - bic r1, r1, #0x40 - str r1, [r10, #0x8] - ldr r1, [r10, #0x2c] - blx r1 - ldr r0, [r10, #0x2c] - cmp r0, #0x0 - ldrneb r8, [r10, #0x94] - ldr r0, [r10, #0x8] - moveq r8, #0x0 - and r1, r0, #0x40 - b _020B99C4 -_020B99C0: - mov r1, #0x0 -_020B99C4: - ldr r0, [r10, #0x8] - ands r0, r0, #0x100 - bne _020B9BA4 - cmp r1, #0x0 - bne _020B9BA4 - bl FUN_020BB394 - ldr r2, _020B9C34 ; =0x00151110 - ldr r1, _020B9C38 ; =0x04000400 - mov r0, #0x0 - str r2, [r1, #0x0] - str r0, [r1, #0x0] - str r0, [r1, #0x0] - add r4, sp, #0x8 -_020B99F8: - mov r0, r4 - bl G3X_GetClipMtx - cmp r0, #0x0 - bne _020B99F8 - ldr r0, _020B9C3C ; =UNK_021CED18 - ldr r1, [r0, #0xfc] - ands r0, r1, #0x1 - beq _020B9A38 - bl FUN_020B82A4 - add r1, sp, #0x48 - bl MTX_Copy43To44_ - add r0, sp, #0x8 - add r1, sp, #0x48 - mov r2, r0 - bl MTX_Concat44 - b _020B9A5C -_020B9A38: - ands r0, r1, #0x2 - beq _020B9A5C - ldr r0, _020B9C40 ; =UNK_021CED64 - add r1, sp, #0x88 - bl MTX_Copy43To44_ - add r0, sp, #0x8 - add r1, sp, #0x88 - mov r2, r0 - bl MTX_Concat44 -_020B9A5C: - ldr r1, [sp, #0x38] - add r0, sp, #0x8 - str r1, [r6, #0x0] - ldr r1, [sp, #0x3c] - str r1, [r6, #0x4] - ldr r1, [sp, #0x40] - str r1, [r6, #0x8] - bl VEC_Mag - str r0, [r11, #0x0] - add r0, sp, #0x18 - bl VEC_Mag - str r0, [r11, #0x4] - add r0, sp, #0x28 - bl VEC_Mag - str r0, [r11, #0x8] - ldr r0, [sp, #0x1c] - cmp r0, #0x0 - bne _020B9AB0 - ldr r0, [sp, #0x20] - cmp r0, #0x0 - beq _020B9AD4 -_020B9AB0: - add r0, sp, #0x18 - add r1, r5, #0xc - bl VEC_Normalize - ldr r0, [r5, #0x14] - rsb r0, r0, #0x0 - str r0, [r5, #0x1c] - ldr r0, [r5, #0x10] - str r0, [r5, #0x20] - b _020B9AF4 -_020B9AD4: - add r0, sp, #0x28 - add r1, r5, #0x18 - bl VEC_Normalize - ldr r0, [r5, #0x1c] - rsb r0, r0, #0x0 - str r0, [r5, #0x14] - ldr r0, [r5, #0x20] - str r0, [r5, #0x10] -_020B9AF4: - ldr r0, _020B9C3C ; =UNK_021CED18 - ldr r1, [r0, #0xfc] - ands r0, r1, #0x1 - beq _020B9B48 - ldr r3, _020B9C44 ; =0x00171012 - ldr r1, _020B9C38 ; =0x04000400 - ldr r0, _020B9C48 ; =UNK_021066EC - mov r2, #0x8 - str r3, [r1, #0x0] - bl MIi_CpuSend32 - bl FUN_020B8264 - ldr r1, _020B9C38 ; =0x04000400 - mov r2, #0x30 - bl MIi_CpuSend32 - ldr r2, _020B9C4C ; =0x00001B19 - ldr r1, _020B9C38 ; =0x04000400 - ldr r0, _020B9C30 ; =UNK_021066F4 - str r2, [r1, #0x0] - mov r2, #0x3c - bl MIi_CpuSend32 - b _020B9BA4 -_020B9B48: - ands r0, r1, #0x2 - beq _020B9B94 - ldr r3, _020B9C44 ; =0x00171012 - ldr r1, _020B9C38 ; =0x04000400 - ldr r0, _020B9C48 ; =UNK_021066EC - mov r2, #0x8 - str r3, [r1, #0x0] - bl MIi_CpuSend32 - bl FUN_020B8344 - ldr r1, _020B9C38 ; =0x04000400 - mov r2, #0x30 - bl MIi_CpuSend32 - ldr r2, _020B9C4C ; =0x00001B19 - ldr r1, _020B9C38 ; =0x04000400 - ldr r0, _020B9C30 ; =UNK_021066F4 - str r2, [r1, #0x0] - mov r2, #0x3c - bl MIi_CpuSend32 - b _020B9BA4 -_020B9B94: - ldr r0, _020B9C50 ; =UNK_021066E8 - ldr r1, _020B9C38 ; =0x04000400 - mov r2, #0x48 - bl MIi_CpuSend32 -_020B9BA4: - cmp r8, #0x3 - movne r0, #0x0 - bne _020B9BD0 - ldr r1, [r10, #0x8] - mov r0, r10 - bic r1, r1, #0x40 - str r1, [r10, #0x8] - ldr r1, [r10, #0x2c] - blx r1 - ldr r0, [r10, #0x8] - and r0, r0, #0x40 -_020B9BD0: - cmp r9, #0x20 - beq _020B9BE0 - cmp r9, #0x60 - bne _020B9C14 -_020B9BE0: - cmp r0, #0x0 - add r7, r7, #0x1 - bne _020B9C14 - ldr r0, [r10, #0x8] - ands r0, r0, #0x100 - bne _020B9C14 - ldr r0, [r10, #0x0] - add r1, sp, #0x4 - ldrb r3, [r0, #0x2] - mov r0, #0x13 - mov r2, #0x1 - str r3, [sp, #0x4] - bl FUN_020BB1C0 -_020B9C14: - ldr r0, [r10, #0x0] - add r0, r0, r7 - str r0, [r10, #0x0] - add sp, sp, #0xcc - ldmia sp!, {r4-r11,pc} - .balign 4 -_020B9C28: .word UNK_02106718 -_020B9C2C: .word UNK_02106724 -_020B9C30: .word UNK_021066F4 -_020B9C34: .word 0x00151110 -_020B9C38: .word 0x04000400 -_020B9C3C: .word UNK_021CED18 -_020B9C40: .word UNK_021CED64 -_020B9C44: .word 0x00171012 -_020B9C48: .word UNK_021066EC -_020B9C4C: .word 0x00001B19 -_020B9C50: .word UNK_021066E8 - - arm_func_start FUN_020B9C54 -FUN_020B9C54: ; 0x020B9C54 - stmdb sp!, {r4-r10,lr} - sub sp, sp, #0xc8 - mov r9, r0 - ldr r2, [r9, #0x8] - mov r8, r1 - ands r0, r2, #0x200 - mov r6, #0x2 - ldr r5, _020B9F58 ; =UNK_021066D0 - ldr r4, _020B9F5C ; =UNK_021066DC - beq _020B9CB8 - cmp r8, #0x40 - beq _020B9C8C - cmp r8, #0x60 - bne _020B9C90 -_020B9C8C: - add r6, r6, #0x1 -_020B9C90: - cmp r8, #0x20 - beq _020B9CA0 - cmp r8, #0x60 - bne _020B9CA4 -_020B9CA0: - add r6, r6, #0x1 -_020B9CA4: - ldr r0, [r9, #0x0] - add sp, sp, #0xc8 - add r0, r0, r6 - str r0, [r9, #0x0] - ldmia sp!, {r4-r10,pc} -_020B9CB8: - cmp r8, #0x40 - beq _020B9CC8 - cmp r8, #0x60 - bne _020B9D00 -_020B9CC8: - add r6, r6, #0x1 - ands r0, r2, #0x100 - bne _020B9D00 - cmp r8, #0x40 - ldreq r0, [r9, #0x0] - add r1, sp, #0x0 - ldreqb r0, [r0, #0x2] - mov r2, #0x1 - streq r0, [sp, #0x0] - ldrne r0, [r9, #0x0] - ldrneb r0, [r0, #0x3] - strne r0, [sp, #0x0] - mov r0, #0x14 - bl FUN_020BB1C0 -_020B9D00: - ldr r0, [r9, #0x28] - cmp r0, #0x0 - ldrneb r7, [r9, #0x93] - moveq r7, #0x0 - cmp r7, #0x1 - bne _020B9D4C - ldr r1, [r9, #0x8] - mov r0, r9 - bic r1, r1, #0x40 - str r1, [r9, #0x8] - ldr r1, [r9, #0x28] - blx r1 - ldr r0, [r9, #0x28] - cmp r0, #0x0 - ldrneb r7, [r9, #0x93] - ldr r0, [r9, #0x8] - moveq r7, #0x0 - and r1, r0, #0x40 - b _020B9D50 -_020B9D4C: - mov r1, #0x0 -_020B9D50: - ldr r0, [r9, #0x8] - ands r0, r0, #0x100 - bne _020B9ED4 - cmp r1, #0x0 - bne _020B9ED4 - bl FUN_020BB394 - ldr r2, _020B9F60 ; =0x00151110 - ldr r1, _020B9F64 ; =0x04000400 - mov r0, #0x0 - str r2, [r1, #0x0] - str r0, [r1, #0x0] - str r0, [r1, #0x0] - add r10, sp, #0x8 -_020B9D84: - mov r0, r10 - bl G3X_GetClipMtx - cmp r0, #0x0 - bne _020B9D84 - ldr r0, _020B9F68 ; =UNK_021CED18 - ldr r1, [r0, #0xfc] - ands r0, r1, #0x1 - beq _020B9DC4 - bl FUN_020B82A4 - add r1, sp, #0x48 - bl MTX_Copy43To44_ - add r0, sp, #0x8 - add r1, sp, #0x48 - mov r2, r0 - bl MTX_Concat44 - b _020B9DE8 -_020B9DC4: - ands r0, r1, #0x2 - beq _020B9DE8 - ldr r0, _020B9F6C ; =UNK_021CED64 - add r1, sp, #0x88 - bl MTX_Copy43To44_ - add r0, sp, #0x8 - add r1, sp, #0x88 - mov r2, r0 - bl MTX_Concat44 -_020B9DE8: - ldr r1, [sp, #0x38] - add r0, sp, #0x8 - str r1, [r5, #0x0] - ldr r1, [sp, #0x3c] - str r1, [r5, #0x4] - ldr r1, [sp, #0x40] - str r1, [r5, #0x8] - bl VEC_Mag - str r0, [r4, #0x0] - add r0, sp, #0x18 - bl VEC_Mag - str r0, [r4, #0x4] - add r0, sp, #0x28 - bl VEC_Mag - ldr r1, _020B9F68 ; =UNK_021CED18 - str r0, [r4, #0x8] - ldr r1, [r1, #0xfc] - ands r0, r1, #0x1 - beq _020B9E78 - ldr r3, _020B9F70 ; =0x00171012 - ldr r1, _020B9F64 ; =0x04000400 - ldr r0, _020B9F74 ; =UNK_021066A4 - mov r2, #0x8 - str r3, [r1, #0x0] - bl MIi_CpuSend32 - bl FUN_020B8264 - ldr r1, _020B9F64 ; =0x04000400 - mov r2, #0x30 - bl MIi_CpuSend32 - ldr r2, _020B9F78 ; =0x00001B19 - ldr r1, _020B9F64 ; =0x04000400 - ldr r0, _020B9F7C ; =UNK_021066AC - str r2, [r1, #0x0] - mov r2, #0x3c - bl MIi_CpuSend32 - b _020B9ED4 -_020B9E78: - ands r0, r1, #0x2 - beq _020B9EC4 - ldr r3, _020B9F70 ; =0x00171012 - ldr r1, _020B9F64 ; =0x04000400 - ldr r0, _020B9F74 ; =UNK_021066A4 - mov r2, #0x8 - str r3, [r1, #0x0] - bl MIi_CpuSend32 - bl FUN_020B8344 - ldr r1, _020B9F64 ; =0x04000400 - mov r2, #0x30 - bl MIi_CpuSend32 - ldr r2, _020B9F78 ; =0x00001B19 - ldr r1, _020B9F64 ; =0x04000400 - ldr r0, _020B9F7C ; =UNK_021066AC - str r2, [r1, #0x0] - mov r2, #0x3c - bl MIi_CpuSend32 - b _020B9ED4 -_020B9EC4: - ldr r0, _020B9F80 ; =UNK_021066A0 - ldr r1, _020B9F64 ; =0x04000400 - mov r2, #0x48 - bl MIi_CpuSend32 -_020B9ED4: - cmp r7, #0x3 - movne r0, #0x0 - bne _020B9F00 - ldr r1, [r9, #0x8] - mov r0, r9 - bic r1, r1, #0x40 - str r1, [r9, #0x8] - ldr r1, [r9, #0x28] - blx r1 - ldr r0, [r9, #0x8] - and r0, r0, #0x40 -_020B9F00: - cmp r8, #0x20 - beq _020B9F10 - cmp r8, #0x60 - bne _020B9F44 -_020B9F10: - cmp r0, #0x0 - add r6, r6, #0x1 - bne _020B9F44 - ldr r0, [r9, #0x8] - ands r0, r0, #0x100 - bne _020B9F44 - ldr r0, [r9, #0x0] - add r1, sp, #0x4 - ldrb r3, [r0, #0x2] - mov r0, #0x13 - mov r2, #0x1 - str r3, [sp, #0x4] - bl FUN_020BB1C0 -_020B9F44: - ldr r0, [r9, #0x0] - add r0, r0, r6 - str r0, [r9, #0x0] - add sp, sp, #0xc8 - ldmia sp!, {r4-r10,pc} - .balign 4 -_020B9F58: .word UNK_021066D0 -_020B9F5C: .word UNK_021066DC -_020B9F60: .word 0x00151110 -_020B9F64: .word 0x04000400 -_020B9F68: .word UNK_021CED18 -_020B9F6C: .word UNK_021CED64 -_020B9F70: .word 0x00171012 -_020B9F74: .word UNK_021066A4 -_020B9F78: .word 0x00001B19 -_020B9F7C: .word UNK_021066AC -_020B9F80: .word UNK_021066A0 - - arm_func_start FUN_020B9F84 -FUN_020B9F84: ; 0x020B9F84 - stmdb sp!, {r4-r11,lr} - sub sp, sp, #0x14 - mov r10, r0 - ldr r0, [r10, #0x0] - mov r9, r1 - ldrb r4, [r0, #0x1] - mov r7, #0x4 - strb r4, [r10, #0xae] - ldr r0, [r10, #0x8] - orr r0, r0, #0x10 - str r0, [r10, #0x8] - ldr r1, [r10, #0x8] - ands r0, r1, #0x400 - beq _020BA01C - cmp r9, #0x40 - beq _020B9FCC - cmp r9, #0x60 - bne _020B9FD0 -_020B9FCC: - add r7, r7, #0x1 -_020B9FD0: - cmp r9, #0x20 - beq _020B9FE0 - cmp r9, #0x60 - bne _020BA008 -_020B9FE0: - add r7, r7, #0x1 - ands r0, r1, #0x100 - bne _020BA008 - ldr r0, [r10, #0x0] - add r1, sp, #0x8 - ldrb r3, [r0, #0x4] - mov r0, #0x14 - mov r2, #0x1 - str r3, [sp, #0x8] - bl FUN_020BB1C0 -_020BA008: - ldr r0, [r10, #0x0] - add sp, sp, #0x14 - add r0, r0, r7 - str r0, [r10, #0x0] - ldmia sp!, {r4-r11,pc} -_020BA01C: - cmp r9, #0x40 - beq _020BA02C - cmp r9, #0x60 - bne _020BA068 -_020BA02C: - cmp r9, #0x40 - ldreq r0, [r10, #0x0] - add r7, r7, #0x1 - ldreqb r0, [r0, #0x4] - streq r0, [sp, #0xc] - ldrne r0, [r10, #0x0] - ldrneb r0, [r0, #0x5] - strne r0, [sp, #0xc] - ldr r0, [r10, #0x8] - ands r0, r0, #0x100 - bne _020BA068 - add r1, sp, #0xc - mov r0, #0x14 - mov r2, #0x1 - bl FUN_020BB1C0 -_020BA068: - add r0, r10, #0x12c - str r0, [r10, #0xb4] - ldr r0, [r10, #0x24] - cmp r0, #0x0 - ldrneb r8, [r10, #0x92] - moveq r8, #0x0 - cmp r8, #0x1 - bne _020BA0BC - ldr r1, [r10, #0x8] - mov r0, r10 - bic r1, r1, #0x40 - str r1, [r10, #0x8] - ldr r1, [r10, #0x24] - blx r1 - ldr r0, [r10, #0x24] - cmp r0, #0x0 - ldrneb r8, [r10, #0x92] - ldr r0, [r10, #0x8] - moveq r8, #0x0 - and r0, r0, #0x40 - b _020BA0C0 -_020BA0BC: - mov r0, #0x0 -_020BA0C0: - cmp r0, #0x0 - bne _020BA2CC - ldr r0, [r10, #0x4] - ldr r1, [r0, #0x34] - cmp r1, #0x0 - beq _020BA0F4 - mov r0, #0x58 - mla r6, r4, r0, r1 - ldr r0, [r10, #0x8] - ands r0, r0, #0x80 - moveq r0, #0x1 - movne r0, #0x0 - b _020BA0FC -_020BA0F4: - add r6, r10, #0x12c - mov r0, #0x0 -_020BA0FC: - cmp r0, #0x0 - bne _020BA2C8 - mov r0, #0x0 - str r0, [r6, #0x0] - ldr r0, [r10, #0x4] - ldr r1, [r0, #0x10] - cmp r1, #0x0 - beq _020BA134 - ldr r3, [r0, #0x14] - mov r0, r6 - mov r2, r4 - blx r3 - cmp r0, #0x0 - bne _020BA2C8 -_020BA134: - ldr r2, [r10, #0xd4] - ldrh r0, [r2, #0x6] - ldrh r1, [r2, r0] - add r0, r2, r0 - mla r0, r1, r4, r0 - ldr r1, [r0, #0x4] - ldrh r0, [r2, r1] - add r4, r2, r1 - add r5, r4, #0x4 - ands r0, r0, #0x1 - ldrne r0, [r6, #0x0] - orrne r0, r0, #0x4 - strne r0, [r6, #0x0] - bne _020BA188 - ldr r0, [r5, #0x0] - str r0, [r6, #0x4c] - ldr r0, [r5, #0x4] - str r0, [r6, #0x50] - ldr r0, [r5, #0x8] - add r5, r5, #0xc - str r0, [r6, #0x54] -_020BA188: - ldrh r1, [r4, #0x0] - ands r0, r1, #0x2 - ldrne r0, [r6, #0x0] - orrne r0, r0, #0x2 - strne r0, [r6, #0x0] - bne _020BA2B0 - ands r0, r1, #0x8 - beq _020BA264 - and r1, r1, #0xf0 - mov r11, r1, asr #0x4 - ldrsh r1, [r5, #0x0] - add r0, r6, #0x28 - str r1, [sp, #0x0] - ldrsh r1, [r5, #0x2] - str r1, [sp, #0x4] - bl MI_Zero36B - ldrh r0, [r4, #0x0] - add r1, r6, r11, lsl #0x2 - add r5, r5, #0x4 - ands r0, r0, #0x100 - movne r0, #0x1000 - rsbne r2, r0, #0x0 - moveq r2, #0x1000 - str r2, [r1, #0x28] - ldr r0, _020BA3B4 ; =UNK_020FF9F0 - ldr r1, _020BA3B8 ; =UNK_020FF9F1 - ldrb r0, [r0, r11, lsl #0x2] - add r2, r6, r0, lsl #0x2 - ldr r0, [sp, #0x0] - str r0, [r2, #0x28] - ldrb r0, [r1, r11, lsl #0x2] - add r1, r6, r0, lsl #0x2 - ldr r0, [sp, #0x4] - str r0, [r1, #0x28] - ldrh r0, [r4, #0x0] - ands r0, r0, #0x200 - ldrne r0, [sp, #0x4] - rsbne r0, r0, #0x0 - strne r0, [sp, #0x4] - ldr r0, _020BA3BC ; =UNK_020FF9F2 - ldrb r0, [r0, r11, lsl #0x2] - add r1, r6, r0, lsl #0x2 - ldr r0, [sp, #0x4] - str r0, [r1, #0x28] - ldrh r0, [r4, #0x0] - ands r0, r0, #0x400 - ldrne r0, [sp, #0x0] - rsbne r0, r0, #0x0 - strne r0, [sp, #0x0] - ldr r0, _020BA3C0 ; =UNK_020FF9F3 - ldrb r0, [r0, r11, lsl #0x2] - add r1, r6, r0, lsl #0x2 - ldr r0, [sp, #0x0] - str r0, [r1, #0x28] - b _020BA2B0 -_020BA264: - ldrsh r0, [r4, #0x2] - str r0, [r6, #0x28] - ldrsh r0, [r5, #0x0] - str r0, [r6, #0x2c] - ldrsh r0, [r5, #0x2] - str r0, [r6, #0x30] - ldrsh r0, [r5, #0x4] - str r0, [r6, #0x34] - ldrsh r0, [r5, #0x6] - str r0, [r6, #0x38] - ldrsh r0, [r5, #0x8] - str r0, [r6, #0x3c] - ldrsh r0, [r5, #0xa] - str r0, [r6, #0x40] - ldrsh r0, [r5, #0xc] - str r0, [r6, #0x44] - ldrsh r0, [r5, #0xe] - add r5, r5, #0x10 - str r0, [r6, #0x48] -_020BA2B0: - ldrh r3, [r4, #0x0] - ldr r2, [r10, #0x0] - ldr r4, [r10, #0xe8] - mov r0, r6 - mov r1, r5 - blx r4 -_020BA2C8: - str r6, [r10, #0xb4] -_020BA2CC: - cmp r8, #0x2 - bne _020BA308 - ldr r1, [r10, #0x8] - mov r0, r10 - bic r1, r1, #0x40 - str r1, [r10, #0x8] - ldr r1, [r10, #0x24] - blx r1 - ldr r0, [r10, #0x24] - cmp r0, #0x0 - ldrneb r8, [r10, #0x92] - ldr r0, [r10, #0x8] - moveq r8, #0x0 - and r0, r0, #0x40 - b _020BA30C -_020BA308: - mov r0, #0x0 -_020BA30C: - cmp r0, #0x0 - bne _020BA32C - ldr r0, [r10, #0x8] - ands r0, r0, #0x100 - bne _020BA32C - ldr r0, [r10, #0xb4] - ldr r1, [r10, #0xec] - blx r1 -_020BA32C: - mov r0, #0x0 - str r0, [r10, #0xb4] - cmp r8, #0x3 - bne _020BA35C - ldr r1, [r10, #0x8] - mov r0, r10 - bic r1, r1, #0x40 - str r1, [r10, #0x8] - ldr r1, [r10, #0x24] - blx r1 - ldr r0, [r10, #0x8] - and r0, r0, #0x40 -_020BA35C: - cmp r9, #0x20 - beq _020BA36C - cmp r9, #0x60 - bne _020BA3A0 -_020BA36C: - cmp r0, #0x0 - add r7, r7, #0x1 - bne _020BA3A0 - ldr r0, [r10, #0x8] - ands r0, r0, #0x100 - bne _020BA3A0 - ldr r0, [r10, #0x0] - add r1, sp, #0x10 - ldrb r3, [r0, #0x4] - mov r0, #0x13 - mov r2, #0x1 - str r3, [sp, #0x10] - bl FUN_020BB1C0 -_020BA3A0: - ldr r0, [r10, #0x0] - add r0, r0, r7 - str r0, [r10, #0x0] - add sp, sp, #0x14 - ldmia sp!, {r4-r11,pc} - .balign 4 -_020BA3B4: .word UNK_020FF9F0 -_020BA3B8: .word UNK_020FF9F1 -_020BA3BC: .word UNK_020FF9F2 -_020BA3C0: .word UNK_020FF9F3 - - arm_func_start FUN_020BA3C4 -FUN_020BA3C4: ; 0x020BA3C4 - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - mov r4, r0 - ldr r3, [r4, #0x8] - ands r2, r3, #0x200 - bne _020BA420 - ands r2, r3, #0x1 - beq _020BA420 - ands r2, r3, #0x2 - bne _020BA420 - ldr r5, [r4, #0xdc] - ldr r3, [r4, #0x0] - ldrh r2, [r5, #0x6] - ldrb r3, [r3, #0x1] - ldr ip, _020BA434 ; =UNK_02106650 - ldrh lr, [r5, r2] - add r2, r5, r2 - mla r2, lr, r3, r2 - ldr r2, [r2, #0x4] - ldrh lr, [r5, r2] - add r2, r5, r2 - ldr r12, [r12, lr, lsl #0x2] - blx r12 -_020BA420: - ldr r0, [r4, #0x0] - add r0, r0, #0x2 - str r0, [r4, #0x0] - add sp, sp, #0x4 - ldmia sp!, {r4-r5,pc} - .balign 4 -_020BA434: .word UNK_02106650 - - arm_func_start FUN_020BA438 -FUN_020BA438: ; 0x020BA438 - stmdb sp!, {r4-r6,lr} - mov r6, r0 - ldr r0, [r6, #0x20] - mov r5, r2 - cmp r0, #0x0 - ldrneb r4, [r6, #0x91] - moveq r4, #0x0 - cmp r4, #0x1 - bne _020BA490 - ldr r1, [r6, #0x8] - mov r0, r6 - bic r1, r1, #0x40 - str r1, [r6, #0x8] - ldr r1, [r6, #0x20] - blx r1 - ldr r0, [r6, #0x20] - cmp r0, #0x0 - ldrneb r4, [r6, #0x91] - ldr r0, [r6, #0x8] - moveq r4, #0x0 - and r0, r0, #0x40 - b _020BA494 -_020BA490: - mov r0, #0x0 -_020BA494: - cmp r0, #0x0 - bne _020BA4B8 - ldr r0, [r6, #0x8] - ands r0, r0, #0x100 - bne _020BA4B8 - ldr r0, [r5, #0x8] - ldr r1, [r5, #0xc] - add r0, r5, r0 - bl FUN_020BB2B0 -_020BA4B8: - cmp r4, #0x2 - bne _020BA4E8 - ldr r1, [r6, #0x8] - mov r0, r6 - bic r1, r1, #0x40 - str r1, [r6, #0x8] - ldr r1, [r6, #0x20] - blx r1 - ldr r0, [r6, #0x20] - cmp r0, #0x0 - ldrneb r4, [r6, #0x91] - moveq r4, #0x0 -_020BA4E8: - cmp r4, #0x3 - ldmneia sp!, {r4-r6,pc} - ldr r1, [r6, #0x8] - mov r0, r6 - bic r1, r1, #0x40 - str r1, [r6, #0x8] - ldr r1, [r6, #0x20] - blx r1 - ldmia sp!, {r4-r6,pc} - - arm_func_start FUN_020BA50C -FUN_020BA50C: ; 0x020BA50C - stmdb sp!, {r4-r6,lr} - mov r4, r0 - ldr r5, [r4, #0x8] - ands r0, r5, #0x200 - bne _020BA578 - ldr r2, [r4, #0x0] - ands r0, r5, #0x1 - ldrb r3, [r2, #0x1] - bne _020BA544 - ands r0, r5, #0x8 - beq _020BA544 - ldrb r0, [r4, #0xad] - cmp r3, r0 - beq _020BA578 -_020BA544: - ldr r6, [r4, #0xd8] - ldr ip, _020BA588 ; =UNK_02106640 - ldrh r2, [r6, #0xa] - add r5, r6, #0x4 - mov r0, r4 - ldrh lr, [r5, r2] - add r2, r5, r2 - mla r2, lr, r3, r2 - ldr r2, [r2, #0x4] - ldrh lr, [r6, r2] - add r2, r6, r2 - ldr r12, [r12, lr, lsl #0x2] - blx r12 -_020BA578: - ldr r0, [r4, #0x0] - add r0, r0, #0x2 - str r0, [r4, #0x0] - ldmia sp!, {r4-r6,pc} - .balign 4 -_020BA588: .word UNK_02106640 - - arm_func_start FUN_020BA58C -FUN_020BA58C: ; 0x020BA58C - stmdb sp!, {r4-r8,lr} - sub sp, sp, #0x20 - mov r8, r0 - mov r6, r3 - strb r6, [r8, #0xad] - ldr r3, [r8, #0x8] - add r0, r8, #0xf4 - orr r3, r3, #0x8 - str r3, [r8, #0x8] - str r0, [r8, #0xb0] - ldr r0, [r8, #0x1c] - mov r4, r1 - cmp r0, #0x0 - ldrneb r5, [r8, #0x90] - mov r7, r2 - moveq r5, #0x0 - cmp r5, #0x1 - bne _020BA608 - ldr r1, [r8, #0x8] - mov r0, r8 - bic r1, r1, #0x40 - str r1, [r8, #0x8] - ldr r1, [r8, #0x1c] - blx r1 - ldr r0, [r8, #0x1c] - cmp r0, #0x0 - ldrneb r5, [r8, #0x90] - ldr r0, [r8, #0x8] - moveq r5, #0x0 - and r0, r0, #0x40 - b _020BA60C -_020BA608: - mov r0, #0x0 -_020BA60C: - cmp r0, #0x0 - bne _020BA8C0 - ldr r0, [r8, #0x4] - ldr r0, [r0, #0x38] - cmp r0, #0x0 - beq _020BA638 - ldr r1, [r8, #0x8] - ands r1, r1, #0x80 - moveq r1, #0x38 - mlaeq r4, r6, r1, r0 - beq _020BA8BC -_020BA638: - cmp r4, #0x20 - beq _020BA648 - cmp r4, #0x40 - bne _020BA684 -_020BA648: - mov r1, r6, lsr #0x5 - add r1, r8, r1, lsl #0x2 - and r2, r6, #0x1f - mov r3, #0x1 - mov r2, r3, lsl r2 - ldr r1, [r1, #0xbc] - ands r1, r2, r1 - beq _020BA684 - cmp r0, #0x0 - movne r1, #0x38 - mlane r4, r6, r1, r0 - ldreq r1, _020BA9D8 ; =UNK_021CEF80 - moveq r0, #0x38 - mlaeq r4, r6, r0, r1 - b _020BA8BC -_020BA684: - cmp r0, #0x0 - beq _020BA6BC - add r4, r8, #0xbc - mov r3, r6, lsr #0x5 - ldr r2, [r4, r3, lsl #0x2] - and r0, r6, #0x1f - mov r1, #0x1 - orr r0, r2, r1, lsl r0 - str r0, [r4, r3, lsl #0x2] - ldr r1, [r8, #0x4] - mov r0, #0x38 - ldr r1, [r1, #0x38] - mla r4, r6, r0, r1 - b _020BA6F0 -_020BA6BC: - cmp r4, #0x40 - addne r4, r8, #0xf4 - bne _020BA6F0 - add lr, r8, #0xbc - mov r12, r6, lsr #0x5 - ldr r1, _020BA9D8 ; =UNK_021CEF80 - ldr r4, [lr, r12, lsl #0x2] - mov r0, #0x38 - and r2, r6, #0x1f - mov r3, #0x1 - orr r2, r4, r3, lsl r2 - mla r4, r6, r0, r1 - str r2, [lr, r12, lsl #0x2] -_020BA6F0: - mov r0, #0x0 - str r0, [r4, #0x0] - ldr r3, [r8, #0xd8] - ldrh r0, [r3, #0xa] - add r2, r3, #0x4 - ldrh r1, [r2, r0] - add r0, r2, r0 - mla r0, r1, r6, r0 - ldr r0, [r0, #0x4] - ldr r1, _020BA9DC ; =UNK_021CED18 - add r0, r3, r0 - ldrh r0, [r0, #0x1e] - ands r0, r0, #0x20 - ldrne r0, [r4, #0x0] - orrne r0, r0, #0x20 - strne r0, [r4, #0x0] - ldrh r2, [r7, #0x1e] - ldr r0, _020BA9E0 ; =UNK_020FF9D0 - ldr r12, [r1, #0x94] - mov r2, r2, asr #0x6 - and r2, r2, #0x7 - ldr lr, [r0, r2, lsl #0x2] - ldr r2, [r7, #0x4] - mvn r3, lr - and r3, r12, r3 - and r2, r2, lr - orr r2, r3, r2 - str r2, [r4, #0x4] - ldrh r12, [r7, #0x1e] - ldr r3, [r1, #0x98] - ldr r2, [r7, #0x8] - mov r12, r12, asr #0x9 - and r12, r12, #0x7 - ldr r12, [r0, r12, lsl #0x2] - mvn r0, r12 - and r3, r3, r0 - and r0, r2, r12 - orr r0, r3, r0 - str r0, [r4, #0x8] - ldr r3, [r7, #0x10] - ldr r0, [r7, #0xc] - ldr r2, [r1, #0x9c] - mvn r1, r3 - and r1, r2, r1 - and r0, r0, r3 - orr r0, r1, r0 - str r0, [r4, #0xc] - ldr r0, [r7, #0x14] - str r0, [r4, #0x10] - ldrh r0, [r7, #0x1c] - str r0, [r4, #0x14] - ldrh r1, [r7, #0x1e] - ands r0, r1, #0x1 - beq _020BA850 - ands r1, r1, #0x2 - ldrne r1, [r4, #0x0] - add r0, r7, #0x2c - orrne r1, r1, #0x1 - strne r1, [r4, #0x0] - bne _020BA7F4 - ldr r1, [r0, #0x0] - str r1, [r4, #0x18] - ldr r1, [r0, #0x4] - add r0, r0, #0x8 - str r1, [r4, #0x1c] -_020BA7F4: - ldrh r1, [r7, #0x1e] - ands r1, r1, #0x4 - ldrne r1, [r4, #0x0] - orrne r1, r1, #0x2 - strne r1, [r4, #0x0] - bne _020BA820 - ldrsh r1, [r0, #0x0] - strh r1, [r4, #0x20] - ldrsh r1, [r0, #0x2] - add r0, r0, #0x4 - strh r1, [r4, #0x22] -_020BA820: - ldrh r1, [r7, #0x1e] - ands r1, r1, #0x8 - ldreq r1, [r0, #0x0] - streq r1, [r4, #0x24] - ldreq r0, [r0, #0x4] - streq r0, [r4, #0x28] - ldrne r0, [r4, #0x0] - orrne r0, r0, #0x4 - strne r0, [r4, #0x0] - ldr r0, [r4, #0x0] - orr r0, r0, #0x8 - str r0, [r4, #0x0] -_020BA850: - ldr r0, [r8, #0x4] - ldr r1, [r0, #0x8] - cmp r1, #0x0 - beq _020BA890 - mov r2, r6, lsr #0x5 - add r2, r0, r2, lsl #0x2 - and r3, r6, #0x1f - mov r12, #0x1 - mov r3, r12, lsl r3 - ldr r2, [r2, #0x3c] - ands r2, r3, r2 - beq _020BA890 - ldr r3, [r0, #0xc] - mov r0, r4 - mov r2, r6 - blx r3 -_020BA890: - ldr r0, [r4, #0x0] - ands r0, r0, #0x18 - beq _020BA8BC - ldrh r0, [r7, #0x20] - strh r0, [r4, #0x2c] - ldrh r0, [r7, #0x22] - strh r0, [r4, #0x2e] - ldr r0, [r7, #0x24] - str r0, [r4, #0x30] - ldr r0, [r7, #0x28] - str r0, [r4, #0x34] -_020BA8BC: - str r4, [r8, #0xb0] -_020BA8C0: - cmp r5, #0x2 - bne _020BA8FC - ldr r1, [r8, #0x8] - mov r0, r8 - bic r1, r1, #0x40 - str r1, [r8, #0x8] - ldr r1, [r8, #0x1c] - blx r1 - ldr r0, [r8, #0x1c] - cmp r0, #0x0 - ldrneb r5, [r8, #0x90] - ldr r0, [r8, #0x8] - moveq r5, #0x0 - and r0, r0, #0x40 - b _020BA900 -_020BA8FC: - mov r0, #0x0 -_020BA900: - cmp r0, #0x0 - bne _020BA9AC - ldr r4, [r8, #0xb0] - ldr r1, [r4, #0xc] - ands r0, r1, #0x1f0000 - beq _020BA9A0 - ldr r0, [r4, #0x0] - ands r0, r0, #0x20 - bicne r0, r1, #0x1f0000 - strne r0, [r4, #0xc] - ldr r0, [r8, #0x8] - bic r0, r0, #0x2 - str r0, [r8, #0x8] - ldr r0, [r8, #0x8] - ands r0, r0, #0x100 - bne _020BA9AC - ldr r0, _020BA9E4 ; =0x00293130 - ldr r3, _020BA9E8 ; =0x00002B2A - str r0, [sp, #0x0] - ldr r2, [r4, #0x4] - add r1, sp, #0x4 - str r2, [sp, #0x4] - ldr r6, [r4, #0x8] - mov r2, #0x6 - str r6, [sp, #0x8] - ldr r6, [r4, #0xc] - str r6, [sp, #0xc] - str r3, [sp, #0x10] - ldr r3, [r4, #0x10] - str r3, [sp, #0x14] - ldr r3, [r4, #0x14] - str r3, [sp, #0x18] - bl FUN_020BB1C0 - ldr r0, [r4, #0x0] - ands r0, r0, #0x18 - beq _020BA9AC - ldr r1, [r8, #0xf0] - mov r0, r4 - blx r1 - b _020BA9AC -_020BA9A0: - ldr r0, [r8, #0x8] - orr r0, r0, #0x2 - str r0, [r8, #0x8] -_020BA9AC: - cmp r5, #0x3 - addne sp, sp, #0x20 - ldmneia sp!, {r4-r8,pc} - ldr r1, [r8, #0x8] - mov r0, r8 - bic r1, r1, #0x40 - str r1, [r8, #0x8] - ldr r1, [r8, #0x1c] - blx r1 - add sp, sp, #0x20 - ldmia sp!, {r4-r8,pc} - .balign 4 -_020BA9D8: .word UNK_021CEF80 -_020BA9DC: .word UNK_021CED18 -_020BA9E0: .word UNK_020FF9D0 -_020BA9E4: .word 0x00293130 -_020BA9E8: .word 0x00002B2A - - arm_func_start FUN_020BA9EC -FUN_020BA9EC: ; 0x020BA9EC - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - mov r5, r0 - ldr r1, [r5, #0x8] - ands r0, r1, #0x200 - bne _020BAAAC - ands r0, r1, #0x1 - beq _020BAAAC - ldr r0, [r5, #0x18] - cmp r0, #0x0 - ldrneb r4, [r5, #0x8f] - moveq r4, #0x0 - cmp r4, #0x1 - bne _020BAA58 - ldr r1, [r5, #0x8] - mov r0, r5 - bic r1, r1, #0x40 - str r1, [r5, #0x8] - ldr r1, [r5, #0x18] - blx r1 - ldr r0, [r5, #0x18] - cmp r0, #0x0 - ldrneb r4, [r5, #0x8f] - ldr r0, [r5, #0x8] - moveq r4, #0x0 - and r0, r0, #0x40 - b _020BAA5C -_020BAA58: - mov r0, #0x0 -_020BAA5C: - cmp r0, #0x0 - bne _020BAA8C - ldr r0, [r5, #0x0] - ldrb r0, [r0, #0x1] - str r0, [sp, #0x0] - ldr r0, [r5, #0x8] - ands r0, r0, #0x100 - bne _020BAA8C - add r1, sp, #0x0 - mov r0, #0x14 - mov r2, #0x1 - bl FUN_020BB1C0 -_020BAA8C: - cmp r4, #0x3 - bne _020BAAAC - ldr r1, [r5, #0x8] - mov r0, r5 - bic r1, r1, #0x40 - str r1, [r5, #0x8] - ldr r1, [r5, #0x18] - blx r1 -_020BAAAC: - ldr r0, [r5, #0x0] - add r0, r0, #0x2 - str r0, [r5, #0x0] - add sp, sp, #0x4 - ldmia sp!, {r4-r5,pc} - - arm_func_start FUN_020BAAC0 -FUN_020BAAC0: ; 0x020BAAC0 - stmdb sp!, {r4-r6,lr} - mov r6, r0 - ldr r0, [r6, #0x8] - ands r0, r0, #0x200 - bne _020BAC38 - ldr r1, [r6, #0x0] - add r0, r6, #0x184 - ldrb r1, [r1, #0x1] - strb r1, [r6, #0xac] - ldr r1, [r6, #0x8] - ldrb r4, [r6, #0xac] - orr r1, r1, #0x4 - str r1, [r6, #0x8] - str r0, [r6, #0xb8] - ldr r0, [r6, #0x14] - cmp r0, #0x0 - ldrneb r5, [r6, #0x8e] - moveq r5, #0x0 - cmp r5, #0x1 - bne _020BAB44 - ldr r1, [r6, #0x8] - mov r0, r6 - bic r1, r1, #0x40 - str r1, [r6, #0x8] - ldr r1, [r6, #0x14] - blx r1 - ldr r0, [r6, #0x14] - cmp r0, #0x0 - ldrneb r5, [r6, #0x8e] - ldr r0, [r6, #0x8] - moveq r5, #0x0 - and r0, r0, #0x40 - b _020BAB48 -_020BAB44: - mov r0, #0x0 -_020BAB48: - cmp r0, #0x0 - bne _020BABAC - ldr r12, [r6, #0x4] - ldr r1, [r12, #0x18] - cmp r1, #0x0 - beq _020BAB98 - mov r0, r4, lsr #0x5 - add r0, r12, r0, lsl #0x2 - and r2, r4, #0x1f - mov r3, #0x1 - mov r2, r3, lsl r2 - ldr r0, [r0, #0x4c] - ands r0, r2, r0 - beq _020BAB98 - ldr r0, [r6, #0xb8] - ldr r3, [r12, #0x1c] - mov r2, r4 - blx r3 - cmp r0, #0x0 - bne _020BABAC -_020BAB98: - ldr r1, [r6, #0x0] - ldr r0, [r6, #0xb8] - ldrb r1, [r1, #0x2] - and r1, r1, #0x1 - str r1, [r0, #0x0] -_020BABAC: - cmp r5, #0x2 - bne _020BABE8 - ldr r1, [r6, #0x8] - mov r0, r6 - bic r1, r1, #0x40 - str r1, [r6, #0x8] - ldr r1, [r6, #0x14] - blx r1 - ldr r0, [r6, #0x14] - cmp r0, #0x0 - ldrneb r5, [r6, #0x8e] - ldr r0, [r6, #0x8] - moveq r5, #0x0 - and r0, r0, #0x40 - b _020BABEC -_020BABE8: - mov r0, #0x0 -_020BABEC: - cmp r0, #0x0 - bne _020BAC18 - ldr r0, [r6, #0xb8] - ldr r0, [r0, #0x0] - cmp r0, #0x0 - ldrne r0, [r6, #0x8] - orrne r0, r0, #0x1 - strne r0, [r6, #0x8] - ldreq r0, [r6, #0x8] - biceq r0, r0, #0x1 - streq r0, [r6, #0x8] -_020BAC18: - cmp r5, #0x3 - bne _020BAC38 - ldr r1, [r6, #0x8] - mov r0, r6 - bic r1, r1, #0x40 - str r1, [r6, #0x8] - ldr r1, [r6, #0x14] - blx r1 -_020BAC38: - ldr r0, [r6, #0x0] - add r0, r0, #0x3 - str r0, [r6, #0x0] - ldmia sp!, {r4-r6,pc} - - arm_func_start FUN_020BAC48 -FUN_020BAC48: ; 0x020BAC48 - stmdb sp!, {r4,lr} - mov r4, r0 - ldr r1, [r4, #0x10] - cmp r1, #0x0 - beq _020BAC60 - blx r1 -_020BAC60: - ldr r0, [r4, #0x8] - orr r0, r0, #0x20 - str r0, [r4, #0x8] - ldmia sp!, {r4,pc} - - arm_func_start FUN_020BAC70 -FUN_020BAC70: ; 0x020BAC70 - stmdb sp!, {r4,lr} - mov r4, r0 - ldr r1, [r4, #0xc] - cmp r1, #0x0 - beq _020BAC88 - blx r1 -_020BAC88: - ldr r0, [r4, #0x0] - add r0, r0, #0x1 - str r0, [r4, #0x0] - ldmia sp!, {r4,pc} - - arm_func_start FUN_020BAC98 -FUN_020BAC98: ; 0x020BAC98 - stmdb sp!, {r4,lr} - sub sp, sp, #0x188 - mov r4, r0 - ldr r0, [r4, #0x0] - and r0, r0, #0x10 - cmp r0, #0x10 - bne _020BAD2C - add r1, r4, #0x3c - mov r0, #0x0 - mov r2, #0x8 - bl MIi_CpuClear32 - add r1, r4, #0x44 - mov r0, #0x0 - mov r2, #0x8 - bl MIi_CpuClear32 - add r1, r4, #0x4c - mov r0, #0x0 - mov r2, #0x8 - bl MIi_CpuClear32 - ldr r1, [r4, #0x8] - cmp r1, #0x0 - beq _020BACF8 - add r0, r4, #0x3c - bl FUN_020BAD74 -_020BACF8: - ldr r1, [r4, #0x10] - cmp r1, #0x0 - beq _020BAD0C - add r0, r4, #0x44 - bl FUN_020BAD74 -_020BAD0C: - ldr r1, [r4, #0x18] - cmp r1, #0x0 - beq _020BAD20 - add r0, r4, #0x4c - bl FUN_020BAD74 -_020BAD20: - ldr r0, [r4, #0x0] - bic r0, r0, #0x10 - str r0, [r4, #0x0] -_020BAD2C: - ldr r2, _020BAD70 ; =UNK_021CEF7C - ldr r0, [r2, #0x0] - cmp r0, #0x0 - beq _020BAD4C - mov r1, r4 - bl FUN_020BADE4 - add sp, sp, #0x188 - ldmia sp!, {r4,pc} -_020BAD4C: - add r0, sp, #0x0 - mov r1, r4 - str r0, [r2, #0x0] - bl FUN_020BADE4 - ldr r0, _020BAD70 ; =UNK_021CEF7C - mov r1, #0x0 - str r1, [r0, #0x0] - add sp, sp, #0x188 - ldmia sp!, {r4,pc} - .balign 4 -_020BAD70: .word UNK_021CEF7C - - arm_func_start FUN_020BAD74 -FUN_020BAD74: - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - cmp r1, #0x0 - addeq sp, sp, #0x4 - ldmeqia sp!, {r4-r5,pc} - mov r3, #0x1 - mov r4, #0x0 -_020BAD90: - ldrb r2, [r1, #0x19] - mov r5, r4 - cmp r2, #0x0 - ble _020BADD0 -_020BADA0: - add r2, r1, r5, lsl #0x1 - ldrh r2, [r2, #0x1a] - ands r2, r2, #0x100 - movne lr, r5, asr #0x5 - andne r2, r5, #0x1f - ldrne r12, [r0, lr, lsl #0x2] - add r5, r5, #0x1 - orrne r2, r12, r3, lsl r2 - strne r2, [r0, lr, lsl #0x2] - ldrb r2, [r1, #0x19] - cmp r5, r2 - blt _020BADA0 -_020BADD0: - ldr r1, [r1, #0x10] - cmp r1, #0x0 - bne _020BAD90 - add sp, sp, #0x4 - ldmia sp!, {r4-r5,pc} - - arm_func_start FUN_020BADE4 -FUN_020BADE4: ; 0x020BADE4 - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - mov r5, r0 - mov r4, r1 - mov r1, r5 - mov r0, #0x0 - mov r2, #0x188 - bl MIi_CpuClearFast - mov r0, #0x1 - str r0, [r5, #0xc4] - str r0, [r5, #0x8] - ldr r0, [r4, #0x30] - ldr r2, _020BAF60 ; =UNK_02106614 - cmp r0, #0x0 - strne r0, [r5, #0x0] - ldreq r1, [r4, #0x4] - ldreq r0, [r1, #0x4] - addeq r0, r1, r0 - streq r0, [r5, #0x0] - str r4, [r5, #0x4] - ldr r0, [r4, #0x4] - ldr r1, _020BAF64 ; =UNK_02106608 - add r0, r0, #0x40 - str r0, [r5, #0xd4] - ldr r12, [r4, #0x4] - ldr r0, _020BAF68 ; =UNK_02106620 - ldr r3, [r12, #0x8] - add r3, r12, r3 - str r3, [r5, #0xd8] - ldr r12, [r4, #0x4] - ldr r3, [r12, #0xc] - add r3, r12, r3 - str r3, [r5, #0xdc] - ldr r3, [r4, #0x4] - ldrb r3, [r3, #0x15] - ldr r2, [r2, r3, lsl #0x2] - str r2, [r5, #0xe8] - ldr r2, [r4, #0x4] - ldrb r2, [r2, #0x15] - ldr r1, [r1, r2, lsl #0x2] - str r1, [r5, #0xec] - ldr r1, [r4, #0x4] - ldrb r1, [r1, #0x16] - ldr r0, [r0, r1, lsl #0x2] - str r0, [r5, #0xf0] - ldr r0, [r4, #0x4] - ldr r0, [r0, #0x1c] - str r0, [r5, #0xe0] - ldr r0, [r4, #0x4] - ldr r0, [r0, #0x20] - str r0, [r5, #0xe4] - ldr r1, [r4, #0x20] - cmp r1, #0x0 - beq _020BAEE0 - ldrb r0, [r4, #0x24] - cmp r0, #0x20 - bhs _020BAEE0 - add r0, r5, r0, lsl #0x2 - str r1, [r0, #0xc] - ldrb r0, [r4, #0x24] - ldrb r1, [r4, #0x25] - add r0, r5, r0 - strb r1, [r0, #0x8c] -_020BAEE0: - ldr r0, [r4, #0x0] - ands r0, r0, #0x1 - ldrne r0, [r5, #0x8] - orrne r0, r0, #0x80 - strne r0, [r5, #0x8] - ldr r0, [r4, #0x0] - ands r0, r0, #0x2 - ldrne r0, [r5, #0x8] - orrne r0, r0, #0x100 - strne r0, [r5, #0x8] - ldr r0, [r4, #0x0] - ands r0, r0, #0x4 - ldrne r0, [r5, #0x8] - orrne r0, r0, #0x200 - strne r0, [r5, #0x8] - ldr r0, [r4, #0x0] - ands r0, r0, #0x8 - ldrne r0, [r5, #0x8] - orrne r0, r0, #0x400 - strne r0, [r5, #0x8] - ldr r1, [r4, #0x28] - cmp r1, #0x0 - beq _020BAF44 - mov r0, r5 - blx r1 -_020BAF44: - mov r0, r5 - bl FUN_020BAF6C - ldr r0, [r4, #0x0] - bic r0, r0, #0x1 - str r0, [r4, #0x0] - add sp, sp, #0x4 - ldmia sp!, {r4-r5,pc} - .balign 4 -_020BAF60: .word UNK_02106614 -_020BAF64: .word UNK_02106608 -_020BAF68: .word UNK_02106620 - - arm_func_start FUN_020BAF6C -FUN_020BAF6C: - stmdb sp!, {r4-r6,lr} - mov r5, r0 - ldr r6, _020BAFB4 ; =UNK_02106730 - add r4, r5, #0x8 -_020BAF7C: - ldr r1, [r4, #0x0] - mov r0, r5 - bic r1, r1, #0x40 - str r1, [r4, #0x0] - ldr r1, [r5, #0x0] - ldrb r3, [r1, #0x0] - and r1, r3, #0x1f - ldr r2, [r6, r1, lsl #0x2] - and r1, r3, #0xe0 - blx r2 - ldr r0, [r5, #0x8] - ands r0, r0, #0x20 - beq _020BAF7C - ldmia sp!, {r4-r6,pc} - .balign 4 -_020BAFB4: .word UNK_02106730 - - arm_func_start FUN_020BAFB8 -FUN_020BAFB8: ; 0x020BAFB8 - stmdb sp!, {r4-r7,lr} - sub sp, sp, #0x6c - mov r6, r0 - ldr r12, [r6, #0x1c] - mov r4, r1 - mov r5, r2 - mov r7, r3 - cmp r12, #0x1000 - beq _020BAFF8 - add r1, sp, #0x54 - mov r0, #0x1b - mov r2, #0x3 - str r12, [sp, #0x54] - str r12, [sp, #0x58] - str r12, [sp, #0x5c] - bl FUN_020BB1C0 -_020BAFF8: - cmp r7, #0x0 - beq _020BB150 - ldr r0, [r6, #0x8] - add r3, r6, r0 - ldrh r0, [r3, #0xa] - add r2, r3, #0x4 - ldrh r1, [r2, r0] - add r0, r2, r0 - mla r0, r1, r4, r0 - ldr r0, [r0, #0x4] - add r4, r3, r0 - ldr r0, [r4, #0xc] - ands r0, r0, #0x1f0000 - addeq sp, sp, #0x6c - ldmeqia sp!, {r4-r7,pc} - ldr r0, _020BB1B4 ; =0x00293130 - str r0, [sp, #0x0] - ldr r0, [r4, #0x4] - str r0, [sp, #0x4] - ldr r0, [r4, #0x8] - str r0, [sp, #0x8] - ldr r1, [r4, #0xc] - str r1, [sp, #0xc] - ldrh r0, [r4, #0x1e] - ands r0, r0, #0x20 - bicne r0, r1, #0x1f0000 - ldr r1, _020BB1B8 ; =0x00002B2A - strne r0, [sp, #0xc] - str r1, [sp, #0x10] - ldr r2, [r4, #0x14] - ldr r0, [sp, #0x0] - str r2, [sp, #0x14] - ldrh r3, [r4, #0x1c] - add r1, sp, #0x4 - mov r2, #0x6 - str r3, [sp, #0x18] - bl FUN_020BB1C0 - ldrh r0, [r4, #0x1e] - ands r0, r0, #0x1 - beq _020BB150 - ldrb r12, [r6, #0x16] - mov r3, #0x8 - ldr r1, _020BB1BC ; =UNK_02106620 - str r3, [sp, #0x1c] - ldrh r2, [r4, #0x20] - add r0, r4, #0x2c - ldr r1, [r1, r12, lsl #0x2] - strh r2, [sp, #0x48] - ldrh r2, [r4, #0x22] - strh r2, [sp, #0x4a] - ldr r2, [r4, #0x24] - str r2, [sp, #0x4c] - ldr r2, [r4, #0x28] - str r2, [sp, #0x50] - ldrh r2, [r4, #0x1e] - ands r2, r2, #0x2 - orrne r2, r3, #0x1 - strne r2, [sp, #0x1c] - bne _020BB0F8 - ldr r2, [r0, #0x0] - str r2, [sp, #0x34] - ldr r2, [r0, #0x4] - add r0, r0, #0x8 - str r2, [sp, #0x38] -_020BB0F8: - ldrh r2, [r4, #0x1e] - ands r2, r2, #0x4 - ldrne r2, [sp, #0x1c] - orrne r2, r2, #0x2 - strne r2, [sp, #0x1c] - bne _020BB124 - ldrsh r2, [r0, #0x0] - strh r2, [sp, #0x3c] - ldrsh r2, [r0, #0x2] - add r0, r0, #0x4 - strh r2, [sp, #0x3e] -_020BB124: - ldrh r2, [r4, #0x1e] - ands r2, r2, #0x8 - ldreq r2, [r0, #0x0] - streq r2, [sp, #0x40] - ldreq r0, [r0, #0x4] - streq r0, [sp, #0x44] - ldrne r0, [sp, #0x1c] - orrne r0, r0, #0x4 - strne r0, [sp, #0x1c] - add r0, sp, #0x1c - blx r1 -_020BB150: - ldr r0, [r6, #0xc] - add r2, r6, r0 - ldrh r0, [r2, #0x6] - ldrh r1, [r2, r0] - add r0, r2, r0 - mla r0, r1, r5, r0 - ldr r0, [r0, #0x4] - add r2, r2, r0 - ldr r0, [r2, #0x8] - ldr r1, [r2, #0xc] - add r0, r2, r0 - bl FUN_020BB2B0 - ldr r3, [r6, #0x20] - cmp r3, #0x1000 - addeq sp, sp, #0x6c - ldmeqia sp!, {r4-r7,pc} - add r1, sp, #0x60 - mov r0, #0x1b - mov r2, #0x3 - str r3, [sp, #0x60] - str r3, [sp, #0x64] - str r3, [sp, #0x68] - bl FUN_020BB1C0 - add sp, sp, #0x6c - ldmia sp!, {r4-r7,pc} - .balign 4 -_020BB1B4: .word 0x00293130 -_020BB1B8: .word 0x00002B2A -_020BB1BC: .word UNK_02106620 - - arm_func_start FUN_020BB1C0 -FUN_020BB1C0: - stmdb sp!, {r4-r6,lr} - ldr r3, _020BB2A4 ; =UNK_021D1C80 - mov r6, r0 - ldr r12, [r3, #0x0] - mov r5, r1 - mov r4, r2 - cmp r12, #0x0 - beq _020BB278 - ldr r0, _020BB2A8 ; =UNK_021D1C84 - ldr r0, [r0, #0x0] - cmp r0, #0x0 - beq _020BB24C - ldr r2, [r12, #0x0] - add r0, r2, #0x1 - add r1, r0, r4 - cmp r1, #0xc0 - bhi _020BB24C - str r0, [r12, #0x0] - ldr r0, [r3, #0x0] - cmp r4, #0x0 - add r0, r0, r2, lsl #0x2 - str r6, [r0, #0x4] - ldmeqia sp!, {r4-r6,pc} - ldr r2, [r3, #0x0] - mov r0, r5 - ldr r1, [r2], #0x4 - add r1, r2, r1, lsl #0x2 - mov r2, r4, lsl #0x2 - bl MIi_CpuCopyFast - ldr r0, _020BB2A4 ; =UNK_021D1C80 - ldr r1, [r0, #0x0] - ldr r0, [r1, #0x0] - add r0, r0, r4 - str r0, [r1, #0x0] - ldmia sp!, {r4-r6,pc} -_020BB24C: - ldr r0, [r12, #0x0] - cmp r0, #0x0 - beq _020BB260 - bl FUN_020BB394 - b _020BB28C -_020BB260: - ldr r0, _020BB2A8 ; =UNK_021D1C84 - ldr r0, [r0, #0x0] - cmp r0, #0x0 - beq _020BB28C - bl FUN_020BB37C - b _020BB28C -_020BB278: - ldr r0, _020BB2A8 ; =UNK_021D1C84 - ldr r0, [r0, #0x0] - cmp r0, #0x0 - beq _020BB28C - bl FUN_020BB37C -_020BB28C: - ldr r1, _020BB2AC ; =0x04000400 - mov r0, r5 - mov r2, r4, lsl #0x2 - str r6, [r1, #0x0] - bl MIi_CpuSend32 - ldmia sp!, {r4-r6,pc} - .balign 4 -_020BB2A4: .word UNK_021D1C80 -_020BB2A8: .word UNK_021D1C84 -_020BB2AC: .word 0x04000400 - - arm_func_start FUN_020BB2B0 -FUN_020BB2B0: ; 0x020BB2B0 - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - mov r4, r1 - mov r5, r0 - cmp r4, #0x100 - blo _020BB2DC - ldr r1, _020BB360 ; =GXi_DmaId - mvn r0, #0x0 - ldr r1, [r1, #0x0] - cmp r1, r0 - bne _020BB2F8 -_020BB2DC: - mov r2, r4, lsr #0x2 - ldr r0, [r5, #0x0] - add r1, r5, #0x4 - sub r2, r2, #0x1 - bl FUN_020BB1C0 - add sp, sp, #0x4 - ldmia sp!, {r4-r5,pc} -_020BB2F8: - bl FUN_020BB394 - ldr r0, _020BB364 ; =UNK_021D1C88 - ldr r1, _020BB368 ; =UNK_021D1C84 - ldr r0, [r0, #0x0] - mov r2, #0x1 - str r2, [r1, #0x0] - cmp r0, #0x0 - beq _020BB33C - ldr r0, _020BB360 ; =GXi_DmaId - str r1, [sp, #0x0] - ldr r0, [r0, #0x0] - ldr r3, _020BB36C ; =FUN_020BB370 - mov r1, r5 - mov r2, r4 - bl MI_SendGXCommandAsyncFast - add sp, sp, #0x4 - ldmia sp!, {r4-r5,pc} -_020BB33C: - ldr r0, _020BB360 ; =GXi_DmaId - str r1, [sp, #0x0] - ldr r0, [r0, #0x0] - ldr r3, _020BB36C ; =FUN_020BB370 - mov r1, r5 - mov r2, r4 - bl MI_SendGXCommandAsync - add sp, sp, #0x4 - ldmia sp!, {r4-r5,pc} - .balign 4 -_020BB360: .word GXi_DmaId -_020BB364: .word UNK_021D1C88 -_020BB368: .word UNK_021D1C84 -_020BB36C: .word FUN_020BB370 - - arm_func_start FUN_020BB370 -FUN_020BB370: ; 0x020BB370 - mov r1, #0x0 - str r1, [r0, #0x0] - bx lr - - arm_func_start FUN_020BB37C -FUN_020BB37C: ; 0x020BB37C - ldr r0, _020BB390 ; =UNK_021D1C84 -_020BB380: - ldr r1, [r0, #0x0] - cmp r1, #0x0 - bne _020BB380 - bx lr - .balign 4 -_020BB390: .word UNK_021D1C84 - - arm_func_start FUN_020BB394 -FUN_020BB394: ; 0x020BB394 - stmdb sp!, {lr} - sub sp, sp, #0x4 - ldr r0, _020BB3FC ; =UNK_021D1C84 - ldr r0, [r0, #0x0] - cmp r0, #0x0 - beq _020BB3B0 - bl FUN_020BB37C -_020BB3B0: - ldr r0, _020BB400 ; =UNK_021D1C80 - ldr r0, [r0, #0x0] - cmp r0, #0x0 - addeq sp, sp, #0x4 - ldmeqia sp!, {pc} - ldr r2, [r0, #0x0] - cmp r2, #0x0 - addeq sp, sp, #0x4 - ldmeqia sp!, {pc} - ldr r1, _020BB404 ; =0x04000400 - add r0, r0, #0x4 - mov r2, r2, lsl #0x2 - bl MIi_CpuSend32 - ldr r0, _020BB400 ; =UNK_021D1C80 - mov r1, #0x0 - ldr r0, [r0, #0x0] - str r1, [r0, #0x0] - add sp, sp, #0x4 - ldmia sp!, {pc} - .balign 4 -_020BB3FC: .word UNK_021D1C84 -_020BB400: .word UNK_021D1C80 -_020BB404: .word 0x04000400 - - arm_func_start FUN_020BB408 -FUN_020BB408: ; 0x020BB408 - stmdb sp!, {r4-r9,lr} - sub sp, sp, #0x1c - mov r5, r1 - mov r4, r2 - ldr r6, _020BB594 ; =UNK_021CED20 - ldr r1, _020BB598 ; =UNK_021CED64 - add r2, sp, #0x10 - bl MTX_MultVec43 - ldr r1, [sp, #0x14] - ldr r0, [r6, #0x1c] - ldr r2, [sp, #0x10] - smull r8, r7, r1, r0 - ldr r0, [r6, #0xc] - ldr r3, [sp, #0x18] - smlal r8, r7, r2, r0 - ldr r1, [r6, #0x2c] - ldr r0, [r6, #0x3c] - smlal r8, r7, r3, r1 - mov r1, r8, lsr #0xc - orr r1, r1, r7, lsl #0x14 - add r0, r1, r0 - bl FX_InvAsync - ldr r2, [sp, #0x14] - ldr r1, [r6, #0x10] - ldr r0, [r6, #0x14] - smull lr, r8, r2, r1 - smull r12, r9, r2, r0 - ldr r1, [sp, #0x10] - ldr r3, [r6, #0x0] - ldr r0, [sp, #0x18] - smlal lr, r8, r1, r3 - ldr r7, [r6, #0x20] - ldr r2, [r6, #0x30] - smlal lr, r8, r0, r7 - mov r3, lr, lsr #0xc - orr r3, r3, r8, lsl #0x14 - add r7, r3, r2 - ldr r3, [r6, #0x4] - ldr r8, [r6, #0x24] - smlal r12, r9, r1, r3 - smlal r12, r9, r0, r8 - mov r0, r12, lsr #0xc - ldr r2, [r6, #0x34] - orr r0, r0, r9, lsl #0x14 - add r6, r0, r2 - bl FX_GetDivResultFx64c - mov r2, r7, asr #0x1f - umull r9, lr, r0, r7 - mla lr, r0, r2, lr - mov r3, #0x80000000 - mla lr, r1, r7, lr - adds r9, r9, r3 - adc r2, lr, #0x0 - add r2, r2, #0x1000 - add r2, r2, r2, lsr #0x1f - mov r7, r2, asr #0x1 - umull lr, r2, r0, r6 - mov r12, r6, asr #0x1f - mla r2, r0, r12, r2 - mla r2, r1, r6, r2 - adds r3, lr, r3 - adc r0, r2, #0x0 - add r0, r0, #0x1000 - add r0, r0, r0, lsr #0x1f - mov r8, #0x0 - mov r6, r0, asr #0x1 - cmp r7, #0x0 - blt _020BB530 - cmp r6, #0x0 - blt _020BB530 - cmp r7, #0x1000 - bgt _020BB530 - cmp r6, #0x1000 - ble _020BB534 -_020BB530: - mvn r8, #0x0 -_020BB534: - add r0, sp, #0x0 - add r1, sp, #0x4 - add r2, sp, #0x8 - add r3, sp, #0xc - bl FUN_020B8200 - ldr r2, [sp, #0x0] - ldr r0, [sp, #0x8] - ldr r12, [sp, #0xc] - sub r0, r0, r2 - mul r0, r7, r0 - add r1, r0, #0x800 - ldr r3, [sp, #0x4] - add r1, r2, r1, asr #0xc - sub r0, r12, r3 - mul r0, r6, r0 - str r1, [r5, #0x0] - ldr r1, [sp, #0x4] - add r0, r0, #0x800 - rsb r1, r1, #0xbf - sub r1, r1, r0, asr #0xc - mov r0, r8 - str r1, [r4, #0x0] - add sp, sp, #0x1c - ldmia sp!, {r4-r9,pc} - .balign 4 -_020BB594: .word UNK_021CED20 -_020BB598: .word UNK_021CED64 - - arm_func_start FUN_020BB59C -FUN_020BB59C: ; 0x020BB59C - stmdb sp!, {r4-r11,lr} - sub sp, sp, #0x4 - mov r5, r0 - ldr r1, [r5, #0x0] - ldr r0, _020BB7C8 ; =0x30415642 - cmp r1, r0 - bhi _020BB5F4 - cmp r1, r0 - bhs _020BB7B0 - ldr r0, _020BB7CC ; =0x30414D42 - cmp r1, r0 - bhi _020BB5E4 - cmp r1, r0 - bhs _020BB7B0 - ldr r0, _020BB7D0 ; =0x30414342 - cmp r1, r0 - beq _020BB7B0 - b _020BB7BC -_020BB5E4: - ldr r0, _020BB7D4 ; =0x30415442 - cmp r1, r0 - beq _020BB7B0 - b _020BB7BC -_020BB5F4: - ldr r0, _020BB7D8 ; =0x30505442 - cmp r1, r0 - bhi _020BB618 - cmp r1, r0 - bhs _020BB7B0 - ldr r0, _020BB7DC ; =0x30444D42 - cmp r1, r0 - beq _020BB624 - b _020BB7BC -_020BB618: - ldr r0, _020BB7E0 ; =0x30585442 - cmp r1, r0 - bne _020BB7BC -_020BB624: - mov r11, #0x1 - mov r0, r5 - mov r9, r11 - mov r8, r11 - bl FUN_020BC0FC - movs r4, r0 - beq _020BB77C - bl FUN_020B7E1C - mov r7, r0 - mov r0, r4 - bl FUN_020B7E10 - mov r6, r0 - mov r0, r4 - bl FUN_020B7CE4 - mov r10, r0 - cmp r7, #0x0 - beq _020BB68C - ldr r0, _020BB7E4 ; =UNK_021064B8 - mov r1, #0x0 - ldr r3, [r0, #0x0] - mov r0, r7 - mov r2, r1 - blx r3 - movs r7, r0 - moveq r11, #0x0 - b _020BB690 -_020BB68C: - mov r7, #0x0 -_020BB690: - cmp r6, #0x0 - beq _020BB6BC - ldr r1, _020BB7E4 ; =UNK_021064B8 - mov r0, r6 - ldr r3, [r1, #0x0] - mov r1, #0x1 - mov r2, #0x0 - blx r3 - movs r6, r0 - moveq r9, #0x0 - b _020BB6C0 -_020BB6BC: - mov r6, #0x0 -_020BB6C0: - cmp r10, #0x0 - beq _020BB6F0 - ldr r1, _020BB7E8 ; =UNK_021064C0 - ldrh r2, [r4, #0x20] - ldr r3, [r1, #0x0] - mov r0, r10 - and r1, r2, #0x8000 - mov r2, #0x0 - blx r3 - movs r10, r0 - moveq r8, #0x0 - b _020BB6F4 -_020BB6F0: - mov r10, #0x0 -_020BB6F4: - cmp r11, #0x0 - beq _020BB70C - cmp r9, #0x0 - beq _020BB70C - cmp r8, #0x0 - bne _020BB748 -_020BB70C: - ldr r1, _020BB7EC ; =UNK_021064C4 - mov r0, r10 - ldr r1, [r1, #0x0] - blx r1 - ldr r1, _020BB7F0 ; =UNK_021064BC - mov r0, r6 - ldr r1, [r1, #0x0] - blx r1 - ldr r1, _020BB7F0 ; =UNK_021064BC - mov r0, r7 - ldr r1, [r1, #0x0] - blx r1 - add sp, sp, #0x4 - mov r0, #0x0 - ldmia sp!, {r4-r11,pc} -_020BB748: - mov r0, r4 - mov r1, r7 - mov r2, r6 - bl FUN_020B7DFC - mov r0, r4 - mov r1, r10 - bl FUN_020B7CDC - mov r0, r4 - mov r1, #0x1 - bl FUN_020B7D28 - mov r0, r4 - mov r1, #0x1 - bl FUN_020B7C78 -_020BB77C: - ldr r1, [r5, #0x0] - ldr r0, _020BB7DC ; =0x30444D42 - cmp r1, r0 - bne _020BB7A4 - mov r0, r5 - bl FUN_020BC13C - cmp r4, #0x0 - beq _020BB7A4 - mov r1, r4 - bl FUN_020B7790 -_020BB7A4: - add sp, sp, #0x4 - mov r0, #0x1 - ldmia sp!, {r4-r11,pc} -_020BB7B0: - add sp, sp, #0x4 - mov r0, #0x1 - ldmia sp!, {r4-r11,pc} -_020BB7BC: - mov r0, #0x0 - add sp, sp, #0x4 - ldmia sp!, {r4-r11,pc} - .balign 4 -_020BB7C8: .word 0x30415642 -_020BB7CC: .word 0x30414D42 -_020BB7D0: .word 0x30414342 -_020BB7D4: .word 0x30415442 -_020BB7D8: .word 0x30505442 -_020BB7DC: .word 0x30444D42 -_020BB7E0: .word 0x30585442 -_020BB7E4: .word UNK_021064B8 -_020BB7E8: .word UNK_021064C0 -_020BB7EC: .word UNK_021064C4 -_020BB7F0: .word UNK_021064BC - - arm_func_start FUN_020BB7F4 -FUN_020BB7F4: ; 0x020BB7F4 - stmdb sp!, {lr} - sub sp, sp, #0x4 - bl G3X_Init - bl FUN_020B84D8 - ldr r1, _020BB820 ; =0x04000600 - ldr r0, [r1, #0x0] - bic r0, r0, #0xc0000000 - orr r0, r0, #0x80000000 - str r0, [r1, #0x0] - add sp, sp, #0x4 - ldmia sp!, {pc} - .balign 4 -_020BB820: .word 0x04000600 - - arm_func_start FUN_020BB824 -FUN_020BB824: ; 0x020BB824 - stmdb sp!, {r4-r6,lr} - sub sp, sp, #0x40 - mov r6, r0 - mov r5, r1 - bl FUN_020BB394 - ldr r0, _020BB8B4 ; =0x04000440 - mov r2, #0x0 - ldr r1, _020BB8B8 ; =0x04000444 - str r2, [r0, #0x0] - ldr r0, _020BB8BC ; =0x04000454 - str r2, [r1, #0x0] - str r2, [r0, #0x0] - cmp r6, #0x0 - beq _020BB87C - add r4, sp, #0x0 -_020BB860: - mov r0, r4 - bl G3X_GetClipMtx - cmp r0, #0x0 - bne _020BB860 - add r0, sp, #0x0 - mov r1, r6 - bl MTX_Copy44To43_ -_020BB87C: - cmp r5, #0x0 - beq _020BB894 -_020BB884: - mov r0, r5 - bl G3X_GetVectorMtx - cmp r0, #0x0 - bne _020BB884 -_020BB894: - ldr r1, _020BB8C0 ; =0x04000448 - mov r2, #0x1 - ldr r0, _020BB8B4 ; =0x04000440 - str r2, [r1, #0x0] - mov r1, #0x2 - str r1, [r0, #0x0] - add sp, sp, #0x40 - ldmia sp!, {r4-r6,pc} - .balign 4 -_020BB8B4: .word 0x04000440 -_020BB8B8: .word 0x04000444 -_020BB8BC: .word 0x04000454 -_020BB8C0: .word 0x04000448 - - arm_func_start thunk_FUN_020ae84c -thunk_FUN_020ae84c: ; 0x020BB8C4 - ldr ip, _020BB8CC ; =FUN_020AE84C - bx r12 - .balign 4 -_020BB8CC: .word FUN_020AE84C - - arm_func_start FUN_020BB8D0 -FUN_020BB8D0: ; 0x020BB8D0 - stmdb sp!, {r4,lr} - mov r4, r0 - mov r0, r1 - mov r1, r2 - bl FUN_020B81B0 - mov r1, r0 - mov r0, r4 - bl FUN_020AE868 - ldmia sp!, {r4,pc} - - arm_func_start FUN_020BB8F4 -FUN_020BB8F4: ; 0x020BB8F4 - stmdb sp!, {r4-r6,lr} - mov r6, r0 - ldrb r0, [r6, #0x18] - mov r5, r1 - mov r4, #0x0 - cmp r0, #0x0 - ldmlsia sp!, {r4-r6,pc} -_020BB910: - mov r0, r6 - mov r1, r4 - mov r2, r5 - bl FUN_020BBC74 - ldrb r0, [r6, #0x18] - add r4, r4, #0x1 - cmp r4, r0 - blo _020BB910 - ldmia sp!, {r4-r6,pc} - - arm_func_start FUN_020BB934 -FUN_020BB934: ; 0x020BB934 - stmdb sp!, {r4-r6,lr} - mov r6, r0 - ldrb r0, [r6, #0x18] - mov r5, r1 - mov r4, #0x0 - cmp r0, #0x0 - ldmlsia sp!, {r4-r6,pc} -_020BB950: - mov r0, r6 - mov r1, r4 - mov r2, r5 - bl FUN_020BBCB8 - ldrb r0, [r6, #0x18] - add r4, r4, #0x1 - cmp r4, r0 - blo _020BB950 - ldmia sp!, {r4-r6,pc} - - arm_func_start FUN_020BB974 -FUN_020BB974: ; 0x020BB974 - stmdb sp!, {r4-r6,lr} - mov r6, r0 - ldrb r0, [r6, #0x18] - mov r5, r1 - mov r4, #0x0 - cmp r0, #0x0 - ldmlsia sp!, {r4-r6,pc} -_020BB990: - mov r0, r6 - mov r1, r4 - mov r2, r5 - bl FUN_020BBCFC - ldrb r0, [r6, #0x18] - add r4, r4, #0x1 - cmp r4, r0 - blo _020BB990 - ldmia sp!, {r4-r6,pc} - - arm_func_start FUN_020BB9B4 -FUN_020BB9B4: ; 0x020BB9B4 - stmdb sp!, {r4-r6,lr} - mov r6, r0 - ldrb r0, [r6, #0x18] - mov r5, r1 - mov r4, #0x0 - cmp r0, #0x0 - ldmlsia sp!, {r4-r6,pc} -_020BB9D0: - mov r0, r6 - mov r1, r4 - mov r2, r5 - bl FUN_020BBD40 - ldrb r0, [r6, #0x18] - add r4, r4, #0x1 - cmp r4, r0 - blo _020BB9D0 - ldmia sp!, {r4-r6,pc} - - arm_func_start FUN_020BB9F4 -FUN_020BB9F4: ; 0x020BB9F4 - stmdb sp!, {r4-r6,lr} - mov r6, r0 - ldrb r0, [r6, #0x18] - mov r5, r1 - mov r4, #0x0 - cmp r0, #0x0 - ldmlsia sp!, {r4-r6,pc} -_020BBA10: - mov r0, r6 - mov r1, r4 - mov r2, r5 - bl FUN_020BBD84 - ldrb r0, [r6, #0x18] - add r4, r4, #0x1 - cmp r4, r0 - blo _020BBA10 - ldmia sp!, {r4-r6,pc} - - arm_func_start FUN_020BBA34 -FUN_020BBA34: ; 0x020BBA34 - stmdb sp!, {r4-r6,lr} - mov r6, r0 - ldrb r0, [r6, #0x18] - mov r5, r1 - mov r4, #0x0 - cmp r0, #0x0 - ldmlsia sp!, {r4-r6,pc} -_020BBA50: - mov r0, r6 - mov r1, r4 - mov r2, r5 - bl FUN_020BBDC8 - ldrb r0, [r6, #0x18] - add r4, r4, #0x1 - cmp r4, r0 - blo _020BBA50 - ldmia sp!, {r4-r6,pc} - - arm_func_start FUN_020BBA74 -FUN_020BBA74: ; 0x020BBA74 - stmdb sp!, {r4-r6,lr} - mov r6, r0 - ldrb r0, [r6, #0x18] - mov r5, r1 - mov r4, #0x0 - cmp r0, #0x0 - ldmlsia sp!, {r4-r6,pc} -_020BBA90: - mov r0, r6 - mov r1, r4 - mov r2, r5 - bl FUN_020BBE0C - ldrb r0, [r6, #0x18] - add r4, r4, #0x1 - cmp r4, r0 - blo _020BBA90 - ldmia sp!, {r4-r6,pc} - - arm_func_start FUN_020BBAB4 -FUN_020BBAB4: ; 0x020BBAB4 - stmdb sp!, {r4-r6,lr} - mov r6, r0 - ldrb r0, [r6, #0x18] - mov r5, r1 - mov r4, #0x0 - cmp r0, #0x0 - ldmlsia sp!, {r4-r6,pc} -_020BBAD0: - mov r0, r6 - mov r1, r4 - mov r2, r5 - bl FUN_020BBE50 - ldrb r0, [r6, #0x18] - add r4, r4, #0x1 - cmp r4, r0 - blo _020BBAD0 - ldmia sp!, {r4-r6,pc} - - arm_func_start FUN_020BBAF4 -FUN_020BBAF4: ; 0x020BBAF4 - stmdb sp!, {r4-r6,lr} - mov r6, r0 - ldrb r0, [r6, #0x18] - mov r5, r1 - mov r4, #0x0 - cmp r0, #0x0 - ldmlsia sp!, {r4-r6,pc} -_020BBB10: - mov r0, r6 - mov r1, r4 - mov r2, r5 - bl FUN_020BBE94 - ldrb r0, [r6, #0x18] - add r4, r4, #0x1 - cmp r4, r0 - blo _020BBB10 - ldmia sp!, {r4-r6,pc} - - arm_func_start FUN_020BBB34 -FUN_020BBB34: ; 0x020BBB34 - stmdb sp!, {r4-r6,lr} - mov r6, r0 - ldrb r0, [r6, #0x18] - mov r5, r1 - mov r4, #0x0 - cmp r0, #0x0 - ldmlsia sp!, {r4-r6,pc} -_020BBB50: - mov r0, r6 - mov r1, r4 - mov r2, r5 - bl FUN_020BBED8 - ldrb r0, [r6, #0x18] - add r4, r4, #0x1 - cmp r4, r0 - blo _020BBB50 - ldmia sp!, {r4-r6,pc} - - arm_func_start FUN_020BBB74 -FUN_020BBB74: ; 0x020BBB74 - stmdb sp!, {r4-r6,lr} - mov r6, r0 - ldrb r0, [r6, #0x18] - mov r5, r1 - mov r4, #0x0 - cmp r0, #0x0 - ldmlsia sp!, {r4-r6,pc} -_020BBB90: - mov r0, r6 - mov r1, r4 - mov r2, r5 - bl FUN_020BBF1C - ldrb r0, [r6, #0x18] - add r4, r4, #0x1 - cmp r4, r0 - blo _020BBB90 - ldmia sp!, {r4-r6,pc} - - arm_func_start FUN_020BBBB4 -FUN_020BBBB4: ; 0x020BBBB4 - stmdb sp!, {r4-r6,lr} - mov r6, r0 - ldrb r0, [r6, #0x18] - mov r5, r1 - mov r4, #0x0 - cmp r0, #0x0 - ldmlsia sp!, {r4-r6,pc} -_020BBBD0: - mov r0, r6 - mov r1, r4 - mov r2, r5 - bl FUN_020BBF60 - ldrb r0, [r6, #0x18] - add r4, r4, #0x1 - cmp r4, r0 - blo _020BBBD0 - ldmia sp!, {r4-r6,pc} - - arm_func_start FUN_020BBBF4 -FUN_020BBBF4: ; 0x020BBBF4 - stmdb sp!, {r4-r6,lr} - mov r6, r0 - ldrb r0, [r6, #0x18] - mov r5, r1 - mov r4, #0x0 - cmp r0, #0x0 - ldmlsia sp!, {r4-r6,pc} -_020BBC10: - mov r0, r6 - mov r1, r4 - mov r2, r5 - bl FUN_020BBFA4 - ldrb r0, [r6, #0x18] - add r4, r4, #0x1 - cmp r4, r0 - blo _020BBC10 - ldmia sp!, {r4-r6,pc} - - arm_func_start FUN_020BBC34 -FUN_020BBC34: ; 0x020BBC34 - stmdb sp!, {r4-r6,lr} - mov r6, r0 - ldrb r0, [r6, #0x18] - mov r5, r1 - mov r4, #0x0 - cmp r0, #0x0 - ldmlsia sp!, {r4-r6,pc} -_020BBC50: - mov r0, r6 - mov r1, r4 - mov r2, r5 - bl FUN_020BBFE8 - ldrb r0, [r6, #0x18] - add r4, r4, #0x1 - cmp r4, r0 - blo _020BBC50 - ldmia sp!, {r4-r6,pc} - - arm_func_start FUN_020BBC74 -FUN_020BBC74: ; 0x020BBC74 - ldr r3, [r0, #0x8] - cmp r2, #0x0 - add r12, r0, r3 - ldrh r0, [r12, #0xa] - add r3, r12, #0x4 - ldrh r2, [r3, r0] - add r0, r3, r0 - mla r0, r2, r1, r0 - ldr r0, [r0, #0x4] - add r1, r12, r0 - ldrne r0, [r1, #0xc] - orrne r0, r0, #0x800 - strne r0, [r1, #0xc] - ldreq r0, [r1, #0xc] - biceq r0, r0, #0x800 - streq r0, [r1, #0xc] - bx lr - - arm_func_start FUN_020BBCB8 -FUN_020BBCB8: ; 0x020BBCB8 - ldr r3, [r0, #0x8] - cmp r2, #0x0 - add r12, r0, r3 - ldrh r0, [r12, #0xa] - add r3, r12, #0x4 - ldrh r2, [r3, r0] - add r0, r3, r0 - mla r0, r2, r1, r0 - ldr r0, [r0, #0x4] - add r1, r12, r0 - ldrne r0, [r1, #0xc] - orrne r0, r0, #0x1000 - strne r0, [r1, #0xc] - ldreq r0, [r1, #0xc] - biceq r0, r0, #0x1000 - streq r0, [r1, #0xc] - bx lr - - arm_func_start FUN_020BBCFC -FUN_020BBCFC: ; 0x020BBCFC - ldr r3, [r0, #0x8] - cmp r2, #0x0 - add r12, r0, r3 - ldrh r0, [r12, #0xa] - add r3, r12, #0x4 - ldrh r2, [r3, r0] - add r0, r3, r0 - mla r0, r2, r1, r0 - ldr r0, [r0, #0x4] - add r1, r12, r0 - ldrne r0, [r1, #0xc] - orrne r0, r0, #0x2000 - strne r0, [r1, #0xc] - ldreq r0, [r1, #0xc] - biceq r0, r0, #0x2000 - streq r0, [r1, #0xc] - bx lr - - arm_func_start FUN_020BBD40 -FUN_020BBD40: ; 0x020BBD40 - ldr r3, [r0, #0x8] - cmp r2, #0x0 - add r12, r0, r3 - ldrh r0, [r12, #0xa] - add r3, r12, #0x4 - ldrh r2, [r3, r0] - add r0, r3, r0 - mla r0, r2, r1, r0 - ldr r0, [r0, #0x4] - add r1, r12, r0 - ldrne r0, [r1, #0xc] - orrne r0, r0, #0x4000 - strne r0, [r1, #0xc] - ldreq r0, [r1, #0xc] - biceq r0, r0, #0x4000 - streq r0, [r1, #0xc] - bx lr - - arm_func_start FUN_020BBD84 -FUN_020BBD84: ; 0x020BBD84 - ldr r3, [r0, #0x8] - cmp r2, #0x0 - add r12, r0, r3 - ldrh r0, [r12, #0xa] - add r3, r12, #0x4 - ldrh r2, [r3, r0] - add r0, r3, r0 - mla r0, r2, r1, r0 - ldr r0, [r0, #0x4] - add r1, r12, r0 - ldrne r0, [r1, #0xc] - orrne r0, r0, #0x8000 - strne r0, [r1, #0xc] - ldreq r0, [r1, #0xc] - biceq r0, r0, #0x8000 - streq r0, [r1, #0xc] - bx lr - - arm_func_start FUN_020BBDC8 -FUN_020BBDC8: ; 0x020BBDC8 - stmdb sp!, {lr} - sub sp, sp, #0x4 - ldr r3, [r0, #0x8] - add lr, r0, r3 - ldrh r0, [lr, #0xa] - add r12, lr, #0x4 - ldrh r3, [r12, r0] - add r0, r12, r0 - mla r0, r3, r1, r0 - ldr r0, [r0, #0x4] - add r1, lr, r0 - ldr r0, [r1, #0xc] - bic r0, r0, #0x1f0000 - orr r0, r0, r2, lsl #0x10 - str r0, [r1, #0xc] - add sp, sp, #0x4 - ldmia sp!, {pc} - - arm_func_start FUN_020BBE0C -FUN_020BBE0C: ; 0x020BBE0C - stmdb sp!, {lr} - sub sp, sp, #0x4 - ldr r3, [r0, #0x8] - add lr, r0, r3 - ldrh r0, [lr, #0xa] - add r12, lr, #0x4 - ldrh r3, [r12, r0] - add r0, r12, r0 - mla r0, r3, r1, r0 - ldr r0, [r0, #0x4] - add r1, lr, r0 - ldr r0, [r1, #0xc] - bic r0, r0, #0x3f000000 - orr r0, r0, r2, lsl #0x18 - str r0, [r1, #0xc] - add sp, sp, #0x4 - ldmia sp!, {pc} - - arm_func_start FUN_020BBE50 -FUN_020BBE50: ; 0x020BBE50 - stmdb sp!, {lr} - sub sp, sp, #0x4 - ldr r3, [r0, #0x8] - add lr, r0, r3 - ldrh r0, [lr, #0xa] - add r12, lr, #0x4 - ldrh r3, [r12, r0] - add r0, r12, r0 - mla r0, r3, r1, r0 - ldr r0, [r0, #0x4] - add r1, lr, r0 - ldr r0, [r1, #0xc] - bic r0, r0, #0xc0 - orr r0, r0, r2, lsl #0x6 - str r0, [r1, #0xc] - add sp, sp, #0x4 - ldmia sp!, {pc} - - arm_func_start FUN_020BBE94 -FUN_020BBE94: ; 0x020BBE94 - stmdb sp!, {lr} - sub sp, sp, #0x4 - ldr r3, [r0, #0x8] - add lr, r0, r3 - ldrh r0, [lr, #0xa] - add r12, lr, #0x4 - ldrh r3, [r12, r0] - add r0, r12, r0 - mla r0, r3, r1, r0 - ldr r0, [r0, #0x4] - add r1, lr, r0 - ldr r0, [r1, #0xc] - bic r0, r0, #0x30 - orr r0, r0, r2, lsl #0x4 - str r0, [r1, #0xc] - add sp, sp, #0x4 - ldmia sp!, {pc} - - arm_func_start FUN_020BBED8 -FUN_020BBED8: ; 0x020BBED8 - stmdb sp!, {lr} - sub sp, sp, #0x4 - ldr r3, [r0, #0x8] - add lr, r0, r3 - ldrh r0, [lr, #0xa] - add r12, lr, #0x4 - ldrh r3, [r12, r0] - add r0, r12, r0 - mla r0, r3, r1, r0 - ldr r0, [r0, #0x4] - add r1, lr, r0 - ldr r0, [r1, #0xc] - bic r0, r0, #0xf - orr r0, r0, r2 - str r0, [r1, #0xc] - add sp, sp, #0x4 - ldmia sp!, {pc} - - arm_func_start FUN_020BBF1C -FUN_020BBF1C: ; 0x020BBF1C - stmdb sp!, {r4,lr} - ldr r12, [r0, #0x8] - ldr r3, _020BBF5C ; =0x8000FFFF - add r4, r0, r12 - ldrh r0, [r4, #0xa] - add lr, r4, #0x4 - ldrh r12, [lr, r0] - add r0, lr, r0 - mla r0, r12, r1, r0 - ldr r0, [r0, #0x4] - add r1, r4, r0 - ldr r0, [r1, #0x8] - and r0, r0, r3 - orr r0, r0, r2, lsl #0x10 - str r0, [r1, #0x8] - ldmia sp!, {r4,pc} - .balign 4 -_020BBF5C: .word 0x8000FFFF - - arm_func_start FUN_020BBF60 -FUN_020BBF60: ; 0x020BBF60 - stmdb sp!, {r4,lr} - ldr r12, [r0, #0x8] - mov r3, #0x8000 - add r4, r0, r12 - ldrh r12, [r4, #0xa] - add lr, r4, #0x4 - rsb r0, r3, #0x0 - ldrh r3, [lr, r12] - add r12, lr, r12 - mla r1, r3, r1, r12 - ldr r1, [r1, #0x4] - add r3, r4, r1 - ldr r1, [r3, #0x8] - and r0, r1, r0 - orr r0, r0, r2 - str r0, [r3, #0x8] - ldmia sp!, {r4,pc} - - arm_func_start FUN_020BBFA4 -FUN_020BBFA4: ; 0x020BBFA4 - stmdb sp!, {r4,lr} - ldr r12, [r0, #0x8] - ldr r3, _020BBFE4 ; =0x8000FFFF - add r4, r0, r12 - ldrh r0, [r4, #0xa] - add lr, r4, #0x4 - ldrh r12, [lr, r0] - add r0, lr, r0 - mla r0, r12, r1, r0 - ldr r0, [r0, #0x4] - add r1, r4, r0 - ldr r0, [r1, #0x4] - and r0, r0, r3 - orr r0, r0, r2, lsl #0x10 - str r0, [r1, #0x4] - ldmia sp!, {r4,pc} - .balign 4 -_020BBFE4: .word 0x8000FFFF - - arm_func_start FUN_020BBFE8 -FUN_020BBFE8: ; 0x020BBFE8 - stmdb sp!, {r4,lr} - ldr r12, [r0, #0x8] - mov r3, #0x8000 - add r4, r0, r12 - ldrh r12, [r4, #0xa] - add lr, r4, #0x4 - rsb r0, r3, #0x0 - ldrh r3, [lr, r12] - add r12, lr, r12 - mla r1, r3, r1, r12 - ldr r1, [r1, #0x4] - add r3, r4, r1 - ldr r1, [r3, #0x4] - and r0, r1, r0 - orr r0, r0, r2 - str r0, [r3, #0x4] - ldmia sp!, {r4,pc} - - arm_func_start FUN_020BC02C -FUN_020BC02C: ; 0x020BC02C - stmdb sp!, {r4-r6,lr} - ldrb r4, [r0, #0x18] - ldr r3, [r0, #0x8] - mov lr, #0x0 - cmp r4, #0x0 - add r12, r0, r3 - ldmlsia sp!, {r4-r6,pc} - mvn r3, r2 - add r0, r12, #0x4 -_020BC050: - ldrh r5, [r12, #0xa] - cmp r1, #0x0 - ldrh r6, [r0, r5] - add r5, r0, r5 - mla r5, r6, lr, r5 - ldr r5, [r5, #0x4] - add lr, lr, #0x1 - add r6, r12, r5 - ldrne r5, [r6, #0x10] - orrne r5, r5, r2 - strne r5, [r6, #0x10] - ldreq r5, [r6, #0x10] - andeq r5, r5, r3 - streq r5, [r6, #0x10] - cmp lr, r4 - blo _020BC050 - ldmia sp!, {r4-r6,pc} - - arm_func_start FUN_020BC094 -FUN_020BC094: ; 0x020BC094 - stmdb sp!, {r4-r6,lr} - ldrb r4, [r0, #0x18] - ldr r3, [r0, #0x8] - mov lr, #0x0 - cmp r4, #0x0 - add r12, r0, r3 - ldmlsia sp!, {r4-r6,pc} - mvn r3, r2 - add r0, r12, #0x4 -_020BC0B8: - ldrh r5, [r12, #0xa] - cmp r1, #0x0 - ldrh r6, [r0, r5] - add r5, r0, r5 - mla r5, r6, lr, r5 - ldr r5, [r5, #0x4] - add lr, lr, #0x1 - add r6, r12, r5 - ldrneh r5, [r6, #0x1e] - orrne r5, r5, r2 - strneh r5, [r6, #0x1e] - ldreqh r5, [r6, #0x1e] - andeq r5, r5, r3 - streqh r5, [r6, #0x1e] - cmp lr, r4 - blo _020BC0B8 - ldmia sp!, {r4-r6,pc} - - arm_func_start FUN_020BC0FC -FUN_020BC0FC: ; 0x020BC0FC - ldrh r2, [r0, #0xc] - ldrh r1, [r0, #0xe] - add r3, r0, r2 - cmp r1, #0x1 - bne _020BC12C - ldr r2, [r0, #0x0] - ldr r1, _020BC138 ; =0x30585442 - cmp r2, r1 - ldreq r1, [r3, #0x0] - addeq r0, r0, r1 - movne r0, #0x0 - bx lr -_020BC12C: - ldr r1, [r3, #0x4] - add r0, r0, r1 - bx lr - .balign 4 -_020BC138: .word 0x30585442 - - arm_func_start FUN_020BC13C -FUN_020BC13C: - ldrh r1, [r0, #0xc] - ldr r1, [r0, r1] - add r0, r0, r1 - bx lr - - arm_func_start FUN_020BC14C -FUN_020BC14C: - stmdb sp!, {r4-r7,lr} - sub sp, sp, #0x4 - ldrb r2, [r0, #0x1] - cmp r2, #0x10 - bhs _020BC1E4 - cmp r2, #0x0 - ldr lr, [r1, #0x0] - ldr r12, [r1, #0x4] - ldr r3, [r1, #0x8] - ldr r2, [r1, #0xc] - mov r4, #0x0 - bls _020BC294 - ldrh r5, [r0, #0x6] - mov r1, r4 - add r6, r0, r5 - ldrh r5, [r6, #0x2] - add r6, r6, r5 -_020BC190: - ldr r5, [r6, r1] - add r7, r6, r1 - cmp r5, lr - bne _020BC1CC - ldr r5, [r7, #0x4] - cmp r5, r12 - bne _020BC1CC - ldr r5, [r7, #0x8] - cmp r5, r3 - bne _020BC1CC - ldr r5, [r7, #0xc] - cmp r5, r2 - addeq sp, sp, #0x4 - moveq r0, r4 - ldmeqia sp!, {r4-r7,pc} -_020BC1CC: - ldrb r5, [r0, #0x1] - add r4, r4, #0x1 - add r1, r1, #0x10 - cmp r4, r5 - blo _020BC190 - b _020BC294 -_020BC1E4: - add r3, r0, #0x8 - ldrb r2, [r3, #0x1] - cmp r2, #0x0 - beq _020BC294 - ldrb r5, [r3, r2, lsl #0x2] - ldrb r4, [r3, #0x0] - add r2, r3, r2, lsl #0x2 - cmp r4, r5 - bls _020BC238 -_020BC208: - mov r4, r5, asr #0x5 - ldr r12, [r1, r4, lsl #0x2] - and r4, r5, #0x1f - mov r4, r12, lsr r4 - and r4, r4, #0x1 - add r4, r2, r4 - ldrb r12, [r4, #0x1] - ldrb r4, [r2, #0x0] - ldrb r5, [r3, r12, lsl #0x2] - add r2, r3, r12, lsl #0x2 - cmp r4, r5 - bhi _020BC208 -_020BC238: - ldrh r4, [r0, #0x6] - ldr r3, [r1, #0x0] - add r12, r0, r4 - ldrh r4, [r12, #0x2] - ldrb r0, [r2, #0x3] - add r4, r12, r4 - ldr r2, [r4, r0, lsl #0x4] - add r4, r4, r0, lsl #0x4 - cmp r2, r3 - bne _020BC294 - ldr r3, [r4, #0x4] - ldr r2, [r1, #0x4] - cmp r3, r2 - bne _020BC294 - ldr r3, [r4, #0x8] - ldr r2, [r1, #0x8] - cmp r3, r2 - bne _020BC294 - ldr r2, [r4, #0xc] - ldr r1, [r1, #0xc] - cmp r2, r1 - addeq sp, sp, #0x4 - ldmeqia sp!, {r4-r7,pc} -_020BC294: - mvn r0, #0x0 - add sp, sp, #0x4 - ldmia sp!, {r4-r7,pc} - - arm_func_start FUN_020BC2A0 -FUN_020BC2A0: ; 0x020BC2A0 - stmdb sp!, {r4-r7,lr} - sub sp, sp, #0x4 - ldrb r2, [r0, #0x1] - cmp r2, #0x10 - bhs _020BC34C - cmp r2, #0x0 - ldr lr, [r1, #0x0] - ldr r12, [r1, #0x4] - ldr r3, [r1, #0x8] - ldr r2, [r1, #0xc] - mov r4, #0x0 - bls _020BC404 - ldrh r5, [r0, #0x6] - mov r1, r4 - add r6, r0, r5 - ldrh r5, [r6, #0x2] - add r6, r6, r5 -_020BC2E4: - ldr r5, [r6, r1] - add r7, r6, r1 - cmp r5, lr - bne _020BC334 - ldr r5, [r7, #0x4] - cmp r5, r12 - bne _020BC334 - ldr r5, [r7, #0x8] - cmp r5, r3 - bne _020BC334 - ldr r5, [r7, #0xc] - cmp r5, r2 - bne _020BC334 - ldrh r2, [r0, #0x6] - add sp, sp, #0x4 - ldrh r1, [r0, r2] - add r0, r0, r2 - add r0, r0, #0x4 - mla r0, r1, r4, r0 - ldmia sp!, {r4-r7,pc} -_020BC334: - ldrb r5, [r0, #0x1] - add r4, r4, #0x1 - add r1, r1, #0x10 - cmp r4, r5 - blo _020BC2E4 - b _020BC404 -_020BC34C: - add r3, r0, #0x8 - ldrb r2, [r3, #0x1] - cmp r2, #0x0 - beq _020BC404 - ldrb r5, [r3, r2, lsl #0x2] - ldrb r4, [r3, #0x0] - add r2, r3, r2, lsl #0x2 - cmp r4, r5 - bls _020BC3A0 -_020BC370: - mov r4, r5, asr #0x5 - ldr r12, [r1, r4, lsl #0x2] - and r4, r5, #0x1f - mov r4, r12, lsr r4 - and r4, r4, #0x1 - add r4, r2, r4 - ldrb r12, [r4, #0x1] - ldrb r4, [r2, #0x0] - ldrb r5, [r3, r12, lsl #0x2] - add r2, r3, r12, lsl #0x2 - cmp r4, r5 - bhi _020BC370 -_020BC3A0: - ldrh r4, [r0, #0x6] - ldrb r2, [r2, #0x3] - ldr r3, [r1, #0x0] - add r0, r0, r4 - ldrh r4, [r0, #0x2] - add r12, r0, r4 - ldr r4, [r12, r2, lsl #0x4] - add r12, r12, r2, lsl #0x4 - cmp r4, r3 - bne _020BC404 - ldr r4, [r12, #0x4] - ldr r3, [r1, #0x4] - cmp r4, r3 - bne _020BC404 - ldr r4, [r12, #0x8] - ldr r3, [r1, #0x8] - cmp r4, r3 - bne _020BC404 - ldr r3, [r12, #0xc] - ldr r1, [r1, #0xc] - cmp r3, r1 - ldreqh r1, [r0], #0x4 - addeq sp, sp, #0x4 - mlaeq r0, r1, r2, r0 - ldmeqia sp!, {r4-r7,pc} -_020BC404: - mov r0, #0x0 - add sp, sp, #0x4 - ldmia sp!, {r4-r7,pc} - - arm_func_start FUN_020BC410 -FUN_020BC410: ; 0x020BC410 - ldrh r3, [r0, #0x12] - add r0, r0, #0xc - ldrh r2, [r0, r3] - add r0, r0, r3 - add r0, r0, #0x4 - mla r0, r2, r1, r0 - bx lr - - arm_func_start FUN_020BC42C -FUN_020BC42C: ; 0x020BC42C - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - mov r5, r0 - mov r4, r2 - bl FUN_020BC410 - ldrsh r1, [r0, #0x4] - ldrh r3, [r0, #0x6] - mul r2, r1, r4 - add r3, r5, r3 - mov r2, r2, lsr #0xc - b _020BC45C -_020BC458: - sub r2, r2, #0x1 -_020BC45C: - cmp r2, #0x0 - beq _020BC474 - mov r1, r2, lsl #0x2 - ldrh r1, [r3, r1] - cmp r1, r4 - bhs _020BC458 -_020BC474: - ldrh r1, [r0, #0x0] - b _020BC480 -_020BC47C: - add r2, r2, #0x1 -_020BC480: - add r0, r2, #0x1 - cmp r0, r1 - bhs _020BC49C - add r0, r3, r2, lsl #0x2 - ldrh r0, [r0, #0x4] - cmp r0, r4 - bls _020BC47C -_020BC49C: - add r0, r3, r2, lsl #0x2 - add sp, sp, #0x4 - ldmia sp!, {r4-r5,pc} - - arm_func_start FUN_020BC4A8 -FUN_020BC4A8: ; 0x020BC4A8 - ldrh r2, [r0, #0xa] - add r0, r0, r2 - add r0, r0, r1, lsl #0x4 - bx lr - - arm_func_start FUN_020BC4B8 -FUN_020BC4B8: ; 0x020BC4B8 - ldrh r2, [r0, #0x8] - add r0, r0, r2 - add r0, r0, r1, lsl #0x4 - bx lr - - arm_func_start FUN_020BC4C8 -FUN_020BC4C8: ; 0x020BC4C8 - ldrh r2, [r0, #0xc] - ldr r2, [r0, r2] - add r12, r0, r2 - ldrh r2, [r12, #0xe] - add r3, r12, #0x8 - ldrh r0, [r3, r2] - add r2, r3, r2 - add r2, r2, #0x4 - mul r1, r0, r1 - adds r0, r2, r1 - ldrne r0, [r0, #0x0] - addne r0, r12, r0 - moveq r0, #0x0 - bx lr - - arm_func_start FUN_020BC500 -FUN_020BC500: - stmdb sp!, {r4,lr} - ands r4, r3, #0x8000 - beq _020BC5E0 - mov r2, #0x0 - str r2, [r0, #0x20] - ldr r4, [r0, #0x20] - ldr r2, _020BC684 ; =0x00007FFF - str r4, [r0, #0x1c] - ldr r4, [r0, #0x1c] - and r3, r3, r2 - str r4, [r0, #0x18] - ldr r4, [r0, #0x18] - mov r2, #0x3 - str r4, [r0, #0x14] - ldr r4, [r0, #0x14] - mul r2, r3, r2 - str r4, [r0, #0x10] - ldr r4, [r0, #0x10] - mov r3, r2, lsl #0x1 - str r4, [r0, #0xc] - ldr r4, [r0, #0xc] - add r2, r1, r2, lsl #0x1 - str r4, [r0, #0x8] - ldr r4, [r0, #0x8] - str r4, [r0, #0x4] - ldr r4, [r0, #0x4] - str r4, [r0, #0x0] - ldrsh r4, [r1, r3] - ldrsh r12, [r2, #0x2] - ldrsh r3, [r2, #0x4] - and r1, r4, #0xf - ands r4, r4, #0x10 - movne lr, #0x1000 - rsbne lr, lr, #0x0 - moveq lr, #0x1000 - str lr, [r0, r1, lsl #0x2] - ldr r4, _020BC688 ; =UNK_020FFA14 - ldr lr, _020BC68C ; =UNK_020FFA15 - ldrb r4, [r4, r1, lsl #0x2] - str r12, [r0, r4, lsl #0x2] - ldrb lr, [lr, r1, lsl #0x2] - str r3, [r0, lr, lsl #0x2] - ldrsh lr, [r2, #0x0] - ands lr, lr, #0x20 - ldr lr, _020BC690 ; =UNK_020FFA16 - rsbne r3, r3, #0x0 - ldrb lr, [lr, r1, lsl #0x2] - str r3, [r0, lr, lsl #0x2] - ldrsh r2, [r2, #0x0] - ands r2, r2, #0x40 - ldr r2, _020BC694 ; =UNK_020FFA17 - rsbne r12, r12, #0x0 - ldrb r1, [r2, r1, lsl #0x2] - str r12, [r0, r1, lsl #0x2] - mov r0, #0x0 - ldmia sp!, {r4,pc} -_020BC5E0: - ldr r1, _020BC684 ; =0x00007FFF - mov r12, #0x5 - and r1, r3, r1 - mul r3, r1, r12 - add r1, r2, r3, lsl #0x1 - ldrsh lr, [r1, #0x8] - mov r12, r3, lsl #0x1 - mov r3, lr, asr #0x3 - str r3, [r0, #0x10] - ldrsh r12, [r2, r12] - and r2, lr, #0x7 - mov r2, r2, lsl #0x10 - mov r3, r12, asr #0x3 - str r3, [r0, #0x0] - ldrsh r3, [r1, #0x2] - and r12, r12, #0x7 - orr lr, r12, r2, asr #0xd - mov r2, r3, asr #0x3 - str r2, [r0, #0x4] - ldrsh r12, [r1, #0x4] - mov r2, lr, lsl #0x10 - and lr, r3, #0x7 - mov r3, r12, asr #0x3 - str r3, [r0, #0x8] - ldrsh r3, [r1, #0x6] - orr r1, lr, r2, asr #0xd - mov r1, r1, lsl #0x10 - and r2, r12, #0x7 - orr r1, r2, r1, asr #0xd - mov r1, r1, lsl #0x10 - and r2, r3, #0x7 - orr r1, r2, r1, asr #0xd - mov r1, r1, lsl #0x10 - mov r1, r1, asr #0x10 - mov r2, r3, asr #0x3 - mov r1, r1, lsl #0x13 - str r2, [r0, #0xc] - mov r1, r1, asr #0x13 - str r1, [r0, #0x14] - mov r0, #0x1 - ldmia sp!, {r4,pc} - .balign 4 -_020BC684: .word 0x00007FFF -_020BC688: .word UNK_020FFA14 -_020BC68C: .word UNK_020FFA15 -_020BC690: .word UNK_020FFA16 -_020BC694: .word UNK_020FFA17 - - arm_func_start FUN_020BC698 -FUN_020BC698: ; 0x020BC698 - stmdb sp!, {r4-r10,lr} - sub sp, sp, #0x48 - ldrh r4, [r3, #0x4] - ldr r5, [r3, #0xc] - ldr r8, [r3, #0x10] - ldr r7, [r2, #0x4] - mov r12, r1, asr #0xc - sub r4, r4, #0x1 - mov r6, r0 - cmp r12, r4 - add r5, r3, r5 - add r4, r3, r8 - add r8, r3, r7 - ldr r7, [r2, #0x0] - bne _020BC780 - ands r0, r7, #0xc0000000 - beq _020BC6F0 - ands r0, r7, #0x40000000 - andne r0, r12, #0x1 - addne r12, r0, r12, lsr #0x1 - andeq r0, r12, #0x3 - addeq r12, r0, r12, lsr #0x2 -_020BC6F0: - ldr r0, [r3, #0x8] - ands r0, r0, #0x2 - movne r7, #0x0 - bne _020BC7F4 - mov r0, r12, lsl #0x1 - ldrh r3, [r8, r0] - mov r0, r6 - mov r1, r5 - mov r2, r4 - bl FUN_020BC500 - cmp r0, #0x0 - addeq sp, sp, #0x48 - ldmeqia sp!, {r4-r10,pc} - ldr r9, [r6, #0x14] - ldr r5, [r6, #0x4] - ldr r4, [r6, #0x10] - ldr r2, [r6, #0x8] - mul r1, r5, r9 - mul r0, r2, r4 - sub r0, r1, r0 - ldr r7, [r6, #0xc] - ldr r8, [r6, #0x0] - mov r3, r0, asr #0xc - mul r1, r2, r7 - mul r0, r8, r9 - sub r2, r1, r0 - mul r1, r8, r4 - mul r0, r5, r7 - sub r0, r1, r0 - str r3, [r6, #0x18] - mov r1, r2, asr #0xc - str r1, [r6, #0x1c] - mov r0, r0, asr #0xc - add sp, sp, #0x48 - str r0, [r6, #0x20] - ldmia sp!, {r4-r10,pc} -_020BC780: - ands r0, r7, #0xc0000000 - beq _020BC7F0 - ldr r0, _020BC9C4 ; =0x1FFF0000 - ands r2, r7, #0x40000000 - and r0, r7, r0 - mov r0, r0, lsr #0x10 - beq _020BC7C4 - cmp r12, r0 - movcs r12, r0, lsr #0x1 - addcs r7, r12, #0x1 - bhs _020BC7F4 - ldr r0, _020BC9C8 ; =0x00001FFF - mov r12, r12, lsr #0x1 - add r7, r12, #0x1 - and r10, r1, r0 - mov r9, #0x2 - b _020BC800 -_020BC7C4: - cmp r12, r0 - andcs r0, r12, #0x3 - addcs r12, r0, r12, lsr #0x2 - addcs r7, r12, #0x1 - bhs _020BC7F4 - ldr r0, _020BC9CC ; =0x00003FFF - mov r12, r12, lsr #0x2 - add r7, r12, #0x1 - and r10, r1, r0 - mov r9, #0x4 - b _020BC800 -_020BC7F0: - add r7, r12, #0x1 -_020BC7F4: - ldr r0, _020BC9D0 ; =0x00000FFF - mov r9, #0x1 - and r10, r1, r0 -_020BC800: - mov r0, r12, lsl #0x1 - ldrh r3, [r8, r0] - add r0, sp, #0x0 - mov r1, r5 - mov r2, r4 - bl FUN_020BC500 - mov r1, r7, lsl #0x1 - ldrh r3, [r8, r1] - orr r7, r0, #0x0 - add r0, sp, #0x24 - mov r1, r5 - mov r2, r4 - bl FUN_020BC500 - ldr r3, [sp, #0x0] - ldr r1, [sp, #0x24] - mul r2, r3, r9 - sub r1, r1, r3 - mul r1, r10, r1 - add r1, r2, r1, asr #0xc - str r1, [r6, #0x0] - ldr r3, [sp, #0x4] - ldr r1, [sp, #0x28] - mul r2, r3, r9 - sub r1, r1, r3 - mul r1, r10, r1 - add r1, r2, r1, asr #0xc - str r1, [r6, #0x4] - ldr r3, [sp, #0x8] - ldr r1, [sp, #0x2c] - mul r2, r3, r9 - sub r1, r1, r3 - mul r1, r10, r1 - add r1, r2, r1, asr #0xc - str r1, [r6, #0x8] - ldr r3, [sp, #0xc] - ldr r1, [sp, #0x30] - mul r2, r3, r9 - sub r1, r1, r3 - mul r1, r10, r1 - add r1, r2, r1, asr #0xc - str r1, [r6, #0xc] - ldr r2, [sp, #0x10] - ldr r1, [sp, #0x34] - orr r7, r7, r0 - sub r0, r1, r2 - mul r1, r2, r9 - mul r0, r10, r0 - add r0, r1, r0, asr #0xc - str r0, [r6, #0x10] - ldr r2, [sp, #0x14] - ldr r0, [sp, #0x38] - mul r1, r2, r9 - sub r0, r0, r2 - mul r0, r10, r0 - add r2, r1, r0, asr #0xc - mov r0, r6 - mov r1, r6 - str r2, [r6, #0x14] - bl VEC_Normalize - add r0, r6, #0xc - mov r1, r0 - bl VEC_Normalize - cmp r7, #0x0 - bne _020BC968 - ldr r3, [sp, #0x18] - ldr r1, [sp, #0x3c] - mul r2, r3, r9 - sub r1, r1, r3 - mul r1, r10, r1 - add r1, r2, r1, asr #0xc - str r1, [r6, #0x18] - ldr r3, [sp, #0x1c] - ldr r1, [sp, #0x40] - mul r2, r3, r9 - sub r1, r1, r3 - mul r1, r10, r1 - add r1, r2, r1, asr #0xc - str r1, [r6, #0x1c] - ldr r3, [sp, #0x20] - ldr r1, [sp, #0x44] - mul r2, r3, r9 - sub r1, r1, r3 - mul r1, r10, r1 - add r2, r2, r1, asr #0xc - add r0, r6, #0x18 - mov r1, r0 - str r2, [r6, #0x20] - bl VEC_Normalize - add sp, sp, #0x48 - ldmia sp!, {r4-r10,pc} -_020BC968: - ldr r9, [r6, #0x14] - ldr r5, [r6, #0x4] - ldr r8, [r6, #0x0] - ldr r4, [r6, #0x10] - ldr r2, [r6, #0x8] - ldr r7, [r6, #0xc] - mul r1, r5, r9 - mul r0, r2, r4 - sub r0, r1, r0 - mov r3, r0, asr #0xc - mul r1, r2, r7 - mul r0, r8, r9 - sub r2, r1, r0 - mul r1, r8, r4 - mul r0, r5, r7 - sub r0, r1, r0 - str r3, [r6, #0x18] - mov r1, r2, asr #0xc - str r1, [r6, #0x1c] - mov r0, r0, asr #0xc - str r0, [r6, #0x20] - add sp, sp, #0x48 - ldmia sp!, {r4-r10,pc} - .balign 4 -_020BC9C4: .word 0x1FFF0000 -_020BC9C8: .word 0x00001FFF -_020BC9CC: .word 0x00003FFF -_020BC9D0: .word 0x00000FFF - - arm_func_start FUN_020BC9D4 -FUN_020BC9D4: ; 0x020BC9D4 - stmdb sp!, {r4-r9,lr} - sub sp, sp, #0x4c - ldr r5, [r3, #0xc] - ldr r4, [r3, #0x10] - ldr r12, [r2, #0x0] - ldr r2, [r2, #0x4] - mov r6, r0 - mov r0, r1, asr #0xc - add r5, r3, r5 - add r4, r3, r4 - add r8, r3, r2 - ands r1, r12, #0xc0000000 - beq _020BCD40 - ldr r1, _020BCDC0 ; =0x1FFF0000 - ands r2, r12, #0x40000000 - and r1, r12, r1 - mov r2, r1, lsr #0x10 - beq _020BCA44 - ands r1, r0, #0x1 - beq _020BCA3C - cmp r0, r2 - movhi r0, r2, lsr #0x1 - addhi r0, r0, #0x1 - bhi _020BCD40 - mov r7, r0, lsr #0x1 - b _020BCBE8 -_020BCA3C: - mov r0, r0, lsr #0x1 - b _020BCD40 -_020BCA44: - ands r1, r0, #0x3 - beq _020BCBE0 - cmp r0, r2 - addhi r0, r1, r2, lsr #0x2 - bhi _020BCD40 - ands r1, r0, #0x1 - beq _020BCBD8 - ands r1, r0, #0x2 - movne r9, r0, lsr #0x2 - addne r0, r9, #0x1 - moveq r0, r0, lsr #0x2 - addeq r9, r0, #0x1 - mov r0, r0, lsl #0x1 - ldrh r3, [r8, r0] - mov r0, r6 - mov r1, r5 - mov r2, r4 - mov r7, #0x0 - bl FUN_020BC500 - mov r1, r9, lsl #0x1 - ldrh r3, [r8, r1] - orr r7, r7, r0 - add r0, sp, #0x0 - mov r1, r5 - mov r2, r4 - bl FUN_020BC500 - ldr r3, [sp, #0x0] - ldr r1, [r6, #0x0] - mov r2, #0x3 - mla r3, r1, r2, r3 - str r3, [r6, #0x0] - ldr r3, [sp, #0x4] - ldr r1, [r6, #0x4] - orr r7, r7, r0 - mla r0, r1, r2, r3 - str r0, [r6, #0x4] - ldr r3, [sp, #0x8] - ldr r1, [r6, #0x8] - mov r0, r6 - mla r3, r1, r2, r3 - str r3, [r6, #0x8] - ldr r4, [sp, #0xc] - ldr r3, [r6, #0xc] - mov r1, r6 - mla r4, r3, r2, r4 - str r4, [r6, #0xc] - ldr r4, [sp, #0x10] - ldr r3, [r6, #0x10] - mla r4, r3, r2, r4 - str r4, [r6, #0x10] - ldr r4, [sp, #0x14] - ldr r3, [r6, #0x14] - mla r2, r3, r2, r4 - str r2, [r6, #0x14] - bl VEC_Normalize - add r0, r6, #0xc - mov r1, r0 - bl VEC_Normalize - cmp r7, #0x0 - bne _020BCB7C - ldr r1, [sp, #0x18] - ldr r0, [r6, #0x18] - mov r2, #0x3 - mla r1, r0, r2, r1 - str r1, [r6, #0x18] - ldr r3, [sp, #0x1c] - ldr r1, [r6, #0x1c] - add r0, r6, #0x18 - mla r3, r1, r2, r3 - str r3, [r6, #0x1c] - ldr r4, [sp, #0x20] - ldr r3, [r6, #0x20] - mov r1, r0 - mla r2, r3, r2, r4 - str r2, [r6, #0x20] - bl VEC_Normalize - add sp, sp, #0x4c - ldmia sp!, {r4-r9,pc} -_020BCB7C: - ldr r12, [r6, #0x14] - ldr r5, [r6, #0x4] - ldr r4, [r6, #0x10] - ldr r2, [r6, #0x8] - mul r1, r5, r12 - mul r0, r2, r4 - sub r0, r1, r0 - ldr r7, [r6, #0xc] - ldr r8, [r6, #0x0] - mov r3, r0, asr #0xc - mul r1, r2, r7 - mul r0, r8, r12 - sub r2, r1, r0 - mul r1, r8, r4 - mul r0, r5, r7 - sub r0, r1, r0 - str r3, [r6, #0x18] - mov r1, r2, asr #0xc - str r1, [r6, #0x1c] - mov r0, r0, asr #0xc - add sp, sp, #0x4c - str r0, [r6, #0x20] - ldmia sp!, {r4-r9,pc} -_020BCBD8: - mov r7, r0, lsr #0x2 - b _020BCBE8 -_020BCBE0: - mov r0, r0, lsr #0x2 - b _020BCD40 -_020BCBE8: - mov r0, r7, lsl #0x1 - ldrh r3, [r8, r0] - mov r0, r6 - mov r1, r5 - mov r2, r4 - bl FUN_020BC500 - add r1, r8, r7, lsl #0x1 - ldrh r3, [r1, #0x2] - orr r7, r0, #0x0 - add r0, sp, #0x24 - mov r1, r5 - mov r2, r4 - bl FUN_020BC500 - ldr r2, [r6, #0x0] - ldr r1, [sp, #0x24] - orr r7, r7, r0 - add r0, r2, r1 - str r0, [r6, #0x0] - ldr r2, [r6, #0x4] - ldr r1, [sp, #0x28] - mov r0, r6 - add r1, r2, r1 - str r1, [r6, #0x4] - ldr r3, [r6, #0x8] - ldr r2, [sp, #0x2c] - mov r1, r6 - add r2, r3, r2 - str r2, [r6, #0x8] - ldr r3, [r6, #0xc] - ldr r2, [sp, #0x30] - add r2, r3, r2 - str r2, [r6, #0xc] - ldr r3, [r6, #0x10] - ldr r2, [sp, #0x34] - add r2, r3, r2 - str r2, [r6, #0x10] - ldr r3, [r6, #0x14] - ldr r2, [sp, #0x38] - add r2, r3, r2 - str r2, [r6, #0x14] - bl VEC_Normalize - add r0, r6, #0xc - mov r1, r0 - bl VEC_Normalize - cmp r7, #0x0 - bne _020BCCE4 - ldr r2, [r6, #0x18] - ldr r1, [sp, #0x3c] - add r0, r6, #0x18 - add r1, r2, r1 - str r1, [r6, #0x18] - ldr r3, [r6, #0x1c] - ldr r2, [sp, #0x40] - mov r1, r0 - add r2, r3, r2 - str r2, [r6, #0x1c] - ldr r3, [r6, #0x20] - ldr r2, [sp, #0x44] - add r2, r3, r2 - str r2, [r6, #0x20] - bl VEC_Normalize - add sp, sp, #0x4c - ldmia sp!, {r4-r9,pc} -_020BCCE4: - ldr r12, [r6, #0x14] - ldr r5, [r6, #0x4] - ldr r4, [r6, #0x10] - ldr r2, [r6, #0x8] - mul r1, r5, r12 - mul r0, r2, r4 - sub r0, r1, r0 - ldr r7, [r6, #0xc] - ldr r8, [r6, #0x0] - mov r3, r0, asr #0xc - mul r1, r2, r7 - mul r0, r8, r12 - sub r2, r1, r0 - mul r1, r8, r4 - mul r0, r5, r7 - sub r0, r1, r0 - str r3, [r6, #0x18] - mov r1, r2, asr #0xc - str r1, [r6, #0x1c] - mov r0, r0, asr #0xc - add sp, sp, #0x4c - str r0, [r6, #0x20] - ldmia sp!, {r4-r9,pc} -_020BCD40: - mov r0, r0, lsl #0x1 - ldrh r3, [r8, r0] - mov r0, r6 - mov r1, r5 - mov r2, r4 - bl FUN_020BC500 - cmp r0, #0x0 - addeq sp, sp, #0x4c - ldmeqia sp!, {r4-r9,pc} - ldr r12, [r6, #0x14] - ldr r5, [r6, #0x4] - ldr r8, [r6, #0x0] - ldr r4, [r6, #0x10] - ldr r2, [r6, #0x8] - ldr r7, [r6, #0xc] - mul r1, r5, r12 - mul r0, r2, r4 - sub r0, r1, r0 - mov r3, r0, asr #0xc - mul r1, r2, r7 - mul r0, r8, r12 - sub r2, r1, r0 - mul r1, r8, r4 - mul r0, r5, r7 - sub r0, r1, r0 - str r3, [r6, #0x18] - mov r1, r2, asr #0xc - str r1, [r6, #0x1c] - mov r0, r0, asr #0xc - str r0, [r6, #0x20] - add sp, sp, #0x4c - ldmia sp!, {r4-r9,pc} - .balign 4 -_020BCDC0: .word 0x1FFF0000 - - arm_func_start FUN_020BCDC4 -FUN_020BCDC4: ; 0x020BCDC4 - stmdb sp!, {r4-r7,lr} - sub sp, sp, #0x4 - ldrh r4, [r3, #0x4] - ldr r6, [r2, #0x4] - mov r5, r1, asr #0xc - sub r4, r4, #0x1 - cmp r5, r4 - add r6, r3, r6 - ldr r2, [r2, #0x0] - bne _020BCE58 - ands r4, r2, #0xc0000000 - beq _020BCE08 - ands r4, r2, #0x40000000 - andne r4, r5, #0x1 - addne r5, r4, r5, lsr #0x1 - andeq r4, r5, #0x3 - addeq r5, r4, r5, lsr #0x2 -_020BCE08: - ldr r3, [r3, #0x8] - ands r3, r3, #0x2 - movne r4, #0x0 - bne _020BCED4 - ands r1, r2, #0x20000000 - ldreq r2, [r6, r5, lsl #0x3] - addeq r1, r6, r5, lsl #0x3 - streq r2, [r0, #0x0] - ldreq r1, [r1, #0x4] - addeq sp, sp, #0x4 - streq r1, [r0, #0x4] - ldmeqia sp!, {r4-r7,pc} - mov r1, r5, lsl #0x2 - ldrsh r2, [r6, r1] - add r1, r6, r5, lsl #0x2 - add sp, sp, #0x4 - str r2, [r0, #0x0] - ldrsh r1, [r1, #0x2] - str r1, [r0, #0x4] - ldmia sp!, {r4-r7,pc} -_020BCE58: - ands r3, r2, #0xc0000000 - beq _020BCED0 - ldr r3, _020BCF60 ; =0x1FFF0000 - ands r4, r2, #0x40000000 - and r3, r2, r3 - mov r3, r3, lsr #0x10 - beq _020BCEA0 - cmp r5, r3 - movcs r5, r3, lsr #0x1 - addcs r4, r5, #0x1 - bhs _020BCED4 - ldr r3, _020BCF64 ; =0x00001FFF - mov r5, r5, lsr #0x1 - add r4, r5, #0x1 - and lr, r1, r3 - mov r12, #0x2 - mov r3, #0x1 - b _020BCEE4 -_020BCEA0: - cmp r5, r3 - andcs r3, r5, #0x3 - addcs r5, r3, r5, lsr #0x2 - addcs r4, r5, #0x1 - bhs _020BCED4 - ldr r3, _020BCF68 ; =0x00003FFF - mov r5, r5, lsr #0x2 - add r4, r5, #0x1 - and lr, r1, r3 - mov r12, #0x4 - mov r3, #0x2 - b _020BCEE4 -_020BCED0: - add r4, r5, #0x1 -_020BCED4: - ldr r3, _020BCF6C ; =0x00000FFF - mov r12, #0x1 - and lr, r1, r3 - mov r3, #0x0 -_020BCEE4: - ands r1, r2, #0x20000000 - beq _020BCF10 - mov r2, r5, lsl #0x2 - add r1, r6, r5, lsl #0x2 - mov r5, r4, lsl #0x2 - add r4, r6, r4, lsl #0x2 - ldrsh r2, [r6, r2] - ldrsh r1, [r1, #0x2] - ldrsh r5, [r6, r5] - ldrsh r4, [r4, #0x2] - b _020BCF28 -_020BCF10: - add r1, r6, r5, lsl #0x3 - add r7, r6, r4, lsl #0x3 - ldr r2, [r6, r5, lsl #0x3] - ldr r1, [r1, #0x4] - ldr r5, [r6, r4, lsl #0x3] - ldr r4, [r7, #0x4] -_020BCF28: - sub r5, r5, r2 - sub r4, r4, r1 - mul r6, r2, r12 - mul r2, lr, r5 - add r2, r6, r2, asr #0xc - mov r5, r2, asr r3 - mul r2, r1, r12 - mul r1, lr, r4 - add r1, r2, r1, asr #0xc - mov r1, r1, asr r3 - str r5, [r0, #0x0] - str r1, [r0, #0x4] - add sp, sp, #0x4 - ldmia sp!, {r4-r7,pc} - .balign 4 -_020BCF60: .word 0x1FFF0000 -_020BCF64: .word 0x00001FFF -_020BCF68: .word 0x00003FFF -_020BCF6C: .word 0x00000FFF - - arm_func_start FUN_020BCF70 -FUN_020BCF70: ; 0x020BCF70 - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - ldr r4, [r2, #0x4] - ldr r12, [r2, #0x0] - mov r1, r1, asr #0xc - add r3, r3, r4 - ands r2, r12, #0xc0000000 - beq _020BD0D0 - ldr r2, _020BD184 ; =0x1FFF0000 - ands r4, r12, #0x40000000 - and r2, r12, r2 - mov r4, r2, lsr #0x10 - beq _020BCFCC - ands r2, r1, #0x1 - beq _020BCFC4 - cmp r1, r4 - movhi r1, r4, lsr #0x1 - addhi r1, r1, #0x1 - bhi _020BD0D0 - mov r2, r1, lsr #0x1 - b _020BD110 -_020BCFC4: - mov r1, r1, lsr #0x1 - b _020BD0D0 -_020BCFCC: - ands r2, r1, #0x3 - beq _020BD0CC - cmp r1, r4 - addhi r1, r2, r4, lsr #0x2 - bhi _020BD0D0 - ands r2, r1, #0x1 - beq _020BD0C4 - ands r2, r1, #0x2 - movne r1, r1, lsr #0x2 - addne r2, r1, #0x1 - moveq r2, r1, lsr #0x2 - addeq r1, r2, #0x1 - ands r4, r12, #0x20000000 - beq _020BD04C - mov r5, r2, lsl #0x2 - mov r4, r1, lsl #0x2 - ldrsh r12, [r3, r5] - ldrsh r5, [r3, r4] - add r2, r3, r2, lsl #0x2 - add r4, r12, r12, lsl #0x1 - add r4, r5, r4 - mov r4, r4, asr #0x2 - str r4, [r0, #0x0] - add r1, r3, r1, lsl #0x2 - ldrsh r3, [r2, #0x2] - ldrsh r2, [r1, #0x2] - add sp, sp, #0x4 - add r1, r3, r3, lsl #0x1 - add r1, r2, r1 - mov r1, r1, asr #0x2 - str r1, [r0, #0x4] - ldmia sp!, {r4-r5,pc} -_020BD04C: - ldr r5, [r3, r2, lsl #0x3] - ldr r4, [r3, r1, lsl #0x3] - mov r12, r5, asr #0x1f - mov r12, r12, lsl #0x1 - mov lr, r5, lsl #0x1 - orr r12, r12, r5, lsr #0x1f - adds lr, lr, r5 - adc r12, r12, r5, asr #0x1f - adds lr, lr, r4 - adc r12, r12, r4, asr #0x1f - mov lr, lr, lsr #0x2 - orr lr, lr, r12, lsl #0x1e - str lr, [r0, #0x0] - add r2, r3, r2, lsl #0x3 - ldr r12, [r2, #0x4] - add r1, r3, r1, lsl #0x3 - mov r2, r12, asr #0x1f - mov r2, r2, lsl #0x1 - mov r3, r12, lsl #0x1 - ldr r1, [r1, #0x4] - orr r2, r2, r12, lsr #0x1f - adds r3, r3, r12 - adc r2, r2, r12, asr #0x1f - adds r3, r3, r1 - adc r1, r2, r1, asr #0x1f - mov r2, r3, lsr #0x2 - orr r2, r2, r1, lsl #0x1e - str r2, [r0, #0x4] - add sp, sp, #0x4 - ldmia sp!, {r4-r5,pc} -_020BD0C4: - mov r2, r1, lsr #0x2 - b _020BD110 -_020BD0CC: - mov r1, r1, lsr #0x2 -_020BD0D0: - ands r2, r12, #0x20000000 - ldreq r2, [r3, r1, lsl #0x3] - addeq r1, r3, r1, lsl #0x3 - streq r2, [r0, #0x0] - ldreq r1, [r1, #0x4] - addeq sp, sp, #0x4 - streq r1, [r0, #0x4] - ldmeqia sp!, {r4-r5,pc} - mov r2, r1, lsl #0x2 - ldrsh r2, [r3, r2] - add r1, r3, r1, lsl #0x2 - add sp, sp, #0x4 - str r2, [r0, #0x0] - ldrsh r1, [r1, #0x2] - str r1, [r0, #0x4] - ldmia sp!, {r4-r5,pc} -_020BD110: - ands r1, r12, #0x20000000 - beq _020BD150 - mov r1, r2, lsl #0x2 - add r12, r3, r2, lsl #0x2 - ldrsh r2, [r3, r1] - ldrsh r1, [r12, #0x4] - add sp, sp, #0x4 - add r1, r2, r1 - mov r1, r1, asr #0x1 - str r1, [r0, #0x0] - ldrsh r2, [r12, #0x2] - ldrsh r1, [r12, #0x6] - add r1, r2, r1 - mov r1, r1, asr #0x1 - str r1, [r0, #0x4] - ldmia sp!, {r4-r5,pc} -_020BD150: - add r12, r3, r2, lsl #0x3 - ldr r2, [r3, r2, lsl #0x3] - ldr r1, [r12, #0x8] - add r1, r2, r1 - mov r1, r1, asr #0x1 - str r1, [r0, #0x0] - ldr r2, [r12, #0x4] - ldr r1, [r12, #0xc] - add r1, r2, r1 - mov r1, r1, asr #0x1 - str r1, [r0, #0x4] - add sp, sp, #0x4 - ldmia sp!, {r4-r5,pc} - .balign 4 -_020BD184: .word 0x1FFF0000 - - arm_func_start FUN_020BD188 -FUN_020BD188: ; 0x020BD188 - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - ldrh r4, [r3, #0x4] - ldr lr, [r2, #0x4] - mov r12, r1, asr #0xc - sub r4, r4, #0x1 - cmp r12, r4 - add r4, r3, lr - ldr lr, [r2, #0x0] - bne _020BD230 - ands r2, lr, #0xc0000000 - beq _020BD1CC - ands r2, lr, #0x40000000 - andne r2, r12, #0x1 - addne r12, r2, r12, lsr #0x1 - andeq r2, r12, #0x3 - addeq r12, r2, r12, lsr #0x2 -_020BD1CC: - ldr r2, [r3, #0x8] - ands r2, r2, #0x2 - beq _020BD210 - ldr r2, _020BD2E8 ; =0x00000FFF - ands r3, lr, #0x20000000 - and r3, r1, r2 - movne r1, r12, lsl #0x1 - ldrnesh r2, [r4, r1] - ldrnesh r1, [r4, #0x0] - add sp, sp, #0x4 - ldreq r2, [r4, r12, lsl #0x2] - ldreq r1, [r4, #0x0] - sub r1, r1, r2 - mul r1, r3, r1 - add r1, r2, r1, asr #0xc - str r1, [r0, #0x0] - ldmia sp!, {r4-r5,pc} -_020BD210: - ands r1, lr, #0x20000000 - movne r1, r12, lsl #0x1 - ldrnesh r1, [r4, r1] - add sp, sp, #0x4 - strne r1, [r0, #0x0] - ldreq r1, [r4, r12, lsl #0x2] - streq r1, [r0, #0x0] - ldmia sp!, {r4-r5,pc} -_020BD230: - ands r2, lr, #0xc0000000 - beq _020BD298 - ldr r2, _020BD2EC ; =0x1FFF0000 - ands r3, lr, #0x40000000 - and r2, lr, r2 - mov r2, r2, lsr #0x10 - beq _020BD270 - cmp r12, r2 - movcs r12, r2, lsr #0x1 - bhs _020BD298 - ldr r2, _020BD2F0 ; =0x00001FFF - mov r12, r12, lsr #0x1 - and r5, r1, r2 - mov r2, #0x2 - mov r1, #0x1 - b _020BD2A8 -_020BD270: - cmp r12, r2 - andcs r2, r12, #0x3 - addcs r12, r2, r12, lsr #0x2 - bhs _020BD298 - ldr r2, _020BD2F4 ; =0x00003FFF - mov r12, r12, lsr #0x2 - and r5, r1, r2 - mov r2, #0x4 - mov r1, #0x2 - b _020BD2A8 -_020BD298: - ldr r3, _020BD2E8 ; =0x00000FFF - mov r2, #0x1 - and r5, r1, r3 - mov r1, #0x0 -_020BD2A8: - ands r3, lr, #0x20000000 - addne r3, r4, r12, lsl #0x1 - movne lr, r12, lsl #0x1 - ldrnesh r12, [r4, lr] - ldrnesh r3, [r3, #0x2] - addeq r3, r4, r12, lsl #0x2 - ldreq r12, [r4, r12, lsl #0x2] - ldreq r3, [r3, #0x4] - mul r4, r12, r2 - sub r3, r3, r12 - mul r2, r5, r3 - add r2, r4, r2, asr #0xc - mov r1, r2, asr r1 - str r1, [r0, #0x0] - add sp, sp, #0x4 - ldmia sp!, {r4-r5,pc} - .balign 4 -_020BD2E8: .word 0x00000FFF -_020BD2EC: .word 0x1FFF0000 -_020BD2F0: .word 0x00001FFF -_020BD2F4: .word 0x00003FFF - - arm_func_start FUN_020BD2F8 -FUN_020BD2F8: ; 0x020BD2F8 - stmdb sp!, {lr} - sub sp, sp, #0x4 - ldr r12, [r2, #0x4] - ldr r2, [r2, #0x0] - mov r1, r1, asr #0xc - add r3, r3, r12 - ands r12, r2, #0xc0000000 - beq _020BD44C - ldr ip, _020BD46C ; =0x1FFF0000 - ands lr, r2, #0x40000000 - and r12, r2, r12 - mov lr, r12, lsr #0x10 - beq _020BD354 - ands r12, r1, #0x1 - beq _020BD34C - cmp r1, lr - movhi r1, lr, lsr #0x1 - addhi r1, r1, #0x1 - bhi _020BD44C - mov r12, r1, lsr #0x1 - b _020BD400 -_020BD34C: - mov r1, r1, lsr #0x1 - b _020BD44C -_020BD354: - ands r12, r1, #0x3 - beq _020BD3F8 - cmp r1, lr - addhi r1, r12, lr, lsr #0x2 - bhi _020BD44C - ands r12, r1, #0x1 - beq _020BD3F0 - ands r12, r1, #0x2 - movne lr, r1, lsr #0x2 - addne r12, lr, #0x1 - moveq r12, r1, lsr #0x2 - addeq lr, r12, #0x1 - ands r1, r2, #0x20000000 - beq _020BD3B4 - mov r2, r12, lsl #0x1 - mov r1, lr, lsl #0x1 - ldrsh r12, [r3, r2] - ldrsh r2, [r3, r1] - mov r1, #0x3 - add sp, sp, #0x4 - smlabb r1, r12, r1, r2 - mov r1, r1, asr #0x2 - str r1, [r0, #0x0] - ldmia sp!, {pc} -_020BD3B4: - ldr r12, [r3, r12, lsl #0x2] - ldr r1, [r3, lr, lsl #0x2] - mov r2, r12, asr #0x1f - mov r2, r2, lsl #0x1 - mov r3, r12, lsl #0x1 - orr r2, r2, r12, lsr #0x1f - adds r3, r3, r12 - adc r2, r2, r12, asr #0x1f - adds r3, r3, r1 - adc r1, r2, r1, asr #0x1f - mov r2, r3, lsr #0x2 - orr r2, r2, r1, lsl #0x1e - str r2, [r0, #0x0] - add sp, sp, #0x4 - ldmia sp!, {pc} -_020BD3F0: - mov r12, r1, lsr #0x2 - b _020BD400 -_020BD3F8: - mov r1, r1, lsr #0x2 - b _020BD44C -_020BD400: - ands r1, r2, #0x20000000 - beq _020BD42C - mov r2, r12, lsl #0x1 - add r1, r3, r12, lsl #0x1 - ldrsh r2, [r3, r2] - ldrsh r1, [r1, #0x2] - add sp, sp, #0x4 - add r1, r2, r1 - mov r1, r1, asr #0x1 - str r1, [r0, #0x0] - ldmia sp!, {pc} -_020BD42C: - add r1, r3, r12, lsl #0x2 - ldr r2, [r3, r12, lsl #0x2] - ldr r1, [r1, #0x4] - mov r2, r2, asr #0x1 - add r1, r2, r1, asr #0x1 - str r1, [r0, #0x0] - add sp, sp, #0x4 - ldmia sp!, {pc} -_020BD44C: - ands r2, r2, #0x20000000 - movne r1, r1, lsl #0x1 - ldrnesh r1, [r3, r1] - strne r1, [r0, #0x0] - ldreq r1, [r3, r1, lsl #0x2] - streq r1, [r0, #0x0] - add sp, sp, #0x4 - ldmia sp!, {pc} - .balign 4 -_020BD46C: .word 0x1FFF0000 - - arm_func_start FUN_020BD470 -FUN_020BD470: ; 0x020BD470 - stmdb sp!, {r4-r11,lr} - sub sp, sp, #0x34 - mov r9, r0 - add r0, r9, r1, lsl #0x1 - ldrh r0, [r0, #0x14] - mov r7, r3 - mov r8, r2 - ldr r5, [r9, r0] - add r1, r9, r0 - ands r0, r5, #0x1 - movne r0, #0x7 - strne r0, [r7, #0x0] - bne _020BD814 - ldr r0, _020BD848 ; =0x00000FFF - add r4, r1, #0x4 - ands r0, r8, r0 - beq _020BD4C4 - ldr r0, [r9, #0x8] - ands r0, r0, #0x1 - movne r6, #0x1 - bne _020BD4C8 -_020BD4C4: - mov r6, #0x0 -_020BD4C8: - mov r0, #0x0 - str r0, [r7, #0x0] - ands r0, r5, #0x6 - bne _020BD5C0 - ands r0, r5, #0x8 - bne _020BD51C - cmp r6, #0x0 - beq _020BD500 - mov r1, r8 - mov r2, r4 - mov r3, r9 - add r0, r7, #0x4c - bl FUN_020BD188 - b _020BD514 -_020BD500: - mov r1, r8 - mov r2, r4 - mov r3, r9 - add r0, r7, #0x4c - bl FUN_020BD2F8 -_020BD514: - add r4, r4, #0x8 - b _020BD524 -_020BD51C: - ldr r0, [r4], #0x4 - str r0, [r7, #0x4c] -_020BD524: - ands r0, r5, #0x10 - bne _020BD568 - cmp r6, #0x0 - beq _020BD54C - mov r1, r8 - mov r2, r4 - mov r3, r9 - add r0, r7, #0x50 - bl FUN_020BD188 - b _020BD560 -_020BD54C: - mov r1, r8 - mov r2, r4 - mov r3, r9 - add r0, r7, #0x50 - bl FUN_020BD2F8 -_020BD560: - add r4, r4, #0x8 - b _020BD570 -_020BD568: - ldr r0, [r4], #0x4 - str r0, [r7, #0x50] -_020BD570: - ands r0, r5, #0x20 - bne _020BD5B4 - cmp r6, #0x0 - beq _020BD598 - mov r1, r8 - mov r2, r4 - mov r3, r9 - add r0, r7, #0x54 - bl FUN_020BD188 - b _020BD5AC -_020BD598: - mov r1, r8 - mov r2, r4 - mov r3, r9 - add r0, r7, #0x54 - bl FUN_020BD2F8 -_020BD5AC: - add r4, r4, #0x8 - b _020BD5DC -_020BD5B4: - ldr r0, [r4], #0x4 - str r0, [r7, #0x54] - b _020BD5DC -_020BD5C0: - ands r0, r5, #0x2 - ldrne r0, [r7, #0x0] - orrne r0, r0, #0x4 - strne r0, [r7, #0x0] - bne _020BD5DC - mov r0, r7 - bl FUN_020BDA08 -_020BD5DC: - ands r0, r5, #0xc0 - bne _020BD6A8 - ands r0, r5, #0x100 - bne _020BD628 - cmp r6, #0x0 - beq _020BD60C - mov r1, r8 - mov r2, r4 - mov r3, r9 - add r0, r7, #0x28 - bl FUN_020BC698 - b _020BD620 -_020BD60C: - mov r1, r8 - mov r2, r4 - mov r3, r9 - add r0, r7, #0x28 - bl FUN_020BC9D4 -_020BD620: - add r4, r4, #0x8 - b _020BD6C4 -_020BD628: - ldr r1, [r9, #0xc] - ldr r2, [r9, #0x10] - ldr r3, [r4, #0x0] - add r0, r7, #0x28 - add r1, r9, r1 - add r2, r9, r2 - bl FUN_020BC500 - cmp r0, #0x0 - beq _020BD6A0 - ldr r12, [r7, #0x3c] - ldr r0, [r7, #0x2c] - ldr r3, [r7, #0x28] - ldr r11, [r7, #0x38] - ldr r1, [r7, #0x30] - ldr r2, [r7, #0x34] - mul r10, r0, r12 - mul lr, r1, r11 - sub r10, r10, lr - mov r10, r10, asr #0xc - mul lr, r1, r2 - mul r1, r3, r12 - sub r1, lr, r1 - mul r11, r3, r11 - mul r2, r0, r2 - sub r0, r11, r2 - str r10, [r7, #0x40] - mov r1, r1, asr #0xc - str r1, [r7, #0x44] - mov r0, r0, asr #0xc - str r0, [r7, #0x48] -_020BD6A0: - add r4, r4, #0x4 - b _020BD6C4 -_020BD6A8: - ands r0, r5, #0x40 - ldrne r0, [r7, #0x0] - orrne r0, r0, #0x2 - strne r0, [r7, #0x0] - bne _020BD6C4 - mov r0, r7 - bl FUN_020BD850 -_020BD6C4: - ands r0, r5, #0x600 - bne _020BD7F0 - ands r0, r5, #0x800 - bne _020BD71C - cmp r6, #0x0 - beq _020BD6F4 - add r0, sp, #0x0 - mov r1, r8 - mov r2, r4 - mov r3, r9 - bl FUN_020BCDC4 - b _020BD708 -_020BD6F4: - add r0, sp, #0x0 - mov r1, r8 - mov r2, r4 - mov r3, r9 - bl FUN_020BCF70 -_020BD708: - ldr r1, [sp, #0x0] - ldr r0, [sp, #0x4] - str r1, [sp, #0x18] - str r0, [sp, #0x24] - b _020BD72C -_020BD71C: - ldr r0, [r4, #0x0] - str r0, [sp, #0x18] - ldr r0, [r4, #0x4] - str r0, [sp, #0x24] -_020BD72C: - ands r0, r5, #0x1000 - bne _020BD77C - cmp r6, #0x0 - beq _020BD754 - add r0, sp, #0x8 - mov r1, r8 - mov r3, r9 - add r2, r4, #0x8 - bl FUN_020BCDC4 - b _020BD768 -_020BD754: - add r0, sp, #0x8 - mov r1, r8 - mov r3, r9 - add r2, r4, #0x8 - bl FUN_020BCF70 -_020BD768: - ldr r1, [sp, #0x8] - ldr r0, [sp, #0xc] - str r1, [sp, #0x1c] - str r0, [sp, #0x28] - b _020BD78C -_020BD77C: - ldr r0, [r4, #0x8] - str r0, [sp, #0x1c] - ldr r0, [r4, #0xc] - str r0, [sp, #0x28] -_020BD78C: - ands r0, r5, #0x2000 - bne _020BD7DC - cmp r6, #0x0 - beq _020BD7B4 - add r0, sp, #0x10 - mov r1, r8 - mov r3, r9 - add r2, r4, #0x10 - bl FUN_020BCDC4 - b _020BD7C8 -_020BD7B4: - add r0, sp, #0x10 - mov r1, r8 - mov r3, r9 - add r2, r4, #0x10 - bl FUN_020BCF70 -_020BD7C8: - ldr r1, [sp, #0x10] - ldr r0, [sp, #0x14] - str r1, [sp, #0x20] - str r0, [sp, #0x2c] - b _020BD814 -_020BD7DC: - ldr r0, [r4, #0x10] - str r0, [sp, #0x20] - ldr r0, [r4, #0x14] - str r0, [sp, #0x2c] - b _020BD814 -_020BD7F0: - ands r0, r5, #0x200 - ldrne r0, [r7, #0x0] - orrne r0, r0, #0x1 - strne r0, [r7, #0x0] - bne _020BD814 - mov r0, r7 - bl FUN_020BD9A4 - add sp, sp, #0x34 - ldmia sp!, {r4-r11,pc} -_020BD814: - ldr r0, [r7, #0x0] - add r1, sp, #0x18 - ands r0, r0, #0x1 - ldr r0, _020BD84C ; =UNK_021CEF7C - movne r3, #0x4 - ldr r4, [r0, #0x0] - moveq r3, #0x0 - ldr r2, [r4, #0x0] - ldr r4, [r4, #0xe8] - mov r0, r7 - blx r4 - add sp, sp, #0x34 - ldmia sp!, {r4-r11,pc} - .balign 4 -_020BD848: .word 0x00000FFF -_020BD84C: .word UNK_021CEF7C - - arm_func_start FUN_020BD850 -FUN_020BD850: ; 0x020BD850 - stmdb sp!, {r4-r8,lr} - ldr r1, _020BD990 ; =UNK_021CEF7C - mov r8, r0 - ldr r0, [r1, #0x0] - ldr r3, [r0, #0xd4] - ldr r0, [r0, #0x0] - ldrh r2, [r3, #0x6] - ldrb r0, [r0, #0x1] - ldrh r1, [r3, r2] - add r2, r3, r2 - mla r0, r1, r0, r2 - ldr r0, [r0, #0x4] - ldrh r2, [r3, r0] - add r4, r3, r0 - add r1, r4, #0x4 - ands r0, r2, #0x1 - addeq r1, r1, #0xc - ands r0, r2, #0x2 - bne _020BD980 - ands r0, r2, #0x8 - beq _020BD934 - and r2, r2, #0xf0 - add r0, r8, #0x28 - mov r5, r2, asr #0x4 - ldrsh r7, [r1, #0x0] - ldrsh r6, [r1, #0x2] - bl MI_Zero36B - ldrh r0, [r4, #0x0] - add r1, r8, r5, lsl #0x2 - ands r0, r0, #0x100 - movne r0, #0x1000 - rsbne r2, r0, #0x0 - moveq r2, #0x1000 - ldr r0, _020BD994 ; =UNK_020FFA14 - str r2, [r1, #0x28] - ldrb r1, [r0, r5, lsl #0x2] - ldr r0, _020BD998 ; =UNK_020FFA15 - add r1, r8, r1, lsl #0x2 - str r7, [r1, #0x28] - ldrb r0, [r0, r5, lsl #0x2] - add r0, r8, r0, lsl #0x2 - str r6, [r0, #0x28] - ldrh r0, [r4, #0x0] - ands r0, r0, #0x200 - ldr r0, _020BD99C ; =UNK_020FFA16 - rsbne r6, r6, #0x0 - ldrb r0, [r0, r5, lsl #0x2] - add r0, r8, r0, lsl #0x2 - str r6, [r0, #0x28] - ldrh r0, [r4, #0x0] - ands r0, r0, #0x400 - ldr r0, _020BD9A0 ; =UNK_020FFA17 - rsbne r7, r7, #0x0 - ldrb r0, [r0, r5, lsl #0x2] - add r0, r8, r0, lsl #0x2 - str r7, [r0, #0x28] - ldmia sp!, {r4-r8,pc} -_020BD934: - ldrsh r0, [r4, #0x2] - str r0, [r8, #0x28] - ldrsh r0, [r1, #0x0] - str r0, [r8, #0x2c] - ldrsh r0, [r1, #0x2] - str r0, [r8, #0x30] - ldrsh r0, [r1, #0x4] - str r0, [r8, #0x34] - ldrsh r0, [r1, #0x6] - str r0, [r8, #0x38] - ldrsh r0, [r1, #0x8] - str r0, [r8, #0x3c] - ldrsh r0, [r1, #0xa] - str r0, [r8, #0x40] - ldrsh r0, [r1, #0xc] - str r0, [r8, #0x44] - ldrsh r0, [r1, #0xe] - str r0, [r8, #0x48] - ldmia sp!, {r4-r8,pc} -_020BD980: - ldr r0, [r8, #0x0] - orr r0, r0, #0x2 - str r0, [r8, #0x0] - ldmia sp!, {r4-r8,pc} - .balign 4 -_020BD990: .word UNK_021CEF7C -_020BD994: .word UNK_020FFA14 -_020BD998: .word UNK_020FFA15 -_020BD99C: .word UNK_020FFA16 -_020BD9A0: .word UNK_020FFA17 - - arm_func_start FUN_020BD9A4 -FUN_020BD9A4: ; 0x020BD9A4 - stmdb sp!, {r4,lr} - ldr r1, _020BDA04 ; =UNK_021CEF7C - ldr r12, [r1, #0x0] - ldr r4, [r12, #0xd4] - ldr r2, [r12, #0x0] - ldrh lr, [r4, #0x6] - ldrb r1, [r2, #0x1] - ldrh r3, [r4, lr] - add lr, r4, lr - mla r1, r3, r1, lr - ldr r1, [r1, #0x4] - ldrh r3, [r4, r1] - add r1, r4, r1 - add r1, r1, #0x4 - ands lr, r3, #0x1 - addeq r1, r1, #0xc - ands lr, r3, #0x2 - bne _020BD9F8 - ands lr, r3, #0x8 - addne r1, r1, #0x4 - addeq r1, r1, #0x10 -_020BD9F8: - ldr r12, [r12, #0xe8] - blx r12 - ldmia sp!, {r4,pc} - .balign 4 -_020BDA04: .word UNK_021CEF7C - - arm_func_start FUN_020BDA08 -FUN_020BDA08: ; 0x020BDA08 - ldr r1, _020BDA6C ; =UNK_021CEF7C - ldr r1, [r1, #0x0] - ldr r12, [r1, #0xd4] - ldr r1, [r1, #0x0] - ldrh r3, [r12, #0x6] - ldrb r1, [r1, #0x1] - ldrh r2, [r12, r3] - add r3, r12, r3 - mla r1, r2, r1, r3 - ldr r2, [r1, #0x4] - ldrh r1, [r12, r2] - add r2, r12, r2 - ands r1, r1, #0x1 - ldrne r1, [r0, #0x0] - orrne r1, r1, #0x4 - strne r1, [r0, #0x0] - bxne lr - ldr r1, [r2, #0x4] - add r2, r2, #0x4 - str r1, [r0, #0x4c] - ldr r1, [r2, #0x4] - str r1, [r0, #0x50] - ldr r1, [r2, #0x8] - str r1, [r0, #0x54] - bx lr - .balign 4 -_020BDA6C: .word UNK_021CEF7C - - arm_func_start FUN_020BDA70 -FUN_020BDA70: ; 0x020BDA70 - stmdb sp!, {lr} - sub sp, sp, #0x4 - mov r3, r0 - ldr r0, [r1, #0x8] - ldr r12, [r1, #0x0] - ldrh r1, [r0, #0x4] - mov r1, r1, lsl #0xc - cmp r12, r1 - subge r12, r1, #0x1 - bge _020BDAA0 - cmp r12, #0x0 - movlt r12, #0x0 -_020BDAA0: - mov r1, r2 - mov r2, r12 - bl FUN_020BD470 - add sp, sp, #0x4 - ldmia sp!, {pc} - - arm_func_start FUN_020BDAB4 -FUN_020BDAB4: ; 0x020BDAB4 - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - mov r5, r0 - mov r4, r1 - ldr r0, _020BDB3C ; =UNK_0210659C - str r4, [r5, #0x8] - ldr r0, [r0, #0x0] - add r1, r5, #0x1a - str r0, [r5, #0xc] - ldrb r2, [r2, #0x17] - mov r0, #0x0 - strb r2, [r5, #0x19] - ldrb r2, [r5, #0x19] - mov r2, r2, lsl #0x1 - bl MIi_CpuClear16 - ldrh r0, [r4, #0x6] - add r2, r4, #0x14 - mov r3, #0x0 - cmp r0, #0x0 - addls sp, sp, #0x4 - ldmlsia sp!, {r4-r5,pc} -_020BDB08: - mov r0, r3, lsl #0x1 - ldrh r1, [r2, r0] - add r0, r5, r3, lsl #0x1 - add r3, r3, #0x1 - ldr r1, [r4, r1] - mov r1, r1, lsr #0x18 - orr r1, r1, #0x100 - strh r1, [r0, #0x1a] - ldrh r0, [r4, #0x6] - cmp r3, r0 - blo _020BDB08 - add sp, sp, #0x4 - ldmia sp!, {r4-r5,pc} - .balign 4 -_020BDB3C: .word UNK_0210659C - - arm_func_start FUN_020BDB40 -FUN_020BDB40: ; 0x020BDB40 - stmdb sp!, {r4-r8,lr} - ldr r7, [r1, #0x8] - mov r2, r2, lsl #0x10 - ldrh r4, [r7, #0xe] - add r5, r7, #0x8 - ldr r6, [r1, #0x0] - ldrh r3, [r5, r4] - mov r1, r2, lsr #0x10 - add r2, r5, r4 - mul r4, r3, r1 - add r3, r2, #0x4 - mov r6, r6, asr #0xc - mov r8, r0 - ldr r1, [r3, r4] - mov r0, r7 - mov r2, r6 - add r5, r3, r4 - bl FUN_020BDDAC - mov r4, r0 - ldr r1, [r5, #0x4] - mov r0, r7 - mov r2, r6 - bl FUN_020BDDAC - ldr r1, [r8, #0x4] - mov r2, r6 - and r1, r1, #0x8000 - orr r1, r1, r4 - orr r0, r1, r0, lsl #0x10 - str r0, [r8, #0x4] - mov r0, r7 - ldr r1, [r5, #0xc] - bl FUN_020BDDAC - mov r4, r0 - mov r0, r7 - ldr r1, [r5, #0x8] - mov r2, r6 - bl FUN_020BDDAC - mov r2, r6 - ldr r1, [r8, #0x8] - and r1, r1, #0x8000 - orr r0, r1, r0 - orr r0, r0, r4, lsl #0x10 - str r0, [r8, #0x8] - mov r0, r7 - ldr r1, [r5, #0x10] - bl FUN_020BDCB8 - ldr r1, [r8, #0xc] - bic r1, r1, #0x1f0000 - orr r0, r1, r0, lsl #0x10 - str r0, [r8, #0xc] - ldmia sp!, {r4-r8,pc} - - arm_func_start FUN_020BDC0C -FUN_020BDC0C: ; 0x020BDC0C - stmdb sp!, {r4-r9,lr} - sub sp, sp, #0x4 - ldr r3, _020BDCB4 ; =UNK_021065A8 - ldr r4, [r2, #0x8] - ldr r3, [r3, #0x0] - mov r9, r0 - str r3, [r9, #0xc] - ldrb r0, [r2, #0x18] - mov r8, r1 - add r4, r2, r4 - strb r0, [r9, #0x19] - ldrb r2, [r9, #0x19] - add r1, r9, #0x1a - mov r0, #0x0 - mov r2, r2, lsl #0x1 - bl MIi_CpuClear16 - ldrb r0, [r8, #0x9] - mov r7, #0x0 - cmp r0, #0x0 - addls sp, sp, #0x4 - ldmlsia sp!, {r4-r9,pc} - mov r6, r7 - add r5, r8, #0x8 - add r4, r4, #0x4 -_020BDC6C: - ldrh r1, [r8, #0xe] - mov r0, r4 - add r2, r5, r1 - ldrh r1, [r2, #0x2] - add r1, r2, r1 - add r1, r1, r6 - bl FUN_020BC14C - cmp r0, #0x0 - orrge r1, r7, #0x100 - addge r0, r9, r0, lsl #0x1 - strgeh r1, [r0, #0x1a] - ldrb r0, [r8, #0x9] - add r7, r7, #0x1 - add r6, r6, #0x10 - cmp r7, r0 - blo _020BDC6C - add sp, sp, #0x4 - ldmia sp!, {r4-r9,pc} - .balign 4 -_020BDCB4: .word UNK_021065A8 - - arm_func_start FUN_020BDCB8 -FUN_020BDCB8: ; 0x020BDCB8 - ands r3, r1, #0x20000000 - movne r0, r1, lsl #0x10 - movne r0, r0, lsr #0x10 - bxne lr - ldr r3, _020BDDA4 ; =0x0000FFFF - ands r12, r1, #0xc0000000 - and r3, r1, r3 - add r0, r0, r3 - ldreqb r0, [r0, r2] - bxeq lr - ldr r3, _020BDDA8 ; =0x1FFF0000 - ands r12, r1, #0x40000000 - and r1, r1, r3 - mov r3, r1, lsr #0x10 - beq _020BDD30 - ands r1, r2, #0x1 - beq _020BDD28 - cmp r2, r3 - addhi r0, r0, r3, lsr #0x1 - ldrhib r0, [r0, #0x1] - bxhi lr - add r1, r0, r2, lsr #0x1 - ldrb r2, [r0, r2, lsr #0x1] - ldrb r0, [r1, #0x1] - add r0, r2, r0 - mov r0, r0, lsl #0xf - mov r0, r0, lsr #0x10 - bx lr -_020BDD28: - ldrb r0, [r0, r2, lsr #0x1] - bx lr -_020BDD30: - ands r1, r2, #0x3 - beq _020BDD9C - cmp r2, r3 - addhi r0, r0, r3, lsr #0x2 - ldrhib r0, [r1, r0] - bxhi lr - ands r1, r2, #0x1 - beq _020BDD80 - ands r1, r2, #0x2 - movne r1, r2, lsr #0x2 - addne r2, r1, #0x1 - moveq r2, r2, lsr #0x2 - addeq r1, r2, #0x1 - ldrb r2, [r0, r2] - ldrb r1, [r0, r1] - mov r0, #0x3 - mla r0, r2, r0, r1 - mov r0, r0, lsl #0xe - mov r0, r0, lsr #0x10 - bx lr -_020BDD80: - add r1, r0, r2, lsr #0x2 - ldrb r2, [r0, r2, lsr #0x2] - ldrb r0, [r1, #0x1] - add r0, r2, r0 - mov r0, r0, lsl #0xf - mov r0, r0, lsr #0x10 - bx lr -_020BDD9C: - ldrb r0, [r0, r2, lsr #0x2] - bx lr - .balign 4 -_020BDDA4: .word 0x0000FFFF -_020BDDA8: .word 0x1FFF0000 - - arm_func_start FUN_020BDDAC -FUN_020BDDAC: ; 0x020BDDAC - stmdb sp!, {lr} - sub sp, sp, #0x4 - ands r3, r1, #0x20000000 - movne r0, r1, lsl #0x10 - addne sp, sp, #0x4 - movne r0, r0, lsr #0x10 - ldmneia sp!, {pc} - ldr r3, _020BDF2C ; =0x0000FFFF - ands r12, r1, #0xc0000000 - and r3, r1, r3 - add r0, r0, r3 - moveq r1, r2, lsl #0x1 - addeq sp, sp, #0x4 - ldreqh r0, [r0, r1] - ldmeqia sp!, {pc} - ldr r3, _020BDF30 ; =0x1FFF0000 - ands r12, r1, #0x40000000 - and r1, r1, r3 - mov r3, r1, lsr #0x10 - beq _020BDE34 - ands r1, r2, #0x1 - beq _020BDE24 - cmp r2, r3 - bichi r1, r3, #0x1 - addhi r0, r0, r1 - addhi sp, sp, #0x4 - ldrhih r0, [r0, #0x2] - ldmhiia sp!, {pc} - mov r1, r2, lsr #0x1 - b _020BDEE0 -_020BDE24: - bic r1, r2, #0x1 - add sp, sp, #0x4 - ldrh r0, [r0, r1] - ldmia sp!, {pc} -_020BDE34: - ands r1, r2, #0x3 - beq _020BDECC - cmp r2, r3 - movhi r2, r3, lsr #0x2 - movhi r1, r1, lsl #0x1 - addhi r0, r0, r2, lsl #0x1 - addhi sp, sp, #0x4 - ldrhih r0, [r1, r0] - ldmhiia sp!, {pc} - ands r1, r2, #0x1 - beq _020BDEC4 - ands r1, r2, #0x2 - movne r1, r2, lsr #0x2 - addne r2, r1, #0x1 - moveq r2, r2, lsr #0x2 - addeq r1, r2, #0x1 - mov r2, r2, lsl #0x1 - mov r1, r1, lsl #0x1 - ldrh r12, [r0, r2] - ldrh lr, [r0, r1] - ldr r0, _020BDF34 ; =0x00007C1F - and r3, r12, #0x3e0 - and r2, lr, #0x3e0 - mov r1, #0x3 - mla r2, r3, r1, r2 - and r12, r12, r0 - and r3, lr, r0 - mla r1, r12, r1, r3 - mov r2, r2, lsr #0x2 - and r1, r0, r1, lsr #0x2 - and r0, r2, #0x3e0 - orr r0, r1, r0 - mov r0, r0, lsl #0x10 - add sp, sp, #0x4 - mov r0, r0, lsr #0x10 - ldmia sp!, {pc} -_020BDEC4: - mov r1, r2, lsr #0x2 - b _020BDEE0 -_020BDECC: - mov r1, r2, lsr #0x2 - mov r1, r1, lsl #0x1 - add sp, sp, #0x4 - ldrh r0, [r0, r1] - ldmia sp!, {pc} -_020BDEE0: - mov r2, r1, lsl #0x1 - add r1, r0, r1, lsl #0x1 - ldrh r3, [r0, r2] - ldrh r12, [r1, #0x2] - ldr r0, _020BDF34 ; =0x00007C1F - and r2, r3, #0x3e0 - and r1, r12, #0x3e0 - add r1, r2, r1 - mov r1, r1, lsr #0x1 - and r3, r3, r0 - and r2, r12, r0 - add r2, r3, r2 - and r2, r0, r2, lsr #0x1 - and r0, r1, #0x3e0 - orr r0, r2, r0 - mov r0, r0, lsl #0x10 - mov r0, r0, lsr #0x10 - add sp, sp, #0x4 - ldmia sp!, {pc} - .balign 4 -_020BDF2C: .word 0x0000FFFF -_020BDF30: .word 0x1FFF0000 -_020BDF34: .word 0x00007C1F - - arm_func_start FUN_020BDF38 -FUN_020BDF38: ; 0x020BDF38 - stmdb sp!, {r4,lr} - ldr r12, [r1, #0x0] - mov r4, r0 - mov r2, r2, lsl #0x10 - ldr r0, [r1, #0x8] - mov r1, r2, lsr #0x10 - mov r3, r4 - mov r2, r12, asr #0xc - bl FUN_020BE030 - ldr r0, [r4, #0x10] - bic r0, r0, #0xc0000000 - str r0, [r4, #0x10] - ldr r0, [r4, #0x10] - orr r0, r0, #0x40000000 - str r0, [r4, #0x10] - ldr r0, [r4, #0x0] - orr r0, r0, #0x8 - str r0, [r4, #0x0] - ldmia sp!, {r4,pc} - - arm_func_start FUN_020BDF84 -FUN_020BDF84: ; 0x020BDF84 - stmdb sp!, {r4-r9,lr} - sub sp, sp, #0x4 - ldr r3, _020BE02C ; =UNK_021065A0 - ldr r4, [r2, #0x8] - ldr r3, [r3, #0x0] - mov r9, r0 - str r3, [r9, #0xc] - ldrb r0, [r2, #0x18] - mov r8, r1 - add r4, r2, r4 - strb r0, [r9, #0x19] - ldrb r2, [r9, #0x19] - add r1, r9, #0x1a - mov r0, #0x0 - mov r2, r2, lsl #0x1 - bl MIi_CpuClear16 - ldrb r0, [r8, #0x9] - mov r7, #0x0 - cmp r0, #0x0 - addls sp, sp, #0x4 - ldmlsia sp!, {r4-r9,pc} - mov r6, r7 - add r5, r8, #0x8 - add r4, r4, #0x4 -_020BDFE4: - ldrh r1, [r8, #0xe] - mov r0, r4 - add r2, r5, r1 - ldrh r1, [r2, #0x2] - add r1, r2, r1 - add r1, r1, r6 - bl FUN_020BC14C - cmp r0, #0x0 - orrge r1, r7, #0x100 - addge r0, r9, r0, lsl #0x1 - strgeh r1, [r0, #0x1a] - ldrb r0, [r8, #0x9] - add r7, r7, #0x1 - add r6, r6, #0x10 - cmp r7, r0 - blo _020BDFE4 - add sp, sp, #0x4 - ldmia sp!, {r4-r9,pc} - .balign 4 -_020BE02C: .word UNK_021065A0 - - arm_func_start FUN_020BE030 -FUN_020BE030: ; 0x020BE030 - stmdb sp!, {r4-r9,lr} - sub sp, sp, #0x4 - mov r8, r0 - ldrh r4, [r8, #0xe] - add r5, r8, #0x8 - mov r6, r3 - ldrh r3, [r5, r4] - add r4, r5, r4 - add r4, r4, #0x4 - mla r5, r3, r1, r4 - mov r7, r2 - ldr r1, [r5, #0x18] - ldr r2, [r5, #0x1c] - mov r3, r7 - ldr r4, [r6, #0x0] - bl FUN_020BE238 - mov r9, r0 - ldr r1, [r5, #0x20] - mov r0, r8 - ldr r2, [r5, #0x24] - mov r3, r7 - bl FUN_020BE238 - cmp r9, #0x0 - bne _020BE09C - cmp r0, #0x0 - orreq r4, r4, #0x4 - beq _020BE0A8 -_020BE09C: - str r9, [r6, #0x24] - str r0, [r6, #0x28] - bic r4, r4, #0x4 -_020BE0A8: - ldr r1, [r5, #0x10] - ldr r2, [r5, #0x14] - mov r0, r8 - mov r3, r7 - bl FUN_020BE12C - cmp r0, #0x10000000 - strneh r0, [r6, #0x20] - movne r0, r0, lsr #0x10 - strneh r0, [r6, #0x22] - orreq r4, r4, #0x2 - ldr r1, [r5, #0x0] - ldr r2, [r5, #0x4] - mov r0, r8 - mov r3, r7 - bicne r4, r4, #0x2 - bl FUN_020BE238 - mov r9, r0 - ldr r1, [r5, #0x8] - ldr r2, [r5, #0xc] - mov r0, r8 - mov r3, r7 - bl FUN_020BE238 - cmp r9, #0x1000 - bne _020BE114 - cmp r0, #0x1000 - orreq r4, r4, #0x1 - beq _020BE120 -_020BE114: - str r9, [r6, #0x18] - str r0, [r6, #0x1c] - bic r4, r4, #0x1 -_020BE120: - str r4, [r6, #0x0] - add sp, sp, #0x4 - ldmia sp!, {r4-r9,pc} - - arm_func_start FUN_020BE12C -FUN_020BE12C: ; 0x020BE12C - ands r12, r1, #0x20000000 - movne r0, r2 - bxne lr - add r0, r0, r2 - ands r2, r1, #0xc0000000 - beq _020BE1F8 - ldr r2, _020BE234 ; =0x0000FFFF - ands r12, r1, #0x40000000 - and r2, r1, r2 - beq _020BE17C - ands r1, r3, #0x1 - beq _020BE174 - cmp r3, r2 - movhi r1, r2, lsr #0x1 - addhi r3, r1, #0x1 - bhi _020BE1F8 - mov r2, r3, lsr #0x1 - b _020BE200 -_020BE174: - mov r3, r3, lsr #0x1 - b _020BE1F8 -_020BE17C: - ands r1, r3, #0x3 - beq _020BE1F4 - cmp r3, r2 - addhi r3, r1, r2, lsr #0x2 - bhi _020BE1F8 - ands r1, r3, #0x1 - beq _020BE1EC - ands r1, r3, #0x2 - movne r1, r3, lsr #0x2 - addne r2, r1, #0x1 - moveq r2, r3, lsr #0x2 - addeq r1, r2, #0x1 - mov r12, r2, lsl #0x2 - add r3, r0, r2, lsl #0x2 - mov r2, r1, lsl #0x2 - add r1, r0, r1, lsl #0x2 - ldrsh r12, [r0, r12] - ldrsh r2, [r0, r2] - mov r0, #0x3 - ldrsh r3, [r3, #0x2] - ldrsh r1, [r1, #0x2] - mla r2, r12, r0, r2 - mla r1, r3, r0, r1 - ldr r0, _020BE234 ; =0x0000FFFF - mov r1, r1, asr #0x2 - and r0, r0, r2, asr #0x2 - orr r0, r0, r1, lsl #0x10 - bx lr -_020BE1EC: - mov r2, r3, lsr #0x2 - b _020BE200 -_020BE1F4: - mov r3, r3, lsr #0x2 -_020BE1F8: - ldr r0, [r0, r3, lsl #0x2] - bx lr -_020BE200: - add r1, r0, r2, lsl #0x2 - mov r2, r2, lsl #0x2 - ldrsh r12, [r0, r2] - ldrsh r3, [r1, #0x4] - ldrsh r2, [r1, #0x2] - ldrsh r1, [r1, #0x6] - ldr r0, _020BE234 ; =0x0000FFFF - add r3, r12, r3 - add r1, r2, r1 - and r2, r0, r3, asr #0x1 - mov r0, r1, asr #0x1 - orr r0, r2, r0, lsl #0x10 - bx lr - .balign 4 -_020BE234: .word 0x0000FFFF - - arm_func_start FUN_020BE238 -FUN_020BE238: - ands r12, r1, #0x20000000 - movne r0, r2 - bxne lr - add r0, r0, r2 - ands r2, r1, #0xc0000000 - beq _020BE2F0 - ldr r2, _020BE330 ; =0x0000FFFF - ands r12, r1, #0x40000000 - and r12, r1, r2 - beq _020BE288 - ands r2, r3, #0x1 - beq _020BE280 - cmp r3, r12 - movhi r2, r12, lsr #0x1 - addhi r3, r2, #0x1 - bhi _020BE2F0 - mov r3, r3, lsr #0x1 - b _020BE304 -_020BE280: - mov r3, r3, lsr #0x1 - b _020BE2F0 -_020BE288: - ands r2, r3, #0x3 - beq _020BE2EC - cmp r3, r12 - addhi r3, r2, r12, lsr #0x2 - bhi _020BE2F0 - ands r2, r3, #0x1 - beq _020BE2E4 - ands r2, r3, #0x2 - movne r3, r3, lsr #0x2 - addne r2, r3, #0x1 - moveq r2, r3, lsr #0x2 - addeq r3, r2, #0x1 - ands r1, r1, #0x10000000 - movne r2, r2, lsl #0x1 - movne r1, r3, lsl #0x1 - ldrnesh r2, [r0, r2] - ldrnesh r1, [r0, r1] - ldreq r2, [r0, r2, lsl #0x2] - ldreq r1, [r0, r3, lsl #0x2] - mov r0, #0x3 - mla r0, r2, r0, r1 - mov r0, r0, asr #0x2 - bx lr -_020BE2E4: - mov r3, r3, lsr #0x2 - b _020BE304 -_020BE2EC: - mov r3, r3, lsr #0x2 -_020BE2F0: - ands r1, r1, #0x10000000 - movne r1, r3, lsl #0x1 - ldrnesh r0, [r0, r1] - ldreq r0, [r0, r3, lsl #0x2] - bx lr -_020BE304: - ands r1, r1, #0x10000000 - movne r2, r3, lsl #0x1 - addne r1, r0, r3, lsl #0x1 - ldrnesh r2, [r0, r2] - ldrnesh r0, [r1, #0x2] - addeq r1, r0, r3, lsl #0x2 - ldreq r2, [r0, r3, lsl #0x2] - ldreq r0, [r1, #0x4] - add r0, r2, r0 - mov r0, r0, asr #0x1 - bx lr - .balign 4 -_020BE330: .word 0x0000FFFF - - arm_func_start FUN_020BE334 -FUN_020BE334: ; 0x020BE334 - stmdb sp!, {r4-r7,lr} - sub sp, sp, #0x4 - mov r6, r1 - ldr r3, [r6, #0x0] - ldr r5, [r6, #0x8] - mov r1, r2, lsl #0x10 - mov r2, r3, lsl #0x4 - mov r7, r0 - mov r0, r5 - mov r1, r1, lsr #0x10 - mov r2, r2, lsr #0x10 - bl FUN_020BC42C - mov r4, r0 - ldrb r1, [r4, #0x2] - mov r0, r5 - bl FUN_020BC4B8 - mov r1, r0 - ldr r0, [r6, #0x14] - mov r2, r7 - bl FUN_020BE408 - ldrb r1, [r4, #0x3] - cmp r1, #0xff - addeq sp, sp, #0x4 - ldmeqia sp!, {r4-r7,pc} - mov r0, r5 - bl FUN_020BC4A8 - mov r1, r0 - ldr r0, [r6, #0x14] - mov r2, r7 - bl FUN_020BE3B4 - add sp, sp, #0x4 - ldmia sp!, {r4-r7,pc} - - arm_func_start FUN_020BE3B4 -FUN_020BE3B4: ; 0x020BE3B4 - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - mov r5, r0 - ldrh r0, [r5, #0x34] - mov r4, r2 - add r0, r5, r0 - bl FUN_020BC2A0 - ldr r1, [r5, #0x2c] - ldrh r2, [r0, #0x2] - mov r1, r1, lsl #0x10 - mov r3, r1, lsr #0x10 - ands r1, r2, #0x1 - ldrh r0, [r0, #0x0] - moveq r1, r3, lsl #0xf - moveq r3, r1, lsr #0x10 - moveq r0, r0, lsl #0xf - moveq r0, r0, lsr #0x10 - add r0, r0, r3 - str r0, [r4, #0x14] - add sp, sp, #0x4 - ldmia sp!, {r4-r5,pc} - - arm_func_start FUN_020BE408 -FUN_020BE408: ; 0x020BE408 - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - mov r5, r0 - add r0, r5, #0x3c - mov r4, r2 - bl FUN_020BC2A0 - ldr r1, [r0, #0x0] - ldr r3, [r4, #0x10] - and r1, r1, #0x1c000000 - cmp r1, #0x14000000 - ldrne r2, [r5, #0x8] - ldrne r1, _020BE4E0 ; =0x0000FFFF - andne r5, r2, r1 - ldreq r2, [r5, #0x18] - ldreq r1, _020BE4E0 ; =0x0000FFFF - andeq r5, r2, r1 - ldr r1, _020BE4E4 ; =0xC00F0000 - ldr r2, _020BE4E8 ; =0x000007FF - and r1, r3, r1 - str r1, [r4, #0x10] - ldr r1, [r0, #0x0] - ldr r3, [r4, #0x10] - add r1, r1, r5 - orr r1, r3, r1 - str r1, [r4, #0x10] - ldr r3, [r0, #0x4] - ldr r1, _020BE4EC ; =0x003FF800 - and r3, r3, r2 - strh r3, [r4, #0x2c] - ldr r3, [r0, #0x4] - and r1, r3, r1 - mov r1, r1, lsr #0xb - strh r1, [r4, #0x2e] - ldr r3, [r0, #0x4] - ldrh r1, [r4, #0x2c] - and r0, r3, r2 - and r5, r2, r3, lsr #0xb - cmp r0, r1 - moveq r0, #0x1000 - beq _020BE4B4 - mov r0, r0, lsl #0xc - mov r1, r1, lsl #0xc - bl FX_Div -_020BE4B4: - str r0, [r4, #0x30] - ldrh r1, [r4, #0x2e] - cmp r5, r1 - moveq r0, #0x1000 - beq _020BE4D4 - mov r0, r5, lsl #0xc - mov r1, r1, lsl #0xc - bl FX_Div -_020BE4D4: - str r0, [r4, #0x34] - add sp, sp, #0x4 - ldmia sp!, {r4-r5,pc} - .balign 4 -_020BE4E0: .word 0x0000FFFF -_020BE4E4: .word 0xC00F0000 -_020BE4E8: .word 0x000007FF -_020BE4EC: .word 0x003FF800 - - arm_func_start FUN_020BE4F0 -FUN_020BE4F0: ; 0x020BE4F0 - stmdb sp!, {r4-r9,lr} - sub sp, sp, #0x4 - ldr r3, _020BE59C ; =UNK_021065A4 - ldr r4, [r2, #0x8] - ldr r3, [r3, #0x0] - mov r9, r0 - str r3, [r9, #0xc] - ldrb r0, [r2, #0x18] - mov r8, r1 - add r4, r2, r4 - strb r0, [r9, #0x19] - str r8, [r9, #0x8] - ldrb r2, [r9, #0x19] - add r1, r9, #0x1a - mov r0, #0x0 - mov r2, r2, lsl #0x1 - bl MIi_CpuClear16 - ldrb r0, [r8, #0xd] - mov r7, #0x0 - cmp r0, #0x0 - addls sp, sp, #0x4 - ldmlsia sp!, {r4-r9,pc} - mov r6, r7 - add r5, r8, #0xc - add r4, r4, #0x4 -_020BE554: - ldrh r1, [r8, #0x12] - mov r0, r4 - add r2, r5, r1 - ldrh r1, [r2, #0x2] - add r1, r2, r1 - add r1, r1, r6 - bl FUN_020BC14C - cmp r0, #0x0 - orrge r1, r7, #0x100 - addge r0, r9, r0, lsl #0x1 - strgeh r1, [r0, #0x1a] - ldrb r0, [r8, #0xd] - add r7, r7, #0x1 - add r6, r6, #0x10 - cmp r7, r0 - blo _020BE554 - add sp, sp, #0x4 - ldmia sp!, {r4-r9,pc} - .balign 4 -_020BE59C: .word UNK_021065A4 - - arm_func_start FUN_020BE5A0 -FUN_020BE5A0: ; 0x020BE5A0 - stmdb sp!, {lr} - sub sp, sp, #0x4 - ldr lr, [r1, #0x8] - ldr r3, [r1, #0x0] - ldrh r1, [lr, #0x6] - mov r12, r3, asr #0xc - mov r3, #0x1 - mla r2, r12, r1, r2 - mov r1, r2, lsr #0x5 - add r1, lr, r1, lsl #0x2 - ldr r1, [r1, #0xc] - and r2, r2, #0x1f - and r1, r1, r3, lsl r2 - str r1, [r0, #0x0] - add sp, sp, #0x4 - ldmia sp!, {pc} - - arm_func_start FUN_020BE5E0 -FUN_020BE5E0: ; 0x020BE5E0 - ldr r3, _020BE628 ; =UNK_02106598 - mov r12, #0x0 - ldr r3, [r3, #0x0] - str r3, [r0, #0xc] - ldrb r2, [r2, #0x17] - strb r2, [r0, #0x19] - str r1, [r0, #0x8] - ldrb r1, [r0, #0x19] - cmp r1, #0x0 - bxls lr -_020BE608: - orr r2, r12, #0x100 - add r1, r0, r12, lsl #0x1 - strh r2, [r1, #0x1a] - ldrb r1, [r0, #0x19] - add r12, r12, #0x1 - cmp r12, r1 - blo _020BE608 - bx lr - .balign 4 -_020BE628: .word UNK_02106598 - - arm_func_start FUN_020BE62C -FUN_020BE62C: ; 0x020BE62C - ands r2, r3, #0x4 - ldrne r1, [r0, #0x0] - orrne r1, r1, #0x1 - strne r1, [r0, #0x0] - bne _020BE658 - - arm_func_start FUN_020BE640 -FUN_020BE640: ; 0x020BE640 - ldr r2, [r1, #0x0] - str r2, [r0, #0x4] - ldr r2, [r1, #0x4] - str r2, [r0, #0x8] - ldr r1, [r1, #0x8] - str r1, [r0, #0xc] -_020BE658: - ldr r1, [r0, #0x0] - orr r1, r1, #0x18 - str r1, [r0, #0x0] - bx lr - - arm_func_start FUN_020BE668 -FUN_020BE668: ; 0x020BE668 - stmdb sp!, {r4,lr} - mov r4, r0 - ldr r1, [r4, #0x0] - ands r0, r1, #0x4 - bne _020BE6AC - ands r0, r1, #0x2 - bne _020BE698 - add r1, r4, #0x28 - mov r0, #0x19 - mov r2, #0xc - bl FUN_020BB1C0 - b _020BE6C4 -_020BE698: - add r1, r4, #0x4c - mov r0, #0x1c - mov r2, #0x3 - bl FUN_020BB1C0 - b _020BE6C4 -_020BE6AC: - ands r0, r1, #0x2 - bne _020BE6C4 - add r1, r4, #0x28 - mov r0, #0x1a - mov r2, #0x9 - bl FUN_020BB1C0 -_020BE6C4: - ldr r0, [r4, #0x0] - ands r0, r0, #0x1 - ldmneia sp!, {r4,pc} - add r1, r4, #0x4 - mov r0, #0x1b - mov r2, #0x3 - bl FUN_020BB1C0 - ldmia sp!, {r4,pc} - - arm_func_start FUN_020BE6E4 -FUN_020BE6E4: ; 0x020BE6E4 - stmdb sp!, {r4,lr} - sub sp, sp, #0x50 - mov r4, r0 - ldr r0, [r4, #0x0] - mov r1, #0x0 - ands r0, r0, #0x8 - ldrne r0, _020BE820 ; =0x00101610 - mov r3, #0x3 - strne r0, [sp, #0x0] - ldreq r0, _020BE824 ; =0x00101810 - mov r2, #0x2 - streq r0, [sp, #0x0] - mov r0, #0x1000 - str r0, [sp, #0x44] - str r3, [sp, #0x4] - str r2, [sp, #0x48] - str r1, [sp, #0x40] - str r1, [sp, #0x34] - str r1, [sp, #0x30] - str r1, [sp, #0x2c] - str r1, [sp, #0x28] - str r1, [sp, #0x24] - str r1, [sp, #0x20] - str r1, [sp, #0x14] - str r1, [sp, #0x10] - ldr r1, [r4, #0x0] - ldr r0, _020BE828 ; =UNK_021067B0 - and r1, r1, #0x7 - ldr r2, [r0, r1, lsl #0x2] - add r0, sp, #0x8 - mov r1, r4 - blx r2 - ldr r3, [r4, #0x30] - cmp r3, #0x1000 - beq _020BE7B4 - ldr r0, [sp, #0x8] - ldr r1, [sp, #0xc] - smull r2, r0, r3, r0 - mov r2, r2, lsr #0xc - orr r2, r2, r0, lsl #0x14 - str r2, [sp, #0x8] - ldr r2, [r4, #0x30] - ldr r0, [sp, #0x38] - smull r3, r1, r2, r1 - mov r2, r3, lsr #0xc - orr r2, r2, r1, lsl #0x14 - str r2, [sp, #0xc] - ldr r1, [r4, #0x30] - smull r2, r0, r1, r0 - mov r1, r2, lsr #0xc - orr r1, r1, r0, lsl #0x14 - str r1, [sp, #0x38] -_020BE7B4: - ldr r3, [r4, #0x34] - cmp r3, #0x1000 - beq _020BE804 - ldr r0, [sp, #0x18] - ldr r1, [sp, #0x1c] - smull r2, r0, r3, r0 - mov r2, r2, lsr #0xc - orr r2, r2, r0, lsl #0x14 - str r2, [sp, #0x18] - ldr r2, [r4, #0x34] - ldr r0, [sp, #0x3c] - smull r3, r1, r2, r1 - mov r2, r3, lsr #0xc - orr r2, r2, r1, lsl #0x14 - str r2, [sp, #0x1c] - ldr r1, [r4, #0x34] - smull r2, r0, r1, r0 - mov r1, r2, lsr #0xc - orr r1, r1, r0, lsl #0x14 - str r1, [sp, #0x3c] -_020BE804: - add r1, sp, #0x0 - ldr r0, [sp, #0x0] - add r1, r1, #0x4 - mov r2, #0x12 - bl FUN_020BB1C0 - add sp, sp, #0x50 - ldmia sp!, {r4,pc} - .balign 4 -_020BE820: .word 0x00101610 -_020BE824: .word 0x00101810 -_020BE828: .word UNK_021067B0 - - arm_func_start FUN_020BE82C -FUN_020BE82C: ; 0x020BE82C - mov r2, #0x1000 - str r2, [r0, #0x0] - mov r1, #0x0 - str r1, [r0, #0x4] - str r1, [r0, #0x10] - str r2, [r0, #0x14] - str r1, [r0, #0x30] - str r1, [r0, #0x34] - bx lr - - arm_func_start FUN_020BE850 -FUN_020BE850: ; 0x020BE850 - ldr r2, [r1, #0x18] - mov r12, #0x0 - str r2, [r0, #0x0] - ldr r2, [r1, #0x1c] - str r2, [r0, #0x14] - str r12, [r0, #0x4] - str r12, [r0, #0x30] - ldr r2, [r1, #0x1c] - ldrh r3, [r1, #0x2e] - mov r1, r2, lsl #0x1 - rsb r1, r1, #0x0 - add r1, r1, #0x2000 - mul r1, r3, r1 - mov r1, r1, lsl #0x3 - str r1, [r0, #0x34] - str r12, [r0, #0x10] - bx lr - - arm_func_start FUN_020BE894 -FUN_020BE894: ; 0x020BE894 - stmdb sp!, {r4-r7,lr} - sub sp, sp, #0x4 - mov r5, r1 - ldrh r2, [r5, #0x2c] - ldrh r1, [r5, #0x2e] - mov r6, r0 - mov r4, r2, lsl #0xc - mov r7, r1, lsl #0xc - mov r0, r7 - mov r1, r4 - bl FX_DivAsync - ldrsh r0, [r5, #0x22] - str r0, [r6, #0x0] - ldrsh r0, [r5, #0x22] - str r0, [r6, #0x14] - bl FX_GetDivResult - ldrsh r2, [r5, #0x20] - mov r1, r7 - rsb r2, r2, #0x0 - mul r0, r2, r0 - mov r2, r0, asr #0xc - mov r0, r4 - str r2, [r6, #0x4] - bl FX_DivAsync - ldrsh r1, [r5, #0x20] - ldrsh r0, [r5, #0x22] - ldrh r2, [r5, #0x2c] - add r0, r1, r0 - rsb r0, r0, #0x0 - add r0, r0, #0x1000 - mul r0, r2, r0 - mov r0, r0, lsl #0x3 - str r0, [r6, #0x30] - ldrsh r1, [r5, #0x20] - ldrsh r0, [r5, #0x22] - ldrh r2, [r5, #0x2e] - sub r0, r1, r0 - add r0, r0, #0x1000 - mul r0, r2, r0 - mov r0, r0, lsl #0x3 - str r0, [r6, #0x34] - bl FX_GetDivResult - ldrsh r1, [r5, #0x20] - mul r0, r1, r0 - mov r0, r0, asr #0xc - str r0, [r6, #0x10] - add sp, sp, #0x4 - ldmia sp!, {r4-r7,pc} - - arm_func_start FUN_020BE954 -FUN_020BE954: ; 0x020BE954 - stmdb sp!, {r4-r11,lr} - sub sp, sp, #0x4 - mov r9, r1 - ldrh r2, [r9, #0x2c] - ldrh r1, [r9, #0x2e] - mov r10, r0 - mov r8, r2, lsl #0xc - mov r11, r1, lsl #0xc - mov r0, r11 - mov r1, r8 - bl FX_DivAsync - ldrsh r5, [r9, #0x22] - ldr r3, [r9, #0x18] - ldrsh r0, [r9, #0x20] - ldr r4, [r9, #0x1c] - smull r2, r1, r3, r5 - mov r6, r2, lsr #0xc - orr r6, r6, r1, lsl #0x14 - smull r2, r1, r3, r0 - mov r7, r2, lsr #0xc - orr r7, r7, r1, lsl #0x14 - smull r3, r2, r4, r0 - smull r1, r0, r4, r5 - mov r5, r3, lsr #0xc - orr r5, r5, r2, lsl #0x14 - mov r4, r1, lsr #0xc - orr r4, r4, r0, lsl #0x14 - str r6, [r10, #0x0] - str r4, [r10, #0x14] - bl FX_GetDivResult - mov r1, r11 - rsb r2, r5, #0x0 - mul r0, r2, r0 - mov r0, r0, asr #0xc - str r0, [r10, #0x4] - mov r0, r8 - bl FX_DivAsync - sub r1, r5, r4 - add r0, r7, r6 - ldrh r3, [r9, #0x2c] - ldr r2, [r9, #0x18] - sub r0, r2, r0 - mul r0, r3, r0 - mov r0, r0, lsl #0x3 - str r0, [r10, #0x30] - ldrh r2, [r9, #0x2e] - ldr r0, [r9, #0x1c] - sub r0, r1, r0 - add r0, r0, #0x2000 - mul r0, r2, r0 - mov r0, r0, lsl #0x3 - str r0, [r10, #0x34] - bl FX_GetDivResult - mul r0, r7, r0 - mov r0, r0, asr #0xc - str r0, [r10, #0x10] - add sp, sp, #0x4 - ldmia sp!, {r4-r11,pc} - - arm_func_start FUN_020BEA3C -FUN_020BEA3C: ; 0x020BEA3C - mov r2, #0x1000 - str r2, [r0, #0x0] - str r2, [r0, #0x14] - mov r12, #0x0 - str r12, [r0, #0x4] - ldrh r2, [r1, #0x2c] - ldr r3, [r1, #0x24] - mul r2, r3, r2 - rsb r2, r2, #0x0 - mov r2, r2, lsl #0x4 - str r2, [r0, #0x30] - ldrh r2, [r1, #0x2e] - ldr r1, [r1, #0x28] - mul r2, r1, r2 - mov r1, r2, lsl #0x4 - str r1, [r0, #0x34] - str r12, [r0, #0x10] - bx lr - - arm_func_start FUN_020BEA84 -FUN_020BEA84: ; 0x020BEA84 - stmdb sp!, {r4,lr} - ldr r3, [r1, #0x18] - mov r2, #0x0 - str r3, [r0, #0x0] - ldr r3, [r1, #0x1c] - str r3, [r0, #0x14] - str r2, [r0, #0x4] - ldr r4, [r1, #0x18] - ldr r3, [r1, #0x24] - ldrh lr, [r1, #0x2c] - smull r12, r3, r4, r3 - mov r4, r12, lsr #0x8 - orr r4, r4, r3, lsl #0x18 - rsb r3, r4, #0x0 - mul r3, lr, r3 - str r3, [r0, #0x30] - ldr r4, [r1, #0x1c] - ldr r12, [r1, #0x28] - mov r3, r4, lsl #0x1 - smull lr, r12, r4, r12 - rsb r4, r3, #0x0 - mov r3, lr, lsr #0x8 - ldrh lr, [r1, #0x2e] - add r1, r4, #0x2000 - orr r3, r3, r12, lsl #0x18 - mul r4, lr, r1 - mul r1, lr, r3 - add r1, r1, r4, lsl #0x3 - str r1, [r0, #0x34] - str r2, [r0, #0x10] - ldmia sp!, {r4,pc} - - arm_func_start FUN_020BEB00 -FUN_020BEB00: ; 0x020BEB00 - stmdb sp!, {r4-r7,lr} - sub sp, sp, #0x4 - mov r5, r1 - ldrh r2, [r5, #0x2c] - ldrh r1, [r5, #0x2e] - mov r6, r0 - mov r4, r2, lsl #0xc - mov r7, r1, lsl #0xc - mov r0, r7 - mov r1, r4 - bl FX_DivAsync - ldrsh r0, [r5, #0x22] - str r0, [r6, #0x0] - ldrsh r0, [r5, #0x22] - str r0, [r6, #0x14] - bl FX_GetDivResult - ldrsh r2, [r5, #0x20] - mov r1, r7 - rsb r2, r2, #0x0 - mul r0, r2, r0 - mov r2, r0, asr #0xc - mov r0, r4 - str r2, [r6, #0x4] - bl FX_DivAsync - ldrsh r2, [r5, #0x20] - ldrsh r1, [r5, #0x22] - ldrh r3, [r5, #0x2c] - ldr r0, [r5, #0x24] - add r1, r2, r1 - rsb r1, r1, #0x0 - add r1, r1, #0x1000 - mul r2, r3, r1 - mul r1, r0, r3 - mov r0, r2, lsl #0x3 - sub r0, r0, r1, lsl #0x4 - str r0, [r6, #0x30] - ldrsh r2, [r5, #0x20] - ldrsh r1, [r5, #0x22] - ldrh r3, [r5, #0x2e] - ldr r0, [r5, #0x28] - sub r1, r2, r1 - add r1, r1, #0x1000 - mul r2, r3, r1 - mul r1, r0, r3 - mov r0, r2, lsl #0x3 - add r0, r0, r1, lsl #0x4 - str r0, [r6, #0x34] - bl FX_GetDivResult - ldrsh r1, [r5, #0x20] - mul r0, r1, r0 - mov r0, r0, asr #0xc - str r0, [r6, #0x10] - add sp, sp, #0x4 - ldmia sp!, {r4-r7,pc} - - arm_func_start FUN_020BEBD8 -FUN_020BEBD8: ; 0x020BEBD8 - stmdb sp!, {r4-r11,lr} - sub sp, sp, #0x4 - mov r9, r1 - ldrh r2, [r9, #0x2c] - ldrh r1, [r9, #0x2e] - mov r10, r0 - mov r8, r2, lsl #0xc - mov r11, r1, lsl #0xc - mov r0, r11 - mov r1, r8 - bl FX_DivAsync - ldrsh r5, [r9, #0x22] - ldr r3, [r9, #0x18] - ldrsh r0, [r9, #0x20] - ldr r4, [r9, #0x1c] - smull r2, r1, r3, r5 - mov r6, r2, lsr #0xc - orr r6, r6, r1, lsl #0x14 - smull r2, r1, r3, r0 - mov r7, r2, lsr #0xc - orr r7, r7, r1, lsl #0x14 - smull r3, r2, r4, r0 - smull r1, r0, r4, r5 - mov r5, r3, lsr #0xc - orr r5, r5, r2, lsl #0x14 - mov r4, r1, lsr #0xc - orr r4, r4, r0, lsl #0x14 - str r6, [r10, #0x0] - str r4, [r10, #0x14] - bl FX_GetDivResult - mov r1, r11 - rsb r2, r5, #0x0 - mul r0, r2, r0 - mov r0, r0, asr #0xc - str r0, [r10, #0x4] - mov r0, r8 - bl FX_DivAsync - sub r1, r5, r4 - add r2, r7, r6 - ldr r5, [r9, #0x18] - ldrh r0, [r9, #0x2c] - sub r3, r5, r2 - ldr r2, [r9, #0x24] - mul r4, r0, r3 - smull r3, r2, r5, r2 - mov r4, r4, lsl #0x3 - mov r3, r3, lsr #0x8 - orr r3, r3, r2, lsl #0x18 - mul r2, r0, r3 - sub r0, r4, r2 - str r0, [r10, #0x30] - ldr r4, [r9, #0x1c] - ldrh r3, [r9, #0x2e] - sub r0, r1, r4 - add r0, r0, #0x2000 - mul r2, r3, r0 - ldr r0, [r9, #0x28] - smull r1, r0, r4, r0 - mov r1, r1, lsr #0x8 - orr r1, r1, r0, lsl #0x18 - mul r0, r3, r1 - add r0, r0, r2, lsl #0x3 - str r0, [r10, #0x34] - bl FX_GetDivResult - mul r0, r7, r0 - mov r0, r0, asr #0xc - str r0, [r10, #0x10] - add sp, sp, #0x4 - ldmia sp!, {r4-r11,pc} - - arm_func_start FUN_020BECEC -FUN_020BECEC: ; 0x020BECEC - stmdb sp!, {r4-r8,lr} - mov r12, r0 - ands r0, r3, #0x4 - ldrb r3, [r2, #0x3] - beq _020BED40 - ldr r1, [r12, #0x0] - ands r0, r3, #0x2 - orr r0, r1, #0x1 - str r0, [r12, #0x0] - beq _020BEDB8 - ldr r0, _020BEE2C ; =UNK_021CEF7C - ldrb r7, [r2, #0x1] - ldr r0, [r0, #0x0] - mov r1, #0x1 - add r6, r0, #0xc4 - mov r5, r7, lsr #0x5 - ldr r4, [r6, r5, lsl #0x2] - and r0, r7, #0x1f - orr r0, r4, r1, lsl r0 - str r0, [r6, r5, lsl #0x2] - b _020BEDB8 -_020BED40: - ldr r4, [r1, #0x0] - ands r0, r3, #0x2 - str r4, [r12, #0x4] - ldr r0, [r1, #0x4] - str r0, [r12, #0x8] - ldr r0, [r1, #0x8] - str r0, [r12, #0xc] - beq _020BEDB8 - ldr lr, _020BEE2C ; =UNK_021CEF7C - ldrb r0, [r2, #0x1] - ldr r4, [lr, #0x0] - mov lr, #0x18 - add r8, r4, #0xc4 - mov r7, r0, lsr #0x5 - and r4, r0, #0x1f - mov r5, #0x1 - mvn r4, r5, lsl r4 - ldr r6, [r8, r7, lsl #0x2] - mul r5, r0, lr - and r0, r6, r4 - str r0, [r8, r7, lsl #0x2] - ldr r4, [r1, #0xc] - ldr r0, _020BEE30 ; =UNK_021CFD8C - ldr lr, _020BEE34 ; =UNK_021CFD90 - str r4, [r0, r5] - ldr r4, [r1, #0x10] - ldr r0, _020BEE38 ; =UNK_021CFD94 - str r4, [lr, r5] - ldr r1, [r1, #0x14] - str r1, [r0, r5] -_020BEDB8: - ands r0, r3, #0x1 - beq _020BEE1C - ldrb r0, [r2, #0x2] - ldr r2, [r12, #0x0] - ldr r1, _020BEE2C ; =UNK_021CEF7C - orr r2, r2, #0x20 - str r2, [r12, #0x0] - ldr r2, [r1, #0x0] - mov r1, r0, lsr #0x5 - add r1, r2, r1, lsl #0x2 - and r2, r0, #0x1f - mov r3, #0x1 - mov r2, r3, lsl r2 - ldr r1, [r1, #0xc4] - ands r1, r2, r1 - ldrne r0, [r12, #0x0] - orrne r0, r0, #0x8 - strne r0, [r12, #0x0] - bne _020BEE1C - ldr r2, _020BEE30 ; =UNK_021CFD8C - mov r1, #0x18 - mla r1, r0, r1, r2 - add r3, r12, #0x10 - ldmia r1, {r0-r2} - stmia r3, {r0-r2} -_020BEE1C: - ldr r0, [r12, #0x0] - orr r0, r0, #0x10 - str r0, [r12, #0x0] - ldmia sp!, {r4-r8,pc} - .balign 4 -_020BEE2C: .word UNK_021CEF7C -_020BEE30: .word UNK_021CFD8C -_020BEE34: .word UNK_021CFD90 -_020BEE38: .word UNK_021CFD94 - - arm_func_start FUN_020BEE3C -FUN_020BEE3C: ; 0x020BEE3C - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - mov r5, r0 - ldr r1, [r5, #0x0] - mov r4, #0x0 - ands r0, r1, #0x4 - moveq r4, #0x1 - ands r0, r1, #0x20 - beq _020BEE94 - ands r0, r1, #0x8 - bne _020BEE94 - cmp r4, #0x0 - beq _020BEE84 - add r1, r5, #0x4c - mov r0, #0x1c - mov r2, #0x3 - bl FUN_020BB1C0 - mov r4, #0x0 -_020BEE84: - add r1, r5, #0x10 - mov r0, #0x1b - mov r2, #0x3 - bl FUN_020BB1C0 -_020BEE94: - ldr r0, [r5, #0x0] - ands r0, r0, #0x2 - bne _020BEED0 - cmp r4, #0x0 - beq _020BEEBC - add r1, r5, #0x28 - mov r0, #0x19 - mov r2, #0xc - bl FUN_020BB1C0 - b _020BEEE8 -_020BEEBC: - add r1, r5, #0x28 - mov r0, #0x1a - mov r2, #0x9 - bl FUN_020BB1C0 - b _020BEEE8 -_020BEED0: - cmp r4, #0x0 - beq _020BEEE8 - add r1, r5, #0x4c - mov r0, #0x1c - mov r2, #0x3 - bl FUN_020BB1C0 -_020BEEE8: - ldr r0, [r5, #0x0] - ands r0, r0, #0x1 - addne sp, sp, #0x4 - ldmneia sp!, {r4-r5,pc} - add r1, r5, #0x4 - mov r0, #0x1b - mov r2, #0x3 - bl FUN_020BB1C0 - add sp, sp, #0x4 - ldmia sp!, {r4-r5,pc} - - arm_func_start FUN_020BEF10 -FUN_020BEF10: ; 0x020BEF10 - stmdb sp!, {lr} - sub sp, sp, #0x3c - ldr r1, [r0, #0x0] - mov r3, #0x0 - ands r1, r1, #0x8 - ldrne r1, _020BF0CC ; =0x00101710 - mov r2, #0x3 - strne r1, [sp, #0x0] - ldreq r1, _020BF0D0 ; =0x00101910 - str r3, [sp, #0x34] - streq r1, [sp, #0x0] - mov r1, #0x2 - str r1, [sp, #0x38] - str r3, [sp, #0x28] - str r3, [sp, #0x24] - str r3, [sp, #0x20] - str r3, [sp, #0x1c] - str r3, [sp, #0x14] - str r3, [sp, #0x10] - str r3, [sp, #0xc] - str r2, [sp, #0x4] - ldr r2, [r0, #0x0] - ands r1, r2, #0x4 - beq _020BEFA0 - str r3, [sp, #0x2c] - str r3, [sp, #0x30] - ldr r1, [r0, #0x0] - ands r1, r1, #0x1 - movne r1, #0x1000 - strne r1, [sp, #0x8] - strne r1, [sp, #0x18] - ldreq r1, [r0, #0x18] - streq r1, [sp, #0x8] - ldreq r1, [r0, #0x1c] - streq r1, [sp, #0x18] - b _020BF040 -_020BEFA0: - ands r1, r2, #0x1 - beq _020BEFE8 - ldr r2, [r0, #0x24] - ldrh r1, [r0, #0x2c] - mov r2, r2, lsl #0x4 - rsb r2, r2, #0x0 - mul r1, r2, r1 - str r1, [sp, #0x2c] - ldr r2, [r0, #0x28] - ldrh r1, [r0, #0x2e] - mov r2, r2, lsl #0x4 - rsb r2, r2, #0x0 - mul r3, r2, r1 - mov r1, #0x1000 - str r3, [sp, #0x30] - str r1, [sp, #0x8] - str r1, [sp, #0x18] - b _020BF040 -_020BEFE8: - ldr r2, [r0, #0x18] - ldr r1, [r0, #0x24] - ldrh r12, [r0, #0x2c] - smull r3, r1, r2, r1 - mov r2, r3, lsr #0x8 - orr r2, r2, r1, lsl #0x18 - rsb r1, r2, #0x0 - mul r1, r12, r1 - str r1, [sp, #0x2c] - ldr r2, [r0, #0x1c] - ldr r1, [r0, #0x28] - ldrh r12, [r0, #0x2e] - smull r3, r1, r2, r1 - mov r2, r3, lsr #0x8 - orr r2, r2, r1, lsl #0x18 - rsb r1, r2, #0x0 - mul r1, r12, r1 - str r1, [sp, #0x30] - ldr r1, [r0, #0x18] - str r1, [sp, #0x8] - ldr r1, [r0, #0x1c] - str r1, [sp, #0x18] -_020BF040: - ldr r12, [r0, #0x30] - cmp r12, #0x1000 - beq _020BF078 - ldr r2, [sp, #0x8] - ldr r1, [sp, #0x2c] - smull r3, r2, r12, r2 - mov r3, r3, lsr #0xc - orr r3, r3, r2, lsl #0x14 - str r3, [sp, #0x8] - ldr r2, [r0, #0x30] - smull r3, r1, r2, r1 - mov r2, r3, lsr #0xc - orr r2, r2, r1, lsl #0x14 - str r2, [sp, #0x2c] -_020BF078: - ldr r12, [r0, #0x34] - cmp r12, #0x1000 - beq _020BF0B0 - ldr r2, [sp, #0x18] - ldr r1, [sp, #0x30] - smull r3, r2, r12, r2 - mov r3, r3, lsr #0xc - orr r3, r3, r2, lsl #0x14 - str r3, [sp, #0x18] - ldr r0, [r0, #0x34] - smull r2, r1, r0, r1 - mov r0, r2, lsr #0xc - orr r0, r0, r1, lsl #0x14 - str r0, [sp, #0x30] -_020BF0B0: - add r1, sp, #0x0 - ldr r0, [sp, #0x0] - add r1, r1, #0x4 - mov r2, #0xe - bl FUN_020BB1C0 - add sp, sp, #0x3c - ldmia sp!, {pc} - .balign 4 -_020BF0CC: .word 0x00101710 -_020BF0D0: .word 0x00101910 - - arm_func_start FUN_020BF0D4 -FUN_020BF0D4: ; 0x020BF0D4 - stmdb sp!, {r4-r8,lr} - mov r5, r0 - ands r0, r3, #0x4 - ldrb r4, [r2, #0x1] - ldrb r0, [r2, #0x2] - beq _020BF174 - ldr r2, [r5, #0x0] - ldr r1, _020BF2E0 ; =UNK_021CEF7C - orr r2, r2, #0x1 - str r2, [r5, #0x0] - ldr r3, [r1, #0x0] - mov r1, r0, lsr #0x5 - add r1, r3, r1, lsl #0x2 - and r2, r0, #0x1f - mov r6, #0x1 - mov r2, r6, lsl r2 - ldr r1, [r1, #0xc4] - ands r1, r2, r1 - beq _020BF148 - add r3, r3, #0xc4 - mov r2, r4, lsr #0x5 - ldr r1, [r3, r2, lsl #0x2] - and r0, r4, #0x1f - orr r0, r1, r6, lsl r0 - str r0, [r3, r2, lsl #0x2] - ldr r0, [r5, #0x0] - orr r0, r0, #0x18 - str r0, [r5, #0x0] - ldmia sp!, {r4-r8,pc} -_020BF148: - ldr r1, _020BF2E4 ; =UNK_021CFD80 - mov r2, #0x18 - mla r6, r0, r2, r1 - mla r1, r4, r2, r1 - mov r0, r6 - bl MIi_CpuCopy32 - mov r0, r6 - add r1, r5, #0x10 - mov r2, #0x18 - bl MIi_CpuCopy32 - ldmia sp!, {r4-r8,pc} -_020BF174: - ldr r3, [r1, #0x0] - ldr r2, _020BF2E0 ; =UNK_021CEF7C - str r3, [r5, #0x4] - ldr r3, [r1, #0x4] - mov r7, r0, lsr #0x5 - str r3, [r5, #0x8] - ldr r3, [r1, #0x8] - and r8, r0, #0x1f - str r3, [r5, #0xc] - ldr r6, [r2, #0x0] - mov r3, #0x1 - add r2, r6, r7, lsl #0x2 - mov r7, r3, lsl r8 - ldr r2, [r2, #0xc4] - ands r2, r7, r2 - beq _020BF200 - ldr r3, _020BF2E4 ; =UNK_021CFD80 - mov r2, #0x18 - mov r0, r1 - mla r1, r4, r2, r3 - bl MIi_CpuCopy32 - ldr r0, _020BF2E0 ; =UNK_021CEF7C - mov r2, r4, lsr #0x5 - ldr r1, [r0, #0x0] - and r0, r4, #0x1f - add r3, r1, #0xc4 - mov r1, #0x1 - mvn r0, r1, lsl r0 - ldr r1, [r3, r2, lsl #0x2] - and r0, r1, r0 - str r0, [r3, r2, lsl #0x2] - ldr r0, [r5, #0x0] - orr r0, r0, #0x18 - str r0, [r5, #0x0] - ldmia sp!, {r4-r8,pc} -_020BF200: - mov r2, #0x18 - mul r12, r0, r2 - and r7, r4, #0x1f - ldr r0, _020BF2E4 ; =UNK_021CFD80 - add r6, r6, #0xc4 - mov lr, r4, lsr #0x5 - mvn r7, r3, lsl r7 - ldr r8, [r6, lr, lsl #0x2] - mul r3, r4, r2 - and r4, r8, r7 - str r4, [r6, lr, lsl #0x2] - ldr r7, [r1, #0x0] - ldr r4, [r0, r12] - ldr r6, _020BF2E8 ; =UNK_021CFD84 - smull r8, r4, r7, r4 - mov r7, r8, lsr #0xc - orr r7, r7, r4, lsl #0x14 - str r7, [r0, r3] - ldr r8, [r1, #0x4] - ldr r4, [r6, r12] - ldr r7, _020BF2EC ; =UNK_021CFD88 - smull lr, r4, r8, r4 - mov r8, lr, lsr #0xc - orr r8, r8, r4, lsl #0x14 - str r8, [r6, r3] - ldr r8, [r1, #0x8] - ldr r4, [r7, r12] - ldr r6, _020BF2F0 ; =UNK_021CFD8C - smull lr, r4, r8, r4 - mov r8, lr, lsr #0xc - orr r8, r8, r4, lsl #0x14 - str r8, [r7, r3] - ldr r7, [r1, #0xc] - ldr r4, [r6, r12] - ldr lr, _020BF2F4 ; =UNK_021CFD90 - smull r8, r4, r7, r4 - mov r7, r8, lsr #0xc - orr r7, r7, r4, lsl #0x14 - str r7, [r6, r3] - ldr r7, [r1, #0x10] - ldr r4, [lr, r12] - ldr r6, _020BF2F8 ; =UNK_021CFD94 - smull r8, r4, r7, r4 - add r0, r0, r12 - mov r7, r8, lsr #0xc - orr r7, r7, r4, lsl #0x14 - str r7, [lr, r3] - ldr lr, [r1, #0x14] - ldr r4, [r6, r12] - add r1, r5, #0x10 - smull r5, r4, lr, r4 - mov r5, r5, lsr #0xc - orr r5, r5, r4, lsl #0x14 - str r5, [r6, r3] - bl MIi_CpuCopy32 - ldmia sp!, {r4-r8,pc} - .balign 4 -_020BF2E0: .word UNK_021CEF7C -_020BF2E4: .word UNK_021CFD80 -_020BF2E8: .word UNK_021CFD84 -_020BF2EC: .word UNK_021CFD88 -_020BF2F0: .word UNK_021CFD8C -_020BF2F4: .word UNK_021CFD90 -_020BF2F8: .word UNK_021CFD94 - - arm_func_start FUN_020BF2FC -FUN_020BF2FC: ; 0x020BF2FC - stmdb sp!, {r4-r6,lr} - sub sp, sp, #0x10 - mov r6, r0 - ldr r0, [r6, #0x0] - mov r5, #0x0 - ands r4, r0, #0x18 - bne _020BF328 - add r1, r6, #0x1c - mov r0, #0x1b - mov r2, #0x3 - bl FUN_020BB1C0 -_020BF328: - ldr r0, [r6, #0x0] - ands r0, r0, #0x4 - bne _020BF398 - cmp r4, #0x0 - movne r5, #0x1 - bne _020BF398 - ldr r2, [r6, #0x4c] - ldr r0, [r6, #0x10] - add r1, sp, #0x0 - smull r3, r0, r2, r0 - mov r2, r3, lsr #0xc - orr r2, r2, r0, lsl #0x14 - str r2, [sp, #0x0] - ldr r3, [r6, #0x50] - ldr r2, [r6, #0x14] - mov r0, #0x1c - smull r12, r2, r3, r2 - mov r3, r12, lsr #0xc - orr r3, r3, r2, lsl #0x14 - str r3, [sp, #0x4] - ldr r12, [r6, #0x54] - ldr r3, [r6, #0x18] - mov r2, #0x3 - smull lr, r3, r12, r3 - mov r12, lr, lsr #0xc - orr r12, r12, r3, lsl #0x14 - str r12, [sp, #0x8] - bl FUN_020BB1C0 -_020BF398: - ldr r0, [r6, #0x0] - ands r0, r0, #0x2 - bne _020BF3D4 - cmp r5, #0x0 - beq _020BF3C0 - add r1, r6, #0x28 - mov r0, #0x19 - mov r2, #0xc - bl FUN_020BB1C0 - b _020BF3EC -_020BF3C0: - add r1, r6, #0x28 - mov r0, #0x1a - mov r2, #0x9 - bl FUN_020BB1C0 - b _020BF3EC -_020BF3D4: - cmp r5, #0x0 - beq _020BF3EC - add r1, r6, #0x4c - mov r0, #0x1c - mov r2, #0x3 - bl FUN_020BB1C0 -_020BF3EC: - cmp r4, #0x0 - bne _020BF404 - add r1, r6, #0x10 - mov r0, #0x1b - mov r2, #0x3 - bl FUN_020BB1C0 -_020BF404: - ldr r0, [r6, #0x0] - ands r0, r0, #0x1 - addne sp, sp, #0x10 - ldmneia sp!, {r4-r6,pc} - add r1, r6, #0x4 - mov r0, #0x1b - mov r2, #0x3 - bl FUN_020BB1C0 - add sp, sp, #0x10 - ldmia sp!, {r4-r6,pc} - - arm_func_start FUN_020BF42C -FUN_020BF42C: ; 0x020BF42C - stmdb sp!, {r4,lr} - sub sp, sp, #0x50 - mov r4, r0 - ldr r0, [r4, #0x0] - mov r1, #0x0 - ands r0, r0, #0x8 - ldrne r0, _020BF568 ; =0x00101610 - mov r3, #0x3 - strne r0, [sp, #0x0] - ldreq r0, _020BF56C ; =0x00101810 - mov r2, #0x2 - streq r0, [sp, #0x0] - mov r0, #0x1000 - str r0, [sp, #0x44] - str r3, [sp, #0x4] - str r2, [sp, #0x48] - str r1, [sp, #0x40] - str r1, [sp, #0x34] - str r1, [sp, #0x30] - str r1, [sp, #0x2c] - str r1, [sp, #0x28] - str r1, [sp, #0x24] - str r1, [sp, #0x20] - str r1, [sp, #0x14] - str r1, [sp, #0x10] - ldr r1, [r4, #0x0] - ldr r0, _020BF570 ; =UNK_021067D0 - and r1, r1, #0x7 - ldr r2, [r0, r1, lsl #0x2] - add r0, sp, #0x8 - mov r1, r4 - blx r2 - ldr r3, [r4, #0x30] - cmp r3, #0x1000 - beq _020BF4FC - ldr r0, [sp, #0x8] - ldr r1, [sp, #0xc] - smull r2, r0, r3, r0 - mov r2, r2, lsr #0xc - orr r2, r2, r0, lsl #0x14 - str r2, [sp, #0x8] - ldr r2, [r4, #0x30] - ldr r0, [sp, #0x38] - smull r3, r1, r2, r1 - mov r2, r3, lsr #0xc - orr r2, r2, r1, lsl #0x14 - str r2, [sp, #0xc] - ldr r1, [r4, #0x30] - smull r2, r0, r1, r0 - mov r1, r2, lsr #0xc - orr r1, r1, r0, lsl #0x14 - str r1, [sp, #0x38] -_020BF4FC: - ldr r3, [r4, #0x34] - cmp r3, #0x1000 - beq _020BF54C - ldr r0, [sp, #0x18] - ldr r1, [sp, #0x1c] - smull r2, r0, r3, r0 - mov r2, r2, lsr #0xc - orr r2, r2, r0, lsl #0x14 - str r2, [sp, #0x18] - ldr r2, [r4, #0x34] - ldr r0, [sp, #0x3c] - smull r3, r1, r2, r1 - mov r2, r3, lsr #0xc - orr r2, r2, r1, lsl #0x14 - str r2, [sp, #0x1c] - ldr r1, [r4, #0x34] - smull r2, r0, r1, r0 - mov r1, r2, lsr #0xc - orr r1, r1, r0, lsl #0x14 - str r1, [sp, #0x3c] -_020BF54C: - add r1, sp, #0x0 - ldr r0, [sp, #0x0] - add r1, r1, #0x4 - mov r2, #0x12 - bl FUN_020BB1C0 - add sp, sp, #0x50 - ldmia sp!, {r4,pc} - .balign 4 -_020BF568: .word 0x00101610 -_020BF56C: .word 0x00101810 -_020BF570: .word UNK_021067D0 - - arm_func_start FUN_020BF574 -FUN_020BF574: ; 0x020BF574 - mov r2, #0x1000 - str r2, [r0, #0x0] - mov r1, #0x0 - str r1, [r0, #0x4] - str r1, [r0, #0x10] - str r2, [r0, #0x14] - str r1, [r0, #0x30] - str r1, [r0, #0x34] - bx lr - - arm_func_start FUN_020BF598 -FUN_020BF598: ; 0x020BF598 - ldr r2, [r1, #0x18] - mov r12, #0x0 - str r2, [r0, #0x0] - ldr r2, [r1, #0x1c] - str r2, [r0, #0x14] - str r12, [r0, #0x4] - ldr r3, [r1, #0x18] - ldrh r2, [r1, #0x2c] - rsb r3, r3, #0x1000 - mul r2, r3, r2 - mov r2, r2, lsl #0x3 - str r2, [r0, #0x30] - ldr r2, [r1, #0x1c] - ldrh r1, [r1, #0x2e] - rsb r2, r2, #0x1000 - mul r1, r2, r1 - mov r1, r1, lsl #0x3 - str r1, [r0, #0x34] - str r12, [r0, #0x10] - bx lr - - arm_func_start FUN_020BF5E8 -FUN_020BF5E8: ; 0x020BF5E8 - stmdb sp!, {r4-r7,lr} - sub sp, sp, #0x4 - mov r5, r1 - ldrh r2, [r5, #0x2c] - ldrh r1, [r5, #0x2e] - mov r6, r0 - mov r4, r2, lsl #0xc - mov r7, r1, lsl #0xc - mov r0, r7 - mov r1, r4 - bl FX_DivAsync - ldrsh r0, [r5, #0x22] - str r0, [r6, #0x0] - ldrsh r0, [r5, #0x22] - str r0, [r6, #0x14] - bl FX_GetDivResult - ldrsh r2, [r5, #0x20] - mov r1, r7 - mul r0, r2, r0 - mov r2, r0, asr #0xc - mov r0, r4 - str r2, [r6, #0x4] - bl FX_DivAsync - ldrh r2, [r5, #0x2c] - ldrh r1, [r5, #0x2e] - ldrsh r4, [r5, #0x22] - rsb r0, r2, #0x0 - rsb r1, r1, #0x0 - mov r0, r0, lsl #0xb - ldrsh r3, [r5, #0x20] - mov r1, r1, lsl #0xb - smull r7, lr, r4, r0 - smull r12, r4, r3, r1 - subs r7, r7, r12 - sbc r3, lr, r4 - mov r4, r7, lsr #0x8 - orr r4, r4, r3, lsl #0x18 - add r2, r4, r2, lsl #0xf - str r2, [r6, #0x30] - ldrsh r2, [r5, #0x22] - ldrsh r3, [r5, #0x20] - ldrh r12, [r5, #0x2e] - smull r4, r1, r2, r1 - smlal r4, r1, r3, r0 - mov r0, r4, lsr #0x8 - orr r0, r0, r1, lsl #0x18 - add r0, r0, r12, lsl #0xf - str r0, [r6, #0x34] - bl FX_GetDivResult - ldrsh r1, [r5, #0x20] - rsb r1, r1, #0x0 - mul r0, r1, r0 - mov r0, r0, asr #0xc - str r0, [r6, #0x10] - add sp, sp, #0x4 - ldmia sp!, {r4-r7,pc} - - arm_func_start FUN_020BF6C8 -FUN_020BF6C8: ; 0x020BF6C8 - stmdb sp!, {r4-r11,lr} - sub sp, sp, #0x4 - mov r9, r1 - ldrh r2, [r9, #0x2c] - ldrh r1, [r9, #0x2e] - mov r10, r0 - mov r8, r2, lsl #0xc - mov r11, r1, lsl #0xc - mov r0, r11 - mov r1, r8 - bl FX_DivAsync - ldrsh r0, [r9, #0x22] - ldr r3, [r9, #0x18] - ldrsh r5, [r9, #0x20] - ldr r4, [r9, #0x1c] - smull r2, r1, r3, r0 - mov r7, r2, lsr #0xc - orr r7, r7, r1, lsl #0x14 - smull r2, r1, r3, r5 - mov r6, r2, lsr #0xc - orr r6, r6, r1, lsl #0x14 - smull r3, r2, r4, r0 - smull r1, r0, r4, r5 - mov r5, r3, lsr #0xc - orr r5, r5, r2, lsl #0x14 - mov r4, r1, lsr #0xc - orr r4, r4, r0, lsl #0x14 - str r7, [r10, #0x0] - str r5, [r10, #0x14] - bl FX_GetDivResult - mov r1, r11 - mul r0, r4, r0 - mov r0, r0, asr #0xc - str r0, [r10, #0x4] - mov r0, r8 - bl FX_DivAsync - ldrh r3, [r9, #0x2c] - ldrh r1, [r9, #0x2e] - rsb r0, r3, #0x0 - rsb r1, r1, #0x0 - mov r2, r1, lsl #0xb - mov r11, r0, lsl #0xb - smull r1, r0, r7, r11 - smull r8, r7, r5, r2 - smlal r8, r7, r4, r11 - mov r4, r8, lsr #0x8 - orr r4, r4, r7, lsl #0x18 - smull r5, r2, r6, r2 - subs r1, r1, r5 - sbc r0, r0, r2 - mov r1, r1, lsr #0x8 - orr r1, r1, r0, lsl #0x18 - add r0, r1, r3, lsl #0xf - str r0, [r10, #0x30] - ldrh r0, [r9, #0x2e] - add r0, r4, r0, lsl #0xf - str r0, [r10, #0x34] - bl FX_GetDivResult - rsb r1, r6, #0x0 - mul r0, r1, r0 - mov r0, r0, asr #0xc - str r0, [r10, #0x10] - add sp, sp, #0x4 - ldmia sp!, {r4-r11,pc} - - arm_func_start FUN_020BF7C8 -FUN_020BF7C8: ; 0x020BF7C8 - mov r2, #0x1000 - str r2, [r0, #0x0] - str r2, [r0, #0x14] - mov r12, #0x0 - str r12, [r0, #0x4] - ldr r3, [r1, #0x24] - ldrh r2, [r1, #0x2c] - rsb r3, r3, #0x0 - mul r2, r3, r2 - mov r2, r2, lsl #0x4 - str r2, [r0, #0x30] - ldrh r2, [r1, #0x2e] - ldr r1, [r1, #0x28] - mul r2, r1, r2 - mov r1, r2, lsl #0x4 - str r1, [r0, #0x34] - str r12, [r0, #0x10] - bx lr - - arm_func_start FUN_020BF810 -FUN_020BF810: ; 0x020BF810 - stmdb sp!, {r4-r6,lr} - ldr r2, [r1, #0x18] - mov r3, #0x0 - str r2, [r0, #0x0] - ldr r2, [r1, #0x1c] - str r2, [r0, #0x14] - str r3, [r0, #0x4] - ldrh r5, [r1, #0x2c] - ldr r12, [r1, #0x24] - ldrh r2, [r1, #0x2e] - mul lr, r12, r5 - rsb r12, r5, #0x0 - mov r12, r12, lsl #0xb - ldr r4, [r1, #0x18] - sub r12, r12, lr - smull lr, r12, r4, r12 - ldr r6, [r1, #0x28] - mov r4, lr, lsr #0x8 - orr r4, r4, r12, lsl #0x18 - add r4, r4, r5, lsl #0xf - str r4, [r0, #0x30] - mul r4, r6, r2 - rsb r5, r2, #0x0 - ldr r2, [r1, #0x1c] - add r4, r4, r5, lsl #0xb - smull lr, r12, r2, r4 - mov r2, lr, lsr #0x8 - ldrh r1, [r1, #0x2e] - orr r2, r2, r12, lsl #0x18 - add r1, r2, r1, lsl #0xf - str r1, [r0, #0x34] - str r3, [r0, #0x10] - ldmia sp!, {r4-r6,pc} - - arm_func_start FUN_020BF894 -FUN_020BF894: ; 0x020BF894 - stmdb sp!, {r4-r7,lr} - sub sp, sp, #0x4 - mov r5, r1 - ldrh r2, [r5, #0x2c] - ldrh r1, [r5, #0x2e] - mov r6, r0 - mov r4, r2, lsl #0xc - mov r7, r1, lsl #0xc - mov r0, r7 - mov r1, r4 - bl FX_DivAsync - ldrsh r0, [r5, #0x22] - str r0, [r6, #0x0] - ldrsh r0, [r5, #0x22] - str r0, [r6, #0x14] - bl FX_GetDivResult - ldrsh r2, [r5, #0x20] - mov r1, r7 - mul r0, r2, r0 - mov r2, r0, asr #0xc - mov r0, r4 - str r2, [r6, #0x4] - bl FX_DivAsync - ldrh r2, [r5, #0x2c] - ldrh r7, [r5, #0x2e] - ldr r1, [r5, #0x28] - ldr r0, [r5, #0x24] - rsb r4, r2, #0x0 - mul r3, r1, r7 - rsb r1, r7, #0x0 - add r1, r3, r1, lsl #0xb - ldrsh r3, [r5, #0x20] - mov r7, r4, lsl #0xb - mul r4, r0, r2 - sub r0, r7, r4 - ldrsh lr, [r5, #0x22] - smull r12, r4, r3, r1 - smull r7, r3, lr, r0 - subs r7, r7, r12 - sbc r3, r3, r4 - mov r4, r7, lsr #0x8 - orr r4, r4, r3, lsl #0x18 - add r2, r4, r2, lsl #0xf - str r2, [r6, #0x30] - ldrsh r2, [r5, #0x22] - ldrsh r3, [r5, #0x20] - ldrh r12, [r5, #0x2e] - smull r4, r1, r2, r1 - smlal r4, r1, r3, r0 - mov r0, r4, lsr #0x8 - orr r0, r0, r1, lsl #0x18 - add r0, r0, r12, lsl #0xf - str r0, [r6, #0x34] - bl FX_GetDivResult - ldrsh r1, [r5, #0x20] - rsb r1, r1, #0x0 - mul r0, r1, r0 - mov r0, r0, asr #0xc - str r0, [r6, #0x10] - add sp, sp, #0x4 - ldmia sp!, {r4-r7,pc} - - arm_func_start FUN_020BF988 -FUN_020BF988: ; 0x020BF988 - stmdb sp!, {r4-r11,lr} - sub sp, sp, #0x4 - mov r9, r1 - ldrh r2, [r9, #0x2c] - ldrh r1, [r9, #0x2e] - mov r10, r0 - mov r8, r2, lsl #0xc - mov r11, r1, lsl #0xc - mov r0, r11 - mov r1, r8 - bl FX_DivAsync - ldrsh r0, [r9, #0x22] - ldr r3, [r9, #0x18] - ldrsh r5, [r9, #0x20] - ldr r4, [r9, #0x1c] - smull r2, r1, r3, r0 - mov r7, r2, lsr #0xc - orr r7, r7, r1, lsl #0x14 - smull r2, r1, r3, r5 - mov r6, r2, lsr #0xc - orr r6, r6, r1, lsl #0x14 - smull r3, r2, r4, r0 - smull r1, r0, r4, r5 - mov r5, r3, lsr #0xc - orr r5, r5, r2, lsl #0x14 - mov r4, r1, lsr #0xc - orr r4, r4, r0, lsl #0x14 - str r7, [r10, #0x0] - str r5, [r10, #0x14] - bl FX_GetDivResult - mov r1, r11 - mul r0, r4, r0 - mov r0, r0, asr #0xc - str r0, [r10, #0x4] - mov r0, r8 - bl FX_DivAsync - ldrh r1, [r9, #0x2c] - ldrh r8, [r9, #0x2e] - ldr r2, [r9, #0x28] - rsb r0, r1, #0x0 - mul r3, r2, r8 - rsb r2, r8, #0x0 - add r8, r3, r2, lsl #0xb - mov r0, r0, lsl #0xb - smull r3, r2, r5, r8 - smull r8, r5, r6, r8 - ldr r11, [r9, #0x24] - mul r12, r11, r1 - sub r0, r0, r12 - smlal r3, r2, r4, r0 - smull r4, r0, r7, r0 - subs r4, r4, r8 - sbc r0, r0, r5 - mov r4, r4, lsr #0x8 - orr r4, r4, r0, lsl #0x18 - add r0, r4, r1, lsl #0xf - str r0, [r10, #0x30] - ldrh r1, [r9, #0x2e] - mov r0, r3, lsr #0x8 - orr r0, r0, r2, lsl #0x18 - add r0, r0, r1, lsl #0xf - str r0, [r10, #0x34] - bl FX_GetDivResult - rsb r1, r6, #0x0 - mul r0, r1, r0 - mov r0, r0, asr #0xc - str r0, [r10, #0x10] - add sp, sp, #0x4 - ldmia sp!, {r4-r11,pc} - - arm_func_start FUN_020BFA9C -FUN_020BFA9C: ; 0x020BFA9C - stmdb sp!, {r4,lr} - sub sp, sp, #0x50 - mov r4, r0 - ldr r0, [r4, #0x0] - mov r3, #0x3 - ands r0, r0, #0x8 - ldrne r0, _020BFC1C ; =0x00101610 - mov r2, #0x2 - strne r0, [sp, #0x0] - ldreq r0, _020BFC20 ; =0x00101810 - mov r1, #0x1000 - streq r0, [sp, #0x0] - mov r0, #0x0 - str r3, [sp, #0x4] - str r2, [sp, #0x48] - str r1, [sp, #0x44] - str r0, [sp, #0x40] - str r0, [sp, #0x34] - str r0, [sp, #0x30] - str r0, [sp, #0x2c] - str r0, [sp, #0x28] - str r0, [sp, #0x24] - str r0, [sp, #0x20] - str r0, [sp, #0x14] - str r0, [sp, #0x10] - ldr r0, [r4, #0x0] - ands r0, r0, #0x1 - strne r1, [r4, #0x1c] - ldrne r0, [r4, #0x1c] - strne r0, [r4, #0x18] - ldr r0, [r4, #0x0] - ands r0, r0, #0x2 - movne r0, #0x1000 - strneh r0, [r4, #0x22] - movne r0, #0x0 - strneh r0, [r4, #0x20] - ldr r0, [r4, #0x0] - ands r0, r0, #0x4 - movne r0, #0x0 - strne r0, [r4, #0x28] - ldrne r0, [r4, #0x28] - strne r0, [r4, #0x24] - ldr r1, [r4, #0x0] - ldr r0, _020BFC24 ; =UNK_021067F0 - and r1, r1, #0x7 - ldr r2, [r0, r1, lsl #0x2] - add r0, sp, #0x8 - mov r1, r4 - blx r2 - ldr r3, [r4, #0x30] - cmp r3, #0x1000 - beq _020BFBB0 - ldr r0, [sp, #0x8] - ldr r1, [sp, #0xc] - smull r2, r0, r3, r0 - mov r2, r2, lsr #0xc - orr r2, r2, r0, lsl #0x14 - str r2, [sp, #0x8] - ldr r2, [r4, #0x30] - ldr r0, [sp, #0x38] - smull r3, r1, r2, r1 - mov r2, r3, lsr #0xc - orr r2, r2, r1, lsl #0x14 - str r2, [sp, #0xc] - ldr r1, [r4, #0x30] - smull r2, r0, r1, r0 - mov r1, r2, lsr #0xc - orr r1, r1, r0, lsl #0x14 - str r1, [sp, #0x38] -_020BFBB0: - ldr r3, [r4, #0x34] - cmp r3, #0x1000 - beq _020BFC00 - ldr r0, [sp, #0x18] - ldr r1, [sp, #0x1c] - smull r2, r0, r3, r0 - mov r2, r2, lsr #0xc - orr r2, r2, r0, lsl #0x14 - str r2, [sp, #0x18] - ldr r2, [r4, #0x34] - ldr r0, [sp, #0x3c] - smull r3, r1, r2, r1 - mov r2, r3, lsr #0xc - orr r2, r2, r1, lsl #0x14 - str r2, [sp, #0x1c] - ldr r1, [r4, #0x34] - smull r2, r0, r1, r0 - mov r1, r2, lsr #0xc - orr r1, r1, r0, lsl #0x14 - str r1, [sp, #0x3c] -_020BFC00: - add r1, sp, #0x0 - ldr r0, [sp, #0x0] - add r1, r1, #0x4 - mov r2, #0x12 - bl FUN_020BB1C0 - add sp, sp, #0x50 - ldmia sp!, {r4,pc} - .balign 4 -_020BFC1C: .word 0x00101610 -_020BFC20: .word 0x00101810 -_020BFC24: .word UNK_021067F0 - - arm_func_start FUN_020BFC28 -FUN_020BFC28: ; 0x020BFC28 - mov r2, #0x1000 - str r2, [r0, #0x0] - mov r1, #0x0 - str r1, [r0, #0x4] - str r1, [r0, #0x10] - str r2, [r0, #0x14] - str r1, [r0, #0x30] - str r1, [r0, #0x34] - bx lr - - arm_func_start FUN_020BFC4C -FUN_020BFC4C: ; 0x020BFC4C - ldr r2, [r1, #0x18] - mov r3, #0x0 - str r2, [r0, #0x0] - ldr r2, [r1, #0x1c] - str r2, [r0, #0x14] - str r3, [r0, #0x4] - str r3, [r0, #0x30] - ldrh r2, [r1, #0x2e] - ldr r1, [r1, #0x1c] - rsb r2, r2, #0x0 - sub r1, r1, #0x1000 - mul r1, r2, r1 - mov r1, r1, lsl #0x4 - str r1, [r0, #0x34] - str r3, [r0, #0x10] - bx lr - - arm_func_start FUN_020BFC8C -FUN_020BFC8C: ; 0x020BFC8C - stmdb sp!, {r4-r7,lr} - sub sp, sp, #0x4 - mov r5, r1 - ldrh r2, [r5, #0x2c] - ldrh r1, [r5, #0x2e] - mov r6, r0 - mov r4, r2, lsl #0xc - mov r7, r1, lsl #0xc - mov r0, r7 - mov r1, r4 - bl FX_DivAsync - ldrsh r0, [r5, #0x22] - str r0, [r6, #0x0] - ldrsh r0, [r5, #0x22] - str r0, [r6, #0x14] - bl FX_GetDivResult - ldrsh r2, [r5, #0x20] - mov r1, r7 - mul r0, r2, r0 - mov r2, r0, asr #0xc - mov r0, r4 - str r2, [r6, #0x4] - bl FX_DivAsync - ldrh r1, [r5, #0x2c] - ldrsh r0, [r5, #0x20] - mul r0, r1, r0 - mov r0, r0, lsl #0x4 - str r0, [r6, #0x30] - ldrh r1, [r5, #0x2e] - ldrsh r0, [r5, #0x22] - rsb r1, r1, #0x0 - sub r0, r0, #0x1000 - mul r0, r1, r0 - mov r0, r0, lsl #0x4 - str r0, [r6, #0x34] - bl FX_GetDivResult - ldrsh r1, [r5, #0x20] - rsb r1, r1, #0x0 - mul r0, r1, r0 - mov r0, r0, asr #0xc - str r0, [r6, #0x10] - add sp, sp, #0x4 - ldmia sp!, {r4-r7,pc} - - arm_func_start FUN_020BFD38 -FUN_020BFD38: ; 0x020BFD38 - stmdb sp!, {r4-r11,lr} - sub sp, sp, #0x4 - mov r9, r1 - ldrh r2, [r9, #0x2c] - ldrh r1, [r9, #0x2e] - mov r10, r0 - mov r8, r2, lsl #0xc - mov r11, r1, lsl #0xc - mov r0, r11 - mov r1, r8 - bl FX_DivAsync - ldrsh r3, [r9, #0x22] - ldr r0, [r9, #0x18] - ldrsh r7, [r9, #0x20] - ldr r5, [r9, #0x1c] - smull r2, r1, r0, r3 - mov r2, r2, lsr #0xc - orr r2, r2, r1, lsl #0x14 - str r2, [r10, #0x0] - smull r2, r1, r5, r3 - mov r4, r2, lsr #0xc - orr r4, r4, r1, lsl #0x14 - smull r2, r1, r0, r7 - mov r6, r2, lsr #0xc - orr r6, r6, r1, lsl #0x14 - str r4, [r10, #0x14] - bl FX_GetDivResult - smull r2, r1, r5, r7 - mov r2, r2, lsr #0xc - orr r2, r2, r1, lsl #0x14 - mul r0, r2, r0 - mov r0, r0, asr #0xc - str r0, [r10, #0x4] - mov r0, r8 - mov r1, r11 - bl FX_DivAsync - sub r0, r4, #0x1000 - ldrh r1, [r9, #0x2c] - mul r2, r1, r6 - mov r1, r2, lsl #0x4 - str r1, [r10, #0x30] - ldrh r1, [r9, #0x2e] - rsb r1, r1, #0x0 - mul r0, r1, r0 - mov r0, r0, lsl #0x4 - str r0, [r10, #0x34] - bl FX_GetDivResult - rsb r1, r6, #0x0 - mul r0, r1, r0 - mov r0, r0, asr #0xc - str r0, [r10, #0x10] - add sp, sp, #0x4 - ldmia sp!, {r4-r11,pc} - - arm_func_start FUN_020BFE0C -FUN_020BFE0C: ; 0x020BFE0C - stmdb sp!, {lr} - sub sp, sp, #0x4 - mov r2, #0x1000 - str r2, [r0, #0x0] - str r2, [r0, #0x14] - mov lr, #0x0 - str lr, [r0, #0x4] - ldr r2, [r1, #0x24] - ldrh r3, [r1, #0x2c] - rsb r2, r2, #0x0 - ldr r12, [r1, #0x28] - mul r2, r3, r2 - mov r2, r2, lsl #0x4 - str r2, [r0, #0x30] - ldrh r1, [r1, #0x2e] - rsb r2, r12, #0x0 - rsb r1, r1, #0x0 - mul r2, r1, r2 - mov r1, r2, lsl #0x4 - str r1, [r0, #0x34] - str lr, [r0, #0x10] - add sp, sp, #0x4 - ldmia sp!, {pc} - - arm_func_start FUN_020BFE68 -FUN_020BFE68: ; 0x020BFE68 - stmdb sp!, {r4,lr} - ldr r3, [r1, #0x18] - mov r2, #0x0 - str r3, [r0, #0x0] - ldr r3, [r1, #0x1c] - str r3, [r0, #0x14] - str r2, [r0, #0x4] - ldr r12, [r1, #0x24] - ldr r3, [r1, #0x18] - ldr r4, [r1, #0x28] - smull lr, r3, r12, r3 - mov r12, lr, lsr #0xc - orr r12, r12, r3, lsl #0x14 - ldrh lr, [r1, #0x2c] - rsb r3, r12, #0x0 - ldr r12, [r1, #0x1c] - rsb r4, r4, #0x0 - mul r3, lr, r3 - smull lr, r12, r4, r12 - mov r3, r3, lsl #0x4 - str r3, [r0, #0x30] - mov r4, lr, lsr #0xc - ldrh r3, [r1, #0x2e] - ldr r1, [r1, #0x1c] - orr r4, r4, r12, lsl #0x14 - add r1, r1, r4 - rsb r3, r3, #0x0 - sub r1, r1, #0x1000 - mul r1, r3, r1 - mov r1, r1, lsl #0x4 - str r1, [r0, #0x34] - str r2, [r0, #0x10] - ldmia sp!, {r4,pc} - - arm_func_start FUN_020BFEEC -FUN_020BFEEC: ; 0x020BFEEC - stmdb sp!, {r4-r7,lr} - sub sp, sp, #0x4 - mov r5, r1 - ldrh r2, [r5, #0x2c] - ldrh r1, [r5, #0x2e] - mov r6, r0 - mov r4, r2, lsl #0xc - mov r7, r1, lsl #0xc - mov r0, r7 - mov r1, r4 - bl FX_DivAsync - ldrsh r0, [r5, #0x22] - str r0, [r6, #0x0] - ldrsh r0, [r5, #0x22] - str r0, [r6, #0x14] - bl FX_GetDivResult - ldrsh r2, [r5, #0x20] - mov r1, r7 - mul r0, r2, r0 - mov r2, r0, asr #0xc - mov r0, r4 - str r2, [r6, #0x4] - bl FX_DivAsync - ldrsh lr, [r5, #0x20] - ldr r4, [r5, #0x28] - ldrsh r0, [r5, #0x22] - ldr r12, [r5, #0x24] - smull r3, r2, r4, lr - smlal r3, r2, r12, r0 - smull r1, r0, r4, r0 - mov r3, r3, lsr #0xc - orr r3, r3, r2, lsl #0x14 - sub r4, lr, r3 - smull r3, r2, r12, lr - subs r1, r3, r1 - sbc r0, r2, r0 - ldrh r2, [r5, #0x2c] - mov r1, r1, lsr #0xc - orr r1, r1, r0, lsl #0x14 - mul r0, r2, r4 - mov r0, r0, lsl #0x4 - str r0, [r6, #0x30] - ldrsh r0, [r5, #0x22] - ldrh r2, [r5, #0x2e] - add r0, r0, r1 - rsb r1, r2, #0x0 - sub r0, r0, #0x1000 - mul r0, r1, r0 - mov r0, r0, lsl #0x4 - str r0, [r6, #0x34] - bl FX_GetDivResult - ldrsh r1, [r5, #0x20] - rsb r1, r1, #0x0 - mul r0, r1, r0 - mov r0, r0, asr #0xc - str r0, [r6, #0x10] - add sp, sp, #0x4 - ldmia sp!, {r4-r7,pc} - - arm_func_start FUN_020BFFD4 -FUN_020BFFD4: ; 0x020BFFD4 - stmdb sp!, {r4-r11,lr} - sub sp, sp, #0x4 - mov r6, r1 - ldrh r2, [r6, #0x2c] - ldrh r1, [r6, #0x2e] - mov r7, r0 - mov r10, r2, lsl #0xc - mov r11, r1, lsl #0xc - mov r0, r11 - mov r1, r10 - bl FX_DivAsync - ldrsh r3, [r6, #0x22] - ldr r0, [r6, #0x18] - ldrsh r9, [r6, #0x20] - smull r2, r1, r0, r3 - mov r2, r2, lsr #0xc - ldr r8, [r6, #0x1c] - orr r2, r2, r1, lsl #0x14 - str r2, [r7, #0x0] - smull r2, r1, r8, r3 - mov r4, r2, lsr #0xc - orr r4, r4, r1, lsl #0x14 - smull r2, r1, r0, r9 - mov r5, r2, lsr #0xc - orr r5, r5, r1, lsl #0x14 - str r4, [r7, #0x14] - bl FX_GetDivResult - smull r2, r1, r8, r9 - mov r2, r2, lsr #0xc - orr r2, r2, r1, lsl #0x14 - mul r0, r2, r0 - mov r0, r0, asr #0xc - str r0, [r7, #0x4] - mov r0, r10 - mov r1, r11 - bl FX_DivAsync - ldr lr, [r6, #0x1c] - ldrsh r2, [r6, #0x20] - ldr r8, [r6, #0x24] - ldr r0, [r6, #0x28] - smull r10, r9, r8, r2 - ldrh r1, [r6, #0x2c] - smull r3, r2, r0, r2 - ldrsh r12, [r6, #0x22] - str r1, [sp, #0x0] - mov r11, lr, asr #0x1f - smlal r3, r2, r8, r12 - smull r8, r12, r0, r12 - subs r8, r10, r8 - sbc r0, r9, r12 - mov r9, r8, lsr #0xc - mov r12, r3, lsr #0xc - orr r9, r9, r0, lsl #0x14 - mov r3, r2, asr #0xc - orr r12, r12, r2, lsl #0x14 - umull r10, r2, r9, lr - mla r2, r9, r11, r2 - mov r8, r0, asr #0xc - mla r2, r8, lr, r2 - ldr r1, [r6, #0x18] - mov r8, r10, lsr #0xc - orr r8, r8, r2, lsl #0x14 - add r2, r4, r8 - mov r0, r1, asr #0x1f - umull r8, r4, r12, r1 - mla r4, r12, r0, r4 - mla r4, r3, r1, r4 - mov r0, r8, lsr #0xc - orr r0, r0, r4, lsl #0x14 - sub r1, r5, r0 - ldr r0, [sp, #0x0] - sub r2, r2, #0x1000 - mul r1, r0, r1 - mov r0, r1, lsl #0x4 - str r0, [r7, #0x30] - ldrh r0, [r6, #0x2e] - rsb r0, r0, #0x0 - mul r1, r0, r2 - mov r0, r1, lsl #0x4 - str r0, [r7, #0x34] - bl FX_GetDivResult - rsb r1, r5, #0x0 - mul r0, r1, r0 - mov r0, r0, asr #0xc - str r0, [r7, #0x10] - add sp, sp, #0x4 - ldmia sp!, {r4-r11,pc} diff --git a/arm9/global.inc b/arm9/global.inc index 08432a05..4f8cce89 100644 --- a/arm9/global.inc +++ b/arm9/global.inc @@ -143,7 +143,7 @@ .extern DGT_Hash2SetSource .extern DGTi_Hash2CalcHmac .extern DGTi_hash2_arm4_small -.extern ErrorHandling +.extern GF_AssertFail .extern FS_ChangeDir .extern FS_CloseFile .extern FS_ConvertPathToFileID @@ -188,21 +188,21 @@ .extern FUN_02000EE8 .extern FUN_02000F18 .extern HandleDSLidAction -.extern FUN_020010A8 -.extern FUN_02001204 -.extern FUN_02001300 -.extern FUN_02001328 -.extern FUN_02001354 -.extern FUN_020013C8 -.extern FUN_020013E8 -.extern FUN_0200143C -.extern FUN_02001448 -.extern FUN_0200145C -.extern FUN_02001464 -.extern FUN_02001470 -.extern FUN_02001538 -.extern FUN_02001658 -.extern FUN_02001B80 +.extern ListMenuInit +.extern ListMenu_ProcessInput +.extern DestroyListMenu +.extern RedrawListMenu +.extern ListMenuTestInputInternal +.extern ListMenuTestInput +.extern ListMenuOverrideSetColors +.extern ListMenuGetCurrentItemArrayId +.extern ListMenuGetScrollAndRow +.extern ListMenuGetUnk33 +.extern ListMenuGetValueByArrayId +.extern ListMenuGetTemplateField +.extern ListMenuSetTemplateField +.extern ListMenuGetItemStr +.extern ListMenuCopyToVram .extern FUN_02001B8C .extern FUN_02001C14 .extern FUN_02001C34 @@ -236,7 +236,7 @@ .extern FontFunc .extern FUN_02002DE0 .extern FUN_02002E14 -.extern FUN_02002E4C +.extern GetFontAttribute .extern FUN_02002ED0 .extern FUN_02002EEC .extern FUN_02002F08 @@ -269,13 +269,13 @@ .extern DoSoundUpdateFrame .extern FUN_02003CE8 .extern FUN_02003D38 -.extern FUN_02003F3C -.extern FUN_02003F64 -.extern FUN_02003F78 -.extern FUN_02003F90 -.extern FUN_02003FA8 -.extern FUN_02003FC4 -.extern FUN_02003FDC +.extern GF_Snd_SaveState +.extern GF_Snd_RestoreState +.extern GF_Snd_LoadGroup +.extern GF_Snd_LoadSeq +.extern GF_Snd_LoadSeqEx +.extern GF_Snd_LoadWaveArc +.extern GF_Snd_LoadBank .extern FUN_02003FF4 .extern FUN_02004018 .extern FUN_020040F4 @@ -360,7 +360,7 @@ .extern FUN_02005614 .extern FUN_02005670 .extern FUN_020056AC -.extern PlayBGM +.extern PlaySound .extern FUN_02005CBC .extern FUN_02005CFC .extern FUN_02005D20 @@ -394,22 +394,22 @@ .extern NARC_ReadFromMember .extern NARC_ReadFile .extern NARC_GetFileCount -.extern FUN_0200687C -.extern FUN_020068C8 -.extern FUN_02006930 -.extern FUN_02006948 -.extern FUN_02006A34 -.extern FUN_02006A8C -.extern FUN_02006AE4 -.extern FUN_02006B38 -.extern FUN_02006BB0 -.extern FUN_02006BDC -.extern FUN_02006C08 -.extern FUN_02006C30 -.extern FUN_02006C5C -.extern FUN_02006C88 -.extern UncompressFromNarc -.extern FUN_02006D18 +.extern GfGfxLoader_LoadCharData +.extern GfGfxLoader_LoadScrnData +.extern GfGfxLoader_GXLoadPal +.extern GfGfxLoader_GXLoadPalWithSrcOffset +.extern GfGfxLoader_LoadWholePalette +.extern GfGfxLoader_PartiallyLoadPalette +.extern GfGfxLoader_LoadImageMapping +.extern GfGfxLoader_SetObjCntFlagsAndLoadImageMapping +.extern GfGfxLoader_GetCharData +.extern GfGfxLoader_GetScrnData +.extern GfGfxLoader_GetPlttData +.extern GfGfxLoader_GetCellBank +.extern GfGfxLoader_GetAnimBank +.extern GfGfxLoader_UncompressFromNarc +.extern GfGfxLoader_LoadFromNarc +.extern GfGfxLoader_LoadFromNarc_GetSizeOut .extern FUN_02006D98 .extern FUN_02006ED4 .extern FUN_020072E8 @@ -805,17 +805,17 @@ .extern GF_RTC_CopyDate .extern GF_RTC_TimeToSec .extern GF_RTC_DateTimeToSec -.extern FUN_02012710 +.extern GF_RTC_GetDayOfYear .extern IsNighttime .extern GF_RTC_GetTimeOfDay .extern GF_RTC_GetTimeOfDayByHour -.extern FUN_020127C0 -.extern ListMenu_ctor -.extern ListMenu_dtor -.extern ListMenu_ItemFromMsgData -.extern ListMenu_AddItem -.extern ListMenu_CopyItem -.extern ListMenu_DestroyMenuStrings +.extern GF_RTC_TimeDelta +.extern ListMenuItems_ctor +.extern ListMenuItems_dtor +.extern ListMenuItems_AppendFromMsgData +.extern ListMenuItems_AddItem +.extern ListMenuItems_CopyItem +.extern ListMenuItems_DestroyMenuStrings .extern FUN_02012944 .extern FUN_02012974 .extern FUN_02012988 @@ -882,10 +882,10 @@ .extern FUN_02013628 .extern FUN_0201365C .extern FUN_02013674 -.extern FUN_02013690 -.extern FUN_020136C0 -.extern FUN_020136E0 -.extern FUN_020136F8 +.extern ListMenuCursorNew +.extern DestroyListMenuCursorObj +.extern ListMenuCursorSetColor +.extern ListMenuUpdateCursorObj .extern MailMsg_init .extern MailMsg_init_withBank .extern MailMsg_init_default @@ -1029,7 +1029,7 @@ .extern AllocFromHeap .extern AllocFromHeapAtEnd .extern FreeToHeap -.extern FUN_02016A8C +.extern FreeToHeapExplicit .extern FUN_02016AF8 .extern FUN_02016B20 .extern FUN_02016B44 @@ -1068,10 +1068,10 @@ .extern FUN_0201886C .extern FUN_02018878 .extern FUN_02018884 -.extern FUN_02018A60 +.extern BlitBitmapRect4Bit .extern FUN_02018F4C -.extern FUN_02018FF4 -.extern FUN_0201901C +.extern AllocWindows +.extern InitWindow .extern FUN_02019048 .extern FUN_02019064 .extern FUN_020190EC @@ -1098,15 +1098,15 @@ .extern FUN_020195D0 .extern FUN_020195E4 .extern FUN_0201960C -.extern FUN_02019620 -.extern FUN_02019658 -.extern FUN_02019684 -.extern FUN_020196F4 +.extern FillWindowPixelBuffer +.extern BlitBitmapRectToWindow +.extern BlitBitmapRect +.extern FillWindowPixelRect .extern FUN_0201974C -.extern FUN_0201A8C8 +.extern ScrollWindow .extern FUN_0201AB08 -.extern FUN_0201AB0C -.extern FUN_0201AB10 +.extern GetWindowWidth +.extern GetWindowHeight .extern FUN_0201AB14 .extern FUN_0201AB18 .extern FUN_0201AB1C @@ -1977,16 +1977,16 @@ .extern AddIGTSeconds .extern GetIGTHours .extern GetIGTMinutes -.extern FUN_02029EC4 -.extern FUN_02029ECC -.extern FUN_02029EE4 -.extern FUN_02029EF8 -.extern FUN_02029F04 -.extern FUN_02029F08 -.extern FUN_02029F10 -.extern FUN_02029F14 -.extern FUN_02029F4C -.extern FUN_02029F9C +.extern Sav2_Chatot_sizeof +.extern Sav2_Chatot_init +.extern Chatot_new +.extern Sav2_Chatot_get +.extern Chatot_exists +.extern Chatot_invalidate +.extern Chatot_GetData +.extern Chatot_Decode +.extern Chatot_Encode +.extern Chatot_copy .extern FUN_02029FB0 .extern FUN_02029FB8 .extern FUN_02029FC8 @@ -2748,7 +2748,7 @@ .extern ScrCmd_Unk01FD .extern ScrCmd_Unk01FE .extern ScrCmd_Unk01FF -.extern ScrCmd_Unk026D +.extern ScrCmd_MessageUnown .extern ScrCmd_Unk002C .extern ScrCmd_Unk002D .extern ScrCmd_Unk02C0 @@ -2758,9 +2758,9 @@ .extern ScrCmd_WaitButtonAB .extern ScrCmd_WaitButtonABTime .extern ScrCmd_WaitButton -.extern ScrCmd_Unk0032 +.extern ScrCmd_WaitButtonABPad .extern ScrCmd_Unk0033 -.extern ScrCmd_Unk0034 +.extern ScrCmd_CloseMessageBox .extern ScrCmd_Unk0035 .extern ScrCmd_ScrollBg .extern ScrCmd_CreateMessageBox @@ -2786,404 +2786,404 @@ .extern ScrCmd_Unk0048 .extern ScrCmd_Unk02CF .extern ScrCmd_Unk02D0 -.extern FUN_0203AFC4 -.extern FUN_0203B024 -.extern FUN_0203B148 -.extern FUN_0203B1F0 -.extern FUN_0203B2E0 -.extern FUN_0203B3B0 -.extern FUN_0203B3C0 -.extern FUN_0203B3DC -.extern FUN_0203B3F8 -.extern FUN_0203B440 -.extern FUN_0203B468 -.extern FUN_0203B500 -.extern FUN_0203B544 -.extern FUN_0203B574 -.extern FUN_0203B5B8 -.extern FUN_0203B618 -.extern FUN_0203B640 -.extern FUN_0203B724 -.extern FUN_0203B758 -.extern FUN_0203B790 -.extern FUN_0203B7D8 -.extern FUN_0203B7F0 -.extern FUN_0203B81C -.extern FUN_0203B85C -.extern FUN_0203B8A0 -.extern FUN_0203B8E4 -.extern FUN_0203B914 -.extern FUN_0203B944 -.extern FUN_0203B968 -.extern FUN_0203B9B4 -.extern FUN_0203BA3C -.extern FUN_0203BAB0 -.extern FUN_0203BAF4 -.extern FUN_0203BB34 -.extern FUN_0203BB80 -.extern FUN_0203BB84 -.extern FUN_0203BB88 -.extern FUN_0203BB8C +.extern ScrCmd_Unk005E +.extern ScrCmd_Unk02A1 +.extern ScrCmd_Unk005F +.extern ScrCmd_Unk0060 +.extern ScrCmd_Unk02B4 +.extern ScrCmd_Unk0061 +.extern ScrCmd_Unk0062 +.extern ScrCmd_Unk0063 +.extern ScrCmd_Unk0064 +.extern ScrCmd_Unk0065 +.extern ScrCmd_Unk0066 +.extern ScrCmd_Unk0067 +.extern ScrCmd_Unk0068 +.extern ScrCmd_Unk0069 +.extern ScrCmd_Unk006A +.extern ScrCmd_Unk01BD +.extern ScrCmd_Unk006B +.extern ScrCmd_Unk006C +.extern ScrCmd_Unk006D +.extern ScrCmd_Unk02AD +.extern ScrCmd_Unk006E +.extern ScrCmd_Unk02AB +.extern ScrCmd_Unk0093 +.extern ScrCmd_Unk0094 +.extern ScrCmd_Unk0095 +.extern ScrCmd_Unk0191 +.extern ScrCmd_Unk02A5 +.extern ScrCmd_Unk0192 +.extern ScrCmd_Unk0193 +.extern ScrCmd_Unk0194 +.extern ScrCmd_Unk0195 +.extern ScrCmd_Unk0196 +.extern ScrCmd_Unk0197 +.extern ScrCmd_Unk009B +.extern ScrCmd_Unk009C +.extern ScrCmd_Unk009D +.extern ScrCmd_Unk009E +.extern ScrCmd_Unk009F .extern FUN_0203BC04 -.extern FUN_0203BC1C -.extern FUN_0203BC2C -.extern FUN_0203BCBC -.extern FUN_0203BCCC -.extern FUN_0203BCD8 -.extern FUN_0203BD08 -.extern FUN_0203BD28 -.extern FUN_0203BDB8 -.extern FUN_0203BE50 -.extern FUN_0203BE68 -.extern FUN_0203BE80 -.extern FUN_0203BECC -.extern FUN_0203BF00 -.extern FUN_0203BF20 -.extern FUN_0203BF2C -.extern FUN_0203BF84 -.extern FUN_0203BFEC -.extern FUN_0203C054 -.extern FUN_0203C090 -.extern FUN_0203C0CC -.extern FUN_0203C0FC -.extern FUN_0203C118 -.extern FUN_0203C12C -.extern FUN_0203C174 -.extern FUN_0203C1AC -.extern FUN_0203C200 -.extern ScrCmd_monstoragepc -.extern FUN_0203C2C4 -.extern FUN_0203C2E0 -.extern FUN_0203C2F0 -.extern FUN_0203C300 -.extern ScrCmd_halloffame -.extern FUN_0203C33C -.extern FUN_0203C368 -.extern FUN_0203C3C8 -.extern FUN_0203C3E8 -.extern FUN_0203C430 -.extern FUN_0203C460 -.extern FUN_0203C4B0 -.extern FUN_0203C4F0 -.extern FUN_0203C520 -.extern FUN_0203C58C -.extern FUN_0203C5BC -.extern FUN_0203C614 -.extern FUN_0203C680 -.extern FUN_0203C6C4 -.extern FUN_0203C70C -.extern FUN_0203C730 -.extern FUN_0203C788 -.extern FUN_0203C7E4 -.extern FUN_0203C7F4 -.extern FUN_0203C820 -.extern FUN_0203C844 -.extern FUN_0203C874 -.extern FUN_0203C8B4 -.extern FUN_0203C8E4 -.extern FUN_0203C930 -.extern FUN_0203C960 -.extern FUN_0203C990 -.extern FUN_0203CA20 -.extern FUN_0203CA2C -.extern FUN_0203CA5C -.extern FUN_0203CAE8 -.extern FUN_0203CB08 -.extern FUN_0203CB20 -.extern FUN_0203CB48 -.extern FUN_0203CB60 -.extern FUN_0203CB70 -.extern FUN_0203CBBC -.extern FUN_0203CBE8 -.extern FUN_0203CC88 -.extern FUN_0203CD20 -.extern FUN_0203CDB8 -.extern FUN_0203CDC4 -.extern FUN_0203CDD0 -.extern FUN_0203CE00 -.extern FUN_0203CE0C -.extern FUN_0203CE8C -.extern FUN_0203CEBC -.extern FUN_0203CF04 -.extern FUN_0203CF34 -.extern FUN_0203CF64 -.extern FUN_0203CF94 -.extern FUN_0203CFC4 -.extern FUN_0203CFC8 -.extern FUN_0203D050 -.extern FUN_0203D0A4 -.extern FUN_0203D0F8 -.extern FUN_0203D134 -.extern FUN_0203D140 -.extern FUN_0203D150 -.extern FUN_0203D178 -.extern FUN_0203D194 -.extern FUN_0203D1A4 -.extern FUN_0203D1C0 -.extern FUN_0203D214 -.extern FUN_0203D23C -.extern FUN_0203D248 -.extern FUN_0203D278 -.extern FUN_0203D2A4 -.extern FUN_0203D2E4 -.extern FUN_0203D330 -.extern FUN_0203D33C -.extern FUN_0203D36C -.extern FUN_0203D3A4 -.extern FUN_0203D3DC -.extern FUN_0203D448 -.extern FUN_0203D458 -.extern FUN_0203D490 -.extern FUN_0203D4E8 -.extern FUN_0203D528 -.extern FUN_0203D560 -.extern FUN_0203D5B0 -.extern FUN_0203D5F8 -.extern FUN_0203D60C -.extern FUN_0203D61C -.extern FUN_0203D630 -.extern FUN_0203D66C -.extern FUN_0203D6C4 -.extern FUN_0203D728 -.extern FUN_0203D738 -.extern FUN_0203D774 -.extern FUN_0203D7DC -.extern FUN_0203D834 -.extern FUN_0203D868 -.extern FUN_0203D874 -.extern ScrCmd_getplayergender -.extern ScrCmd_healparty -.extern FUN_0203D8E8 -.extern FUN_0203D8EC -.extern FUN_0203D920 -.extern FUN_0203D938 -.extern FUN_0203D948 -.extern FUN_0203D958 -.extern FUN_0203D998 -.extern FUN_0203D9E8 -.extern FUN_0203DA78 -.extern FUN_0203DAB0 -.extern FUN_0203DAE8 -.extern FUN_0203DB38 -.extern FUN_0203DB88 -.extern FUN_0203DBD4 -.extern FUN_0203DC00 -.extern FUN_0203DC58 -.extern FUN_0203DC70 -.extern FUN_0203DC88 -.extern FUN_0203DCA0 -.extern FUN_0203DCB8 -.extern FUN_0203DCC8 -.extern FUN_0203DCD8 -.extern FUN_0203DCE8 -.extern FUN_0203DCF8 -.extern FUN_0203DD08 -.extern FUN_0203DD18 -.extern FUN_0203DD34 -.extern FUN_0203DD50 -.extern FUN_0203DD60 -.extern FUN_0203DE00 -.extern FUN_0203DE4C -.extern FUN_0203DE58 -.extern FUN_0203DE80 -.extern FUN_0203DEA8 -.extern FUN_0203DEC4 -.extern FUN_0203DEF8 -.extern FUN_0203DF2C -.extern FUN_0203DF38 -.extern FUN_0203DF64 -.extern FUN_0203DF84 -.extern FUN_0203DFA8 -.extern FUN_0203DFE0 -.extern FUN_0203E018 -.extern FUN_0203E054 -.extern FUN_0203E078 -.extern FUN_0203E0CC -.extern FUN_0203E120 -.extern FUN_0203E138 -.extern FUN_0203E168 -.extern FUN_0203E254 -.extern FUN_0203E258 -.extern FUN_0203E29C -.extern FUN_0203E2F8 -.extern FUN_0203E35C -.extern FUN_0203E38C -.extern FUN_0203E3D0 -.extern FUN_0203E408 -.extern FUN_0203E440 -.extern FUN_0203E470 -.extern FUN_0203E4A0 -.extern FUN_0203E4B0 -.extern FUN_0203E4D8 -.extern FUN_0203E4F0 -.extern FUN_0203E510 -.extern FUN_0203E568 -.extern FUN_0203E5DC -.extern FUN_0203E674 -.extern FUN_0203E684 -.extern FUN_0203E6B4 -.extern FUN_0203E6C4 -.extern FUN_0203E6FC -.extern FUN_0203E72C -.extern FUN_0203E744 -.extern FUN_0203E774 -.extern FUN_0203E7F0 -.extern FUN_0203E81C -.extern FUN_0203E848 -.extern FUN_0203E858 -.extern FUN_0203E870 -.extern FUN_0203E894 -.extern FUN_0203E8C4 -.extern FUN_0203E8F4 -.extern FUN_0203E928 -.extern FUN_0203E940 -.extern FUN_0203E954 -.extern FUN_0203E968 -.extern FUN_0203E9CC -.extern FUN_0203EA68 -.extern FUN_0203EA90 -.extern FUN_0203EAB0 -.extern FUN_0203EB20 -.extern FUN_0203EB48 -.extern FUN_0203EB88 -.extern ScrCmd_gameversion -.extern ScrCmd_givewallpaper -.extern FUN_0203ECAC -.extern FUN_0203ECD8 -.extern FUN_0203ECF4 -.extern FUN_0203ED10 -.extern ScrCmd_pcfreespace -.extern FUN_0203EDA4 -.extern FUN_0203EDC8 -.extern FUN_0203EDE0 -.extern FUN_0203EE08 -.extern FUN_0203EE18 -.extern FUN_0203EE28 -.extern FUN_0203EE58 -.extern FUN_0203EE68 -.extern FUN_0203EE78 -.extern FUN_0203EE98 -.extern FUN_0203EED8 -.extern FUN_0203EF58 -.extern FUN_0203F00C -.extern FUN_0203F020 -.extern FUN_0203F034 -.extern FUN_0203F058 -.extern FUN_0203F07C -.extern FUN_0203F110 -.extern FUN_0203F174 -.extern FUN_0203F19C -.extern FUN_0203F234 -.extern FUN_0203F254 -.extern FUN_0203F26C -.extern FUN_0203F2AC -.extern FUN_0203F2E4 -.extern FUN_0203F31C -.extern FUN_0203F348 -.extern FUN_0203F38C -.extern FUN_0203F39C -.extern FUN_0203F3AC -.extern FUN_0203F418 -.extern FUN_0203F44C -.extern FUN_0203F484 -.extern FUN_0203F4D8 -.extern FUN_0203F508 -.extern FUN_0203F5D4 -.extern FUN_0203F604 -.extern FUN_0203F634 -.extern FUN_0203F664 -.extern FUN_0203F6E4 -.extern FUN_0203F720 -.extern FUN_0203F760 -.extern FUN_0203F7C8 -.extern FUN_0203F80C -.extern FUN_0203F880 -.extern FUN_0203F8C0 -.extern FUN_0203F924 -.extern FUN_0203F954 -.extern FUN_0203F988 -.extern FUN_0203F9B0 -.extern FUN_0203F9DC -.extern FUN_0203FA14 -.extern FUN_0203FA58 -.extern FUN_0203FB4C -.extern FUN_0203FB64 -.extern FUN_0203FB94 -.extern FUN_0203FBA0 -.extern FUN_0203FBAC -.extern FUN_0203FBBC -.extern FUN_0203FC1C -.extern FUN_0203FC58 -.extern FUN_0203FC80 -.extern FUN_0203FCB0 -.extern FUN_0203FCDC -.extern FUN_0203FCF4 -.extern FUN_0203FDBC -.extern FUN_0203FE08 -.extern FUN_0203FE48 -.extern FUN_0203FE80 -.extern FUN_0203FE90 -.extern FUN_0203FEC0 -.extern FUN_0203FF10 -.extern FUN_02040028 -.extern FUN_02040074 -.extern FUN_020400C8 -.extern FUN_0204011C -.extern FUN_02040170 -.extern FUN_020401CC -.extern FUN_02040204 -.extern FUN_02040220 -.extern FUN_0204025C -.extern FUN_02040298 -.extern FUN_020402D4 -.extern FUN_02040304 -.extern FUN_02040340 -.extern FUN_02040370 -.extern FUN_020403A0 -.extern FUN_020403D0 -.extern FUN_02040414 -.extern FUN_02040458 -.extern FUN_02040488 -.extern FUN_020404FC -.extern FUN_0204052C -.extern FUN_0204056C -.extern FUN_0204059C -.extern FUN_020405B4 -.extern FUN_020405CC -.extern FUN_020405F8 -.extern FUN_02040638 -.extern FUN_0204064C -.extern FUN_02040660 -.extern FUN_020406C0 +.extern ScrCmd_Unk00A1 +.extern ScrCmd_Unk01F8 +.extern ScrCmd_Unk00A2 +.extern ScrCmd_Unk00A3 +.extern ScrCmd_Unk00A4 +.extern ScrCmd_Unk0207 +.extern ScrCmd_Unk0208 +.extern ScrCmd_Unk028C +.extern ScrCmd_Unk0209 +.extern ScrCmd_Unk028D +.extern ScrCmd_Unk028E +.extern ScrCmd_Unk020A +.extern ScrCmd_Unk020B +.extern ScrCmd_Unk00A5 +.extern ScrCmd_Unk00A6 +.extern ScrCmd_Unk00A7 +.extern ScrCmd_Unk00A8 +.extern ScrCmd_Unk012E +.extern ScrCmd_Unk012F +.extern ScrCmd_Unk0130 +.extern ScrCmd_Unk0205 +.extern ScrCmd_Unk00A9 +.extern ScrCmd_Unk00AA +.extern ScrCmd_Unk01D7 +.extern ScrCmd_Unk01D8 +.extern ScrCmd_Unk01D9 +.extern ScrCmd_MonStoragePC +.extern ScrCmd_Unk00AC +.extern ScrCmd_Unk00AD +.extern ScrCmd_Unk00AE +.extern ScrCmd_Unk00AF +.extern ScrCmd_HallOfFame +.extern ScrCmd_Unk00B1 +.extern ScrCmd_Unk00B2 +.extern ScrCmd_Unk00B3 +.extern ScrCmd_Unk00B4 +.extern ScrCmd_Unk00B5 +.extern ScrCmd_Unk0178 +.extern ScrCmd_Unk0179 +.extern ScrCmd_Unk00BA +.extern ScrCmd_Unk00BB +.extern ScrCmd_Unk0271 +.extern ScrCmd_Unk0243 +.extern ScrCmd_Unk0244 +.extern ScrCmd_Unk0245 +.extern ScrCmd_Unk00BC +.extern ScrCmd_Unk00BD +.extern ScrCmd_Unk00BE +.extern ScrCmd_Unk0203 +.extern ScrCmd_Unk0204 +.extern ScrCmd_Unk0200 +.extern ScrCmd_Unk0201 +.extern ScrCmd_Unk00BF +.extern ScrCmd_Unk00C0 +.extern ScrCmd_Unk00C1 +.extern ScrCmd_Unk00C2 +.extern ScrCmd_Unk00C3 +.extern ScrCmd_Unk00C4 +.extern ScrCmd_Unk00C5 +.extern ScrCmd_Unk00C6 +.extern ScrCmd_Unk00C7 +.extern ScrCmd_Unk00C8 +.extern ScrCmd_Unk02BF +.extern ScrCmd_Unk00C9 +.extern ScrCmd_Unk00CA +.extern ScrCmd_Unk00CB +.extern ScrCmd_Unk00CC +.extern ScrCmd_Unk00E3 +.extern ScrCmd_Unk00DE +.extern ScrCmd_Unk00E6 +.extern ScrCmd_Unk00F2 +.extern ScrCmd_Unk00F3 +.extern ScrCmd_Unk00F4 +.extern ScrCmd_Unk00F5 +.extern ScrCmd_Unk00F6 +.extern ScrCmd_Unk00F7 +.extern ScrCmd_Unk011B +.extern ScrCmd_Unk011C +.extern ScrCmd_Unk011D +.extern ScrCmd_Unk011E +.extern ScrCmd_Unk011F +.extern ScrCmd_Unk0120 +.extern ScrCmd_Unk0121 +.extern ScrCmd_Unk0122 +.extern ScrCmd_Unk0123 +.extern ScrCmd_Unk0124 +.extern ScrCmd_Unk02BD +.extern ScrCmd_Unk0125 +.extern ScrCmd_Unk0126 +.extern ScrCmd_Unk0127 +.extern ScrCmd_Unk0128 +.extern ScrCmd_Unk0129 +.extern ScrCmd_Unk012A +.extern ScrCmd_Unk012B +.extern ScrCmd_Unk012C +.extern ScrCmd_Unk012D +.extern ScrCmd_Unk0131 +.extern ScrCmd_Unk0132 +.extern ScrCmd_Unk0133 +.extern ScrCmd_Unk0134 +.extern ScrCmd_Unk0135 +.extern ScrCmd_Unk0136 +.extern ScrCmd_Unk0137 +.extern ScrCmd_Unk0138 +.extern ScrCmd_Unk0139 +.extern ScrCmd_Unk013C +.extern ScrCmd_Unk013D +.extern ScrCmd_Unk013E +.extern ScrCmd_Unk013F +.extern ScrCmd_Unk02BA +.extern ScrCmd_Unk0140 +.extern ScrCmd_Unk0146 +.extern ScrCmd_Unk0141 +.extern ScrCmd_Unk0142 +.extern ScrCmd_Unk013A +.extern ScrCmd_Unk013B +.extern ScrCmd_Unk0143 +.extern ScrCmd_Unk0144 +.extern ScrCmd_Unk0145 +.extern ScrCmd_Unk0153 +.extern ScrCmd_Unk0154 +.extern ScrCmd_Unk0155 +.extern ScrCmd_Unk029C +.extern ScrCmd_Unk0156 +.extern ScrCmd_Unk014B +.extern ScrCmd_Unk014C +.extern ScrCmd_GetPlayerGender +.extern ScrCmd_HealParty +.extern ScrCmd_Unk014F +.extern ScrCmd_Unk0150 +.extern ScrCmd_Unk02BB +.extern ScrCmd_Unk0151 +.extern ScrCmd_Unk0152 +.extern ScrCmd_Unk017A +.extern ScrCmd_Unk0186 +.extern ScrCmd_Unk0187 +.extern ScrCmd_Unk0188 +.extern ScrCmd_Unk0189 +.extern ScrCmd_Unk018A +.extern ScrCmd_Unk018B +.extern ScrCmd_Unk018C +.extern ScrCmd_Unk018F +.extern ScrCmd_Unk0168 +.extern ScrCmd_Unk0169 +.extern ScrCmd_Unk016A +.extern ScrCmd_Unk016B +.extern ScrCmd_Unk016C +.extern ScrCmd_Unk016F +.extern ScrCmd_Unk0170 +.extern ScrCmd_Unk0171 +.extern ScrCmd_Unk0172 +.extern ScrCmd_Unk0173 +.extern ScrCmd_Unk0174 +.extern ScrCmd_Unk0175 +.extern ScrCmd_Unk0176 +.extern ScrCmd_Unk01AC +.extern ScrCmd_Unk019E +.extern ScrCmd_Unk019F +.extern ScrCmd_Unk01A0 +.extern ScrCmd_Unk01A1 +.extern ScrCmd_Unk01A2 +.extern ScrCmd_Unk003F +.extern ScrCmd_Unk01B1 +.extern ScrCmd_Unk01B2 +.extern ScrCmd_Unk01B3 +.extern ScrCmd_Unk01B4 +.extern ScrCmd_Unk01B5 +.extern ScrCmd_Unk01B6 +.extern ScrCmd_Unk01B7 +.extern ScrCmd_Unk01B8 +.extern ScrCmd_Unk01C1 +.extern ScrCmd_Unk01C2 +.extern ScrCmd_Unk01C3 +.extern ScrCmd_Unk01C4 +.extern ScrCmd_Unk01C5 +.extern ScrCmd_Unk01CC +.extern ScrCmd_Unk01CD +.extern ScrCmd_Unk01CE +.extern ScrCmd_Unk01D2 +.extern ScrCmd_Unk01D3 +.extern ScrCmd_Unk01D4 +.extern ScrCmd_Unk01D5 +.extern ScrCmd_Unk01D6 +.extern ScrCmd_Unk01E8 +.extern ScrCmd_Unk01E9 +.extern ScrCmd_Unk01EA +.extern ScrCmd_Unk01EB +.extern ScrCmd_Unk01EC +.extern ScrCmd_Unk01ED +.extern ScrCmd_Unk01EF +.extern ScrCmd_Unk01E5 +.extern ScrCmd_Unk01E6 +.extern ScrCmd_Unk01E7 +.extern ScrCmd_Unk0202 +.extern ScrCmd_Unk0206 +.extern ScrCmd_Unk020D +.extern ScrCmd_Unk020E +.extern ScrCmd_Unk020F +.extern ScrCmd_Unk0210 +.extern ScrCmd_Unk0211 +.extern ScrCmd_Unk0214 +.extern ScrCmd_Unk0218 +.extern ScrCmd_Unk0219 +.extern ScrCmd_Unk021A +.extern ScrCmd_Unk021B +.extern ScrCmd_Unk021C +.extern ScrCmd_Unk0226 +.extern ScrCmd_Unk0227 +.extern ScrCmd_Unk0228 +.extern ScrCmd_Unk0229 +.extern ScrCmd_Unk022A +.extern ScrCmd_Unk022B +.extern ScrCmd_Unk022C +.extern ScrCmd_Unk022D +.extern ScrCmd_Unk0233 +.extern ScrCmd_Unk0234 +.extern ScrCmd_Unk0239 +.extern ScrCmd_Unk023A +.extern ScrCmd_Unk023B +.extern ScrCmd_Unk023C +.extern ScrCmd_Unk023D +.extern ScrCmd_GameVersion +.extern ScrCmd_GiveWallpaper +.extern ScrCmd_Unk024A +.extern ScrCmd_Unk024B +.extern ScrCmd_Unk024C +.extern ScrCmd_Unk024D +.extern ScrCmd_PCFreeSpace +.extern ScrCmd_Unk0258 +.extern ScrCmd_Unk0259 +.extern ScrCmd_Unk025A +.extern ScrCmd_Unk025B +.extern ScrCmd_Unk025C +.extern ScrCmd_Unk025D +.extern ScrCmd_Unk025E +.extern ScrCmd_Unk025F +.extern ScrCmd_Unk0260 +.extern ScrCmd_Unk0262 +.extern ScrCmd_Unk0263 +.extern ScrCmd_Unk0264 +.extern ScrCmd_Unk0265 +.extern ScrCmd_Unk0266 +.extern ScrCmd_Unk0267 +.extern ScrCmd_Unk0268 +.extern ScrCmd_Unk0269 +.extern ScrCmd_Unk026A +.extern ScrCmd_Unk026B +.extern ScrCmd_Unk026C +.extern ScrCmd_Unk026E +.extern ScrCmd_Unk026F +.extern ScrCmd_Unk0270 +.extern ScrCmd_Unk0273 +.extern ScrCmd_Unk0275 +.extern ScrCmd_Unk0277 +.extern ScrCmd_Unk0279 +.extern ScrCmd_Unk027A +.extern ScrCmd_Unk027B +.extern ScrCmd_Unk027D +.extern ScrCmd_Unk027F +.extern ScrCmd_Unk027E +.extern ScrCmd_Unk0282 +.extern ScrCmd_Unk0284 +.extern ScrCmd_Unk0285 +.extern ScrCmd_Unk0286 +.extern ScrCmd_Unk0287 +.extern ScrCmd_Unk0288 +.extern ScrCmd_Unk0289 +.extern ScrCmd_Unk028A +.extern ScrCmd_Unk028B +.extern ScrCmd_Unk028F +.extern ScrCmd_Unk0290 +.extern ScrCmd_Unk0291 +.extern ScrCmd_Unk0292 +.extern ScrCmd_Unk029E +.extern ScrCmd_Unk0293 +.extern ScrCmd_Unk029F +.extern ScrCmd_Unk02A3 +.extern ScrCmd_Unk02A4 +.extern ScrCmd_Unk02A2 +.extern ScrCmd_Unk02A7 +.extern ScrCmd_Unk02AA +.extern ScrCmd_Unk02AC +.extern ScrCmd_Unk02AF +.extern ScrCmd_Unk02B0 +.extern ScrCmd_Unk02B1 +.extern ScrCmd_Unk02B2 +.extern ScrCmd_Unk02B5 +.extern ScrCmd_Unk02B6 +.extern ScrCmd_Unk02BE +.extern ScrCmd_Unk02C1 +.extern ScrCmd_Unk02C2 +.extern ScrCmd_Unk02C3 +.extern ScrCmd_NormalMart +.extern ScrCmd_SpecialMart +.extern ScrCmd_GoodsMart +.extern ScrCmd_SealsMart +.extern ScrCmd_AccessoriesShop +.extern ScrCmd_Unk00F8 +.extern ScrCmd_Unk00F9 +.extern ScrCmd_Unk00FA +.extern ScrCmd_Unk00FB +.extern ScrCmd_Unk00FC +.extern ScrCmd_Unk00FD +.extern ScrCmd_Unk00FE +.extern ScrCmd_Unk00FF +.extern ScrCmd_Unk0100 +.extern ScrCmd_Unk0101 +.extern ScrCmd_Unk0102 +.extern ScrCmd_Unk0103 +.extern ScrCmd_Unk0104 +.extern ScrCmd_Unk0105 +.extern ScrCmd_Unk0106 +.extern ScrCmd_Unk0107 +.extern ScrCmd_Unk0108 +.extern ScrCmd_Unk0109 +.extern ScrCmd_Unk010A +.extern ScrCmd_Unk010B +.extern ScrCmd_Unk010C +.extern ScrCmd_Unk0110 +.extern ScrCmd_Unk010D +.extern ScrCmd_Unk010E +.extern ScrCmd_Unk010F +.extern ScrCmd_Unk0117 +.extern ScrCmd_Unk0118 +.extern ScrCmd_Unk0111 +.extern ScrCmd_Unk0112 +.extern ScrCmd_Unk0113 +.extern ScrCmd_Unk0114 +.extern ScrCmd_Unk0115 +.extern ScrCmd_Unk0116 .extern ScrCmd_GetPlayerName .extern ScrCmd_GetRivalName .extern ScrCmd_GetFriendName -.extern ScrCmd_Unk00D0 +.extern ScrCmd_GetPokemonName .extern ScrCmd_GetItemName .extern ScrCmd_GetPocketName .extern ScrCmd_GetTMHMMoveName .extern ScrCmd_GetMoveName .extern ScrCmd_Unk00D5 .extern ScrCmd_Unk0280 -.extern ScrCmd_Unk00D6 +.extern ScrCmd_GetPokemonNickname .extern ScrCmd_Unk0251 .extern ScrCmd_GetPoketchAppName .extern ScrCmd_GetTrainerClassName .extern ScrCmd_Unk00D9 .extern ScrCmd_Unk00DA -.extern ScrCmd_Unk00DB -.extern ScrCmd_Unk00DC -.extern ScrCmd_Unk00DD +.extern ScrCmd_GetPlayerStarterName +.extern ScrCmd_GetRivalStarterName +.extern ScrCmd_GetCounterpartStarterName .extern ScrCmd_GetDecorationName .extern ScrCmd_GetUndergroundTrapName .extern ScrCmd_GetUndergroundItemName -.extern ScrCmd_Unk00E2 -.extern ScrCmd_Unk017B +.extern ScrCmd_GetMapName +.extern ScrCmd_GetBerryName .extern ScrCmd_GetNatureName .extern ScrCmd_GetFashionName -.extern ScrCmd_Unk0272 +.extern ScrCmd_GetWhiteRockInscription .extern ScrCmd_GetPokemonMoveName -.extern ScrCmd_Unk0232 +.extern ScrCmd_GetRibbonName .extern ScrCmd_GetSealName .extern ScrCmd_GetItemNameWithIndefArticle .extern ScrCmd_GetItemNamePlural @@ -3196,94 +3196,94 @@ .extern ScrCmd_Unk02CC .extern ScrCmd_GetSealNamePlural .extern ScrCmd_CapitalizeFirstChar -.extern FUN_02041194 -.extern FUN_020411C4 -.extern FUN_02041340 -.extern FUN_020413C0 -.extern FUN_020413E8 -.extern FUN_020413F8 -.extern FUN_0204140C -.extern FUN_02041424 -.extern FUN_0204143C -.extern FUN_02041478 -.extern FUN_0204149C -.extern FUN_020414B8 -.extern FUN_020414CC -.extern FUN_020414E0 -.extern FUN_020414FC -.extern FUN_02041518 -.extern FUN_02041558 -.extern ScrCmd_waitcry -.extern ScrCmd_playbgm -.extern FUN_020415BC -.extern FUN_020415E0 -.extern FUN_02041618 -.extern FUN_02041644 -.extern FUN_02041650 -.extern FUN_02041664 -.extern FUN_02041674 -.extern FUN_020416A8 -.extern FUN_02041770 -.extern FUN_020417E0 -.extern FUN_02041808 -.extern FUN_0204185C -.extern FUN_0204188C -.extern FUN_0204190C -.extern FUN_02041970 -.extern FUN_020419F8 -.extern FUN_02041A80 -.extern FUN_02041AB4 -.extern FUN_02041AD4 -.extern FUN_02041AE0 -.extern FUN_02041B10 -.extern FUN_02041B40 -.extern FUN_02041B70 -.extern FUN_02041B9C -.extern FUN_02041BC4 -.extern FUN_02041BF0 -.extern FUN_02041C38 -.extern FUN_02041E40 -.extern FUN_02041FDC -.extern FUN_02042000 -.extern FUN_02042038 -.extern FUN_02042110 -.extern FUN_0204214C -.extern FUN_02042354 -.extern FUN_02042364 -.extern FUN_02042394 -.extern FUN_020423B0 -.extern FUN_02042700 -.extern FUN_02042780 -.extern FUN_020427A8 -.extern FUN_020427D0 -.extern FUN_02042864 -.extern FUN_02042894 -.extern FUN_020428E0 -.extern FUN_02042950 -.extern FUN_02042980 -.extern FUN_02042998 -.extern FUN_020429B8 -.extern FUN_020429E8 -.extern FUN_02042A18 -.extern FUN_02042A48 -.extern FUN_02042A98 -.extern ScrCmd_Unk017D -.extern ScrCmd_Unk017E -.extern ScrCmd_Unk017F -.extern ScrCmd_Unk0180 -.extern ScrCmd_Unk0181 -.extern ScrCmd_Unk0182 -.extern ScrCmd_Unk0183 +.extern ScrCmd_Unk024E +.extern ScrCmd_Unk024F +.extern ScrCmd_Unk0250 +.extern ScrCmd_Unk02AE +.extern ScrCmd_PlayBgm +.extern ScrCmd_StopBgm +.extern ScrCmd_PlayDefaultBgm +.extern ScrCmd_Unk0053 +.extern ScrCmd_FadeOutBgm +.extern ScrCmd_FadeInBgm +.extern ScrCmd_Unk0056 +.extern ScrCmd_Unk0057 +.extern ScrCmd_Unk0058 +.extern ScrCmd_PlayFanfare +.extern ScrCmd_StopFanfare +.extern ScrCmd_PlayFanfareWait +.extern ScrCmd_PlayCry +.extern ScrCmd_PlayCryWait +.extern ScrCmd_PlaySound +.extern ScrCmd_PlaySoundWait +.extern ScrCmd_CheckChatotCry +.extern ScrCmd_StartChatotRecord +.extern ScrCmd_StopChatotRecord +.extern ScrCmd_SaveChatotCry +.extern ScrCmd_Unk005D +.extern ScrCmd_SetVolume +.extern ScrCmd_Unk00B6 +.extern ScrCmd_Unk00B7 +.extern ScrCmd_Unk00B8 +.extern ScrCmd_Unk00B9 +.extern ScrCmd_Unk00E4 +.extern ScrCmd_Unk00E5 +.extern ScrCmd_Unk02A0 +.extern ScrCmd_Unk00E7 +.extern ScrCmd_Unk00E8 +.extern ScrCmd_Unk00E9 +.extern ScrCmd_Unk00EA +.extern ScrCmd_Unk00EB +.extern ScrCmd_Unk00EC +.extern ScrCmd_Unk00ED +.extern ScrCmd_Unk02BC +.extern ScrCmd_Unk00EE +.extern ScrCmd_Unk00EF +.extern ScrCmd_Unk00F0 +.extern ScrCmd_Unk00F1 +.extern ScrCmd_Unk021D +.extern ScrCmd_Unk0235 +.extern ScrCmd_Unk0236 +.extern ScrCmd_Unk02B8 +.extern ScrCmd_Unk0237 +.extern ScrCmd_Unk0238 +.extern ScrCmd_Unk027C +.extern ScrCmd_Unk01DA +.extern ScrCmd_Unk01DB +.extern ScrCmd_Unk01DC +.extern ScrCmd_Unk01DD +.extern ScrCmd_Unk01DE +.extern ScrCmd_Unk01DF +.extern ScrCmd_Unk01E0 +.extern ScrCmd_Unk01E1 +.extern ScrCmd_Unk01E2 +.extern ScrCmd_Unk01E3 +.extern ScrCmd_Unk01E4 +.extern ScrCmd_Unk0294 +.extern ScrCmd_Unk0295 +.extern ScrCmd_Unk0296 +.extern ScrCmd_Unk0297 +.extern ScrCmd_Unk0298 +.extern ScrCmd_Unk0299 +.extern ScrCmd_Unk029A +.extern ScrCmd_Unk029B +.extern ScrCmd_GetBerryTreeGrowth +.extern ScrCmd_GetBerryTreeType +.extern ScrCmd_GetBerryTreeMulch +.extern ScrCmd_GetBerryTreeWater +.extern ScrCmd_GetBerryTreeAmount +.extern ScrCmd_SetBerryTreeMulch +.extern ScrCmd_SetBerryTreeType .extern ScrCmd_Unk0184 -.extern ScrCmd_Unk0185 -.extern FUN_02042D1C +.extern ScrCmd_TakeBerryTreeBerries +.extern ScrCmd_Unk023E .extern ScrCmd_Unk0253 .extern ScrCmd_Unk0254 .extern ScrCmd_Unk0255 .extern ScrCmd_Unk0256 -.extern ScrCmd_Unk0075 -.extern ScrCmd_Unk0076 -.extern ScrCmd_Unk0077 +.extern ScrCmd_ShowCoinBox +.extern ScrCmd_HideCoinBox +.extern ScrCmd_UpdateCoinBox .extern ScrCmd_GetCoins .extern ScrCmd_GiveCoins .extern ScrCmd_TakeCoinsImmediate @@ -3296,16 +3296,16 @@ .extern ScrCmd_TakeMoneyAddress .extern ScrCmd_HasEnoughMoneyImmediate .extern ScrCmd_HasEnoughMoneyAddress -.extern ScrCmd_Unk0072 -.extern ScrCmd_Unk0073 -.extern ScrCmd_Unk0074 -.extern ScrCmd_Unk016D -.extern ScrCmd_Unk016E -.extern ScrCmd_Unk01A8 -.extern ScrCmd_Unk01A9 +.extern ScrCmd_ShowMoneyBox +.extern ScrCmd_HideMoneyBox +.extern ScrCmd_UpdateMoneyBox +.extern ScrCmd_GetDaycarePokemonNames +.extern ScrCmd_GetDaycareStatus +.extern ScrCmd_DeleteDaycareEgg +.extern ScrCmd_GiveDaycareEgg .extern ScrCmd_Unk01A4 .extern ScrCmd_Unk01AA -.extern ScrCmd_Unk01AE +.extern ScrCmd_GetDaycareLevel .extern ScrCmd_Unk01AF .extern ScrCmd_Unk01B0 .extern ScrCmd_Unk01BC @@ -3315,72 +3315,72 @@ .extern ScrCmd_Unk01A6 .extern ScrCmd_Unk01A7 .extern ScrCmd_Unk01AD -.extern FUN_02044158 -.extern FUN_0204416C -.extern FUN_02044198 +.extern ScrCmd_Unk0215 +.extern ScrCmd_Unk0216 +.extern ScrCmd_Unk0217 .extern ScrCmd_GiveMon -.extern ScrCmd_getpartyspecies -.extern ScrCmd_checkpartymonotid -.extern ScrCmd_giveegg -.extern ScrCmd_setpartymonmove -.extern ScrCmd_partymonhasmove -.extern ScrCmd_findpartymonwithmove -.extern ScrCmd_survivepsn -.extern ScrCmd_countpartymonsatorbelowlevel -.extern ScrCmd_getpartymonlevel -.extern ScrCmd_getpartymonnature -.extern ScrCmd_findpartymonwithnature -.extern ScrCmd_getpartymonfriendship -.extern FUN_020448D4 -.extern FUN_020449A4 -.extern FUN_02044A0C -.extern FUN_02044A6C -.extern FUN_02044A94 -.extern FUN_02044B00 -.extern FUN_02044B2C -.extern FUN_02044B84 -.extern FUN_02044C0C -.extern FUN_02044C88 -.extern FUN_02044CE0 -.extern FUN_02044D44 -.extern FUN_02044D8C -.extern FUN_02044E34 -.extern FUN_02044E78 -.extern FUN_02044ED8 -.extern FUN_02044F20 -.extern FUN_02044F58 -.extern FUN_02044FE8 -.extern FUN_0204505C -.extern FUN_02045104 -.extern FUN_02045170 -.extern FUN_020451D0 -.extern FUN_02045264 -.extern ScrCmd_Unk01F1 -.extern ScrCmd_Unk01F4 -.extern ScrCmd_Unk01F5 +.extern ScrCmd_GetPartySpecies +.extern ScrCmd_CheckPartyMonOTID +.extern ScrCmd_GiveEgg +.extern ScrCmd_SetPartyMonMove +.extern ScrCmd_PartyMonHasMove +.extern ScrCmd_FindPartyMonWithMove +.extern ScrCmd_SurvivePsn +.extern ScrCmd_CountPartyMonsAtOrBelowLevel +.extern ScrCmd_GetPartyMonLevel +.extern ScrCmd_GetPartyMonNature +.extern ScrCmd_FindPartyMonWithNature +.extern ScrCmd_GetPartyMonFriendship +.extern ScrCmd_Unk01BA +.extern ScrCmd_Unk01BB +.extern ScrCmd_Unk0281 +.extern ScrCmd_Unk0247 +.extern ScrCmd_Unk0248 +.extern ScrCmd_Unk0177 +.extern ScrCmd_Unk019A +.extern ScrCmd_Unk019B +.extern ScrCmd_Unk019C +.extern ScrCmd_Unk019D +.extern ScrCmd_Unk0119 +.extern ScrCmd_Unk011A +.extern ScrCmd_Unk01C8 +.extern ScrCmd_Unk01C9 +.extern ScrCmd_Unk01CA +.extern ScrCmd_Unk01EE +.extern ScrCmd_Unk01F0 +.extern ScrCmd_Unk01C0 +.extern ScrCmd_Unk022E +.extern ScrCmd_Unk022F +.extern ScrCmd_Unk0230 +.extern ScrCmd_Unk0231 +.extern ScrCmd_Unk02B7 +.extern ScrCmd_Unk00A0 +.extern ScrCmd_CountFossils +.extern ScrCmd_GetFossilPokemon +.extern ScrCmd_GetFossilMinimumAmount .extern ScrCmd_Unk01F2 .extern ScrCmd_Unk01F3 -.extern ScrCmd_Unk02A6 -.extern FUN_020453F4 -.extern FUN_02045424 -.extern FUN_02045438 -.extern FUN_02045468 -.extern FUN_02045484 -.extern FUN_020454CC -.extern FUN_02045500 -.extern FUN_0204552C -.extern FUN_0204557C -.extern FUN_02045590 -.extern FUN_020455BC -.extern FUN_020455D0 -.extern FUN_020455E4 -.extern FUN_02045610 -.extern FUN_02045624 -.extern FUN_02045638 -.extern FUN_02045664 -.extern FUN_02045678 -.extern FUN_020456D4 -.extern FUN_0204572C +.extern ScrCmd_GetPrizeItemIdAndCost +.extern ScrCmd_HasSinnohDex +.extern ScrCmd_GiveSinnohDex +.extern ScrCmd_HasRunningShoes +.extern ScrCmd_GiveRunningShoes +.extern ScrCmd_HasBadge +.extern ScrCmd_GiveBadge +.extern ScrCmd_GiveBag +.extern ScrCmd_GetTotalEarnedBadges +.extern ScrCmd_HasBag +.extern ScrCmd_Unk0160 +.extern ScrCmd_Unk0161 +.extern ScrCmd_Unk0162 +.extern ScrCmd_Unk0163 +.extern ScrCmd_Unk0164 +.extern ScrCmd_Unk0165 +.extern ScrCmd_CheckGameCompleted +.extern ScrCmd_SetGameCompleted +.extern ScrCmd_GetSetStrength +.extern ScrCmd_GetSetFlash +.extern ScrCmd_GetSetDefog .extern ScrCmd_GiveItem .extern ScrCmd_TakeItem .extern ScrCmd_HasSpaceForItem @@ -3389,32 +3389,32 @@ .extern ScrCmd_GetItemPocketId .extern ScrCmd_Unk0081 .extern ScrCmd_Unk0082 -.extern ScrCmd_Unk0083 -.extern ScrCmd_Unk0084 -.extern ScrCmd_Unk0085 -.extern ScrCmd_Unk0086 -.extern ScrCmd_Unk0087 -.extern ScrCmd_Unk0088 -.extern ScrCmd_Unk0089 -.extern ScrCmd_Unk008A -.extern ScrCmd_Unk008B -.extern ScrCmd_Unk008C -.extern ScrCmd_Unk008D -.extern ScrCmd_Unk008E -.extern ScrCmd_Unk008F -.extern ScrCmd_Unk0090 -.extern ScrCmd_Unk0091 -.extern ScrCmd_Unk0092 -.extern FUN_02045D88 -.extern FUN_02045DD0 -.extern FUN_02045E1C -.extern FUN_02045E20 -.extern FUN_02045EE0 -.extern FUN_02045EE4 -.extern FUN_02045F24 -.extern FUN_02045F84 -.extern FUN_02045F88 -.extern FUN_02045FCC +.extern ScrCmd_GiveSecretBaseDecoration +.extern ScrCmd_TakeSecretBaseDecoration +.extern ScrCmd_HasSpaceForDecoration +.extern ScrCmd_GetDecorationCount +.extern ScrCmd_GiveUndergroundTrap +.extern ScrCmd_TakeUndergroundTrap +.extern ScrCmd_HasSpaceForTrap +.extern ScrCmd_GetTrapCount +.extern ScrCmd_GiveTreasure +.extern ScrCmd_TakeTreasure +.extern ScrCmd_HasSpaceForTreasure +.extern ScrCmd_GetTreasureCount +.extern ScrCmd_GiveUndergroundSphere +.extern ScrCmd_TakeUndergroundSphere +.extern ScrCmd_HasSpaceForSphere +.extern ScrCmd_GetSphereCount +.extern ScrCmd_Unk01C6 +.extern ScrCmd_Unk01C7 +.extern ScrCmd_Unk021E +.extern ScrCmd_Unk021F +.extern ScrCmd_Unk0220 +.extern ScrCmd_Unk0221 +.extern ScrCmd_Unk0224 +.extern ScrCmd_Unk0222 +.extern ScrCmd_Unk0223 +.extern ScrCmd_Unk0225 .extern ScrCmd_Unk023F .extern ScrCmd_Unk0240 .extern ScrCmd_Unk0241 @@ -4636,6 +4636,7 @@ .extern FUN_020600DC .extern FUN_02060144 .extern FUN_0206015C +.extern FUN_02060194 .extern FUN_02060344 .extern FUN_020603B0 .extern FUN_020603C8 @@ -5574,229 +5575,229 @@ .extern VCT_Main .extern VCT_Cleanup .extern VCT_Init -.extern FUN_020ADA84 -.extern FUN_020ADA98 -.extern FUN_020ADAB0 -.extern FUN_020ADB18 -.extern FUN_020ADBE8 -.extern FUN_020ADC74 -.extern FUN_020ADDC0 -.extern FUN_020ADDC8 -.extern FUN_020ADDF0 -.extern FUN_020ADE2C -.extern FUN_020AE554 -.extern FUN_020AE5B0 -.extern FUN_020AE600 -.extern FUN_020AE638 -.extern FUN_020AE684 -.extern FUN_020AE82C -.extern FUN_020AE84C -.extern FUN_020AE868 -.extern FUN_020AE8CC -.extern FUN_020AE918 -.extern FUN_020AEAF4 -.extern FUN_020AEB70 -.extern FUN_020AEC60 -.extern FUN_020AEC7C -.extern FUN_020AEC98 -.extern FUN_020AEDF4 -.extern FUN_020AEE40 -.extern FUN_020AEEB8 -.extern FUN_020AEF1C -.extern FUN_020AF2E0 -.extern FUN_020AF2F4 -.extern FUN_020AF30C -.extern FUN_020AF6A4 -.extern FUN_020AF894 -.extern FUN_020AF9C4 -.extern FUN_020AFA28 -.extern FUN_020AFA30 -.extern FUN_020AFA80 -.extern FUN_020AFBA8 -.extern FUN_020AFBFC -.extern FUN_020AFC04 -.extern FUN_020AFEB8 -.extern FUN_020AFFD8 -.extern FUN_020B0030 -.extern FUN_020B0088 -.extern FUN_020B00F0 -.extern FUN_020B0138 -.extern FUN_020B0180 -.extern FUN_020B0250 -.extern FUN_020B02C8 -.extern FUN_020B0448 -.extern FUN_020B04FC -.extern FUN_020B0830 -.extern FUN_020B0870 -.extern FUN_020B0888 -.extern FUN_020B0BB0 -.extern FUN_020B0C7C -.extern FUN_020B0D58 -.extern FUN_020B0E34 -.extern FUN_020B0FC0 -.extern FUN_020B10E8 -.extern FUN_020B1240 -.extern FUN_020B1340 -.extern FUN_020B1528 -.extern FUN_020B1768 -.extern FUN_020B19C4 -.extern FUN_020B19DC -.extern FUN_020B1A14 -.extern FUN_020B1A1C -.extern FUN_020B1A24 -.extern FUN_020B1AF8 -.extern FUN_020B1EA4 -.extern FUN_020B1EC4 -.extern FUN_020B1EE4 -.extern FUN_020B1EFC -.extern FUN_020B1F80 -.extern FUN_020B20C8 -.extern FUN_020B2194 -.extern FUN_020B224C -.extern FUN_020B23D8 -.extern FUN_020B242C -.extern FUN_020B2794 -.extern FUN_020B28B4 -.extern FUN_020B2A08 -.extern FUN_020B2B08 -.extern FUN_020B2B58 -.extern FUN_020B2D9C -.extern FUN_020B317C -.extern FUN_020B31F0 -.extern FUN_020B326C -.extern FUN_020B3334 -.extern FUN_020B3390 -.extern FUN_020B33A0 -.extern FUN_020B4358 -.extern FUN_020B43A4 -.extern FUN_020B442C -.extern FUN_020B4568 -.extern FUN_020B4F38 -.extern FUN_020B502C -.extern FUN_020B5C88 -.extern FUN_020B5CE4 -.extern FUN_020B5D3C -.extern FUN_020B5E50 -.extern FUN_020B6180 -.extern FUN_020B6240 -.extern FUN_020B62F8 -.extern FUN_020B6388 -.extern FUN_020B63CC -.extern FUN_020B7168 -.extern FUN_020B7218 -.extern FUN_020B772C -.extern FUN_020B7790 -.extern FUN_020B7C58 -.extern FUN_020B7C78 -.extern FUN_020B7CDC -.extern FUN_020B7CE4 -.extern FUN_020B7CF0 -.extern FUN_020B7D28 -.extern FUN_020B7DFC -.extern FUN_020B7E10 -.extern FUN_020B7E1C -.extern FUN_020B7E28 -.extern FUN_020B7EFC -.extern FUN_020B80B4 -.extern FUN_020B8110 -.extern FUN_020B8344 -.extern FUN_020B8390 -.extern FUN_020B83BC -.extern FUN_020B83E0 -.extern FUN_020B8404 -.extern FUN_020B8418 -.extern FUN_020B844C -.extern FUN_020B8474 -.extern FUN_020B849C -.extern FUN_020BAC98 -.extern FUN_020BAFB8 -.extern FUN_020BB1C0 -.extern FUN_020BB394 -.extern FUN_020BB408 -.extern FUN_020BB59C -.extern FUN_020BB7F4 -.extern FUN_020BB8D0 -.extern FUN_020BB8F4 -.extern FUN_020BB934 -.extern FUN_020BB974 -.extern FUN_020BB9B4 -.extern FUN_020BB9F4 -.extern FUN_020BBA34 -.extern FUN_020BBA74 -.extern FUN_020BBAB4 -.extern FUN_020BBAF4 -.extern FUN_020BBB34 -.extern FUN_020BBB74 -.extern FUN_020BBBB4 -.extern FUN_020BBBF4 -.extern FUN_020BBC34 -.extern FUN_020BC02C -.extern FUN_020BC094 -.extern FUN_020BC0FC -.extern FUN_020BC13C -.extern FUN_020BC2A0 -.extern FUN_020BC4C8 -.extern FUN_020C0174 -.extern FUN_020C01A0 -.extern SDAT_Init -.extern FUN_020C03B8 -.extern FUN_020C041C -.extern FUN_020C044C -.extern FUN_020C04DC -.extern FUN_020C0510 -.extern FUN_020C054C -.extern FUN_020C0670 -.extern FUN_020C0688 -.extern FUN_020C0DD4 -.extern FUN_020C0E14 -.extern FUN_020C0E7C -.extern FUN_020C0EA4 -.extern FUN_020C0EF4 -.extern FUN_020C0F30 -.extern FUN_020C0F40 -.extern FUN_020C0F50 -.extern FUN_020C0F68 -.extern FUN_020C0F80 -.extern FUN_020C0F8C -.extern FUN_020C0F9C -.extern FUN_020C0FDC -.extern FUN_020C1040 -.extern FUN_020C10A4 -.extern FUN_020C1148 -.extern FUN_020C1180 -.extern FUN_020C13C4 -.extern FUN_020C1430 -.extern FUN_020C1458 -.extern FUN_020C14AC -.extern FUN_020C1674 -.extern FUN_020C169C -.extern FUN_020C16FC -.extern FUN_020C1E58 -.extern FUN_020C1E68 -.extern FUN_020C1EA4 -.extern FUN_020C1F54 -.extern FUN_020C1FA4 -.extern FUN_020C1FF0 -.extern FUN_020C20DC -.extern FUN_020C2104 -.extern FUN_020C217C -.extern FUN_020C226C -.extern FUN_020C22D0 -.extern FUN_020C23FC -.extern FUN_020C2444 -.extern SDAT_Open -.extern FUN_020C2828 -.extern FUN_020C290C -.extern FUN_020C2A94 -.extern FUN_020C35E0 -.extern FUN_020C360C -.extern FUN_020C3640 -.extern FUN_020C3674 -.extern FUN_020C36A8 -.extern FUN_020C3888 -.extern FUN_020C3910 -.extern FUN_020C3980 -.extern FUN_020C39CC +.extern NNS_FndGetPrevListObject +.extern NNS_FndGetNextListObject +.extern NNS_FndRemoveListObject +.extern NNS_FndInsertListObject +.extern NNS_FndAppendListObject +.extern NNS_FndInitList +.extern NNS_FndGetSizeForMBlockExpHeap +.extern NNS_FndGetTotalFreeSizeForExpHeap +.extern NNS_FndFreeToExpHeap +.extern NNS_FndResizeForMBlockExpHeap +.extern NNS_FndFreeByStateToFrmHeap +.extern NNS_FndRecordStateForFrmHeap +.extern NNS_FndFreeToFrmHeap +.extern NNS_FndAllocFromFrmHeapEx +.extern NNS_FndCreateFrmHeapEx +.extern NNS_FndInitAllocatorForExpHeap +.extern NNS_FndFreeToAllocator +.extern NNS_FndAllocFromAllocator +.extern NNS_GfdSetFrmTexVramState +.extern NNS_GfdGetFrmTexVramState +.extern NNS_GfdResetFrmTexVramState +.extern NNS_GfdInitFrmTexVramManager +.extern NNS_GfdResetFrmPlttVramState +.extern NNS_GfdSetFrmPlttVramState +.extern NNS_GfdGetFrmPlttVramState +.extern NNS_GfdInitFrmPlttVramManager +.extern NNS_GfdRegisterNewVramTransferTask +.extern NNS_GfdDoVramTransfer +.extern NNS_GfdInitVramTransferManager +.extern IsVramTransferTaskQueueEmpty_ +.extern IsVramTransferTaskQueueFull_ +.extern GetNextIndex_ +.extern NNS_GfdResetLnkTexVramState +.extern NNS_GfdFreeLnkTexVram +.extern NNS_GfdInitLnkTexVramManager +.extern NNS_GfdGetLnkTexVramManagerWorkSize +.extern NNS_GfdResetLnkPlttVramState +.extern NNS_GfdFreeLnkPlttVram +.extern NNS_GfdInitLnkPlttVramManager +.extern NNS_GfdGetLnkPlttVramManagerWorkSize +.extern NNS_G2dGetAnimSequenceByIdx +.extern NNS_G2dGetUnpackedCellBank +.extern NNS_G2dGetUnpackedMultiCellBank +.extern NNS_G2dGetUnpackedBGCharacterData +.extern NNS_G2dGetUnpackedCharacterData +.extern NNS_G2dGetUnpackedPaletteCompressInfo +.extern NNS_G2dGetUnpackedPaletteData +.extern NNS_G2dGetUnpackedScreenData +.extern NNS_G2dDrawSpriteFast +.extern NNS_G2dSetupSoftwareSpriteCamera +.extern NNS_G2dResetAnimCtrlState +.extern NNS_G2dGetAnimCtrlCurrentFrame +.extern NNS_G2dGetOamManagerOamCapacity +.extern NNS_G2dApplyAndResetOamManagerBuffer +.extern NNS_G2dResetOamManagerBuffer +.extern NNS_G2dEntryOamManagerAffine +.extern NNS_G2dEntryOamManagerOamWithAffineIdx +.extern NNS_G2dEntryOamManagerOam +.extern NNS_G2dGetNewOamManagerInstance +.extern NNS_G2dInitOamManagerModule +.extern NNS_G2dLoadPaletteEx +.extern NNS_G2dLoadPalette +.extern NNS_G2dLoadImageVramTransfer +.extern NNS_G2dLoadImage2DMapping +.extern NNS_G2dLoadImage1DMapping +.extern NNS_G2dGetImagePaletteLocation +.extern NNS_G2dInitImagePaletteProxy +.extern NNS_G2dGetImageLocation +.extern NNS_G2dSetImageLocation +.extern NNS_G2dInitImageProxy +.extern NNS_G2dMakeCellToOams +.extern NNS_G2dSetCellAnimationCurrentFrame +.extern NNS_G2dTickCellAnimation +.extern NNS_G2dSetCellAnimationSequence +.extern NNS_G2dInitCellAnimationVramTransfered +.extern NNS_G2dInitCellAnimation +.extern NNS_G2dInitMCAnimation +.extern NNS_G2dSetMCAnimationCurrentFrame +.extern NNS_G2dTickMCAnimation +.extern NNS_G2dGetMCBankNumNodesRequired +.extern NNS_G2dSetAnimSequenceToMCAnimation +.extern NNS_G2dRotZ +.extern NNS_G2dScale +.extern NNS_G2dTranslate +.extern NNS_G2dPopMtx +.extern NNS_G2dPushMtx +.extern NNS_G2dDrawMultiCellAnimation +.extern NNS_G2dDrawCellAnimation +.extern NNS_G2dEndRendering +.extern NNS_G2dBeginRendering +.extern NNS_G2dInitRenderSurface +.extern NNS_G2dAddRendererTargetSurface +.extern NNS_G2dInitRenderer +.extern NNS_G2dFreeCellTransferStateHandle +.extern NNS_G2dGetNewCellTransferStateHandle +.extern NNS_G2dUpdateCellTransferStateManager +.extern NNS_G2dInitCellTransferStateManager +.extern NNS_G2dSetRndCoreFlipMode +.extern NNS_G2dSetRndCoreAffineOverwriteMode +.extern NNS_G2dFontGetCharWidthsFromIndex +.extern NNS_G2dFontFindGlyphIndex +.extern NNS_G2dFontInitUTF16 +.extern NNS_G2dArrangeOBJ1D +.extern NNSi_G2dCalcRequiredOBJ +.extern NNS_G2dMapScrToCharText +.extern NNS_G2dCharCanvasInitForOBJ1D +.extern NNS_G2dCharCanvasInitForBG +.extern NNS_G2dCharCanvasDrawChar +.extern NNSi_G2dTextCanvasDrawTextRect +.extern NNSi_G2dTextCanvasDrawText +.extern NNS_G3dReleaseMdlSet +.extern NNS_G3dBindMdlSet +.extern NNS_G3dPlttReleasePlttKey +.extern NNS_G3dPlttLoad +.extern NNS_G3dPlttSetPlttKey +.extern NNS_G3dPlttGetRequiredSize +.extern NNS_G3dTexReleaseTexKey +.extern NNS_G3dTexLoad +.extern NNS_G3dTexSetTexKey +.extern NNS_G3dTex4x4GetRequiredSize +.extern NNS_G3dTexGetRequiredSize +.extern NNS_G3dRenderObjRemoveAnmObj +.extern NNS_G3dRenderObjAddAnmObj +.extern NNS_G3dRenderObjInit +.extern NNS_G3dAnmObjInit +.extern NNS_G3dGlbGetInvV +.extern NNS_G3dGlbPolygonAttr +.extern NNS_G3dGlbMaterialColorSpecEmi +.extern NNS_G3dGlbMaterialColorDiffAmb +.extern NNS_G3dGlbLightColor +.extern NNS_G3dGlbLightVector +.extern NNS_G3dGlbSetBaseScale +.extern NNS_G3dGlbSetBaseTrans +.extern NNS_G3dGlbFlushP +.extern NNS_G3dDraw +.extern NNS_G3dDraw1Mat1Shp +.extern NNS_G3dGeBufferOP_N +.extern NNS_G3dGeFlushBuffer +.extern NNS_G3dWorldPosToScrPos +.extern NNS_G3dResDefaultSetup +.extern NNS_G3dInit +.extern NNS_G3dAllocAnmObj +.extern NNS_G3dMdlSetMdlXLDepthUpdateAll +.extern NNS_G3dMdlSetMdlFarClipAll +.extern NNS_G3dMdlSetMdl1DotAll +.extern NNS_G3dMdlSetMdlDepthTestCondAll +.extern NNS_G3dMdlSetMdlFogEnableFlagAll +.extern NNS_G3dMdlSetMdlAlphaAll +.extern NNS_G3dMdlSetMdlPolygonIDAll +.extern NNS_G3dMdlSetMdlCullModeAll +.extern NNS_G3dMdlSetMdlPolygonModeAll +.extern NNS_G3dMdlSetMdlLightEnableFlagAll +.extern NNS_G3dMdlSetMdlEmiAll +.extern NNS_G3dMdlSetMdlSpecAll +.extern NNS_G3dMdlSetMdlAmbAll +.extern NNS_G3dMdlSetMdlDiffAll +.extern NNSi_G3dModifyPolygonAttrMask +.extern NNSi_G3dModifyMatFlag +.extern NNS_G3dGetTex +.extern NNS_G3dGetMdlSet +.extern NNS_G3dGetResDataByName +.extern NNS_G3dGetAnmByIdx +.extern NNS_SndSetMonoFlag +.extern NNS_SndMain +.extern NNS_SndInit +.extern NNS_SndWaveOutIsPlaying +.extern NNS_SndWaveOutSetPan +.extern NNS_SndWaveOutSetSpeed +.extern NNS_SndWaveOutSetVolume +.extern NNS_SndWaveOutStop +.extern NNS_SndWaveOutStart +.extern NNS_SndWaveOutFreeChannel +.extern NNS_SndWaveOutAllocChannel +.extern NNS_SndPlayerGetTick +.extern NNS_SndPlayerGetSeqNo +.extern NNS_SndPlayerSetTrackPan +.extern NNS_SndPlayerSetTrackPitch +.extern NNS_SndPlayerMoveVolume +.extern NNS_SndPlayerSetInitialVolume +.extern NNS_SndPlayerSetVolume +.extern NNS_SndPlayerCountPlayingSeqByPlayerNo +.extern NNS_SndHandleReleaseSeq +.extern NNS_SndHandleInit +.extern NNS_SndPlayerPause +.extern NNS_SndPlayerStopSeqAll +.extern NNS_SndPlayerStopSeqBySeqNo +.extern NNS_SndPlayerStopSeqByPlayerNo +.extern NNS_SndPlayerStopSeq +.extern NNS_SndPlayerSetAllocatableChannel +.extern NNS_SndPlayerSetPlayerVolume +.extern NNS_SndStrmSetVolume +.extern NNS_SndStrmStop +.extern NNS_SndStrmStart +.extern NNS_SndStrmSetup +.extern NNS_SndStrmFreeChannel +.extern NNS_SndStrmAllocChannel +.extern NNS_SndStrmInit +.extern NNS_SndCaptureIsActive +.extern NNS_SndCaptureStopEffect +.extern NNS_SndCaptureStartEffect +.extern NNS_SndCaptureStopReverb +.extern NNS_SndCaptureSetReverbVolume +.extern NNS_SndCaptureStartReverb +.extern NNS_SndArcGetFileAddress +.extern NNS_SndArcReadFile +.extern NNS_SndArcGetFileSize +.extern NNS_SndArcGetWaveArcInfo +.extern NNS_SndArcGetBankInfo +.extern NNS_SndArcGetSeqParam +.extern NNS_SndArcInitOnMemory +.extern NNS_SndArcInit +.extern NNS_SndHeapLoadState +.extern NNS_SndHeapSaveState +.extern NNS_SndHeapCreate +.extern NNS_SndArcLoadSeqEx +.extern NNS_SndArcLoadWaveArc +.extern NNS_SndArcLoadBank +.extern NNS_SndArcLoadSeq +.extern NNS_SndArcLoadGroup +.extern NNS_SndArcPlayerStartSeqArc +.extern NNS_SndArcPlayerStartSeqEx +.extern NNS_SndArcPlayerStartSeq +.extern NNS_SndArcPlayerSetup .extern FUN_020C5D8C .extern FUN_020C5E04 .extern FUN_020C6034 @@ -7710,6 +7711,7 @@ .extern MTX_TransApply44 .extern NitroMain .extern gBacklightTop +.extern UNK_02016FA4 .extern OS_AllocFromArenaHi .extern OS_AllocFromArenaLo .extern OS_AllocFromHeap @@ -8192,8 +8194,8 @@ .extern UNK_020FB764 .extern UNK_020FD144 .extern UNK_020FD6D4 -.extern UNK_021064B8 -.extern UNK_021064C0 +.extern NNS_GfdDefaultFuncAllocTexVram +.extern NNS_GfdDefaultFuncAllocPlttVram .extern gMain .extern UNK_021C8ECC .extern UNK_021C8ED0 @@ -8237,14 +8239,10 @@ .extern Unk_02106A04 .extern UNK_020FF368 .extern UNK_020FF3D4 -.extern UNK_020FFA38 +.extern FX_SinCosTable_ .extern UNK_02105BB8 -.extern UNK_021064BC -.extern UNK_021064C4 -.extern UNK_021CED20 -.extern UNK_021CED98 -.extern UNK_021CEDD4 -.extern UNK_021CEF70 +.extern NNS_GfdDefaultFuncFreeTexVram +.extern NNS_GfdDefaultFuncFreePlttVram .extern UnloadOverlayByID .extern VEC_Add .extern VEC_CrossProduct @@ -8466,16 +8464,16 @@ .extern sys_exit .extern sys_readc .extern sys_writec -.extern tempName_NNS_FndAllocFromExpHeapEx -.extern tempName_NNS_FndCreateExpHeapEx +.extern NNS_FndAllocFromExpHeapEx +.extern NNS_FndCreateExpHeapEx .extern DWC_ClearDirtyFlag .extern DWC_CreateUserData -.extern thunk_FUN_020adc8c -.extern thunk_FUN_020adc8c_2 -.extern thunk_FUN_020ae84c -.extern thunk_FUN_020afda0 -.extern thunk_FUN_020afda0_2 -.extern thunk_FUN_020b5040 +.extern NNS_FndDestroyExpHeap +.extern NNS_FndDestroyFrmHeap +.extern NNS_G3dFreeAnmObj +.extern NNS_G2dGetUnpackedMCAnimBank +.extern NNS_G2dGetUnpackedAnimBank +.extern NNS_G2dSetRendererImageProxy .extern vsnprintf .extern vsscanf .extern vswprintf @@ -8500,8 +8498,8 @@ .extern DWCi_BACKUPlWriteAll .extern DWCi_BM_SetWiFiInfo .extern DWC_Auth_CheckWiFiIDNeedCreate -.extern UNK_021064B8 -.extern UNK_021064C0 +.extern NNS_GfdDefaultFuncAllocTexVram +.extern NNS_GfdDefaultFuncAllocPlttVram .extern MOD18_0224CA58 .extern MOD18_0223DFB4 .extern MOD18_02245FA0 @@ -8520,3 +8518,153 @@ .extern FUN_02025490 .extern FUN_020254A0 .extern FUN_020254B4 +.extern FUN_02041464 +.extern NNS_G2dGetCellDataByIdx +.extern NNS_G2dBindAnimCtrl +.extern NNS_G2dInitAnimCtrl +.extern NNS_G2dSetAnimCtrlCurrentFrame +.extern NNS_G2dTickAnimCtrl +.extern NNS_G2dGetAnimCtrlCurrentElement +.extern NNSi_G2dSrtcInitControl +.extern NNSi_G2dSrtcSetSRTScale +.extern NNSi_G2dSrtcSetSRTRotZ +.extern NNSi_G2dSrtcSetTrans +.extern NNS_G2dSetCellTransferStateRequested +.extern NNSi_G2dInitCellTransferState +.extern NNSi_objSizeHTbl +.extern NNSi_objSizeWTbl +.extern NNSi_G2dGetVramLocation +.extern NNSi_G2dSetVramLocation +.extern NNSi_G2dInitializeVRamLocation +.extern NNSi_G2dBitReaderRead +.extern NNSi_G2dGetUnpackedFont +.extern NNSi_G2dSplitCharUTF16 +.extern NNS_G2dGetMultiCellDataByIdx +.extern NNSi_G2dIsAnimCtrlLoopAnim +.extern NNSi_G2dInitializeNode +.extern NNS_G2dFindBinaryBlock +.extern NNSi_G2dUnpackUserExCellAttrBank +.extern GXi_DmaId +.extern NNS_G2dGetPaletteTableValue +.extern NNSi_G2dMtxConcat32 +.extern NNSi_G2dGetOamSoftEmuAutoZOffsetStep +.extern NNSi_G2dSetOamSoftEmuAutoZOffsetStep +.extern NNSi_G2dResetOamSoftEmuAutoZOffset +.extern NNSi_G2dSetOamSoftEmuAutoZOffsetFlag +.extern NNS_G2dRndCoreDrawCellVramTransfer +.extern NNS_G2dRndCoreDrawCell +.extern NNS_G2dRndCoreEndRendering +.extern NNS_G2dRndCoreBeginRendering +.extern NNS_G2dIsRndCoreFlipV +.extern NNS_G2dIsRndCoreFlipH +.extern NNS_G2dSetRndCoreSurface +.extern NNS_G2dSetRndCore3DSoftSpriteZvalue +.extern NNS_G2dSetRndCoreCurrentMtx2D +.extern NNS_G2dSetRndCoreCurrentMtx3D +.extern NNS_G2dSetRndCoreOamRegisterFunc +.extern NNS_G2dSetRndCoreImageProxy +.extern NNS_G2dInitRndCore +.extern NNS_G2dIsImagePaletteReadyToUse +.extern NNS_G2dIsImageReadyToUse +.extern NNSi_G2dGetCellTransferState +.extern NNS_G2dDrawOneOam3DDirectWithPosFast +.extern NNSi_G2dFontGetTextRect +.extern NNSi_G2dFontGetTextHeight +.extern NNSi_G2dFontGetStringWidth +.extern NNS_G3dGeSendDL +.extern NNS_G3dSendTexSRT_FuncArray +.extern NNSi_G3dAnmCalcNsBca +.extern NNSi_G3dAnmObjInitNsBca +.extern NNSi_G3dAnmCalcNsBma +.extern NNSi_G3dAnmObjInitNsBma +.extern NNSi_G3dAnmCalcNsBta +.extern NNSi_G3dAnmObjInitNsBta +.extern NNSi_G3dAnmCalcNsBtp +.extern NNSi_G3dAnmObjInitNsBtp +.extern NNSi_G3dAnmCalcNsBva +.extern NNSi_G3dAnmObjInitNsBva +.extern NNSi_G3dGetJointScaleBasic +.extern NNSi_G3dSendJointSRTBasic +.extern NNSi_G3dSendTexSRTMaya +.extern NNSi_G3dGetJointScaleMaya +.extern NNSi_G3dSendJointSRTMaya +.extern NNSi_G3dSendTexSRTSi3d +.extern NNSi_G3dGetJointScaleSi3d +.extern NNSi_G3dSendJointSRTSi3d +.extern NNSi_G3dSendTexSRT3dsMax +.extern NNSi_G3dSendTexSRTXsi +.extern NNS_G3dAnmFmtNum +.extern NNS_G3dFuncBlendVisDefault +.extern NNS_G3dFuncBlendJntDefault +.extern NNS_G3dFuncBlendMatDefault +.extern NNS_G3dAnmObjInitFuncArray +.extern NNS_G3dRS +.extern NNS_G3dAnmObjCalcSizeRequired +.extern NNS_G3dFuncAnmJntNsBcaDefault +.extern NNS_G3dGetResDictIdxByName +.extern NNS_G3dFuncAnmMatNsBmaDefault +.extern NNS_G3dFuncAnmMatNsBtaDefault +.extern NNSi_G3dGetTexPatAnmFV +.extern NNSi_G3dGetTexPatAnmPlttNameByIdx +.extern NNSi_G3dGetTexPatAnmTexNameByIdx +.extern NNS_G3dFuncAnmMatNsBtpDefault +.extern NNS_G3dFuncAnmVisNsBvaDefault +.extern NNS_G3dGlbGetInvWV +.extern NNS_G3dGlbGetWV +.extern NNS_G3dGetCurrentMtx +.extern NNS_G3dSendJointSRT_FuncArray +.extern NNS_G3dGetJointScale_FuncArray +.extern NNS_G3dGlb +.extern NNS_G3dGlbGetViewPort +.extern NNS_G3dGlbInit +.extern NNSi_GfdFreeLnkVram +.extern NNSi_GfdAllocLnkVramAligned +.extern NNSi_GfdAddNewFreeBlock +.extern NNSi_GfdInitLnkVramBlockPool +.extern NNSi_GfdInitLnkVramMan +.extern NNSi_GfdAllocLnkVram +.extern NNS_SndFreeAlarm +.extern NNS_SndAllocAlarm +.extern NNS_SndUnlockCapture +.extern NNS_SndLockCapture +.extern NNS_SndUnlockChannel +.extern NNS_SndLockChannel +.extern NNSi_SndFaderIsFinished +.extern NNSi_SndFaderUpdate +.extern NNSi_SndFaderGet +.extern NNSi_SndFaderSet +.extern NNS_G3dRSOnGlb +.extern NNSi_SndFaderInit +.extern SingleWaveDisposeCallback +.extern NNSi_SndInitResourceMgr +.extern NNSi_SndPlayerMain +.extern NNSi_SndPlayerInit +.extern NNSi_SndCaptureEndSleep +.extern NNSi_SndCaptureBeginSleep +.extern NNSi_SndCaptureMain +.extern NNSi_SndCaptureInit +.extern NNSi_SndArcStrmMain +.extern NNS_SndHeapClear +.extern NNS_SndHeapDestroy +.extern NNS_SndHeapAlloc +.extern SNDi_DecibelTable +.extern NNS_SndArcSetFileAddress +.extern NNS_SndArcGetGroupInfo +.extern NNS_SndArcGetSeqArcInfo +.extern NNS_SndArcGetSeqInfo +.extern NNS_SndArcGetCurrent +.extern NNS_SndArcSetCurrent +.extern LoadSingleWaves +.extern NNSi_SndPlayerAllocHeap +.extern NNSi_SndPlayerStartSeq +.extern NNSi_SndPlayerAllocSeqPlayer +.extern NNS_SndPlayerSetSeqArcNo +.extern NNS_SndPlayerSetSeqNo +.extern NNS_SndPlayerSetChannelPriority +.extern NNS_SndPlayerCreateHeap +.extern NNS_SndPlayerSetPlayableSeqCount +.extern NNS_SndArcGetPlayerInfo +.extern NNSi_SndArcLoadBank +.extern NNSi_SndArcLoadSeq +.extern NNSi_SndSeqArcGetSeqInfo +.extern NNSi_SndPlayerFreeSeqPlayer diff --git a/arm9/lib/include/MI_memory.h b/arm9/lib/include/MI_memory.h index 339ff9b8..4e5722bb 100644 --- a/arm9/lib/include/MI_memory.h +++ b/arm9/lib/include/MI_memory.h @@ -25,6 +25,11 @@ static inline void MI_CpuClear8(void *dest, u32 size) { MI_CpuFill8(dest, 0, size); } +static inline void MI_CpuFill16(void *dest, u16 data, u32 size) +{ + MIi_CpuClear16(data, dest, size); +} + static inline void MI_CpuClear16(void * destp, u32 size) { MIi_CpuClear16(0, destp, size); @@ -55,4 +60,9 @@ static inline void MI_CpuFillFast(void *dest, u32 data, u32 size) MIi_CpuClearFast(data, dest, size); } +static inline void MI_CpuCopyFast(const void *src, void *dest, u32 size) +{ + MIi_CpuCopyFast(src, dest, size); +} + #endif //POKEDIAMOND_ARM9_MI_MEMORY_H diff --git a/arm9/lib/include/NNS_SND_arc.h b/arm9/lib/include/NNS_SND_arc.h new file mode 100644 index 00000000..95b33141 --- /dev/null +++ b/arm9/lib/include/NNS_SND_arc.h @@ -0,0 +1,38 @@ +#ifndef GUARD_NNS_SND_ARC_H +#define GUARD_NNS_SND_ARC_H + +#include "SND_main.h" + +typedef struct NNSSndArcHeader +{ + struct SNDBinaryFileHeader fileHeader; + u32 symbolDataOffset; + u32 symbolDataSize; + u32 infoOffset; + u32 infoSize; + u32 fatOffset; + u32 fatSize; + u32 fileImageOffset; + u32 fileImageSize; +} NNSSndArcHeader; + +typedef struct NNSSndArc +{ + NNSSndArcHeader header; + BOOL file_open; + FSFile file; + FSFileID fileId; + struct NNSSndArcFat* fat; + struct NNSSndArcSymbol* symbol; + struct NNSSndArcInfo* info; +} NNSSndArc; + +void NNS_SndInit(void); +void NNS_SndArcInit(NNSSndArc *, const char *, void *, u32); +void NNS_SndArcPlayerSetup(void *); +void NNS_SndMain(void); +void NNS_SndHandleInit(u32 *); +void NNS_SndPlayerStopSeqByPlayerNo(int playerNo, int fadeFrame); +void NNS_SndHandleReleaseSeq(void); + +#endif //GUARD_NNS_SND_ARC_H diff --git a/arm9/lib/include/NNS_SND_arc_loader.h b/arm9/lib/include/NNS_SND_arc_loader.h new file mode 100644 index 00000000..851c08ab --- /dev/null +++ b/arm9/lib/include/NNS_SND_arc_loader.h @@ -0,0 +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
diff --git a/arm9/lib/include/NNS_SND_heap.h b/arm9/lib/include/NNS_SND_heap.h new file mode 100644 index 00000000..2929d1bb --- /dev/null +++ b/arm9/lib/include/NNS_SND_heap.h @@ -0,0 +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
diff --git a/arm9/lib/include/NNS_g2d.h b/arm9/lib/include/NNS_g2d.h new file mode 100644 index 00000000..483f254a --- /dev/null +++ b/arm9/lib/include/NNS_g2d.h @@ -0,0 +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
diff --git a/arm9/lib/include/RTC_api.h b/arm9/lib/include/RTC_api.h index d2577cdf..09efde7e 100644 --- a/arm9/lib/include/RTC_api.h +++ b/arm9/lib/include/RTC_api.h @@ -1,6 +1,29 @@ #ifndef NITRO_RTC_API_H_ #define NITRO_RTC_API_H_ +typedef enum RTCAlarmChan +{ + RTC_ALARM_CHAN_1 = 0, + RTC_ALARM_CHAN_2, + RTC_ALARM_CHAN_MAX +} +RTCAlarmChan; + +// Alarm status definitions +typedef enum RTCAlarmStatus +{ + RTC_ALARM_STATUS_OFF = 0, + RTC_ALARM_STATUS_ON, + RTC_ALARM_STATUS_MAX +} +RTCAlarmStatus; + +#define RTC_ALARM_ENABLE_NONE 0x0000 +#define RTC_ALARM_ENABLE_WEEK 0x0001 +#define RTC_ALARM_ENABLE_HOUR 0x0002 +#define RTC_ALARM_ENABLE_MINUTE 0x0004 +#define RTC_ALARM_ENABLE_ALL ( RTC_ALARM_ENABLE_WEEK | RTC_ALARM_ENABLE_HOUR | RTC_ALARM_ENABLE_MINUTE ) + typedef enum RTCWeek { RTC_WEEK_SUNDAY = 0, @@ -12,7 +35,7 @@ typedef enum RTCWeek RTC_WEEK_SATURDAY, RTC_WEEK_MAX } - RTCWeek; +RTCWeek; typedef struct RTCDate { @@ -21,7 +44,7 @@ typedef struct RTCDate u32 day; RTCWeek week; } - RTCDate; +RTCDate; typedef struct RTCTime { @@ -29,6 +52,60 @@ typedef struct RTCTime u32 minute; u32 second; } - RTCTime; +RTCTime; + +typedef struct RTCAlarmParam +{ + RTCWeek week; // Day of the week + u32 hour; // Hour ( 0 ~ 23 ) + u32 minute; // Minute ( 0 ~ 59 ) + u32 enable; // Alarm enable flag ( RTC_ALARM_ENABLE_* ) + +} +RTCAlarmParam; + +typedef enum RTCResult +{ + RTC_RESULT_SUCCESS = 0, + RTC_RESULT_BUSY, + RTC_RESULT_ILLEGAL_PARAMETER, + RTC_RESULT_SEND_ERROR, + RTC_RESULT_INVALID_COMMAND, + RTC_RESULT_ILLEGAL_STATUS, + RTC_RESULT_FATAL_ERROR, + RTC_RESULT_MAX +} +RTCResult; + +typedef void (*RTCCallback) (RTCResult result, void *arg); +typedef void (*RTCInterrupt) (void); + +void RTC_Init(void); +RTCResult RTC_GetDate(RTCDate *date); +RTCResult RTC_GetTime(RTCTime *time); +RTCResult RTC_GetDateTime(RTCDate *date, RTCTime *time); +RTCResult RTC_SetDate(const RTCDate *date); +RTCResult RTC_SetTime(const RTCTime *time); +RTCResult RTC_SetDateTime(const RTCDate *date, const RTCTime *time); +RTCResult RTC_GetAlarmStatus(RTCAlarmChan chan, RTCAlarmStatus *status); +RTCResult RTC_GetAlarmParam(RTCAlarmChan chan, RTCAlarmParam *param); +RTCResult RTC_SetAlarmStatus(RTCAlarmChan chan, const RTCAlarmStatus *status); +RTCResult RTC_SetAlarmParam(RTCAlarmChan chan, const RTCAlarmParam *param); +RTCResult RTC_GetDateAsync(RTCDate *date, RTCCallback callback, void *arg); +RTCResult RTC_GetTimeAsync(RTCTime *time, RTCCallback callback, void *arg); +RTCResult RTC_GetDateTimeAsync(RTCDate *date, RTCTime *time, RTCCallback callback, void *arg); +RTCResult RTC_SetDateAsync(const RTCDate *date, RTCCallback callback, void *arg); +RTCResult RTC_SetTimeAsync(const RTCTime *time, RTCCallback callback, void *arg); +RTCResult RTC_SetDateTimeAsync(const RTCDate *date, const RTCTime *time, RTCCallback callback, + void *arg); +RTCResult RTC_GetAlarmStatusAsync(RTCAlarmChan chan, RTCAlarmStatus *status, RTCCallback callback, + void *arg); +RTCResult RTC_GetAlarmParamAsync(RTCAlarmChan chan, RTCAlarmParam *param, RTCCallback callback, + void *arg); +void RTC_SetAlarmInterrupt(RTCInterrupt interrupt); +RTCResult RTC_SetAlarmStatusAsync(RTCAlarmChan chan, const RTCAlarmStatus *status, + RTCCallback callback, void *arg); +RTCResult RTC_SetAlarmParamAsync(RTCAlarmChan chan, const RTCAlarmParam *param, + RTCCallback callback, void *arg); #endif //NITRO_RTC_API_H_ diff --git a/arm9/lib/include/RTC_internal.h b/arm9/lib/include/RTC_internal.h new file mode 100644 index 00000000..440d8b95 --- /dev/null +++ b/arm9/lib/include/RTC_internal.h @@ -0,0 +1,11 @@ +#ifndef NITRO_RTC_INTERNAL_H_ +#define NITRO_RTC_INTERNAL_H_ + +#include "nitro/types.h" + +BOOL RTCi_WriteRawStatus2Async(void); +BOOL RTCi_ReadRawTimeAsync(void); +BOOL RTCi_ReadRawDateAsync(void); +BOOL RTCi_ReadRawDateTimeAsync(void); + +#endif //NITRO_RTC_INTERNAL_H_ diff --git a/arm9/lib/include/gx.h b/arm9/lib/include/gx.h index 26f6cfaf..11081942 100644 --- a/arm9/lib/include/gx.h +++ b/arm9/lib/include/gx.h @@ -5,6 +5,7 @@ #include "MI_memory.h" #include "MI_dma.h" #include "OS_vramExclusive.h" +#include "registers.h" //temporary while other files aren't decompiled @@ -166,4 +167,18 @@ typedef enum } GXDispSelect; +typedef enum +{ + GX_OBJVRAMMODE_CHAR_2D = (0 << REG_GX_DISPCNT_OBJMAP_SHIFT) | (0 << REG_GX_DISPCNT_EXOBJ_SHIFT), + GX_OBJVRAMMODE_CHAR_1D_32K = + (1 << REG_GX_DISPCNT_OBJMAP_SHIFT) | (0 << REG_GX_DISPCNT_EXOBJ_SHIFT), + GX_OBJVRAMMODE_CHAR_1D_64K = + (1 << REG_GX_DISPCNT_OBJMAP_SHIFT) | (1 << REG_GX_DISPCNT_EXOBJ_SHIFT), + GX_OBJVRAMMODE_CHAR_1D_128K = + (1 << REG_GX_DISPCNT_OBJMAP_SHIFT) | (2 << REG_GX_DISPCNT_EXOBJ_SHIFT), + GX_OBJVRAMMODE_CHAR_1D_256K = + (1 << REG_GX_DISPCNT_OBJMAP_SHIFT) | (3 << REG_GX_DISPCNT_EXOBJ_SHIFT) +} + GXOBJVRamModeChar; + #endif //GUARD_GX_H diff --git a/arm9/lib/include/registers.h b/arm9/lib/include/registers.h index d55347d5..7a0155da 100644 --- a/arm9/lib/include/registers.h +++ b/arm9/lib/include/registers.h @@ -517,4 +517,146 @@ #define REG_GX_POWCNT_DSEL_SIZE 1 #define REG_GX_POWCNT_DSEL_MASK 0x8000 +// GX_DISPCNT +#define REG_GX_DISPCNT_O_SHIFT 31 +#define REG_GX_DISPCNT_O_SIZE 1 +#define REG_GX_DISPCNT_O_MASK 0x80000000 + +#define REG_GX_DISPCNT_BG_SHIFT 30 +#define REG_GX_DISPCNT_BG_SIZE 1 +#define REG_GX_DISPCNT_BG_MASK 0x40000000 + +#define REG_GX_DISPCNT_BGSCREENOFFSET_SHIFT 27 +#define REG_GX_DISPCNT_BGSCREENOFFSET_SIZE 3 +#define REG_GX_DISPCNT_BGSCREENOFFSET_MASK 0x38000000 + +#define REG_GX_DISPCNT_BGCHAROFFSET_SHIFT 24 +#define REG_GX_DISPCNT_BGCHAROFFSET_SIZE 3 +#define REG_GX_DISPCNT_BGCHAROFFSET_MASK 0x07000000 + +#define REG_GX_DISPCNT_OH_SHIFT 23 +#define REG_GX_DISPCNT_OH_SIZE 1 +#define REG_GX_DISPCNT_OH_MASK 0x00800000 + +#define REG_GX_DISPCNT_EXOBJ_SHIFT 20 +#define REG_GX_DISPCNT_EXOBJ_SIZE 3 +#define REG_GX_DISPCNT_EXOBJ_MASK 0x00700000 + +#define REG_GX_DISPCNT_VRAM_SHIFT 18 +#define REG_GX_DISPCNT_VRAM_SIZE 2 +#define REG_GX_DISPCNT_VRAM_MASK 0x000c0000 + +#define REG_GX_DISPCNT_MODE_SHIFT 16 +#define REG_GX_DISPCNT_MODE_SIZE 2 +#define REG_GX_DISPCNT_MODE_MASK 0x00030000 + +#define REG_GX_DISPCNT_OW_SHIFT 15 +#define REG_GX_DISPCNT_OW_SIZE 1 +#define REG_GX_DISPCNT_OW_MASK 0x00008000 + +#define REG_GX_DISPCNT_W1_SHIFT 14 +#define REG_GX_DISPCNT_W1_SIZE 1 +#define REG_GX_DISPCNT_W1_MASK 0x00004000 + +#define REG_GX_DISPCNT_W0_SHIFT 13 +#define REG_GX_DISPCNT_W0_SIZE 1 +#define REG_GX_DISPCNT_W0_MASK 0x00002000 + +#define REG_GX_DISPCNT_DISPLAY_SHIFT 8 +#define REG_GX_DISPCNT_DISPLAY_SIZE 5 +#define REG_GX_DISPCNT_DISPLAY_MASK 0x00001f00 + +#define REG_GX_DISPCNT_BLANK_SHIFT 7 +#define REG_GX_DISPCNT_BLANK_SIZE 1 +#define REG_GX_DISPCNT_BLANK_MASK 0x00000080 + +#define REG_GX_DISPCNT_OBJMAP_SHIFT 4 +#define REG_GX_DISPCNT_OBJMAP_SIZE 3 +#define REG_GX_DISPCNT_OBJMAP_MASK 0x00000070 + +#define REG_GX_DISPCNT_BG02D3D_SHIFT 3 +#define REG_GX_DISPCNT_BG02D3D_SIZE 1 +#define REG_GX_DISPCNT_BG02D3D_MASK 0x00000008 + +#define REG_GX_DISPCNT_BGMODE_SHIFT 0 +#define REG_GX_DISPCNT_BGMODE_SIZE 3 +#define REG_GX_DISPCNT_BGMODE_MASK 0x00000007 + +#define REG_GX_DISPCNT_OBJMAP_CH_SHIFT 4 +#define REG_GX_DISPCNT_OBJMAP_CH_SIZE 1 +#define REG_GX_DISPCNT_OBJMAP_CH_MASK 0x00000010 + +#define REG_GX_DISPCNT_OBJMAP_BM_SHIFT 5 +#define REG_GX_DISPCNT_OBJMAP_BM_SIZE 2 +#define REG_GX_DISPCNT_OBJMAP_BM_MASK 0x00000060 + +#define REG_GX_DISPCNT_EXOBJ_CH_SHIFT 20 +#define REG_GX_DISPCNT_EXOBJ_CH_SIZE 2 +#define REG_GX_DISPCNT_EXOBJ_CH_MASK 0x00300000 + +#define REG_GX_DISPCNT_EXOBJ_BM_SHIFT 22 +#define REG_GX_DISPCNT_EXOBJ_BM_SIZE 1 +#define REG_GX_DISPCNT_EXOBJ_BM_MASK 0x00400000 + +// GXS_DB_DISPCNT +#define REG_GXS_DB_DISPCNT_O_SHIFT 31 +#define REG_GXS_DB_DISPCNT_O_SIZE 1 +#define REG_GXS_DB_DISPCNT_O_MASK 0x80000000 + +#define REG_GXS_DB_DISPCNT_BG_SHIFT 30 +#define REG_GXS_DB_DISPCNT_BG_SIZE 1 +#define REG_GXS_DB_DISPCNT_BG_MASK 0x40000000 + +#define REG_GXS_DB_DISPCNT_OH_SHIFT 23 +#define REG_GXS_DB_DISPCNT_OH_SIZE 1 +#define REG_GXS_DB_DISPCNT_OH_MASK 0x00800000 + +#define REG_GXS_DB_DISPCNT_EXOBJ_SHIFT 20 +#define REG_GXS_DB_DISPCNT_EXOBJ_SIZE 2 +#define REG_GXS_DB_DISPCNT_EXOBJ_MASK 0x00300000 + +#define REG_GXS_DB_DISPCNT_MODE_SHIFT 16 +#define REG_GXS_DB_DISPCNT_MODE_SIZE 1 +#define REG_GXS_DB_DISPCNT_MODE_MASK 0x00010000 + +#define REG_GXS_DB_DISPCNT_OW_SHIFT 15 +#define REG_GXS_DB_DISPCNT_OW_SIZE 1 +#define REG_GXS_DB_DISPCNT_OW_MASK 0x00008000 + +#define REG_GXS_DB_DISPCNT_W1_SHIFT 14 +#define REG_GXS_DB_DISPCNT_W1_SIZE 1 +#define REG_GXS_DB_DISPCNT_W1_MASK 0x00004000 + +#define REG_GXS_DB_DISPCNT_W0_SHIFT 13 +#define REG_GXS_DB_DISPCNT_W0_SIZE 1 +#define REG_GXS_DB_DISPCNT_W0_MASK 0x00002000 + +#define REG_GXS_DB_DISPCNT_DISPLAY_SHIFT 8 +#define REG_GXS_DB_DISPCNT_DISPLAY_SIZE 5 +#define REG_GXS_DB_DISPCNT_DISPLAY_MASK 0x00001f00 + +#define REG_GXS_DB_DISPCNT_BLANK_SHIFT 7 +#define REG_GXS_DB_DISPCNT_BLANK_SIZE 1 +#define REG_GXS_DB_DISPCNT_BLANK_MASK 0x00000080 + +#define REG_GXS_DB_DISPCNT_OBJMAP_SHIFT 4 +#define REG_GXS_DB_DISPCNT_OBJMAP_SIZE 3 +#define REG_GXS_DB_DISPCNT_OBJMAP_MASK 0x00000070 + +#define REG_GXS_DB_DISPCNT_BGMODE_SHIFT 0 +#define REG_GXS_DB_DISPCNT_BGMODE_SIZE 3 +#define REG_GXS_DB_DISPCNT_BGMODE_MASK 0x00000007 + +#define REG_GXS_DB_DISPCNT_OBJMAP_CH_SHIFT 4 +#define REG_GXS_DB_DISPCNT_OBJMAP_CH_SIZE 1 +#define REG_GXS_DB_DISPCNT_OBJMAP_CH_MASK 0x00000010 + +#define REG_GXS_DB_DISPCNT_OBJMAP_BM_SHIFT 5 +#define REG_GXS_DB_DISPCNT_OBJMAP_BM_SIZE 2 +#define REG_GXS_DB_DISPCNT_OBJMAP_BM_MASK 0x00000060 + +#define REG_GXS_DB_DISPCNT_EXOBJ_CH_SHIFT 20 +#define REG_GXS_DB_DISPCNT_EXOBJ_CH_SIZE 2 +#define REG_GXS_DB_DISPCNT_EXOBJ_CH_MASK 0x00300000 + #endif //POKEDIAMOND_ARM9_REGISTERS_H diff --git a/arm9/lib/src/FX_sincos.c b/arm9/lib/src/FX_sincos.c new file mode 100644 index 00000000..89c8fc78 --- /dev/null +++ b/arm9/lib/src/FX_sincos.c @@ -0,0 +1,4105 @@ +#include "global.h" +#include "fx.h" + +/* + * [2 * idx + 0] <- sin(idx * 2pi / 4096) + * [2 * idx + 1] <- cos(idx * 2pi / 4096) + */ +const fx16 FX_SinCosTable_[4096 * 2] = { + FX16_CONST(0.0), FX16_CONST(1.0), + FX16_CONST(0.0015339801862847655), FX16_CONST(0.9999988234517019), + FX16_CONST(0.003067956762965976), FX16_CONST(0.9999952938095762), + FX16_CONST(0.0046019261204485705), FX16_CONST(0.9999894110819284), + FX16_CONST(0.006135884649154475), FX16_CONST(0.9999811752826011), + FX16_CONST(0.007669828739531097), FX16_CONST(0.9999705864309741), + FX16_CONST(0.00920375478205982), FX16_CONST(0.9999576445519639), + FX16_CONST(0.01073765916726449), FX16_CONST(0.9999423496760239), + FX16_CONST(0.012271538285719925), FX16_CONST(0.9999247018391445), + FX16_CONST(0.01380538852806039), FX16_CONST(0.9999047010828529), + FX16_CONST(0.0153392062849881), FX16_CONST(0.9998823474542126), + FX16_CONST(0.01687298794728171), FX16_CONST(0.9998576410058239), + FX16_CONST(0.01840672990580482), FX16_CONST(0.9998305817958234), + FX16_CONST(0.01994042855151444), FX16_CONST(0.9998011698878843), + FX16_CONST(0.021474080275469508), FX16_CONST(0.9997694053512153), + FX16_CONST(0.02300768146883937), FX16_CONST(0.9997352882605617), + FX16_CONST(0.024541228522912288), FX16_CONST(0.9996988186962042), + FX16_CONST(0.0260747178291039), FX16_CONST(0.9996599967439592), + FX16_CONST(0.02760814577896574), FX16_CONST(0.9996188224951786), + FX16_CONST(0.029141508764193722), FX16_CONST(0.9995752960467492), + FX16_CONST(0.030674803176636626), FX16_CONST(0.9995294175010931), + FX16_CONST(0.032208025408304586), FX16_CONST(0.999481186966167), + FX16_CONST(0.03374117185137758), FX16_CONST(0.9994306045554617), + FX16_CONST(0.03527423889821395), FX16_CONST(0.9993776703880028), + FX16_CONST(0.03680722294135883), FX16_CONST(0.9993223845883495), + FX16_CONST(0.038340120373552694), FX16_CONST(0.9992647472865944), + FX16_CONST(0.03987292758773981), FX16_CONST(0.9992047586183639), + FX16_CONST(0.04140564097707674), FX16_CONST(0.9991424187248169), + FX16_CONST(0.04293825693494082), FX16_CONST(0.9990777277526454), + FX16_CONST(0.04447077185493867), FX16_CONST(0.9990106858540734), + FX16_CONST(0.04600318213091462), FX16_CONST(0.9989412931868569), + FX16_CONST(0.0475354841569593), FX16_CONST(0.9988695499142836), + FX16_CONST(0.049067674327418015), FX16_CONST(0.9987954562051724), + FX16_CONST(0.05059974903689928), FX16_CONST(0.9987190122338729), + FX16_CONST(0.052131704680283324), FX16_CONST(0.9986402181802653), + FX16_CONST(0.05366353765273052), FX16_CONST(0.9985590742297593), + FX16_CONST(0.055195244349689934), FX16_CONST(0.9984755805732948), + FX16_CONST(0.05672682116690775), FX16_CONST(0.9983897374073402), + FX16_CONST(0.05825826450043575), FX16_CONST(0.9983015449338929), + FX16_CONST(0.05978957074663987), FX16_CONST(0.9982110033604782), + FX16_CONST(0.06132073630220858), FX16_CONST(0.9981181129001492), + FX16_CONST(0.0628517575641614), FX16_CONST(0.9980228737714862), + FX16_CONST(0.06438263092985747), FX16_CONST(0.997925286198596), + FX16_CONST(0.0659133527970038), FX16_CONST(0.9978253504111116), + FX16_CONST(0.06744391956366405), FX16_CONST(0.9977230666441916), + FX16_CONST(0.06897432762826675), FX16_CONST(0.9976184351385196), + FX16_CONST(0.07050457338961386), FX16_CONST(0.9975114561403035), + FX16_CONST(0.07203465324688933), FX16_CONST(0.9974021299012753), + FX16_CONST(0.07356456359966743), FX16_CONST(0.9972904566786902), + FX16_CONST(0.0750943008479213), FX16_CONST(0.9971764367353262), + FX16_CONST(0.07662386139203149), FX16_CONST(0.997060070339483), + FX16_CONST(0.07815324163279423), FX16_CONST(0.9969413577649822), + FX16_CONST(0.07968243797143013), FX16_CONST(0.9968202992911657), + FX16_CONST(0.08121144680959244), FX16_CONST(0.9966968952028961), + FX16_CONST(0.08274026454937569), FX16_CONST(0.9965711457905548), + FX16_CONST(0.08426888759332407), FX16_CONST(0.9964430513500426), + FX16_CONST(0.0857973123444399), FX16_CONST(0.996312612182778), + FX16_CONST(0.08732553520619206), FX16_CONST(0.996179828595697), + FX16_CONST(0.0888535525825246), FX16_CONST(0.996044700901252), + FX16_CONST(0.09038136087786498), FX16_CONST(0.9959072294174117), + FX16_CONST(0.09190895649713272), FX16_CONST(0.9957674144676598), + FX16_CONST(0.09343633584574779), FX16_CONST(0.9956252563809943), + FX16_CONST(0.09496349532963899), FX16_CONST(0.9954807554919269), + FX16_CONST(0.09649043135525259), FX16_CONST(0.9953339121404823), + FX16_CONST(0.0980171403295606), FX16_CONST(0.9951847266721969), + FX16_CONST(0.09954361866006932), FX16_CONST(0.9950331994381186), + FX16_CONST(0.10106986275482782), FX16_CONST(0.9948793307948056), + FX16_CONST(0.10259586902243628), FX16_CONST(0.9947231211043257), + FX16_CONST(0.10412163387205459), FX16_CONST(0.9945645707342554), + FX16_CONST(0.10564715371341062), FX16_CONST(0.9944036800576791), + FX16_CONST(0.10717242495680884), FX16_CONST(0.9942404494531879), + FX16_CONST(0.10869744401313872), FX16_CONST(0.9940748793048794), + FX16_CONST(0.11022220729388306), FX16_CONST(0.9939069700023561), + FX16_CONST(0.11174671121112659), FX16_CONST(0.9937367219407246), + FX16_CONST(0.11327095217756435), FX16_CONST(0.9935641355205953), + FX16_CONST(0.11479492660651008), FX16_CONST(0.9933892111480807), + FX16_CONST(0.11631863091190475), FX16_CONST(0.9932119492347945), + FX16_CONST(0.11784206150832498), FX16_CONST(0.9930323501978514), + FX16_CONST(0.11936521481099135), FX16_CONST(0.9928504144598651), + FX16_CONST(0.12088808723577708), FX16_CONST(0.992666142448948), + FX16_CONST(0.1224106751992162), FX16_CONST(0.99247953459871), + FX16_CONST(0.12393297511851216), FX16_CONST(0.9922905913482574), + FX16_CONST(0.12545498341154623), FX16_CONST(0.9920993131421918), + FX16_CONST(0.12697669649688587), FX16_CONST(0.9919057004306093), + FX16_CONST(0.12849811079379317), FX16_CONST(0.9917097536690995), + FX16_CONST(0.13001922272223335), FX16_CONST(0.9915114733187439), + FX16_CONST(0.13154002870288312), FX16_CONST(0.9913108598461154), + FX16_CONST(0.13306052515713906), FX16_CONST(0.9911079137232769), + FX16_CONST(0.13458070850712617), FX16_CONST(0.99090263542778), + FX16_CONST(0.1361005751757062), FX16_CONST(0.9906950254426646), + FX16_CONST(0.13762012158648604), FX16_CONST(0.9904850842564571), + FX16_CONST(0.1391393441638262), FX16_CONST(0.9902728123631691), + FX16_CONST(0.1406582393328492), FX16_CONST(0.9900582102622971), + FX16_CONST(0.14217680351944803), FX16_CONST(0.9898412784588205), + FX16_CONST(0.14369503315029447), FX16_CONST(0.9896220174632009), + FX16_CONST(0.14521292465284746), FX16_CONST(0.9894004277913804), + FX16_CONST(0.14673047445536175), FX16_CONST(0.989176509964781), + FX16_CONST(0.14824767898689603), FX16_CONST(0.988950264510303), + FX16_CONST(0.1497645346773215), FX16_CONST(0.9887216919603238), + FX16_CONST(0.15128103795733022), FX16_CONST(0.9884907928526966), + FX16_CONST(0.15279718525844344), FX16_CONST(0.9882575677307495), + FX16_CONST(0.1543129730130201), FX16_CONST(0.9880220171432835), + FX16_CONST(0.15582839765426523), FX16_CONST(0.9877841416445722), + FX16_CONST(0.15734345561623825), FX16_CONST(0.9875439417943592), + FX16_CONST(0.15885814333386145), FX16_CONST(0.9873014181578584), + FX16_CONST(0.16037245724292828), FX16_CONST(0.987056571305751), + FX16_CONST(0.16188639378011183), FX16_CONST(0.9868094018141855), + FX16_CONST(0.16339994938297323), FX16_CONST(0.9865599102647754), + FX16_CONST(0.1649131204899699), FX16_CONST(0.9863080972445987), + FX16_CONST(0.1664259035404641), FX16_CONST(0.9860539633461954), + FX16_CONST(0.16793829497473117), FX16_CONST(0.9857975091675675), + FX16_CONST(0.16945029123396796), FX16_CONST(0.9855387353121761), + FX16_CONST(0.17096188876030122), FX16_CONST(0.9852776423889412), + FX16_CONST(0.17247308399679595), FX16_CONST(0.9850142310122398), + FX16_CONST(0.17398387338746382), FX16_CONST(0.9847485018019042), + FX16_CONST(0.17549425337727143), FX16_CONST(0.9844804553832209), + FX16_CONST(0.17700422041214875), FX16_CONST(0.984210092386929), + FX16_CONST(0.1785137709389975), FX16_CONST(0.9839374134492189), + FX16_CONST(0.18002290140569951), FX16_CONST(0.9836624192117303), + FX16_CONST(0.18153160826112497), FX16_CONST(0.9833851103215512), + FX16_CONST(0.18303988795514095), FX16_CONST(0.9831054874312163), + FX16_CONST(0.18454773693861962), FX16_CONST(0.9828235511987052), + FX16_CONST(0.18605515166344663), FX16_CONST(0.9825393022874412), + FX16_CONST(0.1875621285825296), FX16_CONST(0.9822527413662894), + FX16_CONST(0.1890686641498062), FX16_CONST(0.9819638691095552), + FX16_CONST(0.19057475482025274), FX16_CONST(0.9816726861969831), + FX16_CONST(0.19208039704989244), FX16_CONST(0.9813791933137546), + FX16_CONST(0.1935855872958036), FX16_CONST(0.9810833911504867), + FX16_CONST(0.19509032201612825), FX16_CONST(0.9807852804032304), + FX16_CONST(0.19659459767008022), FX16_CONST(0.9804848617734694), + FX16_CONST(0.19809841071795356), FX16_CONST(0.9801821359681174), + FX16_CONST(0.19960175762113097), FX16_CONST(0.9798771036995176), + FX16_CONST(0.2011046348420919), FX16_CONST(0.9795697656854405), + FX16_CONST(0.20260703884442113), FX16_CONST(0.979260122649082), + FX16_CONST(0.20410896609281687), FX16_CONST(0.9789481753190622), + FX16_CONST(0.20561041305309924), FX16_CONST(0.9786339244294232), + FX16_CONST(0.20711137619221856), FX16_CONST(0.9783173707196277), + FX16_CONST(0.20861185197826349), FX16_CONST(0.9779985149345571), + FX16_CONST(0.2101118368804696), FX16_CONST(0.9776773578245099), + FX16_CONST(0.21161132736922755), FX16_CONST(0.9773539001452), + FX16_CONST(0.21311031991609136), FX16_CONST(0.9770281426577544), + FX16_CONST(0.21460881099378676), FX16_CONST(0.9767000861287118), + FX16_CONST(0.21610679707621952), FX16_CONST(0.9763697313300211), + FX16_CONST(0.21760427463848364), FX16_CONST(0.976037079039039), + FX16_CONST(0.2191012401568698), FX16_CONST(0.9757021300385286), + FX16_CONST(0.2205976901088735), FX16_CONST(0.975364885116657), + FX16_CONST(0.2220936209732035), FX16_CONST(0.9750253450669941), + FX16_CONST(0.22358902922979), FX16_CONST(0.9746835106885107), + FX16_CONST(0.22508391135979283), FX16_CONST(0.9743393827855759), + FX16_CONST(0.22657826384561), FX16_CONST(0.9739929621679558), + FX16_CONST(0.22807208317088573), FX16_CONST(0.973644249650812), + FX16_CONST(0.22956536582051887), FX16_CONST(0.9732932460546982), + FX16_CONST(0.2310581082806711), FX16_CONST(0.9729399522055602), + FX16_CONST(0.23255030703877524), FX16_CONST(0.9725843689347322), + FX16_CONST(0.23404195858354343), FX16_CONST(0.9722264970789363), + FX16_CONST(0.2355330594049755), FX16_CONST(0.9718663374802794), + FX16_CONST(0.2370236059943672), FX16_CONST(0.9715038909862518), + FX16_CONST(0.23851359484431842), FX16_CONST(0.9711391584497251), + FX16_CONST(0.2400030224487415), FX16_CONST(0.9707721407289504), + FX16_CONST(0.24149188530286933), FX16_CONST(0.9704028386875555), + FX16_CONST(0.24298017990326387), FX16_CONST(0.970031253194544), + FX16_CONST(0.24446790274782415), FX16_CONST(0.9696573851242924), + FX16_CONST(0.2459550503357946), FX16_CONST(0.9692812353565485), + FX16_CONST(0.24744161916777327), FX16_CONST(0.9689028047764289), + FX16_CONST(0.24892760574572015), FX16_CONST(0.9685220942744174), + FX16_CONST(0.2504130065729652), FX16_CONST(0.9681391047463624), + FX16_CONST(0.25189781815421697), FX16_CONST(0.9677538370934755), + FX16_CONST(0.25338203699557016), FX16_CONST(0.9673662922223285), + FX16_CONST(0.25486565960451457), FX16_CONST(0.9669764710448521), + FX16_CONST(0.2563486824899429), FX16_CONST(0.9665843744783331), + FX16_CONST(0.257831102162159), FX16_CONST(0.9661900034454125), + FX16_CONST(0.25931291513288623), FX16_CONST(0.9657933588740837), + FX16_CONST(0.2607941179152755), FX16_CONST(0.9653944416976894), + FX16_CONST(0.2622747070239136), FX16_CONST(0.9649932528549203), + FX16_CONST(0.26375467897483135), FX16_CONST(0.9645897932898128), + FX16_CONST(0.2652340302855118), FX16_CONST(0.9641840639517458), + FX16_CONST(0.26671275747489837), FX16_CONST(0.9637760657954398), + FX16_CONST(0.2681908570634032), FX16_CONST(0.963365799780954), + FX16_CONST(0.2696683255729151), FX16_CONST(0.9629532668736839), + FX16_CONST(0.271145159526808), FX16_CONST(0.9625384680443592), + FX16_CONST(0.272621355449949), FX16_CONST(0.9621214042690416), + FX16_CONST(0.2740969098687064), FX16_CONST(0.9617020765291225), + FX16_CONST(0.27557181931095814), FX16_CONST(0.9612804858113206), + FX16_CONST(0.2770460803060999), FX16_CONST(0.9608566331076797), + FX16_CONST(0.27851968938505306), FX16_CONST(0.9604305194155658), + FX16_CONST(0.2799926430802732), FX16_CONST(0.960002145737666), + FX16_CONST(0.28146493792575794), FX16_CONST(0.9595715130819845), + FX16_CONST(0.2829365704570554), FX16_CONST(0.9591386224618419), + FX16_CONST(0.2844075372112719), FX16_CONST(0.9587034748958716), + FX16_CONST(0.2858778347270806), FX16_CONST(0.9582660714080177), + FX16_CONST(0.2873474595447295), FX16_CONST(0.9578264130275329), + FX16_CONST(0.2888164082060495), FX16_CONST(0.9573845007889759), + FX16_CONST(0.29028467725446233), FX16_CONST(0.9569403357322088), + FX16_CONST(0.29175226323498926), FX16_CONST(0.9564939189023951), + FX16_CONST(0.29321916269425863), FX16_CONST(0.9560452513499964), + FX16_CONST(0.2946853721805143), FX16_CONST(0.9555943341307711), + FX16_CONST(0.2961508882436238), FX16_CONST(0.9551411683057708), + FX16_CONST(0.2976157074350862), FX16_CONST(0.9546857549413383), + FX16_CONST(0.2990798263080405), FX16_CONST(0.9542280951091057), + FX16_CONST(0.30054324141727345), FX16_CONST(0.9537681898859903), + FX16_CONST(0.3020059493192281), FX16_CONST(0.9533060403541939), + FX16_CONST(0.3034679465720113), FX16_CONST(0.9528416476011987), + FX16_CONST(0.3049292297354024), FX16_CONST(0.9523750127197659), + FX16_CONST(0.3063897953708609), FX16_CONST(0.9519061368079323), + FX16_CONST(0.30784964004153487), FX16_CONST(0.9514350209690083), + FX16_CONST(0.3093087603122687), FX16_CONST(0.9509616663115751), + FX16_CONST(0.3107671527496115), FX16_CONST(0.9504860739494817), + FX16_CONST(0.3122248139218249), FX16_CONST(0.950008245001843), + FX16_CONST(0.3136817403988915), FX16_CONST(0.9495281805930367), + FX16_CONST(0.31513792875252244), FX16_CONST(0.9490458818527006), + FX16_CONST(0.31659337555616585), FX16_CONST(0.9485613499157303), + FX16_CONST(0.31804807738501495), FX16_CONST(0.9480745859222762), + FX16_CONST(0.3195020308160157), FX16_CONST(0.9475855910177411), + FX16_CONST(0.3209552324278752), FX16_CONST(0.9470943663527772), + FX16_CONST(0.32240767880106985), FX16_CONST(0.9466009130832835), + FX16_CONST(0.32385936651785285), FX16_CONST(0.9461052323704034), + FX16_CONST(0.3253102921622629), FX16_CONST(0.9456073253805213), + FX16_CONST(0.32676045232013173), FX16_CONST(0.9451071932852606), + FX16_CONST(0.3282098435790925), FX16_CONST(0.9446048372614803), + FX16_CONST(0.3296584625285875), FX16_CONST(0.9441002584912727), + FX16_CONST(0.33110630575987643), FX16_CONST(0.9435934581619604), + FX16_CONST(0.3325533698660442), FX16_CONST(0.9430844374660935), + FX16_CONST(0.3339996514420094), FX16_CONST(0.9425731976014469), + FX16_CONST(0.3354451470845316), FX16_CONST(0.9420597397710173), + FX16_CONST(0.33688985339222005), FX16_CONST(0.9415440651830208), + FX16_CONST(0.3383337669655411), FX16_CONST(0.9410261750508893), + FX16_CONST(0.33977688440682685), FX16_CONST(0.9405060705932683), + FX16_CONST(0.34121920232028236), FX16_CONST(0.939983753034014), + FX16_CONST(0.3426607173119944), FX16_CONST(0.9394592236021899), + FX16_CONST(0.3441014259899388), FX16_CONST(0.9389324835320646), + FX16_CONST(0.3455413249639891), FX16_CONST(0.9384035340631081), + FX16_CONST(0.3469804108459237), FX16_CONST(0.9378723764399899), + FX16_CONST(0.34841868024943456), FX16_CONST(0.937339011912575), + FX16_CONST(0.3498561297901349), FX16_CONST(0.9368034417359216), + FX16_CONST(0.3512927560855671), FX16_CONST(0.9362656671702783), + FX16_CONST(0.3527285557552107), FX16_CONST(0.9357256894810804), + FX16_CONST(0.35416352542049034), FX16_CONST(0.9351835099389476), + FX16_CONST(0.35559766170478385), FX16_CONST(0.9346391298196808), + FX16_CONST(0.35703096123343), FX16_CONST(0.9340925504042589), + FX16_CONST(0.35846342063373654), FX16_CONST(0.9335437729788362), + FX16_CONST(0.3598950365349881), FX16_CONST(0.932992798834739), + FX16_CONST(0.3613258055684543), FX16_CONST(0.9324396292684624), + FX16_CONST(0.3627557243673972), FX16_CONST(0.9318842655816681), + FX16_CONST(0.3641847895670799), FX16_CONST(0.9313267090811804), + FX16_CONST(0.36561299780477385), FX16_CONST(0.9307669610789837), + FX16_CONST(0.3670403457197672), FX16_CONST(0.9302050228922191), + FX16_CONST(0.3684668299533723), FX16_CONST(0.9296408958431812), + FX16_CONST(0.3698924471489341), FX16_CONST(0.9290745812593159), + FX16_CONST(0.37131719395183754), FX16_CONST(0.9285060804732156), + FX16_CONST(0.37274106700951576), FX16_CONST(0.9279353948226179), + FX16_CONST(0.37416406297145793), FX16_CONST(0.9273625256504011), + FX16_CONST(0.3755861784892172), FX16_CONST(0.9267874743045817), + FX16_CONST(0.37700741021641826), FX16_CONST(0.9262102421383114), + FX16_CONST(0.37842775480876556), FX16_CONST(0.9256308305098727), + FX16_CONST(0.37984720892405116), FX16_CONST(0.9250492407826776), + FX16_CONST(0.3812657692221624), FX16_CONST(0.9244654743252626), + FX16_CONST(0.3826834323650898), FX16_CONST(0.9238795325112867), + FX16_CONST(0.38410019501693504), FX16_CONST(0.9232914167195276), + FX16_CONST(0.38551605384391885), FX16_CONST(0.9227011283338786), + FX16_CONST(0.3869310055143886), FX16_CONST(0.9221086687433452), + FX16_CONST(0.38834504669882625), FX16_CONST(0.9215140393420419), + FX16_CONST(0.3897581740698564), FX16_CONST(0.9209172415291894), + FX16_CONST(0.39117038430225387), FX16_CONST(0.9203182767091106), + FX16_CONST(0.39258167407295147), FX16_CONST(0.9197171462912274), + FX16_CONST(0.3939920400610481), FX16_CONST(0.9191138516900578), + FX16_CONST(0.39540147894781635), FX16_CONST(0.9185083943252123), + FX16_CONST(0.3968099874167103), FX16_CONST(0.9179007756213905), + FX16_CONST(0.39821756215337356), FX16_CONST(0.9172909970083779), + FX16_CONST(0.3996241998456468), FX16_CONST(0.9166790599210427), + FX16_CONST(0.4010298971835756), FX16_CONST(0.9160649657993317), + FX16_CONST(0.40243465085941843), FX16_CONST(0.9154487160882678), + FX16_CONST(0.4038384575676541), FX16_CONST(0.9148303122379462), + FX16_CONST(0.40524131400498986), FX16_CONST(0.9142097557035307), + FX16_CONST(0.40664321687036903), FX16_CONST(0.9135870479452508), + FX16_CONST(0.4080441628649787), FX16_CONST(0.9129621904283982), + FX16_CONST(0.4094441486922576), FX16_CONST(0.9123351846233227), + FX16_CONST(0.4108431710579039), FX16_CONST(0.9117060320054299), + FX16_CONST(0.4122412266698829), FX16_CONST(0.9110747340551764), + FX16_CONST(0.4136383122384345), FX16_CONST(0.9104412922580672), + FX16_CONST(0.41503442447608163), FX16_CONST(0.9098057081046522), + FX16_CONST(0.41642956009763715), FX16_CONST(0.9091679830905224), + FX16_CONST(0.41782371582021227), FX16_CONST(0.9085281187163061), + FX16_CONST(0.4192168883632239), FX16_CONST(0.9078861164876663), + FX16_CONST(0.4206090744484025), FX16_CONST(0.9072419779152958), + FX16_CONST(0.4220002707997997), FX16_CONST(0.9065957045149153), + FX16_CONST(0.42339047414379605), FX16_CONST(0.9059472978072685), + FX16_CONST(0.4247796812091088), FX16_CONST(0.9052967593181188), + FX16_CONST(0.4261678887267996), FX16_CONST(0.9046440905782462), + FX16_CONST(0.4275550934302821), FX16_CONST(0.9039892931234433), + FX16_CONST(0.4289412920553295), FX16_CONST(0.9033323684945118), + FX16_CONST(0.4303264813400826), FX16_CONST(0.9026733182372588), + FX16_CONST(0.43171065802505726), FX16_CONST(0.9020121439024932), + FX16_CONST(0.43309381885315196), FX16_CONST(0.901348847046022), + FX16_CONST(0.43447596056965565), FX16_CONST(0.9006834292286469), + FX16_CONST(0.4358570799222555), FX16_CONST(0.9000158920161602), + FX16_CONST(0.4372371736610441), FX16_CONST(0.8993462369793416), + FX16_CONST(0.43861623853852766), FX16_CONST(0.8986744656939538), + FX16_CONST(0.43999427130963326), FX16_CONST(0.8980005797407399), + FX16_CONST(0.44137126873171667), FX16_CONST(0.8973245807054183), + FX16_CONST(0.44274722756457), FX16_CONST(0.8966464701786802), + FX16_CONST(0.4441221445704292), FX16_CONST(0.8959662497561852), + FX16_CONST(0.44549601651398174), FX16_CONST(0.8952839210385576), + FX16_CONST(0.44686884016237416), FX16_CONST(0.8945994856313827), + FX16_CONST(0.4482406122852199), FX16_CONST(0.8939129451452033), + FX16_CONST(0.44961132965460654), FX16_CONST(0.8932243011955153), + FX16_CONST(0.45098098904510386), FX16_CONST(0.8925335554027646), + FX16_CONST(0.4523495872337709), FX16_CONST(0.8918407093923427), + FX16_CONST(0.45371712100016387), FX16_CONST(0.8911457647945832), + FX16_CONST(0.45508358712634384), FX16_CONST(0.8904487232447579), + FX16_CONST(0.4564489823968839), FX16_CONST(0.8897495863830728), + FX16_CONST(0.4578133035988772), FX16_CONST(0.8890483558546646), + FX16_CONST(0.4591765475219441), FX16_CONST(0.8883450333095964), + FX16_CONST(0.46053871095824), FX16_CONST(0.8876396204028539), + FX16_CONST(0.46189979070246273), FX16_CONST(0.8869321187943422), + FX16_CONST(0.46325978355186015), FX16_CONST(0.8862225301488806), + FX16_CONST(0.4646186863062378), FX16_CONST(0.8855108561362), + FX16_CONST(0.4659764957679662), FX16_CONST(0.8847970984309378), + FX16_CONST(0.4673332087419884), FX16_CONST(0.884081258712635), + FX16_CONST(0.4686888220358279), FX16_CONST(0.8833633386657316), + FX16_CONST(0.4700433324595956), FX16_CONST(0.8826433399795628), + FX16_CONST(0.47139673682599764), FX16_CONST(0.881921264348355), + FX16_CONST(0.4727490319503428), FX16_CONST(0.8811971134712221), + FX16_CONST(0.47410021465054997), FX16_CONST(0.8804708890521608), + FX16_CONST(0.47545028174715587), FX16_CONST(0.8797425928000474), + FX16_CONST(0.4767992300633221), FX16_CONST(0.8790122264286335), + FX16_CONST(0.478147056424843), FX16_CONST(0.8782797916565416), + FX16_CONST(0.47949375766015295), FX16_CONST(0.8775452902072614), + FX16_CONST(0.48083933060033396), FX16_CONST(0.8768087238091457), + FX16_CONST(0.4821837720791227), FX16_CONST(0.8760700941954066), + FX16_CONST(0.4835270789329187), FX16_CONST(0.8753294031041109), + FX16_CONST(0.48486924800079106), FX16_CONST(0.8745866522781761), + FX16_CONST(0.4862102761244864), FX16_CONST(0.8738418434653669), + FX16_CONST(0.487550160148436), FX16_CONST(0.8730949784182901), + FX16_CONST(0.48888889691976317), FX16_CONST(0.8723460588943915), + FX16_CONST(0.49022648328829116), FX16_CONST(0.871595086655951), + FX16_CONST(0.4915629161065499), FX16_CONST(0.870842063470079), + FX16_CONST(0.49289819222978404), FX16_CONST(0.8700869911087115), + FX16_CONST(0.4942323085159597), FX16_CONST(0.8693298713486068), + FX16_CONST(0.49556526182577254), FX16_CONST(0.8685707059713409), + FX16_CONST(0.49689704902265447), FX16_CONST(0.8678094967633033), + FX16_CONST(0.4982276669727818), FX16_CONST(0.8670462455156926), + FX16_CONST(0.49955711254508184), FX16_CONST(0.866280954024513), + FX16_CONST(0.5008853826112407), FX16_CONST(0.8655136240905691), + FX16_CONST(0.5022124740457108), FX16_CONST(0.8647442575194624), + FX16_CONST(0.5035383837257176), FX16_CONST(0.8639728561215867), + FX16_CONST(0.5048631085312676), FX16_CONST(0.8631994217121242), + FX16_CONST(0.5061866453451552), FX16_CONST(0.8624239561110405), + FX16_CONST(0.5075089910529709), FX16_CONST(0.8616464611430813), + FX16_CONST(0.508830142543107), FX16_CONST(0.8608669386377673), + FX16_CONST(0.5101500967067668), FX16_CONST(0.8600853904293901), + FX16_CONST(0.5114688504379703), FX16_CONST(0.8593018183570085), + FX16_CONST(0.512786400633563), FX16_CONST(0.8585162242644427), + FX16_CONST(0.5141027441932217), FX16_CONST(0.8577286100002721), + FX16_CONST(0.5154178780194629), FX16_CONST(0.8569389774178288), + FX16_CONST(0.5167317990176499), FX16_CONST(0.8561473283751945), + FX16_CONST(0.5180445040959993), FX16_CONST(0.855353664735196), + FX16_CONST(0.5193559901655896), FX16_CONST(0.8545579883654005), + FX16_CONST(0.5206662541403672), FX16_CONST(0.8537603011381114), + FX16_CONST(0.5219752929371544), FX16_CONST(0.8529606049303636), + FX16_CONST(0.5232831034756564), FX16_CONST(0.8521589016239198), + FX16_CONST(0.524589682678469), FX16_CONST(0.8513551931052652), + FX16_CONST(0.5258950274710846), FX16_CONST(0.8505494812656035), + FX16_CONST(0.5271991347819013), FX16_CONST(0.8497417680008525), + FX16_CONST(0.5285020015422285), FX16_CONST(0.8489320552116396), + FX16_CONST(0.5298036246862946), FX16_CONST(0.8481203448032972), + FX16_CONST(0.531104001151255), FX16_CONST(0.8473066386858583), + FX16_CONST(0.5324031278771979), FX16_CONST(0.8464909387740521), + FX16_CONST(0.533701001807153), FX16_CONST(0.8456732469872991), + FX16_CONST(0.5349976198870972), FX16_CONST(0.8448535652497071), + FX16_CONST(0.5362929790659632), FX16_CONST(0.8440318954900664), + FX16_CONST(0.5375870762956454), FX16_CONST(0.8432082396418454), + FX16_CONST(0.5388799085310084), FX16_CONST(0.8423825996431858), + FX16_CONST(0.5401714727298929), FX16_CONST(0.8415549774368984), + FX16_CONST(0.5414617658531234), FX16_CONST(0.8407253749704581), + FX16_CONST(0.5427507848645159), FX16_CONST(0.8398937941959995), + FX16_CONST(0.5440385267308838), FX16_CONST(0.8390602370703127), + FX16_CONST(0.5453249884220465), FX16_CONST(0.8382247055548381), + FX16_CONST(0.5466101669108349), FX16_CONST(0.8373872016156619), + FX16_CONST(0.5478940591731002), FX16_CONST(0.836547727223512), + FX16_CONST(0.5491766621877197), FX16_CONST(0.8357062843537526), + FX16_CONST(0.5504579729366048), FX16_CONST(0.83486287498638), + FX16_CONST(0.5517379884047073), FX16_CONST(0.8340175011060181), + FX16_CONST(0.5530167055800275), FX16_CONST(0.8331701647019132), + FX16_CONST(0.55429412145362), FX16_CONST(0.8323208677679297), + FX16_CONST(0.5555702330196022), FX16_CONST(0.8314696123025452), + FX16_CONST(0.5568450372751601), FX16_CONST(0.8306164003088463), + FX16_CONST(0.5581185312205561), FX16_CONST(0.829761233794523), + FX16_CONST(0.5593907118591361), FX16_CONST(0.8289041147718649), + FX16_CONST(0.560661576197336), FX16_CONST(0.8280450452577558), + FX16_CONST(0.5619311212446894), FX16_CONST(0.8271840272736691), + FX16_CONST(0.5631993440138341), FX16_CONST(0.8263210628456635), + FX16_CONST(0.5644662415205194), FX16_CONST(0.8254561540043776), + FX16_CONST(0.5657318107836131), FX16_CONST(0.8245893027850253), + FX16_CONST(0.5669960488251087), FX16_CONST(0.8237205112273914), + FX16_CONST(0.5682589526701315), FX16_CONST(0.8228497813758264), + FX16_CONST(0.5695205193469471), FX16_CONST(0.8219771152792416), + FX16_CONST(0.5707807458869673), FX16_CONST(0.8211025149911046), + FX16_CONST(0.572039629324757), FX16_CONST(0.8202259825694347), + FX16_CONST(0.5732971666980422), FX16_CONST(0.819347520076797), + FX16_CONST(0.5745533550477158), FX16_CONST(0.8184671295802987), + FX16_CONST(0.5758081914178453), FX16_CONST(0.8175848131515837), + FX16_CONST(0.5770616728556794), FX16_CONST(0.8167005728668278), + FX16_CONST(0.5783137964116556), FX16_CONST(0.8158144108067338), + FX16_CONST(0.5795645591394056), FX16_CONST(0.8149263290565266), + FX16_CONST(0.5808139580957645), FX16_CONST(0.8140363297059484), + FX16_CONST(0.5820619903407754), FX16_CONST(0.8131444148492536), + FX16_CONST(0.5833086529376983), FX16_CONST(0.812250586585204), + FX16_CONST(0.5845539429530153), FX16_CONST(0.8113548470170637), + FX16_CONST(0.5857978574564389), FX16_CONST(0.8104571982525948), + FX16_CONST(0.587040393520918), FX16_CONST(0.8095576424040513), + FX16_CONST(0.5882815482226452), FX16_CONST(0.808656181588175), + FX16_CONST(0.5895213186410639), FX16_CONST(0.8077528179261904), + FX16_CONST(0.5907597018588742), FX16_CONST(0.8068475535437993), + FX16_CONST(0.591996694962041), FX16_CONST(0.8059403905711763), + FX16_CONST(0.5932322950397998), FX16_CONST(0.8050313311429637), + FX16_CONST(0.5944664991846644), FX16_CONST(0.8041203773982657), + FX16_CONST(0.5956993044924334), FX16_CONST(0.8032075314806449), + FX16_CONST(0.5969307080621964), FX16_CONST(0.8022927955381157), + FX16_CONST(0.5981607069963424), FX16_CONST(0.8013761717231402), + FX16_CONST(0.5993892984005645), FX16_CONST(0.8004576621926228), + FX16_CONST(0.600616479383869), FX16_CONST(0.799537269107905), + FX16_CONST(0.60184224705858), FX16_CONST(0.7986149946347609), + FX16_CONST(0.6030665985403482), FX16_CONST(0.7976908409433912), + FX16_CONST(0.604289530948156), FX16_CONST(0.7967648102084188), + FX16_CONST(0.6055110414043255), FX16_CONST(0.7958369046088836), + FX16_CONST(0.6067311270345245), FX16_CONST(0.794907126328237), + FX16_CONST(0.6079497849677736), FX16_CONST(0.7939754775543372), + FX16_CONST(0.6091670123364532), FX16_CONST(0.7930419604794436), + FX16_CONST(0.6103828062763095), FX16_CONST(0.7921065773002124), + FX16_CONST(0.6115971639264619), FX16_CONST(0.7911693302176902), + FX16_CONST(0.6128100824294097), FX16_CONST(0.79023022143731), + FX16_CONST(0.6140215589310385), FX16_CONST(0.7892892531688857), + FX16_CONST(0.6152315905806268), FX16_CONST(0.7883464276266062), + FX16_CONST(0.6164401745308536), FX16_CONST(0.7874017470290314), + FX16_CONST(0.6176473079378039), FX16_CONST(0.7864552135990858), + FX16_CONST(0.6188529879609763), FX16_CONST(0.7855068295640539), + FX16_CONST(0.6200572117632891), FX16_CONST(0.7845565971555752), + FX16_CONST(0.6212599765110876), FX16_CONST(0.7836045186096382), + FX16_CONST(0.62246127937415), FX16_CONST(0.7826505961665757), + FX16_CONST(0.6236611175256945), FX16_CONST(0.7816948320710594), + FX16_CONST(0.6248594881423863), FX16_CONST(0.7807372285720945), + FX16_CONST(0.6260563884043435), FX16_CONST(0.7797777879230146), + FX16_CONST(0.6272518154951441), FX16_CONST(0.778816512381476), + FX16_CONST(0.6284457666018327), FX16_CONST(0.7778534042094531), + FX16_CONST(0.629638238914927), FX16_CONST(0.7768884656732324), + FX16_CONST(0.6308292296284245), FX16_CONST(0.7759216990434077), + FX16_CONST(0.6320187359398091), FX16_CONST(0.7749531065948739), + FX16_CONST(0.6332067550500572), FX16_CONST(0.7739826906068229), + FX16_CONST(0.6343932841636455), FX16_CONST(0.773010453362737), + FX16_CONST(0.6355783204885561), FX16_CONST(0.7720363971503845), + FX16_CONST(0.6367618612362842), FX16_CONST(0.7710605242618138), + FX16_CONST(0.637943903621844), FX16_CONST(0.7700828369933479), + FX16_CONST(0.6391244448637757), FX16_CONST(0.7691033376455797), + FX16_CONST(0.6403034821841517), FX16_CONST(0.7681220285233654), + FX16_CONST(0.641481012808583), FX16_CONST(0.7671389119358204), + FX16_CONST(0.6426570339662269), FX16_CONST(0.7661539901963129), + FX16_CONST(0.6438315428897914), FX16_CONST(0.765167265622459), + FX16_CONST(0.6450045368155439), FX16_CONST(0.7641787405361167), + FX16_CONST(0.6461760129833163), FX16_CONST(0.7631884172633814), + FX16_CONST(0.6473459686365121), FX16_CONST(0.762196298134579), + FX16_CONST(0.6485144010221124), FX16_CONST(0.7612023854842618), + FX16_CONST(0.6496813073906832), FX16_CONST(0.7602066816512024), + FX16_CONST(0.6508466849963809), FX16_CONST(0.759209188978388), + FX16_CONST(0.6520105310969595), FX16_CONST(0.7582099098130153), + FX16_CONST(0.6531728429537768), FX16_CONST(0.7572088465064846), + FX16_CONST(0.6543336178318004), FX16_CONST(0.7562060014143945), + FX16_CONST(0.6554928529996153), FX16_CONST(0.7552013768965365), + FX16_CONST(0.6566505457294289), FX16_CONST(0.7541949753168892), + FX16_CONST(0.6578066932970786), FX16_CONST(0.7531867990436125), + FX16_CONST(0.6589612929820373), FX16_CONST(0.7521768504490427), + FX16_CONST(0.6601143420674205), FX16_CONST(0.7511651319096864), + FX16_CONST(0.6612658378399923), FX16_CONST(0.7501516458062151), + FX16_CONST(0.6624157775901718), FX16_CONST(0.7491363945234594), + FX16_CONST(0.6635641586120398), FX16_CONST(0.7481193804504036), + FX16_CONST(0.6647109782033448), FX16_CONST(0.7471006059801801), + FX16_CONST(0.6658562336655097), FX16_CONST(0.7460800735100638), + FX16_CONST(0.6669999223036375), FX16_CONST(0.745057785441466), + FX16_CONST(0.6681420414265185), FX16_CONST(0.7440337441799293), + FX16_CONST(0.669282588346636), FX16_CONST(0.7430079521351217), + FX16_CONST(0.6704215603801731), FX16_CONST(0.7419804117208311), + FX16_CONST(0.6715589548470183), FX16_CONST(0.7409511253549592), + FX16_CONST(0.6726947690707729), FX16_CONST(0.7399200954595162), + FX16_CONST(0.673829000378756), FX16_CONST(0.7388873244606151), + FX16_CONST(0.6749616461020119), FX16_CONST(0.737852814788466), + FX16_CONST(0.6760927035753159), FX16_CONST(0.7368165688773698), + FX16_CONST(0.6772221701371803), FX16_CONST(0.7357785891657136), + FX16_CONST(0.6783500431298615), FX16_CONST(0.7347388780959635), + FX16_CONST(0.679476319899365), FX16_CONST(0.7336974381146603), + FX16_CONST(0.680600997795453), FX16_CONST(0.7326542716724128), + FX16_CONST(0.6817240741716497), FX16_CONST(0.7316093812238926), + FX16_CONST(0.6828455463852481), FX16_CONST(0.7305627692278276), + FX16_CONST(0.6839654117973154), FX16_CONST(0.729514438146997), + FX16_CONST(0.6850836677727004), FX16_CONST(0.7284643904482252), + FX16_CONST(0.6862003116800386), FX16_CONST(0.7274126286023758), + FX16_CONST(0.687315340891759), FX16_CONST(0.726359155084346), + FX16_CONST(0.6884287527840904), FX16_CONST(0.7253039723730608), + FX16_CONST(0.6895405447370668), FX16_CONST(0.724247082951467), + FX16_CONST(0.6906507141345346), FX16_CONST(0.7231884893065275), + FX16_CONST(0.6917592583641577), FX16_CONST(0.7221281939292153), + FX16_CONST(0.6928661748174246), FX16_CONST(0.7210661993145081), + FX16_CONST(0.6939714608896539), FX16_CONST(0.7200025079613817), + FX16_CONST(0.6950751139800009), FX16_CONST(0.7189371223728045), + FX16_CONST(0.696177131491463), FX16_CONST(0.7178700450557317), + FX16_CONST(0.6972775108308865), FX16_CONST(0.7168012785210995), + FX16_CONST(0.6983762494089728), FX16_CONST(0.7157308252838187), + FX16_CONST(0.6994733446402838), FX16_CONST(0.7146586878627691), + FX16_CONST(0.7005687939432483), FX16_CONST(0.7135848687807935), + FX16_CONST(0.7016625947401685), FX16_CONST(0.7125093705646924), + FX16_CONST(0.7027547444572253), FX16_CONST(0.7114321957452164), + FX16_CONST(0.7038452405244849), FX16_CONST(0.7103533468570624), + FX16_CONST(0.7049340803759049), FX16_CONST(0.7092728264388657), + FX16_CONST(0.7060212614493397), FX16_CONST(0.7081906370331954), + FX16_CONST(0.7071067811865476), FX16_CONST(0.7071067811865476), + FX16_CONST(0.7081906370331954), FX16_CONST(0.7060212614493397), + FX16_CONST(0.7092728264388657), FX16_CONST(0.704934080375905), + FX16_CONST(0.7103533468570624), FX16_CONST(0.7038452405244849), + FX16_CONST(0.7114321957452164), FX16_CONST(0.7027547444572253), + FX16_CONST(0.7125093705646923), FX16_CONST(0.7016625947401685), + FX16_CONST(0.7135848687807935), FX16_CONST(0.7005687939432484), + FX16_CONST(0.7146586878627691), FX16_CONST(0.6994733446402838), + FX16_CONST(0.7157308252838186), FX16_CONST(0.6983762494089729), + FX16_CONST(0.7168012785210994), FX16_CONST(0.6972775108308866), + FX16_CONST(0.7178700450557317), FX16_CONST(0.696177131491463), + FX16_CONST(0.7189371223728044), FX16_CONST(0.6950751139800009), + FX16_CONST(0.7200025079613817), FX16_CONST(0.693971460889654), + FX16_CONST(0.7210661993145081), FX16_CONST(0.6928661748174247), + FX16_CONST(0.7221281939292153), FX16_CONST(0.6917592583641577), + FX16_CONST(0.7231884893065273), FX16_CONST(0.6906507141345346), + FX16_CONST(0.7242470829514669), FX16_CONST(0.6895405447370669), + FX16_CONST(0.7253039723730608), FX16_CONST(0.6884287527840904), + FX16_CONST(0.726359155084346), FX16_CONST(0.687315340891759), + FX16_CONST(0.7274126286023758), FX16_CONST(0.6862003116800386), + FX16_CONST(0.7284643904482252), FX16_CONST(0.6850836677727004), + FX16_CONST(0.7295144381469969), FX16_CONST(0.6839654117973155), + FX16_CONST(0.7305627692278276), FX16_CONST(0.6828455463852481), + FX16_CONST(0.7316093812238926), FX16_CONST(0.6817240741716498), + FX16_CONST(0.7326542716724128), FX16_CONST(0.680600997795453), + FX16_CONST(0.7336974381146603), FX16_CONST(0.679476319899365), + FX16_CONST(0.7347388780959635), FX16_CONST(0.6783500431298615), + FX16_CONST(0.7357785891657135), FX16_CONST(0.6772221701371804), + FX16_CONST(0.7368165688773698), FX16_CONST(0.676092703575316), + FX16_CONST(0.737852814788466), FX16_CONST(0.674961646102012), + FX16_CONST(0.7388873244606151), FX16_CONST(0.6738290003787561), + FX16_CONST(0.7399200954595161), FX16_CONST(0.672694769070773), + FX16_CONST(0.7409511253549591), FX16_CONST(0.6715589548470183), + FX16_CONST(0.741980411720831), FX16_CONST(0.6704215603801731), + FX16_CONST(0.7430079521351217), FX16_CONST(0.669282588346636), + FX16_CONST(0.7440337441799293), FX16_CONST(0.6681420414265186), + FX16_CONST(0.745057785441466), FX16_CONST(0.6669999223036375), + FX16_CONST(0.7460800735100637), FX16_CONST(0.6658562336655097), + FX16_CONST(0.7471006059801801), FX16_CONST(0.6647109782033449), + FX16_CONST(0.7481193804504035), FX16_CONST(0.6635641586120399), + FX16_CONST(0.7491363945234593), FX16_CONST(0.6624157775901718), + FX16_CONST(0.750151645806215), FX16_CONST(0.6612658378399923), + FX16_CONST(0.7511651319096864), FX16_CONST(0.6601143420674205), + FX16_CONST(0.7521768504490427), FX16_CONST(0.6589612929820373), + FX16_CONST(0.7531867990436125), FX16_CONST(0.6578066932970787), + FX16_CONST(0.7541949753168892), FX16_CONST(0.656650545729429), + FX16_CONST(0.7552013768965365), FX16_CONST(0.6554928529996155), + FX16_CONST(0.7562060014143945), FX16_CONST(0.6543336178318006), + FX16_CONST(0.7572088465064846), FX16_CONST(0.6531728429537769), + FX16_CONST(0.7582099098130153), FX16_CONST(0.6520105310969595), + FX16_CONST(0.759209188978388), FX16_CONST(0.650846684996381), + FX16_CONST(0.7602066816512024), FX16_CONST(0.6496813073906832), + FX16_CONST(0.7612023854842618), FX16_CONST(0.6485144010221126), + FX16_CONST(0.7621962981345789), FX16_CONST(0.6473459686365121), + FX16_CONST(0.7631884172633813), FX16_CONST(0.6461760129833164), + FX16_CONST(0.7641787405361167), FX16_CONST(0.645004536815544), + FX16_CONST(0.765167265622459), FX16_CONST(0.6438315428897915), + FX16_CONST(0.7661539901963128), FX16_CONST(0.6426570339662269), + FX16_CONST(0.7671389119358204), FX16_CONST(0.6414810128085832), + FX16_CONST(0.7681220285233653), FX16_CONST(0.6403034821841517), + FX16_CONST(0.7691033376455796), FX16_CONST(0.6391244448637757), + FX16_CONST(0.7700828369933479), FX16_CONST(0.6379439036218442), + FX16_CONST(0.7710605242618138), FX16_CONST(0.6367618612362842), + FX16_CONST(0.7720363971503844), FX16_CONST(0.6355783204885562), + FX16_CONST(0.7730104533627369), FX16_CONST(0.6343932841636455), + FX16_CONST(0.7739826906068228), FX16_CONST(0.6332067550500572), + FX16_CONST(0.7749531065948738), FX16_CONST(0.6320187359398091), + FX16_CONST(0.7759216990434076), FX16_CONST(0.6308292296284246), + FX16_CONST(0.7768884656732324), FX16_CONST(0.6296382389149271), + FX16_CONST(0.777853404209453), FX16_CONST(0.6284457666018327), + FX16_CONST(0.7788165123814759), FX16_CONST(0.6272518154951442), + FX16_CONST(0.7797777879230144), FX16_CONST(0.6260563884043435), + FX16_CONST(0.7807372285720945), FX16_CONST(0.6248594881423865), + FX16_CONST(0.7816948320710594), FX16_CONST(0.6236611175256946), + FX16_CONST(0.7826505961665757), FX16_CONST(0.6224612793741501), + FX16_CONST(0.7836045186096382), FX16_CONST(0.6212599765110877), + FX16_CONST(0.7845565971555752), FX16_CONST(0.6200572117632892), + FX16_CONST(0.7855068295640539), FX16_CONST(0.6188529879609763), + FX16_CONST(0.7864552135990858), FX16_CONST(0.617647307937804), + FX16_CONST(0.7874017470290313), FX16_CONST(0.6164401745308536), + FX16_CONST(0.7883464276266062), FX16_CONST(0.6152315905806268), + FX16_CONST(0.7892892531688857), FX16_CONST(0.6140215589310385), + FX16_CONST(0.79023022143731), FX16_CONST(0.6128100824294097), + FX16_CONST(0.7911693302176901), FX16_CONST(0.611597163926462), + FX16_CONST(0.7921065773002123), FX16_CONST(0.6103828062763095), + FX16_CONST(0.7930419604794436), FX16_CONST(0.6091670123364532), + FX16_CONST(0.7939754775543372), FX16_CONST(0.6079497849677737), + FX16_CONST(0.794907126328237), FX16_CONST(0.6067311270345245), + FX16_CONST(0.7958369046088835), FX16_CONST(0.6055110414043255), + FX16_CONST(0.7967648102084187), FX16_CONST(0.6042895309481561), + FX16_CONST(0.797690840943391), FX16_CONST(0.6030665985403483), + FX16_CONST(0.7986149946347608), FX16_CONST(0.60184224705858), + FX16_CONST(0.799537269107905), FX16_CONST(0.600616479383869), + FX16_CONST(0.8004576621926227), FX16_CONST(0.5993892984005645), + FX16_CONST(0.8013761717231401), FX16_CONST(0.5981607069963424), + FX16_CONST(0.8022927955381157), FX16_CONST(0.5969307080621965), + FX16_CONST(0.8032075314806448), FX16_CONST(0.5956993044924335), + FX16_CONST(0.8041203773982657), FX16_CONST(0.5944664991846645), + FX16_CONST(0.8050313311429637), FX16_CONST(0.5932322950397998), + FX16_CONST(0.8059403905711763), FX16_CONST(0.591996694962041), + FX16_CONST(0.8068475535437992), FX16_CONST(0.5907597018588743), + FX16_CONST(0.8077528179261902), FX16_CONST(0.5895213186410639), + FX16_CONST(0.808656181588175), FX16_CONST(0.5882815482226453), + FX16_CONST(0.8095576424040513), FX16_CONST(0.5870403935209181), + FX16_CONST(0.8104571982525948), FX16_CONST(0.5857978574564389), + FX16_CONST(0.8113548470170637), FX16_CONST(0.5845539429530153), + FX16_CONST(0.8122505865852039), FX16_CONST(0.5833086529376983), + FX16_CONST(0.8131444148492536), FX16_CONST(0.5820619903407755), + FX16_CONST(0.8140363297059483), FX16_CONST(0.5808139580957645), + FX16_CONST(0.8149263290565266), FX16_CONST(0.5795645591394057), + FX16_CONST(0.8158144108067338), FX16_CONST(0.5783137964116556), + FX16_CONST(0.8167005728668278), FX16_CONST(0.5770616728556796), + FX16_CONST(0.8175848131515837), FX16_CONST(0.5758081914178453), + FX16_CONST(0.8184671295802987), FX16_CONST(0.5745533550477158), + FX16_CONST(0.8193475200767969), FX16_CONST(0.5732971666980423), + FX16_CONST(0.8202259825694347), FX16_CONST(0.572039629324757), + FX16_CONST(0.8211025149911046), FX16_CONST(0.5707807458869674), + FX16_CONST(0.8219771152792416), FX16_CONST(0.5695205193469473), + FX16_CONST(0.8228497813758263), FX16_CONST(0.5682589526701315), + FX16_CONST(0.8237205112273913), FX16_CONST(0.5669960488251087), + FX16_CONST(0.8245893027850253), FX16_CONST(0.5657318107836132), + FX16_CONST(0.8254561540043774), FX16_CONST(0.5644662415205195), + FX16_CONST(0.8263210628456635), FX16_CONST(0.5631993440138341), + FX16_CONST(0.8271840272736691), FX16_CONST(0.5619311212446895), + FX16_CONST(0.8280450452577558), FX16_CONST(0.560661576197336), + FX16_CONST(0.8289041147718649), FX16_CONST(0.5593907118591361), + FX16_CONST(0.829761233794523), FX16_CONST(0.5581185312205561), + FX16_CONST(0.8306164003088462), FX16_CONST(0.5568450372751601), + FX16_CONST(0.8314696123025452), FX16_CONST(0.5555702330196023), + FX16_CONST(0.8323208677679297), FX16_CONST(0.5542941214536201), + FX16_CONST(0.8331701647019132), FX16_CONST(0.5530167055800276), + FX16_CONST(0.8340175011060181), FX16_CONST(0.5517379884047074), + FX16_CONST(0.83486287498638), FX16_CONST(0.5504579729366048), + FX16_CONST(0.8357062843537526), FX16_CONST(0.5491766621877198), + FX16_CONST(0.8365477272235119), FX16_CONST(0.5478940591731002), + FX16_CONST(0.8373872016156619), FX16_CONST(0.5466101669108349), + FX16_CONST(0.838224705554838), FX16_CONST(0.5453249884220465), + FX16_CONST(0.8390602370703126), FX16_CONST(0.5440385267308839), + FX16_CONST(0.8398937941959994), FX16_CONST(0.542750784864516), + FX16_CONST(0.840725374970458), FX16_CONST(0.5414617658531236), + FX16_CONST(0.8415549774368983), FX16_CONST(0.540171472729893), + FX16_CONST(0.8423825996431858), FX16_CONST(0.5388799085310084), + FX16_CONST(0.8432082396418454), FX16_CONST(0.5375870762956455), + FX16_CONST(0.8440318954900664), FX16_CONST(0.5362929790659632), + FX16_CONST(0.844853565249707), FX16_CONST(0.5349976198870973), + FX16_CONST(0.8456732469872991), FX16_CONST(0.533701001807153), + FX16_CONST(0.8464909387740521), FX16_CONST(0.532403127877198), + FX16_CONST(0.8473066386858583), FX16_CONST(0.531104001151255), + FX16_CONST(0.8481203448032971), FX16_CONST(0.5298036246862948), + FX16_CONST(0.8489320552116396), FX16_CONST(0.5285020015422285), + FX16_CONST(0.8497417680008524), FX16_CONST(0.5271991347819014), + FX16_CONST(0.8505494812656034), FX16_CONST(0.5258950274710847), + FX16_CONST(0.8513551931052652), FX16_CONST(0.5245896826784688), + FX16_CONST(0.8521589016239198), FX16_CONST(0.5232831034756564), + FX16_CONST(0.8529606049303636), FX16_CONST(0.5219752929371544), + FX16_CONST(0.8537603011381113), FX16_CONST(0.5206662541403673), + FX16_CONST(0.8545579883654005), FX16_CONST(0.5193559901655895), + FX16_CONST(0.855353664735196), FX16_CONST(0.5180445040959993), + FX16_CONST(0.8561473283751945), FX16_CONST(0.51673179901765), + FX16_CONST(0.8569389774178287), FX16_CONST(0.5154178780194631), + FX16_CONST(0.8577286100002721), FX16_CONST(0.5141027441932217), + FX16_CONST(0.8585162242644427), FX16_CONST(0.5127864006335631), + FX16_CONST(0.8593018183570084), FX16_CONST(0.5114688504379705), + FX16_CONST(0.8600853904293903), FX16_CONST(0.5101500967067667), + FX16_CONST(0.8608669386377673), FX16_CONST(0.508830142543107), + FX16_CONST(0.8616464611430813), FX16_CONST(0.5075089910529709), + FX16_CONST(0.8624239561110405), FX16_CONST(0.5061866453451553), + FX16_CONST(0.8631994217121242), FX16_CONST(0.5048631085312675), + FX16_CONST(0.8639728561215867), FX16_CONST(0.5035383837257176), + FX16_CONST(0.8647442575194624), FX16_CONST(0.5022124740457109), + FX16_CONST(0.865513624090569), FX16_CONST(0.5008853826112409), + FX16_CONST(0.866280954024513), FX16_CONST(0.49955711254508184), + FX16_CONST(0.8670462455156926), FX16_CONST(0.49822766697278187), + FX16_CONST(0.8678094967633032), FX16_CONST(0.49689704902265464), + FX16_CONST(0.8685707059713409), FX16_CONST(0.4955652618257725), + FX16_CONST(0.8693298713486067), FX16_CONST(0.49423230851595973), + FX16_CONST(0.8700869911087113), FX16_CONST(0.4928981922297841), + FX16_CONST(0.8708420634700789), FX16_CONST(0.49156291610655006), + FX16_CONST(0.8715950866559511), FX16_CONST(0.4902264832882911), + FX16_CONST(0.8723460588943914), FX16_CONST(0.4888888969197632), + FX16_CONST(0.8730949784182901), FX16_CONST(0.48755016014843605), + FX16_CONST(0.8738418434653668), FX16_CONST(0.48621027612448653), + FX16_CONST(0.8745866522781761), FX16_CONST(0.4848692480007911), + FX16_CONST(0.8753294031041108), FX16_CONST(0.48352707893291874), + FX16_CONST(0.8760700941954066), FX16_CONST(0.48218377207912283), + FX16_CONST(0.8768087238091458), FX16_CONST(0.4808393306003339), + FX16_CONST(0.8775452902072612), FX16_CONST(0.479493757660153), + FX16_CONST(0.8782797916565415), FX16_CONST(0.4781470564248431), + FX16_CONST(0.8790122264286334), FX16_CONST(0.47679923006332225), + FX16_CONST(0.8797425928000474), FX16_CONST(0.47545028174715587), + FX16_CONST(0.8804708890521608), FX16_CONST(0.47410021465055), + FX16_CONST(0.881197113471222), FX16_CONST(0.4727490319503429), + FX16_CONST(0.8819212643483549), FX16_CONST(0.4713967368259978), + FX16_CONST(0.8826433399795628), FX16_CONST(0.4700433324595956), + FX16_CONST(0.8833633386657316), FX16_CONST(0.46868882203582796), + FX16_CONST(0.884081258712635), FX16_CONST(0.4673332087419885), + FX16_CONST(0.8847970984309378), FX16_CONST(0.4659764957679661), + FX16_CONST(0.8855108561362), FX16_CONST(0.4646186863062378), + FX16_CONST(0.8862225301488806), FX16_CONST(0.46325978355186026), + FX16_CONST(0.8869321187943421), FX16_CONST(0.46189979070246284), + FX16_CONST(0.8876396204028539), FX16_CONST(0.46053871095824), + FX16_CONST(0.8883450333095964), FX16_CONST(0.45917654752194415), + FX16_CONST(0.8890483558546646), FX16_CONST(0.4578133035988773), + FX16_CONST(0.8897495863830729), FX16_CONST(0.45644898239688386), + FX16_CONST(0.8904487232447579), FX16_CONST(0.45508358712634384), + FX16_CONST(0.8911457647945832), FX16_CONST(0.4537171210001639), + FX16_CONST(0.8918407093923427), FX16_CONST(0.452349587233771), + FX16_CONST(0.8925335554027647), FX16_CONST(0.4509809890451038), + FX16_CONST(0.8932243011955153), FX16_CONST(0.4496113296546066), + FX16_CONST(0.8939129451452033), FX16_CONST(0.44824061228522), + FX16_CONST(0.8945994856313826), FX16_CONST(0.4468688401623743), + FX16_CONST(0.8952839210385576), FX16_CONST(0.44549601651398174), + FX16_CONST(0.8959662497561851), FX16_CONST(0.44412214457042926), + FX16_CONST(0.8966464701786802), FX16_CONST(0.44274722756457013), + FX16_CONST(0.8973245807054183), FX16_CONST(0.4413712687317166), + FX16_CONST(0.8980005797407399), FX16_CONST(0.43999427130963326), + FX16_CONST(0.8986744656939538), FX16_CONST(0.4386162385385277), + FX16_CONST(0.8993462369793415), FX16_CONST(0.4372371736610442), + FX16_CONST(0.9000158920161603), FX16_CONST(0.4358570799222555), + FX16_CONST(0.9006834292286469), FX16_CONST(0.4344759605696557), + FX16_CONST(0.901348847046022), FX16_CONST(0.433093818853152), + FX16_CONST(0.9020121439024931), FX16_CONST(0.43171065802505737), + FX16_CONST(0.9026733182372588), FX16_CONST(0.4303264813400826), + FX16_CONST(0.9033323684945118), FX16_CONST(0.42894129205532955), + FX16_CONST(0.9039892931234433), FX16_CONST(0.4275550934302822), + FX16_CONST(0.9046440905782462), FX16_CONST(0.4261678887267996), + FX16_CONST(0.9052967593181188), FX16_CONST(0.4247796812091088), + FX16_CONST(0.9059472978072685), FX16_CONST(0.4233904741437961), + FX16_CONST(0.9065957045149153), FX16_CONST(0.4220002707997998), + FX16_CONST(0.9072419779152959), FX16_CONST(0.4206090744484025), + FX16_CONST(0.9078861164876663), FX16_CONST(0.41921688836322396), + FX16_CONST(0.9085281187163061), FX16_CONST(0.4178237158202124), + FX16_CONST(0.9091679830905223), FX16_CONST(0.4164295600976373), + FX16_CONST(0.9098057081046522), FX16_CONST(0.41503442447608163), + FX16_CONST(0.9104412922580671), FX16_CONST(0.41363831223843456), + FX16_CONST(0.9110747340551762), FX16_CONST(0.412241226669883), + FX16_CONST(0.9117060320054299), FX16_CONST(0.4108431710579039), + FX16_CONST(0.9123351846233227), FX16_CONST(0.40944414869225765), + FX16_CONST(0.9129621904283981), FX16_CONST(0.40804416286497874), + FX16_CONST(0.9135870479452508), FX16_CONST(0.40664321687036914), + FX16_CONST(0.9142097557035307), FX16_CONST(0.40524131400498986), + FX16_CONST(0.9148303122379461), FX16_CONST(0.40383845756765413), + FX16_CONST(0.9154487160882678), FX16_CONST(0.40243465085941854), + FX16_CONST(0.9160649657993316), FX16_CONST(0.4010298971835758), + FX16_CONST(0.9166790599210427), FX16_CONST(0.3996241998456468), + FX16_CONST(0.9172909970083779), FX16_CONST(0.3982175621533736), + FX16_CONST(0.9179007756213904), FX16_CONST(0.3968099874167104), + FX16_CONST(0.9185083943252123), FX16_CONST(0.3954014789478163), + FX16_CONST(0.9191138516900578), FX16_CONST(0.3939920400610481), + FX16_CONST(0.9197171462912274), FX16_CONST(0.3925816740729515), + FX16_CONST(0.9203182767091105), FX16_CONST(0.391170384302254), + FX16_CONST(0.9209172415291894), FX16_CONST(0.3897581740698564), + FX16_CONST(0.9215140393420419), FX16_CONST(0.3883450466988263), + FX16_CONST(0.9221086687433451), FX16_CONST(0.3869310055143887), + FX16_CONST(0.9227011283338785), FX16_CONST(0.385516053843919), + FX16_CONST(0.9232914167195276), FX16_CONST(0.38410019501693504), + FX16_CONST(0.9238795325112867), FX16_CONST(0.38268343236508984), + FX16_CONST(0.9244654743252626), FX16_CONST(0.3812657692221625), + FX16_CONST(0.9250492407826776), FX16_CONST(0.3798472089240511), + FX16_CONST(0.9256308305098727), FX16_CONST(0.3784277548087656), + FX16_CONST(0.9262102421383113), FX16_CONST(0.3770074102164183), + FX16_CONST(0.9267874743045817), FX16_CONST(0.3755861784892173), + FX16_CONST(0.9273625256504011), FX16_CONST(0.374164062971458), + FX16_CONST(0.9279353948226179), FX16_CONST(0.3727410670095158), + FX16_CONST(0.9285060804732156), FX16_CONST(0.3713171939518376), + FX16_CONST(0.9290745812593157), FX16_CONST(0.36989244714893427), + FX16_CONST(0.9296408958431812), FX16_CONST(0.3684668299533723), + FX16_CONST(0.9302050228922191), FX16_CONST(0.36704034571976724), + FX16_CONST(0.9307669610789837), FX16_CONST(0.36561299780477396), + FX16_CONST(0.9313267090811804), FX16_CONST(0.36418478956707984), + FX16_CONST(0.9318842655816681), FX16_CONST(0.3627557243673972), + FX16_CONST(0.9324396292684624), FX16_CONST(0.36132580556845434), + FX16_CONST(0.9329927988347388), FX16_CONST(0.3598950365349883), + FX16_CONST(0.9335437729788362), FX16_CONST(0.35846342063373654), + FX16_CONST(0.9340925504042589), FX16_CONST(0.35703096123343003), + FX16_CONST(0.9346391298196808), FX16_CONST(0.35559766170478396), + FX16_CONST(0.9351835099389475), FX16_CONST(0.3541635254204905), + FX16_CONST(0.9357256894810804), FX16_CONST(0.3527285557552107), + FX16_CONST(0.9362656671702783), FX16_CONST(0.35129275608556715), + FX16_CONST(0.9368034417359216), FX16_CONST(0.34985612979013503), + FX16_CONST(0.937339011912575), FX16_CONST(0.3484186802494345), + FX16_CONST(0.9378723764399899), FX16_CONST(0.3469804108459237), + FX16_CONST(0.9384035340631081), FX16_CONST(0.34554132496398915), + FX16_CONST(0.9389324835320645), FX16_CONST(0.344101425989939), + FX16_CONST(0.9394592236021899), FX16_CONST(0.3426607173119944), + FX16_CONST(0.9399837530340139), FX16_CONST(0.3412192023202824), + FX16_CONST(0.9405060705932683), FX16_CONST(0.33977688440682696), + FX16_CONST(0.9410261750508893), FX16_CONST(0.3383337669655413), + FX16_CONST(0.9415440651830208), FX16_CONST(0.33688985339222005), + FX16_CONST(0.9420597397710173), FX16_CONST(0.33544514708453166), + FX16_CONST(0.9425731976014469), FX16_CONST(0.3339996514420095), + FX16_CONST(0.9430844374660935), FX16_CONST(0.3325533698660442), + FX16_CONST(0.9435934581619604), FX16_CONST(0.33110630575987643), + FX16_CONST(0.9441002584912727), FX16_CONST(0.32965846252858755), + FX16_CONST(0.9446048372614803), FX16_CONST(0.32820984357909266), + FX16_CONST(0.9451071932852606), FX16_CONST(0.3267604523201318), + FX16_CONST(0.9456073253805213), FX16_CONST(0.325310292162263), + FX16_CONST(0.9461052323704033), FX16_CONST(0.32385936651785296), + FX16_CONST(0.9466009130832835), FX16_CONST(0.32240767880107), + FX16_CONST(0.9470943663527772), FX16_CONST(0.3209552324278752), + FX16_CONST(0.9475855910177411), FX16_CONST(0.31950203081601575), + FX16_CONST(0.9480745859222762), FX16_CONST(0.31804807738501506), + FX16_CONST(0.9485613499157303), FX16_CONST(0.31659337555616585), + FX16_CONST(0.9490458818527006), FX16_CONST(0.31513792875252244), + FX16_CONST(0.9495281805930367), FX16_CONST(0.3136817403988916), + FX16_CONST(0.950008245001843), FX16_CONST(0.31222481392182505), + FX16_CONST(0.9504860739494817), FX16_CONST(0.3107671527496115), + FX16_CONST(0.9509616663115751), FX16_CONST(0.3093087603122688), + FX16_CONST(0.9514350209690083), FX16_CONST(0.307849640041535), + FX16_CONST(0.9519061368079322), FX16_CONST(0.3063897953708611), + FX16_CONST(0.9523750127197659), FX16_CONST(0.30492922973540243), + FX16_CONST(0.9528416476011987), FX16_CONST(0.30346794657201137), + FX16_CONST(0.9533060403541938), FX16_CONST(0.3020059493192282), + FX16_CONST(0.9537681898859903), FX16_CONST(0.3005432414172734), + FX16_CONST(0.9542280951091057), FX16_CONST(0.2990798263080405), + FX16_CONST(0.9546857549413383), FX16_CONST(0.2976157074350863), + FX16_CONST(0.9551411683057707), FX16_CONST(0.29615088824362396), + FX16_CONST(0.9555943341307711), FX16_CONST(0.2946853721805143), + FX16_CONST(0.9560452513499964), FX16_CONST(0.2932191626942587), + FX16_CONST(0.956493918902395), FX16_CONST(0.2917522632349894), + FX16_CONST(0.9569403357322089), FX16_CONST(0.29028467725446233), + FX16_CONST(0.9573845007889759), FX16_CONST(0.2888164082060495), + FX16_CONST(0.9578264130275329), FX16_CONST(0.28734745954472957), + FX16_CONST(0.9582660714080177), FX16_CONST(0.2858778347270807), + FX16_CONST(0.9587034748958716), FX16_CONST(0.2844075372112718), + FX16_CONST(0.9591386224618419), FX16_CONST(0.2829365704570554), + FX16_CONST(0.9595715130819845), FX16_CONST(0.28146493792575805), + FX16_CONST(0.9600021457376658), FX16_CONST(0.2799926430802734), + FX16_CONST(0.9604305194155658), FX16_CONST(0.27851968938505306), + FX16_CONST(0.9608566331076797), FX16_CONST(0.27704608030609995), + FX16_CONST(0.9612804858113206), FX16_CONST(0.27557181931095825), + FX16_CONST(0.9617020765291225), FX16_CONST(0.27409690986870633), + FX16_CONST(0.9621214042690416), FX16_CONST(0.272621355449949), + FX16_CONST(0.9625384680443592), FX16_CONST(0.27114515952680807), + FX16_CONST(0.9629532668736839), FX16_CONST(0.2696683255729152), + FX16_CONST(0.963365799780954), FX16_CONST(0.2681908570634032), + FX16_CONST(0.9637760657954398), FX16_CONST(0.2667127574748984), + FX16_CONST(0.9641840639517457), FX16_CONST(0.2652340302855119), + FX16_CONST(0.9645897932898126), FX16_CONST(0.2637546789748315), + FX16_CONST(0.9649932528549203), FX16_CONST(0.2622747070239136), + FX16_CONST(0.9653944416976894), FX16_CONST(0.26079411791527557), + FX16_CONST(0.9657933588740836), FX16_CONST(0.25931291513288635), + FX16_CONST(0.9661900034454126), FX16_CONST(0.25783110216215893), + FX16_CONST(0.9665843744783331), FX16_CONST(0.2563486824899429), + FX16_CONST(0.9669764710448521), FX16_CONST(0.2548656596045146), + FX16_CONST(0.9673662922223285), FX16_CONST(0.25338203699557027), + FX16_CONST(0.9677538370934755), FX16_CONST(0.2518978181542169), + FX16_CONST(0.9681391047463624), FX16_CONST(0.2504130065729653), + FX16_CONST(0.9685220942744173), FX16_CONST(0.24892760574572026), + FX16_CONST(0.9689028047764289), FX16_CONST(0.24744161916777344), + FX16_CONST(0.9692812353565485), FX16_CONST(0.2459550503357946), + FX16_CONST(0.9696573851242924), FX16_CONST(0.2444679027478242), + FX16_CONST(0.970031253194544), FX16_CONST(0.24298017990326398), + FX16_CONST(0.9704028386875555), FX16_CONST(0.2414918853028693), + FX16_CONST(0.9707721407289504), FX16_CONST(0.2400030224487415), + FX16_CONST(0.9711391584497251), FX16_CONST(0.2385135948443185), + FX16_CONST(0.9715038909862518), FX16_CONST(0.23702360599436734), + FX16_CONST(0.9718663374802794), FX16_CONST(0.23553305940497546), + FX16_CONST(0.9722264970789363), FX16_CONST(0.23404195858354346), + FX16_CONST(0.9725843689347322), FX16_CONST(0.23255030703877533), + FX16_CONST(0.9729399522055601), FX16_CONST(0.23105810828067128), + FX16_CONST(0.9732932460546982), FX16_CONST(0.22956536582051887), + FX16_CONST(0.9736442496508119), FX16_CONST(0.2280720831708858), + FX16_CONST(0.9739929621679558), FX16_CONST(0.2265782638456101), + FX16_CONST(0.9743393827855759), FX16_CONST(0.22508391135979278), + FX16_CONST(0.9746835106885107), FX16_CONST(0.22358902922979002), + FX16_CONST(0.9750253450669941), FX16_CONST(0.2220936209732036), + FX16_CONST(0.9753648851166569), FX16_CONST(0.22059769010887365), + FX16_CONST(0.9757021300385286), FX16_CONST(0.21910124015686977), + FX16_CONST(0.976037079039039), FX16_CONST(0.21760427463848367), + FX16_CONST(0.9763697313300211), FX16_CONST(0.2161067970762196), + FX16_CONST(0.9767000861287118), FX16_CONST(0.21460881099378692), + FX16_CONST(0.9770281426577544), FX16_CONST(0.21311031991609136), + FX16_CONST(0.9773539001452), FX16_CONST(0.2116113273692276), + FX16_CONST(0.9776773578245099), FX16_CONST(0.21011183688046972), + FX16_CONST(0.9779985149345571), FX16_CONST(0.20861185197826346), + FX16_CONST(0.9783173707196277), FX16_CONST(0.20711137619221856), + FX16_CONST(0.9786339244294231), FX16_CONST(0.20561041305309932), + FX16_CONST(0.9789481753190622), FX16_CONST(0.204108966092817), + FX16_CONST(0.979260122649082), FX16_CONST(0.2026070388444211), + FX16_CONST(0.9795697656854405), FX16_CONST(0.20110463484209196), + FX16_CONST(0.9798771036995176), FX16_CONST(0.19960175762113105), + FX16_CONST(0.9801821359681173), FX16_CONST(0.19809841071795373), + FX16_CONST(0.9804848617734694), FX16_CONST(0.19659459767008022), + FX16_CONST(0.9807852804032304), FX16_CONST(0.19509032201612833), + FX16_CONST(0.9810833911504866), FX16_CONST(0.19358558729580375), + FX16_CONST(0.9813791933137546), FX16_CONST(0.19208039704989238), + FX16_CONST(0.9816726861969831), FX16_CONST(0.1905747548202528), + FX16_CONST(0.9819638691095552), FX16_CONST(0.18906866414980628), + FX16_CONST(0.9822527413662894), FX16_CONST(0.18756212858252974), + FX16_CONST(0.9825393022874412), FX16_CONST(0.18605515166344663), + FX16_CONST(0.9828235511987052), FX16_CONST(0.18454773693861964), + FX16_CONST(0.9831054874312163), FX16_CONST(0.18303988795514106), + FX16_CONST(0.9833851103215512), FX16_CONST(0.18153160826112513), + FX16_CONST(0.9836624192117303), FX16_CONST(0.18002290140569951), + FX16_CONST(0.9839374134492189), FX16_CONST(0.1785137709389976), + FX16_CONST(0.984210092386929), FX16_CONST(0.17700422041214886), + FX16_CONST(0.9844804553832209), FX16_CONST(0.1754942533772714), + FX16_CONST(0.9847485018019042), FX16_CONST(0.17398387338746385), + FX16_CONST(0.9850142310122398), FX16_CONST(0.17247308399679603), + FX16_CONST(0.9852776423889412), FX16_CONST(0.17096188876030136), + FX16_CONST(0.9855387353121761), FX16_CONST(0.16945029123396793), + FX16_CONST(0.9857975091675674), FX16_CONST(0.16793829497473123), + FX16_CONST(0.9860539633461954), FX16_CONST(0.16642590354046422), + FX16_CONST(0.9863080972445987), FX16_CONST(0.1649131204899701), + FX16_CONST(0.9865599102647754), FX16_CONST(0.16339994938297323), + FX16_CONST(0.9868094018141854), FX16_CONST(0.16188639378011188), + FX16_CONST(0.987056571305751), FX16_CONST(0.1603724572429284), + FX16_CONST(0.9873014181578584), FX16_CONST(0.1588581433338614), + FX16_CONST(0.9875439417943592), FX16_CONST(0.15734345561623828), + FX16_CONST(0.9877841416445722), FX16_CONST(0.15582839765426532), + FX16_CONST(0.9880220171432835), FX16_CONST(0.15431297301302024), + FX16_CONST(0.9882575677307495), FX16_CONST(0.1527971852584434), + FX16_CONST(0.9884907928526966), FX16_CONST(0.15128103795733025), + FX16_CONST(0.9887216919603238), FX16_CONST(0.14976453467732162), + FX16_CONST(0.988950264510303), FX16_CONST(0.1482476789868962), + FX16_CONST(0.989176509964781), FX16_CONST(0.14673047445536175), + FX16_CONST(0.9894004277913804), FX16_CONST(0.14521292465284752), + FX16_CONST(0.9896220174632008), FX16_CONST(0.14369503315029458), + FX16_CONST(0.9898412784588205), FX16_CONST(0.142176803519448), + FX16_CONST(0.9900582102622971), FX16_CONST(0.14065823933284924), + FX16_CONST(0.9902728123631691), FX16_CONST(0.13913934416382628), + FX16_CONST(0.990485084256457), FX16_CONST(0.13762012158648618), + FX16_CONST(0.9906950254426646), FX16_CONST(0.1361005751757062), + FX16_CONST(0.99090263542778), FX16_CONST(0.13458070850712622), + FX16_CONST(0.9911079137232768), FX16_CONST(0.13306052515713918), + FX16_CONST(0.9913108598461154), FX16_CONST(0.13154002870288328), + FX16_CONST(0.9915114733187439), FX16_CONST(0.13001922272223335), + FX16_CONST(0.9917097536690995), FX16_CONST(0.12849811079379322), + FX16_CONST(0.9919057004306093), FX16_CONST(0.12697669649688598), + FX16_CONST(0.9920993131421918), FX16_CONST(0.1254549834115462), + FX16_CONST(0.9922905913482574), FX16_CONST(0.1239329751185122), + FX16_CONST(0.99247953459871), FX16_CONST(0.12241067519921628), + FX16_CONST(0.992666142448948), FX16_CONST(0.12088808723577722), + FX16_CONST(0.9928504144598651), FX16_CONST(0.11936521481099135), + FX16_CONST(0.9930323501978514), FX16_CONST(0.11784206150832502), + FX16_CONST(0.9932119492347945), FX16_CONST(0.11631863091190488), + FX16_CONST(0.9933892111480807), FX16_CONST(0.11479492660651025), + FX16_CONST(0.9935641355205953), FX16_CONST(0.11327095217756436), + FX16_CONST(0.9937367219407246), FX16_CONST(0.11174671121112666), + FX16_CONST(0.9939069700023561), FX16_CONST(0.11022220729388318), + FX16_CONST(0.9940748793048794), FX16_CONST(0.10869744401313867), + FX16_CONST(0.9942404494531879), FX16_CONST(0.10717242495680887), + FX16_CONST(0.9944036800576791), FX16_CONST(0.1056471537134107), + FX16_CONST(0.9945645707342554), FX16_CONST(0.10412163387205473), + FX16_CONST(0.9947231211043257), FX16_CONST(0.10259586902243628), + FX16_CONST(0.9948793307948056), FX16_CONST(0.10106986275482788), + FX16_CONST(0.9950331994381186), FX16_CONST(0.09954361866006944), + FX16_CONST(0.9951847266721968), FX16_CONST(0.09801714032956077), + FX16_CONST(0.9953339121404823), FX16_CONST(0.0964904313552526), + FX16_CONST(0.9954807554919269), FX16_CONST(0.09496349532963906), + FX16_CONST(0.9956252563809943), FX16_CONST(0.09343633584574791), + FX16_CONST(0.9957674144676598), FX16_CONST(0.0919089564971327), + FX16_CONST(0.9959072294174117), FX16_CONST(0.09038136087786501), + FX16_CONST(0.996044700901252), FX16_CONST(0.08885355258252468), + FX16_CONST(0.9961798285956969), FX16_CONST(0.08732553520619223), + FX16_CONST(0.996312612182778), FX16_CONST(0.08579731234443988), + FX16_CONST(0.9964430513500426), FX16_CONST(0.08426888759332413), + FX16_CONST(0.9965711457905548), FX16_CONST(0.0827402645493758), + FX16_CONST(0.9966968952028961), FX16_CONST(0.08121144680959239), + FX16_CONST(0.9968202992911657), FX16_CONST(0.07968243797143013), + FX16_CONST(0.9969413577649822), FX16_CONST(0.07815324163279432), + FX16_CONST(0.997060070339483), FX16_CONST(0.07662386139203162), + FX16_CONST(0.9971764367353262), FX16_CONST(0.07509430084792129), + FX16_CONST(0.9972904566786902), FX16_CONST(0.07356456359966745), + FX16_CONST(0.9974021299012753), FX16_CONST(0.07203465324688942), + FX16_CONST(0.9975114561403035), FX16_CONST(0.07050457338961401), + FX16_CONST(0.9976184351385196), FX16_CONST(0.06897432762826673), + FX16_CONST(0.9977230666441916), FX16_CONST(0.0674439195636641), + FX16_CONST(0.9978253504111116), FX16_CONST(0.06591335279700393), + FX16_CONST(0.997925286198596), FX16_CONST(0.06438263092985741), + FX16_CONST(0.9980228737714862), FX16_CONST(0.06285175756416142), + FX16_CONST(0.9981181129001492), FX16_CONST(0.06132073630220865), + FX16_CONST(0.9982110033604782), FX16_CONST(0.05978957074664001), + FX16_CONST(0.9983015449338929), FX16_CONST(0.05825826450043573), + FX16_CONST(0.9983897374073402), FX16_CONST(0.05672682116690778), + FX16_CONST(0.9984755805732948), FX16_CONST(0.05519524434969003), + FX16_CONST(0.9985590742297593), FX16_CONST(0.05366353765273068), + FX16_CONST(0.9986402181802653), FX16_CONST(0.05213170468028332), + FX16_CONST(0.9987190122338729), FX16_CONST(0.05059974903689934), + FX16_CONST(0.9987954562051724), FX16_CONST(0.049067674327418126), + FX16_CONST(0.9988695499142836), FX16_CONST(0.04753548415695926), + FX16_CONST(0.9989412931868569), FX16_CONST(0.046003182130914644), + FX16_CONST(0.9990106858540734), FX16_CONST(0.044470771854938744), + FX16_CONST(0.9990777277526454), FX16_CONST(0.04293825693494096), + FX16_CONST(0.9991424187248169), FX16_CONST(0.04140564097707671), + FX16_CONST(0.9992047586183639), FX16_CONST(0.039872927587739845), + FX16_CONST(0.9992647472865944), FX16_CONST(0.03834012037355279), + FX16_CONST(0.9993223845883495), FX16_CONST(0.03680722294135899), + FX16_CONST(0.9993776703880028), FX16_CONST(0.03527423889821395), + FX16_CONST(0.9994306045554617), FX16_CONST(0.03374117185137764), + FX16_CONST(0.999481186966167), FX16_CONST(0.032208025408304704), + FX16_CONST(0.9995294175010931), FX16_CONST(0.03067480317663658), + FX16_CONST(0.9995752960467492), FX16_CONST(0.02914150876419374), + FX16_CONST(0.9996188224951786), FX16_CONST(0.02760814577896582), + FX16_CONST(0.9996599967439592), FX16_CONST(0.02607471782910404), + FX16_CONST(0.9996988186962042), FX16_CONST(0.024541228522912264), + FX16_CONST(0.9997352882605617), FX16_CONST(0.02300768146883941), + FX16_CONST(0.9997694053512153), FX16_CONST(0.021474080275469605), + FX16_CONST(0.9998011698878843), FX16_CONST(0.019940428551514598), + FX16_CONST(0.9998305817958234), FX16_CONST(0.01840672990580482), + FX16_CONST(0.9998576410058239), FX16_CONST(0.016872987947281773), + FX16_CONST(0.9998823474542126), FX16_CONST(0.01533920628498822), + FX16_CONST(0.9999047010828529), FX16_CONST(0.013805388528060349), + FX16_CONST(0.9999247018391445), FX16_CONST(0.012271538285719944), + FX16_CONST(0.9999423496760239), FX16_CONST(0.010737659167264572), + FX16_CONST(0.9999576445519639), FX16_CONST(0.00920375478205996), + FX16_CONST(0.9999705864309741), FX16_CONST(0.007669828739531077), + FX16_CONST(0.9999811752826011), FX16_CONST(0.006135884649154515), + FX16_CONST(0.9999894110819284), FX16_CONST(0.004601926120448672), + FX16_CONST(0.9999952938095762), FX16_CONST(0.003067956762966138), + FX16_CONST(0.9999988234517019), FX16_CONST(0.0015339801862847662), + FX16_CONST(1.0), FX16_CONST(6.123233995736766e-17), + FX16_CONST(0.9999988234517019), FX16_CONST(-0.0015339801862846436), + FX16_CONST(0.9999952938095762), FX16_CONST(-0.0030679567629660156), + FX16_CONST(0.9999894110819284), FX16_CONST(-0.00460192612044855), + FX16_CONST(0.9999811752826011), FX16_CONST(-0.006135884649154393), + FX16_CONST(0.9999705864309741), FX16_CONST(-0.007669828739530955), + FX16_CONST(0.9999576445519639), FX16_CONST(-0.009203754782059837), + FX16_CONST(0.9999423496760239), FX16_CONST(-0.010737659167264449), + FX16_CONST(0.9999247018391445), FX16_CONST(-0.012271538285719823), + FX16_CONST(0.9999047010828529), FX16_CONST(-0.013805388528060226), + FX16_CONST(0.9998823474542126), FX16_CONST(-0.015339206284988098), + FX16_CONST(0.9998576410058239), FX16_CONST(-0.01687298794728165), + FX16_CONST(0.9998305817958234), FX16_CONST(-0.018406729905804695), + FX16_CONST(0.9998011698878843), FX16_CONST(-0.019940428551514476), + FX16_CONST(0.9997694053512153), FX16_CONST(-0.021474080275469484), + FX16_CONST(0.9997352882605617), FX16_CONST(-0.02300768146883929), + FX16_CONST(0.9996988186962042), FX16_CONST(-0.024541228522912142), + FX16_CONST(0.9996599967439592), FX16_CONST(-0.026074717829103915), + FX16_CONST(0.9996188224951786), FX16_CONST(-0.027608145778965698), + FX16_CONST(0.9995752960467492), FX16_CONST(-0.029141508764193618), + FX16_CONST(0.9995294175010931), FX16_CONST(-0.03067480317663646), + FX16_CONST(0.999481186966167), FX16_CONST(-0.03220802540830458), + FX16_CONST(0.9994306045554617), FX16_CONST(-0.03374117185137752), + FX16_CONST(0.9993776703880028), FX16_CONST(-0.03527423889821382), + FX16_CONST(0.9993223845883495), FX16_CONST(-0.036807222941358866), + FX16_CONST(0.9992647472865944), FX16_CONST(-0.038340120373552666), + FX16_CONST(0.9992047586183639), FX16_CONST(-0.03987292758773973), + FX16_CONST(0.9991424187248169), FX16_CONST(-0.041405640977076594), + FX16_CONST(0.9990777277526454), FX16_CONST(-0.042938256934940834), + FX16_CONST(0.9990106858540734), FX16_CONST(-0.04447077185493862), + FX16_CONST(0.9989412931868569), FX16_CONST(-0.04600318213091452), + FX16_CONST(0.9988695499142836), FX16_CONST(-0.047535484156959136), + FX16_CONST(0.9987954562051724), FX16_CONST(-0.04906767432741801), + FX16_CONST(0.9987190122338729), FX16_CONST(-0.05059974903689921), + FX16_CONST(0.9986402181802653), FX16_CONST(-0.05213170468028319), + FX16_CONST(0.9985590742297593), FX16_CONST(-0.053663537652730554), + FX16_CONST(0.9984755805732948), FX16_CONST(-0.05519524434968991), + FX16_CONST(0.9983897374073402), FX16_CONST(-0.05672682116690766), + FX16_CONST(0.9983015449338929), FX16_CONST(-0.05825826450043561), + FX16_CONST(0.9982110033604782), FX16_CONST(-0.05978957074663988), + FX16_CONST(0.9981181129001492), FX16_CONST(-0.06132073630220853), + FX16_CONST(0.9980228737714862), FX16_CONST(-0.06285175756416131), + FX16_CONST(0.997925286198596), FX16_CONST(-0.06438263092985728), + FX16_CONST(0.9978253504111116), FX16_CONST(-0.0659133527970038), + FX16_CONST(0.9977230666441916), FX16_CONST(-0.06744391956366398), + FX16_CONST(0.9976184351385196), FX16_CONST(-0.06897432762826661), + FX16_CONST(0.9975114561403035), FX16_CONST(-0.0705045733896139), + FX16_CONST(0.9974021299012753), FX16_CONST(-0.07203465324688929), + FX16_CONST(0.9972904566786902), FX16_CONST(-0.07356456359966733), + FX16_CONST(0.9971764367353262), FX16_CONST(-0.07509430084792117), + FX16_CONST(0.997060070339483), FX16_CONST(-0.0766238613920315), + FX16_CONST(0.9969413577649822), FX16_CONST(-0.07815324163279419), + FX16_CONST(0.9968202992911658), FX16_CONST(-0.07968243797143001), + FX16_CONST(0.9966968952028961), FX16_CONST(-0.08121144680959226), + FX16_CONST(0.9965711457905548), FX16_CONST(-0.08274026454937568), + FX16_CONST(0.9964430513500426), FX16_CONST(-0.084268887593324), + FX16_CONST(0.996312612182778), FX16_CONST(-0.08579731234443976), + FX16_CONST(0.9961798285956969), FX16_CONST(-0.0873255352061921), + FX16_CONST(0.996044700901252), FX16_CONST(-0.08885355258252456), + FX16_CONST(0.9959072294174117), FX16_CONST(-0.09038136087786489), + FX16_CONST(0.9957674144676598), FX16_CONST(-0.09190895649713257), + FX16_CONST(0.9956252563809943), FX16_CONST(-0.09343633584574779), + FX16_CONST(0.9954807554919269), FX16_CONST(-0.09496349532963895), + FX16_CONST(0.9953339121404823), FX16_CONST(-0.09649043135525248), + FX16_CONST(0.9951847266721969), FX16_CONST(-0.09801714032956065), + FX16_CONST(0.9950331994381186), FX16_CONST(-0.09954361866006932), + FX16_CONST(0.9948793307948056), FX16_CONST(-0.10106986275482775), + FX16_CONST(0.9947231211043257), FX16_CONST(-0.10259586902243616), + FX16_CONST(0.9945645707342554), FX16_CONST(-0.1041216338720546), + FX16_CONST(0.9944036800576791), FX16_CONST(-0.10564715371341057), + FX16_CONST(0.9942404494531879), FX16_CONST(-0.10717242495680876), + FX16_CONST(0.9940748793048795), FX16_CONST(-0.10869744401313856), + FX16_CONST(0.9939069700023561), FX16_CONST(-0.11022220729388306), + FX16_CONST(0.9937367219407246), FX16_CONST(-0.11174671121112655), + FX16_CONST(0.9935641355205953), FX16_CONST(-0.11327095217756424), + FX16_CONST(0.9933892111480807), FX16_CONST(-0.11479492660651013), + FX16_CONST(0.9932119492347945), FX16_CONST(-0.11631863091190475), + FX16_CONST(0.9930323501978514), FX16_CONST(-0.1178420615083249), + FX16_CONST(0.9928504144598651), FX16_CONST(-0.11936521481099123), + FX16_CONST(0.992666142448948), FX16_CONST(-0.1208880872357771), + FX16_CONST(0.99247953459871), FX16_CONST(-0.12241067519921615), + FX16_CONST(0.9922905913482574), FX16_CONST(-0.12393297511851208), + FX16_CONST(0.9920993131421918), FX16_CONST(-0.12545498341154607), + FX16_CONST(0.9919057004306093), FX16_CONST(-0.12697669649688587), + FX16_CONST(0.9917097536690995), FX16_CONST(-0.1284981107937931), + FX16_CONST(0.991511473318744), FX16_CONST(-0.13001922272223324), + FX16_CONST(0.9913108598461154), FX16_CONST(-0.13154002870288314), + FX16_CONST(0.9911079137232769), FX16_CONST(-0.13306052515713904), + FX16_CONST(0.99090263542778), FX16_CONST(-0.1345807085071261), + FX16_CONST(0.9906950254426646), FX16_CONST(-0.13610057517570606), + FX16_CONST(0.990485084256457), FX16_CONST(-0.13762012158648607), + FX16_CONST(0.9902728123631691), FX16_CONST(-0.13913934416382617), + FX16_CONST(0.9900582102622971), FX16_CONST(-0.14065823933284913), + FX16_CONST(0.9898412784588205), FX16_CONST(-0.1421768035194479), + FX16_CONST(0.9896220174632009), FX16_CONST(-0.14369503315029444), + FX16_CONST(0.9894004277913804), FX16_CONST(-0.1452129246528474), + FX16_CONST(0.989176509964781), FX16_CONST(-0.14673047445536164), + FX16_CONST(0.988950264510303), FX16_CONST(-0.1482476789868961), + FX16_CONST(0.9887216919603238), FX16_CONST(-0.1497645346773215), + FX16_CONST(0.9884907928526967), FX16_CONST(-0.15128103795733014), + FX16_CONST(0.9882575677307495), FX16_CONST(-0.1527971852584433), + FX16_CONST(0.9880220171432835), FX16_CONST(-0.15431297301302013), + FX16_CONST(0.9877841416445722), FX16_CONST(-0.1558283976542652), + FX16_CONST(0.9875439417943593), FX16_CONST(-0.15734345561623816), + FX16_CONST(0.9873014181578584), FX16_CONST(-0.15885814333386128), + FX16_CONST(0.987056571305751), FX16_CONST(-0.16037245724292826), + FX16_CONST(0.9868094018141855), FX16_CONST(-0.16188639378011177), + FX16_CONST(0.9865599102647755), FX16_CONST(-0.16339994938297311), + FX16_CONST(0.9863080972445987), FX16_CONST(-0.16491312048996995), + FX16_CONST(0.9860539633461954), FX16_CONST(-0.1664259035404641), + FX16_CONST(0.9857975091675675), FX16_CONST(-0.1679382949747311), + FX16_CONST(0.9855387353121761), FX16_CONST(-0.16945029123396782), + FX16_CONST(0.9852776423889412), FX16_CONST(-0.17096188876030124), + FX16_CONST(0.9850142310122398), FX16_CONST(-0.17247308399679592), + FX16_CONST(0.9847485018019042), FX16_CONST(-0.1739838733874637), + FX16_CONST(0.9844804553832209), FX16_CONST(-0.17549425337727126), + FX16_CONST(0.984210092386929), FX16_CONST(-0.17700422041214875), + FX16_CONST(0.9839374134492189), FX16_CONST(-0.17851377093899745), + FX16_CONST(0.9836624192117303), FX16_CONST(-0.1800229014056994), + FX16_CONST(0.9833851103215512), FX16_CONST(-0.18153160826112502), + FX16_CONST(0.9831054874312163), FX16_CONST(-0.18303988795514092), + FX16_CONST(0.9828235511987053), FX16_CONST(-0.18454773693861953), + FX16_CONST(0.9825393022874412), FX16_CONST(-0.1860551516634465), + FX16_CONST(0.9822527413662894), FX16_CONST(-0.1875621285825296), + FX16_CONST(0.9819638691095552), FX16_CONST(-0.18906866414980616), + FX16_CONST(0.9816726861969831), FX16_CONST(-0.19057475482025266), + FX16_CONST(0.9813791933137546), FX16_CONST(-0.19208039704989227), + FX16_CONST(0.9810833911504867), FX16_CONST(-0.1935855872958036), + FX16_CONST(0.9807852804032304), FX16_CONST(-0.1950903220161282), + FX16_CONST(0.9804848617734694), FX16_CONST(-0.1965945976700801), + FX16_CONST(0.9801821359681174), FX16_CONST(-0.19809841071795362), + FX16_CONST(0.9798771036995176), FX16_CONST(-0.19960175762113094), + FX16_CONST(0.9795697656854405), FX16_CONST(-0.20110463484209182), + FX16_CONST(0.9792601226490821), FX16_CONST(-0.20260703884442097), + FX16_CONST(0.9789481753190622), FX16_CONST(-0.2041089660928169), + FX16_CONST(0.9786339244294232), FX16_CONST(-0.2056104130530992), + FX16_CONST(0.9783173707196277), FX16_CONST(-0.20711137619221845), + FX16_CONST(0.9779985149345571), FX16_CONST(-0.20861185197826332), + FX16_CONST(0.9776773578245099), FX16_CONST(-0.2101118368804696), + FX16_CONST(0.9773539001452001), FX16_CONST(-0.2116113273692275), + FX16_CONST(0.9770281426577544), FX16_CONST(-0.21311031991609125), + FX16_CONST(0.9767000861287118), FX16_CONST(-0.2146088109937868), + FX16_CONST(0.9763697313300211), FX16_CONST(-0.2161067970762195), + FX16_CONST(0.9760370790390391), FX16_CONST(-0.21760427463848356), + FX16_CONST(0.9757021300385286), FX16_CONST(-0.21910124015686966), + FX16_CONST(0.975364885116657), FX16_CONST(-0.22059769010887353), + FX16_CONST(0.9750253450669941), FX16_CONST(-0.22209362097320348), + FX16_CONST(0.9746835106885107), FX16_CONST(-0.22358902922978988), + FX16_CONST(0.9743393827855759), FX16_CONST(-0.22508391135979267), + FX16_CONST(0.9739929621679558), FX16_CONST(-0.22657826384560997), + FX16_CONST(0.973644249650812), FX16_CONST(-0.22807208317088568), + FX16_CONST(0.9732932460546982), FX16_CONST(-0.22956536582051876), + FX16_CONST(0.9729399522055602), FX16_CONST(-0.23105810828067114), + FX16_CONST(0.9725843689347322), FX16_CONST(-0.23255030703877522), + FX16_CONST(0.9722264970789364), FX16_CONST(-0.23404195858354332), + FX16_CONST(0.9718663374802794), FX16_CONST(-0.23553305940497535), + FX16_CONST(0.9715038909862518), FX16_CONST(-0.23702360599436723), + FX16_CONST(0.9711391584497251), FX16_CONST(-0.2385135948443184), + FX16_CONST(0.9707721407289504), FX16_CONST(-0.2400030224487414), + FX16_CONST(0.9704028386875555), FX16_CONST(-0.24149188530286916), + FX16_CONST(0.970031253194544), FX16_CONST(-0.24298017990326387), + FX16_CONST(0.9696573851242924), FX16_CONST(-0.2444679027478241), + FX16_CONST(0.9692812353565485), FX16_CONST(-0.24595505033579448), + FX16_CONST(0.9689028047764289), FX16_CONST(-0.24744161916777332), + FX16_CONST(0.9685220942744174), FX16_CONST(-0.24892760574572012), + FX16_CONST(0.9681391047463624), FX16_CONST(-0.25041300657296517), + FX16_CONST(0.9677538370934755), FX16_CONST(-0.2518978181542168), + FX16_CONST(0.9673662922223285), FX16_CONST(-0.25338203699557016), + FX16_CONST(0.9669764710448521), FX16_CONST(-0.2548656596045145), + FX16_CONST(0.9665843744783331), FX16_CONST(-0.25634868248994275), + FX16_CONST(0.9661900034454126), FX16_CONST(-0.2578311021621588), + FX16_CONST(0.9657933588740837), FX16_CONST(-0.25931291513288623), + FX16_CONST(0.9653944416976894), FX16_CONST(-0.26079411791527546), + FX16_CONST(0.9649932528549204), FX16_CONST(-0.2622747070239135), + FX16_CONST(0.9645897932898128), FX16_CONST(-0.2637546789748314), + FX16_CONST(0.9641840639517458), FX16_CONST(-0.2652340302855118), + FX16_CONST(0.9637760657954398), FX16_CONST(-0.2667127574748983), + FX16_CONST(0.963365799780954), FX16_CONST(-0.268190857063403), + FX16_CONST(0.9629532668736839), FX16_CONST(-0.2696683255729151), + FX16_CONST(0.9625384680443592), FX16_CONST(-0.27114515952680796), + FX16_CONST(0.9621214042690416), FX16_CONST(-0.27262135544994887), + FX16_CONST(0.9617020765291225), FX16_CONST(-0.2740969098687062), + FX16_CONST(0.9612804858113206), FX16_CONST(-0.27557181931095814), + FX16_CONST(0.9608566331076797), FX16_CONST(-0.27704608030609984), + FX16_CONST(0.9604305194155659), FX16_CONST(-0.27851968938505295), + FX16_CONST(0.9600021457376658), FX16_CONST(-0.2799926430802733), + FX16_CONST(0.9595715130819845), FX16_CONST(-0.28146493792575794), + FX16_CONST(0.959138622461842), FX16_CONST(-0.2829365704570553), + FX16_CONST(0.9587034748958716), FX16_CONST(-0.2844075372112717), + FX16_CONST(0.9582660714080177), FX16_CONST(-0.2858778347270806), + FX16_CONST(0.9578264130275329), FX16_CONST(-0.28734745954472946), + FX16_CONST(0.957384500788976), FX16_CONST(-0.28881640820604937), + FX16_CONST(0.9569403357322089), FX16_CONST(-0.29028467725446216), + FX16_CONST(0.9564939189023951), FX16_CONST(-0.29175226323498926), + FX16_CONST(0.9560452513499965), FX16_CONST(-0.2932191626942586), + FX16_CONST(0.9555943341307711), FX16_CONST(-0.2946853721805142), + FX16_CONST(0.9551411683057707), FX16_CONST(-0.29615088824362384), + FX16_CONST(0.9546857549413383), FX16_CONST(-0.2976157074350862), + FX16_CONST(0.9542280951091057), FX16_CONST(-0.29907982630804036), + FX16_CONST(0.9537681898859903), FX16_CONST(-0.3005432414172733), + FX16_CONST(0.9533060403541939), FX16_CONST(-0.3020059493192281), + FX16_CONST(0.9528416476011987), FX16_CONST(-0.30346794657201126), + FX16_CONST(0.9523750127197659), FX16_CONST(-0.30492922973540226), + FX16_CONST(0.9519061368079323), FX16_CONST(-0.306389795370861), + FX16_CONST(0.9514350209690083), FX16_CONST(-0.30784964004153487), + FX16_CONST(0.9509616663115751), FX16_CONST(-0.3093087603122686), + FX16_CONST(0.9504860739494818), FX16_CONST(-0.31076715274961136), + FX16_CONST(0.950008245001843), FX16_CONST(-0.31222481392182494), + FX16_CONST(0.9495281805930367), FX16_CONST(-0.3136817403988914), + FX16_CONST(0.9490458818527006), FX16_CONST(-0.31513792875252233), + FX16_CONST(0.9485613499157304), FX16_CONST(-0.31659337555616573), + FX16_CONST(0.9480745859222762), FX16_CONST(-0.31804807738501495), + FX16_CONST(0.9475855910177412), FX16_CONST(-0.31950203081601564), + FX16_CONST(0.9470943663527772), FX16_CONST(-0.3209552324278751), + FX16_CONST(0.9466009130832835), FX16_CONST(-0.32240767880106985), + FX16_CONST(0.9461052323704034), FX16_CONST(-0.32385936651785285), + FX16_CONST(0.9456073253805214), FX16_CONST(-0.32531029216226287), + FX16_CONST(0.9451071932852606), FX16_CONST(-0.3267604523201316), + FX16_CONST(0.9446048372614803), FX16_CONST(-0.32820984357909255), + FX16_CONST(0.9441002584912727), FX16_CONST(-0.32965846252858744), + FX16_CONST(0.9435934581619604), FX16_CONST(-0.3311063057598763), + FX16_CONST(0.9430844374660935), FX16_CONST(-0.33255336986604406), + FX16_CONST(0.9425731976014469), FX16_CONST(-0.3339996514420094), + FX16_CONST(0.9420597397710174), FX16_CONST(-0.33544514708453155), + FX16_CONST(0.9415440651830208), FX16_CONST(-0.33688985339221994), + FX16_CONST(0.9410261750508893), FX16_CONST(-0.3383337669655412), + FX16_CONST(0.9405060705932683), FX16_CONST(-0.33977688440682685), + FX16_CONST(0.939983753034014), FX16_CONST(-0.3412192023202823), + FX16_CONST(0.9394592236021899), FX16_CONST(-0.34266071731199427), + FX16_CONST(0.9389324835320645), FX16_CONST(-0.34410142598993887), + FX16_CONST(0.9384035340631082), FX16_CONST(-0.34554132496398904), + FX16_CONST(0.9378723764399899), FX16_CONST(-0.34698041084592357), + FX16_CONST(0.937339011912575), FX16_CONST(-0.3484186802494344), + FX16_CONST(0.9368034417359216), FX16_CONST(-0.3498561297901349), + FX16_CONST(0.9362656671702783), FX16_CONST(-0.35129275608556704), + FX16_CONST(0.9357256894810804), FX16_CONST(-0.3527285557552106), + FX16_CONST(0.9351835099389476), FX16_CONST(-0.3541635254204904), + FX16_CONST(0.9346391298196808), FX16_CONST(-0.35559766170478385), + FX16_CONST(0.934092550404259), FX16_CONST(-0.3570309612334299), + FX16_CONST(0.9335437729788363), FX16_CONST(-0.35846342063373643), + FX16_CONST(0.9329927988347388), FX16_CONST(-0.35989503653498817), + FX16_CONST(0.9324396292684624), FX16_CONST(-0.36132580556845423), + FX16_CONST(0.9318842655816681), FX16_CONST(-0.3627557243673971), + FX16_CONST(0.9313267090811805), FX16_CONST(-0.3641847895670797), + FX16_CONST(0.9307669610789837), FX16_CONST(-0.36561299780477385), + FX16_CONST(0.9302050228922191), FX16_CONST(-0.3670403457197671), + FX16_CONST(0.9296408958431813), FX16_CONST(-0.3684668299533722), + FX16_CONST(0.9290745812593157), FX16_CONST(-0.36989244714893416), + FX16_CONST(0.9285060804732156), FX16_CONST(-0.3713171939518375), + FX16_CONST(0.9279353948226179), FX16_CONST(-0.3727410670095157), + FX16_CONST(0.9273625256504011), FX16_CONST(-0.3741640629714579), + FX16_CONST(0.9267874743045817), FX16_CONST(-0.3755861784892172), + FX16_CONST(0.9262102421383114), FX16_CONST(-0.3770074102164182), + FX16_CONST(0.9256308305098728), FX16_CONST(-0.37842775480876545), + FX16_CONST(0.9250492407826777), FX16_CONST(-0.379847208924051), + FX16_CONST(0.9244654743252626), FX16_CONST(-0.3812657692221624), + FX16_CONST(0.9238795325112867), FX16_CONST(-0.3826834323650897), + FX16_CONST(0.9232914167195277), FX16_CONST(-0.38410019501693493), + FX16_CONST(0.9227011283338785), FX16_CONST(-0.3855160538439189), + FX16_CONST(0.9221086687433452), FX16_CONST(-0.3869310055143886), + FX16_CONST(0.921514039342042), FX16_CONST(-0.3883450466988262), + FX16_CONST(0.9209172415291895), FX16_CONST(-0.3897581740698563), + FX16_CONST(0.9203182767091106), FX16_CONST(-0.39117038430225387), + FX16_CONST(0.9197171462912274), FX16_CONST(-0.3925816740729514), + FX16_CONST(0.9191138516900578), FX16_CONST(-0.393992040061048), + FX16_CONST(0.9185083943252123), FX16_CONST(-0.3954014789478162), + FX16_CONST(0.9179007756213905), FX16_CONST(-0.3968099874167103), + FX16_CONST(0.917290997008378), FX16_CONST(-0.3982175621533735), + FX16_CONST(0.9166790599210427), FX16_CONST(-0.3996241998456467), + FX16_CONST(0.9160649657993317), FX16_CONST(-0.4010298971835757), + FX16_CONST(0.9154487160882678), FX16_CONST(-0.40243465085941843), + FX16_CONST(0.9148303122379462), FX16_CONST(-0.403838457567654), + FX16_CONST(0.9142097557035307), FX16_CONST(-0.40524131400498975), + FX16_CONST(0.9135870479452508), FX16_CONST(-0.40664321687036903), + FX16_CONST(0.9129621904283982), FX16_CONST(-0.40804416286497863), + FX16_CONST(0.9123351846233229), FX16_CONST(-0.40944414869225754), + FX16_CONST(0.9117060320054299), FX16_CONST(-0.4108431710579038), + FX16_CONST(0.9110747340551764), FX16_CONST(-0.4122412266698829), + FX16_CONST(0.9104412922580672), FX16_CONST(-0.4136383122384345), + FX16_CONST(0.9098057081046523), FX16_CONST(-0.4150344244760815), + FX16_CONST(0.9091679830905225), FX16_CONST(-0.416429560097637), + FX16_CONST(0.9085281187163061), FX16_CONST(-0.41782371582021227), + FX16_CONST(0.9078861164876662), FX16_CONST(-0.41921688836322407), + FX16_CONST(0.9072419779152959), FX16_CONST(-0.4206090744484024), + FX16_CONST(0.9065957045149153), FX16_CONST(-0.4220002707997997), + FX16_CONST(0.9059472978072686), FX16_CONST(-0.42339047414379577), + FX16_CONST(0.9052967593181188), FX16_CONST(-0.4247796812091087), + FX16_CONST(0.9046440905782461), FX16_CONST(-0.42616788872679967), + FX16_CONST(0.9039892931234434), FX16_CONST(-0.42755509343028186), + FX16_CONST(0.9033323684945118), FX16_CONST(-0.42894129205532944), + FX16_CONST(0.9026733182372587), FX16_CONST(-0.4303264813400827), + FX16_CONST(0.9020121439024933), FX16_CONST(-0.4317106580250571), + FX16_CONST(0.901348847046022), FX16_CONST(-0.4330938188531519), + FX16_CONST(0.9006834292286469), FX16_CONST(-0.4344759605696558), + FX16_CONST(0.9000158920161603), FX16_CONST(-0.43585707992225536), + FX16_CONST(0.8993462369793416), FX16_CONST(-0.4372371736610441), + FX16_CONST(0.8986744656939539), FX16_CONST(-0.4386162385385274), + FX16_CONST(0.8980005797407399), FX16_CONST(-0.43999427130963314), + FX16_CONST(0.8973245807054183), FX16_CONST(-0.4413712687317167), + FX16_CONST(0.8966464701786803), FX16_CONST(-0.4427472275645698), + FX16_CONST(0.8959662497561852), FX16_CONST(-0.44412214457042914), + FX16_CONST(0.8952839210385575), FX16_CONST(-0.4454960165139818), + FX16_CONST(0.8945994856313828), FX16_CONST(-0.446868840162374), + FX16_CONST(0.8939129451452033), FX16_CONST(-0.4482406122852199), + FX16_CONST(0.8932243011955152), FX16_CONST(-0.4496113296546067), + FX16_CONST(0.8925335554027647), FX16_CONST(-0.4509809890451037), + FX16_CONST(0.8918407093923427), FX16_CONST(-0.4523495872337709), + FX16_CONST(0.8911457647945834), FX16_CONST(-0.4537171210001636), + FX16_CONST(0.890448723244758), FX16_CONST(-0.4550835871263437), + FX16_CONST(0.8897495863830728), FX16_CONST(-0.456448982396884), + FX16_CONST(0.8890483558546647), FX16_CONST(-0.457813303598877), + FX16_CONST(0.8883450333095964), FX16_CONST(-0.45917654752194403), + FX16_CONST(0.8876396204028539), FX16_CONST(-0.46053871095824006), + FX16_CONST(0.8869321187943423), FX16_CONST(-0.46189979070246256), + FX16_CONST(0.8862225301488806), FX16_CONST(-0.46325978355186015), + FX16_CONST(0.8855108561361998), FX16_CONST(-0.4646186863062379), + FX16_CONST(0.8847970984309379), FX16_CONST(-0.465976495767966), + FX16_CONST(0.884081258712635), FX16_CONST(-0.4673332087419884), + FX16_CONST(0.8833633386657317), FX16_CONST(-0.4686888220358277), + FX16_CONST(0.8826433399795628), FX16_CONST(-0.4700433324595955), + FX16_CONST(0.881921264348355), FX16_CONST(-0.4713967368259977), + FX16_CONST(0.8811971134712222), FX16_CONST(-0.47274903195034257), + FX16_CONST(0.8804708890521609), FX16_CONST(-0.4741002146505499), + FX16_CONST(0.8797425928000474), FX16_CONST(-0.4754502817471559), + FX16_CONST(0.8790122264286335), FX16_CONST(-0.4767992300633219), + FX16_CONST(0.8782797916565416), FX16_CONST(-0.478147056424843), + FX16_CONST(0.8775452902072612), FX16_CONST(-0.4794937576601531), + FX16_CONST(0.8768087238091458), FX16_CONST(-0.4808393306003338), + FX16_CONST(0.8760700941954066), FX16_CONST(-0.4821837720791227), + FX16_CONST(0.875329403104111), FX16_CONST(-0.48352707893291846), + FX16_CONST(0.8745866522781762), FX16_CONST(-0.484869248000791), + FX16_CONST(0.8738418434653668), FX16_CONST(-0.4862102761244864), + FX16_CONST(0.8730949784182902), FX16_CONST(-0.4875501601484357), + FX16_CONST(0.8723460588943915), FX16_CONST(-0.4888888969197631), + FX16_CONST(0.871595086655951), FX16_CONST(-0.4902264832882912), + FX16_CONST(0.870842063470079), FX16_CONST(-0.49156291610654973), + FX16_CONST(0.8700869911087115), FX16_CONST(-0.492898192229784), + FX16_CONST(0.8693298713486067), FX16_CONST(-0.49423230851595984), + FX16_CONST(0.868570705971341), FX16_CONST(-0.4955652618257724), + FX16_CONST(0.8678094967633032), FX16_CONST(-0.4968970490226545), + FX16_CONST(0.8670462455156928), FX16_CONST(-0.4982276669727816), + FX16_CONST(0.8662809540245131), FX16_CONST(-0.4995571125450818), + FX16_CONST(0.8655136240905691), FX16_CONST(-0.5008853826112408), + FX16_CONST(0.8647442575194625), FX16_CONST(-0.5022124740457106), + FX16_CONST(0.8639728561215868), FX16_CONST(-0.5035383837257175), + FX16_CONST(0.8631994217121242), FX16_CONST(-0.5048631085312676), + FX16_CONST(0.8624239561110406), FX16_CONST(-0.5061866453451551), + FX16_CONST(0.8616464611430814), FX16_CONST(-0.5075089910529708), + FX16_CONST(0.8608669386377672), FX16_CONST(-0.5088301425431071), + FX16_CONST(0.8600853904293903), FX16_CONST(-0.5101500967067666), + FX16_CONST(0.8593018183570085), FX16_CONST(-0.5114688504379704), + FX16_CONST(0.858516224264443), FX16_CONST(-0.5127864006335627), + FX16_CONST(0.8577286100002721), FX16_CONST(-0.5141027441932216), + FX16_CONST(0.8569389774178287), FX16_CONST(-0.515417878019463), + FX16_CONST(0.8561473283751946), FX16_CONST(-0.5167317990176497), + FX16_CONST(0.855353664735196), FX16_CONST(-0.5180445040959992), + FX16_CONST(0.8545579883654005), FX16_CONST(-0.5193559901655896), + FX16_CONST(0.8537603011381115), FX16_CONST(-0.5206662541403669), + FX16_CONST(0.8529606049303637), FX16_CONST(-0.5219752929371543), + FX16_CONST(0.8521589016239197), FX16_CONST(-0.5232831034756565), + FX16_CONST(0.8513551931052652), FX16_CONST(-0.5245896826784687), + FX16_CONST(0.8505494812656035), FX16_CONST(-0.5258950274710846), + FX16_CONST(0.8497417680008527), FX16_CONST(-0.5271991347819011), + FX16_CONST(0.8489320552116397), FX16_CONST(-0.5285020015422284), + FX16_CONST(0.8481203448032972), FX16_CONST(-0.5298036246862947), + FX16_CONST(0.8473066386858585), FX16_CONST(-0.5311040011512548), + FX16_CONST(0.8464909387740521), FX16_CONST(-0.5324031278771979), + FX16_CONST(0.8456732469872991), FX16_CONST(-0.533701001807153), + FX16_CONST(0.8448535652497072), FX16_CONST(-0.534997619887097), + FX16_CONST(0.8440318954900664), FX16_CONST(-0.5362929790659631), + FX16_CONST(0.8432082396418453), FX16_CONST(-0.5375870762956456), + FX16_CONST(0.842382599643186), FX16_CONST(-0.5388799085310083), + FX16_CONST(0.8415549774368984), FX16_CONST(-0.5401714727298929), + FX16_CONST(0.8407253749704582), FX16_CONST(-0.5414617658531232), + FX16_CONST(0.8398937941959995), FX16_CONST(-0.5427507848645158), + FX16_CONST(0.8390602370703127), FX16_CONST(-0.5440385267308839), + FX16_CONST(0.8382247055548382), FX16_CONST(-0.5453249884220462), + FX16_CONST(0.8373872016156619), FX16_CONST(-0.5466101669108347), + FX16_CONST(0.836547727223512), FX16_CONST(-0.5478940591731002), + FX16_CONST(0.8357062843537527), FX16_CONST(-0.5491766621877195), + FX16_CONST(0.8348628749863801), FX16_CONST(-0.5504579729366047), + FX16_CONST(0.834017501106018), FX16_CONST(-0.5517379884047074), + FX16_CONST(0.8331701647019133), FX16_CONST(-0.5530167055800274), + FX16_CONST(0.8323208677679297), FX16_CONST(-0.5542941214536201), + FX16_CONST(0.8314696123025453), FX16_CONST(-0.555570233019602), + FX16_CONST(0.8306164003088463), FX16_CONST(-0.55684503727516), + FX16_CONST(0.829761233794523), FX16_CONST(-0.5581185312205561), + FX16_CONST(0.8289041147718651), FX16_CONST(-0.5593907118591358), + FX16_CONST(0.8280450452577558), FX16_CONST(-0.5606615761973359), + FX16_CONST(0.827184027273669), FX16_CONST(-0.5619311212446895), + FX16_CONST(0.8263210628456636), FX16_CONST(-0.5631993440138339), + FX16_CONST(0.8254561540043776), FX16_CONST(-0.5644662415205194), + FX16_CONST(0.8245893027850252), FX16_CONST(-0.5657318107836132), + FX16_CONST(0.8237205112273915), FX16_CONST(-0.5669960488251085), + FX16_CONST(0.8228497813758263), FX16_CONST(-0.5682589526701315), + FX16_CONST(0.8219771152792414), FX16_CONST(-0.5695205193469473), + FX16_CONST(0.8211025149911048), FX16_CONST(-0.5707807458869671), + FX16_CONST(0.8202259825694347), FX16_CONST(-0.572039629324757), + FX16_CONST(0.8193475200767971), FX16_CONST(-0.573297166698042), + FX16_CONST(0.8184671295802988), FX16_CONST(-0.5745533550477158), + FX16_CONST(0.8175848131515837), FX16_CONST(-0.5758081914178453), + FX16_CONST(0.816700572866828), FX16_CONST(-0.5770616728556793), + FX16_CONST(0.8158144108067338), FX16_CONST(-0.5783137964116555), + FX16_CONST(0.8149263290565265), FX16_CONST(-0.5795645591394059), + FX16_CONST(0.8140363297059485), FX16_CONST(-0.5808139580957644), + FX16_CONST(0.8131444148492536), FX16_CONST(-0.5820619903407755), + FX16_CONST(0.8122505865852039), FX16_CONST(-0.5833086529376984), + FX16_CONST(0.8113548470170638), FX16_CONST(-0.5845539429530152), + FX16_CONST(0.8104571982525948), FX16_CONST(-0.5857978574564389), + FX16_CONST(0.8095576424040515), FX16_CONST(-0.5870403935209177), + FX16_CONST(0.8086561815881751), FX16_CONST(-0.5882815482226452), + FX16_CONST(0.8077528179261904), FX16_CONST(-0.5895213186410639), + FX16_CONST(0.8068475535437994), FX16_CONST(-0.590759701858874), + FX16_CONST(0.8059403905711764), FX16_CONST(-0.5919966949620409), + FX16_CONST(0.8050313311429635), FX16_CONST(-0.5932322950397999), + FX16_CONST(0.8041203773982658), FX16_CONST(-0.5944664991846643), + FX16_CONST(0.8032075314806449), FX16_CONST(-0.5956993044924334), + FX16_CONST(0.8022927955381156), FX16_CONST(-0.5969307080621966), + FX16_CONST(0.8013761717231402), FX16_CONST(-0.5981607069963422), + FX16_CONST(0.8004576621926228), FX16_CONST(-0.5993892984005645), + FX16_CONST(0.7995372691079052), FX16_CONST(-0.6006164793838688), + FX16_CONST(0.7986149946347609), FX16_CONST(-0.60184224705858), + FX16_CONST(0.797690840943391), FX16_CONST(-0.6030665985403483), + FX16_CONST(0.7967648102084189), FX16_CONST(-0.6042895309481559), + FX16_CONST(0.7958369046088836), FX16_CONST(-0.6055110414043254), + FX16_CONST(0.7949071263282369), FX16_CONST(-0.6067311270345246), + FX16_CONST(0.7939754775543373), FX16_CONST(-0.6079497849677735), + FX16_CONST(0.7930419604794436), FX16_CONST(-0.6091670123364532), + FX16_CONST(0.7921065773002123), FX16_CONST(-0.6103828062763096), + FX16_CONST(0.7911693302176903), FX16_CONST(-0.6115971639264618), + FX16_CONST(0.79023022143731), FX16_CONST(-0.6128100824294097), + FX16_CONST(0.7892892531688859), FX16_CONST(-0.6140215589310382), + FX16_CONST(0.7883464276266063), FX16_CONST(-0.6152315905806267), + FX16_CONST(0.7874017470290313), FX16_CONST(-0.6164401745308536), + FX16_CONST(0.7864552135990859), FX16_CONST(-0.6176473079378038), + FX16_CONST(0.785506829564054), FX16_CONST(-0.6188529879609762), + FX16_CONST(0.7845565971555751), FX16_CONST(-0.6200572117632892), + FX16_CONST(0.7836045186096383), FX16_CONST(-0.6212599765110874), + FX16_CONST(0.7826505961665757), FX16_CONST(-0.62246127937415), + FX16_CONST(0.7816948320710593), FX16_CONST(-0.6236611175256946), + FX16_CONST(0.7807372285720946), FX16_CONST(-0.6248594881423862), + FX16_CONST(0.7797777879230144), FX16_CONST(-0.6260563884043435), + FX16_CONST(0.7788165123814761), FX16_CONST(-0.6272518154951439), + FX16_CONST(0.7778534042094531), FX16_CONST(-0.6284457666018326), + FX16_CONST(0.7768884656732324), FX16_CONST(-0.6296382389149271), + FX16_CONST(0.7759216990434078), FX16_CONST(-0.6308292296284244), + FX16_CONST(0.7749531065948739), FX16_CONST(-0.632018735939809), + FX16_CONST(0.7739826906068228), FX16_CONST(-0.6332067550500573), + FX16_CONST(0.7730104533627371), FX16_CONST(-0.6343932841636454), + FX16_CONST(0.7720363971503845), FX16_CONST(-0.6355783204885561), + FX16_CONST(0.7710605242618137), FX16_CONST(-0.6367618612362843), + FX16_CONST(0.7700828369933481), FX16_CONST(-0.6379439036218439), + FX16_CONST(0.7691033376455796), FX16_CONST(-0.6391244448637757), + FX16_CONST(0.7681220285233655), FX16_CONST(-0.6403034821841515), + FX16_CONST(0.7671389119358204), FX16_CONST(-0.641481012808583), + FX16_CONST(0.7661539901963128), FX16_CONST(-0.6426570339662269), + FX16_CONST(0.7651672656224591), FX16_CONST(-0.6438315428897913), + FX16_CONST(0.7641787405361168), FX16_CONST(-0.6450045368155439), + FX16_CONST(0.7631884172633812), FX16_CONST(-0.6461760129833164), + FX16_CONST(0.762196298134579), FX16_CONST(-0.647345968636512), + FX16_CONST(0.7612023854842619), FX16_CONST(-0.6485144010221124), + FX16_CONST(0.7602066816512023), FX16_CONST(-0.6496813073906833), + FX16_CONST(0.7592091889783881), FX16_CONST(-0.6508466849963808), + FX16_CONST(0.7582099098130153), FX16_CONST(-0.6520105310969595), + FX16_CONST(0.7572088465064847), FX16_CONST(-0.6531728429537765), + FX16_CONST(0.7562060014143945), FX16_CONST(-0.6543336178318004), + FX16_CONST(0.7552013768965364), FX16_CONST(-0.6554928529996155), + FX16_CONST(0.7541949753168893), FX16_CONST(-0.6566505457294288), + FX16_CONST(0.7531867990436125), FX16_CONST(-0.6578066932970785), + FX16_CONST(0.7521768504490427), FX16_CONST(-0.6589612929820374), + FX16_CONST(0.7511651319096866), FX16_CONST(-0.6601143420674204), + FX16_CONST(0.7501516458062151), FX16_CONST(-0.6612658378399922), + FX16_CONST(0.7491363945234593), FX16_CONST(-0.6624157775901719), + FX16_CONST(0.7481193804504037), FX16_CONST(-0.6635641586120397), + FX16_CONST(0.7471006059801801), FX16_CONST(-0.6647109782033449), + FX16_CONST(0.746080073510064), FX16_CONST(-0.6658562336655095), + FX16_CONST(0.7450577854414661), FX16_CONST(-0.6669999223036374), + FX16_CONST(0.7440337441799292), FX16_CONST(-0.6681420414265186), + FX16_CONST(0.7430079521351218), FX16_CONST(-0.6692825883466359), + FX16_CONST(0.7419804117208311), FX16_CONST(-0.6704215603801731), + FX16_CONST(0.740951125354959), FX16_CONST(-0.6715589548470184), + FX16_CONST(0.7399200954595163), FX16_CONST(-0.6726947690707727), + FX16_CONST(0.7388873244606152), FX16_CONST(-0.673829000378756), + FX16_CONST(0.7378528147884659), FX16_CONST(-0.674961646102012), + FX16_CONST(0.73681656887737), FX16_CONST(-0.6760927035753158), + FX16_CONST(0.7357785891657136), FX16_CONST(-0.6772221701371804), + FX16_CONST(0.7347388780959637), FX16_CONST(-0.6783500431298612), + FX16_CONST(0.7336974381146604), FX16_CONST(-0.679476319899365), + FX16_CONST(0.7326542716724128), FX16_CONST(-0.680600997795453), + FX16_CONST(0.7316093812238927), FX16_CONST(-0.6817240741716496), + FX16_CONST(0.7305627692278276), FX16_CONST(-0.682845546385248), + FX16_CONST(0.729514438146997), FX16_CONST(-0.6839654117973155), + FX16_CONST(0.7284643904482253), FX16_CONST(-0.6850836677727002), + FX16_CONST(0.7274126286023758), FX16_CONST(-0.6862003116800386), + FX16_CONST(0.7263591550843459), FX16_CONST(-0.6873153408917592), + FX16_CONST(0.7253039723730609), FX16_CONST(-0.6884287527840903), + FX16_CONST(0.7242470829514669), FX16_CONST(-0.6895405447370669), + FX16_CONST(0.7231884893065276), FX16_CONST(-0.6906507141345344), + FX16_CONST(0.7221281939292155), FX16_CONST(-0.6917592583641576), + FX16_CONST(0.7210661993145081), FX16_CONST(-0.6928661748174247), + FX16_CONST(0.7200025079613818), FX16_CONST(-0.6939714608896538), + FX16_CONST(0.7189371223728045), FX16_CONST(-0.6950751139800008), + FX16_CONST(0.7178700450557317), FX16_CONST(-0.696177131491463), + FX16_CONST(0.7168012785210996), FX16_CONST(-0.6972775108308864), + FX16_CONST(0.7157308252838187), FX16_CONST(-0.6983762494089728), + FX16_CONST(0.714658687862769), FX16_CONST(-0.6994733446402839), + FX16_CONST(0.7135848687807936), FX16_CONST(-0.7005687939432482), + FX16_CONST(0.7125093705646923), FX16_CONST(-0.7016625947401685), + FX16_CONST(0.7114321957452167), FX16_CONST(-0.7027547444572251), + FX16_CONST(0.7103533468570624), FX16_CONST(-0.7038452405244848), + FX16_CONST(0.7092728264388656), FX16_CONST(-0.7049340803759049), + FX16_CONST(0.7081906370331955), FX16_CONST(-0.7060212614493396), + FX16_CONST(0.7071067811865476), FX16_CONST(-0.7071067811865475), + FX16_CONST(0.7060212614493397), FX16_CONST(-0.7081906370331954), + FX16_CONST(0.7049340803759051), FX16_CONST(-0.7092728264388655), + FX16_CONST(0.703845240524485), FX16_CONST(-0.7103533468570623), + FX16_CONST(0.7027547444572252), FX16_CONST(-0.7114321957452165), + FX16_CONST(0.7016625947401687), FX16_CONST(-0.7125093705646922), + FX16_CONST(0.7005687939432483), FX16_CONST(-0.7135848687807935), + FX16_CONST(0.699473344640284), FX16_CONST(-0.7146586878627689), + FX16_CONST(0.6983762494089729), FX16_CONST(-0.7157308252838186), + FX16_CONST(0.6972775108308865), FX16_CONST(-0.7168012785210995), + FX16_CONST(0.6961771314914631), FX16_CONST(-0.7178700450557316), + FX16_CONST(0.6950751139800009), FX16_CONST(-0.7189371223728044), + FX16_CONST(0.6939714608896539), FX16_CONST(-0.7200025079613817), + FX16_CONST(0.6928661748174249), FX16_CONST(-0.7210661993145079), + FX16_CONST(0.6917592583641579), FX16_CONST(-0.7221281939292152), + FX16_CONST(0.6906507141345346), FX16_CONST(-0.7231884893065275), + FX16_CONST(0.689540544737067), FX16_CONST(-0.7242470829514668), + FX16_CONST(0.6884287527840904), FX16_CONST(-0.7253039723730608), + FX16_CONST(0.6873153408917593), FX16_CONST(-0.7263591550843458), + FX16_CONST(0.6862003116800387), FX16_CONST(-0.7274126286023757), + FX16_CONST(0.6850836677727004), FX16_CONST(-0.7284643904482252), + FX16_CONST(0.6839654117973156), FX16_CONST(-0.7295144381469968), + FX16_CONST(0.6828455463852481), FX16_CONST(-0.7305627692278275), + FX16_CONST(0.6817240741716497), FX16_CONST(-0.7316093812238926), + FX16_CONST(0.6806009977954532), FX16_CONST(-0.7326542716724127), + FX16_CONST(0.6794763198993651), FX16_CONST(-0.7336974381146603), + FX16_CONST(0.6783500431298614), FX16_CONST(-0.7347388780959635), + FX16_CONST(0.6772221701371806), FX16_CONST(-0.7357785891657134), + FX16_CONST(0.6760927035753159), FX16_CONST(-0.7368165688773698), + FX16_CONST(0.6749616461020123), FX16_CONST(-0.7378528147884658), + FX16_CONST(0.6738290003787561), FX16_CONST(-0.7388873244606151), + FX16_CONST(0.6726947690707729), FX16_CONST(-0.7399200954595162), + FX16_CONST(0.6715589548470186), FX16_CONST(-0.7409511253549589), + FX16_CONST(0.6704215603801732), FX16_CONST(-0.741980411720831), + FX16_CONST(0.669282588346636), FX16_CONST(-0.7430079521351217), + FX16_CONST(0.6681420414265187), FX16_CONST(-0.7440337441799291), + FX16_CONST(0.6669999223036376), FX16_CONST(-0.745057785441466), + FX16_CONST(0.6658562336655096), FX16_CONST(-0.7460800735100638), + FX16_CONST(0.664710978203345), FX16_CONST(-0.74710060598018), + FX16_CONST(0.6635641586120398), FX16_CONST(-0.7481193804504036), + FX16_CONST(0.662415777590172), FX16_CONST(-0.7491363945234591), + FX16_CONST(0.6612658378399923), FX16_CONST(-0.750151645806215), + FX16_CONST(0.6601143420674205), FX16_CONST(-0.7511651319096864), + FX16_CONST(0.6589612929820375), FX16_CONST(-0.7521768504490425), + FX16_CONST(0.6578066932970787), FX16_CONST(-0.7531867990436124), + FX16_CONST(0.656650545729429), FX16_CONST(-0.7541949753168892), + FX16_CONST(0.6554928529996156), FX16_CONST(-0.7552013768965364), + FX16_CONST(0.6543336178318006), FX16_CONST(-0.7562060014143945), + FX16_CONST(0.6531728429537766), FX16_CONST(-0.7572088465064847), + FX16_CONST(0.6520105310969597), FX16_CONST(-0.7582099098130152), + FX16_CONST(0.650846684996381), FX16_CONST(-0.759209188978388), + FX16_CONST(0.6496813073906834), FX16_CONST(-0.7602066816512022), + FX16_CONST(0.6485144010221126), FX16_CONST(-0.7612023854842617), + FX16_CONST(0.6473459686365121), FX16_CONST(-0.7621962981345789), + FX16_CONST(0.6461760129833166), FX16_CONST(-0.7631884172633812), + FX16_CONST(0.645004536815544), FX16_CONST(-0.7641787405361167), + FX16_CONST(0.6438315428897914), FX16_CONST(-0.765167265622459), + FX16_CONST(0.6426570339662271), FX16_CONST(-0.7661539901963128), + FX16_CONST(0.6414810128085832), FX16_CONST(-0.7671389119358204), + FX16_CONST(0.6403034821841516), FX16_CONST(-0.7681220285233654), + FX16_CONST(0.6391244448637758), FX16_CONST(-0.7691033376455795), + FX16_CONST(0.637943903621844), FX16_CONST(-0.7700828369933479), + FX16_CONST(0.6367618612362844), FX16_CONST(-0.7710605242618136), + FX16_CONST(0.6355783204885562), FX16_CONST(-0.7720363971503844), + FX16_CONST(0.6343932841636455), FX16_CONST(-0.773010453362737), + FX16_CONST(0.6332067550500574), FX16_CONST(-0.7739826906068227), + FX16_CONST(0.6320187359398091), FX16_CONST(-0.7749531065948738), + FX16_CONST(0.6308292296284245), FX16_CONST(-0.7759216990434077), + FX16_CONST(0.6296382389149272), FX16_CONST(-0.7768884656732323), + FX16_CONST(0.6284457666018327), FX16_CONST(-0.777853404209453), + FX16_CONST(0.6272518154951441), FX16_CONST(-0.778816512381476), + FX16_CONST(0.6260563884043436), FX16_CONST(-0.7797777879230143), + FX16_CONST(0.6248594881423863), FX16_CONST(-0.7807372285720945), + FX16_CONST(0.6236611175256949), FX16_CONST(-0.7816948320710593), + FX16_CONST(0.6224612793741501), FX16_CONST(-0.7826505961665756), + FX16_CONST(0.6212599765110876), FX16_CONST(-0.7836045186096382), + FX16_CONST(0.6200572117632894), FX16_CONST(-0.784556597155575), + FX16_CONST(0.6188529879609764), FX16_CONST(-0.7855068295640539), + FX16_CONST(0.6176473079378039), FX16_CONST(-0.7864552135990858), + FX16_CONST(0.6164401745308538), FX16_CONST(-0.7874017470290312), + FX16_CONST(0.6152315905806269), FX16_CONST(-0.7883464276266062), + FX16_CONST(0.6140215589310384), FX16_CONST(-0.7892892531688858), + FX16_CONST(0.6128100824294098), FX16_CONST(-0.7902302214373099), + FX16_CONST(0.6115971639264619), FX16_CONST(-0.7911693302176902), + FX16_CONST(0.6103828062763097), FX16_CONST(-0.7921065773002122), + FX16_CONST(0.6091670123364533), FX16_CONST(-0.7930419604794436), + FX16_CONST(0.6079497849677736), FX16_CONST(-0.7939754775543372), + FX16_CONST(0.6067311270345247), FX16_CONST(-0.7949071263282368), + FX16_CONST(0.6055110414043257), FX16_CONST(-0.7958369046088835), + FX16_CONST(0.604289530948156), FX16_CONST(-0.7967648102084187), + FX16_CONST(0.6030665985403484), FX16_CONST(-0.7976908409433909), + FX16_CONST(0.6018422470585801), FX16_CONST(-0.7986149946347608), + FX16_CONST(0.6006164793838689), FX16_CONST(-0.7995372691079051), + FX16_CONST(0.5993892984005647), FX16_CONST(-0.8004576621926226), + FX16_CONST(0.5981607069963424), FX16_CONST(-0.8013761717231402), + FX16_CONST(0.5969307080621967), FX16_CONST(-0.8022927955381155), + FX16_CONST(0.5956993044924335), FX16_CONST(-0.8032075314806448), + FX16_CONST(0.5944664991846644), FX16_CONST(-0.8041203773982657), + FX16_CONST(0.5932322950398), FX16_CONST(-0.8050313311429634), + FX16_CONST(0.591996694962041), FX16_CONST(-0.8059403905711763), + FX16_CONST(0.5907597018588742), FX16_CONST(-0.8068475535437993), + FX16_CONST(0.589521318641064), FX16_CONST(-0.8077528179261902), + FX16_CONST(0.5882815482226453), FX16_CONST(-0.808656181588175), + FX16_CONST(0.5870403935209179), FX16_CONST(-0.8095576424040514), + FX16_CONST(0.585797857456439), FX16_CONST(-0.8104571982525947), + FX16_CONST(0.5845539429530153), FX16_CONST(-0.8113548470170637), + FX16_CONST(0.5833086529376985), FX16_CONST(-0.8122505865852038), + FX16_CONST(0.5820619903407757), FX16_CONST(-0.8131444148492535), + FX16_CONST(0.5808139580957645), FX16_CONST(-0.8140363297059484), + FX16_CONST(0.579564559139406), FX16_CONST(-0.8149263290565264), + FX16_CONST(0.5783137964116557), FX16_CONST(-0.8158144108067338), + FX16_CONST(0.5770616728556794), FX16_CONST(-0.8167005728668278), + FX16_CONST(0.5758081914178454), FX16_CONST(-0.8175848131515836), + FX16_CONST(0.5745533550477159), FX16_CONST(-0.8184671295802987), + FX16_CONST(0.5732971666980421), FX16_CONST(-0.819347520076797), + FX16_CONST(0.5720396293247573), FX16_CONST(-0.8202259825694346), + FX16_CONST(0.5707807458869673), FX16_CONST(-0.8211025149911046), + FX16_CONST(0.5695205193469475), FX16_CONST(-0.8219771152792413), + FX16_CONST(0.5682589526701317), FX16_CONST(-0.8228497813758262), + FX16_CONST(0.5669960488251087), FX16_CONST(-0.8237205112273914), + FX16_CONST(0.5657318107836135), FX16_CONST(-0.8245893027850251), + FX16_CONST(0.5644662415205195), FX16_CONST(-0.8254561540043774), + FX16_CONST(0.5631993440138341), FX16_CONST(-0.8263210628456635), + FX16_CONST(0.5619311212446896), FX16_CONST(-0.827184027273669), + FX16_CONST(0.5606615761973361), FX16_CONST(-0.8280450452577557), + FX16_CONST(0.559390711859136), FX16_CONST(-0.828904114771865), + FX16_CONST(0.5581185312205563), FX16_CONST(-0.8297612337945229), + FX16_CONST(0.5568450372751601), FX16_CONST(-0.8306164003088462), + FX16_CONST(0.5555702330196022), FX16_CONST(-0.8314696123025453), + FX16_CONST(0.5542941214536202), FX16_CONST(-0.8323208677679296), + FX16_CONST(0.5530167055800275), FX16_CONST(-0.8331701647019132), + FX16_CONST(0.5517379884047077), FX16_CONST(-0.8340175011060179), + FX16_CONST(0.5504579729366049), FX16_CONST(-0.83486287498638), + FX16_CONST(0.5491766621877197), FX16_CONST(-0.8357062843537526), + FX16_CONST(0.5478940591731004), FX16_CONST(-0.8365477272235119), + FX16_CONST(0.546610166910835), FX16_CONST(-0.8373872016156618), + FX16_CONST(0.5453249884220464), FX16_CONST(-0.8382247055548381), + FX16_CONST(0.544038526730884), FX16_CONST(-0.8390602370703126), + FX16_CONST(0.5427507848645159), FX16_CONST(-0.8398937941959995), + FX16_CONST(0.5414617658531233), FX16_CONST(-0.8407253749704581), + FX16_CONST(0.540171472729893), FX16_CONST(-0.8415549774368983), + FX16_CONST(0.5388799085310084), FX16_CONST(-0.8423825996431858), + FX16_CONST(0.5375870762956457), FX16_CONST(-0.8432082396418453), + FX16_CONST(0.5362929790659633), FX16_CONST(-0.8440318954900664), + FX16_CONST(0.5349976198870972), FX16_CONST(-0.8448535652497071), + FX16_CONST(0.5337010018071532), FX16_CONST(-0.845673246987299), + FX16_CONST(0.532403127877198), FX16_CONST(-0.846490938774052), + FX16_CONST(0.5311040011512549), FX16_CONST(-0.8473066386858584), + FX16_CONST(0.5298036246862948), FX16_CONST(-0.8481203448032971), + FX16_CONST(0.5285020015422285), FX16_CONST(-0.8489320552116396), + FX16_CONST(0.5271991347819013), FX16_CONST(-0.8497417680008525), + FX16_CONST(0.5258950274710849), FX16_CONST(-0.8505494812656034), + FX16_CONST(0.524589682678469), FX16_CONST(-0.8513551931052652), + FX16_CONST(0.5232831034756567), FX16_CONST(-0.8521589016239196), + FX16_CONST(0.5219752929371544), FX16_CONST(-0.8529606049303636), + FX16_CONST(0.5206662541403672), FX16_CONST(-0.8537603011381114), + FX16_CONST(0.5193559901655898), FX16_CONST(-0.8545579883654004), + FX16_CONST(0.5180445040959994), FX16_CONST(-0.8553536647351959), + FX16_CONST(0.5167317990176498), FX16_CONST(-0.8561473283751945), + FX16_CONST(0.5154178780194631), FX16_CONST(-0.8569389774178287), + FX16_CONST(0.5141027441932218), FX16_CONST(-0.857728610000272), + FX16_CONST(0.512786400633563), FX16_CONST(-0.8585162242644429), + FX16_CONST(0.5114688504379705), FX16_CONST(-0.8593018183570084), + FX16_CONST(0.5101500967067668), FX16_CONST(-0.8600853904293901), + FX16_CONST(0.5088301425431073), FX16_CONST(-0.8608669386377672), + FX16_CONST(0.507508991052971), FX16_CONST(-0.8616464611430813), + FX16_CONST(0.5061866453451552), FX16_CONST(-0.8624239561110405), + FX16_CONST(0.5048631085312677), FX16_CONST(-0.863199421712124), + FX16_CONST(0.5035383837257176), FX16_CONST(-0.8639728561215867), + FX16_CONST(0.5022124740457107), FX16_CONST(-0.8647442575194624), + FX16_CONST(0.5008853826112409), FX16_CONST(-0.865513624090569), + FX16_CONST(0.4995571125450819), FX16_CONST(-0.866280954024513), + FX16_CONST(0.49822766697278176), FX16_CONST(-0.8670462455156926), + FX16_CONST(0.4968970490226547), FX16_CONST(-0.8678094967633032), + FX16_CONST(0.49556526182577254), FX16_CONST(-0.8685707059713409), + FX16_CONST(0.49423230851596), FX16_CONST(-0.8693298713486066), + FX16_CONST(0.49289819222978415), FX16_CONST(-0.8700869911087113), + FX16_CONST(0.4915629161065499), FX16_CONST(-0.8708420634700789), + FX16_CONST(0.4902264832882914), FX16_CONST(-0.8715950866559509), + FX16_CONST(0.4888888969197632), FX16_CONST(-0.8723460588943914), + FX16_CONST(0.4875501601484359), FX16_CONST(-0.8730949784182901), + FX16_CONST(0.4862102761244866), FX16_CONST(-0.8738418434653668), + FX16_CONST(0.4848692480007911), FX16_CONST(-0.8745866522781761), + FX16_CONST(0.48352707893291863), FX16_CONST(-0.8753294031041109), + FX16_CONST(0.4821837720791229), FX16_CONST(-0.8760700941954065), + FX16_CONST(0.48083933060033396), FX16_CONST(-0.8768087238091457), + FX16_CONST(0.4794937576601533), FX16_CONST(-0.8775452902072611), + FX16_CONST(0.4781470564248432), FX16_CONST(-0.8782797916565415), + FX16_CONST(0.4767992300633221), FX16_CONST(-0.8790122264286335), + FX16_CONST(0.4754502817471561), FX16_CONST(-0.8797425928000473), + FX16_CONST(0.4741002146505501), FX16_CONST(-0.8804708890521608), + FX16_CONST(0.47274903195034274), FX16_CONST(-0.8811971134712221), + FX16_CONST(0.4713967368259978), FX16_CONST(-0.8819212643483549), + FX16_CONST(0.4700433324595957), FX16_CONST(-0.8826433399795628), + FX16_CONST(0.46868882203582785), FX16_CONST(-0.8833633386657317), + FX16_CONST(0.4673332087419886), FX16_CONST(-0.8840812587126349), + FX16_CONST(0.4659764957679662), FX16_CONST(-0.8847970984309378), + FX16_CONST(0.4646186863062381), FX16_CONST(-0.8855108561361998), + FX16_CONST(0.4632597835518603), FX16_CONST(-0.8862225301488805), + FX16_CONST(0.46189979070246273), FX16_CONST(-0.8869321187943422), + FX16_CONST(0.4605387109582402), FX16_CONST(-0.8876396204028538), + FX16_CONST(0.4591765475219442), FX16_CONST(-0.8883450333095962), + FX16_CONST(0.4578133035988772), FX16_CONST(-0.8890483558546646), + FX16_CONST(0.45644898239688414), FX16_CONST(-0.8897495863830727), + FX16_CONST(0.4550835871263439), FX16_CONST(-0.8904487232447579), + FX16_CONST(0.45371712100016376), FX16_CONST(-0.8911457647945833), + FX16_CONST(0.45234958723377106), FX16_CONST(-0.8918407093923426), + FX16_CONST(0.45098098904510386), FX16_CONST(-0.8925335554027646), + FX16_CONST(0.4496113296546069), FX16_CONST(-0.8932243011955152), + FX16_CONST(0.44824061228522005), FX16_CONST(-0.8939129451452031), + FX16_CONST(0.44686884016237416), FX16_CONST(-0.8945994856313827), + FX16_CONST(0.44549601651398196), FX16_CONST(-0.8952839210385574), + FX16_CONST(0.4441221445704293), FX16_CONST(-0.8959662497561851), + FX16_CONST(0.44274722756456997), FX16_CONST(-0.8966464701786803), + FX16_CONST(0.4413712687317169), FX16_CONST(-0.8973245807054182), + FX16_CONST(0.4399942713096333), FX16_CONST(-0.8980005797407398), + FX16_CONST(0.43861623853852755), FX16_CONST(-0.8986744656939539), + FX16_CONST(0.43723717366104425), FX16_CONST(-0.8993462369793415), + FX16_CONST(0.43585707992225553), FX16_CONST(-0.9000158920161602), + FX16_CONST(0.434475960569656), FX16_CONST(-0.9006834292286467), + FX16_CONST(0.43309381885315207), FX16_CONST(-0.9013488470460219), + FX16_CONST(0.43171065802505726), FX16_CONST(-0.9020121439024932), + FX16_CONST(0.4303264813400829), FX16_CONST(-0.9026733182372587), + FX16_CONST(0.4289412920553296), FX16_CONST(-0.9033323684945118), + FX16_CONST(0.42755509343028203), FX16_CONST(-0.9039892931234433), + FX16_CONST(0.42616788872679984), FX16_CONST(-0.9046440905782461), + FX16_CONST(0.42477968120910886), FX16_CONST(-0.9052967593181187), + FX16_CONST(0.42339047414379594), FX16_CONST(-0.9059472978072685), + FX16_CONST(0.42200027079979985), FX16_CONST(-0.9065957045149153), + FX16_CONST(0.42060907444840256), FX16_CONST(-0.9072419779152958), + FX16_CONST(0.41921688836322424), FX16_CONST(-0.907886116487666), + FX16_CONST(0.41782371582021244), FX16_CONST(-0.9085281187163061), + FX16_CONST(0.41642956009763715), FX16_CONST(-0.9091679830905224), + FX16_CONST(0.41503442447608185), FX16_CONST(-0.9098057081046521), + FX16_CONST(0.41363831223843467), FX16_CONST(-0.9104412922580671), + FX16_CONST(0.41224122666988283), FX16_CONST(-0.9110747340551764), + FX16_CONST(0.41084317105790413), FX16_CONST(-0.9117060320054298), + FX16_CONST(0.4094441486922577), FX16_CONST(-0.9123351846233227), + FX16_CONST(0.4080441628649786), FX16_CONST(-0.9129621904283982), + FX16_CONST(0.4066432168703692), FX16_CONST(-0.9135870479452507), + FX16_CONST(0.4052413140049899), FX16_CONST(-0.9142097557035307), + FX16_CONST(0.4038384575676544), FX16_CONST(-0.914830312237946), + FX16_CONST(0.4024346508594186), FX16_CONST(-0.9154487160882677), + FX16_CONST(0.4010298971835756), FX16_CONST(-0.9160649657993317), + FX16_CONST(0.39962419984564707), FX16_CONST(-0.9166790599210426), + FX16_CONST(0.39821756215337367), FX16_CONST(-0.9172909970083779), + FX16_CONST(0.39680998741671025), FX16_CONST(-0.9179007756213905), + FX16_CONST(0.3954014789478165), FX16_CONST(-0.9185083943252121), + FX16_CONST(0.39399204006104815), FX16_CONST(-0.9191138516900578), + FX16_CONST(0.3925816740729514), FX16_CONST(-0.9197171462912274), + FX16_CONST(0.39117038430225404), FX16_CONST(-0.9203182767091105), + FX16_CONST(0.38975817406985647), FX16_CONST(-0.9209172415291894), + FX16_CONST(0.3883450466988266), FX16_CONST(-0.9215140393420418), + FX16_CONST(0.38693100551438875), FX16_CONST(-0.9221086687433451), + FX16_CONST(0.38551605384391885), FX16_CONST(-0.9227011283338786), + FX16_CONST(0.3841001950169353), FX16_CONST(-0.9232914167195275), + FX16_CONST(0.3826834323650899), FX16_CONST(-0.9238795325112867), + FX16_CONST(0.3812657692221623), FX16_CONST(-0.9244654743252626), + FX16_CONST(0.3798472089240514), FX16_CONST(-0.9250492407826775), + FX16_CONST(0.37842775480876567), FX16_CONST(-0.9256308305098727), + FX16_CONST(0.37700741021641815), FX16_CONST(-0.9262102421383114), + FX16_CONST(0.3755861784892174), FX16_CONST(-0.9267874743045817), + FX16_CONST(0.37416406297145804), FX16_CONST(-0.9273625256504011), + FX16_CONST(0.3727410670095161), FX16_CONST(-0.9279353948226178), + FX16_CONST(0.3713171939518377), FX16_CONST(-0.9285060804732155), + FX16_CONST(0.3698924471489341), FX16_CONST(-0.9290745812593159), + FX16_CONST(0.3684668299533726), FX16_CONST(-0.9296408958431812), + FX16_CONST(0.3670403457197673), FX16_CONST(-0.9302050228922191), + FX16_CONST(0.3656129978047738), FX16_CONST(-0.9307669610789837), + FX16_CONST(0.3641847895670801), FX16_CONST(-0.9313267090811803), + FX16_CONST(0.3627557243673973), FX16_CONST(-0.931884265581668), + FX16_CONST(0.3613258055684542), FX16_CONST(-0.9324396292684625), + FX16_CONST(0.35989503653498833), FX16_CONST(-0.9329927988347388), + FX16_CONST(0.3584634206337366), FX16_CONST(-0.9335437729788362), + FX16_CONST(0.3570309612334303), FX16_CONST(-0.9340925504042588), + FX16_CONST(0.355597661704784), FX16_CONST(-0.9346391298196807), + FX16_CONST(0.3541635254204904), FX16_CONST(-0.9351835099389476), + FX16_CONST(0.35272855575521095), FX16_CONST(-0.9357256894810803), + FX16_CONST(0.3512927560855672), FX16_CONST(-0.9362656671702783), + FX16_CONST(0.34985612979013486), FX16_CONST(-0.9368034417359217), + FX16_CONST(0.3484186802494348), FX16_CONST(-0.9373390119125748), + FX16_CONST(0.34698041084592374), FX16_CONST(-0.9378723764399898), + FX16_CONST(0.345541324963989), FX16_CONST(-0.9384035340631082), + FX16_CONST(0.34410142598993904), FX16_CONST(-0.9389324835320645), + FX16_CONST(0.34266071731199443), FX16_CONST(-0.9394592236021899), + FX16_CONST(0.3412192023202827), FX16_CONST(-0.9399837530340138), + FX16_CONST(0.339776884406827), FX16_CONST(-0.9405060705932683), + FX16_CONST(0.3383337669655412), FX16_CONST(-0.9410261750508893), + FX16_CONST(0.33688985339222033), FX16_CONST(-0.9415440651830207), + FX16_CONST(0.3354451470845317), FX16_CONST(-0.9420597397710173), + FX16_CONST(0.3339996514420094), FX16_CONST(-0.9425731976014469), + FX16_CONST(0.33255336986604445), FX16_CONST(-0.9430844374660934), + FX16_CONST(0.3311063057598765), FX16_CONST(-0.9435934581619604), + FX16_CONST(0.32965846252858744), FX16_CONST(-0.9441002584912727), + FX16_CONST(0.3282098435790927), FX16_CONST(-0.9446048372614801), + FX16_CONST(0.32676045232013184), FX16_CONST(-0.9451071932852606), + FX16_CONST(0.32531029216226326), FX16_CONST(-0.9456073253805212), + FX16_CONST(0.323859366517853), FX16_CONST(-0.9461052323704033), + FX16_CONST(0.32240767880106985), FX16_CONST(-0.9466009130832835), + FX16_CONST(0.3209552324278755), FX16_CONST(-0.9470943663527771), + FX16_CONST(0.3195020308160158), FX16_CONST(-0.9475855910177411), + FX16_CONST(0.3180480773850149), FX16_CONST(-0.9480745859222762), + FX16_CONST(0.31659337555616607), FX16_CONST(-0.9485613499157303), + FX16_CONST(0.3151379287525225), FX16_CONST(-0.9490458818527006), + FX16_CONST(0.3136817403988914), FX16_CONST(-0.9495281805930367), + FX16_CONST(0.3122248139218251), FX16_CONST(-0.950008245001843), + FX16_CONST(0.31076715274961153), FX16_CONST(-0.9504860739494817), + FX16_CONST(0.309308760312269), FX16_CONST(-0.950961666311575), + FX16_CONST(0.30784964004153503), FX16_CONST(-0.9514350209690083), + FX16_CONST(0.3063897953708609), FX16_CONST(-0.9519061368079323), + FX16_CONST(0.30492922973540265), FX16_CONST(-0.9523750127197658), + FX16_CONST(0.3034679465720114), FX16_CONST(-0.9528416476011986), + FX16_CONST(0.30200594931922803), FX16_CONST(-0.9533060403541939), + FX16_CONST(0.3005432414172737), FX16_CONST(-0.9537681898859902), + FX16_CONST(0.29907982630804053), FX16_CONST(-0.9542280951091056), + FX16_CONST(0.29761570743508614), FX16_CONST(-0.9546857549413383), + FX16_CONST(0.296150888243624), FX16_CONST(-0.9551411683057707), + FX16_CONST(0.2946853721805144), FX16_CONST(-0.9555943341307711), + FX16_CONST(0.29321916269425896), FX16_CONST(-0.9560452513499963), + FX16_CONST(0.29175226323498943), FX16_CONST(-0.956493918902395), + FX16_CONST(0.2902846772544624), FX16_CONST(-0.9569403357322088), + FX16_CONST(0.28881640820604976), FX16_CONST(-0.9573845007889759), + FX16_CONST(0.2873474595447296), FX16_CONST(-0.9578264130275329), + FX16_CONST(0.28587783472708056), FX16_CONST(-0.9582660714080177), + FX16_CONST(0.2844075372112721), FX16_CONST(-0.9587034748958715), + FX16_CONST(0.28293657045705545), FX16_CONST(-0.9591386224618419), + FX16_CONST(0.2814649379257579), FX16_CONST(-0.9595715130819845), + FX16_CONST(0.27999264308027344), FX16_CONST(-0.9600021457376658), + FX16_CONST(0.27851968938505317), FX16_CONST(-0.9604305194155658), + FX16_CONST(0.27704608030610023), FX16_CONST(-0.9608566331076795), + FX16_CONST(0.2755718193109583), FX16_CONST(-0.9612804858113206), + FX16_CONST(0.2740969098687064), FX16_CONST(-0.9617020765291225), + FX16_CONST(0.27262135544994925), FX16_CONST(-0.9621214042690415), + FX16_CONST(0.2711451595268081), FX16_CONST(-0.9625384680443592), + FX16_CONST(0.2696683255729151), FX16_CONST(-0.9629532668736839), + FX16_CONST(0.2681908570634034), FX16_CONST(-0.9633657997809539), + FX16_CONST(0.2667127574748985), FX16_CONST(-0.9637760657954398), + FX16_CONST(0.26523403028551173), FX16_CONST(-0.9641840639517458), + FX16_CONST(0.26375467897483157), FX16_CONST(-0.9645897932898126), + FX16_CONST(0.2622747070239137), FX16_CONST(-0.9649932528549203), + FX16_CONST(0.26079411791527585), FX16_CONST(-0.9653944416976893), + FX16_CONST(0.2593129151328864), FX16_CONST(-0.9657933588740836), + FX16_CONST(0.257831102162159), FX16_CONST(-0.9661900034454125), + FX16_CONST(0.2563486824899432), FX16_CONST(-0.966584374478333), + FX16_CONST(0.2548656596045147), FX16_CONST(-0.9669764710448521), + FX16_CONST(0.2533820369955701), FX16_CONST(-0.9673662922223285), + FX16_CONST(0.2518978181542172), FX16_CONST(-0.9677538370934754), + FX16_CONST(0.25041300657296534), FX16_CONST(-0.9681391047463623), + FX16_CONST(0.2489276057457201), FX16_CONST(-0.9685220942744174), + FX16_CONST(0.2474416191677735), FX16_CONST(-0.9689028047764289), + FX16_CONST(0.24595505033579465), FX16_CONST(-0.9692812353565484), + FX16_CONST(0.24446790274782448), FX16_CONST(-0.9696573851242923), + FX16_CONST(0.24298017990326407), FX16_CONST(-0.970031253194544), + FX16_CONST(0.24149188530286936), FX16_CONST(-0.9704028386875555), + FX16_CONST(0.24000302244874178), FX16_CONST(-0.9707721407289502), + FX16_CONST(0.23851359484431855), FX16_CONST(-0.9711391584497251), + FX16_CONST(0.23702360599436717), FX16_CONST(-0.9715038909862518), + FX16_CONST(0.23553305940497574), FX16_CONST(-0.9718663374802793), + FX16_CONST(0.2340419585835435), FX16_CONST(-0.9722264970789363), + FX16_CONST(0.23255030703877516), FX16_CONST(-0.9725843689347322), + FX16_CONST(0.23105810828067133), FX16_CONST(-0.9729399522055601), + FX16_CONST(0.22956536582051892), FX16_CONST(-0.9732932460546982), + FX16_CONST(0.22807208317088606), FX16_CONST(-0.9736442496508119), + FX16_CONST(0.22657826384561017), FX16_CONST(-0.9739929621679558), + FX16_CONST(0.22508391135979283), FX16_CONST(-0.9743393827855759), + FX16_CONST(0.2235890292297903), FX16_CONST(-0.9746835106885107), + FX16_CONST(0.22209362097320365), FX16_CONST(-0.9750253450669941), + FX16_CONST(0.2205976901088735), FX16_CONST(-0.975364885116657), + FX16_CONST(0.21910124015687005), FX16_CONST(-0.9757021300385285), + FX16_CONST(0.21760427463848372), FX16_CONST(-0.976037079039039), + FX16_CONST(0.21610679707621944), FX16_CONST(-0.9763697313300211), + FX16_CONST(0.21460881099378698), FX16_CONST(-0.9767000861287117), + FX16_CONST(0.21311031991609142), FX16_CONST(-0.9770281426577544), + FX16_CONST(0.2116113273692279), FX16_CONST(-0.9773539001452), + FX16_CONST(0.2101118368804698), FX16_CONST(-0.9776773578245099), + FX16_CONST(0.2086118519782635), FX16_CONST(-0.9779985149345571), + FX16_CONST(0.20711137619221884), FX16_CONST(-0.9783173707196275), + FX16_CONST(0.20561041305309938), FX16_CONST(-0.9786339244294231), + FX16_CONST(0.20410896609281684), FX16_CONST(-0.9789481753190622), + FX16_CONST(0.20260703884442138), FX16_CONST(-0.979260122649082), + FX16_CONST(0.201104634842092), FX16_CONST(-0.9795697656854405), + FX16_CONST(0.19960175762113092), FX16_CONST(-0.9798771036995176), + FX16_CONST(0.1980984107179538), FX16_CONST(-0.9801821359681173), + FX16_CONST(0.19659459767008028), FX16_CONST(-0.9804848617734694), + FX16_CONST(0.1950903220161286), FX16_CONST(-0.9807852804032304), + FX16_CONST(0.1935855872958038), FX16_CONST(-0.9810833911504866), + FX16_CONST(0.19208039704989247), FX16_CONST(-0.9813791933137546), + FX16_CONST(0.19057475482025307), FX16_CONST(-0.9816726861969831), + FX16_CONST(0.18906866414980636), FX16_CONST(-0.9819638691095552), + FX16_CONST(0.18756212858252957), FX16_CONST(-0.9822527413662894), + FX16_CONST(0.1860551516634469), FX16_CONST(-0.9825393022874412), + FX16_CONST(0.1845477369386197), FX16_CONST(-0.9828235511987052), + FX16_CONST(0.1830398879551409), FX16_CONST(-0.9831054874312163), + FX16_CONST(0.18153160826112522), FX16_CONST(-0.9833851103215512), + FX16_CONST(0.18002290140569957), FX16_CONST(-0.9836624192117303), + FX16_CONST(0.17851377093899742), FX16_CONST(-0.9839374134492189), + FX16_CONST(0.17700422041214894), FX16_CONST(-0.984210092386929), + FX16_CONST(0.17549425337727145), FX16_CONST(-0.9844804553832209), + FX16_CONST(0.17398387338746413), FX16_CONST(-0.9847485018019042), + FX16_CONST(0.17247308399679612), FX16_CONST(-0.9850142310122398), + FX16_CONST(0.17096188876030122), FX16_CONST(-0.9852776423889412), + FX16_CONST(0.1694502912339682), FX16_CONST(-0.9855387353121761), + FX16_CONST(0.16793829497473128), FX16_CONST(-0.9857975091675674), + FX16_CONST(0.16642590354046405), FX16_CONST(-0.9860539633461954), + FX16_CONST(0.16491312048997014), FX16_CONST(-0.9863080972445986), + FX16_CONST(0.16339994938297328), FX16_CONST(-0.9865599102647754), + FX16_CONST(0.16188639378011174), FX16_CONST(-0.9868094018141855), + FX16_CONST(0.16037245724292845), FX16_CONST(-0.987056571305751), + FX16_CONST(0.15885814333386147), FX16_CONST(-0.9873014181578584), + FX16_CONST(0.15734345561623855), FX16_CONST(-0.9875439417943592), + FX16_CONST(0.15582839765426537), FX16_CONST(-0.9877841416445722), + FX16_CONST(0.15431297301302008), FX16_CONST(-0.9880220171432835), + FX16_CONST(0.15279718525844369), FX16_CONST(-0.9882575677307495), + FX16_CONST(0.1512810379573303), FX16_CONST(-0.9884907928526966), + FX16_CONST(0.14976453467732145), FX16_CONST(-0.9887216919603238), + FX16_CONST(0.14824767898689625), FX16_CONST(-0.988950264510303), + FX16_CONST(0.1467304744553618), FX16_CONST(-0.989176509964781), + FX16_CONST(0.14521292465284735), FX16_CONST(-0.9894004277913804), + FX16_CONST(0.14369503315029464), FX16_CONST(-0.9896220174632008), + FX16_CONST(0.1421768035194481), FX16_CONST(-0.9898412784588205), + FX16_CONST(0.14065823933284954), FX16_CONST(-0.990058210262297), + FX16_CONST(0.13913934416382634), FX16_CONST(-0.9902728123631691), + FX16_CONST(0.13762012158648604), FX16_CONST(-0.9904850842564571), + FX16_CONST(0.13610057517570648), FX16_CONST(-0.9906950254426646), + FX16_CONST(0.13458070850712628), FX16_CONST(-0.99090263542778), + FX16_CONST(0.133060525157139), FX16_CONST(-0.9911079137232769), + FX16_CONST(0.13154002870288334), FX16_CONST(-0.9913108598461154), + FX16_CONST(0.13001922272223343), FX16_CONST(-0.9915114733187439), + FX16_CONST(0.12849811079379309), FX16_CONST(-0.9917097536690995), + FX16_CONST(0.12697669649688606), FX16_CONST(-0.9919057004306093), + FX16_CONST(0.12545498341154626), FX16_CONST(-0.9920993131421918), + FX16_CONST(0.12393297511851248), FX16_CONST(-0.9922905913482573), + FX16_CONST(0.12241067519921635), FX16_CONST(-0.99247953459871), + FX16_CONST(0.12088808723577706), FX16_CONST(-0.992666142448948), + FX16_CONST(0.11936521481099163), FX16_CONST(-0.9928504144598651), + FX16_CONST(0.11784206150832509), FX16_CONST(-0.9930323501978514), + FX16_CONST(0.11631863091190471), FX16_CONST(-0.9932119492347945), + FX16_CONST(0.1147949266065103), FX16_CONST(-0.9933892111480807), + FX16_CONST(0.11327095217756442), FX16_CONST(-0.9935641355205953), + FX16_CONST(0.1117467112111265), FX16_CONST(-0.9937367219407246), + FX16_CONST(0.11022220729388324), FX16_CONST(-0.9939069700023561), + FX16_CONST(0.10869744401313874), FX16_CONST(-0.9940748793048794), + FX16_CONST(0.10717242495680916), FX16_CONST(-0.9942404494531879), + FX16_CONST(0.10564715371341075), FX16_CONST(-0.9944036800576791), + FX16_CONST(0.10412163387205457), FX16_CONST(-0.9945645707342554), + FX16_CONST(0.10259586902243656), FX16_CONST(-0.9947231211043257), + FX16_CONST(0.10106986275482793), FX16_CONST(-0.9948793307948056), + FX16_CONST(0.09954361866006928), FX16_CONST(-0.9950331994381186), + FX16_CONST(0.09801714032956083), FX16_CONST(-0.9951847266721968), + FX16_CONST(0.09649043135525266), FX16_CONST(-0.9953339121404823), + FX16_CONST(0.09496349532963891), FX16_CONST(-0.9954807554919269), + FX16_CONST(0.09343633584574797), FX16_CONST(-0.9956252563809943), + FX16_CONST(0.09190895649713275), FX16_CONST(-0.9957674144676598), + FX16_CONST(0.09038136087786529), FX16_CONST(-0.9959072294174117), + FX16_CONST(0.08885355258252475), FX16_CONST(-0.996044700901252), + FX16_CONST(0.08732553520619206), FX16_CONST(-0.996179828595697), + FX16_CONST(0.08579731234444016), FX16_CONST(-0.996312612182778), + FX16_CONST(0.08426888759332418), FX16_CONST(-0.9964430513500426), + FX16_CONST(0.08274026454937564), FX16_CONST(-0.9965711457905548), + FX16_CONST(0.08121144680959266), FX16_CONST(-0.9966968952028961), + FX16_CONST(0.0796824379714302), FX16_CONST(-0.9968202992911657), + FX16_CONST(0.07815324163279415), FX16_CONST(-0.9969413577649822), + FX16_CONST(0.07662386139203169), FX16_CONST(-0.997060070339483), + FX16_CONST(0.07509430084792135), FX16_CONST(-0.9971764367353261), + FX16_CONST(0.07356456359966773), FX16_CONST(-0.9972904566786902), + FX16_CONST(0.07203465324688947), FX16_CONST(-0.9974021299012753), + FX16_CONST(0.07050457338961386), FX16_CONST(-0.9975114561403035), + FX16_CONST(0.06897432762826702), FX16_CONST(-0.9976184351385196), + FX16_CONST(0.06744391956366418), FX16_CONST(-0.9977230666441916), + FX16_CONST(0.06591335279700376), FX16_CONST(-0.9978253504111116), + FX16_CONST(0.0643826309298577), FX16_CONST(-0.997925286198596), + FX16_CONST(0.06285175756416149), FX16_CONST(-0.9980228737714862), + FX16_CONST(0.06132073630220849), FX16_CONST(-0.9981181129001492), + FX16_CONST(0.05978957074664007), FX16_CONST(-0.9982110033604782), + FX16_CONST(0.058258264500435794), FX16_CONST(-0.9983015449338929), + FX16_CONST(0.05672682116690807), FX16_CONST(-0.9983897374073402), + FX16_CONST(0.055195244349690094), FX16_CONST(-0.9984755805732948), + FX16_CONST(0.05366353765273052), FX16_CONST(-0.9985590742297593), + FX16_CONST(0.052131704680283594), FX16_CONST(-0.9986402181802652), + FX16_CONST(0.05059974903689939), FX16_CONST(-0.9987190122338729), + FX16_CONST(0.049067674327417966), FX16_CONST(-0.9987954562051724), + FX16_CONST(0.04753548415695954), FX16_CONST(-0.9988695499142836), + FX16_CONST(0.046003182130914706), FX16_CONST(-0.9989412931868569), + FX16_CONST(0.044470771854938584), FX16_CONST(-0.9990106858540734), + FX16_CONST(0.04293825693494102), FX16_CONST(-0.9990777277526454), + FX16_CONST(0.041405640977076774), FX16_CONST(-0.9991424187248169), + FX16_CONST(0.03987292758774013), FX16_CONST(-0.9992047586183639), + FX16_CONST(0.038340120373552854), FX16_CONST(-0.9992647472865944), + FX16_CONST(0.03680722294135883), FX16_CONST(-0.9993223845883495), + FX16_CONST(0.03527423889821423), FX16_CONST(-0.9993776703880028), + FX16_CONST(0.033741171851377705), FX16_CONST(-0.9994306045554617), + FX16_CONST(0.032208025408304544), FX16_CONST(-0.999481186966167), + FX16_CONST(0.030674803176636865), FX16_CONST(-0.9995294175010931), + FX16_CONST(0.029141508764193802), FX16_CONST(-0.9995752960467492), + FX16_CONST(0.02760814577896566), FX16_CONST(-0.9996188224951786), + FX16_CONST(0.0260747178291041), FX16_CONST(-0.9996599967439592), + FX16_CONST(0.024541228522912326), FX16_CONST(-0.9996988186962042), + FX16_CONST(0.023007681468839695), FX16_CONST(-0.9997352882605617), + FX16_CONST(0.021474080275469667), FX16_CONST(-0.9997694053512153), + FX16_CONST(0.019940428551514438), FX16_CONST(-0.9998011698878843), + FX16_CONST(0.0184067299058051), FX16_CONST(-0.9998305817958234), + FX16_CONST(0.016872987947281835), FX16_CONST(-0.9998576410058239), + FX16_CONST(0.01533920628498806), FX16_CONST(-0.9998823474542126), + FX16_CONST(0.013805388528060632), FX16_CONST(-0.9999047010828528), + FX16_CONST(0.012271538285720007), FX16_CONST(-0.9999247018391445), + FX16_CONST(0.01073765916726441), FX16_CONST(-0.9999423496760239), + FX16_CONST(0.00920375478206002), FX16_CONST(-0.9999576445519639), + FX16_CONST(0.007669828739531138), FX16_CONST(-0.9999705864309741), + FX16_CONST(0.006135884649154799), FX16_CONST(-0.9999811752826011), + FX16_CONST(0.004601926120448733), FX16_CONST(-0.9999894110819284), + FX16_CONST(0.003067956762965977), FX16_CONST(-0.9999952938095762), + FX16_CONST(0.0015339801862850493), FX16_CONST(-0.9999988234517019), + FX16_CONST(1.2246467991473532e-16), FX16_CONST(-1.0), + FX16_CONST(-0.0015339801862848043), FX16_CONST(-0.9999988234517019), + FX16_CONST(-0.0030679567629657324), FX16_CONST(-0.9999952938095762), + FX16_CONST(-0.004601926120448488), FX16_CONST(-0.9999894110819284), + FX16_CONST(-0.006135884649154554), FX16_CONST(-0.9999811752826011), + FX16_CONST(-0.007669828739530893), FX16_CONST(-0.9999705864309741), + FX16_CONST(-0.009203754782059776), FX16_CONST(-0.9999576445519639), + FX16_CONST(-0.010737659167264166), FX16_CONST(-0.9999423496760239), + FX16_CONST(-0.012271538285719762), FX16_CONST(-0.9999247018391445), + FX16_CONST(-0.013805388528060387), FX16_CONST(-0.9999047010828529), + FX16_CONST(-0.015339206284987816), FX16_CONST(-0.9998823474542126), + FX16_CONST(-0.01687298794728159), FX16_CONST(-0.9998576410058239), + FX16_CONST(-0.01840672990580486), FX16_CONST(-0.9998305817958234), + FX16_CONST(-0.01994042855151419), FX16_CONST(-0.9998011698878843), + FX16_CONST(-0.02147408027546942), FX16_CONST(-0.9997694053512153), + FX16_CONST(-0.02300768146883945), FX16_CONST(-0.9997352882605617), + FX16_CONST(-0.02454122852291208), FX16_CONST(-0.9996988186962042), + FX16_CONST(-0.026074717829103856), FX16_CONST(-0.9996599967439592), + FX16_CONST(-0.027608145778965414), FX16_CONST(-0.9996188224951786), + FX16_CONST(-0.029141508764193556), FX16_CONST(-0.9995752960467492), + FX16_CONST(-0.03067480317663662), FX16_CONST(-0.9995294175010931), + FX16_CONST(-0.032208025408304294), FX16_CONST(-0.999481186966167), + FX16_CONST(-0.033741171851377455), FX16_CONST(-0.9994306045554617), + FX16_CONST(-0.03527423889821398), FX16_CONST(-0.9993776703880028), + FX16_CONST(-0.03680722294135858), FX16_CONST(-0.9993223845883495), + FX16_CONST(-0.03834012037355261), FX16_CONST(-0.9992647472865944), + FX16_CONST(-0.03987292758773989), FX16_CONST(-0.9992047586183639), + FX16_CONST(-0.04140564097707653), FX16_CONST(-0.9991424187248169), + FX16_CONST(-0.04293825693494078), FX16_CONST(-0.9990777277526454), + FX16_CONST(-0.044470771854938335), FX16_CONST(-0.9990106858540734), + FX16_CONST(-0.046003182130914456), FX16_CONST(-0.9989412931868569), + FX16_CONST(-0.047535484156959296), FX16_CONST(-0.9988695499142836), + FX16_CONST(-0.049067674327417724), FX16_CONST(-0.9987954562051724), + FX16_CONST(-0.05059974903689915), FX16_CONST(-0.9987190122338729), + FX16_CONST(-0.05213170468028335), FX16_CONST(-0.9986402181802653), + FX16_CONST(-0.05366353765273028), FX16_CONST(-0.9985590742297593), + FX16_CONST(-0.05519524434968985), FX16_CONST(-0.9984755805732948), + FX16_CONST(-0.05672682116690782), FX16_CONST(-0.9983897374073402), + FX16_CONST(-0.05825826450043555), FX16_CONST(-0.9983015449338929), + FX16_CONST(-0.05978957074663983), FX16_CONST(-0.9982110033604782), + FX16_CONST(-0.061320736302208245), FX16_CONST(-0.9981181129001492), + FX16_CONST(-0.06285175756416124), FX16_CONST(-0.9980228737714862), + FX16_CONST(-0.06438263092985745), FX16_CONST(-0.997925286198596), + FX16_CONST(-0.06591335279700353), FX16_CONST(-0.9978253504111116), + FX16_CONST(-0.06744391956366393), FX16_CONST(-0.9977230666441916), + FX16_CONST(-0.06897432762826677), FX16_CONST(-0.9976184351385196), + FX16_CONST(-0.0705045733896136), FX16_CONST(-0.9975114561403035), + FX16_CONST(-0.07203465324688924), FX16_CONST(-0.9974021299012753), + FX16_CONST(-0.0735645635996675), FX16_CONST(-0.9972904566786902), + FX16_CONST(-0.0750943008479211), FX16_CONST(-0.9971764367353262), + FX16_CONST(-0.07662386139203144), FX16_CONST(-0.997060070339483), + FX16_CONST(-0.0781532416327939), FX16_CONST(-0.9969413577649822), + FX16_CONST(-0.07968243797142995), FX16_CONST(-0.9968202992911658), + FX16_CONST(-0.08121144680959243), FX16_CONST(-0.9966968952028961), + FX16_CONST(-0.0827402645493754), FX16_CONST(-0.9965711457905548), + FX16_CONST(-0.08426888759332393), FX16_CONST(-0.9964430513500426), + FX16_CONST(-0.08579731234443992), FX16_CONST(-0.996312612182778), + FX16_CONST(-0.08732553520619181), FX16_CONST(-0.996179828595697), + FX16_CONST(-0.0888535525825245), FX16_CONST(-0.996044700901252), + FX16_CONST(-0.09038136087786505), FX16_CONST(-0.9959072294174117), + FX16_CONST(-0.09190895649713252), FX16_CONST(-0.9957674144676598), + FX16_CONST(-0.09343633584574773), FX16_CONST(-0.9956252563809943), + FX16_CONST(-0.09496349532963866), FX16_CONST(-0.9954807554919269), + FX16_CONST(-0.09649043135525241), FX16_CONST(-0.9953339121404823), + FX16_CONST(-0.09801714032956059), FX16_CONST(-0.9951847266721969), + FX16_CONST(-0.09954361866006904), FX16_CONST(-0.9950331994381186), + FX16_CONST(-0.10106986275482768), FX16_CONST(-0.9948793307948056), + FX16_CONST(-0.10259586902243631), FX16_CONST(-0.9947231211043257), + FX16_CONST(-0.10412163387205432), FX16_CONST(-0.9945645707342555), + FX16_CONST(-0.10564715371341052), FX16_CONST(-0.9944036800576791), + FX16_CONST(-0.10717242495680891), FX16_CONST(-0.9942404494531879), + FX16_CONST(-0.1086974440131385), FX16_CONST(-0.9940748793048795), + FX16_CONST(-0.110222207293883), FX16_CONST(-0.9939069700023561), + FX16_CONST(-0.11174671121112625), FX16_CONST(-0.9937367219407247), + FX16_CONST(-0.11327095217756417), FX16_CONST(-0.9935641355205953), + FX16_CONST(-0.11479492660651007), FX16_CONST(-0.9933892111480807), + FX16_CONST(-0.11631863091190447), FX16_CONST(-0.9932119492347946), + FX16_CONST(-0.11784206150832484), FX16_CONST(-0.9930323501978514), + FX16_CONST(-0.11936521481099138), FX16_CONST(-0.9928504144598651), + FX16_CONST(-0.12088808723577682), FX16_CONST(-0.992666142448948), + FX16_CONST(-0.1224106751992161), FX16_CONST(-0.99247953459871), + FX16_CONST(-0.12393297511851223), FX16_CONST(-0.9922905913482574), + FX16_CONST(-0.125454983411546), FX16_CONST(-0.9920993131421918), + FX16_CONST(-0.1269766964968858), FX16_CONST(-0.9919057004306093), + FX16_CONST(-0.12849811079379284), FX16_CONST(-0.9917097536690995), + FX16_CONST(-0.13001922272223318), FX16_CONST(-0.991511473318744), + FX16_CONST(-0.1315400287028831), FX16_CONST(-0.9913108598461154), + FX16_CONST(-0.13306052515713876), FX16_CONST(-0.9911079137232769), + FX16_CONST(-0.13458070850712606), FX16_CONST(-0.99090263542778), + FX16_CONST(-0.13610057517570623), FX16_CONST(-0.9906950254426646), + FX16_CONST(-0.1376201215864858), FX16_CONST(-0.9904850842564571), + FX16_CONST(-0.13913934416382612), FX16_CONST(-0.9902728123631691), + FX16_CONST(-0.1406582393328493), FX16_CONST(-0.9900582102622971), + FX16_CONST(-0.14217680351944784), FX16_CONST(-0.9898412784588205), + FX16_CONST(-0.1436950331502944), FX16_CONST(-0.9896220174632009), + FX16_CONST(-0.14521292465284713), FX16_CONST(-0.9894004277913804), + FX16_CONST(-0.14673047445536158), FX16_CONST(-0.989176509964781), + FX16_CONST(-0.14824767898689603), FX16_CONST(-0.988950264510303), + FX16_CONST(-0.1497645346773212), FX16_CONST(-0.9887216919603238), + FX16_CONST(-0.15128103795733008), FX16_CONST(-0.9884907928526967), + FX16_CONST(-0.15279718525844344), FX16_CONST(-0.9882575677307495), + FX16_CONST(-0.15431297301301983), FX16_CONST(-0.9880220171432836), + FX16_CONST(-0.15582839765426512), FX16_CONST(-0.9877841416445722), + FX16_CONST(-0.1573434556162383), FX16_CONST(-0.9875439417943592), + FX16_CONST(-0.15885814333386122), FX16_CONST(-0.9873014181578584), + FX16_CONST(-0.1603724572429282), FX16_CONST(-0.987056571305751), + FX16_CONST(-0.1618863937801115), FX16_CONST(-0.9868094018141855), + FX16_CONST(-0.16339994938297306), FX16_CONST(-0.9865599102647755), + FX16_CONST(-0.1649131204899699), FX16_CONST(-0.9863080972445987), + FX16_CONST(-0.16642590354046383), FX16_CONST(-0.9860539633461954), + FX16_CONST(-0.16793829497473103), FX16_CONST(-0.9857975091675675), + FX16_CONST(-0.169450291233968), FX16_CONST(-0.9855387353121761), + FX16_CONST(-0.17096188876030097), FX16_CONST(-0.9852776423889413), + FX16_CONST(-0.17247308399679587), FX16_CONST(-0.9850142310122398), + FX16_CONST(-0.17398387338746388), FX16_CONST(-0.9847485018019042), + FX16_CONST(-0.1754942533772712), FX16_CONST(-0.9844804553832209), + FX16_CONST(-0.1770042204121487), FX16_CONST(-0.9842100923869291), + FX16_CONST(-0.17851377093899717), FX16_CONST(-0.9839374134492189), + FX16_CONST(-0.18002290140569935), FX16_CONST(-0.9836624192117303), + FX16_CONST(-0.18153160826112497), FX16_CONST(-0.9833851103215512), + FX16_CONST(-0.18303988795514065), FX16_CONST(-0.9831054874312164), + FX16_CONST(-0.18454773693861948), FX16_CONST(-0.9828235511987053), + FX16_CONST(-0.18605515166344666), FX16_CONST(-0.9825393022874412), + FX16_CONST(-0.18756212858252932), FX16_CONST(-0.9822527413662895), + FX16_CONST(-0.1890686641498061), FX16_CONST(-0.9819638691095552), + FX16_CONST(-0.19057475482025282), FX16_CONST(-0.9816726861969831), + FX16_CONST(-0.19208039704989222), FX16_CONST(-0.9813791933137547), + FX16_CONST(-0.19358558729580355), FX16_CONST(-0.9810833911504867), + FX16_CONST(-0.19509032201612836), FX16_CONST(-0.9807852804032304), + FX16_CONST(-0.19659459767008003), FX16_CONST(-0.9804848617734694), + FX16_CONST(-0.19809841071795356), FX16_CONST(-0.9801821359681174), + FX16_CONST(-0.19960175762113067), FX16_CONST(-0.9798771036995177), + FX16_CONST(-0.20110463484209176), FX16_CONST(-0.9795697656854405), + FX16_CONST(-0.20260703884442113), FX16_CONST(-0.979260122649082), + FX16_CONST(-0.20410896609281662), FX16_CONST(-0.9789481753190622), + FX16_CONST(-0.20561041305309916), FX16_CONST(-0.9786339244294232), + FX16_CONST(-0.2071113761922186), FX16_CONST(-0.9783173707196277), + FX16_CONST(-0.20861185197826326), FX16_CONST(-0.9779985149345571), + FX16_CONST(-0.21011183688046955), FX16_CONST(-0.97767735782451), + FX16_CONST(-0.21161132736922766), FX16_CONST(-0.9773539001452), + FX16_CONST(-0.2131103199160912), FX16_CONST(-0.9770281426577544), + FX16_CONST(-0.21460881099378673), FX16_CONST(-0.9767000861287118), + FX16_CONST(-0.21610679707621921), FX16_CONST(-0.9763697313300213), + FX16_CONST(-0.21760427463848347), FX16_CONST(-0.9760370790390391), + FX16_CONST(-0.2191012401568698), FX16_CONST(-0.9757021300385286), + FX16_CONST(-0.22059769010887326), FX16_CONST(-0.975364885116657), + FX16_CONST(-0.22209362097320343), FX16_CONST(-0.9750253450669941), + FX16_CONST(-0.22358902922979004), FX16_CONST(-0.9746835106885107), + FX16_CONST(-0.2250839113597926), FX16_CONST(-0.9743393827855759), + FX16_CONST(-0.22657826384560992), FX16_CONST(-0.973992962167956), + FX16_CONST(-0.22807208317088581), FX16_CONST(-0.9736442496508119), + FX16_CONST(-0.2295653658205187), FX16_CONST(-0.9732932460546982), + FX16_CONST(-0.23105810828067108), FX16_CONST(-0.9729399522055602), + FX16_CONST(-0.23255030703877494), FX16_CONST(-0.9725843689347323), + FX16_CONST(-0.23404195858354326), FX16_CONST(-0.9722264970789364), + FX16_CONST(-0.23553305940497551), FX16_CONST(-0.9718663374802794), + FX16_CONST(-0.23702360599436695), FX16_CONST(-0.9715038909862519), + FX16_CONST(-0.2385135948443183), FX16_CONST(-0.9711391584497252), + FX16_CONST(-0.24000302244874153), FX16_CONST(-0.9707721407289502), + FX16_CONST(-0.2414918853028691), FX16_CONST(-0.9704028386875555), + FX16_CONST(-0.24298017990326382), FX16_CONST(-0.970031253194544), + FX16_CONST(-0.24446790274782426), FX16_CONST(-0.9696573851242924), + FX16_CONST(-0.24595505033579443), FX16_CONST(-0.9692812353565485), + FX16_CONST(-0.24744161916777327), FX16_CONST(-0.9689028047764289), + FX16_CONST(-0.24892760574571987), FX16_CONST(-0.9685220942744174), + FX16_CONST(-0.2504130065729651), FX16_CONST(-0.9681391047463624), + FX16_CONST(-0.25189781815421697), FX16_CONST(-0.9677538370934755), + FX16_CONST(-0.2533820369955699), FX16_CONST(-0.9673662922223286), + FX16_CONST(-0.25486565960451446), FX16_CONST(-0.9669764710448522), + FX16_CONST(-0.2563486824899429), FX16_CONST(-0.9665843744783331), + FX16_CONST(-0.25783110216215877), FX16_CONST(-0.9661900034454126), + FX16_CONST(-0.2593129151328862), FX16_CONST(-0.9657933588740837), + FX16_CONST(-0.2607941179152756), FX16_CONST(-0.9653944416976894), + FX16_CONST(-0.2622747070239134), FX16_CONST(-0.9649932528549204), + FX16_CONST(-0.26375467897483135), FX16_CONST(-0.9645897932898128), + FX16_CONST(-0.2652340302855115), FX16_CONST(-0.9641840639517458), + FX16_CONST(-0.26671275747489825), FX16_CONST(-0.96377606579544), + FX16_CONST(-0.2681908570634032), FX16_CONST(-0.963365799780954), + FX16_CONST(-0.2696683255729148), FX16_CONST(-0.962953266873684), + FX16_CONST(-0.2711451595268079), FX16_CONST(-0.9625384680443592), + FX16_CONST(-0.27262135544994903), FX16_CONST(-0.9621214042690416), + FX16_CONST(-0.27409690986870616), FX16_CONST(-0.9617020765291227), + FX16_CONST(-0.2755718193109581), FX16_CONST(-0.9612804858113206), + FX16_CONST(-0.2770460803061), FX16_CONST(-0.9608566331076795), + FX16_CONST(-0.2785196893850529), FX16_CONST(-0.9604305194155659), + FX16_CONST(-0.2799926430802732), FX16_CONST(-0.960002145737666), + FX16_CONST(-0.28146493792575766), FX16_CONST(-0.9595715130819846), + FX16_CONST(-0.28293657045705517), FX16_CONST(-0.959138622461842), + FX16_CONST(-0.2844075372112718), FX16_CONST(-0.9587034748958716), + FX16_CONST(-0.28587783472708034), FX16_CONST(-0.9582660714080178), + FX16_CONST(-0.2873474595447294), FX16_CONST(-0.9578264130275329), + FX16_CONST(-0.28881640820604954), FX16_CONST(-0.9573845007889759), + FX16_CONST(-0.2902846772544621), FX16_CONST(-0.9569403357322089), + FX16_CONST(-0.2917522632349892), FX16_CONST(-0.9564939189023951), + FX16_CONST(-0.29321916269425874), FX16_CONST(-0.9560452513499964), + FX16_CONST(-0.29468537218051416), FX16_CONST(-0.9555943341307711), + FX16_CONST(-0.2961508882436238), FX16_CONST(-0.9551411683057708), + FX16_CONST(-0.2976157074350859), FX16_CONST(-0.9546857549413384), + FX16_CONST(-0.2990798263080403), FX16_CONST(-0.9542280951091057), + FX16_CONST(-0.30054324141727345), FX16_CONST(-0.9537681898859903), + FX16_CONST(-0.3020059493192278), FX16_CONST(-0.953306040354194), + FX16_CONST(-0.3034679465720112), FX16_CONST(-0.9528416476011987), + FX16_CONST(-0.30492922973540243), FX16_CONST(-0.9523750127197659), + FX16_CONST(-0.3063897953708607), FX16_CONST(-0.9519061368079323), + FX16_CONST(-0.3078496400415348), FX16_CONST(-0.9514350209690083), + FX16_CONST(-0.3093087603122688), FX16_CONST(-0.9509616663115751), + FX16_CONST(-0.3107671527496113), FX16_CONST(-0.9504860739494818), + FX16_CONST(-0.3122248139218249), FX16_CONST(-0.950008245001843), + FX16_CONST(-0.3136817403988912), FX16_CONST(-0.9495281805930368), + FX16_CONST(-0.3151379287525222), FX16_CONST(-0.9490458818527007), + FX16_CONST(-0.31659337555616585), FX16_CONST(-0.9485613499157303), + FX16_CONST(-0.31804807738501467), FX16_CONST(-0.9480745859222763), + FX16_CONST(-0.3195020308160156), FX16_CONST(-0.9475855910177412), + FX16_CONST(-0.32095523242787527), FX16_CONST(-0.9470943663527772), + FX16_CONST(-0.32240767880106963), FX16_CONST(-0.9466009130832836), + FX16_CONST(-0.3238593665178528), FX16_CONST(-0.9461052323704034), + FX16_CONST(-0.325310292162263), FX16_CONST(-0.9456073253805213), + FX16_CONST(-0.32676045232013157), FX16_CONST(-0.9451071932852606), + FX16_CONST(-0.3282098435790925), FX16_CONST(-0.9446048372614803), + FX16_CONST(-0.3296584625285872), FX16_CONST(-0.9441002584912728), + FX16_CONST(-0.33110630575987626), FX16_CONST(-0.9435934581619604), + FX16_CONST(-0.3325533698660442), FX16_CONST(-0.9430844374660935), + FX16_CONST(-0.3339996514420091), FX16_CONST(-0.942573197601447), + FX16_CONST(-0.3354451470845315), FX16_CONST(-0.9420597397710174), + FX16_CONST(-0.3368898533922201), FX16_CONST(-0.9415440651830208), + FX16_CONST(-0.3383337669655409), FX16_CONST(-0.9410261750508894), + FX16_CONST(-0.3397768844068268), FX16_CONST(-0.9405060705932684), + FX16_CONST(-0.34121920232028247), FX16_CONST(-0.9399837530340139), + FX16_CONST(-0.3426607173119942), FX16_CONST(-0.93945922360219), + FX16_CONST(-0.3441014259899388), FX16_CONST(-0.9389324835320646), + FX16_CONST(-0.34554132496398876), FX16_CONST(-0.9384035340631083), + FX16_CONST(-0.3469804108459235), FX16_CONST(-0.9378723764399899), + FX16_CONST(-0.34841868024943456), FX16_CONST(-0.937339011912575), + FX16_CONST(-0.34985612979013464), FX16_CONST(-0.9368034417359217), + FX16_CONST(-0.351292756085567), FX16_CONST(-0.9362656671702783), + FX16_CONST(-0.3527285557552107), FX16_CONST(-0.9357256894810804), + FX16_CONST(-0.3541635254204901), FX16_CONST(-0.9351835099389477), + FX16_CONST(-0.3555976617047838), FX16_CONST(-0.9346391298196808), + FX16_CONST(-0.3570309612334301), FX16_CONST(-0.9340925504042589), + FX16_CONST(-0.3584634206337364), FX16_CONST(-0.9335437729788363), + FX16_CONST(-0.3598950365349881), FX16_CONST(-0.932992798834739), + FX16_CONST(-0.36132580556845395), FX16_CONST(-0.9324396292684625), + FX16_CONST(-0.36275572436739706), FX16_CONST(-0.9318842655816681), + FX16_CONST(-0.3641847895670799), FX16_CONST(-0.9313267090811804), + FX16_CONST(-0.3656129978047736), FX16_CONST(-0.9307669610789838), + FX16_CONST(-0.36704034571976707), FX16_CONST(-0.9302050228922191), + FX16_CONST(-0.3684668299533724), FX16_CONST(-0.9296408958431812), + FX16_CONST(-0.3698924471489339), FX16_CONST(-0.9290745812593159), + FX16_CONST(-0.37131719395183743), FX16_CONST(-0.9285060804732156), + FX16_CONST(-0.37274106700951587), FX16_CONST(-0.9279353948226178), + FX16_CONST(-0.3741640629714578), FX16_CONST(-0.9273625256504011), + FX16_CONST(-0.37558617848921716), FX16_CONST(-0.9267874743045819), + FX16_CONST(-0.3770074102164179), FX16_CONST(-0.9262102421383115), + FX16_CONST(-0.3784277548087654), FX16_CONST(-0.9256308305098728), + FX16_CONST(-0.37984720892405116), FX16_CONST(-0.9250492407826776), + FX16_CONST(-0.3812657692221621), FX16_CONST(-0.9244654743252627), + FX16_CONST(-0.38268343236508967), FX16_CONST(-0.9238795325112868), + FX16_CONST(-0.3841001950169351), FX16_CONST(-0.9232914167195276), + FX16_CONST(-0.3855160538439186), FX16_CONST(-0.9227011283338786), + FX16_CONST(-0.3869310055143885), FX16_CONST(-0.9221086687433452), + FX16_CONST(-0.38834504669882636), FX16_CONST(-0.9215140393420419), + FX16_CONST(-0.38975817406985624), FX16_CONST(-0.9209172415291895), + FX16_CONST(-0.3911703843022538), FX16_CONST(-0.9203182767091106), + FX16_CONST(-0.3925816740729512), FX16_CONST(-0.9197171462912275), + FX16_CONST(-0.39399204006104793), FX16_CONST(-0.9191138516900578), + FX16_CONST(-0.3954014789478163), FX16_CONST(-0.9185083943252123), + FX16_CONST(-0.39680998741671003), FX16_CONST(-0.9179007756213906), + FX16_CONST(-0.39821756215337345), FX16_CONST(-0.917290997008378), + FX16_CONST(-0.39962419984564684), FX16_CONST(-0.9166790599210427), + FX16_CONST(-0.4010298971835754), FX16_CONST(-0.9160649657993318), + FX16_CONST(-0.4024346508594184), FX16_CONST(-0.9154487160882678), + FX16_CONST(-0.4038384575676542), FX16_CONST(-0.9148303122379461), + FX16_CONST(-0.4052413140049897), FX16_CONST(-0.9142097557035307), + FX16_CONST(-0.406643216870369), FX16_CONST(-0.9135870479452508), + FX16_CONST(-0.40804416286497835), FX16_CONST(-0.9129621904283983), + FX16_CONST(-0.4094441486922574), FX16_CONST(-0.9123351846233229), + FX16_CONST(-0.4108431710579039), FX16_CONST(-0.9117060320054299), + FX16_CONST(-0.4122412266698826), FX16_CONST(-0.9110747340551765), + FX16_CONST(-0.4136383122384344), FX16_CONST(-0.9104412922580672), + FX16_CONST(-0.41503442447608163), FX16_CONST(-0.9098057081046522), + FX16_CONST(-0.41642956009763693), FX16_CONST(-0.9091679830905225), + FX16_CONST(-0.4178237158202122), FX16_CONST(-0.9085281187163061), + FX16_CONST(-0.419216888363224), FX16_CONST(-0.9078861164876662), + FX16_CONST(-0.42060907444840234), FX16_CONST(-0.9072419779152959), + FX16_CONST(-0.4220002707997996), FX16_CONST(-0.9065957045149154), + FX16_CONST(-0.4233904741437957), FX16_CONST(-0.9059472978072686), + FX16_CONST(-0.42477968120910864), FX16_CONST(-0.9052967593181188), + FX16_CONST(-0.4261678887267996), FX16_CONST(-0.9046440905782462), + FX16_CONST(-0.4275550934302818), FX16_CONST(-0.9039892931234434), + FX16_CONST(-0.4289412920553294), FX16_CONST(-0.9033323684945119), + FX16_CONST(-0.43032648134008267), FX16_CONST(-0.9026733182372588), + FX16_CONST(-0.43171065802505704), FX16_CONST(-0.9020121439024933), + FX16_CONST(-0.43309381885315185), FX16_CONST(-0.901348847046022), + FX16_CONST(-0.43447596056965576), FX16_CONST(-0.9006834292286469), + FX16_CONST(-0.4358570799222553), FX16_CONST(-0.9000158920161603), + FX16_CONST(-0.43723717366104403), FX16_CONST(-0.8993462369793416), + FX16_CONST(-0.4386162385385273), FX16_CONST(-0.898674465693954), + FX16_CONST(-0.4399942713096331), FX16_CONST(-0.8980005797407399), + FX16_CONST(-0.44137126873171667), FX16_CONST(-0.8973245807054183), + FX16_CONST(-0.44274722756456975), FX16_CONST(-0.8966464701786804), + FX16_CONST(-0.4441221445704291), FX16_CONST(-0.8959662497561852), + FX16_CONST(-0.44549601651398174), FX16_CONST(-0.8952839210385575), + FX16_CONST(-0.44686884016237394), FX16_CONST(-0.8945994856313828), + FX16_CONST(-0.44824061228521983), FX16_CONST(-0.8939129451452033), + FX16_CONST(-0.44961132965460665), FX16_CONST(-0.8932243011955153), + FX16_CONST(-0.45098098904510364), FX16_CONST(-0.8925335554027647), + FX16_CONST(-0.45234958723377083), FX16_CONST(-0.8918407093923427), + FX16_CONST(-0.45371712100016354), FX16_CONST(-0.8911457647945834), + FX16_CONST(-0.45508358712634367), FX16_CONST(-0.890448723244758), + FX16_CONST(-0.4564489823968839), FX16_CONST(-0.8897495863830728), + FX16_CONST(-0.45781330359887695), FX16_CONST(-0.8890483558546647), + FX16_CONST(-0.459176547521944), FX16_CONST(-0.8883450333095964), + FX16_CONST(-0.46053871095824006), FX16_CONST(-0.8876396204028539), + FX16_CONST(-0.4618997907024625), FX16_CONST(-0.8869321187943423), + FX16_CONST(-0.4632597835518601), FX16_CONST(-0.8862225301488806), + FX16_CONST(-0.46461868630623787), FX16_CONST(-0.8855108561362), + FX16_CONST(-0.46597649576796596), FX16_CONST(-0.8847970984309379), + FX16_CONST(-0.46733320874198836), FX16_CONST(-0.884081258712635), + FX16_CONST(-0.4686888220358276), FX16_CONST(-0.8833633386657318), + FX16_CONST(-0.47004333245959545), FX16_CONST(-0.8826433399795629), + FX16_CONST(-0.47139673682599764), FX16_CONST(-0.881921264348355), + FX16_CONST(-0.4727490319503425), FX16_CONST(-0.8811971134712222), + FX16_CONST(-0.47410021465054986), FX16_CONST(-0.8804708890521609), + FX16_CONST(-0.47545028174715587), FX16_CONST(-0.8797425928000474), + FX16_CONST(-0.47679923006332187), FX16_CONST(-0.8790122264286336), + FX16_CONST(-0.47814705642484295), FX16_CONST(-0.8782797916565416), + FX16_CONST(-0.47949375766015306), FX16_CONST(-0.8775452902072612), + FX16_CONST(-0.48083933060033374), FX16_CONST(-0.8768087238091458), + FX16_CONST(-0.48218377207912266), FX16_CONST(-0.8760700941954066), + FX16_CONST(-0.4835270789329184), FX16_CONST(-0.875329403104111), + FX16_CONST(-0.48486924800079095), FX16_CONST(-0.8745866522781762), + FX16_CONST(-0.48621027612448636), FX16_CONST(-0.8738418434653669), + FX16_CONST(-0.48755016014843566), FX16_CONST(-0.8730949784182902), + FX16_CONST(-0.48888889691976306), FX16_CONST(-0.8723460588943915), + FX16_CONST(-0.49022648328829116), FX16_CONST(-0.8715950866559511), + FX16_CONST(-0.4915629161065497), FX16_CONST(-0.8708420634700791), + FX16_CONST(-0.4928981922297839), FX16_CONST(-0.8700869911087115), + FX16_CONST(-0.4942323085159598), FX16_CONST(-0.8693298713486067), + FX16_CONST(-0.4955652618257723), FX16_CONST(-0.868570705971341), + FX16_CONST(-0.49689704902265447), FX16_CONST(-0.8678094967633033), + FX16_CONST(-0.49822766697278154), FX16_CONST(-0.8670462455156929), + FX16_CONST(-0.4995571125450817), FX16_CONST(-0.8662809540245131), + FX16_CONST(-0.5008853826112407), FX16_CONST(-0.8655136240905691), + FX16_CONST(-0.5022124740457106), FX16_CONST(-0.8647442575194625), + FX16_CONST(-0.5035383837257175), FX16_CONST(-0.8639728561215868), + FX16_CONST(-0.5048631085312676), FX16_CONST(-0.8631994217121242), + FX16_CONST(-0.506186645345155), FX16_CONST(-0.8624239561110407), + FX16_CONST(-0.5075089910529708), FX16_CONST(-0.8616464611430814), + FX16_CONST(-0.5088301425431071), FX16_CONST(-0.8608669386377673), + FX16_CONST(-0.5101500967067666), FX16_CONST(-0.8600853904293903), + FX16_CONST(-0.5114688504379703), FX16_CONST(-0.8593018183570085), + FX16_CONST(-0.5127864006335627), FX16_CONST(-0.858516224264443), + FX16_CONST(-0.5141027441932216), FX16_CONST(-0.8577286100002721), + FX16_CONST(-0.5154178780194629), FX16_CONST(-0.8569389774178288), + FX16_CONST(-0.5167317990176497), FX16_CONST(-0.8561473283751947), + FX16_CONST(-0.5180445040959992), FX16_CONST(-0.8553536647351961), + FX16_CONST(-0.5193559901655895), FX16_CONST(-0.8545579883654005), + FX16_CONST(-0.5206662541403669), FX16_CONST(-0.8537603011381115), + FX16_CONST(-0.5219752929371543), FX16_CONST(-0.8529606049303637), + FX16_CONST(-0.5232831034756564), FX16_CONST(-0.8521589016239198), + FX16_CONST(-0.5245896826784687), FX16_CONST(-0.8513551931052653), + FX16_CONST(-0.5258950274710846), FX16_CONST(-0.8505494812656035), + FX16_CONST(-0.5271991347819011), FX16_CONST(-0.8497417680008527), + FX16_CONST(-0.5285020015422283), FX16_CONST(-0.8489320552116397), + FX16_CONST(-0.5298036246862946), FX16_CONST(-0.8481203448032972), + FX16_CONST(-0.5311040011512547), FX16_CONST(-0.8473066386858585), + FX16_CONST(-0.5324031278771978), FX16_CONST(-0.8464909387740521), + FX16_CONST(-0.533701001807153), FX16_CONST(-0.8456732469872991), + FX16_CONST(-0.5349976198870969), FX16_CONST(-0.8448535652497072), + FX16_CONST(-0.5362929790659631), FX16_CONST(-0.8440318954900665), + FX16_CONST(-0.5375870762956455), FX16_CONST(-0.8432082396418454), + FX16_CONST(-0.5388799085310082), FX16_CONST(-0.842382599643186), + FX16_CONST(-0.5401714727298929), FX16_CONST(-0.8415549774368984), + FX16_CONST(-0.5414617658531232), FX16_CONST(-0.8407253749704582), + FX16_CONST(-0.5427507848645158), FX16_CONST(-0.8398937941959996), + FX16_CONST(-0.5440385267308838), FX16_CONST(-0.8390602370703127), + FX16_CONST(-0.5453249884220461), FX16_CONST(-0.8382247055548382), + FX16_CONST(-0.5466101669108347), FX16_CONST(-0.837387201615662), + FX16_CONST(-0.5478940591731002), FX16_CONST(-0.836547727223512), + FX16_CONST(-0.5491766621877194), FX16_CONST(-0.8357062843537527), + FX16_CONST(-0.5504579729366047), FX16_CONST(-0.8348628749863801), + FX16_CONST(-0.5517379884047074), FX16_CONST(-0.8340175011060181), + FX16_CONST(-0.5530167055800274), FX16_CONST(-0.8331701647019133), + FX16_CONST(-0.55429412145362), FX16_CONST(-0.8323208677679297), + FX16_CONST(-0.555570233019602), FX16_CONST(-0.8314696123025455), + FX16_CONST(-0.5568450372751599), FX16_CONST(-0.8306164003088464), + FX16_CONST(-0.5581185312205561), FX16_CONST(-0.829761233794523), + FX16_CONST(-0.5593907118591358), FX16_CONST(-0.8289041147718651), + FX16_CONST(-0.5606615761973359), FX16_CONST(-0.8280450452577559), + FX16_CONST(-0.5619311212446894), FX16_CONST(-0.8271840272736691), + FX16_CONST(-0.5631993440138339), FX16_CONST(-0.8263210628456636), + FX16_CONST(-0.5644662415205194), FX16_CONST(-0.8254561540043776), + FX16_CONST(-0.5657318107836132), FX16_CONST(-0.8245893027850253), + FX16_CONST(-0.5669960488251085), FX16_CONST(-0.8237205112273915), + FX16_CONST(-0.5682589526701315), FX16_CONST(-0.8228497813758264), + FX16_CONST(-0.5695205193469473), FX16_CONST(-0.8219771152792416), + FX16_CONST(-0.5707807458869671), FX16_CONST(-0.8211025149911048), + FX16_CONST(-0.572039629324757), FX16_CONST(-0.8202259825694347), + FX16_CONST(-0.573297166698042), FX16_CONST(-0.8193475200767971), + FX16_CONST(-0.5745533550477157), FX16_CONST(-0.8184671295802988), + FX16_CONST(-0.5758081914178453), FX16_CONST(-0.8175848131515837), + FX16_CONST(-0.5770616728556793), FX16_CONST(-0.816700572866828), + FX16_CONST(-0.5783137964116555), FX16_CONST(-0.8158144108067339), + FX16_CONST(-0.5795645591394057), FX16_CONST(-0.8149263290565266), + FX16_CONST(-0.5808139580957643), FX16_CONST(-0.8140363297059485), + FX16_CONST(-0.5820619903407754), FX16_CONST(-0.8131444148492536), + FX16_CONST(-0.5833086529376983), FX16_CONST(-0.8122505865852039), + FX16_CONST(-0.5845539429530151), FX16_CONST(-0.8113548470170638), + FX16_CONST(-0.5857978574564389), FX16_CONST(-0.8104571982525949), + FX16_CONST(-0.5870403935209177), FX16_CONST(-0.8095576424040515), + FX16_CONST(-0.5882815482226451), FX16_CONST(-0.8086561815881751), + FX16_CONST(-0.5895213186410639), FX16_CONST(-0.8077528179261904), + FX16_CONST(-0.5907597018588739), FX16_CONST(-0.8068475535437994), + FX16_CONST(-0.5919966949620409), FX16_CONST(-0.8059403905711764), + FX16_CONST(-0.5932322950397998), FX16_CONST(-0.8050313311429635), + FX16_CONST(-0.5944664991846642), FX16_CONST(-0.8041203773982659), + FX16_CONST(-0.5956993044924332), FX16_CONST(-0.8032075314806449), + FX16_CONST(-0.5969307080621965), FX16_CONST(-0.8022927955381157), + FX16_CONST(-0.5981607069963422), FX16_CONST(-0.8013761717231404), + FX16_CONST(-0.5993892984005645), FX16_CONST(-0.8004576621926228), + FX16_CONST(-0.6006164793838686), FX16_CONST(-0.7995372691079052), + FX16_CONST(-0.6018422470585799), FX16_CONST(-0.7986149946347609), + FX16_CONST(-0.6030665985403482), FX16_CONST(-0.7976908409433912), + FX16_CONST(-0.6042895309481559), FX16_CONST(-0.7967648102084189), + FX16_CONST(-0.6055110414043254), FX16_CONST(-0.7958369046088836), + FX16_CONST(-0.6067311270345245), FX16_CONST(-0.794907126328237), + FX16_CONST(-0.6079497849677735), FX16_CONST(-0.7939754775543373), + FX16_CONST(-0.6091670123364531), FX16_CONST(-0.7930419604794438), + FX16_CONST(-0.6103828062763095), FX16_CONST(-0.7921065773002123), + FX16_CONST(-0.6115971639264618), FX16_CONST(-0.7911693302176903), + FX16_CONST(-0.6128100824294097), FX16_CONST(-0.79023022143731), + FX16_CONST(-0.6140215589310382), FX16_CONST(-0.7892892531688859), + FX16_CONST(-0.6152315905806267), FX16_CONST(-0.7883464276266063), + FX16_CONST(-0.6164401745308536), FX16_CONST(-0.7874017470290314), + FX16_CONST(-0.6176473079378038), FX16_CONST(-0.7864552135990859), + FX16_CONST(-0.6188529879609762), FX16_CONST(-0.785506829564054), + FX16_CONST(-0.6200572117632892), FX16_CONST(-0.7845565971555752), + FX16_CONST(-0.6212599765110874), FX16_CONST(-0.7836045186096384), + FX16_CONST(-0.6224612793741499), FX16_CONST(-0.7826505961665758), + FX16_CONST(-0.6236611175256946), FX16_CONST(-0.7816948320710594), + FX16_CONST(-0.6248594881423862), FX16_CONST(-0.7807372285720946), + FX16_CONST(-0.6260563884043435), FX16_CONST(-0.7797777879230146), + FX16_CONST(-0.6272518154951439), FX16_CONST(-0.7788165123814762), + FX16_CONST(-0.6284457666018326), FX16_CONST(-0.7778534042094533), + FX16_CONST(-0.629638238914927), FX16_CONST(-0.7768884656732324), + FX16_CONST(-0.6308292296284242), FX16_CONST(-0.7759216990434078), + FX16_CONST(-0.632018735939809), FX16_CONST(-0.7749531065948739), + FX16_CONST(-0.6332067550500573), FX16_CONST(-0.7739826906068228), + FX16_CONST(-0.6343932841636453), FX16_CONST(-0.7730104533627371), + FX16_CONST(-0.6355783204885561), FX16_CONST(-0.7720363971503845), + FX16_CONST(-0.6367618612362843), FX16_CONST(-0.7710605242618137), + FX16_CONST(-0.6379439036218439), FX16_CONST(-0.7700828369933481), + FX16_CONST(-0.6391244448637757), FX16_CONST(-0.7691033376455797), + FX16_CONST(-0.6403034821841515), FX16_CONST(-0.7681220285233656), + FX16_CONST(-0.641481012808583), FX16_CONST(-0.7671389119358205), + FX16_CONST(-0.6426570339662269), FX16_CONST(-0.7661539901963129), + FX16_CONST(-0.6438315428897913), FX16_CONST(-0.7651672656224591), + FX16_CONST(-0.6450045368155438), FX16_CONST(-0.7641787405361168), + FX16_CONST(-0.6461760129833164), FX16_CONST(-0.7631884172633813), + FX16_CONST(-0.6473459686365118), FX16_CONST(-0.7621962981345791), + FX16_CONST(-0.6485144010221123), FX16_CONST(-0.7612023854842619), + FX16_CONST(-0.6496813073906832), FX16_CONST(-0.7602066816512024), + FX16_CONST(-0.6508466849963808), FX16_CONST(-0.7592091889783882), + FX16_CONST(-0.6520105310969595), FX16_CONST(-0.7582099098130154), + FX16_CONST(-0.6531728429537765), FX16_CONST(-0.7572088465064848), + FX16_CONST(-0.6543336178318003), FX16_CONST(-0.7562060014143946), + FX16_CONST(-0.6554928529996153), FX16_CONST(-0.7552013768965365), + FX16_CONST(-0.6566505457294288), FX16_CONST(-0.7541949753168894), + FX16_CONST(-0.6578066932970785), FX16_CONST(-0.7531867990436125), + FX16_CONST(-0.6589612929820373), FX16_CONST(-0.7521768504490427), + FX16_CONST(-0.6601143420674203), FX16_CONST(-0.7511651319096866), + FX16_CONST(-0.6612658378399922), FX16_CONST(-0.7501516458062151), + FX16_CONST(-0.6624157775901718), FX16_CONST(-0.7491363945234593), + FX16_CONST(-0.6635641586120397), FX16_CONST(-0.7481193804504037), + FX16_CONST(-0.6647109782033448), FX16_CONST(-0.7471006059801802), + FX16_CONST(-0.6658562336655094), FX16_CONST(-0.746080073510064), + FX16_CONST(-0.6669999223036374), FX16_CONST(-0.7450577854414661), + FX16_CONST(-0.6681420414265185), FX16_CONST(-0.7440337441799293), + FX16_CONST(-0.6692825883466358), FX16_CONST(-0.7430079521351219), + FX16_CONST(-0.670421560380173), FX16_CONST(-0.7419804117208311), + FX16_CONST(-0.6715589548470184), FX16_CONST(-0.7409511253549591), + FX16_CONST(-0.6726947690707727), FX16_CONST(-0.7399200954595163), + FX16_CONST(-0.6738290003787559), FX16_CONST(-0.7388873244606152), + FX16_CONST(-0.674961646102012), FX16_CONST(-0.737852814788466), + FX16_CONST(-0.6760927035753158), FX16_CONST(-0.73681656887737), + FX16_CONST(-0.6772221701371803), FX16_CONST(-0.7357785891657136), + FX16_CONST(-0.6783500431298612), FX16_CONST(-0.7347388780959637), + FX16_CONST(-0.6794763198993649), FX16_CONST(-0.7336974381146604), + FX16_CONST(-0.680600997795453), FX16_CONST(-0.7326542716724128), + FX16_CONST(-0.6817240741716496), FX16_CONST(-0.7316093812238927), + FX16_CONST(-0.682845546385248), FX16_CONST(-0.7305627692278277), + FX16_CONST(-0.6839654117973154), FX16_CONST(-0.729514438146997), + FX16_CONST(-0.6850836677727001), FX16_CONST(-0.7284643904482254), + FX16_CONST(-0.6862003116800385), FX16_CONST(-0.7274126286023759), + FX16_CONST(-0.6873153408917592), FX16_CONST(-0.7263591550843459), + FX16_CONST(-0.6884287527840903), FX16_CONST(-0.7253039723730609), + FX16_CONST(-0.6895405447370668), FX16_CONST(-0.724247082951467), + FX16_CONST(-0.6906507141345344), FX16_CONST(-0.7231884893065277), + FX16_CONST(-0.6917592583641576), FX16_CONST(-0.7221281939292155), + FX16_CONST(-0.6928661748174246), FX16_CONST(-0.7210661993145081), + FX16_CONST(-0.6939714608896538), FX16_CONST(-0.7200025079613819), + FX16_CONST(-0.6950751139800008), FX16_CONST(-0.7189371223728045), + FX16_CONST(-0.696177131491463), FX16_CONST(-0.7178700450557317), + FX16_CONST(-0.6972775108308864), FX16_CONST(-0.7168012785210996), + FX16_CONST(-0.6983762494089728), FX16_CONST(-0.7157308252838187), + FX16_CONST(-0.6994733446402839), FX16_CONST(-0.714658687862769), + FX16_CONST(-0.7005687939432482), FX16_CONST(-0.7135848687807937), + FX16_CONST(-0.7016625947401685), FX16_CONST(-0.7125093705646924), + FX16_CONST(-0.7027547444572251), FX16_CONST(-0.7114321957452167), + FX16_CONST(-0.7038452405244848), FX16_CONST(-0.7103533468570625), + FX16_CONST(-0.7049340803759049), FX16_CONST(-0.7092728264388657), + FX16_CONST(-0.7060212614493395), FX16_CONST(-0.7081906370331955), + FX16_CONST(-0.7071067811865475), FX16_CONST(-0.7071067811865477), + FX16_CONST(-0.7081906370331953), FX16_CONST(-0.7060212614493397), + FX16_CONST(-0.7092728264388655), FX16_CONST(-0.7049340803759051), + FX16_CONST(-0.7103533468570623), FX16_CONST(-0.703845240524485), + FX16_CONST(-0.7114321957452164), FX16_CONST(-0.7027547444572253), + FX16_CONST(-0.7125093705646922), FX16_CONST(-0.7016625947401687), + FX16_CONST(-0.7135848687807935), FX16_CONST(-0.7005687939432484), + FX16_CONST(-0.7146586878627688), FX16_CONST(-0.6994733446402841), + FX16_CONST(-0.7157308252838185), FX16_CONST(-0.698376249408973), + FX16_CONST(-0.7168012785210994), FX16_CONST(-0.6972775108308866), + FX16_CONST(-0.7178700450557315), FX16_CONST(-0.6961771314914632), + FX16_CONST(-0.7189371223728044), FX16_CONST(-0.695075113980001), + FX16_CONST(-0.7200025079613817), FX16_CONST(-0.693971460889654), + FX16_CONST(-0.7210661993145079), FX16_CONST(-0.6928661748174249), + FX16_CONST(-0.7221281939292152), FX16_CONST(-0.6917592583641579), + FX16_CONST(-0.7231884893065275), FX16_CONST(-0.6906507141345346), + FX16_CONST(-0.7242470829514668), FX16_CONST(-0.689540544737067), + FX16_CONST(-0.7253039723730607), FX16_CONST(-0.6884287527840905), + FX16_CONST(-0.7263591550843458), FX16_CONST(-0.6873153408917594), + FX16_CONST(-0.7274126286023757), FX16_CONST(-0.6862003116800387), + FX16_CONST(-0.7284643904482252), FX16_CONST(-0.6850836677727004), + FX16_CONST(-0.7295144381469968), FX16_CONST(-0.6839654117973156), + FX16_CONST(-0.7305627692278275), FX16_CONST(-0.6828455463852482), + FX16_CONST(-0.7316093812238925), FX16_CONST(-0.6817240741716498), + FX16_CONST(-0.7326542716724127), FX16_CONST(-0.6806009977954532), + FX16_CONST(-0.7336974381146601), FX16_CONST(-0.6794763198993651), + FX16_CONST(-0.7347388780959635), FX16_CONST(-0.6783500431298615), + FX16_CONST(-0.7357785891657134), FX16_CONST(-0.6772221701371806), + FX16_CONST(-0.7368165688773698), FX16_CONST(-0.676092703575316), + FX16_CONST(-0.7378528147884658), FX16_CONST(-0.6749616461020123), + FX16_CONST(-0.738887324460615), FX16_CONST(-0.6738290003787561), + FX16_CONST(-0.7399200954595161), FX16_CONST(-0.672694769070773), + FX16_CONST(-0.7409511253549589), FX16_CONST(-0.6715589548470187), + FX16_CONST(-0.741980411720831), FX16_CONST(-0.6704215603801732), + FX16_CONST(-0.7430079521351217), FX16_CONST(-0.669282588346636), + FX16_CONST(-0.7440337441799291), FX16_CONST(-0.6681420414265187), + FX16_CONST(-0.7450577854414658), FX16_CONST(-0.6669999223036376), + FX16_CONST(-0.7460800735100638), FX16_CONST(-0.6658562336655096), + FX16_CONST(-0.7471006059801799), FX16_CONST(-0.664710978203345), + FX16_CONST(-0.7481193804504035), FX16_CONST(-0.6635641586120399), + FX16_CONST(-0.749136394523459), FX16_CONST(-0.662415777590172), + FX16_CONST(-0.750151645806215), FX16_CONST(-0.6612658378399924), + FX16_CONST(-0.7511651319096864), FX16_CONST(-0.6601143420674205), + FX16_CONST(-0.7521768504490425), FX16_CONST(-0.6589612929820375), + FX16_CONST(-0.7531867990436124), FX16_CONST(-0.6578066932970787), + FX16_CONST(-0.7541949753168892), FX16_CONST(-0.656650545729429), + FX16_CONST(-0.7552013768965363), FX16_CONST(-0.6554928529996156), + FX16_CONST(-0.7562060014143944), FX16_CONST(-0.6543336178318007), + FX16_CONST(-0.7572088465064842), FX16_CONST(-0.6531728429537771), + FX16_CONST(-0.7582099098130151), FX16_CONST(-0.6520105310969597), + FX16_CONST(-0.759209188978388), FX16_CONST(-0.650846684996381), + FX16_CONST(-0.7602066816512024), FX16_CONST(-0.6496813073906831), + FX16_CONST(-0.761202385484262), FX16_CONST(-0.6485144010221122), + FX16_CONST(-0.7621962981345786), FX16_CONST(-0.6473459686365125), + FX16_CONST(-0.763188417263381), FX16_CONST(-0.6461760129833166), + FX16_CONST(-0.7641787405361166), FX16_CONST(-0.6450045368155441), + FX16_CONST(-0.765167265622459), FX16_CONST(-0.6438315428897915), + FX16_CONST(-0.766153990196313), FX16_CONST(-0.6426570339662268), + FX16_CONST(-0.7671389119358201), FX16_CONST(-0.6414810128085836), + FX16_CONST(-0.7681220285233652), FX16_CONST(-0.640303482184152), + FX16_CONST(-0.7691033376455795), FX16_CONST(-0.639124444863776), + FX16_CONST(-0.7700828369933479), FX16_CONST(-0.6379439036218442), + FX16_CONST(-0.7710605242618138), FX16_CONST(-0.6367618612362842), + FX16_CONST(-0.7720363971503846), FX16_CONST(-0.635578320488556), + FX16_CONST(-0.7730104533627367), FX16_CONST(-0.6343932841636459), + FX16_CONST(-0.7739826906068226), FX16_CONST(-0.6332067550500575), + FX16_CONST(-0.7749531065948738), FX16_CONST(-0.6320187359398092), + FX16_CONST(-0.7759216990434076), FX16_CONST(-0.6308292296284246), + FX16_CONST(-0.7768884656732326), FX16_CONST(-0.6296382389149269), + FX16_CONST(-0.7778534042094527), FX16_CONST(-0.6284457666018332), + FX16_CONST(-0.7788165123814756), FX16_CONST(-0.6272518154951444), + FX16_CONST(-0.7797777879230143), FX16_CONST(-0.6260563884043437), + FX16_CONST(-0.7807372285720944), FX16_CONST(-0.6248594881423865), + FX16_CONST(-0.7816948320710595), FX16_CONST(-0.6236611175256945), + FX16_CONST(-0.7826505961665758), FX16_CONST(-0.6224612793741497), + FX16_CONST(-0.7836045186096379), FX16_CONST(-0.621259976511088), + FX16_CONST(-0.784556597155575), FX16_CONST(-0.6200572117632894), + FX16_CONST(-0.7855068295640538), FX16_CONST(-0.6188529879609764), + FX16_CONST(-0.7864552135990858), FX16_CONST(-0.617647307937804), + FX16_CONST(-0.7874017470290315), FX16_CONST(-0.6164401745308535), + FX16_CONST(-0.7883464276266059), FX16_CONST(-0.6152315905806273), + FX16_CONST(-0.7892892531688854), FX16_CONST(-0.6140215589310387), + FX16_CONST(-0.7902302214373099), FX16_CONST(-0.6128100824294099), + FX16_CONST(-0.7911693302176901), FX16_CONST(-0.611597163926462), + FX16_CONST(-0.7921065773002124), FX16_CONST(-0.6103828062763094), + FX16_CONST(-0.7930419604794439), FX16_CONST(-0.609167012336453), + FX16_CONST(-0.7939754775543368), FX16_CONST(-0.6079497849677741), + FX16_CONST(-0.7949071263282368), FX16_CONST(-0.6067311270345248), + FX16_CONST(-0.7958369046088835), FX16_CONST(-0.6055110414043257), + FX16_CONST(-0.7967648102084187), FX16_CONST(-0.6042895309481561), + FX16_CONST(-0.7976908409433912), FX16_CONST(-0.603066598540348), + FX16_CONST(-0.7986149946347605), FX16_CONST(-0.6018422470585805), + FX16_CONST(-0.7995372691079048), FX16_CONST(-0.6006164793838693), + FX16_CONST(-0.8004576621926226), FX16_CONST(-0.5993892984005648), + FX16_CONST(-0.8013761717231401), FX16_CONST(-0.5981607069963424), + FX16_CONST(-0.8022927955381157), FX16_CONST(-0.5969307080621964), + FX16_CONST(-0.803207531480645), FX16_CONST(-0.5956993044924331), + FX16_CONST(-0.8041203773982655), FX16_CONST(-0.5944664991846649), + FX16_CONST(-0.8050313311429634), FX16_CONST(-0.5932322950398001), + FX16_CONST(-0.8059403905711762), FX16_CONST(-0.5919966949620411), + FX16_CONST(-0.8068475535437992), FX16_CONST(-0.5907597018588743), + FX16_CONST(-0.8077528179261905), FX16_CONST(-0.5895213186410638), + FX16_CONST(-0.8086561815881746), FX16_CONST(-0.5882815482226458), + FX16_CONST(-0.809557642404051), FX16_CONST(-0.5870403935209183), + FX16_CONST(-0.8104571982525947), FX16_CONST(-0.5857978574564391), + FX16_CONST(-0.8113548470170637), FX16_CONST(-0.5845539429530153), + FX16_CONST(-0.812250586585204), FX16_CONST(-0.5833086529376983), + FX16_CONST(-0.8131444148492537), FX16_CONST(-0.5820619903407753), + FX16_CONST(-0.8140363297059481), FX16_CONST(-0.580813958095765), + FX16_CONST(-0.8149263290565264), FX16_CONST(-0.579564559139406), + FX16_CONST(-0.8158144108067337), FX16_CONST(-0.5783137964116557), + FX16_CONST(-0.8167005728668278), FX16_CONST(-0.5770616728556796), + FX16_CONST(-0.8175848131515838), FX16_CONST(-0.5758081914178452), + FX16_CONST(-0.8184671295802983), FX16_CONST(-0.5745533550477163), + FX16_CONST(-0.8193475200767967), FX16_CONST(-0.5732971666980425), + FX16_CONST(-0.8202259825694345), FX16_CONST(-0.5720396293247573), + FX16_CONST(-0.8211025149911046), FX16_CONST(-0.5707807458869674), + FX16_CONST(-0.8219771152792416), FX16_CONST(-0.5695205193469471), + FX16_CONST(-0.8228497813758264), FX16_CONST(-0.5682589526701314), + FX16_CONST(-0.8237205112273911), FX16_CONST(-0.566996048825109), + FX16_CONST(-0.8245893027850251), FX16_CONST(-0.5657318107836135), + FX16_CONST(-0.8254561540043774), FX16_CONST(-0.5644662415205196), + FX16_CONST(-0.8263210628456634), FX16_CONST(-0.5631993440138341), + FX16_CONST(-0.8271840272736692), FX16_CONST(-0.5619311212446892), + FX16_CONST(-0.8280450452577555), FX16_CONST(-0.5606615761973365), + FX16_CONST(-0.8289041147718647), FX16_CONST(-0.5593907118591365), + FX16_CONST(-0.8297612337945229), FX16_CONST(-0.5581185312205563), + FX16_CONST(-0.8306164003088462), FX16_CONST(-0.5568450372751601), + FX16_CONST(-0.8314696123025452), FX16_CONST(-0.5555702330196022), + FX16_CONST(-0.8323208677679298), FX16_CONST(-0.5542941214536199), + FX16_CONST(-0.8331701647019129), FX16_CONST(-0.5530167055800279), + FX16_CONST(-0.8340175011060179), FX16_CONST(-0.5517379884047077), + FX16_CONST(-0.8348628749863799), FX16_CONST(-0.5504579729366049), + FX16_CONST(-0.8357062843537526), FX16_CONST(-0.5491766621877198), + FX16_CONST(-0.8365477272235121), FX16_CONST(-0.5478940591731001), + FX16_CONST(-0.8373872016156616), FX16_CONST(-0.5466101669108354), + FX16_CONST(-0.8382247055548379), FX16_CONST(-0.5453249884220468), + FX16_CONST(-0.8390602370703125), FX16_CONST(-0.5440385267308842), + FX16_CONST(-0.8398937941959994), FX16_CONST(-0.542750784864516), + FX16_CONST(-0.8407253749704581), FX16_CONST(-0.5414617658531234), + FX16_CONST(-0.8415549774368986), FX16_CONST(-0.5401714727298927), + FX16_CONST(-0.8423825996431856), FX16_CONST(-0.5388799085310089), + FX16_CONST(-0.8432082396418452), FX16_CONST(-0.5375870762956457), + FX16_CONST(-0.8440318954900663), FX16_CONST(-0.5362929790659633), + FX16_CONST(-0.8448535652497071), FX16_CONST(-0.5349976198870973), + FX16_CONST(-0.8456732469872992), FX16_CONST(-0.5337010018071529), + FX16_CONST(-0.8464909387740518), FX16_CONST(-0.5324031278771985), + FX16_CONST(-0.8473066386858581), FX16_CONST(-0.5311040011512553), + FX16_CONST(-0.8481203448032971), FX16_CONST(-0.5298036246862949), + FX16_CONST(-0.8489320552116396), FX16_CONST(-0.5285020015422286), + FX16_CONST(-0.8497417680008525), FX16_CONST(-0.5271991347819013), + FX16_CONST(-0.8505494812656036), FX16_CONST(-0.5258950274710845), + FX16_CONST(-0.8513551931052649), FX16_CONST(-0.5245896826784693), + FX16_CONST(-0.8521589016239196), FX16_CONST(-0.5232831034756568), + FX16_CONST(-0.8529606049303635), FX16_CONST(-0.5219752929371545), + FX16_CONST(-0.8537603011381114), FX16_CONST(-0.5206662541403672), + FX16_CONST(-0.8545579883654005), FX16_CONST(-0.5193559901655894), + FX16_CONST(-0.8553536647351957), FX16_CONST(-0.5180445040959999), + FX16_CONST(-0.8561473283751942), FX16_CONST(-0.5167317990176502), + FX16_CONST(-0.8569389774178287), FX16_CONST(-0.5154178780194633), + FX16_CONST(-0.857728610000272), FX16_CONST(-0.5141027441932218), + FX16_CONST(-0.8585162242644429), FX16_CONST(-0.512786400633563), + FX16_CONST(-0.8593018183570085), FX16_CONST(-0.5114688504379702), + FX16_CONST(-0.8600853904293899), FX16_CONST(-0.5101500967067673), + FX16_CONST(-0.8608669386377671), FX16_CONST(-0.5088301425431073), + FX16_CONST(-0.8616464611430812), FX16_CONST(-0.507508991052971), + FX16_CONST(-0.8624239561110405), FX16_CONST(-0.5061866453451553), + FX16_CONST(-0.8631994217121243), FX16_CONST(-0.5048631085312674), + FX16_CONST(-0.8639728561215865), FX16_CONST(-0.503538383725718), + FX16_CONST(-0.8647442575194622), FX16_CONST(-0.5022124740457111), + FX16_CONST(-0.865513624090569), FX16_CONST(-0.500885382611241), + FX16_CONST(-0.8662809540245129), FX16_CONST(-0.49955711254508195), + FX16_CONST(-0.8670462455156926), FX16_CONST(-0.4982276669727818), + FX16_CONST(-0.8678094967633033), FX16_CONST(-0.49689704902265436), + FX16_CONST(-0.8685707059713407), FX16_CONST(-0.495565261825773), + FX16_CONST(-0.8693298713486066), FX16_CONST(-0.49423230851596), + FX16_CONST(-0.8700869911087113), FX16_CONST(-0.4928981922297842), + FX16_CONST(-0.8708420634700789), FX16_CONST(-0.49156291610654995), + FX16_CONST(-0.8715950866559511), FX16_CONST(-0.49022648328829105), + FX16_CONST(-0.8723460588943912), FX16_CONST(-0.48888889691976367), + FX16_CONST(-0.8730949784182899), FX16_CONST(-0.48755016014843633), + FX16_CONST(-0.8738418434653666), FX16_CONST(-0.48621027612448664), + FX16_CONST(-0.8745866522781761), FX16_CONST(-0.4848692480007912), + FX16_CONST(-0.8753294031041109), FX16_CONST(-0.4835270789329187), + FX16_CONST(-0.8760700941954067), FX16_CONST(-0.48218377207912255), + FX16_CONST(-0.8768087238091454), FX16_CONST(-0.4808393306003344), + FX16_CONST(-0.8775452902072611), FX16_CONST(-0.47949375766015334), + FX16_CONST(-0.8782797916565415), FX16_CONST(-0.47814705642484323), + FX16_CONST(-0.8790122264286334), FX16_CONST(-0.47679923006332214), + FX16_CONST(-0.8797425928000475), FX16_CONST(-0.47545028174715576), + FX16_CONST(-0.8804708890521605), FX16_CONST(-0.4741002146505505), + FX16_CONST(-0.8811971134712219), FX16_CONST(-0.4727490319503432), + FX16_CONST(-0.8819212643483549), FX16_CONST(-0.47139673682599786), + FX16_CONST(-0.8826433399795628), FX16_CONST(-0.47004333245959573), + FX16_CONST(-0.8833633386657316), FX16_CONST(-0.4686888220358279), + FX16_CONST(-0.8840812587126351), FX16_CONST(-0.46733320874198825), + FX16_CONST(-0.8847970984309376), FX16_CONST(-0.4659764957679666), + FX16_CONST(-0.8855108561361997), FX16_CONST(-0.46461868630623815), + FX16_CONST(-0.8862225301488805), FX16_CONST(-0.46325978355186037), + FX16_CONST(-0.8869321187943422), FX16_CONST(-0.4618997907024628), + FX16_CONST(-0.887639620402854), FX16_CONST(-0.4605387109582399), + FX16_CONST(-0.888345033309596), FX16_CONST(-0.45917654752194464), + FX16_CONST(-0.8890483558546644), FX16_CONST(-0.4578133035988776), + FX16_CONST(-0.8897495863830727), FX16_CONST(-0.4564489823968842), + FX16_CONST(-0.8904487232447579), FX16_CONST(-0.45508358712634395), + FX16_CONST(-0.8911457647945833), FX16_CONST(-0.4537171210001638), + FX16_CONST(-0.8918407093923428), FX16_CONST(-0.45234958723377067), + FX16_CONST(-0.8925335554027644), FX16_CONST(-0.4509809890451043), + FX16_CONST(-0.8932243011955152), FX16_CONST(-0.44961132965460693), + FX16_CONST(-0.8939129451452031), FX16_CONST(-0.4482406122852201), + FX16_CONST(-0.8945994856313827), FX16_CONST(-0.4468688401623742), + FX16_CONST(-0.8952839210385576), FX16_CONST(-0.44549601651398163), + FX16_CONST(-0.8959662497561849), FX16_CONST(-0.44412214457042976), + FX16_CONST(-0.89664647017868), FX16_CONST(-0.4427472275645704), + FX16_CONST(-0.8973245807054182), FX16_CONST(-0.44137126873171695), + FX16_CONST(-0.8980005797407398), FX16_CONST(-0.43999427130963337), + FX16_CONST(-0.8986744656939538), FX16_CONST(-0.4386162385385276), + FX16_CONST(-0.8993462369793417), FX16_CONST(-0.4372371736610439), + FX16_CONST(-0.90001589201616), FX16_CONST(-0.435857079922256), + FX16_CONST(-0.9006834292286467), FX16_CONST(-0.43447596056965604), + FX16_CONST(-0.9013488470460219), FX16_CONST(-0.4330938188531521), + FX16_CONST(-0.9020121439024932), FX16_CONST(-0.4317106580250573), + FX16_CONST(-0.9026733182372588), FX16_CONST(-0.4303264813400825), + FX16_CONST(-0.9033323684945116), FX16_CONST(-0.42894129205533005), + FX16_CONST(-0.9039892931234431), FX16_CONST(-0.4275550934302825), + FX16_CONST(-0.9046440905782461), FX16_CONST(-0.4261678887267999), + FX16_CONST(-0.9052967593181187), FX16_CONST(-0.4247796812091089), + FX16_CONST(-0.9059472978072685), FX16_CONST(-0.423390474143796), + FX16_CONST(-0.9065957045149154), FX16_CONST(-0.4220002707997995), + FX16_CONST(-0.9072419779152956), FX16_CONST(-0.420609074448403), + FX16_CONST(-0.907886116487666), FX16_CONST(-0.4192168883632243), + FX16_CONST(-0.908528118716306), FX16_CONST(-0.4178237158202125), + FX16_CONST(-0.9091679830905224), FX16_CONST(-0.4164295600976372), + FX16_CONST(-0.9098057081046523), FX16_CONST(-0.4150344244760815), + FX16_CONST(-0.9104412922580669), FX16_CONST(-0.4136383122384351), + FX16_CONST(-0.9110747340551761), FX16_CONST(-0.4122412266698833), + FX16_CONST(-0.9117060320054298), FX16_CONST(-0.4108431710579042), + FX16_CONST(-0.9123351846233227), FX16_CONST(-0.40944414869225776), + FX16_CONST(-0.9129621904283982), FX16_CONST(-0.40804416286497863), + FX16_CONST(-0.9135870479452509), FX16_CONST(-0.40664321687036886), + FX16_CONST(-0.9142097557035305), FX16_CONST(-0.40524131400499036), + FX16_CONST(-0.914830312237946), FX16_CONST(-0.40383845756765446), + FX16_CONST(-0.9154487160882677), FX16_CONST(-0.40243465085941865), + FX16_CONST(-0.9160649657993317), FX16_CONST(-0.4010298971835757), + FX16_CONST(-0.9166790599210427), FX16_CONST(-0.39962419984564673), + FX16_CONST(-0.9172909970083777), FX16_CONST(-0.39821756215337417), + FX16_CONST(-0.9179007756213903), FX16_CONST(-0.39680998741671075), + FX16_CONST(-0.9185083943252121), FX16_CONST(-0.3954014789478166), + FX16_CONST(-0.9191138516900577), FX16_CONST(-0.3939920400610482), + FX16_CONST(-0.9197171462912274), FX16_CONST(-0.39258167407295147), + FX16_CONST(-0.9203182767091106), FX16_CONST(-0.3911703843022537), + FX16_CONST(-0.9209172415291893), FX16_CONST(-0.38975817406985697), + FX16_CONST(-0.9215140393420418), FX16_CONST(-0.38834504669882663), + FX16_CONST(-0.9221086687433451), FX16_CONST(-0.3869310055143888), + FX16_CONST(-0.9227011283338785), FX16_CONST(-0.3855160538439189), + FX16_CONST(-0.9232914167195276), FX16_CONST(-0.38410019501693493), + FX16_CONST(-0.9238795325112865), FX16_CONST(-0.38268343236509034), + FX16_CONST(-0.9244654743252625), FX16_CONST(-0.38126576922216276), + FX16_CONST(-0.9250492407826775), FX16_CONST(-0.37984720892405144), + FX16_CONST(-0.9256308305098727), FX16_CONST(-0.3784277548087657), + FX16_CONST(-0.9262102421383114), FX16_CONST(-0.3770074102164182), + FX16_CONST(-0.9267874743045819), FX16_CONST(-0.37558617848921705), + FX16_CONST(-0.9273625256504009), FX16_CONST(-0.3741640629714585), + FX16_CONST(-0.9279353948226177), FX16_CONST(-0.37274106700951615), + FX16_CONST(-0.9285060804732155), FX16_CONST(-0.37131719395183777), + FX16_CONST(-0.9290745812593157), FX16_CONST(-0.36989244714893416), + FX16_CONST(-0.9296408958431813), FX16_CONST(-0.3684668299533722), + FX16_CONST(-0.9302050228922192), FX16_CONST(-0.36704034571976696), + FX16_CONST(-0.9307669610789836), FX16_CONST(-0.3656129978047743), + FX16_CONST(-0.9313267090811803), FX16_CONST(-0.36418478956708017), + FX16_CONST(-0.931884265581668), FX16_CONST(-0.36275572436739734), + FX16_CONST(-0.9324396292684624), FX16_CONST(-0.36132580556845423), + FX16_CONST(-0.932992798834739), FX16_CONST(-0.35989503653498794), + FX16_CONST(-0.933543772978836), FX16_CONST(-0.35846342063373704), + FX16_CONST(-0.9340925504042588), FX16_CONST(-0.35703096123343037), + FX16_CONST(-0.9346391298196807), FX16_CONST(-0.3555976617047841), + FX16_CONST(-0.9351835099389476), FX16_CONST(-0.35416352542049045), + FX16_CONST(-0.9357256894810804), FX16_CONST(-0.3527285557552106), + FX16_CONST(-0.9362656671702784), FX16_CONST(-0.35129275608556687), + FX16_CONST(-0.9368034417359214), FX16_CONST(-0.34985612979013536), + FX16_CONST(-0.9373390119125748), FX16_CONST(-0.34841868024943484), + FX16_CONST(-0.9378723764399898), FX16_CONST(-0.3469804108459238), + FX16_CONST(-0.9384035340631082), FX16_CONST(-0.34554132496398904), + FX16_CONST(-0.9389324835320646), FX16_CONST(-0.34410142598993865), + FX16_CONST(-0.9394592236021897), FX16_CONST(-0.3426607173119949), + FX16_CONST(-0.9399837530340138), FX16_CONST(-0.34121920232028274), + FX16_CONST(-0.9405060705932683), FX16_CONST(-0.3397768844068271), + FX16_CONST(-0.9410261750508893), FX16_CONST(-0.33833376696554124), + FX16_CONST(-0.9415440651830208), FX16_CONST(-0.33688985339221994), + FX16_CONST(-0.9420597397710174), FX16_CONST(-0.3354451470845314), + FX16_CONST(-0.9425731976014468), FX16_CONST(-0.3339996514420098), + FX16_CONST(-0.9430844374660934), FX16_CONST(-0.3325533698660445), + FX16_CONST(-0.9435934581619603), FX16_CONST(-0.33110630575987654), + FX16_CONST(-0.9441002584912727), FX16_CONST(-0.3296584625285875), + FX16_CONST(-0.9446048372614804), FX16_CONST(-0.32820984357909233), + FX16_CONST(-0.9451071932852604), FX16_CONST(-0.3267604523201323), + FX16_CONST(-0.9456073253805212), FX16_CONST(-0.3253102921622633), + FX16_CONST(-0.9461052323704033), FX16_CONST(-0.3238593665178531), + FX16_CONST(-0.9466009130832835), FX16_CONST(-0.3224076788010699), + FX16_CONST(-0.9470943663527772), FX16_CONST(-0.32095523242787516), + FX16_CONST(-0.9475855910177412), FX16_CONST(-0.3195020308160154), + FX16_CONST(-0.9480745859222761), FX16_CONST(-0.3180480773850154), + FX16_CONST(-0.9485613499157302), FX16_CONST(-0.3165933755561662), + FX16_CONST(-0.9490458818527006), FX16_CONST(-0.31513792875252256), + FX16_CONST(-0.9495281805930367), FX16_CONST(-0.31368174039889146), + FX16_CONST(-0.9500082450018431), FX16_CONST(-0.3122248139218248), + FX16_CONST(-0.9504860739494816), FX16_CONST(-0.31076715274961203), + FX16_CONST(-0.950961666311575), FX16_CONST(-0.30930876031226906), + FX16_CONST(-0.9514350209690083), FX16_CONST(-0.3078496400415351), + FX16_CONST(-0.9519061368079323), FX16_CONST(-0.306389795370861), + FX16_CONST(-0.9523750127197659), FX16_CONST(-0.3049292297354023), + FX16_CONST(-0.9528416476011987), FX16_CONST(-0.30346794657201104), + FX16_CONST(-0.9533060403541936), FX16_CONST(-0.30200594931922853), + FX16_CONST(-0.9537681898859902), FX16_CONST(-0.30054324141727373), + FX16_CONST(-0.9542280951091056), FX16_CONST(-0.2990798263080406), + FX16_CONST(-0.9546857549413383), FX16_CONST(-0.2976157074350862), + FX16_CONST(-0.9551411683057708), FX16_CONST(-0.2961508882436237), + FX16_CONST(-0.9555943341307709), FX16_CONST(-0.2946853721805149), + FX16_CONST(-0.9560452513499963), FX16_CONST(-0.293219162694259), + FX16_CONST(-0.956493918902395), FX16_CONST(-0.2917522632349895), + FX16_CONST(-0.9569403357322088), FX16_CONST(-0.29028467725446244), + FX16_CONST(-0.957384500788976), FX16_CONST(-0.28881640820604937), + FX16_CONST(-0.957826413027533), FX16_CONST(-0.2873474595447293), + FX16_CONST(-0.9582660714080176), FX16_CONST(-0.28587783472708106), + FX16_CONST(-0.9587034748958715), FX16_CONST(-0.28440753721127215), + FX16_CONST(-0.9591386224618419), FX16_CONST(-0.2829365704570555), + FX16_CONST(-0.9595715130819845), FX16_CONST(-0.28146493792575794), + FX16_CONST(-0.960002145737666), FX16_CONST(-0.27999264308027305), + FX16_CONST(-0.9604305194155657), FX16_CONST(-0.2785196893850536), + FX16_CONST(-0.9608566331076795), FX16_CONST(-0.2770460803061003), + FX16_CONST(-0.9612804858113205), FX16_CONST(-0.27557181931095837), + FX16_CONST(-0.9617020765291225), FX16_CONST(-0.27409690986870644), + FX16_CONST(-0.9621214042690416), FX16_CONST(-0.27262135544994887), + FX16_CONST(-0.9625384680443593), FX16_CONST(-0.2711451595268078), + FX16_CONST(-0.9629532668736838), FX16_CONST(-0.26966832557291553), + FX16_CONST(-0.9633657997809539), FX16_CONST(-0.2681908570634035), + FX16_CONST(-0.9637760657954398), FX16_CONST(-0.26671275747489853), + FX16_CONST(-0.9641840639517458), FX16_CONST(-0.2652340302855118), + FX16_CONST(-0.9645897932898128), FX16_CONST(-0.26375467897483124), + FX16_CONST(-0.9649932528549202), FX16_CONST(-0.26227470702391414), + FX16_CONST(-0.9653944416976893), FX16_CONST(-0.2607941179152759), + FX16_CONST(-0.9657933588740836), FX16_CONST(-0.25931291513288646), + FX16_CONST(-0.9661900034454125), FX16_CONST(-0.25783110216215904), + FX16_CONST(-0.9665843744783331), FX16_CONST(-0.2563486824899428), + FX16_CONST(-0.9669764710448522), FX16_CONST(-0.25486565960451435), + FX16_CONST(-0.9673662922223284), FX16_CONST(-0.2533820369955706), + FX16_CONST(-0.9677538370934754), FX16_CONST(-0.25189781815421725), + FX16_CONST(-0.9681391047463623), FX16_CONST(-0.2504130065729654), + FX16_CONST(-0.9685220942744173), FX16_CONST(-0.24892760574572015), + FX16_CONST(-0.9689028047764289), FX16_CONST(-0.24744161916777313), + FX16_CONST(-0.9692812353565483), FX16_CONST(-0.24595505033579515), + FX16_CONST(-0.9696573851242923), FX16_CONST(-0.24446790274782454), + FX16_CONST(-0.970031253194544), FX16_CONST(-0.24298017990326412), + FX16_CONST(-0.9704028386875555), FX16_CONST(-0.2414918853028694), + FX16_CONST(-0.9707721407289504), FX16_CONST(-0.2400030224487414), + FX16_CONST(-0.9711391584497252), FX16_CONST(-0.2385135948443182), + FX16_CONST(-0.9715038909862517), FX16_CONST(-0.23702360599436767), + FX16_CONST(-0.9718663374802793), FX16_CONST(-0.2355330594049758), + FX16_CONST(-0.9722264970789363), FX16_CONST(-0.23404195858354357), + FX16_CONST(-0.9725843689347322), FX16_CONST(-0.23255030703877522), + FX16_CONST(-0.9729399522055602), FX16_CONST(-0.23105810828067094), + FX16_CONST(-0.9732932460546981), FX16_CONST(-0.22956536582051942), + FX16_CONST(-0.9736442496508119), FX16_CONST(-0.22807208317088612), + FX16_CONST(-0.9739929621679558), FX16_CONST(-0.22657826384561022), + FX16_CONST(-0.9743393827855759), FX16_CONST(-0.22508391135979292), + FX16_CONST(-0.9746835106885107), FX16_CONST(-0.2235890292297899), + FX16_CONST(-0.9750253450669942), FX16_CONST(-0.2220936209732033), + FX16_CONST(-0.9753648851166569), FX16_CONST(-0.22059769010887398), + FX16_CONST(-0.9757021300385285), FX16_CONST(-0.2191012401568701), + FX16_CONST(-0.976037079039039), FX16_CONST(-0.21760427463848378), + FX16_CONST(-0.9763697313300211), FX16_CONST(-0.2161067970762195), + FX16_CONST(-0.9767000861287118), FX16_CONST(-0.2146088109937866), + FX16_CONST(-0.9770281426577543), FX16_CONST(-0.21311031991609192), + FX16_CONST(-0.9773539001452), FX16_CONST(-0.21161132736922797), + FX16_CONST(-0.9776773578245099), FX16_CONST(-0.21011183688046986), + FX16_CONST(-0.977998514934557), FX16_CONST(-0.20861185197826357), + FX16_CONST(-0.9783173707196277), FX16_CONST(-0.20711137619221848), + FX16_CONST(-0.9786339244294232), FX16_CONST(-0.20561041305309902), + FX16_CONST(-0.9789481753190621), FX16_CONST(-0.20410896609281734), + FX16_CONST(-0.979260122649082), FX16_CONST(-0.20260703884442144), + FX16_CONST(-0.9795697656854405), FX16_CONST(-0.20110463484209207), + FX16_CONST(-0.9798771036995176), FX16_CONST(-0.19960175762113097), + FX16_CONST(-0.9801821359681174), FX16_CONST(-0.19809841071795342), + FX16_CONST(-0.9804848617734693), FX16_CONST(-0.19659459767008078), + FX16_CONST(-0.9807852804032303), FX16_CONST(-0.19509032201612866), + FX16_CONST(-0.9810833911504866), FX16_CONST(-0.19358558729580386), + FX16_CONST(-0.9813791933137546), FX16_CONST(-0.19208039704989252), + FX16_CONST(-0.9816726861969831), FX16_CONST(-0.19057475482025268), + FX16_CONST(-0.9819638691095554), FX16_CONST(-0.18906866414980597), + FX16_CONST(-0.9822527413662894), FX16_CONST(-0.18756212858253007), + FX16_CONST(-0.9825393022874412), FX16_CONST(-0.18605515166344697), + FX16_CONST(-0.9828235511987052), FX16_CONST(-0.18454773693861978), + FX16_CONST(-0.9831054874312163), FX16_CONST(-0.18303988795514095), + FX16_CONST(-0.9833851103215513), FX16_CONST(-0.18153160826112483), + FX16_CONST(-0.9836624192117301), FX16_CONST(-0.18002290140570007), + FX16_CONST(-0.9839374134492188), FX16_CONST(-0.17851377093899792), + FX16_CONST(-0.984210092386929), FX16_CONST(-0.177004220412149), + FX16_CONST(-0.9844804553832209), FX16_CONST(-0.1754942533772715), + FX16_CONST(-0.9847485018019042), FX16_CONST(-0.17398387338746374), + FX16_CONST(-0.9850142310122398), FX16_CONST(-0.17247308399679573), + FX16_CONST(-0.9852776423889411), FX16_CONST(-0.1709618887603017), + FX16_CONST(-0.9855387353121761), FX16_CONST(-0.1694502912339683), + FX16_CONST(-0.9857975091675674), FX16_CONST(-0.16793829497473134), + FX16_CONST(-0.9860539633461954), FX16_CONST(-0.1664259035404641), + FX16_CONST(-0.9863080972445987), FX16_CONST(-0.16491312048996976), + FX16_CONST(-0.9865599102647754), FX16_CONST(-0.16339994938297378), + FX16_CONST(-0.9868094018141854), FX16_CONST(-0.16188639378011224), + FX16_CONST(-0.987056571305751), FX16_CONST(-0.1603724572429285), + FX16_CONST(-0.9873014181578583), FX16_CONST(-0.15885814333386153), + FX16_CONST(-0.9875439417943593), FX16_CONST(-0.1573434556162382), + FX16_CONST(-0.9877841416445722), FX16_CONST(-0.15582839765426498), + FX16_CONST(-0.9880220171432835), FX16_CONST(-0.15431297301302058), + FX16_CONST(-0.9882575677307495), FX16_CONST(-0.15279718525844374), + FX16_CONST(-0.9884907928526966), FX16_CONST(-0.15128103795733036), + FX16_CONST(-0.9887216919603238), FX16_CONST(-0.1497645346773215), + FX16_CONST(-0.988950264510303), FX16_CONST(-0.1482476789868959), + FX16_CONST(-0.9891765099647809), FX16_CONST(-0.1467304744553623), + FX16_CONST(-0.9894004277913803), FX16_CONST(-0.14521292465284785), + FX16_CONST(-0.9896220174632008), FX16_CONST(-0.1436950331502947), + FX16_CONST(-0.9898412784588205), FX16_CONST(-0.14217680351944814), + FX16_CONST(-0.9900582102622971), FX16_CONST(-0.14065823933284916), + FX16_CONST(-0.9902728123631691), FX16_CONST(-0.13913934416382598), + FX16_CONST(-0.990485084256457), FX16_CONST(-0.13762012158648654), + FX16_CONST(-0.9906950254426646), FX16_CONST(-0.13610057517570653), + FX16_CONST(-0.99090263542778), FX16_CONST(-0.13458070850712636), + FX16_CONST(-0.9911079137232769), FX16_CONST(-0.13306052515713906), + FX16_CONST(-0.9913108598461154), FX16_CONST(-0.13154002870288295), + FX16_CONST(-0.9915114733187439), FX16_CONST(-0.13001922272223393), + FX16_CONST(-0.9917097536690995), FX16_CONST(-0.12849811079379359), + FX16_CONST(-0.9919057004306093), FX16_CONST(-0.12697669649688612), + FX16_CONST(-0.9920993131421918), FX16_CONST(-0.12545498341154632), + FX16_CONST(-0.9922905913482574), FX16_CONST(-0.12393297511851209), + FX16_CONST(-0.9924795345987101), FX16_CONST(-0.12241067519921596), + FX16_CONST(-0.9926661424489479), FX16_CONST(-0.12088808723577757), + FX16_CONST(-0.9928504144598651), FX16_CONST(-0.11936521481099169), + FX16_CONST(-0.9930323501978514), FX16_CONST(-0.11784206150832514), + FX16_CONST(-0.9932119492347945), FX16_CONST(-0.11631863091190477), + FX16_CONST(-0.9933892111480807), FX16_CONST(-0.11479492660650993), + FX16_CONST(-0.9935641355205953), FX16_CONST(-0.11327095217756492), + FX16_CONST(-0.9937367219407246), FX16_CONST(-0.111746711211127), + FX16_CONST(-0.9939069700023561), FX16_CONST(-0.11022220729388331), + FX16_CONST(-0.9940748793048794), FX16_CONST(-0.1086974440131388), + FX16_CONST(-0.9942404494531879), FX16_CONST(-0.10717242495680877), + FX16_CONST(-0.9944036800576791), FX16_CONST(-0.10564715371341038), + FX16_CONST(-0.9945645707342554), FX16_CONST(-0.10412163387205507), + FX16_CONST(-0.9947231211043257), FX16_CONST(-0.10259586902243661), + FX16_CONST(-0.9948793307948056), FX16_CONST(-0.10106986275482799), + FX16_CONST(-0.9950331994381186), FX16_CONST(-0.09954361866006935), + FX16_CONST(-0.9951847266721969), FX16_CONST(-0.09801714032956045), + FX16_CONST(-0.9953339121404822), FX16_CONST(-0.09649043135525316), + FX16_CONST(-0.9954807554919269), FX16_CONST(-0.09496349532963941), + FX16_CONST(-0.9956252563809943), FX16_CONST(-0.09343633584574804), + FX16_CONST(-0.9957674144676598), FX16_CONST(-0.09190895649713282), + FX16_CONST(-0.9959072294174117), FX16_CONST(-0.09038136087786491), + FX16_CONST(-0.996044700901252), FX16_CONST(-0.08885355258252436), + FX16_CONST(-0.9961798285956969), FX16_CONST(-0.08732553520619256), + FX16_CONST(-0.996312612182778), FX16_CONST(-0.08579731234444023), + FX16_CONST(-0.9964430513500426), FX16_CONST(-0.08426888759332424), + FX16_CONST(-0.9965711457905548), FX16_CONST(-0.0827402645493757), + FX16_CONST(-0.9966968952028961), FX16_CONST(-0.08121144680959229), + FX16_CONST(-0.9968202992911657), FX16_CONST(-0.0796824379714307), + FX16_CONST(-0.996941357764982), FX16_CONST(-0.07815324163279465), + FX16_CONST(-0.997060070339483), FX16_CONST(-0.07662386139203174), + FX16_CONST(-0.9971764367353261), FX16_CONST(-0.0750943008479214), + FX16_CONST(-0.9972904566786902), FX16_CONST(-0.07356456359966736), + FX16_CONST(-0.9974021299012753), FX16_CONST(-0.0720346532468891), + FX16_CONST(-0.9975114561403035), FX16_CONST(-0.07050457338961436), + FX16_CONST(-0.9976184351385196), FX16_CONST(-0.06897432762826708), + FX16_CONST(-0.9977230666441916), FX16_CONST(-0.06744391956366423), + FX16_CONST(-0.9978253504111116), FX16_CONST(-0.06591335279700383), + FX16_CONST(-0.997925286198596), FX16_CONST(-0.06438263092985731), + FX16_CONST(-0.9980228737714861), FX16_CONST(-0.06285175756416199), + FX16_CONST(-0.9981181129001492), FX16_CONST(-0.061320736302208995), + FX16_CONST(-0.9982110033604782), FX16_CONST(-0.05978957074664013), + FX16_CONST(-0.9983015449338928), FX16_CONST(-0.058258264500435857), + FX16_CONST(-0.9983897374073402), FX16_CONST(-0.056726821166907686), + FX16_CONST(-0.9984755805732948), FX16_CONST(-0.05519524434968971), + FX16_CONST(-0.9985590742297593), FX16_CONST(-0.053663537652731026), + FX16_CONST(-0.9986402181802652), FX16_CONST(-0.05213170468028366), + FX16_CONST(-0.9987190122338729), FX16_CONST(-0.050599749036899455), + FX16_CONST(-0.9987954562051724), FX16_CONST(-0.04906767432741803), + FX16_CONST(-0.9988695499142836), FX16_CONST(-0.04753548415695916), + FX16_CONST(-0.9989412931868569), FX16_CONST(-0.046003182130915206), + FX16_CONST(-0.9990106858540733), FX16_CONST(-0.044470771854939084), + FX16_CONST(-0.9990777277526454), FX16_CONST(-0.042938256934941084), + FX16_CONST(-0.9991424187248169), FX16_CONST(-0.04140564097707684), + FX16_CONST(-0.9992047586183639), FX16_CONST(-0.03987292758773975), + FX16_CONST(-0.9992647472865944), FX16_CONST(-0.03834012037355247), + FX16_CONST(-0.9993223845883494), FX16_CONST(-0.03680722294135933), + FX16_CONST(-0.9993776703880028), FX16_CONST(-0.035274238898214294), + FX16_CONST(-0.9994306045554617), FX16_CONST(-0.03374117185137776), + FX16_CONST(-0.999481186966167), FX16_CONST(-0.0322080254083046), + FX16_CONST(-0.9995294175010931), FX16_CONST(-0.030674803176636484), + FX16_CONST(-0.9995752960467492), FX16_CONST(-0.02914150876419431), + FX16_CONST(-0.9996188224951786), FX16_CONST(-0.027608145778966163), + FX16_CONST(-0.9996599967439592), FX16_CONST(-0.02607471782910416), + FX16_CONST(-0.9996988186962042), FX16_CONST(-0.02454122852291239), + FX16_CONST(-0.9997352882605617), FX16_CONST(-0.02300768146883931), + FX16_CONST(-0.9997694053512153), FX16_CONST(-0.021474080275469286), + FX16_CONST(-0.9998011698878843), FX16_CONST(-0.019940428551514944), + FX16_CONST(-0.9998305817958234), FX16_CONST(-0.018406729905805164), + FX16_CONST(-0.9998576410058239), FX16_CONST(-0.016872987947281894), + FX16_CONST(-0.9998823474542126), FX16_CONST(-0.015339206284988121), + FX16_CONST(-0.9999047010828529), FX16_CONST(-0.01380538852806025), + FX16_CONST(-0.9999247018391445), FX16_CONST(-0.012271538285720512), + FX16_CONST(-0.9999423496760239), FX16_CONST(-0.010737659167264916), + FX16_CONST(-0.9999576445519639), FX16_CONST(-0.009203754782060083), + FX16_CONST(-0.9999705864309741), FX16_CONST(-0.007669828739531199), + FX16_CONST(-0.9999811752826011), FX16_CONST(-0.006135884649154416), + FX16_CONST(-0.9999894110819284), FX16_CONST(-0.00460192612044835), + FX16_CONST(-0.9999952938095762), FX16_CONST(-0.0030679567629664827), + FX16_CONST(-0.9999988234517019), FX16_CONST(-0.0015339801862851105), + FX16_CONST(-1.0), FX16_CONST(-1.8369701987210297e-16), + FX16_CONST(-0.9999988234517019), FX16_CONST(0.0015339801862847432), + FX16_CONST(-0.9999952938095762), FX16_CONST(0.003067956762966115), + FX16_CONST(-0.9999894110819284), FX16_CONST(0.004601926120447982), + FX16_CONST(-0.9999811752826011), FX16_CONST(0.0061358846491540485), + FX16_CONST(-0.9999705864309741), FX16_CONST(0.007669828739530832), + FX16_CONST(-0.9999576445519639), FX16_CONST(0.009203754782059715), + FX16_CONST(-0.9999423496760239), FX16_CONST(0.010737659167264548), + FX16_CONST(-0.9999247018391445), FX16_CONST(0.012271538285720144), + FX16_CONST(-0.9999047010828529), FX16_CONST(0.013805388528059882), + FX16_CONST(-0.9998823474542126), FX16_CONST(0.015339206284987753), + FX16_CONST(-0.9998576410058239), FX16_CONST(0.016872987947281527), + FX16_CONST(-0.9998305817958234), FX16_CONST(0.018406729905804796), + FX16_CONST(-0.9998011698878843), FX16_CONST(0.019940428551514577), + FX16_CONST(-0.9997694053512153), FX16_CONST(0.021474080275468918), + FX16_CONST(-0.9997352882605617), FX16_CONST(0.023007681468838945), + FX16_CONST(-0.9996988186962042), FX16_CONST(0.02454122852291202), + FX16_CONST(-0.9996599967439592), FX16_CONST(0.026074717829103793), + FX16_CONST(-0.9996188224951786), FX16_CONST(0.027608145778965795), + FX16_CONST(-0.9995752960467492), FX16_CONST(0.02914150876419394), + FX16_CONST(-0.9995294175010931), FX16_CONST(0.030674803176636116), + FX16_CONST(-0.999481186966167), FX16_CONST(0.03220802540830423), + FX16_CONST(-0.9994306045554617), FX16_CONST(0.0337411718513774), + FX16_CONST(-0.9993776703880028), FX16_CONST(0.035274238898213926), + FX16_CONST(-0.9993223845883495), FX16_CONST(0.036807222941358964), + FX16_CONST(-0.9992647472865945), FX16_CONST(0.038340120373552104), + FX16_CONST(-0.9992047586183639), FX16_CONST(0.03987292758773938), + FX16_CONST(-0.9991424187248169), FX16_CONST(0.04140564097707647), + FX16_CONST(-0.9990777277526454), FX16_CONST(0.042938256934940716), + FX16_CONST(-0.9990106858540734), FX16_CONST(0.044470771854938716), + FX16_CONST(-0.9989412931868569), FX16_CONST(0.046003182130914845), + FX16_CONST(-0.9988695499142836), FX16_CONST(0.04753548415695879), + FX16_CONST(-0.9987954562051724), FX16_CONST(0.04906767432741766), + FX16_CONST(-0.9987190122338729), FX16_CONST(0.05059974903689909), + FX16_CONST(-0.9986402181802653), FX16_CONST(0.05213170468028329), + FX16_CONST(-0.9985590742297593), FX16_CONST(0.05366353765273066), + FX16_CONST(-0.9984755805732948), FX16_CONST(0.055195244349689344), + FX16_CONST(-0.9983897374073402), FX16_CONST(0.05672682116690732), + FX16_CONST(-0.9983015449338929), FX16_CONST(0.05825826450043549), + FX16_CONST(-0.9982110033604782), FX16_CONST(0.059789570746639764), + FX16_CONST(-0.9981181129001492), FX16_CONST(0.06132073630220863), + FX16_CONST(-0.9980228737714862), FX16_CONST(0.06285175756416163), + FX16_CONST(-0.997925286198596), FX16_CONST(0.06438263092985695), + FX16_CONST(-0.9978253504111116), FX16_CONST(0.06591335279700346), + FX16_CONST(-0.9977230666441916), FX16_CONST(0.06744391956366387), + FX16_CONST(-0.9976184351385196), FX16_CONST(0.06897432762826672), + FX16_CONST(-0.9975114561403035), FX16_CONST(0.070504573389614), + FX16_CONST(-0.9974021299012753), FX16_CONST(0.07203465324688872), + FX16_CONST(-0.9972904566786902), FX16_CONST(0.07356456359966698), + FX16_CONST(-0.9971764367353262), FX16_CONST(0.07509430084792104), + FX16_CONST(-0.997060070339483), FX16_CONST(0.07662386139203138), + FX16_CONST(-0.9969413577649822), FX16_CONST(0.07815324163279429), + FX16_CONST(-0.9968202992911657), FX16_CONST(0.07968243797143033), + FX16_CONST(-0.9966968952028961), FX16_CONST(0.08121144680959191), + FX16_CONST(-0.9965711457905548), FX16_CONST(0.08274026454937533), + FX16_CONST(-0.9964430513500426), FX16_CONST(0.08426888759332388), + FX16_CONST(-0.996312612182778), FX16_CONST(0.08579731234443985), + FX16_CONST(-0.9961798285956969), FX16_CONST(0.0873255352061922), + FX16_CONST(-0.9960447009012521), FX16_CONST(0.088853552582524), + FX16_CONST(-0.9959072294174117), FX16_CONST(0.09038136087786454), + FX16_CONST(-0.9957674144676598), FX16_CONST(0.09190895649713245), + FX16_CONST(-0.9956252563809943), FX16_CONST(0.09343633584574766), + FX16_CONST(-0.9954807554919269), FX16_CONST(0.09496349532963905), + FX16_CONST(-0.9953339121404823), FX16_CONST(0.0964904313552528), + FX16_CONST(-0.9951847266721969), FX16_CONST(0.09801714032956009), + FX16_CONST(-0.9950331994381186), FX16_CONST(0.09954361866006897), + FX16_CONST(-0.9948793307948056), FX16_CONST(0.10106986275482763), + FX16_CONST(-0.9947231211043257), FX16_CONST(0.10259586902243625), + FX16_CONST(-0.9945645707342554), FX16_CONST(0.1041216338720547), + FX16_CONST(-0.9944036800576791), FX16_CONST(0.10564715371341002), + FX16_CONST(-0.994240449453188), FX16_CONST(0.10717242495680841), + FX16_CONST(-0.9940748793048795), FX16_CONST(0.10869744401313844), + FX16_CONST(-0.9939069700023561), FX16_CONST(0.11022220729388293), + FX16_CONST(-0.9937367219407246), FX16_CONST(0.11174671121112664), + FX16_CONST(-0.9935641355205953), FX16_CONST(0.11327095217756455), + FX16_CONST(-0.9933892111480808), FX16_CONST(0.11479492660650957), + FX16_CONST(-0.9932119492347946), FX16_CONST(0.1163186309119044), + FX16_CONST(-0.9930323501978514), FX16_CONST(0.11784206150832478), + FX16_CONST(-0.9928504144598651), FX16_CONST(0.11936521481099133), + FX16_CONST(-0.992666142448948), FX16_CONST(0.1208880872357772), + FX16_CONST(-0.9924795345987101), FX16_CONST(0.1224106751992156), + FX16_CONST(-0.9922905913482574), FX16_CONST(0.12393297511851173), + FX16_CONST(-0.9920993131421918), FX16_CONST(0.12545498341154596), + FX16_CONST(-0.9919057004306093), FX16_CONST(0.12697669649688575), + FX16_CONST(-0.9917097536690995), FX16_CONST(0.12849811079379322), + FX16_CONST(-0.9915114733187439), FX16_CONST(0.13001922272223354), + FX16_CONST(-0.9913108598461154), FX16_CONST(0.1315400287028826), + FX16_CONST(-0.9911079137232769), FX16_CONST(0.1330605251571387), + FX16_CONST(-0.99090263542778), FX16_CONST(0.13458070850712597), + FX16_CONST(-0.9906950254426646), FX16_CONST(0.13610057517570617), + FX16_CONST(-0.990485084256457), FX16_CONST(0.13762012158648618), + FX16_CONST(-0.9902728123631692), FX16_CONST(0.13913934416382562), + FX16_CONST(-0.9900582102622971), FX16_CONST(0.1406582393328488), + FX16_CONST(-0.9898412784588205), FX16_CONST(0.14217680351944778), + FX16_CONST(-0.9896220174632009), FX16_CONST(0.14369503315029433), + FX16_CONST(-0.9894004277913804), FX16_CONST(0.1452129246528475), + FX16_CONST(-0.9891765099647809), FX16_CONST(0.14673047445536194), + FX16_CONST(-0.9889502645103031), FX16_CONST(0.14824767898689553), + FX16_CONST(-0.9887216919603238), FX16_CONST(0.14976453467732115), + FX16_CONST(-0.9884907928526967), FX16_CONST(0.15128103795733), + FX16_CONST(-0.9882575677307495), FX16_CONST(0.15279718525844338), + FX16_CONST(-0.9880220171432835), FX16_CONST(0.15431297301302022), + FX16_CONST(-0.9877841416445723), FX16_CONST(0.15582839765426462), + FX16_CONST(-0.9875439417943593), FX16_CONST(0.1573434556162378), + FX16_CONST(-0.9873014181578584), FX16_CONST(0.15885814333386117), + FX16_CONST(-0.9870565713057511), FX16_CONST(0.16037245724292815), + FX16_CONST(-0.9868094018141854), FX16_CONST(0.16188639378011188), + FX16_CONST(-0.9865599102647754), FX16_CONST(0.16339994938297342), + FX16_CONST(-0.9863080972445988), FX16_CONST(0.1649131204899694), + FX16_CONST(-0.9860539633461955), FX16_CONST(0.16642590354046374), + FX16_CONST(-0.9857975091675675), FX16_CONST(0.16793829497473098), + FX16_CONST(-0.9855387353121761), FX16_CONST(0.16945029123396793), + FX16_CONST(-0.9852776423889412), FX16_CONST(0.17096188876030133), + FX16_CONST(-0.98501423101224), FX16_CONST(0.17247308399679537), + FX16_CONST(-0.9847485018019043), FX16_CONST(0.17398387338746338), + FX16_CONST(-0.9844804553832209), FX16_CONST(0.17549425337727115), + FX16_CONST(-0.9842100923869291), FX16_CONST(0.17700422041214864), + FX16_CONST(-0.9839374134492189), FX16_CONST(0.17851377093899756), + FX16_CONST(-0.9836624192117303), FX16_CONST(0.1800229014056997), + FX16_CONST(-0.9833851103215513), FX16_CONST(0.18153160826112447), + FX16_CONST(-0.9831054874312164), FX16_CONST(0.1830398879551406), + FX16_CONST(-0.9828235511987053), FX16_CONST(0.1845477369386194), + FX16_CONST(-0.9825393022874412), FX16_CONST(0.1860551516634466), + FX16_CONST(-0.9822527413662894), FX16_CONST(0.1875621285825297), + FX16_CONST(-0.9819638691095554), FX16_CONST(0.1890686641498056), + FX16_CONST(-0.9816726861969832), FX16_CONST(0.19057475482025232), + FX16_CONST(-0.9813791933137547), FX16_CONST(0.19208039704989216), + FX16_CONST(-0.9810833911504867), FX16_CONST(0.1935855872958035), + FX16_CONST(-0.9807852804032304), FX16_CONST(0.1950903220161283), + FX16_CONST(-0.9804848617734693), FX16_CONST(0.19659459767008042), + FX16_CONST(-0.9801821359681175), FX16_CONST(0.19809841071795306), + FX16_CONST(-0.9798771036995177), FX16_CONST(0.1996017576211306), + FX16_CONST(-0.9795697656854406), FX16_CONST(0.2011046348420917), + FX16_CONST(-0.979260122649082), FX16_CONST(0.20260703884442108), + FX16_CONST(-0.9789481753190622), FX16_CONST(0.20410896609281698), + FX16_CONST(-0.9786339244294233), FX16_CONST(0.20561041305309866), + FX16_CONST(-0.9783173707196278), FX16_CONST(0.20711137619221812), + FX16_CONST(-0.9779985149345571), FX16_CONST(0.2086118519782632), + FX16_CONST(-0.97767735782451), FX16_CONST(0.2101118368804695), + FX16_CONST(-0.9773539001452), FX16_CONST(0.2116113273692276), + FX16_CONST(-0.9770281426577543), FX16_CONST(0.21311031991609156), + FX16_CONST(-0.976700086128712), FX16_CONST(0.21460881099378626), + FX16_CONST(-0.9763697313300213), FX16_CONST(0.21610679707621913), + FX16_CONST(-0.9760370790390391), FX16_CONST(0.21760427463848342), + FX16_CONST(-0.9757021300385286), FX16_CONST(0.21910124015686974), + FX16_CONST(-0.975364885116657), FX16_CONST(0.22059769010887362), + FX16_CONST(-0.9750253450669942), FX16_CONST(0.22209362097320293), + FX16_CONST(-0.9746835106885108), FX16_CONST(0.22358902922978954), + FX16_CONST(-0.974339382785576), FX16_CONST(0.22508391135979255), + FX16_CONST(-0.973992962167956), FX16_CONST(0.22657826384560986), + FX16_CONST(-0.9736442496508119), FX16_CONST(0.22807208317088576), + FX16_CONST(-0.9732932460546981), FX16_CONST(0.22956536582051906), + FX16_CONST(-0.9729399522055603), FX16_CONST(0.23105810828067058), + FX16_CONST(-0.9725843689347323), FX16_CONST(0.23255030703877488), + FX16_CONST(-0.9722264970789364), FX16_CONST(0.2340419585835432), + FX16_CONST(-0.9718663374802794), FX16_CONST(0.23553305940497546), + FX16_CONST(-0.9715038909862518), FX16_CONST(0.2370236059943673), + FX16_CONST(-0.9711391584497253), FX16_CONST(0.23851359484431783), + FX16_CONST(-0.9707721407289505), FX16_CONST(0.24000302244874103), + FX16_CONST(-0.9704028386875555), FX16_CONST(0.24149188530286905), + FX16_CONST(-0.970031253194544), FX16_CONST(0.24298017990326376), + FX16_CONST(-0.9696573851242924), FX16_CONST(0.24446790274782418), + FX16_CONST(-0.9692812353565484), FX16_CONST(0.2459550503357948), + FX16_CONST(-0.968902804776429), FX16_CONST(0.24744161916777277), + FX16_CONST(-0.9685220942744174), FX16_CONST(0.2489276057457198), + FX16_CONST(-0.9681391047463624), FX16_CONST(0.25041300657296506), + FX16_CONST(-0.9677538370934755), FX16_CONST(0.2518978181542169), + FX16_CONST(-0.9673662922223285), FX16_CONST(0.25338203699557027), + FX16_CONST(-0.9669764710448523), FX16_CONST(0.25486565960451396), + FX16_CONST(-0.9665843744783332), FX16_CONST(0.25634868248994247), + FX16_CONST(-0.9661900034454126), FX16_CONST(0.2578311021621587), + FX16_CONST(-0.9657933588740837), FX16_CONST(0.2593129151328861), + FX16_CONST(-0.9653944416976894), FX16_CONST(0.2607941179152755), + FX16_CONST(-0.9649932528549203), FX16_CONST(0.2622747070239138), + FX16_CONST(-0.9645897932898129), FX16_CONST(0.26375467897483085), + FX16_CONST(-0.9641840639517459), FX16_CONST(0.26523403028551146), + FX16_CONST(-0.96377606579544), FX16_CONST(0.2667127574748982), + FX16_CONST(-0.963365799780954), FX16_CONST(0.2681908570634031), + FX16_CONST(-0.9629532668736839), FX16_CONST(0.2696683255729152), + FX16_CONST(-0.9625384680443594), FX16_CONST(0.2711451595268074), + FX16_CONST(-0.9621214042690417), FX16_CONST(0.27262135544994853), + FX16_CONST(-0.9617020765291227), FX16_CONST(0.2740969098687061), + FX16_CONST(-0.9612804858113206), FX16_CONST(0.27557181931095803), + FX16_CONST(-0.9608566331076797), FX16_CONST(0.27704608030609995), + FX16_CONST(-0.9604305194155658), FX16_CONST(0.2785196893850533), + FX16_CONST(-0.9600021457376661), FX16_CONST(0.2799926430802727), + FX16_CONST(-0.9595715130819846), FX16_CONST(0.2814649379257576), + FX16_CONST(-0.959138622461842), FX16_CONST(0.2829365704570551), + FX16_CONST(-0.9587034748958716), FX16_CONST(0.28440753721127177), + FX16_CONST(-0.9582660714080177), FX16_CONST(0.28587783472708067), + FX16_CONST(-0.957826413027533), FX16_CONST(0.2873474595447289), + FX16_CONST(-0.9573845007889761), FX16_CONST(0.28881640820604904), + FX16_CONST(-0.9569403357322089), FX16_CONST(0.29028467725446205), + FX16_CONST(-0.9564939189023951), FX16_CONST(0.29175226323498915), + FX16_CONST(-0.9560452513499964), FX16_CONST(0.2932191626942587), + FX16_CONST(-0.955594334130771), FX16_CONST(0.2946853721805145), + FX16_CONST(-0.9551411683057709), FX16_CONST(0.2961508882436233), + FX16_CONST(-0.9546857549413384), FX16_CONST(0.29761570743508586), + FX16_CONST(-0.9542280951091057), FX16_CONST(0.29907982630804025), + FX16_CONST(-0.9537681898859903), FX16_CONST(0.3005432414172734), + FX16_CONST(-0.9533060403541939), FX16_CONST(0.30200594931922814), + FX16_CONST(-0.9528416476011988), FX16_CONST(0.3034679465720107), + FX16_CONST(-0.952375012719766), FX16_CONST(0.304929229735402), + FX16_CONST(-0.9519061368079325), FX16_CONST(0.30638979537086064), + FX16_CONST(-0.9514350209690084), FX16_CONST(0.30784964004153476), + FX16_CONST(-0.9509616663115751), FX16_CONST(0.3093087603122687), + FX16_CONST(-0.9504860739494817), FX16_CONST(0.31076715274961164), + FX16_CONST(-0.9500082450018432), FX16_CONST(0.3122248139218244), + FX16_CONST(-0.9495281805930368), FX16_CONST(0.31368174039889113), + FX16_CONST(-0.9490458818527007), FX16_CONST(0.31513792875252217), + FX16_CONST(-0.9485613499157303), FX16_CONST(0.3165933755561658), + FX16_CONST(-0.9480745859222762), FX16_CONST(0.318048077385015), + FX16_CONST(-0.9475855910177413), FX16_CONST(0.3195020308160151), + FX16_CONST(-0.9470943663527773), FX16_CONST(0.32095523242787477), + FX16_CONST(-0.9466009130832836), FX16_CONST(0.3224076788010696), + FX16_CONST(-0.9461052323704034), FX16_CONST(0.32385936651785274), + FX16_CONST(-0.9456073253805213), FX16_CONST(0.3253102921622629), + FX16_CONST(-0.9451071932852605), FX16_CONST(0.32676045232013196), + FX16_CONST(-0.9446048372614805), FX16_CONST(0.328209843579092), + FX16_CONST(-0.9441002584912728), FX16_CONST(0.32965846252858716), + FX16_CONST(-0.9435934581619604), FX16_CONST(0.3311063057598762), + FX16_CONST(-0.9430844374660935), FX16_CONST(0.33255336986604417), + FX16_CONST(-0.9425731976014469), FX16_CONST(0.3339996514420095), + FX16_CONST(-0.9420597397710175), FX16_CONST(0.33544514708453105), + FX16_CONST(-0.9415440651830209), FX16_CONST(0.3368898533922196), + FX16_CONST(-0.9410261750508894), FX16_CONST(0.33833376696554085), + FX16_CONST(-0.9405060705932684), FX16_CONST(0.33977688440682674), + FX16_CONST(-0.9399837530340139), FX16_CONST(0.3412192023202824), + FX16_CONST(-0.9394592236021898), FX16_CONST(0.34266071731199454), + FX16_CONST(-0.9389324835320647), FX16_CONST(0.3441014259899383), + FX16_CONST(-0.9384035340631083), FX16_CONST(0.3455413249639887), + FX16_CONST(-0.9378723764399899), FX16_CONST(0.34698041084592346), + FX16_CONST(-0.937339011912575), FX16_CONST(0.3484186802494345), + FX16_CONST(-0.9368034417359216), FX16_CONST(0.34985612979013503), + FX16_CONST(-0.9362656671702785), FX16_CONST(0.35129275608556654), + FX16_CONST(-0.9357256894810805), FX16_CONST(0.3527285557552103), + FX16_CONST(-0.9351835099389477), FX16_CONST(0.35416352542049007), + FX16_CONST(-0.9346391298196808), FX16_CONST(0.35559766170478374), + FX16_CONST(-0.9340925504042589), FX16_CONST(0.35703096123343003), + FX16_CONST(-0.9335437729788362), FX16_CONST(0.3584634206337367), + FX16_CONST(-0.9329927988347391), FX16_CONST(0.3598950365349876), + FX16_CONST(-0.9324396292684626), FX16_CONST(0.3613258055684539), + FX16_CONST(-0.9318842655816681), FX16_CONST(0.362755724367397), + FX16_CONST(-0.9313267090811805), FX16_CONST(0.36418478956707984), + FX16_CONST(-0.9307669610789837), FX16_CONST(0.36561299780477396), + FX16_CONST(-0.9302050228922193), FX16_CONST(0.36704034571976657), + FX16_CONST(-0.9296408958431814), FX16_CONST(0.3684668299533719), + FX16_CONST(-0.9290745812593159), FX16_CONST(0.3698924471489338), + FX16_CONST(-0.9285060804732156), FX16_CONST(0.3713171939518374), + FX16_CONST(-0.9279353948226179), FX16_CONST(0.3727410670095158), + FX16_CONST(-0.927362525650401), FX16_CONST(0.37416406297145816), + FX16_CONST(-0.926787474304582), FX16_CONST(0.3755861784892167), + FX16_CONST(-0.9262102421383115), FX16_CONST(0.37700741021641787), + FX16_CONST(-0.9256308305098728), FX16_CONST(0.37842775480876534), + FX16_CONST(-0.9250492407826776), FX16_CONST(0.3798472089240511), + FX16_CONST(-0.9244654743252626), FX16_CONST(0.38126576922216243), + FX16_CONST(-0.9238795325112866), FX16_CONST(0.38268343236509), + FX16_CONST(-0.9232914167195279), FX16_CONST(0.3841001950169346), + FX16_CONST(-0.9227011283338787), FX16_CONST(0.38551605384391857), + FX16_CONST(-0.9221086687433452), FX16_CONST(0.38693100551438847), + FX16_CONST(-0.9215140393420419), FX16_CONST(0.3883450466988263), + FX16_CONST(-0.9209172415291894), FX16_CONST(0.38975817406985663), + FX16_CONST(-0.9203182767091108), FX16_CONST(0.39117038430225337), + FX16_CONST(-0.9197171462912275), FX16_CONST(0.39258167407295114), + FX16_CONST(-0.9191138516900579), FX16_CONST(0.3939920400610479), + FX16_CONST(-0.9185083943252123), FX16_CONST(0.39540147894781624), + FX16_CONST(-0.9179007756213904), FX16_CONST(0.3968099874167104), + FX16_CONST(-0.9172909970083778), FX16_CONST(0.39821756215337384), + FX16_CONST(-0.9166790599210428), FX16_CONST(0.3996241998456464), + FX16_CONST(-0.9160649657993318), FX16_CONST(0.40102989718357535), + FX16_CONST(-0.9154487160882678), FX16_CONST(0.4024346508594183), + FX16_CONST(-0.9148303122379462), FX16_CONST(0.40383845756765413), + FX16_CONST(-0.9142097557035306), FX16_CONST(0.40524131400499), + FX16_CONST(-0.913587047945251), FX16_CONST(0.4066432168703685), + FX16_CONST(-0.9129621904283983), FX16_CONST(0.4080441628649783), + FX16_CONST(-0.9123351846233229), FX16_CONST(0.40944414869225737), + FX16_CONST(-0.9117060320054299), FX16_CONST(0.41084317105790386), + FX16_CONST(-0.9110747340551762), FX16_CONST(0.41224122666988294), + FX16_CONST(-0.9104412922580671), FX16_CONST(0.4136383122384348), + FX16_CONST(-0.9098057081046524), FX16_CONST(0.4150344244760812), + FX16_CONST(-0.9091679830905225), FX16_CONST(0.4164295600976369), + FX16_CONST(-0.9085281187163062), FX16_CONST(0.41782371582021216), + FX16_CONST(-0.9078861164876663), FX16_CONST(0.41921688836322396), + FX16_CONST(-0.9072419779152958), FX16_CONST(0.4206090744484027), + FX16_CONST(-0.9065957045149156), FX16_CONST(0.4220002707997992), + FX16_CONST(-0.9059472978072687), FX16_CONST(0.42339047414379566), + FX16_CONST(-0.9052967593181189), FX16_CONST(0.4247796812091086), + FX16_CONST(-0.9046440905782462), FX16_CONST(0.42616788872679956), + FX16_CONST(-0.9039892931234433), FX16_CONST(0.42755509343028214), + FX16_CONST(-0.9033323684945117), FX16_CONST(0.4289412920553297), + FX16_CONST(-0.902673318237259), FX16_CONST(0.43032648134008217), + FX16_CONST(-0.9020121439024933), FX16_CONST(0.431710658025057), + FX16_CONST(-0.9013488470460221), FX16_CONST(0.4330938188531518), + FX16_CONST(-0.9006834292286469), FX16_CONST(0.4344759605696557), + FX16_CONST(-0.9000158920161602), FX16_CONST(0.43585707992225564), + FX16_CONST(-0.8993462369793418), FX16_CONST(0.4372371736610436), + FX16_CONST(-0.898674465693954), FX16_CONST(0.43861623853852727), + FX16_CONST(-0.89800057974074), FX16_CONST(0.43999427130963303), + FX16_CONST(-0.8973245807054183), FX16_CONST(0.4413712687317166), + FX16_CONST(-0.8966464701786802), FX16_CONST(0.4427472275645701), + FX16_CONST(-0.895966249756185), FX16_CONST(0.4441221445704294), + FX16_CONST(-0.8952839210385577), FX16_CONST(0.4454960165139813), + FX16_CONST(-0.8945994856313828), FX16_CONST(0.4468688401623739), + FX16_CONST(-0.8939129451452034), FX16_CONST(0.4482406122852198), + FX16_CONST(-0.8932243011955153), FX16_CONST(0.4496113296546066), + FX16_CONST(-0.8925335554027646), FX16_CONST(0.45098098904510403), + FX16_CONST(-0.891840709392343), FX16_CONST(0.4523495872337704), + FX16_CONST(-0.8911457647945834), FX16_CONST(0.4537171210001635), + FX16_CONST(-0.890448723244758), FX16_CONST(0.4550835871263436), + FX16_CONST(-0.8897495863830729), FX16_CONST(0.45644898239688386), + FX16_CONST(-0.8890483558546646), FX16_CONST(0.4578133035988773), + FX16_CONST(-0.8883450333095962), FX16_CONST(0.45917654752194437), + FX16_CONST(-0.8876396204028542), FX16_CONST(0.46053871095823956), + FX16_CONST(-0.8869321187943423), FX16_CONST(0.46189979070246245), + FX16_CONST(-0.8862225301488807), FX16_CONST(0.46325978355186004), + FX16_CONST(-0.8855108561362), FX16_CONST(0.4646186863062378), + FX16_CONST(-0.8847970984309377), FX16_CONST(0.4659764957679663), + FX16_CONST(-0.8840812587126353), FX16_CONST(0.4673332087419879), + FX16_CONST(-0.8833633386657318), FX16_CONST(0.46868882203582757), + FX16_CONST(-0.8826433399795629), FX16_CONST(0.4700433324595954), + FX16_CONST(-0.881921264348355), FX16_CONST(0.4713967368259976), + FX16_CONST(-0.881197113471222), FX16_CONST(0.47274903195034285), + FX16_CONST(-0.8804708890521606), FX16_CONST(0.4741002146505502), + FX16_CONST(-0.8797425928000476), FX16_CONST(0.4754502817471554), + FX16_CONST(-0.8790122264286336), FX16_CONST(0.4767992300633218), + FX16_CONST(-0.8782797916565416), FX16_CONST(0.4781470564248429), + FX16_CONST(-0.8775452902072612), FX16_CONST(0.479493757660153), + FX16_CONST(-0.8768087238091457), FX16_CONST(0.48083933060033407), + FX16_CONST(-0.8760700941954069), FX16_CONST(0.4821837720791222), + FX16_CONST(-0.875329403104111), FX16_CONST(0.48352707893291835), + FX16_CONST(-0.8745866522781762), FX16_CONST(0.4848692480007909), + FX16_CONST(-0.8738418434653669), FX16_CONST(0.4862102761244863), + FX16_CONST(-0.8730949784182901), FX16_CONST(0.487550160148436), + FX16_CONST(-0.8723460588943914), FX16_CONST(0.4888888969197634), + FX16_CONST(-0.8715950866559513), FX16_CONST(0.4902264832882907), + FX16_CONST(-0.8708420634700791), FX16_CONST(0.4915629161065497), + FX16_CONST(-0.8700869911087115), FX16_CONST(0.49289819222978387), + FX16_CONST(-0.8693298713486067), FX16_CONST(0.49423230851595973), + FX16_CONST(-0.8685707059713408), FX16_CONST(0.49556526182577265), + FX16_CONST(-0.8678094967633035), FX16_CONST(0.496897049022654), + FX16_CONST(-0.8670462455156929), FX16_CONST(0.4982276669727815), + FX16_CONST(-0.8662809540245131), FX16_CONST(0.49955711254508167), + FX16_CONST(-0.8655136240905691), FX16_CONST(0.5008853826112407), + FX16_CONST(-0.8647442575194624), FX16_CONST(0.5022124740457108), + FX16_CONST(-0.8639728561215866), FX16_CONST(0.5035383837257178), + FX16_CONST(-0.8631994217121244), FX16_CONST(0.5048631085312671), + FX16_CONST(-0.8624239561110407), FX16_CONST(0.506186645345155), + FX16_CONST(-0.8616464611430814), FX16_CONST(0.5075089910529706), + FX16_CONST(-0.8608669386377673), FX16_CONST(0.508830142543107), + FX16_CONST(-0.8600853904293901), FX16_CONST(0.5101500967067669), + FX16_CONST(-0.8593018183570087), FX16_CONST(0.5114688504379699), + FX16_CONST(-0.858516224264443), FX16_CONST(0.5127864006335626), + FX16_CONST(-0.8577286100002722), FX16_CONST(0.5141027441932216), + FX16_CONST(-0.8569389774178288), FX16_CONST(0.5154178780194629), + FX16_CONST(-0.8561473283751945), FX16_CONST(0.5167317990176499), + FX16_CONST(-0.8553536647351959), FX16_CONST(0.5180445040959996), + FX16_CONST(-0.8545579883654008), FX16_CONST(0.5193559901655892), + FX16_CONST(-0.8537603011381115), FX16_CONST(0.5206662541403668), + FX16_CONST(-0.8529606049303637), FX16_CONST(0.5219752929371542), + FX16_CONST(-0.8521589016239198), FX16_CONST(0.5232831034756564), + FX16_CONST(-0.8513551931052651), FX16_CONST(0.5245896826784691), + FX16_CONST(-0.8505494812656038), FX16_CONST(0.5258950274710842), + FX16_CONST(-0.8497417680008528), FX16_CONST(0.527199134781901), + FX16_CONST(-0.8489320552116397), FX16_CONST(0.5285020015422283), + FX16_CONST(-0.8481203448032973), FX16_CONST(0.5298036246862946), + FX16_CONST(-0.8473066386858583), FX16_CONST(0.531104001151255), + FX16_CONST(-0.8464909387740519), FX16_CONST(0.5324031278771981), + FX16_CONST(-0.8456732469872993), FX16_CONST(0.5337010018071525), + FX16_CONST(-0.8448535652497072), FX16_CONST(0.5349976198870969), + FX16_CONST(-0.8440318954900665), FX16_CONST(0.536292979065963), + FX16_CONST(-0.8432082396418454), FX16_CONST(0.5375870762956455), + FX16_CONST(-0.8423825996431858), FX16_CONST(0.5388799085310085), + FX16_CONST(-0.8415549774368988), FX16_CONST(0.5401714727298924), + FX16_CONST(-0.8407253749704583), FX16_CONST(0.5414617658531231), + FX16_CONST(-0.8398937941959996), FX16_CONST(0.5427507848645157), + FX16_CONST(-0.8390602370703127), FX16_CONST(0.5440385267308838), + FX16_CONST(-0.838224705554838), FX16_CONST(0.5453249884220465), + FX16_CONST(-0.8373872016156618), FX16_CONST(0.5466101669108351), + FX16_CONST(-0.8365477272235122), FX16_CONST(0.5478940591730997), + FX16_CONST(-0.8357062843537528), FX16_CONST(0.5491766621877194), + FX16_CONST(-0.8348628749863801), FX16_CONST(0.5504579729366046), + FX16_CONST(-0.8340175011060181), FX16_CONST(0.5517379884047073), + FX16_CONST(-0.8331701647019131), FX16_CONST(0.5530167055800277), + FX16_CONST(-0.83232086776793), FX16_CONST(0.5542941214536197), + FX16_CONST(-0.8314696123025455), FX16_CONST(0.5555702330196018), + FX16_CONST(-0.8306164003088464), FX16_CONST(0.5568450372751599), + FX16_CONST(-0.8297612337945232), FX16_CONST(0.558118531220556), + FX16_CONST(-0.8289041147718649), FX16_CONST(0.5593907118591361), + FX16_CONST(-0.8280450452577557), FX16_CONST(0.5606615761973361), + FX16_CONST(-0.8271840272736694), FX16_CONST(0.561931121244689), + FX16_CONST(-0.8263210628456636), FX16_CONST(0.5631993440138339), + FX16_CONST(-0.8254561540043777), FX16_CONST(0.5644662415205193), + FX16_CONST(-0.8245893027850253), FX16_CONST(0.5657318107836131), + FX16_CONST(-0.8237205112273913), FX16_CONST(0.5669960488251088), + FX16_CONST(-0.8228497813758266), FX16_CONST(0.568258952670131), + FX16_CONST(-0.8219771152792418), FX16_CONST(0.5695205193469468), + FX16_CONST(-0.8211025149911049), FX16_CONST(0.570780745886967), + FX16_CONST(-0.8202259825694347), FX16_CONST(0.5720396293247569), + FX16_CONST(-0.8193475200767969), FX16_CONST(0.5732971666980422), + FX16_CONST(-0.8184671295802985), FX16_CONST(0.574553355047716), + FX16_CONST(-0.8175848131515839), FX16_CONST(0.5758081914178449), + FX16_CONST(-0.816700572866828), FX16_CONST(0.5770616728556792), + FX16_CONST(-0.8158144108067339), FX16_CONST(0.5783137964116554), + FX16_CONST(-0.8149263290565266), FX16_CONST(0.5795645591394057), + FX16_CONST(-0.8140363297059483), FX16_CONST(0.5808139580957646), + FX16_CONST(-0.8131444148492539), FX16_CONST(0.5820619903407751), + FX16_CONST(-0.8122505865852042), FX16_CONST(0.583308652937698), + FX16_CONST(-0.811354847017064), FX16_CONST(0.5845539429530151), + FX16_CONST(-0.8104571982525949), FX16_CONST(0.5857978574564388), + FX16_CONST(-0.8095576424040513), FX16_CONST(0.5870403935209181), + FX16_CONST(-0.8086561815881749), FX16_CONST(0.5882815482226454), + FX16_CONST(-0.8077528179261906), FX16_CONST(0.5895213186410635), + FX16_CONST(-0.8068475535437994), FX16_CONST(0.5907597018588739), + FX16_CONST(-0.8059403905711764), FX16_CONST(0.5919966949620408), + FX16_CONST(-0.8050313311429637), FX16_CONST(0.5932322950397998), + FX16_CONST(-0.8041203773982657), FX16_CONST(0.5944664991846645), + FX16_CONST(-0.8032075314806453), FX16_CONST(0.5956993044924328), + FX16_CONST(-0.8022927955381159), FX16_CONST(0.5969307080621962), + FX16_CONST(-0.8013761717231404), FX16_CONST(0.598160706996342), + FX16_CONST(-0.8004576621926228), FX16_CONST(0.5993892984005644), + FX16_CONST(-0.799537269107905), FX16_CONST(0.600616479383869), + FX16_CONST(-0.7986149946347607), FX16_CONST(0.6018422470585802), + FX16_CONST(-0.7976908409433914), FX16_CONST(0.6030665985403478), + FX16_CONST(-0.7967648102084189), FX16_CONST(0.6042895309481557), + FX16_CONST(-0.7958369046088837), FX16_CONST(0.6055110414043253), + FX16_CONST(-0.794907126328237), FX16_CONST(0.6067311270345245), + FX16_CONST(-0.7939754775543371), FX16_CONST(0.6079497849677737), + FX16_CONST(-0.7930419604794441), FX16_CONST(0.6091670123364527), + FX16_CONST(-0.7921065773002126), FX16_CONST(0.6103828062763091), + FX16_CONST(-0.7911693302176903), FX16_CONST(0.6115971639264617), + FX16_CONST(-0.7902302214373101), FX16_CONST(0.6128100824294096), + FX16_CONST(-0.7892892531688857), FX16_CONST(0.6140215589310385), + FX16_CONST(-0.7883464276266061), FX16_CONST(0.615231590580627), + FX16_CONST(-0.7874017470290317), FX16_CONST(0.6164401745308532), + FX16_CONST(-0.786455213599086), FX16_CONST(0.6176473079378036), + FX16_CONST(-0.785506829564054), FX16_CONST(0.6188529879609762), + FX16_CONST(-0.7845565971555752), FX16_CONST(0.6200572117632892), + FX16_CONST(-0.7836045186096382), FX16_CONST(0.6212599765110877), + FX16_CONST(-0.7826505961665761), FX16_CONST(0.6224612793741495), + FX16_CONST(-0.7816948320710597), FX16_CONST(0.6236611175256942), + FX16_CONST(-0.7807372285720947), FX16_CONST(0.6248594881423861), + FX16_CONST(-0.7797777879230146), FX16_CONST(0.6260563884043434), + FX16_CONST(-0.7788165123814759), FX16_CONST(0.6272518154951442), + FX16_CONST(-0.7778534042094529), FX16_CONST(0.6284457666018328), + FX16_CONST(-0.7768884656732328), FX16_CONST(0.6296382389149267), + FX16_CONST(-0.7759216990434078), FX16_CONST(0.6308292296284242), + FX16_CONST(-0.774953106594874), FX16_CONST(0.6320187359398088), + FX16_CONST(-0.7739826906068228), FX16_CONST(0.6332067550500572), + FX16_CONST(-0.7730104533627369), FX16_CONST(0.6343932841636456), + FX16_CONST(-0.7720363971503849), FX16_CONST(0.6355783204885557), + FX16_CONST(-0.771060524261814), FX16_CONST(0.6367618612362839), + FX16_CONST(-0.7700828369933481), FX16_CONST(0.6379439036218438), + FX16_CONST(-0.7691033376455797), FX16_CONST(0.6391244448637756), + FX16_CONST(-0.7681220285233654), FX16_CONST(0.6403034821841517), + FX16_CONST(-0.7671389119358203), FX16_CONST(0.6414810128085833), + FX16_CONST(-0.7661539901963133), FX16_CONST(0.6426570339662265), + FX16_CONST(-0.7651672656224592), FX16_CONST(0.6438315428897912), + FX16_CONST(-0.7641787405361168), FX16_CONST(0.6450045368155438), + FX16_CONST(-0.7631884172633813), FX16_CONST(0.6461760129833163), + FX16_CONST(-0.7621962981345789), FX16_CONST(0.6473459686365122), + FX16_CONST(-0.7612023854842622), FX16_CONST(0.648514401022112), + FX16_CONST(-0.7602066816512026), FX16_CONST(0.6496813073906829), + FX16_CONST(-0.7592091889783882), FX16_CONST(0.6508466849963808), + FX16_CONST(-0.7582099098130154), FX16_CONST(0.6520105310969595), + FX16_CONST(-0.7572088465064846), FX16_CONST(0.6531728429537768), + FX16_CONST(-0.7562060014143943), FX16_CONST(0.6543336178318007), + FX16_CONST(-0.7552013768965369), FX16_CONST(0.655492852999615), + FX16_CONST(-0.7541949753168894), FX16_CONST(0.6566505457294287), + FX16_CONST(-0.7531867990436126), FX16_CONST(0.6578066932970785), + FX16_CONST(-0.7521768504490427), FX16_CONST(0.6589612929820373), + FX16_CONST(-0.7511651319096864), FX16_CONST(0.6601143420674206), + FX16_CONST(-0.7501516458062154), FX16_CONST(0.6612658378399917), + FX16_CONST(-0.7491363945234596), FX16_CONST(0.6624157775901715), + FX16_CONST(-0.7481193804504037), FX16_CONST(0.6635641586120395), + FX16_CONST(-0.7471006059801802), FX16_CONST(0.6647109782033448), + FX16_CONST(-0.7460800735100638), FX16_CONST(0.6658562336655097), + FX16_CONST(-0.7450577854414658), FX16_CONST(0.6669999223036377), + FX16_CONST(-0.7440337441799296), FX16_CONST(0.6681420414265181), + FX16_CONST(-0.7430079521351219), FX16_CONST(0.6692825883466358), + FX16_CONST(-0.7419804117208312), FX16_CONST(0.670421560380173), + FX16_CONST(-0.7409511253549591), FX16_CONST(0.6715589548470183), + FX16_CONST(-0.7399200954595161), FX16_CONST(0.672694769070773), + FX16_CONST(-0.7388873244606156), FX16_CONST(0.6738290003787556), + FX16_CONST(-0.7378528147884663), FX16_CONST(0.6749616461020117), + FX16_CONST(-0.7368165688773701), FX16_CONST(0.6760927035753157), + FX16_CONST(-0.7357785891657136), FX16_CONST(0.6772221701371803), + FX16_CONST(-0.7347388780959634), FX16_CONST(0.6783500431298615), + FX16_CONST(-0.7336974381146601), FX16_CONST(0.6794763198993652), + FX16_CONST(-0.7326542716724131), FX16_CONST(0.6806009977954527), + FX16_CONST(-0.7316093812238929), FX16_CONST(0.6817240741716495), + FX16_CONST(-0.7305627692278277), FX16_CONST(0.6828455463852479), + FX16_CONST(-0.729514438146997), FX16_CONST(0.6839654117973154), + FX16_CONST(-0.7284643904482251), FX16_CONST(0.6850836677727005), + FX16_CONST(-0.7274126286023762), FX16_CONST(0.6862003116800381), + FX16_CONST(-0.7263591550843463), FX16_CONST(0.6873153408917587), + FX16_CONST(-0.725303972373061), FX16_CONST(0.6884287527840902), + FX16_CONST(-0.724247082951467), FX16_CONST(0.6895405447370668), + FX16_CONST(-0.7231884893065273), FX16_CONST(0.6906507141345346), + FX16_CONST(-0.7221281939292151), FX16_CONST(0.6917592583641579), + FX16_CONST(-0.7210661993145084), FX16_CONST(0.6928661748174243), + FX16_CONST(-0.7200025079613819), FX16_CONST(0.6939714608896537), + FX16_CONST(-0.7189371223728046), FX16_CONST(0.6950751139800007), + FX16_CONST(-0.7178700450557318), FX16_CONST(0.6961771314914629), + FX16_CONST(-0.7168012785210994), FX16_CONST(0.6972775108308866), + FX16_CONST(-0.715730825283819), FX16_CONST(0.6983762494089724), + FX16_CONST(-0.7146586878627694), FX16_CONST(0.6994733446402834), + FX16_CONST(-0.7135848687807937), FX16_CONST(0.7005687939432481), + FX16_CONST(-0.7125093705646924), FX16_CONST(0.7016625947401685), + FX16_CONST(-0.7114321957452164), FX16_CONST(0.7027547444572253), + FX16_CONST(-0.7103533468570622), FX16_CONST(0.703845240524485), + FX16_CONST(-0.709272826438866), FX16_CONST(0.7049340803759045), + FX16_CONST(-0.7081906370331956), FX16_CONST(0.7060212614493395), + FX16_CONST(-0.7071067811865477), FX16_CONST(0.7071067811865474), + FX16_CONST(-0.7060212614493399), FX16_CONST(0.7081906370331953), + FX16_CONST(-0.7049340803759048), FX16_CONST(0.7092728264388657), + FX16_CONST(-0.7038452405244854), FX16_CONST(0.7103533468570619), + FX16_CONST(-0.7027547444572256), FX16_CONST(0.7114321957452161), + FX16_CONST(-0.7016625947401687), FX16_CONST(0.7125093705646921), + FX16_CONST(-0.7005687939432484), FX16_CONST(0.7135848687807935), + FX16_CONST(-0.6994733446402838), FX16_CONST(0.7146586878627691), + FX16_CONST(-0.6983762494089727), FX16_CONST(0.7157308252838188), + FX16_CONST(-0.697277510830887), FX16_CONST(0.7168012785210991), + FX16_CONST(-0.6961771314914632), FX16_CONST(0.7178700450557315), + FX16_CONST(-0.695075113980001), FX16_CONST(0.7189371223728043), + FX16_CONST(-0.693971460889654), FX16_CONST(0.7200025079613817), + FX16_CONST(-0.6928661748174246), FX16_CONST(0.7210661993145082), + FX16_CONST(-0.6917592583641582), FX16_CONST(0.7221281939292149), + FX16_CONST(-0.6906507141345349), FX16_CONST(0.7231884893065271), + FX16_CONST(-0.6895405447370672), FX16_CONST(0.7242470829514667), + FX16_CONST(-0.6884287527840905), FX16_CONST(0.7253039723730607), + FX16_CONST(-0.687315340891759), FX16_CONST(0.726359155084346), + FX16_CONST(-0.6862003116800385), FX16_CONST(0.7274126286023759), + FX16_CONST(-0.6850836677727008), FX16_CONST(0.7284643904482249), + FX16_CONST(-0.6839654117973157), FX16_CONST(0.7295144381469967), + FX16_CONST(-0.6828455463852482), FX16_CONST(0.7305627692278274), + FX16_CONST(-0.6817240741716498), FX16_CONST(0.7316093812238925), + FX16_CONST(-0.680600997795453), FX16_CONST(0.7326542716724129), + FX16_CONST(-0.6794763198993655), FX16_CONST(0.7336974381146598), + FX16_CONST(-0.6783500431298618), FX16_CONST(0.7347388780959632), + FX16_CONST(-0.6772221701371807), FX16_CONST(0.7357785891657133), + FX16_CONST(-0.676092703575316), FX16_CONST(0.7368165688773698), + FX16_CONST(-0.674961646102012), FX16_CONST(0.737852814788466), + FX16_CONST(-0.6738290003787559), FX16_CONST(0.7388873244606152), + FX16_CONST(-0.6726947690707733), FX16_CONST(0.7399200954595158), + FX16_CONST(-0.6715589548470187), FX16_CONST(0.7409511253549589), + FX16_CONST(-0.6704215603801733), FX16_CONST(0.7419804117208308), + FX16_CONST(-0.6692825883466361), FX16_CONST(0.7430079521351216), + FX16_CONST(-0.6681420414265185), FX16_CONST(0.7440337441799294), + FX16_CONST(-0.666999922303638), FX16_CONST(0.7450577854414656), + FX16_CONST(-0.6658562336655101), FX16_CONST(0.7460800735100634), + FX16_CONST(-0.6647109782033451), FX16_CONST(0.7471006059801799), + FX16_CONST(-0.6635641586120399), FX16_CONST(0.7481193804504035), + FX16_CONST(-0.6624157775901718), FX16_CONST(0.7491363945234594), + FX16_CONST(-0.661265837839992), FX16_CONST(0.7501516458062152), + FX16_CONST(-0.6601143420674209), FX16_CONST(0.751165131909686), + FX16_CONST(-0.6589612929820376), FX16_CONST(0.7521768504490425), + FX16_CONST(-0.6578066932970789), FX16_CONST(0.7531867990436123), + FX16_CONST(-0.656650545729429), FX16_CONST(0.7541949753168892), + FX16_CONST(-0.6554928529996153), FX16_CONST(0.7552013768965365), + FX16_CONST(-0.654333617831801), FX16_CONST(0.7562060014143941), + FX16_CONST(-0.6531728429537771), FX16_CONST(0.7572088465064842), + FX16_CONST(-0.6520105310969597), FX16_CONST(0.7582099098130151), + FX16_CONST(-0.650846684996381), FX16_CONST(0.759209188978388), + FX16_CONST(-0.6496813073906832), FX16_CONST(0.7602066816512024), + FX16_CONST(-0.6485144010221123), FX16_CONST(0.7612023854842619), + FX16_CONST(-0.6473459686365125), FX16_CONST(0.7621962981345786), + FX16_CONST(-0.6461760129833166), FX16_CONST(0.763188417263381), + FX16_CONST(-0.6450045368155441), FX16_CONST(0.7641787405361166), + FX16_CONST(-0.6438315428897915), FX16_CONST(0.7651672656224588), + FX16_CONST(-0.6426570339662268), FX16_CONST(0.7661539901963129), + FX16_CONST(-0.6414810128085836), FX16_CONST(0.76713891193582), + FX16_CONST(-0.640303482184152), FX16_CONST(0.7681220285233651), + FX16_CONST(-0.639124444863776), FX16_CONST(0.7691033376455795), + FX16_CONST(-0.6379439036218442), FX16_CONST(0.7700828369933479), + FX16_CONST(-0.6367618612362842), FX16_CONST(0.7710605242618138), + FX16_CONST(-0.635578320488556), FX16_CONST(0.7720363971503846), + FX16_CONST(-0.6343932841636459), FX16_CONST(0.7730104533627365), + FX16_CONST(-0.6332067550500575), FX16_CONST(0.7739826906068226), + FX16_CONST(-0.6320187359398092), FX16_CONST(0.7749531065948737), + FX16_CONST(-0.6308292296284246), FX16_CONST(0.7759216990434076), + FX16_CONST(-0.629638238914927), FX16_CONST(0.7768884656732326), + FX16_CONST(-0.6284457666018332), FX16_CONST(0.7778534042094527), + FX16_CONST(-0.6272518154951445), FX16_CONST(0.7788165123814756), + FX16_CONST(-0.6260563884043437), FX16_CONST(0.7797777879230143), + FX16_CONST(-0.6248594881423865), FX16_CONST(0.7807372285720944), + FX16_CONST(-0.6236611175256945), FX16_CONST(0.7816948320710594), + FX16_CONST(-0.6224612793741499), FX16_CONST(0.7826505961665758), + FX16_CONST(-0.621259976511088), FX16_CONST(0.7836045186096379), + FX16_CONST(-0.6200572117632894), FX16_CONST(0.784556597155575), + FX16_CONST(-0.6188529879609765), FX16_CONST(0.7855068295640538), + FX16_CONST(-0.617647307937804), FX16_CONST(0.7864552135990857), + FX16_CONST(-0.6164401745308535), FX16_CONST(0.7874017470290314), + FX16_CONST(-0.6152315905806274), FX16_CONST(0.7883464276266059), + FX16_CONST(-0.6140215589310388), FX16_CONST(0.7892892531688854), + FX16_CONST(-0.6128100824294099), FX16_CONST(0.7902302214373098), + FX16_CONST(-0.611597163926462), FX16_CONST(0.7911693302176901), + FX16_CONST(-0.6103828062763095), FX16_CONST(0.7921065773002124), + FX16_CONST(-0.6091670123364531), FX16_CONST(0.7930419604794438), + FX16_CONST(-0.6079497849677741), FX16_CONST(0.7939754775543368), + FX16_CONST(-0.6067311270345248), FX16_CONST(0.7949071263282368), + FX16_CONST(-0.6055110414043257), FX16_CONST(0.7958369046088833), + FX16_CONST(-0.6042895309481561), FX16_CONST(0.7967648102084187), + FX16_CONST(-0.6030665985403482), FX16_CONST(0.7976908409433912), + FX16_CONST(-0.6018422470585806), FX16_CONST(0.7986149946347605), + FX16_CONST(-0.6006164793838693), FX16_CONST(0.7995372691079048), + FX16_CONST(-0.5993892984005648), FX16_CONST(0.8004576621926226), + FX16_CONST(-0.5981607069963424), FX16_CONST(0.8013761717231401), + FX16_CONST(-0.5969307080621965), FX16_CONST(0.8022927955381157), + FX16_CONST(-0.5956993044924332), FX16_CONST(0.803207531480645), + FX16_CONST(-0.5944664991846649), FX16_CONST(0.8041203773982655), + FX16_CONST(-0.5932322950398001), FX16_CONST(0.8050313311429633), + FX16_CONST(-0.5919966949620411), FX16_CONST(0.8059403905711762), + FX16_CONST(-0.5907597018588743), FX16_CONST(0.8068475535437992), + FX16_CONST(-0.5895213186410638), FX16_CONST(0.8077528179261904), + FX16_CONST(-0.5882815482226458), FX16_CONST(0.8086561815881746), + FX16_CONST(-0.5870403935209184), FX16_CONST(0.8095576424040509), + FX16_CONST(-0.5857978574564391), FX16_CONST(0.8104571982525945), + FX16_CONST(-0.5845539429530154), FX16_CONST(0.8113548470170636), + FX16_CONST(-0.5833086529376983), FX16_CONST(0.8122505865852039), + FX16_CONST(-0.5820619903407754), FX16_CONST(0.8131444148492536), + FX16_CONST(-0.580813958095765), FX16_CONST(0.8140363297059481), + FX16_CONST(-0.5795645591394061), FX16_CONST(0.8149263290565264), + FX16_CONST(-0.5783137964116558), FX16_CONST(0.8158144108067337), + FX16_CONST(-0.5770616728556796), FX16_CONST(0.8167005728668277), + FX16_CONST(-0.5758081914178452), FX16_CONST(0.8175848131515837), + FX16_CONST(-0.5745533550477163), FX16_CONST(0.8184671295802983), + FX16_CONST(-0.5732971666980426), FX16_CONST(0.8193475200767967), + FX16_CONST(-0.5720396293247574), FX16_CONST(0.8202259825694345), + FX16_CONST(-0.5707807458869674), FX16_CONST(0.8211025149911046), + FX16_CONST(-0.5695205193469471), FX16_CONST(0.8219771152792416), + FX16_CONST(-0.5682589526701314), FX16_CONST(0.8228497813758264), + FX16_CONST(-0.5669960488251091), FX16_CONST(0.8237205112273911), + FX16_CONST(-0.5657318107836136), FX16_CONST(0.8245893027850251), + FX16_CONST(-0.5644662415205196), FX16_CONST(0.8254561540043773), + FX16_CONST(-0.5631993440138342), FX16_CONST(0.8263210628456634), + FX16_CONST(-0.5619311212446894), FX16_CONST(0.8271840272736691), + FX16_CONST(-0.5606615761973366), FX16_CONST(0.8280450452577554), + FX16_CONST(-0.5593907118591365), FX16_CONST(0.8289041147718647), + FX16_CONST(-0.5581185312205563), FX16_CONST(0.8297612337945228), + FX16_CONST(-0.5568450372751602), FX16_CONST(0.8306164003088462), + FX16_CONST(-0.5555702330196022), FX16_CONST(0.8314696123025452), + FX16_CONST(-0.55429412145362), FX16_CONST(0.8323208677679297), + FX16_CONST(-0.553016705580028), FX16_CONST(0.8331701647019129), + FX16_CONST(-0.5517379884047078), FX16_CONST(0.8340175011060179), + FX16_CONST(-0.550457972936605), FX16_CONST(0.8348628749863799), + FX16_CONST(-0.5491766621877198), FX16_CONST(0.8357062843537525), + FX16_CONST(-0.5478940591731001), FX16_CONST(0.836547727223512), + FX16_CONST(-0.5466101669108354), FX16_CONST(0.8373872016156616), + FX16_CONST(-0.5453249884220468), FX16_CONST(0.8382247055548377), + FX16_CONST(-0.5440385267308842), FX16_CONST(0.8390602370703125), + FX16_CONST(-0.542750784864516), FX16_CONST(0.8398937941959994), + FX16_CONST(-0.5414617658531234), FX16_CONST(0.8407253749704581), + FX16_CONST(-0.5401714727298927), FX16_CONST(0.8415549774368986), + FX16_CONST(-0.5388799085310089), FX16_CONST(0.8423825996431855), + FX16_CONST(-0.5375870762956458), FX16_CONST(0.8432082396418452), + FX16_CONST(-0.5362929790659634), FX16_CONST(0.8440318954900663), + FX16_CONST(-0.5349976198870973), FX16_CONST(0.844853565249707), + FX16_CONST(-0.5337010018071529), FX16_CONST(0.8456732469872991), + FX16_CONST(-0.5324031278771986), FX16_CONST(0.8464909387740517), + FX16_CONST(-0.5311040011512553), FX16_CONST(0.8473066386858581), + FX16_CONST(-0.5298036246862949), FX16_CONST(0.8481203448032971), + FX16_CONST(-0.5285020015422286), FX16_CONST(0.8489320552116395), + FX16_CONST(-0.5271991347819014), FX16_CONST(0.8497417680008524), + FX16_CONST(-0.5258950274710845), FX16_CONST(0.8505494812656035), + FX16_CONST(-0.5245896826784694), FX16_CONST(0.8513551931052649), + FX16_CONST(-0.5232831034756568), FX16_CONST(0.8521589016239196), + FX16_CONST(-0.5219752929371545), FX16_CONST(0.8529606049303635), + FX16_CONST(-0.5206662541403673), FX16_CONST(0.8537603011381113), + FX16_CONST(-0.5193559901655895), FX16_CONST(0.8545579883654005), + FX16_CONST(-0.5180445040959999), FX16_CONST(0.8553536647351957), + FX16_CONST(-0.5167317990176503), FX16_CONST(0.8561473283751942), + FX16_CONST(-0.5154178780194633), FX16_CONST(0.8569389774178285), + FX16_CONST(-0.5141027441932219), FX16_CONST(0.857728610000272), + FX16_CONST(-0.512786400633563), FX16_CONST(0.8585162242644427), + FX16_CONST(-0.5114688504379703), FX16_CONST(0.8593018183570085), + FX16_CONST(-0.5101500967067673), FX16_CONST(0.8600853904293899), + FX16_CONST(-0.5088301425431074), FX16_CONST(0.8608669386377671), + FX16_CONST(-0.5075089910529711), FX16_CONST(0.8616464611430812), + FX16_CONST(-0.5061866453451553), FX16_CONST(0.8624239561110405), + FX16_CONST(-0.5048631085312675), FX16_CONST(0.8631994217121242), + FX16_CONST(-0.5035383837257181), FX16_CONST(0.8639728561215864), + FX16_CONST(-0.5022124740457112), FX16_CONST(0.8647442575194622), + FX16_CONST(-0.500885382611241), FX16_CONST(0.8655136240905689), + FX16_CONST(-0.499557112545082), FX16_CONST(0.8662809540245129), + FX16_CONST(-0.49822766697278187), FX16_CONST(0.8670462455156926), + FX16_CONST(-0.4968970490226544), FX16_CONST(0.8678094967633033), + FX16_CONST(-0.49556526182577304), FX16_CONST(0.8685707059713406), + FX16_CONST(-0.49423230851596006), FX16_CONST(0.8693298713486066), + FX16_CONST(-0.49289819222978426), FX16_CONST(0.8700869911087113), + FX16_CONST(-0.49156291610655), FX16_CONST(0.8708420634700789), + FX16_CONST(-0.4902264832882911), FX16_CONST(0.8715950866559511), + FX16_CONST(-0.4888888969197637), FX16_CONST(0.8723460588943912), + FX16_CONST(-0.4875501601484364), FX16_CONST(0.8730949784182899), + FX16_CONST(-0.4862102761244867), FX16_CONST(0.8738418434653666), + FX16_CONST(-0.48486924800079123), FX16_CONST(0.874586652278176), + FX16_CONST(-0.48352707893291874), FX16_CONST(0.8753294031041108), + FX16_CONST(-0.4821837720791226), FX16_CONST(0.8760700941954067), + FX16_CONST(-0.48083933060033446), FX16_CONST(0.8768087238091454), + FX16_CONST(-0.4794937576601534), FX16_CONST(0.8775452902072611), + FX16_CONST(-0.4781470564248433), FX16_CONST(0.8782797916565414), + FX16_CONST(-0.4767992300633222), FX16_CONST(0.8790122264286334), + FX16_CONST(-0.4754502817471558), FX16_CONST(0.8797425928000475), + FX16_CONST(-0.4741002146505506), FX16_CONST(0.8804708890521604), + FX16_CONST(-0.47274903195034323), FX16_CONST(0.8811971134712218), + FX16_CONST(-0.4713967368259979), FX16_CONST(0.8819212643483548), + FX16_CONST(-0.4700433324595958), FX16_CONST(0.8826433399795627), + FX16_CONST(-0.46868882203582796), FX16_CONST(0.8833633386657316), + FX16_CONST(-0.4673332087419883), FX16_CONST(0.8840812587126351), + FX16_CONST(-0.4659764957679667), FX16_CONST(0.8847970984309375), + FX16_CONST(-0.4646186863062382), FX16_CONST(0.8855108561361997), + FX16_CONST(-0.4632597835518604), FX16_CONST(0.8862225301488805), + FX16_CONST(-0.46189979070246284), FX16_CONST(0.8869321187943421), + FX16_CONST(-0.46053871095823995), FX16_CONST(0.8876396204028539), + FX16_CONST(-0.4591765475219447), FX16_CONST(0.888345033309596), + FX16_CONST(-0.4578133035988777), FX16_CONST(0.8890483558546644), + FX16_CONST(-0.45644898239688425), FX16_CONST(0.8897495863830727), + FX16_CONST(-0.455083587126344), FX16_CONST(0.8904487232447578), + FX16_CONST(-0.45371712100016387), FX16_CONST(0.8911457647945832), + FX16_CONST(-0.4523495872337707), FX16_CONST(0.8918407093923428), + FX16_CONST(-0.45098098904510436), FX16_CONST(0.8925335554027644), + FX16_CONST(-0.449611329654607), FX16_CONST(0.8932243011955151), + FX16_CONST(-0.44824061228522016), FX16_CONST(0.8939129451452031), + FX16_CONST(-0.44686884016237427), FX16_CONST(0.8945994856313826), + FX16_CONST(-0.4454960165139817), FX16_CONST(0.8952839210385576), + FX16_CONST(-0.4441221445704298), FX16_CONST(0.8959662497561849), + FX16_CONST(-0.44274722756457047), FX16_CONST(0.8966464701786799), + FX16_CONST(-0.441371268731717), FX16_CONST(0.8973245807054181), + FX16_CONST(-0.4399942713096334), FX16_CONST(0.8980005797407398), + FX16_CONST(-0.43861623853852766), FX16_CONST(0.8986744656939538), + FX16_CONST(-0.437237173661044), FX16_CONST(0.8993462369793416), + FX16_CONST(-0.43585707992225603), FX16_CONST(0.90001589201616), + FX16_CONST(-0.4344759605696561), FX16_CONST(0.9006834292286467), + FX16_CONST(-0.4330938188531522), FX16_CONST(0.9013488470460219), + FX16_CONST(-0.43171065802505737), FX16_CONST(0.9020121439024932), + FX16_CONST(-0.43032648134008256), FX16_CONST(0.9026733182372588), + FX16_CONST(-0.4289412920553301), FX16_CONST(0.9033323684945116), + FX16_CONST(-0.42755509343028253), FX16_CONST(0.9039892931234431), + FX16_CONST(-0.42616788872679995), FX16_CONST(0.904644090578246), + FX16_CONST(-0.42477968120910903), FX16_CONST(0.9052967593181187), + FX16_CONST(-0.42339047414379605), FX16_CONST(0.9059472978072685), + FX16_CONST(-0.42200027079979957), FX16_CONST(0.9065957045149154), + FX16_CONST(-0.42060907444840306), FX16_CONST(0.9072419779152956), + FX16_CONST(-0.41921688836322435), FX16_CONST(0.907886116487666), + FX16_CONST(-0.41782371582021255), FX16_CONST(0.908528118716306), + FX16_CONST(-0.41642956009763726), FX16_CONST(0.9091679830905224), + FX16_CONST(-0.4150344244760816), FX16_CONST(0.9098057081046522), + FX16_CONST(-0.41363831223843517), FX16_CONST(0.9104412922580669), + FX16_CONST(-0.41224122666988333), FX16_CONST(0.9110747340551761), + FX16_CONST(-0.41084317105790424), FX16_CONST(0.9117060320054297), + FX16_CONST(-0.40944414869225776), FX16_CONST(0.9123351846233226), + FX16_CONST(-0.4080441628649787), FX16_CONST(0.9129621904283981), + FX16_CONST(-0.40664321687036886), FX16_CONST(0.9135870479452509), + FX16_CONST(-0.4052413140049904), FX16_CONST(0.9142097557035305), + FX16_CONST(-0.4038384575676545), FX16_CONST(0.914830312237946), + FX16_CONST(-0.4024346508594187), FX16_CONST(0.9154487160882677), + FX16_CONST(-0.40102989718357573), FX16_CONST(0.9160649657993316), + FX16_CONST(-0.3996241998456468), FX16_CONST(0.9166790599210427), + FX16_CONST(-0.3982175621533742), FX16_CONST(0.9172909970083777), + FX16_CONST(-0.3968099874167108), FX16_CONST(0.9179007756213903), + FX16_CONST(-0.39540147894781663), FX16_CONST(0.918508394325212), + FX16_CONST(-0.39399204006104827), FX16_CONST(0.9191138516900577), + FX16_CONST(-0.3925816740729515), FX16_CONST(0.9197171462912274), + FX16_CONST(-0.39117038430225376), FX16_CONST(0.9203182767091106), + FX16_CONST(-0.389758174069857), FX16_CONST(0.9209172415291892), + FX16_CONST(-0.3883450466988267), FX16_CONST(0.9215140393420418), + FX16_CONST(-0.38693100551438886), FX16_CONST(0.9221086687433451), + FX16_CONST(-0.38551605384391896), FX16_CONST(0.9227011283338785), + FX16_CONST(-0.384100195016935), FX16_CONST(0.9232914167195276), + FX16_CONST(-0.3826834323650904), FX16_CONST(0.9238795325112865), + FX16_CONST(-0.3812657692221628), FX16_CONST(0.9244654743252624), + FX16_CONST(-0.3798472089240515), FX16_CONST(0.9250492407826775), + FX16_CONST(-0.3784277548087658), FX16_CONST(0.9256308305098727), + FX16_CONST(-0.37700741021641826), FX16_CONST(0.9262102421383114), + FX16_CONST(-0.3755861784892171), FX16_CONST(0.9267874743045819), + FX16_CONST(-0.37416406297145854), FX16_CONST(0.9273625256504009), + FX16_CONST(-0.3727410670095162), FX16_CONST(0.9279353948226177), + FX16_CONST(-0.3713171939518378), FX16_CONST(0.9285060804732155), + FX16_CONST(-0.3698924471489342), FX16_CONST(0.9290745812593157), + FX16_CONST(-0.36846682995337227), FX16_CONST(0.9296408958431813), + FX16_CONST(-0.367040345719767), FX16_CONST(0.9302050228922192), + FX16_CONST(-0.36561299780477435), FX16_CONST(0.9307669610789835), + FX16_CONST(-0.3641847895670802), FX16_CONST(0.9313267090811803), + FX16_CONST(-0.3627557243673974), FX16_CONST(0.931884265581668), + FX16_CONST(-0.3613258055684543), FX16_CONST(0.9324396292684624), + FX16_CONST(-0.359895036534988), FX16_CONST(0.932992798834739), + FX16_CONST(-0.3584634206337371), FX16_CONST(0.933543772978836), + FX16_CONST(-0.3570309612334304), FX16_CONST(0.9340925504042588), + FX16_CONST(-0.35559766170478413), FX16_CONST(0.9346391298196807), + FX16_CONST(-0.3541635254204905), FX16_CONST(0.9351835099389475), + FX16_CONST(-0.35272855575521067), FX16_CONST(0.9357256894810804), + FX16_CONST(-0.3512927560855669), FX16_CONST(0.9362656671702784), + FX16_CONST(-0.3498561297901354), FX16_CONST(0.9368034417359214), + FX16_CONST(-0.3484186802494349), FX16_CONST(0.9373390119125748), + FX16_CONST(-0.34698041084592385), FX16_CONST(0.9378723764399898), + FX16_CONST(-0.3455413249639891), FX16_CONST(0.9384035340631081), + FX16_CONST(-0.34410142598993876), FX16_CONST(0.9389324835320646), + FX16_CONST(-0.34266071731199493), FX16_CONST(0.9394592236021897), + FX16_CONST(-0.3412192023202828), FX16_CONST(0.9399837530340138), + FX16_CONST(-0.33977688440682713), FX16_CONST(0.9405060705932682), + FX16_CONST(-0.3383337669655413), FX16_CONST(0.9410261750508893), + FX16_CONST(-0.33688985339222), FX16_CONST(0.9415440651830208), + FX16_CONST(-0.33544514708453144), FX16_CONST(0.9420597397710174), + FX16_CONST(-0.3339996514420099), FX16_CONST(0.9425731976014468), + FX16_CONST(-0.33255336986604456), FX16_CONST(0.9430844374660934), + FX16_CONST(-0.3311063057598766), FX16_CONST(0.9435934581619603), + FX16_CONST(-0.32965846252858755), FX16_CONST(0.9441002584912727), + FX16_CONST(-0.3282098435790924), FX16_CONST(0.9446048372614803), + FX16_CONST(-0.32676045232013234), FX16_CONST(0.9451071932852604), + FX16_CONST(-0.32531029216226337), FX16_CONST(0.9456073253805212), + FX16_CONST(-0.32385936651785313), FX16_CONST(0.9461052323704033), + FX16_CONST(-0.32240767880106996), FX16_CONST(0.9466009130832835), + FX16_CONST(-0.3209552324278752), FX16_CONST(0.9470943663527772), + FX16_CONST(-0.31950203081601547), FX16_CONST(0.9475855910177412), + FX16_CONST(-0.31804807738501545), FX16_CONST(0.9480745859222761), + FX16_CONST(-0.31659337555616623), FX16_CONST(0.9485613499157302), + FX16_CONST(-0.3151379287525226), FX16_CONST(0.9490458818527006), + FX16_CONST(-0.3136817403988915), FX16_CONST(0.9495281805930367), + FX16_CONST(-0.31222481392182483), FX16_CONST(0.9500082450018431), + FX16_CONST(-0.3107671527496121), FX16_CONST(0.9504860739494815), + FX16_CONST(-0.30930876031226917), FX16_CONST(0.950961666311575), + FX16_CONST(-0.30784964004153514), FX16_CONST(0.9514350209690082), + FX16_CONST(-0.3063897953708611), FX16_CONST(0.9519061368079322), + FX16_CONST(-0.3049292297354024), FX16_CONST(0.9523750127197659), + FX16_CONST(-0.3034679465720111), FX16_CONST(0.9528416476011987), + FX16_CONST(-0.3020059493192286), FX16_CONST(0.9533060403541936), + FX16_CONST(-0.3005432414172738), FX16_CONST(0.9537681898859902), + FX16_CONST(-0.29907982630804064), FX16_CONST(0.9542280951091056), + FX16_CONST(-0.29761570743508625), FX16_CONST(0.9546857549413383), + FX16_CONST(-0.29615088824362373), FX16_CONST(0.9551411683057708), + FX16_CONST(-0.29468537218051494), FX16_CONST(0.9555943341307709), + FX16_CONST(-0.2932191626942591), FX16_CONST(0.9560452513499963), + FX16_CONST(-0.29175226323498954), FX16_CONST(0.956493918902395), + FX16_CONST(-0.2902846772544625), FX16_CONST(0.9569403357322088), + FX16_CONST(-0.2888164082060494), FX16_CONST(0.957384500788976), + FX16_CONST(-0.28734745954472934), FX16_CONST(0.9578264130275329), + FX16_CONST(-0.2858778347270811), FX16_CONST(0.9582660714080176), + FX16_CONST(-0.2844075372112722), FX16_CONST(0.9587034748958715), + FX16_CONST(-0.28293657045705556), FX16_CONST(0.9591386224618419), + FX16_CONST(-0.28146493792575805), FX16_CONST(0.9595715130819845), + FX16_CONST(-0.2799926430802731), FX16_CONST(0.960002145737666), + FX16_CONST(-0.27851968938505367), FX16_CONST(0.9604305194155657), + FX16_CONST(-0.27704608030610034), FX16_CONST(0.9608566331076795), + FX16_CONST(-0.2755718193109584), FX16_CONST(0.9612804858113205), + FX16_CONST(-0.2740969098687065), FX16_CONST(0.9617020765291225), + FX16_CONST(-0.2726213554499489), FX16_CONST(0.9621214042690416), + FX16_CONST(-0.27114515952680784), FX16_CONST(0.9625384680443592), + FX16_CONST(-0.2696683255729156), FX16_CONST(0.9629532668736838), + FX16_CONST(-0.26819085706340356), FX16_CONST(0.9633657997809539), + FX16_CONST(-0.2667127574748986), FX16_CONST(0.9637760657954398), + FX16_CONST(-0.26523403028551185), FX16_CONST(0.9641840639517458), + FX16_CONST(-0.2637546789748313), FX16_CONST(0.9645897932898128), + FX16_CONST(-0.2622747070239142), FX16_CONST(0.9649932528549202), + FX16_CONST(-0.26079411791527596), FX16_CONST(0.9653944416976893), + FX16_CONST(-0.2593129151328865), FX16_CONST(0.9657933588740836), + FX16_CONST(-0.25783110216215915), FX16_CONST(0.9661900034454125), + FX16_CONST(-0.25634868248994286), FX16_CONST(0.9665843744783331), + FX16_CONST(-0.2548656596045144), FX16_CONST(0.9669764710448522), + FX16_CONST(-0.25338203699557066), FX16_CONST(0.9673662922223284), + FX16_CONST(-0.2518978181542173), FX16_CONST(0.9677538370934754), + FX16_CONST(-0.25041300657296545), FX16_CONST(0.9681391047463623), + FX16_CONST(-0.2489276057457202), FX16_CONST(0.9685220942744173), + FX16_CONST(-0.24744161916777319), FX16_CONST(0.9689028047764289), + FX16_CONST(-0.2459550503357952), FX16_CONST(0.9692812353565483), + FX16_CONST(-0.2444679027478246), FX16_CONST(0.9696573851242923), + FX16_CONST(-0.24298017990326418), FX16_CONST(0.970031253194544), + FX16_CONST(-0.24149188530286947), FX16_CONST(0.9704028386875554), + FX16_CONST(-0.24000302244874144), FX16_CONST(0.9707721407289504), + FX16_CONST(-0.23851359484431825), FX16_CONST(0.9711391584497252), + FX16_CONST(-0.23702360599436773), FX16_CONST(0.9715038909862517), + FX16_CONST(-0.23553305940497588), FX16_CONST(0.9718663374802793), + FX16_CONST(-0.23404195858354362), FX16_CONST(0.9722264970789363), + FX16_CONST(-0.2325503070387753), FX16_CONST(0.9725843689347322), + FX16_CONST(-0.231058108280671), FX16_CONST(0.9729399522055602), + FX16_CONST(-0.22956536582051948), FX16_CONST(0.9732932460546981), + FX16_CONST(-0.22807208317088618), FX16_CONST(0.9736442496508119), + FX16_CONST(-0.22657826384561028), FX16_CONST(0.9739929621679558), + FX16_CONST(-0.22508391135979297), FX16_CONST(0.9743393827855759), + FX16_CONST(-0.22358902922978996), FX16_CONST(0.9746835106885107), + FX16_CONST(-0.22209362097320334), FX16_CONST(0.9750253450669942), + FX16_CONST(-0.22059769010887406), FX16_CONST(0.9753648851166569), + FX16_CONST(-0.21910124015687016), FX16_CONST(0.9757021300385285), + FX16_CONST(-0.21760427463848384), FX16_CONST(0.976037079039039), + FX16_CONST(-0.21610679707621955), FX16_CONST(0.9763697313300211), + FX16_CONST(-0.21460881099378668), FX16_CONST(0.9767000861287118), + FX16_CONST(-0.21311031991609197), FX16_CONST(0.9770281426577542), + FX16_CONST(-0.21161132736922802), FX16_CONST(0.9773539001452), + FX16_CONST(-0.21011183688046992), FX16_CONST(0.9776773578245099), + FX16_CONST(-0.20861185197826362), FX16_CONST(0.977998514934557), + FX16_CONST(-0.20711137619221853), FX16_CONST(0.9783173707196277), + FX16_CONST(-0.20561041305309907), FX16_CONST(0.9786339244294232), + FX16_CONST(-0.2041089660928174), FX16_CONST(0.9789481753190621), + FX16_CONST(-0.2026070388444215), FX16_CONST(0.979260122649082), + FX16_CONST(-0.20110463484209212), FX16_CONST(0.9795697656854405), + FX16_CONST(-0.19960175762113103), FX16_CONST(0.9798771036995176), + FX16_CONST(-0.19809841071795348), FX16_CONST(0.9801821359681174), + FX16_CONST(-0.19659459767008083), FX16_CONST(0.9804848617734693), + FX16_CONST(-0.19509032201612872), FX16_CONST(0.9807852804032303), + FX16_CONST(-0.1935855872958039), FX16_CONST(0.9810833911504866), + FX16_CONST(-0.19208039704989258), FX16_CONST(0.9813791933137546), + FX16_CONST(-0.19057475482025274), FX16_CONST(0.9816726861969831), + FX16_CONST(-0.18906866414980603), FX16_CONST(0.9819638691095554), + FX16_CONST(-0.18756212858253013), FX16_CONST(0.9822527413662893), + FX16_CONST(-0.18605515166344702), FX16_CONST(0.9825393022874411), + FX16_CONST(-0.18454773693861984), FX16_CONST(0.9828235511987052), + FX16_CONST(-0.183039887955141), FX16_CONST(0.9831054874312163), + FX16_CONST(-0.18153160826112488), FX16_CONST(0.9833851103215512), + FX16_CONST(-0.18002290140570013), FX16_CONST(0.9836624192117301), + FX16_CONST(-0.17851377093899798), FX16_CONST(0.9839374134492188), + FX16_CONST(-0.17700422041214905), FX16_CONST(0.984210092386929), + FX16_CONST(-0.17549425337727156), FX16_CONST(0.9844804553832209), + FX16_CONST(-0.1739838733874638), FX16_CONST(0.9847485018019042), + FX16_CONST(-0.17247308399679578), FX16_CONST(0.9850142310122398), + FX16_CONST(-0.17096188876030177), FX16_CONST(0.9852776423889411), + FX16_CONST(-0.16945029123396835), FX16_CONST(0.985538735312176), + FX16_CONST(-0.1679382949747314), FX16_CONST(0.9857975091675674), + FX16_CONST(-0.1664259035404642), FX16_CONST(0.9860539633461954), + FX16_CONST(-0.1649131204899698), FX16_CONST(0.9863080972445987), + FX16_CONST(-0.16339994938297386), FX16_CONST(0.9865599102647753), + FX16_CONST(-0.1618863937801123), FX16_CONST(0.9868094018141854), + FX16_CONST(-0.16037245724292856), FX16_CONST(0.987056571305751), + FX16_CONST(-0.15885814333386158), FX16_CONST(0.9873014181578583), + FX16_CONST(-0.15734345561623825), FX16_CONST(0.9875439417943592), + FX16_CONST(-0.15582839765426507), FX16_CONST(0.9877841416445722), + FX16_CONST(-0.15431297301302063), FX16_CONST(0.9880220171432835), + FX16_CONST(-0.1527971852584438), FX16_CONST(0.9882575677307495), + FX16_CONST(-0.15128103795733044), FX16_CONST(0.9884907928526966), + FX16_CONST(-0.1497645346773216), FX16_CONST(0.9887216919603238), + FX16_CONST(-0.14824767898689595), FX16_CONST(0.988950264510303), + FX16_CONST(-0.1467304744553624), FX16_CONST(0.9891765099647809), + FX16_CONST(-0.14521292465284794), FX16_CONST(0.9894004277913803), + FX16_CONST(-0.14369503315029475), FX16_CONST(0.9896220174632008), + FX16_CONST(-0.1421768035194482), FX16_CONST(0.9898412784588205), + FX16_CONST(-0.1406582393328492), FX16_CONST(0.9900582102622971), + FX16_CONST(-0.13913934416382603), FX16_CONST(0.9902728123631691), + FX16_CONST(-0.1376201215864866), FX16_CONST(0.990485084256457), + FX16_CONST(-0.1361005751757066), FX16_CONST(0.9906950254426646), + FX16_CONST(-0.13458070850712642), FX16_CONST(0.99090263542778), + FX16_CONST(-0.13306052515713912), FX16_CONST(0.9911079137232768), + FX16_CONST(-0.131540028702883), FX16_CONST(0.9913108598461154), + FX16_CONST(-0.13001922272223398), FX16_CONST(0.9915114733187439), + FX16_CONST(-0.12849811079379364), FX16_CONST(0.9917097536690994), + FX16_CONST(-0.12697669649688617), FX16_CONST(0.9919057004306093), + FX16_CONST(-0.12545498341154637), FX16_CONST(0.9920993131421917), + FX16_CONST(-0.12393297511851216), FX16_CONST(0.9922905913482574), + FX16_CONST(-0.12241067519921603), FX16_CONST(0.99247953459871), + FX16_CONST(-0.12088808723577762), FX16_CONST(0.9926661424489479), + FX16_CONST(-0.11936521481099176), FX16_CONST(0.992850414459865), + FX16_CONST(-0.1178420615083252), FX16_CONST(0.9930323501978514), + FX16_CONST(-0.11631863091190484), FX16_CONST(0.9932119492347945), + FX16_CONST(-0.11479492660650999), FX16_CONST(0.9933892111480807), + FX16_CONST(-0.11327095217756497), FX16_CONST(0.9935641355205953), + FX16_CONST(-0.11174671121112706), FX16_CONST(0.9937367219407246), + FX16_CONST(-0.11022220729388336), FX16_CONST(0.9939069700023561), + FX16_CONST(-0.10869744401313887), FX16_CONST(0.9940748793048794), + FX16_CONST(-0.10717242495680884), FX16_CONST(0.9942404494531879), + FX16_CONST(-0.10564715371341044), FX16_CONST(0.9944036800576791), + FX16_CONST(-0.10412163387205513), FX16_CONST(0.9945645707342554), + FX16_CONST(-0.10259586902243668), FX16_CONST(0.9947231211043257), + FX16_CONST(-0.10106986275482806), FX16_CONST(0.9948793307948056), + FX16_CONST(-0.0995436186600694), FX16_CONST(0.9950331994381186), + FX16_CONST(-0.0980171403295605), FX16_CONST(0.9951847266721969), + FX16_CONST(-0.09649043135525323), FX16_CONST(0.9953339121404822), + FX16_CONST(-0.09496349532963948), FX16_CONST(0.9954807554919269), + FX16_CONST(-0.09343633584574809), FX16_CONST(0.9956252563809943), + FX16_CONST(-0.09190895649713288), FX16_CONST(0.9957674144676598), + FX16_CONST(-0.09038136087786497), FX16_CONST(0.9959072294174117), + FX16_CONST(-0.08885355258252442), FX16_CONST(0.996044700901252), + FX16_CONST(-0.08732553520619263), FX16_CONST(0.9961798285956969), + FX16_CONST(-0.08579731234444028), FX16_CONST(0.996312612182778), + FX16_CONST(-0.08426888759332431), FX16_CONST(0.9964430513500426), + FX16_CONST(-0.08274026454937576), FX16_CONST(0.9965711457905548), + FX16_CONST(-0.08121144680959234), FX16_CONST(0.9966968952028961), + FX16_CONST(-0.07968243797143075), FX16_CONST(0.9968202992911657), + FX16_CONST(-0.07815324163279472), FX16_CONST(0.996941357764982), + FX16_CONST(-0.07662386139203181), FX16_CONST(0.997060070339483), + FX16_CONST(-0.07509430084792147), FX16_CONST(0.9971764367353261), + FX16_CONST(-0.07356456359966741), FX16_CONST(0.9972904566786902), + FX16_CONST(-0.07203465324688915), FX16_CONST(0.9974021299012753), + FX16_CONST(-0.07050457338961442), FX16_CONST(0.9975114561403035), + FX16_CONST(-0.06897432762826713), FX16_CONST(0.9976184351385196), + FX16_CONST(-0.06744391956366429), FX16_CONST(0.9977230666441916), + FX16_CONST(-0.06591335279700389), FX16_CONST(0.9978253504111116), + FX16_CONST(-0.06438263092985737), FX16_CONST(0.997925286198596), + FX16_CONST(-0.06285175756416206), FX16_CONST(0.9980228737714861), + FX16_CONST(-0.06132073630220906), FX16_CONST(0.9981181129001492), + FX16_CONST(-0.05978957074664019), FX16_CONST(0.9982110033604782), + FX16_CONST(-0.05825826450043591), FX16_CONST(0.9983015449338928), + FX16_CONST(-0.05672682116690774), FX16_CONST(0.9983897374073402), + FX16_CONST(-0.055195244349689775), FX16_CONST(0.9984755805732948), + FX16_CONST(-0.05366353765273108), FX16_CONST(0.9985590742297593), + FX16_CONST(-0.05213170468028372), FX16_CONST(0.9986402181802652), + FX16_CONST(-0.05059974903689952), FX16_CONST(0.9987190122338729), + FX16_CONST(-0.04906767432741809), FX16_CONST(0.9987954562051724), + FX16_CONST(-0.04753548415695922), FX16_CONST(0.9988695499142836), + FX16_CONST(-0.04600318213091527), FX16_CONST(0.9989412931868569), + FX16_CONST(-0.044470771854939146), FX16_CONST(0.9990106858540733), + FX16_CONST(-0.04293825693494114), FX16_CONST(0.9990777277526454), + FX16_CONST(-0.0414056409770769), FX16_CONST(0.9991424187248169), + FX16_CONST(-0.03987292758773981), FX16_CONST(0.9992047586183639), + FX16_CONST(-0.038340120373552534), FX16_CONST(0.9992647472865944), + FX16_CONST(-0.036807222941359394), FX16_CONST(0.9993223845883494), + FX16_CONST(-0.03527423889821435), FX16_CONST(0.9993776703880028), + FX16_CONST(-0.03374117185137782), FX16_CONST(0.9994306045554617), + FX16_CONST(-0.03220802540830466), FX16_CONST(0.999481186966167), + FX16_CONST(-0.030674803176636543), FX16_CONST(0.9995294175010931), + FX16_CONST(-0.029141508764194368), FX16_CONST(0.9995752960467492), + FX16_CONST(-0.027608145778966225), FX16_CONST(0.9996188224951786), + FX16_CONST(-0.02607471782910422), FX16_CONST(0.9996599967439592), + FX16_CONST(-0.024541228522912448), FX16_CONST(0.9996988186962042), + FX16_CONST(-0.023007681468839372), FX16_CONST(0.9997352882605617), + FX16_CONST(-0.021474080275469345), FX16_CONST(0.9997694053512153), + FX16_CONST(-0.019940428551515003), FX16_CONST(0.9998011698878843), + FX16_CONST(-0.018406729905805226), FX16_CONST(0.9998305817958234), + FX16_CONST(-0.016872987947281957), FX16_CONST(0.9998576410058239), + FX16_CONST(-0.015339206284988182), FX16_CONST(0.9998823474542126), + FX16_CONST(-0.01380538852806031), FX16_CONST(0.9999047010828529), + FX16_CONST(-0.012271538285720572), FX16_CONST(0.9999247018391445), + FX16_CONST(-0.010737659167264976), FX16_CONST(0.9999423496760239), + FX16_CONST(-0.009203754782060144), FX16_CONST(0.9999576445519639), + FX16_CONST(-0.007669828739531261), FX16_CONST(0.9999705864309741), + FX16_CONST(-0.006135884649154477), FX16_CONST(0.9999811752826011), + FX16_CONST(-0.004601926120448411), FX16_CONST(0.9999894110819284), + FX16_CONST(-0.003067956762966544), FX16_CONST(0.9999952938095762), + FX16_CONST(-0.0015339801862851719), FX16_CONST(0.9999988234517019) +}; diff --git a/arm9/lib/src/RTC_internal.c b/arm9/lib/src/RTC_internal.c new file mode 100644 index 00000000..e3a132ab --- /dev/null +++ b/arm9/lib/src/RTC_internal.c @@ -0,0 +1,31 @@ +#include "function_target.h" +#include "PXI_fifo.h" +#include "RTC_internal.h" + +static BOOL RtcSendPxiCommand(u8 command); + +ARM_FUNC BOOL RTCi_ReadRawDateTimeAsync(void) +{ + return RtcSendPxiCommand(16); +} + +ARM_FUNC BOOL RTCi_ReadRawDateAsync(void) +{ + return RtcSendPxiCommand(17); +} + +ARM_FUNC BOOL RTCi_ReadRawTimeAsync(void) +{ + return RtcSendPxiCommand(18); +} + +ARM_FUNC BOOL RTCi_WriteRawStatus2Async(void) +{ + return RtcSendPxiCommand(39); +} + +ARM_FUNC static BOOL RtcSendPxiCommand(u8 command) +{ + s32 data = command << 8 & 0x7f00; + return PXI_SendWordByFifo(PXI_FIFO_TAG_RTC, (u32)data, FALSE) >= 0; +} diff --git a/arm9/modules/04/asm/thumb_04.s b/arm9/modules/04/asm/thumb_04.s index 6b6a6f27..6f673fe8 100644 --- a/arm9/modules/04/asm/thumb_04.s +++ b/arm9/modules/04/asm/thumb_04.s @@ -12,7 +12,7 @@ MOD04_021D74E0: ; 0x021D74E0 ldr r0, [r0, #4] cmp r0, #0 beq _021D74F2 - bl ErrorHandling + bl GF_AssertFail _021D74F2: ldr r1, _021D7648 ; =0x00001FAC add r0, r4, #0 @@ -61,7 +61,7 @@ _021D74F2: bic r0, r1 mov r1, #0x2b lsl r1, r1, #0xc - bl tempName_NNS_FndCreateExpHeapEx + bl NNS_FndCreateExpHeapEx ldr r1, _021D7644 ; =UNK04_0220FBC0 ldr r3, _021D7654 ; =0x00001F08 ldr r2, [r1] @@ -195,20 +195,20 @@ MOD04_021D7660: ; 0x021D7660 beq _021D7698 ldr r0, _021D76A4 ; =0x00001F08 ldr r0, [r1, r0] - bl thunk_FUN_020adc8c + bl NNS_FndDestroyExpHeap ldr r0, _021D76A0 ; =UNK04_0220FBC0 ldr r1, _021D76A8 ; =0x00001F54 ldr r2, [r0] ldr r0, [r2, r1] sub r1, #0x50 ldr r1, [r2, r1] - bl FUN_02016A8C + bl FreeToHeapExplicit ldr r1, _021D76A0 ; =UNK04_0220FBC0 ldr r0, _021D76A8 ; =0x00001F54 ldr r2, [r1] ldr r1, [r1, #4] ldr r0, [r2, r0] - bl FUN_02016A8C + bl FreeToHeapExplicit ldr r0, _021D76A0 ; =UNK04_0220FBC0 mov r1, #0 str r1, [r0, #4] @@ -1130,7 +1130,7 @@ MOD04_021D7DA8: ; 0x021D7DA8 ldr r0, _021D7DE8 ; =0x00001F08 ldr r0, [r1, r0] add r1, r5, #0 - bl tempName_NNS_FndAllocFromExpHeapEx + bl NNS_FndAllocFromExpHeapEx add r5, r0, #0 bne _021D7DD8 mov r0, #1 @@ -1160,7 +1160,7 @@ MOD04_021D7DEC: ; 0x021D7DEC ldr r0, _021D7E14 ; =0x00001F08 ldr r0, [r1, r0] add r1, r5, #0 - bl FUN_020ADDF0 + bl NNS_FndFreeToExpHeap add r0, r4, #0 bl OS_RestoreInterrupts _021D7E0C: @@ -2347,12 +2347,12 @@ _021D86CE: str r1, [r2, r0] mov r0, #1 bl FUN_020AA770 - bl SDAT_Init + bl NNS_SndInit ldr r0, _021D8718 ; =UNK04_0220FBC8 ldr r1, [r0, #4] ldr r0, _021D8728 ; =0x00003504 add r0, r1, r0 - bl FUN_020C16FC + bl NNS_SndStrmInit ldr r1, _021D8718 ; =UNK04_0220FBC8 mov r0, #0 ldr r2, [r1, #4] @@ -2887,13 +2887,13 @@ _021D8ACA: ldr r0, [r5, #4] add r2, sp, #0x10 add r0, r0, r3 - bl FUN_020C169C + bl NNS_SndStrmAllocChannel add r0, r5, #0 ldr r1, [r0, #4] ldr r0, _021D8BDC ; =0x00003504 add r0, r1, r0 mov r1, #0 - bl FUN_020C13C4 + bl NNS_SndStrmSetVolume mov r0, #0x41 str r0, [sp] mov r0, #2 @@ -2914,7 +2914,7 @@ _021D8ACA: add r2, r3, r2 mov r1, #1 lsl r3, r7, #1 - bl FUN_020C14AC + bl NNS_SndStrmSetup ldr r2, _021D8BCC ; =UNK04_0220FBC8 ldr r1, _021D8BE4 ; =0x000034F8 ldr r0, [r2, #4] @@ -2975,14 +2975,14 @@ _021D8BEC: .word 0x000034FC thumb_func_start MOD04_021D8BF0 MOD04_021D8BF0: ; 0x021D8BF0 ldr r0, _021D8BFC ; =UNK04_0220FBC8 - ldr r3, _021D8C00 ; =FUN_020C1458 + ldr r3, _021D8C00 ; =NNS_SndStrmStart ldr r1, [r0, #4] ldr r0, _021D8C04 ; =0x00003504 add r0, r1, r0 bx r3 .align 2, 0 _021D8BFC: .word UNK04_0220FBC8 -_021D8C00: .word FUN_020C1458 +_021D8C00: .word NNS_SndStrmStart _021D8C04: .word 0x00003504 thumb_func_start MOD04_021D8C08 @@ -3052,12 +3052,12 @@ MOD04_021D8C6C: ; 0x021D8C6C ldr r1, [r0, #4] ldr r0, _021D8CC4 ; =0x00003504 add r0, r1, r0 - bl FUN_020C1430 + bl NNS_SndStrmStop ldr r0, _021D8CBC ; =UNK04_0220FBC8 ldr r1, [r0, #4] ldr r0, _021D8CC4 ; =0x00003504 add r0, r1, r0 - bl FUN_020C1674 + bl NNS_SndStrmFreeChannel bl VCT_Cleanup ldr r1, _021D8CBC ; =UNK04_0220FBC8 mov r0, #0x35 @@ -3065,7 +3065,7 @@ MOD04_021D8C6C: ; 0x021D8C6C lsl r0, r0, #8 ldr r0, [r2, r0] ldr r1, [r1] - bl FUN_02016A8C + bl FreeToHeapExplicit mov r1, #0 ldr r0, _021D8CBC ; =UNK04_0220FBC8 cmp r4, #0 diff --git a/arm9/modules/05/asm/mod05_021D74E0.s b/arm9/modules/05/asm/mod05_021D74E0.s index e66ad6aa..730bfc00 100644 --- a/arm9/modules/05/asm/mod05_021D74E0.s +++ b/arm9/modules/05/asm/mod05_021D74E0.s @@ -73,7 +73,7 @@ _021D7564: ldr r0, [r4, #4] cmp r0, #0 beq _021D757A - bl ErrorHandling + bl GF_AssertFail _021D757A: mov r0, #4 mov r1, #0x28 @@ -250,7 +250,7 @@ _021D76E2: ldr r0, [r4, #0x4c] cmp r0, #0 bne _021D7720 - bl ErrorHandling + bl GF_AssertFail _021D7720: ldr r0, [r4, #0x24] bl MOD05_021EF514 @@ -727,7 +727,7 @@ MOD05_021D7B10: ; 0x021D7B10 MOD05_021D7B38: ; 0x021D7B38 push {lr} sub sp, #0x14 - bl FUN_020B0FC0 + bl NNS_G2dInitOamManagerModule mov r0, #0 str r0, [sp] mov r1, #0x7c @@ -826,7 +826,7 @@ MOD05_021D7BE0: ; 0x021D7BE0 ldr r0, [r0] ldr r1, [r4, #0x2c] bl MOD05_021E805C - ldr r5, _021D7C98 ; =UNK_021CED20 + ldr r5, _021D7C98 ; =NNS_G3dGlb + 0x8 add r3, sp, #0x40 mov r2, #8 _021D7C0E: @@ -859,29 +859,29 @@ _021D7C1C: orr r2, r0 add r0, r1, r2 str r0, [sp, #0x38] - ldr r1, _021D7C98 ; =UNK_021CED20 + ldr r1, _021D7C98 ; =NNS_G3dGlb + 0x8 add r0, sp, #0 mov r2, #0x40 bl MIi_CpuCopyFast - ldr r1, _021D7C9C ; =UNK_021CED98 + ldr r1, _021D7C9C ; =NNS_G3dGlb + 0x80 mov r0, #0x50 ldr r2, [r1, #0x7c] bic r2, r0 str r2, [r1, #0x7c] - bl FUN_020B849C + bl NNS_G3dGlbFlushP ldr r0, [r4, #0x3c] bl MOD05_021E4BA0 bl FUN_0201F178 - ldr r1, _021D7C98 ; =UNK_021CED20 + ldr r1, _021D7C98 ; =NNS_G3dGlb + 0x8 add r0, sp, #0x40 mov r2, #0x40 bl MIi_CpuCopyFast - ldr r1, _021D7C9C ; =UNK_021CED98 + ldr r1, _021D7C9C ; =NNS_G3dGlb + 0x80 mov r0, #0x50 ldr r2, [r1, #0x7c] bic r2, r0 str r2, [r1, #0x7c] - bl FUN_020B849C + bl NNS_G3dGlbFlushP ldr r0, [r4, #4] ldr r0, [r0, #4] bl MOD05_021D7FD0 @@ -892,8 +892,8 @@ _021D7C1C: add sp, #0x80 pop {r3, r4, r5, pc} nop -_021D7C98: .word UNK_021CED20 -_021D7C9C: .word UNK_021CED98 +_021D7C98: .word NNS_G3dGlb + 0x8 +_021D7C9C: .word NNS_G3dGlb + 0x80 _021D7CA0: .word UNK_02105BB8 thumb_func_start MOD05_021D7CA4 @@ -931,7 +931,7 @@ _021D7CC6: add sp, #0xc pop {pc} _021D7CE6: - bl ErrorHandling + bl GF_AssertFail add sp, #0xc pop {pc} .balign 4, 0 @@ -965,7 +965,7 @@ MOD05_021D7CF0: ; 0x021D7CF0 ldr r0, [r5, #0x30] cmp r0, #0 beq _021D7D36 - bl ErrorHandling + bl GF_AssertFail _021D7D36: mov r0, #4 add r1, r4, #0 diff --git a/arm9/modules/05/asm/mod05_021D7F4C.s b/arm9/modules/05/asm/mod05_021D7F4C.s index 2ba8b668..fd877faf 100644 --- a/arm9/modules/05/asm/mod05_021D7F4C.s +++ b/arm9/modules/05/asm/mod05_021D7F4C.s @@ -147,12 +147,12 @@ _021D8034: ldr r0, [r4, #4] cmp r0, #0 bne _021D8062 - bl ErrorHandling + bl GF_AssertFail _021D8062: ldr r0, [r4, #8] cmp r0, #0 bne _021D806C - bl ErrorHandling + bl GF_AssertFail _021D806C: ldrh r1, [r6, #4] cmp r1, #0 @@ -177,7 +177,7 @@ _021D808C: cmp r1, r2 blt _021D8034 _021D8094: - bl ErrorHandling + bl GF_AssertFail mov r0, #0 pop {r4, r5, r6, pc} .balign 4, 0 diff --git a/arm9/modules/05/asm/mod05_021D80E8.s b/arm9/modules/05/asm/mod05_021D80E8.s index c00cb45f..e228ee0a 100644 --- a/arm9/modules/05/asm/mod05_021D80E8.s +++ b/arm9/modules/05/asm/mod05_021D80E8.s @@ -1674,7 +1674,7 @@ _021D8E84: mov r0, #2 b _021D8E96 _021D8E8C: - bl ErrorHandling + bl GF_AssertFail add sp, #0x20 mov r0, #0 pop {r3, r4, r5, pc} @@ -1702,7 +1702,7 @@ _021D8EB0: beq _021D8ED2 cmp r0, #3 beq _021D8ED2 - bl ErrorHandling + bl GF_AssertFail add sp, #0x20 mov r0, #0 pop {r3, r4, r5, pc} @@ -2118,7 +2118,7 @@ _021D91DC: ldr r0, _021D9244 ; =0x00000FFF cmp r1, r0 beq _021D91F2 - bl ErrorHandling + bl GF_AssertFail _021D91F2: ldr r0, [r4, #0xc] bl FUN_02034E30 diff --git a/arm9/modules/05/asm/mod05_021D9320.s b/arm9/modules/05/asm/mod05_021D9320.s index 4d0220e5..ec304548 100644 --- a/arm9/modules/05/asm/mod05_021D9320.s +++ b/arm9/modules/05/asm/mod05_021D9320.s @@ -295,7 +295,7 @@ MOD05_021D9510: ; 0x021D9510 bl FUN_0201FE94 add r5, r0, #0 bne _021D9580 - bl ErrorHandling + bl GF_AssertFail _021D9580: ldrh r1, [r4, #0xa] add r0, r5, #0 @@ -444,7 +444,7 @@ MOD05_021D967C: ; 0x021D967C bl FUN_0200945C cmp r0, #0 bne _021D96A0 - bl ErrorHandling + bl GF_AssertFail add sp, #0x10 pop {r3, r4, r5, r6, r7, pc} _021D96A0: @@ -468,7 +468,7 @@ _021D96A0: bl FUN_02009D68 cmp r0, #1 beq _021D96D0 - bl ErrorHandling + bl GF_AssertFail _021D96D0: mov r0, #0x53 lsl r0, r0, #2 @@ -481,7 +481,7 @@ _021D96D0: add sp, #0x10 pop {r3, r4, r5, r6, r7, pc} _021D96E8: - bl ErrorHandling + bl GF_AssertFail add sp, #0x10 pop {r3, r4, r5, r6, r7, pc} .balign 4, 0 @@ -526,7 +526,7 @@ MOD05_021D971C: ; 0x021D971C bl FUN_0200945C cmp r0, #0 bne _021D9740 - bl ErrorHandling + bl GF_AssertFail add sp, #0xc pop {r4, r5, r6, r7, pc} _021D9740: @@ -554,7 +554,7 @@ _021D9740: add sp, #0xc pop {r4, r5, r6, r7, pc} _021D9774: - bl ErrorHandling + bl GF_AssertFail add sp, #0xc pop {r4, r5, r6, r7, pc} .balign 4, 0 @@ -610,7 +610,7 @@ MOD05_021D97B4: ; 0x021D97B4 bl FUN_0200945C cmp r0, #0 bne _021D97DE - bl ErrorHandling + bl GF_AssertFail add sp, #0x14 pop {r4, r5, r6, r7, pc} _021D97DE: @@ -635,11 +635,11 @@ _021D97DE: bl MOD05_021D9780 cmp r0, #1 beq _021D9818 - bl ErrorHandling + bl GF_AssertFail add sp, #0x14 pop {r4, r5, r6, r7, pc} _021D9814: - bl ErrorHandling + bl GF_AssertFail _021D9818: add sp, #0x14 pop {r4, r5, r6, r7, pc} @@ -865,7 +865,7 @@ _021D99A6: bl FUN_02020248 b _021D99EE _021D99EA: - bl ErrorHandling + bl GF_AssertFail _021D99EE: add r0, r6, #0 add sp, #0x74 diff --git a/arm9/modules/05/asm/mod05_021D9A48.s b/arm9/modules/05/asm/mod05_021D9A48.s index 2e5469f9..ee169f98 100644 --- a/arm9/modules/05/asm/mod05_021D9A48.s +++ b/arm9/modules/05/asm/mod05_021D9A48.s @@ -15,7 +15,7 @@ MOD05_021D9A48: ; 0x021D9A48 add r4, r3, #0 cmp r1, r0 bne _021D9A60 - bl ErrorHandling + bl GF_AssertFail _021D9A60: mov r0, #0 add r1, r6, #0 @@ -70,7 +70,7 @@ MOD05_021D9AA8: ; 0x021D9AA8 add r5, r3, #0 cmp r4, r0 bne _021D9ABE - bl ErrorHandling + bl GF_AssertFail _021D9ABE: add r0, r6, #0 add r1, r4, #0 @@ -78,29 +78,29 @@ _021D9ABE: bl NARC_AllocAndReadWholeMember add r4, r0, #0 bne _021D9AD0 - bl ErrorHandling + bl GF_AssertFail _021D9AD0: add r0, r4, #0 mov r1, #0 - bl FUN_020BC4C8 + bl NNS_G3dGetAnmByIdx add r6, r0, #0 bne _021D9AE0 - bl ErrorHandling + bl GF_AssertFail _021D9AE0: ldr r0, [sp, #0x1c] add r1, r6, #0 add r2, r7, #0 - bl FUN_020BB8D0 + bl NNS_G3dAllocAnmObj str r0, [r5] cmp r5, #0 bne _021D9AF4 - bl ErrorHandling + bl GF_AssertFail _021D9AF4: ldr r0, [r5] ldr r3, [sp, #0x18] add r1, r6, #0 add r2, r7, #0 - bl FUN_020B8110 + bl NNS_G3dAnmObjInit add r0, r4, #0 pop {r3, r4, r5, r6, r7, pc} @@ -117,7 +117,7 @@ _021D9B0E: mov r0, #0 pop {r3, pc} _021D9B16: - bl FUN_020B7E28 + bl NNS_G3dRenderObjRemoveAnmObj mov r0, #1 pop {r3, pc} .balign 4, 0 @@ -257,7 +257,7 @@ MOD05_021D9C00: ; 0x021D9C00 ldr r0, [r4, #4] cmp r0, #1 beq _021D9C0E - bl ErrorHandling + bl GF_AssertFail _021D9C0E: ldr r0, [r4, #0x1c] pop {r4, pc} @@ -280,7 +280,7 @@ MOD05_021D9C14: ; 0x021D9C14 bl NARC_ReadWholeMember cmp r4, #4 blt _021D9C38 - bl ErrorHandling + bl GF_AssertFail _021D9C38: lsl r1, r4, #2 add r0, sp, #0x14 @@ -312,7 +312,7 @@ _021D9C66: ldr r0, [r4, #0x34] cmp r5, r0 bne _021D9C74 - bl ErrorHandling + bl GF_AssertFail _021D9C74: add r6, r6, #1 add r4, #0x28 @@ -368,7 +368,7 @@ _021D9CD8: add r1, #0x28 cmp r2, #0x10 blt _021D9C80 - bl ErrorHandling + bl GF_AssertFail mov r0, #0 add sp, #0x24 pop {r4, r5, r6, r7, pc} @@ -470,7 +470,7 @@ _021D9D9C: _021D9DA4: cmp r4, #0x10 bne _021D9DAC - bl ErrorHandling + bl GF_AssertFail _021D9DAC: ldr r0, [sp, #0x10] add r0, r0, #4 @@ -495,7 +495,7 @@ MOD05_021D9DC0: ; 0x021D9DC0 str r3, [sp] cmp r6, #0 bne _021D9DDC - bl ErrorHandling + bl GF_AssertFail add sp, #0x18 mov r0, #0 pop {r3, r4, r5, r6, r7, pc} @@ -516,7 +516,7 @@ _021D9DEC: bl NARC_ReadWholeMember cmp r4, #4 blt _021D9E02 - bl ErrorHandling + bl GF_AssertFail _021D9E02: lsl r1, r4, #2 add r0, sp, #8 @@ -571,7 +571,7 @@ _021D9E58: add r1, r6, r1 ldr r0, [sp] ldr r1, [r1, #0x10] - bl FUN_020B7EFC + bl NNS_G3dRenderObjAddAnmObj _021D9E6A: add sp, #0x18 mov r0, #1 @@ -596,7 +596,7 @@ MOD05_021D9E80: ; 0x021D9E80 add r4, r2, #0 str r0, [sp] bne _021D9E94 - bl ErrorHandling + bl GF_AssertFail _021D9E94: add r0, r4, #0 bl MOD05_021DA220 @@ -671,7 +671,7 @@ _021D9F12: add r1, r4, r1 ldr r0, [sp, #0xc] ldr r1, [r1, #0x10] - bl FUN_020B7EFC + bl NNS_G3dRenderObjAddAnmObj mov r0, #1 str r0, [sp] b _021D9F32 @@ -709,7 +709,7 @@ _021D9F54: bne _021D9F6E ldr r1, [r5, #0x10] add r0, r6, #0 - bl thunk_FUN_020ae84c + bl NNS_G3dFreeAnmObj str r7, [r5, #0x10] ldr r0, [r5, #0x24] bl FreeToHeap @@ -734,7 +734,7 @@ MOD05_021D9F80: ; 0x021D9F80 beq _021D9FB2 cmp r5, #0 bne _021D9F90 - bl ErrorHandling + bl GF_AssertFail _021D9F90: ldr r0, [r5, #4] cmp r0, #0 @@ -743,7 +743,7 @@ _021D9F90: bne _021D9FAC ldr r1, [r5] add r0, r4, #0 - bl thunk_FUN_020ae84c + bl NNS_G3dFreeAnmObj mov r0, #0 str r0, [r5] ldr r0, [r5, #0x14] @@ -770,7 +770,7 @@ MOD05_021D9FB4: ; 0x021D9FB4 bl NARC_ReadWholeMember cmp r5, #4 blt _021D9FD4 - bl ErrorHandling + bl GF_AssertFail _021D9FD4: lsl r1, r5, #2 add r0, sp, #4 @@ -779,7 +779,7 @@ _021D9FD4: mvn r0, r0 cmp r5, r0 bne _021D9FE6 - bl ErrorHandling + bl GF_AssertFail _021D9FE6: mov r0, #0 mov r2, #0x28 @@ -834,7 +834,7 @@ MOD05_021DA03C: ; 0x021DA03C add r4, r1, #0 cmp r5, #0 bne _021DA04A - bl ErrorHandling + bl GF_AssertFail _021DA04A: mov r6, #0 add r1, r6, #0 @@ -850,7 +850,7 @@ _021DA050: ldr r0, [r6, #4] cmp r0, #0 bne _021DA072 - bl ErrorHandling + bl GF_AssertFail b _021DA072 _021DA06A: add r1, r1, #1 @@ -860,7 +860,7 @@ _021DA06A: _021DA072: cmp r6, #0 bne _021DA07A - bl ErrorHandling + bl GF_AssertFail _021DA07A: add r0, r6, #0 pop {r4, r5, r6, pc} @@ -881,7 +881,7 @@ MOD05_021DA080: ; 0x021DA080 bl NARC_ReadWholeMember cmp r4, #4 blt _021DA0A0 - bl ErrorHandling + bl GF_AssertFail _021DA0A0: lsl r1, r4, #2 add r0, sp, #4 @@ -900,7 +900,7 @@ _021DA0AC: ldr r0, [r4, #4] cmp r0, #0 bne _021DA0CE - bl ErrorHandling + bl GF_AssertFail b _021DA0CE _021DA0C6: add r2, r2, #1 @@ -910,7 +910,7 @@ _021DA0C6: _021DA0CE: cmp r4, #0 bne _021DA0D6 - bl ErrorHandling + bl GF_AssertFail _021DA0D6: add r0, r4, #0 add sp, #0x14 @@ -1171,7 +1171,7 @@ MOD05_021DA26C: ; 0x021DA26C add r5, r0, #0 add r4, r1, #0 bne _021DA278 - bl ErrorHandling + bl GF_AssertFail _021DA278: mov r1, #0x10 mov r0, #0 @@ -1203,7 +1203,7 @@ _021DA292: strb r4, [r0] b _021DA2B6 _021DA2AE: - bl ErrorHandling + bl GF_AssertFail mov r0, #0 pop {r3, r4, r5, pc} _021DA2B6: @@ -1265,7 +1265,7 @@ MOD05_021DA304: ; 0x021DA304 add r6, r2, #0 cmp r4, #4 ble _021DA314 - bl ErrorHandling + bl GF_AssertFail _021DA314: cmp r5, #0 beq _021DA31A @@ -1284,7 +1284,7 @@ MOD05_021DA320: ; 0x021DA320 add r6, r2, #0 cmp r4, r0 blt _021DA332 - bl ErrorHandling + bl GF_AssertFail _021DA332: lsl r0, r4, #2 str r6, [r5, r0] @@ -1299,7 +1299,7 @@ MOD05_021DA338: ; 0x021DA338 add r4, r1, #0 cmp r4, r0 blt _021DA34A - bl ErrorHandling + bl GF_AssertFail _021DA34A: lsl r0, r4, #2 ldr r0, [r5, r0] @@ -1320,7 +1320,7 @@ _021DA360: bl MOD05_021D9B04 ldr r0, [r6, #0x14] ldr r1, [sp] - bl FUN_020B7EFC + bl NNS_G3dRenderObjAddAnmObj _021DA378: add r0, r4, #1 lsl r0, r0, #0x18 @@ -1368,7 +1368,7 @@ _021DA3AC: bl MOD05_021D9C14 add r4, r0, #0 bne _021DA3D2 - bl ErrorHandling + bl GF_AssertFail _021DA3D2: ldr r0, [sp, #0x4c] add r1, r5, #0 @@ -1464,7 +1464,7 @@ MOD05_021DA464: ; 0x021DA464 bl MOD05_021DA26C add r5, r0, #0 bne _021DA482 - bl ErrorHandling + bl GF_AssertFail add sp, #0x10 pop {r3, r4, r5, r6, r7, pc} _021DA482: @@ -1476,7 +1476,7 @@ _021DA482: ldrb r4, [r0] cmp r4, #0 bne _021DA498 - bl ErrorHandling + bl GF_AssertFail _021DA498: cmp r4, #0 bne _021DA49E @@ -1506,7 +1506,7 @@ MOD05_021DA4BC: ; 0x021DA4BC add r6, r3, #0 cmp r4, #6 blo _021DA4CE - bl ErrorHandling + bl GF_AssertFail _021DA4CE: add r0, r5, #0 add r1, r7, #0 @@ -1517,7 +1517,7 @@ _021DA4CE: ldr r0, [r5, r4] cmp r0, #0 beq _021DA4E6 - bl ErrorHandling + bl GF_AssertFail _021DA4E6: str r6, [r5, r4] pop {r3, r4, r5, r6, r7, pc} @@ -1531,7 +1531,7 @@ MOD05_021DA4EC: ; 0x021DA4EC add r6, r2, #0 cmp r4, #0 bne _021DA4FC - bl ErrorHandling + bl GF_AssertFail _021DA4FC: add r0, r5, #0 add r1, r4, #0 @@ -1552,7 +1552,7 @@ MOD05_021DA514: ; 0x021DA514 add r4, r3, #0 cmp r5, #0 bne _021DA526 - bl ErrorHandling + bl GF_AssertFail _021DA526: add r0, r6, #0 add r1, r5, #0 @@ -1578,7 +1578,7 @@ MOD05_021DA54C: ; 0x021DA54C add r4, r1, #0 add r6, r2, #0 bne _021DA55A - bl ErrorHandling + bl GF_AssertFail _021DA55A: add r0, r4, #0 add r1, r6, #0 @@ -1597,7 +1597,7 @@ MOD05_021DA574: ; 0x021DA574 add r5, r0, #0 add r4, r1, #0 bne _021DA580 - bl ErrorHandling + bl GF_AssertFail _021DA580: add r0, r5, #0 add r1, r4, #0 @@ -1611,7 +1611,7 @@ MOD05_021DA58C: ; 0x021DA58C bl MOD05_021DA574 add r4, r0, #0 bne _021DA59A - bl ErrorHandling + bl GF_AssertFail _021DA59A: add r0, r4, #0 bl MOD05_021DA20C diff --git a/arm9/modules/05/asm/mod05_021DA5B8.s b/arm9/modules/05/asm/mod05_021DA5B8.s index e961bb5a..b4648ab3 100644 --- a/arm9/modules/05/asm/mod05_021DA5B8.s +++ b/arm9/modules/05/asm/mod05_021DA5B8.s @@ -115,7 +115,7 @@ _021DA606: bl MOD05_021DA464 b _021DA692 _021DA688: - bl ErrorHandling + bl GF_AssertFail add sp, #0x84 mov r0, #1 pop {r4, r5, r6, r7, pc} @@ -156,7 +156,7 @@ _021DA6CC: mov r2, #0 b _021DA6DA _021DA6D4: - bl ErrorHandling + bl GF_AssertFail mov r2, #0 _021DA6DA: ldr r0, [r5, #0x50] @@ -220,7 +220,7 @@ _021DA752: mov r2, #1 b _021DA760 _021DA75A: - bl ErrorHandling + bl GF_AssertFail mov r2, #1 _021DA760: ldr r0, [r5, #0x50] @@ -350,7 +350,7 @@ _021DA7E4: bl MOD05_021DA464 b _021DA878 _021DA864: - bl ErrorHandling + bl GF_AssertFail mov r0, #1 bl MOD05_021D7CA4 mov r0, #6 @@ -412,7 +412,7 @@ _021DA8D6: mov r2, #2 b _021DA8E4 _021DA8DE: - bl ErrorHandling + bl GF_AssertFail mov r2, #0 _021DA8E4: ldr r0, [r5, #0x50] @@ -477,7 +477,7 @@ _021DA960: mov r2, #3 b _021DA96E _021DA968: - bl ErrorHandling + bl GF_AssertFail mov r2, #1 _021DA96E: ldr r0, [r5, #0x50] @@ -737,7 +737,7 @@ _021DAB10: bl MOD05_021DA464 b _021DAB68 _021DAB5E: - bl ErrorHandling + bl GF_AssertFail add sp, #0x40 mov r0, #1 pop {r3, r4, r5, r6, r7, pc} @@ -753,7 +753,7 @@ _021DAB68: bl FUN_0205ADDC b _021DAB86 _021DAB82: - bl ErrorHandling + bl GF_AssertFail _021DAB86: ldr r0, [r4] add r0, r0, #1 @@ -784,7 +784,7 @@ _021DABBA: bl FUN_0205ADDC b _021DABC6 _021DABC2: - bl ErrorHandling + bl GF_AssertFail _021DABC6: ldr r0, [r4] add r0, r0, #1 @@ -958,7 +958,7 @@ _021DACDA: bl MOD05_021DA464 b _021DAD34 _021DAD2A: - bl ErrorHandling + bl GF_AssertFail add sp, #0x40 mov r0, #1 pop {r3, r4, r5, r6, r7, pc} @@ -974,7 +974,7 @@ _021DAD34: bl FUN_0205ADDC b _021DAD52 _021DAD4E: - bl ErrorHandling + bl GF_AssertFail _021DAD52: ldr r0, [r4] add r0, r0, #1 @@ -1003,7 +1003,7 @@ _021DAD80: bl FUN_0205ADDC b _021DAD8C _021DAD88: - bl ErrorHandling + bl GF_AssertFail _021DAD8C: ldr r0, [r4] add r0, r0, #1 @@ -1152,7 +1152,7 @@ _021DAE50: add sp, #0x84 pop {r4, r5, r6, r7, pc} _021DAEC8: - bl ErrorHandling + bl GF_AssertFail add sp, #0x84 pop {r4, r5, r6, r7, pc} .balign 4, 0 @@ -1189,7 +1189,7 @@ _021DAF04: mov r2, #0 b _021DAF12 _021DAF0C: - bl ErrorHandling + bl GF_AssertFail mov r2, #0 _021DAF12: ldr r0, [r5, #0x50] @@ -1232,7 +1232,7 @@ _021DAF58: mov r2, #1 b _021DAF66 _021DAF60: - bl ErrorHandling + bl GF_AssertFail mov r2, #1 _021DAF66: ldr r0, [r5, #0x50] @@ -1302,7 +1302,7 @@ MOD05_021DAFA8: ; 0x021DAFA8 bl FUN_0204A94C cmp r0, #0 bne _021DAFEA - bl ErrorHandling + bl GF_AssertFail _021DAFEA: ldr r0, [sp, #0x18] bl MOD05_021E7EC8 @@ -1315,7 +1315,7 @@ _021DAFEA: bl MOD05_021D9DC0 cmp r0, #0 bne _021DB008 - bl ErrorHandling + bl GF_AssertFail _021DB008: ldr r0, [sp, #0x14] ldr r2, [r4, #0x4c] @@ -1675,7 +1675,7 @@ _021DB2E6: mov r6, #0x27 b _021DB2EE _021DB2EA: - bl ErrorHandling + bl GF_AssertFail _021DB2EE: mov r1, #0 str r1, [sp] diff --git a/arm9/modules/05/asm/mod05_021DB44C.s b/arm9/modules/05/asm/mod05_021DB44C.s index b606312e..eaee32f8 100644 --- a/arm9/modules/05/asm/mod05_021DB44C.s +++ b/arm9/modules/05/asm/mod05_021DB44C.s @@ -10,7 +10,7 @@ MOD05_021DB44C: ; 0x021DB44C add r5, r0, #0 cmp r6, #3 blo _021DB45A - bl ErrorHandling + bl GF_AssertFail _021DB45A: mov r0, #4 mov r1, #0x14 @@ -60,14 +60,14 @@ MOD05_021DB4B0: ; 0x021DB4B0 push {r4, lr} add r4, r0, #0 bne _021DB4BA - bl ErrorHandling + bl GF_AssertFail _021DB4BA: ldr r0, [r4] add r0, r0, #4 bl MOD05_021DB7A0 ldr r1, [r4] mov r0, #4 - bl FUN_02016A8C + bl FreeToHeapExplicit mov r0, #0 str r0, [r4] pop {r4, pc} @@ -77,7 +77,7 @@ MOD05_021DB4D0: ; 0x021DB4D0 push {r3, r4, r5, lr} add r4, r0, #0 bne _021DB4DA - bl ErrorHandling + bl GF_AssertFail _021DB4DA: bl GF_RTC_TimeToSec lsr r1, r0, #0x1f @@ -229,21 +229,21 @@ MOD05_021DB5EC: ; 0x021DB5EC add r4, r0, #0 mov r1, #0 mov r2, #0x40 - bl FUN_020BC094 + bl NNSi_G3dModifyMatFlag add r0, r4, #0 mov r1, #0 mov r2, #0x80 - bl FUN_020BC094 + bl NNSi_G3dModifyMatFlag mov r2, #2 add r0, r4, #0 mov r1, #0 lsl r2, r2, #8 - bl FUN_020BC094 + bl NNSi_G3dModifyMatFlag mov r2, #1 add r0, r4, #0 mov r1, #0 lsl r2, r2, #0xa - bl FUN_020BC094 + bl NNSi_G3dModifyMatFlag pop {r4, pc} thumb_func_start MOD05_021DB61C @@ -419,7 +419,7 @@ _021DB73E: _021DB78A: ldr r1, [sp, #0x14] mov r0, #4 - bl FUN_02016A8C + bl FreeToHeapExplicit ldr r0, [sp, #8] add sp, #0x1fc add sp, #0x20 @@ -433,7 +433,7 @@ MOD05_021DB7A0: ; 0x021DB7A0 add r4, r0, #0 ldr r1, [r4] mov r0, #4 - bl FUN_02016A8C + bl FreeToHeapExplicit mov r0, #0 str r0, [r4] pop {r4, pc} diff --git a/arm9/modules/05/asm/mod05_021DB900.s b/arm9/modules/05/asm/mod05_021DB900.s index 9edf9e7c..931fcfad 100644 --- a/arm9/modules/05/asm/mod05_021DB900.s +++ b/arm9/modules/05/asm/mod05_021DB900.s @@ -11,7 +11,7 @@ MOD05_021DB900: ; 0x021DB900 bl AllocFromHeap add r4, r0, #0 bne _021DB912 - bl ErrorHandling + bl GF_AssertFail _021DB912: add r0, r4, #0 pop {r4, pc} @@ -37,7 +37,7 @@ MOD05_021DB918: ; 0x021DB918 bl FS_ReadFile cmp r0, #0 bge _021DB946 - bl ErrorHandling + bl GF_AssertFail _021DB946: add r0, sp, #4 add r1, sp, #0 @@ -45,7 +45,7 @@ _021DB946: bl FS_ReadFile cmp r0, #0 bge _021DB958 - bl ErrorHandling + bl GF_AssertFail _021DB958: add r0, sp, #0 ldrh r1, [r0, #2] @@ -58,7 +58,7 @@ _021DB958: str r0, [r5] cmp r0, #0 bne _021DB974 - bl ErrorHandling + bl GF_AssertFail _021DB974: mov r0, #4 add r1, r4, #0 @@ -66,7 +66,7 @@ _021DB974: str r0, [r5, #4] cmp r0, #0 bne _021DB986 - bl ErrorHandling + bl GF_AssertFail _021DB986: ldr r1, [r5] add r0, sp, #4 @@ -74,7 +74,7 @@ _021DB986: bl FS_ReadFile cmp r0, #0 bge _021DB998 - bl ErrorHandling + bl GF_AssertFail _021DB998: ldr r1, [r5, #4] add r0, sp, #4 @@ -82,14 +82,14 @@ _021DB998: bl FS_ReadFile cmp r0, #0 bge _021DB9AA - bl ErrorHandling + bl GF_AssertFail _021DB9AA: add r0, sp, #4 bl FS_CloseFile add sp, #0x4c pop {r3, r4, r5, r6, pc} _021DB9B4: - bl ErrorHandling + bl GF_AssertFail add sp, #0x4c pop {r3, r4, r5, r6, pc} diff --git a/arm9/modules/05/asm/mod05_021DBA00.s b/arm9/modules/05/asm/mod05_021DBA00.s index 22e64df5..d0d97f37 100644 --- a/arm9/modules/05/asm/mod05_021DBA00.s +++ b/arm9/modules/05/asm/mod05_021DBA00.s @@ -24,7 +24,7 @@ MOD05_021DBA1C: ; 0x021DBA1C add r4, r0, #0 ldr r1, [r4] mov r0, #4 - bl FUN_02016A8C + bl FreeToHeapExplicit mov r0, #0 str r0, [r4] pop {r4, pc} diff --git a/arm9/modules/05/asm/mod05_021DBABC.s b/arm9/modules/05/asm/mod05_021DBABC.s index 28a15fb2..2c2bb7d6 100644 --- a/arm9/modules/05/asm/mod05_021DBABC.s +++ b/arm9/modules/05/asm/mod05_021DBABC.s @@ -24,7 +24,7 @@ MOD05_021DBAD8: ; 0x021DBAD8 add r4, r0, #0 ldr r1, [r4] mov r0, #4 - bl FUN_02016A8C + bl FreeToHeapExplicit mov r0, #0 str r0, [r4] pop {r4, pc} @@ -51,7 +51,7 @@ _021DBAFA: ldrsh r2, [r5, r2] ldrsh r3, [r5, r3] add r0, r4, #0 - bl FUN_020B8418 + bl NNS_G3dGlbLightVector _021DBB14: add r1, r4, #4 mov r0, #1 @@ -60,7 +60,7 @@ _021DBB14: beq _021DBB26 ldrh r1, [r6, #0x18] add r0, r4, #0 - bl FUN_020B8404 + bl NNS_G3dGlbLightColor _021DBB26: add r4, r4, #1 add r5, r5, #6 @@ -77,7 +77,7 @@ _021DBB26: ldrh r0, [r0, #0x20] ldrh r1, [r1, #0x22] ldr r2, [r2, #0x28] - bl FUN_020B83E0 + bl NNS_G3dGlbMaterialColorDiffAmb _021DBB48: mov r0, #3 lsl r0, r0, #0xa @@ -89,7 +89,7 @@ _021DBB48: ldrh r0, [r0, #0x24] ldrh r1, [r1, #0x26] ldr r2, [r2, #0x2c] - bl FUN_020B83BC + bl NNS_G3dGlbMaterialColorSpecEmi _021DBB60: mov r0, #1 lsl r0, r0, #0xc @@ -109,7 +109,7 @@ _021DBB60: ldr r0, [r0, #0x30] ldr r2, [r2, #0x38] ldr r3, [r3, #0x3c] - bl FUN_020B8390 + bl NNS_G3dGlbPolygonAttr _021DBB88: add sp, #0xc pop {r4, r5, r6, r7, pc} @@ -126,7 +126,7 @@ MOD05_021DBB8C: ; 0x021DBB8C beq _021DBBA4 ldrh r1, [r5, #0x20] add r0, r6, #0 - bl FUN_020BBC34 + bl NNS_G3dMdlSetMdlDiffAll _021DBBA4: mov r0, #2 lsl r0, r0, #8 @@ -134,7 +134,7 @@ _021DBBA4: beq _021DBBB4 ldrh r1, [r5, #0x22] add r0, r6, #0 - bl FUN_020BBBF4 + bl NNS_G3dMdlSetMdlAmbAll _021DBBB4: mov r0, #1 lsl r0, r0, #0xa @@ -142,7 +142,7 @@ _021DBBB4: beq _021DBBC4 ldrh r1, [r5, #0x24] add r0, r6, #0 - bl FUN_020BBBB4 + bl NNS_G3dMdlSetMdlSpecAll _021DBBC4: mov r0, #2 lsl r0, r0, #0xa @@ -150,7 +150,7 @@ _021DBBC4: beq _021DBBD4 ldrh r1, [r5, #0x26] add r0, r6, #0 - bl FUN_020BBB74 + bl NNS_G3dMdlSetMdlEmiAll _021DBBD4: mov r0, #1 lsl r0, r0, #0xc @@ -158,7 +158,7 @@ _021DBBD4: beq _021DBBE4 ldr r1, [r5, #0x30] add r0, r6, #0 - bl FUN_020BBB34 + bl NNS_G3dMdlSetMdlLightEnableFlagAll _021DBBE4: mov r0, #2 lsl r0, r0, #0xc @@ -166,7 +166,7 @@ _021DBBE4: beq _021DBBF4 ldr r1, [r5, #0x34] add r0, r6, #0 - bl FUN_020BBAF4 + bl NNS_G3dMdlSetMdlPolygonModeAll _021DBBF4: mov r0, #1 lsl r0, r0, #0xe @@ -174,7 +174,7 @@ _021DBBF4: beq _021DBC04 ldr r1, [r5, #0x38] add r0, r6, #0 - bl FUN_020BBAB4 + bl NNS_G3dMdlSetMdlCullModeAll _021DBC04: mov r0, #2 lsl r0, r0, #0xe @@ -182,7 +182,7 @@ _021DBC04: beq _021DBC14 ldr r1, [r5, #0x3c] add r0, r6, #0 - bl FUN_020BBA74 + bl NNS_G3dMdlSetMdlPolygonIDAll _021DBC14: mov r0, #1 lsl r0, r0, #0x10 @@ -190,7 +190,7 @@ _021DBC14: beq _021DBC24 ldr r1, [r5, #0x40] add r0, r6, #0 - bl FUN_020BBA34 + bl NNS_G3dMdlSetMdlAlphaAll _021DBC24: mov r1, #2 lsl r1, r1, #0x10 @@ -201,7 +201,7 @@ _021DBC24: lsr r1, r1, #2 add r0, r6, #0 and r1, r2 - bl FUN_020BB9F4 + bl NNS_G3dMdlSetMdlFogEnableFlagAll _021DBC3A: mov r1, #1 lsl r1, r1, #0x12 @@ -212,7 +212,7 @@ _021DBC3A: lsr r1, r1, #4 add r0, r6, #0 and r1, r2 - bl FUN_020BB9B4 + bl NNS_G3dMdlSetMdlDepthTestCondAll _021DBC50: mov r1, #2 lsl r1, r1, #0x12 @@ -223,7 +223,7 @@ _021DBC50: lsr r1, r1, #6 add r0, r6, #0 and r1, r2 - bl FUN_020BB974 + bl NNS_G3dMdlSetMdl1DotAll _021DBC66: mov r1, #1 lsl r1, r1, #0x14 @@ -234,7 +234,7 @@ _021DBC66: lsr r1, r1, #8 add r0, r6, #0 and r1, r2 - bl FUN_020BB934 + bl NNS_G3dMdlSetMdlFarClipAll _021DBC7C: mov r1, #2 lsl r1, r1, #0x14 @@ -245,7 +245,7 @@ _021DBC7C: lsr r1, r1, #0xa add r0, r6, #0 and r1, r2 - bl FUN_020BB8F4 + bl NNS_G3dMdlSetMdlXLDepthUpdateAll _021DBC92: pop {r4, r5, r6, pc} @@ -268,7 +268,7 @@ MOD05_021DBC94: ; 0x021DBC94 ldrsh r1, [r5, r4] ldrsh r2, [r2, r4] ldrsh r3, [r3, r4] - bl FUN_020B8418 + bl NNS_G3dGlbLightVector pop {r4, r5, r6, pc} thumb_func_start MOD05_021DBCBC @@ -280,7 +280,7 @@ MOD05_021DBCBC: ; 0x021DBCBC strh r2, [r4, r3] add r0, r1, #0 ldrh r1, [r4, r3] - bl FUN_020B8404 + bl NNS_G3dGlbLightColor pop {r4, pc} thumb_func_start MOD05_021DBCD0 diff --git a/arm9/modules/05/asm/mod05_021DBD84.s b/arm9/modules/05/asm/mod05_021DBD84.s index 7c107314..9a6cb847 100644 --- a/arm9/modules/05/asm/mod05_021DBD84.s +++ b/arm9/modules/05/asm/mod05_021DBD84.s @@ -16,7 +16,7 @@ MOD05_021DBD84: ; 0x021DBD84 add r4, r1, r0 cmp r2, #0x10 blo _021DBD9E - bl ErrorHandling + bl GF_AssertFail _021DBD9E: mov r0, #4 bl FUN_0201EB64 diff --git a/arm9/modules/05/asm/mod05_021DBE04.s b/arm9/modules/05/asm/mod05_021DBE04.s index 4b4b5177..873fd482 100644 --- a/arm9/modules/05/asm/mod05_021DBE04.s +++ b/arm9/modules/05/asm/mod05_021DBE04.s @@ -9,11 +9,11 @@ MOD05_021DBE04: ; 0x021DBE04 ldr r4, [r0, #0x18] cmp r4, #0 bne _021DBE10 - bl ErrorHandling + bl GF_AssertFail _021DBE10: cmp r4, #5 blt _021DBE18 - bl ErrorHandling + bl GF_AssertFail _021DBE18: sub r0, r4, #1 pop {r4, pc} diff --git a/arm9/modules/05/asm/mod05_021DBEF4.s b/arm9/modules/05/asm/mod05_021DBEF4.s index 1d56d13e..f65de9d8 100644 --- a/arm9/modules/05/asm/mod05_021DBEF4.s +++ b/arm9/modules/05/asm/mod05_021DBEF4.s @@ -133,7 +133,7 @@ _021DBFA8: str r0, [r1, r5] add r0, r1, #0 ldr r0, [r0, r5] - bl FUN_020BC0FC + bl NNS_G3dGetTex add r1, r6, r5 str r0, [r1, #8] add r0, r4, #0 diff --git a/arm9/modules/05/asm/mod05_021DC0B8.s b/arm9/modules/05/asm/mod05_021DC0B8.s index ab06fed1..7b1e767f 100644 --- a/arm9/modules/05/asm/mod05_021DC0B8.s +++ b/arm9/modules/05/asm/mod05_021DC0B8.s @@ -68,7 +68,7 @@ MOD05_021DC124: ; 0x021DC124 add r4, r1, #0 cmp r0, #6 beq _021DC134 - bl ErrorHandling + bl GF_AssertFail _021DC134: ldr r2, [r5, #4] cmp r2, r4 @@ -78,7 +78,7 @@ _021DC134: bl MOD05_021DC608 cmp r0, #0 bne _021DC14A - bl ErrorHandling + bl GF_AssertFail _021DC14A: ldr r0, [r5] mov r1, #0 @@ -86,7 +86,7 @@ _021DC14A: bl MOD05_021DC608 cmp r0, #0 bne _021DC15C - bl ErrorHandling + bl GF_AssertFail _021DC15C: ldr r0, [r5] mov r1, #3 @@ -94,7 +94,7 @@ _021DC15C: bl MOD05_021DC608 cmp r0, #0 bne _021DC16E - bl ErrorHandling + bl GF_AssertFail _021DC16E: str r4, [r5, #4] _021DC170: @@ -122,7 +122,7 @@ _021DC190: ldr r0, [r5, #0x14] cmp r0, #0 beq _021DC19A - bl ErrorHandling + bl GF_AssertFail _021DC19A: str r4, [r5, #8] ldr r0, [r5, #4] @@ -182,7 +182,7 @@ _021DC1F6: bl MOD05_021DC608 cmp r0, #0 bne _021DC208 - bl ErrorHandling + bl GF_AssertFail _021DC208: ldr r0, [r4, #0xc] add r0, r0, #1 @@ -200,7 +200,7 @@ _021DC210: bl MOD05_021DC608 cmp r0, #0 bne _021DC22E - bl ErrorHandling + bl GF_AssertFail _021DC22E: ldr r0, [r4, #0xc] add r0, r0, #1 @@ -213,7 +213,7 @@ _021DC236: bl MOD05_021DC608 cmp r0, #0 bne _021DC248 - bl ErrorHandling + bl GF_AssertFail _021DC248: ldr r0, [r4, #0xc] add r0, r0, #1 @@ -236,7 +236,7 @@ _021DC264: bl MOD05_021DC608 cmp r0, #0 bne _021DC276 - bl ErrorHandling + bl GF_AssertFail _021DC276: ldr r0, [r4, #0xc] add r0, r0, #1 @@ -288,7 +288,7 @@ _021DC2C4: bl MOD05_021DC608 cmp r0, #0 bne _021DC2D6 - bl ErrorHandling + bl GF_AssertFail _021DC2D6: ldr r0, [r4, #0xc] add r0, r0, #1 @@ -311,7 +311,7 @@ _021DC2F2: bl MOD05_021DC608 cmp r0, #0 bne _021DC304 - bl ErrorHandling + bl GF_AssertFail _021DC304: ldr r0, [r4] ldr r2, [r4, #8] @@ -319,7 +319,7 @@ _021DC304: bl MOD05_021DC608 cmp r0, #0 bne _021DC316 - bl ErrorHandling + bl GF_AssertFail _021DC316: ldr r0, [r4, #0xc] add r0, r0, #1 @@ -337,7 +337,7 @@ _021DC31E: bl MOD05_021DC608 cmp r0, #0 bne _021DC33C - bl ErrorHandling + bl GF_AssertFail _021DC33C: ldr r0, [r4, #0xc] add r0, r0, #1 @@ -520,7 +520,7 @@ MOD05_021DC480: ; 0x021DC480 add r1, r5, #0 mov r2, #0 mov r3, #4 - bl UncompressFromNarc + bl GfGfxLoader_LoadFromNarc add r5, r0, #0 add r1, r4, #0 mov r2, #4 @@ -692,7 +692,7 @@ _021DC5A2: bl NARC_dtor ldr r1, [r4] mov r0, #4 - bl FUN_02016A8C + bl FreeToHeapExplicit mov r0, #0 str r0, [r4] _021DC5FE: @@ -1220,7 +1220,7 @@ _021DC998: str r2, [r1, r0] ldr r1, [r4, #0xc] add r0, r3, #4 - ldr r6, _021DCA38 ; =UNK_021CEF70 + ldr r6, _021DCA38 ; =NNS_G3dGlb + 0x258 add r5, r1, r0 ldmia r6!, {r0, r1} stmia r5!, {r0, r1} @@ -1271,7 +1271,7 @@ _021DCA30: pop {r4, r5, r6, pc} .balign 4, 0 _021DCA34: .word 0x00000F48 -_021DCA38: .word UNK_021CEF70 +_021DCA38: .word NNS_G3dGlb + 0x258 _021DCA3C: .word 0x00000F58 _021DCA40: .word 0x0400000C @@ -1362,7 +1362,7 @@ _021DCAD2: bl MOD05_021DC880 ldr r1, [r4, #0x10] mov r0, #4 - bl FUN_02016A8C + bl FreeToHeapExplicit mov r0, #0 str r0, [r4, #0x10] ldr r0, [r4, #0x1c] @@ -1390,7 +1390,7 @@ _021DCB14: cmp r1, #0 beq _021DCB2C mov r0, #4 - bl FUN_02016A8C + bl FreeToHeapExplicit ldr r1, [r4, #0xc] ldr r0, _021DCB64 ; =0x00000F58 mov r2, #0 @@ -1414,7 +1414,7 @@ _021DCB3E: _021DCB4C: ldr r1, [r4, #0xc] mov r0, #4 - bl FUN_02016A8C + bl FreeToHeapExplicit mov r0, #0 str r0, [r4, #0xc] _021DCB58: @@ -1559,7 +1559,7 @@ _021DCC66: bl MOD05_021DCD68 cmp r0, #0 bne _021DCC74 - bl ErrorHandling + bl GF_AssertFail _021DCC74: ldr r0, [r4, #0x18] add r0, r0, #1 @@ -1897,7 +1897,7 @@ MOD05_021DCECC: ; 0x021DCECC bl NARC_AllocAndReadWholeMember add r1, sp, #0x14 str r0, [sp] - bl FUN_020B0138 + bl NNS_G2dGetUnpackedPaletteData ldr r1, [sp, #0x14] mov r0, #2 ldr r1, [r1, #0xc] @@ -1934,7 +1934,7 @@ MOD05_021DCF14: ; 0x021DCF14 bl NARC_AllocAndReadWholeMember add r1, sp, #0x14 str r0, [sp, #8] - bl FUN_020B0088 + bl NNS_G2dGetUnpackedCharacterData ldr r3, [sp, #0x14] mov r0, #0 str r0, [sp] @@ -1981,11 +1981,11 @@ MOD05_021DCF68: ; 0x021DCF68 str r0, [sp, #0x14] cmp r0, #0 bne _021DCFA0 - bl ErrorHandling + bl GF_AssertFail _021DCFA0: ldr r0, [sp, #0x14] add r1, sp, #0x18 - bl FUN_020B0180 + bl NNS_G2dGetUnpackedScreenData ldr r3, [sp, #0x18] mov r0, #0 str r0, [sp] @@ -2043,15 +2043,15 @@ MOD05_021DD010: ; 0x021DD010 add r4, r1, #0 cmp r0, #0 beq _021DD020 - bl ErrorHandling + bl GF_AssertFail _021DD020: cmp r4, #0 bgt _021DD028 - bl ErrorHandling + bl GF_AssertFail _021DD028: cmp r4, #0x28 bls _021DD030 - bl ErrorHandling + bl GF_AssertFail _021DD030: add r0, r5, #0 add r0, #0xc @@ -2285,7 +2285,7 @@ MOD05_021DD180: ; 0x021DD180 ldr r0, [sp, #0xc] lsl r1, r1, #0x12 bl FX_Div - ldr r3, _021DD2B0 ; =UNK_021CEF70 + ldr r3, _021DD2B0 ; =NNS_G3dGlb + 0x258 str r0, [sp, #0xc] ldmia r3!, {r0, r1} add r2, sp, #0x14 @@ -2391,7 +2391,7 @@ _021DD2A4: add sp, #0x20 pop {r3, r4, r5, r6, r7, pc} .balign 4, 0 -_021DD2B0: .word UNK_021CEF70 +_021DD2B0: .word NNS_G3dGlb + 0x258 _021DD2B4: .word 0x00000F4C _021DD2B8: .word 0xFFFFF000 @@ -10147,7 +10147,7 @@ MOD05_021E0FA4: ; 0x021E0FA4 ldr r0, [r5, r0] cmp r0, #0 beq _021E0FB6 - bl ErrorHandling + bl GF_AssertFail _021E0FB6: ldr r1, _021E0FCC ; =0x00000F5C mov r0, #1 diff --git a/arm9/modules/05/asm/mod05_021E1374.s b/arm9/modules/05/asm/mod05_021E1374.s index df43ddb9..0e1a6b44 100644 --- a/arm9/modules/05/asm/mod05_021E1374.s +++ b/arm9/modules/05/asm/mod05_021E1374.s @@ -17,7 +17,7 @@ MOD05_021E1374: ; 0x021E1374 bl AllocFromHeap add r4, r0, #0 bne _021E1396 - bl ErrorHandling + bl GF_AssertFail pop {r3, r4, r5, r6, r7, pc} _021E1396: mov r2, #0x47 @@ -493,7 +493,7 @@ MOD05_021E1724: ; 0x021E1724 bl AllocFromHeap add r4, r0, #0 bne _021E173C - bl ErrorHandling + bl GF_AssertFail pop {r4, r5, r6, pc} _021E173C: ldr r0, _021E1750 ; =MOD05_021E1754 @@ -520,7 +520,7 @@ MOD05_021E1754: ; 0x021E1754 ldrh r0, [r1, r0] cmp r0, #0 bne _021E1770 - bl ErrorHandling + bl GF_AssertFail _021E1770: ldr r2, [r4, #8] ldr r0, _021E1790 ; =0x00000112 @@ -533,7 +533,7 @@ _021E1770: bl FUN_0200CAB4 mov r0, #4 add r1, r4, #0 - bl FUN_02016A8C + bl FreeToHeapExplicit _021E178E: pop {r4, pc} .balign 4, 0 diff --git a/arm9/modules/05/asm/mod05_021E1AD8.s b/arm9/modules/05/asm/mod05_021E1AD8.s index 0b72da2a..c41f4c57 100644 --- a/arm9/modules/05/asm/mod05_021E1AD8.s +++ b/arm9/modules/05/asm/mod05_021E1AD8.s @@ -738,7 +738,7 @@ _021E2032: add r0, r4, r0 mov r1, #0 mov r3, #4 - bl FUN_020010A8 + bl ListMenuInit mov r1, #0x6d lsl r1, r1, #2 str r0, [r4, r1] @@ -1012,13 +1012,13 @@ MOD05_021E2278: ; 0x021E2278 mov r1, #3 mov r2, #0xf mov r3, #4 - bl FUN_020013E8 + bl ListMenuOverrideSetColors pop {r3, pc} _021E228E: mov r1, #1 mov r2, #0xf mov r3, #2 - bl FUN_020013E8 + bl ListMenuOverrideSetColors pop {r3, pc} .balign 4, 0 @@ -1045,7 +1045,7 @@ _021E22B8: mov r0, #0x6d lsl r0, r0, #2 ldr r0, [r5, r0] - bl FUN_02001204 + bl ListMenu_ProcessInput add r4, r0, #0 mov r0, #0x6d mov r1, #0xb5 @@ -1054,7 +1054,7 @@ _021E22B8: ldrh r6, [r5, r1] ldr r0, [r5, r0] add r1, r5, r1 - bl FUN_0200143C + bl ListMenuGetCurrentItemArrayId mov r0, #0xb5 lsl r0, r0, #2 ldrh r0, [r5, r0] @@ -1134,7 +1134,7 @@ MOD05_021E2368: ; 0x021E2368 mov r1, #0 ldr r0, [r6, r0] add r2, r1, #0 - bl FUN_02001300 + bl DestroyListMenu mov r0, #0x1a lsl r0, r0, #4 ldr r0, [r6, r0] @@ -1189,7 +1189,7 @@ MOD05_021E23D0: ; 0x021E23D0 add r6, r0, #0 ldr r0, [r5, #0x18] mov r1, #0xf - bl FUN_02019620 + bl FillWindowPixelBuffer add r0, r5, #0 add r0, #0x8c ldr r0, [r0] @@ -1226,7 +1226,7 @@ MOD05_021E2434: ; 0x021E2434 ldr r0, [r4, r1] add r1, r1, #6 add r1, r4, r1 - bl FUN_0200143C + bl ListMenuGetCurrentItemArrayId ldr r0, _021E2460 ; =0x000001BA ldrh r1, [r4, r0] add r0, #0xe2 @@ -1259,7 +1259,7 @@ MOD05_021E2464: ; 0x021E2464 add r5, r0, #0 add r0, r4, #0 add r1, r0, #0 - bl FUN_02002E4C + bl GetFontAttribute lsl r1, r0, #3 mov r0, #7 tst r0, r1 @@ -1318,7 +1318,7 @@ _021E2496: add r0, #8 mov r1, #0xf add r3, r2, #0 - bl FUN_020196F4 + bl FillWindowPixelRect mov r2, #0 add r0, r5, #0 mov r1, #0xf @@ -1718,7 +1718,7 @@ MOD05_021E27E8: ; 0x021E27E8 add r6, r2, #0 mov r0, #4 mov r1, #1 - bl FUN_02018FF4 + bl AllocWindows add r4, r0, #0 str r6, [sp] mov r0, #0xa @@ -1750,7 +1750,7 @@ MOD05_021E27E8: ; 0x021E27E8 bl FUN_0200CCA4 add r0, r4, #0 mov r1, #0xf - bl FUN_02019620 + bl FillWindowPixelBuffer mov r2, #0x7a mov r0, #0 mov r1, #0x1a @@ -1807,7 +1807,7 @@ MOD05_021E28A0: ; 0x021E28A0 mov r1, #0xf mov r2, #0 str r3, [sp, #4] - bl FUN_020196F4 + bl FillWindowPixelRect mov r2, #0x7a mov r0, #0 mov r1, #0x1a @@ -1878,7 +1878,7 @@ MOD05_021E2950: ; 0x021E2950 add r6, r2, #0 mov r0, #4 mov r1, #1 - bl FUN_02018FF4 + bl AllocWindows add r4, r0, #0 str r6, [sp] mov r0, #0xa @@ -1936,7 +1936,7 @@ MOD05_021E29C8: ; 0x021E29C8 str r1, [sp, #0xc] add r0, r1, #0 mov r1, #0xf - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r2, _021E2A6C ; =0x00000141 mov r0, #0 mov r1, #0x1a @@ -2007,7 +2007,7 @@ MOD05_021E2A70: ; 0x021E2A70 add r6, r2, #0 mov r0, #4 mov r1, #1 - bl FUN_02018FF4 + bl AllocWindows add r4, r0, #0 str r6, [sp] mov r0, #0xa @@ -2054,7 +2054,7 @@ MOD05_021E2AD4: ; 0x021E2AD4 str r1, [sp, #0xc] add r0, r1, #0 mov r1, #0xf - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r2, _021E2B7C ; =0x00000141 mov r0, #0 mov r1, #0x1a diff --git a/arm9/modules/05/asm/mod05_021E2B80.s b/arm9/modules/05/asm/mod05_021E2B80.s index 16e19ae0..8a1f9413 100644 --- a/arm9/modules/05/asm/mod05_021E2B80.s +++ b/arm9/modules/05/asm/mod05_021E2B80.s @@ -296,7 +296,7 @@ MOD05_CreateMessageBox: ; 0x021E2D9C _021E2DC8: ldr r0, [r4, #0xc] mov r1, #0xf - bl FUN_02019620 + bl FillWindowPixelBuffer pop {r3, r4, r5, pc} .balign 4, 0 diff --git a/arm9/modules/05/asm/mod05_021E2E88.s b/arm9/modules/05/asm/mod05_021E2E88.s index 0666b52d..a81ba2f1 100644 --- a/arm9/modules/05/asm/mod05_021E2E88.s +++ b/arm9/modules/05/asm/mod05_021E2E88.s @@ -146,7 +146,7 @@ _021E2F92: add r0, r5, #0 add r0, #0x20 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer mov r2, #8 str r2, [sp] add r0, r5, #0 @@ -159,7 +159,7 @@ _021E2F92: ldr r1, [r5, #0x34] add r0, #0x20 ldr r1, [r1, #0x14] - bl FUN_02019658 + bl BlitBitmapRectToWindow ldr r0, [sp, #0x18] mov r1, #8 add r0, r0, #1 @@ -178,7 +178,7 @@ _021E2F92: ldr r1, [r1, #0x14] add r0, #0x20 mov r2, #0x18 - bl FUN_02019658 + bl BlitBitmapRectToWindow mov r0, #8 str r0, [sp] str r0, [sp, #4] @@ -192,7 +192,7 @@ _021E2F92: ldr r1, [r1, #0x14] add r0, #0x20 mov r2, #0x38 - bl FUN_02019658 + bl BlitBitmapRectToWindow mov r1, #8 str r1, [sp] lsl r0, r4, #0x10 @@ -208,7 +208,7 @@ _021E2F92: add r0, #0x20 mov r2, #0x40 mov r3, #0 - bl FUN_02019658 + bl BlitBitmapRectToWindow mov r1, #8 str r1, [sp] str r1, [sp, #4] @@ -223,7 +223,7 @@ _021E2F92: ldr r1, [r1, #0x14] add r0, #0x20 mov r2, #0x20 - bl FUN_02019658 + bl BlitBitmapRectToWindow mov r1, #8 str r1, [sp] lsl r0, r4, #0x10 @@ -240,7 +240,7 @@ _021E2F92: add r0, #0x20 mov r2, #0x30 mov r3, #0 - bl FUN_02019658 + bl BlitBitmapRectToWindow ldr r0, [sp, #0x18] mov r7, #0 cmp r0, #0 @@ -266,7 +266,7 @@ _021E3078: ldr r1, [r1, #0x14] mov r2, #0x10 mov r3, #0 - bl FUN_02019658 + bl BlitBitmapRectToWindow mov r0, #8 str r0, [sp] str r0, [sp, #4] @@ -282,7 +282,7 @@ _021E3078: ldr r1, [r1, #0x14] mov r2, #0x48 mov r3, #0 - bl FUN_02019658 + bl BlitBitmapRectToWindow mov r0, #8 str r0, [sp] str r0, [sp, #4] @@ -299,7 +299,7 @@ _021E3078: ldr r1, [r1, #0x14] mov r2, #0x28 mov r3, #0 - bl FUN_02019658 + bl BlitBitmapRectToWindow add r0, r7, #1 lsl r0, r0, #0x18 lsr r7, r0, #0x18 @@ -568,7 +568,7 @@ _021E32E0: str r0, [r4, #0x14] pop {r4, pc} _021E32E6: - bl ErrorHandling + bl GF_AssertFail pop {r4, pc} .balign 4, 0 _021E32EC: .word MOD05_021E3124 diff --git a/arm9/modules/05/asm/mod05_021E3444.s b/arm9/modules/05/asm/mod05_021E3444.s index 27446591..42f9037e 100644 --- a/arm9/modules/05/asm/mod05_021E3444.s +++ b/arm9/modules/05/asm/mod05_021E3444.s @@ -495,7 +495,7 @@ MOD05_021E37CC: ; 0x021E37CC ldr r4, [sp, #0x20] cmp r0, #0 beq _021E37E4 - bl ErrorHandling + bl GF_AssertFail _021E37E4: mov r0, #0 str r0, [r6, #0x18] @@ -587,7 +587,7 @@ MOD05_021E3888: ; 0x021E3888 bl MOD05_021E35AC cmp r0, #0 beq _021E389E - bl ErrorHandling + bl GF_AssertFail _021E389E: str r4, [r5, #0x18] mov r0, #0 @@ -837,7 +837,7 @@ MOD05_021E3A70: ; 0x021E3A70 add r7, r3, #0 cmp r0, #0 beq _021E3A84 - bl ErrorHandling + bl GF_AssertFail _021E3A84: mov r1, #0 str r1, [r5, #0x18] @@ -1170,7 +1170,7 @@ MOD05_021E3D20: ; 0x021E3D20 str r0, [sp, #4] mov r0, #0x70 add r2, r3, #0 - bl FUN_02006930 + bl GfGfxLoader_GXLoadPal mov r0, #0 str r0, [sp] str r0, [sp, #4] @@ -1181,7 +1181,7 @@ MOD05_021E3D20: ; 0x021E3D20 add r1, r6, #0 add r2, r4, #0 mov r3, #3 - bl FUN_0200687C + bl GfGfxLoader_LoadCharData mov r0, #0 str r0, [sp] str r0, [sp, #4] @@ -1192,7 +1192,7 @@ MOD05_021E3D20: ; 0x021E3D20 add r1, r5, #0 add r2, r4, #0 mov r3, #3 - bl FUN_020068C8 + bl GfGfxLoader_LoadScrnData add sp, #0x10 pop {r4, r5, r6, pc} @@ -1232,7 +1232,7 @@ MOD05_021E3DA0: ; 0x021E3DA0 bl MTX_Identity22_ add r0, sp, #8 ldrh r0, [r0, #0x14] - ldr r3, _021E3E0C ; =UNK_020FFA38 + ldr r3, _021E3E0C ; =FX_SinCosTable_ asr r0, r0, #4 lsl r2, r0, #1 lsl r1, r2, #1 @@ -1271,7 +1271,7 @@ MOD05_021E3DA0: ; 0x021E3DA0 bl FUN_0200CA98 pop {r3, r4, r5, r6, r7, pc} nop -_021E3E0C: .word UNK_020FFA38 +_021E3E0C: .word FX_SinCosTable_ _021E3E10: .word MOD05_021E3D70 thumb_func_start MOD05_021E3E14 @@ -1464,7 +1464,7 @@ MOD05_021E3F68: ; 0x021E3F68 ldrh r1, [r1, #8] add r2, sp, #4 add r3, r4, #0 - bl FUN_02006C08 + bl GfGfxLoader_GetPlttData add r4, r0, #0 add r0, sp, #0x20 ldrh r0, [r0, #0x10] @@ -1508,7 +1508,7 @@ MOD05_021E3FC4: ; 0x021E3FC4 bl FUN_0201FF84 add r4, r0, #0 bne _021E3FF2 - bl ErrorHandling + bl GF_AssertFail _021E3FF2: add r0, r4, #0 add sp, #0x20 @@ -1549,7 +1549,7 @@ MOD05_021E4014: ; 0x021E4014 ldrh r1, [r1, #0xa] mov r2, #0 add r3, sp, #0xc - bl FUN_02006BB0 + bl GfGfxLoader_GetCharData str r0, [sp, #4] ldr r0, [sp, #0xc] ldr r0, [r0, #0x14] @@ -1652,7 +1652,7 @@ MOD05_021E40F0: ; 0x021E40F0 bl DC_FlushRange add r0, r6, #0 mov r1, #1 - bl FUN_020B19C4 + bl NNS_G2dGetImagePaletteLocation add r1, r0, #0 add r0, r5, #0 add r2, r4, #0 @@ -1671,7 +1671,7 @@ MOD05_021E4118: ; 0x021E4118 bl DC_FlushRange add r0, r6, #0 mov r1, #1 - bl FUN_020B1A14 + bl NNS_G2dGetImageLocation add r1, r0, #0 add r0, r5, #0 add r2, r4, #0 @@ -1709,7 +1709,7 @@ MOD05_021E4160: ; 0x021E4160 add r7, r3, #0 cmp r0, #0 beq _021E4176 - bl ErrorHandling + bl GF_AssertFail _021E4176: ldr r3, [sp, #0x1c] add r0, r5, #0 @@ -1827,7 +1827,7 @@ MOD05_021E4240: ; 0x021E4240 add r7, r3, #0 cmp r0, #0 beq _021E4256 - bl ErrorHandling + bl GF_AssertFail _021E4256: ldr r3, [sp, #0x1c] add r0, r5, #0 @@ -1989,7 +1989,7 @@ _021E4370: ldrb r1, [r1, #0x14] lsr r2, r2, #0x10 lsr r3, r3, #0x10 - bl FUN_020196F4 + bl FillWindowPixelRect _021E4390: add sp, #8 pop {r3, r4, r5, pc} @@ -2286,7 +2286,7 @@ MOD05_021E45A0: ; 0x021E45A0 add r4, r1, #0 lsl r1, r0, #1 lsl r0, r1, #1 - ldr r2, _021E4680 ; =UNK_020FFA38 + ldr r2, _021E4680 ; =FX_SinCosTable_ add r1, r1, #1 lsl r1, r1, #1 ldrsh r0, [r2, r0] @@ -2297,7 +2297,7 @@ MOD05_021E45A0: ; 0x021E45A0 asr r0, r4, #4 lsl r1, r0, #1 lsl r0, r1, #1 - ldr r2, _021E4680 ; =UNK_020FFA38 + ldr r2, _021E4680 ; =FX_SinCosTable_ add r1, r1, #1 lsl r1, r1, #1 ldrsh r0, [r2, r0] @@ -2389,7 +2389,7 @@ _021E464C: add sp, #0x20 pop {r3, r4, r5, r6, r7, pc} .balign 4, 0 -_021E4680: .word UNK_020FFA38 +_021E4680: .word FX_SinCosTable_ _021E4684: .word 0x00000000 thumb_func_start MOD05_021E4688 @@ -2569,7 +2569,7 @@ MOD05_021E47BC: ; 0x021E47BC add r5, r3, #0 cmp r0, #0 beq _021E47D8 - bl ErrorHandling + bl GF_AssertFail _021E47D8: mov r1, #0 str r1, [r4, #0x18] @@ -2787,7 +2787,7 @@ _021E4976: mov r6, #0 b _021E4980 _021E497A: - bl ErrorHandling + bl GF_AssertFail mov r6, #0 _021E4980: ldr r0, [r5, #4] diff --git a/arm9/modules/05/asm/mod05_021E4AE4.s b/arm9/modules/05/asm/mod05_021E4AE4.s index b05969ea..98146a9c 100644 --- a/arm9/modules/05/asm/mod05_021E4AE4.s +++ b/arm9/modules/05/asm/mod05_021E4AE4.s @@ -76,7 +76,7 @@ MOD05_021E4B64: ; 0x021E4B64 bl MOD05_021E4D2C cmp r0, #0 beq _021E4B78 - bl ErrorHandling + bl GF_AssertFail pop {r3, r4, r5, pc} _021E4B78: add r0, r5, #0 @@ -166,7 +166,7 @@ MOD05_021E4C08: ; 0x021E4C08 bl MOD05_021E4D2C cmp r0, #0 bne _021E4C1A - bl ErrorHandling + bl GF_AssertFail mov r0, #0 pop {r3, pc} _021E4C1A: @@ -333,7 +333,7 @@ _021E4D1C: sub r4, r4, #1 bne _021E4D0E _021E4D22: - bl ErrorHandling + bl GF_AssertFail mov r0, #0 pop {r3, r4, r5, pc} .balign 4, 0 @@ -402,7 +402,7 @@ _021E4D7A: cmp r2, #0x20 bne _021E4D72 _021E4D82: - bl ErrorHandling + bl GF_AssertFail mov r0, #0 pop {r3, pc} nop @@ -454,7 +454,7 @@ MOD05_021E4DC4: ; 0x021E4DC4 bl FUN_020644E4 add r4, r0, #0 bne _021E4DDE - bl ErrorHandling + bl GF_AssertFail _021E4DDE: add r0, r4, #0 add sp, #8 @@ -566,14 +566,14 @@ MOD05_021E4E90: ; 0x021E4E90 bl FUN_0201F6E8 add r4, r0, #0 bne _021E4EC0 - bl ErrorHandling + bl GF_AssertFail _021E4EC0: cmp r4, #0 beq _021E4EDA add r0, r4, #0 bl FUN_0201F8E0 mov r1, #1 - bl FUN_020BB9F4 + bl NNS_G3dMdlSetMdlFogEnableFlagAll add r0, r4, #0 bl FUN_0201F8E0 bl MOD05_021DB5EC @@ -618,7 +618,7 @@ MOD05_021E4EFC: ; 0x021E4EFC bl FUN_02021050 add r4, r0, #0 bne _021E4F2E - bl ErrorHandling + bl GF_AssertFail _021E4F2E: add r0, r4, #0 bl FUN_020210AC @@ -638,7 +638,7 @@ _021E4F3C: bl MOD05_021E4FC8 add r4, r0, #0 bne _021E4F58 - bl ErrorHandling + bl GF_AssertFail _021E4F58: add r0, r4, #0 add sp, #0x1c @@ -700,7 +700,7 @@ _021E4FBA: add r3, #8 sub r2, r2, #1 bne _021E4FAE - bl ErrorHandling + bl GF_AssertFail pop {r3, pc} .balign 4, 0 @@ -742,7 +742,7 @@ _021E4FFC: _021E5002: cmp r4, #0 bne _021E500A - bl ErrorHandling + bl GF_AssertFail _021E500A: add r0, r4, #0 mov r1, #0 @@ -790,7 +790,7 @@ _021E505C: add r3, #8 sub r2, r2, #1 bne _021E5052 - bl ErrorHandling + bl GF_AssertFail mov r0, #0 pop {r3, pc} .balign 4, 0 @@ -884,7 +884,7 @@ MOD05_021E50D4: ; 0x021E50D4 bl FUN_02020F54 cmp r0, #0 bne _021E5106 - bl ErrorHandling + bl GF_AssertFail _021E5106: ldr r2, [r4, #0x18] add r0, r5, #0 @@ -969,7 +969,7 @@ MOD05_021E5198: ; 0x021E5198 ldr r0, [r4] add r6, r1, #0 add r5, r2, #0 - bl FUN_020BC0FC + bl NNS_G3dGetTex cmp r0, #0 beq _021E51C8 bl FUN_0201B254 @@ -979,13 +979,13 @@ MOD05_021E5198: ; 0x021E5198 ldr r1, [r0, #8] bl DC_FlushRange ldr r0, [r4] - bl FUN_020BB59C + bl NNS_G3dResDefaultSetup cmp r0, #0 bne _021E51C8 - bl ErrorHandling + bl GF_AssertFail _021E51C8: ldr r0, [r4] - bl FUN_020BC13C + bl NNS_G3dGetMdlSet ldrh r1, [r0, #0xe] add r1, r0, r1 ldr r1, [r1, #0xc] @@ -993,11 +993,11 @@ _021E51C8: str r0, [r5] cmp r5, #0 bne _021E51E0 - bl ErrorHandling + bl GF_AssertFail _021E51E0: ldr r1, [r5] add r0, r6, #0 - bl FUN_020B80B4 + bl NNS_G3dRenderObjInit pop {r4, r5, r6, pc} .balign 4, 0 @@ -1038,7 +1038,7 @@ MOD05_021E5224: ; 0x021E5224 add r2, r3, #0 bl MOD05_021E4C6C str r0, [r4] - bl FUN_020BC13C + bl NNS_G3dGetMdlSet str r0, [r4, #4] ldrh r1, [r0, #0xe] add r1, r0, r1 @@ -1046,7 +1046,7 @@ MOD05_021E5224: ; 0x021E5224 add r0, r0, r1 str r0, [r4, #8] ldr r0, [r4] - bl FUN_020BC0FC + bl NNS_G3dGetTex str r0, [r4, #0xc] cmp r0, #0 beq _021E525A @@ -1071,17 +1071,17 @@ MOD05_021E5260: ; 0x021E5260 bl MOD05_021E4C6C str r0, [r5] mov r1, #0 - bl FUN_020BC4C8 + bl NNS_G3dGetAnmByIdx str r0, [r5, #4] ldr r1, [r5, #4] ldr r2, [r4, #8] add r0, r6, #0 - bl FUN_020BB8D0 + bl NNS_G3dAllocAnmObj str r0, [r5, #8] ldr r1, [r5, #4] ldr r2, [r4, #8] ldr r3, [r4, #0xc] - bl FUN_020B8110 + bl NNS_G3dAnmObjInit pop {r4, r5, r6, pc} .balign 4, 0 diff --git a/arm9/modules/05/asm/mod05_021E55BC.s b/arm9/modules/05/asm/mod05_021E55BC.s index 43186ebe..517222fb 100644 --- a/arm9/modules/05/asm/mod05_021E55BC.s +++ b/arm9/modules/05/asm/mod05_021E55BC.s @@ -134,7 +134,7 @@ MOD05_021E569C: ; 0x021E569C bl FUN_020582A8 cmp r0, #0 bne _021E56B8 - bl ErrorHandling + bl GF_AssertFail _021E56B8: ldr r0, [r4] cmp r0, #0 @@ -207,7 +207,7 @@ _021E5716: lsl r0, r0, #0xc sub r0, r1, r0 str r0, [sp, #0x5c] - bl FUN_020B8344 + bl NNS_G3dGlbGetInvV mov r2, #0 add r5, r0, #0 add r0, sp, #0x24 diff --git a/arm9/modules/05/asm/mod05_021E577C.s b/arm9/modules/05/asm/mod05_021E577C.s index bf86c095..bad97efe 100644 --- a/arm9/modules/05/asm/mod05_021E577C.s +++ b/arm9/modules/05/asm/mod05_021E577C.s @@ -134,7 +134,7 @@ MOD05_021E585C: ; 0x021E585C bl FUN_020582A8 cmp r0, #0 bne _021E5878 - bl ErrorHandling + bl GF_AssertFail _021E5878: add r0, r5, #0 add r1, sp, #0 @@ -186,7 +186,7 @@ _021E58B2: lsl r0, r0, #0xc sub r0, r1, r0 str r0, [sp, #0x5c] - bl FUN_020B8344 + bl NNS_G3dGlbGetInvV mov r2, #0 add r5, r0, #0 add r0, sp, #0x24 diff --git a/arm9/modules/05/asm/mod05_021E5918.s b/arm9/modules/05/asm/mod05_021E5918.s index 0322f00e..8459b021 100644 --- a/arm9/modules/05/asm/mod05_021E5918.s +++ b/arm9/modules/05/asm/mod05_021E5918.s @@ -188,7 +188,7 @@ _021E5A4E: lsl r0, r0, #0xc sub r0, r1, r0 str r0, [sp, #0x5c] - bl FUN_020B8344 + bl NNS_G3dGlbGetInvV mov r2, #0 add r5, r0, #0 add r0, sp, #0x24 diff --git a/arm9/modules/05/asm/mod05_021E5AB4.s b/arm9/modules/05/asm/mod05_021E5AB4.s index ff3779f5..3b0d6a5f 100644 --- a/arm9/modules/05/asm/mod05_021E5AB4.s +++ b/arm9/modules/05/asm/mod05_021E5AB4.s @@ -131,13 +131,13 @@ MOD05_021E5B80: ; 0x021E5B80 add r0, r4, #4 ldr r1, [r2, #0x18] ldr r2, [r2, #0xc] - bl FUN_020BB8D0 + bl NNS_G3dAllocAnmObj str r0, [r4] ldr r3, [r5, #8] ldr r1, [r3, #0x18] ldr r2, [r3, #0xc] ldr r3, [r3, #0x10] - bl FUN_020B8110 + bl NNS_G3dAnmObjInit ldr r1, [r5, #8] add r0, r4, #0 add r0, #0x18 @@ -146,7 +146,7 @@ MOD05_021E5B80: ; 0x021E5B80 add r0, r4, #0 ldr r1, [r4] add r0, #0x18 - bl FUN_020B7EFC + bl NNS_G3dRenderObjAddAnmObj add r0, r6, #0 add r1, sp, #0 bl FUN_0206477C @@ -166,7 +166,7 @@ MOD05_021E5BF8: ; 0x021E5BF8 ldr r4, [r1] ldr r1, [r4] add r0, r4, #4 - bl thunk_FUN_020ae84c + bl NNS_G3dFreeAnmObj add r0, r4, #0 bl MOD05_021E4C00 pop {r4, pc} @@ -209,7 +209,7 @@ _021E5C40: bne _021E5C40 ldr r0, [r5] str r0, [r3] - bl FUN_020B8344 + bl NNS_G3dGlbGetInvV mov r2, #0 add r5, r0, #0 add r0, sp, #0x24 diff --git a/arm9/modules/05/asm/mod05_021E5C8C.s b/arm9/modules/05/asm/mod05_021E5C8C.s index ab321b6f..dc59dcec 100644 --- a/arm9/modules/05/asm/mod05_021E5C8C.s +++ b/arm9/modules/05/asm/mod05_021E5C8C.s @@ -129,13 +129,13 @@ MOD05_021E5D50: ; 0x021E5D50 add r0, r4, #4 ldr r1, [r2, #0x1c] ldr r2, [r2, #0x10] - bl FUN_020BB8D0 + bl NNS_G3dAllocAnmObj str r0, [r4] ldr r3, [r5, #8] ldr r1, [r3, #0x1c] ldr r2, [r3, #0x10] ldr r3, [r3, #0x14] - bl FUN_020B8110 + bl NNS_G3dAnmObjInit ldr r1, [r5, #8] add r0, r4, #0 add r0, #0x18 @@ -144,7 +144,7 @@ MOD05_021E5D50: ; 0x021E5D50 add r0, r4, #0 ldr r1, [r4] add r0, #0x18 - bl FUN_020B7EFC + bl NNS_G3dRenderObjAddAnmObj add r0, r6, #0 add r1, sp, #0 bl FUN_0206477C @@ -164,7 +164,7 @@ MOD05_021E5DC8: ; 0x021E5DC8 ldr r4, [r1] ldr r1, [r4] add r0, r4, #4 - bl thunk_FUN_020ae84c + bl NNS_G3dFreeAnmObj add r0, r4, #0 bl MOD05_021E4C00 pop {r4, pc} diff --git a/arm9/modules/05/asm/mod05_021E5E10.s b/arm9/modules/05/asm/mod05_021E5E10.s index e2e6814e..f5f3ef70 100644 --- a/arm9/modules/05/asm/mod05_021E5E10.s +++ b/arm9/modules/05/asm/mod05_021E5E10.s @@ -165,13 +165,13 @@ MOD05_021E5F18: ; 0x021E5F18 add r0, r4, #4 ldr r1, [r2, #0x18] ldr r2, [r2, #0xc] - bl FUN_020BB8D0 + bl NNS_G3dAllocAnmObj str r0, [r4] ldr r3, [r5, #8] ldr r1, [r3, #0x18] ldr r2, [r3, #0xc] ldr r3, [r3, #0x10] - bl FUN_020B8110 + bl NNS_G3dAnmObjInit ldr r1, [r5, #8] add r0, r4, #0 add r0, #0x18 @@ -180,7 +180,7 @@ MOD05_021E5F18: ; 0x021E5F18 add r0, r4, #0 ldr r1, [r4] add r0, #0x18 - bl FUN_020B7EFC + bl NNS_G3dRenderObjAddAnmObj add r0, r6, #0 add r1, sp, #0 bl FUN_0206477C @@ -200,7 +200,7 @@ MOD05_021E5F90: ; 0x021E5F90 ldr r4, [r1] ldr r1, [r4] add r0, r4, #4 - bl thunk_FUN_020ae84c + bl NNS_G3dFreeAnmObj add r0, r4, #0 bl MOD05_021E4C00 pop {r4, pc} diff --git a/arm9/modules/05/asm/mod05_021E5FD8.s b/arm9/modules/05/asm/mod05_021E5FD8.s index 8ce2cd0f..f341dfd8 100644 --- a/arm9/modules/05/asm/mod05_021E5FD8.s +++ b/arm9/modules/05/asm/mod05_021E5FD8.s @@ -825,7 +825,7 @@ MOD05_021E6638: ; 0x021E6638 str r0, [r4, #0x14] cmp r0, #0 bne _021E6666 - bl ErrorHandling + bl GF_AssertFail _021E6666: ldr r1, _021E6674 ; =MOD05_021E6678 add r0, r5, #0 @@ -1685,13 +1685,13 @@ MOD05_021E6CC4: ; 0x021E6CC4 ldr r0, [r5, #0x30] cmp r1, r0 bgt _021E6D2A - bl ErrorHandling + bl GF_AssertFail _021E6D2A: ldr r1, [sp, #0x10] ldr r0, [r5, #0x2c] cmp r1, r0 blt _021E6D36 - bl ErrorHandling + bl GF_AssertFail _021E6D36: mov r0, #0 str r0, [sp] @@ -1807,13 +1807,13 @@ _021E6E06: ldr r0, [r4, #0x30] cmp r1, r0 beq _021E6E12 - bl ErrorHandling + bl GF_AssertFail _021E6E12: ldr r1, [sp, #4] ldr r0, [r4, #0x2c] cmp r1, r0 beq _021E6E1E - bl ErrorHandling + bl GF_AssertFail _021E6E1E: ldr r0, [r4, #0x3c] ldr r1, [r4, #0xc] @@ -1918,13 +1918,13 @@ MOD05_021E6E90: ; 0x021E6E90 ldr r0, [r5, #0x30] cmp r1, r0 blt _021E6EFA - bl ErrorHandling + bl GF_AssertFail _021E6EFA: ldr r1, [sp, #0x10] ldr r0, [r5, #0x2c] cmp r1, r0 bgt _021E6F06 - bl ErrorHandling + bl GF_AssertFail _021E6F06: mov r0, #0 str r0, [sp] @@ -2053,13 +2053,13 @@ _021E6FEC: ldr r0, [r4, #0x30] cmp r1, r0 beq _021E6FF8 - bl ErrorHandling + bl GF_AssertFail _021E6FF8: ldr r1, [sp, #4] ldr r0, [r4, #0x2c] cmp r1, r0 beq _021E7004 - bl ErrorHandling + bl GF_AssertFail _021E7004: ldr r0, [r4, #0x3c] ldr r1, [r4, #0xc] @@ -2274,7 +2274,7 @@ _021E7198: bl FUN_0200CA44 add r4, r0, #0 bne _021E71DA - bl ErrorHandling + bl GF_AssertFail _021E71DA: add r0, r4, #0 pop {r3, r4, r5, r6, r7, pc} @@ -2397,7 +2397,7 @@ MOD05_021E72B8: ; 0x021E72B8 bl AllocFromHeapAtEnd add r4, r0, #0 bne _021E72CC - bl ErrorHandling + bl GF_AssertFail _021E72CC: add r0, r4, #0 mov r1, #0 @@ -2409,12 +2409,12 @@ _021E72CC: thumb_func_start MOD05_021E72DC MOD05_021E72DC: ; 0x021E72DC - ldr r3, _021E72E4 ; =FUN_02016A8C + ldr r3, _021E72E4 ; =FreeToHeapExplicit add r1, r0, #0 mov r0, #4 bx r3 .balign 4, 0 -_021E72E4: .word FUN_02016A8C +_021E72E4: .word FreeToHeapExplicit thumb_func_start MOD05_021E72E8 MOD05_021E72E8: ; 0x021E72E8 diff --git a/arm9/modules/05/asm/mod05_021E779C.s b/arm9/modules/05/asm/mod05_021E779C.s index ad4118ff..7c09387c 100644 --- a/arm9/modules/05/asm/mod05_021E779C.s +++ b/arm9/modules/05/asm/mod05_021E779C.s @@ -38,7 +38,7 @@ MOD05_021E77C8: ; 0x021E77C8 sub r1, r1, #1 str r1, [r0] bpl _021E77D6 - bl ErrorHandling + bl GF_AssertFail _021E77D6: pop {r3, pc} @@ -56,7 +56,7 @@ MOD05_021E77E0: ; 0x021E77E0 sub r1, r1, #1 str r1, [r0, #4] bpl _021E77EE - bl ErrorHandling + bl GF_AssertFail _021E77EE: pop {r3, pc} @@ -544,7 +544,7 @@ MOD05_021E7B78: ; 0x021E7B78 bl FUN_020582A8 cmp r0, #0 bne _021E7B94 - bl ErrorHandling + bl GF_AssertFail _021E7B94: add r0, r6, #0 add r1, sp, #0 diff --git a/arm9/modules/05/asm/mod05_021E7C00.s b/arm9/modules/05/asm/mod05_021E7C00.s index 2e968e4f..aaa4fb70 100644 --- a/arm9/modules/05/asm/mod05_021E7C00.s +++ b/arm9/modules/05/asm/mod05_021E7C00.s @@ -83,7 +83,7 @@ MOD05_021E7C80: ; 0x021E7C80 add r4, r1, #0 cmp r5, #0x20 blt _021E7C90 - bl ErrorHandling + bl GF_AssertFail _021E7C90: add r6, sp, #0 mov r3, #0 @@ -427,7 +427,7 @@ MOD05_021E7EEC: ; 0x021E7EEC add r5, r0, #0 cmp r4, #0x20 blt _021E7EFA - bl ErrorHandling + bl GF_AssertFail _021E7EFA: mov r0, #0x8c mul r0, r4 @@ -435,7 +435,7 @@ _021E7EFA: ldr r0, [r4, #4] cmp r0, #0 bne _021E7F0A - bl ErrorHandling + bl GF_AssertFail _021E7F0A: add r0, r4, #0 pop {r3, r4, r5, pc} @@ -448,14 +448,14 @@ MOD05_021E7F10: ; 0x021E7F10 add r4, r3, #0 bl MOD05_021F4BD0 ldr r0, [r0] - bl FUN_020BC13C + bl NNS_G3dGetMdlSet ldrh r1, [r0, #0xe] add r1, r0, r1 ldr r1, [r1, #0xc] add r1, r0, r1 add r0, r5, #0 str r1, [r4] - bl FUN_020B80B4 + bl NNS_G3dRenderObjInit pop {r3, r4, r5, pc} .balign 4, 0 @@ -466,18 +466,18 @@ MOD05_021E7F34: ; 0x021E7F34 add r0, r1, #0 add r4, r2, #0 add r5, r3, #0 - bl FUN_020B8474 - ldr r1, _021E7FB4 ; =UNK_021CEDD4 + bl NNS_G3dGlbSetBaseTrans + ldr r1, _021E7FB4 ; =NNS_G3dGlb + 0xBC add r0, r4, #0 bl MI_Copy36B - ldr r1, _021E7FB8 ; =UNK_021CED98 + ldr r1, _021E7FB8 ; =NNS_G3dGlb + 0x80 mov r0, #0xa4 ldr r2, [r1, #0x7c] bic r2, r0 add r0, r5, #0 str r2, [r1, #0x7c] - bl FUN_020B844C - bl FUN_020B849C + bl NNS_G3dGlbSetBaseScale + bl NNS_G3dGlbFlushP add r2, sp, #0 ldr r0, [sp, #0x1c] ldr r1, [sp, #0x18] @@ -511,7 +511,7 @@ _021E7F98: ldrh r2, [r2, #2] add r0, r7, #0 add r1, r5, #0 - bl FUN_020BAFB8 + bl NNS_G3dDraw1Mat1Shp add r0, r4, #1 lsl r0, r0, #0x18 lsr r4, r0, #0x18 @@ -522,8 +522,8 @@ _021E7F98: _021E7FB0: pop {r3, r4, r5, r6, r7, pc} nop -_021E7FB4: .word UNK_021CEDD4 -_021E7FB8: .word UNK_021CED98 +_021E7FB4: .word NNS_G3dGlb + 0xBC +_021E7FB8: .word NNS_G3dGlb + 0x80 thumb_func_start MOD05_021E7FBC MOD05_021E7FBC: ; 0x021E7FBC @@ -602,7 +602,7 @@ _021E8044: lsr r4, r1, #0x18 cmp r4, #0x20 blo _021E7FD4 - bl ErrorHandling + bl GF_AssertFail mov r0, #0x20 add sp, #0x10 pop {r3, r4, r5, r6, r7, pc} diff --git a/arm9/modules/05/asm/mod05_021E8310.s b/arm9/modules/05/asm/mod05_021E8310.s index 7a66cdcb..5bf27853 100644 --- a/arm9/modules/05/asm/mod05_021E8310.s +++ b/arm9/modules/05/asm/mod05_021E8310.s @@ -139,11 +139,11 @@ MOD05_021E8410: ; 0x021E8410 add r5, r0, #0 mov r0, #0 mov r1, #1 - bl FUN_02002E4C + bl GetFontAttribute add r4, r0, #0 mov r0, #0 mov r1, #3 - bl FUN_02002E4C + bl GetFontAttribute add r0, r4, r0 str r0, [sp, #0x14] mov r4, #0 @@ -204,7 +204,7 @@ _021E846E: add r6, r0, #0 mov r0, #0 mov r1, #2 - bl FUN_02002E4C + bl GetFontAttribute add r2, r0, #0 mov r0, #0 add r1, r6, #0 @@ -276,10 +276,10 @@ MOD05_021E84F4: ; 0x021E84F4 bl FUN_0200CB00 mov r0, #0 mov r1, #6 - bl FUN_02002E4C + bl GetFontAttribute add r1, r0, #0 ldr r0, [r4, #0x10] - bl FUN_02019620 + bl FillWindowPixelBuffer add r0, r4, #0 bl MOD05_021E8410 ldr r0, [r4, #0x10] diff --git a/arm9/modules/05/asm/module_05.s b/arm9/modules/05/asm/module_05.s index fe346300..006e8bb1 100644 --- a/arm9/modules/05/asm/module_05.s +++ b/arm9/modules/05/asm/module_05.s @@ -339,7 +339,7 @@ MOD05_021E88C0: ; 0x021E88C0 bl GX_EngineAToggleLayers ldr r1, [r4] mov r0, #4 - bl FUN_02016A8C + bl FreeToHeapExplicit pop {r4, pc} thumb_func_start MOD05_021E88E8 @@ -513,7 +513,7 @@ _021E8A42: bl MOD05_021E37A4 ldr r1, [r4, #0xc] mov r0, #4 - bl FUN_02016A8C + bl FreeToHeapExplicit add r0, r6, #0 bl FUN_0200621C _021E8A56: @@ -695,7 +695,7 @@ _021E8BC2: bl MOD05_021E37A4 ldr r1, [r4, #0xc] mov r0, #4 - bl FUN_02016A8C + bl FreeToHeapExplicit add r0, r6, #0 bl FUN_0200621C _021E8BD6: @@ -851,7 +851,7 @@ _021E8CE6: _021E8D00: ldr r1, [r4, #0xc] mov r0, #4 - bl FUN_02016A8C + bl FreeToHeapExplicit add r0, r6, #0 bl FUN_0200621C mov r0, #1 @@ -1008,7 +1008,7 @@ _021E8E1C: _021E8E36: ldr r1, [r4, #0xc] mov r0, #4 - bl FUN_02016A8C + bl FreeToHeapExplicit add r0, r6, #0 bl FUN_0200621C mov r0, #1 @@ -1256,7 +1256,7 @@ _021E8FFC: _021E9010: ldr r1, [r4, #0xc] mov r0, #4 - bl FUN_02016A8C + bl FreeToHeapExplicit add r0, r6, #0 bl FUN_0200621C mov r0, #1 @@ -1391,7 +1391,7 @@ _021E910C: _021E9120: ldr r1, [r4, #0xc] mov r0, #4 - bl FUN_02016A8C + bl FreeToHeapExplicit add r0, r6, #0 bl FUN_0200621C mov r0, #1 @@ -1794,7 +1794,7 @@ _021E944E: bl MOD05_021E37A4 ldr r1, [r7, #0xc] mov r0, #4 - bl FUN_02016A8C + bl FreeToHeapExplicit ldr r0, [sp, #0x10] bl FUN_0200621C _021E948A: @@ -2151,7 +2151,7 @@ _021E974A: bl MOD05_021E3A48 ldr r1, [r6, #0xc] mov r0, #4 - bl FUN_02016A8C + bl FreeToHeapExplicit ldr r0, [sp, #0x10] bl FUN_0200621C _021E9786: @@ -2594,7 +2594,7 @@ _021E9AF0: bl MOD05_021E3E44 ldr r1, [r7, #0xc] mov r0, #4 - bl FUN_02016A8C + bl FreeToHeapExplicit ldr r0, [sp, #0x14] bl FUN_0200621C add sp, #0x58 @@ -2737,7 +2737,7 @@ _021E9C02: bl GX_EngineAToggleLayers mov r0, #4 mov r1, #1 - bl FUN_02018FF4 + bl AllocWindows mov r1, #0x83 lsl r1, r1, #2 str r0, [r4, r1] @@ -2766,7 +2766,7 @@ _021E9C02: lsl r0, r0, #2 ldr r0, [r4, r0] mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer mov r0, #0x83 lsl r0, r0, #2 ldr r0, [r4, r0] @@ -3183,7 +3183,7 @@ _021E9FA4: ldr r1, [sp, #0x1c] mov r0, #4 ldr r1, [r1, #0xc] - bl FUN_02016A8C + bl FreeToHeapExplicit ldr r0, [sp, #0x18] bl FUN_0200621C add sp, #0x44 @@ -3594,7 +3594,7 @@ _021EA354: bl MOD05_021E3E44 ldr r1, [r5, #0xc] mov r0, #4 - bl FUN_02016A8C + bl FreeToHeapExplicit add r0, r6, #0 bl FUN_0200621C _021EA382: @@ -3709,7 +3709,7 @@ _021EA430: bl GX_EngineAToggleLayers mov r0, #4 mov r1, #1 - bl FUN_02018FF4 + bl AllocWindows mov r1, #2 lsl r1, r1, #8 str r0, [r4, r1] @@ -3738,7 +3738,7 @@ _021EA430: lsl r0, r0, #8 ldr r0, [r4, r0] mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer mov r0, #2 lsl r0, r0, #8 ldr r0, [r4, r0] @@ -4116,7 +4116,7 @@ _021EA76C: ldr r1, [sp, #0x18] mov r0, #4 ldr r1, [r1, #0xc] - bl FUN_02016A8C + bl FreeToHeapExplicit ldr r0, [sp, #0x14] bl FUN_0200621C _021EA7DE: @@ -4472,7 +4472,7 @@ _021EAA98: bl MOD05_021E3E44 ldr r1, [r4, #0xc] mov r0, #4 - bl FUN_02016A8C + bl FreeToHeapExplicit add r0, r6, #0 bl FUN_0200621C _021EAAC6: @@ -4781,7 +4781,7 @@ _021EAD1A: bl MOD05_021E3E44 ldr r1, [r6, #0xc] mov r0, #4 - bl FUN_02016A8C + bl FreeToHeapExplicit ldr r0, [sp, #0x10] bl FUN_0200621C _021EAD4C: @@ -5156,7 +5156,7 @@ _021EB01A: ldr r1, [sp, #0x14] mov r0, #4 ldr r1, [r1, #0xc] - bl FUN_02016A8C + bl FreeToHeapExplicit ldr r0, [sp, #0x10] bl FUN_0200621C _021EB04A: @@ -5380,7 +5380,7 @@ _021EB18E: str r0, [r4, #4] mov r0, #4 mov r1, #1 - bl FUN_02018FF4 + bl AllocWindows str r0, [r4] mov r3, #0 str r3, [sp] @@ -5404,7 +5404,7 @@ _021EB18E: bl FUN_02017FB4 ldr r0, [r4] mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, [r4] bl FUN_02019220 ldr r0, [r5] @@ -5586,7 +5586,7 @@ _021EB394: strb r1, [r0] ldr r1, [r5, #0xc] mov r0, #4 - bl FUN_02016A8C + bl FreeToHeapExplicit add r0, r6, #0 bl FUN_0200621C _021EB3F2: @@ -5797,7 +5797,7 @@ _021EB56C: _021EB58A: ldr r1, [r4, #0xc] mov r0, #4 - bl FUN_02016A8C + bl FreeToHeapExplicit add r0, r6, #0 bl FUN_0200621C mov r0, #1 @@ -6008,7 +6008,7 @@ _021EB720: _021EB73E: ldr r1, [r4, #0xc] mov r0, #4 - bl FUN_02016A8C + bl FreeToHeapExplicit add r0, r6, #0 bl FUN_0200621C mov r0, #1 @@ -6506,7 +6506,7 @@ _021EBB60: str r0, [r2] ldr r1, [r5, #0xc] mov r0, #4 - bl FUN_02016A8C + bl FreeToHeapExplicit add sp, #0x30 mov r0, #1 pop {r3, r4, r5, r6, r7, pc} @@ -7514,7 +7514,7 @@ _021EC37A: bl MOD05_021E3E44 ldr r1, [r5, #0xc] mov r0, #4 - bl FUN_02016A8C + bl FreeToHeapExplicit add sp, #0x4c mov r0, #1 pop {r4, r5, r6, r7, pc} @@ -7747,8 +7747,8 @@ _021EC544: cmp r0, #0 bne _021EC572 add r0, r7, #0 - bl FUN_02029EF8 - bl FUN_02029F08 + bl Sav2_Chatot_get + bl Chatot_invalidate _021EC572: add sp, #0x24 pop {r4, r5, r6, r7, pc} @@ -11065,7 +11065,7 @@ _021EDFA6: str r0, [r4] pop {r3, r4, r5, r6, r7, pc} _021EDFB6: - bl ErrorHandling + bl GF_AssertFail _021EDFBA: pop {r3, r4, r5, r6, r7, pc} @@ -11212,7 +11212,7 @@ MOD05_021EE0C0: ; 0x021EE0C0 bl NARC_ReadFromMember b _021EE0FC _021EE0E6: - bl ErrorHandling + bl GF_AssertFail mov r0, #0x10 str r0, [sp] mov r0, #0x43 @@ -11664,7 +11664,7 @@ MOD05_021EE470: ; 0x021EE470 ldr r0, [r0, r5] cmp r0, #0 beq _021EE498 - bl ErrorHandling + bl GF_AssertFail _021EE498: ldr r0, [sp, #4] mov r1, #1 @@ -11768,7 +11768,7 @@ MOD05_021EE52C: ; 0x021EE52C ldr r0, [r0] cmp r1, r0 ble _021EE560 - bl ErrorHandling + bl GF_AssertFail _021EE560: ldr r0, [r4, #0x10] ldr r1, [r0] @@ -11819,7 +11819,7 @@ _021EE5B2: ror r1, r0 add r0, r2, r1 beq _021EE5C6 - bl ErrorHandling + bl GF_AssertFail _021EE5C6: mov r0, #0 str r0, [r4, #0x18] @@ -11836,7 +11836,7 @@ _021EE5D0: ldr r0, [r2, #8] cmp r1, r0 beq _021EE5E8 - bl ErrorHandling + bl GF_AssertFail b _021EE6B0 _021EE5E8: cmp r3, r7 @@ -11887,7 +11887,7 @@ _021EE632: ror r1, r0 add r0, r2, r1 beq _021EE6A8 - bl ErrorHandling + bl GF_AssertFail b _021EE6A8 _021EE648: add r1, r5, #0 @@ -11939,7 +11939,7 @@ _021EE694: ror r1, r0 add r0, r2, r1 beq _021EE6A8 - bl ErrorHandling + bl GF_AssertFail _021EE6A8: ldrb r0, [r4, #0x1c] add r1, r5, #0 @@ -12073,7 +12073,7 @@ _021EE78C: bne _021EE7C4 sub r0, #0x10 ldr r0, [r2, r0] - bl FUN_020BC13C + bl NNS_G3dGetMdlSet add r7, r0, #0 ldrh r0, [r7, #0xe] add r0, r7, r0 @@ -12233,7 +12233,7 @@ MOD05_021EE8CC: ; 0x021EE8CC ldr r6, [sp, #0x30] cmp r0, #1 bne _021EE8E6 - bl ErrorHandling + bl GF_AssertFail _021EE8E6: add r0, r6, #0 add r1, r4, #0 @@ -12310,7 +12310,7 @@ _021EE964: bl MOD05_021EE470 cmp r0, #1 beq _021EE984 - bl ErrorHandling + bl GF_AssertFail _021EE984: add sp, #0x18 pop {r3, r4, r5, r6, r7, pc} @@ -12470,7 +12470,7 @@ _021EEA9E: mvn r4, r4 b _021EEAB4 _021EEAB0: - bl ErrorHandling + bl GF_AssertFail _021EEAB4: ldr r2, [sp, #0x10] ldr r3, [sp, #0xc] @@ -12578,7 +12578,7 @@ _021EEB7C: mvn r4, r4 b _021EEB86 _021EEB82: - bl ErrorHandling + bl GF_AssertFail _021EEB86: ldr r2, [sp, #0x10] ldr r3, [sp, #0xc] @@ -12782,7 +12782,7 @@ _021EED0A: mvn r4, r4 b _021EED14 _021EED10: - bl ErrorHandling + bl GF_AssertFail _021EED14: ldr r2, [sp, #0x10] ldr r3, [sp, #0xc] @@ -12799,7 +12799,7 @@ _021EED14: add sp, #0x14 pop {r4, r5, r6, r7, pc} _021EED32: - bl ErrorHandling + bl GF_AssertFail add sp, #0x14 pop {r4, r5, r6, r7, pc} .balign 4, 0 @@ -12954,7 +12954,7 @@ _021EEE4E: mov r0, #0 pop {r3, pc} _021EEE56: - bl ErrorHandling + bl GF_AssertFail mov r0, #0 pop {r3, pc} .balign 4, 0 @@ -13015,7 +13015,7 @@ _021EEEB8: add r0, r4, #0 pop {r3, r4, r5, pc} _021EEEC0: - bl ErrorHandling + bl GF_AssertFail mov r0, #0 _021EEEC6: pop {r3, r4, r5, pc} @@ -13084,7 +13084,7 @@ _021EEF22: lsr r6, r0, #0x18 b _021EEF62 _021EEF30: - bl ErrorHandling + bl GF_AssertFail b _021EEF62 _021EEF36: cmp r5, r0 @@ -13106,10 +13106,10 @@ _021EEF4A: lsr r6, r0, #0x18 b _021EEF62 _021EEF58: - bl ErrorHandling + bl GF_AssertFail b _021EEF62 _021EEF5E: - bl ErrorHandling + bl GF_AssertFail _021EEF62: strb r6, [r4] pop {r4, r5, r6, pc} @@ -13145,7 +13145,7 @@ _021EEF90: mov r0, #1 pop {r3, pc} _021EEF94: - bl ErrorHandling + bl GF_AssertFail mov r0, #0 pop {r3, pc} @@ -13193,7 +13193,7 @@ MOD05_021EEFD0: ; 0x021EEFD0 add r4, #0x64 cmp r0, #0 beq _021EEFEC - bl ErrorHandling + bl GF_AssertFail _021EEFEC: add r1, r5, #0 add r1, #0xa1 @@ -13290,13 +13290,13 @@ MOD05_021EF094: ; 0x021EF094 add r4, #0x64 cmp r0, #2 blo _021EF0A8 - bl ErrorHandling + bl GF_AssertFail _021EF0A8: add r0, r5, #0 bl MOD05_021EEFD0 cmp r0, #1 beq _021EF0B6 - bl ErrorHandling + bl GF_AssertFail _021EF0B6: mov r0, #0x86 ldr r2, [r4, #0x10] @@ -13694,7 +13694,7 @@ _021EF39A: mov r7, #0 b _021EF3AE _021EF3AA: - bl ErrorHandling + bl GF_AssertFail _021EF3AE: add r0, r7, #0 bl MOD05_021F3BC0 @@ -13883,8 +13883,8 @@ MOD05_021EF514: ; 0x021EF514 push {r3, r4, r5, r6, r7, lr} add r5, r0, #0 bl FUN_020162FC - bl FUN_020AF6A4 - bl FUN_020AFA30 + bl NNS_GfdResetLnkTexVramState + bl NNS_GfdResetLnkPlttVramState mov r4, #0 add r6, r5, #4 mov r7, #0x30 @@ -14073,7 +14073,7 @@ _021EF66A: mvn r0, r0 cmp r5, r0 bne _021EF676 - bl ErrorHandling + bl GF_AssertFail _021EF676: add r0, r4, #0 add r0, #0xac @@ -14309,7 +14309,7 @@ MOD05_021EF824: ; 0x021EF824 add r4, r0, #0 cmp r5, #4 blo _021EF832 - bl ErrorHandling + bl GF_AssertFail _021EF832: lsl r0, r5, #2 add r0, r4, r0 @@ -14363,7 +14363,7 @@ _021EF882: mul r0, r1 cmp r7, r0 blo _021EF898 - bl ErrorHandling + bl GF_AssertFail _021EF898: add r0, r5, #0 add r0, #0xc8 @@ -14531,23 +14531,23 @@ _021EF9B0: _021EF9B6: ldr r0, [r4, #0xc] ldr r0, [r0] - bl FUN_020BC13C + bl NNS_G3dGetMdlSet add r5, r0, #0 ldrb r0, [r5, #9] cmp r0, #1 beq _021EF9CA - bl ErrorHandling + bl GF_AssertFail _021EF9CA: ldrh r0, [r5, #0xe] add r0, r5, r0 ldr r0, [r0, #0xc] add r5, r5, r0 bne _021EF9D8 - bl ErrorHandling + bl GF_AssertFail _021EF9D8: ldr r0, [r4, #8] add r1, r5, #0 - bl FUN_020B80B4 + bl NNS_G3dRenderObjInit ldr r0, [r4, #0x18] mov r1, #1 str r1, [r0] @@ -14618,27 +14618,27 @@ MOD05_021EFA40: ; 0x021EFA40 bl FUN_0201B3A8 cmp r0, #0 bne _021EFA6A - bl ErrorHandling + bl GF_AssertFail _021EFA6A: ldr r0, [r4] - bl FUN_020BC13C + bl NNS_G3dGetMdlSet ldrb r0, [r0, #9] cmp r0, #1 beq _021EFA7A - bl ErrorHandling + bl GF_AssertFail _021EFA7A: ldr r0, [r4] - bl FUN_020BC13C + bl NNS_G3dGetMdlSet ldrh r1, [r0, #0xe] add r1, r0, r1 ldr r1, [r1, #0xc] add r4, r0, r1 bne _021EFA8E - bl ErrorHandling + bl GF_AssertFail _021EFA8E: add r0, r5, #0 add r1, r4, #0 - bl FUN_020B80B4 + bl NNS_G3dRenderObjInit add r0, r4, #0 pop {r3, r4, r5, pc} .balign 4, 0 @@ -15197,7 +15197,7 @@ MOD05_021EFEDC: ; 0x021EFEDC add r7, r0, #0 add r0, r7, #1 mov r1, #4 - bl ListMenu_ctor + bl ListMenuItems_ctor str r0, [r5] mov r0, #1 str r0, [sp] @@ -15238,7 +15238,7 @@ _021EFF2E: ldr r0, [r5] ldr r1, [r5, #8] add r2, r4, #0 - bl ListMenu_AddItem + bl ListMenuItems_AddItem _021EFF54: add r4, r4, #1 cmp r4, #0x20 @@ -15248,7 +15248,7 @@ _021EFF54: ldr r0, [r5] ldr r1, [r5, #0x3c] sub r3, #0xd - bl ListMenu_ItemFromMsgData + bl ListMenuItems_AppendFromMsgData ldr r4, _021EFFC0 ; =UNK05_021F8B4C add r3, sp, #0x14 add r2, r3, #0 @@ -15277,7 +15277,7 @@ _021EFF54: add r0, r2, #0 add r2, r1, #0 mov r3, #4 - bl FUN_020010A8 + bl ListMenuInit str r0, [r5, #4] add r0, r5, #0 add r0, #0x20 @@ -15298,7 +15298,7 @@ MOD05_021EFFC8: ; 0x021EFFC8 push {r3, r4, r5, r6, r7, lr} add r5, r0, #0 ldr r0, [r5, #4] - bl FUN_02001204 + bl ListMenu_ProcessInput add r4, r0, #0 mov r0, #1 mvn r0, r0 @@ -15366,9 +15366,9 @@ _021F0056: mov r1, #0 ldr r0, [r5, #4] add r2, r1, #0 - bl FUN_02001300 + bl DestroyListMenu ldr r0, [r5] - bl ListMenu_dtor + bl ListMenuItems_dtor mov r0, #0 pop {r3, r4, r5, r6, r7, pc} .balign 4, 0 @@ -15780,7 +15780,7 @@ _021F03A8: asr r0, r1, #4 lsl r3, r0, #1 lsl r1, r3, #1 - ldr r2, _021F0438 ; =UNK_020FFA38 + ldr r2, _021F0438 ; =FX_SinCosTable_ add r3, r3, #1 lsl r3, r3, #1 ldrsh r1, [r2, r1] @@ -15794,7 +15794,7 @@ _021F03A8: asr r0, r5, #4 lsl r2, r0, #1 lsl r1, r2, #1 - ldr r3, _021F0438 ; =UNK_020FFA38 + ldr r3, _021F0438 ; =FX_SinCosTable_ add r2, r2, #1 lsl r2, r2, #1 ldrsh r1, [r3, r1] @@ -15839,7 +15839,7 @@ _021F03A8: pop {r4, r5, r6, r7, pc} nop _021F0434: .word UNK05_021F8B6C -_021F0438: .word UNK_020FFA38 +_021F0438: .word FX_SinCosTable_ thumb_func_start MOD05_021F043C MOD05_021F043C: ; 0x021F043C @@ -15866,7 +15866,7 @@ MOD05_021F0454: ; 0x021F0454 bl FUN_0201F008 strh r0, [r5] ldrh r0, [r5] - ldr r2, _021F04F0 ; =UNK_020FFA38 + ldr r2, _021F04F0 ; =FX_SinCosTable_ asr r0, r0, #4 lsl r1, r0, #1 lsl r0, r1, #1 @@ -15909,7 +15909,7 @@ MOD05_021F0454: ; 0x021F0454 str r0, [r5, #0x1c] add r0, sp, #0 ldrh r0, [r0] - ldr r3, _021F04F0 ; =UNK_020FFA38 + ldr r3, _021F04F0 ; =FX_SinCosTable_ asr r0, r0, #4 lsl r2, r0, #1 lsl r1, r2, #1 @@ -15924,7 +15924,7 @@ MOD05_021F0454: ; 0x021F0454 add sp, #0x2c pop {r4, r5, pc} nop -_021F04F0: .word UNK_020FFA38 +_021F04F0: .word FX_SinCosTable_ _021F04F4: .word UNK05_021F8B78 thumb_func_start MOD05_021F04F8 @@ -15935,7 +15935,7 @@ MOD05_021F04F8: ; 0x021F04F8 cmp r0, #0 beq _021F0512 bne _021F0508 - bl ErrorHandling + bl GF_AssertFail _021F0508: ldr r0, [r4] bl FreeToHeap @@ -16156,7 +16156,7 @@ MOD05_021F067C: ; 0x021F067C add r5, r0, #0 cmp r5, #9 blt _021F06B6 - bl ErrorHandling + bl GF_AssertFail _021F06B6: lsl r6, r5, #2 ldr r5, _021F06EC ; UNK05_021FC4B4 @@ -16608,7 +16608,7 @@ MOD05_021F0A28: ; 0x021F0A28 add r5, r0, #0 cmp r5, #0xa blt _021F0A3E - bl ErrorHandling + bl GF_AssertFail _021F0A3E: lsl r6, r5, #2 ldr r5, _021F0A74 ; =UNK05_021FC528 @@ -17068,7 +17068,7 @@ MOD05_021F0DB4: ; 0x021F0DB4 add r5, r0, #0 cmp r5, #0xa blt _021F0DEE - bl ErrorHandling + bl GF_AssertFail _021F0DEE: lsl r6, r5, #2 ldr r5, _021F0E24 ; =UNK05_021FC500 @@ -17634,7 +17634,7 @@ MOD05_021F1234: ; 0x021F1234 str r0, [sp, #4] cmp r0, #0xc blt _021F1272 - bl ErrorHandling + bl GF_AssertFail _021F1272: mov r1, #2 ldrsb r2, [r4, r1] @@ -17886,7 +17886,7 @@ MOD05_021F1440: ; 0x021F1440 add r5, r0, #0 cmp r5, #4 blt _021F147A - bl ErrorHandling + bl GF_AssertFail _021F147A: lsl r6, r5, #2 ldr r5, _021F14B8 ; =UNK05_021FC40C @@ -18654,7 +18654,7 @@ MOD05_021F1A78: ; 0x021F1A78 ldr r0, [r4] cmp r0, #0 beq _021F1A8C - bl ErrorHandling + bl GF_AssertFail _021F1A8C: add r0, r5, #0 bl MOD06_0224A130 @@ -18671,7 +18671,7 @@ MOD05_021F1A98: ; 0x021F1A98 ldr r0, [r4] cmp r0, #0 beq _021F1AAC - bl ErrorHandling + bl GF_AssertFail _021F1AAC: add r0, r5, #0 bl MOD06_0224A6B8 @@ -18688,7 +18688,7 @@ MOD05_021F1AB8: ; 0x021F1AB8 ldr r0, [r4] cmp r0, #0 beq _021F1ACC - bl ErrorHandling + bl GF_AssertFail _021F1ACC: add r0, r5, #0 bl MOD06_0224A8D4 @@ -18705,7 +18705,7 @@ MOD05_021F1AD8: ; 0x021F1AD8 ldr r0, [r4] cmp r0, #0 beq _021F1AEC - bl ErrorHandling + bl GF_AssertFail _021F1AEC: add r0, r5, #0 bl MOD06_0224AA40 @@ -18968,7 +18968,7 @@ MOD05_021F1CB8: ; 0x021F1CB8 bl FUN_02058390 cmp r0, #0 beq _021F1CD2 - bl ErrorHandling + bl GF_AssertFail _021F1CD2: add r0, r5, #0 bl MOD05_021F1D68 @@ -19014,7 +19014,7 @@ MOD05_021F1D2C: ; 0x021F1D2C bl FUN_020587E0 cmp r0, #1 beq _021F1D3C - bl ErrorHandling + bl GF_AssertFail _021F1D3C: add r0, r4, #0 bl FUN_020583A0 @@ -19104,7 +19104,7 @@ _021F1DE4: ldr r2, [r3] cmp r2, r1 bne _021F1DDA - bl ErrorHandling + bl GF_AssertFail mov r0, #0 pop {r3, pc} .balign 4, 0 @@ -19382,7 +19382,7 @@ MOD05_021F1FE0: ; 0x021F1FE0 bl MOD05_021F21CC add r4, r0, #0 bne _021F200C - bl ErrorHandling + bl GF_AssertFail _021F200C: add r0, r6, #0 add r1, sp, #0 @@ -19393,7 +19393,7 @@ _021F200C: bl MOD05_021F2E70 add r4, r0, #0 bne _021F2026 - bl ErrorHandling + bl GF_AssertFail _021F2026: add r0, r4, #0 add sp, #0xc @@ -19567,7 +19567,7 @@ MOD05_021F2160: ; 0x021F2160 str r4, [r0] cmp r4, #0 bne _021F2180 - bl ErrorHandling + bl GF_AssertFail _021F2180: mov r0, #4 lsl r1, r6, #3 @@ -19577,7 +19577,7 @@ _021F2180: str r5, [r7] cmp r5, #0 bne _021F2196 - bl ErrorHandling + bl GF_AssertFail _021F2196: ldr r0, _021F21A8 ; =0x0000FFFF _021F2198: @@ -19600,11 +19600,11 @@ MOD05_021F21AC: ; 0x021F21AC add r1, #0xe4 ldr r1, [r1] mov r0, #4 - bl FUN_02016A8C + bl FreeToHeapExplicit add r4, #0xf4 ldr r1, [r4] mov r0, #4 - bl FUN_02016A8C + bl FreeToHeapExplicit pop {r4, pc} thumb_func_start MOD05_021F21CC @@ -19875,7 +19875,7 @@ _021F23BE: bl _021F238C add r7, r0, #0 bne _021F23D0 - bl ErrorHandling + bl GF_AssertFail _021F23D0: mov r0, #0x41 lsl r0, r0, #2 @@ -20217,7 +20217,7 @@ MOD05_021F2628: ; 0x021F2628 bl MOD05_021F25C8 cmp r0, #0 bne _021F264C - bl ErrorHandling + bl GF_AssertFail _021F264C: pop {r4, r5, r6, pc} nop @@ -20256,7 +20256,7 @@ MOD05_021F2670: ; 0x021F2670 bl MOD05_021F25C8 cmp r0, #0 bne _021F269E - bl ErrorHandling + bl GF_AssertFail _021F269E: pop {r3, r4, r5, r6, r7, pc} .balign 4, 0 @@ -20370,7 +20370,7 @@ MOD05_021F2764: ; 0x021F2764 bl MOD05_021F25C8 cmp r0, #0 bne _021F2788 - bl ErrorHandling + bl GF_AssertFail _021F2788: pop {r4, r5, r6, pc} nop @@ -20409,7 +20409,7 @@ MOD05_021F27AC: ; 0x021F27AC bl MOD05_021F25C8 cmp r0, #0 bne _021F27DA - bl ErrorHandling + bl GF_AssertFail _021F27DA: pop {r3, r4, r5, r6, r7, pc} .balign 4, 0 @@ -20523,7 +20523,7 @@ MOD05_021F28A0: ; 0x021F28A0 bl MOD05_021F25C8 cmp r0, #0 bne _021F28C4 - bl ErrorHandling + bl GF_AssertFail _021F28C4: pop {r4, r5, r6, pc} nop @@ -20586,7 +20586,7 @@ MOD05_021F2914: ; 0x021F2914 bl MOD05_021F25C8 cmp r0, #0 bne _021F2942 - bl ErrorHandling + bl GF_AssertFail _021F2942: pop {r3, r4, r5, r6, r7, pc} .balign 4, 0 @@ -21247,7 +21247,7 @@ _021F2DD0: ldr r2, [r3] cmp r2, r1 bne _021F2DC6 - bl ErrorHandling + bl GF_AssertFail mov r0, #0 pop {r3, pc} .balign 4, 0 @@ -21368,7 +21368,7 @@ MOD05_021F2E70: ; 0x021F2E70 add r0, r4, #0 bl FUN_0201F8E0 mov r1, #1 - bl FUN_020BB9F4 + bl NNS_G3dMdlSetMdlFogEnableFlagAll add r0, r4, #0 bl FUN_0201F8E0 bl MOD05_021DB5EC @@ -21557,7 +21557,7 @@ _021F301C: cmp r2, r3 blt _021F3004 _021F3024: - bl ErrorHandling + bl GF_AssertFail mov r0, #0 pop {r3, r4, r5, r6, r7, pc} _021F302C: @@ -21769,7 +21769,7 @@ MOD05_021F317C: ; 0x021F317C bl FUN_02020F54 cmp r0, #0 bne _021F31A2 - bl ErrorHandling + bl GF_AssertFail _021F31A2: add r0, r5, #0 add r1, r4, #0 @@ -21820,7 +21820,7 @@ _021F31F4: cmp r2, r6 blt _021F31DE _021F31FC: - bl ErrorHandling + bl GF_AssertFail pop {r4, r5, r6, pc} .balign 4, 0 @@ -21963,7 +21963,7 @@ _021F32EA: cmp r4, r6 blt _021F32CE _021F32F2: - bl ErrorHandling + bl GF_AssertFail pop {r4, r5, r6, pc} thumb_func_start MOD05_021F32F8 @@ -22050,7 +22050,7 @@ MOD05_021F3364: ; 0x021F3364 ldr r0, [r0] cmp r0, #0 bne _021F338A - bl ErrorHandling + bl GF_AssertFail _021F338A: ldr r0, [r4, #4] mov r1, #0 @@ -22095,7 +22095,7 @@ MOD05_021F33B4: ; 0x021F33B4 bl AllocFromHeap add r4, r0, #0 bne _021F33E2 - bl ErrorHandling + bl GF_AssertFail _021F33E2: ldr r2, [sp, #8] add r0, r4, #0 @@ -22249,7 +22249,7 @@ _021F352E: ldr r0, _021F36C8 ; =0x0000FFFF cmp r1, r0 bne _021F3538 - bl ErrorHandling + bl GF_AssertFail _021F3538: ldr r0, [sp, #0x18] ldr r1, [r4, #4] @@ -22272,7 +22272,7 @@ _021F355C: ldr r0, _021F36C8 ; =0x0000FFFF cmp r1, r0 bne _021F3566 - bl ErrorHandling + bl GF_AssertFail _021F3566: ldr r0, [sp, #0x18] ldr r1, [r4, #4] @@ -22296,14 +22296,14 @@ _021F358C: ldr r0, _021F36C8 ; =0x0000FFFF cmp r1, r0 bne _021F3596 - bl ErrorHandling + bl GF_AssertFail _021F3596: ldr r0, [sp, #0x18] ldr r1, [r4, #4] mov r2, #0 bl MOD05_021F2DB0 str r0, [r5, #0x10] - bl FUN_020BC0FC + bl NNS_G3dGetTex add r4, r0, #0 add r0, r6, #0 bl MOD05_021F2E00 @@ -22333,7 +22333,7 @@ _021F3596: str r0, [r5, #0x24] cmp r0, #0 bne _021F35EC - bl ErrorHandling + bl GF_AssertFail _021F35EC: ldr r0, [sp, #0x10] bl FUN_0201F844 @@ -22415,7 +22415,7 @@ _021F367A: bl FUN_0200CA98 add r4, r0, #0 bne _021F36B6 - bl ErrorHandling + bl GF_AssertFail _021F36B6: add r0, r4, #0 add r1, r5, #0 @@ -22536,7 +22536,7 @@ MOD05_021F37AC: ; 0x021F37AC bl AllocFromHeap add r4, r0, #0 bne _021F37BC - bl ErrorHandling + bl GF_AssertFail _021F37BC: add r2, r4, #0 mov r1, #0x10 @@ -22552,12 +22552,12 @@ _021F37C2: thumb_func_start MOD05_021F37D0 MOD05_021F37D0: ; 0x021F37D0 - ldr r3, _021F37D8 ; =FUN_02016A8C + ldr r3, _021F37D8 ; =FreeToHeapExplicit add r1, r0, #0 ldr r0, [r1] bx r3 .balign 4, 0 -_021F37D8: .word FUN_02016A8C +_021F37D8: .word FreeToHeapExplicit thumb_func_start MOD05_021F37DC MOD05_021F37DC: ; 0x021F37DC @@ -22588,7 +22588,7 @@ _021F37FC: bne _021F37F0 ldr r0, [r5] ldr r1, [r5, #0xc] - bl FUN_02016A8C + bl FreeToHeapExplicit _021F380E: pop {r3, r4, r5, pc} @@ -22606,7 +22606,7 @@ MOD05_021F3810: ; 0x021F3810 str r0, [r4, #0xc] cmp r0, #0 bne _021F382E - bl ErrorHandling + bl GF_AssertFail _021F382E: ldr r0, [r4, #0xc] mov r1, #0 @@ -23816,7 +23816,7 @@ _021F4174: lsl r0, r0, #0xc cmp r3, r0 ble _021F4180 - bl ErrorHandling + bl GF_AssertFail _021F4180: pop {r4, r5, r6, pc} .balign 4, 0 @@ -24324,7 +24324,7 @@ MOD05_021F4520: ; 0x021F4520 str r3, [sp] cmp r3, #0 bne _021F4532 - bl ErrorHandling + bl GF_AssertFail _021F4532: ldr r0, [r5] mov r4, #0 @@ -24364,7 +24364,7 @@ MOD05_021F4568: ; 0x021F4568 ldr r0, [r4] cmp r5, r0 blt _021F4578 - bl ErrorHandling + bl GF_AssertFail _021F4578: mov r0, #0x18 add r6, r5, #0 @@ -24374,7 +24374,7 @@ _021F4578: ldr r0, [r0, #0x14] cmp r0, #0 bne _021F458C - bl ErrorHandling + bl GF_AssertFail _021F458C: ldr r0, [r4, #4] add r0, r0, r6 @@ -24390,7 +24390,7 @@ MOD05_021F4594: ; 0x021F4594 add r4, r1, #0 cmp r5, r0 blt _021F45A6 - bl ErrorHandling + bl GF_AssertFail _021F45A6: mov r0, #0x18 ldr r1, [r6, #4] @@ -24438,7 +24438,7 @@ MOD05_021F45E8: ; 0x021F45E8 bl FUN_02015F34 cmp r0, #1 beq _021F45FC - bl ErrorHandling + bl GF_AssertFail _021F45FC: mov r0, #1 str r0, [r4] @@ -24455,7 +24455,7 @@ MOD05_021F4608: ; 0x021F4608 bl FUN_02015F34 cmp r0, #1 beq _021F461C - bl ErrorHandling + bl GF_AssertFail _021F461C: mov r0, #0 str r0, [r4] @@ -24470,7 +24470,7 @@ MOD05_021F4624: ; 0x021F4624 bl MOD05_021F46A8 add r4, r0, #0 bne _021F4636 - bl ErrorHandling + bl GF_AssertFail _021F4636: cmp r4, #0 beq _021F4642 @@ -24623,7 +24623,7 @@ MOD05_021F4724: ; 0x021F4724 ldr r0, [r4] cmp r0, #0 beq _021F4732 - bl ErrorHandling + bl GF_AssertFail _021F4732: mov r0, #0x31 lsl r0, r0, #4 @@ -24984,7 +24984,7 @@ MOD05_021F49AC: ; 0x021F49AC strh r1, [r7, #8] cmp r1, r0 blo _021F49E4 - bl ErrorHandling + bl GF_AssertFail _021F49E4: ldr r1, _021F4BA8 ; =0x000008A4 mov r0, #0 @@ -25006,7 +25006,7 @@ _021F49E4: str r0, [r5, r1] sub r0, r1, #4 ldr r0, [r5, r0] - bl FUN_020BC0FC + bl NNS_G3dGetTex ldr r1, _021F4BA8 ; =0x000008A4 str r0, [r5, r1] ldrh r0, [r7, #8] @@ -25014,7 +25014,7 @@ _021F49E4: beq _021F4A2C sub r0, r1, #4 ldr r0, [r5, r0] - bl FUN_020BC0FC + bl NNS_G3dGetTex ldr r1, _021F4BB0 ; =0x000008A8 str r0, [r5, r1] b _021F4A32 @@ -25028,7 +25028,7 @@ _021F4A32: bl FUN_0201B3C4 cmp r0, #0 bne _021F4A42 - bl ErrorHandling + bl GF_AssertFail _021F4A42: ldr r1, _021F4BAC ; =0x0000089C ldr r0, [r5, r1] @@ -25042,7 +25042,7 @@ _021F4A42: bl FUN_0201B3C4 cmp r0, #0 bne _021F4A62 - bl ErrorHandling + bl GF_AssertFail _021F4A62: mov r1, #0x8a lsl r1, r1, #4 @@ -25088,7 +25088,7 @@ _021F4AA6: ldr r0, [r4, #4] cmp r0, #0 beq _021F4ABE - bl ErrorHandling + bl GF_AssertFail _021F4ABE: ldr r0, [sp, #0xc] add r1, r6, #0 @@ -25099,7 +25099,7 @@ _021F4ABE: cmp r6, r0 bge _021F4AEC ldr r0, [r4, #4] - bl FUN_020BC13C + bl NNS_G3dGetMdlSet add r1, r0, #0 ldrh r2, [r1, #0xe] ldr r3, [r7, #4] @@ -25117,7 +25117,7 @@ _021F4AEC: bl FUN_0201B3A8 cmp r0, #0 bne _021F4AFE - bl ErrorHandling + bl GF_AssertFail _021F4AFE: ldr r0, [sp] ldrh r1, [r7, #8] @@ -25137,20 +25137,20 @@ _021F4B10: mov r2, #4 bl NARC_AllocAndReadWholeMember str r0, [r5, #4] - bl FUN_020BC0FC + bl NNS_G3dGetTex add r4, r0, #0 beq _021F4B46 bl FUN_0201B3C4 cmp r0, #0 bne _021F4B36 - bl ErrorHandling + bl GF_AssertFail _021F4B36: ldr r0, [r5, #4] add r1, r4, #0 bl FUN_0201B3A8 cmp r0, #0 bne _021F4B46 - bl ErrorHandling + bl GF_AssertFail _021F4B46: ldr r0, [sp, #0xc] bl NARC_dtor @@ -25211,7 +25211,7 @@ MOD05_021F4BD0: ; 0x021F4BD0 add r5, r0, #0 add r4, r1, #0 bne _021F4BDC - bl ErrorHandling + bl GF_AssertFail _021F4BDC: add r2, r4, #4 lsl r1, r5, #2 @@ -25221,7 +25221,7 @@ _021F4BDC: ldr r0, [r4, #4] cmp r0, #0 bne _021F4BF0 - bl ErrorHandling + bl GF_AssertFail _021F4BF0: add r0, r4, #4 pop {r3, r4, r5, pc} @@ -25292,7 +25292,7 @@ MOD05_021F4C74: ; 0x021F4C74 push {r4, lr} add r4, r0, #0 bne _021F4C7E - bl ErrorHandling + bl GF_AssertFail _021F4C7E: ldr r0, _021F4C84 ; =0x000008A4 ldr r0, [r4, r0] @@ -25305,7 +25305,7 @@ MOD05_021F4C88: ; 0x021F4C88 push {r4, lr} add r4, r0, #0 bne _021F4C92 - bl ErrorHandling + bl GF_AssertFail _021F4C92: ldr r0, _021F4C98 ; =0x000008A8 ldr r0, [r4, r0] @@ -25458,7 +25458,7 @@ MOD05_021F4D80: ; 0x021F4D80 add r5, r0, #0 cmp r5, #0x15 bne _021F4D96 - bl ErrorHandling + bl GF_AssertFail _021F4D96: ldr r0, [r4, #0xc] bl FUN_0202A9B0 @@ -25494,7 +25494,7 @@ MOD05_021F4DC8: ; 0x021F4DC8 add r5, r0, #0 cmp r5, #0x15 bne _021F4DDE - bl ErrorHandling + bl GF_AssertFail _021F4DDE: ldr r0, [r6, #0xc] bl FUN_0202A9B0 @@ -25525,7 +25525,7 @@ _021F4DDE: lsr r6, r0, #0x10 cmp r6, #0x64 blo _021F4E2E - bl ErrorHandling + bl GF_AssertFail _021F4E2E: cmp r6, #0x5a bhs _021F4E42 @@ -25574,7 +25574,7 @@ MOD05_021F4E7C: ; 0x021F4E7C add r4, r0, #0 cmp r4, #0x15 bne _021F4E94 - bl ErrorHandling + bl GF_AssertFail _021F4E94: add r0, r5, #0 add r0, #0xa4 @@ -25627,7 +25627,7 @@ MOD05_021F4EE4: ; 0x021F4EE4 lsr r4, r0, #0x10 cmp r4, #0x64 blo _021F4F02 - bl ErrorHandling + bl GF_AssertFail _021F4F02: cmp r6, #0 beq _021F4F2A @@ -25681,7 +25681,7 @@ MOD05_021F4F44: ; 0x021F4F44 lsr r5, r0, #0x10 cmp r5, #0x64 blo _021F4F60 - bl ErrorHandling + bl GF_AssertFail _021F4F60: cmp r5, #5 bge _021F4F6A @@ -25744,7 +25744,7 @@ MOD05_021F4FAC: ; 0x021F4FAC lsr r5, r0, #0x10 cmp r5, #0x64 blo _021F4FC8 - bl ErrorHandling + bl GF_AssertFail _021F4FC8: cmp r4, #3 bne _021F4FE8 @@ -26044,7 +26044,7 @@ MOD05_021F51D0: ; 0x021F51D0 add r5, r0, #0 cmp r5, #0x15 bne _021F51E6 - bl ErrorHandling + bl GF_AssertFail _021F51E6: ldr r0, [r4, #0xc] bl FUN_0202A9B0 @@ -26090,7 +26090,7 @@ MOD05_021F522C: ; 0x021F522C add r4, r0, #0 cmp r4, #0x15 bne _021F5242 - bl ErrorHandling + bl GF_AssertFail _021F5242: add r0, r5, #0 add r0, #0xa4 @@ -26118,9 +26118,9 @@ MOD05_021F5268: ; 0x021F5268 add r1, r2, #0 str r5, [sp] add r2, r5, #0 - bl UncompressFromNarc + bl GfGfxLoader_LoadFromNarc str r0, [r4] - bl FUN_020BC13C + bl NNS_G3dGetMdlSet str r0, [r4, #4] ldrh r1, [r0, #0xe] add r1, r0, r1 @@ -26128,7 +26128,7 @@ MOD05_021F5268: ; 0x021F5268 add r0, r0, r1 str r0, [r4, #8] ldr r0, [r4] - bl FUN_020BC0FC + bl NNS_G3dGetTex str r0, [r4, #0xc] cmp r0, #0 beq _021F52A4 @@ -26166,18 +26166,18 @@ MOD05_021F52C8: ; 0x021F52C8 beq _021F52F8 add r1, sp, #4 add r2, sp, #0 - bl FUN_020B7CF0 - ldr r1, _021F5314 ; =UNK_021064BC + bl NNS_G3dTexReleaseTexKey + ldr r1, _021F5314 ; =NNS_GfdDefaultFuncFreeTexVram ldr r0, [sp, #4] ldr r1, [r1] blx r1 - ldr r1, _021F5314 ; =UNK_021064BC + ldr r1, _021F5314 ; =NNS_GfdDefaultFuncFreeTexVram ldr r0, [sp] ldr r1, [r1] blx r1 ldr r0, [r4, #0xc] - bl FUN_020B7C58 - ldr r1, _021F5318 ; =UNK_021064C4 + bl NNS_G3dPlttReleasePlttKey + ldr r1, _021F5318 ; =NNS_GfdDefaultFuncFreePlttVram ldr r1, [r1] blx r1 _021F52F8: @@ -26196,8 +26196,8 @@ _021F5306: add sp, #8 pop {r4, pc} nop -_021F5314: .word UNK_021064BC -_021F5318: .word UNK_021064C4 +_021F5314: .word NNS_GfdDefaultFuncFreeTexVram +_021F5318: .word NNS_GfdDefaultFuncFreePlttVram thumb_func_start MOD05_021F531C MOD05_021F531C: ; 0x021F531C @@ -26211,7 +26211,7 @@ MOD05_021F531C: ; 0x021F531C ldr r3, [sp, #0x18] add r2, r6, #0 str r6, [sp] - bl UncompressFromNarc + bl GfGfxLoader_LoadFromNarc add r2, r0, #0 ldr r3, [sp, #0x1c] add r0, r5, #0 @@ -26241,7 +26241,7 @@ MOD05_021F5358: ; 0x021F5358 beq _021F5376 add r0, r1, #0 ldr r1, [r4, #8] - bl thunk_FUN_020ae84c + bl NNS_G3dFreeAnmObj ldr r0, [r4, #0x10] cmp r0, #0 bne _021F5376 @@ -26343,7 +26343,7 @@ MOD05_021F5400: ; 0x021F5400 bl memset ldr r1, [r5, #8] add r0, r4, #0 - bl FUN_020B80B4 + bl NNS_G3dRenderObjInit mov r0, #1 str r0, [r4, #0x6c] lsl r0, r0, #0xc @@ -26354,11 +26354,11 @@ MOD05_021F5400: ; 0x021F5400 thumb_func_start MOD05_021F5424 MOD05_021F5424: ; 0x021F5424 - ldr r3, _021F542C ; =FUN_020B7EFC + ldr r3, _021F542C ; =NNS_G3dRenderObjAddAnmObj ldr r1, [r1, #8] bx r3 nop -_021F542C: .word FUN_020B7EFC +_021F542C: .word NNS_G3dRenderObjAddAnmObj thumb_func_start MOD05_021F5430 MOD05_021F5430: ; 0x021F5430 @@ -26373,7 +26373,7 @@ MOD05_021F5430: ; 0x021F5430 add r0, r4, #0 add r0, #0x70 ldrh r0, [r0] - ldr r3, _021F54C8 ; =UNK_020FFA38 + ldr r3, _021F54C8 ; =FX_SinCosTable_ asr r0, r0, #4 lsl r2, r0, #1 lsl r1, r2, #1 @@ -26390,7 +26390,7 @@ MOD05_021F5430: ; 0x021F5430 add r0, r4, #0 add r0, #0x74 ldrh r0, [r0] - ldr r3, _021F54C8 ; =UNK_020FFA38 + ldr r3, _021F54C8 ; =FX_SinCosTable_ asr r0, r0, #4 lsl r2, r0, #1 lsl r1, r2, #1 @@ -26407,7 +26407,7 @@ MOD05_021F5430: ; 0x021F5430 add r0, r4, #0 add r0, #0x72 ldrh r0, [r0] - ldr r3, _021F54C8 ; =UNK_020FFA38 + ldr r3, _021F54C8 ; =FX_SinCosTable_ asr r0, r0, #4 lsl r2, r0, #1 lsl r1, r2, #1 @@ -26432,7 +26432,7 @@ _021F54C4: add sp, #0x48 pop {r4, pc} .balign 4, 0 -_021F54C8: .word UNK_020FFA38 +_021F54C8: .word FX_SinCosTable_ thumb_func_start MOD05_021F54CC MOD05_021F54CC: ; 0x021F54CC @@ -26471,17 +26471,17 @@ MOD05_021F54EC: ; 0x021F54EC add r0, r2, #0 mov r1, #0 add r6, r3, #0 - bl FUN_020BC4C8 + bl NNS_G3dGetAnmByIdx str r0, [r5, #4] ldr r1, [r5, #4] ldr r2, [r4, #8] add r0, r6, #0 - bl FUN_020BB8D0 + bl NNS_G3dAllocAnmObj str r0, [r5, #8] ldr r1, [r5, #4] ldr r2, [r4, #8] ldr r3, [r4, #0xc] - bl FUN_020B8110 + bl NNS_G3dAnmObjInit pop {r4, r5, r6, pc} thumb_func_start MOD05_021F5518 @@ -27024,7 +27024,7 @@ _021F5924: bl MOD06_0223BE70 cmp r0, #0 bne _021F5980 - bl ErrorHandling + bl GF_AssertFail b _021F5980 _021F5936: mov r0, #0xa @@ -27062,7 +27062,7 @@ _021F5978: mov r0, #1 pop {r4, r5, r6, pc} _021F597C: - bl ErrorHandling + bl GF_AssertFail _021F5980: mov r0, #0 pop {r4, r5, r6, pc} @@ -27087,7 +27087,7 @@ MOD05_021F5990: ; 0x021F5990 bl FUN_0201681C cmp r0, #1 beq _021F59B2 - bl ErrorHandling + bl GF_AssertFail _021F59B2: sub r5, r6, r5 add r0, r7, #0 @@ -27095,7 +27095,7 @@ _021F59B2: bl AllocFromHeap add r4, r0, #0 bne _021F59C4 - bl ErrorHandling + bl GF_AssertFail _021F59C4: add r0, r4, #0 mov r1, #0 @@ -27164,7 +27164,7 @@ MOD05_021F5A28: ; 0x021F5A28 str r0, [sp] cmp r0, #0 bne _021F5A40 - bl ErrorHandling + bl GF_AssertFail _021F5A40: add r0, r5, #0 add r1, r6, #0 @@ -27198,7 +27198,7 @@ MOD05_021F5A74: ; 0x021F5A74 bl MOD05_021F5B3C add r4, r0, #0 bne _021F5A82 - bl ErrorHandling + bl GF_AssertFail _021F5A82: ldr r0, [r4] bl MOD05_021F5B34 @@ -27212,7 +27212,7 @@ MOD05_021F5A90: ; 0x021F5A90 bl MOD05_021F5B3C add r4, r0, #0 bne _021F5A9E - bl ErrorHandling + bl GF_AssertFail _021F5A9E: ldr r0, [r4] pop {r4, pc} @@ -27291,7 +27291,7 @@ _021F5B26: add r4, r0, #0 cmp r4, #0 bne _021F5B30 - bl ErrorHandling + bl GF_AssertFail _021F5B30: add r0, r4, #0 pop {r4, pc} @@ -28037,7 +28037,7 @@ MOD05_021F6074: ; 0x021F6074 bl AllocFromHeapAtEnd add r4, r0, #0 bne _021F6088 - bl ErrorHandling + bl GF_AssertFail _021F6088: add r0, r4, #0 mov r1, #0 @@ -28198,7 +28198,7 @@ MOD05_021F61B0: ; 0x021F61B0 beq _021F61C6 cmp r0, #2 beq _021F61CA - bl ErrorHandling + bl GF_AssertFail _021F61C2: ldr r0, _021F61D0 ; =0x000001BD pop {r3, pc} diff --git a/arm9/modules/05/src/mod05_021E72FC.c b/arm9/modules/05/src/mod05_021E72FC.c index c24a7bd3..73fddb7e 100644 --- a/arm9/modules/05/src/mod05_021E72FC.c +++ b/arm9/modules/05/src/mod05_021E72FC.c @@ -148,7 +148,7 @@ THUMB_FUNC UnkStruct021E7358 *MOD05_021E74D4(u32 param0) UnkStruct021E7358 *res = (UnkStruct021E7358 *)AllocFromHeapAtEnd(4, param0); if (res == NULL) { - ErrorHandling(); + GF_AssertFail(); } memset((void *)res, 0, param0); return res; @@ -156,5 +156,5 @@ THUMB_FUNC UnkStruct021E7358 *MOD05_021E74D4(u32 param0) THUMB_FUNC void MOD05_021E74F8(UnkStruct021E7358 *param0) { - FUN_02016A8C(4, param0); + FreeToHeapExplicit(4, param0); } diff --git a/arm9/modules/06/asm/module_06.s b/arm9/modules/06/asm/module_06.s index d46e003b..3b86cb19 100644 --- a/arm9/modules/06/asm/module_06.s +++ b/arm9/modules/06/asm/module_06.s @@ -75,7 +75,7 @@ MOD06_02239714: ; 0x02239714 ldr r0, [r4, #0x38] cmp r0, #2 beq _02239722 - bl ErrorHandling + bl GF_AssertFail _02239722: mov r0, #3 str r0, [r4, #0x38] @@ -1124,7 +1124,7 @@ MOD06_02239F04: ; 0x02239F04 bl FUN_02058060 add r5, r0, #0 bne _02239F18 - bl ErrorHandling + bl GF_AssertFail _02239F18: add r0, r5, #0 bl FUN_02058B2C @@ -2298,7 +2298,7 @@ MOD06_0223A790: ; 0x0223A790 ldr r0, [r4, r0] cmp r0, #5 beq _0223A7A2 - bl ErrorHandling + bl GF_AssertFail _0223A7A2: add r0, r4, #0 bl FreeToHeap @@ -2339,7 +2339,7 @@ MOD06_0223A7DC: ; 0x0223A7DC ldr r0, [r4, r0] cmp r0, #2 beq _0223A7EE - bl ErrorHandling + bl GF_AssertFail _0223A7EE: mov r0, #0x4b mov r1, #3 @@ -2393,7 +2393,7 @@ MOD06_0223A828: ; 0x0223A828 str r1, [r0] mov r0, #0x11 add r2, r1, #0 - bl FUN_020BB1C0 + bl NNS_G3dGeBufferOP_N add r4, #0x40 add r0, r4, #0 bl MOD06_0223A400 @@ -2401,7 +2401,7 @@ MOD06_0223A828: ; 0x0223A828 mov r0, #0x12 add r1, sp, #0 str r2, [sp] - bl FUN_020BB1C0 + bl NNS_G3dGeBufferOP_N _0223A860: add sp, #4 pop {r3, r4, pc} @@ -3119,7 +3119,7 @@ MOD06_0223ADB4: ; 0x0223ADB4 str r0, [r4] cmp r0, #0 bne _0223ADCA - bl ErrorHandling + bl GF_AssertFail _0223ADCA: mov r0, #0 str r0, [r4, #0x24] @@ -3693,7 +3693,7 @@ MOD06_0223B20C: ; 0x0223B20C add r7, r3, #0 cmp r0, #0 beq _0223B224 - bl ErrorHandling + bl GF_AssertFail _0223B224: mov r0, #0x71 mov r1, #0 @@ -3749,7 +3749,7 @@ MOD06_0223B268: ; 0x0223B268 bl MOD06_0223B438 add r4, r0, #0 bne _0223B290 - bl ErrorHandling + bl GF_AssertFail _0223B290: mov r1, #0x73 lsl r1, r1, #2 @@ -3897,7 +3897,7 @@ MOD06_0223B378: ; 0x0223B378 add r7, r3, #0 cmp r0, #0 beq _0223B38C - bl ErrorHandling + bl GF_AssertFail _0223B38C: add r0, r5, #0 add r0, #0x7c @@ -4562,7 +4562,7 @@ MOD06_0223B814: ; 0x0223B814 ldr r0, [r4, #0x14] cmp r0, #2 beq _0223B822 - bl ErrorHandling + bl GF_AssertFail _0223B822: mov r0, #3 str r0, [r4, #0x14] @@ -5133,7 +5133,7 @@ _0223BC90: bl MOD06_0223C438 b _0223BCCC _0223BCBC: - bl ErrorHandling + bl GF_AssertFail ldr r0, [sp, #0x2c] bl FUN_02047964 add sp, #0xb4 @@ -5154,13 +5154,13 @@ _0223BCDE: bl FUN_02016B90 cmp r0, #0 bne _0223BCEC - bl ErrorHandling + bl GF_AssertFail _0223BCEC: mov r0, #0xb bl FUN_02016B90 cmp r0, #0 bne _0223BCFA - bl ErrorHandling + bl GF_AssertFail _0223BCFA: ldr r0, [sp, #0x10] cmp r0, #0 @@ -5222,7 +5222,7 @@ _0223BD2E: lsr r5, r0, #0x10 cmp r5, #0x64 blo _0223BD80 - bl ErrorHandling + bl GF_AssertFail _0223BD80: cmp r5, r6 blt _0223BD8A @@ -5570,7 +5570,7 @@ _0223C034: bl MOD06_0223C438 b _0223C06A _0223C060: - bl ErrorHandling + bl GF_AssertFail add sp, #0xac mov r0, #0 pop {r4, r5, r6, r7, pc} @@ -5583,7 +5583,7 @@ _0223C06A: bl FUN_02046A20 b _0223C07E _0223C07A: - bl ErrorHandling + bl GF_AssertFail _0223C07E: mov r0, #0 add r5, #0x74 @@ -5851,7 +5851,7 @@ _0223C2A2: bl MOD06_0223C3F4 b _0223C2DC _0223C2CC: - bl ErrorHandling + bl GF_AssertFail ldr r0, [r4] bl FUN_02047964 add sp, #0xac @@ -5867,13 +5867,13 @@ _0223C2E4: bl FUN_02016B90 cmp r0, #0 bne _0223C2F2 - bl ErrorHandling + bl GF_AssertFail _0223C2F2: mov r0, #0xb bl FUN_02016B90 cmp r0, #0 bne _0223C300 - bl ErrorHandling + bl GF_AssertFail _0223C300: ldr r0, [sp, #0x10] cmp r0, #0 @@ -6089,7 +6089,7 @@ MOD06_0223C470: ; 0x0223C470 lsr r4, r0, #0x10 cmp r4, #0x64 blo _0223C4A8 - bl ErrorHandling + bl GF_AssertFail _0223C4A8: cmp r4, #5 blo _0223C4B0 @@ -6133,7 +6133,7 @@ _0223C4EC: lsr r6, r0, #0x10 cmp r6, #0x64 blo _0223C504 - bl ErrorHandling + bl GF_AssertFail _0223C504: cmp r6, r4 bge _0223C518 @@ -6217,7 +6217,7 @@ MOD06_0223C584: ; 0x0223C584 lsr r5, r0, #0x10 cmp r5, #0x64 blo _0223C5A0 - bl ErrorHandling + bl GF_AssertFail _0223C5A0: cmp r5, r4 blo _0223C5A8 @@ -6238,7 +6238,7 @@ MOD06_0223C5AC: ; 0x0223C5AC lsr r4, r0, #0x10 cmp r4, #0x64 blo _0223C5C6 - bl ErrorHandling + bl GF_AssertFail _0223C5C6: lsl r0, r4, #0x18 lsr r0, r0, #0x18 @@ -6328,7 +6328,7 @@ MOD06_0223C648: ; 0x0223C648 lsr r4, r0, #0x10 cmp r4, #0x64 blo _0223C662 - bl ErrorHandling + bl GF_AssertFail _0223C662: lsl r0, r4, #0x18 lsr r0, r0, #0x18 @@ -6373,7 +6373,7 @@ MOD06_0223C694: ; 0x0223C694 lsr r6, r0, #0x10 cmp r6, #0x64 blo _0223C6B2 - bl ErrorHandling + bl GF_AssertFail _0223C6B2: lsl r0, r6, #0x18 lsr r0, r0, #0x18 @@ -6454,7 +6454,7 @@ _0223C72C: mov r4, #4 b _0223C734 _0223C730: - bl ErrorHandling + bl GF_AssertFail _0223C734: add r0, r4, #0 pop {r4, r5, r6, pc} @@ -6522,7 +6522,7 @@ MOD06_0223C78C: ; 0x0223C78C lsr r5, r0, #0x10 cmp r5, #2 blo _0223C7AC - bl ErrorHandling + bl GF_AssertFail _0223C7AC: cmp r5, #0 bne _0223C7C6 @@ -6543,7 +6543,7 @@ _0223C7C6: lsr r4, r0, #0x10 cmp r4, #0x19 blo _0223C7DC - bl ErrorHandling + bl GF_AssertFail _0223C7DC: lsl r0, r4, #0x18 lsr r0, r0, #0x18 @@ -6593,7 +6593,7 @@ _0223C82C: lsr r7, r0, #0x10 cmp r7, #2 blo _0223C83C - bl ErrorHandling + bl GF_AssertFail _0223C83C: cmp r7, #0 bne _0223C848 @@ -6646,7 +6646,7 @@ MOD06_0223C854: ; 0x0223C854 lsr r4, r0, #0x10 cmp r4, #3 blo _0223C8A6 - bl ErrorHandling + bl GF_AssertFail _0223C8A6: cmp r4, #0 beq _0223C8E0 @@ -6667,7 +6667,7 @@ _0223C8BE: lsr r4, r0, #0x10 cmp r4, #2 blo _0223C8D2 - bl ErrorHandling + bl GF_AssertFail _0223C8D2: cmp r4, #0 bne _0223C8E0 @@ -6691,7 +6691,7 @@ _0223C8EC: add r7, r0, #0 cmp r7, #2 bne _0223C904 - bl ErrorHandling + bl GF_AssertFail _0223C904: ldr r0, [sp, #0x24] cmp r7, r0 @@ -6731,7 +6731,7 @@ _0223C92E: bl MOD06_0223D1BC cmp r0, #0 bne _0223C95A - bl ErrorHandling + bl GF_AssertFail _0223C95A: ldr r0, [sp, #0x1c] bl FreeToHeap @@ -6780,7 +6780,7 @@ _0223C998: lsr r6, r0, #0x10 cmp r6, #3 blo _0223C9BE - bl ErrorHandling + bl GF_AssertFail _0223C9BE: cmp r6, #0 beq _0223CA28 @@ -6800,7 +6800,7 @@ _0223C9D8: mov r6, #1 b _0223C9E4 _0223C9E0: - bl ErrorHandling + bl GF_AssertFail _0223C9E4: ldr r0, [sp, #0x28] add r1, r5, #0 @@ -6825,7 +6825,7 @@ _0223C9E4: bl MOD06_0223D1BC cmp r0, #0 bne _0223CA1E - bl ErrorHandling + bl GF_AssertFail _0223CA1E: add r0, r4, #0 bl FreeToHeap @@ -6852,7 +6852,7 @@ _0223CA28: bl MOD06_0223D1BC cmp r0, #0 bne _0223CA5C - bl ErrorHandling + bl GF_AssertFail _0223CA5C: add r0, r4, #0 bl FreeToHeap @@ -6999,7 +6999,7 @@ _0223CB74: add r7, r0, #0 b _0223CB8A _0223CB86: - bl ErrorHandling + bl GF_AssertFail _0223CB8A: add r0, r5, #0 add r1, r6, #0 @@ -7048,7 +7048,7 @@ MOD06_0223CBD4: ; 0x0223CBD4 add r7, r3, #0 cmp r5, #0 bne _0223CBE8 - bl ErrorHandling + bl GF_AssertFail _0223CBE8: lsl r0, r4, #0x18 lsr r1, r0, #0x18 @@ -7197,7 +7197,7 @@ MOD06_0223CCDC: ; 0x0223CCDC lsr r6, r0, #0x10 cmp r6, #0xb blo _0223CD1A - bl ErrorHandling + bl GF_AssertFail _0223CD1A: add r0, r6, #5 lsl r0, r0, #0x18 @@ -7219,7 +7219,7 @@ _0223CD36: lsr r6, r0, #0x10 cmp r6, #2 blo _0223CD46 - bl ErrorHandling + bl GF_AssertFail _0223CD46: cmp r6, #0 beq _0223CD4C @@ -7353,7 +7353,7 @@ _0223CE32: ldr r0, [r0, r1] pop {r4, pc} _0223CE3A: - bl ErrorHandling + bl GF_AssertFail mov r0, #0 pop {r4, pc} .align 2, 0 @@ -7454,7 +7454,7 @@ MOD06_0223CED4: ; 0x0223CED4 lsr r4, r0, #0x10 cmp r4, #2 blo _0223CEFA - bl ErrorHandling + bl GF_AssertFail _0223CEFA: cmp r4, #0 bne _0223CF0E @@ -7569,7 +7569,7 @@ _0223CFAC: lsr r4, r0, #0x10 cmp r4, #2 blo _0223CFC2 - bl ErrorHandling + bl GF_AssertFail _0223CFC2: cmp r4, #0 bne _0223CFCA @@ -7705,7 +7705,7 @@ MOD06_0223D044: ; 0x0223D044 bl AddMonToParty cmp r0, #0 bne _0223D0D8 - bl ErrorHandling + bl GF_AssertFail _0223D0D8: add r0, r4, #0 bl FreeToHeap @@ -7768,7 +7768,7 @@ _0223D148: lsr r4, r0, #0x10 cmp r4, #2 blo _0223D158 - bl ErrorHandling + bl GF_AssertFail _0223D158: cmp r4, #0 bne _0223D162 @@ -7780,7 +7780,7 @@ _0223D162: bls _0223D1AA cmp r5, #0 bne _0223D16E - bl ErrorHandling + bl GF_AssertFail _0223D16E: cmp r5, #1 bhi _0223D176 @@ -7802,7 +7802,7 @@ _0223D176: lsr r4, r0, #0x10 cmp r4, r5 blo _0223D19E - bl ErrorHandling + bl GF_AssertFail _0223D19E: lsl r1, r4, #2 add r0, sp, #8 @@ -7940,7 +7940,7 @@ _0223D296: lsr r6, r0, #0x10 cmp r6, #2 blo _0223D2A6 - bl ErrorHandling + bl GF_AssertFail _0223D2A6: cmp r6, #0 bne _0223D2AE @@ -8020,7 +8020,7 @@ _0223D308: beq _0223D342 cmp r1, #8 ble _0223D338 - bl ErrorHandling + bl GF_AssertFail _0223D338: add r5, #0xa0 ldr r0, [r5] @@ -8427,7 +8427,7 @@ MOD06_0223D63C: ; 0x0223D63C mov r4, #3 add r0, r4, #0 mov r1, #0xb - bl ListMenu_ctor + bl ListMenuItems_ctor add r1, r5, #0 add r1, #0x84 str r0, [r1] @@ -8439,7 +8439,7 @@ MOD06_0223D63C: ; 0x0223D63C ldr r1, [r1] mov r2, #0xf mov r3, #2 - bl ListMenu_ItemFromMsgData + bl ListMenuItems_AppendFromMsgData add r0, r5, #0 add r1, r5, #0 add r0, #0x84 @@ -8448,7 +8448,7 @@ MOD06_0223D63C: ; 0x0223D63C ldr r1, [r1] mov r2, #0x10 mov r3, #0xe - bl ListMenu_ItemFromMsgData + bl ListMenuItems_AppendFromMsgData add r0, r5, #0 add r1, r5, #0 add r0, #0x84 @@ -8458,7 +8458,7 @@ MOD06_0223D63C: ; 0x0223D63C ldr r0, [r0] ldr r1, [r1] sub r3, #0x13 - bl ListMenu_ItemFromMsgData + bl ListMenuItems_AppendFromMsgData mov r3, #1 str r3, [sp] mov r1, #0xd @@ -8478,7 +8478,7 @@ _0223D6B8: mov r4, #2 add r0, r4, #0 mov r1, #0xb - bl ListMenu_ctor + bl ListMenuItems_ctor add r1, r5, #0 add r1, #0x84 str r0, [r1] @@ -8490,7 +8490,7 @@ _0223D6B8: ldr r1, [r1] mov r2, #0xf add r3, r4, #0 - bl ListMenu_ItemFromMsgData + bl ListMenuItems_AppendFromMsgData add r0, r5, #0 add r1, r5, #0 add r0, #0x84 @@ -8500,7 +8500,7 @@ _0223D6B8: ldr r0, [r0] ldr r1, [r1] sub r3, #0x13 - bl ListMenu_ItemFromMsgData + bl ListMenuItems_AppendFromMsgData mov r3, #1 str r3, [sp] mov r1, #0xd @@ -8618,7 +8618,7 @@ MOD06_0223D7B8: ; 0x0223D7B8 add r0, r4, #0 add r0, #0x84 ldr r0, [r0] - bl ListMenu_dtor + bl ListMenuItems_dtor add r4, #8 add r0, r4, #0 bl FUN_02019178 @@ -8879,7 +8879,7 @@ MOD06_0223D9E8: ; 0x0223D9E8 ldr r2, [r4] mov r0, #0x3e mov r3, #1 - bl FUN_0200687C + bl GfGfxLoader_LoadCharData ldr r0, _0223DA88 ; =0x00000241 ldrb r0, [r4, r0] cmp r0, #0 @@ -8894,7 +8894,7 @@ MOD06_0223D9E8: ; 0x0223D9E8 mov r0, #0x3e mov r1, #2 mov r3, #1 - bl FUN_020068C8 + bl GfGfxLoader_LoadScrnData b _0223DA3E _0223DA26: mov r0, #0 @@ -8907,7 +8907,7 @@ _0223DA26: mov r0, #0x3e mov r1, #3 mov r3, #1 - bl FUN_020068C8 + bl GfGfxLoader_LoadScrnData _0223DA3E: mov r0, #0x20 str r0, [sp] @@ -8917,7 +8917,7 @@ _0223DA3E: mov r0, #0x3e mov r1, #1 add r3, r2, #0 - bl FUN_02006930 + bl GfGfxLoader_GXLoadPal mov r0, #0 str r0, [sp] mov r3, #0xb @@ -9146,7 +9146,7 @@ _0223DC34: ldrb r0, [r5, r0] mov r1, #0xb add r0, r0, #1 - bl ListMenu_ctor + bl ListMenuItems_ctor str r0, [r5, #0x7c] mov r0, #0x8b lsl r0, r0, #2 @@ -9172,7 +9172,7 @@ _0223DC52: ldr r0, [r5, #0x7c] ldrh r2, [r2, r4] add r1, r7, #0 - bl ListMenu_AddItem + bl ListMenuItems_AddItem add r0, r7, #0 bl String_dtor mov r0, #0x8b @@ -9190,7 +9190,7 @@ _0223DC8E: ldr r0, [r5, #0x7c] ldr r1, [r1] sub r3, #0xa - bl ListMenu_ItemFromMsgData + bl ListMenuItems_AppendFromMsgData ldr r0, [sp] bl DestroyMsgData ldr r4, _0223DCEC ; =0x0224F38C @@ -9220,7 +9220,7 @@ _0223DC8E: add r0, r2, #0 add r2, r1, #0 str r5, [sp, #0x20] - bl FUN_020010A8 + bl ListMenuInit str r0, [r5, #0x78] add sp, #0x24 pop {r4, r5, r6, r7, pc} @@ -9236,7 +9236,7 @@ MOD06_0223DCF0: ; 0x0223DCF0 mov r1, #0x13 str r0, [sp, #0x10] add r6, r2, #0 - bl FUN_02001470 + bl ListMenuGetTemplateField add r4, r0, #0 cmp r6, #1 beq _0223DD0C @@ -9246,7 +9246,7 @@ _0223DD0C: add r0, r4, #0 add r0, #0x18 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer mov r1, #1 mvn r1, r1 cmp r5, r1 @@ -9328,7 +9328,7 @@ _0223DDBA: ldr r0, [sp, #0x10] add r1, #2 add r2, sp, #0x14 - bl FUN_02001448 + bl ListMenuGetScrollAndRow add r0, sp, #0x14 ldrh r0, [r0, #2] cmp r0, #0 @@ -9348,7 +9348,7 @@ _0223DDE4: _0223DDF0: ldr r0, [sp, #0x10] mov r1, #2 - bl FUN_02001470 + bl ListMenuGetTemplateField cmp r0, #7 bls _0223DE16 add r1, sp, #0x14 @@ -9383,7 +9383,7 @@ MOD06_0223DE34: ; 0x0223DE34 add r4, r1, #0 mov r1, #0x13 add r7, r2, #0 - bl FUN_02001470 + bl ListMenuGetTemplateField mov r1, #1 mvn r1, r1 add r5, r0, #0 @@ -9456,7 +9456,7 @@ MOD06_0223DED0: ; 0x0223DED0 bne _0223DF1C add r0, #0x28 mov r1, #0xf - bl FUN_02019620 + bl FillWindowPixelBuffer add r0, r5, #0 add r0, #0x28 mov r1, #1 @@ -9491,7 +9491,7 @@ _0223DF1C: mov r1, #0xf mov r2, #0 str r3, [sp, #4] - bl FUN_020196F4 + bl FillWindowPixelRect _0223DF30: mov r0, #0x10 mov r1, #0xb @@ -9558,14 +9558,14 @@ MOD06_0223DFB4: ; 0x0223DFB4 ldr r0, [r5, #0x78] mov r1, #0 add r2, #2 - bl FUN_02001448 + bl ListMenuGetScrollAndRow ldr r0, [r5, #0x78] - bl FUN_02001204 + bl ListMenu_ProcessInput add r4, r0, #0 ldr r0, [r5, #0x78] mov r1, #0 add r2, sp, #0 - bl FUN_02001448 + bl ListMenuGetScrollAndRow add r0, sp, #0 ldrh r2, [r0] ldrh r0, [r0, #2] @@ -9595,9 +9595,9 @@ _0223E006: mov r1, #0 ldr r0, [r5, #0x78] add r2, r1, #0 - bl FUN_02001300 + bl DestroyListMenu ldr r0, [r5, #0x7c] - bl ListMenu_dtor + bl ListMenuItems_dtor add r0, r5, #0 bl MOD06_0223D9C0 add r0, r5, #0 @@ -9637,7 +9637,7 @@ _0223E034: add r0, r5, #0 add r0, #0x58 mov r1, #0xf - bl FUN_02019620 + bl FillWindowPixelBuffer add r0, r5, #0 add r0, #0x18 bl FUN_02019570 @@ -9832,7 +9832,7 @@ _0223E214: add r0, r5, #0 add r0, #0x48 mov r1, #0xf - bl FUN_02019620 + bl FillWindowPixelBuffer add r0, r5, #0 add r0, #0x48 mov r1, #1 @@ -9934,7 +9934,7 @@ _0223E2C4: add r0, r4, #0 add r0, #0x58 mov r1, #0xf - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, _0223E380 ; =0x000005DC bl FUN_020054C8 add r0, r4, #0 @@ -10167,7 +10167,7 @@ MOD06_0223E4E8: ; 0x0223E4E8 add r4, r1, #0 add r0, #0x38 mov r1, #0xf - bl FUN_02019620 + bl FillWindowPixelBuffer cmp r4, #0 bne _0223E50A add r0, r5, #0 @@ -10429,7 +10429,7 @@ _0223E704: add r0, r5, #0 add r0, #0x58 mov r1, #0xf - bl FUN_02019620 + bl FillWindowPixelBuffer mov r2, #0x23 lsl r2, r2, #4 ldr r1, [r5, r2] @@ -10644,7 +10644,7 @@ _0223E88A: add r0, r5, #0 add r0, #0x58 mov r1, #0xf - bl FUN_02019620 + bl FillWindowPixelBuffer mov r2, #0x23 lsl r2, r2, #4 ldr r1, [r5, r2] @@ -11388,7 +11388,7 @@ _0223EEB8: mov r1, #0 add r0, r2, #0 add r2, r1, #0 - bl FUN_020010A8 + bl ListMenuInit ldr r1, _0223EF10 ; =0x02252420 ldr r2, [r1] str r0, [r2, #0x5c] @@ -11412,7 +11412,7 @@ MOD06_0223EF18: ; 0x0223EF18 ldr r0, [r0] cmp r0, #0 beq _0223EF28 - bl ErrorHandling + bl GF_AssertFail _0223EF28: mov r0, #4 mov r1, #0x9c @@ -11454,15 +11454,15 @@ _0223EF28: str r0, [r2, #0x7c] ldr r0, [r1] add r0, #0x20 - bl FUN_0201901C + bl InitWindow ldr r0, _0223EFF4 ; =0x02252420 ldr r0, [r0] add r0, #0x30 - bl FUN_0201901C + bl InitWindow ldr r0, _0223EFF4 ; =0x02252420 ldr r0, [r0] add r0, #0x40 - bl FUN_0201901C + bl InitWindow mov r0, #4 bl ScrStrBufs_new ldr r1, _0223EFF4 ; =0x02252420 @@ -11619,7 +11619,7 @@ MOD06_0223F0C8: ; 0x0223F0C8 mov r1, #3 add r5, r0, #0 mov r4, #0 - bl FUN_02001470 + bl ListMenuGetTemplateField cmp r0, #0 bls _0223F0F6 add r6, r4, #0 @@ -11633,7 +11633,7 @@ _0223F0DC: add r0, r5, #0 add r1, r7, #0 add r4, r4, #1 - bl FUN_02001470 + bl ListMenuGetTemplateField cmp r4, r0 blo _0223F0DC _0223F0F6: @@ -11655,7 +11655,7 @@ MOD06_0223F0F8: ; 0x0223F0F8 cmp r0, #0 beq _0223F11A add r1, sp, #0xc - bl FUN_02001448 + bl ListMenuGetScrollAndRow _0223F11A: add r0, sp, #0xc ldrh r1, [r0] @@ -11665,7 +11665,7 @@ _0223F11A: lsl r5, r5, #4 ldr r0, [r0] add r0, #0x20 - bl FUN_0201AB0C + bl GetWindowWidth lsl r0, r0, #3 sub r0, #8 lsl r0, r0, #0x10 @@ -11680,7 +11680,7 @@ _0223F11A: add r0, #0x20 mov r2, #8 lsr r3, r3, #0x10 - bl FUN_020196F4 + bl FillWindowPixelRect add r0, sp, #0xc ldrh r2, [r0] cmp r2, r4 @@ -11853,7 +11853,7 @@ _0223F2AA: mov r1, #0xf ldr r0, [r0] add r0, #0x30 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, _0223F330 ; =0x02252420 ldr r0, [r0] add r0, #0x30 @@ -11977,7 +11977,7 @@ MOD06_0223F3B8: ; 0x0223F3B8 beq _0223F450 mov r0, #0x10 mov r1, #4 - bl ListMenu_ctor + bl ListMenuItems_ctor ldr r4, _0223F454 ; =0x02252420 mov r5, #0 ldr r1, [r4] @@ -12006,7 +12006,7 @@ _0223F3E0: mov r2, #0 ldr r0, [r1, #0x64] ldr r1, [r1] - bl ListMenu_AddItem + bl ListMenuItems_AddItem add r5, r5, #1 cmp r5, #0x10 blt _0223F3E0 @@ -12074,7 +12074,7 @@ _0223F49A: ldr r0, _0223F518 ; =0x02252420 ldr r0, [r0] ldr r0, [r0, #0x5c] - bl FUN_02001204 + bl ListMenu_ProcessInput _0223F4A4: mov r1, #1 mvn r1, r1 @@ -12105,7 +12105,7 @@ _0223F4D8: add r1, r4, #0 ldr r0, [r4, #0x5c] add r1, #0x8e - bl FUN_0200143C + bl ListMenuGetCurrentItemArrayId add r0, r4, #0 add r0, #0x8e ldrh r5, [r0] @@ -12160,7 +12160,7 @@ _0223F53C: mov r2, #8 add r0, #0x20 mov r3, #0 - bl FUN_020196F4 + bl FillWindowPixelRect ldr r0, _0223F580 ; =0x02252420 mov r1, #0 ldr r0, [r0] @@ -12451,7 +12451,7 @@ MOD06_0223F7C4: ; 0x0223F7C4 cmp r0, #0 beq _0223F7E0 add r1, sp, #0xc - bl FUN_02001448 + bl ListMenuGetScrollAndRow _0223F7E0: add r0, sp, #0xc ldrh r1, [r0] @@ -12611,7 +12611,7 @@ _0223F910: mov r1, #0xf ldr r0, [r0] add r0, #0x30 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, _0223F950 ; =0x02252420 ldr r0, [r0] add r0, #0x30 @@ -12651,7 +12651,7 @@ _0223F966: ldrb r0, [r0] cmp r0, #0x11 blo _0223F982 - bl ErrorHandling + bl GF_AssertFail _0223F982: ldr r0, _0223F9D4 ; =0x02252420 ldr r0, [r0] @@ -12727,7 +12727,7 @@ _0223FA02: mov r1, #0xf ldr r0, [r0] add r0, #0x30 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, _0223FA5C ; =0x02252420 add r1, r4, #0 ldr r2, [r0] @@ -12821,7 +12821,7 @@ MOD06_0223FAB8: ; 0x0223FAB8 beq _0223FB4C mov r0, #5 mov r1, #4 - bl ListMenu_ctor + bl ListMenuItems_ctor ldr r4, _0223FB50 ; =0x02252420 mov r5, #0 ldr r1, [r4] @@ -12834,7 +12834,7 @@ _0223FAE6: ldr r0, [r1, #0x64] ldr r1, [r1, #0x74] add r3, r7, #0 - bl ListMenu_ItemFromMsgData + bl ListMenuItems_AppendFromMsgData add r5, r5, #1 cmp r5, #5 blt _0223FAE6 @@ -12966,13 +12966,13 @@ _0223FBDA: strb r0, [r2] ldr r0, [r1] ldr r0, [r0, #0x5c] - bl FUN_02001328 + bl RedrawListMenu ldr r0, _0223FCF0 ; =0x02252420 mov r1, #3 ldr r0, [r0] mov r5, #0 ldr r0, [r0, #0x5c] - bl FUN_02001470 + bl ListMenuGetTemplateField cmp r0, #0 bls _0223FC32 ldr r4, _0223FCF0 ; =0x02252420 @@ -12989,13 +12989,13 @@ _0223FC14: add r1, r7, #0 ldr r0, [r0, #0x5c] add r5, r5, #1 - bl FUN_02001470 + bl ListMenuGetTemplateField cmp r5, r0 blo _0223FC14 _0223FC32: ldr r0, [sp, #4] ldr r0, [r0, #0x5c] - bl FUN_02001204 + bl ListMenu_ProcessInput add r4, r0, #0 bl FUN_0202DF08 cmp r0, #0xff @@ -13094,7 +13094,7 @@ MOD06_0223FD08: ; 0x0223FD08 add r0, r4, #0 bl MOD06_0223F9D8 ldr r0, [r4, #0x5c] - bl FUN_02001204 + bl ListMenu_ProcessInput ldr r0, [r4, #0x60] mov r1, #4 bl FUN_020021AC @@ -13421,7 +13421,7 @@ MOD06_0223FFD4: ; 0x0223FFD4 mov r0, #0 bl FUN_02031A24 ldr r0, [r4, #0x5c] - bl FUN_02001204 + bl ListMenu_ProcessInput ldr r0, _02240020 ; =0x02252420 ldr r0, [r0] add r0, #0x94 @@ -13459,7 +13459,7 @@ MOD06_02240030: ; 0x02240030 add r0, r5, #0 bl MOD06_0223F9D8 ldr r0, [r5, #0x5c] - bl FUN_02001204 + bl ListMenu_ProcessInput ldr r0, [r5, #0x60] mov r1, #4 bl FUN_020021AC @@ -13681,7 +13681,7 @@ MOD06_02240204: ; 0x02240204 add r0, r4, #0 bl MOD06_0223F9D8 ldr r0, [r4, #0x5c] - bl FUN_02001204 + bl ListMenu_ProcessInput ldr r0, _02240248 ; =0x02252420 ldr r0, [r0] add r0, #0x94 @@ -13719,7 +13719,7 @@ MOD06_02240258: ; 0x02240258 add r0, r5, #0 bl MOD06_0223F9D8 ldr r0, [r5, #0x5c] - bl FUN_02001204 + bl ListMenu_ProcessInput ldr r0, [r5, #0x60] mov r1, #4 bl FUN_020021AC @@ -13778,7 +13778,7 @@ _022402DC: add r0, r4, #0 bl MOD06_0223F9D8 ldr r0, [r4, #0x5c] - bl FUN_02001204 + bl ListMenu_ProcessInput mov r0, #0xa bl FUN_020315D8 cmp r0, #0 @@ -13804,7 +13804,7 @@ MOD06_02240310: ; 0x02240310 add r0, r4, #0 bl MOD06_0223F9D8 ldr r0, [r4, #0x5c] - bl FUN_02001204 + bl ListMenu_ProcessInput ldr r0, _02240354 ; =0x02252420 ldr r0, [r0] add r0, #0x94 @@ -13843,17 +13843,17 @@ MOD06_02240364: ; 0x02240364 ldr r0, [r0] mov r1, #0xf add r0, #0x40 - bl FUN_02019620 + bl FillWindowPixelBuffer add r0, r4, #0 add r0, #0x20 mov r1, #0 bl FUN_0200CCF8 ldr r0, [r4, #0x64] - bl ListMenu_dtor + bl ListMenuItems_dtor mov r1, #0 ldr r0, [r4, #0x5c] add r2, r1, #0 - bl FUN_02001300 + bl DestroyListMenu add r0, r4, #0 add r0, #0x20 bl FUN_02019570 @@ -14473,7 +14473,7 @@ MOD06_02240864: ; 0x02240864 bne _0224089E add r0, r5, #0 add r0, #0x54 - bl FUN_0201901C + bl InitWindow ldr r0, [r5, #0x10] add r1, r5, #0 ldr r0, [r0, #8] @@ -14577,7 +14577,7 @@ _02240940: bne _022409D2 add r0, r6, #2 mov r1, #4 - bl ListMenu_ctor + bl ListMenuItems_ctor str r0, [r5, #8] mov r3, #1 str r3, [sp] @@ -14605,7 +14605,7 @@ _02240940: ldr r1, [r5, #0x68] mov r2, #0x7b mov r3, #0xc - bl ListMenu_ItemFromMsgData + bl ListMenuItems_AppendFromMsgData mov r4, #0 cmp r6, #0 ble _022409C4 @@ -14625,7 +14625,7 @@ _02240998: ldr r0, [r5, #8] ldr r1, [r5, #0x20] add r2, r4, #0 - bl ListMenu_AddItem + bl ListMenuItems_AddItem add r4, r4, #1 cmp r4, r6 blt _02240998 @@ -14635,7 +14635,7 @@ _022409C4: ldr r0, [r5, #8] ldr r1, [r5, #0x68] sub r3, #0x74 - bl ListMenu_ItemFromMsgData + bl ListMenuItems_AppendFromMsgData _022409D2: ldr r4, _02240A24 ; =0x0224F704 add r3, sp, #0x14 @@ -14666,7 +14666,7 @@ _022409D2: add r2, #0x78 ldrh r2, [r2] mov r3, #4 - bl FUN_020010A8 + bl ListMenuInit str r0, [r5] add r5, #0x34 add r0, r5, #0 @@ -14686,7 +14686,7 @@ MOD06_02240A28: ; 0x02240A28 beq _02240A62 mov r1, #0 add r2, r1, #0 - bl FUN_02001300 + bl DestroyListMenu add r0, r4, #0 add r0, #0x34 mov r1, #1 @@ -14700,7 +14700,7 @@ MOD06_02240A28: ; 0x02240A28 add r0, #0x34 bl FUN_02019178 ldr r0, [r4, #8] - bl ListMenu_dtor + bl ListMenuItems_dtor mov r0, #0 str r0, [r4] _02240A62: @@ -14711,20 +14711,20 @@ MOD06_02240A64: ; 0x02240A64 push {r4, r5, r6, lr} add r5, r0, #0 ldr r0, [r5] - bl FUN_02001204 + bl ListMenu_ProcessInput add r4, r0, #0 add r2, r5, #0 ldr r0, [r5] mov r1, #0 add r2, #0x78 - bl FUN_02001448 + bl ListMenuGetScrollAndRow add r0, r5, #0 add r0, #0x80 ldrh r6, [r0] add r1, r5, #0 ldr r0, [r5] add r1, #0x80 - bl FUN_0200143C + bl ListMenuGetCurrentItemArrayId add r0, r5, #0 add r0, #0x80 ldrh r0, [r0] @@ -14792,7 +14792,7 @@ MOD06_02240B04: ; 0x02240B04 mov r0, #3 mov r1, #4 ldr r4, _02240BA8 ; =MOD6_022522E4 - bl ListMenu_ctor + bl ListMenuItems_ctor str r0, [r5, #0xc] mov r0, #0xa str r0, [sp] @@ -14823,7 +14823,7 @@ _02240B4A: ldr r1, [r5, #0x68] ldr r2, [r4] ldr r3, [r4, #4] - bl ListMenu_ItemFromMsgData + bl ListMenuItems_AppendFromMsgData add r6, r6, #1 add r4, #8 cmp r6, #3 @@ -14855,7 +14855,7 @@ _02240B4A: add r2, #0x7a ldrh r2, [r2] mov r3, #4 - bl FUN_020010A8 + bl ListMenuInit str r0, [r5, #4] add r5, #0x44 add r0, r5, #0 @@ -14873,20 +14873,20 @@ MOD06_02240BB8: ; 0x02240BB8 push {r4, r5, r6, lr} add r5, r0, #0 ldr r0, [r5, #4] - bl FUN_02001204 + bl ListMenu_ProcessInput add r4, r0, #0 add r2, r5, #0 ldr r0, [r5, #4] mov r1, #0 add r2, #0x7a - bl FUN_02001448 + bl ListMenuGetScrollAndRow add r0, r5, #0 add r0, #0x82 ldrh r6, [r0] add r1, r5, #0 ldr r0, [r5, #4] add r1, #0x82 - bl FUN_0200143C + bl ListMenuGetCurrentItemArrayId add r0, r5, #0 add r0, #0x82 ldrh r0, [r0] @@ -14921,7 +14921,7 @@ _02240C1A: beq _02240C50 mov r1, #0 add r2, r1, #0 - bl FUN_02001300 + bl DestroyListMenu add r0, r5, #0 add r0, #0x44 mov r1, #1 @@ -14935,7 +14935,7 @@ _02240C1A: add r0, #0x44 bl FUN_02019178 ldr r0, [r5, #0xc] - bl ListMenu_dtor + bl ListMenuItems_dtor mov r0, #0 str r0, [r5, #4] _02240C50: @@ -14992,7 +14992,7 @@ MOD06_02240C58: ; 0x02240C58 bl FUN_0200CCA4 ldr r0, [sp, #0x24] mov r1, #0xf - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, [sp, #0x14] add r1, r0, #0 add r1, #0x78 @@ -15741,7 +15741,7 @@ _022412C8: strb r0, [r5] pop {r4, r5, pc} _022412DC: - bl ErrorHandling + bl GF_AssertFail _022412E0: add sp, #0x2c pop {r4, r5, pc} @@ -15994,7 +15994,7 @@ _022414DA: str r0, [r5] b _02241580 _022414E6: - bl ErrorHandling + bl GF_AssertFail b _02241580 _022414EC: add r4, #0xa0 @@ -16251,7 +16251,7 @@ _022416EA: str r7, [sp, #0xc] b _02241702 _022416F6: - bl ErrorHandling + bl GF_AssertFail mov r5, #0 mov r6, #1 add r7, r6, #0 @@ -16360,7 +16360,7 @@ _022417E4: mov r5, #2 b _022417F4 _022417F0: - bl ErrorHandling + bl GF_AssertFail _022417F4: add r0, r6, #0 add r1, r7, #0 @@ -16460,7 +16460,7 @@ _022418D0: lsl r4, r4, #0x10 b _022418DC _022418D6: - bl ErrorHandling + bl GF_AssertFail mov r4, #0 _022418DC: add r0, r5, #0 @@ -17241,7 +17241,7 @@ _02241F00: str r0, [r4] b _02241F2E _02241F2A: - bl ErrorHandling + bl GF_AssertFail _02241F2E: ldr r0, [r6, #0x38] ldr r1, [sp, #4] @@ -17393,7 +17393,7 @@ _0224205A: bl FUN_0205ADDC b _02242072 _0224206E: - bl ErrorHandling + bl GF_AssertFail _02242072: ldr r0, [sp] add r1, sp, #0x10 @@ -17553,7 +17553,7 @@ _022421AA: bl FUN_0205ADDC b _022421C2 _022421BE: - bl ErrorHandling + bl GF_AssertFail _022421C2: ldr r0, [sp] add r1, sp, #0x10 @@ -17886,7 +17886,7 @@ MOD06_02242458: ; 0x02242458 lsr r5, r0, #0x18 cmp r5, #3 bls _02242478 - bl ErrorHandling + bl GF_AssertFail _02242478: ldr r1, _02242498 ; =0x0224FC00 lsl r0, r5, #0xa @@ -17897,7 +17897,7 @@ _02242478: lsl r0, r0, #0xa cmp r4, r0 blt _0224248E - bl ErrorHandling + bl GF_AssertFail _0224248E: ldrb r1, [r5, r4] ldr r0, [sp, #0x10] @@ -18344,7 +18344,7 @@ _022427DC: str r0, [r4] b _022427FE _022427FA: - bl ErrorHandling + bl GF_AssertFail _022427FE: add r0, r6, #0 add r1, sp, #0 @@ -18399,7 +18399,7 @@ _0224285C: mov r0, #0xd pop {r3, pc} _02242860: - bl ErrorHandling + bl GF_AssertFail mov r0, #0 pop {r3, pc} @@ -18423,7 +18423,7 @@ _02242882: add r7, r2, #0 b _0224288A _02242886: - bl ErrorHandling + bl GF_AssertFail _0224288A: ldrb r0, [r5, #7] mov r4, #0 @@ -18431,7 +18431,7 @@ _0224288A: lsr r0, r0, #0x1e cmp r0, #3 bls _0224289A - bl ErrorHandling + bl GF_AssertFail _0224289A: ldrb r0, [r5, #7] lsl r0, r0, #0x1e @@ -18442,7 +18442,7 @@ _0224289A: asr r4, r0, #0x10 cmp r6, #3 bls _022428B0 - bl ErrorHandling + bl GF_AssertFail _022428B0: lsl r0, r6, #0x1e asr r1, r0, #0x10 @@ -18462,7 +18462,7 @@ _022428C4: asr r4, r0, #0x10 b _022428D4 _022428D0: - bl ErrorHandling + bl GF_AssertFail _022428D4: str r4, [r7] pop {r3, r4, r5, r6, r7, pc} @@ -18719,7 +18719,7 @@ _02242AAA: asr r0, r0, #0x18 b _02242ACE _02242AC8: - bl ErrorHandling + bl GF_AssertFail pop {r3, r4, r5, r6, r7, pc} _02242ACE: str r0, [r6] @@ -18829,7 +18829,7 @@ _02242B96: add r6, r0, #0 b _02242B9E _02242B9A: - bl ErrorHandling + bl GF_AssertFail _02242B9E: ldr r0, [r6] lsl r0, r0, #0x10 @@ -18885,7 +18885,7 @@ MOD06_02242BE0: ; 0x02242BE0 bl AllocFromHeap add r4, r0, #0 bne _02242C0E - bl ErrorHandling + bl GF_AssertFail add sp, #8 pop {r3, r4, r5, r6, r7, pc} _02242C0E: @@ -19028,7 +19028,7 @@ MOD06_02242CDC: ; 0x02242CDC mov r1, #0 add r2, r5, #0 mov r3, #4 - bl FUN_020010A8 + bl ListMenuInit add r4, #0x88 str r0, [r4] add sp, #0x14 @@ -19219,13 +19219,13 @@ MOD06_02242E9C: ; 0x02242E9C mov r1, #3 mov r2, #0xf mov r3, #4 - bl FUN_020013E8 + bl ListMenuOverrideSetColors pop {r3, pc} _02242EB2: mov r1, #1 mov r2, #0xf mov r3, #2 - bl FUN_020013E8 + bl ListMenuOverrideSetColors pop {r3, pc} .align 2, 0 @@ -19287,7 +19287,7 @@ MOD06_02242F1C: ; 0x02242F1C add r4, r0, #0 add r0, #0x88 ldr r0, [r0] - bl FUN_02001204 + bl ListMenu_ProcessInput mov r1, #1 mvn r1, r1 cmp r0, r1 @@ -19331,7 +19331,7 @@ _02242F6E: add r0, r4, #0 add r0, #0x88 ldr r0, [r0] - bl FUN_02001204 + bl ListMenu_ProcessInput mov r1, #1 mvn r1, r1 cmp r0, r1 @@ -19439,7 +19439,7 @@ MOD06_02243024: ; 0x02243024 mov r1, #0 ldr r0, [r0] add r2, r1, #0 - bl FUN_02001300 + bl DestroyListMenu ldr r0, [r6, #0x74] mov r1, #0 bl FUN_0200CCF8 @@ -19480,7 +19480,7 @@ MOD06_02243080: ; 0x02243080 add r0, r5, #0 add r0, #0x14 mov r1, #0xf - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, [r5, #0x54] ldr r1, [sp, #0xc] add r2, r4, #0 @@ -20044,7 +20044,7 @@ MOD06_022434BC: ; 0x022434BC ldr r0, [r4] cmp r0, #0 beq _022434CA - bl ErrorHandling + bl GF_AssertFail _022434CA: mov r0, #0 str r0, [r4] @@ -20265,7 +20265,7 @@ MOD06_02243694: ; 0x02243694 ldr r0, _022436C0 ; =0x12345678 cmp r1, r0 beq _022436A6 - bl ErrorHandling + bl GF_AssertFail _022436A6: ldr r2, _022436C4 ; =0x000008CC ldr r5, [r4, #4] @@ -22907,7 +22907,7 @@ MOD06_02244AEC: ; 0x02244AEC ldrb r0, [r0, #0x10] cmp r0, #4 bls _02244B18 - bl ErrorHandling + bl GF_AssertFail _02244B18: add r0, sp, #0x80 ldrb r6, [r0, #0x10] @@ -23537,11 +23537,11 @@ MOD06_02244F84: ; 0x02244F84 add r7, r0, #0 add r0, r5, #0 mov r1, #1 - bl FUN_020B1A14 + bl NNS_G2dGetImageLocation str r0, [sp] add r0, r7, #0 mov r1, #1 - bl FUN_020B19C4 + bl NNS_G2dGetImagePaletteLocation mov r1, #0x32 add r5, r0, #0 add r0, r4, #0 @@ -23683,7 +23683,7 @@ _02245098: lsr r4, r0, #0x10 cmp r4, #0xc blo _02245104 - bl ErrorHandling + bl GF_AssertFail _02245104: lsl r1, r4, #2 add r0, sp, #4 @@ -23716,7 +23716,7 @@ _02245132: lsr r6, r0, #0x10 cmp r6, #0x24 blo _02245148 - bl ErrorHandling + bl GF_AssertFail _02245148: lsl r0, r6, #0x18 lsr r2, r0, #0x16 @@ -23962,7 +23962,7 @@ _02245302: str r0, [r5, #0x10] b _02245316 _02245312: - bl ErrorHandling + bl GF_AssertFail _02245316: ldr r0, [sp] str r0, [r5, #8] @@ -24040,7 +24040,7 @@ _02245392: ldr r1, [r5, #0x2c] bl MOD05_021F4BD0 ldr r0, [r0] - bl FUN_020BC13C + bl NNS_G3dGetMdlSet ldrh r1, [r0, #0xe] add r1, r0, r1 ldr r1, [r1, #0xc] @@ -24454,7 +24454,7 @@ _022456DC: mov r4, #5 b _022456E4 _022456E0: - bl ErrorHandling + bl GF_AssertFail _022456E4: add r0, r4, #0 pop {r4, pc} @@ -24553,7 +24553,7 @@ _02245790: str r0, [r1] b _022457A0 _0224579C: - bl ErrorHandling + bl GF_AssertFail _022457A0: mov r0, #0 pop {r3, pc} @@ -24589,7 +24589,7 @@ MOD06_022457CC: ; 0x022457CC add r5, r0, #0 cmp r4, #3 blo _022457DC - bl ErrorHandling + bl GF_AssertFail _022457DC: ldr r0, [r5, #0xc] bl FUN_0202A9B0 @@ -24611,7 +24611,7 @@ MOD06_022457F8: ; 0x022457F8 add r5, r0, #0 cmp r4, #3 blo _02245808 - bl ErrorHandling + bl GF_AssertFail _02245808: ldr r0, [r5, #0xc] bl FUN_0202A9B0 @@ -25141,7 +25141,7 @@ _02245BF2: cmp r2, r5 blt _02245BB6 _02245BFA: - bl ErrorHandling + bl GF_AssertFail add sp, #0x14 pop {r4, r5, r6, r7, pc} .align 2, 0 @@ -25173,7 +25173,7 @@ _02245C2A: cmp r2, r3 blt _02245C18 _02245C32: - bl ErrorHandling + bl GF_AssertFail pop {r4, r5, r6, pc} thumb_func_start MOD06_02245C38 @@ -25203,7 +25203,7 @@ _02245C5E: cmp r2, r3 blt _02245C4C _02245C66: - bl ErrorHandling + bl GF_AssertFail pop {r4, r5, r6, pc} thumb_func_start MOD06_02245C6C @@ -25262,7 +25262,7 @@ _02245CCC: cmp r2, r5 blt _02245C8E _02245CD4: - bl ErrorHandling + bl GF_AssertFail add sp, #0x18 pop {r3, r4, r5, r6, r7, pc} @@ -25293,7 +25293,7 @@ _02245D02: cmp r2, r3 blt _02245CF0 _02245D0A: - bl ErrorHandling + bl GF_AssertFail pop {r4, r5, r6, pc} thumb_func_start MOD06_02245D10 @@ -25323,7 +25323,7 @@ _02245D36: cmp r2, r3 blt _02245D24 _02245D3E: - bl ErrorHandling + bl GF_AssertFail pop {r4, r5, r6, pc} thumb_func_start MOD06_02245D44 @@ -25381,7 +25381,7 @@ _02245DA2: cmp r2, r5 blt _02245D66 _02245DAA: - bl ErrorHandling + bl GF_AssertFail add sp, #0x14 pop {r4, r5, r6, r7, pc} .align 2, 0 @@ -25441,7 +25441,7 @@ _02245E12: cmp r2, r5 blt _02245DD6 _02245E1A: - bl ErrorHandling + bl GF_AssertFail add sp, #0x14 pop {r4, r5, r6, r7, pc} .align 2, 0 @@ -25510,7 +25510,7 @@ _02245E3E: bl FUN_0201FF84 add r4, r0, #0 bne _02245EA6 - bl ErrorHandling + bl GF_AssertFail _02245EA6: add r0, r4, #0 add sp, #0x70 @@ -28280,7 +28280,7 @@ _02247392: bl FUN_0201FF84 add r4, r0, #0 bne _022473BE - bl ErrorHandling + bl GF_AssertFail _022473BE: add r0, r4, #0 add sp, #0x70 @@ -28438,7 +28438,7 @@ _022474E4: _022474EC: cmp r5, #4 blt _022474F4 - bl ErrorHandling + bl GF_AssertFail _022474F4: mov r0, #0x72 mov r5, #0 @@ -28474,7 +28474,7 @@ _02247528: _02247530: cmp r5, #4 blt _02247538 - bl ErrorHandling + bl GF_AssertFail _02247538: add r0, r6, #0 bl NARC_dtor @@ -28490,7 +28490,7 @@ MOD06_02247544: ; 0x02247544 bl NARC_AllocAndReadWholeMember add r1, r5, #0 add r4, r0, #0 - bl FUN_020B0138 + bl NNS_G2dGetUnpackedPaletteData ldr r1, [r5] mov r0, #3 ldr r1, [r1, #0xc] @@ -28513,7 +28513,7 @@ MOD06_0224756C: ; 0x0224756C bl NARC_AllocAndReadWholeMember add r1, r4, #0 add r6, r0, #0 - bl FUN_020B0088 + bl NNS_G2dGetUnpackedCharacterData ldr r3, [r4] mov r0, #0 str r0, [sp] @@ -28551,7 +28551,7 @@ MOD06_022475A4: ; 0x022475A4 bl NARC_AllocAndReadWholeMember add r1, r4, #0 add r6, r0, #0 - bl FUN_020B0180 + bl NNS_G2dGetUnpackedScreenData ldr r3, [r4] add r0, r5, #0 add r2, r3, #0 @@ -28656,7 +28656,7 @@ MOD06_0224767C: ; 0x0224767C ldr r0, [r4, r0] cmp r0, #0 beq _0224768E - bl ErrorHandling + bl GF_AssertFail _0224768E: ldr r0, _022476A0 ; =MOD06_022476D4 add r1, r4, #0 @@ -28678,7 +28678,7 @@ MOD06_022476A4: ; 0x022476A4 ldr r0, [r4, r0] cmp r0, #0 bne _022476B6 - bl ErrorHandling + bl GF_AssertFail _022476B6: mov r0, #0x86 lsl r0, r0, #2 @@ -28805,7 +28805,7 @@ MOD06_0224778C: ; 0x0224778C bl AllocFromHeap add r4, r0, #0 bne _022477A8 - bl ErrorHandling + bl GF_AssertFail _022477A8: mov r1, #0 add r0, r6, #0 @@ -28870,7 +28870,7 @@ MOD06_02247808: ; 0x02247808 bl FUN_020094F0 bl FUN_02009C5C mov r1, #1 - bl FUN_020B1A14 + bl NNS_G2dGetImageLocation mov r1, #0x32 add r5, r0, #0 add r0, r4, #0 @@ -28923,7 +28923,7 @@ MOD06_02247860: ; 0x02247860 add r1, r6, #0 bl FUN_02009E54 mov r1, #1 - bl FUN_020B19C4 + bl NNS_G2dGetImagePaletteLocation add r5, r0, #0 add r0, r4, #0 mov r1, #0x20 @@ -28974,7 +28974,7 @@ _022478E6: _022478EE: cmp r0, #4 blt _022478F6 - bl ErrorHandling + bl GF_AssertFail _022478F6: mov r0, #0x1a lsl r0, r0, #4 @@ -29011,7 +29011,7 @@ _02247930: _02247938: cmp r0, #3 blt _02247940 - bl ErrorHandling + bl GF_AssertFail _02247940: mov r0, #0x69 lsl r0, r0, #2 @@ -29048,7 +29048,7 @@ _0224797A: _02247982: cmp r0, #4 blt _0224798A - bl ErrorHandling + bl GF_AssertFail _0224798A: pop {r3, r4, r5, pc} @@ -30697,7 +30697,7 @@ MOD06_02248634: ; 0x02248634 bl AllocFromHeapAtEnd add r4, r0, #0 bne _02248644 - bl ErrorHandling + bl GF_AssertFail _02248644: add r0, r4, #0 mov r1, #0 @@ -30891,7 +30891,7 @@ _022487AC: lsr r4, r0, #0x10 cmp r4, #0x64 blo _022487C4 - bl ErrorHandling + bl GF_AssertFail _022487C4: cmp r4, #0x1e bhs _022487D2 @@ -30973,7 +30973,7 @@ MOD06_0224884C: ; 0x0224884C add r5, r0, #0 cmp r6, #4 blo _0224885C - bl ErrorHandling + bl GF_AssertFail _0224885C: add r0, r5, #0 mov r1, #0x14 @@ -30992,7 +30992,7 @@ _0224886C: mov r0, #0x73 add r1, r6, #0 add r3, r5, #0 - bl UncompressFromNarc + bl GfGfxLoader_LoadFromNarc str r0, [r4] str r5, [r4, #0x10] str r6, [r4, #0xc] @@ -31284,7 +31284,7 @@ CreateInGameTradeMon: ; 0x022489D4 bl MonIsShiny cmp r0, #0 beq _02248B08 - bl ErrorHandling + bl GF_AssertFail _02248B08: add sp, #0x14 pop {r4, r5, r6, r7, pc} @@ -31596,7 +31596,7 @@ MOD06_02248D00: ; 0x02248D00 cmp r4, #9 blo _02248D5A _02248D56: - bl ErrorHandling + bl GF_AssertFail _02248D5A: add r0, r4, #0 add sp, #0xc @@ -31619,7 +31619,7 @@ MOD06_02248D60: ; 0x02248D60 ldrb r0, [r0] cmp r0, #5 blo _02248D84 - bl ErrorHandling + bl GF_AssertFail _02248D84: add r0, sp, #4 ldrb r0, [r0] @@ -31983,7 +31983,7 @@ MOD06_02249018: ; 0x02249018 add r4, r0, #0 cmp r4, #8 bls _02249028 - bl ErrorHandling + bl GF_AssertFail _02249028: ldr r2, _02249034 ; =0x02251738 sub r1, r4, #1 @@ -32019,7 +32019,7 @@ _0224905E: ; jump table .short _02249096 - _0224905E - 2 ; case 2 .short _0224909A - _0224905E - 2 ; case 3 _02249066: - bl ErrorHandling + bl GF_AssertFail _0224906A: bl GF_RTC_GetTimeOfDay cmp r0, #0 @@ -32286,12 +32286,12 @@ _02249244: ldr r0, [sp, #4] cmp r0, #0 bne _02249254 - bl ErrorHandling + bl GF_AssertFail _02249254: ldr r0, [sp, #4] cmp r0, #0xc bls _0224925E - bl ErrorHandling + bl GF_AssertFail _0224925E: ldr r0, [sp, #4] ldr r3, _022492A8 ; =0x0225181C @@ -32641,12 +32641,12 @@ MOD06_022494E4: ; 0x022494E4 ldr r0, [r5, r0] mov r1, #1 lsl r2, r2, #0x10 - bl FUN_020BC02C + bl NNSi_G3dModifyPolygonAttrMask mov r0, #0x49 lsl r0, r0, #2 ldr r0, [r5, r0] add r1, r4, #0 - bl FUN_020BBA34 + bl NNS_G3dMdlSetMdlAlphaAll pop {r3, r4, r5, pc} thumb_func_start MOD06_02249508 @@ -33786,7 +33786,7 @@ _02249DD6: _02249DEC: cmp r4, #0 bne _02249DF4 - bl ErrorHandling + bl GF_AssertFail _02249DF4: add r0, r4, #0 pop {r3, r4, r5, pc} @@ -33846,7 +33846,7 @@ _02249E40: _02249E52: cmp r4, #0 bne _02249E5A - bl ErrorHandling + bl GF_AssertFail _02249E5A: add r0, r4, #0 pop {r4, pc} @@ -34087,10 +34087,10 @@ _0224A000: ldr r0, [r4, #0x18] mov r1, #1 lsl r2, r2, #0x10 - bl FUN_020BC02C + bl NNSi_G3dModifyPolygonAttrMask ldr r0, [r4, #0x18] ldr r1, [r4, #0xc] - bl FUN_020BBA34 + bl NNS_G3dMdlSetMdlAlphaAll ldr r0, [r4, #0x14] add r1, sp, #0x30 add r2, sp, #0 @@ -34240,7 +34240,7 @@ _0224A124: mov r0, #5 pop {r3, pc} _0224A128: - bl ErrorHandling + bl GF_AssertFail mov r0, #0 pop {r3, pc} @@ -34683,7 +34683,7 @@ MOD06_0224A478: ; 0x0224A478 sub r1, r1, #1 str r1, [r0] bpl _0224A486 - bl ErrorHandling + bl GF_AssertFail _0224A486: pop {r3, pc} @@ -35048,13 +35048,13 @@ MOD06_0224A710: ; 0x0224A710 add r0, r4, #4 ldr r1, [r2, #0x18] ldr r2, [r2, #0xc] - bl FUN_020BB8D0 + bl NNS_G3dAllocAnmObj str r0, [r4] ldr r3, [r5, #0x14] ldr r1, [r3, #0x18] ldr r2, [r3, #0xc] ldr r3, [r3, #0x10] - bl FUN_020B8110 + bl NNS_G3dAnmObjInit ldr r1, [r5, #0x14] add r0, r4, #0 add r0, #0x18 @@ -35063,7 +35063,7 @@ MOD06_0224A710: ; 0x0224A710 add r0, r4, #0 ldr r1, [r4] add r0, #0x18 - bl FUN_020B7EFC + bl NNS_G3dRenderObjAddAnmObj ldr r0, [r5, #0x18] bl FUN_02058448 str r0, [r5, #4] @@ -35108,7 +35108,7 @@ MOD06_0224A7C8: ; 0x0224A7C8 ldr r4, [r1, #0x1c] ldr r1, [r4] add r0, r4, #4 - bl thunk_FUN_020ae84c + bl NNS_G3dFreeAnmObj add r0, r4, #0 bl MOD05_021E4C00 pop {r4, pc} @@ -35970,7 +35970,7 @@ MOD06_0224AE3C: ; 0x0224AE3C sub r1, r1, #1 str r1, [r0] bpl _0224AE4A - bl ErrorHandling + bl GF_AssertFail _0224AE4A: pop {r3, pc} @@ -36429,13 +36429,13 @@ MOD06_0224B188: ; 0x0224B188 add r0, r4, #4 ldr r1, [r2, #0x18] ldr r2, [r2, #0xc] - bl FUN_020BB8D0 + bl NNS_G3dAllocAnmObj str r0, [r4] ldr r3, [r5, #8] ldr r1, [r3, #0x18] ldr r2, [r3, #0xc] ldr r3, [r3, #0x10] - bl FUN_020B8110 + bl NNS_G3dAnmObjInit ldr r1, [r5, #8] add r0, r4, #0 add r0, #0x18 @@ -36444,7 +36444,7 @@ MOD06_0224B188: ; 0x0224B188 add r0, r4, #0 ldr r1, [r4] add r0, #0x18 - bl FUN_020B7EFC + bl NNS_G3dRenderObjAddAnmObj add r0, r6, #0 add r1, sp, #0 bl FUN_0206477C @@ -36464,7 +36464,7 @@ MOD06_0224B200: ; 0x0224B200 ldr r4, [r1] ldr r1, [r4] add r0, r4, #4 - bl thunk_FUN_020ae84c + bl NNS_G3dFreeAnmObj add r0, r4, #0 bl MOD05_021E4C00 pop {r4, pc} @@ -36635,13 +36635,13 @@ MOD06_0224B324: ; 0x0224B324 add r0, r4, #4 ldr r1, [r2, #0x18] ldr r2, [r2, #0xc] - bl FUN_020BB8D0 + bl NNS_G3dAllocAnmObj str r0, [r4] ldr r3, [r5, #8] ldr r1, [r3, #0x18] ldr r2, [r3, #0xc] ldr r3, [r3, #0x10] - bl FUN_020B8110 + bl NNS_G3dAnmObjInit ldr r1, [r5, #8] add r0, r4, #0 add r0, #0x18 @@ -36650,7 +36650,7 @@ MOD06_0224B324: ; 0x0224B324 add r0, r4, #0 ldr r1, [r4] add r0, #0x18 - bl FUN_020B7EFC + bl NNS_G3dRenderObjAddAnmObj add r0, r6, #0 add r1, sp, #0 bl FUN_0206477C @@ -36670,7 +36670,7 @@ MOD06_0224B39C: ; 0x0224B39C ldr r4, [r1] ldr r1, [r4] add r0, r4, #4 - bl thunk_FUN_020ae84c + bl NNS_G3dFreeAnmObj add r0, r4, #0 bl MOD05_021E4C00 pop {r4, pc} @@ -38573,7 +38573,7 @@ MOD06_0224C27C: ; 0x0224C27C add sp, #0x20 pop {r4, r5, r6, pc} _0224C2E8: - bl ErrorHandling + bl GF_AssertFail add sp, #0x20 pop {r4, r5, r6, pc} .align 2, 0 @@ -38617,14 +38617,14 @@ _0224C328: bl MOD05_021F4BD0 str r0, [sp, #0x18] ldr r0, [r6] - bl FUN_020BC13C + bl NNS_G3dGetMdlSet ldrh r1, [r0, #0xe] add r1, r0, r1 ldr r1, [r1, #0xc] add r7, r0, r1 ldr r0, [sp, #0x18] ldr r0, [r0] - bl FUN_020BC13C + bl NNS_G3dGetMdlSet ldrh r1, [r0, #0xe] add r1, r0, r1 ldr r1, [r1, #0xc] @@ -38651,7 +38651,7 @@ _0224C328: bl FUN_0204A9F0 cmp r0, #0 bne _0224C390 - bl ErrorHandling + bl GF_AssertFail _0224C390: ldr r0, [sp, #0x1c] bl MOD05_021E7EC8 @@ -38774,7 +38774,7 @@ _0224C476: mov r2, #0 bl MOD05_021DA4EC ldr r0, _0224C51C ; =0x0000048E - bl PlayBGM + bl PlaySound ldrb r0, [r4, #0xf] add r0, r0, #1 strb r0, [r4, #0xf] @@ -38865,7 +38865,7 @@ MOD06_0224C520: ; 0x0224C520 bl FUN_0204640C pop {r4, r5, r6, pc} _0224C552: - bl ErrorHandling + bl GF_AssertFail pop {r4, r5, r6, pc} .align 2, 0 _0224C558: .word 0x000001F2 @@ -38901,7 +38901,7 @@ _0224C590: ldr r1, [r5, #0x2c] bl MOD05_021F4BD0 ldr r0, [r0] - bl FUN_020BC13C + bl NNS_G3dGetMdlSet ldrh r1, [r0, #0xe] add r2, sp, #0x18 mov r3, #0 @@ -38913,7 +38913,7 @@ _0224C590: bl FUN_0204A9F0 cmp r0, #0 bne _0224C5BA - bl ErrorHandling + bl GF_AssertFail _0224C5BA: ldr r0, [sp, #0x18] bl MOD05_021E7EC8 @@ -38949,7 +38949,7 @@ _0224C5EE: _0224C5FC: cmp r1, #0 bne _0224C604 - bl ErrorHandling + bl GF_AssertFail _0224C604: ldrb r2, [r4, #1] ldr r0, [r5, #0x50] @@ -39050,7 +39050,7 @@ MOD06_0224C678: ; 0x0224C678 add sp, #0x30 pop {r3, r4, r5, r6, r7, pc} _0224C6DA: - bl ErrorHandling + bl GF_AssertFail add sp, #0x30 pop {r3, r4, r5, r6, r7, pc} nop @@ -39670,7 +39670,7 @@ MOD06_0224CB90: ; 0x0224CB90 bl AllocFromHeapAtEnd add r4, r0, #0 bne _0224CBA0 - bl ErrorHandling + bl GF_AssertFail _0224CBA0: add r0, r4, #0 mov r1, #0 @@ -39722,7 +39722,7 @@ _0224CBF2: lsr r5, r0, #0x10 cmp r5, #0x10 blo _0224CC02 - bl ErrorHandling + bl GF_AssertFail _0224CC02: lsl r0, r5, #2 ldr r0, [r4, r0] @@ -39753,7 +39753,7 @@ MOD06_0224CC24: ; 0x0224CC24 ldr r0, _0224CC5C ; =0x0000FFFF cmp r1, r0 bne _0224CC40 - bl ErrorHandling + bl GF_AssertFail _0224CC40: mov r0, #0x6a mov r1, #8 @@ -39780,7 +39780,7 @@ MOD06_0224CC60: ; 0x0224CC60 lsr r4, r0, #0x10 cmp r4, #2 blo _0224CC76 - bl ErrorHandling + bl GF_AssertFail _0224CC76: cmp r4, #0 bne _0224CC80 @@ -39853,7 +39853,7 @@ _0224CCEA: str r0, [sp, #0x10] cmp r0, r1 blt _0224CD0C - bl ErrorHandling + bl GF_AssertFail _0224CD0C: lsr r2, r4, #0x1f lsl r1, r4, #0x1e @@ -40892,7 +40892,7 @@ MOD06_0224D46C: ; 0x0224D46C bl FUN_0200CCA4 add r0, r4, #0 mov r1, #0xf - bl FUN_02019620 + bl FillWindowPixelBuffer mov r0, #0x64 mov r1, #0xb bl String_ctor @@ -41135,7 +41135,7 @@ _0224D6FE: sub r0, r4, r0 pop {r4, r5, r6, pc} _0224D702: - bl ErrorHandling + bl GF_AssertFail add r0, r4, #0 pop {r4, r5, r6, pc} .align 2, 0 @@ -41794,7 +41794,7 @@ MOD06_0224DC5C: ; 0x0224DC5C str r3, [r5, #8] add r0, r2, #0 mov r1, #1 - bl FUN_02018FF4 + bl AllocWindows str r0, [r5, #4] mov r0, #0x13 str r0, [sp] @@ -41813,7 +41813,7 @@ MOD06_0224DC5C: ; 0x0224DC5C bl FUN_02019064 ldr r0, [r5, #4] mov r1, #0xf - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, [r5, #4] mov r1, #0 mov r2, #1 @@ -41855,11 +41855,11 @@ MOD06_0224DCD8: ; 0x0224DCD8 add r6, r2, #0 cmp r0, #0 beq _0224DCEC - bl ErrorHandling + bl GF_AssertFail _0224DCEC: ldr r0, [r5, #4] mov r1, #0xf - bl FUN_02019620 + bl FillWindowPixelBuffer add r0, r4, #0 add r1, r6, #0 bl StringDup @@ -42039,7 +42039,7 @@ MOD06_0224DE60: ; 0x0224DE60 beq _0224DED2 add r0, r3, #0 mov r1, #1 - bl FUN_02018FF4 + bl AllocWindows str r0, [r6, #4] mov r0, #0xb str r0, [sp] @@ -42077,7 +42077,7 @@ _0224DEA8: str r0, [r6, #0xc] ldr r0, [r6, #4] mov r1, #0xf - bl FUN_02019620 + bl FillWindowPixelBuffer mov r0, #1 str r0, [r6] _0224DED2: @@ -42148,7 +42148,7 @@ MOD06_0224DF1C: ; 0x0224DF1C bl BufferIntegerAsString ldr r0, [r5, #4] mov r1, #0xf - bl FUN_02019620 + bl FillWindowPixelBuffer mov r7, #0 add r6, r5, #0 add r4, r7, #0 @@ -42214,7 +42214,7 @@ _0224DFC0: add r2, #0x14 str r0, [r5, r2] ldr r0, [sp, #0x14] - bl FUN_02018FF4 + bl AllocWindows str r0, [r5, #4] mov r0, #1 str r0, [sp] @@ -42332,7 +42332,7 @@ _0224E084: mov r1, #0 ldr r0, _0224E16C ; =MOD6_022523A0 add r2, r1, #0 - bl FUN_020010A8 + bl ListMenuInit str r0, [r5, #8] ldr r0, [r5, #4] mov r1, #0 @@ -42445,7 +42445,7 @@ _0224E1C0: mov r1, #0 ldr r0, [r6, #8] add r2, r1, #0 - bl FUN_02001300 + bl DestroyListMenu ldr r0, [r6, #4] bl FUN_02019570 ldr r0, [r6, #4] @@ -42463,7 +42463,7 @@ MOD06_0224E1E4: ; 0x0224E1E4 push {r3, r4, r5, lr} add r5, r0, #0 ldr r0, [r5, #8] - bl FUN_02001204 + bl ListMenu_ProcessInput mov r1, #0 add r4, r0, #0 mvn r1, r1 @@ -42471,7 +42471,7 @@ MOD06_0224E1E4: ; 0x0224E1E4 bne _0224E22A ldr r0, [r5, #8] add r1, sp, #0 - bl FUN_0200143C + bl ListMenuGetCurrentItemArrayId mov r2, #0x4b add r0, sp, #0 lsl r2, r2, #2 @@ -42685,7 +42685,7 @@ MOD06_0224E39C: ; 0x0224E39C ldr r0, [r4, #8] add r1, sp, #0 mov r2, #0 - bl FUN_02001448 + bl ListMenuGetScrollAndRow add r0, sp, #0 ldrh r0, [r0] cmp r0, #0 @@ -42916,7 +42916,7 @@ MOD06_0224E520: ; 0x0224E520 bl Bag_TakeItem cmp r0, #1 beq _0224E550 - bl ErrorHandling + bl GF_AssertFail _0224E550: pop {r4, r5, r6, pc} .align 2, 0 @@ -42972,7 +42972,7 @@ MOD06_0224E554: ; 0x0224E554 add sp, #0x20 pop {r4, r5, r6, pc} _0224E5C0: - bl ErrorHandling + bl GF_AssertFail add sp, #0x20 pop {r4, r5, r6, pc} .align 2, 0 @@ -43012,7 +43012,7 @@ _0224E604: ldr r1, [r6, #0x2c] bl MOD05_021F4BD0 ldr r0, [r0] - bl FUN_020BC13C + bl NNS_G3dGetMdlSet ldrh r1, [r0, #0xe] add r1, r0, r1 ldr r1, [r1, #0xc] @@ -43336,7 +43336,7 @@ _0224E8A4: add r5, r5, #1 b _0224E8AC _0224E8A8: - bl ErrorHandling + bl GF_AssertFail _0224E8AC: mov r3, #2 lsl r1, r5, #0x10 @@ -43392,7 +43392,7 @@ _0224E90C: add r5, r5, #1 b _0224E914 _0224E910: - bl ErrorHandling + bl GF_AssertFail _0224E914: mov r3, #2 lsl r1, r5, #0x10 @@ -44042,7 +44042,7 @@ MOD06_0224EDB0: ; 0x0224EDB0 add r5, r3, #0 cmp r0, #0 beq _0224EDC8 - bl ErrorHandling + bl GF_AssertFail _0224EDC8: add r0, r6, #0 add r1, sp, #0 @@ -44265,7 +44265,7 @@ _0224EF70: add r1, #0xcc cmp r2, #0x10 blt _0224EF44 - bl ErrorHandling + bl GF_AssertFail pop {r4, pc} .align 2, 0 @@ -44316,7 +44316,7 @@ _0224EFCC: add r1, r4, #4 mov r2, #0 mov r3, #4 - bl UncompressFromNarc + bl GfGfxLoader_LoadFromNarc str r0, [r6, r7] add r4, r4, #1 add r6, r6, #4 diff --git a/arm9/modules/06/include/module_06.h b/arm9/modules/06/include/module_06.h new file mode 100644 index 00000000..d9915f00 --- /dev/null +++ b/arm9/modules/06/include/module_06.h @@ -0,0 +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
diff --git a/arm9/modules/07/asm/module_07.s b/arm9/modules/07/asm/module_07.s index 3cef2d24..80472fdf 100644 --- a/arm9/modules/07/asm/module_07.s +++ b/arm9/modules/07/asm/module_07.s @@ -2010,7 +2010,7 @@ MOD07_02212E90: ; 0x02212E90 str r0, [sp, #0xc] ldr r2, [r4, #0xc] mov r0, #0x6c - bl FUN_0200687C + bl GfGfxLoader_LoadCharData mov r0, #0 str r0, [sp] str r0, [sp, #4] @@ -2022,7 +2022,7 @@ MOD07_02212E90: ; 0x02212E90 str r0, [sp, #0xc] ldr r2, [r4, #0xc] mov r0, #0x6c - bl FUN_020068C8 + bl GfGfxLoader_LoadScrnData mov r0, #0 str r0, [sp] str r0, [sp, #4] @@ -2034,7 +2034,7 @@ MOD07_02212E90: ; 0x02212E90 str r0, [sp, #0xc] ldr r2, [r4, #0xc] mov r0, #0x6c - bl FUN_020068C8 + bl GfGfxLoader_LoadScrnData mov r0, #0 str r0, [sp] str r0, [sp, #4] @@ -2046,7 +2046,7 @@ MOD07_02212E90: ; 0x02212E90 str r0, [sp, #0xc] ldr r2, [r4, #0xc] mov r0, #0x6c - bl FUN_020068C8 + bl GfGfxLoader_LoadScrnData mov r2, #0 str r2, [sp] ldr r0, [r4] @@ -2055,7 +2055,7 @@ MOD07_02212E90: ; 0x02212E90 add r3, r2, #0 str r0, [sp, #4] mov r0, #0x6c - bl FUN_02006930 + bl GfGfxLoader_GXLoadPal mov r1, #0 ldr r0, [r4, #8] add r2, r1, #0 @@ -3155,7 +3155,7 @@ _0221380C: .word 0x00000B58 thumb_func_start MOD07_02213810 MOD07_02213810: ; 0x02213810 push {r4, lr} - ldr r3, _02213830 ; =UNK_021064B8 + ldr r3, _02213830 ; =NNS_GfdDefaultFuncAllocTexVram mov r2, #0 ldr r3, [r3] blx r3 @@ -3163,18 +3163,18 @@ MOD07_02213810: ; 0x02213810 bl FUN_0201327C cmp r4, #0 bne _02213828 - bl ErrorHandling + bl GF_AssertFail _02213828: lsl r0, r4, #0x10 lsr r0, r0, #0xd pop {r4, pc} nop -_02213830: .word UNK_021064B8 +_02213830: .word NNS_GfdDefaultFuncAllocTexVram thumb_func_start MOD07_02213834 MOD07_02213834: ; 0x02213834 push {r4, lr} - ldr r3, _02213854 ; =UNK_021064C0 + ldr r3, _02213854 ; =NNS_GfdDefaultFuncAllocPlttVram mov r2, #1 ldr r3, [r3] blx r3 @@ -3182,13 +3182,13 @@ MOD07_02213834: ; 0x02213834 bl FUN_020132BC cmp r4, #0 bne _0221384C - bl ErrorHandling + bl GF_AssertFail _0221384C: lsl r0, r4, #0x10 lsr r0, r0, #0xd pop {r4, pc} nop -_02213854: .word UNK_021064C0 +_02213854: .word NNS_GfdDefaultFuncAllocPlttVram thumb_func_start MOD07_02213858 MOD07_02213858: ; 0x02213858 @@ -3299,7 +3299,7 @@ MOD07_02213924: ; 0x02213924 str r0, [sp, #0xc] ldr r2, [r5, #0xc] mov r0, #0x14 - bl FUN_0200687C + bl GfGfxLoader_LoadCharData mov r0, #0 str r0, [sp] str r0, [sp, #4] @@ -3311,7 +3311,7 @@ MOD07_02213924: ; 0x02213924 str r0, [sp, #0xc] ldr r2, [r5, #0xc] mov r0, #0x14 - bl FUN_020068C8 + bl GfGfxLoader_LoadScrnData ldr r2, [r5] mov r0, #0x14 ldr r2, [r2, #0x24] @@ -3319,7 +3319,7 @@ MOD07_02213924: ; 0x02213924 bl AllocAndReadWholeNarcMemberByIdPair add r1, sp, #0x10 add r4, r0, #0 - bl FUN_020B0138 + bl NNS_G2dGetUnpackedPaletteData ldr r2, [sp, #0x10] mov r0, #3 ldr r1, [r2, #0xc] @@ -4858,7 +4858,7 @@ _0221459E: mov r1, #0xa mov r2, #0 mov r3, #2 - bl FUN_020196F4 + bl FillWindowPixelRect lsl r0, r5, #0x10 lsr r0, r0, #0x10 str r0, [sp] @@ -4868,7 +4868,7 @@ _0221459E: mov r1, #9 mov r2, #0 mov r3, #3 - bl FUN_020196F4 + bl FillWindowPixelRect lsl r0, r5, #0x10 lsr r0, r0, #0x10 str r0, [sp] @@ -4878,7 +4878,7 @@ _0221459E: mov r1, #0xa mov r2, #0 mov r3, #5 - bl FUN_020196F4 + bl FillWindowPixelRect add sp, #0xc pop {r4, r5, r6, r7, pc} nop @@ -4900,19 +4900,19 @@ MOD07_02214600: ; 0x02214600 mov r1, #0 str r2, [sp, #0xc] str r3, [sp, #0x10] - bl FUN_02019620 + bl FillWindowPixelBuffer add r0, r5, r4 add r0, #0x10 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer add r0, r5, r4 add r0, #0x20 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer add r0, r5, r4 add r0, #0x30 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, [sp, #0x28] ldr r1, [sp, #8] str r0, [sp] diff --git a/arm9/modules/08/asm/module_08.s b/arm9/modules/08/asm/module_08.s index b6af83a9..a02c3f48 100644 --- a/arm9/modules/08/asm/module_08.s +++ b/arm9/modules/08/asm/module_08.s @@ -110,7 +110,7 @@ _02211F06: strh r0, [r1] b _02211F18 _02211F14: - bl ErrorHandling + bl GF_AssertFail _02211F18: ldr r2, [sp, #0x10] add r0, r5, #0 @@ -144,7 +144,7 @@ _02211F40: strh r0, [r1] b _02211F52 _02211F4E: - bl ErrorHandling + bl GF_AssertFail _02211F52: add r0, r4, #0 bl FUN_0200CAB4 @@ -162,7 +162,7 @@ MOD08_02211F5C: ; 0x02211F5C bne _02211F78 cmp r4, #0 bne _02211F74 - bl ErrorHandling + bl GF_AssertFail _02211F74: mov r0, #0 pop {r3, r4, r5, pc} @@ -187,7 +187,7 @@ _02211F78: cmp r0, #0 bne _02211FAC bne _02211FA8 - bl ErrorHandling + bl GF_AssertFail _02211FA8: mov r0, #0 pop {r3, r4, r5, pc} @@ -235,7 +235,7 @@ MOD08_02211FF0: ; 0x02211FF0 add r4, r1, #0 cmp r5, #0 bne _02211FFE - bl ErrorHandling + bl GF_AssertFail _02211FFE: str r4, [r5, #8] pop {r3, r4, r5, pc} @@ -246,7 +246,7 @@ MOD08_02212004: ; 0x02212004 push {r4, lr} add r4, r0, #0 bne _0221200E - bl ErrorHandling + bl GF_AssertFail _0221200E: ldr r0, [r4, #8] pop {r4, pc} @@ -257,7 +257,7 @@ MOD08_02212014: ; 0x02212014 push {r4, lr} add r4, r0, #0 bne _0221201E - bl ErrorHandling + bl GF_AssertFail _0221201E: ldr r0, [r4] pop {r4, pc} @@ -412,7 +412,7 @@ _02212096: ldr r0, [r0] cmp r0, #0 bne _02212148 - bl ErrorHandling + bl GF_AssertFail _02212148: ldr r0, [sp, #4] mov r5, #0 @@ -605,7 +605,7 @@ _022122A6: cmp r0, #0 bne _022122C6 bne _022122C0 - bl ErrorHandling + bl GF_AssertFail _022122C0: add sp, #0x3c mov r0, #0 @@ -737,7 +737,7 @@ MOD08_022123B0: ; 0x022123B0 cmp r0, #0 bne _022123C2 bne _022123BE - bl ErrorHandling + bl GF_AssertFail _022123BE: mov r0, #0 pop {r3, pc} @@ -891,7 +891,7 @@ MOD08_02212498: ; 0x02212498 add r4, r0, #0 cmp r5, #0xa blt _022124A6 - bl ErrorHandling + bl GF_AssertFail _022124A6: lsl r0, r5, #2 add r0, r4, r0 @@ -906,18 +906,18 @@ MOD08_022124B0: ; 0x022124B0 add r5, r0, #0 cmp r4, #0xa blt _022124BE - bl ErrorHandling + bl GF_AssertFail _022124BE: cmp r5, #0 bne _022124C6 - bl ErrorHandling + bl GF_AssertFail _022124C6: add r5, #0xdc lsl r4, r4, #2 ldr r0, [r5, r4] cmp r0, #0 bne _022124D4 - bl ErrorHandling + bl GF_AssertFail _022124D4: ldr r0, [r5, r4] pop {r3, r4, r5, pc} @@ -929,11 +929,11 @@ MOD08_022124D8: ; 0x022124D8 add r5, r0, #0 cmp r4, #5 blt _022124E6 - bl ErrorHandling + bl GF_AssertFail _022124E6: cmp r5, #0 bne _022124EE - bl ErrorHandling + bl GF_AssertFail _022124EE: mov r0, #0x4f lsl r0, r0, #2 @@ -942,7 +942,7 @@ _022124EE: ldr r0, [r5, r4] cmp r0, #0 bne _02212500 - bl ErrorHandling + bl GF_AssertFail _02212500: ldr r0, [r5, r4] pop {r3, r4, r5, pc} @@ -952,7 +952,7 @@ MOD08_02212504: ; 0x02212504 push {r4, lr} add r4, r0, #0 bne _0221250E - bl ErrorHandling + bl GF_AssertFail _0221250E: mov r0, #0x4e lsl r0, r0, #2 @@ -985,7 +985,7 @@ MOD08_0221252C: ; 0x0221252C bl AllocFromHeap add r4, r0, #0 bne _02212544 - bl ErrorHandling + bl GF_AssertFail mov r0, #0 pop {r3, r4, r5, pc} _02212544: @@ -1494,7 +1494,7 @@ _022128A4: str r1, [r0, #4] pop {r3, r4, r5, r6, r7, pc} _022128B8: - bl ErrorHandling + bl GF_AssertFail pop {r3, r4, r5, r6, r7, pc} .align 2, 0 @@ -2079,7 +2079,7 @@ _02212D04: ldr r4, [r1, r0] cmp r4, #0xff bne _02212D44 - bl ErrorHandling + bl GF_AssertFail _02212D44: sub r0, r4, #1 add sp, #0x90 @@ -2122,7 +2122,7 @@ _02212D5C: ldr r4, [r1, r0] cmp r4, #0xff bne _02212D9C - bl ErrorHandling + bl GF_AssertFail _02212D9C: add r0, r4, #0 add sp, #0x90 @@ -2369,7 +2369,7 @@ MOD08_02212F58: ; 0x02212F58 ldr r0, [r0, #0x1c] cmp r0, #0 beq _02212F7C - bl ErrorHandling + bl GF_AssertFail _02212F7C: ldr r0, [r5, #0x18] mov r2, #0 @@ -2413,7 +2413,7 @@ MOD08_02212FAC: ; 0x02212FAC ldr r0, [r0, #0x1c] cmp r0, #0 beq _02212FD2 - bl ErrorHandling + bl GF_AssertFail _02212FD2: ldr r0, [r5, #0x18] mov r1, #0x64 @@ -3198,7 +3198,7 @@ _02213500: mov r0, #7 add r1, r7, #0 mov r3, #2 - bl FUN_020068C8 + bl GfGfxLoader_LoadScrnData cmp r4, #1 bne _022135AC ldr r0, [r5] @@ -3660,7 +3660,7 @@ _02213926: ldr r0, [r6, r5] cmp r0, #0 beq _0221393A - bl ErrorHandling + bl GF_AssertFail _0221393A: mov r0, #0x15 str r7, [r6, r5] @@ -4144,7 +4144,7 @@ MOD08_02213C94: ; 0x02213C94 ldr r2, [r2] mov r0, #7 add r3, r4, #0 - bl FUN_0200687C + bl GfGfxLoader_LoadCharData ldr r0, [sp, #0x10] mov r1, #1 bl MOD08_022156AC @@ -4198,7 +4198,7 @@ _02213D18: ldr r2, [r5] mov r0, #7 add r3, r4, #0 - bl FUN_020068C8 + bl GfGfxLoader_LoadScrnData add sp, #0x14 pop {r4, r5, r6, r7, pc} @@ -4271,7 +4271,7 @@ MOD08_02213DA8: ; 0x02213DA8 bl AllocFromHeap add r4, r0, #0 bne _02213DC0 - bl ErrorHandling + bl GF_AssertFail mov r0, #0 pop {r3, r4, r5, pc} _02213DC0: @@ -4640,7 +4640,7 @@ _02214078: add r2, #0xc4 ldr r2, [r2] mov r3, #3 - bl FUN_0200687C + bl GfGfxLoader_LoadCharData mov r2, #0x66 lsl r2, r2, #2 add r1, r2, #0 @@ -4681,7 +4681,7 @@ _022140CC: add r2, #0xc4 ldr r2, [r2] mov r3, #3 - bl FUN_020068C8 + bl GfGfxLoader_LoadScrnData ldrb r0, [r4, #5] add r0, r0, #1 strb r0, [r4, #5] @@ -5016,7 +5016,7 @@ _0221436A: add r2, #0xc4 ldr r2, [r2] mov r3, #3 - bl FUN_0200687C + bl GfGfxLoader_LoadCharData mov r2, #0x66 lsl r2, r2, #2 add r1, r2, #0 @@ -5057,7 +5057,7 @@ _022143BE: add r2, #0xc4 ldr r2, [r2] mov r3, #3 - bl FUN_020068C8 + bl GfGfxLoader_LoadScrnData mov r0, #3 mov r1, #1 bl FUN_0201797C @@ -5230,7 +5230,7 @@ MOD08_02214524: ; 0x02214524 push {r4, lr} add r4, r0, #0 bne _0221452E - bl ErrorHandling + bl GF_AssertFail _0221452E: mov r0, #6 lsl r0, r0, #6 @@ -5608,7 +5608,7 @@ _022147E4: ldr r1, [r5, r1] ldr r2, [r2] add r3, r4, #0 - bl FUN_0200687C + bl GfGfxLoader_LoadCharData b _0221482A _02214822: add r0, r5, #0 @@ -5630,7 +5630,7 @@ _0221482A: add r5, #0xc4 ldr r2, [r5] add r3, r4, #0 - bl FUN_020068C8 + bl GfGfxLoader_LoadScrnData add sp, #0x10 pop {r3, r4, r5, pc} @@ -5932,7 +5932,7 @@ MOD08_02214A4C: ; 0x02214A4C ldr r2, [r2] mov r0, #7 mov r3, #3 - bl FUN_0200687C + bl GfGfxLoader_LoadCharData add r0, r4, #0 mov r1, #1 bl MOD08_022156AC @@ -5943,7 +5943,7 @@ MOD08_02214A4C: ; 0x02214A4C add r3, r2, #0 str r0, [sp, #4] mov r0, #7 - bl FUN_02006930 + bl GfGfxLoader_GXLoadPal add r0, r4, #0 mov r1, #2 bl MOD08_022156AC @@ -5959,7 +5959,7 @@ MOD08_02214A4C: ; 0x02214A4C ldr r2, [r5] mov r0, #7 mov r3, #3 - bl FUN_020068C8 + bl GfGfxLoader_LoadScrnData add sp, #0x10 pop {r3, r4, r5, pc} .align 2, 0 @@ -6523,7 +6523,7 @@ MOD08_02214ED4: ; 0x02214ED4 ldr r0, [r6, r4] cmp r0, #0 beq _02214EFC - bl ErrorHandling + bl GF_AssertFail _02214EFC: add r0, r5, #0 add r0, #0xc0 @@ -6535,7 +6535,7 @@ _02214EFC: ldr r0, [r6, r4] cmp r0, #0 bne _02214F16 - bl ErrorHandling + bl GF_AssertFail _02214F16: add r0, r5, #0 add r0, #0xc0 @@ -6953,7 +6953,7 @@ _0221521A: ldr r0, [r5, r4] cmp r0, #0 beq _0221524E - bl ErrorHandling + bl GF_AssertFail _0221524E: str r6, [r5, r4] add sp, #0x34 @@ -7009,10 +7009,10 @@ _022152A4: .word FUN_0200C644 thumb_func_start MOD08_022152A8 MOD08_022152A8: ; 0x022152A8 - ldr r3, _022152AC ; =ErrorHandling + ldr r3, _022152AC ; =GF_AssertFail bx r3 .align 2, 0 -_022152AC: .word ErrorHandling +_022152AC: .word GF_AssertFail thumb_func_start MOD08_022152B0 MOD08_022152B0: ; 0x022152B0 @@ -7234,7 +7234,7 @@ MOD08_02215434: ; 0x02215434 beq _02215456 cmp r5, r2 beq _02215452 - bl ErrorHandling + bl GF_AssertFail _02215452: mov r0, #0 pop {r3, r4, r5, pc} @@ -7964,7 +7964,7 @@ MOD08_02215988: ; 0x02215988 push {r4, lr} add r4, r0, #0 bne _02215992 - bl ErrorHandling + bl GF_AssertFail _02215992: ldr r0, [r4, #4] add r0, r4, r0 @@ -8063,7 +8063,7 @@ MOD08_02215A44: ; 0x02215A44 cmp r0, #0 ble _02215A62 bl FUN_020222AC - bl FUN_020B02C8 + bl NNS_G2dSetupSoftwareSpriteCamera _02215A62: bl FUN_02013388 _02215A66: @@ -8072,7 +8072,7 @@ _02215A66: thumb_func_start MOD08_02215A68 MOD08_02215A68: ; 0x02215A68 push {r4, lr} - ldr r3, _02215A80 ; =UNK_021064B8 + ldr r3, _02215A80 ; =NNS_GfdDefaultFuncAllocTexVram mov r2, #0 ldr r3, [r3] blx r3 @@ -8082,12 +8082,12 @@ MOD08_02215A68: ; 0x02215A68 lsr r0, r0, #0xd pop {r4, pc} nop -_02215A80: .word UNK_021064B8 +_02215A80: .word NNS_GfdDefaultFuncAllocTexVram thumb_func_start MOD08_02215A84 MOD08_02215A84: ; 0x02215A84 push {r4, lr} - ldr r3, _02215A9C ; =UNK_021064C0 + ldr r3, _02215A9C ; =NNS_GfdDefaultFuncAllocPlttVram mov r2, #0 ldr r3, [r3] blx r3 @@ -8097,7 +8097,7 @@ MOD08_02215A84: ; 0x02215A84 lsr r0, r0, #0xd pop {r4, pc} nop -_02215A9C: .word UNK_021064C0 +_02215A9C: .word NNS_GfdDefaultFuncAllocPlttVram thumb_func_start MOD08_02215AA0 MOD08_02215AA0: ; 0x02215AA0 @@ -12531,7 +12531,7 @@ _02217BE8: ldrsh r0, [r1, r0] pop {r3, r4, r5, r6, r7, pc} _02217BF8: - bl ErrorHandling + bl GF_AssertFail mov r0, #0 pop {r3, r4, r5, r6, r7, pc} .align 2, 0 @@ -12724,7 +12724,7 @@ MOD08_02217D44: ; 0x02217D44 str r3, [sp] cmp r5, #0 bne _02217D56 - bl ErrorHandling + bl GF_AssertFail _02217D56: cmp r4, r7 bls _02217D62 @@ -12764,7 +12764,7 @@ MOD08_02217D98: ; 0x02217D98 push {r4, lr} add r4, r0, #0 bne _02217DA2 - bl ErrorHandling + bl GF_AssertFail _02217DA2: ldr r0, [r4, #4] cmp r0, #0 @@ -12792,7 +12792,7 @@ _02217DA2: ldr r2, [r4, #0xc] asr r0, r0, #4 lsl r1, r0, #2 - ldr r0, _02217E2C ; =UNK_020FFA38 + ldr r0, _02217E2C ; =FX_SinCosTable_ asr r3, r2, #0x1f ldrsh r0, [r0, r1] asr r1, r0, #0x1f @@ -12813,7 +12813,7 @@ _02217DA2: lsl r0, r0, #1 add r0, r0, #1 lsl r1, r0, #1 - ldr r0, _02217E2C ; =UNK_020FFA38 + ldr r0, _02217E2C ; =FX_SinCosTable_ asr r3, r2, #0x1f ldrsh r0, [r0, r1] asr r1, r0, #0x1f @@ -12834,7 +12834,7 @@ _02217E26: mov r0, #0 pop {r4, pc} nop -_02217E2C: .word UNK_020FFA38 +_02217E2C: .word FX_SinCosTable_ thumb_func_start MOD08_02217E30 MOD08_02217E30: ; 0x02217E30 @@ -12890,7 +12890,7 @@ MOD08_02217E80: ; 0x02217E80 str r2, [sp] cmp r5, #0 bne _02217E94 - bl ErrorHandling + bl GF_AssertFail _02217E94: strh r4, [r5] strh r6, [r5, #2] @@ -12924,7 +12924,7 @@ MOD08_02217ECC: ; 0x02217ECC push {r4, lr} add r4, r0, #0 bne _02217ED6 - bl ErrorHandling + bl GF_AssertFail _02217ED6: ldr r0, [r4, #4] cmp r0, #0 @@ -13037,11 +13037,11 @@ MOD08_02217F9C: ; 0x02217F9C add r4, r1, #0 cmp r5, #0 bne _02217FAA - bl ErrorHandling + bl GF_AssertFail _02217FAA: cmp r4, #0 bne _02217FB2 - bl ErrorHandling + bl GF_AssertFail _02217FB2: add r0, r5, #0 bl MOD08_02217ECC @@ -13097,7 +13097,7 @@ MOD08_02218008: ; 0x02218008 add r4, r3, #0 cmp r5, #0 bne _0221801A - bl ErrorHandling + bl GF_AssertFail _0221801A: str r6, [r5] lsl r0, r6, #0xc @@ -13119,7 +13119,7 @@ MOD08_02218030: ; 0x02218030 add r4, r3, #0 cmp r5, #0 bne _02218042 - bl ErrorHandling + bl GF_AssertFail _02218042: str r6, [r5] lsl r6, r6, #0xc @@ -13137,7 +13137,7 @@ MOD08_02218058: ; 0x02218058 push {r4, lr} add r4, r0, #0 bne _02218062 - bl ErrorHandling + bl GF_AssertFail _02218062: ldr r0, [r4, #4] cmp r0, #0 @@ -13161,7 +13161,7 @@ MOD08_02218080: ; 0x02218080 push {r4, lr} add r4, r0, #0 bne _0221808A - bl ErrorHandling + bl GF_AssertFail _0221808A: ldr r0, [r4, #4] cmp r0, #0 @@ -13201,7 +13201,7 @@ MOD08_022180C4: ; 0x022180C4 push {r4, lr} add r4, r0, #0 bne _022180CE - bl ErrorHandling + bl GF_AssertFail _022180CE: ldr r0, [r4, #4] cmp r0, #0 @@ -13221,7 +13221,7 @@ _022180CE: lsl r0, r0, #1 add r0, r0, #1 lsl r1, r0, #1 - ldr r0, _0221811C ; =UNK_020FFA38 + ldr r0, _0221811C ; =FX_SinCosTable_ asr r3, r2, #0x1f ldrsh r0, [r0, r1] asr r1, r0, #0x1f @@ -13242,7 +13242,7 @@ _02218116: mov r0, #0 pop {r4, pc} nop -_0221811C: .word UNK_020FFA38 +_0221811C: .word FX_SinCosTable_ thumb_func_start MOD08_02218120 MOD08_02218120: ; 0x02218120 @@ -13253,7 +13253,7 @@ MOD08_02218120: ; 0x02218120 add r7, r3, #0 cmp r4, #0 bne _02218132 - bl ErrorHandling + bl GF_AssertFail _02218132: ldr r0, [sp, #0x18] add r1, r6, #0 @@ -13289,7 +13289,7 @@ MOD08_02218170: ; 0x02218170 push {r4, lr} add r4, r0, #0 bne _0221817A - bl ErrorHandling + bl GF_AssertFail _0221817A: ldr r0, [r4, #4] cmp r0, #0 @@ -13325,7 +13325,7 @@ MOD08_022181A8: ; 0x022181A8 str r3, [sp] cmp r5, #0 bne _022181BA - bl ErrorHandling + bl GF_AssertFail _022181BA: ldr r0, [sp, #0x20] add r1, sp, #8 @@ -13380,7 +13380,7 @@ MOD08_02218224: ; 0x02218224 push {r4, lr} add r4, r0, #0 bne _0221822E - bl ErrorHandling + bl GF_AssertFail _0221822E: ldr r0, [r4, #4] cmp r0, #0 @@ -13602,7 +13602,7 @@ MOD08_022183C0: ; 0x022183C0 add r7, r3, #0 cmp r5, #0 bne _022183D2 - bl ErrorHandling + bl GF_AssertFail _022183D2: str r7, [r5, #4] ldr r0, [sp, #0x18] @@ -13625,7 +13625,7 @@ MOD08_022183F0: ; 0x022183F0 push {r4, lr} add r4, r0, #0 bne _022183FA - bl ErrorHandling + bl GF_AssertFail _022183FA: ldr r0, [r4, #0xc] cmp r0, #0 @@ -14094,7 +14094,7 @@ MOD08_02218740: ; 0x02218740 add r7, r3, #0 cmp r5, #0 bne _02218752 - bl ErrorHandling + bl GF_AssertFail _02218752: mov r0, #1 str r0, [r5, #8] @@ -14122,7 +14122,7 @@ MOD08_02218780: ; 0x02218780 push {r4, lr} add r4, r0, #0 bne _0221878A - bl ErrorHandling + bl GF_AssertFail _0221878A: ldr r0, [r4, #4] cmp r0, #0 @@ -14142,7 +14142,7 @@ MOD08_022187A4: ; 0x022187A4 push {r4, lr} add r4, r0, #0 bne _022187AE - bl ErrorHandling + bl GF_AssertFail _022187AE: mov r0, #0 str r0, [r4, #8] @@ -14199,7 +14199,7 @@ MOD08_022187F4: ; 0x022187F4 bl memset cmp r4, #0 bne _02218816 - bl ErrorHandling + bl GF_AssertFail _02218816: mov r2, #0x32 add r1, r4, #0 @@ -14211,7 +14211,7 @@ _02218816: str r0, [r4, #0x1c] cmp r0, #0 bne _02218830 - bl ErrorHandling + bl GF_AssertFail _02218830: mov r0, #0x62 lsl r0, r0, #4 @@ -14245,7 +14245,7 @@ MOD08_02218870: ; 0x02218870 push {r4, lr} add r4, r0, #0 bne _0221887A - bl ErrorHandling + bl GF_AssertFail _0221887A: add r0, r4, #0 bl MOD08_02218780 @@ -14264,7 +14264,7 @@ MOD08_02218894: ; 0x02218894 push {r4, lr} add r4, r0, #0 bne _0221889E - bl ErrorHandling + bl GF_AssertFail _0221889E: ldr r0, [r4, #0x1c] bl FUN_02012988 @@ -14276,7 +14276,7 @@ MOD08_022188A8: ; 0x022188A8 push {r4, lr} add r4, r0, #0 bne _022188B2 - bl ErrorHandling + bl GF_AssertFail _022188B2: add r0, r4, #0 bl MOD08_022187A4 @@ -14315,7 +14315,7 @@ MOD08_022188DC: ; 0x022188DC bl AllocFromHeap add r4, r0, #0 bne _022188F8 - bl ErrorHandling + bl GF_AssertFail _022188F8: add r0, r4, #0 mov r1, #0 @@ -14359,7 +14359,7 @@ MOD08_0221894C: ; 0x0221894C push {r4, lr} add r4, r0, #0 bne _02218956 - bl ErrorHandling + bl GF_AssertFail _02218956: add r0, r4, #0 bl MOD08_02218780 @@ -14378,7 +14378,7 @@ MOD08_02218970: ; 0x02218970 push {r4, lr} add r4, r0, #0 bne _0221897A - bl ErrorHandling + bl GF_AssertFail _0221897A: ldr r0, [r4, #0x1c] bl FUN_02012B20 @@ -14390,7 +14390,7 @@ MOD08_02218984: ; 0x02218984 push {r4, lr} add r4, r0, #0 bne _0221898E - bl ErrorHandling + bl GF_AssertFail _0221898E: add r0, r4, #0 bl MOD08_022187A4 @@ -14606,7 +14606,7 @@ MOD08_02218AF8: ; 0x02218AF8 push {r4, lr} add r4, r0, #0 bne _02218B02 - bl ErrorHandling + bl GF_AssertFail _02218B02: ldr r0, [r4] pop {r4, pc} @@ -14617,7 +14617,7 @@ MOD08_02218B08: ; 0x02218B08 push {r4, lr} add r4, r0, #0 bne _02218B12 - bl ErrorHandling + bl GF_AssertFail _02218B12: ldr r0, [r4, #4] bl FUN_0200CAB4 @@ -14636,7 +14636,7 @@ MOD08_02218B20: ; 0x02218B20 bl AllocFromHeap add r4, r0, #0 bne _02218B38 - bl ErrorHandling + bl GF_AssertFail _02218B38: str r5, [r4, #0x18] str r6, [r4, #8] @@ -15003,7 +15003,7 @@ MOD08_02218DCC: ; 0x02218DCC bl AllocFromHeap add r4, r0, #0 bne _02218DEA - bl ErrorHandling + bl GF_AssertFail _02218DEA: mov r0, #0 strb r0, [r4] @@ -15585,7 +15585,7 @@ _02219228: mov r0, #7 add r1, r6, #0 mov r3, #2 - bl FUN_0200687C + bl GfGfxLoader_LoadCharData add r0, r7, #0 mov r1, #1 bl MOD08_022156AC @@ -15639,7 +15639,7 @@ _022192BC: mov r0, #7 add r1, r6, #0 mov r3, #2 - bl FUN_020068C8 + bl GfGfxLoader_LoadScrnData mov r3, #0xa ldrsh r3, [r4, r3] ldr r0, [r4, #0x30] @@ -15989,7 +15989,7 @@ _02219550: mov r0, #7 add r1, r6, #0 mov r3, #2 - bl FUN_0200687C + bl GfGfxLoader_LoadCharData add r0, r7, #0 mov r1, #1 bl MOD08_022156AC @@ -16043,7 +16043,7 @@ _022195EA: mov r0, #7 add r1, r6, #0 mov r3, #2 - bl FUN_020068C8 + bl GfGfxLoader_LoadScrnData mov r3, #0xa ldrsh r3, [r4, r3] ldr r0, [r4, #0x30] @@ -16348,7 +16348,7 @@ _02219886: str r0, [r4, #0x28] b _022198A4 _022198A0: - bl ErrorHandling + bl GF_AssertFail _022198A4: ldr r0, [r4, #0x28] mov r1, #0 @@ -16667,7 +16667,7 @@ _02219B18: lsl r6, r6, #8 b _02219B22 _02219B1E: - bl ErrorHandling + bl GF_AssertFail _02219B22: add r0, r5, #0 mov r1, #1 @@ -17003,7 +17003,7 @@ _02219D98: str r0, [r6, #4] b _02219DA8 _02219DA4: - bl ErrorHandling + bl GF_AssertFail _02219DA8: ldr r0, [r6, #4] cmp r0, #0 @@ -18152,7 +18152,7 @@ _0221A6CA: add r6, r0, #0 b _0221A6EA _0221A6E6: - bl ErrorHandling + bl GF_AssertFail _0221A6EA: cmp r6, #0xff bne _0221A6F6 @@ -18353,7 +18353,7 @@ _0221A866: add r6, r0, #0 b _0221A886 _0221A882: - bl ErrorHandling + bl GF_AssertFail _0221A886: cmp r6, #0xff bne _0221A892 @@ -19226,7 +19226,7 @@ _0221AFC0: add r6, r0, #0 b _0221AFE0 _0221AFDC: - bl ErrorHandling + bl GF_AssertFail _0221AFE0: cmp r6, #0xff bne _0221AFEC @@ -19478,7 +19478,7 @@ _0221B1DA: str r0, [sp, #8] b _0221B1F0 _0221B1EC: - bl ErrorHandling + bl GF_AssertFail _0221B1F0: add r2, r5, #0 ldr r1, [sp, #8] @@ -19599,7 +19599,7 @@ _0221B2D8: str r0, [sp, #8] b _0221B2EE _0221B2EA: - bl ErrorHandling + bl GF_AssertFail _0221B2EE: add r2, r4, #0 ldr r1, [sp, #8] @@ -19727,7 +19727,7 @@ _0221B3DA: add r6, r0, #0 b _0221B3F0 _0221B3EC: - bl ErrorHandling + bl GF_AssertFail _0221B3F0: add r0, r5, #0 add r1, r6, #0 @@ -20004,7 +20004,7 @@ _0221B622: add r7, r0, #0 b _0221B638 _0221B634: - bl ErrorHandling + bl GF_AssertFail _0221B638: add r0, r5, #0 mov r1, #1 @@ -20139,7 +20139,7 @@ _0221B744: add r4, r0, #0 b _0221B758 _0221B754: - bl ErrorHandling + bl GF_AssertFail _0221B758: add r0, r4, #0 pop {r3, r4, r5, pc} @@ -20834,7 +20834,7 @@ _0221BCEE: ldr r0, [r4, #0x38] cmp r0, #0 bne _0221BCF8 - bl ErrorHandling + bl GF_AssertFail _0221BCF8: pop {r3, r4, r5, pc} nop @@ -21182,7 +21182,7 @@ _0221BFBE: ldr r0, [r4, #0x38] cmp r0, #0 bne _0221BFCA - bl ErrorHandling + bl GF_AssertFail _0221BFCA: ldr r1, [r4, #0x14] add r0, r5, #0 @@ -23309,7 +23309,7 @@ MOD08_0221D0EC: ; 0x0221D0EC bl AllocFromHeap add r4, r0, #0 bne _0221D10A - bl ErrorHandling + bl GF_AssertFail _0221D10A: mov r0, #0 strb r0, [r4, #4] @@ -28315,7 +28315,7 @@ MOD08_0221FA44: ; 0x0221FA44 bl AllocFromHeap add r4, r0, #0 bne _0221FA62 - bl ErrorHandling + bl GF_AssertFail _0221FA62: mov r0, #0 strb r0, [r4, #4] @@ -28769,7 +28769,7 @@ MOD08_0221FDE4: ; 0x0221FDE4 bl AllocFromHeap add r4, r0, #0 bne _0221FE02 - bl ErrorHandling + bl GF_AssertFail _0221FE02: mov r0, #0 strb r0, [r4, #7] @@ -29234,7 +29234,7 @@ MOD08_02220180: ; 0x02220180 bl AllocFromHeap add r4, r0, #0 bne _0222019E - bl ErrorHandling + bl GF_AssertFail _0222019E: mov r0, #0 strb r0, [r4, #1] @@ -36026,7 +36026,7 @@ _02223A38: add sp, #8 pop {r3, pc} _02223A50: - bl ErrorHandling + bl GF_AssertFail add sp, #8 pop {r3, pc} @@ -36292,7 +36292,7 @@ _02223C50: add sp, #8 pop {r3, pc} _02223C6A: - bl ErrorHandling + bl GF_AssertFail add sp, #8 pop {r3, pc} .align 2, 0 @@ -38351,7 +38351,7 @@ _02224CA6: mul r0, r1 asr r0, r0, #4 lsl r0, r0, #2 - ldr r1, _02224D70 ; =UNK_020FFA38 + ldr r1, _02224D70 ; =FX_SinCosTable_ str r0, [sp, #0x18] add r1, r1, r0 mov r0, #2 @@ -38371,7 +38371,7 @@ _02224CA6: lsl r0, r1, #4 asr r6, r0, #0x10 mov r2, #3 - ldr r1, _02224D70 ; =UNK_020FFA38 + ldr r1, _02224D70 ; =FX_SinCosTable_ ldr r0, [sp, #0x18] lsl r2, r2, #0x10 ldrsh r0, [r1, r0] @@ -38437,7 +38437,7 @@ _02224D50: pop {r3, r4, r5, r6, r7, pc} nop _02224D6C: .word 0x00001555 -_02224D70: .word UNK_020FFA38 +_02224D70: .word FX_SinCosTable_ _02224D74: .word 0x00000000 _02224D78: .word MOD08_02224AF4 @@ -39693,7 +39693,7 @@ _022257C6: lsr r0, r0, #0x10 asr r0, r0, #4 lsl r1, r0, #2 - ldr r0, _0222586C ; =UNK_020FFA38 + ldr r0, _0222586C ; =FX_SinCosTable_ ldr r3, [r6, #0x14] ldrsh r0, [r0, r1] lsl r2, r2, #0xc @@ -39762,7 +39762,7 @@ _02225852: add sp, #8 pop {r3, r4, r5, r6, r7, pc} nop -_0222586C: .word UNK_020FFA38 +_0222586C: .word FX_SinCosTable_ _02225870: .word 0x00000132 _02225874: .word 0x00000000 _02225878: .word 0x00003FFF @@ -40033,7 +40033,7 @@ MOD08_02225A70: ; 0x02225A70 lsr r0, r0, #0x10 asr r0, r0, #4 lsl r1, r0, #2 - ldr r0, _02225B30 ; =UNK_020FFA38 + ldr r0, _02225B30 ; =FX_SinCosTable_ lsl r2, r2, #0xc ldrsh r0, [r0, r1] mov r3, #0 @@ -40096,7 +40096,7 @@ _02225B2A: add sp, #0xc pop {r4, r5, r6, r7, pc} .align 2, 0 -_02225B30: .word UNK_020FFA38 +_02225B30: .word FX_SinCosTable_ _02225B34: .word 0x00000000 _02225B38: .word 0x45800000 @@ -40407,7 +40407,7 @@ _02225D8C: lsr r0, r0, #0x10 asr r0, r0, #4 lsl r1, r0, #2 - ldr r0, _02225E0C ; =UNK_020FFA38 + ldr r0, _02225E0C ; =FX_SinCosTable_ asr r3, r2, #0x1f ldrsh r0, [r0, r1] asr r1, r0, #0x1f @@ -40459,7 +40459,7 @@ _02225E02: pop {r4, r5, r6, r7, pc} nop _02225E08: .word 0x00000199 -_02225E0C: .word UNK_020FFA38 +_02225E0C: .word FX_SinCosTable_ _02225E10: .word 0x00000000 thumb_func_start MOD08_02225E14 @@ -42742,7 +42742,7 @@ MOD08_02227068: ; 0x02227068 add r3, r4, #0 ldr r1, [r1, r2] ldr r2, [r5, #0x2c] - bl FUN_0200687C + bl GfGfxLoader_LoadCharData mov r0, #0 str r0, [sp] mov r0, #0x20 @@ -42774,7 +42774,7 @@ MOD08_02227068: ; 0x02227068 add r3, r4, #0 ldr r1, [r1, r2] ldr r2, [r5, #0x2c] - bl FUN_020068C8 + bl GfGfxLoader_LoadScrnData add sp, #0x10 pop {r4, r5, r6, pc} nop @@ -43300,7 +43300,7 @@ _02227514: add r4, r4, #1 cmp r4, #4 blt _022274D0 - bl ErrorHandling + bl GF_AssertFail add r0, r5, #0 _02227520: pop {r4, r5, r6, pc} @@ -43343,7 +43343,7 @@ _02227556: mov r0, #4 pop {r3, pc} _0222755A: - bl ErrorHandling + bl GF_AssertFail mov r0, #0 pop {r3, pc} .align 2, 0 @@ -43450,7 +43450,7 @@ _02227616: mov r5, #7 b _0222761E _0222761A: - bl ErrorHandling + bl GF_AssertFail _0222761E: mov r0, #0x12 lsl r0, r0, #4 @@ -44755,7 +44755,7 @@ MOD08_02228064: ; 0x02228064 add r5, r1, #0 cmp r4, #0 bne _02228072 - bl ErrorHandling + bl GF_AssertFail _02228072: add r0, r4, #0 bl MOD08_02212014 @@ -44763,7 +44763,7 @@ _02228072: bl AllocFromHeap add r4, r0, #0 bne _02228086 - bl ErrorHandling + bl GF_AssertFail _02228086: add r0, r4, #0 mov r1, #0 @@ -44777,7 +44777,7 @@ MOD08_02228094: ; 0x02228094 push {r4, lr} add r4, r0, #0 bne _0222809E - bl ErrorHandling + bl GF_AssertFail _0222809E: add r0, r4, #0 bl FreeToHeap @@ -44989,7 +44989,7 @@ MOD08_022281F4: ; 0x022281F4 bl AllocFromHeap cmp r0, #0 bne _0222820A - bl ErrorHandling + bl GF_AssertFail mov r0, #0 pop {r4, pc} _0222820A: @@ -45047,7 +45047,7 @@ MOD08_02228244: ; 0x02228244 ldr r0, [r0] cmp r0, #0xd blt _02228272 - bl ErrorHandling + bl GF_AssertFail _02228272: add r0, r4, #0 add r0, #0x9c @@ -45146,7 +45146,7 @@ _022282F8: ldr r0, [r0, #0x14] cmp r0, #0 beq _02228332 - bl ErrorHandling + bl GF_AssertFail _02228332: add r0, r4, #0 add r0, #0x8c @@ -45165,7 +45165,7 @@ _02228332: ldr r0, [r0, #0x14] cmp r0, #0 bne _0222835A - bl ErrorHandling + bl GF_AssertFail _0222835A: ldr r0, [r6] add r0, r0, #1 @@ -45215,7 +45215,7 @@ _02228384: ldr r0, [r0, #0x14] cmp r0, #0 beq _022283BE - bl ErrorHandling + bl GF_AssertFail _022283BE: add r0, r4, #0 add r0, #0x8c @@ -45234,7 +45234,7 @@ _022283BE: ldr r0, [r0, #0x14] cmp r0, #0 bne _022283E6 - bl ErrorHandling + bl GF_AssertFail _022283E6: ldr r0, [r6] add r0, r0, #1 @@ -45284,7 +45284,7 @@ _02228410: ldr r0, [r0, #0x14] cmp r0, #0 beq _0222844A - bl ErrorHandling + bl GF_AssertFail _0222844A: add r0, r4, #0 add r0, #0x8c @@ -45303,7 +45303,7 @@ _0222844A: ldr r0, [r0, #0x14] cmp r0, #0 bne _02228472 - bl ErrorHandling + bl GF_AssertFail _02228472: ldr r0, [r6] add r0, r0, #1 @@ -45353,7 +45353,7 @@ _0222849C: ldr r0, [r0, #0x14] cmp r0, #0 beq _022284D6 - bl ErrorHandling + bl GF_AssertFail _022284D6: add r0, r4, #0 add r0, #0x8c @@ -45372,7 +45372,7 @@ _022284D6: ldr r0, [r0, #0x14] cmp r0, #0 bne _022284FE - bl ErrorHandling + bl GF_AssertFail _022284FE: ldr r0, [r6] add r0, r0, #1 @@ -45485,7 +45485,7 @@ MOD08_022285BC: ; 0x022285BC mov r7, #0 cmp r0, #9 ble _022285CE - bl ErrorHandling + bl GF_AssertFail _022285CE: ldr r0, [r6, #0x10] mov r4, #0 @@ -45612,7 +45612,7 @@ _022286AC: bl AllocFromHeap add r4, r0, #0 bne _022286BC - bl ErrorHandling + bl GF_AssertFail _022286BC: str r7, [r4] ldr r0, [r6, #4] @@ -45629,7 +45629,7 @@ _022286BC: str r0, [r4, #0x14] cmp r0, #0 bne _022286DE - bl ErrorHandling + bl GF_AssertFail _022286DE: ldr r0, [r4, #0x14] bl MOD08_0222A078 @@ -45856,7 +45856,7 @@ MOD08_02228880: ; 0x02228880 bl AllocFromHeap add r4, r0, #0 bne _02228894 - bl ErrorHandling + bl GF_AssertFail _02228894: ldmia r5!, {r0, r1} add r2, r4, #0 @@ -46681,7 +46681,7 @@ _02228E64: ldr r0, [r5, #0x18] cmp r0, #3 blt _02228E6E - bl ErrorHandling + bl GF_AssertFail _02228E6E: ldr r0, [r5, #8] add r0, r0, #1 @@ -48093,7 +48093,7 @@ MOD08_02229918: ; 0x02229918 bl MI_CpuFill8 cmp r4, #0 bne _02229936 - bl ErrorHandling + bl GF_AssertFail _02229936: add r3, r4, #0 add r3, #0x90 @@ -48184,7 +48184,7 @@ MOD08_022299E8: ; 0x022299E8 push {r4, lr} add r4, r0, #0 bne _022299F2 - bl ErrorHandling + bl GF_AssertFail _022299F2: ldr r0, [r4, #0x1c] cmp r0, #0 @@ -48200,7 +48200,7 @@ MOD08_02229A00: ; 0x02229A00 push {r4, lr} add r4, r0, #0 bne _02229A0A - bl ErrorHandling + bl GF_AssertFail _02229A0A: ldr r0, [r4, #0x28] cmp r0, #0 @@ -48233,7 +48233,7 @@ MOD08_02229A2C: ; 0x02229A2C push {r4, lr} add r4, r0, #0 bne _02229A36 - bl ErrorHandling + bl GF_AssertFail _02229A36: add r0, r4, #0 add r0, #0xac @@ -48276,7 +48276,7 @@ MOD08_02229A80: ; 0x02229A80 push {r4, lr} add r4, r0, #0 bne _02229A8A - bl ErrorHandling + bl GF_AssertFail _02229A8A: add r4, #0x98 ldr r0, [r4] @@ -49118,7 +49118,7 @@ MOD08_0222A0D4: ; 0x0222A0D4 bl AllocFromHeap add r4, r0, #0 bne _0222A0EC - bl ErrorHandling + bl GF_AssertFail mov r0, #0 pop {r4, r5, r6, pc} _0222A0EC: @@ -49172,7 +49172,7 @@ _0222A138: _0222A140: cmp r4, #0 bne _0222A148 - bl ErrorHandling + bl GF_AssertFail _0222A148: add r0, r4, #0 pop {r4, r5, r6, pc} @@ -49234,7 +49234,7 @@ MOD08_0222A1A0: ; 0x0222A1A0 bl AllocFromHeap add r4, r0, #0 bne _0222A1B8 - bl ErrorHandling + bl GF_AssertFail mov r0, #0 pop {r4, r5, r6, pc} _0222A1B8: @@ -49346,7 +49346,7 @@ _0222A26C: sub r0, r5, #5 cmp r0, #0x16 blo _0222A284 - bl ErrorHandling + bl GF_AssertFail add sp, #0x58 mov r0, #0 pop {r3, r4, r5, pc} diff --git a/arm9/modules/09/asm/module_09.s b/arm9/modules/09/asm/module_09.s index 55a90a71..003e2dc8 100644 --- a/arm9/modules/09/asm/module_09.s +++ b/arm9/modules/09/asm/module_09.s @@ -2177,7 +2177,7 @@ MOD09_02212F8C: ; 0x02212F8C mov r0, #0x48 mov r1, #0x16 mov r3, #7 - bl FUN_0200687C + bl GfGfxLoader_LoadCharData ldr r2, [r5] mov r0, #0x48 ldr r2, [r2, #0xc] @@ -2185,7 +2185,7 @@ MOD09_02212F8C: ; 0x02212F8C bl AllocAndReadWholeNarcMemberByIdPair add r1, sp, #0x10 add r4, r0, #0 - bl FUN_020B0180 + bl NNS_G2dGetUnpackedScreenData ldr r1, [sp, #0x10] add r0, r5, #0 add r1, #0xc @@ -2199,7 +2199,7 @@ MOD09_02212F8C: ; 0x02212F8C bl AllocAndReadWholeNarcMemberByIdPair add r1, sp, #0x10 add r4, r0, #0 - bl FUN_020B0180 + bl NNS_G2dGetUnpackedScreenData ldr r1, [sp, #0x10] add r0, r5, #0 add r1, #0xc @@ -2279,7 +2279,7 @@ MOD09_02212F8C: ; 0x02212F8C ldr r2, [r5, r2] mov r0, #0x26 mov r3, #4 - bl FUN_0200687C + bl GfGfxLoader_LoadCharData add r0, r4, #0 bl FUN_0200CD64 add r2, r0, #0 @@ -3409,7 +3409,7 @@ _02213976: bl AllocAndReadWholeNarcMemberByIdPair add r1, sp, #0xc add r7, r0, #0 - bl FUN_020B0180 + bl NNS_G2dGetUnpackedScreenData mov r0, #0 str r0, [sp] mov r0, #0x20 @@ -3922,7 +3922,7 @@ _02213D74: ldr r0, [r4] ldrb r1, [r4, r1] ldr r0, [r0, #0xc] - bl FUN_02018FF4 + bl AllocWindows ldr r1, _02213DDC ; =0x00002070 mov r5, #0 str r0, [r4, r1] @@ -4150,7 +4150,7 @@ _02213F22: bl NewString_ReadMsgData add r6, r0, #0 add r0, r5, r4 - bl FUN_0201AB0C + bl GetWindowWidth str r0, [sp, #0x28] mov r0, #0 add r1, r6, #0 @@ -4196,7 +4196,7 @@ _02213FA6: bl NewString_ReadMsgData add r6, r0, #0 add r0, r5, r4 - bl FUN_0201AB0C + bl GetWindowWidth str r0, [sp, #0x2c] mov r0, #0 add r1, r6, #0 @@ -4419,7 +4419,7 @@ _0221415E: add r0, r0, r5 lsr r1, r1, #0x18 lsr r3, r3, #0x10 - bl FUN_020196F4 + bl FillWindowPixelRect ldr r0, [sp, #0x14] add r3, r6, #2 str r0, [sp] @@ -4432,7 +4432,7 @@ _0221415E: add r0, r0, r5 add r1, r7, #0 lsr r3, r3, #0x10 - bl FUN_020196F4 + bl FillWindowPixelRect ldr r0, [sp, #0x14] ldr r1, [sp, #0x10] str r0, [sp] @@ -4447,7 +4447,7 @@ _0221415E: add r0, r0, r5 lsr r1, r1, #0x18 lsr r3, r3, #0x10 - bl FUN_020196F4 + bl FillWindowPixelRect ldr r0, _022141D4 ; =0x00002070 ldr r0, [r4, r0] add r0, r0, r5 @@ -4623,7 +4623,7 @@ MOD09_022142FC: ; 0x022142FC cmp r0, #2 bne _02214360 add r0, r4, r6 - bl FUN_0201AB0C + bl GetWindowWidth add r5, r0, #0 add r0, sp, #0x20 ldrh r0, [r0, #0x10] @@ -4718,7 +4718,7 @@ MOD09_022143F8: ; 0x022143F8 ldr r0, _02214450 ; =0x00002050 mov r1, #0xf add r0, r4, r0 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, _02214454 ; =0x00001FA8 add r1, r5, #0 ldr r0, [r4, r0] @@ -4766,7 +4766,7 @@ MOD09_0221445C: ; 0x0221445C bl FUN_02002E14 add r6, r0, #0 add r0, r5, r4 - bl FUN_0201AB0C + bl GetWindowWidth add r3, r0, #0 mov r0, #6 str r0, [sp] @@ -4944,7 +4944,7 @@ _022145F4: ldr r0, [r5, r0] lsl r4, r6, #4 add r0, r0, r4 - bl FUN_0201AB0C + bl GetWindowWidth add r6, r0, #0 mov r0, #0 ldr r1, [sp, #0x10] @@ -5070,7 +5070,7 @@ MOD09_02214694: ; 0x02214694 ldr r0, _02214780 ; =0x00002070 ldr r0, [r5, r0] add r0, r0, r4 - bl FUN_0201AB0C + bl GetWindowWidth lsl r0, r0, #3 sub r0, r0, r7 lsl r0, r0, #0x18 @@ -5179,7 +5179,7 @@ MOD09_02214790: ; 0x02214790 ldr r0, _0221487C ; =0x00002070 ldr r0, [r5, r0] add r0, r0, r4 - bl FUN_0201AB0C + bl GetWindowWidth lsl r0, r0, #3 sub r0, r0, r7 lsl r0, r0, #0x18 @@ -5289,7 +5289,7 @@ MOD09_0221488C: ; 0x0221488C ldr r0, _0221497C ; =0x00002070 ldr r0, [r5, r0] add r0, r0, r4 - bl FUN_0201AB0C + bl GetWindowWidth lsl r0, r0, #3 sub r0, r0, r7 lsl r0, r0, #0x18 @@ -5401,7 +5401,7 @@ MOD09_0221498C: ; 0x0221498C ldr r0, [r4, r0] lsl r5, r5, #4 add r0, r0, r5 - bl FUN_0201AB0C + bl GetWindowWidth lsl r0, r0, #3 sub r0, r0, r7 lsl r0, r0, #0x18 @@ -5513,7 +5513,7 @@ MOD09_02214A8C: ; 0x02214A8C ldr r0, [r4, r0] lsl r5, r5, #4 add r0, r0, r5 - bl FUN_0201AB0C + bl GetWindowWidth lsl r0, r0, #3 sub r0, r0, r7 lsl r0, r0, #0x18 @@ -5602,7 +5602,7 @@ MOD09_02214B8C: ; 0x02214B8C ldr r0, _02214D14 ; =0x00002070 ldr r0, [r5, r0] add r0, #0x40 - bl FUN_0201AB0C + bl GetWindowWidth lsl r1, r0, #3 ldr r0, [sp, #0x14] ldr r2, [sp, #0x10] @@ -5843,7 +5843,7 @@ MOD09_02214DE8: ; 0x02214DE8 lsl r0, r0, #0x10 lsr r5, r0, #0x10 add r0, r4, r6 - bl FUN_0201AB0C + bl GetWindowWidth lsl r0, r0, #3 sub r0, r0, r5 lsl r0, r0, #0x10 @@ -5893,7 +5893,7 @@ _02214E42: lsl r0, r0, #0x10 lsr r5, r0, #0x10 add r0, r4, r6 - bl FUN_0201AB0C + bl GetWindowWidth lsl r0, r0, #3 sub r0, r0, r5 lsl r0, r0, #0x10 @@ -5979,7 +5979,7 @@ MOD09_02214F18: ; 0x02214F18 lsl r0, r0, #0x10 lsr r5, r0, #0x10 add r0, r4, r6 - bl FUN_0201AB0C + bl GetWindowWidth lsl r0, r0, #3 sub r0, r0, r5 lsl r0, r0, #0x10 @@ -6029,7 +6029,7 @@ _02214F72: lsl r0, r0, #0x10 lsr r5, r0, #0x10 add r0, r4, r6 - bl FUN_0201AB0C + bl GetWindowWidth lsl r0, r0, #3 sub r0, r0, r5 lsl r0, r0, #0x10 @@ -6166,7 +6166,7 @@ MOD09_022150C8: ; 0x022150C8 lsl r0, r0, #0x10 lsr r6, r0, #0x10 add r0, r5, r4 - bl FUN_0201AB0C + bl GetWindowWidth lsl r0, r0, #3 sub r1, r0, r6 lsr r0, r1, #0x1f @@ -6275,7 +6275,7 @@ MOD09_022151A8: ; 0x022151A8 bl FUN_02002E14 str r0, [sp, #0x1c] add r0, r4, r6 - bl FUN_0201AB0C + bl GetWindowWidth lsl r1, r0, #3 ldr r0, [sp, #0x1c] ldr r2, [sp, #0x18] @@ -6461,7 +6461,7 @@ _02215362: _02215368: add r0, r5, #0 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, _022153A8 ; =0x00001FA8 mov r1, #0x3c ldr r0, [r4, r0] @@ -6673,7 +6673,7 @@ MOD09_022154FC: ; 0x022154FC mov r1, #0 lsr r2, r2, #0x10 mov r3, #0x18 - bl FUN_020196F4 + bl FillWindowPixelRect ldr r0, _022155C4 ; =0x00001FA8 mov r1, #0x2c ldr r0, [r5, r0] @@ -6748,7 +6748,7 @@ _022155EE: ldr r0, [sp, #8] add r0, r1, r0 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer ldrh r0, [r6, #8] cmp r0, #0 beq _0221563E @@ -6828,7 +6828,7 @@ MOD09_0221567C: ; 0x0221567C add r0, r0, r4 mov r2, #0x38 mov r3, #0x20 - bl FUN_020196F4 + bl FillWindowPixelRect mov r2, #0x40 str r2, [sp] mov r0, #8 @@ -6838,7 +6838,7 @@ MOD09_0221567C: ; 0x0221567C ldr r0, [r5, r0] mov r3, #0x18 add r0, r0, r4 - bl FUN_020196F4 + bl FillWindowPixelRect mov r0, #0x20 str r0, [sp] add r0, r5, #0 @@ -6884,22 +6884,22 @@ MOD09_022156FC: ; 0x022156FC ldr r0, _02215780 ; =0x00002070 mov r1, #0 ldr r0, [r4, r0] - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, _02215780 ; =0x00002070 mov r1, #0 ldr r0, [r4, r0] add r0, #0x10 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, _02215780 ; =0x00002070 mov r1, #0 ldr r0, [r4, r0] add r0, #0x20 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, _02215780 ; =0x00002070 mov r1, #0 ldr r0, [r4, r0] add r0, #0x30 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r1, [r4] add r0, r4, #0 ldrb r1, [r1, #0x11] @@ -7030,7 +7030,7 @@ _02215830: mov r4, #8 _02215840: ldr r0, [sp, #0x18] - bl FUN_0201AB0C + bl GetWindowWidth lsl r0, r0, #3 sub r0, r0, r6 sub r0, r0, r7 @@ -7122,7 +7122,7 @@ MOD09_022158EC: ; 0x022158EC lsl r0, r6, #4 add r0, r1, r0 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer add r0, r6, #1 lsl r0, r0, #4 str r0, [sp, #0x18] @@ -7131,7 +7131,7 @@ MOD09_022158EC: ; 0x022158EC ldr r0, [sp, #0x18] add r0, r1, r0 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer add r0, r6, #2 lsl r0, r0, #4 str r0, [sp, #0x14] @@ -7140,7 +7140,7 @@ MOD09_022158EC: ; 0x022158EC ldr r0, [sp, #0x14] add r0, r1, r0 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer add r0, r6, #3 lsl r0, r0, #4 str r0, [sp, #0x10] @@ -7149,7 +7149,7 @@ MOD09_022158EC: ; 0x022158EC ldr r0, [sp, #0x10] add r0, r1, r0 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer add r0, r6, #4 lsl r0, r0, #4 str r0, [sp, #0xc] @@ -7158,12 +7158,12 @@ MOD09_022158EC: ; 0x022158EC ldr r0, [sp, #0xc] add r0, r1, r0 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, _02215A20 ; =0x00002070 mov r1, #0 ldr r0, [r5, r0] add r0, #0x50 - bl FUN_02019620 + bl FillWindowPixelBuffer mov r2, #0 str r2, [sp] str r2, [sp, #4] @@ -7269,63 +7269,63 @@ MOD09_02215A2C: ; 0x02215A2C lsl r0, r0, #4 add r0, r1, r0 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, _02215C40 ; =0x00002070 ldr r1, [r5, r0] mov r0, #5 lsl r0, r0, #6 add r0, r1, r0 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, _02215C40 ; =0x00002070 mov r1, #0 ldr r0, [r5, r0] add r0, #0xe0 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, _02215C40 ; =0x00002070 mov r1, #0 ldr r0, [r5, r0] add r0, #0xf0 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, _02215C40 ; =0x00002070 ldr r1, [r5, r0] mov r0, #1 lsl r0, r0, #8 add r0, r1, r0 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, _02215C40 ; =0x00002070 ldr r1, [r5, r0] mov r0, #0x11 lsl r0, r0, #4 add r0, r1, r0 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, _02215C40 ; =0x00002070 ldr r1, [r5, r0] mov r0, #0x12 lsl r0, r0, #4 add r0, r1, r0 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, _02215C40 ; =0x00002070 mov r1, #0 ldr r0, [r5, r0] add r0, #0xd0 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, _02215C40 ; =0x00002070 ldr r1, [r5, r0] mov r0, #0x15 lsl r0, r0, #4 add r0, r1, r0 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, _02215C40 ; =0x00002070 ldr r1, [r5, r0] lsl r0, r4, #4 add r0, r1, r0 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, _02215C40 ; =0x00002070 ldr r1, [r5, r0] add r0, r4, #0 @@ -7333,7 +7333,7 @@ MOD09_02215A2C: ; 0x02215A2C lsl r0, r0, #4 add r0, r1, r0 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, _02215C40 ; =0x00002070 ldr r1, [r5, r0] add r0, r4, #0 @@ -7341,7 +7341,7 @@ MOD09_02215A2C: ; 0x02215A2C lsl r0, r0, #4 add r0, r1, r0 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, _02215C40 ; =0x00002070 ldr r1, [r5, r0] add r0, r4, #0 @@ -7349,28 +7349,28 @@ MOD09_02215A2C: ; 0x02215A2C lsl r0, r0, #4 add r0, r1, r0 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, _02215C40 ; =0x00002070 ldr r1, [r5, r0] add r0, r4, #5 lsl r0, r0, #4 add r0, r1, r0 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, _02215C40 ; =0x00002070 ldr r1, [r5, r0] add r0, r4, #6 lsl r0, r0, #4 add r0, r1, r0 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, _02215C40 ; =0x00002070 ldr r1, [r5, r0] add r0, r4, #7 lsl r0, r0, #4 add r0, r1, r0 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, _02215C40 ; =0x00002070 ldr r1, [r5, r0] add r0, r4, #0 @@ -7378,7 +7378,7 @@ MOD09_02215A2C: ; 0x02215A2C lsl r0, r0, #4 add r0, r1, r0 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, _02215C40 ; =0x00002070 ldr r1, [r5, r0] add r0, r4, #0 @@ -7386,35 +7386,35 @@ MOD09_02215A2C: ; 0x02215A2C lsl r0, r0, #4 add r0, r1, r0 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, _02215C40 ; =0x00002070 ldr r1, [r5, r0] add r0, r4, #4 lsl r0, r0, #4 add r0, r1, r0 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, _02215C40 ; =0x00002070 ldr r1, [r5, r0] add r0, r4, #1 lsl r0, r0, #4 add r0, r1, r0 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, _02215C40 ; =0x00002070 ldr r1, [r5, r0] add r0, r4, #2 lsl r0, r0, #4 add r0, r1, r0 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, _02215C40 ; =0x00002070 ldr r1, [r5, r0] add r0, r4, #3 lsl r0, r0, #4 add r0, r1, r0 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer mov r2, #0 str r2, [sp] str r2, [sp, #4] @@ -7502,68 +7502,68 @@ MOD09_02215C44: ; 0x02215C44 mul r4, r1 add r0, #0x60 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, _02215D9C ; =0x00002070 mov r1, #0 ldr r0, [r5, r0] add r0, #0x70 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, _02215D9C ; =0x00002070 mov r1, #0 ldr r0, [r5, r0] add r0, #0x80 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, _02215D9C ; =0x00002070 mov r1, #0 ldr r0, [r5, r0] add r0, #0x90 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, _02215D9C ; =0x00002070 mov r1, #0 ldr r0, [r5, r0] add r0, #0xa0 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, _02215D9C ; =0x00002070 ldr r1, [r5, r0] add r0, r4, #1 lsl r0, r0, #4 add r0, r1, r0 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, _02215D9C ; =0x00002070 ldr r1, [r5, r0] lsl r0, r4, #4 add r0, r1, r0 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, _02215D9C ; =0x00002070 ldr r1, [r5, r0] add r0, r4, #2 lsl r0, r0, #4 add r0, r1, r0 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, _02215D9C ; =0x00002070 ldr r1, [r5, r0] add r0, r4, #3 lsl r0, r0, #4 add r0, r1, r0 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, _02215D9C ; =0x00002070 ldr r1, [r5, r0] add r0, r4, #5 lsl r0, r0, #4 add r0, r1, r0 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, _02215D9C ; =0x00002070 ldr r1, [r5, r0] add r0, r4, #4 lsl r0, r0, #4 add r0, r1, r0 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, [r5] add r2, r5, #0 ldrb r3, [r0, #0x11] @@ -7652,32 +7652,32 @@ MOD09_02215DA8: ; 0x02215DA8 ldr r0, _02215EC4 ; =0x00002070 mov r1, #0 ldr r0, [r5, r0] - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, _02215EC4 ; =0x00002070 mov r1, #0 ldr r0, [r5, r0] add r0, #0x10 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, _02215EC4 ; =0x00002070 mov r1, #0 ldr r0, [r5, r0] add r0, #0x20 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, _02215EC4 ; =0x00002070 mov r1, #0 ldr r0, [r5, r0] add r0, #0x30 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, _02215EC4 ; =0x00002070 mov r1, #0 ldr r0, [r5, r0] add r0, #0x40 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, _02215EC4 ; =0x00002070 mov r1, #0 ldr r0, [r5, r0] add r0, #0x50 - bl FUN_02019620 + bl FillWindowPixelBuffer mov r1, #0 str r1, [sp] str r1, [sp, #4] @@ -7785,62 +7785,62 @@ MOD09_02215ED0: ; 0x02215ED0 ldr r0, _02216090 ; =0x00002070 mov r1, #0 ldr r0, [r5, r0] - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, _02216090 ; =0x00002070 mov r1, #0 ldr r0, [r5, r0] add r0, #0x20 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, _02216090 ; =0x00002070 mov r1, #0 ldr r0, [r5, r0] add r0, #0x30 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, _02216090 ; =0x00002070 mov r1, #0 ldr r0, [r5, r0] add r0, #0x10 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, _02216090 ; =0x00002070 mov r1, #0 ldr r0, [r5, r0] add r0, #0x40 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, _02216090 ; =0x00002070 mov r1, #0 ldr r0, [r5, r0] add r0, #0x60 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, _02216090 ; =0x00002070 mov r1, #0 ldr r0, [r5, r0] add r0, #0x50 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, _02216090 ; =0x00002070 mov r1, #0 ldr r0, [r5, r0] add r0, #0x70 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, _02216090 ; =0x00002070 mov r1, #0 ldr r0, [r5, r0] add r0, #0x90 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, _02216090 ; =0x00002070 mov r1, #0 ldr r0, [r5, r0] add r0, #0xa0 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, _02216090 ; =0x00002070 mov r1, #0 ldr r0, [r5, r0] add r0, #0x80 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, _02216090 ; =0x00002070 mov r1, #0 ldr r0, [r5, r0] add r0, #0xb0 - bl FUN_02019620 + bl FillWindowPixelBuffer mov r1, #0 str r1, [sp] str r1, [sp, #4] @@ -7983,27 +7983,27 @@ MOD09_0221609C: ; 0x0221609C ldr r0, _02216184 ; =0x00002070 mov r1, #0 ldr r0, [r5, r0] - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, _02216184 ; =0x00002070 mov r1, #0 ldr r0, [r5, r0] add r0, #0x10 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, _02216184 ; =0x00002070 mov r1, #0 ldr r0, [r5, r0] add r0, #0x20 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, _02216184 ; =0x00002070 mov r1, #0 ldr r0, [r5, r0] add r0, #0x30 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, _02216184 ; =0x00002070 mov r1, #0 ldr r0, [r5, r0] add r0, #0x40 - bl FUN_02019620 + bl FillWindowPixelBuffer mov r1, #0 str r1, [sp] str r1, [sp, #4] @@ -8112,37 +8112,37 @@ MOD09_022161B0: ; 0x022161B0 ldr r0, _02216304 ; =0x00002070 mov r1, #0 ldr r0, [r5, r0] - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, _02216304 ; =0x00002070 mov r1, #0 ldr r0, [r5, r0] add r0, #0x20 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, _02216304 ; =0x00002070 mov r1, #0 ldr r0, [r5, r0] add r0, #0x30 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, _02216304 ; =0x00002070 mov r1, #0 ldr r0, [r5, r0] add r0, #0x10 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, _02216304 ; =0x00002070 mov r1, #0 ldr r0, [r5, r0] add r0, #0x40 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, _02216304 ; =0x00002070 mov r1, #0 ldr r0, [r5, r0] add r0, #0x50 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, _02216304 ; =0x00002070 mov r1, #0 ldr r0, [r5, r0] add r0, #0x60 - bl FUN_02019620 + bl FillWindowPixelBuffer mov r1, #0 str r1, [sp] str r1, [sp, #4] @@ -8275,7 +8275,7 @@ MOD09_02216314: ; 0x02216314 ldr r0, _02216338 ; =0x00002060 mov r1, #0xf add r0, r4, r0 - bl FUN_02019620 + bl FillWindowPixelBuffer add r0, r4, #0 bl MOD09_0221633C pop {r4, pc} @@ -11816,7 +11816,7 @@ _0221803C: lsl r1, r1, #4 add r0, r0, r1 add r1, r7, #0 - bl FUN_0201A8C8 + bl ScrollWindow ldr r1, _022180B0 ; =0x00002070 ldr r0, [r5, r1] add r1, r1, #5 @@ -11839,7 +11839,7 @@ _02218072: add r0, r1, r0 ldr r2, [sp] add r1, r7, #0 - bl FUN_0201A8C8 + bl ScrollWindow ldr r0, _022180B0 ; =0x00002070 ldr r1, [r5, r0] ldrb r0, [r6, r4] @@ -13991,7 +13991,7 @@ MOD09_022191C0: ; 0x022191C0 str r0, [sp, #0xc] ldr r2, [r5, #4] mov r0, #0x4d - bl FUN_0200687C + bl GfGfxLoader_LoadCharData mov r1, #0 str r1, [sp] str r1, [sp, #4] @@ -14002,7 +14002,7 @@ MOD09_022191C0: ; 0x022191C0 str r0, [sp, #0xc] ldr r2, [r5, #4] mov r0, #0x4d - bl FUN_020068C8 + bl GfGfxLoader_LoadScrnData ldr r2, [r5] mov r0, #0x4d ldr r2, [r2, #0xc] @@ -14010,7 +14010,7 @@ MOD09_022191C0: ; 0x022191C0 bl AllocAndReadWholeNarcMemberByIdPair add r1, sp, #0x10 add r4, r0, #0 - bl FUN_020B0180 + bl NNS_G2dGetUnpackedScreenData ldr r1, [sp, #0x10] add r0, r5, #0 add r1, #0xc @@ -14059,7 +14059,7 @@ MOD09_022191C0: ; 0x022191C0 str r0, [sp, #0xc] ldr r2, [r5, #4] mov r0, #0x26 - bl FUN_0200687C + bl GfGfxLoader_LoadCharData add r0, r4, #0 bl FUN_0200CD64 add r2, r0, #0 @@ -14355,7 +14355,7 @@ _022194C6: add r1, #0x30 ldrb r1, [r1] ldr r0, [r0, #0xc] - bl FUN_02018FF4 + bl AllocWindows str r0, [r5, #0x2c] add r0, r5, #0 add r0, #0x30 @@ -14450,7 +14450,7 @@ MOD09_02219560: ; 0x02219560 bl FUN_02002E14 add r7, r0, #0 add r0, r5, r4 - bl FUN_0201AB0C + bl GetWindowWidth lsl r0, r0, #3 sub r0, r0, r7 lsr r3, r0, #1 @@ -14486,7 +14486,7 @@ _022195C4: ldr r0, [r5, #0x2c] add r1, r7, #0 add r0, r0, r4 - bl FUN_02019620 + bl FillWindowPixelBuffer add r6, r6, #1 add r4, #0x10 cmp r6, #5 @@ -14588,7 +14588,7 @@ MOD09_02219694: ; 0x02219694 add r0, r4, r6 mov r1, #0 str r2, [sp, #0x10] - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, _02219730 ; =0x0000114D lsl r7, r7, #2 ldrb r1, [r5, r0] @@ -14626,7 +14626,7 @@ MOD09_02219694: ; 0x02219694 bl FUN_02002E14 add r7, r0, #0 add r0, r4, r6 - bl FUN_0201AB0C + bl GetWindowWidth lsl r0, r0, #3 sub r0, r0, r7 lsr r3, r0, #1 @@ -14664,7 +14664,7 @@ MOD09_02219738: ; 0x02219738 add r0, r4, r7 mov r1, #0 str r2, [sp, #0x10] - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, _022197C4 ; =0x0000114D lsl r6, r6, #2 ldrb r1, [r5, r0] @@ -14827,7 +14827,7 @@ MOD09_02219884: ; 0x02219884 lsl r0, r0, #4 add r0, r1, r0 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, [r5, #0x10] mov r1, #0x1c ldr r4, [r5, #0x2c] @@ -14841,7 +14841,7 @@ MOD09_02219884: ; 0x02219884 mov r0, #0x19 lsl r0, r0, #4 add r0, r4, r0 - bl FUN_0201AB0C + bl GetWindowWidth lsl r0, r0, #3 sub r0, r0, r7 lsr r6, r0, #1 @@ -14962,7 +14962,7 @@ MOD09_022199B4: ; 0x022199B4 lsl r0, r0, #6 add r0, r1, r0 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, _02219A6C ; =0x0000114D ldrb r0, [r4, r0] cmp r0, #3 @@ -15089,7 +15089,7 @@ MOD09_02219A8C: ; 0x02219A8C bl StringExpandPlaceholders add r0, r4, #0 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer mov r1, #0 str r1, [sp] mov r0, #0xff @@ -15170,7 +15170,7 @@ _02219B6C: ldr r0, [r5, #0x2c] add r1, r7, #0 add r0, r0, r4 - bl FUN_02019620 + bl FillWindowPixelBuffer add r6, r6, #1 add r4, #0x10 cmp r6, #4 @@ -15230,7 +15230,7 @@ MOD09_02219BE0: ; 0x02219BE0 add r0, r4, #0 add r0, #0x1c mov r1, #0xf - bl FUN_02019620 + bl FillWindowPixelBuffer add r0, r4, #0 bl MOD09_02219C08 pop {r4, pc} @@ -16913,7 +16913,7 @@ _0221A93C: ldr r1, [sp] add r2, r7, #0 mov r3, #0 - bl FUN_0201A8C8 + bl ScrollWindow ldrb r0, [r4, r5] ldr r1, [r6, #0x2c] lsl r0, r0, #4 diff --git a/arm9/modules/11/asm/module_11_thumb1.s b/arm9/modules/11/asm/module_11_thumb1.s index 32981b60..2a6bb196 100644 --- a/arm9/modules/11/asm/module_11_thumb1.s +++ b/arm9/modules/11/asm/module_11_thumb1.s @@ -527,7 +527,7 @@ _0222D99A: mov r0, #7 add r1, r1, #3 mov r3, #3 - bl FUN_0200687C + bl GfGfxLoader_LoadCharData add r0, r5, #0 bl MOD11_02230C68 add r2, r0, #0 @@ -581,7 +581,7 @@ _0222D99A: mov r0, #7 mov r1, #2 mov r3, #3 - bl FUN_020068C8 + bl GfGfxLoader_LoadScrnData mov r0, #1 lsl r0, r0, #0x1a ldr r2, [r0] @@ -633,7 +633,7 @@ _0222D99A: bl FUN_02019064 ldr r0, [r5, #8] mov r1, #0xff - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, [r5, #8] mov r1, #0 mov r2, #1 @@ -746,7 +746,7 @@ MOD11_0222DB50: ; 0x0222DB50 str r0, [r4, #4] mov r0, #5 mov r1, #3 - bl FUN_02018FF4 + bl AllocWindows mov r7, #0x73 str r0, [r4, #8] mov r6, #0 @@ -795,7 +795,7 @@ _0222DC42: bl FUN_02019064 ldr r0, [r4, #8] mov r1, #0xff - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, [r4, #8] mov r1, #0 mov r2, #1 @@ -1547,7 +1547,7 @@ _0222E2F0: add r1, r1, #3 add r2, r4, #0 mov r3, #3 - bl FUN_0200687C + bl GfGfxLoader_LoadCharData add r0, r5, #0 bl MOD11_02230C68 add r6, r0, #0 @@ -1601,7 +1601,7 @@ _0222E2F0: mov r1, #2 add r2, r4, #0 mov r3, #3 - bl FUN_020068C8 + bl GfGfxLoader_LoadScrnData mov r0, #1 lsl r0, r0, #0x1a ldr r2, [r0] @@ -1898,7 +1898,7 @@ _0222E532: ldr r0, [r0, r1] cmp r0, #0 bne _0222E67E - bl ErrorHandling + bl GF_AssertFail _0222E67E: ldr r5, [sp, #4] mov r0, #0 @@ -3061,14 +3061,14 @@ _0222EFD8: .word FUN_020223BC thumb_func_start MOD11_0222EFDC MOD11_0222EFDC: ; 0x0222EFDC push {r3, r4, r5, lr} - ldr r3, _0222F014 ; =UNK_021064B8 + ldr r3, _0222F014 ; =NNS_GfdDefaultFuncAllocTexVram mov r0, #2 mov r1, #0 ldr r3, [r3] lsl r0, r0, #0xe add r2, r1, #0 blx r3 - ldr r3, _0222F018 ; =UNK_021064C0 + ldr r3, _0222F018 ; =NNS_GfdDefaultFuncAllocPlttVram mov r1, #0 add r4, r0, #0 ldr r3, [r3] @@ -3078,17 +3078,17 @@ MOD11_0222EFDC: ; 0x0222EFDC add r5, r0, #0 cmp r4, #0 bne _0222F004 - bl ErrorHandling + bl GF_AssertFail _0222F004: cmp r5, #0 bne _0222F00C - bl ErrorHandling + bl GF_AssertFail _0222F00C: bl FUN_02012CC8 pop {r3, r4, r5, pc} nop -_0222F014: .word UNK_021064B8 -_0222F018: .word UNK_021064C0 +_0222F014: .word NNS_GfdDefaultFuncAllocTexVram +_0222F018: .word NNS_GfdDefaultFuncAllocPlttVram thumb_func_start MOD11_0222F01C MOD11_0222F01C: ; 0x0222F01C diff --git a/arm9/modules/11/asm/module_11_thumb2.s b/arm9/modules/11/asm/module_11_thumb2.s index 62996375..451daa87 100644 --- a/arm9/modules/11/asm/module_11_thumb2.s +++ b/arm9/modules/11/asm/module_11_thumb2.s @@ -45,7 +45,7 @@ MOD11_0222F29C: ; 0x0222F29C str r0, [r5, #4] mov r0, #5 mov r1, #1 - bl FUN_02018FF4 + bl AllocWindows str r0, [r5, #8] add r0, r5, #0 bl FUN_0206BFF0 @@ -186,7 +186,7 @@ _0222F30E: bl FUN_02019064 ldr r0, [r5, #8] mov r1, #0xff - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, [r5, #8] mov r1, #0 mov r2, #1 @@ -2073,7 +2073,7 @@ _02230250: ldr r0, [r6, #0x44] cmp r4, r0 blt _0223025A - bl ErrorHandling + bl GF_AssertFail _0223025A: add r0, r4, #0 pop {r3, r4, r5, r6, r7, pc} @@ -3553,7 +3553,7 @@ MOD11_02230DE0: ; 0x02230DE0 ldr r0, [r4, #0x30] cmp r0, #0 bne _02230DEE - bl ErrorHandling + bl GF_AssertFail _02230DEE: ldr r1, [r4, #0x30] add r0, r4, #0 @@ -4278,7 +4278,7 @@ MOD11_022312DC: ; 0x022312DC add r4, r0, #0 cmp r5, #4 blt _022312EA - bl ErrorHandling + bl GF_AssertFail _022312EA: lsl r0, r5, #4 ldr r0, [r4, r0] @@ -4292,7 +4292,7 @@ MOD11_022312F0: ; 0x022312F0 add r6, r2, #0 cmp r4, #4 blt _02231300 - bl ErrorHandling + bl GF_AssertFail _02231300: lsl r0, r4, #4 add r0, r5, r0 @@ -4307,7 +4307,7 @@ MOD11_02231308: ; 0x02231308 add r6, r2, #0 cmp r4, #4 blt _02231318 - bl ErrorHandling + bl GF_AssertFail _02231318: lsl r0, r4, #4 add r0, r5, r0 @@ -4322,7 +4322,7 @@ MOD11_02231320: ; 0x02231320 add r6, r2, #0 cmp r4, #4 blt _02231330 - bl ErrorHandling + bl GF_AssertFail _02231330: lsl r0, r4, #4 add r0, r5, r0 @@ -4559,7 +4559,7 @@ MOD11_022314B0: ; 0x022314B0 add r5, r0, #0 cmp r4, #0xf blo _022314BE - bl ErrorHandling + bl GF_AssertFail _022314BE: ldr r1, _022314D0 ; =0x000023FB mov r0, #0xe0 @@ -4854,7 +4854,7 @@ _022316CC: add r4, r0, #0 add r0, r6, #0 mov r1, #0xff - bl FUN_02019620 + bl FillWindowPixelBuffer mov r3, #0 ldr r0, [sp, #0x28] str r3, [sp] @@ -4892,7 +4892,7 @@ _02231708: add r4, r0, #0 add r0, r6, #0 mov r1, #0xff - bl FUN_02019620 + bl FillWindowPixelBuffer mov r3, #0 ldr r0, [sp, #0x28] str r3, [sp] @@ -4917,7 +4917,7 @@ _0223174C: bl GetTrainerMessageByIdPair add r0, r6, #0 mov r1, #0xff - bl FUN_02019620 + bl FillWindowPixelBuffer mov r3, #0 ldr r0, [sp, #0x28] str r3, [sp] @@ -4962,7 +4962,7 @@ MOD11_0223178C: ; 0x0223178C bl MOD11_022321EC add r0, r7, #0 mov r1, #0xff - bl FUN_02019620 + bl FillWindowPixelBuffer mov r3, #0 str r3, [sp] ldr r0, _022317DC ; =MOD11_0223220C @@ -5000,7 +5000,7 @@ MOD11_022317E0: ; 0x022317E0 beq _02231814 add r0, r4, #0 mov r1, #0xff - bl FUN_02019620 + bl FillWindowPixelBuffer _02231814: ldr r1, [sp, #0x28] mov r0, #2 @@ -5292,7 +5292,7 @@ _02231A22: strh r0, [r4, #2] pop {r4, r5, r6, pc} _02231A46: - bl ErrorHandling + bl GF_AssertFail _02231A4A: pop {r4, r5, r6, pc} @@ -6036,7 +6036,7 @@ _02232086: bl MOD11_022320C8 pop {r3, r4, r5, pc} _022320C2: - bl ErrorHandling + bl GF_AssertFail _022320C6: pop {r3, r4, r5, pc} @@ -6258,7 +6258,7 @@ _02232234: b _02232252 _0223223C: ldr r0, _02232258 ; =0x00000484 - bl PlayBGM + bl PlaySound b _02232252 _02232244: ldr r0, _0223225C ; =0x000005E6 @@ -6266,7 +6266,7 @@ _02232244: b _02232252 _0223224C: ldr r0, _02232260 ; =0x00000483 - bl PlayBGM + bl PlaySound _02232252: add r0, r4, #0 pop {r4, pc} @@ -9941,7 +9941,7 @@ _02233F10: str r0, [r4] b _02233F42 _02233F1A: - bl ErrorHandling + bl GF_AssertFail b _02233F42 _02233F20: ldr r0, [r4] @@ -9962,7 +9962,7 @@ _02233F36: str r0, [r4] b _02233F42 _02233F3E: - bl ErrorHandling + bl GF_AssertFail _02233F42: mov r0, #0 pop {r3, r4, r5, r6, r7, pc} @@ -10847,7 +10847,7 @@ _0223461C: str r0, [sp, #0xc] b _02234648 _02234626: - bl ErrorHandling + bl GF_AssertFail b _02234648 _0223462C: sub r0, r0, r4 @@ -10865,7 +10865,7 @@ _0223463E: str r0, [sp, #0xc] b _02234648 _02234644: - bl ErrorHandling + bl GF_AssertFail _02234648: cmp r6, #0x1a bne _0223465E @@ -11207,7 +11207,7 @@ _022348E8: str r0, [r4] b _022348F6 _022348F2: - bl ErrorHandling + bl GF_AssertFail _022348F6: mov r0, #0 pop {r3, r4, r5, r6, r7, pc} @@ -11368,7 +11368,7 @@ _02234A18: str r0, [sp, #0xc] b _02234A26 _02234A22: - bl ErrorHandling + bl GF_AssertFail _02234A26: cmp r5, #0x11 beq _02234A56 @@ -20606,7 +20606,7 @@ _02239324: ldr r0, [sp, #0xc] cmp r0, #0xa blt _0223932E - bl ErrorHandling + bl GF_AssertFail _0223932E: bl LCRandom mov r1, #0x64 @@ -21264,7 +21264,7 @@ _02239872: mov r0, #0 pop {r3, r4, r5, r6, r7, pc} _0223987E: - bl ErrorHandling + bl GF_AssertFail _02239882: ldr r0, _022398B0 ; =0x00002D90 add r1, r5, r6 @@ -21323,7 +21323,7 @@ _022398E6: _022398F0: cmp r4, #0 bne _022398F8 - bl ErrorHandling + bl GF_AssertFail _022398F8: bl LCRandom mov r1, #0x64 @@ -23862,7 +23862,7 @@ _0223AC50: bl FUN_02019064 add r0, r5, #0 mov r1, #0xff - bl FUN_02019620 + bl FillWindowPixelBuffer add r0, r5, #0 mov r1, #0 mov r2, #1 @@ -23987,7 +23987,7 @@ _0223ADBA: mov r2, #0x50 mov r3, #0 add r7, r0, #0 - bl FUN_020196F4 + bl FillWindowPixelRect mov r1, #0 str r1, [sp, #0x4c] add r5, sp, #0xb0 @@ -28099,7 +28099,7 @@ _0223CF5C: add r0, r6, #0 bl String_dtor add r0, sp, #0x68 - bl FUN_0201901C + bl InitWindow mov r0, #0 str r0, [sp] str r0, [sp, #4] @@ -36327,7 +36327,7 @@ _02240F28: ldr r0, [r4, r0] cmp r0, #0 blt _02240F4A - bl ErrorHandling + bl GF_AssertFail _02240F4A: ldr r1, [r4, #0x64] add r0, r5, #0 @@ -40690,7 +40690,7 @@ MOD11_022431DC: ; 0x022431DC lsl r1, r1, #6 cmp r0, r1 blo _022431F8 - bl ErrorHandling + bl GF_AssertFail _022431F8: add r0, r5, #0 add r0, #0xac @@ -40723,14 +40723,14 @@ MOD11_0224321C: ; 0x0224321C lsl r1, r1, #6 cmp r0, r1 blo _02243238 - bl ErrorHandling + bl GF_AssertFail _02243238: add r0, r5, #0 add r0, #0xb8 ldr r0, [r0] cmp r0, #4 blt _02243246 - bl ErrorHandling + bl GF_AssertFail _02243246: add r1, r5, #0 add r1, #0xb8 @@ -40861,7 +40861,7 @@ _0224332C: _02243334: cmp r3, #0x10 blt _0224333C - bl ErrorHandling + bl GF_AssertFail _0224333C: pop {r3, r4, r5, r6, r7, pc} .align 2, 0 @@ -40874,7 +40874,7 @@ MOD11_02243340: ; 0x02243340 str r2, [sp] add r4, r3, #0 bne _02243350 - bl ErrorHandling + bl GF_AssertFail _02243350: ldr r0, [sp] lsl r6, r5, #6 @@ -40904,7 +40904,7 @@ _02243376: _0224337E: cmp r2, #0x10 blt _02243386 - bl ErrorHandling + bl GF_AssertFail _02243386: pop {r3, r4, r5, r6, r7, pc} @@ -41520,7 +41520,7 @@ _0224378A: bl MOD11_02243420 pop {r4, r5, r6, pc} _02243794: - bl ErrorHandling + bl GF_AssertFail _02243798: mov r0, #0 pop {r4, r5, r6, pc} @@ -41821,7 +41821,7 @@ _022439A8: strb r1, [r0] pop {r4, r5, r6, pc} _022439B4: - bl ErrorHandling + bl GF_AssertFail pop {r4, r5, r6, pc} _022439BA: ldrb r0, [r3] @@ -42357,7 +42357,7 @@ _02243D94: bl MOD11_0224379C pop {r4, r5, r6, pc} _02243D9E: - bl ErrorHandling + bl GF_AssertFail pop {r4, r5, r6, pc} .align 2, 0 _02243DA4: .word 0xF7FFFFFF @@ -42968,7 +42968,7 @@ _022441E8: str r0, [r4, #0x28] pop {r4, r5, r6, pc} _02244200: - bl ErrorHandling + bl GF_AssertFail pop {r4, r5, r6, pc} nop _02244208: .word 0xFFFFFC1F @@ -44124,7 +44124,7 @@ _02244AEA: _02244AF4: cmp r6, #0 bne _02244AFC - bl ErrorHandling + bl GF_AssertFail _02244AFC: bl LCRandom mov r1, #0x64 @@ -44193,7 +44193,7 @@ _02244B72: _02244B7C: cmp r7, #0 bne _02244B84 - bl ErrorHandling + bl GF_AssertFail _02244B84: bl LCRandom mov r1, #0x64 @@ -57811,7 +57811,7 @@ MOD11_0224B310: ; 0x0224B310 cmp r0, #1 beq _0224B334 bhi _0224B334 - bl ErrorHandling + bl GF_AssertFail _0224B334: add r0, sp, #0x90 ldrb r0, [r0, #0x1c] @@ -58063,7 +58063,7 @@ _0224B558: ldr r0, [r5, r0] cmp r0, #0xa bge _0224B564 - bl ErrorHandling + bl GF_AssertFail _0224B564: ldr r0, _0224B75C ; =0x00002158 mov r1, #0xa @@ -60136,7 +60136,7 @@ _0224C51E: ldr r0, [r1, r0] pop {r4, pc} _0224C528: - bl ErrorHandling + bl GF_AssertFail mov r0, #0 pop {r4, pc} .align 2, 0 @@ -60219,7 +60219,7 @@ _0224C5C2: strb r4, [r1, r0] pop {r3, r4, r5, pc} _0224C5CA: - bl ErrorHandling + bl GF_AssertFail pop {r3, r4, r5, pc} .align 2, 0 _0224C5D0: .word 0xFFFF8FFF @@ -60275,7 +60275,7 @@ _0224C628: _0224C62E: cmp r4, #0x91 blo _0224C636 - bl ErrorHandling + bl GF_AssertFail _0224C636: ldr r0, _0224C644 ; =MOD11_0225E4C8 lsl r1, r4, #2 @@ -60450,7 +60450,7 @@ _0224C756: ldrb r4, [r1, r0] b _0224C76A _0224C766: - bl ErrorHandling + bl GF_AssertFail _0224C76A: mov r0, #0xc0 mul r0, r6 @@ -62294,7 +62294,7 @@ MOD11_0224D518: ; 0x0224D518 bl MOD11_0222FF6C add r6, r0, #0 mov r1, #0xff - bl FUN_02019620 + bl FillWindowPixelBuffer add r0, r6, #0 bl FUN_02019548 mov r1, #0x65 @@ -64173,7 +64173,7 @@ MOD11_0224E410: ; 0x0224E410 add r5, r2, #0 cmp r0, #0 bne _0224E422 - bl ErrorHandling + bl GF_AssertFail _0224E422: add r4, r6, #0 add r4, #0x28 @@ -64241,7 +64241,7 @@ MOD11_0224E49C: ; 0x0224E49C add r5, r2, #0 cmp r0, #0 bne _0224E4AE - bl ErrorHandling + bl GF_AssertFail _0224E4AE: add r4, r6, #0 add r4, #0x28 @@ -64552,7 +64552,7 @@ MOD11_0224E6FC: ; 0x0224E6FC add r4, r2, #0 cmp r0, #0 bne _0224E70E - bl ErrorHandling + bl GF_AssertFail _0224E70E: ldrb r1, [r4, #1] add r0, r5, #0 @@ -69424,7 +69424,7 @@ _02250EB6: bl MOD11_02258820 b _02250EC8 _02250EC4: - bl ErrorHandling + bl GF_AssertFail _02250EC8: add r0, r6, #0 bl MOD11_02258E30 @@ -69807,7 +69807,7 @@ _022511FA: bl FUN_02033590 cmp r0, #0 beq _02251206 - bl ErrorHandling + bl GF_AssertFail _02251206: ldrb r1, [r6, #0x1d] ldr r0, [r6] @@ -70085,7 +70085,7 @@ MOD11_02251420: ; 0x02251420 add r4, r0, #1 cmp r4, #5 blt _02251442 - bl ErrorHandling + bl GF_AssertFail _02251442: ldrb r1, [r5, #0xd] ldr r0, [r5] @@ -71657,7 +71657,7 @@ _022520D2: bl MOD11_0222FF6C add r6, r0, #0 mov r1, #0xff - bl FUN_02019620 + bl FillWindowPixelBuffer add r0, r6, #0 bl FUN_02019548 ldr r0, [r4] @@ -72340,7 +72340,7 @@ _02252664: bl MOD11_02258820 b _02252676 _02252672: - bl ErrorHandling + bl GF_AssertFail _02252676: mov r0, #2 add sp, #0x2c @@ -74388,7 +74388,7 @@ MOD11_022536D4: ; 0x022536D4 ldr r0, [r0] cmp r0, #0 beq _022536EE - bl ErrorHandling + bl GF_AssertFail _022536EE: ldrb r2, [r4, #0xd] ldr r0, [r4] @@ -74423,7 +74423,7 @@ MOD11_02253720: ; 0x02253720 ldr r0, [r0] cmp r0, #0 bne _02253734 - bl ErrorHandling + bl GF_AssertFail _02253734: ldr r0, [r4, #4] add r0, #0x8c @@ -81452,7 +81452,7 @@ MOD11_02256D70: ; 0x02256D70 add r4, r2, #0 cmp r0, #0 bne _02256D82 - bl ErrorHandling + bl GF_AssertFail _02256D82: add r0, r5, #0 add r0, #0x25 @@ -82159,7 +82159,7 @@ MOD11_022572C8: ; 0x022572C8 add r7, r2, #0 cmp r0, #0 bne _022572DA - bl ErrorHandling + bl GF_AssertFail _022572DA: add r0, r5, #0 add r0, #0x25 @@ -82211,12 +82211,12 @@ MOD11_02257334: ; 0x02257334 add r5, r1, #0 cmp r4, #0 bne _02257342 - bl ErrorHandling + bl GF_AssertFail _02257342: ldr r0, [r4, #4] cmp r0, #0 bne _0225734C - bl ErrorHandling + bl GF_AssertFail _0225734C: add r0, r4, #0 add r0, #0x4f @@ -83788,7 +83788,7 @@ _02257FB4: mov r0, #5 pop {r3, pc} _02257FB8: - bl ErrorHandling + bl GF_AssertFail mov r0, #0 pop {r3, pc} @@ -83834,7 +83834,7 @@ _02257FFA: ldr r0, _02258020 ; =MOD11_0225EBB8 pop {r3, pc} _02257FFE: - bl ErrorHandling + bl GF_AssertFail mov r0, #0 pop {r3, pc} nop @@ -83873,7 +83873,7 @@ _0225804A: mov r0, #0 pop {r3, pc} _0225804E: - bl ErrorHandling + bl GF_AssertFail mov r0, #0 pop {r3, pc} nop @@ -84339,7 +84339,7 @@ MOD11_022583D8: ; 0x022583D8 strb r7, [r5, #9] cmp r7, #0xc blt _022583FE - bl ErrorHandling + bl GF_AssertFail mov r0, #0 strb r0, [r5, #9] _022583FE: @@ -84494,7 +84494,7 @@ _02258512: mov r0, #7 mov r2, #1 add r3, sp, #0x18 - bl FUN_02006BDC + bl GfGfxLoader_GetScrnData add r5, r0, #0 lsl r0, r4, #2 add r0, r6, r0 @@ -84597,7 +84597,7 @@ _022585DE: mov r1, #0xca add r2, sp, #0x14 mov r3, #5 - bl FUN_02006C08 + bl GfGfxLoader_GetPlttData add r4, r0, #0 ldr r0, [sp, #0x14] ldr r1, [r6, #0x60] @@ -84696,7 +84696,7 @@ MOD11_022586BC: ; 0x022586BC mov r1, #0x11 add r2, r5, #0 mov r3, #4 - bl FUN_0200687C + bl GfGfxLoader_LoadCharData ldr r2, _02258790 ; =0x00004E2D add r0, r6, #0 add r1, r4, #0 @@ -84986,7 +84986,7 @@ MOD11_02258958: ; 0x02258958 cmp r0, #0 beq _02258974 _02258970: - bl ErrorHandling + bl GF_AssertFail _02258974: ldr r0, [sp, #0x14] ldr r0, [r0] @@ -85108,7 +85108,7 @@ _02258A12: ldr r0, [r0, #4] cmp r0, #0 beq _02258A82 - bl ErrorHandling + bl GF_AssertFail _02258A82: ldr r0, _02258AFC ; =MOD11_02258BE0 ldr r1, [sp, #0x14] @@ -85179,7 +85179,7 @@ MOD11_02258B10: ; 0x02258B10 cmp r0, #0 bne _02258B28 _02258B24: - bl ErrorHandling + bl GF_AssertFail _02258B28: ldr r0, [r6] bl MOD11_02230078 @@ -85519,7 +85519,7 @@ MOD11_02258DD0: ; 0x02258DD0 cmp r0, #0 bne _02258DE8 _02258DE4: - bl ErrorHandling + bl GF_AssertFail _02258DE8: ldr r7, _02258E28 ; =0x000005D4 mov r6, #0 @@ -85569,7 +85569,7 @@ MOD11_02258E30: ; 0x02258E30 cmp r0, #0 bne _02258E48 _02258E44: - bl ErrorHandling + bl GF_AssertFail _02258E48: ldr r7, _02258E70 ; =0x000005D4 mov r4, #0 @@ -85602,7 +85602,7 @@ MOD11_02258E74: ; 0x02258E74 sub r0, r6, #1 cmp r1, r0 bne _02258E88 - bl ErrorHandling + bl GF_AssertFail _02258E88: ldr r0, _02258F4C ; =0x0000069F ldr r3, _02258F50 ; =MOD11_0225FAAC @@ -85625,7 +85625,7 @@ _02258EA8: ldr r0, [r4, #0x18] cmp r0, #0 bne _02258EB2 - bl ErrorHandling + bl GF_AssertFail _02258EB2: ldr r0, [r5] bl MOD11_0222FF74 @@ -85833,7 +85833,7 @@ _02259020: mov r0, #0xb pop {r3, pc} _02259024: - bl ErrorHandling + bl GF_AssertFail mov r0, #0 pop {r3, pc} @@ -86090,7 +86090,7 @@ MOD11_0225916C: ; 0x0225916C bl FUN_02015F34 cmp r0, #1 beq _02259232 - bl ErrorHandling + bl GF_AssertFail _02259232: ldr r0, _0225926C ; =MOD11_0225B538 add r1, r4, #0 @@ -86503,7 +86503,7 @@ MOD11_022595C8: ; 0x022595C8 add r6, r5, #0 add r6, #0x18 bne _022595D8 - bl ErrorHandling + bl GF_AssertFail _022595D8: ldrb r1, [r6, #0x10] ldr r0, _02259854 ; =0x0000069E @@ -88010,7 +88010,7 @@ _0225A286: ldr r0, [r1, r0] cmp r0, #0 beq _0225A296 - bl ErrorHandling + bl GF_AssertFail _0225A296: lsl r0, r5, #2 add r1, r4, r0 @@ -88018,7 +88018,7 @@ _0225A296: ldr r0, [r1, r0] cmp r0, #0 beq _0225A2A6 - bl ErrorHandling + bl GF_AssertFail _0225A2A6: cmp r6, #5 bhi _0225A2CE @@ -88045,7 +88045,7 @@ _0225A2CA: ldr r6, _0225A3E0 ; =0x00004E42 b _0225A2D8 _0225A2CE: - bl ErrorHandling + bl GF_AssertFail add sp, #0x50 mov r0, #0 pop {r3, r4, r5, r6, r7, pc} @@ -88255,7 +88255,7 @@ MOD11_0225A458: ; 0x0225A458 ldr r4, [sp, #0xa8] cmp r0, #0 beq _0225A472 - bl ErrorHandling + bl GF_AssertFail _0225A472: ldr r0, [r7] bl MOD11_02230080 @@ -88280,7 +88280,7 @@ _0225A49C: cmp r4, #0 bne _0225A4DA add r0, sp, #0x3c - bl FUN_0201901C + bl InitWindow mov r0, #0 str r0, [sp] str r0, [sp, #4] @@ -88713,7 +88713,7 @@ _0225A7CE: ldr r0, [sp, #0x40] mov r2, #1 add r3, sp, #0x4c - bl FUN_02006BB0 + bl GfGfxLoader_GetCharData str r0, [sp, #0x44] ldr r0, [sp, #0x4c] ldr r1, [sp, #0x1c] @@ -88914,7 +88914,7 @@ MOD11_0225A968: ; 0x0225A968 bl FUN_02019178 _0225A994: add r0, r4, #0 - bl FUN_0201901C + bl InitWindow ldr r0, [r5] bl MOD11_0222FF68 mov r1, #0 @@ -88981,7 +88981,7 @@ _0225AA14: ldr r0, [r1, r0] cmp r0, #0 beq _0225AA24 - bl ErrorHandling + bl GF_AssertFail _0225AA24: ldr r0, [sp, #4] lsl r1, r4, #1 @@ -89425,7 +89425,7 @@ MOD11_0225AD80: ; 0x0225AD80 ldr r0, [r4, #8] cmp r0, #0 beq _0225AD90 - bl ErrorHandling + bl GF_AssertFail _0225AD90: mov r0, #0x6b lsl r0, r0, #4 @@ -92883,7 +92883,7 @@ MOD11_0225C784: ; 0x0225C784 ldrb r0, [r4, r0] cmp r0, #2 blo _0225C7B0 - bl ErrorHandling + bl GF_AssertFail _0225C7B0: ldr r1, _0225C7E4 ; =0x000006FC add r0, r4, #0 @@ -93175,7 +93175,7 @@ MOD11_0225C9F0: ; 0x0225C9F0 ldr r0, [r4, #4] cmp r0, #0 beq _0225C9FE - bl ErrorHandling + bl GF_AssertFail _0225C9FE: add r0, r4, #0 bl FreeToHeap @@ -93264,7 +93264,7 @@ MOD11_0225CA90: ; 0x0225CA90 add r7, r2, #0 cmp r6, #0 bne _0225CAA0 - bl ErrorHandling + bl GF_AssertFail _0225CAA0: add r0, r6, #0 add r1, r4, #0 @@ -93347,7 +93347,7 @@ MOD11_0225CB10: ; 0x0225CB10 _0225CB2A: cmp r1, #0 bne _0225CB32 - bl ErrorHandling + bl GF_AssertFail _0225CB32: add r0, r5, #0 mov r1, #0 @@ -93508,7 +93508,7 @@ MOD11_0225CC68: ; 0x0225CC68 cmp r0, #0 beq _0225CC7E _0225CC7A: - bl ErrorHandling + bl GF_AssertFail _0225CC7E: mov r0, #0 strb r0, [r5, #0x1a] @@ -93682,7 +93682,7 @@ MOD11_0225CDB0: ; 0x0225CDB0 _0225CDCC: cmp r1, #0 bne _0225CDD4 - bl ErrorHandling + bl GF_AssertFail _0225CDD4: add r0, r5, #0 mov r1, #0 @@ -94193,7 +94193,7 @@ MOD11_0225D1A8: ; 0x0225D1A8 cmp r0, #0 beq _0225D1C2 _0225D1BE: - bl ErrorHandling + bl GF_AssertFail _0225D1C2: add r0, r5, #0 mov r1, #0 diff --git a/arm9/modules/11/src/module_11_sinit.c b/arm9/modules/11/src/module_11_sinit.c index 977c4fde..8bf5f6f6 100644 --- a/arm9/modules/11/src/module_11_sinit.c +++ b/arm9/modules/11/src/module_11_sinit.c @@ -1,8 +1,9 @@ #include "global.h" #include "poke_overlay.h" #include "FS_overlay.h" +#include "unk_02031734.h" + -extern u32 FUN_02033590(void); FS_EXTERN_OVERLAY(MODULE_16); THUMB_FUNC static void MOD11_0222F284(void) diff --git a/arm9/modules/12/asm/module_12.s b/arm9/modules/12/asm/module_12.s index f717789a..effb333a 100644 --- a/arm9/modules/12/asm/module_12.s +++ b/arm9/modules/12/asm/module_12.s @@ -744,14 +744,14 @@ MOD12_0222DC80: ; 0x0222DC80 thumb_func_start MOD12_0222DCAC MOD12_0222DCAC: ; 0x0222DCAC push {r3, r4, r5, lr} - ldr r3, _0222DCE4 ; =UNK_021064B8 + ldr r3, _0222DCE4 ; =NNS_GfdDefaultFuncAllocTexVram mov r0, #2 mov r1, #0 ldr r3, [r3] lsl r0, r0, #0xe add r2, r1, #0 blx r3 - ldr r3, _0222DCE8 ; =UNK_021064C0 + ldr r3, _0222DCE8 ; =NNS_GfdDefaultFuncAllocPlttVram mov r1, #0 add r4, r0, #0 ldr r3, [r3] @@ -761,17 +761,17 @@ MOD12_0222DCAC: ; 0x0222DCAC add r5, r0, #0 cmp r4, #0 bne _0222DCD4 - bl ErrorHandling + bl GF_AssertFail _0222DCD4: cmp r5, #0 bne _0222DCDC - bl ErrorHandling + bl GF_AssertFail _0222DCDC: bl FUN_02012CC8 pop {r3, r4, r5, pc} nop -_0222DCE4: .word UNK_021064B8 -_0222DCE8: .word UNK_021064C0 +_0222DCE4: .word NNS_GfdDefaultFuncAllocTexVram +_0222DCE8: .word NNS_GfdDefaultFuncAllocPlttVram thumb_func_start MOD12_0222DCEC MOD12_0222DCEC: ; 0x0222DCEC @@ -780,7 +780,7 @@ MOD12_0222DCEC: ; 0x0222DCEC ldr r0, [r4] cmp r0, #0 bne _0222DCFA - bl ErrorHandling + bl GF_AssertFail _0222DCFA: ldr r1, _0222DD1C ; =0x00000172 mov r0, #0 @@ -1054,7 +1054,7 @@ MOD12_0222DF30: ; 0x0222DF30 mov r0, #0x2d mov r1, #3 mov r3, #2 - bl FUN_0200687C + bl GfGfxLoader_LoadCharData mov r0, #0 str r0, [sp] str r0, [sp, #4] @@ -1066,7 +1066,7 @@ MOD12_0222DF30: ; 0x0222DF30 mov r0, #0x2d mov r1, #5 mov r3, #2 - bl FUN_020068C8 + bl GfGfxLoader_LoadScrnData mov r0, #1 add r1, r0, #0 bl FUN_020178BC @@ -1117,7 +1117,7 @@ MOD12_0222DFC4: ; 0x0222DFC4 ldr r2, [r5, #0x30] mov r0, #0x2d mov r3, #3 - bl FUN_0200687C + bl GfGfxLoader_LoadCharData mov r0, #0 str r0, [sp] str r0, [sp, #4] @@ -1129,7 +1129,7 @@ MOD12_0222DFC4: ; 0x0222DFC4 mov r0, #0x2d mov r1, #2 mov r3, #3 - bl FUN_020068C8 + bl GfGfxLoader_LoadScrnData mov r0, #0 str r0, [sp] str r0, [sp, #4] @@ -1140,7 +1140,7 @@ MOD12_0222DFC4: ; 0x0222DFC4 ldr r2, [r5, #0x30] mov r0, #0x2d mov r1, #3 - bl FUN_0200687C + bl GfGfxLoader_LoadCharData mov r0, #0 str r0, [sp] str r0, [sp, #4] @@ -1151,7 +1151,7 @@ MOD12_0222DFC4: ; 0x0222DFC4 ldr r2, [r5, #0x30] mov r0, #0x2d mov r1, #4 - bl FUN_020068C8 + bl GfGfxLoader_LoadScrnData mov r1, #0 add r0, r5, #0 add r2, r1, #0 @@ -3999,14 +3999,14 @@ MOD12_0222F6B4: ; 0x0222F6B4 thumb_func_start MOD12_0222F6E0 MOD12_0222F6E0: ; 0x0222F6E0 push {r3, r4, r5, lr} - ldr r3, _0222F718 ; =UNK_021064B8 + ldr r3, _0222F718 ; =NNS_GfdDefaultFuncAllocTexVram mov r0, #2 mov r1, #0 ldr r3, [r3] lsl r0, r0, #0xe add r2, r1, #0 blx r3 - ldr r3, _0222F71C ; =UNK_021064C0 + ldr r3, _0222F71C ; =NNS_GfdDefaultFuncAllocPlttVram mov r1, #0 add r4, r0, #0 ldr r3, [r3] @@ -4016,17 +4016,17 @@ MOD12_0222F6E0: ; 0x0222F6E0 add r5, r0, #0 cmp r4, #0 bne _0222F708 - bl ErrorHandling + bl GF_AssertFail _0222F708: cmp r5, #0 bne _0222F710 - bl ErrorHandling + bl GF_AssertFail _0222F710: bl FUN_02012CC8 pop {r3, r4, r5, pc} nop -_0222F718: .word UNK_021064B8 -_0222F71C: .word UNK_021064C0 +_0222F718: .word NNS_GfdDefaultFuncAllocTexVram +_0222F71C: .word NNS_GfdDefaultFuncAllocPlttVram thumb_func_start MOD12_0222F720 MOD12_0222F720: ; 0x0222F720 @@ -4035,7 +4035,7 @@ MOD12_0222F720: ; 0x0222F720 ldr r0, [r4] cmp r0, #0 bne _0222F72E - bl ErrorHandling + bl GF_AssertFail _0222F72E: mov r3, #0 mov r0, #3 @@ -4185,7 +4185,7 @@ MOD12_0222F834: ; 0x0222F834 ldr r2, [r5, #0x30] mov r0, #0x2d mov r3, #3 - bl FUN_0200687C + bl GfGfxLoader_LoadCharData mov r0, #0 str r0, [sp] str r0, [sp, #4] @@ -4197,7 +4197,7 @@ MOD12_0222F834: ; 0x0222F834 mov r0, #0x2d mov r1, #0x15 mov r3, #3 - bl FUN_020068C8 + bl GfGfxLoader_LoadScrnData ldr r0, [r5, #0x30] mov r1, #1 bl FUN_02018744 @@ -4260,7 +4260,7 @@ MOD12_0222F834: ; 0x0222F834 mov r0, #0x2d mov r1, #0x17 mov r3, #2 - bl FUN_0200687C + bl GfGfxLoader_LoadCharData mov r0, #0 str r0, [sp] str r0, [sp, #4] @@ -4272,7 +4272,7 @@ MOD12_0222F834: ; 0x0222F834 mov r0, #0x2d mov r1, #0x14 mov r3, #2 - bl FUN_020068C8 + bl GfGfxLoader_LoadScrnData mov r0, #0 str r0, [sp] mov r0, #0x20 @@ -4310,7 +4310,7 @@ MOD12_0222F938: ; 0x0222F938 mov r0, #0x2d mov r1, #0x12 mov r3, #4 - bl FUN_0200687C + bl GfGfxLoader_LoadCharData mov r0, #0 str r0, [sp] str r0, [sp, #4] @@ -4322,7 +4322,7 @@ MOD12_0222F938: ; 0x0222F938 mov r0, #0x2d mov r1, #0x13 mov r3, #4 - bl FUN_020068C8 + bl GfGfxLoader_LoadScrnData mov r0, #1 str r0, [sp] mov r0, #0 @@ -5408,7 +5408,7 @@ MOD12_0223023C: ; 0x0223023C bl FUN_020133C8 cmp r0, #0 beq _02230254 - bl ErrorHandling + bl GF_AssertFail _02230254: add r0, r4, #0 bl MOD12_02230A40 @@ -5945,7 +5945,7 @@ MOD12_022306F8: ; 0x022306F8 ldr r0, [r5] cmp r0, #0 bne _02230706 - bl ErrorHandling + bl GF_AssertFail _02230706: mov r4, #0xad lsl r4, r4, #4 @@ -6184,7 +6184,7 @@ MOD12_022308F0: ; 0x022308F0 mov r0, #0x2d mov r1, #0xd mov r3, #3 - bl FUN_0200687C + bl GfGfxLoader_LoadCharData mov r0, #0 str r0, [sp] str r0, [sp, #4] @@ -6196,7 +6196,7 @@ MOD12_022308F0: ; 0x022308F0 mov r0, #0x2d mov r1, #0xe mov r3, #3 - bl FUN_020068C8 + bl GfGfxLoader_LoadScrnData mov r0, #0 str r0, [sp] str r0, [sp, #4] @@ -6292,7 +6292,7 @@ MOD12_022309D8: ; 0x022309D8 ldr r0, [r4, #0xc] cmp r0, #0 beq _022309E8 - bl ErrorHandling + bl GF_AssertFail _022309E8: mov r1, #0x12 mov r0, #0x17 @@ -6350,7 +6350,7 @@ MOD12_02230A40: ; 0x02230A40 thumb_func_start MOD12_02230A60 MOD12_02230A60: ; 0x02230A60 push {r4, lr} - ldr r3, _02230A78 ; =UNK_021064B8 + ldr r3, _02230A78 ; =NNS_GfdDefaultFuncAllocTexVram mov r2, #0 ldr r3, [r3] blx r3 @@ -6360,12 +6360,12 @@ MOD12_02230A60: ; 0x02230A60 lsr r0, r0, #0xd pop {r4, pc} nop -_02230A78: .word UNK_021064B8 +_02230A78: .word NNS_GfdDefaultFuncAllocTexVram thumb_func_start MOD12_02230A7C MOD12_02230A7C: ; 0x02230A7C push {r4, lr} - ldr r3, _02230A94 ; =UNK_021064C0 + ldr r3, _02230A94 ; =NNS_GfdDefaultFuncAllocPlttVram mov r2, #0 ldr r3, [r3] blx r3 @@ -6375,7 +6375,7 @@ MOD12_02230A7C: ; 0x02230A7C lsr r0, r0, #0xd pop {r4, pc} nop -_02230A94: .word UNK_021064C0 +_02230A94: .word NNS_GfdDefaultFuncAllocPlttVram thumb_func_start MOD12_02230A98 MOD12_02230A98: ; 0x02230A98 @@ -7568,7 +7568,7 @@ MOD12_02231380: ; 0x02231380 add r6, r6, #1 _022313B0: add r0, sp, #0x34 - bl FUN_0201901C + bl InitWindow mov r0, #0 str r0, [sp] str r0, [sp, #4] @@ -7947,7 +7947,7 @@ _022316A6: mov r6, #0x69 b _022316B2 _022316AA: - bl ErrorHandling + bl GF_AssertFail add sp, #0x14 pop {r4, r5, r6, r7, pc} _022316B2: @@ -8241,7 +8241,7 @@ MOD12_022318DC: ; 0x022318DC ldr r0, [r4] cmp r0, #0 bne _022318EA - bl ErrorHandling + bl GF_AssertFail _022318EA: ldr r0, [r4] bl FUN_0200CAB4 @@ -8440,7 +8440,7 @@ _02231A4C: mov r0, #0x2d mov r2, #1 add r3, sp, #0xc - bl FUN_02006BDC + bl GfGfxLoader_GetScrnData add r6, r0, #0 lsl r0, r5, #2 add r0, r4, r0 @@ -8679,7 +8679,7 @@ _02231C40: mov r0, #0x2d mov r2, #1 add r3, r7, r3 - bl FUN_02006BB0 + bl GfGfxLoader_GetCharData mov r1, #0xb6 lsl r1, r1, #2 str r0, [r7, r1] @@ -8711,7 +8711,7 @@ MOD12_02231C80: ; 0x02231C80 sub r0, r6, #1 cmp r1, r0 bne _02231C96 - bl ErrorHandling + bl GF_AssertFail _02231C96: mov r0, #0x2e lsl r0, r0, #4 @@ -8730,7 +8730,7 @@ _02231CB0: ldr r0, [r4, #0x18] cmp r0, #0 bne _02231CBA - bl ErrorHandling + bl GF_AssertFail _02231CBA: ldr r0, [r4, #0x14] bl FUN_02020988 @@ -9148,7 +9148,7 @@ _02231FC0: ldrb r0, [r6, r0] cmp r0, #0xff beq _02232000 - bl ErrorHandling + bl GF_AssertFail _02232000: ldr r0, _022320A0 ; =0x000002E1 strb r4, [r6, r0] @@ -9181,7 +9181,7 @@ _02232030: str r0, [sp, #0x1c] cmp r0, #6 ble _02232040 - bl ErrorHandling + bl GF_AssertFail _02232040: mov r0, #0x18 mul r0, r4 @@ -9201,7 +9201,7 @@ _02232054: ldr r0, [r1, r0] cmp r0, #0 beq _02232066 - bl ErrorHandling + bl GF_AssertFail _02232066: ldr r0, [sp, #0x20] ldr r3, _022320BC ; =MOD12_02244E50 @@ -9516,7 +9516,7 @@ MOD12_022322C0: ; 0x022322C0 ldr r4, [sp, #0xa8] cmp r0, #0 beq _022322DA - bl ErrorHandling + bl GF_AssertFail _022322DA: ldr r1, [r7, #4] cmp r4, #0 @@ -9540,7 +9540,7 @@ _022322FE: cmp r4, #0 bne _0223233C add r0, sp, #0x3c - bl FUN_0201901C + bl InitWindow mov r0, #0 str r0, [sp] str r0, [sp, #4] @@ -9759,7 +9759,7 @@ _0223249A: ldr r0, [r1, r0] cmp r0, #0 beq _022324AC - bl ErrorHandling + bl GF_AssertFail _022324AC: lsl r0, r4, #1 ldrh r0, [r7, r0] @@ -9989,7 +9989,7 @@ MOD12_02232654: ; 0x02232654 ldr r0, [r4, #0x10] cmp r0, #0 beq _02232664 - bl ErrorHandling + bl GF_AssertFail _02232664: mov r0, #0xb9 lsl r0, r0, #2 @@ -10516,7 +10516,7 @@ MOD12_02232A68: ; 0x02232A68 ldr r0, [r4, #0x14] cmp r0, #0 beq _02232A78 - bl ErrorHandling + bl GF_AssertFail _02232A78: mov r0, #0xc1 lsl r0, r0, #2 @@ -10928,7 +10928,7 @@ MOD12_02232D7C: ; 0x02232D7C bl FUN_02019178 _02232DA8: add r0, r4, #0 - bl FUN_0201901C + bl InitWindow mov r0, #0 str r0, [sp] str r0, [sp, #4] @@ -12081,7 +12081,7 @@ MOD12_0223361C: ; 0x0223361C ldrb r0, [r4, #0xb] cmp r0, #0 beq _0223362A - bl ErrorHandling + bl GF_AssertFail _0223362A: ldr r0, [r4, #4] bl FUN_0200CAB4 @@ -12174,7 +12174,7 @@ MOD12_022336AC: ; 0x022336AC ldr r0, [r0, #0x58] cmp r0, #0 bne _022336D4 - bl ErrorHandling + bl GF_AssertFail _022336D4: add r2, r5, #0 add r2, #0x58 @@ -12256,7 +12256,7 @@ _02233772: ldr r0, [r7, #0x58] cmp r0, #0 beq _0223377C - bl ErrorHandling + bl GF_AssertFail _0223377C: mov r1, #0x32 mov r0, #0x15 @@ -12322,7 +12322,7 @@ _022337E6: ldr r0, [r0] cmp r0, #0 beq _0223380C - bl ErrorHandling + bl GF_AssertFail _0223380C: mov r1, #0x32 mov r0, #0x15 @@ -12802,7 +12802,7 @@ MOD12_02233BBC: ; 0x02233BBC ldr r0, [r4, r0] cmp r0, #0 bne _02233BCE - bl ErrorHandling + bl GF_AssertFail _02233BCE: mov r0, #0x5f lsl r0, r0, #2 @@ -12826,7 +12826,7 @@ MOD12_02233BE4: ; 0x02233BE4 add r5, r2, #0 cmp r0, #0 bne _02233BFA - bl ErrorHandling + bl GF_AssertFail _02233BFA: ldr r1, _02233C60 ; =MOD12_02245200 lsl r2, r6, #2 @@ -12893,7 +12893,7 @@ MOD12_02233C74: ; 0x02233C74 ldr r0, [r4, r0] cmp r0, #0 bne _02233C86 - bl ErrorHandling + bl GF_AssertFail _02233C86: mov r0, #0x5f lsl r0, r0, #2 @@ -13217,7 +13217,7 @@ MOD12_02233EEC: ; 0x02233EEC add r4, r1, #0 cmp r0, #0 beq _02233F00 - bl ErrorHandling + bl GF_AssertFail _02233F00: mov r0, #1 str r0, [sp] @@ -14137,7 +14137,7 @@ MOD12_02234628: ; 0x02234628 str r0, [sp, #4] cmp r0, #5 ble _02234644 - bl ErrorHandling + bl GF_AssertFail _02234644: ldr r0, [sp] mov r1, #0x14 @@ -14681,7 +14681,7 @@ MOD12_02234A60: ; 0x02234A60 blt _02234A78 cmp r5, #0 bne _02234A78 - bl ErrorHandling + bl GF_AssertFail _02234A78: cmp r7, #0x1c bls _02234A7E @@ -15213,7 +15213,7 @@ _02234ECC: add sp, #8 pop {r3, r4, r5, r6, r7, pc} _02234EF2: - bl ErrorHandling + bl GF_AssertFail _02234EF6: add sp, #8 pop {r3, r4, r5, r6, r7, pc} @@ -15225,7 +15225,7 @@ MOD12_02234EFC: ; 0x02234EFC add r4, r0, #0 add r0, #0x34 mov r1, #0xff - bl FUN_02019620 + bl FillWindowPixelBuffer add r4, #0x34 add r0, r4, #0 bl CopyWindowToVram @@ -15275,7 +15275,7 @@ _02234F42: add r0, r5, #0 add r0, #0x34 mov r1, #0xff - bl FUN_02019620 + bl FillWindowPixelBuffer mov r3, #0 str r3, [sp] str r4, [sp, #4] @@ -15317,7 +15317,7 @@ MOD12_02234FB0: ; 0x02234FB0 add r6, r3, #0 cmp r5, #0x2f blo _02234FC4 - bl ErrorHandling + bl GF_AssertFail _02234FC4: ldr r0, _02234FE4 ; =MOD12_0224540C + 3 lsl r3, r5, #2 @@ -15734,11 +15734,11 @@ _022352D6: ldr r4, [r0, r1] cmp r4, #0 bge _022352E4 - bl ErrorHandling + bl GF_AssertFail _022352E4: cmp r4, #0x7f ble _022352EC - bl ErrorHandling + bl GF_AssertFail _022352EC: add r0, r4, #0 pop {r4, pc} @@ -15831,7 +15831,7 @@ _02235382: mov r0, #0x2d ldr r2, [r2, #0x30] mov r3, #3 - bl FUN_020068C8 + bl GfGfxLoader_LoadScrnData ldrb r0, [r4, #8] add sp, #0x10 add r0, r0, #1 @@ -24466,13 +24466,13 @@ _02239404: ldrh r0, [r0] cmp r0, #0 bne _02239428 - bl ErrorHandling + bl GF_AssertFail _02239428: ldr r0, [sp, #0x58] ldrb r0, [r0] cmp r0, #3 blo _02239434 - bl ErrorHandling + bl GF_AssertFail _02239434: add sp, #0x44 pop {r4, r5, r6, r7, pc} @@ -25164,7 +25164,7 @@ MOD12_02239838: ; 0x02239838 ldr r0, [r0, #0x48] cmp r0, #0 beq _02239872 - bl ErrorHandling + bl GF_AssertFail pop {r3, r4, r5, r6, r7, pc} _02239858: bl FUN_02007534 @@ -25390,7 +25390,7 @@ MOD12_02239A10: ; 0x02239A10 add r4, r1, #0 cmp r0, #0 beq _02239A22 - bl ErrorHandling + bl GF_AssertFail _02239A22: mov r1, #0x30 ldr r2, [r5] @@ -25442,7 +25442,7 @@ MOD12_02239A6C: ; 0x02239A6C beq _02239A82 cmp r6, #0 bne _02239A82 - bl ErrorHandling + bl GF_AssertFail _02239A82: cmp r4, #0 beq _02239ACC @@ -25477,7 +25477,7 @@ _02239A82: add sp, #8 pop {r4, r5, r6, pc} _02239AC8: - bl ErrorHandling + bl GF_AssertFail _02239ACC: add sp, #8 pop {r4, r5, r6, pc} @@ -25518,7 +25518,7 @@ _02239AF4: add r0, r5, #0 add r0, #0x34 mov r1, #0xff - bl FUN_02019620 + bl FillWindowPixelBuffer mov r3, #0 str r3, [sp] str r4, [sp, #4] @@ -25547,7 +25547,7 @@ MOD12_02239B48: ; 0x02239B48 add r4, r2, #0 cmp r5, #0xf blo _02239B5A - bl ErrorHandling + bl GF_AssertFail _02239B5A: str r4, [sp] ldr r2, _02239B74 ; =MOD12_02245F48 @@ -25820,7 +25820,7 @@ _02239C90: ldr r2, [r6, #0x30] mov r0, #0x2d mov r1, #0x14 - bl FUN_020068C8 + bl GfGfxLoader_LoadScrnData ldr r0, _02239D84 ; =MOD12_02239D8C ldr r2, _02239D88 ; =0x00007530 add r1, r4, #0 @@ -27277,7 +27277,7 @@ _0223A886: ldr r0, [r0, #0x24] cmp r0, #0 bne _0223A892 - bl ErrorHandling + bl GF_AssertFail _0223A892: ldr r0, [r4] mov r1, #0 @@ -27863,7 +27863,7 @@ _0223AD20: ldr r0, [r0, #0x24] cmp r0, #0 bne _0223AD2C - bl ErrorHandling + bl GF_AssertFail _0223AD2C: ldrb r0, [r4, #0xf] add r0, r0, #1 @@ -28948,7 +28948,7 @@ MOD12_0223B4F8: ; 0x0223B4F8 mov r1, #9 mov r2, #1 add r3, sp, #0xc - bl FUN_02006BB0 + bl GfGfxLoader_GetCharData add r5, r0, #0 ldr r0, [sp, #0xc] add r1, r4, #0 @@ -28966,7 +28966,7 @@ MOD12_0223B4F8: ; 0x0223B4F8 mov r1, #0x11 mov r2, #1 add r3, sp, #0xc - bl FUN_02006BB0 + bl GfGfxLoader_GetCharData add r5, r0, #0 ldr r0, [sp, #0xc] add r1, r4, #0 @@ -28984,7 +28984,7 @@ MOD12_0223B4F8: ; 0x0223B4F8 mov r1, #0xf mov r2, #1 add r3, sp, #0xc - bl FUN_02006BB0 + bl GfGfxLoader_GetCharData add r5, r0, #0 ldr r0, [sp, #0xc] add r1, r4, #0 @@ -29002,7 +29002,7 @@ MOD12_0223B4F8: ; 0x0223B4F8 mov r1, #7 mov r2, #1 add r3, sp, #8 - bl FUN_02006BDC + bl GfGfxLoader_GetScrnData add r1, r4, #0 add r5, r0, #0 ldr r0, [sp, #8] @@ -29020,7 +29020,7 @@ MOD12_0223B4F8: ; 0x0223B4F8 mov r1, #8 mov r2, #1 add r3, sp, #8 - bl FUN_02006BDC + bl GfGfxLoader_GetScrnData add r1, r4, #0 add r5, r0, #0 ldr r0, [sp, #8] @@ -29038,7 +29038,7 @@ MOD12_0223B4F8: ; 0x0223B4F8 mov r1, #0x10 mov r2, #1 add r3, sp, #8 - bl FUN_02006BDC + bl GfGfxLoader_GetScrnData add r1, r4, #0 add r5, r0, #0 ldr r0, [sp, #8] @@ -29056,7 +29056,7 @@ MOD12_0223B4F8: ; 0x0223B4F8 mov r1, #0x1b mov r2, #1 add r3, sp, #8 - bl FUN_02006BDC + bl GfGfxLoader_GetScrnData add r1, r4, #0 add r5, r0, #0 ldr r0, [sp, #8] @@ -29305,7 +29305,7 @@ MOD12_0223B878: ; 0x0223B878 sub r0, #0x97 cmp r1, r0 bne _0223B88A - bl ErrorHandling + bl GF_AssertFail _0223B88A: mov r0, #0x96 ldrsb r1, [r5, r0] @@ -29323,7 +29323,7 @@ _0223B8A2: ldr r0, [r4, #0x18] cmp r0, #0 bne _0223B8AC - bl ErrorHandling + bl GF_AssertFail _0223B8AC: ldr r0, [r4, #0x14] bl FUN_02020988 @@ -29881,7 +29881,7 @@ MOD12_0223BCD8: ; 0x0223BCD8 ldr r4, [sp, #0x9c] cmp r0, #0 beq _0223BCF0 - bl ErrorHandling + bl GF_AssertFail _0223BCF0: ldr r0, [sp, #0x18] mov r2, #0 @@ -29905,7 +29905,7 @@ _0223BCF0: add r6, r6, #1 _0223BD1C: add r0, sp, #0x38 - bl FUN_0201901C + bl InitWindow mov r0, #0 str r0, [sp] str r0, [sp, #4] @@ -30080,7 +30080,7 @@ MOD12_0223BE64: ; 0x0223BE64 ldr r0, [r4, #0xc] cmp r0, #0 beq _0223BE74 - bl ErrorHandling + bl GF_AssertFail _0223BE74: add r0, r4, #0 add r0, #0x98 @@ -30605,7 +30605,7 @@ _0223C252: ldr r0, [r0] cmp r0, #0 beq _0223C262 - bl ErrorHandling + bl GF_AssertFail _0223C262: add r4, r4, #1 _0223C264: @@ -31107,7 +31107,7 @@ _0223C618: add r2, r2, #4 cmp r0, #0x44 blt _0223C602 - bl ErrorHandling + bl GF_AssertFail mov r0, #0 add sp, #0x34 pop {r4, r5, r6, r7, pc} @@ -33052,7 +33052,7 @@ _0223D532: mvn r4, r4 cmp r0, r4 bne _0223D540 - bl ErrorHandling + bl GF_AssertFail pop {r4, r5, r6, pc} _0223D540: strb r3, [r1, r0] @@ -33295,7 +33295,7 @@ _0223D6DA: add r7, r0, #0 b _0223D70C _0223D708: - bl ErrorHandling + bl GF_AssertFail _0223D70C: cmp r7, #1 bne _0223D750 @@ -33988,7 +33988,7 @@ MOD12_0223DC28: ; 0x0223DC28 str r2, [sp] cmp r0, #0 beq _0223DC46 - bl ErrorHandling + bl GF_AssertFail _0223DC46: ldr r0, _0223DCB0 ; =0x0000106C mov r2, #0x28 @@ -34173,7 +34173,7 @@ _0223DD92: strb r0, [r2, r3] pop {r3, r4, r5, pc} _0223DDA4: - bl ErrorHandling + bl GF_AssertFail _0223DDA8: pop {r3, r4, r5, pc} nop @@ -34549,7 +34549,7 @@ MOD12_0223E068: ; 0x0223E068 beq _0223E07E cmp r5, #0 bne _0223E07E - bl ErrorHandling + bl GF_AssertFail _0223E07E: cmp r6, #6 bls _0223E084 @@ -34722,7 +34722,7 @@ _0223E16A: add sp, #8 pop {r4, r5, r6, pc} _0223E1E4: - bl ErrorHandling + bl GF_AssertFail _0223E1E8: add sp, #8 pop {r4, r5, r6, pc} @@ -34767,7 +34767,7 @@ _0223E210: add r0, r5, #0 add r0, #0x78 mov r1, #0xff - bl FUN_02019620 + bl FillWindowPixelBuffer mov r3, #0 str r3, [sp] str r4, [sp, #4] @@ -34799,7 +34799,7 @@ MOD12_0223E274: ; 0x0223E274 add r6, r2, #0 cmp r4, #8 blo _0223E286 - bl ErrorHandling + bl GF_AssertFail _0223E286: lsl r3, r4, #2 ldr r2, _0223E2A0 ; =MOD12_02246224 @@ -34891,7 +34891,7 @@ MOD12_0223E32C: ; 0x0223E32C ldr r0, [r5, r0] cmp r0, #0 beq _0223E33E - bl ErrorHandling + bl GF_AssertFail _0223E33E: mov r0, #0x17 mov r1, #0x10 @@ -35065,7 +35065,7 @@ MOD12_0223E488: ; 0x0223E488 add r7, r2, #0 cmp r4, #8 blo _0223E49A - bl ErrorHandling + bl GF_AssertFail _0223E49A: ldr r0, _0223E51C ; =0x00001BF1 ldrb r0, [r5, r0] @@ -35104,7 +35104,7 @@ _0223E49A: add r0, r5, #0 add r0, #0x88 mov r1, #0xff - bl FUN_02019620 + bl FillWindowPixelBuffer mov r3, #0 str r3, [sp] str r3, [sp, #4] @@ -35570,7 +35570,7 @@ MOD12_0223E868: ; 0x0223E868 ldr r0, [r4, r0] cmp r0, #0 beq _0223E87A - bl ErrorHandling + bl GF_AssertFail _0223E87A: mov r0, #0x81 lsl r0, r0, #2 @@ -35613,7 +35613,7 @@ MOD12_0223E8B4: ; 0x0223E8B4 ldr r0, [r4, #4] cmp r0, #0 bne _0223E8C8 - bl ErrorHandling + bl GF_AssertFail _0223E8C8: cmp r5, #0 bne _0223E8D0 @@ -35753,7 +35753,7 @@ MOD12_0223E9C4: ; 0x0223E9C4 add r6, r2, #0 cmp r5, #0x21 blo _0223E9D6 - bl ErrorHandling + bl GF_AssertFail _0223E9D6: ldr r0, _0223EA3C ; =MOD12_0224637C lsl r1, r5, #2 @@ -38064,7 +38064,7 @@ _0223FBA6: mov r0, #4 pop {r3, pc} _0223FBAA: - bl ErrorHandling + bl GF_AssertFail mov r0, #0 pop {r3, pc} .align 2, 0 @@ -38099,7 +38099,7 @@ _0223FBDC: mov r0, #3 pop {r3, pc} _0223FBE0: - bl ErrorHandling + bl GF_AssertFail mov r0, #0 pop {r3, pc} @@ -39925,7 +39925,7 @@ MOD12_022409CC: ; 0x022409CC add r4, r0, #0 cmp r5, #4 blo _022409DA - bl ErrorHandling + bl GF_AssertFail _022409DA: ldr r0, _02240A0C ; =MOD12_022464C0 cmp r4, #3 @@ -39967,7 +39967,7 @@ MOD12_02240A10: ; 0x02240A10 add r4, r3, #0 cmp r7, #4 blo _02240A22 - bl ErrorHandling + bl GF_AssertFail _02240A22: mov r0, #0 mvn r0, r0 @@ -40469,7 +40469,7 @@ MOD12_02240DC4: ; 0x02240DC4 add r4, r0, #0 cmp r4, #5 blo _02240DD0 - bl ErrorHandling + bl GF_AssertFail _02240DD0: ldr r0, _02240DD8 ; =MOD12_022464D0 lsl r1, r4, #2 @@ -40494,7 +40494,7 @@ MOD12_02240DE4: ; 0x02240DE4 add r4, r0, #0 cmp r4, #5 blo _02240DF0 - bl ErrorHandling + bl GF_AssertFail _02240DF0: ldr r0, _02240DF8 ; =MOD12_022464C8 ldrb r0, [r0, r4] @@ -40660,7 +40660,7 @@ _02240F14: add r4, r4, #1 cmp r4, #0x20 blt _02240F00 - bl ErrorHandling + bl GF_AssertFail mov r0, #0 pop {r3, r4, r5, pc} .align 2, 0 @@ -40695,7 +40695,7 @@ MOD12_02240F3C: ; 0x02240F3C str r3, [sp] cmp r4, r0 bls _02240F5A - bl ErrorHandling + bl GF_AssertFail _02240F5A: add r0, r5, #0 mov r2, #2 @@ -40750,7 +40750,7 @@ MOD12_02240FB0: ; 0x02240FB0 str r3, [sp] cmp r7, r0 bls _02240FCC - bl ErrorHandling + bl GF_AssertFail _02240FCC: add r0, r5, #0 mov r2, #2 @@ -40840,7 +40840,7 @@ _02241066: ldrh r0, [r5, #4] cmp r4, r0 blt _02241070 - bl ErrorHandling + bl GF_AssertFail _02241070: add r0, r5, #0 add r1, r6, #0 @@ -42062,14 +42062,14 @@ _02241B08: .word 0x00000133 thumb_func_start MOD12_02241B0C MOD12_02241B0C: ; 0x02241B0C push {r3, r4, r5, lr} - ldr r3, _02241B44 ; =UNK_021064B8 + ldr r3, _02241B44 ; =NNS_GfdDefaultFuncAllocTexVram mov r0, #2 mov r1, #0 ldr r3, [r3] lsl r0, r0, #0xe add r2, r1, #0 blx r3 - ldr r3, _02241B48 ; =UNK_021064C0 + ldr r3, _02241B48 ; =NNS_GfdDefaultFuncAllocPlttVram mov r1, #0 add r4, r0, #0 ldr r3, [r3] @@ -42079,17 +42079,17 @@ MOD12_02241B0C: ; 0x02241B0C add r5, r0, #0 cmp r4, #0 bne _02241B34 - bl ErrorHandling + bl GF_AssertFail _02241B34: cmp r5, #0 bne _02241B3C - bl ErrorHandling + bl GF_AssertFail _02241B3C: bl FUN_02012CC8 pop {r3, r4, r5, pc} nop -_02241B44: .word UNK_021064B8 -_02241B48: .word UNK_021064C0 +_02241B44: .word NNS_GfdDefaultFuncAllocTexVram +_02241B48: .word NNS_GfdDefaultFuncAllocPlttVram thumb_func_start MOD12_02241B4C MOD12_02241B4C: ; 0x02241B4C @@ -42098,7 +42098,7 @@ MOD12_02241B4C: ; 0x02241B4C ldr r0, [r4] cmp r0, #0 bne _02241B5A - bl ErrorHandling + bl GF_AssertFail _02241B5A: mov r1, #0xf3 mov r5, #0 @@ -42170,7 +42170,7 @@ MOD12_02241BA0: ; 0x02241BA0 mov r0, #0x2d mov r1, #0x12 mov r3, #4 - bl FUN_0200687C + bl GfGfxLoader_LoadCharData mov r0, #0 str r0, [sp] str r0, [sp, #4] @@ -42182,7 +42182,7 @@ MOD12_02241BA0: ; 0x02241BA0 mov r0, #0x2d mov r1, #0x13 mov r3, #4 - bl FUN_020068C8 + bl GfGfxLoader_LoadScrnData mov r0, #1 str r0, [sp] mov r0, #0 @@ -42233,7 +42233,7 @@ _02241C1E: _02241C2C: cmp r5, #4 bne _02241C34 - bl ErrorHandling + bl GF_AssertFail _02241C34: ldr r0, _02241CE8 ; =0x00000438 ldr r1, _02241CEC ; =0x00000439 @@ -43323,7 +43323,7 @@ _02242462: ldr r0, [r0] cmp r0, #0 beq _0224247A - bl ErrorHandling + bl GF_AssertFail _0224247A: mov r1, #0x32 mov r0, #0x18 @@ -43404,7 +43404,7 @@ MOD12_02242500: ; 0x02242500 beq _02242516 cmp r5, #0 bne _02242516 - bl ErrorHandling + bl GF_AssertFail _02242516: cmp r6, #3 bhi _022425EC @@ -43509,7 +43509,7 @@ _02242596: add sp, #8 pop {r4, r5, r6, pc} _022425EC: - bl ErrorHandling + bl GF_AssertFail _022425F0: add sp, #8 pop {r4, r5, r6, pc} @@ -43554,7 +43554,7 @@ _02242618: add r0, r5, #0 add r0, #0x34 mov r1, #0xff - bl FUN_02019620 + bl FillWindowPixelBuffer mov r3, #0 str r3, [sp] str r4, [sp, #4] @@ -43586,7 +43586,7 @@ MOD12_02242678: ; 0x02242678 add r6, r2, #0 cmp r4, #7 blo _0224268A - bl ErrorHandling + bl GF_AssertFail _0224268A: lsl r3, r4, #2 ldr r2, _022426A4 ; =MOD12_0224664C @@ -43630,7 +43630,7 @@ MOD12_022426BC: ; 0x022426BC mov r0, #0x2d mov r1, #0x16 mov r3, #3 - bl FUN_0200687C + bl GfGfxLoader_LoadCharData mov r0, #0 str r0, [sp] str r0, [sp, #4] @@ -43642,7 +43642,7 @@ MOD12_022426BC: ; 0x022426BC mov r0, #0x2d mov r1, #0x15 mov r3, #3 - bl FUN_020068C8 + bl GfGfxLoader_LoadScrnData ldr r0, [r5, #0x30] mov r1, #1 bl FUN_02018744 @@ -43789,7 +43789,7 @@ MOD12_02242804: ; 0x02242804 mov r0, #0x2d mov r1, #0x1a mov r3, #3 - bl FUN_0200687C + bl GfGfxLoader_LoadCharData mov r0, #0 str r0, [sp] str r0, [sp, #4] @@ -43800,7 +43800,7 @@ MOD12_02242804: ; 0x02242804 ldr r2, [r6, #0x30] mov r0, #0x2d mov r3, #3 - bl FUN_020068C8 + bl GfGfxLoader_LoadScrnData mov r0, #0 str r0, [sp] str r0, [sp, #4] @@ -43812,7 +43812,7 @@ MOD12_02242804: ; 0x02242804 mov r0, #0x2d mov r1, #0x19 mov r3, #2 - bl FUN_020068C8 + bl GfGfxLoader_LoadScrnData ldr r0, [r6, #0x30] mov r1, #1 bl FUN_02018744 @@ -43894,13 +43894,13 @@ _022428E6: str r0, [sp, #0x14] add r0, r4, r0 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer add r0, r5, #5 lsl r0, r0, #4 str r0, [sp, #0x18] add r0, r4, r0 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer mov r0, #3 str r0, [sp] mov r0, #0 @@ -44869,7 +44869,7 @@ _022430EC: add r4, r2, r0 b _02243114 _0224310C: - bl ErrorHandling + bl GF_AssertFail add sp, #0x18 pop {r3, r4, r5, r6, r7, pc} _02243114: @@ -44901,7 +44901,7 @@ _02243144: ldr r0, [sp, #0xc] cmp r0, #0xc ble _0224314E - bl ErrorHandling + bl GF_AssertFail _0224314E: mov r0, #0 str r0, [sp, #8] @@ -45562,7 +45562,7 @@ _02243628: str r0, [r4] b _02243638 _02243630: - bl ErrorHandling + bl GF_AssertFail add sp, #0x34 pop {r4, r5, r6, r7, pc} _02243638: @@ -47014,7 +47014,7 @@ _022440EE: ldr r0, [r4] mov r1, #0xff add r0, #0x34 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, [r4] add r0, #0x34 bl CopyWindowToVram @@ -47498,7 +47498,7 @@ _022444C4: blt _022444C4 b _022444D8 _022444D4: - bl ErrorHandling + bl GF_AssertFail _022444D8: ldr r0, _022444F0 ; =MOD12_022444F8 ldr r2, _022444F4 ; =0x00007530 @@ -47817,7 +47817,7 @@ MOD12_0224473C: ; 0x0224473C mov r0, #0x5a add r1, r1, #3 str r2, [sp] - bl UncompressFromNarc + bl GfGfxLoader_LoadFromNarc pop {r3, pc} .align 2, 0 diff --git a/arm9/modules/13/asm/module_13_arm2.s b/arm9/modules/13/asm/module_13_arm2.s index 0e89d90f..5aee0b46 100644 --- a/arm9/modules/13/asm/module_13_arm2.s +++ b/arm9/modules/13/asm/module_13_arm2.s @@ -25937,27 +25937,27 @@ _022341D8: .word 0x0000A001 arm_func_start MOD13_022341DC MOD13_022341DC: ; 0x022341DC - ldr ip, _022341E4 ; =FUN_020C01A0 + ldr ip, _022341E4 ; =NNS_SndMain bx ip .align 2, 0 -_022341E4: .word FUN_020C01A0 +_022341E4: .word NNS_SndMain arm_func_start MOD13_022341E8 MOD13_022341E8: ; 0x022341E8 ldr r0, _02234200 ; =0x02243154 - ldr ip, _02234204 ; =FUN_020C10A4 + ldr ip, _02234204 ; =NNS_SndPlayerStopSeq ldr r0, [r0] mov r1, #0 add r0, r0, #0x90 bx ip .align 2, 0 _02234200: .word MOD13_02243154 -_02234204: .word FUN_020C10A4 +_02234204: .word NNS_SndPlayerStopSeq arm_func_start MOD13_02234208 MOD13_02234208: ; 0x02234208 ldr r2, _02234224 ; =0x02243154 - ldr ip, _02234228 ; =FUN_020C0EA4 + ldr ip, _02234228 ; =NNS_SndPlayerSetTrackPitch ldr r3, [r2] mov r2, r1 mov r1, r0 @@ -25965,32 +25965,32 @@ MOD13_02234208: ; 0x02234208 bx ip .align 2, 0 _02234224: .word MOD13_02243154 -_02234228: .word FUN_020C0EA4 +_02234228: .word NNS_SndPlayerSetTrackPitch arm_func_start MOD13_0223422C MOD13_0223422C: ; 0x0223422C ldr r2, _02234244 ; =0x02243154 mov r1, r0 ldr r0, [r2] - ldr ip, _02234248 ; =FUN_020C0F40 + ldr ip, _02234248 ; =NNS_SndPlayerSetVolume add r0, r0, #0x90 bx ip .align 2, 0 _02234244: .word MOD13_02243154 -_02234248: .word FUN_020C0F40 +_02234248: .word NNS_SndPlayerSetVolume arm_func_start MOD13_0223424C MOD13_0223424C: ; 0x0223424C ldr r1, _02234268 ; =0x02243154 mov r2, r0 ldr r0, [r1] - ldr ip, _0223426C ; =FUN_020C3888 + ldr ip, _0223426C ; =NNS_SndArcPlayerStartSeqArc mov r1, #0 add r0, r0, #0x90 bx ip .align 2, 0 _02234268: .word MOD13_02243154 -_0223426C: .word FUN_020C3888 +_0223426C: .word NNS_SndArcPlayerStartSeqArc arm_func_start MOD13_02234270 MOD13_02234270: ; 0x02234270 @@ -26024,17 +26024,17 @@ MOD13_022342A0: ; 0x022342A0 ldr r1, _0223432C ; =0x02243154 ldr r1, [r1] str r0, [r1, #0x94] - bl SDAT_Init + bl NNS_SndInit ldr r0, _0223432C ; =0x02243154 ldr r0, [r0] ldr r1, [r0, #0x94] - bl FUN_020C2444 + bl NNS_SndArcInitOnMemory mov r0, #0 - bl FUN_020C39CC + bl NNS_SndArcPlayerSetup ldr r0, _0223432C ; =0x02243154 ldr r0, [r0] add r0, r0, #0x90 - bl FUN_020C0F80 + bl NNS_SndHandleInit mov r0, #0 ldr r1, _02234334 ; =MOD13_022341DC mov r2, r0 @@ -33219,7 +33219,7 @@ MOD13_0223A440: ; 0x0223A440 str r1, [sp, #0xc] ldrb r1, [r4, #0x36] ldrb r2, [r4, #0x37] - bl FUN_020B5E50 + bl NNS_G2dArrangeOBJ1D add sp, sp, #0x10 ldmia sp!, {r4, r5, r6, r7, r8, pc} @@ -33245,7 +33245,7 @@ MOD13_0223A4F0: ; 0x0223A4F0 str lr, [sp, #8] add r0, r0, #0x20 str ip, [sp, #0xc] - bl FUN_020B7168 + bl NNSi_G2dTextCanvasDrawTextRect add sp, sp, #0x14 ldmia sp!, {pc} @@ -33271,14 +33271,14 @@ _0223A564: ldr r0, [r0] add r5, r0, r4 mov r0, r5 - bl FUN_020B5CE4 + bl NNS_G2dFontFindGlyphIndex mov r1, r0 ldr r0, _0223A5EC ; =0x0000FFFF cmp r1, r0 ldreq r0, [r5] ldreqh r1, [r0, #2] mov r0, r5 - bl FUN_020B5C88 + bl NNS_G2dFontGetCharWidthsFromIndex ldrh r1, [r5, #8] ldrh r2, [r7] ldr r3, [sp, #8] @@ -33319,7 +33319,7 @@ MOD13_0223A5F0: ; 0x0223A5F0 mla r1, ip, r3, lr mov r3, r2 mov r2, r4 - bl FUN_020B63CC + bl NNS_G2dCharCanvasDrawChar add sp, sp, #8 ldmia sp!, {r4, pc} .align 2, 0 @@ -33334,7 +33334,7 @@ MOD13_0223A634: ; 0x0223A634 str lr, [sp] add r0, r0, #0x20 str ip, [sp, #4] - bl FUN_020B7218 + bl NNSi_G2dTextCanvasDrawText add sp, sp, #0xc ldmia sp!, {pc} @@ -33504,7 +33504,7 @@ _0223A88C: mov r0, r6 mov r2, r4 mov r3, r5 - bl FUN_020B6388 + bl NNS_G2dCharCanvasInitForBG ldr r1, _0223A954 ; =0x022431A4 mov r0, #0xc ldr r2, [r1] @@ -33533,7 +33533,7 @@ _0223A8E0: str r7, [sp, #8] mov r4, #0xf str r4, [sp, #0xc] - bl FUN_020B6240 + bl NNS_G2dMapScrToCharText mov r0, r6 mov r1, #0 bl MOD13_0223A4D8 @@ -33601,7 +33601,7 @@ MOD13_0223A9A4: ; 0x0223A9A4 mov r0, r6 strh r1, [r4, #0x34] mov r1, r5 - bl FUN_020B6180 + bl NNSi_G2dCalcRequiredOBJ ldr r1, [sp, #0x20] cmp r7, #1 str r0, [r1] @@ -33614,7 +33614,7 @@ MOD13_0223A9A4: ; 0x0223A9A4 mov r2, r6 mov r3, r5 add r1, ip, r7, lsl #7 - bl FUN_020B62F8 + bl NNS_G2dCharCanvasInitForOBJ1D ldr r2, [r4, #0x18] mov r0, r4 mov r1, #0 @@ -33694,7 +33694,7 @@ _0223AB20: add r0, r2, r8, lsl #2 ldr r1, [r0, #0x78c] add r0, r2, r7 - bl FUN_020B5D3C + bl NNS_G2dFontInitUTF16 add r8, r8, #1 cmp r8, #2 add r7, r7, #0xc @@ -34004,7 +34004,7 @@ MOD13_0223AF48: ; 0x0223AF48 ldr r0, _0223AF8C ; =0x022431A8 mov r1, r5 ldr r0, [r0] - bl FUN_020ADDF0 + bl NNS_FndFreeToExpHeap mov r0, r4 bl OS_EnableIrqMask add sp, sp, #4 @@ -34026,7 +34026,7 @@ MOD13_0223AF90: ; 0x0223AF90 ldmeqia sp!, {r4, r5, pc} ldr r0, _0223AFDC ; =0x022431A8 ldr r0, [r0] - bl FUN_020ADDF0 + bl NNS_FndFreeToExpHeap mov r0, r4 bl OS_EnableIrqMask mov r0, #0 @@ -34060,7 +34060,7 @@ MOD13_0223B004: ; 0x0223B004 ldr r0, [r1] mov r1, r6 mov r2, r5 - bl tempName_NNS_FndAllocFromExpHeapEx + bl NNS_FndAllocFromExpHeapEx movs r5, r0 bne _0223B03C bl OS_Terminate @@ -34078,7 +34078,7 @@ MOD13_0223B050: ; 0x0223B050 sub sp, sp, #4 ldr r0, _0223B078 ; =0x022431A8 ldr r0, [r0] - bl thunk_FUN_020adc8c + bl NNS_FndDestroyExpHeap ldr r0, _0223B078 ; =0x022431A8 mov r1, #0 str r1, [r0] @@ -34097,7 +34097,7 @@ MOD13_0223B07C: ; 0x0223B07C mov r0, r4 mov r1, #0x40000 mov r2, #0 - bl tempName_NNS_FndCreateExpHeapEx + bl NNS_FndCreateExpHeapEx ldr r1, _0223B0B8 ; =0x022431A8 cmp r0, #0 str r0, [r1] diff --git a/arm9/modules/14/asm/module_14.s b/arm9/modules/14/asm/module_14.s index 37a18d6d..bdfed5b1 100644 --- a/arm9/modules/14/asm/module_14.s +++ b/arm9/modules/14/asm/module_14.s @@ -101,7 +101,7 @@ _021D759E: blx r1 pop {r4, pc} _021D75AA: - bl ErrorHandling + bl GF_AssertFail mov r0, #1 pop {r4, pc} nop @@ -122,8 +122,8 @@ StoragePC_Overlay_Teardown: ; 0x021D75B8 mov r0, #0x47 lsl r0, r0, #2 ldr r0, [r4, r0] - bl FUN_02029EF8 - bl FUN_02029F08 + bl Sav2_Chatot_get + bl Chatot_invalidate _021D75DE: mov r0, #0x45 lsl r0, r0, #2 @@ -3418,7 +3418,7 @@ _021D90B0: str r0, [r5] pop {r3, r4, r5, pc} _021D90F2: - bl ErrorHandling + bl GF_AssertFail mov r0, #1 str r0, [r5] pop {r3, r4, r5, pc} @@ -7587,7 +7587,7 @@ MOD14_021DB220: ; 0x021DB220 ldr r0, [r5, r0] cmp r0, #0 bne _021DB2C8 - bl ErrorHandling + bl GF_AssertFail _021DB2C8: mov r0, #0x69 lsl r0, r0, #2 @@ -8399,7 +8399,7 @@ _021DB8B6: mov r0, #1 pop {r3, r4, r5, r6, r7, pc} _021DB8C6: - bl ErrorHandling + bl GF_AssertFail mov r0, #0 pop {r3, r4, r5, r6, r7, pc} .align 2, 0 @@ -10519,7 +10519,7 @@ _021DC79C: mov r1, #0x10 orr r1, r2 str r1, [r0] - bl FUN_020B0FC0 + bl NNS_G2dInitOamManagerModule mov r0, #0 str r0, [sp] mov r2, #0x80 @@ -10547,7 +10547,7 @@ _021DC79C: mov r0, #0x51 lsl r0, r0, #2 add r0, r4, r0 - bl FUN_020B19DC + bl NNS_G2dInitImagePaletteProxy mov r0, #0xa str r0, [sp] mov r0, #0x51 @@ -10558,7 +10558,7 @@ _021DC79C: mov r1, #0x1a add r2, r5, #0 mov r3, #0 - bl FUN_02006A8C + bl GfGfxLoader_PartiallyLoadPalette mov r0, #0 mov r1, #0xa bl FUN_02002C84 @@ -10765,7 +10765,7 @@ MOD14_021DCA0C: ; 0x021DCA0C bl MOD14_021DDEF4 bl G3X_ResetMtxStack bl G3X_ResetMtxStack_2 - bl FUN_020B02C8 + bl NNS_G2dSetupSoftwareSpriteCamera mov r0, #0x56 lsl r0, r0, #2 ldr r0, [r4, r0] @@ -10910,7 +10910,7 @@ _021DCB3A: str r0, [r1, #8] pop {r3, r4, r5, r6, r7, pc} _021DCB78: - bl ErrorHandling + bl GF_AssertFail pop {r3, r4, r5, r6, r7, pc} _021DCB7E: add r4, r4, #1 @@ -10919,7 +10919,7 @@ _021DCB7E: blo _021DCB3A pop {r3, r4, r5, r6, r7, pc} _021DCB88: - bl ErrorHandling + bl GF_AssertFail pop {r3, r4, r5, r6, r7, pc} nop _021DCB90: .word MOD14_021E63D0 @@ -12965,7 +12965,7 @@ MOD14_021DDB50: ; 0x021DDB50 ldr r2, [r5, r2] mov r0, #0x12 mov r1, #4 - bl FUN_0200687C + bl GfGfxLoader_LoadCharData mov r2, #0 str r2, [sp] mov r0, #0x20 @@ -12996,7 +12996,7 @@ MOD14_021DDB50: ; 0x021DDB50 ldr r2, [r5, r2] mov r0, #0x12 mov r3, #2 - bl FUN_0200687C + bl GfGfxLoader_LoadCharData mov r0, #0xe0 str r0, [sp] mov r0, #0xa @@ -13005,7 +13005,7 @@ MOD14_021DDB50: ; 0x021DDB50 mov r0, #0x12 mov r1, #5 add r3, r2, #0 - bl FUN_02006930 + bl GfGfxLoader_GXLoadPal add r0, r4, #0 bl MOD14_021DC3C4 cmp r0, #4 @@ -13022,7 +13022,7 @@ MOD14_021DDB50: ; 0x021DDB50 ldr r2, [r5, r2] mov r0, #0x12 mov r3, #2 - bl FUN_020068C8 + bl GfGfxLoader_LoadScrnData _021DDBF2: mov r0, #0x43 lsl r0, r0, #4 @@ -13079,7 +13079,7 @@ _021DDC74: .word 0x0000B22C thumb_func_start MOD14_021DDC78 MOD14_021DDC78: ; 0x021DDC78 push {r3, lr} - bl FUN_020BB7F4 + bl NNS_G3dInit bl G3X_InitMtxStack mov r0, #1 add r1, r0, #0 @@ -13475,7 +13475,7 @@ MOD14_021DDF30: ; 0x021DDF30 add r6, r2, #0 cmp r0, #0x20 blo _021DDF44 - bl ErrorHandling + bl GF_AssertFail _021DDF44: ldr r2, _021DDF60 ; =MOD14_021E6A0C mov r1, #0xc @@ -13736,7 +13736,7 @@ MOD14_021DE138: ; 0x021DE138 ldrb r1, [r1, r2] add r2, sp, #8 mov r3, #0xa - bl FUN_02006C08 + bl GfGfxLoader_GetPlttData str r0, [sp, #4] cmp r0, #0 beq _021DE1C0 @@ -13810,17 +13810,17 @@ MOD14_021DE1D0: ; 0x021DE1D0 ldr r1, _021DE26C ; =MOD14_021E65AD ldrb r1, [r1, r3] mov r3, #0xa - bl UncompressFromNarc + bl GfGfxLoader_LoadFromNarc str r0, [sp, #0x10] cmp r0, #0 beq _021DE268 add r1, sp, #0x14 - bl FUN_020B0030 + bl NNS_G2dGetUnpackedBGCharacterData cmp r0, #0 beq _021DE262 mov r0, #0xa mov r1, #1 - bl FUN_02018FF4 + bl AllocWindows add r4, r0, #0 beq _021DE250 ldr r0, _021DE270 ; =0x00005984 @@ -13890,12 +13890,12 @@ MOD14_021DE278: ; 0x021DE278 ldr r1, _021DE2E0 ; =MOD14_021E65AC ldrb r1, [r1, r3] mov r3, #0xa - bl UncompressFromNarc + bl GfGfxLoader_LoadFromNarc str r0, [sp, #4] cmp r0, #0 beq _021DE2DC add r1, sp, #8 - bl FUN_020B0180 + bl NNS_G2dGetUnpackedScreenData ldr r0, _021DE2E4 ; =0x00005984 mov r1, #3 ldr r0, [r5, r0] @@ -15753,7 +15753,7 @@ MOD14_021DF07C: ; 0x021DF07C mov r0, #0x12 mov r1, #0xd add r3, #0x1c - bl FUN_02006C30 + bl GfGfxLoader_GetCellBank str r0, [r5, #0x14] mov r0, #0xa add r3, r5, #0 @@ -15762,7 +15762,7 @@ MOD14_021DF07C: ; 0x021DF07C mov r1, #0xe mov r2, #1 add r3, #0x20 - bl FUN_02006C5C + bl GfGfxLoader_GetAnimBank str r0, [r5, #0x18] ldr r0, [r5, #0x14] cmp r0, #0 @@ -15793,7 +15793,7 @@ MOD14_021DF144: ; 0x021DF144 sub sp, #0x38 add r4, r0, #0 add r0, #0x24 - bl FUN_020B1A24 + bl NNS_G2dInitImageProxy mov r3, #0 str r3, [sp] mov r2, #1 @@ -15806,7 +15806,7 @@ MOD14_021DF144: ; 0x021DF144 str r0, [sp, #0x10] mov r0, #0x12 mov r1, #0xc - bl FUN_02006AE4 + bl GfGfxLoader_LoadImageMapping ldr r0, _021DF310 ; =0x00000785 ldrb r0, [r4, r0] cmp r0, #1 @@ -18635,7 +18635,7 @@ MOD14_021E078C: ; 0x021E078C add r4, r1, #0 add r6, r2, #0 str r3, [sp, #8] - bl FUN_020B19DC + bl NNS_G2dInitImagePaletteProxy bl FUN_0206B888 add r1, r0, #0 mov r0, #0xa @@ -18645,21 +18645,21 @@ MOD14_021E078C: ; 0x021E078C mov r0, #0x13 mov r2, #1 mov r3, #0x40 - bl FUN_02006A8C + bl GfGfxLoader_PartiallyLoadPalette bl FUN_0206B888 add r1, r0, #0 mov r0, #0x13 add r2, sp, #0x14 mov r3, #0xa - bl FUN_02006C08 + bl GfGfxLoader_GetPlttData str r0, [sp, #0xc] cmp r0, #0 beq _021E0818 add r0, sp, #0x18 - bl FUN_020B19DC + bl NNS_G2dInitImagePaletteProxy ldr r0, [sp, #0xc] add r1, sp, #0x10 - bl FUN_020B00F0 + bl NNS_G2dGetUnpackedPaletteCompressInfo ldr r2, [sp, #0x14] add r7, r0, #0 ldr r0, [r2, #0xc] @@ -18678,14 +18678,14 @@ MOD14_021E078C: ; 0x021E078C ldr r1, [sp, #0x10] mov r2, #0xc0 mov r3, #1 - bl FUN_020B10E8 + bl NNS_G2dLoadPaletteEx b _021E0812 _021E0806: ldr r0, [sp, #0x14] mov r1, #0xc0 mov r2, #1 add r3, sp, #0x18 - bl FUN_020B1240 + bl NNS_G2dLoadPalette _021E0812: ldr r0, [sp, #0xc] bl FreeToHeap @@ -18697,7 +18697,7 @@ _021E0818: mov r1, #0x15 mov r2, #1 add r3, #0x10 - bl FUN_02006C30 + bl GfGfxLoader_GetCellBank str r0, [r5, #8] mov r0, #0xa str r0, [sp] @@ -18705,7 +18705,7 @@ _021E0818: mov r1, #0x16 mov r2, #1 add r3, r5, #4 - bl FUN_02006C5C + bl GfGfxLoader_GetAnimBank str r0, [r5] mov r0, #0xa add r3, r5, #0 @@ -18714,7 +18714,7 @@ _021E0818: mov r1, #0x17 mov r2, #1 add r3, #0x1c - bl FUN_02006C30 + bl GfGfxLoader_GetCellBank str r0, [r5, #0x14] mov r0, #0xa add r3, r5, #0 @@ -18723,7 +18723,7 @@ _021E0818: mov r1, #0x18 mov r2, #1 add r3, #0x20 - bl FUN_02006C5C + bl GfGfxLoader_GetAnimBank str r0, [r5, #0x18] mov r0, #0x13 mov r1, #0xa @@ -18805,7 +18805,7 @@ MOD14_021E08E4: ; 0x021E08E4 _021E08F4: add r0, r5, #4 str r6, [r5] - bl FUN_020B1A24 + bl NNS_G2dInitImageProxy add r0, r4, #0 add r5, #0x34 sub r4, r4, #1 @@ -18913,7 +18913,7 @@ MOD14_021E0940: ; 0x021E0940 bl GetBoxMonData strh r0, [r4, #0x2e] add r0, r4, #4 - bl FUN_020B1A24 + bl NNS_G2dInitImageProxy add r0, r5, #0 add r0, #0x4c str r0, [sp] @@ -18926,7 +18926,7 @@ MOD14_021E0940: ; 0x021E0940 add r0, r5, #0 add r0, #0x4c add r1, sp, #0x1c - bl FUN_020B0088 + bl NNS_G2dGetUnpackedCharacterData mov r2, #1 lsl r2, r2, #0x1a ldr r1, [r2] @@ -18942,7 +18942,7 @@ MOD14_021E0940: ; 0x021E0940 ldr r1, [sp, #0x60] ldr r0, [sp, #0x1c] lsl r1, r1, #5 - bl FUN_020B1768 + bl NNS_G2dLoadImage1DMapping add r0, r4, #4 str r0, [sp, #0x20] ldr r0, [sp, #0x5c] @@ -18957,7 +18957,7 @@ MOD14_021E0940: ; 0x021E0940 str r0, [r4] cmp r0, #0 bne _021E0A36 - bl ErrorHandling + bl GF_AssertFail _021E0A36: ldrh r1, [r4, #0x2c] ldr r0, [r4] @@ -19031,10 +19031,10 @@ MOD14_021E0A60: ; 0x021E0A60 bl GetBoxMonData strh r0, [r4, #0x2e] add r0, r4, #4 - bl FUN_020B1A24 + bl NNS_G2dInitImageProxy ldr r0, [sp, #0x58] add r1, sp, #0x18 - bl FUN_020B0088 + bl NNS_G2dGetUnpackedCharacterData mov r2, #1 lsl r2, r2, #0x1a ldr r1, [r2] @@ -19050,7 +19050,7 @@ MOD14_021E0A60: ; 0x021E0A60 ldr r1, [sp, #0x6c] ldr r0, [sp, #0x18] lsl r1, r1, #5 - bl FUN_020B1768 + bl NNS_G2dLoadImage1DMapping add r0, r4, #4 str r0, [sp, #0x1c] ldr r0, [sp, #0x68] @@ -19065,7 +19065,7 @@ MOD14_021E0A60: ; 0x021E0A60 str r0, [r4] cmp r0, #0 bne _021E0B28 - bl ErrorHandling + bl GF_AssertFail _021E0B28: ldrh r1, [r4, #0x2c] ldr r0, [r4] @@ -19160,7 +19160,7 @@ MOD14_021E0BBC: ; 0x021E0BBC cmp r0, #0 beq _021E0C18 add r0, r4, #4 - bl FUN_020B1A24 + bl NNS_G2dInitImageProxy add r0, r5, #0 add r0, #0x4c str r0, [sp] @@ -19173,7 +19173,7 @@ MOD14_021E0BBC: ; 0x021E0BBC add r5, #0x4c add r0, r5, #0 add r1, sp, #4 - bl FUN_020B0088 + bl NNS_G2dGetUnpackedCharacterData mov r2, #1 lsl r2, r2, #0x1a ldr r1, [r2] @@ -19188,7 +19188,7 @@ MOD14_021E0BBC: ; 0x021E0BBC str r1, [r0, #0x10] ldr r0, [sp, #4] lsl r1, r6, #5 - bl FUN_020B1768 + bl NNS_G2dLoadImage1DMapping ldr r0, [r4] add r1, r4, #4 bl FUN_02020334 @@ -19277,7 +19277,7 @@ MOD14_021E0C7C: ; 0x021E0C7C mov r0, #0x12 mov r2, #1 add r3, #0x10 - bl FUN_02006C30 + bl GfGfxLoader_GetCellBank str r0, [r4, #8] mov r0, #0xa add r3, r4, #0 @@ -19286,7 +19286,7 @@ MOD14_021E0C7C: ; 0x021E0C7C mov r1, #0xb mov r2, #1 add r3, #0x14 - bl FUN_02006C5C + bl GfGfxLoader_GetAnimBank str r0, [r4, #0xc] ldr r0, [r4, #8] cmp r0, #0 @@ -19309,7 +19309,7 @@ MOD14_021E0CCC: ; 0x021E0CCC sub sp, #0x38 add r4, r0, #0 add r0, #0x18 - bl FUN_020B1A24 + bl NNS_G2dInitImageProxy mov r3, #0 mov r0, #0x9d str r3, [sp] @@ -19324,7 +19324,7 @@ MOD14_021E0CCC: ; 0x021E0CCC str r0, [sp, #0x10] mov r0, #0x12 mov r1, #9 - bl FUN_02006AE4 + bl GfGfxLoader_LoadImageMapping ldr r0, [r4, #0x44] bl MOD14_021DDD48 add r2, r0, #0 @@ -19450,7 +19450,7 @@ _021E0DAC: mov r1, #0x10 mov r2, #1 add r3, #0x2c - bl FUN_02006C30 + bl GfGfxLoader_GetCellBank str r0, [r5, #0x28] mov r0, #0 str r0, [r5, #0x30] @@ -19472,7 +19472,7 @@ _021E0DAC: add r0, r4, #0 mov r2, #1 add r3, #0x38 - bl FUN_02006C30 + bl GfGfxLoader_GetCellBank mov r1, #0 str r0, [r5, #0x34] add r2, r5, #0 @@ -19634,7 +19634,7 @@ MOD14_021E0F40: ; 0x021E0F40 beq _021E0FA0 mov r0, #0xa mov r1, #4 - bl FUN_02018FF4 + bl AllocWindows str r0, [r5, #4] cmp r0, #0 beq _021E0F94 @@ -19696,7 +19696,7 @@ MOD14_021E0FA8: ; 0x021E0FA8 ldr r0, [sp, #0x1c] mov r2, #1 lsl r3, r3, #5 - bl FUN_02006930 + bl GfGfxLoader_GXLoadPal mov r0, #0 mov r6, #0x5e str r0, [sp, #0x14] @@ -19705,7 +19705,7 @@ MOD14_021E0FA8: ; 0x021E0FA8 add r4, r5, #0 _021E0FE0: add r0, sp, #0x44 - bl FUN_020B1A24 + bl NNS_G2dInitImageProxy mov r0, #0 str r0, [sp] mov r0, #1 @@ -19720,7 +19720,7 @@ _021E0FE0: ldr r1, [sp, #0x18] mov r2, #1 mov r3, #0 - bl FUN_02006B38 + bl GfGfxLoader_SetObjCntFlagsAndLoadImageMapping ldr r0, [r5, #0x14] bl MOD14_021DDD48 add r2, r0, #0 @@ -19744,7 +19744,7 @@ _021E0FE0: str r0, [r4, #0x3c] cmp r0, #0 bne _021E103E - bl ErrorHandling + bl GF_AssertFail _021E103E: ldr r0, [r4, #0x3c] mov r1, #0 @@ -19758,7 +19758,7 @@ _021E103E: cmp r0, #2 blo _021E0FE0 add r0, sp, #0x44 - bl FUN_020B1A24 + bl NNS_G2dInitImageProxy mov r3, #0 mov r0, #0xb9 str r3, [sp] @@ -19772,7 +19772,7 @@ _021E103E: str r0, [sp, #0x10] mov r0, #0x12 mov r1, #0xf - bl FUN_02006AE4 + bl GfGfxLoader_LoadImageMapping ldr r0, [r5, #0x14] bl MOD14_021DDD48 add r2, r0, #0 @@ -19829,7 +19829,7 @@ _021E10D8: str r0, [r5, #0x4c] pop {r3, r4, r5, pc} _021E10EA: - bl ErrorHandling + bl GF_AssertFail _021E10EE: pop {r3, r4, r5, pc} .align 2, 0 @@ -19965,7 +19965,7 @@ _021E11CE: add r0, #0x30 mov r2, #4 add r3, r1, #0 - bl FUN_0201A8C8 + bl ScrollWindow ldr r0, [r5, #4] add r0, #0x30 bl FUN_02019548 @@ -20058,7 +20058,7 @@ MOD14_021E1284: ; 0x021E1284 ldr r4, [r0, #4] add r4, #0x30 add r0, r4, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer ldrh r2, [r5, #2] ldr r1, [r5, #8] add r0, r4, #0 @@ -20131,7 +20131,7 @@ _021E12EC: str r0, [sp, #8] add r0, r6, #0 lsl r3, r3, #0xa - bl FUN_02006A34 + bl GfGfxLoader_LoadWholePalette ldr r0, [r4, #0x3c] bl FUN_0202011C add r6, r0, #0 @@ -20180,7 +20180,7 @@ _021E12EC: str r0, [sp, #8] add r0, r6, #0 lsl r3, r3, #8 - bl FUN_02006A34 + bl GfGfxLoader_LoadWholePalette mov r0, #9 ldr r1, [sp, #0x10] lsl r0, r0, #0xe @@ -20233,19 +20233,19 @@ MOD14_021E13F0: ; 0x021E13F0 beq _021E144E ldr r0, [r4, #4] mov r1, #0xf - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, [r4, #4] mov r1, #0xf add r0, #0x10 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, [r4, #4] mov r1, #0xf add r0, #0x20 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, [r4, #4] mov r1, #0 add r0, #0x30 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, [r4, #0x10] bl MOD14_021DC408 cmp r0, #0 @@ -20276,19 +20276,19 @@ MOD14_021E1450: ; 0x021E1450 beq _021E14CC ldr r0, [r4, #4] mov r1, #0xf - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, [r4, #4] mov r1, #0xf add r0, #0x10 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, [r4, #4] mov r1, #0xf add r0, #0x20 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, [r4, #4] mov r1, #0 add r0, #0x30 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, [r4, #0x24] cmp r0, #0 beq _021E148E @@ -20334,19 +20334,19 @@ MOD14_021E14D0: ; 0x021E14D0 beq _021E153A ldr r0, [r4, #4] mov r1, #0xf - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, [r4, #4] mov r1, #0xf add r0, #0x10 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, [r4, #4] mov r1, #0xf add r0, #0x20 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, [r4, #4] mov r1, #0 add r0, #0x30 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, [r4, #0x24] cmp r0, #0 beq _021E150E @@ -20615,7 +20615,7 @@ MOD14_021E1704: ; 0x021E1704 ldr r0, [r5, #4] mov r1, #0 add r0, #0x30 - bl FUN_02019620 + bl FillWindowPixelBuffer ldrb r0, [r4, #0xf] cmp r0, #0 bne _021E1742 @@ -20679,7 +20679,7 @@ MOD14_021E1750: ; 0x021E1750 mov r1, #0x19 mov r2, #1 add r3, #0x28 - bl FUN_02006BB0 + bl GfGfxLoader_GetCharData str r0, [r4, #0x24] cmp r0, #0 beq _021E17B6 @@ -20751,7 +20751,7 @@ MOD14_021E1818: ; 0x021E1818 add r6, r0, #0 mov r0, #0xa mov r1, #2 - bl FUN_02018FF4 + bl AllocWindows str r0, [r6, #0x18] cmp r0, #0 beq _021E1848 @@ -20781,7 +20781,7 @@ _021E1848: ldr r2, [r6] mov r0, #0x26 mov r3, #1 - bl FUN_0200687C + bl GfGfxLoader_LoadCharData mov r0, #0x20 str r0, [sp] mov r0, #0xa @@ -20790,7 +20790,7 @@ _021E1848: mov r1, #0x18 mov r2, #0 mov r3, #0xe0 - bl FUN_02006930 + bl GfGfxLoader_GXLoadPal ldr r0, [r6, #0x20] ldr r2, _021E1898 ; =0x00000209 lsl r0, r0, #0x18 @@ -20828,7 +20828,7 @@ MOD14_021E189C: ; 0x021E189C bl MOD14_021E1908 ldr r0, [r5, #0x18] mov r1, #0xf - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, [r5, #0x10] ldr r2, [r5, #0x30] add r1, r4, #0 @@ -20976,7 +20976,7 @@ _021E19E8: str r0, [sp, #0x14] add r0, #0x10 str r0, [sp, #0x14] - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, [sp, #0x10] mov r6, #0 add r0, #0x21 @@ -21087,7 +21087,7 @@ _021E1AA0: ldr r1, [r1, #0x14] lsr r2, r2, #0x10 lsr r3, r3, #0x10 - bl FUN_02019684 + bl BlitBitmapRect add sp, #0x1c pop {r4, r5, pc} .align 2, 0 @@ -21221,7 +21221,7 @@ MOD14_021E1B9C: ; 0x021E1B9C mov r1, #0xf mov r2, #0 lsr r3, r3, #0x10 - bl FUN_020196F4 + bl FillWindowPixelRect add r6, #0x20 ldrb r2, [r6] add r0, r4, #0 @@ -21443,12 +21443,12 @@ MOD14_021E1D38: ; 0x021E1D38 mov r0, #0x12 mov r1, #4 add r3, r4, #0 - bl FUN_0200687C + bl GfGfxLoader_LoadCharData mov r0, #0x12 mov r1, #0x1b add r2, sp, #0x14 mov r3, #0xa - bl FUN_02006C08 + bl GfGfxLoader_GetPlttData add r4, r0, #0 ldr r0, [sp, #0x14] add r1, r5, #0 @@ -21462,7 +21462,7 @@ MOD14_021E1D38: ; 0x021E1D38 mov r1, #0x14 add r2, sp, #0x14 mov r3, #0xa - bl FUN_02006C08 + bl GfGfxLoader_GetPlttData add r4, r0, #0 ldr r0, [sp, #0x14] mov r1, #0x49 @@ -21522,7 +21522,7 @@ _021E1DBC: mov r1, #0x11 mov r2, #1 add r3, #0x18 - bl FUN_02006BB0 + bl GfGfxLoader_GetCharData str r0, [r5, #0x14] mov r0, #0xa str r0, [sp] @@ -21531,7 +21531,7 @@ _021E1DBC: add r1, r0, #0 mov r2, #1 add r3, #0x20 - bl FUN_02006C30 + bl GfGfxLoader_GetCellBank str r0, [r5, #0x1c] mov r0, #0xa add r3, r5, #0 @@ -21540,7 +21540,7 @@ _021E1DBC: mov r1, #2 mov r2, #1 add r3, #0x38 - bl FUN_02006BDC + bl GfGfxLoader_GetScrnData str r0, [r5, #0x34] mov r0, #0xa add r3, r5, #0 @@ -21549,7 +21549,7 @@ _021E1DBC: mov r1, #3 mov r2, #1 add r3, #0x30 - bl FUN_02006BDC + bl GfGfxLoader_GetScrnData str r0, [r5, #0x2c] mov r0, #2 mov r1, #0xd @@ -21631,7 +21631,7 @@ MOD14_021E1EEC: ; 0x021E1EEC add r7, r0, #0 mov r0, #0xa mov r1, #3 - bl FUN_02018FF4 + bl AllocWindows str r0, [r7, #0x10] cmp r0, #0 beq _021E1F1A @@ -21925,7 +21925,7 @@ _021E211E: ldr r2, [sp, #0x14] ldr r3, [sp, #0x48] lsl r1, r1, #5 - bl FUN_020B1768 + bl NNS_G2dLoadImage1DMapping add sp, #0x34 pop {r4, r5, r6, r7, pc} _021E2132: @@ -22053,7 +22053,7 @@ MOD14_021E21E4: ; 0x021E21E4 pop {r4, r5, r6, pc} _021E2214: add r0, sp, #4 - bl FUN_020B1A24 + bl NNS_G2dInitImageProxy add r0, sp, #4 str r0, [sp] add r0, r5, #0 @@ -22100,7 +22100,7 @@ MOD14_021E223C: ; 0x021E223C mov r5, #0x20 _021E227C: add r0, sp, #0x1c - bl FUN_020B1A24 + bl NNS_G2dInitImageProxy add r0, sp, #0x1c str r0, [sp] ldr r2, [sp, #8] @@ -22123,7 +22123,7 @@ _021E227C: str r0, [r4, #0x48] cmp r0, #0 bne _021E22B6 - bl ErrorHandling + bl GF_AssertFail _021E22B6: ldr r0, [r4, #0x48] mov r1, #0 @@ -22259,7 +22259,7 @@ MOD14_021E2394: ; 0x021E2394 add r6, r0, #0 add r0, r4, #0 mov r1, #7 - bl FUN_02019620 + bl FillWindowPixelBuffer mov r1, #0 str r1, [sp] mov r0, #0xff @@ -22288,7 +22288,7 @@ MOD14_021E23F8: ; 0x021E23F8 ldr r4, [r0, #0x10] mov r1, #7 add r0, r4, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer add r0, r4, #0 bl FUN_02019548 pop {r4, pc} @@ -22303,7 +22303,7 @@ MOD14_021E240C: ; 0x021E240C str r0, [sp, #0xc] add r0, #0x10 str r0, [sp, #0xc] - bl FUN_02019620 + bl FillWindowPixelBuffer add r0, r7, #0 bl MOD14_021E2188 mov r6, #0 @@ -22345,7 +22345,7 @@ MOD14_021E2464: ; 0x021E2464 mov r1, #4 add r4, #0x10 add r0, r4, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer add r0, r4, #0 bl FUN_02019548 pop {r4, pc} @@ -22698,7 +22698,7 @@ MOD14_021E26E4: ; 0x021E26E4 ldr r0, [r5, #0x10] mov r1, #4 add r0, #0x20 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r2, _021E279C ; =0x00004BF8 add r1, r6, #0 ldr r0, [r5, r2] @@ -22987,7 +22987,7 @@ MOD14_021E2940: ; 0x021E2940 add r0, sp, #0x30 bl MOD14_021DDDB4 add r0, sp, #0xc - bl FUN_020B1A24 + bl NNS_G2dInitImageProxy lsl r0, r4, #0x10 lsr r0, r0, #0x10 mov r1, #1 @@ -22998,7 +22998,7 @@ MOD14_021E2940: ; 0x021E2940 mov r0, #0x10 mov r2, #0 add r3, sp, #8 - bl FUN_02006BB0 + bl GfGfxLoader_GetCharData add r6, r0, #0 mov r0, #1 lsl r0, r0, #0x1a @@ -23012,7 +23012,7 @@ MOD14_021E2940: ; 0x021E2940 mov r1, #0xbe ldr r0, [sp, #8] lsl r1, r1, #8 - bl FUN_020B1768 + bl NNS_G2dLoadImage1DMapping lsl r0, r4, #0x10 lsr r0, r0, #0x10 mov r1, #2 @@ -23025,7 +23025,7 @@ MOD14_021E2940: ; 0x021E2940 mov r0, #0x10 mov r2, #1 mov r3, #0xc0 - bl FUN_02006930 + bl GfGfxLoader_GXLoadPal mov r0, #0 str r0, [sp] mov r0, #1 @@ -23141,7 +23141,7 @@ _021E2A74: mov r1, #6 mov r2, #1 add r3, #0x18 - bl FUN_02006BDC + bl GfGfxLoader_GetScrnData str r0, [r5, #0x14] cmp r0, #0 beq _021E2AB6 @@ -24045,7 +24045,7 @@ MOD14_021E3158: ; 0x021E3158 add r5, r0, #0 cmp r4, #6 blo _021E3166 - bl ErrorHandling + bl GF_AssertFail _021E3166: mov r0, #0x34 add r5, #0x3c @@ -24602,7 +24602,7 @@ MOD14_021E355C: ; 0x021E355C mov r0, #0x12 mov r1, #0x67 mov r3, #7 - bl FUN_0200687C + bl GfGfxLoader_LoadCharData mov r0, #0 str r0, [sp] str r0, [sp, #4] @@ -24614,7 +24614,7 @@ MOD14_021E355C: ; 0x021E355C mov r0, #0x12 mov r1, #0x64 mov r3, #7 - bl FUN_020068C8 + bl GfGfxLoader_LoadScrnData mov r0, #0 str r0, [sp] str r0, [sp, #4] @@ -24626,7 +24626,7 @@ MOD14_021E355C: ; 0x021E355C mov r0, #0x12 mov r1, #0x65 mov r3, #6 - bl FUN_020068C8 + bl GfGfxLoader_LoadScrnData mov r0, #0 str r0, [sp] str r0, [sp, #4] @@ -24638,7 +24638,7 @@ MOD14_021E355C: ; 0x021E355C mov r0, #0x12 mov r1, #0x66 mov r3, #5 - bl FUN_020068C8 + bl GfGfxLoader_LoadScrnData mov r2, #0 str r2, [sp] ldr r0, [r4, #8] @@ -24684,7 +24684,7 @@ MOD14_021E355C: ; 0x021E355C add r0, r4, #0 add r0, #0x88 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer add r0, r4, #0 add r0, #0x88 bl CopyWindowToVram @@ -24698,7 +24698,7 @@ MOD14_021E355C: ; 0x021E355C mov r1, #0x68 mov r2, #4 mov r3, #0 - bl FUN_02006930 + bl GfGfxLoader_GXLoadPal add r0, r4, #0 bl MOD14_021E3664 _021E365C: @@ -24714,7 +24714,7 @@ MOD14_021E3664: ; 0x021E3664 add r4, r0, #0 bl MOD14_021E36FC add r0, sp, #0x14 - bl FUN_020B1A24 + bl NNS_G2dInitImageProxy mov r3, #0 str r3, [sp] mov r0, #2 @@ -24727,7 +24727,7 @@ MOD14_021E3664: ; 0x021E3664 mov r0, #0x12 mov r1, #0x72 mov r2, #1 - bl FUN_02006AE4 + bl GfGfxLoader_LoadImageMapping add r0, r4, #0 add r0, #0xa4 ldr r0, [r0] @@ -24790,7 +24790,7 @@ MOD14_021E36FC: ; 0x021E36FC mov r1, #0x73 mov r2, #1 add r3, #0x9c - bl FUN_02006C30 + bl GfGfxLoader_GetCellBank add r1, r4, #0 add r1, #0x98 str r0, [r1] @@ -24801,7 +24801,7 @@ MOD14_021E36FC: ; 0x021E36FC mov r1, #0x74 mov r2, #1 add r3, #0xa4 - bl FUN_02006C5C + bl GfGfxLoader_GetAnimBank add r1, r4, #0 add r1, #0xa0 str r0, [r1] @@ -24812,7 +24812,7 @@ MOD14_021E36FC: ; 0x021E36FC mov r1, #0x76 mov r2, #1 add r3, #0xac - bl FUN_02006C30 + bl GfGfxLoader_GetCellBank add r1, r4, #0 add r1, #0xa8 str r0, [r1] @@ -24823,13 +24823,13 @@ MOD14_021E36FC: ; 0x021E36FC mov r1, #0x77 mov r2, #1 add r3, #0xb4 - bl FUN_02006C5C + bl GfGfxLoader_GetAnimBank add r1, r4, #0 add r1, #0xb0 str r0, [r1] add r0, r4, #0 add r0, #0x18 - bl FUN_020B19DC + bl NNS_G2dInitImagePaletteProxy mov r0, #0xa str r0, [sp] add r4, #0x18 @@ -24838,7 +24838,7 @@ MOD14_021E36FC: ; 0x021E36FC mov r2, #2 mov r3, #0 str r4, [sp, #4] - bl FUN_02006A8C + bl GfGfxLoader_PartiallyLoadPalette add sp, #8 pop {r4, pc} .align 2, 0 @@ -25553,7 +25553,7 @@ _021E3CB2: str r0, [sp, #0x10] _021E3CC2: add r0, sp, #0x14 - bl FUN_020B1A24 + bl NNS_G2dInitImageProxy add r0, sp, #0x14 str r0, [sp] add r0, r7, #0 @@ -25586,7 +25586,7 @@ _021E3CC2: str r0, [r5, #0x54] cmp r0, #0 bne _021E3D14 - bl ErrorHandling + bl GF_AssertFail _021E3D14: sub r4, r4, #1 bpl _021E3D1A @@ -25752,7 +25752,7 @@ MOD14_021E3E1C: ; 0x021E3E1C bl MOD14_021DC484 str r0, [sp, #0x14] add r0, sp, #0x18 - bl FUN_020B1A24 + bl NNS_G2dInitImageProxy mov r3, #0 str r3, [sp] mov r0, #2 @@ -25767,7 +25767,7 @@ MOD14_021E3E1C: ; 0x021E3E1C mov r0, #0x12 mov r1, #0x75 mov r2, #1 - bl FUN_02006AE4 + bl GfGfxLoader_LoadImageMapping add r7, r5, #0 mov r6, #0 add r4, r5, #0 @@ -25799,7 +25799,7 @@ _021E3E58: str r0, [r4, #0x34] cmp r0, #0 bne _021E3E94 - bl ErrorHandling + bl GF_AssertFail _021E3E94: ldr r1, [sp, #0x14] add r0, r6, #0 @@ -26004,7 +26004,7 @@ MOD14_021E4010: ; 0x021E4010 ldrb r0, [r4, r0] cmp r0, #0 bne _021E4022 - bl ErrorHandling + bl GF_AssertFail _021E4022: ldr r0, _021E4034 ; =0x000001CB ldrb r1, [r4, r0] @@ -26026,7 +26026,7 @@ MOD14_021E4038: ; 0x021E4038 ldr r4, [sp, #0x20] cmp r7, #0 bne _021E404C - bl ErrorHandling + bl GF_AssertFail _021E404C: cmp r4, #0 beq _021E4052 @@ -27058,7 +27058,7 @@ _021E47AE: ldrh r3, [r5, #2] add r0, r7, #0 mov r1, #0 - bl FUN_020196F4 + bl FillWindowPixelRect mov r0, #2 ldrsh r0, [r5, r0] mov r1, #0 @@ -27182,7 +27182,7 @@ MOD14_021E4890: ; 0x021E4890 mov r0, #0x10 mov r2, #0 add r3, sp, #0xc - bl FUN_02006BB0 + bl GfGfxLoader_GetCharData str r0, [sp, #8] cmp r0, #0 beq _021E4950 @@ -27198,12 +27198,12 @@ MOD14_021E4890: ; 0x021E4890 add r5, r6, #0 _021E48EA: add r0, sp, #0x10 - bl FUN_020B1A24 + bl NNS_G2dInitImageProxy ldr r0, [sp, #0xc] ldr r1, [r4] mov r2, #1 add r3, sp, #0x10 - bl FUN_020B1768 + bl NNS_G2dLoadImage1DMapping mov r0, #0 str r0, [sp] mov r0, #1 @@ -27406,7 +27406,7 @@ _021E4A54: str r0, [sp, #8] ldr r3, [r3, r4] mov r0, #0x10 - bl FUN_02006A34 + bl GfGfxLoader_LoadWholePalette lsl r0, r7, #0x10 lsr r0, r0, #0x10 mov r1, #2 @@ -27421,7 +27421,7 @@ _021E4A54: mov r0, #0x10 mov r2, #1 lsl r3, r3, #5 - bl FUN_02006930 + bl GfGfxLoader_GXLoadPal ldr r1, [sp, #0xc] add r5, #0x1c lsl r4, r6, #2 @@ -27537,7 +27537,7 @@ MOD14_021E4B58: ; 0x021E4B58 str r0, [sp, #8] ldr r3, [r3, r6] mov r0, #0x10 - bl FUN_02006A34 + bl GfGfxLoader_LoadWholePalette lsl r0, r7, #0x10 lsr r0, r0, #0x10 mov r1, #2 @@ -27552,7 +27552,7 @@ MOD14_021E4B58: ; 0x021E4B58 mov r0, #0x10 mov r2, #1 lsl r3, r3, #5 - bl FUN_02006930 + bl GfGfxLoader_GXLoadPal ldr r1, [sp, #0xc] add r5, #0x1c lsl r4, r4, #2 @@ -28191,7 +28191,7 @@ _021E5064: mov r1, #7 mov r2, #1 add r3, r4, r3 - bl FUN_02006BDC + bl GfGfxLoader_GetScrnData mov r3, #0x37 lsl r3, r3, #4 str r0, [r4, r3] @@ -28202,7 +28202,7 @@ _021E5064: mov r1, #8 mov r2, #1 add r3, r4, r3 - bl FUN_02006BDC + bl GfGfxLoader_GetScrnData mov r1, #0xdd lsl r1, r1, #2 str r0, [r4, r1] @@ -28277,7 +28277,7 @@ MOD14_021E5128: ; 0x021E5128 mov r0, #0x12 mov r1, #0x6c mov r3, #5 - bl FUN_0200687C + bl GfGfxLoader_LoadCharData mov r0, #0 str r0, [sp] str r0, [sp, #4] @@ -28289,7 +28289,7 @@ MOD14_021E5128: ; 0x021E5128 mov r0, #0x12 mov r1, #0x69 mov r3, #5 - bl FUN_020068C8 + bl GfGfxLoader_LoadScrnData mov r0, #0 str r0, [sp] str r0, [sp, #4] @@ -28301,7 +28301,7 @@ MOD14_021E5128: ; 0x021E5128 mov r0, #0x12 mov r1, #0x6a mov r3, #6 - bl FUN_020068C8 + bl GfGfxLoader_LoadScrnData mov r0, #0 str r0, [sp] str r0, [sp, #4] @@ -28313,7 +28313,7 @@ MOD14_021E5128: ; 0x021E5128 mov r0, #0x12 mov r1, #0x6b mov r3, #7 - bl FUN_020068C8 + bl GfGfxLoader_LoadScrnData mov r0, #0x80 str r0, [sp] mov r0, #0xa @@ -28322,7 +28322,7 @@ MOD14_021E5128: ; 0x021E5128 mov r1, #0x6d mov r2, #4 mov r3, #0 - bl FUN_02006930 + bl GfGfxLoader_GXLoadPal bl FUN_0206B888 mov r3, #0x80 add r1, r0, #0 @@ -28331,7 +28331,7 @@ MOD14_021E5128: ; 0x021E5128 str r0, [sp, #4] mov r0, #0x13 mov r2, #5 - bl FUN_02006930 + bl GfGfxLoader_GXLoadPal mov r0, #4 mov r1, #0x20 mov r2, #0 @@ -28653,11 +28653,11 @@ _021E541E: add r0, r7, #0 add r0, #0x78 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer add r0, r7, #0 add r0, #0x88 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer add r4, r7, #0 mov r5, #0 add r4, #0x78 @@ -28797,7 +28797,7 @@ _021E554C: bl FUN_02019270 add r0, r5, r4 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer add r6, r6, #1 add r7, #8 cmp r6, #2 @@ -28983,7 +28983,7 @@ _021E56B4: bl FUN_02019270 add r0, r5, r4 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer add r6, r6, #1 add r7, #8 cmp r6, #2 @@ -29032,7 +29032,7 @@ MOD14_021E5718: ; 0x021E5718 add r7, #0x98 add r0, r7, #0 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, [r5, #8] bl MOD14_021DC560 cmp r0, #0 @@ -29116,7 +29116,7 @@ MOD14_021E57CC: ; 0x021E57CC add r4, #0x98 add r0, r4, #0 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer add r0, r4, #0 bl FUN_02019548 pop {r4, pc} @@ -29156,7 +29156,7 @@ _021E581A: str r0, [sp, #0x14] add r0, r4, #0 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, [sp, #0x18] cmp r0, #1 bne _021E5836 @@ -29299,7 +29299,7 @@ _021E593E: str r0, [sp, #0x18] add r0, r4, #0 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, [sp, #0x1c] cmp r0, #1 bne _021E595A @@ -29404,7 +29404,7 @@ MOD14_021E5A08: ; 0x021E5A08 mov r1, #0x6f mov r2, #1 add r3, #0x60 - bl FUN_02006C30 + bl GfGfxLoader_GetCellBank str r0, [r7, #0x5c] mov r0, #0xa add r3, r7, #0 @@ -29413,7 +29413,7 @@ MOD14_021E5A08: ; 0x021E5A08 mov r1, #0x70 mov r2, #1 add r3, #0x68 - bl FUN_02006C5C + bl GfGfxLoader_GetAnimBank str r0, [r7, #0x64] mov r0, #0x60 str r0, [sp] @@ -29423,9 +29423,9 @@ MOD14_021E5A08: ; 0x021E5A08 mov r1, #0x71 mov r2, #5 mov r3, #0 - bl FUN_02006930 + bl GfGfxLoader_GXLoadPal add r0, sp, #0x48 - bl FUN_020B1A24 + bl NNS_G2dInitImageProxy mov r3, #0 str r3, [sp] mov r0, #2 @@ -29438,7 +29438,7 @@ MOD14_021E5A08: ; 0x021E5A08 mov r0, #0x12 mov r1, #0x6e mov r2, #1 - bl FUN_02006AE4 + bl GfGfxLoader_LoadImageMapping str r0, [sp, #0x20] ldr r0, [r7, #4] bl MOD14_021DDD48 @@ -29583,11 +29583,11 @@ _021E5BA0: add r0, r0, r6 str r0, [r4, #0x18] add r0, sp, #0x34 - bl FUN_020B1A24 + bl NNS_G2dInitImageProxy ldr r2, [r4, #0x18] add r0, sp, #0x34 mov r1, #2 - bl FUN_020B1A1C + bl NNS_G2dSetImageLocation ldr r0, _021E5BFC ; =0x04001000 mov r2, #0 ldr r1, [r0] @@ -29711,7 +29711,7 @@ MOD14_021E5C68: ; 0x021E5C68 add r0, r5, #0 add r0, #0xe8 add r1, sp, #4 - bl FUN_020B0088 + bl NNS_G2dGetUnpackedCharacterData ldr r0, [sp, #4] mov r1, #2 ldr r0, [r0, #0x14] @@ -29753,7 +29753,7 @@ MOD14_021E5CFC: ; 0x021E5CFC add r4, r1, r0 add r0, r4, #0 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, [r5, #8] bl MOD14_021DC3F0 cmp r0, #0 @@ -30126,7 +30126,7 @@ _021E601A: strb r0, [r4] pop {r4, r5, r6, pc} _021E6032: - bl ErrorHandling + bl GF_AssertFail pop {r4, r5, r6, pc} thumb_func_start MOD14_021E6038 diff --git a/arm9/modules/15/asm/module_15.s b/arm9/modules/15/asm/module_15.s index 560be120..97282c02 100644 --- a/arm9/modules/15/asm/module_15.s +++ b/arm9/modules/15/asm/module_15.s @@ -2592,7 +2592,7 @@ MOD15_021D87F8: ; 0x021D87F8 bl FUN_02015F1C str r5, [r4, #0x18] str r6, [r4, #0x1c] - bl FUN_020B0FC0 + bl NNS_G2dInitOamManagerModule mov r0, #0 str r0, [sp] mov r1, #0x80 @@ -2745,7 +2745,7 @@ _021D8944: blt _021D8928 pop {r4, r5, r6, pc} _021D894E: - bl ErrorHandling + bl GF_AssertFail _021D8952: pop {r4, r5, r6, pc} .align 2, 0 @@ -2925,19 +2925,19 @@ MOD15_021D8AB4: ; 0x021D8AB4 mov r0, #0x66 lsl r0, r0, #2 add r0, r4, r0 - bl FUN_020B19DC + bl NNS_G2dInitImagePaletteProxy mov r0, #0x6b lsl r0, r0, #2 add r0, r4, r0 - bl FUN_020B19DC + bl NNS_G2dInitImagePaletteProxy mov r0, #0x15 lsl r0, r0, #4 add r0, r4, r0 - bl FUN_020B1A24 + bl NNS_G2dInitImageProxy mov r0, #0x5d lsl r0, r0, #2 add r0, r4, r0 - bl FUN_020B1A24 + bl NNS_G2dInitImageProxy mov r3, #0 str r3, [sp] mov r2, #1 @@ -2951,7 +2951,7 @@ MOD15_021D8AB4: ; 0x021D8AB4 str r0, [sp, #0x10] mov r0, #0x4c mov r1, #9 - bl FUN_02006AE4 + bl GfGfxLoader_LoadImageMapping mov r0, #0x23 str r0, [sp] mov r0, #0x66 @@ -2962,7 +2962,7 @@ MOD15_021D8AB4: ; 0x021D8AB4 mov r1, #0xa mov r2, #1 mov r3, #0 - bl FUN_02006A8C + bl GfGfxLoader_PartiallyLoadPalette mov r1, #7 mov r0, #0x23 lsl r3, r1, #6 @@ -2970,7 +2970,7 @@ MOD15_021D8AB4: ; 0x021D8AB4 mov r0, #0x4c mov r2, #1 add r3, r4, r3 - bl FUN_02006C30 + bl GfGfxLoader_GetCellBank mov r3, #0x1d lsl r3, r3, #4 str r0, [r4, r3] @@ -2981,7 +2981,7 @@ MOD15_021D8AB4: ; 0x021D8AB4 mov r1, #8 mov r2, #1 add r3, r4, r3 - bl FUN_02006C5C + bl GfGfxLoader_GetAnimBank mov r1, #0x76 lsl r1, r1, #2 str r0, [r4, r1] @@ -4345,7 +4345,7 @@ MOD15_021D95E8: ; 0x021D95E8 bl NewMsgDataFromNarc str r0, [r4, #0x48] mov r0, #0x23 - bl FUN_02013690 + bl ListMenuCursorNew str r0, [r4, #0x50] add r0, r4, #0 pop {r3, r4, r5, r6, r7, pc} @@ -4359,7 +4359,7 @@ MOD15_021D9634: ; 0x021D9634 ldr r0, [r4, #0x50] cmp r0, #0 beq _021D9642 - bl FUN_020136C0 + bl DestroyListMenuCursorObj _021D9642: ldr r0, [r4, #0x3c] cmp r0, #0 @@ -4419,7 +4419,7 @@ MOD15_021D9694: ; 0x021D9694 mov r0, #0x4c add r2, r6, #0 add r3, r1, #0 - bl FUN_020068C8 + bl GfGfxLoader_LoadScrnData mov r3, #0 str r3, [sp] str r3, [sp, #4] @@ -4429,7 +4429,7 @@ MOD15_021D9694: ; 0x021D9694 str r0, [sp, #0xc] mov r0, #0x4c add r2, r6, #0 - bl FUN_0200687C + bl GfGfxLoader_LoadCharData lsr r4, r0, #5 mov r0, #1 str r0, [sp] @@ -4495,7 +4495,7 @@ MOD15_021D9694: ; 0x021D9694 mov r0, #0x26 add r2, r6, #0 add r3, r1, #0 - bl FUN_0200687C + bl GfGfxLoader_LoadCharData add r0, r4, #0 add r0, #0xc2 str r0, [r5, #0x60] @@ -4508,7 +4508,7 @@ MOD15_021D9694: ; 0x021D9694 mov r1, #0x18 mov r2, #0 lsl r3, r3, #6 - bl FUN_02006930 + bl GfGfxLoader_GXLoadPal ldr r0, [r5, #4] bl MOD15_021D87E0 lsl r0, r0, #0x18 @@ -4565,12 +4565,12 @@ MOD15_021D97E4: ; 0x021D97E4 mov r0, #0x4c mov r1, #6 add r3, r2, #0 - bl FUN_02006930 + bl GfGfxLoader_GXLoadPal mov r0, #0x4c mov r1, #6 add r2, sp, #8 mov r3, #0x23 - bl FUN_02006C08 + bl GfGfxLoader_GetPlttData add r4, r0, #0 ldr r0, [sp, #8] add r1, r5, #0 @@ -4749,7 +4749,7 @@ MOD15_021D9964: ; 0x021D9964 add r0, r4, #0 add r0, #0xc mov r1, #0xd - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, [r4, #4] bl MOD15_021D86E4 cmp r0, #0 @@ -5135,7 +5135,7 @@ MOD15_021D9C30: ; 0x021D9C30 ldrh r3, [r3, #2] add r0, r4, #0 mov r1, #0xe - bl FUN_020196F4 + bl FillWindowPixelRect add sp, #0xc pop {r3, r4, pc} @@ -5194,7 +5194,7 @@ MOD15_021D9CB4: ; 0x021D9CB4 add r5, r1, #0 add r0, #0x1c mov r1, #9 - bl FUN_02019620 + bl FillWindowPixelBuffer cmp r5, #3 bhi _021D9DB0 add r0, r5, r5 @@ -5462,7 +5462,7 @@ MOD15_021D9ECC: ; 0x021D9ECC add r4, r1, #0 add r0, #0x2c mov r1, #9 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, [r5, #0x48] ldr r2, [r5, #0x4c] mov r1, #9 @@ -5509,7 +5509,7 @@ MOD15_021D9ECC: ; 0x021D9ECC add r1, #0x2c mov r2, #0 lsl r3, r4, #4 - bl FUN_020136F8 + bl ListMenuUpdateCursorObj add r5, #0x2c add r0, r5, #0 bl CopyWindowToVram @@ -5533,13 +5533,13 @@ MOD15_021D9F58: ; 0x021D9F58 add r0, #0x2c mov r1, #9 add r3, r2, #0 - bl FUN_020196F4 + bl FillWindowPixelRect ldr r0, [r5, #0x50] add r5, #0x2c add r1, r5, #0 mov r2, #0 lsl r3, r4, #4 - bl FUN_020136F8 + bl ListMenuUpdateCursorObj add sp, #8 pop {r3, r4, r5, pc} @@ -5605,7 +5605,7 @@ MOD15_021D9FD4: ; 0x021D9FD4 mov r1, #4 add r2, r4, #0 mov r3, #3 - bl FUN_020068C8 + bl GfGfxLoader_LoadScrnData mov r0, #0 str r0, [sp] str r0, [sp, #4] @@ -5617,7 +5617,7 @@ MOD15_021D9FD4: ; 0x021D9FD4 mov r1, #5 add r2, r4, #0 mov r3, #3 - bl FUN_0200687C + bl GfGfxLoader_LoadCharData ldr r1, _021DA03C ; =0x021DBA00 add r0, r4, #0 mov r2, #0 @@ -5650,7 +5650,7 @@ MOD15_021DA044: ; 0x021DA044 bl FUN_02019270 add r0, sp, #0x10 mov r1, #0xe - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r1, _021DA0B0 ; =0x00000183 mov r0, #0x1a add r2, r4, #0 @@ -5863,7 +5863,7 @@ MOD15_021DA1D0: ; 0x021DA1D0 mov r0, #0x4c mov r1, #2 add r2, r4, #0 - bl FUN_020068C8 + bl GfGfxLoader_LoadScrnData mov r0, #0 str r0, [sp] str r0, [sp, #4] @@ -5874,7 +5874,7 @@ MOD15_021DA1D0: ; 0x021DA1D0 mov r0, #0x4c mov r1, #3 add r2, r4, #0 - bl FUN_0200687C + bl GfGfxLoader_LoadCharData add r2, r0, #0 add r0, r5, #0 add r1, r4, #0 @@ -5998,7 +5998,7 @@ _021DA310: ldr r0, _021DA3B0 ; =0x000003EE cmp r6, r0 blo _021DA31A - bl ErrorHandling + bl GF_AssertFail _021DA31A: ldr r0, [sp, #0x24] lsl r3, r7, #0x18 @@ -6021,7 +6021,7 @@ _021DA31A: bl FUN_02019064 add r0, sp, #0x28 mov r1, #0xf - bl FUN_02019620 + bl FillWindowPixelBuffer mov r0, #0 add r1, r5, #0 add r2, r0, #0 @@ -6077,7 +6077,7 @@ MOD15_021DA3B4: ; 0x021DA3B4 str r2, [sp, #0x14] cmp r0, r1 blo _021DA3CC - bl ErrorHandling + bl GF_AssertFail _021DA3CC: mov r0, #0xa str r0, [sp] @@ -6102,7 +6102,7 @@ _021DA3CC: add r4, r0, #0 add r0, sp, #0x20 mov r1, #0xf - bl FUN_02019620 + bl FillWindowPixelBuffer bl MOD15_021DB770 add r7, r0, #0 ldr r5, _021DA474 ; =0x00000000 @@ -6191,7 +6191,7 @@ _021DA4B6: lsl r0, r0, #4 cmp r5, r0 blo _021DA4C2 - bl ErrorHandling + bl GF_AssertFail _021DA4C2: ldrh r0, [r4, #2] add r1, r6, #0 @@ -6215,7 +6215,7 @@ _021DA4C2: bl FUN_02019064 add r0, r6, #0 mov r1, #0xf - bl FUN_02019620 + bl FillWindowPixelBuffer mov r0, #0 str r0, [sp] mov r0, #0xff @@ -6769,7 +6769,7 @@ MOD15_021DA8E8: ; 0x021DA8E8 add r0, r5, #0 add r0, #0x10 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer add r0, r5, #0 add r0, #0x10 bl FUN_02019270 @@ -6853,7 +6853,7 @@ MOD15_021DA9D4: ; 0x021DA9D4 add r6, r0, #0 add r0, #0x10 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer add r0, r6, #0 bl MOD15_021DAD78 ldr r0, [r6, #4] @@ -7291,7 +7291,7 @@ _021DAD1A: add r0, r5, #0 add r2, r1, #0 lsr r3, r3, #0x10 - bl FUN_020196F4 + bl FillWindowPixelRect add sp, #8 pop {r3, r4, r5, pc} _021DAD3E: @@ -7308,7 +7308,7 @@ _021DAD3E: add r0, #0x10 add r2, r1, #0 lsr r3, r3, #0x10 - bl FUN_020196F4 + bl FillWindowPixelRect mov r1, #0 mov r0, #0xd0 str r0, [sp] @@ -7319,7 +7319,7 @@ _021DAD3E: add r0, r5, #0 add r2, r1, #0 add r3, r1, #0 - bl FUN_020196F4 + bl FillWindowPixelRect add sp, #8 pop {r3, r4, r5, pc} @@ -7378,7 +7378,7 @@ _021DADD4: add r0, r5, #0 add r0, #0x20 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer mov r1, #0 str r1, [sp] mov r0, #0xff @@ -7416,7 +7416,7 @@ _021DADD4: ldr r1, [r5, #0x2c] add r0, #0x10 add r3, r2, #0 - bl FUN_02019658 + bl BlitBitmapRectToWindow mov r1, #0x60 lsl r2, r7, #0x10 lsl r3, r6, #0x10 @@ -7436,7 +7436,7 @@ _021DADD4: ldr r1, [r5, #0x2c] add r0, #0x10 lsr r3, r3, #0x10 - bl FUN_02019658 + bl BlitBitmapRectToWindow add sp, #0x18 pop {r3, r4, r5, r6, r7, pc} nop @@ -7494,7 +7494,7 @@ MOD15_021DAEB4: ; 0x021DAEB4 mov r1, #0x15 mov r2, #4 mov r3, #0 - bl FUN_02006930 + bl GfGfxLoader_GXLoadPal mov r0, #0 str r0, [sp] str r0, [sp, #4] @@ -7506,7 +7506,7 @@ MOD15_021DAEB4: ; 0x021DAEB4 mov r0, #0x4c mov r1, #0xb mov r3, #4 - bl FUN_020068C8 + bl GfGfxLoader_LoadScrnData add r0, r4, #0 bl MOD15_021DAFAC add r0, r4, #0 @@ -7613,7 +7613,7 @@ _021DAFB8: mov r0, #0x4c mov r2, #1 add r3, sp, #4 - bl FUN_02006BDC + bl GfGfxLoader_GetScrnData add r7, r0, #0 beq _021DAFE6 ldr r0, [sp, #4] @@ -7675,12 +7675,12 @@ MOD15_021DAFF8: ; 0x021DAFF8 mov r1, #0x14 mov r2, #1 add r3, sp, #0xc - bl FUN_02006BB0 + bl GfGfxLoader_GetCharData str r0, [sp, #8] cmp r0, #0 beq _021DB0D4 add r0, sp, #0x10 - bl FUN_0201901C + bl InitWindow ldr r0, [r5, #0xc] add r1, sp, #0xc str r0, [sp, #0x10] @@ -7801,9 +7801,9 @@ MOD15_021DB154: ; 0x021DB154 sub sp, #0x4c add r4, r0, #0 add r0, sp, #0x38 - bl FUN_020B19DC + bl NNS_G2dInitImagePaletteProxy add r0, sp, #0x14 - bl FUN_020B1A24 + bl NNS_G2dInitImageProxy mov r0, #0x23 str r0, [sp] add r0, sp, #0x38 @@ -7812,7 +7812,7 @@ MOD15_021DB154: ; 0x021DB154 mov r1, #0x19 mov r2, #2 mov r3, #0 - bl FUN_02006A8C + bl GfGfxLoader_PartiallyLoadPalette mov r3, #0 str r3, [sp] mov r0, #2 @@ -7825,7 +7825,7 @@ MOD15_021DB154: ; 0x021DB154 mov r0, #0x4c mov r1, #0x18 mov r2, #1 - bl FUN_02006AE4 + bl GfGfxLoader_LoadImageMapping add r0, r4, #0 add r0, #0x1c mov r1, #0x4c @@ -7906,7 +7906,7 @@ MOD15_021DB224: ; 0x021DB224 add r0, r4, #0 mov r2, #1 add r3, r5, #4 - bl FUN_02006C30 + bl GfGfxLoader_GetCellBank str r0, [r5] mov r0, #0x23 add r3, r5, #0 @@ -7915,7 +7915,7 @@ MOD15_021DB224: ; 0x021DB224 add r1, r6, #0 mov r2, #1 add r3, #0xc - bl FUN_02006C5C + bl GfGfxLoader_GetAnimBank str r0, [r5, #8] add sp, #4 pop {r3, r4, r5, r6, pc} @@ -8609,7 +8609,7 @@ MOD15_021DB774: ; 0x021DB774 add r5, r1, #0 cmp r4, #0x1b blo _021DB782 - bl ErrorHandling + bl GF_AssertFail _021DB782: mov r1, #0xa ldr r2, _021DB794 ; =0x021DBA4C @@ -8630,7 +8630,7 @@ MOD15_021DB798: ; 0x021DB798 add r6, r2, #0 cmp r5, #0x1b blo _021DB7A8 - bl ErrorHandling + bl GF_AssertFail _021DB7A8: mov r0, #0xa add r1, r5, #0 @@ -8652,7 +8652,7 @@ MOD15_021DB7C4: ; 0x021DB7C4 add r4, r0, #0 cmp r4, #0x1b blo _021DB7D0 - bl ErrorHandling + bl GF_AssertFail _021DB7D0: mov r0, #0xa add r1, r4, #0 @@ -8669,7 +8669,7 @@ MOD15_021DB7E0: ; 0x021DB7E0 add r4, r0, #0 cmp r4, #0x1b blo _021DB7EC - bl ErrorHandling + bl GF_AssertFail _021DB7EC: mov r0, #0xa add r1, r4, #0 @@ -8686,7 +8686,7 @@ MOD15_021DB7FC: ; 0x021DB7FC add r4, r0, #0 cmp r4, #0x1b blo _021DB808 - bl ErrorHandling + bl GF_AssertFail _021DB808: mov r0, #0xa add r1, r4, #0 @@ -8703,7 +8703,7 @@ MOD15_021DB818: ; 0x021DB818 add r4, r0, #0 cmp r4, #0x1b blo _021DB824 - bl ErrorHandling + bl GF_AssertFail _021DB824: mov r0, #0xa add r1, r4, #0 @@ -8720,7 +8720,7 @@ MOD15_021DB834: ; 0x021DB834 add r4, r0, #0 cmp r4, #0x1b blo _021DB840 - bl ErrorHandling + bl GF_AssertFail _021DB840: mov r0, #0xa add r1, r4, #0 @@ -8737,7 +8737,7 @@ MOD15_021DB850: ; 0x021DB850 add r4, r0, #0 cmp r4, #0x1b blo _021DB85C - bl ErrorHandling + bl GF_AssertFail _021DB85C: mov r0, #0xa add r1, r4, #0 diff --git a/arm9/modules/16/asm/module_16.s b/arm9/modules/16/asm/module_16.s index 26ae4fbf..e9eedca1 100644 --- a/arm9/modules/16/asm/module_16.s +++ b/arm9/modules/16/asm/module_16.s @@ -23,7 +23,7 @@ MOD16_021D74E0: ; 0x021D74E0 bl OverlayManager_CreateAndGetData add r4, r0, #0 bne _021D750E - bl ErrorHandling + bl GF_AssertFail _021D750E: mov r0, #0 strb r0, [r4] @@ -45,7 +45,7 @@ _021D750E: bl FUN_0201CC24 cmp r0, #1 beq _021D7546 - bl ErrorHandling + bl GF_AssertFail _021D7546: mov r0, #0x25 bl MOD16_021D79FC @@ -161,7 +161,7 @@ MOD16_021D7614: ; 0x021D7614 bl FUN_0201CD04 cmp r0, #1 beq _021D7630 - bl ErrorHandling + bl GF_AssertFail _021D7630: bl MOD16_021D7A10 bl FUN_0201C29C @@ -245,7 +245,7 @@ MOD16_021D76AC: ; 0x021D76AC bl AllocFromHeap add r4, r0, #0 bne _021D76C2 - bl ErrorHandling + bl GF_AssertFail _021D76C2: ldr r2, _021D77D0 ; =0x00001D10 add r0, r4, #0 @@ -391,7 +391,7 @@ MOD16_021D7804: ; 0x021D7804 push {r4, lr} add r4, r0, #0 bne _021D780E - bl ErrorHandling + bl GF_AssertFail _021D780E: add r0, r4, #0 add r0, #0xc @@ -638,7 +638,7 @@ MOD16_021D7A38: ; 0x021D7A38 push {r4, lr} add r4, r0, #0 bne _021D7A42 - bl ErrorHandling + bl GF_AssertFail _021D7A42: mov r0, #0x1d lsl r0, r0, #8 @@ -652,7 +652,7 @@ MOD16_021D7A4C: ; 0x021D7A4C push {r4, lr} add r4, r0, #0 bne _021D7A56 - bl ErrorHandling + bl GF_AssertFail _021D7A56: ldr r0, _021D7A5C ; =0x00001D04 ldr r0, [r4, r0] @@ -666,7 +666,7 @@ MOD16_021D7A60: ; 0x021D7A60 push {r4, lr} add r4, r0, #0 bne _021D7A6A - bl ErrorHandling + bl GF_AssertFail _021D7A6A: ldr r0, _021D7A70 ; =0x00001D08 ldr r0, [r4, r0] @@ -680,7 +680,7 @@ MOD16_021D7A74: ; 0x021D7A74 push {r4, lr} add r4, r0, #0 bne _021D7A7E - bl ErrorHandling + bl GF_AssertFail _021D7A7E: ldr r0, _021D7A84 ; =0x00001D0C ldr r0, [r4, r0] @@ -694,7 +694,7 @@ MOD16_021D7A88: ; 0x021D7A88 push {r4, lr} add r4, r0, #0 bne _021D7A92 - bl ErrorHandling + bl GF_AssertFail _021D7A92: ldr r0, _021D7A98 ; =0x00001A0C ldr r0, [r4, r0] @@ -708,7 +708,7 @@ MOD16_021D7A9C: ; 0x021D7A9C push {r4, lr} add r4, r0, #0 bne _021D7AA6 - bl ErrorHandling + bl GF_AssertFail _021D7AA6: ldr r0, _021D7AAC ; =0x00001A10 ldr r0, [r4, r0] @@ -722,7 +722,7 @@ MOD16_021D7AB0: ; 0x021D7AB0 push {r4, lr} add r4, r0, #0 bne _021D7ABA - bl ErrorHandling + bl GF_AssertFail _021D7ABA: ldr r0, _021D7AC0 ; =0x00001A14 ldr r0, [r4, r0] @@ -736,7 +736,7 @@ MOD16_021D7AC4: ; 0x021D7AC4 push {r4, lr} add r4, r0, #0 bne _021D7ACE - bl ErrorHandling + bl GF_AssertFail _021D7ACE: ldr r0, _021D7AD4 ; =0x00001A18 ldr r0, [r4, r0] @@ -750,7 +750,7 @@ MOD16_021D7AD8: ; 0x021D7AD8 push {r4, lr} add r4, r0, #0 bne _021D7AE2 - bl ErrorHandling + bl GF_AssertFail _021D7AE2: ldr r0, _021D7AE8 ; =0x000019FC add r0, r4, r0 @@ -764,7 +764,7 @@ MOD16_021D7AEC: ; 0x021D7AEC push {r4, lr} add r4, r0, #0 bne _021D7AF6 - bl ErrorHandling + bl GF_AssertFail _021D7AF6: mov r0, #0x1a lsl r0, r0, #8 @@ -778,7 +778,7 @@ MOD16_021D7B00: ; 0x021D7B00 push {r4, lr} add r4, r0, #0 bne _021D7B0A - bl ErrorHandling + bl GF_AssertFail _021D7B0A: ldr r0, _021D7B10 ; =0x00001A04 add r0, r4, r0 @@ -792,7 +792,7 @@ MOD16_021D7B14: ; 0x021D7B14 push {r4, lr} add r4, r0, #0 bne _021D7B1E - bl ErrorHandling + bl GF_AssertFail _021D7B1E: ldr r0, _021D7B24 ; =0x00001A08 add r0, r4, r0 @@ -806,7 +806,7 @@ MOD16_021D7B28: ; 0x021D7B28 push {r4, lr} add r4, r0, #0 bne _021D7B32 - bl ErrorHandling + bl GF_AssertFail _021D7B32: add r0, r4, #0 pop {r4, pc} @@ -818,7 +818,7 @@ MOD16_021D7B38: ; 0x021D7B38 push {r4, lr} add r4, r0, #0 bne _021D7B42 - bl ErrorHandling + bl GF_AssertFail _021D7B42: add r4, #0xc add r0, r4, #0 @@ -830,7 +830,7 @@ MOD16_021D7B48: ; 0x021D7B48 push {r4, lr} add r4, r0, #0 bne _021D7B52 - bl ErrorHandling + bl GF_AssertFail _021D7B52: ldr r0, _021D7B58 ; =0x0000177C add r0, r4, r0 @@ -846,7 +846,7 @@ MOD16_021D7B5C: ; 0x021D7B5C add r5, r0, #0 cmp r4, #0xa blt _021D7B6A - bl ErrorHandling + bl GF_AssertFail _021D7B6A: ldr r0, _021D7B78 ; =0x00001A30 add r1, r5, r0 @@ -865,7 +865,7 @@ MOD16_021D7B7C: ; 0x021D7B7C add r5, r0, #0 cmp r4, #8 blt _021D7B8A - bl ErrorHandling + bl GF_AssertFail _021D7B8A: mov r0, #0x6f lsl r0, r0, #6 @@ -1265,7 +1265,7 @@ MOD16_021D7E68: ; 0x021D7E68 add r7, r0, #0 cmp r7, #0 bgt _021D7E82 - bl ErrorHandling + bl GF_AssertFail _021D7E82: add r0, r4, #0 mov r1, #0xf @@ -1820,7 +1820,7 @@ MOD16_021D8298: ; 0x021D8298 ldr r0, [r6, r0] cmp r0, #0 bne _021D82B0 - bl ErrorHandling + bl GF_AssertFail _021D82B0: ldr r0, _021D83D8 ; =0x00001A0C ldr r0, [r6, r0] @@ -1829,7 +1829,7 @@ _021D82B0: ldr r0, [r6, r0] cmp r0, #0 bne _021D82C4 - bl ErrorHandling + bl GF_AssertFail _021D82C4: ldr r0, _021D83DC ; =0x00001A10 ldr r0, [r6, r0] @@ -1838,7 +1838,7 @@ _021D82C4: ldr r0, [r6, r0] cmp r0, #0 bne _021D82D8 - bl ErrorHandling + bl GF_AssertFail _021D82D8: ldr r0, _021D83E0 ; =0x00001A14 ldr r0, [r6, r0] @@ -1847,7 +1847,7 @@ _021D82D8: ldr r0, [r6, r0] cmp r0, #0 bne _021D82EC - bl ErrorHandling + bl GF_AssertFail _021D82EC: ldr r0, _021D83E4 ; =0x00001A18 ldr r0, [r6, r0] @@ -1857,7 +1857,7 @@ _021D82EC: ldr r0, [r6, r0] cmp r0, #0 bne _021D8302 - bl ErrorHandling + bl GF_AssertFail _021D8302: mov r0, #0x1d lsl r0, r0, #8 @@ -1867,7 +1867,7 @@ _021D8302: ldr r0, [r6, r0] cmp r0, #0 bne _021D8318 - bl ErrorHandling + bl GF_AssertFail _021D8318: ldr r0, _021D83E8 ; =0x00001D04 ldr r0, [r6, r0] @@ -1876,7 +1876,7 @@ _021D8318: ldr r0, [r6, r0] cmp r0, #0 bne _021D832C - bl ErrorHandling + bl GF_AssertFail _021D832C: ldr r0, _021D83EC ; =0x00001D08 ldr r0, [r6, r0] @@ -1885,7 +1885,7 @@ _021D832C: ldr r0, [r6, r0] cmp r0, #0 bne _021D8340 - bl ErrorHandling + bl GF_AssertFail _021D8340: ldr r0, _021D83F0 ; =0x00001D0C ldr r0, [r6, r0] @@ -1996,7 +1996,7 @@ MOD16_021D8424: ; 0x021D8424 push {r4, r5, lr} sub sp, #0x24 add r4, r0, #0 - bl FUN_020B0FC0 + bl NNS_G2dInitOamManagerModule mov r0, #0 str r0, [sp] mov r1, #0x80 @@ -2053,7 +2053,7 @@ _021D849C: .word 0x000019FC thumb_func_start MOD16_021D84A0 MOD16_021D84A0: ; 0x021D84A0 push {r3, lr} - bl FUN_020BB7F4 + bl NNS_G3dInit bl G3X_InitMtxStack ldr r0, _021D8500 ; =0x04000060 ldr r2, _021D8504 ; =0xFFFFCFFD @@ -2089,11 +2089,11 @@ MOD16_021D84A0: ; 0x021D84A0 str r0, [r1, #0x40] mov r0, #1 add r1, r0, #0 - bl FUN_020AEB70 + bl NNS_GfdInitFrmTexVramManager mov r0, #1 lsl r0, r0, #0xe mov r1, #1 - bl FUN_020AEDF4 + bl NNS_GfdInitFrmPlttVramManager pop {r3, pc} .align 2, 0 _021D8500: .word 0x04000060 @@ -2106,8 +2106,8 @@ _021D8510: .word 0xBFFF0000 thumb_func_start MOD16_021D8514 MOD16_021D8514: ; 0x021D8514 push {r3, lr} - bl FUN_020AEAF4 - bl FUN_020AEC60 + bl NNS_GfdResetFrmTexVramState + bl NNS_GfdResetFrmPlttVramState pop {r3, pc} thumb_func_end MOD16_021D8514 @@ -2313,7 +2313,7 @@ MOD16_021D86B4: ; 0x021D86B4 lsl r0, r0, #2 ldr r0, [r4, r0] bl FUN_0201FDEC - bl FUN_020B02C8 + bl NNS_G2dSetupSoftwareSpriteCamera mov r0, #0x55 lsl r0, r0, #2 ldr r0, [r4, r0] @@ -2534,7 +2534,7 @@ MOD16_021D8838: ; 0x021D8838 ldr r0, [r4, r0] cmp r0, #0 bne _021D884A - bl ErrorHandling + bl GF_AssertFail _021D884A: mov r0, #0x6d lsl r0, r0, #2 @@ -2552,7 +2552,7 @@ MOD16_021D8854: ; 0x021D8854 ldr r0, [r4, r0] cmp r0, #0 bne _021D8866 - bl ErrorHandling + bl GF_AssertFail _021D8866: mov r0, #0x6e lsl r0, r0, #2 @@ -2624,7 +2624,7 @@ MOD16_021D88D4: ; 0x021D88D4 add r4, r0, #0 cmp r5, #3 ble _021D88E2 - bl ErrorHandling + bl GF_AssertFail _021D88E2: lsl r0, r5, #2 add r1, r4, r0 @@ -3182,7 +3182,7 @@ MOD16_021D8CB4: ; 0x021D8CB4 add r7, r0, #0 beq _021D8CF6 add r1, sp, #4 - bl FUN_020B0030 + bl NNS_G2dGetUnpackedBGCharacterData cmp r0, #0 beq _021D8CF0 cmp r4, #0 @@ -3220,7 +3220,7 @@ MOD16_021D8CFC: ; 0x021D8CFC add r7, r0, #0 beq _021D8D42 add r1, sp, #0 - bl FUN_020B0138 + bl NNS_G2dGetUnpackedPaletteData cmp r0, #0 beq _021D8D3C cmp r4, #0 @@ -3258,7 +3258,7 @@ MOD16_021D8D48: ; 0x021D8D48 add r4, r0, #0 beq _021D8D6A add r1, r5, #0 - bl FUN_020B0180 + bl NNS_G2dGetUnpackedScreenData cmp r0, #0 bne _021D8D6A add r0, r4, #0 @@ -3280,7 +3280,7 @@ MOD16_021D8D70: ; 0x021D8D70 add r4, r0, #0 beq _021D8D92 add r1, r5, #0 - bl FUN_020B0138 + bl NNS_G2dGetUnpackedPaletteData cmp r0, #0 bne _021D8D92 add r0, r4, #0 @@ -3302,7 +3302,7 @@ MOD16_021D8D98: ; 0x021D8D98 add r4, r0, #0 beq _021D8DBA add r1, r5, #0 - bl FUN_020B0030 + bl NNS_G2dGetUnpackedBGCharacterData cmp r0, #0 bne _021D8DBA add r0, r4, #0 @@ -3518,7 +3518,7 @@ MOD16_021D8F60: ; 0x021D8F60 bl FUN_02019064 add r0, r4, #4 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer add r0, r4, #4 bl CopyWindowToVram add sp, #0x14 @@ -3545,14 +3545,14 @@ MOD16_021D8F9C: ; 0x021D8F9C mov r1, #0x55 lsl r1, r1, #2 str r0, [r5, r1] - ldr r3, _021D9030 ; =UNK_021064B8 + ldr r3, _021D9030 ; =NNS_GfdDefaultFuncAllocTexVram mov r0, #2 mov r1, #0 ldr r3, [r3] lsl r0, r0, #0xe add r2, r1, #0 blx r3 - ldr r3, _021D9034 ; =UNK_021064C0 + ldr r3, _021D9034 ; =NNS_GfdDefaultFuncAllocPlttVram add r4, r0, #0 ldr r3, [r3] mov r0, #0x80 @@ -3607,8 +3607,8 @@ _021D9004: add sp, #0x10 pop {r3, r4, r5, r6, r7, pc} nop -_021D9030: .word UNK_021064B8 -_021D9034: .word UNK_021064C0 +_021D9030: .word NNS_GfdDefaultFuncAllocTexVram +_021D9034: .word NNS_GfdDefaultFuncAllocPlttVram _021D9038: .word 0x7FFF0000 _021D903C: .word 0xFFFF0000 _021D9040: .word MOD16_021FF490 @@ -4618,7 +4618,7 @@ _021D97EE: bl MOD16_021D9CB0 cmp r0, #0 bne _021D980C - bl ErrorHandling + bl GF_AssertFail _021D980C: ldr r1, [r4, #0x1c] add r0, r5, #0 @@ -4728,7 +4728,7 @@ MOD16_021D98EC: ; 0x021D98EC add r5, r0, #0 cmp r4, #0x1c blt _021D98FA - bl ErrorHandling + bl GF_AssertFail _021D98FA: ldr r0, [r5] add r1, r4, #0 @@ -4743,7 +4743,7 @@ MOD16_021D9904: ; 0x021D9904 add r5, r0, #0 cmp r4, #2 blt _021D9912 - bl ErrorHandling + bl GF_AssertFail _021D9912: ldr r0, [r5] add r1, r4, #0 @@ -4758,7 +4758,7 @@ MOD16_021D991C: ; 0x021D991C add r5, r0, #0 cmp r4, #2 blt _021D992A - bl ErrorHandling + bl GF_AssertFail _021D992A: ldr r0, [r5] add r1, r4, #0 @@ -4773,7 +4773,7 @@ MOD16_021D9934: ; 0x021D9934 add r5, r0, #0 cmp r4, #3 blt _021D9942 - bl ErrorHandling + bl GF_AssertFail _021D9942: ldr r0, [r5] add r1, r4, #0 @@ -4788,7 +4788,7 @@ MOD16_021D994C: ; 0x021D994C add r5, r0, #0 cmp r4, #3 blt _021D995A - bl ErrorHandling + bl GF_AssertFail _021D995A: ldr r0, [r5] add r1, r4, #0 @@ -5012,7 +5012,7 @@ MOD16_021D9A90: ; 0x021D9A90 bl AllocFromHeapAtEnd add r6, r0, #0 bne _021D9AAE - bl ErrorHandling + bl GF_AssertFail _021D9AAE: ldr r2, _021D9CA8 ; =0x000003DA add r0, r6, #0 @@ -5025,7 +5025,7 @@ _021D9AAE: bl AllocFromHeapAtEnd add r4, r0, #0 bne _021D9ACC - bl ErrorHandling + bl GF_AssertFail _021D9ACC: ldr r2, _021D9CA8 ; =0x000003DA add r0, r4, #0 @@ -6017,7 +6017,7 @@ MOD16_021DA184: ; 0x021DA184 add r4, r2, #0 cmp r5, #0x2f blt _021DA196 - bl ErrorHandling + bl GF_AssertFail _021DA196: mov r2, #0 add r5, #0xb @@ -6027,7 +6027,7 @@ _021DA196: mov r0, #0x4b add r1, r5, #0 add r3, r6, #0 - bl FUN_02006D18 + bl GfGfxLoader_LoadFromNarc_GetSizeOut ldr r1, [sp, #8] lsr r1, r1, #1 str r1, [r4] @@ -6095,7 +6095,7 @@ _021DA216: add r6, r0, #0 b _021DA226 _021DA222: - bl ErrorHandling + bl GF_AssertFail _021DA226: cmp r6, #0 beq _021DA24E @@ -6214,7 +6214,7 @@ _021DA2FA: add r4, r0, #0 b _021DA30A _021DA306: - bl ErrorHandling + bl GF_AssertFail _021DA30A: cmp r4, #0 beq _021DA332 @@ -6389,7 +6389,7 @@ _021DA44E: add r4, r0, #0 b _021DA45E _021DA45A: - bl ErrorHandling + bl GF_AssertFail _021DA45E: cmp r4, #0 beq _021DA486 @@ -6543,7 +6543,7 @@ _021DA578: add r4, r0, #0 b _021DA588 _021DA584: - bl ErrorHandling + bl GF_AssertFail _021DA588: cmp r4, #0 beq _021DA5B0 @@ -6618,7 +6618,7 @@ MOD16_021DA5FC: ; 0x021DA5FC bl AllocFromHeap add r4, r0, #0 bne _021DA60E - bl ErrorHandling + bl GF_AssertFail _021DA60E: add r0, r4, #0 mov r1, #0 @@ -6639,17 +6639,17 @@ MOD16_021DA624: ; 0x021DA624 add r4, r1, #0 cmp r5, #0 bne _021DA632 - bl ErrorHandling + bl GF_AssertFail _021DA632: cmp r4, #0 bne _021DA63A - bl ErrorHandling + bl GF_AssertFail _021DA63A: add r0, r5, #0 bl MOD16_021DA7C4 cmp r0, #0 bne _021DA648 - bl ErrorHandling + bl GF_AssertFail _021DA648: ldr r0, [r4] str r0, [r5] @@ -6694,7 +6694,7 @@ MOD16_021DA694: ; 0x021DA694 push {r4, lr} add r4, r0, #0 bne _021DA69E - bl ErrorHandling + bl GF_AssertFail _021DA69E: ldr r0, [r4, #8] cmp r0, #5 @@ -6757,7 +6757,7 @@ _021DA70E: mov r0, #1 pop {r4, pc} _021DA712: - bl ErrorHandling + bl GF_AssertFail _021DA716: mov r0, #0 pop {r4, pc} @@ -6770,7 +6770,7 @@ MOD16_021DA71C: ; 0x021DA71C sub sp, #4 add r4, r0, #0 bne _021DA728 - bl ErrorHandling + bl GF_AssertFail _021DA728: ldr r0, [r4, #8] cmp r0, #5 @@ -6838,7 +6838,7 @@ _021DA7A0: mov r0, #1 pop {r3, r4, pc} _021DA7A6: - bl ErrorHandling + bl GF_AssertFail _021DA7AA: mov r0, #0 add sp, #4 @@ -6856,7 +6856,7 @@ MOD16_021DA7B4: ; 0x021DA7B4 push {r4, lr} add r4, r0, #0 bne _021DA7BE - bl ErrorHandling + bl GF_AssertFail _021DA7BE: mov r0, #1 str r0, [r4, #0x18] @@ -6868,7 +6868,7 @@ MOD16_021DA7C4: ; 0x021DA7C4 push {r4, lr} add r4, r0, #0 bne _021DA7CE - bl ErrorHandling + bl GF_AssertFail _021DA7CE: ldr r0, [r4, #8] cmp r0, #5 @@ -6885,7 +6885,7 @@ MOD16_021DA7DC: ; 0x021DA7DC push {r4, lr} add r4, r0, #0 bne _021DA7E6 - bl ErrorHandling + bl GF_AssertFail _021DA7E6: ldr r0, [r4, #8] cmp r0, #2 @@ -6923,11 +6923,11 @@ MOD16_021DA808: ; 0x021DA808 add r6, r2, #0 cmp r5, #0 bne _021DA818 - bl ErrorHandling + bl GF_AssertFail _021DA818: cmp r4, #0 bne _021DA820 - bl ErrorHandling + bl GF_AssertFail _021DA820: add r0, r4, #0 add r1, r6, #0 @@ -6944,16 +6944,16 @@ MOD16_021DA828: ; 0x021DA828 add r7, r3, #0 cmp r5, #0 bne _021DA83A - bl ErrorHandling + bl GF_AssertFail _021DA83A: cmp r4, #0 bne _021DA842 - bl ErrorHandling + bl GF_AssertFail _021DA842: ldr r0, [sp, #0x18] cmp r0, #0 bne _021DA84C - bl ErrorHandling + bl GF_AssertFail _021DA84C: ldr r3, [sp, #0x18] add r0, r6, #0 @@ -6970,7 +6970,7 @@ MOD16_021DA858: ; 0x021DA858 bl AllocFromHeap add r4, r0, #0 bne _021DA868 - bl ErrorHandling + bl GF_AssertFail _021DA868: mov r0, #0 strb r0, [r4] @@ -6998,7 +6998,7 @@ MOD16_021DA888: ; 0x021DA888 add r6, r2, #0 cmp r5, #0 bne _021DA898 - bl ErrorHandling + bl GF_AssertFail _021DA898: str r4, [r5] str r6, [r5, #4] @@ -7013,7 +7013,7 @@ MOD16_021DA8A0: ; 0x021DA8A0 add r5, r1, #0 cmp r4, #0 bne _021DA8AE - bl ErrorHandling + bl GF_AssertFail _021DA8AE: add r0, r4, #0 bl MOD16_021DA908 @@ -7052,7 +7052,7 @@ MOD16_021DA8F0: ; 0x021DA8F0 push {r4, lr} add r4, r0, #0 bne _021DA8FA - bl ErrorHandling + bl GF_AssertFail _021DA8FA: ldr r0, [r4, #8] cmp r0, #0 @@ -7091,7 +7091,7 @@ _021DA928: ldr r0, [r5] cmp r0, #0 bne _021DA932 - bl ErrorHandling + bl GF_AssertFail _021DA932: ldr r0, [r5] ldr r1, [r0, r4] @@ -7175,7 +7175,7 @@ _021DA9AE: mov r0, #1 pop {r4, pc} _021DA9BC: - bl ErrorHandling + bl GF_AssertFail _021DA9C0: mov r0, #0 pop {r4, pc} @@ -7245,7 +7245,7 @@ _021DAA3A: add sp, #0x10 pop {r3, r4, r5, pc} _021DAA44: - bl ErrorHandling + bl GF_AssertFail _021DAA48: mov r0, #0 add sp, #0x10 @@ -7397,7 +7397,7 @@ _021DAB5E: mov r0, #1 pop {r3, r4, r5, pc} _021DAB68: - bl ErrorHandling + bl GF_AssertFail _021DAB6C: mov r0, #0 add sp, #0x10 @@ -7511,7 +7511,7 @@ _021DAC2E: mov r0, #1 pop {r3, r4, r5, pc} _021DAC38: - bl ErrorHandling + bl GF_AssertFail _021DAC3C: mov r0, #0 add sp, #8 @@ -7557,7 +7557,7 @@ MOD16_021DAC7C: ; 0x021DAC7C ldr r0, [r4, #0x10] cmp r0, #0 bne _021DAC8A - bl ErrorHandling + bl GF_AssertFail _021DAC8A: ldr r0, [r4, #0x10] bl FreeToHeap @@ -7579,7 +7579,7 @@ MOD16_021DAC98: ; 0x021DAC98 bl AllocFromHeap add r4, r0, #0 bne _021DACB2 - bl ErrorHandling + bl GF_AssertFail _021DACB2: add r0, r4, #0 mov r1, #0 @@ -7638,7 +7638,7 @@ MOD16_021DAD20: ; 0x021DAD20 bl AllocFromHeap add r4, r0, #0 bne _021DAD3A - bl ErrorHandling + bl GF_AssertFail _021DAD3A: add r2, r4, #0 mov r1, #0x14 @@ -7681,7 +7681,7 @@ MOD16_021DAD78: ; 0x021DAD78 bl AllocFromHeap add r4, r0, #0 bne _021DAD92 - bl ErrorHandling + bl GF_AssertFail _021DAD92: add r0, r4, #0 mov r1, #0 @@ -7745,7 +7745,7 @@ MOD16_021DAE0C: ; 0x021DAE0C bl AllocFromHeap add r4, r0, #0 bne _021DAE26 - bl ErrorHandling + bl GF_AssertFail _021DAE26: add r0, r4, #0 mov r1, #0 @@ -7805,7 +7805,7 @@ MOD16_021DAE94: ; 0x021DAE94 bl AllocFromHeap add r4, r0, #0 bne _021DAEB0 - bl ErrorHandling + bl GF_AssertFail _021DAEB0: add r0, r6, #0 mov r1, #0 @@ -7835,7 +7835,7 @@ MOD16_021DAED4: ; 0x021DAED4 bl AllocFromHeap add r4, r0, #0 bne _021DAEEE - bl ErrorHandling + bl GF_AssertFail _021DAEEE: add r2, r4, #0 mov r1, #0x18 @@ -7883,7 +7883,7 @@ MOD16_021DAF38: ; 0x021DAF38 bl AllocFromHeap add r4, r0, #0 bne _021DAF52 - bl ErrorHandling + bl GF_AssertFail _021DAF52: add r2, r4, #0 mov r1, #0x18 @@ -7931,7 +7931,7 @@ MOD16_021DAF9C: ; 0x021DAF9C bl AllocFromHeap add r4, r0, #0 bne _021DAFB6 - bl ErrorHandling + bl GF_AssertFail _021DAFB6: add r2, r4, #0 mov r1, #0x18 @@ -7979,7 +7979,7 @@ MOD16_021DB000: ; 0x021DB000 bl AllocFromHeap add r4, r0, #0 bne _021DB01A - bl ErrorHandling + bl GF_AssertFail _021DB01A: mov r0, #0 strb r0, [r4] @@ -8022,7 +8022,7 @@ MOD16_021DB058: ; 0x021DB058 bl AllocFromHeap add r4, r0, #0 bne _021DB072 - bl ErrorHandling + bl GF_AssertFail _021DB072: mov r0, #0 strb r0, [r4] @@ -8065,7 +8065,7 @@ MOD16_021DB0B0: ; 0x021DB0B0 bl AllocFromHeap add r4, r0, #0 bne _021DB0CA - bl ErrorHandling + bl GF_AssertFail _021DB0CA: add r2, r4, #0 mov r1, #0x18 @@ -8113,7 +8113,7 @@ MOD16_021DB114: ; 0x021DB114 bl AllocFromHeap add r4, r0, #0 bne _021DB12E - bl ErrorHandling + bl GF_AssertFail _021DB12E: mov r0, #0 strb r0, [r4] @@ -8156,7 +8156,7 @@ MOD16_021DB16C: ; 0x021DB16C bl AllocFromHeap add r4, r0, #0 bne _021DB186 - bl ErrorHandling + bl GF_AssertFail _021DB186: add r2, r4, #0 mov r1, #0x18 @@ -8204,7 +8204,7 @@ MOD16_021DB1D0: ; 0x021DB1D0 bl AllocFromHeap add r4, r0, #0 bne _021DB1EA - bl ErrorHandling + bl GF_AssertFail _021DB1EA: mov r0, #0 strb r0, [r4] @@ -8244,7 +8244,7 @@ MOD16_021DB228: ; 0x021DB228 bl AllocFromHeap add r4, r0, #0 bne _021DB23C - bl ErrorHandling + bl GF_AssertFail _021DB23C: add r2, r4, #0 mov r1, #0x18 @@ -8265,7 +8265,7 @@ _021DB242: str r0, [r4, #0xc] cmp r0, #0 bne _021DB268 - bl ErrorHandling + bl GF_AssertFail _021DB268: ldr r2, [r5, #8] ldr r0, [r4, #0xc] @@ -8289,7 +8289,7 @@ MOD16_021DB288: ; 0x021DB288 push {r4, lr} add r4, r0, #0 bne _021DB292 - bl ErrorHandling + bl GF_AssertFail _021DB292: add r0, r4, #0 bl MOD16_021DB358 @@ -8335,7 +8335,7 @@ MOD16_021DB2D4: ; 0x021DB2D4 bl MOD16_021DB460 add r4, r0, #0 bne _021DB2EA - bl ErrorHandling + bl GF_AssertFail _021DB2EA: ldr r2, [r5, #0x20] add r0, r6, #0 @@ -8433,9 +8433,9 @@ MOD16_021DB388: ; 0x021DB388 add r4, r1, #0 mov r1, #1 add r6, r2, #0 - bl FUN_02018FF4 + bl AllocWindows add r7, r0, #0 - bl FUN_0201901C + bl InitWindow mov r0, #0 str r0, [sp] str r0, [sp, #4] @@ -8473,7 +8473,7 @@ MOD16_021DB3C8: ; 0x021DB3C8 bl NewMsgDataFromNarc add r5, r0, #0 bne _021DB3E4 - bl ErrorHandling + bl GF_AssertFail _021DB3E4: add r0, r5, #0 add r1, r4, #0 @@ -8649,7 +8649,7 @@ _021DB4FC: cmp r4, r0 blt _021DB50A _021DB506: - bl ErrorHandling + bl GF_AssertFail _021DB50A: str r4, [r5, #0xc] pop {r3, r4, r5, pc} @@ -8660,7 +8660,7 @@ _021DB50E: cmp r4, r0 blt _021DB51C _021DB518: - bl ErrorHandling + bl GF_AssertFail _021DB51C: str r4, [r5, #0x10] pop {r3, r4, r5, pc} @@ -8805,7 +8805,7 @@ MOD16_021DB5EC: ; 0x021DB5EC beq _021DB602 cmp r4, #1 beq _021DB602 - bl ErrorHandling + bl GF_AssertFail _021DB602: ldr r0, [r5, #0xc] mov r1, #0x1c @@ -8852,7 +8852,7 @@ MOD16_021DB63C: ; 0x021DB63C beq _021DB652 cmp r4, #1 beq _021DB652 - bl ErrorHandling + bl GF_AssertFail _021DB652: ldr r0, [r5, #0x10] mov r1, #0x1c @@ -9139,7 +9139,7 @@ MOD16_021DB7F4: ; 0x021DB7F4 str r0, [sp, #0x10] str r0, [sp, #0x14] ldr r0, [sp, #0x18] - bl FUN_02019658 + bl BlitBitmapRectToWindow _021DB848: add sp, #0x20 pop {r3, r4, r5, r6, r7, pc} @@ -9655,7 +9655,7 @@ _021DBBA0: mov r4, #0x2f b _021DBBA8 _021DBBA4: - bl ErrorHandling + bl GF_AssertFail _021DBBA8: add r0, r4, #0 pop {r4, pc} @@ -9767,7 +9767,7 @@ MOD16_021DBC48: ; 0x021DBC48 bne _021DBC74 cmp r4, #1 blt _021DBC6C - bl ErrorHandling + bl GF_AssertFail _021DBC6C: add r0, r5, r4 str r0, [sp, #4] @@ -9781,7 +9781,7 @@ _021DBC6C: _021DBC74: cmp r4, #1 blt _021DBC7C - bl ErrorHandling + bl GF_AssertFail _021DBC7C: ldr r0, [sp, #4] ldr r1, [sp, #0xc] @@ -9851,7 +9851,7 @@ MOD16_021DBCE0: ; 0x021DBCE0 str r0, [r5] cmp r0, #6 blt _021DBCFA - bl ErrorHandling + bl GF_AssertFail _021DBCFA: add r0, r7, #0 bl GetMeisterSpeciesIdx @@ -9859,7 +9859,7 @@ _021DBCFA: ldr r5, [r5] cmp r5, #6 blt _021DBD0C - bl ErrorHandling + bl GF_AssertFail _021DBD0C: cmp r5, #1 bne _021DBD12 @@ -9878,7 +9878,7 @@ _021DBD22: _021DBD24: cmp r0, #0 bne _021DBD2C - bl ErrorHandling + bl GF_AssertFail _021DBD2C: pop {r3, r4, r5, r6, r7, pc} .align 2, 0 @@ -9944,12 +9944,12 @@ _021DBD82: add r0, sp, #8 str r0, [sp, #4] .ifdef DIAMOND - mov r0, #0x8b + mov r0, #0x8b ; NARC_APPLICATION_ZUKANLIST_ZKN_DATA_ZUKAN_ENC_DIAMOND .else - mov r0, #0x8c + mov r0, #0x8c ; NARC_APPLICATION_ZUKANLIST_ZKN_DATA_ZUKAN_ENC_PEARL .endif add r1, r5, r1 - bl FUN_02006D18 + bl GfGfxLoader_LoadFromNarc_GetSizeOut str r0, [r4] ldr r0, [sp, #8] lsr r0, r0, #2 @@ -9972,12 +9972,12 @@ MOD16_021DBDC0: ; 0x021DBDC0 push {r4, lr} add r4, r0, #0 bne _021DBDCA - bl ErrorHandling + bl GF_AssertFail _021DBDCA: ldr r0, [r4] cmp r0, #0 bne _021DBDD4 - bl ErrorHandling + bl GF_AssertFail _021DBDD4: ldr r0, [r4] bl FreeToHeap @@ -9999,12 +9999,12 @@ MOD16_021DBDE4: ; 0x021DBDE4 add r0, sp, #8 str r0, [sp, #4] .ifdef DIAMOND - mov r0, #0x8b + mov r0, #0x8b ; NARC_APPLICATION_ZUKANLIST_ZKN_DATA_ZUKAN_ENC_DIAMOND .else - mov r0, #0x8c + mov r0, #0x8c ; NARC_APPLICATION_ZUKANLIST_ZKN_DATA_ZUKAN_ENC_PEARL .endif add r2, r1, #0 - bl FUN_02006D18 + bl GfGfxLoader_LoadFromNarc_GetSizeOut cmp r4, #0 beq _021DBE06 ldr r1, [sp, #8] @@ -10027,12 +10027,12 @@ MOD16_021DBE0C: ; 0x021DBE0C add r0, sp, #8 str r0, [sp, #4] .ifdef DIAMOND - mov r0, #0x8b + mov r0, #0x8b ; NARC_APPLICATION_ZUKANLIST_ZKN_DATA_ZUKAN_ENC_DIAMOND .else - mov r0, #0x8c + mov r0, #0x8c ; NARC_APPLICATION_ZUKANLIST_ZKN_DATA_ZUKAN_ENC_PEARL .endif mov r1, #2 - bl FUN_02006D18 + bl GfGfxLoader_LoadFromNarc_GetSizeOut add r5, r0, #0 cmp r4, #0 beq _021DBE34 @@ -10059,7 +10059,7 @@ MOD16_021DBE3C: ; 0x021DBE3C add r0, r1, r0 cmp r0, r2 blt _021DBE54 - bl ErrorHandling + bl GF_AssertFail _021DBE54: ldrb r1, [r4] ldrb r0, [r4, #2] @@ -10067,7 +10067,7 @@ _021DBE54: ldr r0, [sp, #4] cmp r1, r0 blt _021DBE64 - bl ErrorHandling + bl GF_AssertFail _021DBE64: ldrb r7, [r4, #1] ldrb r0, [r4, #3] @@ -10154,7 +10154,7 @@ _021DBEF2: ldr r0, [r0, r7] cmp r0, #0 bne _021DBF00 - bl ErrorHandling + bl GF_AssertFail _021DBF00: mov r1, #0 cmp r4, #0 @@ -10282,13 +10282,13 @@ _021DBFE0: ldr r0, [r0, r6] cmp r0, #0 bne _021DBFEC - bl ErrorHandling + bl GF_AssertFail _021DBFEC: ldr r1, [sp, #0x10] ldr r0, [sp, #0x14] cmp r1, r0 blt _021DBFF8 - bl ErrorHandling + bl GF_AssertFail _021DBFF8: mov r1, #0 cmp r4, #0 @@ -10442,7 +10442,7 @@ MOD16_021DC10C: ; 0x021DC10C bl AllocFromHeap add r4, r0, #0 bne _021DC11E - bl ErrorHandling + bl GF_AssertFail _021DC11E: add r0, r4, #0 mov r1, #0 @@ -10469,7 +10469,7 @@ MOD16_021DC148: ; 0x021DC148 push {r4, lr} add r4, r0, #0 bne _021DC152 - bl ErrorHandling + bl GF_AssertFail _021DC152: add r0, r4, #0 bl FreeToHeap @@ -10485,7 +10485,7 @@ MOD16_021DC15C: ; 0x021DC15C bl AllocFromHeap add r4, r0, #0 bne _021DC16E - bl ErrorHandling + bl GF_AssertFail _021DC16E: mov r0, #0 strb r0, [r4] @@ -10504,7 +10504,7 @@ MOD16_021DC184: ; 0x021DC184 push {r4, lr} add r4, r0, #0 bne _021DC18E - bl ErrorHandling + bl GF_AssertFail _021DC18E: add r0, r4, #0 bl FreeToHeap @@ -10562,7 +10562,7 @@ MOD16_021DC1F8: ; 0x021DC1F8 push {r4, lr} add r4, r0, #0 bne _021DC202 - bl ErrorHandling + bl GF_AssertFail _021DC202: add r0, r4, #0 bl MOD16_021DAC7C @@ -10600,7 +10600,7 @@ MOD16_021DC234: ; 0x021DC234 str r0, [r5, #8] cmp r0, #0 bne _021DC24C - bl ErrorHandling + bl GF_AssertFail _021DC24C: ldr r0, [r5, #8] mov r1, #0 @@ -10698,7 +10698,7 @@ _021DC2E8: bl AllocFromHeap add r7, r0, #0 bne _021DC2FA - bl ErrorHandling + bl GF_AssertFail _021DC2FA: str r7, [r4, #8] add r0, r7, #0 @@ -10782,7 +10782,7 @@ _021DC388: mov r0, #1 pop {r3, r4, r5, r6, r7, pc} _021DC39C: - bl ErrorHandling + bl GF_AssertFail _021DC3A0: mov r0, #0 pop {r3, r4, r5, r6, r7, pc} @@ -10933,7 +10933,7 @@ _021DC4C2: mov r0, #1 pop {r3, r4, r5, r6, r7, pc} _021DC4C6: - bl ErrorHandling + bl GF_AssertFail _021DC4CA: mov r0, #0 pop {r3, r4, r5, r6, r7, pc} @@ -12746,7 +12746,7 @@ MOD16_021DD2F4: ; 0x021DD2F4 str r0, [sp] cmp r0, #0 bne _021DD312 - bl ErrorHandling + bl GF_AssertFail _021DD312: mov r0, #0x15 lsl r0, r0, #4 @@ -13350,7 +13350,7 @@ _021DD77E: ldr r0, [r5] mov r1, #0 add r0, r0, #4 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, [r5] mov r1, #1 ldr r0, [r0] @@ -13505,7 +13505,7 @@ _021DD8A8: ldr r0, [r5] mov r1, #0 add r0, r0, #4 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, [r5] mov r1, #1 ldr r0, [r0] @@ -14019,7 +14019,7 @@ MOD16_021DDCA4: ; 0x021DDCA4 bl AllocFromHeap add r4, r0, #0 bne _021DDCB8 - bl ErrorHandling + bl GF_AssertFail _021DDCB8: add r0, r4, #0 mov r1, #0 @@ -14055,7 +14055,7 @@ MOD16_021DDCEC: ; 0x021DDCEC bl AllocFromHeap add r4, r0, #0 bne _021DDCFE - bl ErrorHandling + bl GF_AssertFail _021DDCFE: mov r0, #0 strb r0, [r4] @@ -14083,7 +14083,7 @@ MOD16_021DDD14: ; 0x021DDD14 bl AllocFromHeap add r4, r0, #0 bne _021DDD34 - bl ErrorHandling + bl GF_AssertFail _021DDD34: add r0, r4, #0 mov r1, #0 @@ -14104,7 +14104,7 @@ MOD16_021DDD50: ; 0x021DDD50 push {r4, lr} add r4, r0, #0 bne _021DDD5A - bl ErrorHandling + bl GF_AssertFail _021DDD5A: add r0, r4, #0 bl FreeToHeap @@ -14117,7 +14117,7 @@ MOD16_021DDD64: ; 0x021DDD64 push {r4, lr} add r4, r0, #0 bne _021DDD6E - bl ErrorHandling + bl GF_AssertFail _021DDD6E: add r0, r4, #0 bl FreeToHeap @@ -14130,7 +14130,7 @@ MOD16_021DDD78: ; 0x021DDD78 push {r4, lr} add r4, r0, #0 bne _021DDD82 - bl ErrorHandling + bl GF_AssertFail _021DDD82: add r0, r4, #0 bl MOD16_021DAC7C @@ -14156,7 +14156,7 @@ MOD16_021DDD94: ; 0x021DDD94 str r0, [r5, #8] cmp r0, #0 bne _021DDDAC - bl ErrorHandling + bl GF_AssertFail _021DDDAC: ldr r0, [r5, #8] mov r1, #0 @@ -14266,7 +14266,7 @@ _021DDE60: str r0, [r4, #8] cmp r0, #0 bne _021DDE72 - bl ErrorHandling + bl GF_AssertFail _021DDE72: ldr r0, [r4, #8] mov r1, #0 @@ -15179,7 +15179,7 @@ MOD16_021DE594: ; 0x021DE594 ldr r4, [r1] cmp r0, #0 bne _021DE5AA - bl ErrorHandling + bl GF_AssertFail _021DE5AA: mov r0, #0x51 lsl r0, r0, #2 @@ -15981,7 +15981,7 @@ MOD16_021DEBA4: ; 0x021DEBA4 ldr r4, [r0] cmp r5, #4 blt _021DEBB2 - bl ErrorHandling + bl GF_AssertFail _021DEBB2: str r5, [r4, #0xc] pop {r3, r4, r5, pc} @@ -16003,7 +16003,7 @@ MOD16_021DEBC0: ; 0x021DEBC0 ldr r4, [r0] cmp r5, #6 blt _021DEBCE - bl ErrorHandling + bl GF_AssertFail _021DEBCE: str r5, [r4, #0x10] pop {r3, r4, r5, pc} @@ -16025,7 +16025,7 @@ MOD16_021DEBDC: ; 0x021DEBDC ldr r4, [r0] cmp r5, #0xa blt _021DEBEA - bl ErrorHandling + bl GF_AssertFail _021DEBEA: str r5, [r4, #0x14] pop {r3, r4, r5, pc} @@ -16048,7 +16048,7 @@ MOD16_021DEBF8: ; 0x021DEBF8 ldr r4, [r0] cmp r5, #0x12 blt _021DEC08 - bl ErrorHandling + bl GF_AssertFail _021DEC08: cmp r6, #0 bne _021DEC10 @@ -16079,7 +16079,7 @@ MOD16_021DEC24: ; 0x021DEC24 ldr r4, [r0] cmp r5, #0xf blt _021DEC32 - bl ErrorHandling + bl GF_AssertFail _021DEC32: str r5, [r4, #0x20] pop {r3, r4, r5, pc} @@ -16136,7 +16136,7 @@ MOD16_021DEC64: ; 0x021DEC64 bl AllocFromHeap add r4, r0, #0 bne _021DEC76 - bl ErrorHandling + bl GF_AssertFail _021DEC76: add r0, r4, #0 mov r1, #0 @@ -16165,7 +16165,7 @@ MOD16_021DECA0: ; 0x021DECA0 bl AllocFromHeap add r4, r0, #0 bne _021DECB2 - bl ErrorHandling + bl GF_AssertFail _021DECB2: mov r0, #0 strb r0, [r4] @@ -16193,7 +16193,7 @@ MOD16_021DECC8: ; 0x021DECC8 bl AllocFromHeap add r4, r0, #0 bne _021DECE8 - bl ErrorHandling + bl GF_AssertFail _021DECE8: add r0, r4, #0 mov r1, #0 @@ -16214,7 +16214,7 @@ MOD16_021DED04: ; 0x021DED04 push {r4, lr} add r4, r0, #0 bne _021DED0E - bl ErrorHandling + bl GF_AssertFail _021DED0E: add r0, r4, #0 bl FreeToHeap @@ -16227,7 +16227,7 @@ MOD16_021DED18: ; 0x021DED18 push {r4, lr} add r4, r0, #0 bne _021DED22 - bl ErrorHandling + bl GF_AssertFail _021DED22: add r0, r4, #0 bl FreeToHeap @@ -16240,7 +16240,7 @@ MOD16_021DED2C: ; 0x021DED2C push {r4, lr} add r4, r0, #0 bne _021DED36 - bl ErrorHandling + bl GF_AssertFail _021DED36: add r0, r4, #0 bl MOD16_021DAC7C @@ -16265,7 +16265,7 @@ MOD16_021DED48: ; 0x021DED48 bl AllocFromHeap add r6, r0, #0 bne _021DED5E - bl ErrorHandling + bl GF_AssertFail _021DED5E: mov r0, #0 strb r0, [r6] @@ -16435,7 +16435,7 @@ _021DEE84: str r0, [r5] b _021DEE9A _021DEE96: - bl ErrorHandling + bl GF_AssertFail _021DEE9A: mov r0, #0 add sp, #0x14 @@ -16653,7 +16653,7 @@ MOD16_021DEFF8: ; 0x021DEFF8 ldr r0, [r5] mov r1, #0 add r0, r0, #4 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, [r5] mov r1, #7 add r0, r0, #4 @@ -16737,7 +16737,7 @@ MOD16_021DF0BC: ; 0x021DF0BC ldr r0, [r4] mov r1, #0 add r0, r0, #4 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, [r4] mov r1, #0 add r0, r0, #4 @@ -17058,7 +17058,7 @@ MOD16_021DF350: ; 0x021DF350 mov r1, #0 mov r2, #0x18 mov r3, #8 - bl FUN_020196F4 + bl FillWindowPixelRect cmp r6, #3 bhi _021DF394 add r0, r6, r6 @@ -17135,7 +17135,7 @@ MOD16_021DF3E4: ; 0x021DF3E4 mov r1, #0 mov r2, #0x18 mov r3, #8 - bl FUN_020196F4 + bl FillWindowPixelRect mov r0, #0x5d add r1, r5, #0 bl MOD16_021D8270 @@ -17387,7 +17387,7 @@ MOD16_021DF5D0: ; 0x021DF5D0 mov r1, #0 mov r2, #0x58 mov r3, #0x34 - bl FUN_020196F4 + bl FillWindowPixelRect add r5, #0x51 add r0, r5, #0 add r1, r6, #0 @@ -17433,7 +17433,7 @@ MOD16_021DF630: ; 0x021DF630 mov r1, #0 mov r2, #0x58 mov r3, #0x4d - bl FUN_020196F4 + bl FillWindowPixelRect cmp r6, #9 bhi _021DF698 add r0, r6, r6 @@ -17529,7 +17529,7 @@ MOD16_021DF6D8: ; 0x021DF6D8 mov r1, #0 mov r2, #0x58 lsr r3, r3, #0x10 - bl FUN_020196F4 + bl FillWindowPixelRect cmp r6, #0x11 bhi _021DF774 add r0, r6, r6 @@ -17852,7 +17852,7 @@ _021DF92E: ldr r0, [r4] mov r1, #0 add r0, r0, #4 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, [r4] add r0, r0, #4 bl FUN_02019220 @@ -17883,7 +17883,7 @@ MOD16_021DF970: ; 0x021DF970 add r4, r1, #0 add r0, r5, #4 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer mov r0, #0x5e add r1, r4, #0 bl MOD16_021D8270 @@ -17928,7 +17928,7 @@ MOD16_021DF9C0: ; 0x021DF9C0 ldr r0, [r5] mov r1, #0 add r0, r0, #4 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r1, [r4] add r0, r5, #0 add r2, r6, #0 @@ -18023,7 +18023,7 @@ MOD16_021DFAA0: ; 0x021DFAA0 bl AllocFromHeap add r4, r0, #0 bne _021DFAB2 - bl ErrorHandling + bl GF_AssertFail _021DFAB2: add r2, r4, #0 mov r1, #0x10 @@ -18059,7 +18059,7 @@ MOD16_021DFAE8: ; 0x021DFAE8 bl AllocFromHeap add r4, r0, #0 bne _021DFAFA - bl ErrorHandling + bl GF_AssertFail _021DFAFA: mov r0, #0 strb r0, [r4] @@ -18092,7 +18092,7 @@ MOD16_021DFB24: ; 0x021DFB24 push {r4, lr} add r4, r0, #0 bne _021DFB2E - bl ErrorHandling + bl GF_AssertFail _021DFB2E: add r0, r4, #0 bl FreeToHeap @@ -18105,7 +18105,7 @@ MOD16_021DFB38: ; 0x021DFB38 push {r4, lr} add r4, r0, #0 bne _021DFB42 - bl ErrorHandling + bl GF_AssertFail _021DFB42: add r0, r4, #0 bl FreeToHeap @@ -18135,7 +18135,7 @@ MOD16_021DFB54: ; 0x021DFB54 bl AllocFromHeap add r4, r0, #0 bne _021DFB6A - bl ErrorHandling + bl GF_AssertFail _021DFB6A: add r0, r4, #0 mov r1, #0 @@ -22376,7 +22376,7 @@ _021E195A: mov r4, #4 b _021E1962 _021E195E: - bl ErrorHandling + bl GF_AssertFail _021E1962: ldr r0, [r5, #0x18] mov r1, #4 @@ -25366,7 +25366,7 @@ MOD16_021E2F38: ; 0x021E2F38 ldr r4, [r0] cmp r5, #3 blt _021E2F46 - bl ErrorHandling + bl GF_AssertFail _021E2F46: str r5, [r4, #4] pop {r3, r4, r5, pc} @@ -25405,7 +25405,7 @@ MOD16_021E2F64: ; 0x021E2F64 bl AllocFromHeap add r4, r0, #0 bne _021E2F76 - bl ErrorHandling + bl GF_AssertFail _021E2F76: mov r0, #0 strb r0, [r4] @@ -25440,7 +25440,7 @@ MOD16_021E2FA8: ; 0x021E2FA8 bl AllocFromHeap add r4, r0, #0 bne _021E2FBA - bl ErrorHandling + bl GF_AssertFail _021E2FBA: add r2, r4, #0 mov r1, #0x14 @@ -25462,7 +25462,7 @@ MOD16_021E2FD4: ; 0x021E2FD4 push {r4, lr} add r4, r0, #0 bne _021E2FDE - bl ErrorHandling + bl GF_AssertFail _021E2FDE: add r0, r4, #0 bl FreeToHeap @@ -25475,7 +25475,7 @@ MOD16_021E2FE8: ; 0x021E2FE8 push {r4, lr} add r4, r0, #0 bne _021E2FF2 - bl ErrorHandling + bl GF_AssertFail _021E2FF2: add r0, r4, #0 bl FreeToHeap @@ -25499,7 +25499,7 @@ MOD16_021E3000: ; 0x021E3000 bl AllocFromHeap add r4, r0, #0 bne _021E3016 - bl ErrorHandling + bl GF_AssertFail _021E3016: add r0, r4, #0 mov r1, #0 @@ -26488,7 +26488,7 @@ MOD16_021E37E8: ; 0x021E37E8 ldr r7, [r4] cmp r0, #0 bne _021E3800 - bl ErrorHandling + bl GF_AssertFail _021E3800: mov r0, #0x51 ldr r1, [r4] @@ -26946,7 +26946,7 @@ MOD16_021E3B70: ; 0x021E3B70 add r6, r2, #0 add r0, r0, #4 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer str r6, [sp] ldr r3, _021E3BBC ; =0x000007F8 ldr r0, [r4] @@ -26985,7 +26985,7 @@ MOD16_021E3BC8: ; 0x021E3BC8 ldr r0, [r4] mov r1, #0 add r0, r0, #4 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, [r4] mov r1, #1 ldr r0, [r0] @@ -27335,7 +27335,7 @@ MOD16_021E3E6C: ; 0x021E3E6C ldr r0, [r4] mov r1, #0 add r0, r0, #4 - bl FUN_02019620 + bl FillWindowPixelBuffer mov r0, #2 lsl r0, r0, #0xa ldr r3, [r5, r0] @@ -27541,7 +27541,7 @@ _021E3FFA: str r0, [sp] b _021E4008 _021E4004: - bl ErrorHandling + bl GF_AssertFail _021E4008: add r0, r5, #0 ldr r2, [sp, #4] @@ -27894,7 +27894,7 @@ MOD16_021E42AC: ; 0x021E42AC bl AllocFromHeap add r4, r0, #0 bne _021E42BE - bl ErrorHandling + bl GF_AssertFail _021E42BE: mov r0, #0 strb r0, [r4] @@ -27925,7 +27925,7 @@ MOD16_021E42E8: ; 0x021E42E8 bl AllocFromHeap add r4, r0, #0 bne _021E42FA - bl ErrorHandling + bl GF_AssertFail _021E42FA: mov r0, #0 strb r0, [r4] @@ -27950,7 +27950,7 @@ MOD16_021E4314: ; 0x021E4314 push {r4, lr} add r4, r0, #0 bne _021E431E - bl ErrorHandling + bl GF_AssertFail _021E431E: add r0, r4, #0 bl FreeToHeap @@ -27963,7 +27963,7 @@ MOD16_021E4328: ; 0x021E4328 push {r4, lr} add r4, r0, #0 bne _021E4332 - bl ErrorHandling + bl GF_AssertFail _021E4332: add r0, r4, #0 bl FreeToHeap @@ -27993,7 +27993,7 @@ MOD16_021E4344: ; 0x021E4344 bl AllocFromHeap add r4, r0, #0 bne _021E435A - bl ErrorHandling + bl GF_AssertFail _021E435A: add r0, r4, #0 mov r1, #0 @@ -28963,7 +28963,7 @@ _021E4A6C: bl FUN_0201C2C8 cmp r0, #0 bne _021E4A86 - bl ErrorHandling + bl GF_AssertFail _021E4A86: pop {r3, r4, r5, r6, r7, pc} thumb_func_end MOD16_021E49B8 @@ -29023,7 +29023,7 @@ _021E4ACE: lsr r0, r0, #0x10 asr r0, r0, #4 lsl r1, r0, #2 - ldr r0, _021E4B10 ; =UNK_020FFA38 + ldr r0, _021E4B10 ; =FX_SinCosTable_ mov r2, #3 ldrsh r0, [r0, r1] lsl r2, r2, #0x10 @@ -29044,7 +29044,7 @@ _021E4ACE: pop {r3, pc} .align 2, 0 _021E4B0C: .word 0x00007FFF -_021E4B10: .word UNK_020FFA38 +_021E4B10: .word FX_SinCosTable_ thumb_func_end MOD16_021E4AC0 thumb_func_start MOD16_021E4B14 @@ -29157,7 +29157,7 @@ MOD16_021E4BCC: ; 0x021E4BCC bl AllocFromHeap add r4, r0, #0 bne _021E4BDE - bl ErrorHandling + bl GF_AssertFail _021E4BDE: add r0, r4, #0 mov r1, #0 @@ -29186,7 +29186,7 @@ MOD16_021E4C08: ; 0x021E4C08 bl AllocFromHeap add r4, r0, #0 bne _021E4C1A - bl ErrorHandling + bl GF_AssertFail _021E4C1A: mov r0, #0 strb r0, [r4] @@ -29205,7 +29205,7 @@ MOD16_021E4C30: ; 0x021E4C30 push {r4, lr} add r4, r0, #0 bne _021E4C3A - bl ErrorHandling + bl GF_AssertFail _021E4C3A: add r0, r4, #0 bl FreeToHeap @@ -29218,7 +29218,7 @@ MOD16_021E4C44: ; 0x021E4C44 push {r4, lr} add r4, r0, #0 bne _021E4C4E - bl ErrorHandling + bl GF_AssertFail _021E4C4E: add r0, r4, #0 bl FreeToHeap @@ -29593,7 +29593,7 @@ MOD16_021E4EE4: ; 0x021E4EE4 ldr r0, [r4] mov r1, #0 add r0, r0, #4 - bl FUN_02019620 + bl FillWindowPixelBuffer add r0, r5, #0 add r1, r4, #0 bl MOD16_021E5224 @@ -31367,7 +31367,7 @@ MOD16_021E5C88: ; 0x021E5C88 bl AllocFromHeap add r4, r0, #0 bne _021E5C9A - bl ErrorHandling + bl GF_AssertFail _021E5C9A: add r2, r4, #0 mov r1, #0x18 @@ -31400,7 +31400,7 @@ MOD16_021E5CC8: ; 0x021E5CC8 bl AllocFromHeap add r4, r0, #0 bne _021E5CDA - bl ErrorHandling + bl GF_AssertFail _021E5CDA: mov r0, #0 strb r0, [r4] @@ -31427,7 +31427,7 @@ MOD16_021E5D00: ; 0x021E5D00 push {r4, lr} add r4, r0, #0 bne _021E5D0A - bl ErrorHandling + bl GF_AssertFail _021E5D0A: add r0, r4, #0 bl FreeToHeap @@ -31440,7 +31440,7 @@ MOD16_021E5D14: ; 0x021E5D14 push {r4, lr} add r4, r0, #0 bne _021E5D1E - bl ErrorHandling + bl GF_AssertFail _021E5D1E: add r0, r4, #0 bl FreeToHeap @@ -31676,7 +31676,7 @@ _021E5E94: str r0, [r4] b _021E5EC4 _021E5EC0: - bl ErrorHandling + bl GF_AssertFail _021E5EC4: add r0, r6, #0 bl MOD16_021E6E44 @@ -31940,7 +31940,7 @@ MOD16_021E60A8: ; 0x021E60A8 ldr r4, [sp, #0x2c] cmp r5, #2 ble _021E60C0 - bl ErrorHandling + bl GF_AssertFail _021E60C0: ldr r0, [sp, #0x28] cmp r0, #9 @@ -32033,7 +32033,7 @@ _021E615E: add sp, #0x10 pop {r3, r4, r5, r6, r7, pc} _021E6172: - bl ErrorHandling + bl GF_AssertFail add sp, #0x10 pop {r3, r4, r5, r6, r7, pc} .align 2, 0 @@ -32809,7 +32809,7 @@ _021E6718: mvn r0, r0 cmp r4, r0 bne _021E673C - bl ErrorHandling + bl GF_AssertFail _021E673C: cmp r4, #0 bne _021E6744 @@ -32871,7 +32871,7 @@ _021E6784: mvn r1, r1 cmp r0, r1 bne _021E67AA - bl ErrorHandling + bl GF_AssertFail _021E67AA: add r0, r4, #1 add r1, sp, #0x18 @@ -32902,7 +32902,7 @@ _021E67C4: mvn r1, r1 cmp r0, r1 bne _021E67EA - bl ErrorHandling + bl GF_AssertFail _021E67EA: add sp, #0x1c pop {r4, r5, r6, r7, pc} @@ -32947,7 +32947,7 @@ _021E681A: mvn r1, r1 cmp r0, r1 bne _021E683C - bl ErrorHandling + bl GF_AssertFail _021E683C: add r0, r4, #1 add r1, sp, #0x10 @@ -32976,7 +32976,7 @@ _021E6856: mvn r1, r1 cmp r0, r1 bne _021E6878 - bl ErrorHandling + bl GF_AssertFail _021E6878: add sp, #0x14 pop {r4, r5, r6, r7, pc} @@ -33020,7 +33020,7 @@ _021E68A6: mvn r1, r1 cmp r0, r1 bne _021E68C8 - bl ErrorHandling + bl GF_AssertFail _021E68C8: add r0, r4, #1 add r1, sp, #0x10 @@ -33049,7 +33049,7 @@ _021E68E2: mvn r1, r1 cmp r0, r1 bne _021E6904 - bl ErrorHandling + bl GF_AssertFail _021E6904: add sp, #0x14 pop {r4, r5, r6, r7, pc} @@ -33093,7 +33093,7 @@ _021E6932: mvn r1, r1 cmp r0, r1 bne _021E6954 - bl ErrorHandling + bl GF_AssertFail _021E6954: add r0, r4, #1 add r1, sp, #0x10 @@ -33122,7 +33122,7 @@ _021E696E: mvn r1, r1 cmp r0, r1 bne _021E6990 - bl ErrorHandling + bl GF_AssertFail _021E6990: add sp, #0x14 pop {r4, r5, r6, r7, pc} @@ -33166,7 +33166,7 @@ _021E69BE: mvn r1, r1 cmp r0, r1 bne _021E69E0 - bl ErrorHandling + bl GF_AssertFail _021E69E0: add r0, r4, #1 add r1, sp, #0x10 @@ -33195,7 +33195,7 @@ _021E69FA: mvn r1, r1 cmp r0, r1 bne _021E6A1C - bl ErrorHandling + bl GF_AssertFail _021E6A1C: add sp, #0x14 pop {r4, r5, r6, r7, pc} @@ -33239,7 +33239,7 @@ _021E6A4A: mvn r1, r1 cmp r0, r1 bne _021E6A6C - bl ErrorHandling + bl GF_AssertFail _021E6A6C: add r0, r4, #1 add r1, sp, #0x10 @@ -33268,7 +33268,7 @@ _021E6A86: mvn r1, r1 cmp r0, r1 bne _021E6AA8 - bl ErrorHandling + bl GF_AssertFail _021E6AA8: add sp, #0x14 pop {r4, r5, r6, r7, pc} @@ -33310,7 +33310,7 @@ _021E6AD6: bl MOD16_021D822C cmp r0, #0xf bne _021E6AF4 - bl ErrorHandling + bl GF_AssertFail _021E6AF4: add r0, r4, #1 add r1, sp, #0x10 @@ -33337,7 +33337,7 @@ _021E6B0E: bl MOD16_021D822C cmp r0, #0xf bne _021E6B2C - bl ErrorHandling + bl GF_AssertFail _021E6B2C: add sp, #0x14 pop {r4, r5, r6, r7, pc} @@ -33468,7 +33468,7 @@ MOD16_021E6C04: ; 0x021E6C04 ldr r5, [r6] cmp r0, #0 bne _021E6C20 - bl ErrorHandling + bl GF_AssertFail _021E6C20: ldr r1, [sp, #8] ldr r2, [sp, #0x58] @@ -33553,7 +33553,7 @@ MOD16_021E6CB4: ; 0x021E6CB4 mvn r0, r0 cmp r5, r0 bne _021E6CD8 - bl ErrorHandling + bl GF_AssertFail _021E6CD8: cmp r5, #0 beq _021E6CE2 @@ -33567,7 +33567,7 @@ _021E6CE6: mov r4, #0xe b _021E6CEE _021E6CEA: - bl ErrorHandling + bl GF_AssertFail _021E6CEE: add r0, r4, #0 pop {r4, r5, r6, pc} @@ -33688,7 +33688,7 @@ _021E6D80: mov r5, #0x58 b _021E6D8E _021E6D8A: - bl ErrorHandling + bl GF_AssertFail _021E6D8E: str r4, [r6] str r5, [r7] @@ -33933,7 +33933,7 @@ MOD16_021E6F18: ; 0x021E6F18 bl AllocFromHeap add r4, r0, #0 bne _021E6F2A - bl ErrorHandling + bl GF_AssertFail _021E6F2A: add r0, r4, #0 mov r1, #0 @@ -33962,7 +33962,7 @@ MOD16_021E6F54: ; 0x021E6F54 bl AllocFromHeap add r4, r0, #0 bne _021E6F66 - bl ErrorHandling + bl GF_AssertFail _021E6F66: mov r0, #0 strb r0, [r4] @@ -33981,7 +33981,7 @@ MOD16_021E6F7C: ; 0x021E6F7C push {r4, lr} add r4, r0, #0 bne _021E6F86 - bl ErrorHandling + bl GF_AssertFail _021E6F86: add r0, r4, #0 bl FreeToHeap @@ -33994,7 +33994,7 @@ MOD16_021E6F90: ; 0x021E6F90 push {r4, lr} add r4, r0, #0 bne _021E6F9A - bl ErrorHandling + bl GF_AssertFail _021E6F9A: add r0, r4, #0 bl FreeToHeap @@ -34307,7 +34307,7 @@ MOD16_021E71A8: ; 0x021E71A8 ldr r0, [r4] mov r1, #0 add r0, r0, #4 - bl FUN_02019620 + bl FillWindowPixelBuffer add r0, r5, #0 add r1, r4, #0 bl MOD16_021E753C @@ -34471,7 +34471,7 @@ MOD16_021E72E4: ; 0x021E72E4 cmp r0, #2 beq _021E731E mov r7, #0 - bl ErrorHandling + bl GF_AssertFail _021E731E: ldr r0, [r4, #0x18] bl MOD16_021E7A70 @@ -35467,7 +35467,7 @@ _021E7AA6: mov r4, #0x1a b _021E7AAE _021E7AAA: - bl ErrorHandling + bl GF_AssertFail _021E7AAE: add r0, r4, #0 pop {r4, pc} @@ -35605,7 +35605,7 @@ MOD16_021E7BB0: ; 0x021E7BB0 bl AllocFromHeap add r4, r0, #0 bne _021E7BC2 - bl ErrorHandling + bl GF_AssertFail _021E7BC2: add r2, r4, #0 mov r1, #0x18 @@ -35651,7 +35651,7 @@ MOD16_021E7C10: ; 0x021E7C10 bl AllocFromHeap add r4, r0, #0 bne _021E7C22 - bl ErrorHandling + bl GF_AssertFail _021E7C22: mov r0, #0 strb r0, [r4] @@ -35679,7 +35679,7 @@ MOD16_021E7C38: ; 0x021E7C38 bl AllocFromHeap add r4, r0, #0 bne _021E7C58 - bl ErrorHandling + bl GF_AssertFail _021E7C58: add r0, r4, #0 mov r1, #0 @@ -35712,7 +35712,7 @@ MOD16_021E7C90: ; 0x021E7C90 push {r4, lr} add r4, r0, #0 bne _021E7C9A - bl ErrorHandling + bl GF_AssertFail _021E7C9A: add r0, r4, #0 bl FreeToHeap @@ -35725,7 +35725,7 @@ MOD16_021E7CA4: ; 0x021E7CA4 push {r4, lr} add r4, r0, #0 bne _021E7CAE - bl ErrorHandling + bl GF_AssertFail _021E7CAE: add r0, r4, #0 bl FreeToHeap @@ -35738,7 +35738,7 @@ MOD16_021E7CB8: ; 0x021E7CB8 push {r4, lr} add r4, r0, #0 bne _021E7CC2 - bl ErrorHandling + bl GF_AssertFail _021E7CC2: add r0, r4, #0 bl MOD16_021DAC7C @@ -37007,7 +37007,7 @@ MOD16_021E868C: ; 0x021E868C ldr r4, [r1] cmp r0, #0 bne _021E86A0 - bl ErrorHandling + bl GF_AssertFail _021E86A0: mov r0, #0x51 lsl r0, r0, #2 @@ -37367,7 +37367,7 @@ _021E8934: bl FUN_0201C2C8 cmp r0, #0 bne _021E895C - bl ErrorHandling + bl GF_AssertFail _021E895C: add sp, #0x14 pop {r4, r5, r6, r7, pc} @@ -37714,7 +37714,7 @@ MOD16_021E8BB8: ; 0x021E8BB8 cmp r4, #8 blt _021E8BCC _021E8BC8: - bl ErrorHandling + bl GF_AssertFail _021E8BCC: sub r0, r4, #2 lsl r1, r0, #2 @@ -37806,7 +37806,7 @@ MOD16_021E8C70: ; 0x021E8C70 bl AllocFromHeap add r4, r0, #0 bne _021E8C82 - bl ErrorHandling + bl GF_AssertFail _021E8C82: add r0, r4, #0 mov r1, #0 @@ -37865,7 +37865,7 @@ MOD16_021E8CF4: ; 0x021E8CF4 bl AllocFromHeap add r4, r0, #0 bne _021E8D06 - bl ErrorHandling + bl GF_AssertFail _021E8D06: mov r0, #0 strb r0, [r4] @@ -37893,7 +37893,7 @@ MOD16_021E8D1C: ; 0x021E8D1C bl AllocFromHeap add r4, r0, #0 bne _021E8D3C - bl ErrorHandling + bl GF_AssertFail _021E8D3C: add r0, r4, #0 mov r1, #0 @@ -37957,7 +37957,7 @@ MOD16_021E8DBC: ; 0x021E8DBC push {r4, lr} add r4, r0, #0 bne _021E8DC6 - bl ErrorHandling + bl GF_AssertFail _021E8DC6: add r0, r4, #0 bl FreeToHeap @@ -37970,7 +37970,7 @@ MOD16_021E8DD0: ; 0x021E8DD0 push {r4, lr} add r4, r0, #0 bne _021E8DDA - bl ErrorHandling + bl GF_AssertFail _021E8DDA: add r0, r4, #0 bl FreeToHeap @@ -37983,7 +37983,7 @@ MOD16_021E8DE4: ; 0x021E8DE4 push {r4, lr} add r4, r0, #0 bne _021E8DEE - bl ErrorHandling + bl GF_AssertFail _021E8DEE: add r0, r4, #0 bl MOD16_021DAC7C @@ -38147,7 +38147,7 @@ _021E8F0E: mov r0, #1 pop {r4, r5, r6, r7, pc} _021E8F1A: - bl ErrorHandling + bl GF_AssertFail _021E8F1E: mov r0, #0 add sp, #0x14 @@ -38276,7 +38276,7 @@ _021E9002: mov r0, #1 pop {r4, r5, pc} _021E9008: - bl ErrorHandling + bl GF_AssertFail _021E900C: mov r0, #0 add sp, #0x14 @@ -38525,7 +38525,7 @@ _021E91D0: str r0, [sp, #4] b _021E91DA _021E91D6: - bl ErrorHandling + bl GF_AssertFail _021E91DA: ldr r0, [sp] cmp r0, #4 @@ -38612,7 +38612,7 @@ _021E927E: bl MOD16_021EA25C b _021E928E _021E928A: - bl ErrorHandling + bl GF_AssertFail _021E928E: ldr r0, [sp, #4] add sp, #8 @@ -39050,7 +39050,7 @@ MOD16_021E95D0: ; 0x021E95D0 bl AllocFromHeap add r4, r0, #0 bne _021E95E2 - bl ErrorHandling + bl GF_AssertFail _021E95E2: add r0, r4, #0 mov r1, #0 @@ -39079,7 +39079,7 @@ MOD16_021E960C: ; 0x021E960C bl AllocFromHeap add r4, r0, #0 bne _021E961E - bl ErrorHandling + bl GF_AssertFail _021E961E: mov r0, #0 strb r0, [r4] @@ -39104,7 +39104,7 @@ MOD16_021E9638: ; 0x021E9638 push {r4, lr} add r4, r0, #0 bne _021E9642 - bl ErrorHandling + bl GF_AssertFail _021E9642: add r0, r4, #0 bl FreeToHeap @@ -39117,7 +39117,7 @@ MOD16_021E964C: ; 0x021E964C push {r4, lr} add r4, r0, #0 bne _021E9656 - bl ErrorHandling + bl GF_AssertFail _021E9656: add r0, r4, #0 bl FreeToHeap @@ -39593,7 +39593,7 @@ _021E99AE: str r0, [r4, #0x1c] pop {r4, pc} _021E99BA: - bl ErrorHandling + bl GF_AssertFail _021E99BE: pop {r4, pc} thumb_func_end MOD16_021E9940 @@ -40777,7 +40777,7 @@ MOD16_021EA274: ; 0x021EA274 bl AllocFromHeap add r4, r0, #0 bne _021EA286 - bl ErrorHandling + bl GF_AssertFail _021EA286: add r2, r4, #0 mov r1, #0x10 @@ -40813,7 +40813,7 @@ MOD16_021EA2BC: ; 0x021EA2BC bl AllocFromHeap add r4, r0, #0 bne _021EA2CE - bl ErrorHandling + bl GF_AssertFail _021EA2CE: add r2, r4, #0 mov r1, #0x14 @@ -40835,7 +40835,7 @@ MOD16_021EA2E8: ; 0x021EA2E8 push {r4, lr} add r4, r0, #0 bne _021EA2F2 - bl ErrorHandling + bl GF_AssertFail _021EA2F2: add r0, r4, #0 bl FreeToHeap @@ -40848,7 +40848,7 @@ MOD16_021EA2FC: ; 0x021EA2FC push {r4, lr} add r4, r0, #0 bne _021EA306 - bl ErrorHandling + bl GF_AssertFail _021EA306: add r0, r4, #0 bl FreeToHeap @@ -40875,7 +40875,7 @@ MOD16_021EA314: ; 0x021EA314 bl AllocFromHeap add r4, r0, #0 bne _021EA332 - bl ErrorHandling + bl GF_AssertFail _021EA332: add r2, r4, #0 mov r1, #0x18 @@ -41593,7 +41593,7 @@ MOD16_021EA858: ; 0x021EA858 add r2, r1, #0 add r0, r0, #4 add r3, r1, #0 - bl FUN_020196F4 + bl FillWindowPixelRect ldr r0, [r4] mov r1, #1 ldr r0, [r0] @@ -41901,7 +41901,7 @@ MOD16_021EAAA4: ; 0x021EAAA4 mov r1, #0 lsr r2, r2, #0x10 lsr r3, r3, #0x10 - bl FUN_020196F4 + bl FillWindowPixelRect ldr r1, [sp, #0x38] ldr r0, [sp, #0xc] mov r6, #0 @@ -42016,7 +42016,7 @@ _021EABA2: mov r1, #6 lsr r2, r2, #0x10 lsr r3, r3, #0x10 - bl FUN_020196F4 + bl FillWindowPixelRect str r5, [r4] add sp, #0xc pop {r4, r5, r6, r7, pc} @@ -42049,7 +42049,7 @@ MOD16_021EABC4: ; 0x021EABC4 mov r1, #0 lsr r2, r2, #0x10 lsr r3, r3, #0x10 - bl FUN_020196F4 + bl FillWindowPixelRect cmp r5, r6 bge _021EAC18 _021EABFE: @@ -42482,7 +42482,7 @@ MOD16_021EAF18: ; 0x021EAF18 bl AllocFromHeap add r4, r0, #0 bne _021EAF2A - bl ErrorHandling + bl GF_AssertFail _021EAF2A: add r2, r4, #0 mov r1, #0x10 @@ -42515,7 +42515,7 @@ MOD16_021EAF58: ; 0x021EAF58 bl AllocFromHeap add r4, r0, #0 bne _021EAF6A - bl ErrorHandling + bl GF_AssertFail _021EAF6A: mov r0, #0 strb r0, [r4] @@ -42540,7 +42540,7 @@ MOD16_021EAF84: ; 0x021EAF84 push {r4, lr} add r4, r0, #0 bne _021EAF8E - bl ErrorHandling + bl GF_AssertFail _021EAF8E: add r0, r4, #0 bl FreeToHeap @@ -42553,7 +42553,7 @@ MOD16_021EAF98: ; 0x021EAF98 push {r4, lr} add r4, r0, #0 bne _021EAFA2 - bl ErrorHandling + bl GF_AssertFail _021EAFA2: add r0, r4, #0 bl FreeToHeap @@ -45063,7 +45063,7 @@ MOD16_021EC274: ; 0x021EC274 bl AllocFromHeap add r4, r0, #0 bne _021EC286 - bl ErrorHandling + bl GF_AssertFail _021EC286: mov r0, #0 strb r0, [r4] @@ -45101,7 +45101,7 @@ MOD16_021EC2C0: ; 0x021EC2C0 bl AllocFromHeap add r4, r0, #0 bne _021EC2D2 - bl ErrorHandling + bl GF_AssertFail _021EC2D2: mov r0, #0 strb r0, [r4] @@ -45126,7 +45126,7 @@ MOD16_021EC2EC: ; 0x021EC2EC push {r4, lr} add r4, r0, #0 bne _021EC2F6 - bl ErrorHandling + bl GF_AssertFail _021EC2F6: add r0, r4, #0 bl FreeToHeap @@ -45139,7 +45139,7 @@ MOD16_021EC300: ; 0x021EC300 push {r4, lr} add r4, r0, #0 bne _021EC30A - bl ErrorHandling + bl GF_AssertFail _021EC30A: add r0, r4, #0 bl FreeToHeap @@ -45168,7 +45168,7 @@ MOD16_021EC31C: ; 0x021EC31C bl AllocFromHeap add r4, r0, #0 bne _021EC330 - bl ErrorHandling + bl GF_AssertFail _021EC330: mov r0, #0 strb r0, [r4] @@ -45513,7 +45513,7 @@ MOD16_021EC574: ; 0x021EC574 ldr r0, [r4] mov r1, #0 add r0, r0, #4 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, [r4] mov r1, #1 ldr r0, [r0] @@ -46227,7 +46227,7 @@ MOD16_021ECB54: ; 0x021ECB54 bl AllocFromHeap add r4, r0, #0 bne _021ECB66 - bl ErrorHandling + bl GF_AssertFail _021ECB66: add r2, r4, #0 mov r1, #0x10 @@ -46262,7 +46262,7 @@ MOD16_021ECB98: ; 0x021ECB98 bl AllocFromHeap add r4, r0, #0 bne _021ECBAA - bl ErrorHandling + bl GF_AssertFail _021ECBAA: mov r0, #0 strb r0, [r4] @@ -46290,7 +46290,7 @@ MOD16_021ECBC0: ; 0x021ECBC0 bl AllocFromHeap add r4, r0, #0 bne _021ECBE0 - bl ErrorHandling + bl GF_AssertFail _021ECBE0: add r0, r4, #0 mov r1, #0 @@ -46316,7 +46316,7 @@ MOD16_021ECC08: ; 0x021ECC08 push {r4, lr} add r4, r0, #0 bne _021ECC12 - bl ErrorHandling + bl GF_AssertFail _021ECC12: add r0, r4, #0 bl FreeToHeap @@ -46329,7 +46329,7 @@ MOD16_021ECC1C: ; 0x021ECC1C push {r4, lr} add r4, r0, #0 bne _021ECC26 - bl ErrorHandling + bl GF_AssertFail _021ECC26: add r0, r4, #0 bl FreeToHeap @@ -46342,7 +46342,7 @@ MOD16_021ECC30: ; 0x021ECC30 push {r4, lr} add r4, r0, #0 bne _021ECC3A - bl ErrorHandling + bl GF_AssertFail _021ECC3A: add r0, r4, #0 bl MOD16_021DAC7C @@ -47231,7 +47231,7 @@ MOD16_021ED2B4: ; 0x021ED2B4 ldr r4, [r1] cmp r0, #0 bne _021ED2C8 - bl ErrorHandling + bl GF_AssertFail _021ED2C8: mov r0, #0x51 lsl r0, r0, #2 @@ -47425,7 +47425,7 @@ _021ED430: bl FUN_0201C2C8 cmp r0, #0 bne _021ED458 - bl ErrorHandling + bl GF_AssertFail _021ED458: add sp, #0x14 pop {r4, r5, r6, r7, pc} @@ -47642,7 +47642,7 @@ MOD16_021ED5C8: ; 0x021ED5C8 bl AllocFromHeap add r4, r0, #0 bne _021ED5DA - bl ErrorHandling + bl GF_AssertFail _021ED5DA: mov r0, #0 strb r0, [r4] @@ -47674,7 +47674,7 @@ MOD16_021ED604: ; 0x021ED604 bl AllocFromHeap add r4, r0, #0 bne _021ED618 - bl ErrorHandling + bl GF_AssertFail _021ED618: add r0, r4, #0 mov r1, #0 @@ -47702,7 +47702,7 @@ MOD16_021ED648: ; 0x021ED648 push {r4, lr} add r4, r0, #0 bne _021ED652 - bl ErrorHandling + bl GF_AssertFail _021ED652: add r0, r4, #0 bl FreeToHeap @@ -47715,7 +47715,7 @@ MOD16_021ED65C: ; 0x021ED65C push {r4, lr} add r4, r0, #0 bne _021ED666 - bl ErrorHandling + bl GF_AssertFail _021ED666: add r0, r4, #0 bl MOD16_021EE0F0 @@ -47743,7 +47743,7 @@ MOD16_021ED680: ; 0x021ED680 bl AllocFromHeap add r4, r0, #0 bne _021ED696 - bl ErrorHandling + bl GF_AssertFail _021ED696: mov r0, #0 strb r0, [r4] @@ -48265,7 +48265,7 @@ MOD16_021EDA3C: ; 0x021EDA3C ldr r0, [r4] mov r1, #0 add r0, r0, #4 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, [r4] mov r1, #1 ldr r0, [r0] @@ -48398,7 +48398,7 @@ MOD16_021EDAE4: ; 0x021EDAE4 bl FUN_02009D68 cmp r0, #0 bne _021EDB82 - bl ErrorHandling + bl GF_AssertFail _021EDB82: add r0, r4, #0 mov r1, #0x60 @@ -49298,7 +49298,7 @@ MOD16_021EE2A4: ; 0x021EE2A4 lsl r4, r0, #1 add r0, r4, #1 lsl r1, r0, #1 - ldr r0, _021EE354 ; =UNK_020FFA38 + ldr r0, _021EE354 ; =FX_SinCosTable_ mov r3, #0 ldrsh r0, [r0, r1] asr r1, r0, #0x1f @@ -49312,7 +49312,7 @@ MOD16_021EE2A4: ; 0x021EE2A4 lsr r5, r2, #0xc orr r5, r0 mov r2, #0xe - ldr r0, _021EE354 ; =UNK_020FFA38 + ldr r0, _021EE354 ; =FX_SinCosTable_ lsl r1, r4, #1 ldrsh r0, [r0, r1] lsl r2, r2, #0xe @@ -49364,7 +49364,7 @@ MOD16_021EE2A4: ; 0x021EE2A4 add sp, #0x10 pop {r3, r4, r5, r6, r7, pc} .align 2, 0 -_021EE354: .word UNK_020FFA38 +_021EE354: .word FX_SinCosTable_ thumb_func_end MOD16_021EE2A4 thumb_func_start MOD16_021EE358 @@ -49737,7 +49737,7 @@ MOD16_021EE5D0: ; 0x021EE5D0 bl FUN_02003974 ldr r0, [sp, #4] mov r1, #1 - bl FUN_020B19C4 + bl NNS_G2dGetImagePaletteLocation add r2, r5, #0 add r2, #0xbc add r1, r0, #0 @@ -49762,7 +49762,7 @@ MOD16_021EE5D0: ; 0x021EE5D0 bl FUN_02003974 ldr r0, [sp, #8] mov r1, #1 - bl FUN_020B19C4 + bl NNS_G2dGetImagePaletteLocation add r5, #0xc0 add r1, r0, #0 ldr r2, [r5] @@ -49837,7 +49837,7 @@ MOD16_021EE6CC: ; 0x021EE6CC bl AllocFromHeap add r4, r0, #0 bne _021EE6DE - bl ErrorHandling + bl GF_AssertFail _021EE6DE: add r2, r4, #0 mov r1, #0x10 @@ -49873,7 +49873,7 @@ MOD16_021EE714: ; 0x021EE714 bl AllocFromHeap add r4, r0, #0 bne _021EE726 - bl ErrorHandling + bl GF_AssertFail _021EE726: mov r0, #0 strb r0, [r4] @@ -49898,7 +49898,7 @@ MOD16_021EE740: ; 0x021EE740 push {r4, lr} add r4, r0, #0 bne _021EE74A - bl ErrorHandling + bl GF_AssertFail _021EE74A: add r0, r4, #0 bl FreeToHeap @@ -49911,7 +49911,7 @@ MOD16_021EE754: ; 0x021EE754 push {r4, lr} add r4, r0, #0 bne _021EE75E - bl ErrorHandling + bl GF_AssertFail _021EE75E: add r0, r4, #0 bl FreeToHeap @@ -50697,7 +50697,7 @@ MOD16_021EED04: ; 0x021EED04 ldr r4, [r1] cmp r0, #0 bne _021EED18 - bl ErrorHandling + bl GF_AssertFail _021EED18: mov r0, #0x51 lsl r0, r0, #2 @@ -50853,7 +50853,7 @@ _021EEE2C: bl FUN_0201C2C8 cmp r0, #0 bne _021EEE54 - bl ErrorHandling + bl GF_AssertFail _021EEE54: add sp, #0x14 pop {r4, r5, r6, r7, pc} @@ -51457,7 +51457,7 @@ MOD16_021EF318: ; 0x021EF318 add r5, r0, #0 add r0, r1, #0 mov r1, #1 - bl FUN_02018FF4 + bl AllocWindows add r4, r0, #0 mov r3, #0 str r3, [sp] @@ -51473,7 +51473,7 @@ MOD16_021EF318: ; 0x021EF318 bl FUN_02019064 add r0, r4, #0 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer add r0, r4, #0 bl CopyWindowToVram add r0, r4, #0 @@ -51809,7 +51809,7 @@ MOD16_021EF598: ; 0x021EF598 str r0, [r5] cmp r0, #0 bne _021EF5DA - bl ErrorHandling + bl GF_AssertFail _021EF5DA: add sp, #0x44 pop {r3, r4, r5, r6, pc} @@ -51856,7 +51856,7 @@ MOD16_021EF5EC: ; 0x021EF5EC str r0, [r5] cmp r0, #0 bne _021EF62E - bl ErrorHandling + bl GF_AssertFail _021EF62E: ldr r0, [r5] mov r1, #0x11 @@ -52059,7 +52059,7 @@ MOD16_021EF790: ; 0x021EF790 mov r1, #6 add r3, r2, #0 str r4, [sp, #4] - bl FUN_02006930 + bl GfGfxLoader_GXLoadPal mov r0, #0 str r0, [sp] str r0, [sp, #4] @@ -52070,13 +52070,13 @@ MOD16_021EF790: ; 0x021EF790 mov r1, #0x21 add r2, r5, #0 mov r3, #3 - bl FUN_0200687C + bl GfGfxLoader_LoadCharData str r4, [sp] mov r0, #0x45 mov r1, #0x32 mov r2, #1 add r3, sp, #0x10 - bl FUN_02006BDC + bl GfGfxLoader_GetScrnData ldr r2, [sp, #0x10] mov r3, #0 str r3, [sp] @@ -52100,7 +52100,7 @@ MOD16_021EF790: ; 0x021EF790 mov r1, #0x33 mov r2, #1 add r3, sp, #0x10 - bl FUN_02006BDC + bl GfGfxLoader_GetScrnData ldr r2, [sp, #0x10] mov r1, #3 str r1, [sp] @@ -52124,7 +52124,7 @@ MOD16_021EF790: ; 0x021EF790 mov r1, #0x34 mov r2, #1 add r3, sp, #0x10 - bl FUN_02006BDC + bl GfGfxLoader_GetScrnData add r6, r0, #0 ldr r2, [sp, #0x10] mov r0, #8 @@ -52149,7 +52149,7 @@ MOD16_021EF790: ; 0x021EF790 mov r1, #0x36 mov r2, #1 add r3, sp, #0x10 - bl FUN_02006BDC + bl GfGfxLoader_GetScrnData add r4, r0, #0 ldr r2, [sp, #0x10] mov r0, #0x10 @@ -52192,13 +52192,13 @@ MOD16_021EF8A8: ; 0x021EF8A8 mov r1, #0x21 add r2, r4, #0 mov r3, #2 - bl FUN_0200687C + bl GfGfxLoader_LoadCharData str r5, [sp] mov r0, #0x45 mov r1, #0x39 mov r2, #1 add r3, sp, #0x10 - bl FUN_02006BDC + bl GfGfxLoader_GetScrnData ldr r2, [sp, #0x10] mov r3, #0 str r3, [sp] @@ -52280,7 +52280,7 @@ _021EF958: bl FUN_020056AC cmp r0, #0 bne _021EF976 - bl ErrorHandling + bl GF_AssertFail _021EF976: mov r0, #0x6e lsl r0, r0, #2 @@ -52520,7 +52520,7 @@ MOD16_021EFB20: ; 0x021EFB20 mov r1, #0x17 add r2, #8 add r3, r5, #0 - bl FUN_02006C08 + bl GfGfxLoader_GetPlttData b _021EFB48 _021EFB3A: add r2, r4, #0 @@ -52528,7 +52528,7 @@ _021EFB3A: mov r1, #0x18 add r2, #8 add r3, r5, #0 - bl FUN_02006C08 + bl GfGfxLoader_GetPlttData _021EFB48: add r2, r4, #0 str r0, [r4] @@ -52536,7 +52536,7 @@ _021EFB48: mov r1, #0x1a add r2, #0xc add r3, r5, #0 - bl FUN_02006C08 + bl GfGfxLoader_GetPlttData str r0, [r4, #4] mov r1, #0 str r1, [r4, #0x10] @@ -54602,7 +54602,7 @@ _021F0AEC: str r0, [r4, r1] pop {r3, r4, r5, pc} _021F0B0C: - bl ErrorHandling + bl GF_AssertFail pop {r3, r4, r5, pc} nop _021F0B14: .word 0x000003CF @@ -58151,7 +58151,7 @@ _021F266A: str r0, [r1] pop {r4, r5, r6, pc} _021F2688: - bl ErrorHandling + bl GF_AssertFail pop {r4, r5, r6, pc} nop _021F2690: .word 0x000003CF @@ -58355,11 +58355,11 @@ MOD16_021F2808: ; 0x021F2808 add r6, r0, #0 cmp r4, #1 bne _021F282C - bl ErrorHandling + bl GF_AssertFail _021F282C: cmp r4, #0 bne _021F2834 - bl ErrorHandling + bl GF_AssertFail _021F2834: lsl r1, r4, #0x18 add r0, r5, #0 @@ -58394,11 +58394,11 @@ MOD16_021F2858: ; 0x021F2858 add r6, r0, #0 cmp r4, #1 bne _021F287C - bl ErrorHandling + bl GF_AssertFail _021F287C: cmp r4, #0 bne _021F2884 - bl ErrorHandling + bl GF_AssertFail _021F2884: lsl r1, r4, #0x18 add r0, r5, #0 @@ -58962,7 +58962,7 @@ MOD16_021F2C8C: ; 0x021F2C8C ldrb r0, [r4, r0] cmp r0, #8 bls _021F2CBC - bl ErrorHandling + bl GF_AssertFail _021F2CBC: pop {r3, r4, r5, pc} nop diff --git a/arm9/modules/17/asm/module_17.s b/arm9/modules/17/asm/module_17.s index 82398e6b..955741b3 100644 --- a/arm9/modules/17/asm/module_17.s +++ b/arm9/modules/17/asm/module_17.s @@ -46,7 +46,7 @@ MOD17_021D7520: ; 0x021D7520 bl MOD17_021D76E0 add r4, r0, #0 bne _021D7532 - bl ErrorHandling + bl GF_AssertFail _021D7532: ldr r0, [r5, #0x18] str r0, [r4] @@ -508,7 +508,7 @@ MOD17_021D786C: ; 0x021D786C push {r4, lr} add r4, r0, #0 bl FUN_020222AC - bl FUN_020B02C8 + bl NNS_G2dSetupSoftwareSpriteCamera ldr r0, [r4, #0x1c] cmp r0, #0 beq _021D7884 @@ -768,7 +768,7 @@ MOD17_021D7A2C: ; 0x021D7A2C lsl r5, r5, #2 add r0, r6, #0 add r1, r1, r5 - bl FUN_020B0088 + bl NNS_G2dGetUnpackedCharacterData ldr r0, [r4, #0x30] ldr r0, [r0, r5] pop {r4, r5, r6, pc} @@ -1046,7 +1046,7 @@ MOD17_021D7C28: ; 0x021D7C28 add r6, r2, #0 ldr r7, [sp, #0x18] str r1, [r0] - bl FUN_020B02C8 + bl NNS_G2dSetupSoftwareSpriteCamera ldr r1, _021D7CB0 ; =0x04000470 lsl r0, r4, #0xc str r0, [r1] @@ -1055,7 +1055,7 @@ MOD17_021D7C28: ; 0x021D7C28 mov r0, #0 str r0, [r1] ldr r0, [sp] - ldr r1, _021D7CB4 ; =UNK_020FFA38 + ldr r1, _021D7CB4 ; =FX_SinCosTable_ asr r0, r0, #4 lsl r2, r0, #1 lsl r0, r2, #1 @@ -1101,7 +1101,7 @@ _021D7CA0: nop _021D7CAC: .word 0x04000454 _021D7CB0: .word 0x04000470 -_021D7CB4: .word UNK_020FFA38 +_021D7CB4: .word FX_SinCosTable_ _021D7CB8: .word 0x0400046C _021D7CBC: .word 0x04000448 thumb_func_end MOD17_021D7C28 @@ -1173,7 +1173,7 @@ _021D7D24: .word MOD17_021DE32C thumb_func_start MOD17_021D7D28 MOD17_021D7D28: ; 0x021D7D28 push {r3, lr} - bl FUN_020BB7F4 + bl NNS_G3dInit bl G3X_InitMtxStack mov r0, #1 add r1, r0, #0 @@ -1218,11 +1218,11 @@ MOD17_021D7D28: ; 0x021D7D28 str r0, [r2] str r1, [r2, #0x40] mov r1, #1 - bl FUN_020AEB70 + bl NNS_GfdInitFrmTexVramManager mov r0, #1 lsl r0, r0, #0xe mov r1, #1 - bl FUN_020AEDF4 + bl NNS_GfdInitFrmPlttVramManager pop {r3, pc} .align 2, 0 _021D7D9C: .word 0x04000008 @@ -1253,7 +1253,7 @@ MOD17_021D7DB0: ; 0x021D7DB0 mov r0, #0x10 orr r0, r1 str r0, [r2] - bl FUN_020B0FC0 + bl NNS_G2dInitOamManagerModule bl GX_DisableEngineALayers bl GX_DisableEngineBLayers mov r0, #0x1f @@ -1272,8 +1272,8 @@ _021D7DFC: .word 0xFFCFFFEF thumb_func_start MOD17_021D7E00 MOD17_021D7E00: ; 0x021D7E00 push {r3, lr} - bl FUN_020AEAF4 - bl FUN_020AEC60 + bl NNS_GfdResetFrmTexVramState + bl NNS_GfdResetFrmPlttVramState pop {r3, pc} thumb_func_end MOD17_021D7E00 @@ -1282,7 +1282,7 @@ MOD17_021D7E0C: ; 0x021D7E0C push {r3, lr} bl GX_DisableEngineALayers bl GX_DisableEngineBLayers - bl FUN_020B0FC0 + bl NNS_G2dInitOamManagerModule pop {r3, pc} thumb_func_end MOD17_021D7E0C @@ -1357,7 +1357,7 @@ _021D7E8E: ldr r0, [r5, #8] cmp r1, r0 blt _021D7E9A - bl ErrorHandling + bl GF_AssertFail _021D7E9A: ldr r0, [r4, #4] cmp r0, #0 @@ -1412,7 +1412,7 @@ _021D7EEE: ldr r0, [r5, #0x14] cmp r1, r0 blt _021D7EFA - bl ErrorHandling + bl GF_AssertFail _021D7EFA: ldr r0, [r4, #4] cmp r0, #0 @@ -1658,7 +1658,7 @@ MOD17_021D80CC: ; 0x021D80CC bl FUN_0201E00C bl FUN_0201D168 bl FUN_0201E0BC - bl FUN_020B0FC0 + bl NNS_G2dInitOamManagerModule mov r0, #0 str r0, [sp] mov r1, #0x7c @@ -1752,11 +1752,11 @@ _021D81AC: add r1, r4, #1 mov r2, #0 mov r3, #0xe - bl UncompressFromNarc + bl GfGfxLoader_LoadFromNarc str r0, [sp, #4] cmp r0, #0 bne _021D81C6 - bl ErrorHandling + bl GF_AssertFail _021D81C6: ldr r1, [sp, #4] add r0, r7, #0 @@ -1778,7 +1778,7 @@ _021D81C6: mov r0, #0x19 add r2, r1, #0 mov r3, #0xe - bl UncompressFromNarc + bl GfGfxLoader_LoadFromNarc add r4, r0, #0 ldr r0, [r6, #0x14] add r1, r4, #0 @@ -1787,7 +1787,7 @@ _021D81C6: ldr r1, [r6, #8] add r0, r4, #0 add r1, r1, #4 - bl FUN_020B0138 + bl NNS_G2dGetUnpackedPaletteData ldr r1, [r7] ldr r0, [r6, #8] str r1, [r0] @@ -1816,7 +1816,7 @@ _021D822A: add r1, #0xce mov r2, #0 mov r3, #0xe - bl UncompressFromNarc + bl GfGfxLoader_LoadFromNarc add r2, r4, #0 add r1, r0, #0 add r2, #0x64 @@ -1837,7 +1837,7 @@ _021D822A: str r0, [sp] ldr r1, [sp, #8] mov r0, #0x19 - bl UncompressFromNarc + bl GfGfxLoader_LoadFromNarc str r0, [sp, #0xc] ldr r0, [r5, #0x14] ldr r1, [sp, #0xc] @@ -1851,13 +1851,13 @@ _021D822A: ldr r0, [sp, #0xc] add r1, r1, r6 add r1, r1, #4 - bl FUN_020B0138 + bl NNS_G2dGetUnpackedPaletteData ldr r0, [r5, #8] add r0, r0, r6 ldr r0, [r0, #4] cmp r0, #0 bne _021D8298 - bl ErrorHandling + bl GF_AssertFail _021D8298: ldr r1, [r7] ldr r0, [r5, #8] @@ -1887,7 +1887,7 @@ MOD17_021D82B8: ; 0x021D82B8 mov r0, #0x19 mov r1, #0xeb str r2, [sp] - bl UncompressFromNarc + bl GfGfxLoader_LoadFromNarc str r0, [r4, #0x28] add sp, #4 pop {r3, r4, pc} @@ -1914,13 +1914,13 @@ MOD17_021D82E4: ; 0x021D82E4 add r6, r3, #0 bl FUN_02006D98 str r0, [r5, #0x20] - ldr r3, _021D833C ; =UNK_021064B8 + ldr r3, _021D833C ; =NNS_GfdDefaultFuncAllocTexVram mov r1, #0 ldr r3, [r3] add r0, r4, #0 add r2, r1, #0 blx r3 - ldr r3, _021D8340 ; =UNK_021064C0 + ldr r3, _021D8340 ; =NNS_GfdDefaultFuncAllocPlttVram add r4, r0, #0 ldr r3, [r3] add r0, r6, #0 @@ -1948,8 +1948,8 @@ MOD17_021D82E4: ; 0x021D82E4 str r0, [r5, #0x24] pop {r4, r5, r6, pc} nop -_021D833C: .word UNK_021064B8 -_021D8340: .word UNK_021064C0 +_021D833C: .word NNS_GfdDefaultFuncAllocTexVram +_021D8340: .word NNS_GfdDefaultFuncAllocPlttVram _021D8344: .word 0x7FFF0000 _021D8348: .word 0xFFFF0000 thumb_func_end MOD17_021D82E4 @@ -2123,7 +2123,7 @@ MOD17_021D83E4: ; 0x021D83E4 str r0, [r5, r1] mov r0, #0xd mov r1, #1 - bl FUN_02018FF4 + bl AllocWindows ldr r2, _021D84EC ; =0x000006A8 mov r1, #0 str r0, [r5, r2] @@ -2506,7 +2506,7 @@ _021D8780: bl FUN_0201CD04 cmp r0, #1 beq _021D87F0 - bl ErrorHandling + bl GF_AssertFail _021D87F0: add r0, r6, #0 bl OverlayManager_FreeData @@ -2663,7 +2663,7 @@ _021D88F8: str r0, [r4, r1] mov r0, #0xd mov r1, #1 - bl FUN_02018FF4 + bl AllocWindows ldr r1, _021D8994 ; =0x000006A8 mov r2, #0 str r0, [r4, r1] @@ -3114,7 +3114,7 @@ MOD17_021D8C9C: ; 0x021D8C9C bl FUN_0201CD04 cmp r0, #1 beq _021D8D30 - bl ErrorHandling + bl GF_AssertFail _021D8D30: add r0, r5, #0 bl OverlayManager_FreeData @@ -3905,7 +3905,7 @@ _021D9312: bl MOD17_021DA870 cmp r0, #0 bne _021D932A - bl ErrorHandling + bl GF_AssertFail _021D932A: ldr r0, [r4, #0xc] add sp, #4 @@ -4201,7 +4201,7 @@ _021D955E: bl MOD17_021DA870 cmp r0, #0 bne _021D9576 - bl ErrorHandling + bl GF_AssertFail _021D9576: ldr r0, [r4, #0xc] add sp, #4 @@ -4691,7 +4691,7 @@ MOD17_021D9918: ; 0x021D9918 ldr r0, _021D99D4 ; =0x000006A8 mov r1, #0xf ldr r0, [r5, r0] - bl FUN_02019620 + bl FillWindowPixelBuffer lsl r0, r6, #0x18 lsr r0, r0, #0x18 str r0, [sp] @@ -4753,7 +4753,7 @@ MOD17_021D99E0: ; 0x021D99E0 add r4, r1, #0 ldr r0, [r5, r0] mov r1, #0xf - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r2, _021D9A5C ; =0x00000151 mov r0, #0 mov r1, #0x1a @@ -4813,12 +4813,12 @@ MOD17_021D9A68: ; 0x021D9A68 add r4, r1, #0 cmp r0, #0 beq _021D9A7E - bl ErrorHandling + bl GF_AssertFail _021D9A7E: ldr r0, _021D9B08 ; =0x000006A8 mov r1, #0xf ldr r0, [r5, r0] - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r2, _021D9B0C ; =0x00000151 mov r0, #0 mov r1, #0x1a @@ -5061,7 +5061,7 @@ _021D9C2E: mov r4, #0x14 b _021D9C36 _021D9C32: - bl ErrorHandling + bl GF_AssertFail _021D9C36: add r0, r4, #0 pop {r4, pc} @@ -5167,7 +5167,7 @@ MOD17_021D9CE0: ; 0x021D9CE0 add r6, r2, #0 cmp r4, #0 bne _021D9CF0 - bl ErrorHandling + bl GF_AssertFail _021D9CF0: add r0, r5, #0 add r0, #0xa8 @@ -5252,7 +5252,7 @@ MOD17_021D9D70: ; 0x021D9D70 add r4, r0, #0 cmp r5, #0x15 blo _021D9D7E - bl ErrorHandling + bl GF_AssertFail _021D9D7E: lsl r0, r5, #3 ldr r0, [r4, r0] @@ -5266,7 +5266,7 @@ MOD17_021D9D84: ; 0x021D9D84 add r4, r0, #0 cmp r5, #0x15 blo _021D9D92 - bl ErrorHandling + bl GF_AssertFail _021D9D92: lsl r0, r5, #3 add r0, r4, r0 @@ -5762,7 +5762,7 @@ MOD17_021DA0E8: ; 0x021DA0E8 sub r0, r0, #1 str r0, [r4, #0x24] bpl _021DA0FE - bl ErrorHandling + bl GF_AssertFail _021DA0FE: pop {r4, pc} thumb_func_end MOD17_021DA0E8 @@ -6674,7 +6674,7 @@ _021DA73E: str r1, [sp, #0x44] b _021DA750 _021DA74C: - bl ErrorHandling + bl GF_AssertFail _021DA750: ldr r0, [sp, #0xc] ldr r1, [r5, #0x48] @@ -6687,12 +6687,12 @@ _021DA750: ldr r1, [r2, r1] str r1, [sp, #0x34] bne _021DA76A - bl ErrorHandling + bl GF_AssertFail _021DA76A: ldr r0, [sp, #0x34] cmp r0, #0 bne _021DA774 - bl ErrorHandling + bl GF_AssertFail _021DA774: ldr r2, [r5, #4] add r0, r6, #0 @@ -7122,7 +7122,7 @@ MOD17_021DAA6C: ; 0x021DAA6C push {r4, lr} add r4, r0, #0 bne _021DAA76 - bl ErrorHandling + bl GF_AssertFail _021DAA76: ldr r0, [r4] pop {r4, pc} @@ -7137,7 +7137,7 @@ MOD17_021DAA7C: ; 0x021DAA7C add r4, r1, #0 cmp r5, #0 bne _021DAA8C - bl ErrorHandling + bl GF_AssertFail _021DAA8C: mov r0, #0xc mul r0, r4 @@ -7499,7 +7499,7 @@ MOD17_021DACA4: ; 0x021DACA4 str r0, [r4, #0x28] cmp r0, #0 bne _021DAD04 - bl ErrorHandling + bl GF_AssertFail _021DAD04: ldr r3, [r4, #0x2c] mov r2, #0xc @@ -7689,7 +7689,7 @@ _021DAE40: add sp, #4 pop {r3, r4, r5, r6, pc} _021DAE74: - bl ErrorHandling + bl GF_AssertFail _021DAE78: ldr r0, [r4, #0x28] ldr r1, [r4, #0x2c] @@ -7932,7 +7932,7 @@ MOD17_021DAFF4: ; 0x021DAFF4 add r4, r0, #0 cmp r5, #0x64 blo _021DB002 - bl ErrorHandling + bl GF_AssertFail _021DB002: lsl r0, r5, #2 ldr r0, [r4, r0] @@ -8180,7 +8180,7 @@ MOD17_021DB1D0: ; 0x021DB1D0 ldr r0, [r0, #4] cmp r0, #1 beq _021DB1E6 - bl ErrorHandling + bl GF_AssertFail _021DB1E6: ldr r0, [r4, #0x10] mov r2, #0x1c @@ -8536,7 +8536,7 @@ MOD17_021DB4AC: ; 0x021DB4AC ldr r0, [r0, #4] cmp r0, #1 beq _021DB4C0 - bl ErrorHandling + bl GF_AssertFail _021DB4C0: ldr r0, [r4, #0x10] ldr r5, [r0] @@ -8834,7 +8834,7 @@ MOD17_021DB6D8: ; 0x021DB6D8 ldrh r0, [r1] ldrh r1, [r1, #2] mov r3, #0xe - bl UncompressFromNarc + bl GfGfxLoader_LoadFromNarc add r1, r0, #0 add r0, r4, #0 mov r2, #0x76 @@ -8913,10 +8913,10 @@ MOD17_021DB700: ; 0x021DB700 ldrh r0, [r6] ldrh r1, [r6, #2] ldr r3, [sp, #0x30] - bl UncompressFromNarc + bl GfGfxLoader_LoadFromNarc add r1, sp, #0x10 add r6, r0, #0 - bl FUN_020B0088 + bl NNS_G2dGetUnpackedCharacterData ldr r0, [sp, #0x10] ldr r0, [r0, #0x14] bl FUN_02008A74 @@ -9277,7 +9277,7 @@ MOD17_021DB9F4: ; 0x021DB9F4 str r0, [r5] cmp r0, #0 bne _021DBA0E - bl ErrorHandling + bl GF_AssertFail _021DBA0E: ldr r0, [r5] mov r1, #0 @@ -9309,12 +9309,12 @@ MOD17_021DBA30: ; 0x021DBA30 add r7, r2, #0 cmp r0, #0 bne _021DBA42 - bl ErrorHandling + bl GF_AssertFail _021DBA42: ldr r0, [r5, #4] cmp r0, #0 bne _021DBA4C - bl ErrorHandling + bl GF_AssertFail _021DBA4C: ldr r2, [r5, #4] mov r4, #0 @@ -9332,7 +9332,7 @@ _021DBA56: _021DBA64: cmp r2, r4 bgt _021DBA6C - bl ErrorHandling + bl GF_AssertFail _021DBA6C: ldr r0, [r5] lsl r1, r4, #4 @@ -9813,7 +9813,7 @@ _021DBDAA: ldr r0, [r5] add r3, sp, #0x14 ldr r0, [r0, #4] - bl FUN_02006BDC + bl GfGfxLoader_GetScrnData ldr r3, [r5] add r4, r0, #0 ldr r0, [r3, #0x18] @@ -9850,7 +9850,7 @@ MOD17_021DBDE8: ; 0x021DBDE8 ldr r0, [r1, #4] ldr r1, [r1, #8] add r3, sp, #0x14 - bl FUN_02006BDC + bl GfGfxLoader_GetScrnData ldr r3, [r5] add r4, r0, #0 ldr r0, [r3, #0x18] @@ -10023,7 +10023,7 @@ _021DBF2A: ldr r0, [r5, #4] ldr r1, [r5, #0x10] add r3, sp, #0x24 - bl FUN_02006BDC + bl GfGfxLoader_GetScrnData ldr r2, [sp, #0x24] str r0, [sp, #0x20] ldrh r0, [r2] @@ -10206,7 +10206,7 @@ _021DC0A0: add r0, r7, #0 mov r2, #0 add r3, r4, #4 - bl FUN_02006BB0 + bl GfGfxLoader_GetCharData str r0, [r4, #8] str r5, [r4] ldr r0, [sp, #0x20] @@ -10245,7 +10245,7 @@ _021DC0EE: ldr r3, [sp, #0x1c] add r0, r7, #0 add r2, r4, #0 - bl FUN_02006C08 + bl GfGfxLoader_GetPlttData str r0, [r4, #4] str r5, [r4, #8] ldr r0, [sp, #0x18] @@ -10332,18 +10332,18 @@ MOD17_021DC1A0: ; 0x021DC1A0 add r4, r1, #0 cmp r5, #0 bne _021DC1AE - bl ErrorHandling + bl GF_AssertFail _021DC1AE: cmp r4, #0 bne _021DC1B6 - bl ErrorHandling + bl GF_AssertFail _021DC1B6: ldr r0, [r4] bl FUN_0201FE94 str r0, [r5] cmp r0, #0 bne _021DC1C6 - bl ErrorHandling + bl GF_AssertFail _021DC1C6: ldr r0, [r4, #0xc] str r0, [r5, #4] @@ -10496,7 +10496,7 @@ MOD17_021DC2C0: ; 0x021DC2C0 add r7, r3, #0 cmp r5, #0 bne _021DC2D2 - bl ErrorHandling + bl GF_AssertFail _021DC2D2: str r7, [r5, #4] str r6, [r5, #8] @@ -10756,7 +10756,7 @@ MOD17_021DC4CC: ; 0x021DC4CC ldr r0, [r4, #0x68] cmp r0, #0 bne _021DC4DA - bl ErrorHandling + bl GF_AssertFail _021DC4DA: ldr r0, [r4, #0x68] bl FUN_02022144 @@ -10819,7 +10819,7 @@ MOD17_021DC538: ; 0x021DC538 add r7, r3, #0 cmp r5, #0 bne _021DC54A - bl ErrorHandling + bl GF_AssertFail _021DC54A: cmp r4, #4 bge _021DC55E @@ -10921,7 +10921,7 @@ _021DC5E6: bl MOD17_021DC264 pop {r4, r5, r6, pc} _021DC618: - bl ErrorHandling + bl GF_AssertFail _021DC61C: pop {r4, r5, r6, pc} nop @@ -11061,7 +11061,7 @@ MOD17_021DC698: ; 0x021DC698 bl FUN_0201D568 cmp r0, #0 bne _021DC736 - bl ErrorHandling + bl GF_AssertFail _021DC736: ldr r0, [r5, #0x18] add r1, sp, #0x80 @@ -11257,7 +11257,7 @@ MOD17_021DC880: ; 0x021DC880 bl NewMsgDataFromNarc add r6, r0, #0 bne _021DC898 - bl ErrorHandling + bl GF_AssertFail _021DC898: add r0, r6, #0 add r1, r4, #0 @@ -11265,9 +11265,9 @@ _021DC898: add r7, r0, #0 mov r0, #0xe mov r1, #1 - bl FUN_02018FF4 + bl AllocWindows add r4, r0, #0 - bl FUN_0201901C + bl InitWindow mov r0, #0 ldr r2, [sp, #0x28] ldr r3, [sp, #0x2c] @@ -11436,7 +11436,7 @@ _021DC9CC: lsl r0, r0, #2 ldr r0, [r5, r0] mov r1, #0xf - bl FUN_02019620 + bl FillWindowPixelBuffer mov r0, #0 str r0, [sp] str r0, [sp, #4] @@ -11622,7 +11622,7 @@ MOD17_021DCB48: ; 0x021DCB48 add r7, r3, #0 tst r0, r1 bne _021DCB64 - bl ErrorHandling + bl GF_AssertFail _021DCB64: mov r0, #0 str r0, [sp] @@ -11653,7 +11653,7 @@ MOD17_021DCB80: ; 0x021DCB80 add r7, r3, #0 tst r0, r1 bne _021DCB9C - bl ErrorHandling + bl GF_AssertFail _021DCB9C: mov r0, #0 str r0, [sp] @@ -11789,9 +11789,9 @@ MOD17_021DCC68: ; 0x021DCC68 mov r0, #0xe mov r1, #1 add r4, r2, #0 - bl FUN_02018FF4 + bl AllocWindows str r0, [r5] - bl FUN_0201901C + bl InitWindow lsl r0, r6, #0x18 lsr r0, r0, #0x18 str r0, [sp] @@ -11817,7 +11817,7 @@ MOD17_021DCC68: ; 0x021DCC68 bl FUN_02019064 ldr r0, [r5] mov r1, #0xf - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, [sp, #0x34] cmp r0, #0 beq _021DCCCC @@ -11860,7 +11860,7 @@ MOD17_021DCCEC: ; 0x021DCCEC add r5, r0, #0 add r6, r2, #0 add r7, r3, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, [sp, #0x28] add r1, r4, #0 str r0, [sp] @@ -11896,7 +11896,7 @@ MOD17_021DCD34: ; 0x021DCD34 add r5, r0, #0 add r6, r2, #0 add r7, r3, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, [sp, #0x28] add r1, r4, #0 str r0, [sp] @@ -11936,7 +11936,7 @@ MOD17_021DCD80: ; 0x021DCD80 bl NewMsgDataFromNarc add r5, r0, #0 bne _021DCD98 - bl ErrorHandling + bl GF_AssertFail _021DCD98: add r0, r5, #0 add r1, r4, #0 @@ -11978,7 +11978,7 @@ MOD17_021DCDD4: ; 0x021DCDD4 str r3, [sp, #0x10] cmp r0, #0 beq _021DCDEC - bl ErrorHandling + bl GF_AssertFail _021DCDEC: mov r0, #0 add r1, r5, #0 @@ -11987,7 +11987,7 @@ _021DCDEC: bl NewMsgDataFromNarc add r5, r0, #0 bne _021DCE00 - bl ErrorHandling + bl GF_AssertFail _021DCE00: ldr r1, [sp, #0x10] add r0, r5, #0 @@ -12396,7 +12396,7 @@ _021DD0D0: bl MOD17_021DCC68 ldr r0, [r7, #0x18] mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer mov r0, #0 str r0, [sp] mov r3, #4 @@ -12522,7 +12522,7 @@ _021DD21A: str r0, [sp, #4] cmp r0, #0xa ble _021DD22C - bl ErrorHandling + bl GF_AssertFail _021DD22C: ldr r0, [r5, #0x10] ldr r1, [sp, #4] @@ -13716,7 +13716,7 @@ _021DDAC6: mov r0, #0x19 add r1, r5, #1 mov r2, #0 - bl UncompressFromNarc + bl GfGfxLoader_LoadFromNarc add r7, r0, #0 ldr r0, [r4, #0x10] add r1, r7, #0 @@ -13727,7 +13727,7 @@ _021DDAC6: add r1, r1, r5 add r0, r7, #0 add r1, r1, #4 - bl FUN_020B0088 + bl NNS_G2dGetUnpackedCharacterData ldr r0, [sp, #4] ldr r1, [r0] ldr r0, [r4] @@ -13749,7 +13749,7 @@ _021DDB1E: ldr r3, [sp, #0xc] mov r0, #0x19 add r2, r1, #0 - bl UncompressFromNarc + bl GfGfxLoader_LoadFromNarc add r5, r0, #0 ldr r0, [r4, #0x14] add r1, r5, #0 @@ -13758,7 +13758,7 @@ _021DDB1E: ldr r1, [r4, #8] add r0, r5, #0 add r1, r1, #4 - bl FUN_020B0138 + bl NNS_G2dGetUnpackedPaletteData ldr r0, [sp, #4] ldr r1, [r0] ldr r0, [r4, #8] @@ -13875,7 +13875,7 @@ MOD17_021DDC30: ; 0x021DDC30 bl OverlayManager_GetData add r5, r0, #0 bl FUN_020222AC - bl FUN_020B02C8 + bl NNS_G2dSetupSoftwareSpriteCamera ldr r0, [r5, #0x10] bl MOD17_021DD518 mov r0, #0 @@ -14023,7 +14023,7 @@ MOD17_021DDD54: ; 0x021DDD54 mov r1, #0x7e mov r2, #0 mov r3, #0x60 - bl FUN_02006930 + bl GfGfxLoader_GXLoadPal mov r0, #0 str r0, [sp] str r0, [sp, #4] @@ -14034,7 +14034,7 @@ MOD17_021DDD54: ; 0x021DDD54 mov r0, #0x19 mov r1, #0x7d mov r3, #1 - bl FUN_0200687C + bl GfGfxLoader_LoadCharData ldr r0, [r5, #0xc] cmp r0, #0 bne _021DDD92 @@ -14050,7 +14050,7 @@ _021DDD96: mov r0, #0x19 mov r2, #0 add r3, sp, #0x10 - bl FUN_02006BDC + bl GfGfxLoader_GetScrnData ldr r2, [sp, #0x10] mov r3, #0 str r3, [sp] @@ -14106,7 +14106,7 @@ MOD17_021DDDFC: ; 0x021DDDFC add r1, r0, #0 mov r2, #4 mov r3, #0 - bl FUN_02006930 + bl GfGfxLoader_GXLoadPal mov r0, #0 str r0, [sp] str r0, [sp, #4] @@ -14118,7 +14118,7 @@ MOD17_021DDDFC: ; 0x021DDDFC mov r0, #0xc mov r1, #0xb mov r3, #4 - bl FUN_020068C8 + bl GfGfxLoader_LoadScrnData mov r0, #0 str r0, [sp] str r0, [sp, #4] @@ -14130,7 +14130,7 @@ MOD17_021DDDFC: ; 0x021DDDFC mov r0, #0xc mov r1, #0xa mov r3, #4 - bl FUN_0200687C + bl GfGfxLoader_LoadCharData add sp, #0x10 pop {r4, pc} .align 2, 0 @@ -14242,7 +14242,7 @@ MOD17_021DDF1C: ; 0x021DDF1C add r4, r0, #0 mov r0, #0xe mov r1, #1 - bl FUN_02018FF4 + bl AllocWindows mov r1, #0x19 lsl r1, r1, #4 str r0, [r4, r1] @@ -14313,7 +14313,7 @@ MOD17_021DDFAC: ; 0x021DDFAC lsl r0, r0, #4 ldr r0, [r4, r0] mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, [r4, #0xc] cmp r0, #0 bne _021DDFCA @@ -14344,7 +14344,7 @@ MOD17_021DDFDC: ; 0x021DDFDC str r0, [sp, #0x10] cmp r0, #0 bne _021DDFF8 - bl ErrorHandling + bl GF_AssertFail _021DDFF8: mov r0, #0xd bl ScrStrBufs_new @@ -14522,7 +14522,7 @@ MOD17_021DE0F4: ; 0x021DE0F4 str r0, [sp, #0x10] cmp r0, #0 bne _021DE1A0 - bl ErrorHandling + bl GF_AssertFail _021DE1A0: ldr r0, [sp, #0x10] mov r1, #0x2b diff --git a/arm9/modules/18/asm/module_18.s b/arm9/modules/18/asm/module_18.s index d0f6db33..9b2fdf67 100644 --- a/arm9/modules/18/asm/module_18.s +++ b/arm9/modules/18/asm/module_18.s @@ -1788,7 +1788,7 @@ MOD18_0223A3D4: ; 0x0223A3D4 mov r0, #0x34 mov r1, #1 add r3, r2, #0 - bl FUN_02006930 + bl GfGfxLoader_GXLoadPal mov r1, #0 str r1, [sp] str r1, [sp, #4] @@ -1798,7 +1798,7 @@ MOD18_0223A3D4: ; 0x0223A3D4 mov r0, #0x34 add r2, r4, #0 add r3, r1, #0 - bl FUN_0200687C + bl GfGfxLoader_LoadCharData mov r3, #0 str r3, [sp] str r3, [sp, #4] @@ -1809,7 +1809,7 @@ MOD18_0223A3D4: ; 0x0223A3D4 mov r0, #0x34 mov r1, #2 add r2, r4, #0 - bl FUN_020068C8 + bl GfGfxLoader_LoadScrnData mov r3, #0x80 str r3, [sp] mov r0, #0x1d @@ -1818,7 +1818,7 @@ MOD18_0223A3D4: ; 0x0223A3D4 mov r1, #0x34 mov r2, #0 add r3, #0xc0 - bl FUN_02006930 + bl GfGfxLoader_GXLoadPal add r0, r4, #0 add r1, r6, #0 add r2, r5, #0 @@ -1861,7 +1861,7 @@ MOD18_0223A4D8: ; 0x0223A4D8 mov r1, #9 ldr r2, [r2, #4] mov r3, #2 - bl FUN_0200687C + bl GfGfxLoader_LoadCharData ldr r0, _0223A55C ; =0x02251380 ldr r0, [r0] ldr r0, [r0, #4] @@ -2500,7 +2500,7 @@ _0223AA5C: mov r1, #0x34 mov r2, #0 add r3, #0xc0 - bl FUN_02006930 + bl GfGfxLoader_GXLoadPal mov r0, #2 str r0, [sp] mov r0, #4 @@ -2808,7 +2808,7 @@ _0223AD00: add r5, #0xc cmp r1, #8 blt _0223ACB6 - bl ErrorHandling + bl GF_AssertFail mov r0, #0 pop {r3, r4, r5, r6, r7, pc} .align 2, 0 @@ -3116,7 +3116,7 @@ _0223AF18: cmp r4, #0x55 blo _0223AF04 _0223AF20: - bl ErrorHandling + bl GF_AssertFail mov r0, #0 pop {r4, r5, r6, pc} .align 2, 0 @@ -3495,7 +3495,7 @@ _0223B1FC: mov r0, #0x37 mov r2, #0 lsl r3, r3, #5 - bl FUN_02006930 + bl GfGfxLoader_GXLoadPal b _0223B248 _0223B218: ldr r5, [sp, #0x18] @@ -3505,7 +3505,7 @@ _0223B218: mov r0, #0x37 add r2, r5, r4 mov r3, #0x1d - bl FUN_02006C08 + bl GfGfxLoader_GetPlttData ldr r1, [sp, #0x18] add r1, r1, r4 str r0, [r1, #0x18] @@ -3533,7 +3533,7 @@ _0223B248: ldrh r1, [r1, #0x10] mov r0, #0x37 mov r3, #1 - bl FUN_0200687C + bl GfGfxLoader_LoadCharData str r0, [sp, #0x20] ldr r0, [sp, #0x30] str r0, [sp, #0x24] @@ -5780,7 +5780,7 @@ MOD18_0223C37C: ; 0x0223C37C ldr r1, [r0] ldr r0, _0223C56C ; =0x000009EB strb r2, [r1, r0] - bl FUN_020B0FC0 + bl NNS_G2dInitOamManagerModule mov r0, #0 str r0, [sp] mov r1, #0x7c @@ -6327,7 +6327,7 @@ MOD18_0223C7D4: ; 0x0223C7D4 ldr r0, [r1, r0] cmp r0, #0 beq _0223C7E6 - bl ErrorHandling + bl GF_AssertFail _0223C7E6: ldr r0, _0223C834 ; =0x02251380 ldr r1, [r0] @@ -6335,7 +6335,7 @@ _0223C7E6: ldr r0, [r1, r0] cmp r0, #0 beq _0223C7F6 - bl ErrorHandling + bl GF_AssertFail _0223C7F6: mov r1, #0x5e mov r0, #0xb @@ -7102,7 +7102,7 @@ MOD18_0223CD74: ; 0x0223CD74 add r4, r0, #0 cmp r4, #0x64 blt _0223CD9E - bl ErrorHandling + bl GF_AssertFail _0223CD9E: mov r5, #0x63 cmp r4, #0x63 @@ -7552,7 +7552,7 @@ _0223D106: mvn r0, r0 cmp r1, r0 bne _0223D112 - bl ErrorHandling + bl GF_AssertFail _0223D112: cmp r4, #0x63 bge _0223D132 @@ -7602,7 +7602,7 @@ MOD18_0223D14C: ; 0x0223D14C bl MOD18_0223CE14 add r5, r0, #0 bne _0223D178 - bl ErrorHandling + bl GF_AssertFail _0223D178: add r0, r4, #0 add r1, r5, #0 @@ -7830,7 +7830,7 @@ MOD18_0223D30C: ; 0x0223D30C ldr r0, [r1, r0] cmp r0, #0 beq _0223D31E - bl ErrorHandling + bl GF_AssertFail _0223D31E: ldr r0, _0223D364 ; =0x02251384 ldr r1, [r0] @@ -7839,7 +7839,7 @@ _0223D31E: ldr r0, [r1, r0] cmp r0, #0 beq _0223D330 - bl ErrorHandling + bl GF_AssertFail _0223D330: mov r0, #0xb mov r1, #4 @@ -8073,7 +8073,7 @@ MOD18_0223D414: ; 0x0223D414 mov r1, #0x34 mov r2, #0 add r3, #0xc0 - bl FUN_02006930 + bl GfGfxLoader_GXLoadPal mov r0, #2 str r0, [sp] mov r0, #4 @@ -10255,7 +10255,7 @@ _0223E5DE: add r2, #8 cmp r6, #0x14 blt _0223E5BC - bl ErrorHandling + bl GF_AssertFail _0223E5EA: pop {r3, r4, r5, r6, r7, pc} .align 2, 0 @@ -10464,7 +10464,7 @@ _0223E746: ldr r0, [r1, r0] cmp r0, #0x64 ble _0223E764 - bl ErrorHandling + bl GF_AssertFail _0223E764: mov r0, #0 pop {r3, r4, r5, pc} @@ -12184,7 +12184,7 @@ MOD18_0223F428: ; 0x0223F428 bne _0223F49E cmp r4, #0x60 beq _0223F456 - bl ErrorHandling + bl GF_AssertFail _0223F456: mov r0, #0 add r4, r0, #0 @@ -12402,7 +12402,7 @@ MOD18_0223F5CC: ; 0x0223F5CC lsr r0, r0, #0x1c cmp r0, #8 blo _0223F5DE - bl ErrorHandling + bl GF_AssertFail _0223F5DE: ldrb r3, [r4, #7] lsl r0, r3, #0x19 @@ -12543,7 +12543,7 @@ _0223F714: add r1, r1, #6 cmp r3, #0xc0 blt _0223F706 - bl ErrorHandling + bl GF_AssertFail mov r0, #0 pop {r3, pc} .align 2, 0 @@ -14057,7 +14057,7 @@ MOD18_02240210: ; 0x02240210 ldr r0, [r1, r0] cmp r0, #0 beq _0224023E - bl ErrorHandling + bl GF_AssertFail _0224023E: ldr r0, _02240268 ; =0x022513A0 mov r2, #0x64 @@ -14679,7 +14679,7 @@ _022406A4: mov r0, #0x32 mov r1, #9 mov r3, #2 - bl FUN_0200687C + bl GfGfxLoader_LoadCharData ldr r0, [r4] add sp, #0x1c add r0, r0, #1 @@ -14694,7 +14694,7 @@ _022406D8: mov r0, #0x32 mov r1, #0xa add r3, r2, #0 - bl FUN_02006930 + bl GfGfxLoader_GXLoadPal ldr r0, [r4] add sp, #0x1c add r0, r0, #1 @@ -14725,7 +14725,7 @@ _022406F6: mov r0, #0x32 mov r1, #8 mov r3, #2 - bl FUN_020068C8 + bl GfGfxLoader_LoadScrnData b _02240774 _0224072E: ldr r1, _0224088C ; =0x022500A8 @@ -14760,7 +14760,7 @@ _0224072E: ldr r2, [r4, #0x10] mov r0, #0x32 mov r3, #2 - bl FUN_020068C8 + bl GfGfxLoader_LoadScrnData _02240774: mov r0, #0 mov r1, #3 @@ -17178,7 +17178,7 @@ _02241A30: lsl r2, r2, #0xa asr r0, r0, #4 lsl r6, r0, #1 - ldr r0, _02241AAC ; =UNK_020FFA38 + ldr r0, _02241AAC ; =FX_SinCosTable_ lsl r1, r6, #1 ldrsh r0, [r0, r1] mov r3, #0 @@ -17194,7 +17194,7 @@ _02241A30: orr r4, r0 add r0, r6, #1 lsl r1, r0, #1 - ldr r0, _02241AAC ; =UNK_020FFA38 + ldr r0, _02241AAC ; =FX_SinCosTable_ mov r2, #0xa ldrsh r0, [r0, r1] lsl r2, r2, #0xa @@ -17233,7 +17233,7 @@ _02241AA8: add sp, #0x10 pop {r3, r4, r5, r6, r7, pc} .align 2, 0 -_02241AAC: .word UNK_020FFA38 +_02241AAC: .word FX_SinCosTable_ _02241AB0: .word MOD18_022513A0 thumb_func_end MOD18_02241A04 @@ -17478,7 +17478,7 @@ _02241C70: ldr r2, [sp] asr r0, r0, #4 lsl r1, r0, #2 - ldr r0, _02241D34 ; =UNK_020FFA38 + ldr r0, _02241D34 ; =FX_SinCosTable_ asr r3, r2, #0x1f ldrsh r0, [r0, r1] asr r1, r0, #0x1f @@ -17504,7 +17504,7 @@ _02241C70: lsl r0, r0, #1 add r0, r0, #1 lsl r1, r0, #1 - ldr r0, _02241D34 ; =UNK_020FFA38 + ldr r0, _02241D34 ; =FX_SinCosTable_ ldrsh r0, [r0, r1] asr r1, r0, #0x1f bl _ll_mul @@ -17561,7 +17561,7 @@ _02241D24: .word MOD18_02241AB4 _02241D28: .word MOD18_022513A0 _02241D2C: .word 0x00000B3B _02241D30: .word 0x00000000 -_02241D34: .word UNK_020FFA38 +_02241D34: .word FX_SinCosTable_ thumb_func_end MOD18_02241AD0 thumb_func_start MOD18_02241D38 @@ -18343,7 +18343,7 @@ MOD18_02242320: ; 0x02242320 ldrh r0, [r2, r1] asr r0, r0, #4 lsl r1, r0, #2 - ldr r0, _022423AC ; =UNK_020FFA38 + ldr r0, _022423AC ; =FX_SinCosTable_ ldrsh r1, [r0, r1] mov r0, #1 lsl r0, r0, #0xc @@ -18373,7 +18373,7 @@ _022423A4: pop {r4, r5, pc} .align 2, 0 _022423A8: .word MOD18_022513A0 -_022423AC: .word UNK_020FFA38 +_022423AC: .word FX_SinCosTable_ thumb_func_end MOD18_02242320 thumb_func_start MOD18_022423B0 @@ -18529,7 +18529,7 @@ _022424D4: ldrh r0, [r4, #0x1c] asr r0, r0, #4 lsl r1, r0, #2 - ldr r0, _02242594 ; =UNK_020FFA38 + ldr r0, _02242594 ; =FX_SinCosTable_ ldrsh r1, [r0, r1] ldr r0, [r5, #0x48] sub r0, r0, r1 @@ -18538,7 +18538,7 @@ _022424D4: ldr r0, [r5, #0x44] asr r1, r1, #4 lsl r2, r1, #2 - ldr r1, _02242594 ; =UNK_020FFA38 + ldr r1, _02242594 ; =FX_SinCosTable_ add r2, r1, r2 mov r1, #2 ldrsh r1, [r2, r1] @@ -18616,7 +18616,7 @@ _02242584: .word 0x00000000 _02242588: .word MOD18_022500C0 _0224258C: .word 0x00000626 _02242590: .word MOD18_022513A0 -_02242594: .word UNK_020FFA38 +_02242594: .word FX_SinCosTable_ _02242598: .word 0x0000FFFF thumb_func_end MOD18_022423B0 @@ -21387,7 +21387,7 @@ _02243B16: str r0, [sp, #0x24] add r0, sp, #0x1c add r1, sp, #0x18 - bl FUN_020BB408 + bl NNS_G3dWorldPosToScrPos ldr r0, [sp, #0x18] lsl r0, r0, #0xc str r0, [sp, #0x1c] @@ -22033,18 +22033,18 @@ MOD18_02244028: ; 0x02244028 ldr r1, [sp, #0x30] strb r1, [r0, #0x1e] ldr r0, [sp, #8] - bl FUN_02013690 + bl ListMenuCursorNew ldr r1, [sp, #0xc] str r0, [r1, #0x10] ldr r1, _022440C0 ; =0x0008090F - bl FUN_020136E0 + bl ListMenuCursorSetColor ldr r1, [sp, #8] ldr r0, [sp, #0xc] strb r1, [r0, #0x1d] ldr r1, [sp, #0xc] ldrh r0, [r5, #0x10] ldrb r1, [r1, #0x1d] - bl ListMenu_ctor + bl ListMenuItems_ctor add r7, r0, #0 ldrh r0, [r5, #0x10] mov r6, #0 @@ -22055,7 +22055,7 @@ _02244084: ldr r1, [r5] add r0, r7, #0 add r1, r1, r4 - bl ListMenu_CopyItem + bl ListMenuItems_CopyItem ldrh r0, [r5, #0x10] add r6, r6, #1 add r4, #8 @@ -22075,7 +22075,7 @@ _0224409E: ldr r2, [sp, #4] ldr r3, [sp, #8] add r0, r5, #0 - bl FUN_020010A8 + bl ListMenuInit ldr r1, [sp, #0xc] str r0, [r1, #0xc] add r0, r1, #0 @@ -22099,7 +22099,7 @@ MOD18_022440C4: ; 0x022440C4 lsr r6, r0, #0x10 ldr r0, [r4, #0xc] mov r1, #3 - bl FUN_02001470 + bl ListMenuGetTemplateField lsl r0, r0, #0x10 lsr r1, r0, #0x10 ldrh r0, [r4, #0x18] @@ -22118,29 +22118,29 @@ _022440F0: bhi _0224413A ldr r0, [r4, #0xc] mov r1, #7 - bl FUN_02001470 + bl ListMenuGetTemplateField str r0, [sp] ldr r0, [r4, #0xc] mov r1, #9 - bl FUN_02001470 + bl ListMenuGetTemplateField lsl r0, r0, #0x18 lsr r7, r0, #0x18 ldr r0, [r4, #0xc] mov r1, #8 - bl FUN_02001470 + bl ListMenuGetTemplateField str r0, [sp, #4] sub r0, r6, r5 add r5, r7, #0 mul r5, r0 ldr r0, [r4, #0xc] mov r1, #0x12 - bl FUN_02001470 + bl ListMenuGetTemplateField ldr r3, [sp, #4] add r1, r0, #0 ldr r0, [r4, #0x10] ldr r2, [sp] add r3, r5, r3 - bl FUN_020136F8 + bl ListMenuUpdateCursorObj _0224413A: add sp, #8 pop {r3, r4, r5, r6, r7, pc} @@ -22159,13 +22159,13 @@ MOD18_02244140: ; 0x02244140 beq _0224418A ldr r0, [sp, #4] mov r1, #2 - bl FUN_02001470 + bl ListMenuGetTemplateField add r7, r0, #0 add r1, sp, #0xc ldr r0, [sp, #4] add r1, #2 add r2, sp, #0xc - bl FUN_02001448 + bl ListMenuGetScrollAndRow ldrb r0, [r5, #0x1c] cmp r0, #0 bne _0224416E @@ -22216,7 +22216,7 @@ _022441BA: blx r3 ldrb r1, [r5, #0x1d] add r0, r7, #0 - bl ListMenu_ctor + bl ListMenuItems_ctor mov r4, #0 add r6, r4, #0 str r0, [sp] @@ -22234,7 +22234,7 @@ _022441DE: lsl r1, r4, #3 ldr r0, [sp] add r1, r2, r1 - bl ListMenu_CopyItem + bl ListMenuItems_CopyItem _022441EA: add r0, sp, #0xc ldrh r1, [r0, #2] @@ -22250,7 +22250,7 @@ _022441EA: add r1, r2, r1 lsl r1, r1, #3 add r1, r3, r1 - bl ListMenu_CopyItem + bl ListMenuItems_CopyItem _0224420A: add r6, r6, #1 cmp r6, r7 @@ -22312,11 +22312,11 @@ _02244268: ldr r1, [sp] str r0, [r5, #8] ldr r0, [sp, #4] - bl FUN_02001658 + bl ListMenuGetItemStr mov r0, #0 strb r0, [r5, #0x1c] ldr r0, [sp, #4] - bl FUN_02001328 + bl RedrawListMenu mov r0, #0 add sp, #0x10 mvn r0, r0 @@ -22355,13 +22355,13 @@ _022442B2: pop {r3, r4, r5, r6, r7, pc} _022442CA: ldr r0, [sp, #4] - bl FUN_02001204 + bl ListMenu_ProcessInput add r4, r0, #0 add r1, r5, #0 ldr r0, [sp, #4] add r1, #0x20 ldrh r6, [r5, #0x20] - bl FUN_0200143C + bl ListMenuGetCurrentItemArrayId ldrh r0, [r5, #0x20] cmp r6, r0 beq _022442EA @@ -22397,12 +22397,12 @@ MOD18_02244318: ; 0x02244318 push {r4, lr} add r4, r0, #0 ldr r0, [r4, #0xc] - bl FUN_02001300 + bl DestroyListMenu ldr r0, [r4] cmp r0, #0 beq _02244334 ldr r0, [r4, #0x10] - bl FUN_020136C0 + bl DestroyListMenuCursorObj ldr r0, [r4, #8] bl FreeToHeap _02244334: @@ -23148,7 +23148,7 @@ MOD18_0224486C: ; 0x0224486C mov r0, #0x1c add r3, r1, #0 str r2, [sp, #4] - bl FUN_02006930 + bl GfGfxLoader_GXLoadPal mov r1, #0 mov r0, #5 str r1, [sp] @@ -23160,7 +23160,7 @@ MOD18_0224486C: ; 0x0224486C mov r1, #1 add r2, r5, #0 str r3, [sp, #0xc] - bl FUN_0200687C + bl GfGfxLoader_LoadCharData mov r1, #0 mov r0, #6 str r1, [sp] @@ -23172,7 +23172,7 @@ MOD18_0224486C: ; 0x0224486C mov r1, #2 add r2, r5, #0 str r3, [sp, #0xc] - bl FUN_020068C8 + bl GfGfxLoader_LoadScrnData mov r0, #4 mov r1, #0 bl FUN_02054590 @@ -23187,7 +23187,7 @@ MOD18_0224486C: ; 0x0224486C bl FUN_020545B8 add r0, r4, #0 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer mov r3, #0x80 str r3, [sp] mov r2, #4 @@ -23195,7 +23195,7 @@ MOD18_0224486C: ; 0x0224486C mov r1, #0x34 add r3, #0xc0 str r2, [sp, #4] - bl FUN_02006930 + bl GfGfxLoader_GXLoadPal mov r0, #1 bl FUN_0200E394 add sp, #0x64 @@ -23388,7 +23388,7 @@ _02244AF8: ldr r0, [sp, #0xc] mov r2, #2 add r3, r1, #0 - bl FUN_0201A8C8 + bl ScrollWindow ldr r0, [sp, #0xc] bl CopyWindowToVram ldr r0, [r5] @@ -23521,7 +23521,7 @@ _02244BEC: _02244BFA: cmp r4, #2 blt _02244C02 - bl ErrorHandling + bl GF_AssertFail _02244C02: cmp r4, #0 bne _02244C14 @@ -23720,7 +23720,7 @@ MOD18_02244D40: ; 0x02244D40 add r5, r0, #0 cmp r4, #8 blt _02244D4E - bl ErrorHandling + bl GF_AssertFail _02244D4E: mov r0, #0xc add r5, #0x18 @@ -23978,7 +23978,7 @@ _02244EE0: bl FUN_0202595C cmp r0, #0x94 beq _02244EEC - bl ErrorHandling + bl GF_AssertFail _02244EEC: ldr r0, _02245000 ; =0x022513EC ldr r2, _02245004 ; =0x000013E8 @@ -24736,7 +24736,7 @@ MOD18_022454BC: ; 0x022454BC bl FUN_02031190 cmp r0, #0 beq _022454D4 - bl ErrorHandling + bl GF_AssertFail pop {r3, r4, r5, pc} _022454D4: ldrb r0, [r4, #1] @@ -25463,7 +25463,7 @@ MOD18_02245A50: ; 0x02245A50 ldr r0, [r0] cmp r0, #2 beq _02245A9A - bl ErrorHandling + bl GF_AssertFail _02245A9A: mov r0, #2 str r0, [r4, #0x14] @@ -25548,21 +25548,21 @@ MOD18_02245B1C: ; 0x02245B1C add r5, r0, #0 ldr r1, [sp, #0x30] mov r0, #2 - bl ListMenu_ctor + bl ListMenuItems_ctor add r4, r0, #0 add r1, r5, #0 mov r2, #0x26 mov r3, #0 - bl ListMenu_ItemFromMsgData + bl ListMenuItems_AppendFromMsgData add r0, r4, #0 add r1, r5, #0 mov r2, #0x27 mov r3, #1 - bl ListMenu_ItemFromMsgData + bl ListMenuItems_AppendFromMsgData ldr r0, [sp, #0x30] mov r1, #1 str r4, [sp, #0x10] - bl FUN_02018FF4 + bl AllocWindows add r1, r0, #0 str r1, [sp, #0x14] mov r0, #0 @@ -26171,7 +26171,7 @@ _02246020: ldrb r5, [r6] cmp r5, #0x11 blt _02246034 - bl ErrorHandling + bl GF_AssertFail _02246034: ldr r0, _022460EC ; =0x022513EC mov r2, #0x96 @@ -26973,7 +26973,7 @@ _02246668: mov r1, #0x34 mov r2, #0 add r3, #0xc0 - bl FUN_02006930 + bl GfGfxLoader_GXLoadPal mov r0, #2 str r0, [sp] mov r0, #4 @@ -29117,7 +29117,7 @@ _02247774: cmp r4, #0 bne _022477A6 _022477A2: - bl ErrorHandling + bl GF_AssertFail _022477A6: add r0, r7, #0 bl FUN_02059BF4 @@ -29532,7 +29532,7 @@ MOD18_02247AA8: ; 0x02247AA8 add r5, r0, #0 mov r0, #4 add r1, r0, #0 - bl ListMenu_ctor + bl ListMenuItems_ctor str r0, [r5, #0x1c] mov r3, #1 str r3, [sp] @@ -29569,7 +29569,7 @@ _02247AFA: ldr r2, [r4] ldr r3, [r4, #4] add r1, r7, #0 - bl ListMenu_ItemFromMsgData + bl ListMenuItems_AppendFromMsgData add r6, r6, #1 add r4, #8 cmp r6, #4 @@ -29593,7 +29593,7 @@ _02247AFA: strh r1, [r5, #0x3a] add r0, sp, #0x14 add r2, r1, #0 - bl FUN_020010A8 + bl ListMenuInit str r0, [r5, #0x20] add r5, #0xc add r0, r5, #0 @@ -29658,7 +29658,7 @@ MOD18_02247BB8: ; 0x02247BB8 add r5, r0, #0 mov r0, #4 add r1, r0, #0 - bl ListMenu_ctor + bl ListMenuItems_ctor str r0, [r5, #0x1c] mov r3, #1 str r3, [sp] @@ -29714,7 +29714,7 @@ _02247C2C: ldr r0, [r5, #0x1c] add r1, r6, #0 add r3, r2, #0 - bl ListMenu_ItemFromMsgData + bl ListMenuItems_AppendFromMsgData b _02247C40 _02247C3E: sub r4, r4, #1 @@ -29745,7 +29745,7 @@ _02247C40: strh r1, [r5, #0x3a] add r2, r1, #0 mov r3, #4 - bl FUN_020010A8 + bl ListMenuInit str r0, [r5, #0x20] add r5, #0xc add r0, r5, #0 @@ -29766,7 +29766,7 @@ MOD18_02247C98: ; 0x02247C98 add r5, r1, #0 add r6, r0, #0 ldr r0, [r5, #0x20] - bl FUN_02001204 + bl ListMenu_ProcessInput add r4, r0, #0 add r0, r5, #0 bl MOD18_02248FEC @@ -29831,7 +29831,7 @@ MOD18_02247D1C: ; 0x02247D1C add r5, r0, #0 mov r0, #4 add r1, r0, #0 - bl ListMenu_ctor + bl ListMenuItems_ctor str r0, [r5, #0x1c] mov r3, #1 str r3, [sp] @@ -29871,7 +29871,7 @@ _02247D6C: lsl r2, r2, #2 add r2, r4, r2 add r3, r4, #0 - bl ListMenu_ItemFromMsgData + bl ListMenuItems_AppendFromMsgData add r4, r4, #1 cmp r4, #4 blt _02247D6C @@ -29898,7 +29898,7 @@ _02247D6C: strh r1, [r5, #0x3a] add r2, r1, #0 mov r3, #4 - bl FUN_020010A8 + bl ListMenuInit str r0, [r5, #0x20] add r5, #0xc add r0, r5, #0 @@ -29919,7 +29919,7 @@ MOD18_02247DD8: ; 0x02247DD8 add r5, r1, #0 add r6, r0, #0 ldr r0, [r5, #0x20] - bl FUN_02001204 + bl ListMenu_ProcessInput add r4, r0, #0 add r0, r5, #0 bl MOD18_02248FEC @@ -30102,7 +30102,7 @@ MOD18_02247F5C: ; 0x02247F5C add r5, r1, #0 add r6, r0, #0 ldr r0, [r5, #0x20] - bl FUN_02001204 + bl ListMenu_ProcessInput add r4, r0, #0 add r0, r5, #0 bl MOD18_02248FEC @@ -30159,7 +30159,7 @@ MOD18_02247FC0: ; 0x02247FC0 mov r1, #0 ldr r0, [r4, #0x20] add r2, r1, #0 - bl FUN_02001300 + bl DestroyListMenu add r0, r4, #0 add r0, #0xc bl FUN_02019570 @@ -30167,7 +30167,7 @@ MOD18_02247FC0: ; 0x02247FC0 add r0, #0xc bl FUN_02019178 ldr r0, [r4, #0x1c] - bl ListMenu_dtor + bl ListMenuItems_dtor mov r0, #0 str r0, [r4, #0x1c] _02247FF8: @@ -31135,7 +31135,7 @@ MOD18_02248784: ; 0x02248784 mov r1, #0 ldr r0, [r4, #0x1c] add r2, r1, #0 - bl FUN_02001300 + bl DestroyListMenu add r0, r4, #0 add r0, #8 bl FUN_02019570 @@ -31143,7 +31143,7 @@ MOD18_02248784: ; 0x02248784 add r0, #8 bl FUN_02019178 ldr r0, [r4, #0x18] - bl ListMenu_dtor + bl ListMenuItems_dtor mov r0, #0 str r0, [r4, #0x18] _022487BC: @@ -31202,7 +31202,7 @@ MOD18_02248820: ; 0x02248820 add r5, r0, #0 mov r0, #5 mov r1, #4 - bl ListMenu_ctor + bl ListMenuItems_ctor str r0, [r5, #0x18] mov r3, #1 add r1, r5, #0 @@ -31242,7 +31242,7 @@ _02248870: lsl r2, r2, #2 add r2, r4, r2 add r3, r4, #0 - bl ListMenu_ItemFromMsgData + bl ListMenuItems_AppendFromMsgData add r4, r4, #1 cmp r4, #4 blt _02248870 @@ -31250,7 +31250,7 @@ _02248870: add r1, r6, #0 mov r2, #0x30 mov r3, #0x33 - bl ListMenu_ItemFromMsgData + bl ListMenuItems_AppendFromMsgData add r0, r6, #0 bl DestroyMsgData ldr r4, _022488EC ; =0x02250528 @@ -31278,7 +31278,7 @@ _02248870: strh r1, [r5, #0x36] add r2, r1, #0 mov r3, #4 - bl FUN_020010A8 + bl ListMenuInit str r0, [r5, #0x1c] add r5, #8 add r0, r5, #0 @@ -31298,13 +31298,13 @@ MOD18_022488F0: ; 0x022488F0 add r5, r1, #0 add r7, r0, #0 ldr r0, [r5, #0x1c] - bl FUN_02001204 + bl ListMenu_ProcessInput add r4, r0, #0 add r1, r5, #0 ldr r0, [r5, #0x1c] add r1, #0x36 ldrh r6, [r5, #0x36] - bl FUN_0200143C + bl ListMenuGetCurrentItemArrayId ldrh r0, [r5, #0x36] cmp r6, r0 beq _02248916 @@ -31922,7 +31922,7 @@ MOD18_02248DF8: ; 0x02248DF8 add r6, r2, #0 cmp r0, #0 beq _02248E0C - bl ErrorHandling + bl GF_AssertFail pop {r4, r5, r6, pc} _02248E0C: mov r0, #0x21 @@ -32001,7 +32001,7 @@ MOD18_02248E84: ; 0x02248E84 beq _02248EAE cmp r5, #2 beq _02248EA4 - bl ErrorHandling + bl GF_AssertFail _02248EA4: ldr r0, _02248EB0 ; =0x022513F0 ldrb r1, [r4, #1] @@ -32029,13 +32029,13 @@ MOD18_02248EB4: ; 0x02248EB4 beq _02248EEA cmp r5, #2 beq _02248ED4 - bl ErrorHandling + bl GF_AssertFail _02248ED4: ldr r0, _02248EEC ; =0x022513F0 ldr r0, [r0, #4] cmp r0, #0 bne _02248EE0 - bl ErrorHandling + bl GF_AssertFail _02248EE0: ldr r0, _02248EEC ; =0x022513F0 ldrb r1, [r4, #1] @@ -32078,7 +32078,7 @@ MOD18_02248F00: ; 0x02248F00 ldr r0, [r0] cmp r0, #0 bne _02248F1E - bl ErrorHandling + bl GF_AssertFail _02248F1E: add r0, r4, #0 add r0, #0x34 @@ -32213,7 +32213,7 @@ MOD18_02248FEC: ; 0x02248FEC ldr r0, [r5, #0x20] add r1, #0x3a ldrh r4, [r5, #0x3a] - bl FUN_0200143C + bl ListMenuGetCurrentItemArrayId ldrh r0, [r5, #0x3a] cmp r4, r0 beq _02249008 @@ -32703,7 +32703,7 @@ MOD18_022493A4: ; 0x022493A4 ldrb r1, [r1, #5] cmp r1, r0 beq _022493B4 - bl ErrorHandling + bl GF_AssertFail _022493B4: ldr r0, _022493C4 ; =0x022513F8 ldr r1, [r0] @@ -32796,7 +32796,7 @@ MOD18_02249450: ; 0x02249450 add r4, r1, #0 cmp r5, #0xb blt _0224945E - bl ErrorHandling + bl GF_AssertFail _0224945E: cmp r5, #6 blt _02249464 @@ -32823,7 +32823,7 @@ MOD18_02249480: ; 0x02249480 add r4, r0, #0 cmp r4, #0x3c blt _0224948C - bl ErrorHandling + bl GF_AssertFail _0224948C: ldr r0, _0224949C ; =0x022513F8 add r1, r4, #0 @@ -32943,7 +32943,7 @@ MOD18_02249564: ; 0x02249564 bl MOD18_02249544 mov r0, #7 mov r1, #4 - bl ListMenu_ctor + bl ListMenuItems_ctor str r0, [r5, #0x40] mov r0, #1 str r0, [sp] @@ -32985,7 +32985,7 @@ _022495BA: ldr r0, [r5, #0x40] ldr r2, [r4, #4] add r1, r7, #0 - bl ListMenu_AddItem + bl ListMenuItems_AddItem add r0, r7, #0 bl String_dtor b _022495EE @@ -32994,7 +32994,7 @@ _022495E2: ldr r1, [sp, #0x14] ldr r2, [r4] ldr r3, [r4, #4] - bl ListMenu_ItemFromMsgData + bl ListMenuItems_AppendFromMsgData _022495EE: add r6, r6, #1 add r4, #8 @@ -33377,7 +33377,7 @@ _02249902: beq _02249916 mov r1, #0 add r2, r1, #0 - bl FUN_02001300 + bl DestroyListMenu mov r0, #0 str r0, [r4, #0x48] b _02249936 @@ -33413,7 +33413,7 @@ _02249936: add r0, #0x10 bl FUN_02019178 ldr r0, [r4, #0x40] - bl ListMenu_dtor + bl ListMenuItems_dtor add r0, r4, #0 bl MOD18_0224CBAC _02249968: @@ -33456,7 +33456,7 @@ _02249998: _022499A2: add r0, r6, #0 mov r1, #4 - bl ListMenu_ctor + bl ListMenuItems_ctor str r0, [r5, #0x44] lsl r0, r7, #0x18 lsr r0, r0, #0x18 @@ -33498,7 +33498,7 @@ _022499FA: ldr r1, [sp, #0x14] ldr r2, [r4] ldr r3, [r4, #4] - bl ListMenu_ItemFromMsgData + bl ListMenuItems_AppendFromMsgData add r7, r7, #1 add r4, #8 cmp r7, r6 @@ -33530,7 +33530,7 @@ _02249A0E: add r2, r1, #0 mov r3, #4 str r5, [sp, #0x3c] - bl FUN_020010A8 + bl ListMenuInit str r0, [r5, #0x50] add sp, #0x40 pop {r3, r4, r5, r6, r7, pc} @@ -33552,14 +33552,14 @@ MOD18_02249A64: ; 0x02249A64 beq _02249A8C mov r1, #0 add r2, r1, #0 - bl FUN_02001300 + bl DestroyListMenu add r1, r4, #0 add r1, #0x24 ldrb r1, [r1] ldr r0, [r4, #0x20] bl FUN_0201AC68 ldr r0, [r4, #0x44] - bl ListMenu_dtor + bl ListMenuItems_dtor mov r0, #0 str r0, [r4, #0x50] _02249A8C: @@ -33623,7 +33623,7 @@ MOD18_02249AF4: ; 0x02249AF4 push {r4, lr} add r4, r1, #0 mov r1, #0x13 - bl FUN_02001470 + bl ListMenuGetTemplateField mov r2, #0x81 add r1, r0, #0 lsl r2, r2, #2 @@ -33727,10 +33727,10 @@ MOD18_02249BA8: ; 0x02249BA8 bl MOD18_0223D678 ldr r1, _02249CB0 ; =0x0000023B mov r2, #0 - bl MOD18_0224DB80 + bl MOD18_LoadMsgBank add r0, r6, #1 mov r1, #4 - bl ListMenu_ctor + bl ListMenuItems_ctor str r0, [r5, #0x40] mov r2, #3 add r1, r5, #0 @@ -33767,7 +33767,7 @@ _02249C18: ldr r0, [r5, #0x40] ldr r1, [sp, #0x18] add r3, r4, #0 - bl ListMenu_ItemFromMsgData + bl ListMenuItems_AppendFromMsgData add r4, r4, #1 cmp r4, r6 blt _02249C18 @@ -33777,7 +33777,7 @@ _02249C30: ldr r0, [r5, #0x40] ldr r1, [sp, #0x18] sub r3, #0x24 - bl ListMenu_ItemFromMsgData + bl ListMenuItems_AppendFromMsgData ldr r3, _02249CBC ; =0x02250598 add r2, sp, #0x1c ldmia r3!, {r0, r1} @@ -33853,7 +33853,7 @@ MOD18_02249CC8: ; 0x02249CC8 ldr r0, [r0, #0xc] add r1, #2 add r2, sp, #0 - bl FUN_02001448 + bl ListMenuGetScrollAndRow add r2, sp, #0 ldrh r1, [r2] ldrh r2, [r2, #2] @@ -33862,7 +33862,7 @@ MOD18_02249CC8: ; 0x02249CC8 ldr r0, [r5, #0x4c] mov r1, #2 ldr r0, [r0, #0xc] - bl FUN_02001470 + bl ListMenuGetTemplateField add r1, sp, #0 add r2, r0, #0 ldrh r1, [r1, #2] @@ -33957,14 +33957,14 @@ MOD18_02249DB8: ; 0x02249DB8 push {r4, r5, r6, lr} add r5, r1, #0 ldr r0, [r5, #0x50] - bl FUN_02001204 + bl ListMenu_ProcessInput mov r1, #0x93 add r4, r0, #0 lsl r1, r1, #2 ldrh r6, [r5, r1] ldr r0, [r5, #0x50] add r1, r5, r1 - bl FUN_0200143C + bl ListMenuGetCurrentItemArrayId mov r0, #0x93 lsl r0, r0, #2 ldrh r0, [r5, r0] @@ -34060,7 +34060,7 @@ MOD18_02249E98: ; 0x02249E98 ldrb r1, [r1, #5] cmp r1, r0 beq _02249EA8 - bl ErrorHandling + bl GF_AssertFail _02249EA8: ldr r0, _02249EB8 ; =0x022513F8 ldr r1, [r0] @@ -34077,7 +34077,7 @@ MOD18_02249EBC: ; 0x02249EBC push {r4, lr} add r4, r1, #0 mov r1, #0x13 - bl FUN_02001470 + bl ListMenuGetTemplateField mov r2, #0x81 add r1, r0, #0 lsl r2, r2, #2 @@ -34194,10 +34194,10 @@ MOD18_02249F8C: ; 0x02249F8C bl MOD18_0223D678 ldr r1, _0224A0D4 ; =0x00000239 mov r2, #0 - bl MOD18_0224DB80 + bl MOD18_LoadMsgBank add r0, r6, #1 mov r1, #4 - bl ListMenu_ctor + bl ListMenuItems_ctor str r0, [r5, #0x40] mov r2, #3 add r1, r5, #0 @@ -34259,7 +34259,7 @@ _0224A002: ldr r0, [r5, #0x40] ldr r1, [r5, #0x68] add r2, r4, #0 - bl ListMenu_AddItem + bl ListMenuItems_AddItem add r4, r4, #1 cmp r4, r6 blt _0224A002 @@ -34269,7 +34269,7 @@ _0224A058: ldr r0, [r5, #0x40] ldr r1, [sp, #0x18] sub r3, #0x3e - bl ListMenu_ItemFromMsgData + bl ListMenuItems_AppendFromMsgData ldr r3, _0224A0E0 ; =0x02250598 add r2, sp, #0x20 ldmia r3!, {r0, r1} @@ -34343,7 +34343,7 @@ MOD18_0224A0EC: ; 0x0224A0EC ldr r0, [r0, #0xc] add r1, #2 add r2, sp, #0 - bl FUN_02001448 + bl ListMenuGetScrollAndRow add r2, sp, #0 ldrh r1, [r2] ldrh r2, [r2, #2] @@ -34352,7 +34352,7 @@ MOD18_0224A0EC: ; 0x0224A0EC ldr r0, [r5, #0x4c] mov r1, #2 ldr r0, [r0, #0xc] - bl FUN_02001470 + bl ListMenuGetTemplateField add r1, sp, #0 add r2, r0, #0 ldrh r1, [r1, #2] @@ -34434,14 +34434,14 @@ MOD18_0224A1C0: ; 0x0224A1C0 push {r4, r5, r6, lr} add r5, r1, #0 ldr r0, [r5, #0x50] - bl FUN_02001204 + bl ListMenu_ProcessInput mov r1, #0x93 add r4, r0, #0 lsl r1, r1, #2 ldrh r6, [r5, r1] ldr r0, [r5, #0x50] add r1, r5, r1 - bl FUN_0200143C + bl ListMenuGetCurrentItemArrayId mov r0, #0x93 lsl r0, r0, #2 ldrh r0, [r5, r0] @@ -34542,7 +34542,7 @@ MOD18_0224A2B4: ; 0x0224A2B4 push {r4, lr} add r4, r1, #0 mov r1, #0x13 - bl FUN_02001470 + bl ListMenuGetTemplateField mov r2, #0x81 add r1, r0, #0 lsl r2, r2, #2 @@ -34643,10 +34643,10 @@ MOD18_0224A360: ; 0x0224A360 bl MOD18_0223D678 ldr r1, _0224A464 ; =0x00000239 mov r2, #0 - bl MOD18_0224DB80 + bl MOD18_LoadMsgBank add r0, r6, #1 mov r1, #4 - bl ListMenu_ctor + bl ListMenuItems_ctor str r0, [r5, #0x40] mov r2, #3 add r1, r5, #0 @@ -34683,7 +34683,7 @@ _0224A3D0: ldr r0, [r5, #0x40] ldr r1, [sp, #0x18] add r3, r4, #0 - bl ListMenu_ItemFromMsgData + bl ListMenuItems_AppendFromMsgData add r4, r4, #1 cmp r4, r6 blt _0224A3D0 @@ -34693,7 +34693,7 @@ _0224A3E8: ldr r0, [r5, #0x40] ldr r1, [sp, #0x18] sub r3, #0x3e - bl ListMenu_ItemFromMsgData + bl ListMenuItems_AppendFromMsgData ldr r3, _0224A470 ; =0x02250598 add r2, sp, #0x1c ldmia r3!, {r0, r1} @@ -34767,7 +34767,7 @@ MOD18_0224A47C: ; 0x0224A47C ldr r0, [r0, #0xc] add r1, #2 add r2, sp, #0 - bl FUN_02001448 + bl ListMenuGetScrollAndRow add r2, sp, #0 ldrh r1, [r2] ldrh r2, [r2, #2] @@ -34776,7 +34776,7 @@ MOD18_0224A47C: ; 0x0224A47C ldr r0, [r5, #0x4c] mov r1, #2 ldr r0, [r0, #0xc] - bl FUN_02001470 + bl ListMenuGetTemplateField add r1, sp, #0 add r2, r0, #0 ldrh r1, [r1, #2] @@ -34858,14 +34858,14 @@ MOD18_0224A550: ; 0x0224A550 push {r4, r5, r6, lr} add r5, r1, #0 ldr r0, [r5, #0x50] - bl FUN_02001204 + bl ListMenu_ProcessInput mov r1, #0x93 add r4, r0, #0 lsl r1, r1, #2 ldrh r6, [r5, r1] ldr r0, [r5, #0x50] add r1, r5, r1 - bl FUN_0200143C + bl ListMenuGetCurrentItemArrayId mov r0, #0x93 lsl r0, r0, #2 ldrh r0, [r5, r0] @@ -35399,7 +35399,7 @@ MOD18_0224A9B4: ; 0x0224A9B4 push {r4, lr} add r4, r1, #0 mov r1, #0x13 - bl FUN_02001470 + bl ListMenuGetTemplateField mov r2, #0x81 add r1, r0, #0 lsl r2, r2, #2 @@ -35431,7 +35431,7 @@ MOD18_0224A9EC: ; 0x0224A9EC add r4, r1, #0 mov r1, #0x13 add r5, r0, #0 - bl FUN_02001470 + bl ListMenuGetTemplateField ldr r0, [r0, #0xc] bl ScriptEnvironment_GetSav2Ptr bl FUN_02026CC4 @@ -35443,14 +35443,14 @@ MOD18_0224A9EC: ; 0x0224A9EC mov r1, #1 mov r2, #0xf mov r3, #2 - bl FUN_020013E8 + bl ListMenuOverrideSetColors pop {r3, r4, r5, pc} _0224AA1A: mov r1, #2 add r0, r5, #0 mov r2, #0xf add r3, r1, #0 - bl FUN_020013E8 + bl ListMenuOverrideSetColors pop {r3, r4, r5, pc} thumb_func_end MOD18_0224A9EC @@ -35581,10 +35581,10 @@ MOD18_0224AB08: ; 0x0224AB08 bl MOD18_0223D678 ldr r1, _0224AC0C ; =0x00000237 mov r2, #0 - bl MOD18_0224DB80 + bl MOD18_LoadMsgBank add r0, r6, #1 mov r1, #4 - bl ListMenu_ctor + bl ListMenuItems_ctor str r0, [r5, #0x40] mov r2, #3 add r1, r5, #0 @@ -35621,7 +35621,7 @@ _0224AB78: ldr r0, [r5, #0x40] ldr r1, [sp, #0x18] add r3, r4, #0 - bl ListMenu_ItemFromMsgData + bl ListMenuItems_AppendFromMsgData add r4, r4, #1 cmp r4, r6 blt _0224AB78 @@ -35630,7 +35630,7 @@ _0224AB90: ldr r0, [r5, #0x40] ldr r1, [sp, #0x18] sub r3, r2, #2 - bl ListMenu_ItemFromMsgData + bl ListMenuItems_AppendFromMsgData ldr r3, _0224AC18 ; =0x02250598 add r2, sp, #0x1c ldmia r3!, {r0, r1} @@ -35706,7 +35706,7 @@ MOD18_0224AC24: ; 0x0224AC24 ldr r0, [r0, #0xc] add r1, #2 add r2, sp, #0 - bl FUN_02001448 + bl ListMenuGetScrollAndRow add r2, sp, #0 ldrh r1, [r2] ldrh r2, [r2, #2] @@ -35715,7 +35715,7 @@ MOD18_0224AC24: ; 0x0224AC24 ldr r0, [r5, #0x4c] mov r1, #2 ldr r0, [r0, #0xc] - bl FUN_02001470 + bl ListMenuGetTemplateField add r1, sp, #0 add r2, r0, #0 ldrh r1, [r1, #2] @@ -35800,14 +35800,14 @@ MOD18_0224AD04: ; 0x0224AD04 push {r4, r5, r6, lr} add r5, r1, #0 ldr r0, [r5, #0x50] - bl FUN_02001204 + bl ListMenu_ProcessInput mov r1, #0x93 add r4, r0, #0 lsl r1, r1, #2 ldrh r6, [r5, r1] ldr r0, [r5, #0x50] add r1, r5, r1 - bl FUN_0200143C + bl ListMenuGetCurrentItemArrayId mov r0, #0x93 lsl r0, r0, #2 ldrh r0, [r5, r0] @@ -36444,7 +36444,7 @@ MOD18_0224B204: ; 0x0224B204 push {r4, lr} add r4, r1, #0 mov r1, #0x13 - bl FUN_02001470 + bl ListMenuGetTemplateField mov r0, #1 mvn r0, r0 cmp r4, r0 @@ -36464,7 +36464,7 @@ MOD18_0224B228: ; 0x0224B228 push {r4, lr} add r4, r1, #0 mov r1, #0x13 - bl FUN_02001470 + bl ListMenuGetTemplateField mov r0, #1 mvn r0, r0 cmp r4, r0 @@ -36486,13 +36486,13 @@ MOD18_0224B250: ; 0x0224B250 push {r3, r4, r5, lr} add r4, r1, #0 ldr r0, [r4, #0x48] - bl FUN_02001204 + bl ListMenu_ProcessInput add r5, r0, #0 add r1, sp, #0 ldr r0, [r4, #0x48] add r1, #2 add r2, sp, #0 - bl FUN_02001448 + bl ListMenuGetScrollAndRow add r2, sp, #0 ldrh r1, [r2] ldrh r2, [r2, #2] @@ -36627,7 +36627,7 @@ _0224B374: bl MOD18_022498EC ldr r0, [sp, #0x18] mov r1, #4 - bl ListMenu_ctor + bl ListMenuItems_ctor str r0, [r5, #0x40] mov r2, #3 str r2, [sp] @@ -36675,13 +36675,13 @@ _0224B3D4: add r1, r7, #0 add r2, r6, #5 mvn r3, r3 - bl ListMenu_ItemFromMsgData + bl ListMenuItems_AppendFromMsgData b _0224B3F4 _0224B3EA: add r1, r7, #0 add r2, r6, r4 add r3, r4, #0 - bl ListMenu_ItemFromMsgData + bl ListMenuItems_AppendFromMsgData _0224B3F4: ldr r0, [sp, #0x18] add r4, r4, #1 @@ -36727,7 +36727,7 @@ _0224B42C: lsr r1, r1, #0x10 lsr r2, r2, #0x10 mov r3, #4 - bl FUN_020010A8 + bl ListMenuInit str r0, [r5, #0x48] add sp, #0x40 pop {r3, r4, r5, r6, r7, pc} @@ -36750,7 +36750,7 @@ MOD18_0224B464: ; 0x0224B464 bl MOD18_022498EC ldr r0, [sp, #0x1c] mov r1, #4 - bl ListMenu_ctor + bl ListMenuItems_ctor str r0, [r5, #0x40] mov r2, #3 add r1, r5, #0 @@ -36796,13 +36796,13 @@ _0224B4D0: add r1, r7, #0 add r2, r6, r4 mvn r3, r3 - bl ListMenu_ItemFromMsgData + bl ListMenuItems_AppendFromMsgData b _0224B4F0 _0224B4E6: add r1, r7, #0 add r2, r6, r4 add r3, r4, #0 - bl ListMenu_ItemFromMsgData + bl ListMenuItems_AppendFromMsgData _0224B4F0: ldr r0, [sp, #0x1c] add r4, r4, #1 @@ -36848,7 +36848,7 @@ _0224B528: lsr r1, r1, #0x10 lsr r2, r2, #0x10 mov r3, #4 - bl FUN_020010A8 + bl ListMenuInit str r0, [r5, #0x48] add sp, #0x40 pop {r3, r4, r5, r6, r7, pc} @@ -36862,13 +36862,13 @@ MOD18_0224B560: ; 0x0224B560 push {r3, r4, r5, lr} add r5, r1, #0 ldr r0, [r5, #0x48] - bl FUN_02001204 + bl ListMenu_ProcessInput add r4, r0, #0 add r1, sp, #0 ldr r0, [r5, #0x48] add r1, #2 add r2, sp, #0 - bl FUN_02001448 + bl ListMenuGetScrollAndRow add r2, sp, #0 ldrh r1, [r2] ldrh r2, [r2, #2] @@ -36964,7 +36964,7 @@ MOD18_0224B614: ; 0x0224B614 ldr r0, [r0, #0xc] add r1, #2 add r2, sp, #0 - bl FUN_02001448 + bl ListMenuGetScrollAndRow add r2, sp, #0 ldrh r1, [r2] ldrh r2, [r2, #2] @@ -36973,7 +36973,7 @@ MOD18_0224B614: ; 0x0224B614 ldr r0, [r5, #0x4c] mov r1, #2 ldr r0, [r0, #0xc] - bl FUN_02001470 + bl ListMenuGetTemplateField add r1, sp, #0 add r2, r0, #0 ldrh r1, [r1, #2] @@ -37057,7 +37057,7 @@ MOD18_0224B6E0: ; 0x0224B6E0 ldr r0, [r0, #0xc] add r1, #2 add r2, sp, #0 - bl FUN_02001448 + bl ListMenuGetScrollAndRow add r2, sp, #0 ldrh r1, [r2] ldrh r2, [r2, #2] @@ -37066,7 +37066,7 @@ MOD18_0224B6E0: ; 0x0224B6E0 ldr r0, [r5, #0x4c] mov r1, #2 ldr r0, [r0, #0xc] - bl FUN_02001470 + bl ListMenuGetTemplateField add r1, sp, #0 add r2, r0, #0 ldrh r1, [r1, #2] @@ -37823,7 +37823,7 @@ MOD18_0224BD54: ; 0x0224BD54 mov r1, #0x91 lsl r1, r1, #2 mov r2, #1 - bl MOD18_0224DB80 + bl MOD18_LoadMsgBank ldr r0, _0224BDE4 ; =0x00000246 mov r1, #0 strb r1, [r4, r0] @@ -38067,7 +38067,7 @@ MOD18_0224BF84: ; 0x0224BF84 ldr r0, [r5, #0x48] ldrh r4, [r5, r1] add r1, r5, r1 - bl FUN_0200143C + bl ListMenuGetCurrentItemArrayId ldr r0, _0224BFA4 ; =0x0000024A ldrh r0, [r5, r0] cmp r4, r0 @@ -38462,7 +38462,7 @@ _0224C288: bl MOD18_022498EC add r0, r4, #0 mov r1, #4 - bl ListMenu_ctor + bl ListMenuItems_ctor str r0, [r5, #0x40] mov r2, #3 add r1, r5, #0 @@ -38502,14 +38502,14 @@ _0224C288: ldr r0, [r5, #0x40] mov r2, #0xd mov r3, #0 - bl ListMenu_ItemFromMsgData + bl ListMenuItems_AppendFromMsgData bl MOD18_0223D658 bl MOD18_0224DBB4 add r1, r0, #0 ldr r0, [r5, #0x40] mov r2, #0xe mov r3, #1 - bl ListMenu_ItemFromMsgData + bl ListMenuItems_AppendFromMsgData bl MOD18_0223D658 bl MOD18_0224DBB4 mov r2, #0xf @@ -38517,7 +38517,7 @@ _0224C288: add r3, r2, #0 ldr r0, [r5, #0x40] sub r3, #0x11 - bl ListMenu_ItemFromMsgData + bl ListMenuItems_AppendFromMsgData b _0224C396 _0224C31E: cmp r0, #0 @@ -38532,14 +38532,14 @@ _0224C31E: ldr r0, [r5, #0x40] mov r2, #0x10 mov r3, #0 - bl ListMenu_ItemFromMsgData + bl ListMenuItems_AppendFromMsgData bl MOD18_0223D658 bl MOD18_0224DBB4 add r1, r0, #0 ldr r0, [r5, #0x40] mov r2, #0x11 mov r3, #1 - bl ListMenu_ItemFromMsgData + bl ListMenuItems_AppendFromMsgData bl MOD18_0223D658 bl MOD18_0224DBB4 mov r2, #0x12 @@ -38547,7 +38547,7 @@ _0224C31E: add r3, r2, #0 ldr r0, [r5, #0x40] sub r3, #0x14 - bl ListMenu_ItemFromMsgData + bl ListMenuItems_AppendFromMsgData b _0224C396 _0224C36C: bl MOD18_0223D658 @@ -38556,7 +38556,7 @@ _0224C36C: ldr r0, [r5, #0x40] mov r2, #0x1c mov r3, #0 - bl ListMenu_ItemFromMsgData + bl ListMenuItems_AppendFromMsgData bl MOD18_0223D658 bl MOD18_0224DBB4 mov r2, #0x16 @@ -38564,7 +38564,7 @@ _0224C36C: add r3, r2, #0 ldr r0, [r5, #0x40] sub r3, #0x18 - bl ListMenu_ItemFromMsgData + bl ListMenuItems_AppendFromMsgData _0224C396: bl MOD18_0224DAD8 add r1, sp, #0x14 @@ -38606,7 +38606,7 @@ _0224C396: lsr r1, r1, #0x10 lsr r2, r2, #0x10 mov r3, #4 - bl FUN_020010A8 + bl ListMenuInit str r0, [r5, #0x48] mov r0, #0x8b lsl r0, r0, #2 @@ -38632,17 +38632,17 @@ MOD18_0224C418: ; 0x0224C418 mov r1, #0x13 add r7, r0, #0 add r6, r2, #0 - bl FUN_02001470 + bl ListMenuGetTemplateField add r4, r0, #0 cmp r6, #0 beq _0224C434 add r0, r7, #0 - bl FUN_02001B80 + bl ListMenuCopyToVram _0224C434: add r0, r4, #0 add r0, #0x20 mov r1, #0xf - bl FUN_02019620 + bl FillWindowPixelBuffer bl MOD18_0223D658 bl MOD18_0224DBB4 ldr r1, _0224C504 ; =0x00000247 @@ -38746,7 +38746,7 @@ MOD18_0224C510: ; 0x0224C510 mov r1, #0x13 str r0, [sp, #0xc] str r2, [sp, #0x10] - bl FUN_02001470 + bl ListMenuGetTemplateField add r4, r0, #0 ldr r0, [r4, #0xc] bl ScriptEnvironment_GetSav2Ptr @@ -38756,12 +38756,12 @@ MOD18_0224C510: ; 0x0224C510 add r0, #0x20 mov r1, #0xf mov r5, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, [sp, #0x10] cmp r0, #0 beq _0224C546 ldr r0, [sp, #0xc] - bl FUN_02001B80 + bl ListMenuCopyToVram _0224C546: mov r0, #1 mvn r0, r0 @@ -39086,7 +39086,7 @@ MOD18_0224C7D4: ; 0x0224C7D4 bl MOD18_022498EC mov r0, #6 mov r1, #4 - bl ListMenu_ctor + bl ListMenuItems_ctor str r0, [r5, #0x40] mov r2, #3 add r1, r5, #0 @@ -39123,7 +39123,7 @@ MOD18_0224C7D4: ; 0x0224C7D4 bl MOD18_0223D678 ldr r1, _0224C938 ; =0x0000023B mov r2, #0 - bl MOD18_0224DB80 + bl MOD18_LoadMsgBank b _0224C876 _0224C83C: cmp r0, #0 @@ -39137,7 +39137,7 @@ _0224C83C: bl MOD18_0223D678 ldr r1, _0224C93C ; =0x00000237 mov r2, #0 - bl MOD18_0224DB80 + bl MOD18_LoadMsgBank b _0224C876 _0224C85C: mov r0, #0 @@ -39149,7 +39149,7 @@ _0224C85C: bl MOD18_0223D678 ldr r1, _0224C940 ; =0x00000239 mov r2, #0 - bl MOD18_0224DB80 + bl MOD18_LoadMsgBank _0224C876: mov r7, #0x21 mov r4, #0 @@ -39160,7 +39160,7 @@ _0224C87C: ldr r0, [r5, #0x40] add r1, r6, #0 add r3, r4, #0 - bl ListMenu_ItemFromMsgData + bl ListMenuItems_AppendFromMsgData add r4, r4, #1 cmp r4, #5 blt _0224C87C @@ -39168,7 +39168,7 @@ _0224C87C: ldr r0, [r5, #0x40] add r1, r6, #0 sub r3, r2, #2 - bl ListMenu_ItemFromMsgData + bl ListMenuItems_AppendFromMsgData add r0, r6, #0 bl DestroyMsgData bl MOD18_0224DAD8 @@ -39228,7 +39228,7 @@ _0224C87C: lsr r1, r1, #0x10 lsr r2, r2, #0x10 mov r3, #4 - bl FUN_020010A8 + bl ListMenuInit str r0, [r5, #0x48] add r5, #0x10 add r0, r5, #0 @@ -39394,7 +39394,7 @@ MOD18_0224CA58: ; 0x0224CA58 bl MOD18_0223D658 ldr r1, _0224CA90 ; =0x00000241 mov r2, #1 - bl MOD18_0224DB80 + bl MOD18_LoadMsgBank bl MOD18_0223D658 add r4, r0, #0 bl FUN_02031190 @@ -39490,7 +39490,7 @@ _0224CB1A: add r0, r4, #0 add r0, #0x20 mov r1, #0xf - bl FUN_02019620 + bl FillWindowPixelBuffer add r4, #0x20 add r0, r4, #0 bl CopyWindowToVram @@ -39531,7 +39531,7 @@ MOD18_0224CB34: ; 0x0224CB34 add r0, r5, #0 add r0, #0x30 mov r1, #0xf - bl FUN_02019620 + bl FillWindowPixelBuffer add r0, r5, #0 add r0, #0x30 bl CopyWindowToVram @@ -39599,7 +39599,7 @@ _0224CBF0: add r5, r5, #6 cmp r3, #0x14 blt _0224CBD6 - bl ErrorHandling + bl GF_AssertFail mov r0, #0 pop {r3, r4, r5, pc} .align 2, 0 @@ -39680,13 +39680,13 @@ _0224CC7E: pop {r4, r5, r6, pc} _0224CC8E: ldr r0, [r4, #0x48] - bl FUN_02001204 + bl ListMenu_ProcessInput add r5, r0, #0 add r1, sp, #4 ldr r0, [r4, #0x48] add r1, #2 add r2, sp, #4 - bl FUN_02001448 + bl ListMenuGetScrollAndRow add r2, sp, #4 ldrh r1, [r2] ldrh r2, [r2, #2] @@ -39696,7 +39696,7 @@ _0224CC8E: ldr r0, [r4, #0x48] ldrh r6, [r4, r1] add r1, r4, r1 - bl FUN_0200143C + bl ListMenuGetCurrentItemArrayId ldr r0, _0224CF54 ; =0x0000024A ldrh r0, [r4, r0] cmp r6, r0 @@ -39771,13 +39771,13 @@ _0224CD32: pop {r4, r5, r6, pc} _0224CD48: ldr r0, [r4, #0x48] - bl FUN_02001204 + bl ListMenu_ProcessInput add r5, r0, #0 add r1, sp, #4 ldr r0, [r4, #0x48] add r1, #2 add r2, sp, #4 - bl FUN_02001448 + bl ListMenuGetScrollAndRow mov r0, #0x92 lsl r0, r0, #2 ldrb r0, [r4, r0] @@ -39792,7 +39792,7 @@ _0224CD48: ldr r0, [r4, #0x48] ldrh r6, [r4, r1] add r1, r4, r1 - bl FUN_0200143C + bl ListMenuGetCurrentItemArrayId ldr r0, _0224CF54 ; =0x0000024A ldrh r0, [r4, r0] cmp r6, r0 @@ -39916,7 +39916,7 @@ _0224CE68: ldr r0, [r0, #0xc] add r1, #2 add r2, sp, #4 - bl FUN_02001448 + bl ListMenuGetScrollAndRow add r2, sp, #4 ldrh r1, [r2] ldrh r2, [r2, #2] @@ -40138,7 +40138,7 @@ _0224D046: ldr r0, [r0, #0xc] add r1, #2 add r2, sp, #4 - bl FUN_02001448 + bl ListMenuGetScrollAndRow mov r0, #0x92 lsl r0, r0, #2 ldrb r0, [r4, r0] @@ -40827,7 +40827,7 @@ MOD18_0224D5CC: ; 0x0224D5CC add r0, r4, #0 add r0, #8 mov r1, #0xf - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, [sp, #0x30] cmp r0, #0 beq _0224D644 @@ -41024,17 +41024,17 @@ MOD18_0224D79C: ; 0x0224D79C cmp r5, #0x20 ldr r4, [r0, r1] bge _0224D7B4 - bl ErrorHandling + bl GF_AssertFail _0224D7B4: cmp r5, #0x2d ble _0224D7BC - bl ErrorHandling + bl GF_AssertFail _0224D7BC: bl FUN_0204F7E4 bl MOD18_0223D658 ldr r1, _0224D80C ; =0x00000245 mov r2, #1 - bl MOD18_0224DB80 + bl MOD18_LoadMsgBank mov r0, #4 bl FUN_02025964 add r6, r0, #0 @@ -41332,7 +41332,7 @@ MOD18_0224DA00: ; 0x0224DA00 add r0, r5, #0 add r0, #8 mov r1, #0xf - bl FUN_02019620 + bl FillWindowPixelBuffer add r0, r5, #0 ldr r3, _0224DAA0 ; =0x022513FC str r6, [sp] @@ -41435,7 +41435,7 @@ _0224DB08: add r0, r4, #0 str r7, [r4, #0x18] add r0, #8 - bl FUN_0201901C + bl InitWindow ldr r1, [r4, #0x40] mov r0, #1 bic r1, r0 @@ -41468,8 +41468,9 @@ MOD18_0224DB5C: ; 0x0224DB5C pop {r4, pc} thumb_func_end MOD18_0224DB5C - thumb_func_start MOD18_0224DB80 -MOD18_0224DB80: ; 0x0224DB80 + thumb_func_start MOD18_LoadMsgBank +MOD18_LoadMsgBank: ; 0x0224DB80 + ; void MOD18_LoadMsgBank(struct MOD18Work * work, s32 bank, u32 async) push {r4, r5, r6, lr} add r5, r0, #0 ldr r0, [r5, #0x2c] @@ -41488,11 +41489,11 @@ MOD18_0224DB80: ; 0x0224DB80 str r0, [r5, #0x24] cmp r0, #0 bne _0224DBAC - bl ErrorHandling + bl GF_AssertFail _0224DBAC: pop {r4, r5, r6, pc} .align 2, 0 - thumb_func_end MOD18_0224DB80 + thumb_func_end MOD18_LoadMsgBank thumb_func_start MOD18_0224DBB0 MOD18_0224DBB0: ; 0x0224DBB0 @@ -41590,7 +41591,7 @@ _0224DC4C: add r0, r5, #0 add r0, #8 mov r1, #0xf - bl FUN_02019620 + bl FillWindowPixelBuffer add r0, r5, #0 ldr r2, _0224DCB0 ; =0x000001E2 add r0, #8 @@ -42286,7 +42287,7 @@ MOD18_0224E0CC: ; 0x0224E0CC add r5, r0, #0 mov r0, #4 add r1, r0, #0 - bl ListMenu_ctor + bl ListMenuItems_ctor str r0, [r5, #0x24] mov r2, #3 str r2, [sp] @@ -42345,7 +42346,7 @@ MOD18_0224E0CC: ; 0x0224E0CC add r0, r5, #0 add r0, #0x14 mov r1, #0xf - bl FUN_02019620 + bl FillWindowPixelBuffer add r0, r7, #0 mov r1, #0 bl NewString_ReadMsgData @@ -42369,7 +42370,7 @@ _0224E186: ldr r2, [r4] add r1, r7, #0 add r3, r6, #0 - bl ListMenu_ItemFromMsgData + bl ListMenuItems_AppendFromMsgData add r6, r6, #1 add r4, r4, #4 cmp r6, #4 @@ -42402,7 +42403,7 @@ _0224E186: ldr r2, [r5, #0x34] ldrh r1, [r1] ldrh r2, [r2] - bl FUN_020010A8 + bl ListMenuInit str r0, [r5, #0x28] add r0, r5, #4 bl CopyWindowToVram @@ -42429,7 +42430,7 @@ MOD18_0224E210: ; 0x0224E210 push {r3, r4, r5, lr} add r5, r0, #0 ldr r0, [r5, #0x28] - bl FUN_02001204 + bl ListMenu_ProcessInput add r4, r0, #0 add r0, r5, #0 bl MOD18_0224E73C @@ -42483,7 +42484,7 @@ MOD18_0224E26C: ; 0x0224E26C ldr r0, [r4, #0x28] ldr r1, [r4, #0x30] ldr r2, [r4, #0x34] - bl FUN_02001300 + bl DestroyListMenu add r0, r4, #4 mov r1, #1 bl FUN_0200CCF8 @@ -42496,7 +42497,7 @@ MOD18_0224E26C: ; 0x0224E26C add r0, #0x14 bl FUN_02019178 ldr r0, [r4, #0x24] - bl ListMenu_dtor + bl ListMenuItems_dtor pop {r4, pc} .align 2, 0 thumb_func_end MOD18_0224E26C @@ -42512,13 +42513,13 @@ MOD18_0224E2B4: ; 0x0224E2B4 add r1, r2, #0 mov r2, #0xf mov r3, #2 - bl FUN_020013E8 + bl ListMenuOverrideSetColors pop {r3, pc} _0224E2CC: mov r1, #2 mov r2, #0xf add r3, r1, #0 - bl FUN_020013E8 + bl ListMenuOverrideSetColors pop {r3, pc} thumb_func_end MOD18_0224E2B4 @@ -42639,16 +42640,16 @@ _0224E384: ldr r0, [r0, #0xc] add r1, #2 add r2, sp, #0 - bl FUN_02001448 + bl ListMenuGetScrollAndRow ldr r0, [r5, #0x2c] mov r1, #2 ldr r0, [r0, #0xc] - bl FUN_02001470 + bl ListMenuGetTemplateField add r7, r0, #0 ldr r0, [r5, #0x2c] mov r1, #3 ldr r0, [r0, #0xc] - bl FUN_02001470 + bl ListMenuGetTemplateField add r3, r0, #0 add r1, sp, #0 lsl r2, r7, #0x10 @@ -42692,11 +42693,11 @@ MOD18_0224E3F0: ; 0x0224E3F0 add r4, r1, #0 add r5, r0, #0 mov r1, #0x13 - bl FUN_02001470 + bl ListMenuGetTemplateField add r6, r0, #0 add r0, r5, #0 mov r1, #2 - bl FUN_02001470 + bl ListMenuGetTemplateField lsr r1, r4, #1 sub r0, r0, #1 cmp r1, r0 @@ -42741,7 +42742,7 @@ _0224E454: ldr r0, [sp, #0x20] mov r1, #4 add r0, r0, #1 - bl ListMenu_ctor + bl ListMenuItems_ctor str r0, [r5, #0x28] mov r2, #3 str r2, [sp] @@ -42804,7 +42805,7 @@ _0224E454: add r0, r5, #0 add r0, #0x18 mov r1, #0xf - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, [sp, #0x24] mov r1, #9 bl NewString_ReadMsgData @@ -42899,7 +42900,7 @@ _0224E5B4: ldr r1, [sp, #0x18] ldr r2, [sp, #0x14] add r3, r6, r3 - bl ListMenu_ItemFromMsgData + bl ListMenuItems_AppendFromMsgData ldr r0, [sp, #0x20] add r4, r4, #1 add r6, r6, #2 @@ -42911,13 +42912,13 @@ _0224E5CE: ldr r1, [sp, #0x18] ldr r2, _0224E694 ; =0x00000115 add r3, r3, #1 - bl ListMenu_ItemFromMsgData + bl ListMenuItems_AppendFromMsgData ldr r0, [sp, #0x18] bl DestroyMsgData bl MOD18_0223D678 ldr r1, _0224E68C ; =0x00000237 mov r2, #0 - bl MOD18_0224DB80 + bl MOD18_LoadMsgBank ldr r4, _0224E698 ; =0x022507D0 add r3, sp, #0x30 add r2, r3, #0 @@ -43025,7 +43026,7 @@ MOD18_0224E6A8: ; 0x0224E6A8 add r0, #0x18 bl FUN_02019178 ldr r0, [r4, #0x28] - bl ListMenu_dtor + bl ListMenuItems_dtor ldr r0, [r4, #4] bl FUN_0205EBEC pop {r4, pc} @@ -43078,7 +43079,7 @@ MOD18_0224E73C: ; 0x0224E73C add r1, r5, #0 ldr r0, [r5, #0x28] add r1, #0x40 - bl FUN_0200143C + bl ListMenuGetCurrentItemArrayId add r5, #0x40 ldrh r0, [r5] cmp r4, r0 @@ -43100,7 +43101,7 @@ MOD18_0224E764: ; 0x0224E764 add r7, r2, #0 cmp r5, #0 bne _0224E776 - bl ErrorHandling + bl GF_AssertFail _0224E776: add r4, r7, #0 add r4, #0x3c @@ -43178,7 +43179,7 @@ MOD18_0224E7F4: ; 0x0224E7F4 ldr r0, [r0, #0x5c] cmp r0, #0 bne _0224E80A - bl ErrorHandling + bl GF_AssertFail _0224E80A: add r2, r5, r4 add r2, #0x60 @@ -43592,7 +43593,7 @@ _0224EB6C: str r0, [r4, #4] b _0224EDBA _0224EB82: - bl ErrorHandling + bl GF_AssertFail b _0224EDBA _0224EB88: ldr r0, _0224EDC4 ; =0x000004DC @@ -44132,14 +44133,14 @@ _0224EFD6: ldr r0, [r0, #0x64] cmp r0, #0x20 blt _0224EFEA - bl ErrorHandling + bl GF_AssertFail _0224EFEA: ldr r0, _0224F14C ; =0x000004FC ldr r0, [r4, r0] ldr r0, [r0, #0x68] cmp r0, #0x20 blt _0224EFF8 - bl ErrorHandling + bl GF_AssertFail _0224EFF8: ldr r0, _0224F14C ; =0x000004FC add r2, r4, #0 @@ -44210,7 +44211,7 @@ _0224F06E: ldrb r0, [r4, r0] cmp r0, #0 bne _0224F08A - bl ErrorHandling + bl GF_AssertFail _0224F08A: ldr r0, _0224F158 ; =0x00000522 ldrb r1, [r4, r0] @@ -44241,7 +44242,7 @@ _0224F09E: ldrb r0, [r4, r0] cmp r0, #0 bne _0224F0CE - bl ErrorHandling + bl GF_AssertFail _0224F0CE: ldr r0, _0224F160 ; =0x00000521 ldrb r1, [r4, r0] @@ -44317,7 +44318,7 @@ _0224F164: ldrb r0, [r4, r0] sub r5, r1, r0 bpl _0224F172 - bl ErrorHandling + bl GF_AssertFail _0224F172: cmp r5, #0 bne _0224F184 @@ -44679,14 +44680,14 @@ _0224F442: ldr r0, [r0, #0x64] cmp r0, #0x20 blt _0224F456 - bl ErrorHandling + bl GF_AssertFail _0224F456: ldr r0, _0224F51C ; =0x000004FC ldr r0, [r5, r0] ldr r0, [r0, #0x68] cmp r0, #0x20 blt _0224F464 - bl ErrorHandling + bl GF_AssertFail _0224F464: ldr r0, _0224F51C ; =0x000004FC add r2, r5, #0 @@ -45216,7 +45217,7 @@ _0224F880: add r4, #0x24 cmp r2, #0x20 blt _0224F858 - bl ErrorHandling + bl GF_AssertFail mov r0, #0 pop {r4, pc} thumb_func_end MOD18_0224F850 @@ -45229,7 +45230,7 @@ MOD18_0224F890: ; 0x0224F890 add r4, r2, #0 cmp r7, #0x20 blt _0224F8A0 - bl ErrorHandling + bl GF_AssertFail _0224F8A0: mov r0, #0x24 add r6, r7, #0 @@ -45237,7 +45238,7 @@ _0224F8A0: ldr r0, [r4, r6] cmp r0, #0 beq _0224F8B0 - bl ErrorHandling + bl GF_AssertFail _0224F8B0: mov r0, #1 str r0, [r4, r6] @@ -45262,11 +45263,11 @@ MOD18_0224F8CC: ; 0x0224F8CC add r4, r1, #0 cmp r5, #0x20 blt _0224F8DA - bl ErrorHandling + bl GF_AssertFail _0224F8DA: cmp r5, #0 bne _0224F8E2 - bl ErrorHandling + bl GF_AssertFail _0224F8E2: mov r0, #0x24 add r6, r5, #0 @@ -45274,7 +45275,7 @@ _0224F8E2: ldr r0, [r4, r6] cmp r0, #0 bne _0224F8F2 - bl ErrorHandling + bl GF_AssertFail _0224F8F2: mov r1, #0 add r0, r4, r6 @@ -45555,7 +45556,7 @@ MOD18_0224FAEC: ; 0x0224FAEC add r5, r0, #0 add r4, r1, #0 bne _0224FAF8 - bl ErrorHandling + bl GF_AssertFail _0224FAF8: ldr r0, [r5, #0x2c] add r1, r4, #0 @@ -45577,7 +45578,7 @@ MOD18_0224FB04: ; 0x0224FB04 ldr r0, [r0, #0x5c] cmp r0, #0 bne _0224FB1E - bl ErrorHandling + bl GF_AssertFail _0224FB1E: add r0, r5, #0 add r0, #0x60 @@ -45625,7 +45626,7 @@ MOD18_0224FB64: ; 0x0224FB64 ldr r0, [r0, #0x5c] cmp r0, #0 bne _0224FB7A - bl ErrorHandling + bl GF_AssertFail _0224FB7A: mov r0, #5 lsl r0, r0, #8 diff --git a/arm9/modules/19/asm/module_19.s b/arm9/modules/19/asm/module_19.s index 91c756c6..8f3a28ce 100644 --- a/arm9/modules/19/asm/module_19.s +++ b/arm9/modules/19/asm/module_19.s @@ -42,7 +42,7 @@ MOD19_02252440: ; 0x02252440 mov r1, #0xa add r2, r4, #0 mov r3, #4 - bl FUN_0200687C + bl GfGfxLoader_LoadCharData mov r0, #0 str r0, [sp] str r0, [sp, #4] @@ -54,7 +54,7 @@ MOD19_02252440: ; 0x02252440 mov r1, #0xb add r2, r4, #0 mov r3, #4 - bl FUN_020068C8 + bl GfGfxLoader_LoadScrnData mov r0, #0x20 str r0, [sp] mov r0, #8 @@ -63,7 +63,7 @@ MOD19_02252440: ; 0x02252440 add r1, r0, #0 mov r2, #4 mov r3, #0 - bl FUN_02006930 + bl GfGfxLoader_GXLoadPal ldr r2, _022524E0 ; =0x04001000 ldr r0, _022524EC ; =0xFFFF1FFF ldr r1, [r2] diff --git a/arm9/modules/20/asm/module_20.s b/arm9/modules/20/asm/module_20.s index 67f4c29a..a77f95fc 100644 --- a/arm9/modules/20/asm/module_20.s +++ b/arm9/modules/20/asm/module_20.s @@ -226,7 +226,7 @@ _022525B2: pop {r3, r4, r5, pc} _022525C0: beq _022525C6 - bl ErrorHandling + bl GF_AssertFail _022525C6: ldr r0, [r4, #0x34] mov r1, #0 @@ -629,7 +629,7 @@ LoadPoketchApp: ; 0x022528B0 cmp r4, #0x19 blo _022528C0 _022528BC: - bl ErrorHandling + bl GF_AssertFail _022528C0: mov r0, #0 ldr r1, [r5, #0x14] @@ -688,7 +688,7 @@ MOD20_02252918: ; 0x02252918 ldrb r0, [r4, #2] cmp r0, #0 beq _02252926 - bl ErrorHandling + bl GF_AssertFail _02252926: add r0, r4, #0 ldr r2, [r4, #0x4c] @@ -723,7 +723,7 @@ MOD20_0225294C: ; 0x0225294C ldrb r0, [r4, #2] cmp r0, #2 beq _0225295A - bl ErrorHandling + bl GF_AssertFail _0225295A: ldr r0, [r4, #0x24] ldr r1, [r4, #0x40] @@ -767,7 +767,7 @@ MOD20_0225298C: ; 0x0225298C ldrb r0, [r4, #2] cmp r0, #1 beq _0225299A - bl ErrorHandling + bl GF_AssertFail _0225299A: mov r0, #2 strb r0, [r4, #2] @@ -781,7 +781,7 @@ MOD20_022529A0: ; 0x022529A0 ldrb r0, [r4, #2] cmp r0, #3 beq _022529AE - bl ErrorHandling + bl GF_AssertFail _022529AE: mov r0, #0 strb r0, [r4, #2] @@ -1223,7 +1223,7 @@ MOD20_02252C5C: ; 0x02252C5C lsl r0, r0, #4 str r7, [r4, r0] ldr r0, [r4, r0] - bl FUN_020B0888 + bl NNS_G2dResetOamManagerBuffer mov r0, #0x15 lsl r0, r0, #4 ldr r0, [r4, r0] @@ -1331,7 +1331,7 @@ MOD20_02252D44: ; 0x02252D44 mov r1, #0 add r2, sp, #0 mov r3, #7 - bl FUN_02006C08 + bl GfGfxLoader_GetPlttData add r4, r0, #0 beq _02252D7A ldr r0, [sp] @@ -1591,7 +1591,7 @@ MOD20_02252ED0: ; 0x02252ED0 ldr r2, [r4, r2] mov r1, #0xe mov r3, #4 - bl FUN_0200687C + bl GfGfxLoader_LoadCharData mov r0, #0 str r0, [sp] str r0, [sp, #4] @@ -1604,7 +1604,7 @@ MOD20_02252ED0: ; 0x02252ED0 ldr r2, [r4, r2] mov r1, #0xf mov r3, #4 - bl FUN_020068C8 + bl GfGfxLoader_LoadScrnData mov r0, #0x61 lsl r0, r0, #2 ldr r0, [r4, r0] @@ -1621,7 +1621,7 @@ MOD20_02252ED0: ; 0x02252ED0 mov r1, #0xd mov r2, #4 lsl r3, r3, #5 - bl FUN_02006948 + bl GfGfxLoader_GXLoadPalWithSrcOffset mov r3, #0 str r3, [sp] mov r0, #0x20 @@ -2232,7 +2232,7 @@ MOD20_02253430: ; 0x02253430 str r0, [sp, #8] mov r0, #0xc mov r1, #2 - bl FUN_02006A34 + bl GfGfxLoader_LoadWholePalette mov r0, #0x60 str r0, [sp] mov r0, #7 @@ -2241,7 +2241,7 @@ MOD20_02253430: ; 0x02253430 mov r0, #0xc mov r2, #5 add r3, r1, #0 - bl FUN_02006930 + bl GfGfxLoader_GXLoadPal add r0, r5, #0 mov r1, #0xf bl MOD20_022534D4 @@ -2587,7 +2587,7 @@ MOD20_02253714: ; 0x02253714 ldr r0, _02253750 ; =0x12345678 cmp r1, r0 beq _02253726 - bl ErrorHandling + bl GF_AssertFail _02253726: ldr r6, [r5] mov r2, #0 @@ -2625,7 +2625,7 @@ MOD20_02253754: ; 0x02253754 ldr r0, _02253790 ; =0x12345678 cmp r1, r0 beq _02253766 - bl ErrorHandling + bl GF_AssertFail _02253766: ldr r3, [r5] mov r2, #0 @@ -2648,7 +2648,7 @@ _02253782: cmp r2, r3 blo _02253770 _0225378A: - bl ErrorHandling + bl GF_AssertFail pop {r3, r4, r5, pc} .align 2, 0 _02253790: .word 0x12345678 @@ -2781,7 +2781,7 @@ _02253866: add sp, #0xc pop {r4, r5, r6, r7, pc} _02253870: - bl ErrorHandling + bl GF_AssertFail b _02253880 _02253876: add r3, #0xc @@ -2790,7 +2790,7 @@ _02253876: cmp r2, r1 bne _022537FA _02253880: - bl ErrorHandling + bl GF_AssertFail _02253884: add sp, #0xc pop {r4, r5, r6, r7, pc} @@ -2994,7 +2994,7 @@ MOD20_022539C4: ; 0x022539C4 mov r0, #0x13 add r2, sp, #0 mov r3, #8 - bl FUN_02006C08 + bl GfGfxLoader_GetPlttData add r4, r0, #0 beq _02253A02 ldr r0, [sp] @@ -3062,7 +3062,7 @@ _02253A4E: bl NARC_ReadFromMember add r0, r7, #0 add r1, sp, #0x20 - bl FUN_020B0088 + bl NNS_G2dGetUnpackedCharacterData ldr r0, [sp, #0x20] add r1, r5, #0 ldr r0, [r0, #0x14] @@ -3239,7 +3239,7 @@ MOD20_02253BA4: ; 0x02253BA4 str r7, [r4] str r5, [r4, #0x18] add r0, r7, #0 - bl FUN_020B0830 + bl NNS_G2dGetOamManagerOamCapacity strh r0, [r4, #0x10] ldrh r1, [r4, #0x10] add r0, r5, #0 @@ -3279,23 +3279,23 @@ _02253C0E: cmp r1, #0 beq _02253C22 add r0, r5, #0 - bl FUN_02016A8C + bl FreeToHeapExplicit _02253C22: ldr r1, [r4, #0xc] cmp r1, #0 beq _02253C2E add r0, r5, #0 - bl FUN_02016A8C + bl FreeToHeapExplicit _02253C2E: ldr r1, [r4, #4] cmp r1, #0 beq _02253C3A add r0, r5, #0 - bl FUN_02016A8C + bl FreeToHeapExplicit _02253C3A: add r0, r5, #0 add r1, r4, #0 - bl FUN_02016A8C + bl FreeToHeapExplicit _02253C42: mov r0, #0 pop {r3, r4, r5, r6, r7, pc} @@ -3354,7 +3354,7 @@ _02253C96: mov r1, #2 add r0, #8 lsl r1, r1, #0xc - bl FUN_020B1EC4 + bl NNS_G2dTickCellAnimation add r0, r4, #0 add r0, #0x86 ldrb r0, [r0] @@ -3391,7 +3391,7 @@ _02253CAE: ldr r2, [r4, #0x34] add r0, r5, #0 lsr r1, r1, #0x10 - bl FUN_020B1AF8 + bl NNS_G2dMakeCellToOams b _02253D86 _02253CEE: ldr r0, [r4, #0x6c] @@ -3404,7 +3404,7 @@ _02253CEE: add r0, #0x8c ldrh r2, [r6, #0x10] ldrh r0, [r0] - ldr r1, _02253E58 ; =UNK_020FFA38 + ldr r1, _02253E58 ; =FX_SinCosTable_ add r0, r2, r0 lsl r0, r0, #0x10 lsr r0, r0, #0x10 @@ -3425,7 +3425,7 @@ _02253D20: beq _02253D3E asr r0, r0, #4 lsl r3, r0, #2 - ldr r1, _02253E58 ; =UNK_020FFA38 + ldr r1, _02253E58 ; =FX_SinCosTable_ ldr r0, [r4, #0x6c] add r2, r1, r3 ldrsh r1, [r1, r3] @@ -3452,7 +3452,7 @@ _02253D62: ldr r0, [sp, #0xc] ldr r1, [r4, #0x6c] ldr r0, [r0] - bl FUN_020B0BB0 + bl NNS_G2dEntryOamManagerAffine add r1, sp, #0x18 str r1, [sp] str r0, [sp, #4] @@ -3464,7 +3464,7 @@ _02253D62: ldr r3, [r4, #0x6c] add r0, r5, #0 lsr r1, r1, #0x10 - bl FUN_020B1AF8 + bl NNS_G2dMakeCellToOams _02253D86: ldr r1, [sp, #0x10] sub r1, r1, r0 @@ -3569,12 +3569,12 @@ _02253E38: lsl r2, r2, #0xd ldr r0, [r0] lsr r2, r2, #0x10 - bl FUN_020B0D58 + bl NNS_G2dEntryOamManagerOam _02253E52: add sp, #0x20 pop {r3, r4, r5, r6, r7, pc} nop -_02253E58: .word UNK_020FFA38 +_02253E58: .word FX_SinCosTable_ _02253E5C: .word 0xDFFFFFFF _02253E60: .word 0xFFFFF3FF _02253E64: .word 0xFFFF0FFF @@ -3607,12 +3607,12 @@ MOD20_02253E74: ; 0x02253E74 ldr r0, [r6, #0xc] str r0, [r4, #4] ldrh r1, [r5, #8] - bl FUN_020AFC04 + bl NNS_G2dGetAnimSequenceByIdx add r1, r0, #0 add r0, r4, #0 ldr r2, [r4] add r0, #8 - bl FUN_020B1F80 + bl NNS_G2dInitCellAnimation ldr r1, [r5] ldr r0, [r5, #4] str r1, [r4, #0x64] @@ -3686,12 +3686,12 @@ MOD20_02253F28: ; 0x02253F28 lsl r1, r1, #0x10 ldr r0, [r4, #4] lsr r1, r1, #0x10 - bl FUN_020AFC04 + bl NNS_G2dGetAnimSequenceByIdx add r1, r0, #0 add r0, r4, #0 ldr r2, [r4] add r0, #8 - bl FUN_020B1F80 + bl NNS_G2dInitCellAnimation pop {r4, pc} thumb_func_end MOD20_02253F28 @@ -3805,12 +3805,12 @@ MOD20_02253FBC: ; 0x02253FBC str r4, [r5, #0x10] add r0, r6, #0 add r2, r4, #0 - bl FUN_02006C88 + bl GfGfxLoader_UncompressFromNarc str r0, [r5] add r0, r6, #0 add r1, r7, #0 add r2, r4, #0 - bl FUN_02006C88 + bl GfGfxLoader_UncompressFromNarc str r0, [r5, #4] ldr r0, [r5] cmp r0, #0 @@ -3820,7 +3820,7 @@ MOD20_02253FBC: ; 0x02253FBC beq _0225400E add r1, r5, #0 add r1, #8 - bl FUN_020AFEB8 + bl NNS_G2dGetUnpackedCellBank cmp r0, #0 bne _02253FFC mov r0, #0 @@ -3829,7 +3829,7 @@ _02253FFC: ldr r0, [r5, #4] add r5, #0xc add r1, r5, #0 - bl thunk_FUN_020afda0 + bl NNS_G2dGetUnpackedMCAnimBank cmp r0, #0 bne _0225400E mov r0, #0 @@ -3848,7 +3848,7 @@ MOD20_02254014: ; 0x02254014 cmp r1, #0 beq _02254028 ldr r0, [r4, #0x10] - bl FUN_02016A8C + bl FreeToHeapExplicit mov r0, #0 str r0, [r4] _02254028: @@ -3856,7 +3856,7 @@ _02254028: cmp r1, #0 beq _02254038 ldr r0, [r4, #0x10] - bl FUN_02016A8C + bl FreeToHeapExplicit mov r0, #0 str r0, [r4, #4] _02254038: @@ -4035,7 +4035,7 @@ MOD20_02254130: ; 0x02254130 str r3, [sp, #4] ldr r5, [sp, #0x20] bne _02254144 - bl ErrorHandling + bl GF_AssertFail _02254144: add r0, r5, #0 mov r1, #0x18 @@ -4072,7 +4072,7 @@ _02254176: _02254188: add r0, r5, #0 add r1, r4, #0 - bl FUN_02016A8C + bl FreeToHeapExplicit mov r4, #0 _02254192: add r0, r4, #0 @@ -4085,14 +4085,14 @@ MOD20_02254198: ; 0x02254198 push {r4, lr} add r4, r0, #0 bne _022541A2 - bl ErrorHandling + bl GF_AssertFail _022541A2: ldr r0, [r4, #8] ldr r1, [r4, #0x14] - bl FUN_02016A8C + bl FreeToHeapExplicit ldr r0, [r4, #8] add r1, r4, #0 - bl FUN_02016A8C + bl FreeToHeapExplicit pop {r4, pc} thumb_func_end MOD20_02254198 @@ -4481,11 +4481,11 @@ MOD20_02254420: ; 0x02254420 add r7, r3, #0 cmp r5, #0x1e blo _02254432 - bl ErrorHandling + bl GF_AssertFail _02254432: cmp r4, #0x21 blo _0225443A - bl ErrorHandling + bl GF_AssertFail _0225443A: cmp r5, #0x1e blo _02254440 @@ -4517,7 +4517,7 @@ MOD20_02254460: ; 0x02254460 add r6, r2, #0 cmp r5, #4 blo _02254470 - bl ErrorHandling + bl GF_AssertFail _02254470: ldr r0, _02254480 ; =MOD20_02254724 lsl r1, r5, #3 diff --git a/arm9/modules/21/src/mod21_02254854.c b/arm9/modules/21/src/mod21_02254854.c index a9a7599d..1c91afde 100644 --- a/arm9/modules/21/src/mod21_02254854.c +++ b/arm9/modules/21/src/mod21_02254854.c @@ -29,7 +29,7 @@ THUMB_FUNC BOOL MOD21_02254854(UnkStruct02254854 **param0, u32 param1, u32 param UnkStruct02254854 *alloced = (UnkStruct02254854 *)AllocFromHeap(8, sizeof(UnkStruct02254854)); if (alloced != NULL) { - if (MOD21_0225489C(alloced, param1, param2, param3) && FUN_0200CA44((void (*)(u32, void *))MOD21_02254930, alloced, (void *)1)) + if (MOD21_0225489C(alloced, param1, param2, param3) && FUN_0200CA44((void (*)(u32, struct TextPrinter *))MOD21_02254930, (struct TextPrinter *)alloced, 1)) { *param0 = alloced; return TRUE; diff --git a/arm9/modules/21/src/mod21_02254A6C.c b/arm9/modules/21/src/mod21_02254A6C.c index 1dcbe4b8..040ebdaa 100644 --- a/arm9/modules/21/src/mod21_02254A6C.c +++ b/arm9/modules/21/src/mod21_02254A6C.c @@ -5,7 +5,7 @@ extern void MOD20_022536F4(u32 *param0, u32 param1); extern u32 MOD20_02252D34(void); -extern void *FUN_02006BDC(u32 param0, u32 param1, u32 param2, void *param3, u32 param4); +extern void *GfGfxLoader_GetScrnData(u32 param0, u32 param1, u32 param2, void *param3, u32 param4); extern void MOD20_022537E0(void *param0, u32 param1, void *param2, u32 param3, void *param4, u32 param5, u32 param6); UnkOverlayStruct1 const MOD21_02254DAC[] = { @@ -26,8 +26,8 @@ u8 const MOD21_02254D90[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x 0x00, 0x01, 0x00, 0x0E, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; extern void FUN_02016C18(u32 param0, u32 param1, void *param2, u32 param3); -extern void FUN_0200687C(u32 param0, u32 param1, u32 param2, u32 param3, u32 param4, u32 param5, u32 param6, u32 param7); -extern void FUN_020068C8(u32 param0, u32 param1, u32 param2, u32 param3, u32 param4, u32 param5, u32 param6, u32 param7); +extern void GfGfxLoader_LoadCharData(u32 param0, u32 param1, u32 param2, u32 param3, u32 param4, u32 param5, u32 param6, u32 param7); +extern void GfGfxLoader_LoadScrnData(u32 param0, u32 param1, u32 param2, u32 param3, u32 param4, u32 param5, u32 param6, u32 param7); extern void MOD20_02252D7C(u32 param0, u32 param1); extern void FUN_02017CD0(u32 param0, u32 param1); extern void FUN_020178A0(u32 param0, u32 param1); @@ -45,7 +45,7 @@ THUMB_FUNC BOOL MOD21_02254A6C(UnkStruct02254A6C *param0, void *param1) MOD20_022536F4(strct->Unk08, 8); strct->Unk00 = param1; strct->Unk04 = MOD20_02252D34(); - void *res = FUN_02006BDC(12, 0x19, 1, &sp4, 8); + void *res = GfGfxLoader_GetScrnData(12, 0x19, 1, &sp4, 8); if (res == 0) { FreeToHeap(strct); @@ -105,8 +105,8 @@ THUMB_FUNC BOOL MOD21_02254B60(u32 param0, void *param1) #pragma unused (param0) UnkStruct02254A6C *strct = MOD20_022538A0(param1); FUN_02016C18(strct->Unk04, 6, MOD21_02254D90, 0); - FUN_0200687C(12, 23, strct->Unk04, 6, 0, 0, 1, 8); - FUN_020068C8(12, 24, strct->Unk04, 6, 0, 0, 1, 8); + GfGfxLoader_LoadCharData(12, 23, strct->Unk04, 6, 0, 0, 1, 8); + GfGfxLoader_LoadScrnData(12, 24, strct->Unk04, 6, 0, 0, 1, 8); MOD20_02252D7C(0, 0); MOD21_02254C5C(strct); FUN_02017CD0(strct->Unk04, 6); diff --git a/arm9/modules/22/asm/module_22.s b/arm9/modules/22/asm/module_22.s index e58e406b..bf11e9db 100644 --- a/arm9/modules/22/asm/module_22.s +++ b/arm9/modules/22/asm/module_22.s @@ -1164,7 +1164,7 @@ MOD22_02255098: ; 0x02255098 mov r0, #0xc mov r1, #0x15 mov r3, #6 - bl FUN_0200687C + bl GfGfxLoader_LoadCharData mov r0, #0 str r0, [sp] str r0, [sp, #4] @@ -1176,7 +1176,7 @@ MOD22_02255098: ; 0x02255098 mov r0, #0xc mov r1, #0x14 mov r3, #6 - bl FUN_020068C8 + bl GfGfxLoader_LoadScrnData mov r0, #0 add r1, r0, #0 bl MOD20_02252D7C @@ -1245,7 +1245,7 @@ MOD22_0225516C: ; 0x0225516C str r0, [sp, #8] mov r0, #0xc mov r1, #2 - bl FUN_02006A34 + bl GfGfxLoader_LoadWholePalette mov r0, #0 str r0, [sp] mov r2, #1 @@ -1256,7 +1256,7 @@ MOD22_0225516C: ; 0x0225516C mov r0, #0xc mov r1, #0x16 lsl r3, r3, #8 - bl FUN_02006A34 + bl GfGfxLoader_LoadWholePalette mov r0, #1 add sp, #0xc pop {pc} diff --git a/arm9/modules/23/asm/module_23.s b/arm9/modules/23/asm/module_23.s index 5550c76b..9f052087 100644 --- a/arm9/modules/23/asm/module_23.s +++ b/arm9/modules/23/asm/module_23.s @@ -1165,7 +1165,7 @@ MOD23_02255088: ; 0x02255088 mov r0, #0xc mov r1, #0x10 mov r3, #6 - bl FUN_0200687C + bl GfGfxLoader_LoadCharData mov r0, #0 str r0, [sp] str r0, [sp, #4] @@ -1177,7 +1177,7 @@ MOD23_02255088: ; 0x02255088 mov r0, #0xc mov r1, #0x11 mov r3, #6 - bl FUN_020068C8 + bl GfGfxLoader_LoadScrnData add r0, r5, #0 bl MOD23_02255124 mov r0, #0 diff --git a/arm9/modules/24/asm/module_24.s b/arm9/modules/24/asm/module_24.s index 2888f12d..cdf4b770 100644 --- a/arm9/modules/24/asm/module_24.s +++ b/arm9/modules/24/asm/module_24.s @@ -624,7 +624,7 @@ MOD24_02254CA0: ; 0x02254CA0 bl FUN_02016B90 cmp r0, #0 bne _02254CC0 - bl ErrorHandling + bl GF_AssertFail _02254CC0: add r0, r4, #0 add r0, #8 @@ -634,7 +634,7 @@ _02254CC0: bl FUN_02016B90 cmp r0, #0 bne _02254CD8 - bl ErrorHandling + bl GF_AssertFail _02254CD8: str r6, [r4] bl MOD20_02252D34 @@ -645,7 +645,7 @@ _02254CD8: bl FUN_02016B90 cmp r0, #0 bne _02254CF4 - bl ErrorHandling + bl GF_AssertFail _02254CF4: str r4, [r5] mov r0, #1 @@ -662,7 +662,7 @@ MOD24_02254D00: ; 0x02254D00 add r4, r0, #0 mov r0, #8 mov r1, #1 - bl FUN_02018FF4 + bl AllocWindows str r0, [r4, #0x70] add r1, r0, #0 beq _02254D3C @@ -681,7 +681,7 @@ MOD24_02254D00: ; 0x02254D00 bne _02254D38 ldr r0, [r4, #0x70] mov r1, #4 - bl FUN_02019620 + bl FillWindowPixelBuffer _02254D38: mov r0, #1 pop {r4, pc} @@ -702,7 +702,7 @@ MOD24_02254D48: ; 0x02254D48 bl FUN_02016B90 cmp r0, #0 bne _02254D5C - bl ErrorHandling + bl GF_AssertFail _02254D5C: ldr r2, [r4, #0x70] cmp r2, #0 @@ -786,7 +786,7 @@ MOD24_02254DDC: ; 0x02254DDC bl FUN_02016B90 cmp r0, #0 bne _02254DF0 - bl ErrorHandling + bl GF_AssertFail _02254DF0: add r0, r4, #0 bl MOD20_022538A0 @@ -805,7 +805,7 @@ _02254DF0: bl FUN_02016B90 cmp r0, #0 bne _02254E1E - bl ErrorHandling + bl GF_AssertFail _02254E1E: mov r0, #0 str r0, [sp] @@ -818,7 +818,7 @@ _02254E1E: mov r0, #0xc mov r1, #0x1e mov r3, #6 - bl FUN_0200687C + bl GfGfxLoader_LoadCharData mov r0, #0 str r0, [sp] str r0, [sp, #4] @@ -830,7 +830,7 @@ _02254E1E: mov r0, #0xc mov r1, #0x1f mov r3, #6 - bl FUN_020068C8 + bl GfGfxLoader_LoadScrnData mov r0, #0 add r1, r0, #0 bl MOD20_02252D7C @@ -838,7 +838,7 @@ _02254E1E: bl FUN_02016B90 cmp r0, #0 bne _02254E68 - bl ErrorHandling + bl GF_AssertFail _02254E68: add r0, r5, #0 bl MOD24_02254D00 @@ -848,7 +848,7 @@ _02254E68: bl FUN_02016B90 cmp r0, #0 bne _02254E82 - bl ErrorHandling + bl GF_AssertFail _02254E82: add r0, r5, #0 bl MOD24_02255078 @@ -856,7 +856,7 @@ _02254E82: bl FUN_02016B90 cmp r0, #0 bne _02254E96 - bl ErrorHandling + bl GF_AssertFail _02254E96: ldr r0, [r5, #4] mov r1, #7 @@ -880,7 +880,7 @@ _02254E96: bl FUN_02016B90 cmp r0, #0 bne _02254ECC - bl ErrorHandling + bl GF_AssertFail _02254ECC: add sp, #0x14 pop {r4, r5, pc} @@ -987,7 +987,7 @@ _02254F80: mov r1, #4 lsr r2, r2, #0x10 lsr r3, r3, #0x10 - bl FUN_020196F4 + bl FillWindowPixelRect asr r1, r5, #3 mov r2, #0x14 asr r0, r6, #3 @@ -1048,7 +1048,7 @@ _02254FF2: mov r1, #1 lsr r2, r2, #0x10 lsr r3, r3, #0x10 - bl FUN_020196F4 + bl FillWindowPixelRect ldr r0, [r7, #0x70] mov r2, #0x20 ldr r1, [r0, #0xc] @@ -1110,7 +1110,7 @@ MOD24_02255078: ; 0x02255078 str r0, [sp, #8] mov r0, #0xc mov r1, #0x20 - bl FUN_02006A34 + bl GfGfxLoader_LoadWholePalette mov r0, #8 str r0, [sp] add r0, r7, #0 diff --git a/arm9/modules/25/asm/module_25.s b/arm9/modules/25/asm/module_25.s index 481c98c2..5e70bbbe 100644 --- a/arm9/modules/25/asm/module_25.s +++ b/arm9/modules/25/asm/module_25.s @@ -440,7 +440,7 @@ MOD25_02254B34: ; 0x02254B34 mov r0, #0xc mov r1, #0x17 mov r3, #6 - bl FUN_0200687C + bl GfGfxLoader_LoadCharData mov r0, #0 str r0, [sp] str r0, [sp, #4] @@ -452,7 +452,7 @@ MOD25_02254B34: ; 0x02254B34 mov r0, #0xc mov r1, #0x1a mov r3, #6 - bl FUN_020068C8 + bl GfGfxLoader_LoadScrnData mov r0, #0 add r1, r0, #0 bl MOD20_02252D7C @@ -587,7 +587,7 @@ MOD25_02254C74: ; 0x02254C74 str r0, [sp, #8] mov r0, #0xc mov r1, #0x1d - bl FUN_02006A34 + bl GfGfxLoader_LoadWholePalette mov r0, #8 str r0, [sp] add r0, r7, #0 diff --git a/arm9/modules/27/asm/module_27.s b/arm9/modules/27/asm/module_27.s index 9fa91fb4..25e4a4b6 100644 --- a/arm9/modules/27/asm/module_27.s +++ b/arm9/modules/27/asm/module_27.s @@ -389,7 +389,7 @@ MOD27_02254AF0: ; 0x02254AF0 add r7, r6, #0 _02254B36: add r0, r4, #0 - bl FUN_0201901C + bl InitWindow add r0, r5, #0 add r0, #0x9c str r7, [r0] @@ -528,7 +528,7 @@ MOD27_02254C08: ; 0x02254C08 mov r0, #0xc mov r1, #0x6a mov r3, #6 - bl FUN_0200687C + bl GfGfxLoader_LoadCharData mov r3, #0 lsr r5, r0, #5 str r3, [sp] @@ -608,7 +608,7 @@ MOD27_02254CC8: ; 0x02254CC8 add r4, #0x3c _02254CE8: add r0, r4, #0 - bl FUN_0201901C + bl InitWindow ldrh r0, [r5, #2] add r1, r4, #0 mov r2, #6 @@ -834,7 +834,7 @@ MOD27_02254EAC: ; 0x02254EAC mov r1, #4 add r3, r2, #0 add r5, r0, #0 - bl FUN_020196F4 + bl FillWindowPixelRect cmp r4, #0 beq _02254EE0 lsl r0, r4, #0x10 @@ -846,7 +846,7 @@ MOD27_02254EAC: ; 0x02254EAC add r0, r5, #0 mov r1, #0xf add r3, r2, #0 - bl FUN_020196F4 + bl FillWindowPixelRect _02254EE0: add r0, r5, #0 bl FUN_02019548 @@ -898,7 +898,7 @@ MOD27_02254F18: ; 0x02254F18 str r0, [sp, #8] mov r0, #0xc mov r1, #0x6d - bl FUN_02006A34 + bl GfGfxLoader_LoadWholePalette mov r4, #0 add r0, sp, #0x18 strb r4, [r0, #0xa] @@ -1015,7 +1015,7 @@ _02254FFC: bl NARC_ReadFromMember ldr r0, [sp, #0x18] add r1, sp, #0x20 - bl FUN_020B0088 + bl NNS_G2dGetUnpackedCharacterData ldr r0, [sp, #0x20] mov r1, #2 ldr r0, [r0, #0x14] diff --git a/arm9/modules/28/asm/module_28.s b/arm9/modules/28/asm/module_28.s index 618309d1..04176ba5 100644 --- a/arm9/modules/28/asm/module_28.s +++ b/arm9/modules/28/asm/module_28.s @@ -559,7 +559,7 @@ MOD28_02254C18: ; 0x02254C18 mov r0, #0xc mov r1, #7 mov r3, #6 - bl FUN_0200687C + bl GfGfxLoader_LoadCharData mov r2, #0 str r2, [sp] mov r0, #0x20 @@ -623,7 +623,7 @@ MOD28_02254CB4: ; 0x02254CB4 mov r0, #0xc mov r1, #0x23 lsl r3, r0, #9 - bl FUN_02006A34 + bl GfGfxLoader_LoadWholePalette mov r0, #0x13 mov r1, #8 bl NARC_ctor @@ -670,7 +670,7 @@ _02254D24: bl NARC_AllocAndReadWholeMember add r1, sp, #0x2c str r0, [sp, #0x20] - bl FUN_020B0088 + bl NNS_G2dGetUnpackedCharacterData ldr r0, [sp, #0x2c] mov r1, #1 ldr r0, [r0, #0x14] @@ -744,7 +744,7 @@ _02254D24: bl MOD20_02253F9C b _02254DE0 _02254DDC: - bl ErrorHandling + bl GF_AssertFail _02254DE0: ldrh r0, [r4, #8] mov r1, #0x1c ; BASE_FLIP diff --git a/arm9/modules/29/asm/module_29.s b/arm9/modules/29/asm/module_29.s index 723e8449..9fb45a65 100644 --- a/arm9/modules/29/asm/module_29.s +++ b/arm9/modules/29/asm/module_29.s @@ -539,7 +539,7 @@ MOD29_02254C08: ; 0x02254C08 str r0, [sp, #8] mov r0, #0xc mov r1, #0x2a - bl FUN_02006A34 + bl GfGfxLoader_LoadWholePalette add r2, r6, #0 ldr r0, [r6, #0x30] ldr r1, _02254C7C ; =MOD29_022550C0 @@ -684,7 +684,7 @@ MOD29_02254D10: ; 0x02254D10 mov r0, #0xc mov r1, #0x27 mov r3, #6 - bl FUN_0200687C + bl GfGfxLoader_LoadCharData mov r0, #0 str r0, [sp] str r0, [sp, #4] @@ -696,7 +696,7 @@ MOD29_02254D10: ; 0x02254D10 mov r0, #0xc mov r1, #0x26 mov r3, #6 - bl FUN_020068C8 + bl GfGfxLoader_LoadScrnData mov r0, #0 add r1, r0, #0 bl MOD20_02252D7C diff --git a/arm9/modules/30/asm/module_30.s b/arm9/modules/30/asm/module_30.s index aa55cd5b..5daf123f 100644 --- a/arm9/modules/30/asm/module_30.s +++ b/arm9/modules/30/asm/module_30.s @@ -376,7 +376,7 @@ MOD30_02254AE0: ; 0x02254AE0 str r0, [sp, #8] mov r0, #0xc mov r1, #2 - bl FUN_02006A34 + bl GfGfxLoader_LoadWholePalette mov r0, #0 str r0, [sp] mov r2, #1 @@ -387,7 +387,7 @@ MOD30_02254AE0: ; 0x02254AE0 mov r0, #0xc mov r1, #0x2f lsl r3, r3, #8 - bl FUN_02006A34 + bl GfGfxLoader_LoadWholePalette mov r0, #8 str r0, [sp] add r0, r7, #0 @@ -548,7 +548,7 @@ MOD30_02254C18: ; 0x02254C18 mov r0, #0xc mov r1, #0x2c mov r3, #6 - bl FUN_0200687C + bl GfGfxLoader_LoadCharData mov r0, #0 str r0, [sp] str r0, [sp, #4] @@ -560,7 +560,7 @@ MOD30_02254C18: ; 0x02254C18 mov r0, #0xc mov r1, #0x2b mov r3, #6 - bl FUN_020068C8 + bl GfGfxLoader_LoadScrnData mov r0, #0 add r1, r0, #0 bl MOD20_02252D7C diff --git a/arm9/modules/31/asm/module_31.s b/arm9/modules/31/asm/module_31.s index 7dcd4e3a..5e45ce23 100644 --- a/arm9/modules/31/asm/module_31.s +++ b/arm9/modules/31/asm/module_31.s @@ -366,7 +366,7 @@ MOD31_02254AD4: ; 0x02254AD4 str r0, [sp, #8] mov r0, #0xc mov r1, #2 - bl FUN_02006A34 + bl GfGfxLoader_LoadWholePalette mov r0, #0 str r0, [sp] mov r2, #1 @@ -377,7 +377,7 @@ MOD31_02254AD4: ; 0x02254AD4 mov r0, #0xc mov r1, #0x34 lsl r3, r3, #8 - bl FUN_02006A34 + bl GfGfxLoader_LoadWholePalette mov r0, #8 str r0, [sp] add r0, r7, #0 @@ -538,7 +538,7 @@ MOD31_02254C0C: ; 0x02254C0C mov r0, #0xc mov r1, #0x31 mov r3, #6 - bl FUN_0200687C + bl GfGfxLoader_LoadCharData mov r0, #0 str r0, [sp] str r0, [sp, #4] @@ -550,7 +550,7 @@ MOD31_02254C0C: ; 0x02254C0C mov r0, #0xc mov r1, #0x30 mov r3, #6 - bl FUN_020068C8 + bl GfGfxLoader_LoadScrnData mov r0, #0 add r1, r0, #0 bl MOD20_02252D7C diff --git a/arm9/modules/32/asm/module_32.s b/arm9/modules/32/asm/module_32.s index 5b40a737..c928dd1a 100644 --- a/arm9/modules/32/asm/module_32.s +++ b/arm9/modules/32/asm/module_32.s @@ -349,7 +349,7 @@ MOD32_02254A9C: ; 0x02254A9C str r0, [sp, #8] mov r0, #0xc mov r1, #0x68 - bl FUN_02006A34 + bl GfGfxLoader_LoadWholePalette mov r0, #8 str r0, [sp] add r0, r5, #0 @@ -465,7 +465,7 @@ MOD32_02254B58: ; 0x02254B58 mov r0, #0xc mov r1, #0x65 mov r3, #6 - bl FUN_0200687C + bl GfGfxLoader_LoadCharData mov r0, #0 str r0, [sp] str r0, [sp, #4] @@ -477,7 +477,7 @@ MOD32_02254B58: ; 0x02254B58 mov r0, #0xc mov r1, #0x64 mov r3, #6 - bl FUN_020068C8 + bl GfGfxLoader_LoadScrnData mov r0, #0 add r1, r0, #0 bl MOD20_02252D7C diff --git a/arm9/modules/33/asm/module_33.s b/arm9/modules/33/asm/module_33.s index 6db0efdf..55ccf203 100644 --- a/arm9/modules/33/asm/module_33.s +++ b/arm9/modules/33/asm/module_33.s @@ -313,7 +313,7 @@ MOD33_02254A38: ; 0x02254A38 ldr r2, [r5, #4] mov r0, #0xc mov r3, #6 - bl FUN_0200687C + bl GfGfxLoader_LoadCharData mov r2, #0 str r2, [sp] mov r0, #0x20 @@ -333,7 +333,7 @@ MOD33_02254A38: ; 0x02254A38 mov r1, #9 mov r2, #4 mov r3, #0 - bl FUN_02006930 + bl GfGfxLoader_GXLoadPal ldr r0, [r5, #4] mov r1, #0xc mov r2, #6 diff --git a/arm9/modules/34/asm/module_34.s b/arm9/modules/34/asm/module_34.s index 84100418..ddc4f587 100644 --- a/arm9/modules/34/asm/module_34.s +++ b/arm9/modules/34/asm/module_34.s @@ -407,7 +407,7 @@ MOD34_02254AE8: ; 0x02254AE8 mov r0, #0xc mov r1, #0x3b mov r3, #6 - bl FUN_0200687C + bl GfGfxLoader_LoadCharData mov r0, #0 str r0, [sp] str r0, [sp, #4] @@ -419,7 +419,7 @@ MOD34_02254AE8: ; 0x02254AE8 mov r0, #0xc mov r1, #0x3a mov r3, #6 - bl FUN_020068C8 + bl GfGfxLoader_LoadScrnData mov r0, #0 add r1, r0, #0 bl MOD20_02252D7C diff --git a/arm9/modules/35/asm/module_35.s b/arm9/modules/35/asm/module_35.s index 45cab8d3..f73ad3ff 100644 --- a/arm9/modules/35/asm/module_35.s +++ b/arm9/modules/35/asm/module_35.s @@ -431,7 +431,7 @@ MOD35_02254B54: ; 0x02254B54 str r0, [sp, #8] mov r0, #0xc mov r1, #0x54 - bl FUN_02006A34 + bl GfGfxLoader_LoadWholePalette mov r1, #0x14 bl _u32_div_f ldr r1, [sp, #0xc] @@ -609,7 +609,7 @@ MOD35_02254C98: ; 0x02254C98 mov r0, #0xc mov r1, #0x51 mov r3, #6 - bl FUN_0200687C + bl GfGfxLoader_LoadCharData mov r0, #0 str r0, [sp] str r0, [sp, #4] @@ -621,7 +621,7 @@ MOD35_02254C98: ; 0x02254C98 mov r0, #0xc mov r1, #0x50 mov r3, #6 - bl FUN_020068C8 + bl GfGfxLoader_LoadScrnData mov r0, #0 add r1, r0, #0 bl MOD20_02252D7C diff --git a/arm9/modules/36/asm/module_36.s b/arm9/modules/36/asm/module_36.s index fcd3cbc9..0149e180 100644 --- a/arm9/modules/36/asm/module_36.s +++ b/arm9/modules/36/asm/module_36.s @@ -868,7 +868,7 @@ MOD36_02254E8C: ; 0x02254E8C str r0, [sp, #8] mov r0, #0xc mov r1, #0x59 - bl FUN_02006A34 + bl GfGfxLoader_LoadWholePalette mov r0, #8 str r0, [sp] add r0, r7, #0 @@ -984,7 +984,7 @@ MOD36_02254F5C: ; 0x02254F5C bl FUN_02016B90 cmp r0, #0 bne _02254F70 - bl ErrorHandling + bl GF_AssertFail _02254F70: add r0, r5, #0 bl MOD20_022538A0 @@ -1003,7 +1003,7 @@ _02254F70: bl FUN_02016B90 cmp r0, #0 bne _02254F9E - bl ErrorHandling + bl GF_AssertFail _02254F9E: mov r0, #0 str r0, [sp] @@ -1016,7 +1016,7 @@ _02254F9E: mov r0, #0xc mov r1, #0x56 mov r3, #6 - bl FUN_0200687C + bl GfGfxLoader_LoadCharData add r6, r0, #0 mov r0, #0 str r0, [sp] @@ -1029,7 +1029,7 @@ _02254F9E: mov r0, #0xc mov r1, #0x55 mov r3, #6 - bl FUN_020068C8 + bl GfGfxLoader_LoadScrnData mov r0, #0 add r1, r0, #0 bl MOD20_02252D7C @@ -1037,7 +1037,7 @@ _02254F9E: bl FUN_02016B90 cmp r0, #0 bne _02254FEA - bl ErrorHandling + bl GF_AssertFail _02254FEA: add r0, r4, #0 lsr r1, r6, #5 @@ -1064,7 +1064,7 @@ _02254FEA: bl FUN_02016B90 cmp r0, #0 bne _02255028 - bl ErrorHandling + bl GF_AssertFail _02255028: add sp, #0x14 pop {r3, r4, r5, r6, pc} @@ -1108,7 +1108,7 @@ MOD36_0225503C: ; 0x0225503C add r0, r4, #0 add r0, #0x48 mov r1, #4 - bl FUN_02019620 + bl FillWindowPixelBuffer _02255082: add r0, r4, #0 add r0, #0x48 @@ -1205,7 +1205,7 @@ MOD36_0225510C: ; 0x0225510C mov r1, #1 lsr r2, r2, #0x10 lsr r3, r3, #0x10 - bl FUN_020196F4 + bl FillWindowPixelRect ldr r1, [r4, #0x54] lsl r0, r5, #5 add r0, r1, r0 @@ -1298,7 +1298,7 @@ MOD36_022551E0: ; 0x022551E0 add r0, r4, #0 add r0, #0x48 mov r1, #4 - bl FUN_02019620 + bl FillWindowPixelBuffer add r4, #0x48 add r0, r4, #0 bl FUN_02019548 diff --git a/arm9/modules/37/asm/module_37.s b/arm9/modules/37/asm/module_37.s index 3c7f412c..c2f1439a 100644 --- a/arm9/modules/37/asm/module_37.s +++ b/arm9/modules/37/asm/module_37.s @@ -341,7 +341,7 @@ MOD37_02254AA0: ; 0x02254AA0 str r0, [sp, #8] mov r0, #0xc mov r1, #0x39 - bl FUN_02006A34 + bl GfGfxLoader_LoadWholePalette mov r0, #8 str r0, [sp] add r0, r4, #0 @@ -471,7 +471,7 @@ MOD37_02254B70: ; 0x02254B70 mov r0, #0xc mov r1, #0x36 mov r3, #6 - bl FUN_0200687C + bl GfGfxLoader_LoadCharData mov r0, #0 str r0, [sp] str r0, [sp, #4] @@ -483,7 +483,7 @@ MOD37_02254B70: ; 0x02254B70 mov r0, #0xc mov r1, #0x35 mov r3, #6 - bl FUN_020068C8 + bl GfGfxLoader_LoadScrnData mov r0, #0 add r1, r0, #0 bl MOD20_02252D7C diff --git a/arm9/modules/38/asm/module_38.s b/arm9/modules/38/asm/module_38.s index e1d888d4..ee5980ec 100644 --- a/arm9/modules/38/asm/module_38.s +++ b/arm9/modules/38/asm/module_38.s @@ -559,7 +559,7 @@ MOD38_02254C38: ; 0x02254C38 str r0, [sp, #8] mov r0, #0xc mov r1, #0x40 - bl FUN_02006A34 + bl GfGfxLoader_LoadWholePalette mov r0, #8 str r0, [sp] add r0, r6, #0 @@ -753,7 +753,7 @@ MOD38_02254D84: ; 0x02254D84 mov r0, #0xc mov r1, #0x3d mov r3, #6 - bl FUN_0200687C + bl GfGfxLoader_LoadCharData add r4, r0, #0 mov r0, #0 str r0, [sp] @@ -766,7 +766,7 @@ MOD38_02254D84: ; 0x02254D84 mov r0, #0xc mov r1, #0x3c mov r3, #6 - bl FUN_020068C8 + bl GfGfxLoader_LoadScrnData mov r0, #0 add r1, r0, #0 bl MOD20_02252D7C @@ -1046,7 +1046,7 @@ MOD38_0225500C: ; 0x0225500C add r0, r4, #0 mov r1, #4 add r6, r2, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer cmp r6, #0x12 bne _02255036 add r0, r5, #0 @@ -1106,7 +1106,7 @@ MOD38_02255084: ; 0x02255084 add r0, r4, #0 mov r1, #4 add r6, r2, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer add r0, r5, #0 add r2, r5, #0 add r0, #0xb8 diff --git a/arm9/modules/39/asm/module_39.s b/arm9/modules/39/asm/module_39.s index a850e16a..da3f83f4 100644 --- a/arm9/modules/39/asm/module_39.s +++ b/arm9/modules/39/asm/module_39.s @@ -586,7 +586,7 @@ MOD39_02254C6C: ; 0x02254C6C str r0, [sp, #8] mov r0, #0xc mov r1, #0x4a - bl FUN_02006A34 + bl GfGfxLoader_LoadWholePalette mov r1, #0x14 bl _u32_div_f ldr r1, [sp, #0xc] @@ -800,7 +800,7 @@ MOD39_02254DF4: ; 0x02254DF4 mov r0, #0xc mov r1, #0x47 mov r3, #6 - bl FUN_0200687C + bl GfGfxLoader_LoadCharData mov r0, #0 str r0, [sp] str r0, [sp, #4] @@ -812,7 +812,7 @@ MOD39_02254DF4: ; 0x02254DF4 mov r0, #0xc mov r1, #0x46 mov r3, #6 - bl FUN_020068C8 + bl GfGfxLoader_LoadScrnData mov r0, #0 add r1, r0, #0 bl MOD20_02252D7C diff --git a/arm9/modules/40/asm/module_40.s b/arm9/modules/40/asm/module_40.s index 713e9ec7..13c9a94f 100644 --- a/arm9/modules/40/asm/module_40.s +++ b/arm9/modules/40/asm/module_40.s @@ -759,7 +759,7 @@ MOD40_02254DBC: ; 0x02254DBC str r0, [sp, #8] mov r0, #0xc mov r1, #2 - bl FUN_02006A34 + bl GfGfxLoader_LoadWholePalette mov r0, #0 str r0, [sp] mov r2, #1 @@ -770,7 +770,7 @@ MOD40_02254DBC: ; 0x02254DBC mov r0, #0xc mov r1, #0x4f lsl r3, r3, #8 - bl FUN_02006A34 + bl GfGfxLoader_LoadWholePalette mov r0, #8 str r0, [sp] add r0, r5, #0 @@ -1050,7 +1050,7 @@ MOD40_02254FE8: ; 0x02254FE8 mov r0, #0xc mov r1, #0x4c mov r3, #6 - bl FUN_0200687C + bl GfGfxLoader_LoadCharData mov r0, #0 str r0, [sp] str r0, [sp, #4] @@ -1062,7 +1062,7 @@ MOD40_02254FE8: ; 0x02254FE8 mov r0, #0xc mov r1, #0x4b mov r3, #6 - bl FUN_020068C8 + bl GfGfxLoader_LoadScrnData mov r0, #0 add r1, r0, #0 bl MOD20_02252D7C diff --git a/arm9/modules/41/asm/module_41.s b/arm9/modules/41/asm/module_41.s index 637c100f..4d1afb06 100644 --- a/arm9/modules/41/asm/module_41.s +++ b/arm9/modules/41/asm/module_41.s @@ -1382,7 +1382,7 @@ MOD41_022552A0: ; 0x022552A0 str r0, [sp, #8] mov r0, #0xc mov r1, #2 - bl FUN_02006A34 + bl GfGfxLoader_LoadWholePalette mov r0, #0 str r0, [sp] mov r2, #1 @@ -1393,7 +1393,7 @@ MOD41_022552A0: ; 0x022552A0 mov r0, #0xc mov r1, #0x5e lsl r3, r3, #8 - bl FUN_02006A34 + bl GfGfxLoader_LoadWholePalette mov r0, #8 str r0, [sp] add r0, r7, #0 @@ -1573,7 +1573,7 @@ MOD41_022553F4: ; 0x022553F4 mov r0, #0xc mov r1, #0x5b mov r3, #6 - bl FUN_0200687C + bl GfGfxLoader_LoadCharData mov r0, #0 str r0, [sp] str r0, [sp, #4] @@ -1585,7 +1585,7 @@ MOD41_022553F4: ; 0x022553F4 mov r0, #0xc mov r1, #0x5a mov r3, #6 - bl FUN_020068C8 + bl GfGfxLoader_LoadScrnData mov r0, #0 add r1, r0, #0 bl MOD20_02252D7C diff --git a/arm9/modules/42/asm/module_42.s b/arm9/modules/42/asm/module_42.s index 5bbfa2ba..03136570 100644 --- a/arm9/modules/42/asm/module_42.s +++ b/arm9/modules/42/asm/module_42.s @@ -659,7 +659,7 @@ MOD42_02254D04: ; 0x02254D04 str r0, [sp, #8] mov r0, #0xc mov r1, #0x78 - bl FUN_02006A34 + bl GfGfxLoader_LoadWholePalette mov r0, #8 str r0, [sp] add r0, r5, #0 @@ -965,7 +965,7 @@ MOD42_02254F3C: ; 0x02254F3C mov r0, #0xc mov r1, #0x75 mov r3, #6 - bl FUN_0200687C + bl GfGfxLoader_LoadCharData mov r0, #0 str r0, [sp] str r0, [sp, #4] @@ -977,7 +977,7 @@ MOD42_02254F3C: ; 0x02254F3C mov r0, #0xc mov r1, #0x73 mov r3, #6 - bl FUN_020068C8 + bl GfGfxLoader_LoadScrnData mov r0, #0 add r1, r0, #0 bl MOD20_02252D7C diff --git a/arm9/modules/43/asm/module_43.s b/arm9/modules/43/asm/module_43.s index 89b23259..ce3da4bb 100644 --- a/arm9/modules/43/asm/module_43.s +++ b/arm9/modules/43/asm/module_43.s @@ -573,7 +573,7 @@ MOD43_02254C28: ; 0x02254C28 mov r0, #0xc mov r1, #0x75 mov r3, #6 - bl FUN_0200687C + bl GfGfxLoader_LoadCharData add r4, r0, #0 mov r0, #0 str r0, [sp] @@ -586,7 +586,7 @@ MOD43_02254C28: ; 0x02254C28 mov r0, #0xc mov r1, #0x74 mov r3, #6 - bl FUN_020068C8 + bl GfGfxLoader_LoadScrnData mov r0, #0 add r1, r0, #0 bl MOD20_02252D7C @@ -654,7 +654,7 @@ MOD43_02254CD0: ; 0x02254CD0 bl FUN_02019064 add r0, sp, #0x14 mov r1, #4 - bl FUN_02019620 + bl FillWindowPixelBuffer mov r1, #0 str r1, [sp] mov r0, #0xff @@ -843,7 +843,7 @@ MOD43_02254E78: ; 0x02254E78 str r0, [sp, #8] mov r0, #0xc mov r1, #0x78 - bl FUN_02006A34 + bl GfGfxLoader_LoadWholePalette mov r0, #8 str r0, [sp] mov r0, #0x4e diff --git a/arm9/modules/44/asm/module_44.s b/arm9/modules/44/asm/module_44.s index bf007af4..19726565 100644 --- a/arm9/modules/44/asm/module_44.s +++ b/arm9/modules/44/asm/module_44.s @@ -334,7 +334,7 @@ MOD44_02254A90: ; 0x02254A90 str r0, [sp, #8] mov r0, #0xc mov r1, #0x45 - bl FUN_02006A34 + bl GfGfxLoader_LoadWholePalette mov r0, #8 str r0, [sp] add r0, r5, #0 @@ -468,7 +468,7 @@ MOD44_02254B64: ; 0x02254B64 mov r0, #0xc mov r1, #0x42 mov r3, #6 - bl FUN_0200687C + bl GfGfxLoader_LoadCharData mov r0, #0 str r0, [sp] str r0, [sp, #4] @@ -480,7 +480,7 @@ MOD44_02254B64: ; 0x02254B64 mov r0, #0xc mov r1, #0x41 mov r3, #6 - bl FUN_020068C8 + bl GfGfxLoader_LoadScrnData mov r0, #0 add r1, r0, #0 bl MOD20_02252D7C diff --git a/arm9/modules/45/asm/module_45.s b/arm9/modules/45/asm/module_45.s index d8d9bf36..95cf3fbc 100644 --- a/arm9/modules/45/asm/module_45.s +++ b/arm9/modules/45/asm/module_45.s @@ -505,7 +505,7 @@ MOD45_02254BE0: ; 0x02254BE0 str r0, [sp, #8] mov r0, #0xc mov r1, #0x72 - bl FUN_02006A34 + bl GfGfxLoader_LoadWholePalette mov r0, #8 str r0, [sp] add r0, r5, #0 @@ -660,7 +660,7 @@ MOD45_02254CCC: ; 0x02254CCC mov r0, #0xc mov r1, #0x6f mov r3, #7 - bl FUN_0200687C + bl GfGfxLoader_LoadCharData mov r0, #0 add r1, r0, #0 bl MOD20_02252D7C @@ -766,7 +766,7 @@ MOD45_02254DDC: ; 0x02254DDC mov r0, #0xc mov r1, #0x6e mov r3, #7 - bl FUN_020068C8 + bl GfGfxLoader_LoadScrnData ldr r0, [r6, #4] mov r4, #0 cmp r0, #0 diff --git a/arm9/modules/46/asm/module_46.s b/arm9/modules/46/asm/module_46.s index 9e4c3dc5..66418468 100644 --- a/arm9/modules/46/asm/module_46.s +++ b/arm9/modules/46/asm/module_46.s @@ -313,7 +313,7 @@ MOD46_02254A38: ; 0x02254A38 ldr r2, [r5, #4] mov r0, #0xc mov r3, #6 - bl FUN_0200687C + bl GfGfxLoader_LoadCharData mov r2, #0 str r2, [sp] mov r0, #0x20 @@ -333,7 +333,7 @@ MOD46_02254A38: ; 0x02254A38 mov r1, #9 mov r2, #4 mov r3, #0 - bl FUN_02006930 + bl GfGfxLoader_GXLoadPal ldr r0, [r5, #4] mov r1, #0x1a mov r2, #6 diff --git a/arm9/modules/47/asm/module_47.s b/arm9/modules/47/asm/module_47.s index abb1ea34..3cd1bb32 100644 --- a/arm9/modules/47/asm/module_47.s +++ b/arm9/modules/47/asm/module_47.s @@ -749,7 +749,7 @@ MOD47_02254D8C: ; 0x02254D8C str r0, [sp, #8] mov r0, #0xc mov r1, #0x63 - bl FUN_02006A34 + bl GfGfxLoader_LoadWholePalette mov r0, #8 str r0, [sp] add r0, r6, #0 @@ -889,7 +889,7 @@ MOD47_02254E74: ; 0x02254E74 mov r0, #0xc mov r1, #0x60 mov r3, #6 - bl FUN_0200687C + bl GfGfxLoader_LoadCharData add r4, r0, #0 mov r0, #0 str r0, [sp] @@ -902,7 +902,7 @@ MOD47_02254E74: ; 0x02254E74 mov r0, #0xc mov r1, #0x5f mov r3, #6 - bl FUN_020068C8 + bl GfGfxLoader_LoadScrnData mov r0, #0 add r1, r0, #0 bl MOD20_02252D7C @@ -1162,7 +1162,7 @@ MOD47_022550FC: ; 0x022550FC add r4, r0, #0 add r0, #0x20 mov r1, #4 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, [r4, #0x58] ldr r2, [r4, #0x5c] mov r1, #0 @@ -1225,7 +1225,7 @@ MOD47_02255184: ; 0x02255184 add r4, r0, #0 add r0, #0x20 mov r1, #4 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, [r4, #0x58] ldr r2, [r4, #0x5c] mov r1, #1 @@ -1265,7 +1265,7 @@ MOD47_022551D8: ; 0x022551D8 add r4, r0, #0 add r0, #0x20 mov r1, #4 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, [r4, #0x58] ldr r2, [r4, #0x5c] mov r1, #2 @@ -1322,7 +1322,7 @@ MOD47_02255250: ; 0x02255250 add r4, r0, #0 add r0, #0x20 mov r1, #4 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, [r4, #0x58] ldr r2, [r4, #0x5c] mov r1, #2 @@ -1386,7 +1386,7 @@ MOD47_022552D8: ; 0x022552D8 add r7, r1, #0 add r0, #0x20 mov r1, #4 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, [r5, #0x58] ldr r2, [r5, #0x5c] mov r1, #5 diff --git a/arm9/modules/48/asm/module_48.s b/arm9/modules/48/asm/module_48.s index ed66d753..8dfd4e0a 100644 --- a/arm9/modules/48/asm/module_48.s +++ b/arm9/modules/48/asm/module_48.s @@ -438,7 +438,7 @@ MOD48_02254B30: ; 0x02254B30 mov r0, #0xc mov r1, #0x7a mov r3, #6 - bl FUN_0200687C + bl GfGfxLoader_LoadCharData mov r0, #0 str r0, [sp] str r0, [sp, #4] @@ -450,7 +450,7 @@ MOD48_02254B30: ; 0x02254B30 mov r0, #0xc mov r1, #0x79 mov r3, #6 - bl FUN_020068C8 + bl GfGfxLoader_LoadScrnData mov r0, #0 add r1, r0, #0 bl MOD20_02252D7C @@ -679,7 +679,7 @@ MOD48_02254D2C: ; 0x02254D2C str r0, [sp, #8] mov r0, #0xc mov r1, #0x7d - bl FUN_02006A34 + bl GfGfxLoader_LoadWholePalette add r1, r4, #0 lsr r0, r0, #5 add r1, #0xac diff --git a/arm9/modules/49/asm/module_49.s b/arm9/modules/49/asm/module_49.s index bce289da..1de7ea96 100644 --- a/arm9/modules/49/asm/module_49.s +++ b/arm9/modules/49/asm/module_49.s @@ -421,7 +421,7 @@ MOD49_02254AD4: ; 0x02254AD4 bl FUN_02019064 add r0, sp, #0x1c mov r1, #4 - bl FUN_02019620 + bl FillWindowPixelBuffer add r0, sp, #0x1c bl FUN_02019270 ldr r1, _02254BD4 ; =0x00000197 diff --git a/arm9/modules/50/asm/module_50.s b/arm9/modules/50/asm/module_50.s index f91ae977..5d80d9b6 100644 --- a/arm9/modules/50/asm/module_50.s +++ b/arm9/modules/50/asm/module_50.s @@ -322,7 +322,7 @@ MOD50_02254A48: ; 0x02254A48 ldr r2, [r5, #4] mov r0, #0xc mov r3, #6 - bl FUN_0200687C + bl GfGfxLoader_LoadCharData mov r2, #0 str r2, [sp] mov r0, #0x20 @@ -342,7 +342,7 @@ MOD50_02254A48: ; 0x02254A48 mov r1, #9 mov r2, #4 mov r3, #0 - bl FUN_02006930 + bl GfGfxLoader_GXLoadPal ldr r1, [r5] ldr r0, [r5, #4] ldr r1, [r1] diff --git a/arm9/modules/51/asm/module_51.s b/arm9/modules/51/asm/module_51.s index 60bdd016..4642f8c1 100644 --- a/arm9/modules/51/asm/module_51.s +++ b/arm9/modules/51/asm/module_51.s @@ -120,7 +120,7 @@ MOD51_022548F0: ; 0x022548F0 mov r1, #3 mov r2, #1 add r3, #0x24 - bl FUN_02006BDC + bl GfGfxLoader_GetScrnData str r0, [r4, #0x20] add sp, #4 pop {r3, r4, pc} @@ -165,7 +165,7 @@ _02254960: bl FUN_02019064 add r0, r5, #0 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer add r0, r5, #0 bl CopyWindowToVram ldr r0, [sp, #0x18] @@ -193,7 +193,7 @@ _02254960: add r0, r5, #0 add r0, #0x10 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer add r0, r5, #0 add r0, #0x10 bl CopyWindowToVram @@ -221,7 +221,7 @@ _02254960: add r0, r5, #0 add r0, #0x20 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer add r0, r5, #0 add r0, #0x20 bl CopyWindowToVram @@ -477,7 +477,7 @@ MOD51_02254B54: ; 0x02254B54 mov r0, #0x4a add r3, r1, #0 str r2, [sp, #4] - bl FUN_02006930 + bl GfGfxLoader_GXLoadPal mov r0, #0 str r0, [sp] mov r0, #5 @@ -491,7 +491,7 @@ MOD51_02254B54: ; 0x02254B54 mov r1, #2 add r2, r4, #0 mov r3, #7 - bl FUN_0200687C + bl GfGfxLoader_LoadCharData mov r0, #0 str r0, [sp] mov r0, #6 @@ -504,7 +504,7 @@ MOD51_02254B54: ; 0x02254B54 add r2, r4, #0 mov r3, #7 str r1, [sp, #0xc] - bl FUN_020068C8 + bl GfGfxLoader_LoadScrnData mov r0, #4 mov r1, #0 bl FUN_02054590 @@ -792,20 +792,20 @@ MOD51_02254E48: ; 0x02254E48 add r7, r5, r0 add r0, r7, r4 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer mov r0, #0x76 lsl r0, r0, #2 add r0, r5, r0 str r0, [sp, #0x1c] add r0, r0, r4 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer mov r0, #0x7a lsl r0, r0, #2 add r5, r5, r0 add r0, r5, r4 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer mov r0, #2 str r0, [sp] mov r0, #0xff diff --git a/arm9/modules/52/include/module_52.h b/arm9/modules/52/include/module_52.h index 4c47a82d..d997f1a6 100644 --- a/arm9/modules/52/include/module_52.h +++ b/arm9/modules/52/include/module_52.h @@ -13,30 +13,24 @@ #include "unk_02024E64.h" #include "unk_020286F8.h" -const u8 MOD52_021D76F8[]; +extern const struct Unk21DBE18 MOD52_021D76E8; +extern const struct Unk21DBE18 MOD52_021D76D8; +extern const struct Unk21DBE18 MOD52_021D76C8; -THUMB_FUNC int MOD52_021D74E0(); -THUMB_FUNC int MOD52_021D74F8(struct UnkStruct_02006234 *param0); -THUMB_FUNC int MOD52_021D750C(); +BOOL MOD52_021D74E0(struct UnkStruct_02006234 *arg1, u32 *arg2); +BOOL MOD52_021D74F8(struct UnkStruct_02006234 *param0, u32 *unused); +BOOL MOD52_021D750C(struct UnkStruct_02006234 *arg1, u32 *arg2); -THUMB_FUNC int MOD52_021D7528(); -THUMB_FUNC int MOD52_021D7540(struct UnkStruct_02006234 *param0); -THUMB_FUNC int MOD52_021D7560(); +BOOL MOD52_021D7528(struct UnkStruct_02006234 *arg1, u32 *arg2); +BOOL MOD52_021D7540(struct UnkStruct_02006234 *param0, u32 *unused); +BOOL MOD52_021D7560(struct UnkStruct_02006234 *arg1, u32 *arg2); -THUMB_FUNC int MOD52_021D757C(); -THUMB_FUNC int MOD52_021D7594(struct UnkStruct_02006234 *param0); -THUMB_FUNC int MOD52_021D75E8(); +BOOL MOD52_021D757C(struct UnkStruct_02006234 *arg1, u32 *arg2); +BOOL MOD52_021D7594(struct UnkStruct_02006234 *param0, u32 *unused); +BOOL MOD52_021D75E8(struct UnkStruct_02006234 *arg1, u32 *arg2); -THUMB_FUNC void MOD52_021D7604(u32 heap_id, struct SaveBlock2 *sav2, BOOL set_trainerid); -THUMB_FUNC void MOD52_021D7688(u32 param0, struct SaveBlock2 *sav2); -THUMB_FUNC void MOD52_021D769C(u32 param0, struct SaveBlock2 *sav2); - -struct MOD52_Struct -{ - int (*func1)(void); - int (*func2)(struct UnkStruct_02006234 *param0); - int (*func3)(void); - u32 terminator; -}; +void MOD52_021D7604(u32 heap_id, struct SaveBlock2 *sav2, BOOL set_trainerid); +void MOD52_021D7688(u32 param0, struct SaveBlock2 *sav2); +void MOD52_021D769C(u32 param0, struct SaveBlock2 *sav2); #endif // POKEDIAMOND_MODULE_52_H
\ No newline at end of file diff --git a/arm9/modules/52/src/module_52.c b/arm9/modules/52/src/module_52.c index 1f74c77f..41f2706a 100644 --- a/arm9/modules/52/src/module_52.c +++ b/arm9/modules/52/src/module_52.c @@ -1,28 +1,173 @@ #include "module_52.h" #include "heap.h" #include "unk_0205FA2C.h" +#include "unk_02015E30.h" extern struct Unk21DBE18 UNK_020FD144; extern struct Unk21DBE18 UNK_020F2B7C; extern struct Unk21DBE18 UNK_020F2B8C; -extern void FUN_02015E3C(struct IGT *igt); extern int FUN_02053678(u32 random, u32 gender, u32 param2); -extern void FUN_020250C4(void *sav_ptr, u32 heap_id, const u8 param2[], u32 param3); +extern void FUN_020250C4(void *sav_ptr, u32 heap_id, const u16 param2[], u32 param3); extern void FUN_020377E0(struct SaveBlock2 *sav2); extern void FUN_0205ECD4(struct ScriptState *script_state); -THUMB_FUNC int MOD52_021D74E0() +const struct Unk21DBE18 MOD52_021D76E8 = { + MOD52_021D74E0, + MOD52_021D74F8, + MOD52_021D750C, + 0xFFFFFFFF, +}; + +const struct Unk21DBE18 MOD52_021D76D8 = { + MOD52_021D7528, + MOD52_021D7540, + MOD52_021D7560, + 0xFFFFFFFF, +}; + +const struct Unk21DBE18 MOD52_021D76C8 = { + MOD52_021D757C, + MOD52_021D7594, + MOD52_021D75E8, + 0xFFFFFFFF, +}; + +const u16 MOD52_021D76F8[] = { + ITEM_ORAN_BERRY, 1, + ITEM_CHERI_BERRY, 1, + ITEM_CHESTO_BERRY, 1, + ITEM_PECHA_BERRY, 1, + ITEM_ORAN_BERRY, 1, + ITEM_PECHA_BERRY, 1, + ITEM_RAZZ_BERRY, 2, + ITEM_BLUK_BERRY, 2, + ITEM_CHERI_BERRY, 1, + ITEM_ORAN_BERRY, 2, + ITEM_SITRUS_BERRY, 1, + ITEM_WEPEAR_BERRY, 2, + ITEM_WEPEAR_BERRY, 2, + ITEM_KELPSY_BERRY, 1, + ITEM_CHERI_BERRY, 1, + ITEM_PECHA_BERRY, 1, + ITEM_ORAN_BERRY, 1, + ITEM_ORAN_BERRY, 1, + ITEM_RAWST_BERRY, 1, + ITEM_RAWST_BERRY, 1, + ITEM_RAZZ_BERRY, 1, + ITEM_RAZZ_BERRY, 1, + ITEM_CHERI_BERRY, 1, + ITEM_ORAN_BERRY, 1, + ITEM_ORAN_BERRY, 1, + ITEM_BLUK_BERRY, 1, + ITEM_NANAB_BERRY, 2, + ITEM_RAZZ_BERRY, 2, + ITEM_BLUK_BERRY, 2, + ITEM_PINAP_BERRY, 2, + ITEM_LEPPA_BERRY, 1, + ITEM_CHESTO_BERRY, 1, + ITEM_RAZZ_BERRY, 1, + ITEM_RAZZ_BERRY, 1, + ITEM_PERSIM_BERRY, 1, + ITEM_NANAB_BERRY, 1, + ITEM_NANAB_BERRY, 1, + ITEM_FIGY_BERRY, 1, + ITEM_ASPEAR_BERRY, 1, + ITEM_ASPEAR_BERRY, 1, + ITEM_RAZZ_BERRY, 1, + ITEM_PINAP_BERRY, 1, + ITEM_SITRUS_BERRY, 1, + ITEM_CHESTO_BERRY, 1, + ITEM_WIKI_BERRY, 1, + ITEM_AGUAV_BERRY, 1, + ITEM_PECHA_BERRY, 1, + ITEM_ASPEAR_BERRY, 1, + ITEM_IAPAPA_BERRY, 1, + ITEM_GREPA_BERRY, 1, + ITEM_SITRUS_BERRY, 1, + ITEM_ASPEAR_BERRY, 1, + ITEM_TAMATO_BERRY, 1, + ITEM_LUM_BERRY, 1, + ITEM_PECHA_BERRY, 1, + ITEM_PINAP_BERRY, 1, + ITEM_PINAP_BERRY, 1, + ITEM_PINAP_BERRY, 1, + ITEM_PERSIM_BERRY, 1, + ITEM_PERSIM_BERRY, 1, + ITEM_NANAB_BERRY, 1, + ITEM_NANAB_BERRY, 1, + ITEM_AGUAV_BERRY, 1, + ITEM_IAPAPA_BERRY, 1, + ITEM_RAWST_BERRY, 1, + ITEM_RAWST_BERRY, 1, + ITEM_CHERI_BERRY, 1, + ITEM_SITRUS_BERRY, 1, + ITEM_CHESTO_BERRY, 1, + ITEM_POMEG_BERRY, 1, + ITEM_PECHA_BERRY, 2, + ITEM_BLUK_BERRY, 2, + ITEM_WIKI_BERRY, 1, + ITEM_MAGO_BERRY, 1, + ITEM_RAWST_BERRY, 1, + ITEM_PERSIM_BERRY, 1, + ITEM_FIGY_BERRY, 1, + ITEM_PINAP_BERRY, 2, + ITEM_LEPPA_BERRY, 1, + ITEM_PECHA_BERRY, 1, + ITEM_MAGO_BERRY, 1, + ITEM_HONDEW_BERRY, 1, + ITEM_WIKI_BERRY, 2, + ITEM_MAGO_BERRY, 2, + ITEM_AGUAV_BERRY, 2, + ITEM_QUALOT_BERRY, 1, + ITEM_SITRUS_BERRY, 2, + ITEM_BLUK_BERRY, 3, + ITEM_NANAB_BERRY, 3, + ITEM_WEPEAR_BERRY, 3, + ITEM_POMEG_BERRY, 1, + ITEM_POMEG_BERRY, 1, + ITEM_HONDEW_BERRY, 2, + ITEM_HONDEW_BERRY, 2, + ITEM_KELPSY_BERRY, 1, + ITEM_KELPSY_BERRY, 1, + ITEM_TAMATO_BERRY, 1, + ITEM_TAMATO_BERRY, 1, + ITEM_QUALOT_BERRY, 1, + ITEM_QUALOT_BERRY, 1, + ITEM_POMEG_BERRY, 1, + ITEM_POMEG_BERRY, 1, + ITEM_HONDEW_BERRY, 1, + ITEM_HONDEW_BERRY, 1, + ITEM_TAMATO_BERRY, 1, + ITEM_TAMATO_BERRY, 1, + ITEM_GREPA_BERRY, 1, + ITEM_GREPA_BERRY, 1, + ITEM_QUALOT_BERRY, 1, + ITEM_QUALOT_BERRY, 1, + ITEM_LUM_BERRY, 1, + ITEM_LEPPA_BERRY, 1, + ITEM_QUALOT_BERRY, 2, + ITEM_GREPA_BERRY, 2, + ITEM_KELPSY_BERRY, 2, + ITEM_KELPSY_BERRY, 2, + ITEM_GREPA_BERRY, 1, + ITEM_GREPA_BERRY, 1, +}; + +THUMB_FUNC BOOL MOD52_021D74E0(struct UnkStruct_02006234 *arg1, u32 *arg2) { +#pragma unused(arg1) +#pragma unused(arg2) FUN_0201681C(3, 0x4d, 2 << 16); InitializeMainRNG(); return 1; } -THUMB_FUNC int MOD52_021D74F8(struct UnkStruct_02006234 *param0) +THUMB_FUNC BOOL MOD52_021D74F8(struct UnkStruct_02006234 *param0, u32 *unused) { +#pragma unused(unused) struct SaveBlock2 *sav2 = (struct SaveBlock2 *)OverlayManager_GetField18(param0)[2]; // weird MOD52_021D769C(0x4d, sav2); @@ -30,24 +175,29 @@ THUMB_FUNC int MOD52_021D74F8(struct UnkStruct_02006234 *param0) return 1; } -THUMB_FUNC int MOD52_021D750C() +THUMB_FUNC BOOL MOD52_021D750C(struct UnkStruct_02006234 *arg1, u32 *arg2) { +#pragma unused(arg1) +#pragma unused(arg2) FUN_020168D0(0x4d); RegisterMainOverlay(0XFFFFFFFF, &UNK_020FD144); return 1; } -THUMB_FUNC int MOD52_021D7528() +THUMB_FUNC BOOL MOD52_021D7528(struct UnkStruct_02006234 *arg1, u32 *arg2) { +#pragma unused(arg1) +#pragma unused(arg2) FUN_0201681C(3, 0x4d, 2 << 16); InitializeMainRNG(); return 1; } -THUMB_FUNC int MOD52_021D7540(struct UnkStruct_02006234 *param0) +THUMB_FUNC BOOL MOD52_021D7540(struct UnkStruct_02006234 *param0, u32 *unused) { +#pragma unused(unused) struct SaveBlock2 *sav2 = (struct SaveBlock2 *)OverlayManager_GetField18(param0)[2]; // weird MOD52_021D7604(0x4d, sav2, 1); @@ -57,24 +207,29 @@ THUMB_FUNC int MOD52_021D7540(struct UnkStruct_02006234 *param0) return 1; } -THUMB_FUNC int MOD52_021D7560() +THUMB_FUNC BOOL MOD52_021D7560(struct UnkStruct_02006234 *arg1, u32 *arg2) { +#pragma unused(arg1) +#pragma unused(arg2) FUN_020168D0(0x4d); RegisterMainOverlay(0xFFFFFFFF, &UNK_020F2B7C); return 1; } -THUMB_FUNC int MOD52_021D757C() +THUMB_FUNC BOOL MOD52_021D757C(struct UnkStruct_02006234 *arg1, u32 *arg2) { +#pragma unused(arg1) +#pragma unused(arg2) FUN_0201681C(3, 0x4d, 2 << 16); InitializeMainRNG(); return 1; } -THUMB_FUNC int MOD52_021D7594(struct UnkStruct_02006234 *param0) +THUMB_FUNC BOOL MOD52_021D7594(struct UnkStruct_02006234 *param0, u32 *unused) { +#pragma unused(unused) struct SaveBlock2 *sav2 = (struct SaveBlock2 *)OverlayManager_GetField18(param0)[2]; // weird struct SavSysInfo *sav2_info = Sav2_SysInfo_get(sav2); @@ -93,8 +248,10 @@ THUMB_FUNC int MOD52_021D7594(struct UnkStruct_02006234 *param0) return 1; } -THUMB_FUNC int MOD52_021D75E8() +THUMB_FUNC BOOL MOD52_021D75E8(struct UnkStruct_02006234 *arg1, u32 *arg2) { +#pragma unused(arg1) +#pragma unused(arg2) FUN_020168D0(0x4d); RegisterMainOverlay(0XFFFFFFFF, &UNK_020F2B8C); @@ -124,7 +281,7 @@ THUMB_FUNC void MOD52_021D7604(u32 heap_id, struct SaveBlock2 *sav2, BOOL set_tr PlayerProfile_SetAvatar(player_data, (u8)avatar); - FUN_020250C4(FUN_02024ECC(sav2), heap_id, MOD52_021D76F8, 0x76); + FUN_020250C4(FUN_02024ECC(sav2), heap_id, MOD52_021D76F8, NELEMS(MOD52_021D76F8) / 2); } THUMB_FUNC void MOD52_021D7688(u32 unused, struct SaveBlock2 *sav2) @@ -149,499 +306,3 @@ THUMB_FUNC void MOD52_021D769C(u32 unused, struct SaveBlock2 *sav2) PlayerProfile_SetMoney(player_data, 3000); FUN_0205ECD4(SavArray_Flags_get(sav2)); } - -const struct MOD52_Struct MOD52_021D76C8 = { - MOD52_021D757C, - MOD52_021D7594, - MOD52_021D75E8, - 0xFFFFFFFF, -}; - -const struct MOD52_Struct MOD52_021D76D8 = { - MOD52_021D7528, - MOD52_021D7540, - MOD52_021D7560, - 0xFFFFFFFF, -}; - -const struct MOD52_Struct MOD52_021D76E8 = { - MOD52_021D74E0, - MOD52_021D74F8, - MOD52_021D750C, - 0xFFFFFFFF, -}; - -const u8 MOD52_021D76F8[] = { - 0x9B, - 0x00, - 0x01, - 0x00, - 0x95, - 0x00, - 0x01, - 0x00, - 0x96, - 0x00, - 0x01, - 0x00, - 0x97, - 0x00, - 0x01, - 0x00, - 0x9B, - 0x00, - 0x01, - 0x00, - 0x97, - 0x00, - 0x01, - 0x00, - 0xA4, - 0x00, - 0x02, - 0x00, - 0xA5, - 0x00, - 0x02, - 0x00, - 0x95, - 0x00, - 0x01, - 0x00, - 0x9B, - 0x00, - 0x02, - 0x00, - 0x9E, - 0x00, - 0x01, - 0x00, - 0xA7, - 0x00, - 0x02, - 0x00, - 0xA7, - 0x00, - 0x02, - 0x00, - 0xAA, - 0x00, - 0x01, - 0x00, - 0x95, - 0x00, - 0x01, - 0x00, - 0x97, - 0x00, - 0x01, - 0x00, - 0x9B, - 0x00, - 0x01, - 0x00, - 0x9B, - 0x00, - 0x01, - 0x00, - 0x98, - 0x00, - 0x01, - 0x00, - 0x98, - 0x00, - 0x01, - 0x00, - 0xA4, - 0x00, - 0x01, - 0x00, - 0xA4, - 0x00, - 0x01, - 0x00, - 0x95, - 0x00, - 0x01, - 0x00, - 0x9B, - 0x00, - 0x01, - 0x00, - 0x9B, - 0x00, - 0x01, - 0x00, - 0xA5, - 0x00, - 0x01, - 0x00, - 0xA6, - 0x00, - 0x02, - 0x00, - 0xA4, - 0x00, - 0x02, - 0x00, - 0xA5, - 0x00, - 0x02, - 0x00, - 0xA8, - 0x00, - 0x02, - 0x00, - 0x9A, - 0x00, - 0x01, - 0x00, - 0x96, - 0x00, - 0x01, - 0x00, - 0xA4, - 0x00, - 0x01, - 0x00, - 0xA4, - 0x00, - 0x01, - 0x00, - 0x9C, - 0x00, - 0x01, - 0x00, - 0xA6, - 0x00, - 0x01, - 0x00, - 0xA6, - 0x00, - 0x01, - 0x00, - 0x9F, - 0x00, - 0x01, - 0x00, - 0x99, - 0x00, - 0x01, - 0x00, - 0x99, - 0x00, - 0x01, - 0x00, - 0xA4, - 0x00, - 0x01, - 0x00, - 0xA8, - 0x00, - 0x01, - 0x00, - 0x9E, - 0x00, - 0x01, - 0x00, - 0x96, - 0x00, - 0x01, - 0x00, - 0xA0, - 0x00, - 0x01, - 0x00, - 0xA2, - 0x00, - 0x01, - 0x00, - 0x97, - 0x00, - 0x01, - 0x00, - 0x99, - 0x00, - 0x01, - 0x00, - 0xA3, - 0x00, - 0x01, - 0x00, - 0xAD, - 0x00, - 0x01, - 0x00, - 0x9E, - 0x00, - 0x01, - 0x00, - 0x99, - 0x00, - 0x01, - 0x00, - 0xAE, - 0x00, - 0x01, - 0x00, - 0x9D, - 0x00, - 0x01, - 0x00, - 0x97, - 0x00, - 0x01, - 0x00, - 0xA8, - 0x00, - 0x01, - 0x00, - 0xA8, - 0x00, - 0x01, - 0x00, - 0xA8, - 0x00, - 0x01, - 0x00, - 0x9C, - 0x00, - 0x01, - 0x00, - 0x9C, - 0x00, - 0x01, - 0x00, - 0xA6, - 0x00, - 0x01, - 0x00, - 0xA6, - 0x00, - 0x01, - 0x00, - 0xA2, - 0x00, - 0x01, - 0x00, - 0xA3, - 0x00, - 0x01, - 0x00, - 0x98, - 0x00, - 0x01, - 0x00, - 0x98, - 0x00, - 0x01, - 0x00, - 0x95, - 0x00, - 0x01, - 0x00, - 0x9E, - 0x00, - 0x01, - 0x00, - 0x96, - 0x00, - 0x01, - 0x00, - 0xA9, - 0x00, - 0x01, - 0x00, - 0x97, - 0x00, - 0x02, - 0x00, - 0xA5, - 0x00, - 0x02, - 0x00, - 0xA0, - 0x00, - 0x01, - 0x00, - 0xA1, - 0x00, - 0x01, - 0x00, - 0x98, - 0x00, - 0x01, - 0x00, - 0x9C, - 0x00, - 0x01, - 0x00, - 0x9F, - 0x00, - 0x01, - 0x00, - 0xA8, - 0x00, - 0x02, - 0x00, - 0x9A, - 0x00, - 0x01, - 0x00, - 0x97, - 0x00, - 0x01, - 0x00, - 0xA1, - 0x00, - 0x01, - 0x00, - 0xAC, - 0x00, - 0x01, - 0x00, - 0xA0, - 0x00, - 0x02, - 0x00, - 0xA1, - 0x00, - 0x02, - 0x00, - 0xA2, - 0x00, - 0x02, - 0x00, - 0xAB, - 0x00, - 0x01, - 0x00, - 0x9E, - 0x00, - 0x02, - 0x00, - 0xA5, - 0x00, - 0x03, - 0x00, - 0xA6, - 0x00, - 0x03, - 0x00, - 0xA7, - 0x00, - 0x03, - 0x00, - 0xA9, - 0x00, - 0x01, - 0x00, - 0xA9, - 0x00, - 0x01, - 0x00, - 0xAC, - 0x00, - 0x02, - 0x00, - 0xAC, - 0x00, - 0x02, - 0x00, - 0xAA, - 0x00, - 0x01, - 0x00, - 0xAA, - 0x00, - 0x01, - 0x00, - 0xAE, - 0x00, - 0x01, - 0x00, - 0xAE, - 0x00, - 0x01, - 0x00, - 0xAB, - 0x00, - 0x01, - 0x00, - 0xAB, - 0x00, - 0x01, - 0x00, - 0xA9, - 0x00, - 0x01, - 0x00, - 0xA9, - 0x00, - 0x01, - 0x00, - 0xAC, - 0x00, - 0x01, - 0x00, - 0xAC, - 0x00, - 0x01, - 0x00, - 0xAE, - 0x00, - 0x01, - 0x00, - 0xAE, - 0x00, - 0x01, - 0x00, - 0xAD, - 0x00, - 0x01, - 0x00, - 0xAD, - 0x00, - 0x01, - 0x00, - 0xAB, - 0x00, - 0x01, - 0x00, - 0xAB, - 0x00, - 0x01, - 0x00, - 0x9D, - 0x00, - 0x01, - 0x00, - 0x9A, - 0x00, - 0x01, - 0x00, - 0xAB, - 0x00, - 0x02, - 0x00, - 0xAD, - 0x00, - 0x02, - 0x00, - 0xAA, - 0x00, - 0x02, - 0x00, - 0xAA, - 0x00, - 0x02, - 0x00, - 0xAD, - 0x00, - 0x01, - 0x00, - 0xAD, - 0x00, - 0x01, - 0x00, -};
\ No newline at end of file diff --git a/arm9/modules/53/asm/module_53.s b/arm9/modules/53/asm/module_53.s index b4fd4d80..d070f979 100644 --- a/arm9/modules/53/asm/module_53.s +++ b/arm9/modules/53/asm/module_53.s @@ -768,7 +768,7 @@ MOD53_021D7B60: ; 0x021D7B60 mov r0, #0x4e add r2, r1, #0 add r3, r1, #0 - bl FUN_02006930 + bl GfGfxLoader_GXLoadPal mov r0, #0x40 str r0, [sp] mov r0, #0x27 @@ -777,7 +777,7 @@ MOD53_021D7B60: ; 0x021D7B60 mov r1, #1 mov r2, #4 mov r3, #0 - bl FUN_02006930 + bl GfGfxLoader_GXLoadPal mov r1, #0x1a mov r0, #0 lsl r1, r1, #4 @@ -801,7 +801,7 @@ MOD53_021D7B60: ; 0x021D7B60 mov r0, #0x4e add r2, r4, #0 add r3, r1, #0 - bl FUN_0200687C + bl GfGfxLoader_LoadCharData mov r0, #0 str r0, [sp] mov r0, #6 @@ -815,7 +815,7 @@ MOD53_021D7B60: ; 0x021D7B60 mov r1, #4 add r2, r4, #0 mov r3, #2 - bl FUN_020068C8 + bl GfGfxLoader_LoadScrnData mov r0, #0 str r0, [sp] mov r0, #2 @@ -829,7 +829,7 @@ MOD53_021D7B60: ; 0x021D7B60 mov r1, #3 add r2, r4, #0 mov r3, #5 - bl FUN_0200687C + bl GfGfxLoader_LoadCharData mov r0, #0 str r0, [sp] mov r0, #6 @@ -843,7 +843,7 @@ MOD53_021D7B60: ; 0x021D7B60 mov r0, #0x4e add r2, r4, #0 add r3, r1, #0 - bl FUN_020068C8 + bl GfGfxLoader_LoadScrnData ldr r0, [r5, #8] ldr r0, [r0, #8] bl Options_GetFrame @@ -898,7 +898,7 @@ MOD53_021D7C84: ; 0x021D7C84 push {r4, r5, r6, r7, lr} sub sp, #0x14 add r5, r0, #0 - bl FUN_020B0FC0 + bl NNS_G2dInitOamManagerModule mov r0, #0 str r0, [sp] mov r1, #0x7e @@ -1325,7 +1325,7 @@ MOD53_021D7FDC: ; 0x021D7FDC lsl r0, r0, #2 add r0, r7, r0 mov r1, #0xf - bl FUN_02019620 + bl FillWindowPixelBuffer mov r0, #2 str r0, [sp] mov r0, #0x1e @@ -1346,7 +1346,7 @@ MOD53_021D7FDC: ; 0x021D7FDC lsl r0, r0, #2 add r0, r7, r0 mov r1, #2 - bl FUN_02019620 + bl FillWindowPixelBuffer mov r0, #0x15 str r0, [sp] mov r0, #6 @@ -1368,7 +1368,7 @@ MOD53_021D7FDC: ; 0x021D7FDC lsl r0, r0, #2 add r0, r7, r0 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r1, [r7, #0x28] mov r0, #1 mov r2, #0 @@ -1415,7 +1415,7 @@ _021D80A8: bl FUN_02019064 add r0, r5, #0 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, [sp, #0x14] add r6, #0x14 add r0, r0, #1 @@ -1981,7 +1981,7 @@ MOD53_021D852C: ; 0x021D852C bl MOD53_021D941C cmp r0, #0 bne _021D8568 - bl ErrorHandling + bl GF_AssertFail _021D8568: add r0, r5, #0 mov r1, #6 @@ -2372,7 +2372,7 @@ MOD53_021D8860: ; 0x021D8860 bl MOD53_021D941C cmp r0, #0 bne _021D889C - bl ErrorHandling + bl GF_AssertFail _021D889C: add r0, r5, #0 mov r1, #0xe @@ -2915,7 +2915,7 @@ _021D8C9C: mov r1, ip lsr r2, r2, #0x10 lsr r3, r3, #0x10 - bl FUN_02019658 + bl BlitBitmapRectToWindow add sp, #0x1c pop {r4, r5, r6, r7, pc} thumb_func_end MOD53_021D8C58 @@ -3429,7 +3429,7 @@ _021D906C: add r0, r4, #0 add r2, r1, #0 add r3, r1, #0 - bl FUN_020196F4 + bl FillWindowPixelRect add r6, r6, #1 add r4, #0x10 cmp r6, #5 @@ -3633,7 +3633,7 @@ MOD53_021D91C8: ; 0x021D91C8 lsl r0, r0, #2 add r0, r5, r0 mov r1, #0xf - bl FUN_02019620 + bl FillWindowPixelBuffer mov r0, #0xb6 lsl r0, r0, #2 add r0, r5, r0 @@ -3870,7 +3870,7 @@ _021D9374: _021D93C0: cmp r0, #0 bne _021D93C8 - bl ErrorHandling + bl GF_AssertFail _021D93C8: mov r0, #1 pop {r3, r4, r5, pc} diff --git a/arm9/modules/54/asm/module_54.s b/arm9/modules/54/asm/module_54.s index 904d1c7f..b11b96cf 100644 --- a/arm9/modules/54/asm/module_54.s +++ b/arm9/modules/54/asm/module_54.s @@ -612,7 +612,7 @@ _021D79A6: mov r1, #1 add r2, #0x1c mov r3, #0x33 - bl FUN_02006C08 + bl GfGfxLoader_GetPlttData str r0, [r7, #0x18] mov r1, #0x32 ldr r0, _021D7A30 ; =0x00004A44 @@ -694,7 +694,7 @@ MOD54_021D7AA0: ; 0x021D7AA0 mov r0, #0x56 add r2, r1, #0 add r3, r1, #0 - bl FUN_02006930 + bl GfGfxLoader_GXLoadPal mov r0, #0x20 str r0, [sp] mov r0, #0x33 @@ -703,7 +703,7 @@ MOD54_021D7AA0: ; 0x021D7AA0 add r1, r0, #0 mov r2, #4 mov r3, #0 - bl FUN_02006930 + bl GfGfxLoader_GXLoadPal mov r1, #0x1a mov r0, #0 lsl r1, r1, #4 @@ -725,7 +725,7 @@ MOD54_021D7AA0: ; 0x021D7AA0 mov r1, #0xa add r2, r4, #0 mov r3, #6 - bl FUN_0200687C + bl GfGfxLoader_LoadCharData mov r0, #0 str r0, [sp] str r0, [sp, #4] @@ -737,7 +737,7 @@ MOD54_021D7AA0: ; 0x021D7AA0 mov r1, #0xb add r2, r4, #0 mov r3, #6 - bl FUN_020068C8 + bl GfGfxLoader_LoadScrnData mov r0, #0 str r0, [sp] mov r0, #2 @@ -750,7 +750,7 @@ MOD54_021D7AA0: ; 0x021D7AA0 mov r0, #0x56 mov r1, #2 add r2, r4, #0 - bl FUN_0200687C + bl GfGfxLoader_LoadCharData mov r0, #0 str r0, [sp] mov r0, #6 @@ -763,7 +763,7 @@ MOD54_021D7AA0: ; 0x021D7AA0 mov r0, #0x56 mov r1, #3 add r2, r4, #0 - bl FUN_020068C8 + bl GfGfxLoader_LoadScrnData ldr r0, [r5, #8] ldr r0, [r0, #8] bl Options_GetFrame @@ -819,7 +819,7 @@ MOD54_021D7BBC: ; 0x021D7BBC push {r4, r5, r6, r7, lr} sub sp, #0x14 add r6, r0, #0 - bl FUN_020B0FC0 + bl NNS_G2dInitOamManagerModule mov r0, #0 str r0, [sp] mov r1, #0x7e @@ -1081,7 +1081,7 @@ MOD54_021D7DB4: ; 0x021D7DB4 lsl r0, r0, #2 add r0, r4, r0 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer mov r0, #0x13 str r0, [sp] mov r0, #0x1b @@ -1103,7 +1103,7 @@ MOD54_021D7DB4: ; 0x021D7DB4 lsl r0, r0, #2 add r0, r4, r0 mov r1, #0xf - bl FUN_02019620 + bl FillWindowPixelBuffer mov r0, #1 str r0, [sp] mov r0, #0x1a @@ -1148,7 +1148,7 @@ MOD54_021D7DB4: ; 0x021D7DB4 lsl r0, r0, #2 add r0, r4, r0 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer mov r0, #0xa6 lsl r0, r0, #2 ldr r2, _021D7E94 ; =0x00010300 @@ -1176,7 +1176,7 @@ MOD54_021D7E98: ; 0x021D7E98 add r6, r0, #0 add r0, r5, #0 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer mov r1, #1 str r1, [sp] mov r0, #0x41 @@ -1848,7 +1848,7 @@ _021D83DE: strb r0, [r5, r1] b _021D83FC _021D83F8: - bl ErrorHandling + bl GF_AssertFail _021D83FC: mov r0, #0x32 mov r1, #0 @@ -2688,7 +2688,7 @@ _021D8A5A: str r4, [r5, r0] pop {r3, r4, r5, r6, pc} _021D8A64: - bl ErrorHandling + bl GF_AssertFail add sp, #4 pop {r3, r4, r5, r6, pc} _021D8A6C: @@ -2787,7 +2787,7 @@ MOD54_021D8AF8: ; 0x021D8AF8 _021D8B18: add r0, r6, #0 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r7, [sp, #0x14] mov r0, #0 str r0, [sp, #0x20] @@ -3013,7 +3013,7 @@ MOD54_021D8C90: ; 0x021D8C90 lsl r0, r0, #2 add r0, r5, r0 mov r1, #0xf - bl FUN_02019620 + bl FillWindowPixelBuffer mov r0, #0xba lsl r0, r0, #2 add r0, r5, r0 @@ -3131,7 +3131,7 @@ _021D8D90: ldr r0, [r6, r0] cmp r0, #0 bne _021D8D9E - bl ErrorHandling + bl GF_AssertFail _021D8D9E: mov r0, #0xd9 lsl r0, r0, #2 @@ -3240,7 +3240,7 @@ MOD54_021D8E64: ; 0x021D8E64 mov r1, #8 add r2, r4, r2 mov r3, #0x33 - bl FUN_02006C08 + bl GfGfxLoader_GetPlttData mov r2, #0xcd lsl r2, r2, #2 str r0, [r4, r2] @@ -3249,7 +3249,7 @@ MOD54_021D8E64: ; 0x021D8E64 mov r1, #7 add r2, r4, r2 mov r3, #0x33 - bl FUN_02006C08 + bl GfGfxLoader_GetPlttData mov r3, #0xce lsl r3, r3, #2 str r0, [r4, r3] @@ -3260,7 +3260,7 @@ MOD54_021D8E64: ; 0x021D8E64 mov r1, #0x20 mov r2, #1 add r3, r4, r3 - bl FUN_02006BB0 + bl GfGfxLoader_GetCharData mov r1, #0xc9 lsl r1, r1, #2 str r0, [r4, r1] @@ -3271,7 +3271,7 @@ MOD54_021D8E64: ; 0x021D8E64 mov r1, #9 mov r2, #1 add r3, r4, r3 - bl FUN_02006BB0 + bl GfGfxLoader_GetCharData mov r1, #0xca lsl r1, r1, #2 str r0, [r4, r1] @@ -3583,7 +3583,7 @@ MOD54_021D90E0: ; 0x021D90E0 cmp r5, #5 ble _021D90F2 _021D90EE: - bl ErrorHandling + bl GF_AssertFail _021D90F2: add r2, r5, #1 cmp r2, #5 @@ -3786,7 +3786,7 @@ MOD54_021D9238: ; 0x021D9238 bl MOD54_021D91AC cmp r4, r0 beq _021D925E - bl ErrorHandling + bl GF_AssertFail _021D925E: mov r2, #0x63 lsl r2, r2, #2 @@ -3816,7 +3816,7 @@ MOD54_021D9274: ; 0x021D9274 bl MOD54_021D91B4 cmp r4, r0 beq _021D929A - bl ErrorHandling + bl GF_AssertFail _021D929A: add r6, #0xc add r0, r5, #0 @@ -3844,7 +3844,7 @@ MOD54_021D92AC: ; 0x021D92AC bl MOD54_021D91BC cmp r4, r0 beq _021D92D2 - bl ErrorHandling + bl GF_AssertFail _021D92D2: add r6, #0xcc add r0, r5, #0 @@ -4260,7 +4260,7 @@ _021D9580: add r7, r0, #0 cmp r6, r4 bhi _021D959C - bl ErrorHandling + bl GF_AssertFail _021D959C: ldr r1, [sp, #4] add r0, r7, #0 @@ -4317,7 +4317,7 @@ _021D95F8: str r0, [sp, #0x14] cmp r1, r0 bhi _021D960C - bl ErrorHandling + bl GF_AssertFail _021D960C: mov r6, #0 ldr r4, [sp, #4] diff --git a/arm9/modules/55/asm/module_55.s b/arm9/modules/55/asm/module_55.s index 0d96ce13..b9f3c277 100644 --- a/arm9/modules/55/asm/module_55.s +++ b/arm9/modules/55/asm/module_55.s @@ -726,7 +726,7 @@ MOD55_021D7AE0: ; 0x021D7AE0 mov r0, #0x59 mov r1, #3 add r3, r2, #0 - bl FUN_02006930 + bl GfGfxLoader_GXLoadPal mov r3, #0 str r3, [sp] mov r0, #0x34 @@ -734,7 +734,7 @@ MOD55_021D7AE0: ; 0x021D7AE0 mov r0, #0x59 mov r1, #3 mov r2, #4 - bl FUN_02006930 + bl GfGfxLoader_GXLoadPal mov r1, #0x1a mov r0, #0 lsl r1, r1, #4 @@ -762,7 +762,7 @@ MOD55_021D7AE0: ; 0x021D7AE0 mov r0, #0x59 mov r1, #2 add r2, r4, #0 - bl FUN_0200687C + bl GfGfxLoader_LoadCharData mov r3, #0 str r3, [sp] str r3, [sp, #4] @@ -772,7 +772,7 @@ MOD55_021D7AE0: ; 0x021D7AE0 mov r0, #0x59 mov r1, #8 add r2, r4, #0 - bl FUN_020068C8 + bl GfGfxLoader_LoadScrnData mov r0, #0 str r0, [sp] str r0, [sp, #4] @@ -783,7 +783,7 @@ MOD55_021D7AE0: ; 0x021D7AE0 mov r0, #0x59 mov r1, #4 mov r3, #1 - bl FUN_020068C8 + bl GfGfxLoader_LoadScrnData mov r0, #0 str r0, [sp] str r0, [sp, #4] @@ -794,7 +794,7 @@ MOD55_021D7AE0: ; 0x021D7AE0 mov r1, #0xa add r2, r4, #0 mov r3, #4 - bl FUN_0200687C + bl GfGfxLoader_LoadCharData mov r0, #0 str r0, [sp] str r0, [sp, #4] @@ -805,7 +805,7 @@ MOD55_021D7AE0: ; 0x021D7AE0 mov r1, #0xb add r2, r4, #0 mov r3, #4 - bl FUN_020068C8 + bl GfGfxLoader_LoadScrnData ldr r0, [r5, #8] bl Sav2_PlayerData_GetOptionsAddr bl Options_GetFrame @@ -865,7 +865,7 @@ MOD55_021D7C20: ; 0x021D7C20 push {r4, r5, r6, r7, lr} sub sp, #0x14 add r5, r0, #0 - bl FUN_020B0FC0 + bl NNS_G2dInitOamManagerModule mov r0, #0 str r0, [sp] mov r1, #0x7e @@ -1238,7 +1238,7 @@ _021D7F02: lsl r0, r0, #2 add r0, r5, r0 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer add r2, r5, #0 add r2, #0xc0 ldr r0, [r5, #0x10] @@ -1305,7 +1305,7 @@ _021D7F86: bl FUN_02019064 add r0, r4, #0 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer cmp r6, #2 bne _021D7FF4 ldr r0, [r5, #8] @@ -2618,7 +2618,7 @@ _021D89AE: add r7, r0, #0 add r0, r5, #0 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer mov r0, #1 str r0, [sp] mov r0, #0xff @@ -2723,7 +2723,7 @@ MOD55_021D8A7C: ; 0x021D8A7C ldr r2, [r5, #4] mov r0, #0x59 mov r1, #2 - bl FUN_0200687C + bl GfGfxLoader_LoadCharData mov r3, #0 str r3, [sp] str r3, [sp, #4] @@ -2733,7 +2733,7 @@ MOD55_021D8A7C: ; 0x021D8A7C ldr r2, [r5, #4] mov r0, #0x59 mov r1, #8 - bl FUN_020068C8 + bl GfGfxLoader_LoadScrnData mov r0, #0 str r0, [sp] str r0, [sp, #4] @@ -2744,7 +2744,7 @@ MOD55_021D8A7C: ; 0x021D8A7C mov r0, #0x59 mov r1, #5 mov r3, #1 - bl FUN_020068C8 + bl GfGfxLoader_LoadScrnData mov r0, #0xe6 lsl r0, r0, #2 add r0, r5, r0 @@ -2775,7 +2775,7 @@ _021D8AEE: lsl r0, r0, #2 add r0, r5, r0 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer add r2, r5, #0 add r2, #0xc0 ldr r0, [r5, #0x10] @@ -2834,7 +2834,7 @@ _021D8B6C: lsl r0, r0, #2 add r0, r5, r0 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer add r2, r5, #0 add r2, #0xd0 ldr r0, [r5, #0x10] @@ -2917,7 +2917,7 @@ _021D8C02: bl FUN_02019064 add r0, r4, #0 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer add r0, r4, #0 bl FUN_02019220 add r6, r6, #1 @@ -3213,7 +3213,7 @@ MOD55_021D8E6C: ; 0x021D8E6C stmia r2!, {r0, r1} add r0, r7, #0 mov r1, #0x34 - bl ListMenu_ctor + bl ListMenuItems_ctor ldr r4, _021D8FD0 ; =0x021DA3D8 str r0, [r5, #0x14] mov r6, #0 @@ -3222,7 +3222,7 @@ _021D8EB6: ldr r1, [r5, #0x10] ldr r2, [r4] ldr r3, [r4, #4] - bl ListMenu_ItemFromMsgData + bl ListMenuItems_AppendFromMsgData add r6, r6, #1 add r4, #8 cmp r6, #4 @@ -3241,7 +3241,7 @@ _021D8ECC: stmia r2!, {r0, r1} add r0, r7, #0 mov r1, #0x34 - bl ListMenu_ctor + bl ListMenuItems_ctor ldr r4, _021D8FD8 ; =0x021DA438 str r0, [r5, #0x14] mov r6, #0 @@ -3250,7 +3250,7 @@ _021D8EEE: ldr r1, [r5, #0x10] ldr r2, [r4] ldr r3, [r4, #4] - bl ListMenu_ItemFromMsgData + bl ListMenuItems_AppendFromMsgData add r6, r6, #1 add r4, #8 cmp r6, #4 @@ -3306,7 +3306,7 @@ _021D8F1A: add r0, sp, #0x1c add r2, r1, #0 mov r3, #0x34 - bl FUN_020010A8 + bl ListMenuInit mov r1, #0xea lsl r1, r1, #2 str r0, [r5, r1] @@ -3374,7 +3374,7 @@ _021D9002: mov r0, #0xea lsl r0, r0, #2 ldr r0, [r5, r0] - bl FUN_02001204 + bl ListMenu_ProcessInput ldr r1, _021D90D0 ; =0x00000418 add r4, r0, #0 add r0, r1, #0 @@ -3382,7 +3382,7 @@ _021D9002: ldrh r7, [r5, r1] ldr r0, [r5, r0] add r1, r5, r1 - bl FUN_0200143C + bl ListMenuGetCurrentItemArrayId ldr r0, _021D90D0 ; =0x00000418 ldrh r0, [r5, r0] cmp r7, r0 @@ -3458,9 +3458,9 @@ _021D9098: mov r1, #0 ldr r0, [r5, r0] add r2, r1, #0 - bl FUN_02001300 + bl DestroyListMenu ldr r0, [r5, #0x14] - bl ListMenu_dtor + bl ListMenuItems_dtor add r0, r6, #0 add sp, #0xc pop {r4, r5, r6, r7, pc} @@ -3573,7 +3573,7 @@ MOD55_021D9184: ; 0x021D9184 mov r0, #0x59 mov r1, #7 mov r3, #1 - bl FUN_020068C8 + bl GfGfxLoader_LoadScrnData mov r0, #0xe6 lsl r0, r0, #2 add r0, r5, r0 @@ -3605,7 +3605,7 @@ _021D91D6: lsl r0, r0, #2 add r0, r5, r0 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, [r5, #8] bl Sav2_PlayerData_GetProfileAddr add r2, r0, #0 @@ -3677,7 +3677,7 @@ _021D9278: lsl r0, r0, #2 add r0, r5, r0 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer mov r1, #0 mov r0, #0 eor r1, r4 @@ -3781,7 +3781,7 @@ _021D9338: lsl r0, r0, #2 add r0, r5, r0 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer add r1, r5, #0 add r1, #0xbc mov r0, #0 @@ -4013,7 +4013,7 @@ _021D9570: .word MOD55_021DA314 thumb_func_start MOD55_021D9574 MOD55_021D9574: ; 0x021D9574 push {r3, lr} - bl FUN_020BB7F4 + bl NNS_G3dInit bl G3X_InitMtxStack mov r0, #1 add r1, r0, #0 @@ -4110,7 +4110,7 @@ _021D9618: mov r0, #0x59 mov r1, #2 mov r3, #1 - bl FUN_0200687C + bl GfGfxLoader_LoadCharData mov r0, #0 str r0, [sp] str r0, [sp, #4] @@ -4121,7 +4121,7 @@ _021D9618: mov r0, #0x59 mov r1, #8 mov r3, #1 - bl FUN_020068C8 + bl GfGfxLoader_LoadScrnData mov r0, #0 str r0, [sp] str r0, [sp, #4] @@ -4132,7 +4132,7 @@ _021D9618: mov r0, #0x59 mov r1, #6 mov r3, #2 - bl FUN_020068C8 + bl GfGfxLoader_LoadScrnData mov r0, #0xe6 lsl r0, r0, #2 add r0, r4, r0 @@ -4164,7 +4164,7 @@ _021D969A: lsl r0, r0, #2 add r0, r4, r0 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer mov r0, #0x34 bl PlayerProfile_new str r0, [sp, #0x20] @@ -4243,7 +4243,7 @@ _021D974E: lsl r0, r0, #2 add r0, r4, r0 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, [r4, #0xc] ldr r2, [sp, #0x20] mov r1, #0 @@ -4382,7 +4382,7 @@ _021D987C: lsl r0, r0, #2 add r0, r4, r0 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer add r2, r4, #0 add r2, #0xc4 ldr r0, [r4, #0x10] @@ -4807,7 +4807,7 @@ MOD55_021D9C50: ; 0x021D9C50 add r4, r1, #0 bl G3X_ResetMtxStack bl G3X_ResetMtxStack_2 - bl FUN_020B02C8 + bl NNS_G2dSetupSoftwareSpriteCamera add r0, r5, #0 add r0, #0xdc ldr r0, [r0] @@ -4862,7 +4862,7 @@ MOD55_021D9CC4: ; 0x021D9CC4 add r4, r1, #0 bl G3X_ResetMtxStack bl G3X_ResetMtxStack_2 - bl FUN_020B02C8 + bl NNS_G2dSetupSoftwareSpriteCamera add r0, r5, #0 add r0, #0xdc ldr r0, [r0] @@ -4910,7 +4910,7 @@ _021D9D16: mov r0, #0x59 mov r1, #0xa mov r3, #4 - bl FUN_0200687C + bl GfGfxLoader_LoadCharData mov r0, #0 str r0, [sp] str r0, [sp, #4] @@ -4921,7 +4921,7 @@ _021D9D16: mov r0, #0x59 mov r1, #0xb mov r3, #4 - bl FUN_020068C8 + bl GfGfxLoader_LoadScrnData mov r0, #3 str r0, [sp] mov r1, #1 @@ -4961,7 +4961,7 @@ MOD55_021D9D88: ; 0x021D9D88 ldr r2, [r6, #4] mov r0, #0x59 mov r1, #8 - bl FUN_020068C8 + bl GfGfxLoader_LoadScrnData mov r0, #0 str r0, [sp] str r0, [sp, #4] @@ -4972,7 +4972,7 @@ MOD55_021D9D88: ; 0x021D9D88 mov r0, #0x59 mov r1, #4 mov r3, #1 - bl FUN_020068C8 + bl GfGfxLoader_LoadScrnData mov r7, #0x29 mov r4, #0 add r5, r6, #0 @@ -5397,7 +5397,7 @@ _021DA0D0: lsl r0, r0, #2 add r0, r5, r0 mov r1, #0xf - bl FUN_02019620 + bl FillWindowPixelBuffer mov r0, #0xce lsl r0, r0, #2 ldr r2, _021DA158 ; =0x000001E2 @@ -5478,7 +5478,7 @@ _021DA17C: lsl r0, r0, #2 add r0, r5, r0 mov r1, #0xf - bl FUN_02019620 + bl FillWindowPixelBuffer mov r0, #0xce lsl r0, r0, #2 ldr r2, _021DA210 ; =0x000001E2 diff --git a/arm9/modules/56/asm/module_56.s b/arm9/modules/56/asm/module_56.s index d1046c7b..531194c6 100644 --- a/arm9/modules/56/asm/module_56.s +++ b/arm9/modules/56/asm/module_56.s @@ -950,7 +950,7 @@ MOD56_0221257C: ; 0x0221257C mov r0, #0x5c mov r1, #3 add r3, r2, #0 - bl FUN_02006930 + bl GfGfxLoader_GXLoadPal mov r3, #0 str r3, [sp] mov r0, #0x36 @@ -958,7 +958,7 @@ MOD56_0221257C: ; 0x0221257C mov r0, #0x5c mov r1, #3 mov r2, #4 - bl FUN_02006930 + bl GfGfxLoader_GXLoadPal mov r1, #0x1a mov r0, #0 lsl r1, r1, #4 @@ -978,7 +978,7 @@ MOD56_0221257C: ; 0x0221257C mov r0, #0x5c mov r1, #2 add r2, r4, #0 - bl FUN_0200687C + bl GfGfxLoader_LoadCharData mov r3, #0 str r3, [sp] str r3, [sp, #4] @@ -988,7 +988,7 @@ MOD56_0221257C: ; 0x0221257C mov r0, #0x5c mov r1, #4 add r2, r4, #0 - bl FUN_020068C8 + bl GfGfxLoader_LoadScrnData mov r0, #0 str r0, [sp] str r0, [sp, #4] @@ -999,7 +999,7 @@ MOD56_0221257C: ; 0x0221257C mov r1, #9 add r2, r4, #0 mov r3, #4 - bl FUN_0200687C + bl GfGfxLoader_LoadCharData mov r0, #0 str r0, [sp] str r0, [sp, #4] @@ -1010,7 +1010,7 @@ MOD56_0221257C: ; 0x0221257C mov r1, #0xa add r2, r4, #0 mov r3, #4 - bl FUN_020068C8 + bl GfGfxLoader_LoadScrnData add r5, #0xc4 ldr r0, [r5] bl Sav2_PlayerData_GetOptionsAddr @@ -1085,7 +1085,7 @@ MOD56_022126E0: ; 0x022126E0 push {r4, r5, r6, r7, lr} sub sp, #0x14 add r6, r0, #0 - bl FUN_020B0FC0 + bl NNS_G2dInitOamManagerModule mov r0, #0 str r0, [sp] mov r1, #0x7e @@ -1342,7 +1342,7 @@ _022128CE: lsl r0, r0, #2 add r0, r4, r0 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer add r0, r4, #0 mov r2, #0x16 add r0, #0xcc @@ -1450,14 +1450,14 @@ _022129D8: beq _022129EA mov r1, #0 add r2, r1, #0 - bl FUN_02001300 + bl DestroyListMenu _022129EA: add r0, r4, #0 add r0, #0xb0 ldr r0, [r0] cmp r0, #0 beq _02212A00 - bl ListMenu_dtor + bl ListMenuItems_dtor add r0, r4, #0 mov r1, #0 add r0, #0xb0 @@ -2464,7 +2464,7 @@ MOD56_02213194: ; 0x02213194 ldr r2, [r2] mov r0, #0x5c mov r1, #4 - bl FUN_020068C8 + bl GfGfxLoader_LoadScrnData add r0, r6, #0 add r0, #0xb0 ldr r0, [r0] @@ -2479,7 +2479,7 @@ MOD56_02213194: ; 0x02213194 mov r1, #0 ldr r0, [r0] add r2, r1, #0 - bl FUN_02001300 + bl DestroyListMenu add r0, r6, #0 mov r1, #0 add r0, #0xb4 @@ -2487,7 +2487,7 @@ MOD56_02213194: ; 0x02213194 add r0, r6, #0 add r0, #0xb0 ldr r0, [r0] - bl ListMenu_dtor + bl ListMenuItems_dtor add r0, r6, #0 mov r1, #0 add r0, #0xb0 @@ -2786,7 +2786,7 @@ _0221344C: lsl r0, r0, #2 add r0, r4, r0 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer mov r1, #0 str r1, [sp] mov r0, #0xff @@ -3021,7 +3021,7 @@ MOD56_02213624: ; 0x02213624 add r5, r1, #0 mov r1, #0x13 add r7, r2, #0 - bl FUN_02001470 + bl ListMenuGetTemplateField add r4, r0, #0 ldr r6, _02213750 ; =0x00010200 cmp r5, #0x20 @@ -3462,7 +3462,7 @@ _02213944: ldr r0, [r0] ldr r1, [r5, r7] sub r2, r2, #1 - bl ListMenu_AddItem + bl ListMenuItems_AddItem add r6, r6, #1 _0221395C: add r4, r4, #1 @@ -3476,7 +3476,7 @@ _0221395C: ldr r1, [r1] mov r2, #0x1b mov r3, #0x20 - bl ListMenu_ItemFromMsgData + bl ListMenuItems_AppendFromMsgData add r0, r5, #0 add r0, #0xb0 add r5, #0xcc @@ -3485,7 +3485,7 @@ _0221395C: ldr r0, [r0] ldr r1, [r5] sub r3, #0x30 - bl ListMenu_ItemFromMsgData + bl ListMenuItems_AppendFromMsgData add r0, r6, #0 pop {r3, r4, r5, r6, r7, pc} .align 2, 0 @@ -3498,7 +3498,7 @@ MOD56_02213990: ; 0x02213990 add r5, r0, #0 mov r0, #0x22 mov r1, #0x36 - bl ListMenu_ctor + bl ListMenuItems_ctor add r1, r5, #0 add r1, #0xb0 str r0, [r1] @@ -3567,7 +3567,7 @@ _022139D0: add r2, r1, #0 mov r3, #0x36 str r5, [sp, #0x30] - bl FUN_020010A8 + bl ListMenuInit add r5, #0xb4 str r0, [r5] add sp, #0x34 @@ -3644,7 +3644,7 @@ MOD56_02213A94: ; 0x02213A94 ldr r2, [r2] mov r0, #0x5c mov r1, #5 - bl FUN_020068C8 + bl GfGfxLoader_LoadScrnData mov r0, #0xd7 lsl r0, r0, #2 add r0, r5, r0 @@ -3675,7 +3675,7 @@ _02213AF0: mov r1, #0 ldr r0, [r0] add r2, r1, #0 - bl FUN_02001300 + bl DestroyListMenu add r0, r5, #0 mov r1, #0 add r0, #0xb4 @@ -3683,7 +3683,7 @@ _02213AF0: add r0, r5, #0 add r0, #0xb0 ldr r0, [r0] - bl ListMenu_dtor + bl ListMenuItems_dtor add r0, r5, #0 mov r1, #0 add r0, #0xb0 @@ -3712,7 +3712,7 @@ _02213B2C: lsl r0, r0, #2 add r0, r5, r0 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer add r0, r5, #0 mov r2, #0x16 add r0, #0xcc @@ -3808,13 +3808,13 @@ _02213C24: add r0, r5, #0 add r0, #0xb0 ldr r0, [r0] - bl ListMenu_DestroyMenuStrings + bl ListMenuItems_DestroyMenuStrings add r0, r5, #0 add r0, #0xb4 ldr r0, [r0] mov r1, #2 add r2, r4, #2 - bl FUN_02001538 + bl ListMenuSetTemplateField cmp r4, #3 ble _02213C50 add r0, r5, #0 @@ -3822,7 +3822,7 @@ _02213C24: ldr r0, [r0] mov r1, #3 mov r2, #5 - bl FUN_02001538 + bl ListMenuSetTemplateField b _02213C5E _02213C50: add r0, r5, #0 @@ -3830,7 +3830,7 @@ _02213C50: ldr r0, [r0] mov r1, #3 add r2, r4, #2 - bl FUN_02001538 + bl ListMenuSetTemplateField _02213C5E: add r0, r5, #0 bl MOD56_02213938 @@ -3840,7 +3840,7 @@ _02213C5E: ldr r0, [r0] add r1, #2 add r2, sp, #0xc - bl FUN_02001448 + bl ListMenuGetScrollAndRow cmp r4, #3 blt _02213C84 add r0, sp, #0xc @@ -3860,11 +3860,11 @@ _02213C84: ldrh r2, [r3, #2] ldrh r3, [r3] ldr r0, [r0] - bl FUN_020013C8 + bl ListMenuTestInput add r0, r5, #0 add r0, #0xb4 ldr r0, [r0] - bl FUN_02001328 + bl RedrawListMenu str r4, [r5, #8] _02213CA8: add r0, r5, #0 @@ -3873,7 +3873,7 @@ _02213CA8: ldr r0, [r0] add r1, #2 add r2, sp, #0xc - bl FUN_02001448 + bl ListMenuGetScrollAndRow add r0, sp, #0xc ldr r1, [r5, #8] ldrh r3, [r0] @@ -3913,11 +3913,11 @@ _02213CF0: str r1, [sp, #8] add r0, #0xb4 ldr r0, [r0] - bl FUN_020013C8 + bl ListMenuTestInput add r0, r5, #0 add r0, #0xb4 ldr r0, [r0] - bl FUN_02001328 + bl RedrawListMenu _02213D0C: add r1, sp, #0xc ldrh r1, [r1, #2] @@ -4099,7 +4099,7 @@ _02213E5C: mov r1, #0 ldr r0, [r0] add r2, r1, #0 - bl FUN_02001300 + bl DestroyListMenu add r0, r5, #0 mov r1, #0 add r0, #0xb4 @@ -4107,7 +4107,7 @@ _02213E5C: add r0, r5, #0 add r0, #0xb0 ldr r0, [r0] - bl ListMenu_dtor + bl ListMenuItems_dtor add r0, r5, #0 mov r1, #0 add r0, #0xb0 @@ -4139,7 +4139,7 @@ _02213ECE: add r0, r5, #0 add r0, #0xb4 ldr r0, [r0] - bl FUN_02001204 + bl ListMenu_ProcessInput add r6, r0, #0 _02213EE8: mov r0, #1 @@ -5059,7 +5059,7 @@ MOD56_022145D4: ; 0x022145D4 stmia r2!, {r0, r1} mov r0, #4 mov r1, #0x36 - bl ListMenu_ctor + bl ListMenuItems_ctor add r1, r5, #0 add r1, #0xb8 ldr r4, _022146C4 ; =0x02216480 @@ -5074,7 +5074,7 @@ _02214602: ldr r1, [r1] ldr r2, [r4] ldr r3, [r4, #4] - bl ListMenu_ItemFromMsgData + bl ListMenuItems_AppendFromMsgData add r6, r6, #1 add r4, #8 cmp r6, #4 @@ -5134,7 +5134,7 @@ _02214642: add r0, sp, #0x14 mov r1, #0 mov r3, #0x36 - bl FUN_020010A8 + bl ListMenuInit add r1, r5, #0 add r1, #0xbc str r0, [r1] @@ -5180,7 +5180,7 @@ _022146EE: add r0, r5, #0 add r0, #0xbc ldr r0, [r0] - bl FUN_02001204 + bl ListMenu_ProcessInput add r4, r0, #0 add r0, r5, #0 bl MOD56_02213BF4 @@ -5257,11 +5257,11 @@ _0221476E: ldr r0, [r0] mov r1, #0 add r2, r5, r2 - bl FUN_02001300 + bl DestroyListMenu add r0, r5, #0 add r0, #0xb8 ldr r0, [r0] - bl ListMenu_dtor + bl ListMenuItems_dtor add r0, r5, #0 add r1, r4, #0 bl MOD56_02214808 @@ -5298,10 +5298,10 @@ _022147CE: ldr r0, [r0] mov r1, #0 add r2, r5, r2 - bl FUN_02001300 + bl DestroyListMenu add r5, #0xb8 ldr r0, [r5] - bl ListMenu_dtor + bl ListMenuItems_dtor add r0, r6, #0 pop {r3, r4, r5, r6, r7, pc} nop @@ -5338,7 +5338,7 @@ _02214820: stmia r2!, {r0, r1} add r0, r7, #0 mov r1, #0x36 - bl ListMenu_ctor + bl ListMenuItems_ctor add r1, r5, #0 add r1, #0xb8 mov r6, #0 @@ -5354,7 +5354,7 @@ _0221484C: ldr r1, [r1] ldr r2, [r4] ldr r3, [r4, #4] - bl ListMenu_ItemFromMsgData + bl ListMenuItems_AppendFromMsgData add r6, r6, #1 add r4, #8 cmp r6, r7 @@ -5425,7 +5425,7 @@ _0221488C: ldrh r2, [r2, r3] mov r1, #0 mov r3, #0x36 - bl FUN_020010A8 + bl ListMenuInit add r1, r5, #0 add r1, #0xbc str r0, [r1] @@ -5463,7 +5463,7 @@ _0221493C: add r0, r5, #0 add r0, #0xbc ldr r0, [r0] - bl FUN_02001204 + bl ListMenu_ProcessInput add r4, r0, #0 add r0, r5, #0 bl MOD56_02213BF4 @@ -5521,10 +5521,10 @@ _02214994: lsl r3, r3, #1 mov r1, #0 add r2, r2, r3 - bl FUN_02001300 + bl DestroyListMenu add r5, #0xb8 ldr r0, [r5] - bl ListMenu_dtor + bl ListMenuItems_dtor add r0, r6, #0 pop {r4, r5, r6, pc} nop @@ -5554,7 +5554,7 @@ MOD56_022149D8: ; 0x022149D8 add r0, #0xb4 ldr r0, [r0] add r1, sp, #0x28 - bl FUN_0200143C + bl ListMenuGetCurrentItemArrayId add r0, sp, #0x28 ldrh r0, [r0] add r0, r5, r0 @@ -5585,7 +5585,7 @@ MOD56_022149D8: ; 0x022149D8 lsr r0, r0, #0x10 str r0, [sp, #0x1c] mov r0, #3 - bl ListMenu_ctor + bl ListMenuItems_ctor add r1, r5, #0 add r1, #0xb8 str r0, [r1] @@ -5630,7 +5630,7 @@ _02214A7E: ldr r1, [r1] ldr r3, [r4, #4] mov r2, #0x1a - bl ListMenu_ItemFromMsgData + bl ListMenuItems_AppendFromMsgData b _02214ADC _02214A9E: ldrh r0, [r7, #0x16] @@ -5652,7 +5652,7 @@ _02214AB2: ldr r1, [r1] ldr r2, [r4] ldr r3, [r4, #4] - bl ListMenu_ItemFromMsgData + bl ListMenuItems_AppendFromMsgData b _02214ADC _02214AC8: add r0, r5, #0 @@ -5663,7 +5663,7 @@ _02214AC8: ldr r1, [r1] ldr r2, [r4] ldr r3, [r4, #4] - bl ListMenu_ItemFromMsgData + bl ListMenuItems_AppendFromMsgData _02214ADC: ldr r0, [sp, #0x24] add r4, #8 @@ -5717,7 +5717,7 @@ _02214ADC: add r0, sp, #0x2c add r2, r1, #0 mov r3, #0x36 - bl FUN_020010A8 + bl ListMenuInit add r1, r5, #0 add r1, #0xbc str r0, [r1] @@ -5837,7 +5837,7 @@ _02214C1E: add r0, r4, #0 add r0, #0xbc ldr r0, [r0] - bl FUN_02001204 + bl ListMenu_ProcessInput add r5, r0, #0 add r0, r4, #0 bl MOD56_02213BF4 @@ -5878,7 +5878,7 @@ _02214C66: add r0, #0xb4 ldr r0, [r0] add r1, sp, #0xc - bl FUN_0200143C + bl ListMenuGetCurrentItemArrayId add r0, sp, #0xc ldrh r0, [r0] add r0, r4, r0 @@ -6074,10 +6074,10 @@ _02214DEC: mov r1, #0 ldr r0, [r0] add r2, r1, #0 - bl FUN_02001300 + bl DestroyListMenu add r4, #0xb8 ldr r0, [r4] - bl ListMenu_dtor + bl ListMenuItems_dtor ldr r0, [sp] add sp, #0x10 pop {r3, r4, r5, r6, r7, pc} @@ -6929,7 +6929,7 @@ MOD56_0221547C: ; 0x0221547C ldr r2, [r2] mov r0, #0x5c mov r1, #5 - bl FUN_020068C8 + bl GfGfxLoader_LoadScrnData mov r0, #0xf3 mov r1, #0 lsl r0, r0, #2 @@ -6964,7 +6964,7 @@ MOD56_022154BC: ; 0x022154BC mov r0, #0x5c mov r1, #6 mov r3, #1 - bl FUN_020068C8 + bl GfGfxLoader_LoadScrnData mov r0, #0xcb lsl r0, r0, #2 ldr r0, [r5, r0] @@ -7019,12 +7019,12 @@ _02215532: lsl r0, r0, #2 add r0, r5, r0 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer add r0, r5, #0 add r0, #0xb4 ldr r0, [r0] add r1, sp, #0x14 - bl FUN_0200143C + bl ListMenuGetCurrentItemArrayId add r0, sp, #0x14 ldrh r0, [r0] add r0, r5, r0 @@ -7564,12 +7564,12 @@ MOD56_022159B0: ; 0x022159B0 ldr r2, [r2] mov r0, #0x5c mov r1, #5 - bl FUN_020068C8 + bl GfGfxLoader_LoadScrnData mov r0, #0xd7 lsl r0, r0, #2 add r0, r5, r0 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer add r0, r5, #0 mov r2, #0x16 add r0, #0xcc @@ -8272,7 +8272,7 @@ _02215F82: lsl r0, r0, #2 add r0, r5, r0 mov r1, #0xf - bl FUN_02019620 + bl FillWindowPixelBuffer mov r0, #0xcf lsl r0, r0, #2 ldr r2, _02215FF0 ; =0x000001E2 @@ -8388,7 +8388,7 @@ _02216048: lsl r0, r0, #2 add r0, r5, r0 mov r1, #0xf - bl FUN_02019620 + bl FillWindowPixelBuffer mov r0, #0xdb lsl r0, r0, #2 ldr r2, _022160E0 ; =0x000001D9 diff --git a/arm9/modules/57/asm/module_57.s b/arm9/modules/57/asm/module_57.s index 39e977cc..481488f8 100644 --- a/arm9/modules/57/asm/module_57.s +++ b/arm9/modules/57/asm/module_57.s @@ -667,7 +667,7 @@ _021D7A56: mov r1, #0 add r2, sp, #0 mov r3, #0x19 - bl FUN_02006C08 + bl GfGfxLoader_GetPlttData add r4, r0, #0 b _021D7AC4 _021D7A66: @@ -675,7 +675,7 @@ _021D7A66: mov r1, #1 add r2, sp, #0 mov r3, #0x19 - bl FUN_02006C08 + bl GfGfxLoader_GetPlttData add r4, r0, #0 b _021D7AC4 _021D7A76: @@ -683,7 +683,7 @@ _021D7A76: mov r1, #2 add r2, sp, #0 mov r3, #0x19 - bl FUN_02006C08 + bl GfGfxLoader_GetPlttData add r4, r0, #0 b _021D7AC4 _021D7A86: @@ -691,7 +691,7 @@ _021D7A86: mov r1, #3 add r2, sp, #0 mov r3, #0x19 - bl FUN_02006C08 + bl GfGfxLoader_GetPlttData add r4, r0, #0 b _021D7AC4 _021D7A96: @@ -699,7 +699,7 @@ _021D7A96: mov r1, #4 add r2, sp, #0 mov r3, #0x19 - bl FUN_02006C08 + bl GfGfxLoader_GetPlttData add r4, r0, #0 b _021D7AC4 _021D7AA6: @@ -707,7 +707,7 @@ _021D7AA6: mov r1, #5 add r2, sp, #0 mov r3, #0x19 - bl FUN_02006C08 + bl GfGfxLoader_GetPlttData add r4, r0, #0 b _021D7AC4 _021D7AB6: @@ -715,7 +715,7 @@ _021D7AB6: mov r1, #6 add r2, sp, #0 mov r3, #0x19 - bl FUN_02006C08 + bl GfGfxLoader_GetPlttData add r4, r0, #0 _021D7AC4: ldr r0, [sp] @@ -754,7 +754,7 @@ _021D7B02: mov r1, #7 add r2, sp, #0 mov r3, #0x19 - bl FUN_02006C08 + bl GfGfxLoader_GetPlttData add r4, r0, #0 b _021D7B30 _021D7B12: @@ -762,7 +762,7 @@ _021D7B12: mov r1, #8 add r2, sp, #0 mov r3, #0x19 - bl FUN_02006C08 + bl GfGfxLoader_GetPlttData add r4, r0, #0 b _021D7B30 _021D7B22: @@ -770,7 +770,7 @@ _021D7B22: mov r1, #9 add r2, sp, #0 mov r3, #0x19 - bl FUN_02006C08 + bl GfGfxLoader_GetPlttData add r4, r0, #0 _021D7B30: ldr r0, [sp] @@ -802,7 +802,7 @@ MOD57_021D7B5C: ; 0x021D7B5C mov r1, #0x29 add r2, sp, #0 mov r3, #0x19 - bl FUN_02006C08 + bl GfGfxLoader_GetPlttData add r6, r0, #0 ldr r0, [sp] lsl r4, r4, #5 @@ -952,7 +952,7 @@ MOD57_021D7CA4: ; 0x021D7CA4 mov r1, #0 add r2, sp, #0x14 mov r3, #0x19 - bl FUN_02006C08 + bl GfGfxLoader_GetPlttData add r5, r0, #0 ldr r0, [sp, #0x14] mov r1, #2 @@ -979,7 +979,7 @@ MOD57_021D7CA4: ; 0x021D7CA4 mov r1, #0xa add r2, sp, #0x10 mov r3, #0x19 - bl FUN_02006C08 + bl GfGfxLoader_GetPlttData add r5, r0, #0 ldr r0, [sp, #0x10] mov r1, #2 @@ -1010,22 +1010,22 @@ MOD57_021D7CA4: ; 0x021D7CA4 mov r1, #0x1b mov r3, #0x19 str r2, [sp] - bl UncompressFromNarc + bl GfGfxLoader_LoadFromNarc ldr r1, _021D7ECC ; =0x000030B8 str r0, [r4, r1] ldr r0, [r4, r1] cmp r0, #0 bne _021D7D4C - bl ErrorHandling + bl GF_AssertFail _021D7D4C: ldr r1, _021D7ECC ; =0x000030B8 ldr r0, [r4, r1] add r1, r1, #4 add r1, r4, r1 - bl FUN_020B0030 + bl NNS_G2dGetUnpackedBGCharacterData cmp r0, #0 bne _021D7D60 - bl ErrorHandling + bl GF_AssertFail _021D7D60: add r0, r4, #0 add r0, #0xb4 @@ -1041,7 +1041,7 @@ _021D7D60: mov r1, #0x23 mov r2, #0 add r3, r4, r3 - bl FUN_02006BDC + bl GfGfxLoader_GetScrnData ldr r1, _021D7ED4 ; =0x000032F8 str r0, [r4, r1] b _021D7DF2 @@ -1052,7 +1052,7 @@ _021D7D86: mov r1, #0x24 mov r2, #0 add r3, r4, r3 - bl FUN_02006BDC + bl GfGfxLoader_GetScrnData ldr r1, _021D7ED4 ; =0x000032F8 str r0, [r4, r1] b _021D7DF2 @@ -1064,22 +1064,22 @@ _021D7D9C: mov r0, #0x33 mov r3, #0x19 str r2, [sp] - bl UncompressFromNarc + bl GfGfxLoader_LoadFromNarc ldr r1, _021D7ECC ; =0x000030B8 str r0, [r4, r1] ldr r0, [r4, r1] cmp r0, #0 bne _021D7DBC - bl ErrorHandling + bl GF_AssertFail _021D7DBC: ldr r1, _021D7ECC ; =0x000030B8 ldr r0, [r4, r1] add r1, r1, #4 add r1, r4, r1 - bl FUN_020B0030 + bl NNS_G2dGetUnpackedBGCharacterData cmp r0, #0 bne _021D7DD0 - bl ErrorHandling + bl GF_AssertFail _021D7DD0: ldr r3, _021D7ED0 ; =0x000032FC mov r0, #0x19 @@ -1088,7 +1088,7 @@ _021D7DD0: mov r1, #0x2a mov r2, #0 add r3, r4, r3 - bl FUN_02006BDC + bl GfGfxLoader_GetScrnData ldr r1, _021D7ED4 ; =0x000032F8 str r0, [r4, r1] add r0, r4, #0 @@ -1109,7 +1109,7 @@ _021D7DF2: mov r0, #0x33 mov r1, #0x17 mov r3, #6 - bl FUN_0200687C + bl GfGfxLoader_LoadCharData mov r0, #0 str r0, [sp] str r0, [sp, #4] @@ -1120,7 +1120,7 @@ _021D7DF2: mov r0, #0x33 mov r1, #0x1e mov r3, #6 - bl FUN_020068C8 + bl GfGfxLoader_LoadScrnData mov r0, #0 str r0, [sp] str r0, [sp, #4] @@ -1131,7 +1131,7 @@ _021D7DF2: mov r0, #0x33 mov r1, #0x18 mov r3, #5 - bl FUN_0200687C + bl GfGfxLoader_LoadCharData mov r0, #0 str r0, [sp] str r0, [sp, #4] @@ -1142,7 +1142,7 @@ _021D7DF2: mov r0, #0x33 mov r1, #0x20 mov r3, #5 - bl FUN_020068C8 + bl GfGfxLoader_LoadScrnData mov r0, #0 str r0, [sp] str r0, [sp, #4] @@ -1152,7 +1152,7 @@ _021D7DF2: ldr r2, [r4] mov r0, #0x33 mov r3, #2 - bl FUN_0200687C + bl GfGfxLoader_LoadCharData mov r0, #0 str r0, [sp] str r0, [sp, #4] @@ -1163,7 +1163,7 @@ _021D7DF2: mov r0, #0x33 mov r1, #0x21 mov r3, #2 - bl FUN_020068C8 + bl GfGfxLoader_LoadScrnData mov r0, #0 str r0, [sp] str r0, [sp, #4] @@ -1174,7 +1174,7 @@ _021D7DF2: mov r0, #0x33 mov r1, #0x1a mov r3, #3 - bl FUN_0200687C + bl GfGfxLoader_LoadCharData mov r0, #0 str r0, [sp] str r0, [sp, #4] @@ -1185,7 +1185,7 @@ _021D7DF2: mov r0, #0x33 mov r1, #0x22 mov r3, #3 - bl FUN_020068C8 + bl GfGfxLoader_LoadScrnData add r0, r4, #0 add r0, #0xb4 ldr r0, [r0] @@ -1327,7 +1327,7 @@ _021D7FB0: mov r0, #0x33 mov r1, #0x1f mov r3, #6 - bl FUN_020068C8 + bl GfGfxLoader_LoadScrnData add r0, r4, #4 add r1, r5, #0 mov r2, #6 @@ -1359,7 +1359,7 @@ _021D8006: mov r0, #0x33 mov r1, #0x1e mov r3, #6 - bl FUN_020068C8 + bl GfGfxLoader_LoadScrnData add r0, r4, #4 mov r1, #7 mov r2, #0xa @@ -2000,7 +2000,7 @@ MOD57_021D84AC: ; 0x021D84AC add r6, r0, #0 cmp r7, r6 bls _021D850C - bl ErrorHandling + bl GF_AssertFail _021D850C: cmp r7, r6 bhs _021D8578 @@ -2292,7 +2292,7 @@ _021D8732: mov r0, #4 pop {r3, pc} _021D873A: - bl ErrorHandling + bl GF_AssertFail mov r0, #0 pop {r3, pc} .align 2, 0 @@ -2689,7 +2689,7 @@ MOD57_021D89F0: ; 0x021D89F0 add r2, r1, #0 add r3, r1, #0 add r7, r0, #0 - bl FUN_020196F4 + bl FillWindowPixelRect mov r1, #0 mov r0, #0x88 str r0, [sp] @@ -2699,7 +2699,7 @@ MOD57_021D89F0: ; 0x021D89F0 add r0, #0x10 add r2, r1, #0 add r3, r1, #0 - bl FUN_020196F4 + bl FillWindowPixelRect mov r1, #0 mov r0, #0x88 str r0, [sp] @@ -2709,7 +2709,7 @@ MOD57_021D89F0: ; 0x021D89F0 add r0, #0x20 add r2, r1, #0 add r3, r1, #0 - bl FUN_020196F4 + bl FillWindowPixelRect mov r1, #0 mov r0, #0x88 str r0, [sp] @@ -2719,7 +2719,7 @@ MOD57_021D89F0: ; 0x021D89F0 add r0, #0x30 add r2, r1, #0 add r3, r1, #0 - bl FUN_020196F4 + bl FillWindowPixelRect mov r1, #0 mov r0, #0x88 str r0, [sp] @@ -2729,7 +2729,7 @@ MOD57_021D89F0: ; 0x021D89F0 add r0, #0x40 add r2, r1, #0 add r3, r1, #0 - bl FUN_020196F4 + bl FillWindowPixelRect mov r1, #0 mov r0, #0xe0 str r0, [sp] @@ -2739,7 +2739,7 @@ MOD57_021D89F0: ; 0x021D89F0 add r0, #0x50 add r2, r1, #0 add r3, r1, #0 - bl FUN_020196F4 + bl FillWindowPixelRect mov r1, #0 mov r0, #0xe0 str r0, [sp] @@ -2749,7 +2749,7 @@ MOD57_021D89F0: ; 0x021D89F0 add r0, #0x60 add r2, r1, #0 add r3, r1, #0 - bl FUN_020196F4 + bl FillWindowPixelRect ldr r2, _021D8CEC ; =0x0000022D mov r0, #0 mov r1, #0x1a @@ -3042,7 +3042,7 @@ MOD57_021D8CF8: ; 0x021D8CF8 add r0, #0x70 add r2, r1, #0 add r3, r1, #0 - bl FUN_020196F4 + bl FillWindowPixelRect mov r1, #0 mov r0, #0xe0 str r0, [sp] @@ -3052,7 +3052,7 @@ MOD57_021D8CF8: ; 0x021D8CF8 add r0, #0x80 add r2, r1, #0 add r3, r1, #0 - bl FUN_020196F4 + bl FillWindowPixelRect mov r1, #0 mov r0, #0xe0 str r0, [sp] @@ -3062,7 +3062,7 @@ MOD57_021D8CF8: ; 0x021D8CF8 add r0, #0x90 add r2, r1, #0 add r3, r1, #0 - bl FUN_020196F4 + bl FillWindowPixelRect mov r1, #0 mov r0, #0xe0 str r0, [sp] @@ -3072,7 +3072,7 @@ MOD57_021D8CF8: ; 0x021D8CF8 add r0, #0xa0 add r2, r1, #0 add r3, r1, #0 - bl FUN_020196F4 + bl FillWindowPixelRect ldr r2, _021D8FAC ; =0x0000022D mov r0, #0 mov r1, #0x1a @@ -3442,7 +3442,7 @@ MOD57_021D905C: ; 0x021D905C ldr r0, [r5, #0x18] cmp r0, #0 bne _021D906E - bl ErrorHandling + bl GF_AssertFail _021D906E: ldr r0, [r5, #0x18] bl GetIGTHours @@ -3455,7 +3455,7 @@ _021D906E: add r0, #0x50 mov r2, #0xb8 add r3, r1, #0 - bl FUN_020196F4 + bl FillWindowPixelRect ldr r2, _021D913C ; =0x0000022D mov r0, #0 mov r1, #0x1a @@ -3558,7 +3558,7 @@ _021D9164: mov r1, #0 mov r2, #0xcd add r3, r1, #0 - bl FUN_020196F4 + bl FillWindowPixelRect add r0, r4, #0 bl CopyWindowToVram add sp, #0x10 @@ -3573,7 +3573,7 @@ MOD57_021D9184: ; 0x021D9184 sub sp, #0x3c add r7, r0, #0 bl MOD57_021D9578 - bl FUN_020B0FC0 + bl NNS_G2dInitOamManagerModule mov r0, #0 str r0, [sp] mov r1, #0x80 @@ -3709,17 +3709,17 @@ _021D9290: beq _021D92CA ldr r1, [sp, #0x18] add r1, r1, r6 - bl FUN_020B0138 + bl NNS_G2dGetUnpackedPaletteData cmp r0, #0 bne _021D92CE mov r0, #0x1e lsl r0, r0, #4 ldr r0, [r5, r0] bl FreeToHeap - bl ErrorHandling + bl GF_AssertFail b _021D92CE _021D92CA: - bl ErrorHandling + bl GF_AssertFail _021D92CE: add r0, r4, #1 lsl r0, r0, #0x18 @@ -4011,11 +4011,11 @@ MOD57_021D951C: ; 0x021D951C add r6, r2, #0 cmp r4, #8 blo _021D952E - bl ErrorHandling + bl GF_AssertFail _021D952E: cmp r6, #3 bls _021D9536 - bl ErrorHandling + bl GF_AssertFail _021D9536: lsl r7, r4, #2 mov r0, #0x57 @@ -4024,7 +4024,7 @@ _021D9536: ldr r0, [r1, r0] bl FUN_02020354 mov r1, #1 - bl FUN_020B19C4 + bl NNS_G2dGetImagePaletteLocation str r0, [sp] lsl r0, r4, #5 str r0, [sp, #4] diff --git a/arm9/modules/58/asm/module_58.s b/arm9/modules/58/asm/module_58.s index 93c1c39d..eb13ddb7 100644 --- a/arm9/modules/58/asm/module_58.s +++ b/arm9/modules/58/asm/module_58.s @@ -580,7 +580,7 @@ MOD58_021D9F14: ; 0x021D9F14 mov r0, #0x5f add r2, r1, #0 add r3, r1, #0 - bl FUN_02006930 + bl GfGfxLoader_GXLoadPal mov r0, #0x40 str r0, [sp] mov r0, #0x27 @@ -589,7 +589,7 @@ MOD58_021D9F14: ; 0x021D9F14 mov r1, #2 mov r2, #4 mov r3, #0 - bl FUN_02006930 + bl GfGfxLoader_GXLoadPal mov r1, #0x1a mov r0, #0 lsl r1, r1, #4 @@ -618,7 +618,7 @@ MOD58_021D9F14: ; 0x021D9F14 mov r1, #3 add r2, r4, #0 mov r3, #2 - bl FUN_0200687C + bl GfGfxLoader_LoadCharData mov r0, #0 str r0, [sp] mov r0, #6 @@ -632,7 +632,7 @@ MOD58_021D9F14: ; 0x021D9F14 mov r1, #5 add r2, r4, #0 mov r3, #2 - bl FUN_020068C8 + bl GfGfxLoader_LoadScrnData mov r0, #0 str r0, [sp] mov r0, #2 @@ -646,7 +646,7 @@ MOD58_021D9F14: ; 0x021D9F14 mov r1, #4 add r2, r4, #0 mov r3, #5 - bl FUN_0200687C + bl GfGfxLoader_LoadCharData mov r0, #0 str r0, [sp] mov r0, #6 @@ -660,7 +660,7 @@ MOD58_021D9F14: ; 0x021D9F14 mov r1, #6 add r2, r4, #0 mov r3, #5 - bl FUN_020068C8 + bl GfGfxLoader_LoadScrnData ldr r0, [r5, #0xc] bl Options_GetFrame lsl r0, r0, #0x18 @@ -715,7 +715,7 @@ MOD58_021DA044: ; 0x021DA044 push {r4, r5, r6, r7, lr} sub sp, #0x14 add r5, r0, #0 - bl FUN_020B0FC0 + bl NNS_G2dInitOamManagerModule mov r0, #0 str r0, [sp] mov r1, #0x7e @@ -1077,7 +1077,7 @@ MOD58_021DA30C: ; 0x021DA30C lsl r0, r0, #2 add r0, r5, r0 mov r1, #0xf - bl FUN_02019620 + bl FillWindowPixelBuffer mov r0, #9 str r0, [sp] mov r0, #0x18 @@ -1097,7 +1097,7 @@ MOD58_021DA30C: ; 0x021DA30C lsl r0, r0, #2 add r0, r5, r0 mov r1, #2 - bl FUN_02019620 + bl FillWindowPixelBuffer mov r0, #0x15 str r0, [sp] mov r0, #8 @@ -1118,7 +1118,7 @@ MOD58_021DA30C: ; 0x021DA30C lsl r0, r0, #2 add r0, r5, r0 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, _021DA4BC ; =0x000E0702 mov r2, #1 str r0, [sp] @@ -1189,7 +1189,7 @@ _021DA3C2: lsl r0, r0, #2 add r0, r5, r0 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer mov r1, #0 str r1, [sp] mov r3, #0xe0 @@ -1234,7 +1234,7 @@ _021DA46A: bl FUN_02019064 add r0, r4, #0 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, [sp, #0x14] add r7, #0x14 add r0, r0, #1 @@ -1646,7 +1646,7 @@ _021DA7A4: lsl r0, r0, #2 add r0, r5, r0 mov r1, #2 - bl FUN_02019620 + bl FillWindowPixelBuffer mov r0, #0xb1 lsl r0, r0, #2 add r0, r5, r0 @@ -1780,7 +1780,7 @@ _021DA888: mov r1, ip lsr r2, r2, #0x10 lsr r3, r3, #0x10 - bl FUN_02019658 + bl BlitBitmapRectToWindow add sp, #0x1c pop {r4, r5, r6, r7, pc} thumb_func_end MOD58_021DA844 @@ -2217,7 +2217,7 @@ MOD58_021DAB94: ; 0x021DAB94 lsl r0, r0, #2 add r0, r5, r0 mov r1, #0xf - bl FUN_02019620 + bl FillWindowPixelBuffer mov r0, #0xb5 lsl r0, r0, #2 add r0, r5, r0 @@ -2306,7 +2306,7 @@ _021DAC62: lsl r0, r0, #0xa cmp r7, r0 blt _021DAC6E - bl ErrorHandling + bl GF_AssertFail _021DAC6E: mov r0, #6 add r6, r6, #1 diff --git a/arm9/modules/59/asm/mod59_021D74E0_asm.s b/arm9/modules/59/asm/mod59_021D74E0_asm.s index c86d2c94..5604bf3c 100644 --- a/arm9/modules/59/asm/mod59_021D74E0_asm.s +++ b/arm9/modules/59/asm/mod59_021D74E0_asm.s @@ -883,7 +883,7 @@ _021D7C5E: add r0, #0x1c mov r1, #0xf add r3, r2, #0 - bl FUN_020196F4 + bl FillWindowPixelRect add r0, r5, #0 ldr r2, _021D7D60 ; =0x000003E2 add r0, #0x1c @@ -1051,7 +1051,7 @@ _021D7DC4: bl FUN_02019150 ldr r1, [r5] add r0, r6, #0 - bl ListMenu_ctor + bl ListMenuItems_ctor mov r7, #0 str r0, [r5, #0x44] cmp r6, #0 @@ -1061,7 +1061,7 @@ _021D7DDE: ldr r1, [r5, #0x4c] ldr r2, [r4] ldr r3, [r4, #4] - bl ListMenu_ItemFromMsgData + bl ListMenuItems_AppendFromMsgData add r7, r7, #1 add r4, #8 cmp r7, r6 @@ -1096,7 +1096,7 @@ _021D7DF2: lsl r3, r3, #0x18 add r2, r1, #0 lsr r3, r3, #0x18 - bl FUN_020010A8 + bl ListMenuInit str r0, [r5, #0x40] ldr r0, [sp, #0x10] ldr r2, _021D7EC4 ; =0x000003D9 @@ -1111,7 +1111,7 @@ _021D7DF2: b _021D7E96 _021D7E4C: ldr r0, [r5, #0x40] - bl FUN_02001204 + bl ListMenu_ProcessInput mov r1, #0 mvn r1, r1 str r0, [r5, #0x48] @@ -1133,9 +1133,9 @@ _021D7E66: mov r1, #0 ldr r0, [r5, #0x40] add r2, r1, #0 - bl FUN_02001300 + bl DestroyListMenu ldr r0, [r5, #0x44] - bl ListMenu_dtor + bl ListMenuItems_dtor ldr r0, _021D7EC8 ; =0x000005DC bl FUN_020054C8 mov r0, #0 @@ -1234,7 +1234,7 @@ _021D7EFA: add r0, #0x1c add r2, r1, #0 add r3, r1, #0 - bl FUN_020196F4 + bl FillWindowPixelRect add r1, r5, #0 str r1, [sp] ldr r0, _021D8048 ; =0x00010200 @@ -1273,7 +1273,7 @@ _021D7F7C: add r0, #0x1c add r2, r1, #0 add r3, r1, #0 - bl FUN_020196F4 + bl FillWindowPixelRect add r1, r5, #0 str r1, [sp] ldr r0, _021D804C ; =0x000F0200 @@ -1367,7 +1367,7 @@ MOD59_021D8058: ; 0x021D8058 str r0, [sp, #0xc] ldr r2, [r5, #0x18] mov r0, #0x7d - bl FUN_0200687C + bl GfGfxLoader_LoadCharData mov r0, #0 ldr r3, [r5] mov r1, #0x20 @@ -1383,7 +1383,7 @@ MOD59_021D8058: ; 0x021D8058 ldr r2, [r5, #0x18] mov r0, #0x7d mov r3, #7 - bl FUN_0200687C + bl GfGfxLoader_LoadCharData ldr r0, _021D80F8 ; =gGameVersion ldrb r0, [r0] cmp r0, #0xa @@ -1402,7 +1402,7 @@ _021D80AA: str r0, [sp, #4] mov r0, #0x7d add r3, r2, #0 - bl FUN_02006930 + bl GfGfxLoader_GXLoadPal mov r0, #0xa0 str r0, [sp] ldr r0, [r5] @@ -1411,7 +1411,7 @@ _021D80AA: mov r0, #0x7d mov r2, #4 mov r3, #0 - bl FUN_02006930 + bl GfGfxLoader_GXLoadPal add r0, r5, #0 bl MOD59_021D80FC add r0, r5, #0 @@ -1460,7 +1460,7 @@ MOD59_021D80FC: ; 0x021D80FC ldr r2, [r3, #0x18] mov r0, #0x7d mov r3, #3 - bl FUN_020068C8 + bl GfGfxLoader_LoadScrnData _021D8138: add sp, #0x24 pop {r4, r5, pc} @@ -1500,7 +1500,7 @@ _021D814C: ldr r2, [r4, #0x18] mov r0, #0x7d mov r3, #1 - bl FUN_0200687C + bl GfGfxLoader_LoadCharData mov r0, #0x20 str r0, [sp] ldr r0, [r4] @@ -1514,7 +1514,7 @@ _021D814C: add r1, sp, #0x14 ldr r1, [r1, r2] mov r2, #0 - bl FUN_02006930 + bl GfGfxLoader_GXLoadPal mov r0, #0 str r0, [sp] str r0, [sp, #4] @@ -1525,7 +1525,7 @@ _021D814C: ldr r2, [r4, #0x18] mov r0, #0x7d mov r3, #1 - bl FUN_020068C8 + bl GfGfxLoader_LoadScrnData add r0, r4, #0 mov r1, #1 mov r2, #7 @@ -1550,7 +1550,7 @@ _021D81BE: ldr r2, [r4, #0x18] mov r0, #0x7d mov r3, #2 - bl FUN_0200687C + bl GfGfxLoader_LoadCharData mov r0, #0x20 str r0, [sp] ldr r0, [r4] @@ -1565,7 +1565,7 @@ _021D81BE: ldr r1, [r1, r2] mov r2, #0 add r3, #0x83 - bl FUN_02006930 + bl GfGfxLoader_GXLoadPal mov r0, #0 str r0, [sp] str r0, [sp, #4] @@ -1576,7 +1576,7 @@ _021D81BE: ldr r2, [r4, #0x18] mov r0, #0x7d mov r3, #2 - bl FUN_020068C8 + bl GfGfxLoader_LoadScrnData add r0, r4, #0 mov r1, #2 mov r2, #8 @@ -1618,7 +1618,7 @@ MOD59_021D8234: ; 0x021D8234 ldr r2, [r4, #0x18] mov r0, #0x7d mov r3, #7 - bl FUN_020068C8 + bl GfGfxLoader_LoadScrnData add r0, r4, #0 add r0, #0x8b ldrb r0, [r0] @@ -1813,7 +1813,7 @@ MOD59_021D83F8: ; 0x021D83F8 ldr r2, [r4, #0x18] mov r0, #0x7d mov r3, #6 - bl FUN_020068C8 + bl GfGfxLoader_LoadScrnData add r0, r4, #0 mov r1, #6 mov r2, #9 @@ -1826,7 +1826,7 @@ MOD59_021D83F8: ; 0x021D83F8 mov r0, #0x7d mov r2, #4 mov r3, #0xe0 - bl FUN_02006930 + bl GfGfxLoader_GXLoadPal ldr r3, [r4] mov r0, #6 mov r1, #0x20 @@ -1843,7 +1843,7 @@ MOD59_021D83F8: ; 0x021D83F8 ldr r2, [r4, #0x18] mov r0, #0x7d mov r3, #6 - bl FUN_0200687C + bl GfGfxLoader_LoadCharData add sp, #0x10 pop {r4, pc} .align 2, 0 @@ -2007,7 +2007,7 @@ _021D8546: lsl r1, r1, #2 ldr r1, [r2, r1] ldr r2, [r4, #0x18] - bl FUN_0200687C + bl GfGfxLoader_LoadCharData add sp, #0x30 pop {r3, r4, r5, pc} _021D858E: @@ -2070,7 +2070,7 @@ _021D85C2: lsl r1, r1, #2 ldr r1, [r2, r1] ldr r2, [r4, #0x18] - bl FUN_0200687C + bl GfGfxLoader_LoadCharData add sp, #0x30 pop {r3, r4, r5, pc} nop @@ -2167,7 +2167,7 @@ _021D8698: ldr r2, [r3, #0x18] mov r0, #0x7d mov r3, #1 - bl FUN_0200687C + bl GfGfxLoader_LoadCharData _021D86AE: add r0, r4, #0 add sp, #0x40 @@ -3374,7 +3374,7 @@ _021D90A2: str r0, [sp, #0xc] ldr r2, [r4, #0x18] mov r0, #0x7d - bl FUN_0200687C + bl GfGfxLoader_LoadCharData add r0, r4, #0 add r0, #0x94 ldr r0, [r0] diff --git a/arm9/modules/59/asm/mod59_021D9868.s b/arm9/modules/59/asm/mod59_021D9868.s index 6d2d6e6b..2925c404 100644 --- a/arm9/modules/59/asm/mod59_021D9868.s +++ b/arm9/modules/59/asm/mod59_021D9868.s @@ -289,7 +289,7 @@ _021D9A2C: str r0, [sp, #0xc] ldr r2, [r4, #4] mov r0, #0x88 - bl FUN_0200687C + bl GfGfxLoader_LoadCharData mov r3, #0 str r3, [sp] str r3, [sp, #4] @@ -299,7 +299,7 @@ _021D9A2C: str r0, [sp, #0xc] ldr r2, [r4, #4] mov r0, #0x88 - bl FUN_020068C8 + bl GfGfxLoader_LoadScrnData ldr r5, _021D9BC4 ; =0x021DA064 add r3, sp, #0x2c ldmia r5!, {r0, r1} @@ -325,7 +325,7 @@ _021D9A2C: ldr r2, [r4, #4] mov r0, #0x88 mov r3, #1 - bl FUN_0200687C + bl GfGfxLoader_LoadCharData mov r0, #0 str r0, [sp] str r0, [sp, #4] @@ -336,7 +336,7 @@ _021D9A2C: ldr r2, [r4, #4] mov r0, #0x88 mov r3, #1 - bl FUN_020068C8 + bl GfGfxLoader_LoadScrnData ldr r5, _021D9BC8 ; =0x021DA0B8 add r3, sp, #0x10 ldmia r5!, {r0, r1} @@ -361,7 +361,7 @@ _021D9A2C: str r0, [sp, #0xc] ldr r2, [r4, #4] mov r0, #0x88 - bl FUN_0200687C + bl GfGfxLoader_LoadCharData mov r0, #0 str r0, [sp] str r0, [sp, #4] @@ -372,7 +372,7 @@ _021D9A2C: ldr r2, [r4, #4] mov r0, #0x88 add r3, r1, #0 - bl FUN_020068C8 + bl GfGfxLoader_LoadScrnData mov r2, #0 str r2, [sp] ldr r0, [r4] @@ -380,7 +380,7 @@ _021D9A2C: str r0, [sp, #4] mov r0, #0x88 add r3, r2, #0 - bl FUN_02006930 + bl GfGfxLoader_GXLoadPal ldr r2, [r4] mov r0, #0 mov r1, #0x20 @@ -536,7 +536,7 @@ _021D9C9A: add r0, #0x10 add r2, r1, #0 add r3, r1, #0 - bl FUN_020196F4 + bl FillWindowPixelRect add r0, r5, #0 add r1, r6, #0 add r2, r0, #0 diff --git a/arm9/modules/60/asm/module_60.s b/arm9/modules/60/asm/module_60.s index 418fa446..8c6d04fc 100644 --- a/arm9/modules/60/asm/module_60.s +++ b/arm9/modules/60/asm/module_60.s @@ -403,7 +403,7 @@ MOD60_021D77D4: ; 0x021D77D4 str r0, [r4, #0x10] _021D7804: bl FUN_0200BC30 - bl FUN_020AEEB8 + bl NNS_GfdDoVramTransfer ldr r0, [r4, #0x14] bl FUN_0201AB60 ldr r3, _021D782C ; =0x027E0000 @@ -688,7 +688,7 @@ MOD60_021D7A40: ; 0x021D7A40 bl NARC_ReadWholeMember add r0, r6, #0 add r1, sp, #0x20 - bl FUN_020B0088 + bl NNS_G2dGetUnpackedCharacterData ldr r3, [sp, #0x20] mov r1, #0 str r1, [sp] @@ -719,7 +719,7 @@ MOD60_021D7A40: ; 0x021D7A40 bl NARC_ReadWholeMember add r0, r6, #0 add r1, sp, #0x1c - bl FUN_020B0138 + bl NNS_G2dGetUnpackedPaletteData ldr r1, [sp, #0x1c] mov r0, #0 ldr r1, [r1, #0xc] @@ -748,7 +748,7 @@ MOD60_021D7A40: ; 0x021D7A40 add r1, r5, #0 ldr r0, [r5, #0x24] add r1, #0x28 - bl FUN_020B0180 + bl NNS_G2dGetUnpackedScreenData add r0, r4, #0 bl NARC_dtor mov r3, #0 @@ -922,15 +922,15 @@ MOD60_021D7BA4: ; 0x021D7BA4 add r0, r4, #0 add r0, #0x2c mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer add r0, r4, #0 add r0, #0x3c mov r1, #0xff - bl FUN_02019620 + bl FillWindowPixelBuffer add r0, r4, #0 add r0, #0x4c mov r1, #0xff - bl FUN_02019620 + bl FillWindowPixelBuffer add r0, r4, #0 add r0, #0x4c bl FUN_020192B8 @@ -980,7 +980,7 @@ _021D7CF0: bl FUN_02019570 add r0, r5, r4 add r1, r7, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer add r0, r5, r4 bl FUN_020192B8 add r0, r5, r4 @@ -1209,7 +1209,7 @@ MOD60_021D7EA4: ; 0x021D7EA4 mov r1, #0xff lsr r2, r2, #0x10 lsr r3, r3, #0x10 - bl FUN_020196F4 + bl FillWindowPixelRect ldr r0, [sp, #0x14] cmp r0, #5 bne _021D7F26 diff --git a/arm9/modules/61/asm/module_61.s b/arm9/modules/61/asm/module_61.s index 3afc1e03..ed9e0e05 100644 --- a/arm9/modules/61/asm/module_61.s +++ b/arm9/modules/61/asm/module_61.s @@ -305,7 +305,7 @@ _021D7702: add r0, r5, #0 add r0, #0x94 mov r1, #0xff - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r1, [r5] mov r0, #0x4c bl String_ctor @@ -432,7 +432,7 @@ _021D77F2: add r0, r5, #0 add r0, #0x94 mov r1, #0xff - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r1, [r5] mov r0, #0x4c bl String_ctor @@ -737,7 +737,7 @@ _021D7A7A: beq _021D7A88 bl FUN_0200BC30 _021D7A88: - bl FUN_020AEEB8 + bl NNS_GfdDoVramTransfer ldr r0, [r4, #0x18] bl FUN_0201AB60 ldr r3, _021D7AA0 ; =0x027E0000 @@ -1087,7 +1087,7 @@ MOD61_021D7CE8: ; 0x021D7CE8 bl NARC_ReadWholeMember add r0, r7, #0 add r1, sp, #0x28 - bl FUN_020B0088 + bl NNS_G2dGetUnpackedCharacterData ldr r3, [sp, #0x28] mov r0, #0 str r0, [sp] @@ -1119,7 +1119,7 @@ MOD61_021D7CE8: ; 0x021D7CE8 bl NARC_ReadWholeMember add r0, r4, #0 add r1, sp, #0x24 - bl FUN_020B0138 + bl NNS_G2dGetUnpackedPaletteData ldr r2, [sp, #0x24] mov r0, #4 ldr r1, [r2, #0xc] @@ -1253,7 +1253,7 @@ _021D7E00: add r1, r5, #0 ldr r0, [r5, #0x34] add r1, #0x3c - bl FUN_020B0180 + bl NNS_G2dGetUnpackedScreenData mov r0, #0x4f mov r1, #0x24 bl GetNarcMemberSizeByIdPair @@ -1268,7 +1268,7 @@ _021D7E00: add r1, r5, #0 ldr r0, [r5, #0x38] add r1, #0x40 - bl FUN_020B0180 + bl NNS_G2dGetUnpackedScreenData add r0, r6, #0 bl NARC_dtor mov r3, #0 @@ -1484,7 +1484,7 @@ MOD61_021D7FF4: ; 0x021D7FF4 _021D80BE: add r0, r5, #0 add r1, r6, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer cmp r4, #5 bge _021D80D0 add r0, r5, #0 diff --git a/arm9/modules/62/asm/module_62.s b/arm9/modules/62/asm/module_62.s index d65fb117..26b7d486 100644 --- a/arm9/modules/62/asm/module_62.s +++ b/arm9/modules/62/asm/module_62.s @@ -550,7 +550,7 @@ MOD62_0222D9A0: ; 0x0222D9A0 ldr r1, [r2, r1] cmp r1, #1 bne _0222D9CC - bl ErrorHandling + bl GF_AssertFail add sp, #0x34 mov r0, #0 pop {r4, r5, r6, r7, pc} @@ -690,7 +690,7 @@ _0222DADA: str r0, [r4] b _0222DAE6 _0222DAE2: - bl ErrorHandling + bl GF_AssertFail _0222DAE6: mov r0, #1 pop {r3, r4, r5, r6, r7, pc} @@ -1152,7 +1152,7 @@ MOD62_0222DE00: ; 0x0222DE00 bl NewString_ReadMsgData str r0, [sp, #0x18] add r0, sp, #0x1c - bl FUN_0201901C + bl InitWindow mov r0, #0 str r0, [sp] str r0, [sp, #4] @@ -1815,14 +1815,14 @@ _0222E35C: .word 0x04000580 thumb_func_start MOD62_0222E360 MOD62_0222E360: ; 0x0222E360 push {r3, r4, r5, lr} - ldr r3, _0222E398 ; =UNK_021064B8 + ldr r3, _0222E398 ; =NNS_GfdDefaultFuncAllocTexVram mov r0, #2 mov r1, #0 ldr r3, [r3] lsl r0, r0, #0xe add r2, r1, #0 blx r3 - ldr r3, _0222E39C ; =UNK_021064C0 + ldr r3, _0222E39C ; =NNS_GfdDefaultFuncAllocPlttVram mov r1, #0 add r4, r0, #0 ldr r3, [r3] @@ -1832,17 +1832,17 @@ MOD62_0222E360: ; 0x0222E360 add r5, r0, #0 cmp r4, #0 bne _0222E388 - bl ErrorHandling + bl GF_AssertFail _0222E388: cmp r5, #0 bne _0222E390 - bl ErrorHandling + bl GF_AssertFail _0222E390: bl FUN_02012CC8 pop {r3, r4, r5, pc} nop -_0222E398: .word UNK_021064B8 -_0222E39C: .word UNK_021064C0 +_0222E398: .word NNS_GfdDefaultFuncAllocTexVram +_0222E39C: .word NNS_GfdDefaultFuncAllocPlttVram thumb_func_end MOD62_0222E360 thumb_func_start MOD62_0222E3A0 @@ -1853,7 +1853,7 @@ MOD62_0222E3A0: ; 0x0222E3A0 cmp r0, #0 ble _0222E3B6 bl FUN_020222AC - bl FUN_020B02C8 + bl NNS_G2dSetupSoftwareSpriteCamera _0222E3B6: bl FUN_02013388 mov r0, #1 @@ -1936,7 +1936,7 @@ _0222E442: add r0, r4, r0 asr r7, r0, #1 ldr r0, [sp, #0x18] - bl FUN_0201901C + bl InitWindow lsl r0, r5, #0x18 lsr r0, r0, #0x18 str r0, [sp] @@ -1957,7 +1957,7 @@ _0222E442: bl FUN_02019064 add r0, r7, #0 mov r1, #0x35 - bl ListMenu_ctor + bl ListMenuItems_ctor mov r2, #0x67 ldr r1, [sp, #0x1c] lsl r2, r2, #2 @@ -1990,7 +1990,7 @@ _0222E49A: ldr r0, [r1, r0] ldr r2, [r2, #4] add r1, r4, #0 - bl ListMenu_AddItem + bl ListMenuItems_AddItem add r0, r4, #0 bl String_dtor add r6, r6, #1 @@ -2454,7 +2454,7 @@ MOD62_0222E7E8: ; 0x0222E7E8 bl FUN_0200BBF0 cmp r0, #0 bne _0222E852 - bl ErrorHandling + bl GF_AssertFail _0222E852: ldr r0, [r4, #8] ldr r1, [r4, #0xc] @@ -2462,7 +2462,7 @@ _0222E852: bl FUN_0200BF60 cmp r0, #0 bne _0222E864 - bl ErrorHandling + bl GF_AssertFail _0222E864: add sp, #0x4c pop {r3, r4, r5, r6, pc} @@ -3251,7 +3251,7 @@ MOD62_0222EE78: ; 0x0222EE78 cmp r5, r1 bne _0222EE96 mov r1, #0xf - bl FUN_02019620 + bl FillWindowPixelBuffer add r0, r4, #0 bl CopyWindowToVram add sp, #0xc @@ -3268,7 +3268,7 @@ _0222EE96: add r5, r0, #0 add r0, r4, #0 mov r1, #0xf - bl FUN_02019620 + bl FillWindowPixelBuffer mov r1, #0 str r1, [sp] str r1, [sp, #4] @@ -3298,7 +3298,7 @@ MOD62_0222EEE0: ; 0x0222EEE0 add r0, r5, #0 add r4, r2, #0 add r6, r3, #0 - bl FUN_0201901C + bl InitWindow ldr r0, [sp, #0x28] lsl r2, r4, #0x18 lsl r0, r0, #0x18 @@ -3331,7 +3331,7 @@ MOD62_0222EEE0: ; 0x0222EEE0 bl FUN_0200D0BC add r0, r5, #0 mov r1, #0xf - bl FUN_02019620 + bl FillWindowPixelBuffer add r0, r5, #0 bl CopyWindowToVram add sp, #0x14 @@ -3347,7 +3347,7 @@ MOD62_0222EF44: ; 0x0222EF44 add r0, r5, #0 add r4, r2, #0 add r6, r3, #0 - bl FUN_0201901C + bl InitWindow ldr r0, [sp, #0x28] lsl r2, r4, #0x18 lsl r0, r0, #0x18 @@ -3377,7 +3377,7 @@ MOD62_0222EF44: ; 0x0222EF44 bl FUN_02019064 add r0, r5, #0 mov r1, #0xf - bl FUN_02019620 + bl FillWindowPixelBuffer add r0, r5, #0 bl CopyWindowToVram add sp, #0x14 @@ -3552,14 +3552,14 @@ _0222F0E2: bne _0222F0FE add r0, r5, #0 mov r1, #0xee - bl FUN_02019620 + bl FillWindowPixelBuffer add r0, r5, #0 bl CopyWindowToVram b _0222F152 _0222F0FE: add r0, r5, #0 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer mov r0, #0x64 mov r1, #0x35 bl String_ctor @@ -3621,7 +3621,7 @@ MOD62_0222F168: ; 0x0222F168 bne _0222F194 add r0, r5, r4 mov r1, #0xee - bl FUN_02019620 + bl FillWindowPixelBuffer add r0, r5, r4 bl CopyWindowToVram add sp, #0x14 @@ -3629,7 +3629,7 @@ MOD62_0222F168: ; 0x0222F168 _0222F194: add r0, r5, r4 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer mov r0, #0x64 mov r1, #0x35 bl String_ctor @@ -3693,7 +3693,7 @@ MOD62_0222F208: ; 0x0222F208 cmp r5, r1 bne _0222F226 mov r1, #0xf - bl FUN_02019620 + bl FillWindowPixelBuffer add r0, r4, #0 bl CopyWindowToVram add sp, #0xc @@ -3710,7 +3710,7 @@ _0222F226: add r5, r0, #0 add r0, r4, #0 mov r1, #0xf - bl FUN_02019620 + bl FillWindowPixelBuffer mov r1, #0 str r1, [sp] str r1, [sp, #4] @@ -3801,7 +3801,7 @@ MOD62_0222F2C8: ; 0x0222F2C8 ldr r2, [r2] add r1, #0xb1 mov r3, #2 - bl FUN_0200687C + bl GfGfxLoader_LoadCharData mov r0, #0 str r0, [sp] str r0, [sp, #4] @@ -3816,7 +3816,7 @@ MOD62_0222F2C8: ; 0x0222F2C8 ldr r2, [r2] add r1, #0xc1 mov r3, #2 - bl FUN_020068C8 + bl GfGfxLoader_LoadScrnData mov r1, #0 str r1, [sp] mov r0, #0x40 @@ -3844,7 +3844,7 @@ MOD62_0222F2C8: ; 0x0222F2C8 ldr r2, [r2] add r1, #0xb2 mov r3, #3 - bl FUN_0200687C + bl GfGfxLoader_LoadCharData mov r0, #0 str r0, [sp] str r0, [sp, #4] @@ -3858,7 +3858,7 @@ MOD62_0222F2C8: ; 0x0222F2C8 ldr r2, [r4] add r1, #0xc2 mov r3, #3 - bl FUN_020068C8 + bl GfGfxLoader_LoadScrnData add sp, #0x10 pop {r4, pc} thumb_func_end MOD62_0222F2C8 @@ -3882,7 +3882,7 @@ MOD62_0222F36C: ; 0x0222F36C ldr r2, [r2] add r1, #0xb0 mov r3, #5 - bl FUN_0200687C + bl GfGfxLoader_LoadCharData mov r0, #0 str r0, [sp] str r0, [sp, #4] @@ -3897,7 +3897,7 @@ MOD62_0222F36C: ; 0x0222F36C ldr r2, [r2] add r1, #0xc0 mov r3, #5 - bl FUN_020068C8 + bl GfGfxLoader_LoadScrnData mov r0, #1 str r0, [sp] mov r0, #0x40 @@ -3935,7 +3935,7 @@ MOD62_0222F3D4: ; 0x0222F3D4 ldr r2, [r2] add r1, #0xb0 mov r3, #7 - bl FUN_0200687C + bl GfGfxLoader_LoadCharData mov r0, #0 str r0, [sp] str r0, [sp, #4] @@ -3950,7 +3950,7 @@ MOD62_0222F3D4: ; 0x0222F3D4 ldr r2, [r2] add r1, #0xbf mov r3, #7 - bl FUN_020068C8 + bl GfGfxLoader_LoadScrnData mov r0, #1 str r0, [sp] mov r0, #0x40 @@ -4612,7 +4612,7 @@ MOD62_0222F904: ; 0x0222F904 mov r0, #0x67 lsl r0, r0, #2 ldr r0, [r4, r0] - bl ListMenu_dtor + bl ListMenuItems_dtor add r4, #0xfc add r0, r4, #0 bl FUN_02019178 @@ -5166,7 +5166,7 @@ _0222FD9A: bl FUN_0200C61C pop {r3, pc} _0222FDA2: - bl ErrorHandling + bl GF_AssertFail pop {r3, pc} thumb_func_end MOD62_0222FD70 @@ -5540,7 +5540,7 @@ _02230074: bl FUN_020054C8 pop {r4, r5, r6, pc} _022300A4: - bl ErrorHandling + bl GF_AssertFail _022300A8: pop {r4, r5, r6, pc} nop diff --git a/arm9/modules/63/asm/mod63_021D74E0.s b/arm9/modules/63/asm/mod63_021D74E0.s index a323b642..ea96bf3b 100644 --- a/arm9/modules/63/asm/mod63_021D74E0.s +++ b/arm9/modules/63/asm/mod63_021D74E0.s @@ -519,24 +519,24 @@ MOD63_021D78BC: ; 0x021D78BC bl FUN_0201B234 ldr r0, [r5, #0x60] mov r1, #0 - bl FUN_020BC4C8 + bl NNS_G3dGetAnmByIdx add r4, r0, #0 add r0, r5, #0 ldr r2, [r5, #0x58] add r0, #0x68 add r1, r4, #0 - bl FUN_020BB8D0 + bl NNS_G3dAllocAnmObj str r0, [r5, #0x64] ldr r0, [r5, #0x5c] - bl FUN_020BC0FC + bl NNS_G3dGetTex add r3, r0, #0 ldr r0, [r5, #0x64] ldr r2, [r5, #0x58] add r1, r4, #0 - bl FUN_020B8110 + bl NNS_G3dAnmObjInit ldr r1, [r5, #0x64] add r0, r5, #4 - bl FUN_020B7EFC + bl NNS_G3dRenderObjAddAnmObj add r4, r5, #0 add r6, sp, #0xc mov r3, #0 @@ -579,7 +579,7 @@ MOD63_021D7970: ; 0x021D7970 add r4, r0, #0 ldr r1, [r4, #0x64] add r0, #0x68 - bl thunk_FUN_020ae84c + bl NNS_G3dFreeAnmObj ldr r0, [r4, #0x60] bl FreeToHeap ldr r0, [r4, #0x5c] @@ -1006,10 +1006,10 @@ _021D7C52: ldrsh r2, [r5, r2] ldrsh r3, [r5, r3] mov r0, #0 - bl FUN_020B8418 + bl NNS_G3dGlbLightVector ldr r1, _021D7D68 ; =0x00007FFF mov r0, #0 - bl FUN_020B8404 + bl NNS_G3dGlbLightColor ldr r3, _021D7D6C ; =0x0000010E mov r0, #1 add r2, r3, #2 @@ -1017,10 +1017,10 @@ _021D7C52: add r3, r3, #4 ldrsh r2, [r5, r2] ldrsh r3, [r5, r3] - bl FUN_020B8418 + bl NNS_G3dGlbLightVector ldr r1, _021D7D68 ; =0x00007FFF mov r0, #1 - bl FUN_020B8404 + bl NNS_G3dGlbLightColor ldr r2, _021D7D60 ; =0x04000060 ldr r0, _021D7D64 ; =0xFFFFCFFF ldrh r1, [r2] @@ -1770,7 +1770,7 @@ _021D8272: str r1, [r0] ldr r1, _021D835C ; =0x00007FFF mov r0, #1 - bl FUN_020B8404 + bl NNS_G3dGlbLightColor add r0, r5, #0 add r1, r4, #0 add r0, #0xa8 @@ -1880,7 +1880,7 @@ MOD63_021D83A8: ; 0x021D83A8 add r2, r5, #0 add r3, r1, #0 str r4, [sp, #0xc] - bl FUN_0200687C + bl GfGfxLoader_LoadCharData mov r0, #0 str r0, [sp] str r0, [sp, #4] @@ -1890,7 +1890,7 @@ MOD63_021D83A8: ; 0x021D83A8 add r2, r5, #0 mov r3, #3 str r4, [sp, #0xc] - bl FUN_0200687C + bl GfGfxLoader_LoadCharData mov r0, #0 str r0, [sp] str r0, [sp, #4] @@ -1900,7 +1900,7 @@ MOD63_021D83A8: ; 0x021D83A8 add r2, r5, #0 mov r3, #7 str r4, [sp, #0xc] - bl FUN_020068C8 + bl GfGfxLoader_LoadScrnData mov r0, #0 str r0, [sp] str r0, [sp, #4] @@ -1910,7 +1910,7 @@ MOD63_021D83A8: ; 0x021D83A8 add r2, r5, #0 mov r3, #3 str r4, [sp, #0xc] - bl FUN_020068C8 + bl GfGfxLoader_LoadScrnData ldr r0, _021D85C8 ; =gGameVersion ldrb r7, [r0] cmp r7, #0xa ; VERSION_DIAMOND @@ -1929,14 +1929,14 @@ _021D8420: mov r0, #0x30 mov r2, #4 str r4, [sp, #4] - bl FUN_02006930 + bl GfGfxLoader_GXLoadPal mov r2, #0 str r2, [sp] ldr r1, [sp, #0x18] mov r0, #0x30 add r3, r2, #0 str r4, [sp, #4] - bl FUN_02006930 + bl GfGfxLoader_GXLoadPal cmp r7, #0xa bne _021D8448 mov r1, #1 @@ -1954,7 +1954,7 @@ _021D844C: add r2, r5, #0 mov r3, #6 str r4, [sp, #0xc] - bl FUN_0200687C + bl GfGfxLoader_LoadCharData mov r0, #0 str r0, [sp] mov r3, #1 @@ -1963,7 +1963,7 @@ _021D844C: mov r2, #6 lsl r3, r3, #0xe str r4, [sp, #4] - bl FUN_02006930 + bl GfGfxLoader_GXLoadPal mov r1, #0 str r1, [sp] str r1, [sp, #4] @@ -1972,7 +1972,7 @@ _021D844C: add r2, r5, #0 mov r3, #6 str r4, [sp, #0xc] - bl FUN_020068C8 + bl GfGfxLoader_LoadScrnData mov r0, #0 str r0, [sp] str r0, [sp, #4] @@ -1982,7 +1982,7 @@ _021D844C: add r2, r5, #0 mov r3, #5 str r4, [sp, #0xc] - bl FUN_0200687C + bl GfGfxLoader_LoadCharData mov r0, #0 str r0, [sp] mov r1, #0x10 @@ -1990,7 +1990,7 @@ _021D844C: mov r2, #6 lsl r3, r1, #9 str r4, [sp, #4] - bl FUN_02006930 + bl GfGfxLoader_GXLoadPal mov r0, #0 str r0, [sp] str r0, [sp, #4] @@ -2000,7 +2000,7 @@ _021D844C: add r2, r5, #0 mov r3, #5 str r4, [sp, #0xc] - bl FUN_020068C8 + bl GfGfxLoader_LoadScrnData mov r0, #0 str r0, [sp] str r0, [sp, #4] @@ -2010,7 +2010,7 @@ _021D844C: add r2, r5, #0 mov r3, #1 str r4, [sp, #0xc] - bl FUN_0200687C + bl GfGfxLoader_LoadCharData mov r0, #0 str r0, [sp] str r0, [sp, #4] @@ -2020,7 +2020,7 @@ _021D844C: add r2, r5, #0 mov r3, #1 str r4, [sp, #0xc] - bl FUN_020068C8 + bl GfGfxLoader_LoadScrnData mov r0, #0x60 str r0, [sp] mov r0, #0x30 @@ -2028,7 +2028,7 @@ _021D844C: mov r2, #0 mov r3, #0x20 str r4, [sp, #4] - bl FUN_02006930 + bl GfGfxLoader_GXLoadPal mov r0, #0 add r1, r0, #0 bl FUN_02017FE4 @@ -2064,7 +2064,7 @@ _021D844C: add r0, #0xac add r2, r1, #0 add r3, r1, #0 - bl FUN_020196F4 + bl FillWindowPixelRect add r0, r7, #0 mov r1, #0 add r2, r4, #0 @@ -2150,7 +2150,7 @@ _021D85FE: add r2, r7, #0 mov r3, #5 str r5, [sp, #0xc] - bl FUN_0200687C + bl GfGfxLoader_LoadCharData mov r0, #0 str r0, [sp] mov r0, #0x80 @@ -2158,7 +2158,7 @@ _021D85FE: mov r2, #6 lsl r3, r0, #6 str r5, [sp, #4] - bl FUN_02006930 + bl GfGfxLoader_GXLoadPal mov r0, #0 str r0, [sp] str r0, [sp, #4] @@ -2168,7 +2168,7 @@ _021D85FE: add r2, r7, #0 mov r3, #5 str r5, [sp, #0xc] - bl FUN_020068C8 + bl GfGfxLoader_LoadScrnData _021D863A: add sp, #0x10 pop {r3, r4, r5, r6, r7, pc} @@ -2260,7 +2260,7 @@ _021D86B2: lsl r1, r1, #0x10 mov r0, #1 lsr r1, r1, #0x10 - bl FUN_020B8404 + bl NNS_G3dGlbLightColor pop {r4, pc} .align 2, 0 _021D86DC: .word 0x00000116 diff --git a/arm9/modules/63/asm/mod63_021D8890.s b/arm9/modules/63/asm/mod63_021D8890.s index e501157b..6f6f8f75 100644 --- a/arm9/modules/63/asm/mod63_021D8890.s +++ b/arm9/modules/63/asm/mod63_021D8890.s @@ -417,14 +417,14 @@ MOD63_021D8BD8: ; 0x021D8BD8 add r3, r1, #0 bl FUN_02022318 str r0, [r4, #0x10] - ldr r3, _021D8C18 ; =UNK_021064B8 + ldr r3, _021D8C18 ; =NNS_GfdDefaultFuncAllocTexVram mov r0, #2 mov r1, #0 ldr r3, [r3] lsl r0, r0, #0xe add r2, r1, #0 blx r3 - ldr r3, _021D8C1C ; =UNK_021064C0 + ldr r3, _021D8C1C ; =NNS_GfdDefaultFuncAllocPlttVram mov r0, #0x80 ldr r3, [r3] mov r1, #0 @@ -434,8 +434,8 @@ MOD63_021D8BD8: ; 0x021D8BD8 pop {r4, pc} nop _021D8C14: .word MOD63_021D8C20 -_021D8C18: .word UNK_021064B8 -_021D8C1C: .word UNK_021064C0 +_021D8C18: .word NNS_GfdDefaultFuncAllocTexVram +_021D8C1C: .word NNS_GfdDefaultFuncAllocPlttVram thumb_func_end MOD63_021D8BD8 thumb_func_start MOD63_021D8C20 @@ -708,7 +708,7 @@ _021D8E36: mov r0, #1 pop {r3, r4, r5, pc} _021D8E42: - bl ErrorHandling + bl GF_AssertFail _021D8E46: ldr r0, [r5, #8] cmp r0, #0 @@ -849,7 +849,7 @@ MOD63_021D8F38: ; 0x021D8F38 mov r0, #0x80 mov r1, #0x13 mov r3, #2 - bl FUN_0200687C + bl GfGfxLoader_LoadCharData mov r0, #0 str r0, [sp] str r0, [sp, #4] @@ -860,7 +860,7 @@ MOD63_021D8F38: ; 0x021D8F38 mov r0, #0x80 mov r1, #0x13 mov r3, #6 - bl FUN_0200687C + bl GfGfxLoader_LoadCharData mov r0, #0 str r0, [sp] str r0, [sp, #4] @@ -871,7 +871,7 @@ MOD63_021D8F38: ; 0x021D8F38 mov r0, #0x80 mov r1, #0x14 mov r3, #2 - bl FUN_020068C8 + bl GfGfxLoader_LoadScrnData mov r0, #0 str r0, [sp] str r0, [sp, #4] @@ -882,7 +882,7 @@ MOD63_021D8F38: ; 0x021D8F38 mov r0, #0x80 mov r1, #0x15 mov r3, #6 - bl FUN_020068C8 + bl GfGfxLoader_LoadScrnData mov r2, #0 str r2, [sp] mov r0, #0x4c @@ -890,7 +890,7 @@ MOD63_021D8F38: ; 0x021D8F38 mov r0, #0x80 mov r1, #0x12 add r3, r2, #0 - bl FUN_02006930 + bl GfGfxLoader_GXLoadPal mov r3, #0 str r3, [sp] mov r0, #0x4c @@ -898,7 +898,7 @@ MOD63_021D8F38: ; 0x021D8F38 mov r0, #0x80 mov r1, #0x12 mov r2, #4 - bl FUN_02006930 + bl GfGfxLoader_GXLoadPal mov r0, #0 str r0, [sp] str r0, [sp, #4] @@ -909,7 +909,7 @@ MOD63_021D8F38: ; 0x021D8F38 ldr r2, [r4, #0xc] mov r0, #0x80 add r3, r1, #0 - bl FUN_0200687C + bl GfGfxLoader_LoadCharData mov r0, #0 str r0, [sp] str r0, [sp, #4] @@ -920,7 +920,7 @@ MOD63_021D8F38: ; 0x021D8F38 mov r0, #0x80 mov r1, #2 mov r3, #1 - bl FUN_020068C8 + bl GfGfxLoader_LoadScrnData mov r1, #0 mov r0, #0x20 str r0, [sp] @@ -929,7 +929,7 @@ MOD63_021D8F38: ; 0x021D8F38 mov r0, #0x80 add r2, r1, #0 add r3, r1, #0 - bl FUN_02006930 + bl GfGfxLoader_GXLoadPal mov r0, #0 str r0, [sp] str r0, [sp, #4] @@ -940,7 +940,7 @@ MOD63_021D8F38: ; 0x021D8F38 mov r0, #0x80 mov r1, #0x16 mov r3, #3 - bl FUN_020068C8 + bl GfGfxLoader_LoadScrnData mov r0, #0 str r0, [sp] str r0, [sp, #4] @@ -951,7 +951,7 @@ MOD63_021D8F38: ; 0x021D8F38 mov r0, #0x80 mov r1, #0x16 mov r3, #7 - bl FUN_020068C8 + bl GfGfxLoader_LoadScrnData mov r0, #0 str r0, [sp] str r0, [sp, #4] @@ -962,7 +962,7 @@ MOD63_021D8F38: ; 0x021D8F38 mov r0, #0x80 mov r1, #0x48 mov r3, #5 - bl FUN_0200687C + bl GfGfxLoader_LoadCharData mov r0, #0 str r0, [sp] str r0, [sp, #4] @@ -973,7 +973,7 @@ MOD63_021D8F38: ; 0x021D8F38 mov r0, #0x80 mov r1, #0x49 mov r3, #5 - bl FUN_020068C8 + bl GfGfxLoader_LoadScrnData mov r0, #0x20 str r0, [sp] mov r0, #0x4c @@ -982,7 +982,7 @@ MOD63_021D8F38: ; 0x021D8F38 mov r1, #0x47 mov r2, #4 mov r3, #0 - bl FUN_02006930 + bl GfGfxLoader_GXLoadPal mov r0, #4 mov r1, #0 bl GX_EngineAToggleLayers @@ -1227,7 +1227,7 @@ _021D9286: ldr r0, [r4, #8] cmp r0, #0 bne _021D9296 - bl ErrorHandling + bl GF_AssertFail _021D9296: ldr r0, [r4, #0x28] bl FUN_0200CAB4 @@ -1565,11 +1565,11 @@ _021D950C: asr r1, r1, #0x10 asr r2, r2, #0x10 asr r3, r3, #0x10 - bl FUN_020B8418 + bl NNS_G3dGlbLightVector lsl r1, r4, #1 ldrh r1, [r7, r1] add r0, r4, #0 - bl FUN_020B8404 + bl NNS_G3dGlbLightColor add r0, r4, #1 lsl r0, r0, #0x18 lsr r4, r0, #0x18 @@ -1578,11 +1578,11 @@ _021D950C: ldr r0, _021D9594 ; =0x00004210 ldr r1, _021D9598 ; =0x0000318A mov r2, #0 - bl FUN_020B83E0 + bl NNS_G3dGlbMaterialColorDiffAmb ldr r0, _021D959C ; =0x00004A52 ldr r1, _021D95A0 ; =0x000039CE mov r2, #0 - bl FUN_020B83BC + bl NNS_G3dGlbMaterialColorSpecEmi mov r0, #0x1f str r0, [sp] mov r0, #2 @@ -1592,7 +1592,7 @@ _021D950C: mov r0, #0xd mov r2, #2 add r3, r1, #0 - bl FUN_020B8390 + bl NNS_G3dGlbPolygonAttr ldr r0, _021D95A4 ; =MOD63_021D8CB0 add r1, r5, #0 bl Main_SetVBlankIntrCB @@ -1767,15 +1767,15 @@ _021D96C6: beq _021D96F4 ldr r1, [sp, #0x14] add r1, r1, r7 - bl FUN_020B0138 + bl NNS_G2dGetUnpackedPaletteData cmp r0, #0 bne _021D96F8 ldr r0, [r6, #0x2c] bl FreeToHeap - bl ErrorHandling + bl GF_AssertFail b _021D96F8 _021D96F4: - bl ErrorHandling + bl GF_AssertFail _021D96F8: add r0, r4, #1 lsl r0, r0, #0x18 @@ -1794,7 +1794,7 @@ _021D96F8: mov r0, #0x80 mov r1, #0x1c mov r3, #3 - bl FUN_0200687C + bl GfGfxLoader_LoadCharData mov r0, #0 str r0, [sp] str r0, [sp, #4] @@ -1805,7 +1805,7 @@ _021D96F8: mov r0, #0x80 mov r1, #0x1a mov r3, #3 - bl FUN_020068C8 + bl GfGfxLoader_LoadScrnData mov r1, #0 str r1, [sp] ldr r0, [r5, #0x2c] @@ -1822,7 +1822,7 @@ _021D96F8: mov r0, #0x80 mov r1, #0x11 mov r3, #4 - bl FUN_0200687C + bl GfGfxLoader_LoadCharData mov r0, #0 str r0, [sp] str r0, [sp, #4] @@ -1833,7 +1833,7 @@ _021D96F8: mov r0, #0x80 mov r1, #0xf mov r3, #4 - bl FUN_020068C8 + bl GfGfxLoader_LoadScrnData mov r0, #1 lsl r0, r0, #8 str r0, [sp] @@ -1843,7 +1843,7 @@ _021D96F8: mov r1, #0x10 mov r2, #4 mov r3, #0 - bl FUN_02006930 + bl GfGfxLoader_GXLoadPal mov r0, #0 str r0, [sp] str r0, [sp, #4] @@ -1854,7 +1854,7 @@ _021D96F8: mov r0, #0x80 mov r1, #0x1b mov r3, #1 - bl FUN_0200687C + bl GfGfxLoader_LoadCharData mov r0, #0 str r0, [sp] str r0, [sp, #4] @@ -1865,7 +1865,7 @@ _021D96F8: mov r0, #0x80 mov r1, #0x19 mov r3, #1 - bl FUN_020068C8 + bl GfGfxLoader_LoadScrnData mov r0, #0 str r0, [sp] str r0, [sp, #4] @@ -1876,7 +1876,7 @@ _021D96F8: mov r0, #0x80 mov r1, #0x18 mov r3, #2 - bl FUN_020068C8 + bl GfGfxLoader_LoadScrnData ldr r0, [r5, #0x10] bl MOD63_021DA6E8 ldr r0, [r5, #0x10] @@ -1912,18 +1912,18 @@ MOD63_021D9810: ; 0x021D9810 mov r2, #0x4c bl AllocAndReadWholeNarcMemberByIdPair str r0, [r5, #0x3c] - bl FUN_020BC0FC + bl NNS_G3dGetTex str r0, [r5, #0x40] bl FUN_0201B3C4 cmp r0, #0 bne _021D9834 - bl ErrorHandling + bl GF_AssertFail _021D9834: ldr r0, [r5, #0x40] ldr r0, [r0, #0x14] cmp r0, #0 bne _021D9840 - bl ErrorHandling + bl GF_AssertFail _021D9840: ldr r2, [r5, #0x40] ldr r0, [r5, #0x3c] @@ -1960,54 +1960,54 @@ _021D9862: bl FUN_0201B3A8 cmp r0, #0 bne _021D9890 - bl ErrorHandling + bl GF_AssertFail _021D9890: add r0, r5, r6 add r0, #0x9c ldr r0, [r0] - bl FUN_020BC13C + bl NNS_G3dGetMdlSet ldrb r0, [r0, #9] cmp r0, #1 beq _021D98A4 - bl ErrorHandling + bl GF_AssertFail _021D98A4: add r0, r5, r6 add r0, #0x9c ldr r0, [r0] - bl FUN_020BC13C + bl NNS_G3dGetMdlSet ldrh r1, [r0, #0xe] add r1, r0, r1 ldr r1, [r1, #0xc] add r4, r0, r1 bne _021D98BC - bl ErrorHandling + bl GF_AssertFail _021D98BC: ldr r0, [sp, #0x10] add r1, r4, #0 add r0, r0, r6 - bl FUN_020B80B4 + bl NNS_G3dRenderObjInit add r0, r4, #0 mov r1, #0 mov r2, #0x40 - bl FUN_020BC094 + bl NNSi_G3dModifyMatFlag add r0, r4, #0 mov r1, #0 mov r2, #0x80 - bl FUN_020BC094 + bl NNSi_G3dModifyMatFlag mov r2, #2 add r0, r4, #0 mov r1, #0 lsl r2, r2, #8 - bl FUN_020BC094 + bl NNSi_G3dModifyMatFlag mov r2, #1 add r0, r4, #0 mov r1, #0 lsl r2, r2, #0xa - bl FUN_020BC094 + bl NNSi_G3dModifyMatFlag add r0, r4, #0 mov r1, #0 mov r2, #0xf - bl FUN_020BC02C + bl NNSi_G3dModifyPolygonAttrMask add r0, r7, #1 lsl r0, r0, #0x18 lsr r7, r0, #0x18 @@ -3038,15 +3038,15 @@ MOD63_021DA158: ; 0x021DA158 beq _021DA18E add r1, r4, #0 add r1, #0x14 - bl FUN_020B0138 + bl NNS_G2dGetUnpackedPaletteData cmp r0, #0 bne _021DA192 ldr r0, [r4, #0x14] bl FreeToHeap - bl ErrorHandling + bl GF_AssertFail b _021DA192 _021DA18E: - bl ErrorHandling + bl GF_AssertFail _021DA192: add r0, r5, #0 bl NARC_dtor @@ -3072,7 +3072,7 @@ _021DA192: mov r0, #0x80 mov r1, #0x36 mov r3, #1 - bl FUN_0200687C + bl GfGfxLoader_LoadCharData mov r0, #0 str r0, [sp] str r0, [sp, #4] @@ -3083,7 +3083,7 @@ _021DA192: mov r0, #0x80 mov r1, #0x3b mov r3, #1 - bl FUN_020068C8 + bl GfGfxLoader_LoadScrnData mov r0, #0 str r0, [sp] str r0, [sp, #4] @@ -3094,7 +3094,7 @@ _021DA192: mov r0, #0x80 mov r1, #0x38 mov r3, #2 - bl FUN_0200687C + bl GfGfxLoader_LoadCharData mov r0, #0 str r0, [sp] str r0, [sp, #4] @@ -3105,7 +3105,7 @@ _021DA192: mov r0, #0x80 mov r1, #0x3d mov r3, #2 - bl FUN_020068C8 + bl GfGfxLoader_LoadScrnData mov r0, #0 str r0, [sp] str r0, [sp, #4] @@ -3116,7 +3116,7 @@ _021DA192: mov r0, #0x80 mov r1, #0x39 mov r3, #3 - bl FUN_0200687C + bl GfGfxLoader_LoadCharData mov r0, #0 str r0, [sp] str r0, [sp, #4] @@ -3127,7 +3127,7 @@ _021DA192: mov r0, #0x80 mov r1, #0x3e mov r3, #3 - bl FUN_020068C8 + bl GfGfxLoader_LoadScrnData mov r3, #0 str r3, [sp] str r3, [sp, #4] @@ -3137,7 +3137,7 @@ _021DA192: ldr r2, [r4, #0xc] mov r0, #0x80 mov r1, #0x3a - bl FUN_0200687C + bl GfGfxLoader_LoadCharData mov r3, #0 str r3, [sp] str r3, [sp, #4] @@ -3147,7 +3147,7 @@ _021DA192: ldr r2, [r4, #0xc] mov r0, #0x80 mov r1, #0x3f - bl FUN_020068C8 + bl GfGfxLoader_LoadScrnData mov r0, #0 str r0, [sp] str r0, [sp, #4] @@ -3158,7 +3158,7 @@ _021DA192: mov r0, #0x80 mov r1, #0x37 mov r3, #5 - bl FUN_0200687C + bl GfGfxLoader_LoadCharData mov r0, #0 str r0, [sp] str r0, [sp, #4] @@ -3169,7 +3169,7 @@ _021DA192: mov r0, #0x80 mov r1, #0x3c mov r3, #5 - bl FUN_020068C8 + bl GfGfxLoader_LoadScrnData mov r0, #0xe mov r1, #1 bl GX_EngineAToggleLayers diff --git a/arm9/modules/63/asm/mod63_021DA640.s b/arm9/modules/63/asm/mod63_021DA640.s index 6095d832..5bcdfbd2 100644 --- a/arm9/modules/63/asm/mod63_021DA640.s +++ b/arm9/modules/63/asm/mod63_021DA640.s @@ -108,7 +108,7 @@ MOD63_021DA6E8: ; 0x021DA6E8 orr r0, r1 str r0, [r2] bl MOD63_021DA640 - bl FUN_020B0FC0 + bl NNS_G2dInitOamManagerModule mov r0, #0 str r0, [sp] mov r1, #0x80 @@ -876,7 +876,7 @@ MOD63_021DAD18: ; 0x021DAD18 add r6, r2, #0 bl FUN_02020354 mov r1, #1 - bl FUN_020B19C4 + bl NNS_G2dGetImagePaletteLocation add r7, r0, #0 cmp r6, #0 bne _021DAD44 diff --git a/arm9/modules/63/asm/mod63_021DAE5C.s b/arm9/modules/63/asm/mod63_021DAE5C.s index 52b453e2..efa1a033 100644 --- a/arm9/modules/63/asm/mod63_021DAE5C.s +++ b/arm9/modules/63/asm/mod63_021DAE5C.s @@ -165,7 +165,7 @@ MOD63_021DAF80: ; 0x021DAF80 add r4, r1, #0 cmp r4, r0 blt _021DAF90 - bl ErrorHandling + bl GF_AssertFail _021DAF90: mov r0, #0xc ldr r1, [r5, #4] @@ -239,7 +239,7 @@ MOD63_021DAFEC: ; 0x021DAFEC orr r0, r1 str r0, [r3] bl MOD63_021DAE5C - bl FUN_020B0FC0 + bl NNS_G2dInitOamManagerModule mov r0, #0 str r0, [sp] mov r1, #0x80 @@ -603,7 +603,7 @@ _021DB2E6: lsr r4, r1, #0x18 cmp r4, #0xa blo _021DB2CE - bl ErrorHandling + bl GF_AssertFail mov r0, #0 pop {r4, pc} thumb_func_end MOD63_021DB2C8 diff --git a/arm9/modules/63/src/mod63_021DB450.c b/arm9/modules/63/src/mod63_021DB450.c index 6f9e7036..84461fe1 100644 --- a/arm9/modules/63/src/mod63_021DB450.c +++ b/arm9/modules/63/src/mod63_021DB450.c @@ -5,8 +5,8 @@ #include "mod63_021DB450.h" //todo resolve to static code -extern u32 (*UNK_021064B8)(u32 param0, u32 param1, u32 param2); -extern u32 (*UNK_021064C0)(u32 param0, u32 param1, u32 param2); +extern u32 (*NNS_GfdDefaultFuncAllocTexVram)(u32 param0, u32 param1, u32 param2); +extern u32 (*NNS_GfdDefaultFuncAllocPlttVram)(u32 param0, u32 param1, u32 param2); extern void FUN_0201327C(u32 param0); extern void FUN_020132BC(u32 param0); @@ -29,7 +29,7 @@ extern void FUN_020072E8(struct UnkStruct63_021DB450 *); extern void FUN_020081C4(struct UnkStruct63_021DB450 *); extern void FUN_020222AC(void); -extern void FUN_020B02C8(void); +extern void NNS_G2dSetupSoftwareSpriteCamera(void); extern u32 FUN_02006ED4(struct UnkStruct63_021DB450 *); extern void FUN_020222B4(u32, u32); @@ -50,7 +50,7 @@ const struct UnkStruct63_021DBEF0 MOD63_021DBEF0[3]; THUMB_FUNC u32 MOD63_021DB450(u32 param0, u32 param1) { - u32 res0 = (UNK_021064B8)(param0, param1, 0); + u32 res0 = (NNS_GfdDefaultFuncAllocTexVram)(param0, param1, 0); FUN_0201327C(res0); GF_ASSERT(res0); return (u32)((u16)res0 * 8); @@ -58,7 +58,7 @@ THUMB_FUNC u32 MOD63_021DB450(u32 param0, u32 param1) THUMB_FUNC u32 MOD63_021DB474(u32 param0, u32 param1) { - u32 res0 = (UNK_021064C0)(param0, param1, 1); + u32 res0 = (NNS_GfdDefaultFuncAllocPlttVram)(param0, param1, 1); GF_ASSERT(res0); FUN_020132BC(res0); return (u32)((u16)res0 * 8); @@ -114,7 +114,7 @@ THUMB_FUNC void MOD63_021DB5A8(UnkStruct63_021DB450 *param0) return; } FUN_020222AC(); - FUN_020B02C8(); + NNS_G2dSetupSoftwareSpriteCamera(); (void)FUN_02006ED4(param0->field_00); MOD63_021DB934(); FUN_020222B4(1, 0); diff --git a/arm9/modules/64/asm/module_64.s b/arm9/modules/64/asm/module_64.s index 0ade6b6c..7a70bf1f 100644 --- a/arm9/modules/64/asm/module_64.s +++ b/arm9/modules/64/asm/module_64.s @@ -19,7 +19,7 @@ MOD64_021D74E0: ; 0x021D74E0 bl OverlayManager_CreateAndGetData add r5, r0, #0 bne _021D7504 - bl ErrorHandling + bl GF_AssertFail _021D7504: ldr r2, _021D7630 ; =0x000006B4 add r0, r5, #0 @@ -54,7 +54,7 @@ _021D7504: bl FUN_0201CC24 cmp r0, #1 beq _021D755E - bl ErrorHandling + bl GF_AssertFail _021D755E: add r0, r5, #0 mov r1, #0x2f @@ -254,7 +254,7 @@ MOD64_021D76F4: ; 0x021D76F4 bl FUN_0201CD04 cmp r0, #1 beq _021D7726 - bl ErrorHandling + bl GF_AssertFail _021D7726: mov r0, #0x65 lsl r0, r0, #4 @@ -416,7 +416,7 @@ MOD64_021D785C: ; 0x021D785C push {r4, r5, lr} sub sp, #0x24 add r4, r0, #0 - bl FUN_020B0FC0 + bl NNS_G2dInitOamManagerModule mov r0, #0 str r0, [sp] mov r1, #0x80 @@ -456,7 +456,7 @@ MOD64_021D78B4: ; 0x021D78B4 push {r3, r4, lr} sub sp, #4 add r4, r0, #0 - bl FUN_020BB7F4 + bl NNS_G3dInit bl G3X_InitMtxStack ldr r0, _021D7940 ; =0x04000060 ldr r1, _021D7944 ; =0xFFFFCFFD @@ -511,11 +511,11 @@ _021D7900: str r0, [r1, #0x40] mov r0, #1 add r1, r0, #0 - bl FUN_020AEB70 + bl NNS_GfdInitFrmTexVramManager mov r0, #1 lsl r0, r0, #0xe mov r1, #1 - bl FUN_020AEDF4 + bl NNS_GfdInitFrmPlttVramManager add sp, #4 pop {r3, r4, pc} .align 2, 0 @@ -533,8 +533,8 @@ _021D7960: .word 0xBFFF0000 thumb_func_start MOD64_021D7964 MOD64_021D7964: ; 0x021D7964 push {r3, lr} - bl FUN_020AEAF4 - bl FUN_020AEC60 + bl NNS_GfdResetFrmTexVramState + bl NNS_GfdResetFrmPlttVramState pop {r3, pc} thumb_func_end MOD64_021D7964 @@ -653,14 +653,14 @@ MOD64_021D7A54: ; 0x021D7A54 add r5, r0, #0 add r0, r4, #0 mov r1, #1 - bl FUN_02018FF4 + bl AllocWindows add r1, r5, #0 add r1, #0x98 str r0, [r1] add r0, r5, #0 add r0, #0x98 ldr r0, [r0] - bl FUN_0201901C + bl InitWindow mov r0, #0x13 str r0, [sp] mov r0, #0x17 @@ -683,7 +683,7 @@ MOD64_021D7A54: ; 0x021D7A54 add r0, #0x98 ldr r0, [r0] mov r1, #0xf - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, _021D7AE8 ; =0x000006A8 mov r1, #1 ldr r0, [r5, r0] @@ -704,7 +704,7 @@ MOD64_021D7A54: ; 0x021D7A54 mov r2, #0 mov r3, #0x40 str r4, [sp, #4] - bl FUN_02006930 + bl GfGfxLoader_GXLoadPal add r5, #0x98 mov r1, #0 mov r2, #2 @@ -741,13 +741,13 @@ MOD64_021D7B04: ; 0x021D7B04 mov r1, #2 lsl r1, r1, #8 str r0, [r5, r1] - ldr r3, _021D7BA4 ; =UNK_021064B8 + ldr r3, _021D7BA4 ; =NNS_GfdDefaultFuncAllocTexVram lsl r0, r1, #6 mov r1, #0 ldr r3, [r3] add r2, r1, #0 blx r3 - ldr r3, _021D7BA8 ; =UNK_021064C0 + ldr r3, _021D7BA8 ; =NNS_GfdDefaultFuncAllocPlttVram add r4, r0, #0 ldr r3, [r3] mov r0, #0x80 @@ -808,8 +808,8 @@ _021D7B8E: blt _021D7B8E pop {r3, r4, r5, r6, r7, pc} nop -_021D7BA4: .word UNK_021064B8 -_021D7BA8: .word UNK_021064C0 +_021D7BA4: .word NNS_GfdDefaultFuncAllocTexVram +_021D7BA8: .word NNS_GfdDefaultFuncAllocPlttVram _021D7BAC: .word 0x7FFF0000 _021D7BB0: .word 0xFFFF0000 thumb_func_end MOD64_021D7B04 @@ -1057,9 +1057,9 @@ MOD64_021D7D7C: ; 0x021D7D7C add r4, r0, #0 str r2, [sp] mov r0, #0x52 - bl UncompressFromNarc + bl GfGfxLoader_LoadFromNarc str r0, [r4, #0x54] - bl FUN_020BC13C + bl NNS_G3dGetMdlSet str r0, [r4, #0x58] ldrh r1, [r0, #0xe] add r1, r0, r1 @@ -1067,7 +1067,7 @@ MOD64_021D7D7C: ; 0x021D7D7C add r0, r0, r1 str r0, [r4, #0x5c] ldr r0, [r4, #0x54] - bl FUN_020BC0FC + bl NNS_G3dGetTex str r0, [r4, #0x60] bl FUN_0201B3C4 ldr r0, [r4, #0x54] @@ -1075,7 +1075,7 @@ MOD64_021D7D7C: ; 0x021D7D7C bl FUN_0201B3A8 ldr r1, [r4, #0x5c] add r0, r4, #0 - bl FUN_020B80B4 + bl NNS_G3dRenderObjInit add sp, #4 pop {r3, r4, pc} thumb_func_end MOD64_021D7D7C @@ -1091,23 +1091,23 @@ MOD64_021D7DC0: ; 0x021D7DC0 str r2, [sp] mov r0, #0x52 add r3, r6, #0 - bl UncompressFromNarc + bl GfGfxLoader_LoadFromNarc str r0, [r4, #0x64] mov r1, #0 - bl FUN_020BC4C8 + bl NNS_G3dGetAnmByIdx str r0, [r4, #0x68] ldr r1, [r4, #0x68] ldr r2, [r4, #0x5c] add r0, r5, #0 - bl FUN_020BB8D0 + bl NNS_G3dAllocAnmObj str r0, [r4, #0x6c] ldr r1, [r4, #0x68] ldr r2, [r4, #0x5c] ldr r3, [r4, #0x60] - bl FUN_020B8110 + bl NNS_G3dAnmObjInit ldr r1, [r4, #0x6c] add r0, r4, #0 - bl FUN_020B7EFC + bl NNS_G3dRenderObjAddAnmObj add sp, #4 pop {r3, r4, r5, r6, pc} .align 2, 0 @@ -1128,7 +1128,7 @@ _021D7E14: beq _021D7E28 ldr r1, [r5, #0x6c] add r0, r4, #0 - bl thunk_FUN_020ae84c + bl NNS_G3dFreeAnmObj ldr r0, [r5, #0x64] bl FreeToHeap _021D7E28: @@ -1149,7 +1149,7 @@ MOD64_021D7E34: ; 0x021D7E34 add r0, r4, #0 add r0, #0x90 ldrh r0, [r0] - ldr r3, _021D7ECC ; =UNK_020FFA38 + ldr r3, _021D7ECC ; =FX_SinCosTable_ asr r0, r0, #4 lsl r2, r0, #1 lsl r1, r2, #1 @@ -1166,7 +1166,7 @@ MOD64_021D7E34: ; 0x021D7E34 add r0, r4, #0 add r0, #0x92 ldrh r0, [r0] - ldr r3, _021D7ECC ; =UNK_020FFA38 + ldr r3, _021D7ECC ; =FX_SinCosTable_ asr r0, r0, #4 lsl r2, r0, #1 lsl r1, r2, #1 @@ -1183,7 +1183,7 @@ MOD64_021D7E34: ; 0x021D7E34 add r0, r4, #0 add r0, #0x94 ldrh r0, [r0] - ldr r3, _021D7ECC ; =UNK_020FFA38 + ldr r3, _021D7ECC ; =FX_SinCosTable_ asr r0, r0, #4 lsl r2, r0, #1 lsl r1, r2, #1 @@ -1211,7 +1211,7 @@ _021D7EC8: add sp, #0x48 pop {r4, pc} .align 2, 0 -_021D7ECC: .word UNK_020FFA38 +_021D7ECC: .word FX_SinCosTable_ thumb_func_end MOD64_021D7E34 thumb_func_start MOD64_021D7ED0 @@ -1442,18 +1442,18 @@ MOD64_021D8058: ; 0x021D8058 ldr r2, _021D809C ; =0xFFFFF000 add r1, r0, #0 add r3, r0, #0 - bl FUN_020B8418 + bl NNS_G3dGlbLightVector ldr r1, _021D80A0 ; =0x00007FFF mov r0, #0 - bl FUN_020B8404 + bl NNS_G3dGlbLightColor ldr r0, _021D80A0 ; =0x00007FFF mov r2, #0 add r1, r0, #0 - bl FUN_020B83E0 + bl NNS_G3dGlbMaterialColorDiffAmb ldr r0, _021D80A0 ; =0x00007FFF mov r2, #0 add r1, r0, #0 - bl FUN_020B83BC + bl NNS_G3dGlbMaterialColorSpecEmi mov r0, #0x26 lsl r0, r0, #4 mov r4, #0 @@ -1634,9 +1634,9 @@ MOD64_021D81D8: ; 0x021D81D8 mov r1, #0 mov r0, #0x11 add r2, r1, #0 - bl FUN_020BB1C0 - bl FUN_020BB394 - bl FUN_020B02C8 + bl NNS_G3dGeBufferOP_N + bl NNS_G3dGeFlushBuffer + bl NNS_G2dSetupSoftwareSpriteCamera mov r0, #2 lsl r0, r0, #8 ldr r0, [r4, r0] @@ -1648,11 +1648,11 @@ MOD64_021D81D8: ; 0x021D81D8 mov r0, #0x12 add r1, sp, #4 str r2, [sp, #4] - bl FUN_020BB1C0 + bl NNS_G3dGeBufferOP_N mov r1, #0 mov r0, #0x11 add r2, r1, #0 - bl FUN_020BB1C0 + bl NNS_G3dGeBufferOP_N bl FUN_0201EBA4 add r0, r4, #0 bl MOD64_021D8058 @@ -1660,7 +1660,7 @@ MOD64_021D81D8: ; 0x021D81D8 mov r0, #0x12 add r1, sp, #0 str r2, [sp] - bl FUN_020BB1C0 + bl NNS_G3dGeBufferOP_N mov r0, #0 add r1, r0, #0 bl FUN_020222B4 @@ -2310,7 +2310,7 @@ MOD64_021D86DC: ; 0x021D86DC bl NewMsgDataFromNarc add r4, r0, #0 bne _021D86F8 - bl ErrorHandling + bl GF_AssertFail _021D86F8: add r0, r4, #0 add r1, r6, #0 @@ -2318,7 +2318,7 @@ _021D86F8: add r6, r0, #0 add r0, r5, #0 mov r1, #0xf - bl FUN_02019620 + bl FillWindowPixelBuffer mov r3, #0 ldr r0, [sp, #0x2c] str r3, [sp] @@ -2358,7 +2358,7 @@ MOD64_021D8744: ; 0x021D8744 str r3, [sp, #0x10] cmp r0, #0 beq _021D875C - bl ErrorHandling + bl GF_AssertFail _021D875C: mov r0, #0 mov r1, #0x1a @@ -2367,7 +2367,7 @@ _021D875C: bl NewMsgDataFromNarc add r6, r0, #0 bne _021D8770 - bl ErrorHandling + bl GF_AssertFail _021D8770: ldr r1, [sp, #0x10] add r0, r6, #0 @@ -2375,7 +2375,7 @@ _021D8770: str r0, [r4] add r0, r5, #0 mov r1, #0xf - bl FUN_02019620 + bl FillWindowPixelBuffer mov r3, #0 ldr r0, [sp, #0x2c] str r3, [sp] @@ -2510,7 +2510,7 @@ MOD64_021D8864: ; 0x021D8864 add r6, r2, #0 cmp r0, #0 beq _021D8876 - bl ErrorHandling + bl GF_AssertFail _021D8876: ldr r1, _021D88B8 ; =0xFFFFEAAB ldr r2, _021D88BC ; =0xFFFFDC72 @@ -2795,7 +2795,7 @@ MOD64_021D8A90: ; 0x021D8A90 lsr r0, r0, #0x10 asr r0, r0, #4 lsl r1, r0, #2 - ldr r0, _021D8ADC ; =UNK_020FFA38 + ldr r0, _021D8ADC ; =FX_SinCosTable_ ldr r2, [r4, #4] ldrsh r0, [r0, r1] asr r3, r2, #0x1f @@ -2818,7 +2818,7 @@ MOD64_021D8A90: ; 0x021D8A90 pop {r4, pc} nop _021D8AD8: .word 0x0000FFFF -_021D8ADC: .word UNK_020FFA38 +_021D8ADC: .word FX_SinCosTable_ thumb_func_end MOD64_021D8A90 thumb_func_start MOD64_021D8AE0 @@ -2828,7 +2828,7 @@ MOD64_021D8AE0: ; 0x021D8AE0 ldr r0, [r4, #0x28] cmp r0, #0 beq _021D8AEE - bl ErrorHandling + bl GF_AssertFail _021D8AEE: add r0, r4, #0 mov r1, #2 @@ -2920,14 +2920,14 @@ MOD64_021D8B70: ; 0x021D8B70 mov r2, #0 add r3, #0x14 str r6, [sp] - bl FUN_02006BB0 + bl GfGfxLoader_GetCharData add r2, r5, #0 str r0, [r5, #0xc] mov r0, #0x52 mov r1, #0xf add r2, #0x18 add r3, r6, #0 - bl FUN_02006C08 + bl GfGfxLoader_GetPlttData str r0, [r5, #0x10] ldr r0, _021D8C04 ; =0x0000064C ldr r0, [r4, r0] @@ -3016,7 +3016,7 @@ MOD64_021D8C3C: ; 0x021D8C3C str r3, [sp] cmp r0, #0 beq _021D8C50 - bl ErrorHandling + bl GF_AssertFail _021D8C50: ldr r4, [sp, #0x24] add r0, r5, #0 @@ -3057,7 +3057,7 @@ MOD64_021D8C94: ; 0x021D8C94 ldr r0, [r4, #0x54] cmp r0, #0 beq _021D8CA2 - bl ErrorHandling + bl GF_AssertFail _021D8CA2: mov r0, #1 mvn r0, r0 @@ -3240,7 +3240,7 @@ MOD64_021D8DDC: ; 0x021D8DDC str r3, [sp] cmp r0, #0 beq _021D8DF0 - bl ErrorHandling + bl GF_AssertFail _021D8DF0: ldr r4, [sp, #0x28] ldr r2, [sp] @@ -3281,7 +3281,7 @@ MOD64_021D8E34: ; 0x021D8E34 ldr r0, [r4, #0x3c] cmp r0, #0 beq _021D8E42 - bl ErrorHandling + bl GF_AssertFail _021D8E42: mov r0, #1 mvn r0, r0 @@ -3386,21 +3386,21 @@ MOD64_021D8EF4: ; 0x021D8EF4 mov r1, #0x11 mov r2, #0 mov r3, #0xa0 - bl FUN_02006930 + bl GfGfxLoader_GXLoadPal ldr r5, [sp, #0x14] mov r4, #0 mov r6, #1 _021D8F16: ldr r0, [sp, #0x18] mov r1, #1 - bl FUN_02018FF4 + bl AllocWindows add r1, r5, #0 add r1, #0x9c str r0, [r1] add r0, r5, #0 add r0, #0x9c ldr r0, [r0] - bl FUN_0201901C + bl InitWindow cmp r4, #0 beq _021D8F3C cmp r4, #1 @@ -3501,7 +3501,7 @@ MOD64_021D8FD0: ; 0x021D8FD0 bl NewMsgDataFromNarc add r4, r0, #0 bne _021D8FEC - bl ErrorHandling + bl GF_AssertFail _021D8FEC: add r0, r4, #0 add r1, r6, #0 @@ -3511,7 +3511,7 @@ _021D8FEC: lsl r1, r1, #0x18 add r0, r5, #0 lsr r1, r1, #0x18 - bl FUN_02019620 + bl FillWindowPixelBuffer mov r1, #0 str r1, [sp] mov r0, #0xff @@ -3567,7 +3567,7 @@ _021D905C: ldr r0, _021D9070 ; =0x00000189 pop {r3, pc} _021D9060: - bl ErrorHandling + bl GF_AssertFail mov r0, #0 pop {r3, pc} .align 2, 0 diff --git a/arm9/modules/65/asm/module_65.s b/arm9/modules/65/asm/module_65.s index 229a9214..e9e1ed78 100644 --- a/arm9/modules/65/asm/module_65.s +++ b/arm9/modules/65/asm/module_65.s @@ -335,7 +335,7 @@ _021D7762: add r0, r5, #0 add r0, #0xc4 ldr r0, [r0] - bl FUN_02001204 + bl ListMenu_ProcessInput add r4, r0, #0 b _021D7796 _021D7784: @@ -425,7 +425,7 @@ MOD65_021D7818: ; 0x021D7818 add r5, r0, #0 add r0, #0xc8 ldr r0, [r0] - bl FUN_02001204 + bl ListMenu_ProcessInput add r4, r0, #0 ldr r0, _021D78A4 ; =gMain ldr r1, [r0, #0x48] @@ -998,7 +998,7 @@ _021D7C68: bl FUN_02019064 add r0, r5, #0 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer add r7, r7, #1 add r4, #8 add r5, #0x10 @@ -1404,7 +1404,7 @@ _021D7FCA: add r0, r5, r0 mov r1, #0xff add r3, r2, #0 - bl FUN_020196F4 + bl FillWindowPixelRect mov r0, #1 bl FUN_02002B60 mov r0, #0 @@ -1542,7 +1542,7 @@ MOD65_021D80C8: ; 0x021D80C8 strb r0, [r5, #0x1c] ldrb r0, [r5, #0x1c] ldr r1, [r5] - bl ListMenu_ctor + bl ListMenuItems_ctor add r1, r5, #0 add r1, #0xcc str r0, [r1] @@ -1585,7 +1585,7 @@ _021D80EE: ldrb r2, [r6, #5] ldr r0, [r0] ldr r1, [r5, #0x34] - bl ListMenu_AddItem + bl ListMenuItems_AddItem cmp r4, #0xff bne _021D80EE _021D8142: @@ -1594,7 +1594,7 @@ _021D8142: ldr r0, [r0] ldr r1, [r5, #0x38] mov r2, #0xff - bl ListMenu_AddItem + bl ListMenuItems_AddItem add r1, r5, #0 ldr r0, _021D8210 ; =0x021DA2E0 add r1, #0x84 @@ -1684,7 +1684,7 @@ _021D81C0: ldrh r2, [r2] add r0, #0x84 lsr r3, r3, #0x18 - bl FUN_020010A8 + bl ListMenuInit add r1, r5, #0 add r1, #0xc4 str r0, [r1] @@ -1711,7 +1711,7 @@ MOD65_021D8214: ; 0x021D8214 add r0, #0xe8 add r2, r1, #0 add r3, r1, #0 - bl FUN_020196F4 + bl FillWindowPixelRect cmp r4, #0 beq _021D823E add r0, r5, #0 @@ -1725,11 +1725,11 @@ _021D823E: ldr r0, [r0] add r1, #0x80 add r2, #0x82 - bl FUN_02001300 + bl DestroyListMenu add r0, r5, #0 add r0, #0xcc ldr r0, [r0] - bl ListMenu_dtor + bl ListMenuItems_dtor add r0, r5, #0 add r0, #0x80 ldrh r1, [r0] @@ -1792,7 +1792,7 @@ _021D82A2: mov r1, #1 mov r2, #2 mov r3, #0 - bl FUN_0201A8C8 + bl ScrollWindow b _021D8392 _021D82D2: mov r0, #0x1e @@ -1812,7 +1812,7 @@ _021D82D2: mov r1, #0 mov r2, #4 add r3, r1, #0 - bl FUN_0201A8C8 + bl ScrollWindow mov r0, #1 strh r0, [r4, #0x14] b _021D8392 @@ -1834,7 +1834,7 @@ _021D8302: mov r1, #1 mov r2, #2 mov r3, #0 - bl FUN_0201A8C8 + bl ScrollWindow mov r0, #0 strh r0, [r4, #0x14] b _021D8392 @@ -1856,7 +1856,7 @@ _021D8330: mov r1, #0 mov r2, #2 add r3, r1, #0 - bl FUN_0201A8C8 + bl ScrollWindow mov r0, #1 strh r0, [r4, #0x14] b _021D8392 @@ -1881,7 +1881,7 @@ _021D835E: mov r1, #0 mov r2, #2 add r3, r1, #0 - bl FUN_0201A8C8 + bl ScrollWindow mov r0, #0 strh r0, [r4, #0x14] _021D8392: @@ -1953,7 +1953,7 @@ _021D83D2: mov r1, #0 add r2, r1, #0 add r3, r1, #0 - bl FUN_020196F4 + bl FillWindowPixelRect ldrb r1, [r4, #0x1b] cmp r1, #5 bne _021D8434 @@ -2057,11 +2057,11 @@ _021D84E0: .word 0x00000001 thumb_func_start MOD65_021D84E4 MOD65_021D84E4: ; 0x021D84E4 - ldr r3, _021D84EC ; =FUN_02001470 + ldr r3, _021D84EC ; =ListMenuGetTemplateField mov r1, #0x13 bx r3 nop -_021D84EC: .word FUN_02001470 +_021D84EC: .word ListMenuGetTemplateField thumb_func_end MOD65_021D84E4 thumb_func_start MOD65_021D84F0 @@ -2072,7 +2072,7 @@ MOD65_021D84F0: ; 0x021D84F0 mov r1, #0x13 add r7, r0, #0 add r6, r2, #0 - bl FUN_02001470 + bl ListMenuGetTemplateField add r4, r0, #0 cmp r6, #0 bne _021D850C @@ -2083,7 +2083,7 @@ _021D850C: add r0, r7, #0 add r1, #2 add r2, sp, #0x10 - bl FUN_02001448 + bl ListMenuGetScrollAndRow add r2, sp, #0x10 ldrh r2, [r2] mov r0, #7 @@ -2140,7 +2140,7 @@ _021D8578: add r0, #0xf8 add r2, r1, #0 add r3, r1, #0 - bl FUN_020196F4 + bl FillWindowPixelRect cmp r5, #0xff bne _021D85B4 add r0, r4, #0 @@ -2223,7 +2223,7 @@ MOD65_021D8634: ; 0x021D8634 add r5, r0, #0 ldr r1, [r5] mov r0, #3 - bl ListMenu_ctor + bl ListMenuItems_ctor add r1, r5, #0 add r1, #0xd0 str r0, [r1] @@ -2235,7 +2235,7 @@ _021D8648: ldr r1, [r5, #0x2c] add r2, r4, #1 add r3, r4, #0 - bl ListMenu_ItemFromMsgData + bl ListMenuItems_AppendFromMsgData add r0, r4, #1 lsl r0, r0, #0x18 lsr r4, r0, #0x18 @@ -2276,7 +2276,7 @@ _021D8648: add r0, #0xa4 add r2, r1, #0 lsr r3, r3, #0x18 - bl FUN_020010A8 + bl ListMenuInit add r5, #0xc8 str r0, [r5] pop {r3, r4, r5, pc} @@ -2304,11 +2304,11 @@ MOD65_021D86BC: ; 0x021D86BC ldr r0, [r0] add r1, sp, #0 add r2, #2 - bl FUN_02001300 + bl DestroyListMenu add r0, r4, #0 add r0, #0xd0 ldr r0, [r0] - bl ListMenu_dtor + bl ListMenuItems_dtor add r0, r4, #0 mov r1, #0 add r0, #0xc8 @@ -3269,7 +3269,7 @@ MOD65_021D8E68: ; 0x021D8E68 add r0, r4, #0 add r0, #0x6c mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, [r4, #0x10] mov r1, #1 ldrb r0, [r0, #0xb] @@ -3842,7 +3842,7 @@ MOD65_021D92C4: ; 0x021D92C4 add r0, r4, #0 add r0, #0x6c mov r1, #0xff - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, [r4, #0x20] bl StringSetEmpty mov r0, #1 @@ -5301,7 +5301,7 @@ MOD65_021D9E98: ; 0x021D9E98 mov r2, #0x1c add r5, r0, #0 bl MI_CpuFill8 - bl FUN_020BB7F4 + bl NNS_G3dInit bl G3X_Init bl G3X_InitMtxStack ldr r0, _021D9F34 ; =0x04000060 @@ -5388,8 +5388,8 @@ MOD65_021D9F50: ; 0x021D9F50 mov r0, #2 str r0, [r2] str r3, [r1] - bl FUN_020B849C - bl FUN_020B02C8 + bl NNS_G3dGlbFlushP + bl NNS_G2dSetupSoftwareSpriteCamera ldr r0, [r4, #4] bl FUN_02006ED4 ldr r0, _021D9F88 ; =0x04000540 diff --git a/arm9/modules/66/asm/module_66.s b/arm9/modules/66/asm/module_66.s index e0b21bf2..c902cd22 100644 --- a/arm9/modules/66/asm/module_66.s +++ b/arm9/modules/66/asm/module_66.s @@ -138,7 +138,7 @@ MOD66_021D75C8: ; 0x021D75C8 beq _021D75DE blx r1 _021D75DE: - bl FUN_020AEEB8 + bl NNS_GfdDoVramTransfer add r0, r4, #0 bl MOD66_021D9220 ldr r0, [r4, #0x28] @@ -1350,7 +1350,7 @@ _021D7F44: bl FUN_0200D6F8 add r0, r7, #0 mov r1, #0xf - bl FUN_02019620 + bl FillWindowPixelBuffer mov r3, #0 str r3, [sp] mov r0, #0xff @@ -1720,7 +1720,7 @@ MOD66_021D820C: ; 0x021D820C bl StringSetEmpty add r0, r4, #0 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer add r6, #0xa0 ldr r0, [r6] cmp r0, #0 @@ -1801,7 +1801,7 @@ MOD66_021D82B8: ; 0x021D82B8 bne _021D82DC add r0, r6, #0 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer add r0, r6, #0 bl CopyWindowToVram add r0, r6, #0 @@ -1811,7 +1811,7 @@ MOD66_021D82B8: ; 0x021D82B8 _021D82DC: add r0, r6, #0 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer ldrh r1, [r4, #8] ldr r0, _021D8378 ; =0x0000FFFF cmp r1, r0 @@ -2044,7 +2044,7 @@ MOD66_021D8494: ; 0x021D8494 cmp r5, #0 beq _021D84C6 add r0, r5, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer add r0, r5, #0 bl FUN_02019570 ldrb r1, [r4, #0x15] @@ -2104,7 +2104,7 @@ MOD66_021D84C8: ; 0x021D84C8 sub r4, r1, r0 add r0, r5, #0 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer mov r1, #0 str r1, [sp] mov r0, #0xff @@ -2212,23 +2212,23 @@ MOD66_021D8554: ; 0x021D8554 add r0, r4, #0 add r0, #0x28 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer add r0, r4, #0 add r0, #0x38 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer add r0, r4, #0 add r0, #0x48 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer add r0, r4, #0 add r0, #0x58 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer add r0, r4, #0 add r0, #0x68 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer add r0, r4, #0 add r0, #0x28 bl CopyWindowToVram @@ -4094,7 +4094,7 @@ MOD66_021D94A4: ; 0x021D94A4 bl FS_OpenFile cmp r0, #0 bne _021D94C8 - bl ErrorHandling + bl GF_AssertFail add sp, #0x4c mov r0, #0 pop {r4, r5, r6, r7, pc} @@ -4105,7 +4105,7 @@ _021D94C8: bl FS_ReadFile cmp r0, #0 bge _021D94DA - bl ErrorHandling + bl GF_AssertFail _021D94DA: add r0, r4, #0 mov r1, #8 diff --git a/arm9/modules/67/asm/module_67.s b/arm9/modules/67/asm/module_67.s index 4982fa30..60bd02b5 100644 --- a/arm9/modules/67/asm/module_67.s +++ b/arm9/modules/67/asm/module_67.s @@ -327,7 +327,7 @@ MOD67_021D777C: ; 0x021D777C bl FUN_020178A0 mov r0, #0x2a add r1, r4, #0 - bl FUN_02016A8C + bl FreeToHeapExplicit pop {r4, pc} .align 2, 0 thumb_func_end MOD67_021D777C @@ -351,7 +351,7 @@ MOD67_021D77B0: ; 0x021D77B0 ldr r2, [r4] mov r0, #0x50 add r3, r1, #0 - bl FUN_0200687C + bl GfGfxLoader_LoadCharData mov r1, #0 str r1, [sp] str r1, [sp, #4] @@ -361,7 +361,7 @@ MOD67_021D77B0: ; 0x021D77B0 ldr r2, [r4] mov r0, #0x50 mov r3, #2 - bl FUN_020068C8 + bl GfGfxLoader_LoadScrnData mov r2, #0 str r2, [sp] mov r0, #0x2a @@ -369,7 +369,7 @@ MOD67_021D77B0: ; 0x021D77B0 mov r0, #0x50 mov r1, #4 add r3, r2, #0 - bl FUN_02006930 + bl GfGfxLoader_GXLoadPal b _021D7844 _021D7802: mov r0, #0 @@ -382,7 +382,7 @@ _021D7802: mov r0, #0x50 mov r1, #3 mov r3, #2 - bl FUN_0200687C + bl GfGfxLoader_LoadCharData mov r0, #0 str r0, [sp] str r0, [sp, #4] @@ -393,7 +393,7 @@ _021D7802: mov r0, #0x50 mov r1, #1 mov r3, #2 - bl FUN_020068C8 + bl GfGfxLoader_LoadScrnData mov r2, #0 str r2, [sp] mov r0, #0x2a @@ -401,7 +401,7 @@ _021D7802: mov r0, #0x50 mov r1, #5 add r3, r2, #0 - bl FUN_02006930 + bl GfGfxLoader_GXLoadPal _021D7844: ldr r0, [r4] mov r1, #2 @@ -1122,10 +1122,10 @@ _021D7DAC: _021D7DB4: add r0, r6, #0 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer add r0, r4, #0 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer add r0, r5, #0 add r1, r6, #0 add r2, r4, #0 diff --git a/arm9/modules/68/asm/module_68.s b/arm9/modules/68/asm/module_68.s index 5c2c1740..b2170444 100644 --- a/arm9/modules/68/asm/module_68.s +++ b/arm9/modules/68/asm/module_68.s @@ -320,7 +320,7 @@ MOD68_021D7774: ; 0x021D7774 bl FUN_020178A0 mov r0, #0x24 add r1, r4, #0 - bl FUN_02016A8C + bl FreeToHeapExplicit pop {r4, pc} .align 2, 0 thumb_func_end MOD68_021D7774 @@ -340,7 +340,7 @@ MOD68_021D77A4: ; 0x021D77A4 ldr r2, [r5] mov r0, #0x35 add r3, r1, #0 - bl FUN_0200687C + bl GfGfxLoader_LoadCharData mov r1, #0 str r1, [sp] str r1, [sp, #4] @@ -350,7 +350,7 @@ MOD68_021D77A4: ; 0x021D77A4 ldr r2, [r5] mov r0, #0x35 mov r3, #2 - bl FUN_020068C8 + bl GfGfxLoader_LoadScrnData mov r0, #0 str r0, [sp] str r0, [sp, #4] @@ -361,7 +361,7 @@ MOD68_021D77A4: ; 0x021D77A4 mov r0, #0x35 mov r1, #1 mov r3, #3 - bl FUN_020068C8 + bl GfGfxLoader_LoadScrnData mov r2, #0 str r2, [sp] mov r0, #0x24 @@ -369,7 +369,7 @@ MOD68_021D77A4: ; 0x021D77A4 mov r0, #0x35 mov r1, #3 add r3, r2, #0 - bl FUN_02006930 + bl GfGfxLoader_GXLoadPal mov r0, #0x24 mov r1, #0x80 bl AllocFromHeap @@ -527,7 +527,7 @@ MOD68_021D7904: ; 0x021D7904 bl FUN_02002E14 add r7, r0, #0 add r0, r5, r4 - bl FUN_0201AB0C + bl GetWindowWidth add r3, r0, #0 mov r1, #0 lsl r3, r3, #3 @@ -555,7 +555,7 @@ MOD68_021D7958: ; 0x021D7958 add r4, r0, #0 add r0, r4, #4 mov r1, #4 - bl FUN_02019620 + bl FillWindowPixelBuffer mov r1, #0 ldr r3, _021D7974 ; =0x00010204 add r0, r4, #0 @@ -572,7 +572,7 @@ MOD68_021D7978: ; 0x021D7978 add r4, r0, #0 add r0, #0x24 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r3, _021D7994 ; =0x000F0200 add r0, r4, #0 mov r1, #2 @@ -589,7 +589,7 @@ MOD68_021D7998: ; 0x021D7998 add r4, r0, #0 add r0, #0x34 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r3, _021D79B4 ; =0x000F0200 add r0, r4, #0 mov r1, #3 @@ -606,7 +606,7 @@ MOD68_021D79B8: ; 0x021D79B8 add r4, r0, #0 add r0, #0x44 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r3, _021D79D4 ; =0x000F0200 add r0, r4, #0 mov r1, #4 @@ -623,7 +623,7 @@ MOD68_021D79D8: ; 0x021D79D8 add r4, r0, #0 add r0, #0x54 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r3, _021D79F4 ; =0x000F0200 add r0, r4, #0 mov r1, #5 @@ -640,7 +640,7 @@ MOD68_021D79F8: ; 0x021D79F8 add r4, r0, #0 add r0, #0x64 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r3, _021D7A14 ; =0x000F0200 add r0, r4, #0 mov r1, #6 @@ -660,7 +660,7 @@ MOD68_021D7A18: ; 0x021D7A18 add r4, #0x14 add r0, r4, #0 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer mov r0, #5 str r0, [sp] add r0, r5, #0 @@ -752,7 +752,7 @@ MOD68_021D7AE4: ; 0x021D7AE4 add r5, #0xb4 add r0, r5, #0 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer mov r0, #0x7e lsl r0, r0, #2 ldr r0, [r4, r0] @@ -790,7 +790,7 @@ MOD68_021D7B34: ; 0x021D7B34 add r5, #0x94 add r0, r5, #0 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer add r4, #0xc4 ldr r0, [r4] mov r1, #0xa @@ -826,7 +826,7 @@ MOD68_021D7B80: ; 0x021D7B80 add r5, #0xa4 add r0, r5, #0 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer mov r0, #0x7f lsl r0, r0, #2 ldr r0, [r4, r0] @@ -871,7 +871,7 @@ MOD68_021D7BDC: ; 0x021D7BDC add r5, #0x74 add r0, r5, #0 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer add r4, #0xc4 ldr r0, [r4] mov r1, #8 @@ -907,7 +907,7 @@ MOD68_021D7C28: ; 0x021D7C28 add r6, #0x84 add r0, r6, #0 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer mov r0, #0x7f lsl r0, r0, #2 ldr r0, [r5, r0] @@ -1286,7 +1286,7 @@ MOD68_021D7EEC: ; 0x021D7EEC str r0, [sp, #0xc] ldr r2, [r4] mov r0, #0x35 - bl FUN_0200687C + bl GfGfxLoader_LoadCharData mov r0, #0x7e lsl r0, r0, #2 ldr r0, [r4, r0] @@ -1300,7 +1300,7 @@ MOD68_021D7EEC: ; 0x021D7EEC mov r0, #0x35 mov r2, #0 mov r3, #0x60 - bl FUN_02006930 + bl GfGfxLoader_GXLoadPal add sp, #0x10 pop {r4, pc} .align 2, 0 diff --git a/arm9/modules/69/asm/module_69.s b/arm9/modules/69/asm/module_69.s index 33fafb4f..58d0b4f8 100644 --- a/arm9/modules/69/asm/module_69.s +++ b/arm9/modules/69/asm/module_69.s @@ -533,7 +533,7 @@ _0222DA0E: ldr r2, [r4, #0x10] mov r0, #0x69 mov r3, #3 - bl FUN_020068C8 + bl GfGfxLoader_LoadScrnData ldr r0, [r4] add r0, r0, #1 str r0, [r4] @@ -686,7 +686,7 @@ MOD69_0222DB2C: ; 0x0222DB2C mov r1, #0 mov r0, #0x11 add r2, r1, #0 - bl FUN_020BB1C0 + bl NNS_G3dGeBufferOP_N ldr r0, _0222DB98 ; =0x00001B38 ldr r0, [r4, r0] bl MOD69_0222F11C @@ -694,11 +694,11 @@ MOD69_0222DB2C: ; 0x0222DB2C mov r0, #0x12 add r1, sp, #4 str r2, [sp, #4] - bl FUN_020BB1C0 + bl NNS_G3dGeBufferOP_N mov r1, #0 mov r0, #0x11 add r2, r1, #0 - bl FUN_020BB1C0 + bl NNS_G3dGeBufferOP_N ldr r0, _0222DB9C ; =0x00001B3C ldr r0, [r4, r0] bl MOD69_0222F63C @@ -706,7 +706,7 @@ MOD69_0222DB2C: ; 0x0222DB2C mov r0, #0x12 add r1, sp, #0 str r2, [sp] - bl FUN_020BB1C0 + bl NNS_G3dGeBufferOP_N ldr r0, _0222DBA0 ; =0x04000540 mov r1, #1 str r1, [r0] @@ -793,7 +793,7 @@ MOD69_0222DBAC: ; 0x0222DBAC add r0, r4, #0 add r0, #0x14 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer add r0, r4, #0 add r0, #0x14 bl FUN_02019548 @@ -811,7 +811,7 @@ MOD69_0222DBAC: ; 0x0222DBAC ldr r2, [r4, #0x10] mov r0, #0x69 add r3, r1, #0 - bl FUN_0200687C + bl GfGfxLoader_LoadCharData mov r1, #0 str r1, [sp] str r1, [sp, #4] @@ -822,7 +822,7 @@ MOD69_0222DBAC: ; 0x0222DBAC ldr r2, [r4, #0x10] mov r0, #0x69 mov r3, #3 - bl FUN_020068C8 + bl GfGfxLoader_LoadScrnData mov r0, #0x60 str r0, [sp] mov r0, #0x3f @@ -831,7 +831,7 @@ MOD69_0222DBAC: ; 0x0222DBAC mov r0, #0x69 mov r1, #4 add r3, r2, #0 - bl FUN_02006930 + bl GfGfxLoader_GXLoadPal mov r0, #0 str r0, [sp] str r0, [sp, #4] @@ -843,7 +843,7 @@ MOD69_0222DBAC: ; 0x0222DBAC ldr r2, [r4, #0x10] mov r0, #0x69 add r3, r1, #0 - bl FUN_020068C8 + bl GfGfxLoader_LoadScrnData ldr r0, [r4, #0x10] mov r1, #1 bl FUN_02017CD0 @@ -921,7 +921,7 @@ MOD69_0222DD54: ; 0x0222DD54 push {r3, r4, lr} sub sp, #4 add r4, r0, #0 - bl FUN_020BB7F4 + bl NNS_G3dInit bl G3X_InitMtxStack ldr r0, _0222DDE4 ; =0x04000060 ldr r2, _0222DDE8 ; =0xFFFFCFFD @@ -957,11 +957,11 @@ MOD69_0222DD54: ; 0x0222DD54 str r0, [r1, #0x40] mov r0, #1 add r1, r0, #0 - bl FUN_020AEB70 + bl NNS_GfdInitFrmTexVramManager mov r0, #1 lsl r0, r0, #0xe mov r1, #1 - bl FUN_020AEDF4 + bl NNS_GfdInitFrmPlttVramManager mov r0, #1 add r1, r0, #0 bl GX_EngineAToggleLayers @@ -1071,7 +1071,7 @@ MOD69_0222DE98: ; 0x0222DE98 push {r3, r4, lr} sub sp, #0x1c add r4, r0, #0 - bl FUN_020B0FC0 + bl NNS_G2dInitOamManagerModule mov r0, #0 str r0, [sp] mov r1, #0x80 @@ -1095,7 +1095,7 @@ MOD69_0222DE98: ; 0x0222DE98 mov r1, #0x29 mov r2, #0 add r3, sp, #0x18 - bl FUN_02006C30 + bl GfGfxLoader_GetCellBank mov r1, #0x5b lsl r1, r1, #2 str r0, [r4, r1] @@ -1105,7 +1105,7 @@ MOD69_0222DE98: ; 0x0222DE98 mov r1, #0x2a mov r2, #0 add r3, sp, #0x14 - bl FUN_02006C5C + bl GfGfxLoader_GetAnimBank mov r1, #0x17 lsl r1, r1, #4 str r0, [r4, r1] @@ -1156,13 +1156,13 @@ MOD69_0222DF0C: ; 0x0222DF0C str r0, [sp] mov r0, #0x1b add r3, sp, #0x44 - bl FUN_02006BB0 + bl GfGfxLoader_GetCharData str r0, [sp, #0x28] mov r0, #0x1b mov r1, #0x27 add r2, sp, #0x40 mov r3, #0x3f - bl FUN_02006C08 + bl GfGfxLoader_GetPlttData str r0, [sp, #0x24] mov r0, #0 str r0, [sp, #0x20] @@ -1193,19 +1193,19 @@ _0222DF72: str r0, [sp, #0x34] _0222DF98: add r0, sp, #0x5c - bl FUN_020B1A24 + bl NNS_G2dInitImageProxy add r0, sp, #0x48 - bl FUN_020B19DC + bl NNS_G2dInitImagePaletteProxy ldr r0, [sp, #0x44] add r1, r7, #0 mov r2, #1 add r3, sp, #0x5c - bl FUN_020B1768 + bl NNS_G2dLoadImage1DMapping ldr r0, [sp, #0x40] add r1, r6, #0 mov r2, #1 add r3, sp, #0x48 - bl FUN_020B1240 + bl NNS_G2dLoadPalette ldr r0, [sp, #0x20] add r0, r0, #1 str r0, [sp, #0x94] @@ -1303,7 +1303,7 @@ _0222DF98: ldrh r1, [r1, #4] mov r2, #1 add r3, r6, #0 - bl FUN_02006930 + bl GfGfxLoader_GXLoadPal mov r1, #0x81 lsl r1, r1, #2 ldr r1, [r5, r1] @@ -1333,20 +1333,20 @@ _0222DF98: b _0222DF98 _0222E0D4: add r0, sp, #0x5c - bl FUN_020B1A24 + bl NNS_G2dInitImageProxy add r0, sp, #0x48 - bl FUN_020B19DC + bl NNS_G2dInitImagePaletteProxy mov r1, #0x96 ldr r0, [sp, #0x44] lsl r1, r1, #8 mov r2, #1 add r3, sp, #0x5c - bl FUN_020B1768 + bl NNS_G2dLoadImage1DMapping ldr r0, [sp, #0x40] mov r1, #0xc0 mov r2, #1 add r3, sp, #0x48 - bl FUN_020B1240 + bl NNS_G2dLoadPalette ldr r0, [sp, #0x14] ldr r0, [r0, #0xc] ldr r0, [r0] @@ -1398,7 +1398,7 @@ _0222E10E: ldrh r1, [r1, #4] mov r2, #1 mov r3, #0xc0 - bl FUN_02006930 + bl GfGfxLoader_GXLoadPal mov r0, #0 str r0, [sp, #0x94] add r0, sp, #0x80 @@ -2169,7 +2169,7 @@ _0222E77E: str r0, [r3] add r0, r4, #0 add r0, #0x48 - bl FUN_020B1A24 + bl NNS_G2dInitImageProxy mov r3, #0x19 add r0, r4, #0 lsl r3, r3, #8 @@ -2179,7 +2179,7 @@ _0222E77E: add r0, #0x48 mov r1, #1 add r2, r2, r3 - bl FUN_020B1A1C + bl NNS_G2dSetImageLocation ldr r0, _0222E7BC ; =MOD69_0222E7C0 add r1, r4, #0 mov r2, #0 @@ -2608,7 +2608,7 @@ _0222EAEA: _0222EB16: ldr r0, [r4, #0x10] mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, [r4, #0x10] bl FUN_02019548 ldr r0, [r4, #0x28] @@ -3795,10 +3795,10 @@ _0222F408: mov r1, #1 bl G3B_LightVector ldrh r0, [r4, #0x28] - ldr r3, _0222F62C ; =UNK_020FFA38 + ldr r3, _0222F62C ; =FX_SinCosTable_ asr r0, r0, #4 lsl r1, r0, #2 - ldr r0, _0222F62C ; =UNK_020FFA38 + ldr r0, _0222F62C ; =FX_SinCosTable_ add r2, r0, r1 ldrsh r1, [r3, r1] mov r3, #2 @@ -3810,10 +3810,10 @@ _0222F408: add r1, r5, #0 bl MTX_Concat44 ldrh r0, [r4, #0x2a] - ldr r3, _0222F62C ; =UNK_020FFA38 + ldr r3, _0222F62C ; =FX_SinCosTable_ asr r0, r0, #4 lsl r1, r0, #2 - ldr r0, _0222F62C ; =UNK_020FFA38 + ldr r0, _0222F62C ; =FX_SinCosTable_ add r2, r0, r1 ldrsh r1, [r3, r1] mov r3, #2 @@ -3825,10 +3825,10 @@ _0222F408: add r1, r5, #0 bl MTX_Concat44 ldrh r0, [r4, #0x2c] - ldr r3, _0222F62C ; =UNK_020FFA38 + ldr r3, _0222F62C ; =FX_SinCosTable_ asr r0, r0, #4 lsl r1, r0, #2 - ldr r0, _0222F62C ; =UNK_020FFA38 + ldr r0, _0222F62C ; =FX_SinCosTable_ add r2, r0, r1 ldrsh r1, [r3, r1] mov r3, #2 @@ -3935,7 +3935,7 @@ _0222F5E2: lsl r0, r0, #0xa cmp r1, r0 blo _0222F608 - bl ErrorHandling + bl GF_AssertFail _0222F608: mov r0, #1 str r0, [r7, #4] @@ -3950,7 +3950,7 @@ _0222F61C: .word 0x0000019A _0222F620: .word 0x00002D6B _0222F624: .word 0x00000FFF _0222F628: .word 0xFFFFF001 -_0222F62C: .word UNK_020FFA38 +_0222F62C: .word FX_SinCosTable_ _0222F630: .word 0x00007FFF _0222F634: .word 0x00008D1C _0222F638: .word 0x0000151C diff --git a/arm9/modules/70/asm/module_70.s b/arm9/modules/70/asm/module_70.s index a0966fec..9db294af 100644 --- a/arm9/modules/70/asm/module_70.s +++ b/arm9/modules/70/asm/module_70.s @@ -407,7 +407,7 @@ MOD70_021D77CC: ; 0x021D77CC mov r0, #0x3d bl FUN_02016B94 str r0, [r4, #0x10] - bl FUN_020B0FC0 + bl NNS_G2dInitOamManagerModule mov r0, #0 str r0, [sp] mov r1, #0x80 @@ -831,7 +831,7 @@ MOD70_021D7AF4: ; 0x021D7AF4 ldr r2, [r5, #0x10] mov r0, #0x65 mov r3, #2 - bl FUN_0200687C + bl GfGfxLoader_LoadCharData mov r1, #0 str r1, [sp] str r1, [sp, #4] @@ -842,7 +842,7 @@ MOD70_021D7AF4: ; 0x021D7AF4 ldr r2, [r5, #0x10] mov r0, #0x65 mov r3, #2 - bl FUN_020068C8 + bl GfGfxLoader_LoadScrnData mov r0, #0x40 str r0, [sp] mov r0, #0x3d @@ -851,7 +851,7 @@ MOD70_021D7AF4: ; 0x021D7AF4 mov r0, #0x65 mov r1, #2 add r3, r2, #0 - bl FUN_02006930 + bl GfGfxLoader_GXLoadPal mov r2, #0 str r2, [sp] mov r1, #1 @@ -1022,11 +1022,11 @@ MOD70_021D7CC0: ; 0x021D7CC0 add r4, r0, #0 add r0, #0x14 mov r1, #0xf - bl FUN_02019620 + bl FillWindowPixelBuffer add r0, r4, #0 add r0, #0x24 mov r1, #0xf - bl FUN_02019620 + bl FillWindowPixelBuffer add r0, r4, #0 add r0, #0x14 bl FUN_02019548 @@ -1102,7 +1102,7 @@ MOD70_021D7CE8: ; 0x021D7CE8 bl StringExpandPlaceholders add r0, r6, #0 mov r1, #0xf - bl FUN_02019620 + bl FillWindowPixelBuffer mov r1, #0 str r1, [sp] mov r2, #0xff @@ -1136,7 +1136,7 @@ MOD70_021D7D98: ; 0x021D7D98 add r0, #0x24 mov r1, #0xf str r0, [sp, #0xc] - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, [r4, #0x1c] cmp r0, #0 beq _021D7DC8 @@ -1357,7 +1357,7 @@ MOD70_021D7F70: ; 0x021D7F70 mov r1, #0x29 mov r2, #0 add r3, sp, #8 - bl FUN_02006C30 + bl GfGfxLoader_GetCellBank mov r1, #0x5e lsl r1, r1, #2 str r0, [r4, r1] @@ -1367,7 +1367,7 @@ MOD70_021D7F70: ; 0x021D7F70 mov r1, #0x2a mov r2, #0 add r3, sp, #4 - bl FUN_02006C5C + bl GfGfxLoader_GetAnimBank mov r1, #0x5f lsl r1, r1, #2 str r0, [r4, r1] @@ -1448,13 +1448,13 @@ MOD70_021D7FF8: ; 0x021D7FF8 add r2, r3, #0 mov r0, #0x1b add r3, sp, #0x14 - bl FUN_02006BB0 + bl GfGfxLoader_GetCharData str r0, [sp, #0xc] mov r0, #0x1b mov r1, #0x27 add r2, sp, #0x10 mov r3, #0x3d - bl FUN_02006C08 + bl GfGfxLoader_GetPlttData mov r4, #0 ldr r6, _021D80C4 ; =0x021D82AC str r0, [sp, #8] @@ -1462,19 +1462,19 @@ MOD70_021D7FF8: ; 0x021D7FF8 add r7, r4, #0 _021D8050: add r0, sp, #0x2c - bl FUN_020B1A24 + bl NNS_G2dInitImageProxy add r0, sp, #0x18 - bl FUN_020B19DC + bl NNS_G2dInitImagePaletteProxy ldr r0, [sp, #0x14] add r1, r4, #0 mov r2, #1 add r3, sp, #0x2c - bl FUN_020B1768 + bl NNS_G2dLoadImage1DMapping ldr r0, [sp, #0x10] add r1, r7, #0 mov r2, #1 add r3, sp, #0x18 - bl FUN_020B1240 + bl NNS_G2dLoadPalette ldr r0, [r6] lsl r0, r0, #0xc str r0, [sp, #0x58] @@ -1605,7 +1605,7 @@ _021D80F4: ldrh r1, [r1, #4] ldr r3, [sp, #0x14] mov r2, #1 - bl FUN_02006930 + bl GfGfxLoader_GXLoadPal ldr r0, [sp, #0x20] ldr r0, [r0, #0x18] cmp r4, r0 diff --git a/arm9/modules/71/asm/module_71.s b/arm9/modules/71/asm/module_71.s index ac2559a6..303bee40 100644 --- a/arm9/modules/71/asm/module_71.s +++ b/arm9/modules/71/asm/module_71.s @@ -756,7 +756,7 @@ _0222DC0C: mov r0, #0x13 mov r2, #0 add r3, r6, r3 - bl FUN_02006BB0 + bl GfGfxLoader_GetCharData mov r1, #0x79 lsl r1, r1, #4 str r0, [r5, r1] @@ -964,7 +964,7 @@ _0222DDD8: lsr r5, r0, #0x10 cmp r5, #0x3c blo _0222DDF8 - bl ErrorHandling + bl GF_AssertFail _0222DDF8: bl FUN_02031190 mov r1, #0x1f @@ -1161,7 +1161,7 @@ _0222DF74: b _0222E0E8 _0222DF80: ldr r0, [r4, #4] - bl FUN_02029EF8 + bl Sav2_Chatot_get bl MOD71_0222F528 ldr r0, [r4, #0x4c] add r0, r0, #1 @@ -1750,7 +1750,7 @@ MOD71_0222E438: ; 0x0222E438 lsl r1, r1, #2 ldr r1, [r4, r1] mov r0, #0x1a - bl FUN_02016A8C + bl FreeToHeapExplicit mov r0, #0x61 lsl r0, r0, #2 ldr r0, [r4, r0] @@ -1821,7 +1821,7 @@ MOD71_0222E4DC: ; 0x0222E4DC ldrh r1, [r2, r1] mov r2, #5 lsl r3, r3, #5 - bl FUN_02006930 + bl GfGfxLoader_GXLoadPal ldr r0, _0222E548 ; =0x00002110 mov r1, #0 str r1, [r5, r0] @@ -2220,11 +2220,11 @@ MOD71_0222E884: ; 0x0222E884 str r2, [sp] ldr r2, [sp, #0x20] ldr r3, [sp, #0x24] - bl UncompressFromNarc + bl GfGfxLoader_LoadFromNarc add r6, r0, #0 beq _0222E8D6 add r1, sp, #4 - bl FUN_020B0180 + bl NNS_G2dGetUnpackedScreenData cmp r0, #0 beq _0222E8D0 ldr r0, [sp, #0x1c] @@ -2291,7 +2291,7 @@ MOD71_0222E900: ; 0x0222E900 mov r0, #0x36 mov r2, #4 add r3, r1, #0 - bl FUN_02006930 + bl GfGfxLoader_GXLoadPal mov r1, #0 mov r0, #0x12 lsl r0, r0, #4 @@ -2301,7 +2301,7 @@ MOD71_0222E900: ; 0x0222E900 mov r0, #0x36 add r2, r1, #0 add r3, r1, #0 - bl FUN_02006930 + bl GfGfxLoader_GXLoadPal mov r0, #0 add r1, r0, #0 bl FUN_02017FE4 @@ -2325,7 +2325,7 @@ MOD71_0222E900: ; 0x0222E900 mov r0, #0x36 add r2, r4, #0 mov r3, #2 - bl FUN_0200687C + bl GfGfxLoader_LoadCharData mov r0, #0 str r0, [sp] mov r0, #6 @@ -2353,7 +2353,7 @@ MOD71_0222E900: ; 0x0222E900 mov r1, #4 add r2, r4, #0 mov r3, #3 - bl FUN_020068C8 + bl GfGfxLoader_LoadScrnData mov r0, #0 mov r1, #0x40 mov r2, #0x1a @@ -2375,7 +2375,7 @@ MOD71_0222E900: ; 0x0222E900 mov r1, #2 add r2, r4, #0 mov r3, #5 - bl FUN_0200687C + bl GfGfxLoader_LoadCharData mov r0, #0 str r0, [sp] mov r0, #6 @@ -2389,7 +2389,7 @@ MOD71_0222E900: ; 0x0222E900 mov r0, #0x36 add r2, r4, #0 add r3, r1, #0 - bl FUN_020068C8 + bl GfGfxLoader_LoadScrnData mov r0, #0 str r0, [sp] mov r0, #6 @@ -2403,7 +2403,7 @@ MOD71_0222E900: ; 0x0222E900 mov r0, #0x36 add r2, r4, #0 add r3, r1, #0 - bl FUN_020068C8 + bl GfGfxLoader_LoadScrnData mov r0, #4 mov r1, #0x40 mov r2, #0x1a @@ -2449,7 +2449,7 @@ MOD71_0222EA68: ; 0x0222EA68 push {r4, r5, r6, r7, lr} sub sp, #0x14 add r5, r0, #0 - bl FUN_020B0FC0 + bl NNS_G2dInitOamManagerModule mov r0, #0 str r0, [sp] mov r1, #0x7f @@ -2628,7 +2628,7 @@ _0222EAA6: mov r0, #0x13 mov r2, #1 add r3, #0xc0 - bl FUN_02006930 + bl GfGfxLoader_GXLoadPal add sp, #0x14 pop {r4, r5, r6, r7, pc} thumb_func_end MOD71_0222EA68 @@ -2700,7 +2700,7 @@ MOD71_0222EC5C: ; 0x0222EC5C bl GetMonData add r0, r5, #0 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, [sp, #0x20] ldr r2, [sp, #8] str r0, [sp] @@ -2910,7 +2910,7 @@ _0222EE14: str r0, [sp, #0x30] add r0, r6, r0 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer mov r0, #0x61 lsl r0, r0, #2 ldr r0, [r4, r0] @@ -2985,7 +2985,7 @@ _0222EEA6: lsr r7, r0, #0x10 add r0, r6, r4 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer mov r0, #0x14 mov r1, #0x1a bl String_ctor @@ -3446,7 +3446,7 @@ MOD71_0222F264: ; 0x0222F264 cmp r0, r1 bne _0222F2AE ldr r0, [r4, #4] - bl FUN_02029EF8 + bl Sav2_Chatot_get mov r1, #0 mov r2, #0x64 add r3, r1, #0 @@ -3551,7 +3551,7 @@ MOD71_0222F350: ; 0x0222F350 add r4, r2, #0 cmp r5, #0xd blt _0222F362 - bl ErrorHandling + bl GF_AssertFail _0222F362: ldr r1, _0222F3C8 ; =0x02231220 lsl r0, r5, #3 @@ -4313,7 +4313,7 @@ MOD71_0222F954: ; 0x0222F954 mov r0, #0xda lsl r0, r0, #6 ldr r0, [r5, r0] - bl FUN_02001204 + bl ListMenu_ProcessInput add r4, r0, #0 mov r0, #1 mvn r0, r0 @@ -4383,10 +4383,10 @@ _0222F9E4: mov r1, #0 ldr r0, [r5, r0] add r2, r1, #0 - bl FUN_02001300 + bl DestroyListMenu ldr r0, _0222FA34 ; =0x0000367C ldr r0, [r5, r0] - bl ListMenu_dtor + bl ListMenuItems_dtor mov r0, #0 pop {r4, r5, r6, pc} .align 2, 0 @@ -4412,7 +4412,7 @@ MOD71_0222FA38: ; 0x0222FA38 str r0, [sp] add r0, r0, #1 mov r1, #0x1a - bl ListMenu_ctor + bl ListMenuItems_ctor ldr r1, _0222FAD0 ; =0x0000367C str r0, [r5, r1] mov r0, #0x64 @@ -4438,7 +4438,7 @@ _0222FA60: add r1, r6, #0 ldr r0, [r5, r0] add r2, r4, #0 - bl ListMenu_AddItem + bl ListMenuItems_AddItem _0222FA8A: add r4, r4, #1 cmp r4, #0x20 @@ -4450,7 +4450,7 @@ _0222FA8A: add r3, r2, #0 ldr r1, [r5, r1] sub r3, #0xd - bl ListMenu_ItemFromMsgData + bl ListMenuItems_AppendFromMsgData add r0, r6, #0 bl String_dtor ldr r2, _0222FAD0 ; =0x0000367C @@ -4909,7 +4909,7 @@ MOD71_0222FDD8: ; 0x0222FDD8 bl MOD71_02230F40 mov r0, #3 mov r1, #0x1a - bl ListMenu_ctor + bl ListMenuItems_ctor ldr r1, _0222FED8 ; =0x0000065C mov r2, #0x11 str r0, [r4, r1] @@ -4918,7 +4918,7 @@ MOD71_0222FDD8: ; 0x0222FDD8 lsl r1, r1, #2 ldr r1, [r4, r1] mov r3, #0 - bl ListMenu_ItemFromMsgData + bl ListMenuItems_AppendFromMsgData ldr r0, _0222FED8 ; =0x0000065C mov r1, #0x61 lsl r1, r1, #2 @@ -4926,7 +4926,7 @@ MOD71_0222FDD8: ; 0x0222FDD8 ldr r1, [r4, r1] mov r2, #0x12 mov r3, #1 - bl ListMenu_ItemFromMsgData + bl ListMenuItems_AppendFromMsgData ldr r0, _0222FED8 ; =0x0000065C mov r1, #0x61 lsl r1, r1, #2 @@ -4934,7 +4934,7 @@ MOD71_0222FDD8: ; 0x0222FDD8 ldr r1, [r4, r1] mov r2, #0x13 mov r3, #2 - bl ListMenu_ItemFromMsgData + bl ListMenuItems_AppendFromMsgData ldr r0, _0222FED8 ; =0x0000065C ldr r1, [r4, r0] str r1, [sp, #0x10] @@ -5024,7 +5024,7 @@ _0222FF10: bl FUN_02001C5C ldr r0, _0223000C ; =0x0000065C ldr r0, [r4, r0] - bl ListMenu_dtor + bl ListMenuItems_dtor ldr r1, _02230010 ; =MOD71_0222F538 ldr r0, _02230014 ; =0x00002214 add sp, #0x10 @@ -5063,7 +5063,7 @@ _0222FF64: bl FUN_02001C5C ldr r0, _0223000C ; =0x0000065C ldr r0, [r4, r0] - bl ListMenu_dtor + bl ListMenuItems_dtor ldr r1, _0223001C ; =MOD71_02230020 ldr r0, _02230014 ; =0x00002214 str r1, [r4, r0] @@ -5100,7 +5100,7 @@ _0222FFB4: bl FUN_02001C5C ldr r0, _0223000C ; =0x0000065C ldr r0, [r4, r0] - bl ListMenu_dtor + bl ListMenuItems_dtor ldr r1, _02230010 ; =MOD71_0222F538 ldr r0, _02230014 ; =0x00002214 str r1, [r4, r0] @@ -6155,7 +6155,7 @@ MOD71_02230810: ; 0x02230810 bl MOD71_02230F40 mov r0, #2 mov r1, #0x1a - bl ListMenu_ctor + bl ListMenuItems_ctor ldr r1, _02230900 ; =0x0000065C mov r2, #0x11 str r0, [r4, r1] @@ -6164,7 +6164,7 @@ MOD71_02230810: ; 0x02230810 lsl r1, r1, #2 ldr r1, [r4, r1] mov r3, #0 - bl ListMenu_ItemFromMsgData + bl ListMenuItems_AppendFromMsgData ldr r0, _02230900 ; =0x0000065C mov r1, #0x61 lsl r1, r1, #2 @@ -6172,7 +6172,7 @@ MOD71_02230810: ; 0x02230810 ldr r1, [r4, r1] mov r2, #0x13 mov r3, #1 - bl ListMenu_ItemFromMsgData + bl ListMenuItems_AppendFromMsgData ldr r0, _02230900 ; =0x0000065C ldr r1, [r4, r0] sub r0, #0x94 @@ -6259,7 +6259,7 @@ _0223092E: bl FUN_02001C5C ldr r0, _022309E4 ; =0x0000065C ldr r0, [r4, r0] - bl ListMenu_dtor + bl ListMenuItems_dtor add sp, #0x10 mov r0, #3 pop {r4, pc} @@ -6295,7 +6295,7 @@ _02230982: bl FUN_02001C5C ldr r0, _022309E4 ; =0x0000065C ldr r0, [r4, r0] - bl ListMenu_dtor + bl ListMenuItems_dtor ldr r1, _022309DC ; =MOD71_0222F538 ldr r0, _022309E0 ; =0x00002214 str r1, [r4, r0] @@ -6379,8 +6379,8 @@ _02230A40: cmp r0, #0 bne _02230A98 ldr r0, [r5, #0x10] - bl FUN_02029EF8 - bl FUN_02029F08 + bl Sav2_Chatot_get + bl Chatot_invalidate _02230A98: ldr r0, [r5, #0x10] add r1, r4, #0 @@ -6627,7 +6627,7 @@ MOD71_02230C48: ; 0x02230C48 bl FUN_02019064 add r0, r5, #0 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer mov r2, #1 add r1, r5, #0 str r2, [sp] @@ -6646,7 +6646,7 @@ MOD71_02230C48: ; 0x02230C48 add r0, r5, #0 add r0, #0x10 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer mov r0, #0x15 str r0, [sp] mov r0, #5 @@ -6666,7 +6666,7 @@ MOD71_02230C48: ; 0x02230C48 add r0, r5, #0 add r0, #0x60 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer add r0, r4, #0 bl Options_GetFrame lsl r0, r0, #0x18 @@ -6706,7 +6706,7 @@ MOD71_02230C48: ; 0x02230C48 lsl r0, r0, #4 add r0, r5, r0 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer mov r0, #0x13 str r0, [sp] mov r0, #0xe @@ -6728,7 +6728,7 @@ MOD71_02230C48: ; 0x02230C48 lsl r0, r0, #4 add r0, r5, r0 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer mov r0, #0x13 str r0, [sp] mov r0, #0x1b @@ -6750,7 +6750,7 @@ MOD71_02230C48: ; 0x02230C48 lsl r0, r0, #4 add r0, r5, r0 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer mov r0, #0x11 str r0, [sp] mov r0, #0xb @@ -6771,7 +6771,7 @@ MOD71_02230C48: ; 0x02230C48 lsl r0, r0, #6 add r0, r5, r0 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer mov r0, #0x13 str r0, [sp] mov r0, #0xb @@ -6792,7 +6792,7 @@ MOD71_02230C48: ; 0x02230C48 lsl r0, r0, #4 add r0, r5, r0 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r4, _02230E80 ; =0x022313F4 mov r7, #0 mov r6, #0x33 @@ -6824,7 +6824,7 @@ _02230DE2: ldr r0, [sp, #0x18] mov r1, #0 add r0, r5, r0 - bl FUN_02019620 + bl FillWindowPixelBuffer add r7, r7, #1 add r6, #0x10 add r4, r4, #4 @@ -6861,7 +6861,7 @@ _02230E2C: bl FUN_02019064 add r0, r5, r7 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer add r6, r6, #1 add r4, #0xa cmp r6, #8 @@ -6995,7 +6995,7 @@ _02230F6A: _02230F76: add r0, r5, #0 mov r1, #0xf - bl FUN_02019620 + bl FillWindowPixelBuffer mov r3, #0 str r3, [sp] ldr r0, _02230FAC ; =0x0001020F @@ -7127,7 +7127,7 @@ MOD71_02231018: ; 0x02231018 mov r3, #0x1a str r5, [sp, #0x14] str r4, [sp, #0x20] - bl FUN_020010A8 + bl ListMenuInit add sp, #0x34 pop {r4, r5, r6, r7, pc} nop diff --git a/arm9/modules/73/asm/module_73.s b/arm9/modules/73/asm/module_73.s index d5105d7e..7d9850cc 100644 --- a/arm9/modules/73/asm/module_73.s +++ b/arm9/modules/73/asm/module_73.s @@ -661,7 +661,7 @@ MOD73_021D79E8: ; 0x021D79E8 bl MOD73_021D90D0 cmp r0, #0 bne _021D7A3C - bl ErrorHandling + bl GF_AssertFail _021D7A3C: ldr r0, [r4, #0xc] pop {r4, pc} @@ -869,7 +869,7 @@ _021D7BC6: bl MOD73_021D90D0 cmp r0, #0 bne _021D7C0C - bl ErrorHandling + bl GF_AssertFail _021D7C0C: add r0, r6, #0 bl FreeToHeap @@ -902,14 +902,14 @@ _021D7C1A: bl MOD73_021D90D0 cmp r0, #0 bne _021D7C54 - bl ErrorHandling + bl GF_AssertFail _021D7C54: ldr r0, [r4, #0xc] add sp, #0xc add r0, r0, #1 pop {r3, r4, r5, r6, pc} _021D7C5C: - bl ErrorHandling + bl GF_AssertFail _021D7C60: ldr r0, [r4, #0xc] add sp, #0xc @@ -1204,7 +1204,7 @@ _021D7EA8: bl MOD73_021D90D0 cmp r0, #0 bne _021D7ECE - bl ErrorHandling + bl GF_AssertFail _021D7ECE: ldr r0, [r4, #0xc] add sp, #0xc @@ -1255,14 +1255,14 @@ _021D7F0C: bl MOD73_021D90D0 cmp r0, #0 bne _021D7F32 - bl ErrorHandling + bl GF_AssertFail _021D7F32: ldr r0, [r4, #0xc] add sp, #0xc add r0, r0, #1 pop {r3, r4, r5, r6, pc} _021D7F3A: - bl ErrorHandling + bl GF_AssertFail _021D7F3E: ldr r0, [r4, #0xc] add sp, #0xc @@ -2019,7 +2019,7 @@ MOD73_021D856C: ; 0x021D856C ldr r0, [r4, r0] cmp r0, #0 bne _021D857C - bl ErrorHandling + bl GF_AssertFail _021D857C: ldr r0, _021D858C ; =0x0000152C ldr r0, [r4, r0] @@ -2366,9 +2366,9 @@ MOD73_021D8858: ; 0x021D8858 mov r1, #0 mov r0, #0x11 add r2, r1, #0 - bl FUN_020BB1C0 - bl FUN_020BB394 - bl FUN_020B02C8 + bl NNS_G3dGeBufferOP_N + bl NNS_G3dGeFlushBuffer + bl NNS_G2dSetupSoftwareSpriteCamera mov r0, #0xaf lsl r0, r0, #2 ldr r0, [r4, r0] @@ -2380,7 +2380,7 @@ _021D8882: mov r0, #0x12 add r1, sp, #0 str r2, [sp] - bl FUN_020BB1C0 + bl NNS_G3dGeBufferOP_N mov r0, #0 add r1, r0, #0 bl FUN_020222B4 @@ -2595,7 +2595,7 @@ MOD73_021D8A18: ; 0x021D8A18 push {r4, r5, lr} sub sp, #0x24 add r4, r0, #0 - bl FUN_020B0FC0 + bl NNS_G2dInitOamManagerModule mov r0, #0 str r0, [sp] mov r1, #0x80 @@ -2754,7 +2754,7 @@ _021D8B3A: MOD73_021D8B4C: ; 0x021D8B4C push {r3, r4, lr} sub sp, #4 - bl FUN_020BB7F4 + bl NNS_G3dInit bl G3X_InitMtxStack ldr r0, _021D8BB8 ; =0x04000060 ldr r2, _021D8BBC ; =0xFFFFCFFD @@ -2793,11 +2793,11 @@ MOD73_021D8B4C: ; 0x021D8B4C str r0, [r2] str r1, [r2, #0x40] mov r1, #1 - bl FUN_020AEB70 + bl NNS_GfdInitFrmTexVramManager mov r0, #2 lsl r0, r0, #0xe mov r1, #1 - bl FUN_020AEDF4 + bl NNS_GfdInitFrmPlttVramManager add sp, #4 pop {r3, r4, pc} nop @@ -2812,8 +2812,8 @@ _021D8BCC: .word 0xBFFF0000 thumb_func_start MOD73_021D8BD0 MOD73_021D8BD0: ; 0x021D8BD0 push {r3, lr} - bl FUN_020AEAF4 - bl FUN_020AEC60 + bl NNS_GfdResetFrmTexVramState + bl NNS_GfdResetFrmPlttVramState pop {r3, pc} thumb_func_end MOD73_021D8BD0 @@ -3622,7 +3622,7 @@ _021D91F2: _021D91FA: cmp r4, #0 bne _021D9202 - bl ErrorHandling + bl GF_AssertFail _021D9202: mov r0, #0x1a lsl r0, r0, #4 @@ -3636,11 +3636,11 @@ _021D9202: blx r0 cmp r0, r5 beq _021D921E - bl ErrorHandling + bl GF_AssertFail _021D921E: cmp r5, #0x26 blt _021D9226 - bl ErrorHandling + bl GF_AssertFail _021D9226: sub r7, #0x16 str r7, [r4, #4] @@ -3681,7 +3681,7 @@ MOD73_021D9258: ; 0x021D9258 mov r0, #0x7a mov r2, #0 add r3, sp, #4 - bl FUN_02006BB0 + bl GfGfxLoader_GetCharData add r4, r0, #0 ldr r0, [sp, #4] str r5, [sp, #8] @@ -3705,7 +3705,7 @@ MOD73_021D9288: ; 0x021D9288 add r3, r2, #0 mov r0, #0x7a add r2, sp, #0 - bl FUN_02006C08 + bl GfGfxLoader_GetPlttData add r4, r0, #0 ldr r0, [sp] str r5, [sp, #4] @@ -3865,7 +3865,7 @@ MOD73_021D9340: ; 0x021D9340 bl FUN_02009B78 cmp r0, #0 bne _021D93D0 - bl ErrorHandling + bl GF_AssertFail _021D93D0: ldr r0, [r4] bl FUN_02009474 @@ -3873,7 +3873,7 @@ _021D93D0: bl FUN_02009D68 cmp r0, #0 bne _021D93E4 - bl ErrorHandling + bl GF_AssertFail _021D93E4: ldr r0, [r4, #4] bl FUN_02009474 @@ -3969,7 +3969,7 @@ MOD73_021D942C: ; 0x021D942C bl FUN_02009B78 cmp r0, #0 bne _021D94AA - bl ErrorHandling + bl GF_AssertFail _021D94AA: ldr r0, [r4] bl FUN_02009474 @@ -4072,7 +4072,7 @@ MOD73_021D9540: ; 0x021D9540 bl FUN_0201FF84 add r4, r0, #0 bne _021D956E - bl ErrorHandling + bl GF_AssertFail _021D956E: add r0, r4, #0 add sp, #0x20 @@ -4274,7 +4274,7 @@ MOD73_021D96C8: ; 0x021D96C8 ldr r0, [r4] cmp r0, #0 beq _021D96D6 - bl ErrorHandling + bl GF_AssertFail _021D96D6: mov r2, #0x1f add r0, r4, #0 @@ -4389,7 +4389,7 @@ MOD73_021D97A4: ; 0x021D97A4 str r1, [sp] cmp r0, #1 beq _021D97B4 - bl ErrorHandling + bl GF_AssertFail _021D97B4: mov r0, #0x42 lsl r0, r0, #2 @@ -4430,7 +4430,7 @@ MOD73_021D97F0: ; 0x021D97F0 ldr r0, [r0, #4] cmp r0, #0 beq _021D9800 - bl ErrorHandling + bl GF_AssertFail _021D9800: mov r0, #0 str r0, [sp, #0xc] @@ -4668,7 +4668,7 @@ _021D99BE: str r1, [r4, r0] b _021D99E4 _021D99E0: - bl ErrorHandling + bl GF_AssertFail _021D99E4: ldr r0, [sp] add r4, r4, #4 @@ -4735,7 +4735,7 @@ MOD73_021D9A4C: ; 0x021D9A4C ldr r0, [r4, #0x30] cmp r0, #0 beq _021D9A5A - bl ErrorHandling + bl GF_AssertFail _021D9A5A: add r0, r4, #0 mov r1, #0 @@ -4754,7 +4754,7 @@ MOD73_021D9A68: ; 0x021D9A68 add r6, r2, #0 cmp r0, #0 beq _021D9A7A - bl ErrorHandling + bl GF_AssertFail _021D9A7A: add r0, r5, #0 add r1, r6, #0 @@ -4776,7 +4776,7 @@ MOD73_021D9A94: ; 0x021D9A94 ldr r0, [r4, #0x30] cmp r0, #1 beq _021D9AA2 - bl ErrorHandling + bl GF_AssertFail _021D9AA2: add r0, r4, #0 bl MOD73_021D9C7C @@ -4805,7 +4805,7 @@ MOD73_021D9AC8: ; 0x021D9AC8 add r4, r0, #0 ldr r0, [r4, #8] mov r1, #0xf - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r1, [r4, #0x18] mov r2, #0 ldr r0, [r4, #8] @@ -4947,11 +4947,11 @@ MOD73_021D9BE0: ; 0x021D9BE0 add r5, r0, #0 add r0, r4, #0 mov r1, #1 - bl FUN_02018FF4 + bl AllocWindows str r0, [r5, #8] add r0, r4, #0 mov r1, #1 - bl FUN_02018FF4 + bl AllocWindows str r0, [r5, #0xc] mov r0, #0x13 str r0, [sp] @@ -4984,10 +4984,10 @@ MOD73_021D9BE0: ; 0x021D9BE0 bl FUN_02019064 ldr r0, [r5, #8] mov r1, #0xf - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, [r5, #0xc] mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, [r5, #0x10] mov r1, #4 lsl r0, r0, #0x18 @@ -5042,7 +5042,7 @@ MOD73_021D9CA0: ; 0x021D9CA0 mov r1, #1 mov r2, #4 str r4, [sp, #4] - bl FUN_02006930 + bl GfGfxLoader_GXLoadPal mov r1, #0 str r1, [sp] str r1, [sp, #4] @@ -5051,7 +5051,7 @@ MOD73_021D9CA0: ; 0x021D9CA0 ldr r2, [r5, #4] mov r0, #0x7a mov r3, #5 - bl FUN_0200687C + bl GfGfxLoader_LoadCharData ldr r0, [r5, #0x14] cmp r0, #1 bne _021D9CD6 @@ -5065,7 +5065,7 @@ _021D9CD8: mov r0, #0x7a mov r2, #0 add r3, #0x24 - bl FUN_02006BDC + bl GfGfxLoader_GetScrnData str r0, [r5, #0x20] ldr r2, [r5, #0x24] mov r3, #0 @@ -5104,7 +5104,7 @@ _021D9CD8: mov r1, #4 mov r2, #0 add r3, #0x2c - bl FUN_02006BDC + bl GfGfxLoader_GetScrnData str r0, [r5, #0x28] ldr r0, [r5, #4] mov r1, #5 @@ -5172,7 +5172,7 @@ MOD73_021D9DA0: ; 0x021D9DA0 ldr r0, [r4] cmp r0, #0 beq _021D9DAE - bl ErrorHandling + bl GF_AssertFail _021D9DAE: mov r0, #0 strb r0, [r4] @@ -5229,7 +5229,7 @@ MOD73_021D9E08: ; 0x021D9E08 ldr r0, [r4] cmp r0, #1 beq _021D9E16 - bl ErrorHandling + bl GF_AssertFail _021D9E16: ldr r0, [r4, #8] bl FUN_0201FFC8 @@ -5309,7 +5309,7 @@ MOD73_021D9E8C: ; 0x021D9E8C ldr r0, [r4, #0x74] cmp r0, #0 beq _021D9E9A - bl ErrorHandling + bl GF_AssertFail _021D9E9A: add r0, r4, #0 mov r1, #0 @@ -5329,7 +5329,7 @@ MOD73_021D9EA8: ; 0x021D9EA8 str r1, [sp, #0xc] cmp r0, #0 beq _021D9EBC - bl ErrorHandling + bl GF_AssertFail _021D9EBC: ldr r4, _021D9F5C ; =0x021DBDE4 ldr r5, [sp, #8] @@ -5425,7 +5425,7 @@ MOD73_021D9F74: ; 0x021D9F74 ldr r0, [r6, #0x74] cmp r0, #1 beq _021D9F82 - bl ErrorHandling + bl GF_AssertFail _021D9F82: mov r4, #0 add r5, r6, #0 @@ -5468,7 +5468,7 @@ MOD73_021D9FC0: ; 0x021D9FC0 add r6, r2, #0 cmp r4, #8 blo _021D9FD0 - bl ErrorHandling + bl GF_AssertFail _021D9FD0: lsl r0, r4, #2 add r0, r5, r0 @@ -5525,7 +5525,7 @@ MOD73_021DA01C: ; 0x021DA01C add r6, r2, #0 cmp r4, #8 blo _021DA02C - bl ErrorHandling + bl GF_AssertFail _021DA02C: lsl r0, r4, #2 add r0, r5, r0 @@ -5616,7 +5616,7 @@ _021DA0B2: str r0, [r5, #0x6c] pop {r3, r4, r5, r6, r7, pc} _021DA0CE: - bl ErrorHandling + bl GF_AssertFail _021DA0D2: pop {r3, r4, r5, r6, r7, pc} .align 2, 0 @@ -5649,7 +5649,7 @@ MOD73_021DA0FC: ; 0x021DA0FC ldr r0, [r4] cmp r0, #0 beq _021DA10A - bl ErrorHandling + bl GF_AssertFail _021DA10A: add r0, r4, #0 mov r1, #0 @@ -5826,7 +5826,7 @@ MOD73_021DA234: ; 0x021DA234 ldr r0, [r4, #0x28] cmp r0, #0 beq _021DA242 - bl ErrorHandling + bl GF_AssertFail _021DA242: add r0, r4, #0 bl MOD73_021DA4AC @@ -5846,7 +5846,7 @@ MOD73_021DA254: ; 0x021DA254 add r6, r2, #0 cmp r0, #0 beq _021DA266 - bl ErrorHandling + bl GF_AssertFail _021DA266: add r0, r5, #0 add r1, r6, #0 @@ -5874,7 +5874,7 @@ MOD73_021DA290: ; 0x021DA290 ldr r0, [r4, #0x28] cmp r0, #1 beq _021DA29E - bl ErrorHandling + bl GF_AssertFail _021DA29E: add r0, r4, #0 bl MOD73_021DA354 @@ -5924,7 +5924,7 @@ MOD73_021DA2AC: ; 0x021DA2AC _021DA2FA: ldr r0, [sp, #0x14] mov r1, #1 - bl FUN_02018FF4 + bl AllocWindows str r0, [r4, #8] ldrh r0, [r5, #2] mov r2, #2 @@ -5953,7 +5953,7 @@ _021DA2FA: bl FUN_02019064 ldr r0, [r4, #8] mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer add r6, r6, #1 add r4, r4, #4 add r5, #0xc @@ -5997,7 +5997,7 @@ MOD73_021DA374: ; 0x021DA374 mov r2, #0 mov r3, #0x80 str r5, [sp, #4] - bl FUN_02006930 + bl GfGfxLoader_GXLoadPal mov r0, #0 str r0, [sp] str r0, [sp, #4] @@ -6007,13 +6007,13 @@ MOD73_021DA374: ; 0x021DA374 mov r0, #0x7a mov r1, #5 mov r3, #1 - bl FUN_0200687C + bl GfGfxLoader_LoadCharData str r5, [sp] mov r0, #0x7a mov r1, #7 mov r2, #0 add r3, sp, #0x10 - bl FUN_02006BDC + bl GfGfxLoader_GetScrnData ldr r2, [sp, #0x10] mov r3, #0 str r3, [sp] @@ -6088,7 +6088,7 @@ MOD73_021DA434: ; 0x021DA434 add r4, r1, #0 cmp r0, #0 beq _021DA446 - bl ErrorHandling + bl GF_AssertFail _021DA446: mov r2, #1 ldr r0, _021DA494 ; =MOD73_021DA408 @@ -6099,7 +6099,7 @@ _021DA446: mov r1, #0 str r1, [r5, #0x30] ldr r0, [r5, #8] - bl FUN_02019620 + bl FillWindowPixelBuffer mov r3, #0 str r3, [sp] ldr r0, _021DA498 ; =0x0001020F @@ -6173,7 +6173,7 @@ MOD73_021DA4D4: ; 0x021DA4D4 bl FUN_02018744 ldr r0, [r4, #0xc] mov r1, #0xf - bl FUN_02019620 + bl FillWindowPixelBuffer mov r1, #0 str r1, [sp] ldr r0, _021DA54C ; =0x0001020F @@ -6192,7 +6192,7 @@ MOD73_021DA4D4: ; 0x021DA4D4 bl FUN_0200CCA4 ldr r0, [r4, #0x10] mov r1, #0xf - bl FUN_02019620 + bl FillWindowPixelBuffer mov r1, #0 str r1, [sp] ldr r0, _021DA54C ; =0x0001020F @@ -6494,7 +6494,7 @@ MOD73_021DA770: ; 0x021DA770 ldr r0, [r4, #0x14] add r6, r1, #0 mov r1, #0xf - bl FUN_02019620 + bl FillWindowPixelBuffer cmp r6, #6 bhi _021DA7EC add r0, r6, r6 @@ -6597,7 +6597,7 @@ MOD73_021DA82C: ; 0x021DA82C ldr r0, [r4] cmp r0, #0 beq _021DA83A - bl ErrorHandling + bl GF_AssertFail _021DA83A: ldr r2, _021DA848 ; =0x00000414 add r0, r4, #0 @@ -6709,7 +6709,7 @@ MOD73_021DA8BC: ; 0x021DA8BC str r0, [sp, #0x60] cmp r0, #0 bne _021DA900 - bl ErrorHandling + bl GF_AssertFail _021DA900: ldr r0, [sp, #0x60] bl MOD73_021DAB30 @@ -6738,7 +6738,7 @@ _021DA906: str r0, [sp, #0x6c] asr r0, r0, #0x1f lsl r3, r2, #1 - ldr r1, _021DAAA0 ; =UNK_020FFA38 + ldr r1, _021DAAA0 ; =FX_SinCosTable_ str r0, [sp, #0x70] ldr r0, [sp, #0xa8] ldrsh r6, [r1, r3] @@ -6904,7 +6904,7 @@ _021DA906: pop {r3, r4, r5, r6, r7, pc} nop _021DAA9C: .word MOD73_021DBE7C -_021DAAA0: .word UNK_020FFA38 +_021DAAA0: .word FX_SinCosTable_ _021DAAA4: .word 0x0000019A thumb_func_end MOD73_021DA8BC @@ -7001,7 +7001,7 @@ MOD73_021DAB30: ; 0x021DAB30 ldr r0, [r4, #0x78] cmp r0, #0 bne _021DAB3E - bl ErrorHandling + bl GF_AssertFail _021DAB3E: ldr r0, [r4, #0x78] bl FUN_0201FFC8 @@ -7130,7 +7130,7 @@ _021DABFC: lsl r4, r0, #1 add r0, r4, #1 lsl r1, r0, #1 - ldr r0, _021DAC98 ; =UNK_020FFA38 + ldr r0, _021DAC98 ; =FX_SinCosTable_ add r2, r6, #0 ldrsh r0, [r0, r1] add r3, r7, #0 @@ -7146,7 +7146,7 @@ _021DABFC: lsr r0, r0, #0xc orr r0, r1 str r0, [sp] - ldr r0, _021DAC98 ; =UNK_020FFA38 + ldr r0, _021DAC98 ; =FX_SinCosTable_ lsl r1, r4, #1 ldrsh r0, [r0, r1] add r2, r6, #0 @@ -7177,7 +7177,7 @@ _021DAC94: add sp, #0xc pop {r4, r5, r6, r7, pc} .align 2, 0 -_021DAC98: .word UNK_020FFA38 +_021DAC98: .word FX_SinCosTable_ thumb_func_end MOD73_021DABD0 thumb_func_start MOD73_021DAC9C @@ -7236,7 +7236,7 @@ MOD73_021DAC9C: ; 0x021DAC9C str r0, [r5, #0x78] cmp r0, #0 bne _021DAD14 - bl ErrorHandling + bl GF_AssertFail _021DAD14: ldr r0, [r5, #0xc] cmp r0, #0 @@ -7307,7 +7307,7 @@ MOD73_021DAD84: ; 0x021DAD84 ldr r0, [r4, #0x7c] cmp r0, #0 beq _021DAD92 - bl ErrorHandling + bl GF_AssertFail _021DAD92: add r0, r4, #0 mov r1, #0 @@ -7327,7 +7327,7 @@ MOD73_021DADA0: ; 0x021DADA0 str r2, [sp, #0x18] cmp r0, #0 beq _021DADB4 - bl ErrorHandling + bl GF_AssertFail _021DADB4: str r7, [r6] mov r0, #2 @@ -7391,7 +7391,7 @@ MOD73_021DAE24: ; 0x021DAE24 ldr r0, [r6, #0x7c] cmp r0, #1 beq _021DAE32 - bl ErrorHandling + bl GF_AssertFail _021DAE32: mov r4, #0 add r5, r6, #0 @@ -7444,7 +7444,7 @@ MOD73_021DAE7C: ; 0x021DAE7C add r4, r0, #0 cmp r5, #4 blt _021DAE8A - bl ErrorHandling + bl GF_AssertFail _021DAE8A: cmp r5, #2 beq _021DAE92 @@ -7472,7 +7472,7 @@ MOD73_021DAEAC: ; 0x021DAEAC add r4, r0, #0 cmp r5, #4 blt _021DAEBA - bl ErrorHandling + bl GF_AssertFail _021DAEBA: lsl r0, r5, #4 mov r1, #0 @@ -7491,7 +7491,7 @@ MOD73_021DAECC: ; 0x021DAECC add r4, r0, #0 cmp r5, #4 blt _021DAEDA - bl ErrorHandling + bl GF_AssertFail _021DAEDA: lsl r0, r5, #4 add r0, r4, r0 @@ -7609,7 +7609,7 @@ MOD73_021DAF88: ; 0x021DAF88 ldr r0, [r4] cmp r0, #0 beq _021DAF96 - bl ErrorHandling + bl GF_AssertFail _021DAF96: ldr r2, _021DAFA4 ; =0x0000090C add r0, r4, #0 @@ -7706,7 +7706,7 @@ MOD73_021DB020: ; 0x021DB020 asr r0, r0, #4 lsl r1, r0, #1 add r0, r1, #1 - ldr r7, _021DB124 ; =UNK_020FFA38 + ldr r7, _021DB124 ; =FX_SinCosTable_ lsl r0, r0, #1 ldrsh r3, [r7, r0] asr r6, r3, #0x1f @@ -7819,7 +7819,7 @@ _021DB112: add sp, #0x1c pop {r4, r5, r6, r7, pc} nop -_021DB124: .word UNK_020FFA38 +_021DB124: .word FX_SinCosTable_ _021DB128: .word 0x00000000 thumb_func_end MOD73_021DB020 @@ -8442,7 +8442,7 @@ MOD73_021DB56C: ; 0x021DB56C add r4, r0, #0 cmp r5, #3 blt _021DB57A - bl ErrorHandling + bl GF_AssertFail _021DB57A: str r5, [r4] mov r0, #0 diff --git a/arm9/modules/74/asm/module_74.s b/arm9/modules/74/asm/module_74.s index 1fce128e..651527c1 100644 --- a/arm9/modules/74/asm/module_74.s +++ b/arm9/modules/74/asm/module_74.s @@ -341,7 +341,7 @@ MOD74_021D7784: ; 0x021D7784 push {r4, lr} add r4, r0, #0 bl MOD74_021D82E8 - bl FUN_020AEEB8 + bl NNS_GfdDoVramTransfer ldr r0, [r4, #0x10] bl FUN_0201AB60 ldr r3, _021D77A4 ; =0x027E0000 @@ -771,7 +771,7 @@ _021D7A9A: bl FUN_02019150 add r0, r5, #0 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer add r7, r7, #1 add r4, #8 add r5, #0x10 @@ -790,7 +790,7 @@ _021D7AC0: bl FUN_02019150 add r0, r5, #0 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer add r7, r7, #1 add r4, #8 add r5, #0x10 @@ -1343,7 +1343,7 @@ MOD74_021D7F44: ; 0x021D7F44 mov r1, #0 add r5, r2, #0 add r4, r3, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer cmp r4, #8 blo _021D7F8C mov r0, #2 @@ -1637,7 +1637,7 @@ MOD74_021D818C: ; 0x021D818C add r0, r4, #0 add r0, #0x8c mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer mov r0, #4 str r0, [sp] mov r1, #0 @@ -1664,7 +1664,7 @@ MOD74_021D81E0: ; 0x021D81E0 add r4, r0, #0 add r0, #0x8c mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer add r0, r4, #0 add r0, #0x8c bl FUN_02019570 diff --git a/arm9/modules/75/asm/module_75.s b/arm9/modules/75/asm/module_75.s index 1a9861c9..3500c458 100644 --- a/arm9/modules/75/asm/module_75.s +++ b/arm9/modules/75/asm/module_75.s @@ -759,7 +759,7 @@ MOD75_021E71BC: ; 0x021E71BC bl FUN_020178A0 mov r0, #6 add r1, r4, #0 - bl FUN_02016A8C + bl FreeToHeapExplicit pop {r4, pc} .align 2, 0 thumb_func_end MOD75_021E71BC @@ -785,7 +785,7 @@ MOD75_021E7214: ; 0x021E7214 mov r0, #0xd mov r1, #7 mov r3, #1 - bl FUN_0200687C + bl GfGfxLoader_LoadCharData mov r0, #0 str r0, [sp] str r0, [sp, #4] @@ -796,7 +796,7 @@ MOD75_021E7214: ; 0x021E7214 mov r0, #0xd mov r1, #0xa mov r3, #1 - bl FUN_020068C8 + bl GfGfxLoader_LoadScrnData mov r0, #0 str r0, [sp] str r0, [sp, #4] @@ -807,7 +807,7 @@ MOD75_021E7214: ; 0x021E7214 mov r0, #0xd mov r1, #9 mov r3, #3 - bl FUN_020068C8 + bl GfGfxLoader_LoadScrnData mov r2, #0 str r2, [sp] mov r0, #6 @@ -815,7 +815,7 @@ MOD75_021E7214: ; 0x021E7214 mov r0, #0xd mov r1, #8 add r3, r2, #0 - bl FUN_02006930 + bl GfGfxLoader_GXLoadPal mov r0, #0x20 str r0, [sp] mov r0, #6 @@ -824,7 +824,7 @@ MOD75_021E7214: ; 0x021E7214 mov r1, #0x12 mov r2, #0 lsl r3, r0, #5 - bl FUN_02006930 + bl GfGfxLoader_GXLoadPal mov r1, #0x16 mov r0, #0 lsl r1, r1, #4 @@ -862,7 +862,7 @@ MOD75_021E7214: ; 0x021E7214 mov r0, #0xd mov r1, #0xb mov r3, #5 - bl FUN_0200687C + bl GfGfxLoader_LoadCharData mov r3, #0 str r3, [sp] mov r0, #6 @@ -870,7 +870,7 @@ MOD75_021E7214: ; 0x021E7214 mov r0, #0xd mov r1, #0xc mov r2, #4 - bl FUN_02006930 + bl GfGfxLoader_GXLoadPal mov r0, #0 str r0, [sp] str r0, [sp, #4] @@ -881,7 +881,7 @@ MOD75_021E7214: ; 0x021E7214 ldr r2, [r4] add r1, r0, #0 mov r3, #5 - bl FUN_020068C8 + bl GfGfxLoader_LoadScrnData mov r0, #0 str r0, [sp] str r0, [sp, #4] @@ -892,7 +892,7 @@ MOD75_021E7214: ; 0x021E7214 mov r0, #0xd mov r1, #0x25 mov r3, #7 - bl FUN_0200687C + bl GfGfxLoader_LoadCharData mov r0, #0 str r0, [sp] str r0, [sp, #4] @@ -903,7 +903,7 @@ MOD75_021E7214: ; 0x021E7214 mov r0, #0xd mov r1, #0x24 mov r3, #7 - bl FUN_020068C8 + bl GfGfxLoader_LoadScrnData mov r0, #0 str r0, [sp] str r0, [sp, #4] @@ -914,7 +914,7 @@ MOD75_021E7214: ; 0x021E7214 mov r0, #0xd mov r1, #0xf mov r3, #4 - bl FUN_0200687C + bl GfGfxLoader_LoadCharData mov r3, #0x40 str r3, [sp] mov r0, #6 @@ -922,7 +922,7 @@ MOD75_021E7214: ; 0x021E7214 mov r0, #0xd mov r1, #0xe mov r2, #4 - bl FUN_02006930 + bl GfGfxLoader_GXLoadPal add sp, #0x10 pop {r4, pc} .align 2, 0 @@ -1233,7 +1233,7 @@ MOD75_021E7580: ; 0x021E7580 ldrb r0, [r0, r1] mov r1, #6 add r0, r0, #3 - bl ListMenu_ctor + bl ListMenuItems_ctor mov r1, #0x16 lsl r1, r1, #4 str r0, [r5, r1] @@ -1243,7 +1243,7 @@ MOD75_021E7580: ; 0x021E7580 add r3, r2, #0 ldr r1, [r5, r1] sub r3, #0x23 - bl ListMenu_ItemFromMsgData + bl ListMenuItems_AppendFromMsgData ldrb r3, [r4, #8] cmp r3, #3 bne _021E764A @@ -1280,7 +1280,7 @@ _021E75CE: ldr r0, [r5, r0] ldr r1, [r7, r1] add r2, r6, #0 - bl ListMenu_AddItem + bl ListMenuItems_AddItem ldr r0, [sp] ldrb r1, [r4, #8] add r0, r0, #4 @@ -1300,7 +1300,7 @@ _021E761A: add r3, r2, #0 ldr r1, [r5, r1] sub r3, #0x22 - bl ListMenu_ItemFromMsgData + bl ListMenuItems_AppendFromMsgData mov r1, #0x16 lsl r1, r1, #4 ldr r0, [r5, r1] @@ -1309,7 +1309,7 @@ _021E761A: add r3, r2, #0 ldr r1, [r5, r1] sub r3, #0x23 - bl ListMenu_ItemFromMsgData + bl ListMenuItems_AppendFromMsgData add r0, r6, #3 add sp, #8 strb r0, [r4, #9] @@ -1348,7 +1348,7 @@ _021E7658: ldr r0, [r5, r0] ldr r1, [r7, r1] add r2, r6, #0 - bl ListMenu_AddItem + bl ListMenuItems_AddItem ldr r0, [sp, #4] ldrb r3, [r4, #8] add r0, r0, #4 @@ -1377,7 +1377,7 @@ _021E76A4: add r3, r2, #0 ldr r1, [r5, r1] sub r3, #0x22 - bl ListMenu_ItemFromMsgData + bl ListMenuItems_AppendFromMsgData b _021E76E0 _021E76CC: mov r1, #0x16 @@ -1388,7 +1388,7 @@ _021E76CC: add r3, r2, #0 ldr r1, [r5, r1] sub r3, #0x2b - bl ListMenu_ItemFromMsgData + bl ListMenuItems_AppendFromMsgData _021E76E0: mov r1, #0x16 lsl r1, r1, #4 @@ -1398,7 +1398,7 @@ _021E76E0: add r3, r2, #0 ldr r1, [r5, r1] sub r3, #0x23 - bl ListMenu_ItemFromMsgData + bl ListMenuItems_AppendFromMsgData add r0, r6, #3 add sp, #8 strb r0, [r4, #9] @@ -1412,7 +1412,7 @@ _021E76FC: add r3, r2, #0 ldr r1, [r5, r1] sub r3, #0x23 - bl ListMenu_ItemFromMsgData + bl ListMenuItems_AppendFromMsgData add r0, r6, #2 strb r0, [r4, #9] add sp, #8 @@ -1606,7 +1606,7 @@ _021E784E: add r1, r3, #0 add r0, sp, #0 mov r3, #6 - bl FUN_020010A8 + bl ListMenuInit mov r1, #0x57 lsl r1, r1, #2 str r0, [r4, r1] @@ -1624,7 +1624,7 @@ MOD75_021E7870: ; 0x021E7870 add r7, r1, #0 mov r1, #0x13 add r4, r2, #0 - bl FUN_02001470 + bl ListMenuGetTemplateField add r5, r0, #0 cmp r4, #1 beq _021E78F8 @@ -1693,7 +1693,7 @@ _021E78F8: add r0, r5, #0 add r0, #0x14 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer mov r1, #1 mvn r1, r1 cmp r7, r1 @@ -1751,7 +1751,7 @@ MOD75_021E797C: ; 0x021E797C mov r1, #0x13 str r0, [sp] add r7, r2, #0 - bl FUN_02001470 + bl ListMenuGetTemplateField add r4, r0, #0 add r0, #0xc4 ldr r0, [r0] @@ -1773,14 +1773,14 @@ MOD75_021E797C: ; 0x021E797C mov r1, #8 mov r2, #0 mov r3, #9 - bl FUN_020013E8 + bl ListMenuOverrideSetColors b _021E79C6 _021E79BA: ldr r0, [sp] mov r1, #1 mov r2, #0 mov r3, #2 - bl FUN_020013E8 + bl ListMenuOverrideSetColors _021E79C6: ldrb r0, [r6, #8] cmp r0, #7 @@ -1911,11 +1911,11 @@ MOD75_021E7AA4: ; 0x021E7AA4 add r3, #8 add r1, r1, r2 add r2, r3, r2 - bl FUN_02001300 + bl DestroyListMenu mov r0, #0x16 lsl r0, r0, #4 ldr r0, [r4, r0] - bl ListMenu_dtor + bl ListMenuItems_dtor mov r0, #0x57 mov r1, #0 lsl r0, r0, #2 @@ -1959,7 +1959,7 @@ _021E7B12: add r0, r4, #0 add r0, #0x14 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer add r0, r4, #0 add r0, #0x14 bl FUN_02019570 @@ -2019,7 +2019,7 @@ MOD75_021E7B7C: ; 0x021E7B7C ldr r0, [r5, r0] add r1, r4, #6 add r2, r4, #4 - bl FUN_02001448 + bl ListMenuGetScrollAndRow ldr r0, _021E7CD8 ; =gMain ldr r1, [r0, #0x48] mov r0, #4 @@ -2038,7 +2038,7 @@ _021E7BC0: mov r0, #0x57 lsl r0, r0, #2 ldr r0, [r5, r0] - bl FUN_02001204 + bl ListMenu_ProcessInput add r6, r0, #0 mov r0, #0x57 lsl r0, r0, #2 @@ -2046,7 +2046,7 @@ _021E7BC0: ldr r0, [r5, r0] add r1, #2 add r2, sp, #0 - bl FUN_02001448 + bl ListMenuGetScrollAndRow add r0, sp, #0 ldrh r2, [r0] ldrh r0, [r4, #4] @@ -2085,7 +2085,7 @@ _021E7BFC: lsl r1, r1, #0x10 ldr r0, [r5, r0] lsr r1, r1, #0x10 - bl FUN_02001464 + bl ListMenuGetValueByArrayId add r6, r0, #0 mov r0, #0x49 mov r1, #1 @@ -2102,7 +2102,7 @@ _021E7C38: mov r0, #0x57 lsl r0, r0, #2 ldr r0, [r5, r0] - bl FUN_0200145C + bl ListMenuGetUnk33 cmp r0, #1 bne _021E7C5E add r0, r5, #0 @@ -2396,11 +2396,11 @@ MOD75_021E7E60: ; 0x021E7E60 bl MOD75_021E7AA4 add r0, r4, #4 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer add r0, r4, #0 add r0, #0x14 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer add r0, r4, #4 bl FUN_02019220 add r0, r4, #0 @@ -2830,11 +2830,11 @@ _021E81D2: add r3, #8 add r1, r1, r2 add r2, r3, r2 - bl FUN_02001300 + bl DestroyListMenu mov r0, #0x16 lsl r0, r0, #4 ldr r0, [r5, r0] - bl ListMenu_dtor + bl ListMenuItems_dtor _021E8206: add r0, r5, #0 add r0, #0xc4 @@ -3643,7 +3643,7 @@ MOD75_021E8808: ; 0x021E8808 add r1, r2, r1 lsl r1, r1, #0x10 lsr r1, r1, #0x10 - bl FUN_02001464 + bl ListMenuGetValueByArrayId mov r1, #1 mvn r1, r1 cmp r0, r1 @@ -3701,7 +3701,7 @@ MOD75_021E8864: ; 0x021E8864 lsl r0, r0, #2 ldrb r1, [r4, r1] ldr r0, [r4, r0] - bl FUN_02001464 + bl ListMenuGetValueByArrayId ldr r1, _021E88B8 ; =0x0000047C str r0, [r4, r1] add r0, r4, #0 @@ -3709,7 +3709,7 @@ MOD75_021E8864: ; 0x021E8864 mov r0, #0x57 lsl r0, r0, #2 ldr r0, [r4, r0] - bl FUN_02001328 + bl RedrawListMenu add r0, r4, #0 bl MOD75_021E8AAC pop {r4, pc} @@ -3744,7 +3744,7 @@ _021E88D0: ldr r0, [r5, r0] add r1, r4, #6 add r2, r4, #4 - bl FUN_02001448 + bl ListMenuGetScrollAndRow add r0, r5, #0 bl MOD75_021E87B8 cmp r0, #1 @@ -3776,7 +3776,7 @@ _021E892E: mov r0, #0x57 lsl r0, r0, #2 ldr r0, [r5, r0] - bl FUN_02001204 + bl ListMenu_ProcessInput add r6, r0, #0 mov r0, #0x57 lsl r0, r0, #2 @@ -3784,7 +3784,7 @@ _021E892E: ldr r0, [r5, r0] add r1, #2 add r2, sp, #0 - bl FUN_02001448 + bl ListMenuGetScrollAndRow add r0, sp, #0 ldrh r2, [r0] ldrh r0, [r4, #4] @@ -3816,7 +3816,7 @@ _021E896A: mov r0, #0x57 lsl r0, r0, #2 ldr r0, [r5, r0] - bl FUN_0200145C + bl ListMenuGetUnk33 cmp r0, #1 bne _021E899A add r0, r5, #0 @@ -3900,7 +3900,7 @@ MOD75_021E89F0: ; 0x021E89F0 mov r0, #0x16 lsl r0, r0, #4 ldr r0, [r4, r0] - bl ListMenu_dtor + bl ListMenuItems_dtor add r0, r4, #0 bl MOD75_021E7580 _021E8A3C: @@ -3928,7 +3928,7 @@ MOD75_021E8A48: ; 0x021E8A48 ldr r0, [r5, r0] add r1, r4, #6 add r2, r4, #4 - bl FUN_02001300 + bl DestroyListMenu mov r0, #0x57 mov r1, #0 lsl r0, r0, #2 @@ -4455,7 +4455,7 @@ MOD75_021E8E1C: ; 0x021E8E1C add r0, r4, #0 add r0, #0x64 mov r1, #0xf - bl FUN_02019620 + bl FillWindowPixelBuffer add r0, r4, #0 ldr r2, _021E8EA8 ; =0x000003D9 add r0, #0x64 @@ -4567,7 +4567,7 @@ _021E8F3A: add r0, r4, #0 add r0, #0x64 mov r1, #0xf - bl FUN_02019620 + bl FillWindowPixelBuffer add r0, r4, #0 ldr r2, _021E8FB8 ; =0x000003D9 add r0, #0x64 @@ -4686,7 +4686,7 @@ _021E9046: add r0, r4, #0 add r0, #0x64 mov r1, #0xf - bl FUN_02019620 + bl FillWindowPixelBuffer add r0, r4, #0 ldr r2, _021E91A8 ; =0x000003D9 add r0, #0x64 @@ -4726,7 +4726,7 @@ _021E908E: add r0, r4, #0 add r0, #0x64 mov r1, #0xf - bl FUN_02019620 + bl FillWindowPixelBuffer mov r0, #0x46 mov r1, #0xfe lsl r0, r0, #2 @@ -5022,11 +5022,11 @@ MOD75_021E92BC: ; 0x021E92BC add r3, #8 add r1, r1, r2 add r2, r3, r2 - bl FUN_02001300 + bl DestroyListMenu mov r0, #0x16 lsl r0, r0, #4 ldr r0, [r4, r0] - bl ListMenu_dtor + bl ListMenuItems_dtor add r0, r4, #0 bl MOD75_021E7580 add r0, r4, #0 @@ -5102,7 +5102,7 @@ MOD75_021E9394: ; 0x021E9394 _021E93AA: add r0, #0x64 mov r1, #0xf - bl FUN_02019620 + bl FillWindowPixelBuffer add r0, r4, #0 ldr r2, _021E942C ; =0x000003D9 add r0, #0x64 @@ -5473,7 +5473,7 @@ _021E967A: add r0, r5, #0 add r0, #0x64 mov r1, #0xf - bl FUN_02019620 + bl FillWindowPixelBuffer add r0, r5, #0 bl MOD75_021EB660 ldr r1, _021E9718 ; =0x00000426 @@ -5608,7 +5608,7 @@ MOD75_021E97A8: ; 0x021E97A8 mov r0, #0x57 lsl r0, r0, #2 ldr r0, [r4, r0] - bl FUN_02001328 + bl RedrawListMenu add r0, r4, #0 bl MOD75_021EB344 add r0, r4, #0 @@ -5633,7 +5633,7 @@ MOD75_021E97E4: ; 0x021E97E4 mov r0, #0x57 lsl r0, r0, #2 ldr r0, [r4, r0] - bl FUN_02001328 + bl RedrawListMenu add r0, r4, #0 bl MOD75_021EB344 add r0, r4, #0 @@ -5711,7 +5711,7 @@ _021E9872: add r0, r5, #0 add r0, #0x64 mov r1, #0xf - bl FUN_02019620 + bl FillWindowPixelBuffer add r0, r5, #0 ldr r2, _021E9928 ; =0x000003D9 add r0, #0x64 @@ -5864,7 +5864,7 @@ _021E99C6: add r0, r5, #0 add r0, #0x64 mov r1, #0xf - bl FUN_02019620 + bl FillWindowPixelBuffer add r0, r5, #0 ldr r2, _021E9B3C ; =0x000003D9 add r0, #0x64 @@ -6100,7 +6100,7 @@ _021E9BAC: add r0, r4, #0 add r0, #0x64 mov r1, #0xf - bl FUN_02019620 + bl FillWindowPixelBuffer mov r0, #0x45 lsl r0, r0, #2 ldr r0, [r4, r0] @@ -6195,7 +6195,7 @@ _021E9C80: add r0, r4, #0 add r0, #0x64 mov r1, #0xf - bl FUN_02019620 + bl FillWindowPixelBuffer mov r0, #0x45 lsl r0, r0, #2 ldr r0, [r4, r0] @@ -6405,7 +6405,7 @@ _021E9E2A: add r0, r5, #0 add r0, #0x64 mov r1, #0xf - bl FUN_02019620 + bl FillWindowPixelBuffer add r0, r5, #0 bl MOD75_021EB660 ldr r1, _021E9EDC ; =0x00000426 @@ -6654,7 +6654,7 @@ _021EA016: add r0, r4, #0 add r0, #0x64 mov r1, #0xf - bl FUN_02019620 + bl FillWindowPixelBuffer add r0, r4, #0 ldr r2, _021EA0C4 ; =0x000003D9 add r0, #0x64 @@ -7055,7 +7055,7 @@ MOD75_021EA328: ; 0x021EA328 ldrh r3, [r3] ldr r0, [r4, r0] mov r1, #0 - bl FUN_02001354 + bl ListMenuTestInputInternal add r0, r4, #0 add r0, #0xc4 ldr r0, [r0] @@ -7207,7 +7207,7 @@ MOD75_021EA444: ; 0x021EA444 ldrh r3, [r3] ldr r0, [r4, r0] mov r1, #0 - bl FUN_02001354 + bl ListMenuTestInputInternal add r0, r4, #0 add r0, #0xc4 ldr r0, [r0] @@ -7755,7 +7755,7 @@ MOD75_021EA8BC: ; 0x021EA8BC add r4, r0, #0 add r0, #0x24 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer add r2, r4, #0 add r2, #0xc4 ldr r6, [r2] @@ -7834,7 +7834,7 @@ MOD75_021EA950: ; 0x021EA950 bl NARC_AllocAndReadWholeMember add r1, r5, #0 add r4, r0, #0 - bl FUN_020B0030 + bl NNS_G2dGetUnpackedBGCharacterData add r0, r4, #0 pop {r3, r4, r5, pc} thumb_func_end MOD75_021EA950 @@ -7898,13 +7898,13 @@ _021EA9A8: ldr r1, [r1, #0x14] add r0, #0x54 mov r3, #0 - bl FUN_02019658 + bl BlitBitmapRectToWindow add r5, #0x54 add r0, r5, #0 bl FUN_02019220 mov r0, #6 add r1, r7, #0 - bl FUN_02016A8C + bl FreeToHeapExplicit add sp, #0x1c pop {r4, r5, r6, r7, pc} .align 2, 0 @@ -7922,7 +7922,7 @@ MOD75_021EA9F8: ; 0x021EA9F8 add r0, r5, #0 add r0, #0x54 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, _021EAAA0 ; =0x00000424 mov r4, #0 ldrb r0, [r5, r0] @@ -7979,7 +7979,7 @@ _021EAA4C: add r0, r6, #0 ldr r1, [r1, #0x14] mov r3, #0 - bl FUN_02019658 + bl BlitBitmapRectToWindow add r0, r4, #1 lsl r0, r0, #0x18 lsr r4, r0, #0x18 @@ -7993,7 +7993,7 @@ _021EAA8C: bl FUN_02019220 ldr r1, [sp, #0x18] mov r0, #6 - bl FUN_02016A8C + bl FreeToHeapExplicit add sp, #0x20 pop {r3, r4, r5, r6, r7, pc} .align 2, 0 @@ -8587,7 +8587,7 @@ MOD75_021EAF54: ; 0x021EAF54 bl NARC_AllocAndReadWholeMember add r1, r5, #0 add r4, r0, #0 - bl FUN_020B0030 + bl NNS_G2dGetUnpackedBGCharacterData add r0, r4, #0 pop {r3, r4, r5, pc} thumb_func_end MOD75_021EAF54 @@ -8617,10 +8617,10 @@ MOD75_021EAF70: ; 0x021EAF70 add r0, r5, #4 ldr r1, [r1, #0x14] mov r2, #0x28 - bl FUN_02019658 + bl BlitBitmapRectToWindow mov r0, #6 add r1, r6, #0 - bl FUN_02016A8C + bl FreeToHeapExplicit add sp, #0x1c pop {r3, r4, r5, r6, pc} thumb_func_end MOD75_021EAF70 @@ -8646,7 +8646,7 @@ MOD75_021EAFB0: ; 0x021EAFB0 add r0, r5, #4 add r2, r1, #0 lsr r3, r3, #0x10 - bl FUN_020196F4 + bl FillWindowPixelRect mov r1, #0 str r4, [sp] mov r0, #0xff @@ -8692,10 +8692,10 @@ MOD75_021EB004: ; 0x021EB004 add r0, r5, #4 ldr r1, [r1, #0x14] add r3, r2, #0 - bl FUN_02019658 + bl BlitBitmapRectToWindow mov r0, #6 add r1, r6, #0 - bl FUN_02016A8C + bl FreeToHeapExplicit add sp, #0x1c pop {r3, r4, r5, r6, pc} .align 2, 0 @@ -8881,7 +8881,7 @@ _021EB180: _021EB1B0: add r0, r7, #0 mov r1, #6 - bl ListMenu_ctor + bl ListMenuItems_ctor mov r1, #0x55 lsl r1, r1, #2 mov r4, #0 @@ -8901,7 +8901,7 @@ _021EB1C4: lsl r1, r1, #2 ldr r0, [r5, r0] ldr r1, [r3, r1] - bl ListMenu_AddItem + bl ListMenuItems_AddItem add r0, r4, #1 lsl r0, r0, #0x10 lsr r4, r0, #0x10 @@ -8971,7 +8971,7 @@ _021EB22E: add r0, r5, #0 add r0, #0x14 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer add r1, r5, #0 add r1, #0xc4 ldr r1, [r1] @@ -9001,7 +9001,7 @@ _021EB298: bl FUN_0200D0BC add r0, r4, r6 mov r1, #0xf - bl FUN_02019620 + bl FillWindowPixelBuffer mov r0, #0x45 lsl r0, r0, #2 ldr r0, [r5, r0] @@ -9112,14 +9112,14 @@ _021EB37A: mov r0, #0x55 lsl r0, r0, #2 ldr r0, [r5, r0] - bl ListMenu_dtor + bl ListMenuItems_dtor add r0, r5, #0 add r0, #0xb4 bl FUN_02019178 add r0, r5, #0 add r0, #0x14 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer add r1, r5, #0 add r1, #0xc4 ldr r1, [r1] @@ -9144,7 +9144,7 @@ MOD75_021EB3D8: ; 0x021EB3D8 add r5, r0, #0 add r0, #0x14 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer mov r0, #0x45 lsl r0, r0, #2 ldr r0, [r5, r0] @@ -9214,7 +9214,7 @@ MOD75_021EB454: ; 0x021EB454 add r0, r5, #0 add r0, #0x34 mov r1, #0xf - bl FUN_02019620 + bl FillWindowPixelBuffer mov r0, #0x45 lsl r0, r0, #2 ldr r0, [r5, r0] @@ -9280,7 +9280,7 @@ MOD75_021EB504: ; 0x021EB504 add r4, #0x94 add r0, r4, #0 mov r1, #0xf - bl FUN_02019620 + bl FillWindowPixelBuffer mov r0, #0x45 lsl r0, r0, #2 ldr r0, [r5, r0] @@ -9365,7 +9365,7 @@ MOD75_021EB5B0: ; 0x021EB5B0 add r0, r5, #0 add r0, #0x64 mov r1, #0xf - bl FUN_02019620 + bl FillWindowPixelBuffer mov r0, #0x45 lsl r0, r0, #2 ldr r0, [r5, r0] @@ -9543,7 +9543,7 @@ MOD75_021EB708: ; 0x021EB708 _021EB722: add r0, r4, #0 mov r1, #0xf - bl FUN_02019620 + bl FillWindowPixelBuffer mov r0, #0x45 lsl r0, r0, #2 ldr r0, [r5, r0] @@ -9654,7 +9654,7 @@ MOD75_021EB808: ; 0x021EB808 bne _021EB854 add r0, r4, #0 mov r1, #0xf - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r2, _021EB8E4 ; =0x000003F7 add r0, r4, #0 mov r1, #1 @@ -9686,7 +9686,7 @@ _021EB854: mov r1, #0xf mov r2, #0 str r3, [sp, #4] - bl FUN_020196F4 + bl FillWindowPixelRect _021EB866: mov r0, #0x45 lsl r0, r0, #2 @@ -9755,7 +9755,7 @@ MOD75_021EB8E8: ; 0x021EB8E8 add r4, #0xa4 add r0, r4, #0 mov r1, #0xf - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r2, _021EB9B0 ; =0x000003F7 add r0, r4, #0 mov r1, #1 diff --git a/arm9/modules/76/asm/module_76.s b/arm9/modules/76/asm/module_76.s index 13ddf00c..fc6dc5bd 100644 --- a/arm9/modules/76/asm/module_76.s +++ b/arm9/modules/76/asm/module_76.s @@ -382,7 +382,7 @@ MOD76_021D77E4: ; 0x021D77E4 bl FUN_020178A0 mov r0, #0x43 add r1, r4, #0 - bl FUN_02016A8C + bl FreeToHeapExplicit pop {r4, pc} .align 2, 0 thumb_func_end MOD76_021D77E4 @@ -402,7 +402,7 @@ MOD76_021D7814: ; 0x021D7814 mov r0, #0x71 mov r1, #0xa mov r3, #2 - bl FUN_0200687C + bl GfGfxLoader_LoadCharData mov r0, #0 str r0, [sp] str r0, [sp, #4] @@ -413,7 +413,7 @@ MOD76_021D7814: ; 0x021D7814 mov r0, #0x71 mov r1, #0xb mov r3, #2 - bl FUN_020068C8 + bl GfGfxLoader_LoadScrnData mov r2, #0 str r2, [sp] mov r0, #0x43 @@ -421,7 +421,7 @@ MOD76_021D7814: ; 0x021D7814 mov r0, #0x71 mov r1, #0xc add r3, r2, #0 - bl FUN_02006930 + bl GfGfxLoader_GXLoadPal mov r1, #7 mov r0, #0 lsl r1, r1, #6 @@ -467,7 +467,7 @@ _021D78A8: bl FUN_02019150 add r0, r5, #0 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer add r6, r6, #1 add r4, #8 add r5, #0x10 @@ -478,7 +478,7 @@ _021D78A8: add r0, r7, #0 add r0, #0xc8 mov r1, #0xf - bl FUN_02019620 + bl FillWindowPixelBuffer add r7, #0xc8 add r0, r7, #0 mov r1, #0 @@ -596,11 +596,11 @@ _021D799C: ldr r0, [r5, r0] add r1, #2 add r2, sp, #0 - bl FUN_02001448 + bl ListMenuGetScrollAndRow mov r0, #0x41 lsl r0, r0, #2 ldr r0, [r5, r0] - bl FUN_02001204 + bl ListMenu_ProcessInput add r4, r0, #0 ldr r2, [r5] mov r0, #0x41 @@ -609,7 +609,7 @@ _021D799C: ldr r0, [r5, r0] add r1, #0x12 add r2, #0x10 - bl FUN_02001448 + bl ListMenuGetScrollAndRow ldr r2, [r5] add r1, sp, #0 ldrh r1, [r1, #2] @@ -1021,7 +1021,7 @@ _021D7CE8: add r1, #8 lsl r0, r4, #4 add r0, r1, r0 - bl FUN_0201AB0C + bl GetWindowWidth lsl r0, r0, #0x1b lsr r0, r0, #0x18 sub r0, r0, r6 @@ -1041,7 +1041,7 @@ _021D7D12: add r1, #8 lsl r0, r4, #4 add r0, r1, r0 - bl FUN_0201AB0C + bl GetWindowWidth lsl r0, r0, #0x1b lsr r0, r0, #0x18 sub r1, r0, r6 @@ -1257,7 +1257,7 @@ MOD76_021D7ECC: ; 0x021D7ECC strb r1, [r5, r0] ldrb r0, [r5, r0] mov r1, #0x43 - bl ListMenu_ctor + bl ListMenuItems_ctor mov r1, #0x42 lsl r1, r1, #2 str r0, [r5, r1] @@ -1287,7 +1287,7 @@ _021D7F0E: ldr r0, [r5, r0] add r1, r7, #0 add r3, r2, #0 - bl ListMenu_ItemFromMsgData + bl ListMenuItems_AppendFromMsgData b _021D7F42 _021D7F2A: mov r0, #0x42 @@ -1299,7 +1299,7 @@ _021D7F2A: ldr r0, [r5, r0] ldr r1, [r1] sub r3, #0x22 - bl ListMenu_ItemFromMsgData + bl ListMenuItems_AppendFromMsgData b _021D7F50 _021D7F42: mov r0, #0x61 @@ -1340,7 +1340,7 @@ _021D7F50: ldrh r1, [r3, #0x12] ldrh r2, [r3, #0x10] mov r3, #0x43 - bl FUN_020010A8 + bl ListMenuInit mov r1, #0x41 lsl r1, r1, #2 str r0, [r5, r1] @@ -1365,11 +1365,11 @@ MOD76_021D7FAC: ; 0x021D7FAC ldr r0, [r4, r0] add r1, #0x12 add r2, #0x10 - bl FUN_02001300 + bl DestroyListMenu mov r0, #0x42 lsl r0, r0, #2 ldr r0, [r4, r0] - bl ListMenu_dtor + bl ListMenuItems_dtor pop {r4, pc} .align 2, 0 thumb_func_end MOD76_021D7FAC @@ -1380,7 +1380,7 @@ MOD76_021D7FD0: ; 0x021D7FD0 add r5, r1, #0 mov r1, #0x13 add r6, r2, #0 - bl FUN_02001470 + bl ListMenuGetTemplateField add r4, r0, #0 cmp r6, #1 beq _021D7FE8 @@ -1418,19 +1418,19 @@ MOD76_021D800C: ; 0x021D800C add r4, r1, #0 add r0, #0xa8 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer add r0, r5, #0 add r0, #0x78 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer add r0, r5, #0 add r0, #0x88 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer add r0, r5, #0 add r0, #0x98 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer mov r0, #0x4b lsl r0, r0, #2 ldr r0, [r5, r0] @@ -1601,7 +1601,7 @@ MOD76_021D81AC: ; 0x021D81AC add r4, r1, #0 add r0, #0xb8 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer mov r1, #1 mvn r1, r1 cmp r4, r1 @@ -2043,7 +2043,7 @@ MOD76_021D853C: ; 0x021D853C add r5, r1, #0 add r0, #0xc8 mov r1, #0xf - bl FUN_02019620 + bl FillWindowPixelBuffer add r0, r4, #0 add r1, r5, #0 bl MOD76_021D8354 @@ -2105,7 +2105,7 @@ _021D85BE: b _021D85D6 _021D85C6: ldr r0, _021D85E0 ; =0x00000483 - bl PlayBGM + bl PlaySound b _021D85D6 _021D85CE: ldr r0, _021D85DC ; =0x000005E6 @@ -2169,7 +2169,7 @@ MOD76_021D862C: ; 0x021D862C add r4, r0, #0 add r0, #0xc8 mov r1, #0xf - bl FUN_02019620 + bl FillWindowPixelBuffer add r0, r4, #0 mov r1, #0 bl MOD76_021D8354 @@ -2217,7 +2217,7 @@ MOD76_021D8688: ; 0x021D8688 add r4, r0, #0 add r0, #0xc8 mov r1, #0xf - bl FUN_02019620 + bl FillWindowPixelBuffer add r0, r4, #0 mov r1, #0 bl MOD76_021D8354 diff --git a/arm9/modules/77/asm/module_77.s b/arm9/modules/77/asm/module_77.s index a5eaa94b..6affcb88 100644 --- a/arm9/modules/77/asm/module_77.s +++ b/arm9/modules/77/asm/module_77.s @@ -242,7 +242,7 @@ _021D76D6: _021D76FA: ldr r0, _021D7988 ; =0x0000C054 ldr r0, [r4, r0] - bl FUN_02001204 + bl ListMenu_ProcessInput add r6, r0, #0 sub r0, r7, #1 cmp r6, r0 @@ -358,7 +358,7 @@ _021D77A2: _021D77DE: ldr r0, _021D7988 ; =0x0000C054 ldr r0, [r4, r0] - bl FUN_02001204 + bl ListMenu_ProcessInput add r6, r0, #0 sub r0, r7, #1 cmp r6, r0 @@ -438,7 +438,7 @@ _021D7838: _021D7886: ldr r0, _021D7988 ; =0x0000C054 ldr r0, [r4, r0] - bl FUN_02001204 + bl ListMenu_ProcessInput add r6, r0, #0 sub r0, r7, #1 cmp r6, r0 @@ -601,7 +601,7 @@ _021D79D0: add r0, r4, r0 mov r1, #0xf add r3, r2, #0 - bl FUN_020196F4 + bl FillWindowPixelRect ldr r0, _021D7B7C ; =0x0000C034 ldr r2, _021D7B80 ; =0x000001D9 add r0, r4, r0 @@ -656,7 +656,7 @@ _021D7A4E: add r0, r4, r0 mov r1, #0xf add r3, r2, #0 - bl FUN_020196F4 + bl FillWindowPixelRect ldr r0, _021D7B84 ; =0x0000C314 ldr r1, [r4, r0] cmp r1, #0 @@ -897,7 +897,7 @@ MOD77_021D7C64: ; 0x021D7C64 mov r0, #0x66 ldr r3, [r3] mov r1, #0x12 - bl FUN_02006D18 + bl GfGfxLoader_LoadFromNarc_GetSizeOut str r0, [sp, #0x18] ldr r0, [sp, #0x20] mov r1, #6 @@ -957,7 +957,7 @@ _021D7CE0: mov r0, #0x66 ldr r3, [r3] mov r2, #0 - bl FUN_02006D18 + bl GfGfxLoader_LoadFromNarc_GetSizeOut str r0, [sp, #0x14] ldr r0, [sp, #0x1c] mov r5, #1 @@ -1360,7 +1360,7 @@ MOD77_021D7FAC: ; 0x021D7FAC mov r0, #0x81 mov r1, #5 mov r3, #7 - bl FUN_0200687C + bl GfGfxLoader_LoadCharData mov r0, #0x80 str r0, [sp] ldr r0, [r5] @@ -1369,7 +1369,7 @@ MOD77_021D7FAC: ; 0x021D7FAC mov r0, #0x81 mov r2, #4 mov r3, #0 - bl FUN_02006930 + bl GfGfxLoader_GXLoadPal mov r0, #0 str r0, [sp] str r0, [sp, #4] @@ -1381,7 +1381,7 @@ MOD77_021D7FAC: ; 0x021D7FAC mov r0, #0x81 ldr r2, [r5, r2] add r3, r1, #0 - bl FUN_020068C8 + bl GfGfxLoader_LoadScrnData ldr r0, [r5, #8] bl Options_GetFrame lsl r0, r0, #0x18 @@ -1432,7 +1432,7 @@ MOD77_021D7FAC: ; 0x021D7FAC add r0, r5, r0 mov r1, #0xf add r3, r2, #0 - bl FUN_020196F4 + bl FillWindowPixelRect ldr r0, _021D8224 ; =0x0000C014 ldr r2, _021D8214 ; =0x000001E2 add r0, r5, r0 @@ -1468,7 +1468,7 @@ MOD77_021D7FAC: ; 0x021D7FAC mov r0, #0x81 mov r1, #5 mov r3, #3 - bl FUN_0200687C + bl GfGfxLoader_LoadCharData mov r0, #0x80 str r0, [sp] ldr r0, [r5] @@ -1477,7 +1477,7 @@ MOD77_021D7FAC: ; 0x021D7FAC mov r0, #0x81 mov r1, #6 add r3, r2, #0 - bl FUN_02006930 + bl GfGfxLoader_GXLoadPal mov r0, #0 str r0, [sp] str r0, [sp, #4] @@ -1489,7 +1489,7 @@ MOD77_021D7FAC: ; 0x021D7FAC mov r0, #0x81 mov r1, #7 mov r3, #3 - bl FUN_020068C8 + bl GfGfxLoader_LoadScrnData mov r0, #0 str r0, [sp] ldr r0, [r5] @@ -1565,7 +1565,7 @@ MOD77_021D7FAC: ; 0x021D7FAC add r0, r5, r0 mov r1, #0xf add r3, r2, #0 - bl FUN_020196F4 + bl FillWindowPixelRect ldr r0, _021D8244 ; =0x0000C060 mov r1, #0xc ldr r0, [r5, r0] @@ -1671,7 +1671,7 @@ _021D82B0: mov r1, #0xf add r2, r4, #0 add r3, r4, #0 - bl FUN_020196F4 + bl FillWindowPixelRect mov r0, #1 ldr r1, [r5] lsl r0, r0, #0xa @@ -1767,7 +1767,7 @@ MOD77_021D8370: ; 0x021D8370 bl FUN_02019150 ldrh r0, [r6, #0x10] ldr r1, [r5] - bl ListMenu_ctor + bl ListMenuItems_ctor ldr r1, _021D8404 ; =0x0000C058 mov r7, #0 str r0, [r5, r1] @@ -1782,7 +1782,7 @@ _021D8398: ldr r1, [r5, r1] ldr r2, [r4] ldr r3, [r4, #4] - bl ListMenu_ItemFromMsgData + bl ListMenuItems_AppendFromMsgData ldrh r0, [r6, #0x10] add r7, r7, #1 add r4, #8 @@ -1812,7 +1812,7 @@ _021D83B2: lsl r3, r3, #0x18 add r2, r1, #0 lsr r3, r3, #0x18 - bl FUN_020010A8 + bl ListMenuInit ldr r1, _021D8410 ; =0x0000C054 ldr r2, _021D8414 ; =0x000001D9 str r0, [r5, r1] @@ -1853,7 +1853,7 @@ MOD77_021D8418: ; 0x021D8418 str r0, [sp, #8] ldr r1, [r5] add r0, r6, #0 - bl ListMenu_ctor + bl ListMenuItems_ctor ldr r1, _021D84C8 ; =0x0000C058 mov r4, #0 str r0, [r5, r1] @@ -1865,7 +1865,7 @@ _021D844E: ldr r0, [r5, r0] ldr r1, [sp, #8] add r3, r4, #0 - bl ListMenu_ItemFromMsgData + bl ListMenuItems_AppendFromMsgData add r4, r4, #1 cmp r4, r6 blo _021D844E @@ -1902,7 +1902,7 @@ _021D8462: lsl r3, r3, #0x18 add r2, r1, #0 lsr r3, r3, #0x18 - bl FUN_020010A8 + bl ListMenuInit ldr r1, _021D84D0 ; =0x0000C054 ldr r2, _021D84D4 ; =0x000001D9 str r0, [r5, r1] @@ -1937,10 +1937,10 @@ MOD77_021D84D8: ; 0x021D84D8 mov r1, #0 ldr r0, [r4, r0] add r2, r1, #0 - bl FUN_02001300 + bl DestroyListMenu ldr r0, _021D850C ; =0x0000C058 ldr r0, [r4, r0] - bl ListMenu_dtor + bl ListMenuItems_dtor pop {r4, pc} .align 2, 0 _021D8504: .word 0x0000C024 @@ -1978,7 +1978,7 @@ MOD77_021D8510: ; 0x021D8510 add r0, r5, r0 mov r1, #0xf add r3, r2, #0 - bl FUN_020196F4 + bl FillWindowPixelRect ldr r0, _021D85CC ; =0x0000C044 ldr r2, _021D85D0 ; =0x000001D9 add r0, r5, r0 @@ -2067,7 +2067,7 @@ MOD77_021D85E0: ; 0x021D85E0 add r0, r5, r0 mov r1, #0xf add r3, r2, #0 - bl FUN_020196F4 + bl FillWindowPixelRect ldr r0, _021D8690 ; =0x0000C044 ldr r2, _021D8694 ; =0x000001D9 add r0, r5, r0 @@ -2159,7 +2159,7 @@ MOD77_021D86B4: ; 0x021D86B4 add r0, r5, r0 mov r1, #0xf add r3, r2, #0 - bl FUN_020196F4 + bl FillWindowPixelRect ldr r0, _021D8810 ; =0x0000C060 mov r1, #0xe ldr r0, [r5, r0] @@ -2245,7 +2245,7 @@ _021D8748: add r0, r5, r0 mov r1, #0xf add r3, r2, #0 - bl FUN_020196F4 + bl FillWindowPixelRect ldr r0, [r5] add r2, r7, #0 str r0, [sp] @@ -2554,7 +2554,7 @@ MOD77_021D89F4: ; 0x021D89F4 asr r1, r1, #0x10 asr r2, r2, #0x10 asr r3, r3, #0x10 - bl FUN_020B8418 + bl NNS_G3dGlbLightVector pop {r4, pc} nop _021D8A28: .word 0x0000C2DC @@ -2567,7 +2567,7 @@ MOD77_021D8A30: ; 0x021D8A30 sub sp, #0x24 add r4, r1, #0 ldr r1, [r4, #4] - ldr r3, _021D8AA4 ; =UNK_020FFA38 + ldr r3, _021D8AA4 ; =FX_SinCosTable_ lsl r1, r1, #0x10 lsr r1, r1, #0x10 asr r1, r1, #4 @@ -2580,7 +2580,7 @@ MOD77_021D8A30: ; 0x021D8A30 add r5, r0, #0 bl MTX_RotY33_ ldr r0, [r4] - ldr r3, _021D8AA4 ; =UNK_020FFA38 + ldr r3, _021D8AA4 ; =FX_SinCosTable_ lsl r0, r0, #0x10 lsr r0, r0, #0x10 asr r0, r0, #4 @@ -2597,7 +2597,7 @@ MOD77_021D8A30: ; 0x021D8A30 add r2, r5, #0 bl MTX_Concat33 ldr r0, [r4, #8] - ldr r3, _021D8AA4 ; =UNK_020FFA38 + ldr r3, _021D8AA4 ; =FX_SinCosTable_ lsl r0, r0, #0x10 lsr r0, r0, #0x10 asr r0, r0, #4 @@ -2616,7 +2616,7 @@ MOD77_021D8A30: ; 0x021D8A30 add sp, #0x24 pop {r4, r5, pc} nop -_021D8AA4: .word UNK_020FFA38 +_021D8AA4: .word FX_SinCosTable_ thumb_func_end MOD77_021D8A30 thumb_func_start MOD77_021D8AA8 @@ -2625,7 +2625,7 @@ MOD77_021D8AA8: ; 0x021D8AA8 sub sp, #0x24 add r4, r1, #0 ldr r1, [r4] - ldr r3, _021D8B1C ; =UNK_020FFA38 + ldr r3, _021D8B1C ; =FX_SinCosTable_ lsl r1, r1, #0x10 lsr r1, r1, #0x10 asr r1, r1, #4 @@ -2638,7 +2638,7 @@ MOD77_021D8AA8: ; 0x021D8AA8 add r5, r0, #0 bl MTX_RotY33_ ldr r0, [r4, #4] - ldr r3, _021D8B1C ; =UNK_020FFA38 + ldr r3, _021D8B1C ; =FX_SinCosTable_ neg r0, r0 lsl r0, r0, #0x10 lsr r0, r0, #0x10 @@ -2656,7 +2656,7 @@ MOD77_021D8AA8: ; 0x021D8AA8 add r2, r5, #0 bl MTX_Concat33 ldr r0, [r4, #8] - ldr r3, _021D8B1C ; =UNK_020FFA38 + ldr r3, _021D8B1C ; =FX_SinCosTable_ lsl r0, r0, #0x10 lsr r0, r0, #0x10 asr r0, r0, #4 @@ -2675,7 +2675,7 @@ MOD77_021D8AA8: ; 0x021D8AA8 add sp, #0x24 pop {r4, r5, pc} .align 2, 0 -_021D8B1C: .word UNK_020FFA38 +_021D8B1C: .word FX_SinCosTable_ thumb_func_end MOD77_021D8AA8 thumb_func_start MOD77_021D8B20 diff --git a/arm9/modules/78/asm/module_78.s b/arm9/modules/78/asm/module_78.s index 5d9f4625..7fc7439a 100644 --- a/arm9/modules/78/asm/module_78.s +++ b/arm9/modules/78/asm/module_78.s @@ -66,13 +66,13 @@ _021D7558: ldrsh r2, [r3, r7] ldrsh r3, [r3, r6] add r0, r4, #0 - bl FUN_020B8418 + bl NNS_G3dGlbLightVector ldr r2, [r5, #4] lsl r1, r4, #1 add r1, r2, r1 ldrh r1, [r1, #0x18] add r0, r4, #0 - bl FUN_020B8404 + bl NNS_G3dGlbLightColor add r0, r4, #1 lsl r0, r0, #0x18 lsr r4, r0, #0x18 @@ -82,12 +82,12 @@ _021D7558: ldrh r0, [r2, #0x20] ldrh r1, [r2, #0x22] ldr r2, [r2, #0x28] - bl FUN_020B83E0 + bl NNS_G3dGlbMaterialColorDiffAmb ldr r2, [r5, #4] ldrh r0, [r2, #0x24] ldrh r1, [r2, #0x26] ldr r2, [r2, #0x2c] - bl FUN_020B83BC + bl NNS_G3dGlbMaterialColorSpecEmi ldr r3, [r5, #4] ldr r0, [r3, #0x40] str r0, [sp] @@ -97,7 +97,7 @@ _021D7558: ldr r1, [r3, #0x34] ldr r2, [r3, #0x38] ldr r3, [r3, #0x3c] - bl FUN_020B8390 + bl NNS_G3dGlbPolygonAttr mov r0, #0 mov r1, #0x48 bl FUN_02079A70 @@ -243,7 +243,7 @@ _021D76C8: add r1, #0x80 ldr r1, [r1] add r0, r7, #0 - bl thunk_FUN_020ae84c + bl NNS_G3dFreeAnmObj ldr r0, [r5, #0x60] bl FreeToHeap add r0, r4, #1 @@ -358,26 +358,26 @@ MOD78_021D778C: ; 0x021D778C add r2, #0x5c bl FUN_0201B234 ldr r0, [r5, #0x5c] - bl FUN_020BC0FC + bl NNS_G3dGetTex str r0, [sp, #4] ldr r0, [r5, #0x58] mov r1, #0 mov r2, #0x40 - bl FUN_020BC094 + bl NNSi_G3dModifyMatFlag ldr r0, [r5, #0x58] mov r1, #0 mov r2, #0x80 - bl FUN_020BC094 + bl NNSi_G3dModifyMatFlag mov r2, #2 ldr r0, [r5, #0x58] mov r1, #0 lsl r2, r2, #8 - bl FUN_020BC094 + bl NNSi_G3dModifyMatFlag mov r2, #1 ldr r0, [r5, #0x58] mov r1, #0 lsl r2, r2, #0xa - bl FUN_020BC094 + bl NNSi_G3dModifyMatFlag add r0, r5, #0 str r0, [sp, #8] add r0, #0x70 @@ -402,12 +402,12 @@ _021D780E: bl NARC_AllocAndReadWholeMember str r0, [r4, #0x60] mov r1, #0 - bl FUN_020BC4C8 + bl NNS_G3dGetAnmByIdx add r7, r0, #0 ldr r0, [sp, #8] ldr r2, [r5, #0x58] add r1, r7, #0 - bl FUN_020BB8D0 + bl NNS_G3dAllocAnmObj add r1, r4, #0 add r1, #0x80 str r0, [r1] @@ -417,11 +417,11 @@ _021D780E: ldr r2, [r5, #0x58] ldr r3, [sp, #4] add r1, r7, #0 - bl FUN_020B8110 + bl NNS_G3dAnmObjInit add r4, #0x80 ldr r1, [r4] add r0, r5, #4 - bl FUN_020B7EFC + bl NNS_G3dRenderObjAddAnmObj add r0, r6, #1 lsl r0, r0, #0x18 lsr r6, r0, #0x18 diff --git a/arm9/modules/80/asm/module_80.s b/arm9/modules/80/asm/module_80.s index f0b34ee0..83e02d71 100644 --- a/arm9/modules/80/asm/module_80.s +++ b/arm9/modules/80/asm/module_80.s @@ -1473,7 +1473,7 @@ _0222DFE4: mov r1, #2 lsl r1, r1, #0x10 mov r2, #0 - bl tempName_NNS_FndCreateExpHeapEx + bl NNS_FndCreateExpHeapEx str r0, [r4, #0x4c] mov r0, #1 str r0, [r5] @@ -1830,7 +1830,7 @@ MOD80_0222E3CC: ; 0x0222E3CC push {r4, r5, r6, r7, lr} sub sp, #0x1c add r5, r0, #0 - bl FUN_020B0FC0 + bl NNS_G2dInitOamManagerModule mov r0, #0 str r0, [sp] mov r1, #0x7e @@ -2001,7 +2001,7 @@ _0222E414: mov r0, #0x13 add r2, sp, #0x18 mov r3, #0x3e - bl FUN_02006C08 + bl GfGfxLoader_GetPlttData str r0, [sp, #0x14] ldr r0, [sp, #0x18] mov r1, #0x60 @@ -2269,7 +2269,7 @@ MOD80_0222E750: ; 0x0222E750 add r1, r5, #0 ldr r0, [r0] add r2, r4, #0 - bl tempName_NNS_FndAllocFromExpHeapEx + bl NNS_FndAllocFromExpHeapEx add r4, r0, #0 add r0, r6, #0 bl OS_RestoreInterrupts @@ -2289,7 +2289,7 @@ MOD80_0222E778: ; 0x0222E778 ldr r0, _0222E798 ; =0x02237E24 add r1, r5, #0 ldr r0, [r0] - bl FUN_020ADDF0 + bl NNS_FndFreeToExpHeap add r0, r4, #0 bl OS_RestoreInterrupts _0222E794: @@ -2797,7 +2797,7 @@ MOD80_0222EB6C: ; 0x0222EB6C mov r0, #0x68 mov r1, #4 add r3, r2, #0 - bl FUN_02006930 + bl GfGfxLoader_GXLoadPal mov r1, #0x1a mov r0, #0 lsl r1, r1, #4 @@ -2836,7 +2836,7 @@ MOD80_0222EB6C: ; 0x0222EB6C mov r0, #0x68 mov r1, #0xe add r2, r4, #0 - bl FUN_0200687C + bl GfGfxLoader_LoadCharData mov r0, #0 str r0, [sp] mov r0, #6 @@ -2849,7 +2849,7 @@ MOD80_0222EB6C: ; 0x0222EB6C mov r0, #0x68 mov r1, #0x1e add r2, r4, #0 - bl FUN_020068C8 + bl GfGfxLoader_LoadScrnData mov r0, #0 str r0, [sp] mov r0, #6 @@ -2863,7 +2863,7 @@ MOD80_0222EB6C: ; 0x0222EB6C mov r1, #0x1d add r2, r4, #0 mov r3, #2 - bl FUN_020068C8 + bl GfGfxLoader_LoadScrnData add r0, r5, #0 bl MOD80_0222F338 add sp, #0x10 @@ -2951,7 +2951,7 @@ MOD80_0222EC98: ; 0x0222EC98 ldr r0, _0222ED88 ; =0x00000EB8 mov r1, #0 add r0, r7, r0 - bl FUN_02019620 + bl FillWindowPixelBuffer mov r0, #2 str r0, [sp] mov r3, #0 @@ -2992,7 +2992,7 @@ _0222ECF2: bl FUN_02019064 add r0, r5, #0 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, [sp, #0x14] add r6, #0x1e add r0, r0, #1 @@ -3019,7 +3019,7 @@ _0222ECF2: ldr r0, _0222ED94 ; =0x00000E98 mov r1, #0xf add r0, r7, r0 - bl FUN_02019620 + bl FillWindowPixelBuffer mov r0, #0x13 str r0, [sp] mov r0, #0x1b @@ -3039,7 +3039,7 @@ _0222ECF2: ldr r0, _0222ED98 ; =0x00000FB8 mov r1, #0xf add r0, r7, r0 - bl FUN_02019620 + bl FillWindowPixelBuffer add sp, #0x18 pop {r3, r4, r5, r6, r7, pc} .align 2, 0 @@ -3678,7 +3678,7 @@ MOD80_0222F250: ; 0x0222F250 ldr r0, _0222F2A0 ; =0x00000E98 mov r1, #0xf add r0, r5, r0 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, _0222F2A0 ; =0x00000E98 mov r1, #0 add r0, r5, r0 @@ -3720,7 +3720,7 @@ MOD80_0222F2A8: ; 0x0222F2A8 ldr r0, _0222F2F8 ; =0x00000FB8 mov r1, #0xf add r0, r5, r0 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, _0222F2F8 ; =0x00000FB8 mov r1, #0 add r0, r5, r0 @@ -3761,7 +3761,7 @@ MOD80_0222F300: ; 0x0222F300 add r6, r0, #0 add r0, r5, #0 lsr r1, r1, #0x18 - bl FUN_02019620 + bl FillWindowPixelBuffer mov r3, #0 str r3, [sp] str r3, [sp, #4] @@ -3790,7 +3790,7 @@ MOD80_0222F338: ; 0x0222F338 mov r1, #5 mov r2, #4 mov r3, #0 - bl FUN_02006930 + bl GfGfxLoader_GXLoadPal mov r0, #0 str r0, [sp] mov r0, #0x2a @@ -3804,7 +3804,7 @@ MOD80_0222F338: ; 0x0222F338 mov r1, #0xf add r2, r4, #0 mov r3, #5 - bl FUN_0200687C + bl GfGfxLoader_LoadCharData mov r0, #0 str r0, [sp] mov r0, #6 @@ -3818,7 +3818,7 @@ MOD80_0222F338: ; 0x0222F338 mov r1, #0x1f add r2, r4, #0 mov r3, #5 - bl FUN_020068C8 + bl GfGfxLoader_LoadScrnData add sp, #0x10 pop {r4, pc} thumb_func_end MOD80_0222F338 @@ -4081,7 +4081,7 @@ MOD80_0222F5A8: ; 0x0222F5A8 mov r0, #0x68 mov r1, #7 add r3, r2, #0 - bl FUN_02006930 + bl GfGfxLoader_GXLoadPal mov r0, #1 lsl r0, r0, #8 str r0, [sp] @@ -4091,7 +4091,7 @@ MOD80_0222F5A8: ; 0x0222F5A8 mov r1, #5 mov r2, #4 mov r3, #0 - bl FUN_02006930 + bl GfGfxLoader_GXLoadPal mov r1, #0x1a mov r0, #0 lsl r1, r1, #4 @@ -4130,7 +4130,7 @@ MOD80_0222F5A8: ; 0x0222F5A8 mov r0, #0x68 mov r1, #0x11 add r2, r4, #0 - bl FUN_0200687C + bl GfGfxLoader_LoadCharData mov r0, #0 str r0, [sp] mov r0, #6 @@ -4143,7 +4143,7 @@ MOD80_0222F5A8: ; 0x0222F5A8 mov r0, #0x68 mov r1, #0x19 add r2, r4, #0 - bl FUN_020068C8 + bl GfGfxLoader_LoadScrnData mov r0, #0 str r0, [sp] mov r0, #0x2a @@ -4157,7 +4157,7 @@ MOD80_0222F5A8: ; 0x0222F5A8 mov r1, #0xf add r2, r4, #0 mov r3, #5 - bl FUN_0200687C + bl GfGfxLoader_LoadCharData mov r0, #0 str r0, [sp] mov r0, #6 @@ -4171,7 +4171,7 @@ MOD80_0222F5A8: ; 0x0222F5A8 mov r1, #0x1f add r2, r4, #0 mov r3, #5 - bl FUN_020068C8 + bl GfGfxLoader_LoadScrnData add sp, #0x10 pop {r3, r4, r5, pc} .align 2, 0 @@ -4250,7 +4250,7 @@ MOD80_0222F6EC: ; 0x0222F6EC ldr r0, [sp, #0x14] add r0, r0, r1 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer mov r0, #0xf str r0, [sp] mov r0, #0xa @@ -4303,7 +4303,7 @@ _0222F754: bl FUN_02019064 add r0, r5, #0 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r1, [r4, #8] ldr r0, [r4, #0xc] add r7, r7, #1 @@ -4573,7 +4573,7 @@ MOD80_0222F96C: ; 0x0222F96C bic r3, r1 mov r1, #0x3e strb r3, [r2, #0xb] - bl ListMenu_ctor + bl ListMenuItems_ctor ldr r1, _0222F9FC ; =0x00000FC8 mov r2, #0x36 str r0, [r4, r1] @@ -4581,14 +4581,14 @@ MOD80_0222F96C: ; 0x0222F96C ldr r1, _0222FA00 ; =0x00000B34 mov r3, #1 ldr r1, [r4, r1] - bl ListMenu_ItemFromMsgData + bl ListMenuItems_AppendFromMsgData ldr r0, _0222F9FC ; =0x00000FC8 ldr r1, _0222FA00 ; =0x00000B34 ldr r0, [r4, r0] ldr r1, [r4, r1] mov r2, #0x37 mov r3, #2 - bl ListMenu_ItemFromMsgData + bl ListMenuItems_AppendFromMsgData ldr r0, _0222F9FC ; =0x00000FC8 mov r2, #0x1f ldr r1, [r4, r0] @@ -4647,7 +4647,7 @@ _0222FA26: bl FUN_02001C5C ldr r0, _0222FADC ; =0x00000FC8 ldr r0, [r5, r0] - bl ListMenu_dtor + bl ListMenuItems_dtor ldr r0, _0222FAE0 ; =0x00000ED8 mov r1, #0 add r0, r5, r0 @@ -4702,7 +4702,7 @@ _0222FAA4: bl FUN_02001C5C ldr r0, _0222FADC ; =0x00000FC8 ldr r0, [r5, r0] - bl ListMenu_dtor + bl ListMenuItems_dtor ldr r0, _0222FAE0 ; =0x00000ED8 mov r1, #0 add r0, r5, r0 @@ -4805,7 +4805,7 @@ MOD80_0222FB3C: ; 0x0222FB3C ldr r0, _0222FBB8 ; =0x00000E98 mov r1, #0xf add r0, r5, r0 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, _0222FBB8 ; =0x00000E98 mov r1, #0 add r0, r5, r0 @@ -4912,7 +4912,7 @@ MOD80_0222FBC0: ; 0x0222FBC0 _0222FC64: add r0, r5, #0 add r1, r7, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer add r4, r4, #1 add r5, #0x10 cmp r4, #5 @@ -5100,7 +5100,7 @@ MOD80_0222FD88: ; 0x0222FD88 ldrh r1, [r1, #4] mov r2, #1 lsl r3, r3, #4 - bl FUN_02006930 + bl GfGfxLoader_GXLoadPal add r0, r4, #0 bl FreeToHeap add sp, #0x30 @@ -5419,7 +5419,7 @@ MOD80_02230054: ; 0x02230054 mov r0, #0x68 mov r1, #0x11 add r2, r4, #0 - bl FUN_0200687C + bl GfGfxLoader_LoadCharData mov r0, #0x60 str r0, [sp] mov r0, #0x3e @@ -5428,7 +5428,7 @@ MOD80_02230054: ; 0x02230054 mov r0, #0x68 mov r1, #7 add r3, r2, #0 - bl FUN_02006930 + bl GfGfxLoader_GXLoadPal add sp, #0x10 pop {r3, r4, r5, pc} thumb_func_end MOD80_02230054 @@ -5506,7 +5506,7 @@ MOD80_02230128: ; 0x02230128 ldr r0, [sp, #0x14] add r0, r0, r1 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer mov r0, #0xf str r0, [sp] mov r0, #0xa @@ -5559,7 +5559,7 @@ _02230190: bl FUN_02019064 add r0, r5, #0 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r1, [r4, #8] ldr r0, [r4, #0xc] add r7, r7, #1 @@ -5890,7 +5890,7 @@ MOD80_0223043C: ; 0x0223043C ldr r2, [r4, #4] mov r0, #0x68 mov r1, #0x1b - bl FUN_020068C8 + bl GfGfxLoader_LoadScrnData ldr r2, _022304BC ; =0x00000B34 ldr r0, _022304C0 ; =0x00000F98 mov r3, #0xba @@ -5922,7 +5922,7 @@ _0223048C: ldr r2, [r4, #4] mov r0, #0x68 mov r1, #0x1c - bl FUN_020068C8 + bl GfGfxLoader_LoadScrnData ldr r2, _022304C4 ; =0x00000B54 ldr r0, _022304C0 ; =0x00000F98 ldr r1, [r4, r2] @@ -5983,7 +5983,7 @@ MOD80_022304F8: ; 0x022304F8 ldr r0, _02230548 ; =0x00000E98 mov r1, #0xf add r0, r5, r0 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, _02230548 ; =0x00000E98 mov r1, #0 add r0, r5, r0 @@ -6061,7 +6061,7 @@ MOD80_022305A8: ; 0x022305A8 add r5, r0, #0 add r7, r2, #0 add r4, r3, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer mov r0, #3 str r0, [sp] ldr r0, _02230610 ; =0x000F0200 @@ -6113,7 +6113,7 @@ MOD80_02230614: ; 0x02230614 mov r1, #0 add r6, r0, #0 add r4, r2, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer cmp r5, #0 beq _0223063A mov r2, #0 @@ -6377,7 +6377,7 @@ MOD80_02230840: ; 0x02230840 mov r0, #0x68 mov r1, #3 add r3, r2, #0 - bl FUN_02006930 + bl GfGfxLoader_GXLoadPal mov r0, #1 lsl r0, r0, #8 str r0, [sp] @@ -6387,7 +6387,7 @@ MOD80_02230840: ; 0x02230840 mov r1, #5 mov r2, #4 mov r3, #0 - bl FUN_02006930 + bl GfGfxLoader_GXLoadPal mov r1, #0x1a mov r0, #0 lsl r1, r1, #4 @@ -6426,7 +6426,7 @@ MOD80_02230840: ; 0x02230840 mov r0, #0x68 mov r1, #0xd add r2, r4, #0 - bl FUN_0200687C + bl GfGfxLoader_LoadCharData mov r0, #0 str r0, [sp] mov r0, #6 @@ -6439,7 +6439,7 @@ MOD80_02230840: ; 0x02230840 mov r0, #0x68 mov r1, #0x1a add r2, r4, #0 - bl FUN_020068C8 + bl GfGfxLoader_LoadScrnData add sp, #0x10 pop {r3, r4, r5, pc} .align 2, 0 @@ -6516,7 +6516,7 @@ MOD80_02230944: ; 0x02230944 ldr r0, [sp, #0x14] add r0, r0, r1 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer mov r2, #0 mov r3, #0xb5 ldr r0, _02230A70 ; =0x000F0D00 @@ -6551,7 +6551,7 @@ MOD80_02230944: ; 0x02230944 ldr r0, [sp, #0x14] add r0, r0, r1 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r1, _02230A78 ; =0x00000F08 ldr r0, [sp, #0x14] ldr r4, _02230A7C ; =0x0223719C @@ -6582,7 +6582,7 @@ _022309D2: bl FUN_02019064 add r0, r5, #0 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer add r7, r7, #1 add r6, #0x16 add r4, r4, #4 @@ -6624,7 +6624,7 @@ _02230A20: ldr r0, [sp, #0x18] mov r1, #0 add r0, r0, r7 - bl FUN_02019620 + bl FillWindowPixelBuffer add r5, r5, #1 add r6, #0x10 add r4, r4, #4 @@ -7524,7 +7524,7 @@ MOD80_0223113C: ; 0x0223113C ldr r0, _022311BC ; =0x00000ED8 mov r1, #0 add r0, r4, r0 - bl FUN_02019620 + bl FillWindowPixelBuffer mov r0, #5 str r0, [sp] mov r0, #0xa @@ -7543,7 +7543,7 @@ MOD80_0223113C: ; 0x0223113C ldr r0, _022311C4 ; =0x00000EE8 mov r1, #0 add r0, r4, r0 - bl FUN_02019620 + bl FillWindowPixelBuffer mov r0, #3 add sp, #0x14 pop {r3, r4, pc} @@ -7626,10 +7626,10 @@ _02231240: add r1, r2, #6 ldr r0, [r4, r0] add r2, r2, #4 - bl FUN_02001300 + bl DestroyListMenu ldr r0, _022312B8 ; =0x00000FC8 ldr r0, [r4, r0] - bl ListMenu_dtor + bl ListMenuItems_dtor ldr r0, _022312BC ; =0x000005DC bl FUN_020054C8 mov r0, #6 @@ -7643,10 +7643,10 @@ _02231266: add r1, r2, #6 ldr r0, [r4, r0] add r2, r2, #4 - bl FUN_02001300 + bl DestroyListMenu ldr r0, _022312B8 ; =0x00000FC8 ldr r0, [r4, r0] - bl ListMenu_dtor + bl ListMenuItems_dtor ldr r0, _022312C0 ; =0x00000ED8 mov r1, #0 add r0, r4, r0 @@ -7747,10 +7747,10 @@ _02231342: ldr r0, [r4, r0] add r1, #0xa add r2, #8 - bl FUN_02001300 + bl DestroyListMenu ldr r0, _02231468 ; =0x00000FC8 ldr r0, [r4, r0] - bl ListMenu_dtor + bl ListMenuItems_dtor ldr r0, _0223146C ; =0x00000EE8 mov r1, #0 add r0, r4, r0 @@ -7780,10 +7780,10 @@ _0223138C: ldr r0, [r4, r0] add r1, #0xa add r2, #8 - bl FUN_02001300 + bl DestroyListMenu ldr r0, _02231468 ; =0x00000FC8 ldr r0, [r4, r0] - bl ListMenu_dtor + bl ListMenuItems_dtor ldr r0, _02231474 ; =0x00000ED8 mov r1, #0 add r0, r4, r0 @@ -7807,7 +7807,7 @@ _0223138C: ldr r0, _0223147C ; =0x00000F18 mov r1, #0 add r0, r4, r0 - bl FUN_02019620 + bl FillWindowPixelBuffer mov r0, #0 str r0, [sp] ldr r0, _02231480 ; =0x00010200 @@ -7847,7 +7847,7 @@ _0223138C: ldr r0, _02231488 ; =0x00000F38 mov r1, #0 add r0, r4, r0 - bl FUN_02019620 + bl FillWindowPixelBuffer mov r0, #0 str r0, [sp] mov r0, #2 @@ -7913,7 +7913,7 @@ MOD80_02231490: ; 0x02231490 ldr r0, _022314E8 ; =0x00000ED8 mov r1, #0 add r0, r4, r0 - bl FUN_02019620 + bl FillWindowPixelBuffer mov r0, #3 add sp, #0x14 pop {r3, r4, pc} @@ -7980,10 +7980,10 @@ _0223154A: mov r1, #0 ldr r0, [r5, r0] add r2, r1, #0 - bl FUN_02001300 + bl DestroyListMenu ldr r0, _022315F4 ; =0x00000FC8 ldr r0, [r5, r0] - bl ListMenu_dtor + bl ListMenuItems_dtor ldr r0, _022315F8 ; =0x00000ED8 mov r1, #0 add r0, r5, r0 @@ -8005,10 +8005,10 @@ _0223158E: mov r1, #0 ldr r0, [r5, r0] add r2, r1, #0 - bl FUN_02001300 + bl DestroyListMenu ldr r0, _022315F4 ; =0x00000FC8 ldr r0, [r5, r0] - bl ListMenu_dtor + bl ListMenuItems_dtor ldr r0, _022315F8 ; =0x00000ED8 mov r1, #0 add r0, r5, r0 @@ -8025,7 +8025,7 @@ _0223158E: mov r1, #0 add r0, r5, r0 str r1, [r5, #0x2c] - bl FUN_02019620 + bl FillWindowPixelBuffer mov r0, #0 str r0, [sp] mov r0, #2 @@ -8089,7 +8089,7 @@ MOD80_02231614: ; 0x02231614 ldr r0, _0223166C ; =0x00000ED8 mov r1, #0 add r0, r4, r0 - bl FUN_02019620 + bl FillWindowPixelBuffer mov r0, #3 add sp, #0x14 pop {r3, r4, pc} @@ -8153,10 +8153,10 @@ _022316D0: mov r1, #0 ldr r0, [r5, r0] add r2, r1, #0 - bl FUN_02001300 + bl DestroyListMenu ldr r0, _02231770 ; =0x00000FC8 ldr r0, [r5, r0] - bl ListMenu_dtor + bl ListMenuItems_dtor ldr r0, _02231774 ; =0x00000ED8 mov r1, #0 add r0, r5, r0 @@ -8178,10 +8178,10 @@ _0223170C: mov r1, #0 ldr r0, [r5, r0] add r2, r1, #0 - bl FUN_02001300 + bl DestroyListMenu ldr r0, _02231770 ; =0x00000FC8 ldr r0, [r5, r0] - bl ListMenu_dtor + bl ListMenuItems_dtor ldr r0, _02231774 ; =0x00000ED8 mov r1, #0 add r0, r5, r0 @@ -8199,7 +8199,7 @@ _0223170C: mov r1, #0 add r0, r5, r0 str r1, [r5, #0x2c] - bl FUN_02019620 + bl FillWindowPixelBuffer mov r0, #0 str r0, [sp] ldr r0, _02231788 ; =0x00010200 @@ -8377,7 +8377,7 @@ MOD80_0223187C: ; 0x0223187C ldr r0, _022318CC ; =0x00000E98 mov r1, #0xf add r0, r5, r0 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, _022318CC ; =0x00000E98 mov r1, #0 add r0, r5, r0 @@ -8789,7 +8789,7 @@ MOD80_02231BF4: ; 0x02231BF4 mov r0, #0x68 mov r1, #2 add r3, r2, #0 - bl FUN_02006930 + bl GfGfxLoader_GXLoadPal mov r0, #1 lsl r0, r0, #8 str r0, [sp] @@ -8799,7 +8799,7 @@ MOD80_02231BF4: ; 0x02231BF4 mov r1, #5 mov r2, #4 mov r3, #0 - bl FUN_02006930 + bl GfGfxLoader_GXLoadPal mov r1, #0x1a mov r0, #0 lsl r1, r1, #4 @@ -8838,7 +8838,7 @@ MOD80_02231BF4: ; 0x02231BF4 mov r0, #0x68 mov r1, #0xc add r2, r4, #0 - bl FUN_0200687C + bl GfGfxLoader_LoadCharData mov r0, #0 str r0, [sp] mov r0, #6 @@ -8851,7 +8851,7 @@ MOD80_02231BF4: ; 0x02231BF4 mov r0, #0x68 mov r1, #0x18 add r2, r4, #0 - bl FUN_020068C8 + bl GfGfxLoader_LoadScrnData mov r0, #0 str r0, [sp] mov r0, #6 @@ -8865,7 +8865,7 @@ MOD80_02231BF4: ; 0x02231BF4 mov r1, #0x1d add r2, r4, #0 mov r3, #2 - bl FUN_020068C8 + bl GfGfxLoader_LoadScrnData add sp, #0x10 pop {r3, r4, r5, pc} thumb_func_end MOD80_02231BF4 @@ -9121,7 +9121,7 @@ MOD80_02231EA8: ; 0x02231EA8 ldr r0, _02231FDC ; =0x00000EB8 mov r1, #0 add r0, r4, r0 - bl FUN_02019620 + bl FillWindowPixelBuffer mov r2, #0 mov r1, #0xb5 ldr r0, _02231FE0 ; =0x000F0E00 @@ -9150,7 +9150,7 @@ MOD80_02231EA8: ; 0x02231EA8 ldr r0, _02231FE4 ; =0x00000EC8 mov r1, #0 add r0, r4, r0 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, _02231FE4 ; =0x00000EC8 add r0, r4, r0 bl CopyWindowToVram @@ -9172,7 +9172,7 @@ MOD80_02231EA8: ; 0x02231EA8 ldr r0, _02231FE8 ; =0x00000E98 mov r1, #0 add r0, r4, r0 - bl FUN_02019620 + bl FillWindowPixelBuffer mov r0, #0x13 str r0, [sp] mov r0, #0x1b @@ -9192,7 +9192,7 @@ MOD80_02231EA8: ; 0x02231EA8 ldr r0, _02231FF0 ; =0x00000FB8 mov r1, #0 add r0, r4, r0 - bl FUN_02019620 + bl FillWindowPixelBuffer mov r0, #0x15 str r0, [sp] mov r0, #6 @@ -9212,7 +9212,7 @@ MOD80_02231EA8: ; 0x02231EA8 ldr r0, _02231FF8 ; =0x00000EE8 mov r1, #6 add r0, r4, r0 - bl FUN_02019620 + bl FillWindowPixelBuffer mov r3, #1 ldr r0, _02231FFC ; =0x00010306 str r3, [sp] @@ -9823,7 +9823,7 @@ MOD80_02232470: ; 0x02232470 bic r3, r1 mov r1, #0x3e strb r3, [r2, #0xb] - bl ListMenu_ctor + bl ListMenuItems_ctor ldr r1, _02232510 ; =0x00000FC8 mov r2, #0x5e str r0, [r4, r1] @@ -9831,21 +9831,21 @@ MOD80_02232470: ; 0x02232470 ldr r1, _02232514 ; =0x00000B34 mov r3, #1 ldr r1, [r4, r1] - bl ListMenu_ItemFromMsgData + bl ListMenuItems_AppendFromMsgData ldr r0, _02232510 ; =0x00000FC8 ldr r1, _02232514 ; =0x00000B34 ldr r0, [r4, r0] ldr r1, [r4, r1] mov r2, #0x5f mov r3, #2 - bl ListMenu_ItemFromMsgData + bl ListMenuItems_AppendFromMsgData ldr r0, _02232510 ; =0x00000FC8 ldr r1, _02232514 ; =0x00000B34 ldr r0, [r4, r0] ldr r1, [r4, r1] mov r2, #0x60 mov r3, #3 - bl ListMenu_ItemFromMsgData + bl ListMenuItems_AppendFromMsgData ldr r0, _02232510 ; =0x00000FC8 mov r2, #0x1f ldr r1, [r4, r0] @@ -9912,7 +9912,7 @@ _02232546: bl FUN_02001C5C ldr r0, _02232660 ; =0x00000FC8 ldr r0, [r5, r0] - bl ListMenu_dtor + bl ListMenuItems_dtor ldr r0, _02232664 ; =0x00000ED8 mov r1, #0 add r0, r5, r0 @@ -9932,7 +9932,7 @@ _02232574: bl FUN_02001C5C ldr r0, _02232660 ; =0x00000FC8 ldr r0, [r5, r0] - bl ListMenu_dtor + bl ListMenuItems_dtor ldr r0, _02232664 ; =0x00000ED8 mov r1, #0 add r0, r5, r0 @@ -10016,7 +10016,7 @@ _0223262E: bl FUN_02001C5C ldr r0, _02232660 ; =0x00000FC8 ldr r0, [r5, r0] - bl ListMenu_dtor + bl ListMenuItems_dtor ldr r0, _02232664 ; =0x00000ED8 mov r1, #0 add r0, r5, r0 @@ -10063,7 +10063,7 @@ MOD80_02232670: ; 0x02232670 bic r3, r1 mov r1, #0x3e strb r3, [r2, #0xb] - bl ListMenu_ctor + bl ListMenuItems_ctor ldr r1, _02232710 ; =0x00000FC8 mov r2, #0x54 str r0, [r4, r1] @@ -10071,21 +10071,21 @@ MOD80_02232670: ; 0x02232670 ldr r1, _02232714 ; =0x00000B34 mov r3, #1 ldr r1, [r4, r1] - bl ListMenu_ItemFromMsgData + bl ListMenuItems_AppendFromMsgData ldr r0, _02232710 ; =0x00000FC8 ldr r1, _02232714 ; =0x00000B34 ldr r0, [r4, r0] ldr r1, [r4, r1] mov r2, #0x55 mov r3, #2 - bl ListMenu_ItemFromMsgData + bl ListMenuItems_AppendFromMsgData ldr r0, _02232710 ; =0x00000FC8 ldr r1, _02232714 ; =0x00000B34 ldr r0, [r4, r0] ldr r1, [r4, r1] mov r2, #0x56 mov r3, #3 - bl ListMenu_ItemFromMsgData + bl ListMenuItems_AppendFromMsgData ldr r0, _02232710 ; =0x00000FC8 mov r2, #0x1f ldr r1, [r4, r0] @@ -10152,7 +10152,7 @@ _02232746: bl FUN_02001C5C ldr r0, _0223283C ; =0x00000FC8 ldr r0, [r5, r0] - bl ListMenu_dtor + bl ListMenuItems_dtor ldr r0, _02232840 ; =0x00000ED8 mov r1, #0 add r0, r5, r0 @@ -10172,7 +10172,7 @@ _02232774: bl FUN_02001C5C ldr r0, _0223283C ; =0x00000FC8 ldr r0, [r5, r0] - bl ListMenu_dtor + bl ListMenuItems_dtor ldr r0, _02232840 ; =0x00000ED8 mov r1, #0 add r0, r5, r0 @@ -10239,7 +10239,7 @@ _0223280A: bl FUN_02001C5C ldr r0, _0223283C ; =0x00000FC8 ldr r0, [r5, r0] - bl ListMenu_dtor + bl ListMenuItems_dtor ldr r0, _02232840 ; =0x00000ED8 mov r1, #0 add r0, r5, r0 @@ -10679,7 +10679,7 @@ _02232B62: add r4, r5, r0 add r0, r4, #0 mov r1, #0xf - bl FUN_02019620 + bl FillWindowPixelBuffer add r0, r4, #0 mov r1, #0 mov r2, #1 @@ -10717,7 +10717,7 @@ MOD80_02232BAC: ; 0x02232BAC add r4, r0, #0 beq _02232BCE add r1, r5, #0 - bl FUN_020B0030 + bl NNS_G2dGetUnpackedBGCharacterData cmp r0, #0 bne _02232BCE add r0, r4, #0 @@ -11146,7 +11146,7 @@ _02232F22: ldr r0, _02232F9C ; =0x00000EC8 mov r1, #0 add r0, r5, r0 - bl FUN_02019620 + bl FillWindowPixelBuffer mov r0, #1 str r0, [sp] ldr r0, _02232FA0 ; =0x00010200 @@ -11657,7 +11657,7 @@ MOD80_022332EC: ; 0x022332EC ldr r0, _02233350 ; =0x00000E98 mov r1, #0xf add r0, r5, r0 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, _02233350 ; =0x00000E98 mov r1, #0 add r0, r5, r0 @@ -11828,7 +11828,7 @@ MOD80_0223346C: ; 0x0223346C mov r0, #0x68 mov r1, #1 add r3, r2, #0 - bl FUN_02006930 + bl GfGfxLoader_GXLoadPal mov r1, #0x1a mov r0, #0 lsl r1, r1, #4 @@ -11867,7 +11867,7 @@ MOD80_0223346C: ; 0x0223346C mov r0, #0x68 mov r1, #0xb add r2, r4, #0 - bl FUN_0200687C + bl GfGfxLoader_LoadCharData mov r0, #0 str r0, [sp] mov r0, #6 @@ -11880,7 +11880,7 @@ MOD80_0223346C: ; 0x0223346C mov r0, #0x68 mov r1, #0x17 add r2, r4, #0 - bl FUN_020068C8 + bl GfGfxLoader_LoadScrnData add sp, #0x10 pop {r3, r4, r5, pc} thumb_func_end MOD80_0223346C @@ -11908,7 +11908,7 @@ MOD80_02233500: ; 0x02233500 ldr r0, _022335CC ; =0x00000EB8 mov r1, #0 add r0, r7, r0 - bl FUN_02019620 + bl FillWindowPixelBuffer mov r2, #0 mov r1, #0xb5 ldr r0, _022335D0 ; =0x000F0E00 @@ -11938,7 +11938,7 @@ MOD80_02233500: ; 0x02233500 ldr r0, _022335D4 ; =0x00000E98 mov r1, #0 add r0, r7, r0 - bl FUN_02019620 + bl FillWindowPixelBuffer mov r0, #0 str r0, [sp, #0x14] ldr r0, _022335D8 ; =0x00000F08 @@ -11968,7 +11968,7 @@ _0223357E: bl FUN_02019064 add r0, r5, #0 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer add r0, r5, #0 bl CopyWindowToVram ldr r0, [sp, #0x14] @@ -12158,7 +12158,7 @@ _02233714: ldr r0, _02233778 ; =0x00000ED8 mov r1, #0 add r0, r4, r0 - bl FUN_02019620 + bl FillWindowPixelBuffer mov r0, #5 str r0, [sp] mov r0, #0xa @@ -12177,7 +12177,7 @@ _02233714: ldr r0, _02233780 ; =0x00000EE8 mov r1, #0 add r0, r4, r0 - bl FUN_02019620 + bl FillWindowPixelBuffer mov r0, #3 str r0, [r4, #0x2c] add sp, #0x14 @@ -12260,10 +12260,10 @@ _022337FA: add r1, r2, #6 ldr r0, [r4, r0] add r2, r2, #4 - bl FUN_02001300 + bl DestroyListMenu ldr r0, _0223387C ; =0x00000FC8 ldr r0, [r4, r0] - bl ListMenu_dtor + bl ListMenuItems_dtor mov r0, #5 str r0, [r4, #0x2c] ldr r0, _02233880 ; =0x000005DC @@ -12277,10 +12277,10 @@ _02233820: add r1, r2, #6 ldr r0, [r4, r0] add r2, r2, #4 - bl FUN_02001300 + bl DestroyListMenu ldr r0, _0223387C ; =0x00000FC8 ldr r0, [r4, r0] - bl ListMenu_dtor + bl ListMenuItems_dtor ldr r0, _02233884 ; =0x00000ED8 mov r1, #0 add r0, r4, r0 @@ -12415,10 +12415,10 @@ _02233932: ldr r0, [r4, r0] add r1, #0xa add r2, #8 - bl FUN_02001300 + bl DestroyListMenu ldr r0, _02233A50 ; =0x00000FC8 ldr r0, [r4, r0] - bl ListMenu_dtor + bl ListMenuItems_dtor ldr r0, _02233A54 ; =0x00000EE8 mov r1, #0 add r0, r4, r0 @@ -12454,10 +12454,10 @@ _0223398C: ldr r0, [r4, r0] add r1, #0xa add r2, #8 - bl FUN_02001300 + bl DestroyListMenu ldr r0, _02233A50 ; =0x00000FC8 ldr r0, [r4, r0] - bl ListMenu_dtor + bl ListMenuItems_dtor ldr r0, _02233A58 ; =0x00000ED8 mov r1, #0 add r0, r4, r0 @@ -12577,7 +12577,7 @@ MOD80_02233A6C: ; 0x02233A6C ldr r0, _02233AC4 ; =0x00000ED8 mov r1, #0 add r0, r4, r0 - bl FUN_02019620 + bl FillWindowPixelBuffer mov r0, #3 add sp, #0x14 pop {r3, r4, pc} @@ -12644,10 +12644,10 @@ _02233B26: mov r1, #0 ldr r0, [r5, r0] add r2, r1, #0 - bl FUN_02001300 + bl DestroyListMenu ldr r0, _02233BD0 ; =0x00000FC8 ldr r0, [r5, r0] - bl ListMenu_dtor + bl ListMenuItems_dtor ldr r0, _02233BD4 ; =0x00000ED8 mov r1, #0 add r0, r5, r0 @@ -12669,10 +12669,10 @@ _02233B6A: mov r1, #0 ldr r0, [r5, r0] add r2, r1, #0 - bl FUN_02001300 + bl DestroyListMenu ldr r0, _02233BD0 ; =0x00000FC8 ldr r0, [r5, r0] - bl ListMenu_dtor + bl ListMenuItems_dtor ldr r0, _02233BD4 ; =0x00000ED8 mov r1, #0 add r0, r5, r0 @@ -12752,7 +12752,7 @@ MOD80_02233BE8: ; 0x02233BE8 ldr r0, _02233C40 ; =0x00000ED8 mov r1, #0 add r0, r4, r0 - bl FUN_02019620 + bl FillWindowPixelBuffer mov r0, #3 add sp, #0x14 pop {r3, r4, pc} @@ -12816,10 +12816,10 @@ _02233CA4: mov r1, #0 ldr r0, [r5, r0] add r2, r1, #0 - bl FUN_02001300 + bl DestroyListMenu ldr r0, _02233D70 ; =0x00000FC8 ldr r0, [r5, r0] - bl ListMenu_dtor + bl ListMenuItems_dtor ldr r0, _02233D74 ; =0x00000ED8 mov r1, #0 add r0, r5, r0 @@ -12856,10 +12856,10 @@ _02233CFA: mov r1, #0 ldr r0, [r5, r0] add r2, r1, #0 - bl FUN_02001300 + bl DestroyListMenu ldr r0, _02233D70 ; =0x00000FC8 ldr r0, [r5, r0] - bl ListMenu_dtor + bl ListMenuItems_dtor ldr r0, _02233D74 ; =0x00000ED8 mov r1, #0 add r0, r5, r0 @@ -13235,7 +13235,7 @@ MOD80_02233FB4: ; 0x02233FB4 _02233FE0: add r0, r5, #0 add r1, r7, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer add r4, r4, #1 add r5, #0x10 cmp r4, #3 @@ -13307,7 +13307,7 @@ MOD80_02234048: ; 0x02234048 _02234074: add r0, r5, #0 add r1, r7, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer add r4, r4, #1 add r5, #0x10 cmp r4, #3 @@ -13416,7 +13416,7 @@ _0223415A: _0223415E: add r0, r5, #0 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer add r4, r4, #1 add r5, #0x10 cmp r4, #3 @@ -13500,7 +13500,7 @@ MOD80_02234204: ; 0x02234204 str r0, [sp, #4] mov r0, #0x4b mov r1, #0xd - bl FUN_02006D18 + bl GfGfxLoader_LoadFromNarc_GetSizeOut ldr r1, [sp, #8] lsr r1, r1, #1 str r1, [r4] @@ -13529,7 +13529,7 @@ MOD80_02234228: ; 0x02234228 mov r0, #0x4b mov r1, #0xc add r3, r5, #0 - bl FUN_02006D18 + bl GfGfxLoader_LoadFromNarc_GetSizeOut add r7, r0, #0 ldr r0, [sp, #8] ldr r5, _02234284 ; =0x00000000 @@ -13680,7 +13680,7 @@ MOD80_02234370: ; 0x02234370 mov r1, #0x3e str r2, [sp] add r6, r3, #0 - bl ListMenu_ctor + bl ListMenuItems_ctor str r0, [r5] mov r4, #0 _02234388: @@ -13689,7 +13689,7 @@ _02234388: add r1, r6, #0 add r2, #0x68 add r3, r4, #1 - bl ListMenu_ItemFromMsgData + bl ListMenuItems_AppendFromMsgData add r4, r4, #1 cmp r4, #9 blt _02234388 @@ -13718,7 +13718,7 @@ _02234388: ldrh r1, [r2, #6] ldrh r2, [r2, #4] mov r3, #0x3e - bl FUN_020010A8 + bl ListMenuInit add sp, #0x24 pop {r4, r5, r6, r7, pc} .align 2, 0 @@ -13791,7 +13791,7 @@ _0223444A: _02234456: add r0, r6, #1 mov r1, #0x3e - bl ListMenu_ctor + bl ListMenuItems_ctor ldr r1, [sp] str r0, [r1] mov r0, #0 @@ -13816,7 +13816,7 @@ _02234472: ldr r1, [sp, #4] ldr r0, [r0] add r3, r2, #0 - bl ListMenu_ItemFromMsgData + bl ListMenuItems_AppendFromMsgData b _022344B6 _02234494: ldrh r1, [r5] @@ -13833,7 +13833,7 @@ _02234494: ldr r1, [sp, #4] ldr r0, [r0] add r3, r2, #0 - bl ListMenu_ItemFromMsgData + bl ListMenuItems_AppendFromMsgData _022344B6: ldr r0, [sp, #0x10] add r5, r5, #2 @@ -13848,7 +13848,7 @@ _022344C2: ldr r0, [r0] ldr r1, [sp, #8] sub r3, #0x77 - bl ListMenu_ItemFromMsgData + bl ListMenuItems_AppendFromMsgData add r0, r6, #1 add sp, #0x20 pop {r3, r4, r5, r6, r7, pc} @@ -13867,7 +13867,7 @@ MOD80_022344DC: ; 0x022344DC mov r1, #0xf str r2, [sp, #0x10] str r3, [sp, #0x14] - bl FUN_02019620 + bl FillWindowPixelBuffer ldrh r1, [r5, #6] ldrh r0, [r5, #4] ldr r2, [sp, #0x14] @@ -13912,7 +13912,7 @@ MOD80_022344DC: ; 0x022344DC ldrh r2, [r3, r2] add r0, sp, #0x18 mov r3, #0x3e - bl FUN_020010A8 + bl ListMenuInit add sp, #0x38 pop {r3, r4, r5, r6, r7, pc} nop @@ -13929,7 +13929,7 @@ MOD80_02234560: ; 0x02234560 mov r0, #4 mov r1, #0x3e add r7, r2, #0 - bl ListMenu_ctor + bl ListMenuItems_ctor ldr r5, _022345C8 ; =0x02237B64 str r0, [r6] mov r4, #0 @@ -13938,7 +13938,7 @@ _02234578: ldr r2, [r5] ldr r3, [r5, #4] add r1, r7, #0 - bl ListMenu_ItemFromMsgData + bl ListMenuItems_AppendFromMsgData add r4, r4, #1 add r5, #8 cmp r4, #4 @@ -13968,7 +13968,7 @@ _02234578: add r0, sp, #4 add r2, r1, #0 mov r3, #0x3e - bl FUN_020010A8 + bl ListMenuInit add sp, #0x24 pop {r4, r5, r6, r7, pc} .align 2, 0 @@ -13985,7 +13985,7 @@ MOD80_022345D0: ; 0x022345D0 mov r0, #0xd mov r1, #0x3e add r7, r2, #0 - bl ListMenu_ctor + bl ListMenuItems_ctor ldr r5, _02234638 ; =0x02237494 str r0, [r6] mov r4, #0 @@ -13994,7 +13994,7 @@ _022345E8: ldr r2, [r5] add r1, r7, #0 add r3, r4, #0 - bl ListMenu_ItemFromMsgData + bl ListMenuItems_AppendFromMsgData add r4, r4, #1 add r5, #8 cmp r4, #0xd @@ -14024,7 +14024,7 @@ _022345E8: add r0, sp, #4 add r2, r1, #0 mov r3, #0x3e - bl FUN_020010A8 + bl ListMenuInit add sp, #0x24 pop {r4, r5, r6, r7, pc} .align 2, 0 @@ -14039,7 +14039,7 @@ MOD80_02234640: ; 0x02234640 add r4, r0, #0 cmp r5, #0xc blt _0223464E - bl ErrorHandling + bl GF_AssertFail _0223464E: ldr r0, _02234660 ; =0x02237498 lsl r1, r5, #3 @@ -14089,11 +14089,11 @@ MOD80_02234698: ; 0x02234698 sub sp, #4 add r5, r0, #0 add r4, r1, #0 - bl FUN_02001204 + bl ListMenu_ProcessInput add r6, r0, #0 add r0, r5, #0 add r1, sp, #0 - bl FUN_0200143C + bl ListMenuGetCurrentItemArrayId add r0, sp, #0 ldrh r1, [r4] ldrh r0, [r0] @@ -14372,7 +14372,7 @@ MOD80_022348CC: ; 0x022348CC mov r0, #0x68 add r2, r1, #0 add r3, r1, #0 - bl FUN_02006930 + bl GfGfxLoader_GXLoadPal mov r1, #0x1a mov r0, #0 lsl r1, r1, #4 @@ -14449,7 +14449,7 @@ MOD80_02234958: ; 0x02234958 ldr r0, _02234990 ; =0x00000E98 mov r1, #0 add r0, r4, r0 - bl FUN_02019620 + bl FillWindowPixelBuffer add sp, #0x14 pop {r3, r4, pc} nop @@ -14600,7 +14600,7 @@ _02234A8A: str r0, [r4, #0x2c] b _02234AA8 _02234AA4: - bl ErrorHandling + bl GF_AssertFail _02234AA8: add r0, r4, #0 bl MOD80_0222E8BC @@ -15866,7 +15866,7 @@ MOD80_022353B4: ; 0x022353B4 lsr r5, r0, #0x10 cmp r5, #0x3c blo _022353E0 - bl ErrorHandling + bl GF_AssertFail _022353E0: ldr r0, _022353F0 ; =0x00000FDC add r1, r5, #2 @@ -16126,8 +16126,8 @@ _02235590: bne _022355DC ldr r0, [r5] ldr r0, [r0, #0x20] - bl FUN_02029EF8 - bl FUN_02029F08 + bl Sav2_Chatot_get + bl Chatot_invalidate _022355DC: cmp r6, #0 beq _022355EA @@ -17002,7 +17002,7 @@ MOD80_02235C88: ; 0x02235C88 mov r1, #7 add r2, r4, r2 mov r3, #0x3e - bl FUN_02006C08 + bl GfGfxLoader_GetPlttData ldr r3, _02235CCC ; =0x00000FF8 mov r1, #9 str r0, [r4, r3] @@ -17012,7 +17012,7 @@ MOD80_02235C88: ; 0x02235C88 mov r0, #0x56 mov r2, #1 add r3, r4, r3 - bl FUN_02006BB0 + bl GfGfxLoader_GetCharData mov r1, #0xff lsl r1, r1, #4 str r0, [r4, r1] @@ -17695,7 +17695,7 @@ _02236208: add r0, #0xd4 pop {r3, pc} _02236210: - bl ErrorHandling + bl GF_AssertFail mov r0, #0 pop {r3, pc} thumb_func_end MOD80_022361E8 @@ -18003,7 +18003,7 @@ MOD80_02236488: ; 0x02236488 mov r0, #0x5c mov r1, #3 add r3, r2, #0 - bl FUN_02006930 + bl GfGfxLoader_GXLoadPal mov r3, #0 str r3, [sp] mov r0, #0x3e @@ -18011,7 +18011,7 @@ MOD80_02236488: ; 0x02236488 mov r0, #0x5c mov r1, #3 mov r2, #4 - bl FUN_02006930 + bl GfGfxLoader_GXLoadPal mov r1, #0x1a mov r0, #0 lsl r1, r1, #4 @@ -18055,7 +18055,7 @@ MOD80_02236488: ; 0x02236488 mov r1, #2 add r2, r4, #0 mov r3, #1 - bl FUN_0200687C + bl GfGfxLoader_LoadCharData mov r1, #0 mov r0, #6 str r1, [sp] @@ -18068,7 +18068,7 @@ MOD80_02236488: ; 0x02236488 mov r1, #4 add r2, r4, #0 mov r3, #1 - bl FUN_020068C8 + bl GfGfxLoader_LoadScrnData mov r1, #0 mov r0, #0x36 str r1, [sp] @@ -18081,7 +18081,7 @@ MOD80_02236488: ; 0x02236488 mov r1, #9 add r2, r4, #0 mov r3, #5 - bl FUN_0200687C + bl GfGfxLoader_LoadCharData mov r1, #0 mov r0, #6 str r1, [sp] @@ -18094,7 +18094,7 @@ MOD80_02236488: ; 0x02236488 mov r1, #0xa add r2, r4, #0 mov r3, #5 - bl FUN_020068C8 + bl GfGfxLoader_LoadScrnData mov r0, #0 add r1, r0, #0 bl FUN_02017FE4 @@ -18128,7 +18128,7 @@ MOD80_02236580: ; 0x02236580 ldr r0, _02236628 ; =0x00000EC8 mov r1, #0 add r0, r4, r0 - bl FUN_02019620 + bl FillWindowPixelBuffer mov r0, #1 str r0, [sp] mov r0, #0x18 @@ -18149,7 +18149,7 @@ MOD80_02236580: ; 0x02236580 ldr r0, _0223662C ; =0x00000EB8 mov r1, #0 add r0, r4, r0 - bl FUN_02019620 + bl FillWindowPixelBuffer mov r3, #1 mov r1, #0xb5 ldr r0, _02236630 ; =0x000F0E00 @@ -18180,7 +18180,7 @@ MOD80_02236580: ; 0x02236580 ldr r0, _02236634 ; =0x00000E98 mov r1, #0 add r0, r4, r0 - bl FUN_02019620 + bl FillWindowPixelBuffer add sp, #0x14 pop {r3, r4, pc} nop @@ -19051,7 +19051,7 @@ MOD80_02236C70: ; 0x02236C70 ldr r0, _02236CD8 ; =0x00000E98 mov r1, #0xf add r0, r5, r0 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, _02236CD8 ; =0x00000E98 mov r1, #0 add r0, r5, r0 @@ -19206,7 +19206,7 @@ MOD80_02236D8C: ; 0x02236D8C ldr r0, _02236DFC ; =0x00000EC8 mov r1, #0xf add r0, r5, r0 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, _02236DFC ; =0x00000EC8 mov r1, #1 add r0, r5, r0 diff --git a/arm9/modules/81/asm/module_81.s b/arm9/modules/81/asm/module_81.s index 94767f70..c8b46eb9 100644 --- a/arm9/modules/81/asm/module_81.s +++ b/arm9/modules/81/asm/module_81.s @@ -106,7 +106,7 @@ _02237F0A: lsl r1, r1, #2 str r0, [r4, r1] _02237F22: - bl FUN_020B0FC0 + bl NNS_G2dInitOamManagerModule mov r0, #1 str r0, [sp] mov r0, #0x7f @@ -358,7 +358,7 @@ MOD81_02238118: ; 0x02238118 mov r1, #6 add r2, sp, #4 mov r3, #0x39 - bl FUN_02006C08 + bl GfGfxLoader_GetPlttData add r7, r0, #0 beq _02238152 mov r0, #0 @@ -1072,7 +1072,7 @@ _0223869C: ldrh r0, [r1, #0x10] ldrh r1, [r1, #0x14] lsl r3, r3, #5 - bl FUN_02006930 + bl GfGfxLoader_GXLoadPal add sp, #0x44 pop {r4, r5, r6, r7, pc} nop @@ -1106,7 +1106,7 @@ _022386DE: mov r0, #7 mov r2, #0 add r3, sp, #0x1c - bl FUN_02006BDC + bl GfGfxLoader_GetScrnData add r7, r0, #0 beq _02238746 mov r0, #0xa @@ -1169,7 +1169,7 @@ MOD81_0223874C: ; 0x0223874C add r0, r4, #0 mov r2, #1 add r3, #8 - bl FUN_02006C30 + bl GfGfxLoader_GetCellBank str r0, [r5] mov r0, #0x3a add r3, r5, #0 @@ -1178,7 +1178,7 @@ MOD81_0223874C: ; 0x0223874C add r1, r6, #0 mov r2, #1 add r3, #0xc - bl FUN_02006C5C + bl GfGfxLoader_GetAnimBank str r0, [r5, #4] add sp, #4 pop {r3, r4, r5, r6, pc} @@ -1388,7 +1388,7 @@ MOD81_02238898: ; 0x02238898 ldr r0, [r0] cmp r0, #0x20 blt _022388A8 - bl ErrorHandling + bl GF_AssertFail _022388A8: ldr r0, _022388B8 ; =0x0223D3C0 ldr r2, [r0] @@ -1479,7 +1479,7 @@ MOD81_02238940: ; 0x02238940 add r5, r0, #0 mov r0, #0x11 add r2, r1, #0 - bl FUN_020BB1C0 + bl NNS_G3dGeBufferOP_N bl FUN_0201EBA4 ldr r0, [r5, #0x1c] mov r6, #0 @@ -1504,7 +1504,7 @@ _02238976: mov r0, #0x12 add r1, sp, #0 str r2, [sp] - bl FUN_020BB1C0 + bl NNS_G3dGeBufferOP_N add sp, #4 pop {r3, r4, r5, r6, pc} .align 2, 0 @@ -1520,7 +1520,7 @@ MOD81_02238988: ; 0x02238988 add r0, r4, #0 add r0, #0x80 ldrh r0, [r0] - ldr r3, _02238A34 ; =UNK_020FFA38 + ldr r3, _02238A34 ; =FX_SinCosTable_ asr r0, r0, #4 lsl r2, r0, #1 lsl r1, r2, #1 @@ -1537,7 +1537,7 @@ MOD81_02238988: ; 0x02238988 add r0, r4, #0 add r0, #0x82 ldrh r0, [r0] - ldr r3, _02238A34 ; =UNK_020FFA38 + ldr r3, _02238A34 ; =FX_SinCosTable_ asr r0, r0, #4 lsl r2, r0, #1 lsl r1, r2, #1 @@ -1554,7 +1554,7 @@ MOD81_02238988: ; 0x02238988 add r0, r4, #0 add r0, #0x84 ldrh r0, [r0] - ldr r3, _02238A34 ; =UNK_020FFA38 + ldr r3, _02238A34 ; =FX_SinCosTable_ asr r0, r0, #4 lsl r2, r0, #1 lsl r1, r2, #1 @@ -1579,7 +1579,7 @@ MOD81_02238988: ; 0x02238988 add r2, r0, #0 add r3, r0, #0 str r0, [sp, #4] - bl FUN_020B8390 + bl NNS_G3dGlbPolygonAttr _02238A20: add r1, r4, #0 add r0, r4, #4 @@ -1591,7 +1591,7 @@ _02238A20: add sp, #0x50 pop {r4, pc} .align 2, 0 -_02238A34: .word UNK_020FFA38 +_02238A34: .word FX_SinCosTable_ thumb_func_end MOD81_02238988 thumb_func_start MOD81_02238A38 @@ -1657,7 +1657,7 @@ MOD81_02238A84: ; 0x02238A84 mov r2, #0 mov r3, #0x3a add r5, r4, r6 - bl UncompressFromNarc + bl GfGfxLoader_LoadFromNarc str r0, [r4, r6] ldr r1, [sp, #4] add r0, r7, #0 @@ -1668,7 +1668,7 @@ MOD81_02238A84: ; 0x02238A84 ldr r0, [r4, r6] cmp r0, #0 beq _02238B02 - bl FUN_020BC13C + bl NNS_G3dGetMdlSet str r0, [r5, #0x58] ldrh r1, [r0, #0xe] add r1, r0, r1 @@ -1676,7 +1676,7 @@ MOD81_02238A84: ; 0x02238A84 add r0, r0, r1 str r0, [r5, #0x5c] ldr r0, [r5] - bl FUN_020BC0FC + bl NNS_G3dGetTex str r0, [r5, #0x60] bl FUN_0201B3C4 ldr r0, [r5] @@ -1684,7 +1684,7 @@ MOD81_02238A84: ; 0x02238A84 bl FUN_0201B3A8 ldr r1, [r5, #0x5c] add r0, r5, #4 - bl FUN_020B80B4 + bl NNS_G3dRenderObjInit ldr r0, [sp, #0x20] mov r1, #0x1f str r0, [r5, #0x68] @@ -1777,13 +1777,13 @@ MOD81_02238B5C: ; 0x02238B5C mov r2, #0x1f mov r1, #0 lsl r2, r2, #0x10 - bl FUN_020BC02C + bl NNSi_G3dModifyPolygonAttrMask pop {r3, pc} _02238B76: mov r2, #0x1f mov r1, #1 lsl r2, r2, #0x10 - bl FUN_020BC02C + bl NNSi_G3dModifyPolygonAttrMask pop {r3, pc} .align 2, 0 thumb_func_end MOD81_02238B5C @@ -1806,7 +1806,7 @@ MOD81_02238B8C: ; 0x02238B8C add r0, r4, #0 add r0, #0x80 ldrh r0, [r0] - ldr r3, _02238C3C ; =UNK_020FFA38 + ldr r3, _02238C3C ; =FX_SinCosTable_ asr r0, r0, #4 lsl r2, r0, #1 lsl r1, r2, #1 @@ -1823,7 +1823,7 @@ MOD81_02238B8C: ; 0x02238B8C add r0, r4, #0 add r0, #0x82 ldrh r0, [r0] - ldr r3, _02238C3C ; =UNK_020FFA38 + ldr r3, _02238C3C ; =FX_SinCosTable_ asr r0, r0, #4 lsl r2, r0, #1 lsl r1, r2, #1 @@ -1840,7 +1840,7 @@ MOD81_02238B8C: ; 0x02238B8C add r0, r4, #0 add r0, #0x84 ldrh r0, [r0] - ldr r3, _02238C3C ; =UNK_020FFA38 + ldr r3, _02238C3C ; =FX_SinCosTable_ asr r0, r0, #4 lsl r2, r0, #1 lsl r1, r2, #1 @@ -1857,7 +1857,7 @@ MOD81_02238B8C: ; 0x02238B8C mov r1, #0 mov r0, #0x11 add r2, r1, #0 - bl FUN_020BB1C0 + bl NNS_G3dGeBufferOP_N bl FUN_0201EBA4 add r1, r4, #0 ldr r0, [r4, #0x5c] @@ -1871,12 +1871,12 @@ MOD81_02238B8C: ; 0x02238B8C mov r0, #0x12 add r1, sp, #0 str r2, [sp] - bl FUN_020BB1C0 + bl NNS_G3dGeBufferOP_N add r0, r4, #0 add sp, #0x4c pop {r3, r4, pc} .align 2, 0 -_02238C3C: .word UNK_020FFA38 +_02238C3C: .word FX_SinCosTable_ thumb_func_end MOD81_02238B8C thumb_func_start MOD81_02238C40 @@ -2123,9 +2123,9 @@ MOD81_02238DFC: ; 0x02238DFC mov r1, #0 mov r0, #0x11 add r2, r1, #0 - bl FUN_020BB1C0 - bl FUN_020BB394 - bl FUN_020B02C8 + bl NNS_G3dGeBufferOP_N + bl NNS_G3dGeFlushBuffer + bl NNS_G2dSetupSoftwareSpriteCamera ldr r0, [r4, #0xc] bl FUN_020081C4 ldr r0, [r4, #0xc] @@ -2134,7 +2134,7 @@ MOD81_02238DFC: ; 0x02238DFC str r2, [sp] mov r0, #0x12 add r1, sp, #0 - bl FUN_020BB1C0 + bl NNS_G3dGeBufferOP_N ldr r0, [r4, #0x5c] bl MOD81_02238940 mov r0, #0 @@ -2229,7 +2229,7 @@ MOD81_02238E44: ; 0x02238E44 add r0, r4, #0 add r0, #0x44 mov r1, #0xf - bl FUN_02019620 + bl FillWindowPixelBuffer mov r3, #0x20 str r3, [sp] mov r0, #0x3a @@ -2237,7 +2237,7 @@ MOD81_02238E44: ; 0x02238E44 mov r0, #0xe mov r1, #7 mov r2, #0 - bl FUN_02006930 + bl GfGfxLoader_GXLoadPal mov r0, #0 str r0, [sp] str r0, [sp, #4] @@ -2249,7 +2249,7 @@ MOD81_02238E44: ; 0x02238E44 mov r0, #0x5d mov r1, #0x16 mov r3, #2 - bl FUN_0200687C + bl GfGfxLoader_LoadCharData mov r0, #0 str r0, [sp] str r0, [sp, #4] @@ -2261,7 +2261,7 @@ MOD81_02238E44: ; 0x02238E44 mov r0, #0x5d mov r1, #0x15 mov r3, #2 - bl FUN_020068C8 + bl GfGfxLoader_LoadScrnData mov r0, #0x20 str r0, [sp] mov r0, #0x3a @@ -2270,7 +2270,7 @@ MOD81_02238E44: ; 0x02238E44 mov r0, #0x5d mov r1, #0x17 add r3, r2, #0 - bl FUN_02006930 + bl GfGfxLoader_GXLoadPal mov r0, #0 str r0, [sp] str r0, [sp, #4] @@ -2282,7 +2282,7 @@ MOD81_02238E44: ; 0x02238E44 mov r0, #0x5d mov r1, #0x16 mov r3, #6 - bl FUN_0200687C + bl GfGfxLoader_LoadCharData mov r0, #0 str r0, [sp] str r0, [sp, #4] @@ -2294,7 +2294,7 @@ MOD81_02238E44: ; 0x02238E44 mov r0, #0x5d mov r1, #0x15 mov r3, #6 - bl FUN_020068C8 + bl GfGfxLoader_LoadScrnData mov r0, #0x20 str r0, [sp] mov r0, #0x3a @@ -2303,7 +2303,7 @@ MOD81_02238E44: ; 0x02238E44 mov r1, #0x17 mov r2, #4 mov r3, #0 - bl FUN_02006930 + bl GfGfxLoader_GXLoadPal ldr r0, [r4, #0x40] mov r1, #1 bl FUN_02017CD0 @@ -2527,7 +2527,7 @@ _0223918A: add r0, r4, #0 add r0, #0x44 mov r1, #0xf - bl FUN_02019620 + bl FillWindowPixelBuffer mov r3, #0 str r3, [sp] mov r0, #0xff @@ -2694,7 +2694,7 @@ MOD81_022392D8: ; 0x022392D8 push {r3, r4, r5, r6, lr} sub sp, #4 add r5, r0, #0 - bl FUN_020BB7F4 + bl NNS_G3dInit bl G3X_InitMtxStack ldr r0, _02239380 ; =0x04000060 ldr r2, _02239384 ; =0xFFFFCFFD @@ -2730,19 +2730,19 @@ MOD81_022392D8: ; 0x022392D8 str r0, [r1, #0x40] mov r0, #1 add r1, r0, #0 - bl FUN_020AEB70 + bl NNS_GfdInitFrmTexVramManager mov r0, #1 lsl r0, r0, #0xe mov r1, #1 - bl FUN_020AEDF4 - ldr r3, _02239394 ; =UNK_021064B8 + bl NNS_GfdInitFrmPlttVramManager + ldr r3, _02239394 ; =NNS_GfdDefaultFuncAllocTexVram mov r0, #1 mov r1, #0 ldr r3, [r3] lsl r0, r0, #0xe add r2, r1, #0 blx r3 - ldr r3, _02239398 ; =UNK_021064C0 + ldr r3, _02239398 ; =NNS_GfdDefaultFuncAllocPlttVram add r4, r0, #0 ldr r3, [r3] mov r0, #0x80 @@ -2774,8 +2774,8 @@ _02239384: .word 0xFFFFCFFD _02239388: .word 0x0000CFFB _0223938C: .word 0x04000540 _02239390: .word 0xBFFF0000 -_02239394: .word UNK_021064B8 -_02239398: .word UNK_021064C0 +_02239394: .word NNS_GfdDefaultFuncAllocTexVram +_02239398: .word NNS_GfdDefaultFuncAllocPlttVram _0223939C: .word 0x7FFF0000 _022393A0: .word 0xFFFF0000 thumb_func_end MOD81_022392D8 @@ -2829,9 +2829,9 @@ MOD81_022393F4: ; 0x022393F4 mov r3, #8 bl MOD81_0223874C add r0, sp, #0x5c - bl FUN_020B19DC + bl NNS_G2dInitImagePaletteProxy add r0, sp, #0x38 - bl FUN_020B1A24 + bl NNS_G2dInitImageProxy mov r3, #0 str r3, [sp] mov r2, #1 @@ -2843,7 +2843,7 @@ MOD81_022393F4: ; 0x022393F4 str r0, [sp, #0x10] mov r0, #0x5d mov r1, #9 - bl FUN_02006AE4 + bl GfGfxLoader_LoadImageMapping mov r0, #0x3a str r0, [sp] add r0, sp, #0x5c @@ -2852,7 +2852,7 @@ MOD81_022393F4: ; 0x022393F4 mov r1, #0xa mov r2, #1 mov r3, #0 - bl FUN_02006A8C + bl GfGfxLoader_PartiallyLoadPalette mov r0, #2 add r1, r4, #0 str r0, [sp] @@ -3687,7 +3687,7 @@ MOD81_022399FC: ; 0x022399FC ldr r2, [r2] mov r0, #0x5d add r3, r1, #0 - bl FUN_0200687C + bl GfGfxLoader_LoadCharData mov r0, #0 str r0, [sp] str r0, [sp, #4] @@ -3701,7 +3701,7 @@ MOD81_022399FC: ; 0x022399FC mov r0, #0x5d mov r1, #2 mov r3, #6 - bl FUN_0200687C + bl GfGfxLoader_LoadCharData mov r1, #0 str r1, [sp] add r2, r4, #0 @@ -3714,7 +3714,7 @@ MOD81_022399FC: ; 0x022399FC ldr r2, [r2] mov r0, #0x5d mov r3, #2 - bl FUN_020068C8 + bl GfGfxLoader_LoadScrnData mov r1, #0 str r1, [sp] str r1, [sp, #4] @@ -3727,7 +3727,7 @@ MOD81_022399FC: ; 0x022399FC ldr r2, [r2] mov r0, #0x5d mov r3, #6 - bl FUN_020068C8 + bl GfGfxLoader_LoadScrnData ldr r0, [r4] bl MOD81_02238828 add r5, r0, #0 @@ -3739,7 +3739,7 @@ MOD81_022399FC: ; 0x022399FC mov r0, #0x5d mov r1, #3 add r3, r2, #0 - bl FUN_02006930 + bl GfGfxLoader_GXLoadPal mov r0, #0x20 str r0, [sp] mov r0, #0x3a @@ -3748,7 +3748,7 @@ MOD81_022399FC: ; 0x022399FC mov r1, #3 mov r2, #4 mov r3, #0 - bl FUN_02006930 + bl GfGfxLoader_GXLoadPal ldr r0, _02239C90 ; =0x0223D07C lsl r1, r5, #1 ldrh r5, [r0, r1] @@ -3762,7 +3762,7 @@ MOD81_022399FC: ; 0x022399FC mov r1, #3 mov r2, #0 add r3, r5, #0 - bl FUN_02006948 + bl GfGfxLoader_GXLoadPalWithSrcOffset mov r0, #0x20 str r0, [sp] mov r0, #0x40 @@ -3773,7 +3773,7 @@ MOD81_022399FC: ; 0x022399FC mov r1, #3 mov r2, #4 add r3, r5, #0 - bl FUN_02006948 + bl GfGfxLoader_GXLoadPalWithSrcOffset mov r0, #0 str r0, [sp] str r0, [sp, #4] @@ -3787,7 +3787,7 @@ MOD81_022399FC: ; 0x022399FC mov r0, #0x5d mov r1, #5 mov r3, #3 - bl FUN_0200687C + bl GfGfxLoader_LoadCharData mov r0, #0 str r0, [sp] str r0, [sp, #4] @@ -3801,7 +3801,7 @@ MOD81_022399FC: ; 0x022399FC mov r0, #0x5d mov r1, #5 mov r3, #7 - bl FUN_0200687C + bl GfGfxLoader_LoadCharData mov r0, #0 str r0, [sp] str r0, [sp, #4] @@ -3815,7 +3815,7 @@ MOD81_022399FC: ; 0x022399FC mov r0, #0x5d mov r1, #4 mov r3, #3 - bl FUN_020068C8 + bl GfGfxLoader_LoadScrnData mov r0, #0 str r0, [sp] str r0, [sp, #4] @@ -3829,7 +3829,7 @@ MOD81_022399FC: ; 0x022399FC mov r0, #0x5d mov r1, #4 mov r3, #7 - bl FUN_020068C8 + bl GfGfxLoader_LoadScrnData mov r0, #0x3a mov r1, #0x60 bl AllocFromHeap @@ -3962,7 +3962,7 @@ MOD81_02239CDC: ; 0x02239CDC push {r4, lr} sub sp, #0x10 add r4, r0, #0 - bl FUN_020BB7F4 + bl NNS_G3dInit bl G3X_InitMtxStack ldr r0, _02239DBC ; =0x04000060 ldr r1, _02239DC0 ; =0xFFFFCFFD @@ -4006,11 +4006,11 @@ MOD81_02239CDC: ; 0x02239CDC str r0, [r1, #0x40] mov r0, #1 add r1, r0, #0 - bl FUN_020AEB70 + bl NNS_GfdInitFrmTexVramManager mov r0, #1 lsl r0, r0, #0xe mov r1, #1 - bl FUN_020AEDF4 + bl NNS_GfdInitFrmPlttVramManager mov r0, #1 add r1, r0, #0 bl GX_EngineAToggleLayers @@ -4099,9 +4099,9 @@ MOD81_02239E00: ; 0x02239E00 mov r3, #0xc bl MOD81_0223874C add r0, sp, #0x60 - bl FUN_020B19DC + bl NNS_G2dInitImagePaletteProxy add r0, sp, #0x3c - bl FUN_020B1A24 + bl NNS_G2dInitImageProxy mov r3, #0 str r3, [sp] mov r2, #1 @@ -4113,7 +4113,7 @@ MOD81_02239E00: ; 0x02239E00 str r0, [sp, #0x10] mov r0, #0x5d mov r1, #0xd - bl FUN_02006AE4 + bl GfGfxLoader_LoadImageMapping mov r3, #0 str r3, [sp] mov r0, #2 @@ -4126,7 +4126,7 @@ MOD81_02239E00: ; 0x02239E00 mov r0, #0x5d mov r1, #0xd mov r2, #1 - bl FUN_02006AE4 + bl GfGfxLoader_LoadImageMapping mov r0, #0x3a str r0, [sp] add r0, sp, #0x60 @@ -4135,7 +4135,7 @@ MOD81_02239E00: ; 0x02239E00 mov r1, #0xe mov r2, #1 mov r3, #0 - bl FUN_02006A8C + bl GfGfxLoader_PartiallyLoadPalette mov r0, #0x3a str r0, [sp] add r0, sp, #0x60 @@ -4144,7 +4144,7 @@ MOD81_02239E00: ; 0x02239E00 mov r1, #0xe mov r2, #2 mov r3, #0 - bl FUN_02006A8C + bl GfGfxLoader_PartiallyLoadPalette mov r0, #1 add r1, r7, #0 str r0, [sp] @@ -5775,7 +5775,7 @@ _0223AAE8: mov r0, #0x5d add r1, r7, #0 mov r3, #3 - bl FUN_0200687C + bl GfGfxLoader_LoadCharData mov r0, #0 str r0, [sp] str r0, [sp, #4] @@ -5787,7 +5787,7 @@ _0223AAE8: mov r0, #0x5d add r1, r7, #0 mov r3, #7 - bl FUN_0200687C + bl GfGfxLoader_LoadCharData mov r0, #0 str r0, [sp] str r0, [sp, #4] @@ -5799,7 +5799,7 @@ _0223AAE8: ldr r2, [r4, #0x24] mov r0, #0x5d mov r3, #3 - bl FUN_020068C8 + bl GfGfxLoader_LoadScrnData mov r0, #0 str r0, [sp] str r0, [sp, #4] @@ -5811,7 +5811,7 @@ _0223AAE8: ldr r2, [r4, #0x24] mov r0, #0x5d mov r3, #7 - bl FUN_020068C8 + bl GfGfxLoader_LoadScrnData mov r2, #0 str r2, [sp] mov r0, #0x20 @@ -5821,7 +5821,7 @@ _0223AAE8: mov r0, #0x5d add r1, r6, #0 add r3, r5, #0 - bl FUN_02006948 + bl GfGfxLoader_GXLoadPalWithSrcOffset mov r0, #0 str r0, [sp] mov r0, #0x20 @@ -5832,7 +5832,7 @@ _0223AAE8: add r1, r6, #0 mov r2, #4 add r3, r5, #0 - bl FUN_02006948 + bl GfGfxLoader_GXLoadPalWithSrcOffset mov r1, #3 add r3, r1, #0 ldr r0, [r4, #0x24] @@ -5879,7 +5879,7 @@ MOD81_0223ABD8: ; 0x0223ABD8 push {r3, r4, lr} sub sp, #0x24 add r4, r0, #0 - bl FUN_020BB7F4 + bl NNS_G3dInit bl G3X_InitMtxStack ldr r0, _0223ACAC ; =0x04000060 ldr r1, _0223ACB0 ; =0xFFFFCFFD @@ -5923,11 +5923,11 @@ MOD81_0223ABD8: ; 0x0223ABD8 str r0, [r1, #0x40] mov r0, #1 add r1, r0, #0 - bl FUN_020AEB70 + bl NNS_GfdInitFrmTexVramManager mov r0, #1 lsl r0, r0, #0xe mov r1, #1 - bl FUN_020AEDF4 + bl NNS_GfdInitFrmPlttVramManager mov r0, #1 add r1, r0, #0 bl GX_EngineAToggleLayers @@ -6006,9 +6006,9 @@ MOD81_0223ACE8: ; 0x0223ACE8 mov r3, #8 bl MOD81_0223874C add r0, sp, #0x5c - bl FUN_020B19DC + bl NNS_G2dInitImagePaletteProxy add r0, sp, #0x38 - bl FUN_020B1A24 + bl NNS_G2dInitImageProxy mov r3, #0 str r3, [sp] mov r2, #1 @@ -6020,7 +6020,7 @@ MOD81_0223ACE8: ; 0x0223ACE8 str r0, [sp, #0x10] mov r0, #0x5d mov r1, #9 - bl FUN_02006AE4 + bl GfGfxLoader_LoadImageMapping mov r0, #0x3a str r0, [sp] add r0, sp, #0x5c @@ -6029,7 +6029,7 @@ MOD81_0223ACE8: ; 0x0223ACE8 mov r1, #0xa mov r2, #1 mov r3, #0 - bl FUN_02006A8C + bl GfGfxLoader_PartiallyLoadPalette mov r0, #0 add r1, r4, #0 str r0, [sp] @@ -6769,7 +6769,7 @@ MOD81_0223B264: ; 0x0223B264 mov r0, #0x5d mov r1, #0x13 mov r3, #3 - bl FUN_0200687C + bl GfGfxLoader_LoadCharData mov r0, #0 str r0, [sp] str r0, [sp, #4] @@ -6781,7 +6781,7 @@ MOD81_0223B264: ; 0x0223B264 mov r0, #0x5d mov r1, #0x13 mov r3, #7 - bl FUN_0200687C + bl GfGfxLoader_LoadCharData mov r0, #0 str r0, [sp] str r0, [sp, #4] @@ -6793,7 +6793,7 @@ MOD81_0223B264: ; 0x0223B264 mov r0, #0x5d mov r1, #0x12 mov r3, #3 - bl FUN_020068C8 + bl GfGfxLoader_LoadScrnData mov r0, #0 str r0, [sp] str r0, [sp, #4] @@ -6805,7 +6805,7 @@ MOD81_0223B264: ; 0x0223B264 mov r0, #0x5d mov r1, #0x12 mov r3, #7 - bl FUN_020068C8 + bl GfGfxLoader_LoadScrnData mov r0, #0x20 str r0, [sp] mov r0, #0x3a @@ -6814,7 +6814,7 @@ MOD81_0223B264: ; 0x0223B264 mov r0, #0x5d mov r1, #0x14 add r3, r2, #0 - bl FUN_02006930 + bl GfGfxLoader_GXLoadPal mov r0, #0x20 str r0, [sp] mov r0, #0x3a @@ -6823,7 +6823,7 @@ MOD81_0223B264: ; 0x0223B264 mov r1, #0x14 mov r2, #4 mov r3, #0 - bl FUN_02006930 + bl GfGfxLoader_GXLoadPal mov r0, #0xc8 str r0, [sp] mov r1, #1 @@ -7284,7 +7284,7 @@ _0223B6F0: mov r0, #0x5d add r1, r7, #0 mov r3, #3 - bl FUN_0200687C + bl GfGfxLoader_LoadCharData mov r0, #0 str r0, [sp] str r0, [sp, #4] @@ -7296,7 +7296,7 @@ _0223B6F0: mov r0, #0x5d add r1, r7, #0 mov r3, #7 - bl FUN_0200687C + bl GfGfxLoader_LoadCharData mov r0, #0 str r0, [sp] str r0, [sp, #4] @@ -7308,7 +7308,7 @@ _0223B6F0: ldr r2, [r4, #0x24] mov r0, #0x5d mov r3, #3 - bl FUN_020068C8 + bl GfGfxLoader_LoadScrnData mov r0, #0 str r0, [sp] str r0, [sp, #4] @@ -7320,7 +7320,7 @@ _0223B6F0: ldr r2, [r4, #0x24] mov r0, #0x5d mov r3, #7 - bl FUN_020068C8 + bl GfGfxLoader_LoadScrnData mov r2, #0 str r2, [sp] mov r0, #0x20 @@ -7330,7 +7330,7 @@ _0223B6F0: mov r0, #0x5d add r1, r6, #0 add r3, r5, #0 - bl FUN_02006948 + bl GfGfxLoader_GXLoadPalWithSrcOffset mov r0, #0 str r0, [sp] mov r0, #0x20 @@ -7341,7 +7341,7 @@ _0223B6F0: add r1, r6, #0 mov r2, #4 add r3, r5, #0 - bl FUN_02006948 + bl GfGfxLoader_GXLoadPalWithSrcOffset mov r1, #3 ldr r0, [r4, #0x24] add r2, r1, #0 @@ -7391,7 +7391,7 @@ MOD81_0223B7E8: ; 0x0223B7E8 push {r3, r4, lr} sub sp, #0x24 add r4, r0, #0 - bl FUN_020BB7F4 + bl NNS_G3dInit bl G3X_InitMtxStack ldr r0, _0223B8C8 ; =0x04000060 ldr r1, _0223B8CC ; =0xFFFFCFFD @@ -7435,11 +7435,11 @@ MOD81_0223B7E8: ; 0x0223B7E8 str r0, [r1, #0x40] mov r0, #1 add r1, r0, #0 - bl FUN_020AEB70 + bl NNS_GfdInitFrmTexVramManager mov r0, #1 lsl r0, r0, #0xe mov r1, #1 - bl FUN_020AEDF4 + bl NNS_GfdInitFrmPlttVramManager mov r0, #1 add r1, r0, #0 bl GX_EngineAToggleLayers @@ -7525,9 +7525,9 @@ MOD81_0223B908: ; 0x0223B908 mov r3, #8 bl MOD81_0223874C add r0, sp, #0x5c - bl FUN_020B19DC + bl NNS_G2dInitImagePaletteProxy add r0, sp, #0x38 - bl FUN_020B1A24 + bl NNS_G2dInitImageProxy mov r3, #0 str r3, [sp] mov r2, #1 @@ -7539,7 +7539,7 @@ MOD81_0223B908: ; 0x0223B908 str r0, [sp, #0x10] mov r0, #0x5d mov r1, #9 - bl FUN_02006AE4 + bl GfGfxLoader_LoadImageMapping mov r0, #0x3a str r0, [sp] add r0, sp, #0x5c @@ -7548,7 +7548,7 @@ MOD81_0223B908: ; 0x0223B908 mov r1, #0xa mov r2, #1 mov r3, #0 - bl FUN_02006A8C + bl GfGfxLoader_PartiallyLoadPalette mov r0, #1 add r1, r4, #0 str r0, [sp] @@ -8417,7 +8417,7 @@ MOD81_0223BF74: ; 0x0223BF74 ldr r2, [r4, #0xc] mov r0, #0x5d add r3, r1, #0 - bl FUN_0200687C + bl GfGfxLoader_LoadCharData mov r0, #0 str r0, [sp] str r0, [sp, #4] @@ -8429,7 +8429,7 @@ MOD81_0223BF74: ; 0x0223BF74 mov r0, #0x5d mov r1, #2 mov r3, #6 - bl FUN_0200687C + bl GfGfxLoader_LoadCharData mov r0, #0 str r0, [sp] str r0, [sp, #4] @@ -8440,7 +8440,7 @@ MOD81_0223BF74: ; 0x0223BF74 ldr r2, [r4, #0xc] mov r0, #0x5d mov r3, #2 - bl FUN_020068C8 + bl GfGfxLoader_LoadScrnData mov r0, #0 str r0, [sp] str r0, [sp, #4] @@ -8451,7 +8451,7 @@ MOD81_0223BF74: ; 0x0223BF74 ldr r2, [r4, #0xc] mov r0, #0x5d mov r3, #6 - bl FUN_020068C8 + bl GfGfxLoader_LoadScrnData ldr r0, [r4] bl MOD81_02238828 add r5, r0, #0 @@ -8463,7 +8463,7 @@ MOD81_0223BF74: ; 0x0223BF74 mov r0, #0x5d mov r1, #3 add r3, r2, #0 - bl FUN_02006930 + bl GfGfxLoader_GXLoadPal mov r0, #0x20 str r0, [sp] mov r0, #0x3a @@ -8472,7 +8472,7 @@ MOD81_0223BF74: ; 0x0223BF74 mov r1, #3 mov r2, #4 mov r3, #0 - bl FUN_02006930 + bl GfGfxLoader_GXLoadPal ldr r0, _0223C1A0 ; =0x0223D280 lsl r1, r5, #1 ldrh r5, [r0, r1] @@ -8486,7 +8486,7 @@ MOD81_0223BF74: ; 0x0223BF74 mov r1, #3 mov r2, #0 add r3, r5, #0 - bl FUN_02006948 + bl GfGfxLoader_GXLoadPalWithSrcOffset mov r0, #0x20 str r0, [sp] mov r0, #0x40 @@ -8497,7 +8497,7 @@ MOD81_0223BF74: ; 0x0223BF74 mov r1, #3 mov r2, #4 add r3, r5, #0 - bl FUN_02006948 + bl GfGfxLoader_GXLoadPalWithSrcOffset mov r0, #0 str r0, [sp] str r0, [sp, #4] @@ -8509,7 +8509,7 @@ MOD81_0223BF74: ; 0x0223BF74 mov r0, #0x5d mov r1, #5 mov r3, #3 - bl FUN_0200687C + bl GfGfxLoader_LoadCharData mov r0, #0 str r0, [sp] str r0, [sp, #4] @@ -8521,7 +8521,7 @@ MOD81_0223BF74: ; 0x0223BF74 mov r0, #0x5d mov r1, #5 mov r3, #7 - bl FUN_0200687C + bl GfGfxLoader_LoadCharData mov r0, #0 str r0, [sp] str r0, [sp, #4] @@ -8533,7 +8533,7 @@ MOD81_0223BF74: ; 0x0223BF74 mov r0, #0x5d mov r1, #4 mov r3, #3 - bl FUN_020068C8 + bl GfGfxLoader_LoadScrnData mov r0, #0 str r0, [sp] str r0, [sp, #4] @@ -8545,7 +8545,7 @@ MOD81_0223BF74: ; 0x0223BF74 mov r0, #0x5d mov r1, #4 mov r3, #7 - bl FUN_020068C8 + bl GfGfxLoader_LoadScrnData mov r0, #0x3a mov r1, #0x60 bl AllocFromHeap @@ -8643,7 +8643,7 @@ MOD81_0223C1DC: ; 0x0223C1DC push {r4, lr} sub sp, #0x10 add r4, r0, #0 - bl FUN_020BB7F4 + bl NNS_G3dInit bl G3X_InitMtxStack ldr r0, _0223C2C0 ; =0x04000060 ldr r1, _0223C2C4 ; =0xFFFFCFFD @@ -8687,11 +8687,11 @@ MOD81_0223C1DC: ; 0x0223C1DC str r0, [r1, #0x40] mov r0, #1 add r1, r0, #0 - bl FUN_020AEB70 + bl NNS_GfdInitFrmTexVramManager mov r0, #1 lsl r0, r0, #0xe mov r1, #1 - bl FUN_020AEDF4 + bl NNS_GfdInitFrmPlttVramManager mov r0, #1 add r1, r0, #0 bl GX_EngineAToggleLayers @@ -9177,9 +9177,9 @@ MOD81_0223C60C: ; 0x0223C60C mov r1, #0 mov r0, #0x11 add r2, r1, #0 - bl FUN_020BB1C0 - bl FUN_020BB394 - bl FUN_020B02C8 + bl NNS_G3dGeBufferOP_N + bl NNS_G3dGeFlushBuffer + bl NNS_G2dSetupSoftwareSpriteCamera ldr r0, [r4, #0x10] bl FUN_020081C4 ldr r0, [r4, #0x10] @@ -9188,7 +9188,7 @@ MOD81_0223C60C: ; 0x0223C60C str r2, [sp] mov r0, #0x12 add r1, sp, #0 - bl FUN_020BB1C0 + bl NNS_G3dGeBufferOP_N ldr r0, [r4, #0x60] cmp r0, #0 beq _0223C64A @@ -9281,7 +9281,7 @@ MOD81_0223C658: ; 0x0223C658 add r0, r4, #0 add r0, #0x48 mov r1, #0xf - bl FUN_02019620 + bl FillWindowPixelBuffer mov r3, #0x20 str r3, [sp] mov r0, #0x3a @@ -9289,7 +9289,7 @@ MOD81_0223C658: ; 0x0223C658 mov r0, #0xe mov r1, #7 mov r2, #0 - bl FUN_02006930 + bl GfGfxLoader_GXLoadPal ldr r0, [r4, #0x44] mov r1, #1 bl FUN_02017CD0 @@ -9304,7 +9304,7 @@ MOD81_0223C658: ; 0x0223C658 mov r0, #0x5d mov r1, #0x16 mov r3, #2 - bl FUN_0200687C + bl GfGfxLoader_LoadCharData mov r0, #0 str r0, [sp] str r0, [sp, #4] @@ -9316,7 +9316,7 @@ MOD81_0223C658: ; 0x0223C658 mov r0, #0x5d mov r1, #0x15 mov r3, #2 - bl FUN_020068C8 + bl GfGfxLoader_LoadScrnData mov r0, #0x20 str r0, [sp] mov r0, #0x3a @@ -9325,7 +9325,7 @@ MOD81_0223C658: ; 0x0223C658 mov r0, #0x5d mov r1, #0x17 add r3, r2, #0 - bl FUN_02006930 + bl GfGfxLoader_GXLoadPal add r0, r4, #0 bl MOD81_0223CAC4 mov r1, #0 @@ -9611,7 +9611,7 @@ _0223C982: add r0, #0x48 bl CopyWindowToVram ldr r0, _0223CA90 ; =0x00000484 - bl PlayBGM + bl PlaySound mov r0, #0 str r0, [r4, #8] mov r0, #1 @@ -9640,7 +9640,7 @@ _0223C9D0: add r0, r4, #0 add r0, #0x48 mov r1, #0xf - bl FUN_02019620 + bl FillWindowPixelBuffer mov r3, #0 str r3, [sp] mov r0, #0xff @@ -9746,7 +9746,7 @@ MOD81_0223CAC4: ; 0x0223CAC4 push {r3, r4, r5, r6, lr} sub sp, #4 add r5, r0, #0 - bl FUN_020BB7F4 + bl NNS_G3dInit bl G3X_InitMtxStack ldr r0, _0223CB6C ; =0x04000060 ldr r2, _0223CB70 ; =0xFFFFCFFD @@ -9782,19 +9782,19 @@ MOD81_0223CAC4: ; 0x0223CAC4 str r0, [r1, #0x40] mov r0, #1 add r1, r0, #0 - bl FUN_020AEB70 + bl NNS_GfdInitFrmTexVramManager mov r0, #1 lsl r0, r0, #0xe mov r1, #1 - bl FUN_020AEDF4 - ldr r3, _0223CB80 ; =UNK_021064B8 + bl NNS_GfdInitFrmPlttVramManager + ldr r3, _0223CB80 ; =NNS_GfdDefaultFuncAllocTexVram mov r0, #1 mov r1, #0 ldr r3, [r3] lsl r0, r0, #0xe add r2, r1, #0 blx r3 - ldr r3, _0223CB84 ; =UNK_021064C0 + ldr r3, _0223CB84 ; =NNS_GfdDefaultFuncAllocPlttVram add r4, r0, #0 ldr r3, [r3] mov r0, #0x80 @@ -9826,8 +9826,8 @@ _0223CB70: .word 0xFFFFCFFD _0223CB74: .word 0x0000CFFB _0223CB78: .word 0x04000540 _0223CB7C: .word 0xBFFF0000 -_0223CB80: .word UNK_021064B8 -_0223CB84: .word UNK_021064C0 +_0223CB80: .word NNS_GfdDefaultFuncAllocTexVram +_0223CB84: .word NNS_GfdDefaultFuncAllocPlttVram _0223CB88: .word 0x7FFF0000 _0223CB8C: .word 0xFFFF0000 thumb_func_end MOD81_0223CAC4 @@ -9881,9 +9881,9 @@ MOD81_0223CBE0: ; 0x0223CBE0 mov r3, #8 bl MOD81_0223874C add r0, sp, #0x5c - bl FUN_020B19DC + bl NNS_G2dInitImagePaletteProxy add r0, sp, #0x38 - bl FUN_020B1A24 + bl NNS_G2dInitImageProxy mov r3, #0 str r3, [sp] mov r2, #1 @@ -9895,7 +9895,7 @@ MOD81_0223CBE0: ; 0x0223CBE0 str r0, [sp, #0x10] mov r0, #0x5d mov r1, #9 - bl FUN_02006AE4 + bl GfGfxLoader_LoadImageMapping mov r0, #0x3a str r0, [sp] add r0, sp, #0x5c @@ -9904,7 +9904,7 @@ MOD81_0223CBE0: ; 0x0223CBE0 mov r1, #0xa mov r2, #1 mov r3, #0 - bl FUN_02006A8C + bl GfGfxLoader_PartiallyLoadPalette mov r0, #2 add r1, r4, #0 str r0, [sp] diff --git a/arm9/modules/82/asm/module_82.s b/arm9/modules/82/asm/module_82.s index b9d0df31..f1a3e494 100644 --- a/arm9/modules/82/asm/module_82.s +++ b/arm9/modules/82/asm/module_82.s @@ -715,7 +715,7 @@ _0222DA48: mov r1, #2 lsl r1, r1, #0x10 mov r2, #0 - bl tempName_NNS_FndCreateExpHeapEx + bl NNS_FndCreateExpHeapEx str r0, [r4, #0x28] mov r0, #1 str r0, [r5] @@ -984,7 +984,7 @@ MOD82_0222DD54: ; 0x0222DD54 push {r4, r5, r6, r7, lr} sub sp, #0x14 add r6, r0, #0 - bl FUN_020B0FC0 + bl NNS_G2dInitOamManagerModule mov r0, #0 str r0, [sp] mov r1, #0x7e @@ -1256,7 +1256,7 @@ MOD82_0222DF74: ; 0x0222DF74 add r1, r5, #0 ldr r0, [r0, #4] add r2, r4, #0 - bl tempName_NNS_FndAllocFromExpHeapEx + bl NNS_FndAllocFromExpHeapEx add r4, r0, #0 add r0, r6, #0 bl OS_RestoreInterrupts @@ -1276,7 +1276,7 @@ MOD82_0222DF9C: ; 0x0222DF9C ldr r0, _0222DFBC ; =0x0222FC0C add r1, r5, #0 ldr r0, [r0, #4] - bl FUN_020ADDF0 + bl NNS_FndFreeToExpHeap add r0, r4, #0 bl OS_RestoreInterrupts _0222DFB8: @@ -1617,7 +1617,7 @@ MOD82_0222E264: ; 0x0222E264 mov r0, #0x5c mov r1, #3 add r3, r2, #0 - bl FUN_02006930 + bl GfGfxLoader_GXLoadPal mov r3, #0 str r3, [sp] mov r0, #0x44 @@ -1625,7 +1625,7 @@ MOD82_0222E264: ; 0x0222E264 mov r0, #0x5c mov r1, #3 mov r2, #4 - bl FUN_02006930 + bl GfGfxLoader_GXLoadPal mov r1, #0x1a mov r0, #0 lsl r1, r1, #4 @@ -1669,7 +1669,7 @@ MOD82_0222E264: ; 0x0222E264 mov r1, #2 add r2, r4, #0 mov r3, #1 - bl FUN_0200687C + bl GfGfxLoader_LoadCharData mov r1, #0 mov r0, #6 str r1, [sp] @@ -1682,7 +1682,7 @@ MOD82_0222E264: ; 0x0222E264 mov r1, #4 add r2, r4, #0 mov r3, #1 - bl FUN_020068C8 + bl GfGfxLoader_LoadScrnData mov r1, #0 mov r0, #0x36 str r1, [sp] @@ -1695,7 +1695,7 @@ MOD82_0222E264: ; 0x0222E264 mov r1, #9 add r2, r4, #0 mov r3, #5 - bl FUN_0200687C + bl GfGfxLoader_LoadCharData mov r1, #0 mov r0, #6 str r1, [sp] @@ -1708,7 +1708,7 @@ MOD82_0222E264: ; 0x0222E264 mov r1, #0xa add r2, r4, #0 mov r3, #5 - bl FUN_020068C8 + bl GfGfxLoader_LoadScrnData mov r0, #0 add r1, r0, #0 bl FUN_02017FE4 @@ -1744,7 +1744,7 @@ MOD82_0222E35C: ; 0x0222E35C lsl r0, r0, #6 add r0, r4, r0 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer mov r0, #0xe str r0, [sp] mov r0, #4 @@ -1766,7 +1766,7 @@ MOD82_0222E35C: ; 0x0222E35C lsl r0, r0, #4 add r0, r4, r0 mov r1, #0xf - bl FUN_02019620 + bl FillWindowPixelBuffer mov r0, #0xe str r0, [sp] mov r0, #4 @@ -1788,7 +1788,7 @@ MOD82_0222E35C: ; 0x0222E35C lsl r0, r0, #4 add r0, r4, r0 mov r1, #0xf - bl FUN_02019620 + bl FillWindowPixelBuffer mov r2, #1 mov r1, #0xdb lsl r1, r1, #4 @@ -1810,7 +1810,7 @@ MOD82_0222E35C: ; 0x0222E35C lsl r0, r0, #4 add r0, r4, r0 mov r1, #6 - bl FUN_02019620 + bl FillWindowPixelBuffer mov r3, #1 ldr r0, _0222E46C ; =0x00010406 str r3, [sp] @@ -1842,7 +1842,7 @@ MOD82_0222E35C: ; 0x0222E35C lsl r0, r0, #6 add r0, r4, r0 mov r1, #0xf - bl FUN_02019620 + bl FillWindowPixelBuffer add sp, #0x14 pop {r3, r4, pc} nop @@ -4037,7 +4037,7 @@ MOD82_0222F4D8: ; 0x0222F4D8 lsl r0, r0, #6 add r0, r5, r0 mov r1, #0xf - bl FUN_02019620 + bl FillWindowPixelBuffer mov r0, #0x36 lsl r0, r0, #6 add r0, r5, r0 @@ -4132,7 +4132,7 @@ MOD82_0222F59C: ; 0x0222F59C lsl r0, r0, #6 add r0, r5, r0 mov r1, #0xf - bl FUN_02019620 + bl FillWindowPixelBuffer mov r0, #0x36 lsl r0, r0, #6 add r0, r5, r0 @@ -4258,7 +4258,7 @@ MOD82_0222F694: ; 0x0222F694 add r5, r0, #0 add r6, r2, #0 add r7, r3, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer mov r0, #1 str r0, [sp] add r0, r4, #0 @@ -4375,7 +4375,7 @@ MOD82_0222F740: ; 0x0222F740 lsl r0, r0, #6 add r0, r5, r0 mov r1, #0xf - bl FUN_02019620 + bl FillWindowPixelBuffer mov r0, #0x37 lsl r0, r0, #6 add r0, r5, r0 diff --git a/arm9/modules/83/asm/module_83.s b/arm9/modules/83/asm/module_83.s index 7e36aa68..09c161b4 100644 --- a/arm9/modules/83/asm/module_83.s +++ b/arm9/modules/83/asm/module_83.s @@ -434,10 +434,10 @@ _0222D8B2: bl FUN_0201AB18 add r7, r0, #0 ldr r0, [sp, #0x1c] - bl FUN_0201AB0C + bl GetWindowWidth add r5, r0, #0 ldr r0, [sp, #0x1c] - bl FUN_0201AB10 + bl GetWindowHeight str r5, [sp] str r0, [sp, #4] mov r0, #0 @@ -792,7 +792,7 @@ MOD83_0222DBD0: ; 0x0222DBD0 mov r1, #0x29 mov r2, #0 mov r3, #0x80 - bl FUN_02006930 + bl GfGfxLoader_GXLoadPal mov r0, #0xe lsl r0, r0, #6 str r0, [sp] @@ -807,7 +807,7 @@ MOD83_0222DBD0: ; 0x0222DBD0 mov r0, #0x74 mov r1, #0x28 mov r3, #2 - bl FUN_0200687C + bl GfGfxLoader_LoadCharData add sp, #0x10 pop {r4, pc} .align 2, 0 @@ -901,14 +901,14 @@ MOD83_0222DCA0: ; 0x0222DCA0 add r5, r0, #0 mov r0, #0 mov r1, #2 - bl FUN_02002E4C + bl GetFontAttribute add r2, r0, #0 mov r0, #0 add r1, r5, #0 bl FUN_02002E14 add r4, r0, #0 add r0, r6, #0 - bl FUN_0201AB0C + bl GetWindowWidth lsl r0, r0, #3 add r4, #0x20 sub r3, r0, r4 @@ -1601,10 +1601,10 @@ _0222E206: bl FUN_0201AB18 str r0, [sp, #0x14] add r0, r5, #0 - bl FUN_0201AB0C + bl GetWindowWidth add r7, r0, #0 add r0, r5, #0 - bl FUN_0201AB10 + bl GetWindowHeight str r7, [sp] str r0, [sp, #4] mov r0, #0 @@ -1628,10 +1628,10 @@ _0222E256: bl FUN_0201AB18 str r0, [sp, #0x1c] add r0, r5, #0 - bl FUN_0201AB0C + bl GetWindowWidth add r7, r0, #0 add r0, r5, #0 - bl FUN_0201AB10 + bl GetWindowHeight str r7, [sp] str r0, [sp, #4] mov r0, #1 @@ -1707,7 +1707,7 @@ MOD83_0222E2E4: ; 0x0222E2E4 add r1, #0x5c lsl r0, r0, #4 add r0, r1, r0 - bl FUN_0201AB10 + bl GetWindowHeight add r0, r0, #2 lsl r3, r0, #3 mov r0, #0x42 @@ -1769,7 +1769,7 @@ _0222E362: sub r0, r0, #1 lsl r4, r0, #3 add r0, r5, #0 - bl FUN_0201AB10 + bl GetWindowHeight cmp r7, r4 ble _0222E384 mov r0, #1 @@ -2581,7 +2581,7 @@ _0222E960: add r3, r0, #0 add r2, r1, #0 add r3, #0x8c - bl FUN_02006930 + bl GfGfxLoader_GXLoadPal mov r0, #0 str r0, [sp] mov r0, #5 @@ -2594,7 +2594,7 @@ _0222E960: str r0, [sp, #0xc] ldr r2, [r4, #4] mov r0, #0x74 - bl FUN_0200687C + bl GfGfxLoader_LoadCharData mov r0, #0 str r0, [sp] mov r0, #6 @@ -2607,7 +2607,7 @@ _0222E960: str r0, [sp, #0xc] ldr r2, [r4, #4] mov r0, #0x74 - bl FUN_020068C8 + bl GfGfxLoader_LoadScrnData mov r0, #0x20 str r0, [sp] mov r0, #0x18 @@ -2645,7 +2645,7 @@ MOD83_0222EA88: ; 0x0222EA88 mov r0, #0x74 mov r1, #0 add r3, #0xfc - bl FUN_02006930 + bl GfGfxLoader_GXLoadPal mov r0, #0 str r0, [sp] mov r0, #5 @@ -2658,7 +2658,7 @@ MOD83_0222EA88: ; 0x0222EA88 str r0, [sp, #0xc] ldr r2, [r4, #4] mov r0, #0x74 - bl FUN_0200687C + bl GfGfxLoader_LoadCharData mov r0, #0 str r0, [sp] mov r0, #6 @@ -2672,7 +2672,7 @@ MOD83_0222EA88: ; 0x0222EA88 ldr r2, [r4, #4] mov r0, #0x74 mov r3, #4 - bl FUN_020068C8 + bl GfGfxLoader_LoadScrnData mov r0, #0x20 str r0, [sp] mov r0, #0x18 @@ -2926,7 +2926,7 @@ MOD83_0222EC78: ; 0x0222EC78 add r1, #0xf8 str r0, [r1] mov r1, #1 - bl FUN_02002E4C + bl GetFontAttribute add r2, r0, #0 add r0, r5, #0 add r0, #0xf0 @@ -4538,7 +4538,7 @@ MOD83_0222F9DC: ; 0x0222F9DC ldr r1, _0222F9F4 ; =MOD83_0223B884 mov r0, #0xf ldr r1, [r1] - bl FUN_02016A8C + bl FreeToHeapExplicit ldr r0, _0222F9F4 ; =MOD83_0223B884 mov r1, #0 str r1, [r0] @@ -4609,14 +4609,14 @@ MOD83_0222FA4C: ; 0x0222FA4C ldr r0, [r7, #0x7c] cmp r0, #0 beq _0222FA62 - bl ListMenu_dtor + bl ListMenuItems_dtor _0222FA62: ldr r0, [r7, #0x78] cmp r0, #0 beq _0222FA70 mov r1, #0 add r2, r1, #0 - bl FUN_02001300 + bl DestroyListMenu _0222FA70: add r0, r7, #0 add r0, #0x18 @@ -5690,7 +5690,7 @@ MOD83_022302B4: ; 0x022302B4 mov r0, #0x74 mov r1, #0 add r3, #0xfc - bl FUN_02006930 + bl GfGfxLoader_GXLoadPal mov r0, #0 str r0, [sp] mov r0, #5 @@ -5703,7 +5703,7 @@ MOD83_022302B4: ; 0x022302B4 mov r0, #0x74 add r2, r4, #0 mov r3, #5 - bl FUN_0200687C + bl GfGfxLoader_LoadCharData mov r0, #0 str r0, [sp] mov r0, #6 @@ -5717,7 +5717,7 @@ MOD83_022302B4: ; 0x022302B4 mov r1, #2 add r2, r4, #0 mov r3, #5 - bl FUN_020068C8 + bl GfGfxLoader_LoadScrnData mov r0, #0x20 str r0, [sp] mov r0, #0x18 @@ -5751,7 +5751,7 @@ MOD83_02230330: ; 0x02230330 add r3, r0, #0 add r2, r1, #0 add r3, #0x8c - bl FUN_02006930 + bl GfGfxLoader_GXLoadPal mov r0, #0 str r0, [sp] mov r0, #5 @@ -5764,7 +5764,7 @@ MOD83_02230330: ; 0x02230330 mov r0, #0x74 add r2, r4, #0 add r3, r1, #0 - bl FUN_0200687C + bl GfGfxLoader_LoadCharData mov r0, #0 str r0, [sp] mov r0, #6 @@ -5777,7 +5777,7 @@ MOD83_02230330: ; 0x02230330 mov r0, #0x74 mov r1, #2 add r2, r4, #0 - bl FUN_020068C8 + bl GfGfxLoader_LoadScrnData mov r0, #0x20 str r0, [sp] mov r0, #0x18 @@ -5812,11 +5812,11 @@ MOD83_022303B0: ; 0x022303B0 ldr r0, [r4, #0x7c] cmp r0, #0 beq _022303CC - bl ListMenu_dtor + bl ListMenuItems_dtor _022303CC: add r0, r7, #0 mov r1, #0x56 - bl ListMenu_ctor + bl ListMenuItems_ctor str r0, [r4, #0x7c] ldr r2, _0223045C ; =0x00000172 mov r0, #0 @@ -5832,7 +5832,7 @@ _022303EA: ldr r1, [r4, #0x10] ldr r2, [r5] ldr r3, [r5, #4] - bl ListMenu_ItemFromMsgData + bl ListMenuItems_AppendFromMsgData add r6, r6, #1 add r5, #8 cmp r6, r7 @@ -5863,13 +5863,13 @@ _022303FE: beq _02230436 mov r1, #0 add r2, r1, #0 - bl FUN_02001300 + bl DestroyListMenu _02230436: mov r1, #0 add r0, sp, #8 add r2, r1, #0 mov r3, #0x56 - bl FUN_020010A8 + bl ListMenuInit str r0, [r4, #0x78] mov r0, #0 ldr r2, [sp, #0x40] @@ -5990,10 +5990,10 @@ MOD83_0223050C: ; 0x0223050C str r0, [r4, #0xc] mov r0, #1 mov r1, #6 - bl FUN_02002E4C + bl GetFontAttribute add r1, r0, #0 add r0, r5, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r6, [r4, #0x14] cmp r6, #0 bne _02230554 @@ -6056,10 +6056,10 @@ MOD83_022305A4: ; 0x022305A4 bl CopyU16ArrayToStringN mov r0, #0 mov r1, #6 - bl FUN_02002E4C + bl GetFontAttribute add r1, r0, #0 add r0, r5, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer mov r1, #0 str r1, [sp] mov r0, #0xff @@ -6092,7 +6092,7 @@ MOD83_02230604: ; 0x02230604 add r6, r2, #0 bl OverlayManager_GetData ldr r0, [r0, #0x78] - bl FUN_02001204 + bl ListMenu_ProcessInput add r4, r0, #0 mov r0, #1 mvn r0, r0 @@ -8142,7 +8142,7 @@ MOD83_022316F0: ; 0x022316F0 str r3, [sp] cmp r0, #0 beq _02231708 - bl ListMenu_dtor + bl ListMenuItems_dtor _02231708: ldr r0, _02231798 ; =0x00002B68 ldr r0, [r5, r0] @@ -8150,11 +8150,11 @@ _02231708: beq _02231718 mov r1, #0 add r2, r1, #0 - bl FUN_02001300 + bl DestroyListMenu _02231718: add r0, r7, #0 mov r1, #0x57 - bl ListMenu_ctor + bl ListMenuItems_ctor ldr r1, _02231794 ; =0x00002B6C ldr r2, _0223179C ; =0x00000172 str r0, [r5, r1] @@ -8174,7 +8174,7 @@ _0223173A: ldr r1, [r5, r1] ldr r2, [r4] ldr r3, [r4, #4] - bl ListMenu_ItemFromMsgData + bl ListMenuItems_AppendFromMsgData add r6, r6, #1 add r4, #8 cmp r6, r7 @@ -8205,7 +8205,7 @@ _02231752: str r0, [sp, #0x10] add r0, r2, #0 add r2, r1, #0 - bl FUN_020010A8 + bl ListMenuInit ldr r1, _02231798 ; =0x00002B68 str r0, [r5, r1] add sp, #0x24 @@ -8235,10 +8235,10 @@ MOD83_022317A8: ; 0x022317A8 add r6, r0, #0 mov r0, #1 mov r1, #6 - bl FUN_02002E4C + bl GetFontAttribute add r1, r0, #0 add r0, r5, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer add r0, r6, #0 add r1, r4, #0 add r2, r7, #0 @@ -8285,7 +8285,7 @@ MOD83_02231820: ; 0x02231820 mov r1, #0xb mov r2, #0 lsl r3, r3, #4 - bl FUN_02006930 + bl GfGfxLoader_GXLoadPal mov r0, #0x20 str r0, [sp] mov r0, #0x57 @@ -8295,7 +8295,7 @@ MOD83_02231820: ; 0x02231820 mov r1, #0x10 mov r2, #0 lsl r3, r3, #6 - bl FUN_02006930 + bl GfGfxLoader_GXLoadPal mov r0, #0 str r0, [sp] mov r0, #3 @@ -8308,7 +8308,7 @@ MOD83_02231820: ; 0x02231820 mov r0, #0x74 mov r1, #0x11 add r2, r4, #0 - bl FUN_0200687C + bl GfGfxLoader_LoadCharData mov r0, #0 str r0, [sp] mov r0, #6 @@ -8321,7 +8321,7 @@ MOD83_02231820: ; 0x02231820 mov r0, #0x74 mov r1, #0x12 add r2, r4, #0 - bl FUN_020068C8 + bl GfGfxLoader_LoadScrnData mov r0, #0x20 str r0, [sp] mov r0, #0x18 @@ -8503,14 +8503,14 @@ MOD83_02231A00: ; 0x02231A00 add r4, r0, #0 ldr r0, _02231A40 ; =0x00002B6C ldr r0, [r4, r0] - bl ListMenu_dtor + bl ListMenuItems_dtor mov r1, #0 ldr r0, _02231A40 ; =0x00002B6C add r2, r1, #0 str r1, [r4, r0] sub r0, r0, #4 ldr r0, [r4, r0] - bl FUN_02001300 + bl DestroyListMenu ldr r0, _02231A44 ; =0x00002B68 mov r1, #0 str r1, [r4, r0] @@ -9122,10 +9122,10 @@ _02231EBE: lsl r1, r1, #0x18 lsr r0, r0, #0x18 lsr r1, r1, #0x18 - bl FUN_02002E4C + bl GetFontAttribute add r1, r0, #0 add r0, r6, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, [r4, #0x18] ldr r3, [r4, #0x24] str r0, [sp, #0x28] @@ -9249,7 +9249,7 @@ _02231FD2: add r0, r6, #0 lsl r1, r1, #0x18 lsr r1, r1, #0x18 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, [r4, #0x20] cmp r0, #0 beq _02231FFE @@ -9382,10 +9382,10 @@ MOD83_022320D8: ; 0x022320D8 add r6, r3, #0 ldr r3, [r5] mov r0, #0x74 - bl UncompressFromNarc + bl GfGfxLoader_LoadFromNarc add r1, sp, #4 add r7, r0, #0 - bl FUN_020B0180 + bl NNS_G2dGetUnpackedScreenData ldr r0, _02232114 ; =0x0000299C ldr r2, [sp, #4] lsl r1, r4, #0x18 @@ -9417,7 +9417,7 @@ MOD83_02232118: ; 0x02232118 mov r0, #0x74 mov r1, #3 add r3, r2, #0 - bl FUN_02006930 + bl GfGfxLoader_GXLoadPal mov r0, #0 str r0, [sp] mov r0, #3 @@ -9431,7 +9431,7 @@ MOD83_02232118: ; 0x02232118 ldr r2, [r5, r2] mov r0, #0x74 mov r1, #6 - bl FUN_0200687C + bl GfGfxLoader_LoadCharData cmp r4, #0 beq _0223215E cmp r4, #1 @@ -9451,7 +9451,7 @@ _0223215E: ldr r2, [r5, r2] mov r0, #0x74 mov r1, #4 - bl FUN_020068C8 + bl GfGfxLoader_LoadScrnData b _0223219C _0223217E: mov r0, #0 @@ -9467,7 +9467,7 @@ _0223217E: ldr r2, [r5, r2] mov r0, #0x74 mov r1, #5 - bl FUN_020068C8 + bl GfGfxLoader_LoadScrnData _0223219C: mov r0, #0x20 str r0, [sp] @@ -9478,7 +9478,7 @@ _0223219C: add r3, r0, #0 add r2, r1, #0 add r3, #0xec - bl FUN_02006930 + bl GfGfxLoader_GXLoadPal mov r0, #0 str r0, [sp] mov r0, #2 @@ -9492,7 +9492,7 @@ _0223219C: ldr r2, [r5, r2] mov r0, #0x74 mov r3, #3 - bl FUN_0200687C + bl GfGfxLoader_LoadCharData mov r2, #3 add r0, r5, #0 mov r1, #2 @@ -9529,7 +9529,7 @@ MOD83_02232208: ; 0x02232208 bl OverlayManager_GetData ldr r1, _02232270 ; =0x00002B68 ldr r0, [r0, r1] - bl FUN_02001204 + bl ListMenu_ProcessInput add r4, r0, #0 mov r0, #1 mvn r0, r0 @@ -9622,7 +9622,7 @@ _022322A8: str r0, [sp, #4] mov r0, #0x13 mov r3, #0x60 - bl FUN_02006930 + bl GfGfxLoader_GXLoadPal _022322DC: mov r0, #0xb2 mov r6, #0 @@ -9673,7 +9673,7 @@ _02232312: str r0, [sp] mov r0, #0x13 add r3, sp, #0x18 - bl FUN_02006BB0 + bl GfGfxLoader_GetCharData str r0, [sp, #0x14] ldr r0, [sp, #0x18] mov r1, #2 @@ -10694,7 +10694,7 @@ _02232B94: ldr r0, _02232D1C ; =0x00002AA8 mov r1, #0 add r0, r4, r0 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, _02232D1C ; =0x00002AA8 add r0, r4, r0 bl CopyWindowToVram @@ -11088,7 +11088,7 @@ _02232E7E: mov r5, #0 ldr r0, [sp, #0x10] add r1, r5, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer add r0, r5, #0 str r0, [sp, #0x14] cmp r6, #0 @@ -11230,7 +11230,7 @@ MOD83_02232FE4: ; 0x02232FE4 str r0, [r5, r1] add r0, r4, #0 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer mov r3, #1 str r3, [sp] ldr r0, _0223307C ; =0x000029A0 @@ -15511,7 +15511,7 @@ _02234F7A: ldr r0, [r5] lsl r1, r1, #0x18 lsr r1, r1, #0x18 - bl FUN_02019620 + bl FillWindowPixelBuffer _02234F8C: mov r0, #0 ldr r1, [r5, #0x34] @@ -15684,7 +15684,7 @@ MOD83_022350EC: ; 0x022350EC push {r4, r5, r6, r7, lr} sub sp, #0x14 add r6, r0, #0 - bl FUN_020B0FC0 + bl NNS_G2dInitOamManagerModule mov r0, #0 str r0, [sp] mov r1, #0x7e @@ -15800,7 +15800,7 @@ _02235132: str r0, [sp, #4] mov r0, #0x13 add r3, #0xff - bl FUN_02006930 + bl GfGfxLoader_GXLoadPal add sp, #0x14 pop {r4, r5, r6, r7, pc} thumb_func_end MOD83_022350EC @@ -15971,7 +15971,7 @@ MOD83_022352FC: ; 0x022352FC bl ReadWholeNarcMemberByIdPair add r0, r4, #0 add r1, r7, #0 - bl FUN_020B0030 + bl NNS_G2dGetUnpackedBGCharacterData cmp r0, #0 bne _02235330 add r0, r4, #0 @@ -15994,7 +15994,7 @@ MOD83_02235334: ; 0x02235334 bl NARC_ReadWholeMember add r0, r4, #0 add r1, r5, #0 - bl FUN_020B0030 + bl NNS_G2dGetUnpackedBGCharacterData pop {r4, r5, r6, pc} .align 2, 0 thumb_func_end MOD83_02235334 @@ -17545,7 +17545,7 @@ _02235F48: mov r0, #0x74 mov r1, #0x13 add r3, r2, #0 - bl FUN_02006930 + bl GfGfxLoader_GXLoadPal mov r0, #0 str r0, [sp] mov r0, #5 @@ -17559,7 +17559,7 @@ _02235F48: mov r0, #0x74 mov r1, #0x16 mov r3, #2 - bl FUN_0200687C + bl GfGfxLoader_LoadCharData mov r0, #2 mov r1, #0x4e bl FUN_02002C50 @@ -17588,7 +17588,7 @@ MOD83_02235FBC: ; 0x02235FBC mov r0, #0x74 mov r1, #0x14 mov r3, #2 - bl FUN_020068C8 + bl GfGfxLoader_LoadScrnData mov r0, #0x20 str r0, [sp] mov r0, #0x18 @@ -17846,7 +17846,7 @@ _02236148: mov r0, #0x74 mov r1, #0x15 mov r3, #2 - bl FUN_020068C8 + bl GfGfxLoader_LoadScrnData mov r0, #0x20 str r0, [sp] mov r0, #0x18 @@ -18576,7 +18576,7 @@ MOD83_02236804: ; 0x02236804 bl CTRDG_IsPulledOut cmp r0, #1 beq _02236822 - ldr r0, _02236B3C ; =gBacklightTop + 4 + ldr r0, _02236B3C ; =UNK_02016FA4 ldr r0, [r0] cmp r0, #0 beq _02236828 @@ -18966,7 +18966,7 @@ _02236B2E: str r0, [r5] b _02236D90 .align 2, 0 -_02236B3C: .word gBacklightTop + 4 +_02236B3C: .word UNK_02016FA4 _02236B40: .word 0x000004A8 _02236B44: .word 0x000004AC _02236B48: .word 0x0000E880 @@ -23084,7 +23084,7 @@ MOD83_0223894C: ; 0x0223894C add r1, #0x48 ldrb r1, [r1] ldr r0, [r5, #0x10] - bl FUN_02019620 + bl FillWindowPixelBuffer _02238976: mov r0, #0 ldr r1, [r5, #0x4c] @@ -23133,14 +23133,14 @@ _022389D0: mov r1, #2 lsl r0, r0, #0x18 lsr r0, r0, #0x18 - bl FUN_02002E4C + bl GetFontAttribute add r2, r0, #0 ldr r0, [r5, #0x40] add r1, r4, #0 bl FUN_02002E14 add r7, r0, #0 ldr r0, [r5, #0x10] - bl FUN_0201AB0C + bl GetWindowWidth lsl r0, r0, #3 sub r3, r0, r7 ldr r0, [r5, #0x24] @@ -23333,7 +23333,7 @@ MOD83_02238B4C: ; 0x02238B4C push {r4, r5, r6, r7, lr} sub sp, #0x14 ldr r6, _02238BB4 ; =MOD83_0223BC30 - bl FUN_020B0FC0 + bl NNS_G2dInitOamManagerModule mov r0, #0 str r0, [sp] mov r1, #0x7e @@ -23956,7 +23956,7 @@ MOD83_02238F94: ; 0x02238F94 str r0, [sp, #4] ldrh r0, [r4] ldrh r1, [r4, #4] - bl FUN_02006930 + bl GfGfxLoader_GXLoadPal add sp, #0x28 pop {r3, r4, r5, r6, r7, pc} .align 2, 0 @@ -24183,7 +24183,7 @@ MOD83_022391CC: ; 0x022391CC mov r0, #0x74 mov r1, #0x1d add r3, #0xfc - bl FUN_02006930 + bl GfGfxLoader_GXLoadPal add sp, #8 pop {r3, pc} .align 2, 0 @@ -24213,17 +24213,17 @@ MOD83_022391EC: ; 0x022391EC str r0, [sp, #0xc] mov r0, #0x74 mov r3, #5 - bl FUN_0200687C + bl GfGfxLoader_LoadCharData mov r2, #1 ldr r3, _022392DC ; =MOD83_0223BC30 str r2, [sp] ldr r3, [r3, #4] mov r0, #0x74 mov r1, #0x1f - bl UncompressFromNarc + bl GfGfxLoader_LoadFromNarc add r1, sp, #0x14 str r0, [sp, #0x10] - bl FUN_020B0180 + bl NNS_G2dGetUnpackedScreenData ldr r2, [sp, #0x14] mov r3, #6 add r0, r5, #0 diff --git a/arm9/modules/84/asm/module_84_thumb1.s b/arm9/modules/84/asm/module_84_thumb1.s index 53dfe036..a5838988 100644 --- a/arm9/modules/84/asm/module_84_thumb1.s +++ b/arm9/modules/84/asm/module_84_thumb1.s @@ -55,7 +55,7 @@ _021D7516: str r0, [r4, #0x18] mov r0, #0 str r0, [r4, #0x1c] - bl FUN_020B0FC0 + bl NNS_G2dInitOamManagerModule mov r0, #0 str r0, [sp] mov r1, #0x80 @@ -596,7 +596,7 @@ MOD84_021D7968: ; 0x021D7968 mov r0, #0x7f mov r1, #0x42 add r3, r2, #0 - bl FUN_02006948 + bl GfGfxLoader_GXLoadPalWithSrcOffset mov r3, #0 str r3, [sp] mov r0, #0x20 @@ -606,7 +606,7 @@ MOD84_021D7968: ; 0x021D7968 mov r0, #0x7f mov r1, #0x42 mov r2, #4 - bl FUN_02006948 + bl GfGfxLoader_GXLoadPalWithSrcOffset ldr r2, _021D7A74 ; =0x04000050 mov r0, #0 add r3, r2, #0 @@ -727,7 +727,7 @@ MOD84_021D7AB8: ; 0x021D7AB8 thumb_func_start MOD84_021D7AC8 MOD84_021D7AC8: ; 0x021D7AC8 push {r3, lr} - bl FUN_020BB7F4 + bl NNS_G3dInit bl G3X_InitMtxStack ldr r0, _021D7B3C ; =0x04000060 ldr r2, _021D7B40 ; =0xFFFFCFFD @@ -761,11 +761,11 @@ MOD84_021D7AC8: ; 0x021D7AC8 str r0, [r1, #0x40] mov r0, #1 add r1, r0, #0 - bl FUN_020AEB70 + bl NNS_GfdInitFrmTexVramManager mov r0, #1 lsl r0, r0, #0xe mov r1, #1 - bl FUN_020AEDF4 + bl NNS_GfdInitFrmPlttVramManager mov r0, #1 add r1, r0, #0 bl GX_EngineAToggleLayers @@ -859,7 +859,7 @@ MOD84_021D7BC8: ; 0x021D7BC8 mov r1, #1 mov r3, #0x4b add r4, #0x38 - bl FUN_02006D18 + bl GfGfxLoader_LoadFromNarc_GetSizeOut str r0, [r5, #0x38] ldr r1, [sp, #8] bl DC_FlushRange @@ -899,7 +899,7 @@ MOD84_021D7BC8: ; 0x021D7BC8 add r0, #0x98 strh r1, [r0] ldr r0, [r4] - bl FUN_020BC13C + bl NNS_G3dGetMdlSet str r0, [r4, #0x5c] ldrh r1, [r0, #0xe] add r1, r0, r1 @@ -907,7 +907,7 @@ MOD84_021D7BC8: ; 0x021D7BC8 add r0, r0, r1 str r0, [r4, #0x60] ldr r0, [r4] - bl FUN_020BC0FC + bl NNS_G3dGetTex str r0, [r4, #0x64] bl FUN_0201B3C4 ldr r0, [r4] @@ -916,7 +916,7 @@ MOD84_021D7BC8: ; 0x021D7BC8 add r0, r4, #0 ldr r1, [r4, #0x60] add r0, #8 - bl FUN_020B80B4 + bl NNS_G3dRenderObjInit mov r2, #0 str r2, [sp] add r0, sp, #8 @@ -924,7 +924,7 @@ MOD84_021D7BC8: ; 0x021D7BC8 mov r0, #0x7f mov r1, #3 mov r3, #0x4b - bl FUN_02006D18 + bl GfGfxLoader_LoadFromNarc_GetSizeOut str r0, [r4, #4] cmp r0, #0 beq _021D7CCC @@ -937,22 +937,22 @@ MOD84_021D7BC8: ; 0x021D7BC8 bl FUN_02016B20 ldr r0, [r4, #4] mov r1, #0 - bl FUN_020BC4C8 + bl NNS_G3dGetAnmByIdx add r5, r0, #0 add r0, r4, #0 ldr r2, [r4, #0x60] add r0, #0x6c add r1, r5, #0 - bl FUN_020BB8D0 + bl NNS_G3dAllocAnmObj str r0, [r4, #0x68] ldr r2, [r4, #0x60] ldr r3, [r4, #0x64] add r1, r5, #0 - bl FUN_020B8110 + bl NNS_G3dAnmObjInit add r0, r4, #0 ldr r1, [r4, #0x68] add r0, #8 - bl FUN_020B7EFC + bl NNS_G3dRenderObjAddAnmObj add r0, r4, #0 mov r1, #0 add r0, #0x9c @@ -981,7 +981,7 @@ MOD84_021D7CD4: ; 0x021D7CD4 add r0, r4, #0 ldr r1, [r4, #0x68] add r0, #0x6c - bl thunk_FUN_020ae84c + bl NNS_G3dFreeAnmObj ldr r0, [r4, #4] bl FreeToHeap _021D7CF0: @@ -1002,7 +1002,7 @@ MOD84_021D7CFC: ; 0x021D7CFC mov r1, #0 mov r0, #0x11 add r2, r1, #0 - bl FUN_020BB1C0 + bl NNS_G3dGeBufferOP_N bl FUN_0201EBA4 add r4, #0x38 add r0, sp, #0x28 @@ -1010,7 +1010,7 @@ MOD84_021D7CFC: ; 0x021D7CFC add r0, r4, #0 add r0, #0x94 ldrh r0, [r0] - ldr r3, _021D7DF0 ; =UNK_020FFA38 + ldr r3, _021D7DF0 ; =FX_SinCosTable_ asr r0, r0, #4 lsl r2, r0, #1 lsl r1, r2, #1 @@ -1027,7 +1027,7 @@ MOD84_021D7CFC: ; 0x021D7CFC add r0, r4, #0 add r0, #0x96 ldrh r0, [r0] - ldr r3, _021D7DF0 ; =UNK_020FFA38 + ldr r3, _021D7DF0 ; =FX_SinCosTable_ asr r0, r0, #4 lsl r2, r0, #1 lsl r1, r2, #1 @@ -1044,7 +1044,7 @@ MOD84_021D7CFC: ; 0x021D7CFC add r0, r4, #0 add r0, #0x98 ldrh r0, [r0] - ldr r3, _021D7DF0 ; =UNK_020FFA38 + ldr r3, _021D7DF0 ; =FX_SinCosTable_ asr r0, r0, #4 lsl r2, r0, #1 lsl r1, r2, #1 @@ -1098,14 +1098,14 @@ _021D7DBA: mov r0, #0x12 add r1, sp, #0 str r2, [sp] - bl FUN_020BB1C0 + bl NNS_G3dGeBufferOP_N mov r0, #0 mov r1, #1 bl FUN_020222B4 add sp, #0x4c pop {r3, r4, pc} nop -_021D7DF0: .word UNK_020FFA38 +_021D7DF0: .word FX_SinCosTable_ thumb_func_end MOD84_021D7CFC thumb_func_start MOD84_021D7DF4 @@ -1129,7 +1129,7 @@ _021D7E08: str r0, [sp, #4] mov r0, #0x7f mov r3, #0x4b - bl FUN_02006D18 + bl GfGfxLoader_LoadFromNarc_GetSizeOut str r0, [r4] cmp r0, #0 beq _021D7E9A @@ -1168,7 +1168,7 @@ _021D7E08: add r0, #0x98 strh r1, [r0] ldr r0, [r4] - bl FUN_020BC13C + bl NNS_G3dGetMdlSet str r0, [r4, #0x5c] ldrh r1, [r0, #0xe] add r1, r0, r1 @@ -1176,7 +1176,7 @@ _021D7E08: add r0, r0, r1 str r0, [r4, #0x60] ldr r0, [r4] - bl FUN_020BC0FC + bl NNS_G3dGetTex str r0, [r4, #0x64] bl FUN_0201B3C4 ldr r0, [r4] @@ -1185,22 +1185,22 @@ _021D7E08: add r0, r4, #0 ldr r1, [r4, #0x60] add r0, #8 - bl FUN_020B80B4 + bl NNS_G3dRenderObjInit _021D7E9A: ldr r0, [r4, #4] cmp r0, #0 beq _021D7ED0 mov r1, #0 - bl FUN_020BC4C8 + bl NNS_G3dGetAnmByIdx add r1, r0, #0 ldr r0, [r4, #0x68] ldr r2, [r4, #0x60] ldr r3, [r4, #0x64] - bl FUN_020B8110 + bl NNS_G3dAnmObjInit add r0, r4, #0 ldr r1, [r4, #0x68] add r0, #8 - bl FUN_020B7EFC + bl NNS_G3dRenderObjAddAnmObj add r0, r4, #0 mov r1, #0 add r0, #0x9c @@ -1227,27 +1227,27 @@ MOD84_021D7EDC: ; 0x021D7EDC mov r0, #0x82 lsl r0, r0, #2 add r0, r5, r0 - bl FUN_020B1A24 + bl NNS_G2dInitImageProxy mov r0, #0x8b lsl r0, r0, #2 add r0, r5, r0 - bl FUN_020B1A24 + bl NNS_G2dInitImageProxy mov r0, #0x25 lsl r0, r0, #4 add r0, r5, r0 - bl FUN_020B1A24 + bl NNS_G2dInitImageProxy mov r0, #0x9d lsl r0, r0, #2 add r0, r5, r0 - bl FUN_020B19DC + bl NNS_G2dInitImagePaletteProxy mov r0, #0xa2 lsl r0, r0, #2 add r0, r5, r0 - bl FUN_020B19DC + bl NNS_G2dInitImagePaletteProxy mov r0, #0xa7 lsl r0, r0, #2 add r0, r5, r0 - bl FUN_020B19DC + bl NNS_G2dInitImagePaletteProxy ldr r0, [r5, #0x18] ldr r0, [r0] cmp r0, #1 @@ -1274,7 +1274,7 @@ _021D7F2C: ldrh r1, [r1, r4] mov r0, #0x7f add r3, r2, #0 - bl FUN_02006AE4 + bl GfGfxLoader_LoadImageMapping mov r0, #0x4b ldr r1, _021D7F88 ; =0x021DA662 str r0, [sp] @@ -1286,7 +1286,7 @@ _021D7F2C: mov r0, #0x7f mov r2, #1 mov r3, #0 - bl FUN_02006A8C + bl GfGfxLoader_PartiallyLoadPalette ldr r1, _021D7F8C ; =0x021DA664 ldr r2, _021D7F90 ; =0x021DA666 ldrh r1, [r1, r4] diff --git a/arm9/modules/84/asm/module_84_thumb2.s b/arm9/modules/84/asm/module_84_thumb2.s index 66e7a196..17f9316e 100644 --- a/arm9/modules/84/asm/module_84_thumb2.s +++ b/arm9/modules/84/asm/module_84_thumb2.s @@ -105,7 +105,7 @@ MOD84_021D81DC: ; 0x021D81DC add r1, r6, #0 mov r2, #0 add r3, #8 - bl FUN_02006C30 + bl GfGfxLoader_GetCellBank str r0, [r4] mov r0, #0x4b add r3, r4, #0 @@ -114,7 +114,7 @@ MOD84_021D81DC: ; 0x021D81DC add r1, r7, #0 mov r2, #0 add r3, #0xc - bl FUN_02006C5C + bl GfGfxLoader_GetAnimBank str r0, [r4, #4] _021D8218: add r0, r4, #0 @@ -559,7 +559,7 @@ MOD84_021D84F8: ; 0x021D84F8 str r0, [r4, #0x30] mov r0, #0x4b mov r1, #1 - bl FUN_02018FF4 + bl AllocWindows str r0, [r4, #0x24] mov r3, #0 lsl r2, r5, #0x18 @@ -577,14 +577,14 @@ MOD84_021D84F8: ; 0x021D84F8 bl FUN_02019064 ldr r0, [r4, #0x24] mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, [r4, #0x24] bl FUN_02019270 ldr r0, [r4, #0x24] bl CopyWindowToVram mov r0, #0x4b mov r1, #1 - bl FUN_02018FF4 + bl AllocWindows str r0, [r4, #0x28] mov r3, #0 lsl r2, r5, #0x18 @@ -712,7 +712,7 @@ _021D864C: ble _021D86D0 ldr r0, [r5, #0x28] mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer mov r1, #0 str r1, [sp] mov r0, #0xff @@ -750,7 +750,7 @@ _021D864C: ldr r0, [r5, #0x24] ldr r1, [r1, #0xc] lsr r3, r3, #0x10 - bl FUN_02019658 + bl BlitBitmapRectToWindow _021D86D0: mov r1, #1 str r1, [r5, #0x18] @@ -786,7 +786,7 @@ _021D86E0: ldr r0, [r5, #0x24] add r2, r1, #0 lsr r3, r3, #0x10 - bl FUN_020196F4 + bl FillWindowPixelRect b _021D8754 _021D8718: add r1, r3, #0 @@ -803,7 +803,7 @@ _021D8718: ldr r0, [r5, #0x24] add r2, r1, #0 lsr r3, r3, #0x10 - bl FUN_020196F4 + bl FillWindowPixelRect mov r1, #0 mov r0, #1 lsl r0, r0, #8 @@ -816,7 +816,7 @@ _021D8718: ldr r0, [r5, #0x24] add r2, r1, #0 add r3, r1, #0 - bl FUN_020196F4 + bl FillWindowPixelRect _021D8754: mov r0, #1 str r0, [r5, #0x18] @@ -880,7 +880,7 @@ MOD84_021D87B0: ; 0x021D87B0 beq _021D87CE ldr r0, [r5, #0x24] mov r1, #0xf - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r4, _021D8814 ; =0x0001020F b _021D87D0 _021D87CE: @@ -940,7 +940,7 @@ MOD84_021D881C: ; 0x021D881C ldr r3, [r4, #8] mov r0, #0x7f mov r1, #0x2a - bl FUN_020068C8 + bl GfGfxLoader_LoadScrnData mov r0, #0 str r0, [sp] str r0, [sp, #4] @@ -951,7 +951,7 @@ MOD84_021D881C: ; 0x021D881C ldr r3, [r4, #8] mov r0, #0x7f mov r1, #0x2b - bl FUN_0200687C + bl GfGfxLoader_LoadCharData mov r0, #0x20 str r0, [sp] mov r0, #0x4b @@ -960,7 +960,7 @@ MOD84_021D881C: ; 0x021D881C mov r0, #0x7f mov r1, #0x2c add r3, r2, #0 - bl FUN_02006930 + bl GfGfxLoader_GXLoadPal add sp, #0x10 pop {r4, pc} .align 2, 0 @@ -1137,7 +1137,7 @@ _021D899C: mov r0, #0x7f mov r1, #0x41 add r3, r2, #0 - bl FUN_02006948 + bl GfGfxLoader_GXLoadPalWithSrcOffset mov r0, #0x80 str r0, [sp] mov r0, #6 @@ -1149,7 +1149,7 @@ _021D899C: mov r1, #0x41 mov r2, #4 mov r3, #0 - bl FUN_02006948 + bl GfGfxLoader_GXLoadPalWithSrcOffset ldr r0, [r4] add r0, r0, #1 str r0, [r4] @@ -1165,7 +1165,7 @@ _021D89D8: mov r0, #0x7f mov r1, #4 mov r3, #2 - bl FUN_020068C8 + bl GfGfxLoader_LoadScrnData mov r0, #0 str r0, [sp] str r0, [sp, #4] @@ -1176,7 +1176,7 @@ _021D89D8: ldr r2, [r5, #4] mov r0, #0x7f add r3, r1, #0 - bl FUN_020068C8 + bl GfGfxLoader_LoadScrnData ldr r0, [r4] add r0, r0, #1 str r0, [r4] @@ -1192,7 +1192,7 @@ _021D8A10: mov r0, #0x7f mov r1, #5 mov r3, #2 - bl FUN_0200687C + bl GfGfxLoader_LoadCharData ldr r0, [r4] add r0, r0, #1 str r0, [r4] @@ -1208,7 +1208,7 @@ _021D8A30: mov r0, #0x7f mov r1, #7 mov r3, #6 - bl FUN_0200687C + bl GfGfxLoader_LoadCharData ldr r0, [r4] add r0, r0, #1 str r0, [r4] @@ -1420,7 +1420,7 @@ _021D8BB2: mov r0, #0x7f mov r1, #0x24 mov r3, #2 - bl FUN_020068C8 + bl GfGfxLoader_LoadScrnData mov r0, #0 str r0, [sp] str r0, [sp, #4] @@ -1431,7 +1431,7 @@ _021D8BB2: mov r0, #0x7f mov r1, #0x22 mov r3, #6 - bl FUN_020068C8 + bl GfGfxLoader_LoadScrnData ldr r0, [r4] add r0, r0, #1 str r0, [r4] @@ -1447,7 +1447,7 @@ _021D8BEA: mov r0, #0x7f mov r1, #0x25 mov r3, #2 - bl FUN_0200687C + bl GfGfxLoader_LoadCharData ldr r0, [r4] add r0, r0, #1 str r0, [r4] @@ -1463,7 +1463,7 @@ _021D8C0A: mov r0, #0x7f mov r1, #0x23 mov r3, #6 - bl FUN_0200687C + bl GfGfxLoader_LoadCharData ldr r0, [r4] add r0, r0, #1 str r0, [r4] @@ -1762,7 +1762,7 @@ _021D8E4A: mov r0, #0x7f mov r1, #0x22 mov r3, #2 - bl FUN_020068C8 + bl GfGfxLoader_LoadScrnData mov r0, #0 str r0, [sp] str r0, [sp, #4] @@ -1773,7 +1773,7 @@ _021D8E4A: mov r0, #0x7f mov r1, #0x22 mov r3, #6 - bl FUN_020068C8 + bl GfGfxLoader_LoadScrnData ldr r0, [sp, #0x14] ldr r0, [r0] add r1, r0, #1 @@ -1791,7 +1791,7 @@ _021D8E86: mov r0, #0x7f mov r1, #0x23 mov r3, #2 - bl FUN_0200687C + bl GfGfxLoader_LoadCharData ldr r0, [sp, #0x14] ldr r0, [r0] add r1, r0, #1 @@ -1809,7 +1809,7 @@ _021D8EAA: mov r0, #0x7f mov r1, #0x23 mov r3, #6 - bl FUN_0200687C + bl GfGfxLoader_LoadCharData ldr r0, [sp, #0x14] ldr r0, [r0] add r1, r0, #1 @@ -1836,10 +1836,10 @@ _021D8ECE: _021D8EF2: add r0, r4, #0 add r0, #0x10 - bl FUN_020B1A24 + bl NNS_G2dInitImageProxy add r0, r4, #0 add r0, #0x34 - bl FUN_020B19DC + bl NNS_G2dInitImagePaletteProxy mov r2, #0 str r2, [sp] mov r0, #1 @@ -1853,7 +1853,7 @@ _021D8EF2: mov r0, #0x7f mov r1, #0x37 add r3, r2, #0 - bl FUN_02006AE4 + bl GfGfxLoader_LoadImageMapping mov r0, #0x4b str r0, [sp] add r4, #0x34 @@ -1862,7 +1862,7 @@ _021D8EF2: mov r2, #1 mov r3, #0 str r4, [sp, #4] - bl FUN_02006A8C + bl GfGfxLoader_PartiallyLoadPalette ldr r0, [sp, #0x14] ldr r0, [r0] add r1, r0, #1 @@ -1911,7 +1911,7 @@ _021D8F86: mov r1, #0x28 mov r2, #0 add r3, sp, #0x20 - bl FUN_02006BB0 + bl GfGfxLoader_GetCharData str r0, [sp, #0x18] cmp r0, #0 beq _021D8FC8 @@ -1922,12 +1922,12 @@ _021D8F86: lsr r7, r5, #1 _021D8FA6: add r0, r4, #0 - bl FUN_020B1A24 + bl NNS_G2dInitImageProxy ldr r0, [sp, #0x20] add r1, r5, #0 mov r2, #1 add r3, r4, #0 - bl FUN_020B1768 + bl NNS_G2dLoadImage1DMapping add r6, r6, #1 add r4, #0x24 add r5, r5, r7 @@ -2579,7 +2579,7 @@ _021D94BA: mov r0, #0x7f mov r1, #0x26 mov r3, #2 - bl FUN_020068C8 + bl GfGfxLoader_LoadScrnData mov r0, #0 str r0, [sp] str r0, [sp, #4] @@ -2590,7 +2590,7 @@ _021D94BA: mov r0, #0x7f mov r1, #0x22 mov r3, #6 - bl FUN_020068C8 + bl GfGfxLoader_LoadScrnData ldr r0, [r4] add r0, r0, #1 str r0, [r4] @@ -2606,7 +2606,7 @@ _021D94F2: mov r0, #0x7f mov r1, #0x27 mov r3, #2 - bl FUN_0200687C + bl GfGfxLoader_LoadCharData ldr r0, [r4] add r0, r0, #1 str r0, [r4] @@ -2622,7 +2622,7 @@ _021D9512: mov r0, #0x7f mov r1, #0x23 mov r3, #6 - bl FUN_0200687C + bl GfGfxLoader_LoadCharData ldr r0, [r4] add r0, r0, #1 str r0, [r4] @@ -2861,7 +2861,7 @@ _021D96D4: mov r0, #0x7f mov r1, #0x10 mov r3, #2 - bl FUN_020068C8 + bl GfGfxLoader_LoadScrnData mov r0, #0 str r0, [sp] str r0, [sp, #4] @@ -2872,7 +2872,7 @@ _021D96D4: mov r0, #0x7f mov r1, #0x12 mov r3, #6 - bl FUN_020068C8 + bl GfGfxLoader_LoadScrnData mov r0, #0 str r0, [sp] str r0, [sp, #4] @@ -2883,7 +2883,7 @@ _021D96D4: mov r0, #0x7f mov r1, #0x11 mov r3, #2 - bl FUN_0200687C + bl GfGfxLoader_LoadCharData mov r0, #0 str r0, [sp] str r0, [sp, #4] @@ -2894,7 +2894,7 @@ _021D96D4: mov r0, #0x7f mov r1, #0x13 mov r3, #6 - bl FUN_0200687C + bl GfGfxLoader_LoadCharData mov r0, #0 str r0, [r4, #0x64] ldr r0, [r5] @@ -3049,7 +3049,7 @@ _021D986A: mov r0, #0x7f mov r1, #8 mov r3, #2 - bl FUN_020068C8 + bl GfGfxLoader_LoadScrnData mov r0, #0 str r0, [sp] str r0, [sp, #4] @@ -3060,7 +3060,7 @@ _021D986A: mov r0, #0x7f mov r1, #0xa mov r3, #6 - bl FUN_020068C8 + bl GfGfxLoader_LoadScrnData ldr r0, [r5] add r0, r0, #1 str r0, [r5] @@ -3076,7 +3076,7 @@ _021D98A2: mov r0, #0x7f mov r1, #9 mov r3, #2 - bl FUN_0200687C + bl GfGfxLoader_LoadCharData ldr r0, [r5] add r0, r0, #1 str r0, [r5] @@ -3092,7 +3092,7 @@ _021D98C2: mov r0, #0x7f mov r1, #0xb mov r3, #6 - bl FUN_0200687C + bl GfGfxLoader_LoadCharData ldr r0, [r5] add r0, r0, #1 str r0, [r5] @@ -3108,7 +3108,7 @@ _021D98E2: mov r0, #0x7f mov r1, #0xc mov r3, #3 - bl FUN_020068C8 + bl GfGfxLoader_LoadScrnData mov r0, #0 str r0, [sp] str r0, [sp, #4] @@ -3119,7 +3119,7 @@ _021D98E2: mov r0, #0x7f mov r1, #0xe mov r3, #7 - bl FUN_020068C8 + bl GfGfxLoader_LoadScrnData ldr r0, [r5] add r0, r0, #1 str r0, [r5] @@ -3135,7 +3135,7 @@ _021D991A: mov r0, #0x7f mov r1, #0xd mov r3, #3 - bl FUN_0200687C + bl GfGfxLoader_LoadCharData ldr r0, [r5] add r0, r0, #1 str r0, [r5] @@ -3151,7 +3151,7 @@ _021D993A: mov r0, #0x7f mov r1, #0xf mov r3, #7 - bl FUN_0200687C + bl GfGfxLoader_LoadCharData ldr r0, [r5] add r0, r0, #1 str r0, [r5] @@ -3164,7 +3164,7 @@ _021D995A: str r0, [r4, #0x48] add r0, r4, #0 add r0, #0x10 - bl FUN_020B1A24 + bl NNS_G2dInitImageProxy mov r2, #0 str r2, [sp] mov r0, #1 @@ -3178,10 +3178,10 @@ _021D995A: mov r0, #0x7f mov r1, #0x3b add r3, r2, #0 - bl FUN_02006AE4 + bl GfGfxLoader_LoadImageMapping add r0, r4, #0 add r0, #0x34 - bl FUN_020B19DC + bl NNS_G2dInitImagePaletteProxy mov r0, #0x4b str r0, [sp] add r0, r4, #0 @@ -3191,7 +3191,7 @@ _021D995A: mov r1, #0x3c mov r2, #1 mov r3, #0 - bl FUN_02006A8C + bl GfGfxLoader_PartiallyLoadPalette mov r0, #2 str r0, [sp] add r2, r4, #0 @@ -3452,7 +3452,7 @@ _021D9B7A: mov r0, #0x7f mov r1, #0x28 mov r3, #2 - bl FUN_020068C8 + bl GfGfxLoader_LoadScrnData mov r0, #0 str r0, [sp] str r0, [sp, #4] @@ -3463,7 +3463,7 @@ _021D9B7A: mov r0, #0x7f mov r1, #0x22 mov r3, #6 - bl FUN_020068C8 + bl GfGfxLoader_LoadScrnData ldr r0, [r4] add r0, r0, #1 str r0, [r4] @@ -3479,7 +3479,7 @@ _021D9BB2: mov r0, #0x7f mov r1, #0x29 mov r3, #2 - bl FUN_0200687C + bl GfGfxLoader_LoadCharData ldr r0, [r4] add r0, r0, #1 str r0, [r4] @@ -3495,7 +3495,7 @@ _021D9BD2: mov r0, #0x7f mov r1, #0x23 mov r3, #6 - bl FUN_0200687C + bl GfGfxLoader_LoadCharData ldr r0, [r4] add r0, r0, #1 str r0, [r4] @@ -3560,7 +3560,7 @@ MOD84_021D9C1C: ; 0x021D9C1C mov r1, #0x41 add r2, #0x5c mov r3, #0x4b - bl FUN_02006C08 + bl GfGfxLoader_GetPlttData str r0, [r4, #0x58] cmp r0, #0 beq _021D9C76 @@ -3726,7 +3726,7 @@ _021D9D6A: mov r0, #0x7f mov r1, #0x1c mov r3, #2 - bl FUN_020068C8 + bl GfGfxLoader_LoadScrnData mov r0, #0 str r0, [sp] str r0, [sp, #4] @@ -3737,7 +3737,7 @@ _021D9D6A: mov r0, #0x7f mov r1, #0x18 mov r3, #6 - bl FUN_020068C8 + bl GfGfxLoader_LoadScrnData mov r0, #0 str r0, [sp] str r0, [sp, #4] @@ -3748,7 +3748,7 @@ _021D9D6A: mov r0, #0x7f mov r1, #0x1d mov r3, #2 - bl FUN_0200687C + bl GfGfxLoader_LoadCharData mov r0, #0 str r0, [sp] str r0, [sp, #4] @@ -3759,7 +3759,7 @@ _021D9D6A: mov r0, #0x7f mov r1, #0x19 mov r3, #6 - bl FUN_0200687C + bl GfGfxLoader_LoadCharData mov r0, #0 add r4, #0xec str r0, [r4] @@ -3823,7 +3823,7 @@ _021D9E3C: mov r0, #0x7f mov r1, #0x20 mov r3, #3 - bl FUN_020068C8 + bl GfGfxLoader_LoadScrnData mov r0, #0 str r0, [sp] str r0, [sp, #4] @@ -3834,7 +3834,7 @@ _021D9E3C: mov r0, #0x7f mov r1, #0x1e mov r3, #7 - bl FUN_020068C8 + bl GfGfxLoader_LoadScrnData mov r0, #0 str r0, [sp] str r0, [sp, #4] @@ -3845,7 +3845,7 @@ _021D9E3C: mov r0, #0x7f mov r1, #0x21 mov r3, #3 - bl FUN_0200687C + bl GfGfxLoader_LoadCharData mov r0, #0 str r0, [sp] str r0, [sp, #4] @@ -3856,7 +3856,7 @@ _021D9E3C: mov r0, #0x7f mov r1, #0x1f mov r3, #7 - bl FUN_0200687C + bl GfGfxLoader_LoadCharData mov r0, #0 add r4, #0xec str r0, [r4] @@ -4003,7 +4003,7 @@ _021D9FBE: mov r0, #0x7f mov r1, #0x2a mov r3, #3 - bl FUN_020068C8 + bl GfGfxLoader_LoadScrnData mov r0, #0 str r0, [sp] str r0, [sp, #4] @@ -4014,7 +4014,7 @@ _021D9FBE: mov r0, #0x7f mov r1, #0x2b mov r3, #3 - bl FUN_0200687C + bl GfGfxLoader_LoadCharData mov r0, #0x20 str r0, [sp] mov r0, #0x4b @@ -4023,7 +4023,7 @@ _021D9FBE: mov r0, #0x7f mov r1, #0x2c add r3, r2, #0 - bl FUN_02006930 + bl GfGfxLoader_GXLoadPal mov r0, #0 add r4, #0xec str r0, [r4] @@ -4136,7 +4136,7 @@ _021DA0E2: mov r0, #0x7f mov r1, #0x16 mov r3, #2 - bl FUN_020068C8 + bl GfGfxLoader_LoadScrnData mov r0, #0 str r0, [sp] str r0, [sp, #4] @@ -4147,7 +4147,7 @@ _021DA0E2: mov r0, #0x7f mov r1, #0x1a mov r3, #6 - bl FUN_020068C8 + bl GfGfxLoader_LoadScrnData ldr r0, [r5] add r0, r0, #1 str r0, [r5] @@ -4163,7 +4163,7 @@ _021DA11A: mov r0, #0x7f mov r1, #0x17 mov r3, #2 - bl FUN_0200687C + bl GfGfxLoader_LoadCharData ldr r0, [r5] add r0, r0, #1 str r0, [r5] @@ -4179,7 +4179,7 @@ _021DA13A: mov r0, #0x7f mov r1, #0x1b mov r3, #6 - bl FUN_0200687C + bl GfGfxLoader_LoadCharData ldr r0, [r5] add r0, r0, #1 str r0, [r5] @@ -4195,7 +4195,7 @@ _021DA15A: mov r0, #0x7f mov r1, #0x14 mov r3, #3 - bl FUN_020068C8 + bl GfGfxLoader_LoadScrnData mov r0, #0 str r0, [sp] str r0, [sp, #4] @@ -4206,7 +4206,7 @@ _021DA15A: mov r0, #0x7f mov r1, #0x18 mov r3, #7 - bl FUN_020068C8 + bl GfGfxLoader_LoadScrnData ldr r0, [r5] add r0, r0, #1 str r0, [r5] @@ -4222,7 +4222,7 @@ _021DA192: mov r0, #0x7f mov r1, #0x15 mov r3, #3 - bl FUN_0200687C + bl GfGfxLoader_LoadCharData ldr r0, [r5] add r0, r0, #1 str r0, [r5] @@ -4238,7 +4238,7 @@ _021DA1B2: mov r0, #0x7f mov r1, #0x19 mov r3, #7 - bl FUN_0200687C + bl GfGfxLoader_LoadCharData ldr r0, [r5] add r0, r0, #1 str r0, [r5] @@ -4259,10 +4259,10 @@ _021DA1E2: str r0, [r4, #0x54] add r0, r4, #0 add r0, #0x1c - bl FUN_020B1A24 + bl NNS_G2dInitImageProxy add r0, r4, #0 add r0, #0x40 - bl FUN_020B19DC + bl NNS_G2dInitImagePaletteProxy mov r2, #0 str r2, [sp] mov r0, #1 @@ -4276,7 +4276,7 @@ _021DA1E2: mov r0, #0x7f mov r1, #0x3f add r3, r2, #0 - bl FUN_02006AE4 + bl GfGfxLoader_LoadImageMapping mov r0, #0x4b str r0, [sp] add r4, #0x40 @@ -4285,7 +4285,7 @@ _021DA1E2: mov r1, #0x40 mov r2, #1 mov r3, #0 - bl FUN_02006A8C + bl GfGfxLoader_PartiallyLoadPalette ldr r0, [r5] add r0, r0, #1 str r0, [r5] @@ -4304,7 +4304,7 @@ _021DA238: mov r0, #0x7f mov r1, #0x3f add r3, r2, #0 - bl FUN_02006AE4 + bl GfGfxLoader_LoadImageMapping mov r0, #0x4b str r0, [sp] add r0, r4, #0 @@ -4314,7 +4314,7 @@ _021DA238: mov r1, #0x40 mov r2, #2 mov r3, #0 - bl FUN_02006A8C + bl GfGfxLoader_PartiallyLoadPalette mov r0, #2 str r0, [sp] add r2, r4, #0 diff --git a/arm9/modules/85/asm/module_85.s b/arm9/modules/85/asm/module_85.s index adb49508..221d2f9d 100644 --- a/arm9/modules/85/asm/module_85.s +++ b/arm9/modules/85/asm/module_85.s @@ -570,7 +570,7 @@ MOD85_021D797C: ; 0x021D797C ldr r1, _021D7B1C ; =0x00000448 add r5, r0, #0 add r1, r4, r1 - bl FUN_020B0138 + bl NNS_G2dGetUnpackedPaletteData ldr r1, _021D7B1C ; =0x00000448 mov r2, #0x1a ldr r1, [r4, r1] @@ -588,7 +588,7 @@ MOD85_021D797C: ; 0x021D797C ldr r1, _021D7B20 ; =0x00000444 add r5, r0, #0 add r1, r4, r1 - bl FUN_020B0088 + bl NNS_G2dGetUnpackedCharacterData ldr r0, _021D7B20 ; =0x00000444 mov r1, #0 ldr r3, [r4, r0] @@ -609,7 +609,7 @@ MOD85_021D797C: ; 0x021D797C lsl r1, r1, #6 add r1, r4, r1 add r5, r0, #0 - bl FUN_020B0180 + bl NNS_G2dGetUnpackedScreenData mov r0, #0x11 lsl r0, r0, #6 ldr r3, [r4, r0] @@ -633,7 +633,7 @@ MOD85_021D797C: ; 0x021D797C ldr r1, _021D7B20 ; =0x00000444 add r5, r0, #0 add r1, r4, r1 - bl FUN_020B0088 + bl NNS_G2dGetUnpackedCharacterData ldr r0, _021D7B20 ; =0x00000444 mov r1, #0 ldr r3, [r4, r0] @@ -654,7 +654,7 @@ MOD85_021D797C: ; 0x021D797C lsl r1, r1, #6 add r1, r4, r1 add r5, r0, #0 - bl FUN_020B0180 + bl NNS_G2dGetUnpackedScreenData mov r0, #0x11 lsl r0, r0, #6 ldr r3, [r4, r0] @@ -678,7 +678,7 @@ MOD85_021D797C: ; 0x021D797C ldr r1, _021D7B1C ; =0x00000448 add r5, r0, #0 add r1, r4, r1 - bl FUN_020B0138 + bl NNS_G2dGetUnpackedPaletteData ldr r1, _021D7B1C ; =0x00000448 mov r2, #0x1a ldr r1, [r4, r1] @@ -696,7 +696,7 @@ MOD85_021D797C: ; 0x021D797C ldr r1, _021D7B20 ; =0x00000444 add r5, r0, #0 add r1, r4, r1 - bl FUN_020B0088 + bl NNS_G2dGetUnpackedCharacterData ldr r0, _021D7B20 ; =0x00000444 mov r1, #0 ldr r3, [r4, r0] @@ -717,7 +717,7 @@ MOD85_021D797C: ; 0x021D797C lsl r1, r1, #6 add r1, r4, r1 add r5, r0, #0 - bl FUN_020B0180 + bl NNS_G2dGetUnpackedScreenData mov r0, #0x11 lsl r0, r0, #6 ldr r3, [r4, r0] @@ -847,7 +847,7 @@ MOD85_021D7BEC: ; 0x021D7BEC add r0, r4, #0 add r0, #8 mov r1, #0xf - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, _021D7C40 ; =0x00000408 ldr r2, [r4, #0x18] ldr r0, [r5, r0] @@ -884,7 +884,7 @@ MOD85_021D7C44: ; 0x021D7C44 add r0, r5, r4 add r0, #8 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer add r0, r5, r4 add r0, #8 bl FUN_02019220 @@ -933,7 +933,7 @@ MOD85_021D7CB0: ; 0x021D7CB0 push {r3, r4, lr} sub sp, #0x1c add r4, r0, #0 - bl FUN_020B0FC0 + bl NNS_G2dInitOamManagerModule mov r0, #0 str r0, [sp] mov r1, #0x80 @@ -1477,7 +1477,7 @@ MOD85_021D80F8: ; 0x021D80F8 bl AllocFromHeap add r4, r0, #0 bne _021D810C - bl ErrorHandling + bl GF_AssertFail _021D810C: add r0, r4, #0 mov r1, #0 @@ -1535,7 +1535,7 @@ _021D8168: add r5, r0, #0 cmp r5, #0 bne _021D8172 - bl ErrorHandling + bl GF_AssertFail _021D8172: ldr r0, _021D8184 ; =0x00000438 add r1, r6, #0 @@ -2477,7 +2477,7 @@ MOD85_021D885C: ; 0x021D885C ldr r0, [r4, #0x50] cmp r0, #6 blt _021D886A - bl ErrorHandling + bl GF_AssertFail _021D886A: mov r0, #0x19 str r0, [r4] @@ -2493,7 +2493,7 @@ MOD85_021D8874: ; 0x021D8874 ldr r0, [r4, #0x50] cmp r0, #6 blt _021D8882 - bl ErrorHandling + bl GF_AssertFail _021D8882: mov r0, #0x1c str r0, [r4] @@ -3175,7 +3175,7 @@ MOD85_021D8D88: ; 0x021D8D88 str r0, [r4, #0x10] cmp r0, #1 bge _021D8D9A - bl ErrorHandling + bl GF_AssertFail _021D8D9A: add r0, r4, #0 mov r1, #0 @@ -3715,7 +3715,7 @@ MOD85_021D91A4: ; 0x021D91A4 sub r0, r0, #1 str r0, [r4, #0x10] beq _021D91B4 - bl ErrorHandling + bl GF_AssertFail _021D91B4: ldr r0, [r4, #0x2c] cmp r0, #1 @@ -4226,7 +4226,7 @@ _021D950C: bl MOD85_021D95B4 pop {r3, pc} _021D9512: - bl ErrorHandling + bl GF_AssertFail mov r0, #0 pop {r3, pc} .align 2, 0 @@ -5579,7 +5579,7 @@ _021D9F0C: add r5, r5, #1 cmp r5, #0x15 ble _021D9EFC - bl ErrorHandling + bl GF_AssertFail pop {r4, r5, r6, pc} _021D9F18: cmp r1, #0 @@ -5604,7 +5604,7 @@ _021D9F3A: add r5, r5, #1 cmp r5, #0x15 ble _021D9F28 - bl ErrorHandling + bl GF_AssertFail pop {r4, r5, r6, pc} _021D9F46: mov r5, #1 @@ -5621,7 +5621,7 @@ _021D9F5A: add r5, r5, #1 cmp r5, #0x15 ble _021D9F48 - bl ErrorHandling + bl GF_AssertFail b _021D9F84 _021D9F66: mov r5, #1 @@ -5638,9 +5638,9 @@ _021D9F7A: add r5, r5, #1 cmp r5, #0x15 ble _021D9F68 - bl ErrorHandling + bl GF_AssertFail _021D9F84: - bl ErrorHandling + bl GF_AssertFail _021D9F88: pop {r4, r5, r6, pc} .align 2, 0 @@ -5678,7 +5678,7 @@ _021D9FC0: add r5, r5, #1 cmp r5, #0x15 blt _021D9FAE - bl ErrorHandling + bl GF_AssertFail _021D9FCA: ldr r0, [r6, #0x10] cmp r0, #0 @@ -5703,7 +5703,7 @@ _021D9FEE: add r5, r5, #1 cmp r5, #0x15 blt _021D9FDC - bl ErrorHandling + bl GF_AssertFail pop {r3, r4, r5, r6, r7, pc} _021D9FFA: mov r5, #0 @@ -5720,7 +5720,7 @@ _021DA00E: add r5, r5, #1 cmp r5, #0x15 ble _021D9FFC - bl ErrorHandling + bl GF_AssertFail pop {r3, r4, r5, r6, r7, pc} _021DA01A: mov r5, #0 @@ -5737,9 +5737,9 @@ _021DA02E: add r5, r5, #1 cmp r5, #0x15 ble _021DA01C - bl ErrorHandling + bl GF_AssertFail _021DA038: - bl ErrorHandling + bl GF_AssertFail _021DA03C: pop {r3, r4, r5, r6, r7, pc} .align 2, 0 @@ -6044,7 +6044,7 @@ _021DA238: mov r0, #1 pop {r3, r4, r5, r6, r7, pc} _021DA240: - bl ErrorHandling + bl GF_AssertFail mov r0, #0 add sp, #8 pop {r3, r4, r5, r6, r7, pc} @@ -7075,7 +7075,7 @@ _021DA9EE: ldr r0, _021DAA20 ; =0x021DFCC4 ldr r0, [r0, r1] str r0, [r5, #0x18] - bl ErrorHandling + bl GF_AssertFail add sp, #8 pop {r3, r4, r5, r6, r7, pc} .align 2, 0 @@ -7158,7 +7158,7 @@ _021DAAA4: mov r1, #1 lsl r0, r0, #2 str r1, [r6, r0] - bl ErrorHandling + bl GF_AssertFail add sp, #8 pop {r3, r4, r5, r6, r7, pc} .align 2, 0 @@ -7254,7 +7254,7 @@ _021DAB52: str r1, [r4, r0] pop {r3, r4, r5, pc} _021DAB6A: - bl ErrorHandling + bl GF_AssertFail mov r0, #2 ldr r1, [r4, #0x74] lsl r0, r0, #8 @@ -7470,7 +7470,7 @@ _021DACF8: add r2, #0x10 cmp r1, #9 blt _021DACC8 - bl ErrorHandling + bl GF_AssertFail mov r0, #0 pop {r3, r4, r5, pc} .align 2, 0 @@ -7686,7 +7686,7 @@ MOD85_021DAE70: ; 0x021DAE70 ldr r6, [r7, #0x48] cmp r6, #0 bne _021DAE80 - bl ErrorHandling + bl GF_AssertFail _021DAE80: mov r4, #0 _021DAE82: @@ -7713,7 +7713,7 @@ _021DAE9C: str r0, [r5, #0x18] b _021DAEB4 _021DAEB0: - bl ErrorHandling + bl GF_AssertFail _021DAEB4: add r4, r4, #1 lsr r6, r6, #1 @@ -8587,7 +8587,7 @@ MOD85_021DB494: ; 0x021DB494 bl MOD85_021D8144 add r1, sp, #0 add r6, r0, #0 - bl FUN_020B0138 + bl NNS_G2dGetUnpackedPaletteData ldr r0, [sp] mov r1, #1 add r2, r4, #4 @@ -8627,7 +8627,7 @@ MOD85_021DB494: ; 0x021DB494 bl MOD85_021D8144 add r1, sp, #0 add r6, r0, #0 - bl FUN_020B0138 + bl NNS_G2dGetUnpackedPaletteData add r2, r4, #0 ldr r0, [sp] mov r1, #0 @@ -8641,7 +8641,7 @@ MOD85_021DB494: ; 0x021DB494 bl MOD85_021D8144 add r1, sp, #0 add r6, r0, #0 - bl FUN_020B0138 + bl NNS_G2dGetUnpackedPaletteData add r2, r4, #0 ldr r0, [sp] mov r1, #0 @@ -8655,7 +8655,7 @@ MOD85_021DB494: ; 0x021DB494 bl MOD85_021D8144 add r1, sp, #0 add r6, r0, #0 - bl FUN_020B0138 + bl NNS_G2dGetUnpackedPaletteData add r2, r4, #0 ldr r0, [sp] mov r1, #0 @@ -8669,7 +8669,7 @@ MOD85_021DB494: ; 0x021DB494 bl MOD85_021D8144 add r1, sp, #0 add r6, r0, #0 - bl FUN_020B0138 + bl NNS_G2dGetUnpackedPaletteData mov r2, #0x51 lsl r2, r2, #2 ldr r0, [sp] @@ -8684,7 +8684,7 @@ MOD85_021DB494: ; 0x021DB494 bl MOD85_021D8144 add r1, sp, #0 add r6, r0, #0 - bl FUN_020B0138 + bl NNS_G2dGetUnpackedPaletteData mov r2, #0x59 lsl r2, r2, #2 ldr r0, [sp] @@ -8705,7 +8705,7 @@ MOD85_021DB494: ; 0x021DB494 bl MOD85_021D8144 add r1, sp, #0 add r5, r0, #0 - bl FUN_020B0138 + bl NNS_G2dGetUnpackedPaletteData mov r2, #0x69 lsl r2, r2, #2 ldr r0, [sp] @@ -9228,7 +9228,7 @@ MOD85_021DB95C: ; 0x021DB95C ldr r0, [r4, r0] cmp r0, #0 beq _021DB97A - bl ErrorHandling + bl GF_AssertFail _021DB97A: str r4, [sp] mov r0, #0x8f @@ -10066,7 +10066,7 @@ MOD85_021DBF48: ; 0x021DBF48 beq _021DBF6A cmp r4, #2 beq _021DBF62 - bl ErrorHandling + bl GF_AssertFail _021DBF62: ldr r1, [r5] mov r0, #1 @@ -10106,7 +10106,7 @@ _021DBF92: add r0, r2, #0 pop {r3, pc} _021DBF9C: - bl ErrorHandling + bl GF_AssertFail mov r0, #4 pop {r3, pc} thumb_func_end MOD85_021DBF70 @@ -10142,7 +10142,7 @@ _021DBFBE: _021DBFCC: cmp r4, #3 blt _021DBFD4 - bl ErrorHandling + bl GF_AssertFail _021DBFD4: lsl r0, r4, #2 add r0, r5, r0 @@ -10297,7 +10297,7 @@ MOD85_021DC0D8: ; 0x021DC0D8 ldr r5, [r0, #0x48] cmp r4, #6 bne _021DC0E6 - bl ErrorHandling + bl GF_AssertFail _021DC0E6: ldr r3, _021DC104 ; =0x021DFCAC lsl r2, r4, #2 @@ -11585,7 +11585,7 @@ MOD85_021DCA68: ; 0x021DCA68 ldr r4, [r6, #0x38] cmp r5, #5 blt _021DCA78 - bl ErrorHandling + bl GF_AssertFail _021DCA78: mov r1, #2 mov r2, #0x45 @@ -11630,7 +11630,7 @@ _021DCA78: bl FUN_0200CA60 cmp r0, #0 bne _021DCADC - bl ErrorHandling + bl GF_AssertFail _021DCADC: ldr r0, _021DCAFC ; =MOD85_021DCB44 ldr r2, _021DCAF8 ; =0x00000101 @@ -11638,7 +11638,7 @@ _021DCADC: bl FUN_0200CA98 cmp r0, #0 bne _021DCAEE - bl ErrorHandling + bl GF_AssertFail _021DCAEE: pop {r3, r4, r5, r6, r7, pc} .align 2, 0 @@ -12012,7 +12012,7 @@ MOD85_021DCD50: ; 0x021DCD50 bl FUN_0200CA60 cmp r0, #0 bne _021DCDB8 - bl ErrorHandling + bl GF_AssertFail _021DCDB8: ldr r0, _021DCDD4 ; =MOD85_021DCD28 ldr r2, _021DCDD0 ; =0x00000101 @@ -12020,7 +12020,7 @@ _021DCDB8: bl FUN_0200CA98 cmp r0, #0 bne _021DCDCA - bl ErrorHandling + bl GF_AssertFail _021DCDCA: pop {r3, r4, r5, pc} .align 2, 0 @@ -12126,7 +12126,7 @@ MOD85_021DCE2C: ; 0x021DCE2C bl FUN_0200CA60 cmp r0, #0 bne _021DCE9C - bl ErrorHandling + bl GF_AssertFail _021DCE9C: ldr r0, _021DCEBC ; =MOD85_021DCE04 ldr r2, _021DCEB8 ; =0x00000101 @@ -12134,7 +12134,7 @@ _021DCE9C: bl FUN_0200CA98 cmp r0, #0 bne _021DCEAE - bl ErrorHandling + bl GF_AssertFail _021DCEAE: pop {r3, r4, r5, r6, r7, pc} .align 2, 0 @@ -12967,7 +12967,7 @@ MOD85_021DD4C4: ; 0x021DD4C4 bl FUN_0200CA60 cmp r0, #0 bne _021DD52C - bl ErrorHandling + bl GF_AssertFail _021DD52C: ldr r0, _021DD548 ; =MOD85_021DD498 ldr r2, _021DD544 ; =0x00000101 @@ -12975,7 +12975,7 @@ _021DD52C: bl FUN_0200CA98 cmp r0, #0 bne _021DD53E - bl ErrorHandling + bl GF_AssertFail _021DD53E: pop {r3, r4, r5, pc} .align 2, 0 @@ -14780,7 +14780,7 @@ _021DE2BC: ldr r0, [r4, #0x1c] cmp r0, #5 blt _021DE2C6 - bl ErrorHandling + bl GF_AssertFail _021DE2C6: add r0, r4, #0 bl MOD85_021DE4F0 @@ -15154,7 +15154,7 @@ _021DE572: bl FUN_0200CA60 cmp r0, #0 bne _021DE584 - bl ErrorHandling + bl GF_AssertFail _021DE584: ldr r0, _021DE5A0 ; =MOD85_021DE4C8 ldr r2, _021DE59C ; =0x00000101 @@ -15162,7 +15162,7 @@ _021DE584: bl FUN_0200CA98 cmp r0, #0 bne _021DE596 - bl ErrorHandling + bl GF_AssertFail _021DE596: pop {r3, r4, r5, pc} .align 2, 0 @@ -15188,7 +15188,7 @@ MOD85_021DE5A4: ; 0x021DE5A4 bl AllocFromHeap add r4, r0, #0 bne _021DE5C8 - bl ErrorHandling + bl GF_AssertFail _021DE5C8: ldr r0, [sp] add r1, r4, #0 @@ -15558,7 +15558,7 @@ _021DE898: cmp r1, r5 blo _021DE85E _021DE8A0: - bl ErrorHandling + bl GF_AssertFail add sp, #0x10 pop {r3, r4, r5, r6, r7, pc} thumb_func_end MOD85_021DE840 @@ -15589,7 +15589,7 @@ _021DE8CC: cmp r4, r2 blo _021DE8BA _021DE8D4: - bl ErrorHandling + bl GF_AssertFail pop {r3, r4, r5, pc} .align 2, 0 thumb_func_end MOD85_021DE8A8 @@ -15620,7 +15620,7 @@ _021DE900: cmp r4, r2 blo _021DE8EE _021DE908: - bl ErrorHandling + bl GF_AssertFail pop {r3, r4, r5, pc} .align 2, 0 thumb_func_end MOD85_021DE8DC @@ -15679,7 +15679,7 @@ _021DE96C: cmp r1, r5 blo _021DE92E _021DE974: - bl ErrorHandling + bl GF_AssertFail add sp, #0x14 pop {r4, r5, r6, r7, pc} thumb_func_end MOD85_021DE910 @@ -15710,7 +15710,7 @@ _021DE9A0: cmp r4, r2 blo _021DE98E _021DE9A8: - bl ErrorHandling + bl GF_AssertFail pop {r3, r4, r5, pc} .align 2, 0 thumb_func_end MOD85_021DE97C @@ -15741,7 +15741,7 @@ _021DE9D4: cmp r4, r2 blo _021DE9C2 _021DE9DC: - bl ErrorHandling + bl GF_AssertFail pop {r3, r4, r5, pc} .align 2, 0 thumb_func_end MOD85_021DE9B0 @@ -15798,7 +15798,7 @@ _021DEA3C: cmp r1, r5 blo _021DEA02 _021DEA44: - bl ErrorHandling + bl GF_AssertFail add sp, #0x10 pop {r3, r4, r5, r6, r7, pc} thumb_func_end MOD85_021DE9E4 @@ -15855,7 +15855,7 @@ _021DEAA4: cmp r1, r5 blo _021DEA6A _021DEAAC: - bl ErrorHandling + bl GF_AssertFail add sp, #0x10 pop {r3, r4, r5, r6, r7, pc} thumb_func_end MOD85_021DEA4C @@ -16112,7 +16112,7 @@ _021DEC6C: str r0, [r4, #4] cmp r0, #0 bne _021DEC9A - bl ErrorHandling + bl GF_AssertFail _021DEC9A: add sp, #0x70 pop {r3, r4, r5, r6, r7, pc} diff --git a/arm9/modules/86/asm/module_86.s b/arm9/modules/86/asm/module_86.s index 08651acb..2bd7d12a 100644 --- a/arm9/modules/86/asm/module_86.s +++ b/arm9/modules/86/asm/module_86.s @@ -504,7 +504,7 @@ MOD86_021D78D4: ; 0x021D78D4 add r0, #0x14 add r2, r1, #0 add r3, r1, #0 - bl FUN_020196F4 + bl FillWindowPixelRect mov r1, #4 add r0, sp, #8 strb r1, [r0] @@ -523,7 +523,7 @@ MOD86_021D78D4: ; 0x021D78D4 add r0, r4, #0 add r2, r1, #0 add r3, r1, #0 - bl FUN_020196F4 + bl FillWindowPixelRect add sp, #0x10 pop {r4, pc} .align 2, 0 @@ -629,7 +629,7 @@ _021D7A06: ldr r2, [r5, #0x10] mov r0, #0x84 mov r3, #3 - bl FUN_020068C8 + bl GfGfxLoader_LoadScrnData mov r0, #0 str r0, [sp] str r0, [sp, #4] @@ -640,7 +640,7 @@ _021D7A06: ldr r2, [r5, #0x10] mov r0, #0x84 mov r3, #3 - bl FUN_0200687C + bl GfGfxLoader_LoadCharData mov r0, #0x20 str r0, [sp] ldr r0, [r5] @@ -649,7 +649,7 @@ _021D7A06: ldr r1, [sp, #0x14] mov r0, #0x84 add r3, r2, #0 - bl FUN_02006930 + bl GfGfxLoader_GXLoadPal mov r0, #0 str r0, [sp] str r0, [sp, #4] @@ -660,7 +660,7 @@ _021D7A06: ldr r2, [r5, #0x10] mov r0, #0x84 mov r3, #7 - bl FUN_020068C8 + bl GfGfxLoader_LoadScrnData mov r0, #0 str r0, [sp] str r0, [sp, #4] @@ -671,7 +671,7 @@ _021D7A06: ldr r2, [r5, #0x10] mov r0, #0x84 mov r3, #7 - bl FUN_0200687C + bl GfGfxLoader_LoadCharData mov r0, #0x20 str r0, [sp] ldr r0, [r5] @@ -680,7 +680,7 @@ _021D7A06: mov r0, #0x84 mov r2, #4 mov r3, #0 - bl FUN_02006930 + bl GfGfxLoader_GXLoadPal mov r0, #0 str r0, [sp] str r0, [sp, #4] @@ -691,7 +691,7 @@ _021D7A06: ldr r2, [r5, #0x10] mov r0, #0x84 mov r3, #1 - bl FUN_020068C8 + bl GfGfxLoader_LoadScrnData mov r0, #0x20 str r0, [sp] mov r0, #0x18 @@ -715,7 +715,7 @@ _021D7A06: ldr r2, [r5, #0x10] mov r0, #0x84 mov r3, #1 - bl FUN_0200687C + bl GfGfxLoader_LoadCharData mov r3, #0x20 str r3, [sp] ldr r0, [r5] @@ -723,7 +723,7 @@ _021D7A06: str r0, [sp, #4] mov r0, #0x84 mov r2, #0 - bl FUN_02006930 + bl GfGfxLoader_GXLoadPal mov r0, #0 str r0, [sp] str r0, [sp, #4] @@ -734,7 +734,7 @@ _021D7A06: ldr r2, [r5, #0x10] mov r0, #0x84 mov r3, #5 - bl FUN_020068C8 + bl GfGfxLoader_LoadScrnData mov r0, #0x20 str r0, [sp] mov r0, #0x18 @@ -759,7 +759,7 @@ _021D7A06: ldr r2, [r5, #0x10] mov r0, #0x84 mov r3, #5 - bl FUN_0200687C + bl GfGfxLoader_LoadCharData mov r3, #0x20 str r3, [sp] ldr r0, [r5] @@ -767,7 +767,7 @@ _021D7A06: str r0, [sp, #4] mov r0, #0x84 mov r2, #4 - bl FUN_02006930 + bl GfGfxLoader_GXLoadPal mov r0, #0 ldr r3, [r5] mov r1, #0x20 diff --git a/arm9/src/GX_layers.c b/arm9/src/GX_layers.c index ce188876..f0ac9472 100644 --- a/arm9/src/GX_layers.c +++ b/arm9/src/GX_layers.c @@ -1,4 +1,7 @@ #include "GX_layers.h" +#include "GX_vramcnt.h" +#include "gx.h" +#include "main.h" struct GX_LayerData layer_data; diff --git a/arm9/src/WIFI_stubsmd5_dummy.c b/arm9/src/WIFI_stubsmd5_dummy.c new file mode 100644 index 00000000..6de2edca --- /dev/null +++ b/arm9/src/WIFI_stubsmd5_dummy.c @@ -0,0 +1,17 @@ +#include "function_target.h" +#include "WIFI_stubsmd5_dummy.h" + +ARM_FUNC void MD5Final(u8 *digest, struct DGTHash1Context *context) +{ + DGT_Hash1GetDigest_R(digest, context); +} + +ARM_FUNC void MD5Update(struct DGTHash1Context *context, u8 *input, u32 length) +{ + DGT_Hash1SetSource(context, input, length); +} + +ARM_FUNC void MD5Init(struct DGTHash1Context *context) +{ + DGT_Hash1Reset(context); +} diff --git a/arm9/src/error_handling.c b/arm9/src/error_handling.c index a01894f6..0b76ccff 100644 --- a/arm9/src/error_handling.c +++ b/arm9/src/error_handling.c @@ -1,10 +1,11 @@ #include "global.h" #include "error_handling.h" #include "error_message_reset.h" +#include "unk_02031734.h" -extern u32 FUN_02031810(void); -THUMB_FUNC void ErrorHandling(void) + +THUMB_FUNC void GF_AssertFail(void) { if (FUN_02031810()) { diff --git a/arm9/src/error_message_reset.c b/arm9/src/error_message_reset.c index 3a727924..28627d6b 100644 --- a/arm9/src/error_message_reset.c +++ b/arm9/src/error_message_reset.c @@ -1,36 +1,29 @@ #include "error_message_reset.h" #include "GX_layers.h" +#include "unk_02031734.h" +#include "unk_0202F150.h" +#include "unk_02016B94.h" -const u32 UNK_020FF49C[2] = { 0x1a030300, 0x00230112 }; + + +const struct UnkStruct_02016B94_4 UNK_020FF49C = { 0, 3, 3, 0x1a, 0x12, 1, 0x23 }; const u32 UNK_020FF4A4[2] = { 0x00020000, 0x00000000 }; const struct GraphicsModes UNK_020FF4AC = { mode1 : 1 }; -const u32 UNK_020FF4BC[7] = { 0x00, 0x00, 0x0800, 0x00, 0x06000001, 0x0100, 0x00 }; +const struct UnkStruct_02016B94_1 UNK_020FF4BC = { 0, 0, 0x800, 0, 1, 0, 0, 6, 0, 1, 0, 0, 0 }; const struct GraphicsBanks UNK_020FF4D8 = { bg : 3 }; u32 sErrorMessagePrinterLock; extern void FUN_0200E3A0(PMLCDTarget, int); -extern u32 *FUN_02016B94(u32 param0); -extern void FUN_02016BBC(const struct GraphicsModes *modes); -extern void FUN_02016C18(u32 *param0, u32 param1, void *param2, u32 param3); -extern void FUN_02018744(u32 *param0, u32 param1); -extern void FUN_0200CB00(u32 *param0, u32 param1, u32 param2, u32 param3, u8 param4, u32 param5); +extern void FUN_0200CB00(struct UnkStruct_02016B94_2 *param0, u32 param1, u32 param2, u32 param3, u8 param4, u32 param5); extern void FUN_02002ED0(u32 param0, u32 param1, u32 param2); -extern void FUN_02017F18(u32 param0, u32 param1, u32 param2, u32 param3); -extern void FUN_02017FE4(u32 param0, u32 param1); -extern void FUN_02019150(u32 *param0, u32 *param1, const u32 *param2); -extern void FUN_020196F4(u32 *, u8, u16, u16, u16, u16); -extern void FUN_0200CCA4(u32 *param0, u32 param1, u32 param2, u32 param3); +extern void FUN_0200CCA4(struct Window *param0, u32 param1, u32 param2, u32 param3); extern void FUN_0200E394(u32 param0); extern void FUN_0200A274(u32 param0, u32 param1, u32 param2); -extern BOOL FUN_02032DAC(void); -extern BOOL FUN_0202FB80(void); -extern BOOL FUN_02033678(void); -extern void FUN_02019178(u32 *param0); THUMB_FUNC void VBlankHandler() { @@ -42,8 +35,8 @@ THUMB_FUNC void VBlankHandler() THUMB_FUNC void PrintErrorMessageAndReset() { - u32 *ptr; - u32 buf[4]; + struct UnkStruct_02016B94_2 *ptr; + struct Window buf; if (sErrorMessagePrinterLock != 1) { @@ -82,7 +75,7 @@ THUMB_FUNC void PrintErrorMessageAndReset() ptr = FUN_02016B94(0); FUN_02016BBC(&UNK_020FF4AC); - FUN_02016C18(ptr, 0, UNK_020FF4BC, 0); + FUN_02016C18(ptr, 0, &UNK_020FF4BC, 0); FUN_02018744(ptr, 0); FUN_0200CB00(ptr, 0, 503, 2, 0, 0); @@ -96,13 +89,13 @@ THUMB_FUNC void PrintErrorMessageAndReset() struct String *str = String_ctor(6 << 6, 0); FUN_0201BD5C(); - FUN_02019150(ptr, buf, UNK_020FF49C); - FUN_020196F4(buf, 15, 0, 0, 0xd0, 0x90); - FUN_0200CCA4(buf, 0, 0x1f7, 2); + FUN_02019150(ptr, &buf, &UNK_020FF49C); + FillWindowPixelRect(&buf, 15, 0, 0, 0xd0, 0x90); + FUN_0200CCA4(&buf, 0, 0x1f7, 2); ReadMsgDataIntoString(msg_data, 3, str); - AddTextPrinterParameterized((u32)buf, 0, (const u16 *)str, 0, 0, 0, NULL); // wtf + AddTextPrinterParameterized(&buf, 0, str, 0, 0, 0, NULL); String_dtor(str); GX_BothDispOn(); @@ -132,7 +125,7 @@ THUMB_FUNC void PrintErrorMessageAndReset() FUN_0200E3A0(PM_LCD_TOP, 0x7FFF); FUN_0200E3A0(PM_LCD_BOTTOM, 0x7FFF); - FUN_02019178(buf); + FUN_02019178(&buf); DestroyMsgData(msg_data); FreeToHeap(ptr); diff --git a/arm9/src/filesystem.c b/arm9/src/filesystem.c index 3775b0b8..ed82acb9 100644 --- a/arm9/src/filesystem.c +++ b/arm9/src/filesystem.c @@ -176,7 +176,7 @@ THUMB_FUNC void ReadFromNarcMemberByPathAndId(void * dest, const char * path, s3 FS_ReadFile(&file, &chunk_size, 4); FS_ReadFile(&file, &num_files, 2); if (num_files <= file_idx) - ErrorHandling(); + GF_AssertFail(); chunk_starts[1] = chunk_starts[0] + chunk_size; FS_SeekFile(&file, (s32)(chunk_starts[1] + 4), FS_SEEK_SET); FS_ReadFile(&file, &chunk_size, 4); @@ -191,7 +191,7 @@ THUMB_FUNC void ReadFromNarcMemberByPathAndId(void * dest, const char * path, s3 else chunk_size = size; if (chunk_size == 0) - ErrorHandling(); + GF_AssertFail(); FS_ReadFile(&file, dest, (s32)chunk_size); FS_CloseFile(&file); } @@ -217,7 +217,7 @@ THUMB_FUNC void * AllocAndReadFromNarcMemberByPathAndId(const char * path, s32 f FS_ReadFile(&file, &chunk_size, 4); FS_ReadFile(&file, &num_files, 2); if (num_files <= file_idx) - ErrorHandling(); + GF_AssertFail(); chunk_starts[1] = chunk_starts[0] + chunk_size; FS_SeekFile(&file, (s32)(chunk_starts[1] + 4), FS_SEEK_SET); FS_ReadFile(&file, &chunk_size, 4); @@ -232,7 +232,7 @@ THUMB_FUNC void * AllocAndReadFromNarcMemberByPathAndId(const char * path, s32 f else chunk_size = size; if (chunk_size == 0) - ErrorHandling(); + GF_AssertFail(); switch (r4) { case 0: @@ -297,7 +297,7 @@ THUMB_FUNC u32 GetNarcMemberSizeByIdPair(NarcId narc_id, s32 file_idx) FS_ReadFile(&file, &chunk_size, 4); FS_ReadFile(&file, &num_files, 2); if (num_files <= file_idx) - ErrorHandling(); + GF_AssertFail(); chunk_starts[1] = chunk_starts[0] + chunk_size; FS_SeekFile(&file, (s32)(chunk_starts[1] + 4), FS_SEEK_SET); FS_ReadFile(&file, &chunk_size, 4); @@ -309,7 +309,7 @@ THUMB_FUNC u32 GetNarcMemberSizeByIdPair(NarcId narc_id, s32 file_idx) FS_SeekFile(&file, (s32)(chunk_starts[2] + 8 + file_start + 0), FS_SEEK_SET); chunk_size = file_end - file_start; if (chunk_size == 0) - ErrorHandling(); + GF_AssertFail(); // Bug: File is never closed return chunk_size; } @@ -349,7 +349,7 @@ THUMB_FUNC void * NARC_AllocAndReadWholeMember(NARC * narc, u32 file_id, u32 hea u32 file_end; void * dest; if (narc->num_files <= file_id) - ErrorHandling(); + GF_AssertFail(); FS_SeekFile(&narc->file, (s32)(narc->btaf_start + 12 + 8 * file_id), FS_SEEK_SET); FS_ReadFile(&narc->file, &file_start, 4); FS_ReadFile(&narc->file, &file_end, 4); @@ -367,7 +367,7 @@ THUMB_FUNC void NARC_ReadWholeMember(NARC * narc, u32 file_id, void * dest) u32 file_start; u32 file_end; if (narc->num_files <= file_id) - ErrorHandling(); + GF_AssertFail(); FS_SeekFile(&narc->file, (s32)(narc->btaf_start + 12 + 8 * file_id), FS_SEEK_SET); FS_ReadFile(&narc->file, &file_start, 4); FS_ReadFile(&narc->file, &file_end, 4); @@ -380,7 +380,7 @@ THUMB_FUNC u32 NARC_GetMemberSize(NARC * narc, u32 file_id) u32 file_start; u32 file_end; if (narc->num_files <= file_id) - ErrorHandling(); + GF_AssertFail(); FS_SeekFile(&narc->file, (s32)(narc->btaf_start + 12 + 8 * file_id), FS_SEEK_SET); FS_ReadFile(&narc->file, &file_start, 4); FS_ReadFile(&narc->file, &file_end, 4); @@ -391,7 +391,7 @@ THUMB_FUNC void NARC_ReadFromMember(NARC * narc, u32 file_id, u32 pos, u32 size, { u32 file_start; if (narc->num_files <= file_id) - ErrorHandling(); + GF_AssertFail(); FS_SeekFile(&narc->file, (s32)(narc->btaf_start + 12 + 8 * file_id), FS_SEEK_SET); FS_ReadFile(&narc->file, &file_start, 4); FS_SeekFile(&narc->file, (s32)(narc->gmif_start + 8 + file_start + pos), FS_SEEK_SET); diff --git a/arm9/src/game_init.c b/arm9/src/game_init.c index a7508fab..64ea7a54 100644 --- a/arm9/src/game_init.c +++ b/arm9/src/game_init.c @@ -141,7 +141,7 @@ void FUN_02015FC8(void) { csum++; } - FUN_020166C8((u32 *)UNK_020EDB10, 4, 92, (int)csum); + FUN_020166C8((u32 *)UNK_020EDB10, 4, 92, csum); } void InitSystemForTheGame(void) @@ -181,12 +181,12 @@ void InitSystemForTheGame(void) void InitGraphicMemory(void) { GX_SetBankForLCDC(0x1FF); - MIi_CpuClearFast(0, (void *)HW_LCDC_VRAM, HW_LCDC_VRAM_SIZE); + MI_CpuClearFast((void *)HW_LCDC_VRAM, HW_LCDC_VRAM_SIZE); GX_DisableBankForLCDC(); - MIi_CpuClearFast(0xC0, (void *)HW_OAM, HW_OAM_SIZE); - MIi_CpuClearFast(0xC0, (void *)HW_DB_OAM, HW_DB_OAM_SIZE); - MIi_CpuClearFast(0, (void *)HW_PLTT, HW_PLTT_SIZE); - MIi_CpuClearFast(0, (void *)HW_DB_PLTT, HW_DB_PLTT_SIZE); + MI_CpuFillFast((void *)HW_OAM, 0xC0, HW_OAM_SIZE); + MI_CpuFillFast((void *)HW_DB_OAM, 0xC0, HW_DB_OAM_SIZE); + MI_CpuClearFast((void *)HW_PLTT, HW_PLTT_SIZE); + MI_CpuClearFast((void *)HW_DB_PLTT, HW_DB_PLTT_SIZE); } void * FUN_020161A4(u32 heap_id, const char * path) @@ -203,7 +203,7 @@ void * FUN_020161A4(u32 heap_id, const char * path) { if (size != FS_ReadFile(&file, ret, (s32)size)) { - FUN_02016A8C(heap_id, ret); + FreeToHeapExplicit(heap_id, ret); ret = NULL; } } @@ -344,8 +344,8 @@ void FUN_020163BC(void) gMain.unk3C = 0; gMain.unk40 = 0; gMain.unk44 = 0; - gMain.unk48 = 0; - gMain.unk4C = 0; + gMain.newKeys = 0; + gMain.newAndRepeatedKeys = 0; gMain.unk50 = 0; gMain.unk54 = 8; gMain.unk58 = 15; @@ -387,9 +387,9 @@ void FUN_02016464(void) TPData raw, calib; if (PAD_DetectFold()) { - gMain.unk48 = 0; + gMain.newKeys = 0; gMain.unk44 = 0; - gMain.unk4C = 0; + gMain.newAndRepeatedKeys = 0; gMain.unk60 = 0; gMain.unk62 = 0; return; @@ -409,9 +409,9 @@ void FUN_02016464(void) gMain.unk50 = gMain.unk58; } gMain.unk38 = r0; - gMain.unk48 = gMain.unk3C; + gMain.newKeys = gMain.unk3C; gMain.unk44 = r0; - gMain.unk4C = gMain.unk40; + gMain.newAndRepeatedKeys = gMain.unk40; FUN_02016568(); if (gMain.unk64 == 0) { @@ -453,26 +453,26 @@ void FUN_02016568(void) case 0: // Normal break; case 1: // Start = X - if (gMain.unk48 & PAD_BUTTON_START) - gMain.unk48 |= PAD_BUTTON_X; + if (gMain.newKeys & PAD_BUTTON_START) + gMain.newKeys |= PAD_BUTTON_X; if (gMain.unk44 & PAD_BUTTON_START) gMain.unk44 |= PAD_BUTTON_X; - if (gMain.unk4C & PAD_BUTTON_START) - gMain.unk4C |= PAD_BUTTON_X; + if (gMain.newAndRepeatedKeys & PAD_BUTTON_START) + gMain.newAndRepeatedKeys |= PAD_BUTTON_X; break; case 2: // Swap X and Y; unused in the retail game { u32 r1 = 0; - if (gMain.unk48 & PAD_BUTTON_X) + if (gMain.newKeys & PAD_BUTTON_X) { r1 |= PAD_BUTTON_Y; } - if (gMain.unk48 & PAD_BUTTON_Y) + if (gMain.newKeys & PAD_BUTTON_Y) { r1 |= PAD_BUTTON_X; } - gMain.unk48 &= 0xF3FF; - gMain.unk48 |= r1; + gMain.newKeys &= 0xF3FF; + gMain.newKeys |= r1; } { u32 r1 = 0; @@ -489,28 +489,28 @@ void FUN_02016568(void) } { u32 r1 = 0; - if (gMain.unk4C & PAD_BUTTON_X) + if (gMain.newAndRepeatedKeys & PAD_BUTTON_X) { r1 |= PAD_BUTTON_Y; } - if (gMain.unk4C & PAD_BUTTON_Y) + if (gMain.newAndRepeatedKeys & PAD_BUTTON_Y) { r1 |= PAD_BUTTON_X; } - gMain.unk4C &= 0xF3FF; - gMain.unk4C |= r1; + gMain.newAndRepeatedKeys &= 0xF3FF; + gMain.newAndRepeatedKeys |= r1; } break; case 3: // L = A - if (gMain.unk48 & PAD_BUTTON_L) - gMain.unk48 |= PAD_BUTTON_A; + if (gMain.newKeys & PAD_BUTTON_L) + gMain.newKeys |= PAD_BUTTON_A; if (gMain.unk44 & PAD_BUTTON_L) gMain.unk44 |= PAD_BUTTON_A; - if (gMain.unk4C & PAD_BUTTON_L) - gMain.unk4C |= PAD_BUTTON_A; - gMain.unk48 &= 0xFCFF; + if (gMain.newAndRepeatedKeys & PAD_BUTTON_L) + gMain.newAndRepeatedKeys |= PAD_BUTTON_A; + gMain.newKeys &= 0xFCFF; gMain.unk44 &= 0xFCFF; - gMain.unk4C &= 0xFCFF; + gMain.newAndRepeatedKeys &= 0xFCFF; } } diff --git a/arm9/src/gf_gfx_loader.c b/arm9/src/gf_gfx_loader.c new file mode 100644 index 00000000..769c90d9 --- /dev/null +++ b/arm9/src/gf_gfx_loader.c @@ -0,0 +1,349 @@ +#include "global.h"
+#include "filesystem.h"
+#include "NNS_g2d.h"
+#include "gf_gfx_loader.h"
+
+THUMB_FUNC u32 GfGfxLoader_LoadCharData(NarcId narcId, s32 memberNo, struct UnkStruct_02016B94_2 * unkStruct02016B94_2, u32 a3, u32 a4, u32 szByte, BOOL isCompressed, u32 heap_id)
+{
+ NNSG2dCharacterData * pCharData;
+ void * pFile = GfGfxLoader_LoadFromNarc(narcId, memberNo, isCompressed, heap_id, FALSE);
+ if (pFile != NULL)
+ {
+ if (NNS_G2dGetUnpackedBGCharacterData(pFile, &pCharData))
+ {
+ if (szByte == 0)
+ szByte = pCharData->szByte;
+ FUN_02017E14(unkStruct02016B94_2, (u8)a3, pCharData->pRawData, szByte, a4);
+ }
+ FreeToHeap(pFile);
+ }
+ return szByte;
+}
+
+THUMB_FUNC void GfGfxLoader_LoadScrnData(NarcId narcId, s32 memberNo, struct UnkStruct_02016B94_2 * unkStruct02016B94_2, u32 a3, u32 a4, u32 szByte, BOOL isCompressed, u32 heap_id)
+{
+ NNSG2dScreenData * pScreenData;
+ void * pFile = GfGfxLoader_LoadFromNarc(narcId, memberNo, isCompressed, heap_id, TRUE);
+ if (pFile != NULL)
+ {
+ if (NNS_G2dGetUnpackedScreenData(pFile, &pScreenData))
+ {
+ if (szByte == 0)
+ szByte = pScreenData->szByte;
+ if (FUN_0201886C(unkStruct02016B94_2, (u8)a3) != NULL)
+ FUN_02017DFC(unkStruct02016B94_2, (u8)a3, pScreenData->rawData, szByte);
+ FUN_02017CE8(unkStruct02016B94_2, (u8)a3, pScreenData->rawData, szByte, a4);
+ }
+ FreeToHeap(pFile);
+ }
+}
+
+THUMB_FUNC void GfGfxLoader_GXLoadPal(NarcId narcId, s32 memberNo, u32 whichRoutine, u32 baseAddr, u32 szByte, u32 heap_id)
+{
+ GfGfxLoader_GXLoadPalWithSrcOffset(narcId, memberNo, whichRoutine, 0, baseAddr, szByte, heap_id);
+}
+
+THUMB_FUNC void GfGfxLoader_GXLoadPalWithSrcOffset(NarcId narcId, s32 memberNo, u32 whichRoutine, u32 srcOffset, u32 baseAddr, u32 szByte, u32 heap_id)
+{
+ static void (*const load_funcs[])(void *, u32, u32) = {
+ GX_LoadBGPltt,
+ GX_LoadOBJPltt,
+ GX_LoadBGExtPltt,
+ GX_LoadOBJExtPltt,
+ GXS_LoadBGPltt,
+ GXS_LoadOBJPltt,
+ GXS_LoadBGExtPltt,
+ GXS_LoadOBJExtPltt
+ };
+ NNSG2dPaletteData * pPltData;
+ void * pFile = GfGfxLoader_LoadFromNarc(narcId, memberNo, FALSE, heap_id, TRUE);
+ if (pFile != NULL)
+ {
+ if (NNS_G2dGetUnpackedPaletteData(pFile, &pPltData))
+ {
+ pPltData->pRawData = (void *)((u32)pPltData->pRawData + srcOffset);
+ if (szByte == 0)
+ szByte = pPltData->szByte - srcOffset;
+ DC_FlushRange(pPltData->pRawData, szByte);
+ switch (whichRoutine)
+ {
+ case 2:
+ GX_BeginLoadBGExtPltt();
+ load_funcs[whichRoutine](pPltData->pRawData, baseAddr, szByte);
+ GX_EndLoadBGExtPltt();
+ break;
+ case 6:
+ GXS_BeginLoadBGExtPltt();
+ load_funcs[whichRoutine](pPltData->pRawData, baseAddr, szByte);
+ GXS_EndLoadBGExtPltt();
+ break;
+ case 3:
+ GX_BeginLoadOBJExtPltt();
+ load_funcs[whichRoutine](pPltData->pRawData, baseAddr, szByte);
+ GX_EndLoadOBJExtPltt();
+ break;
+ case 7:
+ GXS_BeginLoadOBJExtPltt();
+ load_funcs[whichRoutine](pPltData->pRawData, baseAddr, szByte);
+ GXS_EndLoadOBJExtPltt();
+ break;
+ default:
+ load_funcs[whichRoutine](pPltData->pRawData, baseAddr, szByte);
+ break;
+ }
+ }
+ FreeToHeap(pFile);
+ }
+}
+
+THUMB_FUNC u32 GfGfxLoader_LoadWholePalette(NarcId narcId, s32 memberId, u32 whichRoutine, u32 baseAddr, u32 szByte, BOOL isCompressed, u32 heap_id)
+{
+ static void (*const load_funcs[])(void *, u32, u32) = {
+ GX_LoadOBJ,
+ GXS_LoadOBJ
+ };
+
+ NNSG2dCharacterData* pCharData;
+ void * pFile = GfGfxLoader_LoadFromNarc(narcId, memberId, isCompressed, heap_id, TRUE);
+ if (pFile != NULL)
+ {
+ if (NNS_G2dGetUnpackedCharacterData(pFile, &pCharData))
+ {
+ if (szByte == 0)
+ szByte = pCharData->szByte;
+ DC_FlushRange(pCharData->pRawData, szByte);
+ load_funcs[whichRoutine](pCharData->pRawData, baseAddr, szByte);
+ }
+ FreeToHeap(pFile);
+ }
+ return szByte;
+}
+
+THUMB_FUNC void GfGfxLoader_PartiallyLoadPalette(NarcId narcId, s32 memberId, NNS_G2D_VRAM_TYPE vramType, u32 baseAddr, u32 heap_id, NNSG2dImagePaletteProxy * pPltProxy)
+{
+ void * pFile = GfGfxLoader_LoadFromNarc(narcId, memberId, FALSE, heap_id, TRUE);
+ NNSG2dPaletteData* pPlttData;
+ NNSG2dPaletteCompressInfo* pCompressInfo;
+ if (pFile != NULL)
+ {
+ BOOL isCompressed = NNS_G2dGetUnpackedPaletteCompressInfo(pFile, &pCompressInfo);
+ if (NNS_G2dGetUnpackedPaletteData(pFile, &pPlttData))
+ {
+ if (isCompressed)
+ {
+ NNS_G2dLoadPaletteEx(pPlttData, pCompressInfo, baseAddr, vramType, pPltProxy);
+ }
+ else
+ {
+ NNS_G2dLoadPalette(pPlttData, baseAddr, vramType, pPltProxy);
+ }
+ }
+ FreeToHeap(pFile);
+ }
+}
+
+THUMB_FUNC u32 GfGfxLoader_LoadImageMapping(NarcId narcId, s32 memberId, BOOL isCompressed, u32 whichRoutine, u32 szByte, NNS_G2D_VRAM_TYPE type, u32 baseAddr, u32 heap_id, NNSG2dImageProxy *pImgProxy)
+{
+ static void (*const load_funcs[])(const NNSG2dCharacterData *, u32, NNS_G2D_VRAM_TYPE, NNSG2dImageProxy *) = {
+ NNS_G2dLoadImage1DMapping,
+ NNS_G2dLoadImage2DMapping
+ };
+
+ void * pFile = GfGfxLoader_LoadFromNarc(narcId, memberId, isCompressed, heap_id, TRUE);
+ u32 retSize = 0;
+ NNSG2dCharacterData * pSrcData;
+ if (pFile != NULL)
+ {
+ if (NNS_G2dGetUnpackedCharacterData(pFile, &pSrcData))
+ {
+ if (szByte != 0)
+ pSrcData->szByte = szByte;
+ load_funcs[whichRoutine](pSrcData, baseAddr, type, pImgProxy);
+ retSize = pSrcData->szByte;
+ }
+ FreeToHeap(pFile);
+ }
+ return retSize;
+}
+
+THUMB_FUNC void GfGfxLoader_SetObjCntFlagsAndLoadImageMapping(NarcId narcId, s32 memberId, BOOL isCompressed, u32 whichRoutine, u32 szByte, NNS_G2D_VRAM_TYPE type, u32 baseAddr, u32 heap_id, NNSG2dImageProxy * pImageProxy)
+{
+ static void (*const load_funcs[])(const NNSG2dCharacterData *, u32, NNS_G2D_VRAM_TYPE, NNSG2dImageProxy *) = {
+ NNS_G2dLoadImage1DMapping,
+ NNS_G2dLoadImage2DMapping
+ };
+ NNSG2dCharacterData * pCharacterData;
+ void * pFile = GfGfxLoader_LoadFromNarc(narcId, memberId, isCompressed, heap_id, TRUE);
+ if (pFile != NULL)
+ {
+ if (NNS_G2dGetUnpackedCharacterData(pFile, &pCharacterData))
+ {
+ if (szByte != 0)
+ pCharacterData->szByte = szByte;
+ switch (type)
+ {
+ case NNS_G2D_VRAM_TYPE_2DMAIN:
+ pCharacterData->mapingType = (GXOBJVRamModeChar)(reg_GX_DISPCNT & (REG_GX_DISPCNT_EXOBJ_CH_MASK | REG_GX_DISPCNT_OBJMAP_CH_MASK));
+ break;
+ case NNS_G2D_VRAM_TYPE_2DSUB:
+ pCharacterData->mapingType = (GXOBJVRamModeChar)(reg_GXS_DB_DISPCNT & (REG_GXS_DB_DISPCNT_EXOBJ_MASK | REG_GXS_DB_DISPCNT_OBJMAP_CH_MASK));
+ break;
+ default:
+ ;
+ }
+ load_funcs[whichRoutine](pCharacterData, baseAddr, type, pImageProxy);
+ }
+ FreeToHeap(pFile);
+ }
+}
+
+THUMB_FUNC void * GfGfxLoader_GetCharData(NarcId narcId, s32 memberId, BOOL isCompressed, NNSG2dCharacterData ** ppCharData, u32 heap_id)
+{
+ void * pFile = GfGfxLoader_LoadFromNarc(narcId, memberId, isCompressed, heap_id, FALSE);
+ if (pFile != NULL)
+ {
+ if (!NNS_G2dGetUnpackedBGCharacterData(pFile, ppCharData))
+ {
+ FreeToHeap(pFile);
+ return NULL;
+ }
+ }
+ return pFile;
+}
+
+THUMB_FUNC void * GfGfxLoader_GetScrnData(NarcId narcId, s32 memberId, BOOL isCompressed, NNSG2dScreenData ** ppScrData, u32 heap_id)
+{
+ void * pFile = GfGfxLoader_LoadFromNarc(narcId, memberId, isCompressed, heap_id, FALSE);
+ if (pFile != NULL)
+ {
+ if (!NNS_G2dGetUnpackedScreenData(pFile, ppScrData))
+ {
+ FreeToHeap(pFile);
+ return NULL;
+ }
+ }
+ return pFile;
+}
+
+THUMB_FUNC void * GfGfxLoader_GetPlttData(NarcId narcId, s32 memberId, NNSG2dPaletteData ** ppPltData, u32 heap_id)
+{
+ void * pFile = GfGfxLoader_LoadFromNarc(narcId, memberId, FALSE, heap_id, FALSE);
+ if (pFile != NULL)
+ {
+ if (!NNS_G2dGetUnpackedPaletteData(pFile, ppPltData))
+ {
+ FreeToHeap(pFile);
+ return NULL;
+ }
+ }
+ return pFile;
+}
+
+THUMB_FUNC void * GfGfxLoader_GetCellBank(NarcId narcId, s32 memberId, BOOL isCompressed, NNSG2dCellDataBank ** ppCellBank, u32 heap_id)
+{
+ void * pFile = GfGfxLoader_LoadFromNarc(narcId, memberId, isCompressed, heap_id, FALSE);
+ if (pFile != NULL)
+ {
+ if (!NNS_G2dGetUnpackedCellBank(pFile, ppCellBank))
+ {
+ FreeToHeap(pFile);
+ return NULL;
+ }
+ }
+ return pFile;
+}
+
+THUMB_FUNC void * GfGfxLoader_GetAnimBank(NarcId narcId, s32 memberId, BOOL isCompressed, NNSG2dAnimBankData ** ppAnimBank, u32 heap_id)
+{
+ void * pFile = GfGfxLoader_LoadFromNarc(narcId, memberId, isCompressed, heap_id, FALSE);
+ if (pFile != NULL)
+ {
+ if (!NNS_G2dGetUnpackedAnimBank(pFile, ppAnimBank))
+ {
+ FreeToHeap(pFile);
+ return NULL;
+ }
+ }
+ return pFile;
+}
+
+THUMB_FUNC void * GfGfxLoader_UncompressFromNarc(NarcId narcId, s32 memberId, u32 heap_id)
+{
+ return GfGfxLoader_LoadFromNarc(narcId, memberId, TRUE, heap_id, FALSE);
+}
+
+THUMB_FUNC void * GfGfxLoader_LoadFromNarc(NarcId narcId, s32 memberNo, BOOL isCompressed, u32 heap_id, BOOL allocAtEnd)
+{
+ void * dest;
+ void * dest2;
+ if (isCompressed || allocAtEnd == TRUE)
+ {
+ u32 size = GetNarcMemberSizeByIdPair(narcId, memberNo);
+ dest = AllocFromHeapAtEnd(heap_id, size);
+ }
+ else
+ {
+ u32 size = GetNarcMemberSizeByIdPair(narcId, memberNo);
+ dest = AllocFromHeap(heap_id, size);
+ }
+ if (dest != NULL)
+ {
+ ReadWholeNarcMemberByIdPair(dest, narcId, memberNo);
+ if (isCompressed)
+ {
+ if (allocAtEnd == FALSE)
+ {
+ dest2 = AllocFromHeap(heap_id, (*(u32 *)dest) >> 8);
+ }
+ else
+ {
+ dest2 = AllocFromHeapAtEnd(heap_id, (*(u32 *)dest) >> 8);
+ }
+ if (dest2 != NULL)
+ {
+ MI_UncompressLZ8(dest, dest2);
+ FreeToHeap(dest);
+ }
+ dest = dest2; // UB: if dest2 is NULL, dest is never freed
+ }
+ }
+ return dest;
+}
+
+THUMB_FUNC void * GfGfxLoader_LoadFromNarc_GetSizeOut(NarcId narcId, s32 memberNo, BOOL isCompressed, u32 heap_id, BOOL allocAtEnd, u32 *size_p)
+{
+ void * dest;
+ void * dest2;
+ *size_p = GetNarcMemberSizeByIdPair(narcId, memberNo);
+ if (isCompressed || allocAtEnd == TRUE)
+ {
+ dest = AllocFromHeapAtEnd(heap_id, *size_p);
+ }
+ else
+ {
+ dest = AllocFromHeap(heap_id, *size_p);
+ }
+ if (dest != NULL)
+ {
+ ReadWholeNarcMemberByIdPair(dest, narcId, memberNo);
+ if (isCompressed)
+ {
+ *size_p = (*(u32 *)dest) >> 8;
+ if (allocAtEnd == FALSE)
+ {
+ dest2 = AllocFromHeap(heap_id, *size_p);
+ }
+ else
+ {
+ dest2 = AllocFromHeapAtEnd(heap_id, *size_p);
+ }
+ if (dest2 != NULL)
+ {
+ MI_UncompressLZ8(dest, dest2);
+ FreeToHeap(dest);
+ }
+ dest = dest2; // UB: if dest2 is NULL, dest is never freed
+ }
+ }
+ return dest;
+}
diff --git a/arm9/src/gf_rtc.c b/arm9/src/gf_rtc.c new file mode 100644 index 00000000..02fa735f --- /dev/null +++ b/arm9/src/gf_rtc.c @@ -0,0 +1,183 @@ +#include "global.h"
+#include "MI_memory.h"
+#include "gf_rtc.h"
+#include "RTC_convert.h"
+
+typedef struct GF_RTC_Work
+{
+ BOOL getDateTimeSuccess;
+ BOOL getDateTimeLock;
+ s32 getDateTimeSleep;
+ RTCResult getDateTimeErrorCode;
+ RTCDate date; // 10
+ RTCTime time; // 20
+ RTCDate date_async; // 2C
+ RTCTime time_async; // 3C
+} GF_RTC_Work;
+
+GF_RTC_Work sGFRTCWork;
+
+#define MAX_SECONDS (3155759999ll)
+
+void GF_RTC_GetDateTime(GF_RTC_Work * work);
+
+THUMB_FUNC void GF_InitRTCWork(void)
+{
+ RTC_Init();
+ __builtin__clear(&sGFRTCWork, sizeof(sGFRTCWork));
+ sGFRTCWork.getDateTimeSuccess = FALSE;
+ sGFRTCWork.getDateTimeLock = FALSE;
+ sGFRTCWork.getDateTimeSleep = 0;
+ GF_RTC_GetDateTime(&sGFRTCWork);
+}
+
+THUMB_FUNC void GF_RTC_UpdateOnFrame(void)
+{
+ if (!sGFRTCWork.getDateTimeLock)
+ {
+ if (++sGFRTCWork.getDateTimeSleep > 10)
+ {
+ sGFRTCWork.getDateTimeSleep = 0;
+ GF_RTC_GetDateTime(&sGFRTCWork);
+ }
+ }
+}
+
+THUMB_FUNC void GF_RTC_GetDateTime_Callback(RTCResult result, void * data)
+{
+ GF_RTC_Work * work = (GF_RTC_Work *)data;
+ work->getDateTimeErrorCode = result;
+ GF_ASSERT(result == RTC_RESULT_SUCCESS);
+ work->getDateTimeSuccess = TRUE;
+ work->date = work->date_async;
+ work->time = work->time_async;
+ work->getDateTimeLock = FALSE;
+}
+
+THUMB_FUNC void GF_RTC_GetDateTime(GF_RTC_Work * work)
+{
+ work->getDateTimeLock = TRUE;
+ RTCResult result = RTC_GetDateTimeAsync(&work->date_async, &work->time_async, GF_RTC_GetDateTime_Callback, work);
+ work->getDateTimeErrorCode = result;
+ GF_ASSERT(result == RTC_RESULT_SUCCESS);
+}
+
+THUMB_FUNC void GF_RTC_CopyDateTime(RTCDate * date, RTCTime * time)
+{
+ GF_ASSERT(sGFRTCWork.getDateTimeSuccess == TRUE);
+ *date = sGFRTCWork.date;
+ *time = sGFRTCWork.time;
+}
+
+THUMB_FUNC void GF_RTC_CopyTime(RTCTime * time)
+{
+ GF_ASSERT(sGFRTCWork.getDateTimeSuccess == TRUE);
+ *time = sGFRTCWork.time;
+}
+
+THUMB_FUNC void GF_RTC_CopyDate(RTCDate * date)
+{
+ GF_ASSERT(sGFRTCWork.getDateTimeSuccess == TRUE);
+ *date = sGFRTCWork.date;
+}
+
+THUMB_FUNC s32 GF_RTC_TimeToSec(void)
+{
+ RTCTime* time = &sGFRTCWork.time;
+ return 60 * time->minute + 3600 * time->hour + time->second;
+}
+
+THUMB_FUNC s64 GF_RTC_DateTimeToSec(void)
+{
+ return RTC_ConvertDateTimeToSecond(&sGFRTCWork.date, &sGFRTCWork.time);
+}
+
+static inline BOOL IsLeapYear(s32 year)
+{
+ return ((year % 4) == 0 && (year % 100) != 0) || ((year % 400) == 0);
+}
+
+THUMB_FUNC s32 GF_RTC_GetDayOfYear(const RTCDate * date)
+{
+ RTCDate date_stack;
+ s32 days;
+ static const u16 sGF_DaysPerMonth[] = {
+ 0, // Jan
+ 31, // Feb
+ 59, // Mar
+ 90, // Apr
+ 120, // May
+ 151, // Jun
+ 181, // Jul
+ 212, // Aug
+ 243, // Sep
+ 273, // Oct
+ 304, // Nov
+ 334, // Dec
+ };
+
+ days = date->day;
+ days += sGF_DaysPerMonth[date->month - 1];
+ if (date->month >= RTC_MONTH_MARCH && IsLeapYear(date->year))
+ days++;
+ date_stack = *date;
+ date_stack.month = RTC_MONTH_JANUARY;
+ date_stack.day = 1;
+ RTC_ConvertDateToDay(&date_stack);
+ RTC_ConvertDateToDay(date);
+ return days;
+}
+
+enum RTC_TimeOfDay GF_RTC_GetTimeOfDay(void);
+enum RTC_TimeOfDay GF_RTC_GetTimeOfDayByHour(s32 hour);
+
+THUMB_FUNC BOOL IsNighttime(void)
+{
+ switch (GF_RTC_GetTimeOfDay())
+ {
+ case RTC_TIMEOFDAY_NITE:
+ case RTC_TIMEOFDAY_LATE:
+ return TRUE;
+ default:
+ return FALSE;
+ }
+}
+
+THUMB_FUNC enum RTC_TimeOfDay GF_RTC_GetTimeOfDay(void)
+{
+ RTCTime time;
+ GF_RTC_CopyTime(&time);
+ return GF_RTC_GetTimeOfDayByHour(time.hour);
+}
+
+THUMB_FUNC enum RTC_TimeOfDay GF_RTC_GetTimeOfDayByHour(s32 hour)
+{
+ static const u8 sTimeOfDayByHour[] = {
+ // 00:00 - 03:59
+ RTC_TIMEOFDAY_LATE, RTC_TIMEOFDAY_LATE, RTC_TIMEOFDAY_LATE, RTC_TIMEOFDAY_LATE,
+ // 04:00 - 09:59
+ RTC_TIMEOFDAY_MORN, RTC_TIMEOFDAY_MORN, RTC_TIMEOFDAY_MORN, RTC_TIMEOFDAY_MORN, RTC_TIMEOFDAY_MORN, RTC_TIMEOFDAY_MORN,
+ // 10:00 - 16:59
+ RTC_TIMEOFDAY_DAY, RTC_TIMEOFDAY_DAY, RTC_TIMEOFDAY_DAY, RTC_TIMEOFDAY_DAY, RTC_TIMEOFDAY_DAY, RTC_TIMEOFDAY_DAY, RTC_TIMEOFDAY_DAY,
+ // 17:00 - 19:59
+ RTC_TIMEOFDAY_EVE, RTC_TIMEOFDAY_EVE, RTC_TIMEOFDAY_EVE,
+ // 20:00 - 23:59
+ RTC_TIMEOFDAY_NITE, RTC_TIMEOFDAY_NITE, RTC_TIMEOFDAY_NITE, RTC_TIMEOFDAY_NITE,
+ };
+
+ GF_ASSERT(hour >= 0 && hour < 24);
+ return sTimeOfDayByHour[hour];
+}
+
+THUMB_FUNC s64 GF_RTC_TimeDelta(s64 first, s64 last)
+{
+ RTCDate maxDate = { 99, 12, 31, 0 };
+ RTCTime maxTime = { 23, 59, 59 };
+
+ s64 check = RTC_ConvertDateTimeToSecond(&maxDate, &maxTime);
+ GF_ASSERT(check == MAX_SECONDS);
+ if (first < last)
+ return last - first;
+ else
+ return last + (MAX_SECONDS - first);
+}
diff --git a/arm9/src/heap.c b/arm9/src/heap.c index 84abc834..7f35fdcc 100644 --- a/arm9/src/heap.c +++ b/arm9/src/heap.c @@ -1,15 +1,16 @@ #include "heap.h" #include "error_message_reset.h" +#include "unk_02031734.h" -extern void *tempName_NNS_FndCreateExpHeapEx(void *param0, u32 param1, u32 param2); -extern void *tempName_NNS_FndAllocFromExpHeapEx(void *param0, u32 param1, s32 param2); -extern void thunk_FUN_020adc8c(); -extern void FUN_020ADDF0(void *ptr1, void *ptr2); -extern u32 FUN_02031810(void); -extern u32 FUN_020ADDC8(void *param0); -extern void FUN_020AE82C(u32 param0, void *param1, u32 param2); -extern u32 FUN_020ADDC0(void *param0); -extern void FUN_020ADE2C(void *ptr1, void *ptr2, u32 param2); + +extern void *NNS_FndCreateExpHeapEx(void *param0, u32 param1, u32 param2); +extern void *NNS_FndAllocFromExpHeapEx(void *param0, u32 param1, s32 param2); +extern void NNS_FndDestroyExpHeap(); +extern void NNS_FndFreeToExpHeap(void *ptr1, void *ptr2); +extern u32 NNS_FndGetTotalFreeSizeForExpHeap(void *param0); +extern void NNS_FndInitAllocatorForExpHeap(u32 param0, void *param1, u32 param2); +extern u32 NNS_FndGetSizeForMBlockExpHeap(void *param0); +extern void NNS_FndResizeForMBlockExpHeap(void *ptr1, void *ptr2, u32 param2); struct UnkStruct_020166C8 UNK_021C4D28; @@ -67,12 +68,12 @@ THUMB_FUNC void FUN_020166C8(u32 *param0, u32 param1, u32 param2, u32 pre_size) if (ptr != 0) { - UNK_021C4D28.unk00[r7] = tempName_NNS_FndCreateExpHeapEx(ptr, param0[0], 0); + UNK_021C4D28.unk00[r7] = NNS_FndCreateExpHeapEx(ptr, param0[0], 0); UNK_021C4D28.unk10[r7] = (u8)r7; } else { - ErrorHandling(); + GF_AssertFail(); } param0 += 2; @@ -142,13 +143,13 @@ THUMB_FUNC u32 FUN_02016834(u32 param0, u32 param1, u32 param2, s32 param3) void *ptr2 = UNK_021C4D28.unk00[ptr[param0]]; if (ptr2 != 0) { - void *ptr3 = tempName_NNS_FndAllocFromExpHeapEx(ptr2, param2, param3); + void *ptr3 = NNS_FndAllocFromExpHeapEx(ptr2, param2, param3); if (ptr3 != 0) { param3 = FUN_020167F4(); if (param3 >= 0) { - UNK_021C4D28.unk00[param3] = tempName_NNS_FndCreateExpHeapEx(ptr3, param2, 0); + UNK_021C4D28.unk00[param3] = NNS_FndCreateExpHeapEx(ptr3, param2, 0); if (UNK_021C4D28.unk00[param3] != 0) @@ -161,27 +162,27 @@ THUMB_FUNC u32 FUN_02016834(u32 param0, u32 param1, u32 param2, s32 param3) } else { - ErrorHandling(); + GF_AssertFail(); } } else { - ErrorHandling(); + GF_AssertFail(); } } else { - ErrorHandling(); + GF_AssertFail(); } } else { - ErrorHandling(); + GF_AssertFail(); } } else { - ErrorHandling(); + GF_AssertFail(); } return 0; } @@ -192,18 +193,18 @@ THUMB_FUNC void FUN_020168D0(u32 heap_id) if (UNK_021C4D28.unk00[UNK_021C4D28.unk10[heap_id]] != 0) { - thunk_FUN_020adc8c(); + NNS_FndDestroyExpHeap(); u8 index = UNK_021C4D28.unk10[heap_id]; void *ptr1 = UNK_021C4D28.unk04[index]; void *ptr2 = UNK_021C4D28.unk08[index]; if (ptr1 != 0 && ptr2 != 0) { - FUN_020ADDF0(ptr1, ptr2); + NNS_FndFreeToExpHeap(ptr1, ptr2); } else { - ErrorHandling(); + GF_AssertFail(); } UNK_021C4D28.unk00[UNK_021C4D28.unk10[heap_id]] = 0; @@ -220,7 +221,7 @@ THUMB_FUNC u32 *FUN_02016944(void *param0, u32 param1, s32 param2, u32 param3) OSIntrMode intr_mode = OS_DisableInterrupts(); param1 += 16; - u32 *ptr = (u32 *)tempName_NNS_FndAllocFromExpHeapEx(param0, param1, param2); + u32 *ptr = (u32 *)NNS_FndAllocFromExpHeapEx(param0, param1, param2); OS_RestoreInterrupts(intr_mode); if (ptr != 0) @@ -300,15 +301,15 @@ void FreeToHeap(void *ptr) UNK_021C4D28.unk0c[heap_id]--; OSIntrMode intr_mode = OS_DisableInterrupts(); - FUN_020ADDF0(ptr2, ptr - 16); + NNS_FndFreeToExpHeap(ptr2, ptr - 16); OS_RestoreInterrupts(intr_mode); return; } - ErrorHandling(); + GF_AssertFail(); } -void FUN_02016A8C(u32 param0, void *param1) +void FreeToHeapExplicit(u32 param0, void *param1) { GF_ASSERT (OS_GetProcMode() != OS_PROCMODE_IRQ); @@ -321,14 +322,14 @@ void FUN_02016A8C(u32 param0, void *param1) u8 heap_id = (u8)((u32 *)param1)[-1]; GF_ASSERT (heap_id == param0); - FUN_020ADDF0(ptr, param1 - 16); + NNS_FndFreeToExpHeap(ptr, param1 - 16); GF_ASSERT (UNK_021C4D28.unk0c[param0]); UNK_021C4D28.unk0c[param0]--; return; } - ErrorHandling(); + GF_AssertFail(); } THUMB_FUNC u32 FUN_02016AF8(u32 param0) @@ -336,10 +337,10 @@ THUMB_FUNC u32 FUN_02016AF8(u32 param0) if (param0 < UNK_021C4D28.unk14) { u8 index = UNK_021C4D28.unk10[param0]; - return FUN_020ADDC8(UNK_021C4D28.unk00[index]); + return NNS_FndGetTotalFreeSizeForExpHeap(UNK_021C4D28.unk00[index]); } - ErrorHandling(); + GF_AssertFail(); return 0; } @@ -349,11 +350,11 @@ THUMB_FUNC void FUN_02016B20(u32 param0, u32 param1, u32 param2) { u8 index = UNK_021C4D28.unk10[param1]; - FUN_020AE82C(param0, UNK_021C4D28.unk00[index], param2); + NNS_FndInitAllocatorForExpHeap(param0, UNK_021C4D28.unk00[index], param2); return; } - ErrorHandling(); + GF_AssertFail(); } THUMB_FUNC void FUN_02016B44(void *ptr, u32 param1) @@ -361,16 +362,16 @@ THUMB_FUNC void FUN_02016B44(void *ptr, u32 param1) GF_ASSERT (OS_GetProcMode() != OS_PROCMODE_IRQ); param1 += 16; - if (FUN_020ADDC0(ptr - 16) >= param1) + if (NNS_FndGetSizeForMBlockExpHeap(ptr - 16) >= param1) { u8 heap_id = (u8)((u32 *)ptr)[-1]; u8 index = UNK_021C4D28.unk10[heap_id]; - FUN_020ADE2C(UNK_021C4D28.unk00[index], ptr - 16, param1); + NNS_FndResizeForMBlockExpHeap(UNK_021C4D28.unk00[index], ptr - 16, param1); return; } - ErrorHandling(); + GF_AssertFail(); } THUMB_FUNC u32 FUN_02016B90(u32 param0) diff --git a/arm9/src/itemtool.c b/arm9/src/itemtool.c index 6b892d6d..9982ff40 100644 --- a/arm9/src/itemtool.c +++ b/arm9/src/itemtool.c @@ -778,7 +778,7 @@ u32 GetItemAttr(u16 item, u32 attr, u32 heap_id) u32 ret; struct ItemData * itemData = (struct ItemData *)LoadItemDataOrGfx(item, 0, heap_id); ret = GetItemAttr_PreloadedItemData(itemData, attr); - FUN_02016A8C(heap_id, itemData); + FreeToHeapExplicit(heap_id, itemData); return ret; } diff --git a/arm9/src/list_menu.c b/arm9/src/list_menu.c new file mode 100644 index 00000000..033d06f9 --- /dev/null +++ b/arm9/src/list_menu.c @@ -0,0 +1,572 @@ +#include "global.h" +#include "heap.h" +#include "main.h" +#include "list_menu.h" +#include "text.h" + +void ListMenuPrintEntries(struct ListMenu * list, u16 startIndex, u16 yOffset, u16 count); +void ListMenuDrawCursor(struct ListMenu * list); +BOOL ListMenuChangeSelection(struct ListMenu * list, u8 updateCursorAndCallCallback, u8 count, u8 movingDown); +void ListMenuCallSelectionChangedCallback(struct ListMenu * list, u8 onInit); + +static inline u32 MakeFontColor(u32 fgPal, u32 shdwPal, u32 bgPal) +{ + return (u32)( + ((u32)(fgPal << 24) >> 8) + | ((u32)(shdwPal << 24) >> 16) + | ((u32)(bgPal << 24) >> 24) + ); +} + +THUMB_FUNC struct ListMenu * ListMenuInit(const struct ListMenuTemplate * template, u16 cursorPos, u16 itemsAbove, u32 heap_id) +{ + struct ListMenu * list = AllocFromHeap(heap_id, sizeof(struct ListMenu)); + list->template = *template; + list->cursor = ListMenuCursorNew(heap_id); + list->cursorPos = cursorPos; + list->itemsAbove = itemsAbove; + list->unk_30 = 0; + list->unk_31 = 0; + list->taskId = 0xFF; + list->unk_33 = 0; + list->heap_id = (u8)heap_id; + list->cursorPal = list->template.cursorPal; + list->fillValue = list->template.fillValue; + list->cursorShadowPal = list->template.cursorShadowPal; + list->lettersSpacing = list->template.lettersSpacing; + list->fontId = list->template.fontId; + list->overrideEnabled = FALSE; + if (list->template.totalItems < list->template.maxShowed) + list->template.maxShowed = list->template.totalItems; + ListMenuCursorSetColor( + list->cursor, +// MakeFontColor(list->template.cursorPal, list->template.cursorShadowPal, list->fillValue) + (u32)( + ((u32)(list->template.cursorPal << 24) >> 8) + | ((u32)(list->template.cursorShadowPal << 24) >> 16) + | ((u32)(list->template.fillValue << 24) >> 24) + ) + ); + FillWindowPixelBuffer(list->template.window, list->template.fillValue); + ListMenuPrintEntries(list, list->cursorPos, 0, list->template.maxShowed); + ListMenuDrawCursor(list); + ListMenuCallSelectionChangedCallback(list, TRUE); + CopyWindowToVram(template->window); + return list; +} + +THUMB_FUNC s32 ListMenu_ProcessInput(struct ListMenu * list) +{ + list->unk_33 = 0; + + if (gMain.newKeys & REG_PAD_KEYINPUT_A_MASK) { + return list->template.items[list->cursorPos + list->itemsAbove].value; + } + else if (gMain.newKeys & REG_PAD_KEYINPUT_B_MASK) { + return LIST_CANCEL; + } + else if (gMain.newAndRepeatedKeys & REG_PAD_KEYINPUT_UP_MASK) { + if (!ListMenuChangeSelection(list, TRUE, 1, FALSE)) + list->unk_33 = 1; + return LIST_NOTHING_CHOSEN; + } + else if (gMain.newAndRepeatedKeys & REG_PAD_KEYINPUT_DOWN_MASK) { + if (!ListMenuChangeSelection(list, TRUE, 1, TRUE)) + list->unk_33 = 2; + return LIST_NOTHING_CHOSEN; + } + else + { + u16 rightButton, leftButton; + switch (list->template.scrollMultiple) + { + case LIST_NO_MULTIPLE_SCROLL: + default: + leftButton = FALSE; + rightButton = FALSE; + break; + case LIST_MULTIPLE_SCROLL_DPAD: + leftButton = (u16)(gMain.newAndRepeatedKeys & REG_PAD_KEYINPUT_LEFT_MASK); + rightButton = (u16)(gMain.newAndRepeatedKeys & REG_PAD_KEYINPUT_RIGHT_MASK); + break; + case LIST_MULTIPLE_SCROLL_L_R: + leftButton = (u16)(gMain.newAndRepeatedKeys & REG_PAD_KEYINPUT_L_MASK); + rightButton = (u16)(gMain.newAndRepeatedKeys & REG_PAD_KEYINPUT_R_MASK); + break; + } + if (leftButton) + { + if (!ListMenuChangeSelection(list, TRUE, (u8)list->template.maxShowed, FALSE)) + list->unk_33 = 3; + return LIST_NOTHING_CHOSEN; + } + else if (rightButton) + { + if (!ListMenuChangeSelection(list, TRUE, (u8)list->template.maxShowed, TRUE)) + list->unk_33 = 4; + return LIST_NOTHING_CHOSEN; + } + else + { + return LIST_NOTHING_CHOSEN; + } + } +} + +THUMB_FUNC void DestroyListMenu(struct ListMenu * list, u16 * cursorPos, u16 * itemsAbove) +{ + if (cursorPos != NULL) + *cursorPos = list->cursorPos; + if (itemsAbove != NULL) + *itemsAbove = list->itemsAbove; + DestroyListMenuCursorObj(list->cursor); + FreeToHeapExplicit(list->heap_id, list); +} + +THUMB_FUNC void RedrawListMenu(struct ListMenu * list) +{ + FillWindowPixelBuffer(list->template.window, list->template.fillValue); + ListMenuPrintEntries(list, list->cursorPos, 0, list->template.maxShowed); + ListMenuDrawCursor(list); + CopyWindowToVram(list->template.window); +} + +THUMB_FUNC s32 ListMenuTestInputInternal(struct ListMenu * list, const struct ListMenuTemplate * template, u16 cursorPos, u16 itemsAbove, u16 updateFlag, u16 input, u16 *newCursorPos, u16 *newItemsAbove) +{ + if (template != NULL) + list->template = *template; + list->cursorPos = cursorPos; + list->itemsAbove = itemsAbove; + list->unk_30 = 0; + list->unk_31 = 0; + + if (input == REG_PAD_KEYINPUT_UP_MASK) + { + ListMenuChangeSelection(list, (u8)updateFlag, 1, FALSE); + } + else if (input == REG_PAD_KEYINPUT_DOWN_MASK) + { + ListMenuChangeSelection(list, (u8)updateFlag, 1, TRUE); + } + if (newCursorPos != NULL) + { + *newCursorPos = list->cursorPos; + } + if (newItemsAbove != NULL) + { + *newItemsAbove = list->itemsAbove; + } + return -1; +} + +THUMB_FUNC s32 ListMenuTestInput(struct ListMenu * list, const struct ListMenuTemplate * template, u16 cursorPos, u16 itemsAbove, u16 input, u16 *newCursorPos, u16 *newItemsAbove) +{ + return ListMenuTestInputInternal(list, template, cursorPos, itemsAbove, FALSE, input, newCursorPos, newItemsAbove); +} + +THUMB_FUNC void ListMenuOverrideSetColors(struct ListMenu * list, u8 cursorPal, u8 fillValue, u8 cursorShadowPal) +{ + list->cursorPal = cursorPal; + list->fillValue = fillValue; + list->cursorShadowPal = cursorShadowPal; + list->overrideEnabled = TRUE; +} + +THUMB_FUNC void ListMenuGetCurrentItemArrayId(struct ListMenu * list, u16 * index_p) +{ + *index_p = (u16)(list->cursorPos + list->itemsAbove); +} + +THUMB_FUNC void ListMenuGetScrollAndRow(struct ListMenu * list, u16 * cursorPos_p, u16 * itemsAbove_p) +{ + if (cursorPos_p != NULL) + *cursorPos_p = list->cursorPos; + if (itemsAbove_p != NULL) + *itemsAbove_p = list->itemsAbove; +} + +THUMB_FUNC u8 ListMenuGetUnk33(struct ListMenu * list) +{ + return list->unk_33; +} + +THUMB_FUNC s32 ListMenuGetValueByArrayId(struct ListMenu * list, s32 index) +{ + return list->template.items[index].value; +} + +THUMB_FUNC s32 ListMenuGetTemplateField(struct ListMenu * list, u32 attr) +{ + switch (attr) + { + case 0: + return (s32)list->template.moveCursorFunc; + case 1: + return (s32)list->template.itemPrintFunc; + case 2: + return (s32)list->template.totalItems; + case 3: + return (s32)list->template.maxShowed; + case 4: + break; + case 5: + return (s32)list->template.header_X; + case 6: + return (s32)list->template.item_X; + case 7: + return (s32)list->template.cursor_X; + case 8: + return (s32)list->template.upText_Y; + case 9: + return GetFontAttribute((u8)list->template.fontId, 1) + list->template.itemVerticalPadding; + case 10: + return (s32)list->template.cursorPal; + case 11: + return (s32)list->template.fillValue; + case 12: + return (s32)list->template.cursorShadowPal; + case 13: + return (s32)list->template.lettersSpacing; + case 14: + return (s32)list->template.itemVerticalPadding; + case 15: + return (s32)list->template.scrollMultiple; + case 16: + return (s32)list->template.fontId; + case 17: + return (s32)list->template.cursorKind; + case 18: + return (s32)list->template.window; + case 19: + return (s32)list->template.unk_1C; + } + + return -1; +} + +THUMB_FUNC void ListMenuSetTemplateField(struct ListMenu * list, u32 attr, s32 value) +{ + switch (attr) + { + case 0: + list->template.moveCursorFunc = (LM_MoveCursorFunc_t)value; + break; + case 1: + list->template.itemPrintFunc = (LM_ItemPrintFunc_t)value; + break; + case 2: + list->template.totalItems = (u16)value; + break; + case 3: + list->template.maxShowed = (u16)value; + break; + case 4: + break; + case 5: + list->template.header_X = (u8)value; + break; + case 6: + list->template.item_X = (u8)value; + break; + case 7: + list->template.cursor_X = (u8)value; + break; + case 8: + list->template.upText_Y = (u8)value; + break; + case 9: + break; + case 10: + list->template.cursorPal = (u8)value; + break; + case 11: + list->template.fillValue = (u8)value; + break; + case 12: + list->template.cursorShadowPal = (u8)value; + break; + case 13: + list->template.lettersSpacing = (u8)value; + break; + case 14: + list->template.itemVerticalPadding = (u8)value; + break; + case 15: + list->template.scrollMultiple = (u8)value; + break; + case 16: + list->template.fontId = (u8)value; + break; + case 17: + list->template.cursorKind = (u8)value; + break; + case 18: + list->template.window = (struct Window *)value; + break; + case 19: + list->template.unk_1C = (u32)value; + break; + } +} + +THUMB_FUNC void ListMenuGetItemStr(struct ListMenu * list, struct ListMenuItem * items) +{ + list->template.items = items; +} + +THUMB_FUNC void ListMenuPrint(struct ListMenu * list, struct String * str, u8 x, u8 y) +{ + if (str != NULL) + { + if (list->overrideEnabled) + { + AddTextPrinterParameterized3(list->template.window, list->fontId, str, x, y, 0xFF, MakeFontColor(list->cursorPal, list->cursorShadowPal, list->fillValue), list->lettersSpacing, 0, NULL); + } + else + { + AddTextPrinterParameterized3(list->template.window, list->template.fontId, str, x, y, 0xFF, MakeFontColor(list->template.cursorPal, list->template.cursorShadowPal, list->template.fillValue), list->template.lettersSpacing, 0, NULL); + } + } +} + +THUMB_FUNC void ListMenuPrintEntries(struct ListMenu * list, u16 startIndex, u16 yOffset, u16 count) +{ + s32 i; + u8 x, y; + u8 yMultiplier = (u8)(GetFontAttribute((u8)list->template.fontId, 1) + list->template.itemVerticalPadding); + + for (i = 0; i < count; i++) + { + if (list->template.items[startIndex].value != LIST_HEADER) + x = list->template.item_X; + else + x = list->template.header_X; + y = (u8)((yOffset + i) * yMultiplier + list->template.upText_Y); + if (list->template.itemPrintFunc != NULL) + list->template.itemPrintFunc(list, list->template.items[startIndex].value, y); + ListMenuPrint(list, list->template.items[startIndex].text, x, y); + startIndex++; + } +} + +THUMB_FUNC void ListMenuDrawCursor(struct ListMenu * list) +{ + u8 yMultiplier = (u8)(GetFontAttribute((u8)list->template.fontId, 1) + list->template.itemVerticalPadding); + u8 x = list->template.cursor_X; + u8 y = (u8)(list->itemsAbove * yMultiplier + list->template.upText_Y); + switch (list->template.cursorKind) + { + case 0: + ListMenuUpdateCursorObj(list->cursor, list->template.window, x, y); + break; + case 1: + case 2: // leftover + case 3: // leftover + break; + } +} + +THUMB_FUNC void ListMenuErasePrintedCursor(struct ListMenu * list, u16 itemsAbove) +{ + switch (list->template.cursorKind) + { + case 0: + u8 yMultiplier = (u8)(GetFontAttribute(list->template.fontId, 1) + list->template.itemVerticalPadding); + u8 width = 8; + u8 height = 16; + FillWindowPixelRect(list->template.window, + list->template.fillValue, + list->template.cursor_X, + (u16)(itemsAbove * yMultiplier + list->template.upText_Y), + width, + height); + break; + case 1: + case 2: // leftover + case 3: // leftover + break; + } +} + +THUMB_FUNC u8 ListMenuUpdateSelectedRowIndexAndScrollOffset(struct ListMenu *list, u8 movingDown) +{ + u32 cursorPos; + u16 itemsAbove; + u16 newRow; + + itemsAbove = list->itemsAbove; + cursorPos = list->cursorPos; + + if (!movingDown) + { + if (list->template.maxShowed == 1) + newRow = 0; + else + newRow = (u16)(list->template.maxShowed - ((list->template.maxShowed / 2) + (list->template.maxShowed % 2)) - 1); + + if (cursorPos == 0) + { + while (itemsAbove != 0) + { + itemsAbove--; + if (list->template.items[cursorPos + itemsAbove].value != LIST_HEADER) + { + list->itemsAbove = itemsAbove; + return 1; + } + } + return 0; + } + else + { + while (itemsAbove > newRow) + { + itemsAbove--; + if (list->template.items[cursorPos + itemsAbove].value != LIST_HEADER) + { + list->itemsAbove = itemsAbove; + return 1; + } + } + list->itemsAbove = newRow; + list->cursorPos = (u16)(cursorPos - 1); + } + } + else + { + if (list->template.maxShowed == 1) + newRow = 0; + else + newRow = (u16)((list->template.maxShowed / 2) + (list->template.maxShowed % 2)); + + if (cursorPos == list->template.totalItems - list->template.maxShowed) + { + while (itemsAbove < list->template.maxShowed - 1) + { + itemsAbove++; + if (list->template.items[cursorPos + itemsAbove].value != LIST_HEADER) + { + list->itemsAbove = itemsAbove; + return 1; + } + } + return 0; + } + else + { + while (itemsAbove < newRow) + { + itemsAbove++; + if (list->template.items[cursorPos + itemsAbove].value != LIST_HEADER) + { + list->itemsAbove = itemsAbove; + return 1; + } + } + list->itemsAbove = newRow; + list->cursorPos = (u16)(cursorPos + 1); + } + } + return 2; +} + +THUMB_FUNC void ListMenuScroll(struct ListMenu * list, u8 count, u8 movingDown) +{ + if (count >= list->template.maxShowed) + { + FillWindowPixelBuffer(list->template.window, list->template.fillValue); + ListMenuPrintEntries(list, list->cursorPos, 0, list->template.maxShowed); + } + else + { + u8 yMultiplier = (u8)(GetFontAttribute((u8)list->template.fontId, 1) + list->template.itemVerticalPadding); + + if (!movingDown) + { + u16 y, width, height; + + ScrollWindow(list->template.window, 1, (u8)(count * yMultiplier), (u8)((list->template.fillValue << 4) | list->template.fillValue)); + ListMenuPrintEntries(list, list->cursorPos, 0, count); + + y = (u16)((list->template.maxShowed * yMultiplier) + list->template.upText_Y); + width = GetWindowWidth(list->template.window); + height = GetWindowHeight(list->template.window); + FillWindowPixelRect(list->template.window, + list->template.fillValue, + 0, y, (u16)(width * 8), (u16)(height * 8 - y)); + } + else + { + u32 width; + + ScrollWindow(list->template.window, 0, (u8)(count * yMultiplier), (u8)((list->template.fillValue << 4) | list->template.fillValue)); + ListMenuPrintEntries(list, (u16)(list->cursorPos + (list->template.maxShowed - count)), (u16)(list->template.maxShowed - count), count); + + width = GetWindowWidth(list->template.window); + FillWindowPixelRect(list->template.window, + list->template.fillValue, + 0, 0, (u16)(width * 8), list->template.upText_Y); + } + } +} + +THUMB_FUNC BOOL ListMenuChangeSelection(struct ListMenu * list, u8 updateCursorAndCallCallback, u8 count, u8 movingDown) +{ + u16 oldSelectedRow; + u8 selectionChange, i, cursorCount; + + oldSelectedRow = list->itemsAbove; + cursorCount = 0; + selectionChange = 0; + for (i = 0; i < count; i++) + { + do + { + u8 ret = ListMenuUpdateSelectedRowIndexAndScrollOffset(list, movingDown); + + selectionChange |= ret; + if (ret != 2) + break; + cursorCount++; + } + while (list->template.items[list->cursorPos + list->itemsAbove].value == LIST_HEADER); + } + + if (updateCursorAndCallCallback) + { + switch (selectionChange) + { + case 0: + default: + return TRUE; + case 1: + ListMenuErasePrintedCursor(list, oldSelectedRow); + ListMenuDrawCursor(list); + ListMenuCallSelectionChangedCallback(list, FALSE); + CopyWindowToVram(list->template.window); + break; + case 2: + case 3: + ListMenuErasePrintedCursor(list, oldSelectedRow); + ListMenuScroll(list, cursorCount, movingDown); + ListMenuDrawCursor(list); + ListMenuCallSelectionChangedCallback(list, FALSE); + CopyWindowToVram(list->template.window); + break; + } + } + return FALSE; +} + +THUMB_FUNC void ListMenuCallSelectionChangedCallback(struct ListMenu * list, u8 onInit) +{ + if (list->template.moveCursorFunc != NULL) + { + list->template.moveCursorFunc(list, list->template.items[list->cursorPos + list->itemsAbove].value, onInit); + } +} + +THUMB_FUNC void ListMenuCopyToVram(struct ListMenu * list) +{ + CopyWindowToVram(list->template.window); +} diff --git a/arm9/src/list_menu_items.c b/arm9/src/list_menu_items.c new file mode 100644 index 00000000..3aa5b0a0 --- /dev/null +++ b/arm9/src/list_menu_items.c @@ -0,0 +1,92 @@ +#include "global.h" +#include "list_menu_items.h" +#include "msgdata.h" +#include "heap.h" + +void ListMenuItems_DestroyMenuStrings(struct ListMenuItem * items); + +THUMB_FUNC struct ListMenuItem * ListMenuItems_ctor(u32 count, u32 heap_id) +{ + s32 i; + struct ListMenuItem * ret = AllocFromHeap(heap_id, (count + 1) * sizeof(struct ListMenuItem)); + if (ret != NULL) + { + for (i = 0; i < count; i++) + { + ret[i].text = NULL; + ret[i].value = 0; + } + ret[i].text = (struct String *)-1u; + ret[i].value = (s32)heap_id; + } + return ret; +} + +THUMB_FUNC void ListMenuItems_dtor(struct ListMenuItem * items) +{ + ListMenuItems_DestroyMenuStrings(items); + FreeToHeap(items); +} + +THUMB_FUNC void ListMenuItems_AppendFromMsgData(struct ListMenuItem * items, struct MsgData * msgData, u32 msgNo, s32 value) +{ + u32 heap_id; + struct ListMenuItem * newItem = ListMenuItems_SeekEnd(items, &heap_id); + if (newItem != NULL) + { + newItem->text = NewString_ReadMsgData(msgData, msgNo); + newItem->value = value; + } +} + +THUMB_FUNC void ListMenuItems_AddItem(struct ListMenuItem * items, struct String * str, s32 value) +{ + u32 heap_id; + struct ListMenuItem * newItem = ListMenuItems_SeekEnd(items, &heap_id); + if (newItem != NULL) + { + newItem->text = StringDup(str, heap_id); + newItem->value = value; + } +} + +THUMB_FUNC void ListMenuItems_CopyItem(struct ListMenuItem * items, struct ListMenuItem * src) +{ + u32 heap_id; + struct ListMenuItem * newItem = ListMenuItems_SeekEnd(items, &heap_id); + if (newItem != NULL) + { + newItem->text = src->text; + newItem->value = src->value; + } +} + +THUMB_FUNC struct ListMenuItem * ListMenuItems_SeekEnd(struct ListMenuItem * items, u32 * heap_id_p) +{ + struct ListMenuItem * ret; + for (; items->text != NULL; items++) + { + if (items->text == (struct String *)-1u) + { + GF_ASSERT(0); + return NULL; + } + } + ret = items; + for (; items->text != (struct String *)-1u; items++) + ; + *heap_id_p = (u32)items->value; + return ret; +} + +THUMB_FUNC void ListMenuItems_DestroyMenuStrings(struct ListMenuItem * items) +{ + s32 i; + for (i = 0; items[i].text != (struct String *)-1u; i++) + { + if (items[i].text == NULL) + break; + String_dtor(items[i].text); + items[i].text = NULL; + } +} diff --git a/arm9/src/main.c b/arm9/src/main.c index c50fbaff..749bec41 100644 --- a/arm9/src/main.c +++ b/arm9/src/main.c @@ -12,32 +12,25 @@ #include "player_data.h" #include "sound.h" #include "timer3.h" +#include "unk_02031734.h" +#include "unk_0202F150.h" +#include "module_52.h" FS_EXTERN_OVERLAY(MODULE_52); FS_EXTERN_OVERLAY(MODULE_63); #define SOFT_RESET_KEY (PAD_BUTTON_L | PAD_BUTTON_R | PAD_BUTTON_START | PAD_BUTTON_SELECT) -struct Unk2106FA0 gBacklightTop; +s32 UNK_02016FA4; +PMBackLightSwitch gBacklightTop; +struct UnkStruct_02016FA8 UNK_02016FA8; -extern BOOL OverlayManager_new(struct Unk21DBE18 *, s32 *, int); -extern BOOL OverlayManager_Run(int); -extern void OverlayManager_delete(int); -extern BOOL FUN_02033678(void); -extern u32 FUN_020335B8(void); -extern BOOL FUN_0202FB80(void); - -extern void InitSystemForTheGame(void); -extern void InitGraphicMemory(void); extern void FUN_02022294(void); extern void GF_InitRTCWork(void); extern void FUN_02002C14(void); extern void FUN_02002C50(int, int); -extern struct SaveBlock2 * SaveBlock2_new(void); -extern void * FUN_02029EF8(struct SaveBlock2 *); extern int FUN_020337E8(int); extern void FUN_02034188(int, int); -extern int FUN_020227FC(struct SaveBlock2 *); extern void FUN_02089D90(int); extern void FUN_0200A2AC(void); extern void FUN_02015E30(void); @@ -49,13 +42,13 @@ extern void FUN_0200A318(void); extern void FUN_0200E2D8(void); extern struct Unk21DBE18 MOD63_021DBE18; -extern struct Unk21DBE18 MOD52_021D76C8; extern u8 SDK_STATIC_BSS_START[]; -const int gGameVersion = GAME_VERSION; const int gGameLanguage = GAME_LANGUAGE; +const int gGameVersion = GAME_VERSION; +__declspec(noreturn) THUMB_FUNC void NitroMain(void) { InitSystemForTheGame(); @@ -72,13 +65,13 @@ THUMB_FUNC void NitroMain(void) FUN_02002C50(0, 3); FUN_02002C50(1, 3); FUN_02002C50(3, 3); - gBacklightTop.unk18 = -1; - gBacklightTop.unk20 = SaveBlock2_new(); - InitSoundData(FUN_02029EF8(gBacklightTop.unk20), Sav2_PlayerData_GetOptionsAddr(gBacklightTop.unk20)); + UNK_02016FA8.unk10 = -1; + UNK_02016FA8.unk18 = SaveBlock2_new(); + InitSoundData(Sav2_Chatot_get(UNK_02016FA8.unk18), Sav2_PlayerData_GetOptionsAddr(UNK_02016FA8.unk18)); Init_Timer3(); if (FUN_020337E8(3) == 3) FUN_02034188(3, 0); - if (FUN_020227FC(gBacklightTop.unk20) == 0) + if (FUN_020227FC(UNK_02016FA8.unk18) == 0) { FUN_02089D90(0); } @@ -88,12 +81,12 @@ THUMB_FUNC void NitroMain(void) { case 0: // Title Demo - gBacklightTop.unk1C = 0; + UNK_02016FA8.unk14 = 0; RegisterMainOverlay(FS_OVERLAY_ID(MODULE_63), &MOD63_021DBE18); break; case 1: // Reset transition? - gBacklightTop.unk1C = 1; + UNK_02016FA8.unk14 = 1; RegisterMainOverlay(FS_OVERLAY_ID(MODULE_52), &MOD52_021D76C8); break; default: @@ -106,7 +99,7 @@ THUMB_FUNC void NitroMain(void) InitializeMainRNG(); FUN_0200A2AC(); FUN_02015E30(); - gBacklightTop.unk4 = 0; + UNK_02016FA4 = 0; for (;;) { FUN_02000EE8(); @@ -145,40 +138,40 @@ THUMB_FUNC void NitroMain(void) THUMB_FUNC void FUN_02000DF4(void) { - gBacklightTop.unk8 = (FSOverlayID)-1; - gBacklightTop.unkC = 0; - gBacklightTop.unk10 = (FSOverlayID)-1; // overlay invalid - gBacklightTop.unk14 = NULL; + UNK_02016FA8.unk0 = SDK_OVERLAY_INVALID_ID; + UNK_02016FA8.unk4 = NULL; + UNK_02016FA8.unk8 = SDK_OVERLAY_INVALID_ID; // overlay invalid + UNK_02016FA8.unkC = NULL; } THUMB_FUNC void Main_RunOverlayManager(void) { - if (!gBacklightTop.unkC) + if (UNK_02016FA8.unk4 == NULL) { - if (gBacklightTop.unk14 == NULL) + if (UNK_02016FA8.unkC == NULL) return; - if (gBacklightTop.unk10 != SDK_OVERLAY_INVALID_ID) - HandleLoadOverlay(gBacklightTop.unk10, 0); - gBacklightTop.unk8 = gBacklightTop.unk10; - gBacklightTop.unkC = OverlayManager_new(gBacklightTop.unk14, &gBacklightTop.unk18, 0); - gBacklightTop.unk10 = SDK_OVERLAY_INVALID_ID; - gBacklightTop.unk14 = NULL; + if (UNK_02016FA8.unk8 != SDK_OVERLAY_INVALID_ID) + HandleLoadOverlay(UNK_02016FA8.unk8, 0); + UNK_02016FA8.unk0 = UNK_02016FA8.unk8; + UNK_02016FA8.unk4 = OverlayManager_new(UNK_02016FA8.unkC, &UNK_02016FA8.unk10, 0); + UNK_02016FA8.unk8 = SDK_OVERLAY_INVALID_ID; + UNK_02016FA8.unkC = NULL; } - if (OverlayManager_Run(gBacklightTop.unkC)) + if (OverlayManager_Run(UNK_02016FA8.unk4)) { - OverlayManager_delete(gBacklightTop.unkC); - gBacklightTop.unkC = 0; - if (gBacklightTop.unk8 != SDK_OVERLAY_INVALID_ID) - UnloadOverlayByID(gBacklightTop.unk8); + OverlayManager_delete(UNK_02016FA8.unk4); + UNK_02016FA8.unk4 = NULL; + if (UNK_02016FA8.unk0 != SDK_OVERLAY_INVALID_ID) + UnloadOverlayByID(UNK_02016FA8.unk0); } } -THUMB_FUNC void RegisterMainOverlay(FSOverlayID id, struct Unk21DBE18 * arg1) +THUMB_FUNC void RegisterMainOverlay(FSOverlayID id, const struct Unk21DBE18 * arg1) { - if (gBacklightTop.unk14 != NULL) - ErrorHandling(); - gBacklightTop.unk10 = id; - gBacklightTop.unk14 = arg1; + if (UNK_02016FA8.unkC != NULL) + GF_AssertFail(); + UNK_02016FA8.unk8 = id; + UNK_02016FA8.unkC = arg1; } THUMB_FUNC void FUN_02000E9C(void) @@ -218,9 +211,8 @@ THUMB_FUNC void FUN_02000EE8(void) } extern void FUN_0200E3A0(PMLCDTarget, int); -extern BOOL FUN_02032DAC(void); -// No Return +__declspec(noreturn) THUMB_FUNC void DoSoftReset(u32 parameter) { FUN_0200E3A0(PM_LCD_TOP, 0x7FFF); @@ -257,7 +249,7 @@ THUMB_FUNC void FUN_02000F4C(u32 arg0, u32 arg1) { HandleDSLidAction(); FUN_02016464(); - if (gMain.unk48 & 1) + if (gMain.newKeys & 1) break; FUN_02000E9C(); } @@ -294,10 +286,10 @@ THUMB_FUNC void HandleDSLidAction(void) FUN_0201CE04(); if (CTRDG_IsPulledOut() == TRUE) { - gBacklightTop.unk4 = 1; + UNK_02016FA4 = 1; } { - int r1 = gBacklightTop.unk4; + int r1 = UNK_02016FA4; while (1) { PMWakeUpTrigger trigger = PM_TRIGGER_COVER_OPEN | PM_TRIGGER_CARD; @@ -311,7 +303,7 @@ THUMB_FUNC void HandleDSLidAction(void) } else if (PAD_DetectFold()) { - r1 = gBacklightTop.unk4 = 1; + r1 = UNK_02016FA4 = 1; } else break; @@ -331,6 +323,6 @@ THUMB_FUNC void HandleDSLidAction(void) { PM_GetBackLight(&top, &bottom); if (top == PM_BACKLIGHT_OFF) - PM_SetBackLight(PM_LCD_ALL, gBacklightTop.unk0); + PM_SetBackLight(PM_LCD_ALL, gBacklightTop); } } diff --git a/arm9/src/math_util.c b/arm9/src/math_util.c index 5aeb4f8e..ac3b77f0 100644 --- a/arm9/src/math_util.c +++ b/arm9/src/math_util.c @@ -1,129 +1,466 @@ #include "global.h" #include "math_util.h" -extern const s16 UNK_020FFA38[]; // temporary until further notice +extern const s16 FX_SinCosTable_[]; // temporary until further notice /* * Constant tables */ -const s32 gSineTable[] = +const fx32 gSineTable[] = { - 0x00000000, 0x00000047, 0x0000008F, 0x000000D6, - 0x0000011E, 0x00000165, 0x000001AC, 0x000001F3, - 0x0000023A, 0x00000281, 0x000002C7, 0x0000030E, - 0x00000354, 0x00000399, 0x000003DF, 0x00000424, - 0x00000469, 0x000004AE, 0x000004F2, 0x00000536, - 0x00000579, 0x000005BC, 0x000005FE, 0x00000640, - 0x00000682, 0x000006C3, 0x00000704, 0x00000744, - 0x00000783, 0x000007C2, 0x00000800, 0x0000083E, - 0x0000087B, 0x000008B7, 0x000008F2, 0x0000092D, - 0x00000968, 0x000009A1, 0x000009DA, 0x00000A12, - 0x00000A49, 0x00000A7F, 0x00000AB5, 0x00000AE9, - 0x00000B1D, 0x00000B50, 0x00000B82, 0x00000BB4, - 0x00000BE4, 0x00000C13, 0x00000C42, 0x00000C6F, - 0x00000C9C, 0x00000CC7, 0x00000CF2, 0x00000D1B, - 0x00000D44, 0x00000D6B, 0x00000D92, 0x00000DB7, - 0x00000DDB, 0x00000DFE, 0x00000E21, 0x00000E42, - 0x00000E61, 0x00000E80, 0x00000E9E, 0x00000EBA, - 0x00000ED6, 0x00000EF0, 0x00000F09, 0x00000F21, - 0x00000F38, 0x00000F4D, 0x00000F61, 0x00000F74, - 0x00000F86, 0x00000F97, 0x00000FA6, 0x00000FB5, - 0x00000FC2, 0x00000FCE, 0x00000FD8, 0x00000FE1, - 0x00000FEA, 0x00000FF0, 0x00000FF6, 0x00000FFA, - 0x00000FFE, 0x00000FFF, 0x00001000, 0x00000FFF, - 0x00000FFE, 0x00000FFA, 0x00000FF6, 0x00000FF0, - 0x00000FEA, 0x00000FE1, 0x00000FD8, 0x00000FCE, - 0x00000FC2, 0x00000FB5, 0x00000FA6, 0x00000F97, - 0x00000F86, 0x00000F74, 0x00000F61, 0x00000F4D, - 0x00000F38, 0x00000F21, 0x00000F09, 0x00000EF0, - 0x00000ED6, 0x00000EBA, 0x00000E9E, 0x00000E80, - 0x00000E61, 0x00000E42, 0x00000E21, 0x00000DFE, - 0x00000DDB, 0x00000DB7, 0x00000D92, 0x00000D6B, - 0x00000D44, 0x00000D1B, 0x00000CF2, 0x00000CC7, - 0x00000C9C, 0x00000C6F, 0x00000C42, 0x00000C13, - 0x00000BE4, 0x00000BB4, 0x00000B82, 0x00000B50, - 0x00000B1D, 0x00000AE9, 0x00000AB5, 0x00000A7F, - 0x00000A49, 0x00000A12, 0x000009DA, 0x000009A1, - 0x00000968, 0x0000092D, 0x000008F2, 0x000008B7, - 0x0000087B, 0x0000083E, 0x00000800, 0x000007C2, - 0x00000783, 0x00000744, 0x00000704, 0x000006C3, - 0x00000682, 0x00000640, 0x000005FE, 0x000005BC, - 0x00000579, 0x00000536, 0x000004F2, 0x000004AE, - 0x00000469, 0x00000424, 0x000003DF, 0x00000399, - 0x00000354, 0x0000030E, 0x000002C7, 0x00000281, - 0x0000023A, 0x000001F3, 0x000001AC, 0x00000165, - 0x0000011E, 0x000000D6, 0x0000008F, 0x00000047, - 0x00000000, 0xFFFFFFB9, 0xFFFFFF71, 0xFFFFFF2A, - 0xFFFFFEE2, 0xFFFFFE9B, 0xFFFFFE54, 0xFFFFFE0D, - 0xFFFFFDC6, 0xFFFFFD7F, 0xFFFFFD39, 0xFFFFFCF2, - 0xFFFFFCAC, 0xFFFFFC67, 0xFFFFFC21, 0xFFFFFBDC, - 0xFFFFFB97, 0xFFFFFB52, 0xFFFFFB0E, 0xFFFFFACA, - 0xFFFFFA87, 0xFFFFFA44, 0xFFFFFA02, 0xFFFFF9C0, - 0xFFFFF97E, 0xFFFFF93D, 0xFFFFF8FC, 0xFFFFF8BC, - 0xFFFFF87D, 0xFFFFF83E, 0xFFFFF800, 0xFFFFF7C2, - 0xFFFFF785, 0xFFFFF749, 0xFFFFF70E, 0xFFFFF6D3, - 0xFFFFF698, 0xFFFFF65F, 0xFFFFF626, 0xFFFFF5EE, - 0xFFFFF5B7, 0xFFFFF581, 0xFFFFF54B, 0xFFFFF517, - 0xFFFFF4E3, 0xFFFFF4B0, 0xFFFFF47E, 0xFFFFF44C, - 0xFFFFF41C, 0xFFFFF3ED, 0xFFFFF3BE, 0xFFFFF391, - 0xFFFFF364, 0xFFFFF339, 0xFFFFF30E, 0xFFFFF2E5, - 0xFFFFF2BC, 0xFFFFF295, 0xFFFFF26E, 0xFFFFF249, - 0xFFFFF225, 0xFFFFF202, 0xFFFFF1DF, 0xFFFFF1BE, - 0xFFFFF19F, 0xFFFFF180, 0xFFFFF162, 0xFFFFF146, - 0xFFFFF12A, 0xFFFFF110, 0xFFFFF0F7, 0xFFFFF0DF, - 0xFFFFF0C8, 0xFFFFF0B3, 0xFFFFF09F, 0xFFFFF08C, - 0xFFFFF07A, 0xFFFFF069, 0xFFFFF05A, 0xFFFFF04B, - 0xFFFFF03E, 0xFFFFF032, 0xFFFFF028, 0xFFFFF01F, - 0xFFFFF016, 0xFFFFF010, 0xFFFFF00A, 0xFFFFF006, - 0xFFFFF002, 0xFFFFF001, 0xFFFFF000, 0xFFFFF001, - 0xFFFFF002, 0xFFFFF006, 0xFFFFF00A, 0xFFFFF010, - 0xFFFFF016, 0xFFFFF01F, 0xFFFFF028, 0xFFFFF032, - 0xFFFFF03E, 0xFFFFF04B, 0xFFFFF05A, 0xFFFFF069, - 0xFFFFF07A, 0xFFFFF08C, 0xFFFFF09F, 0xFFFFF0B3, - 0xFFFFF0C8, 0xFFFFF0DF, 0xFFFFF0F7, 0xFFFFF110, - 0xFFFFF12A, 0xFFFFF146, 0xFFFFF162, 0xFFFFF180, - 0xFFFFF19F, 0xFFFFF1BE, 0xFFFFF1DF, 0xFFFFF202, - 0xFFFFF225, 0xFFFFF249, 0xFFFFF26E, 0xFFFFF295, - 0xFFFFF2BC, 0xFFFFF2E5, 0xFFFFF30E, 0xFFFFF339, - 0xFFFFF364, 0xFFFFF391, 0xFFFFF3BE, 0xFFFFF3ED, - 0xFFFFF41C, 0xFFFFF44C, 0xFFFFF47E, 0xFFFFF4B0, - 0xFFFFF4E3, 0xFFFFF517, 0xFFFFF54B, 0xFFFFF581, - 0xFFFFF5B7, 0xFFFFF5EE, 0xFFFFF626, 0xFFFFF65F, - 0xFFFFF698, 0xFFFFF6D3, 0xFFFFF70E, 0xFFFFF749, - 0xFFFFF785, 0xFFFFF7C2, 0xFFFFF800, 0xFFFFF83E, - 0xFFFFF87D, 0xFFFFF8BC, 0xFFFFF8FC, 0xFFFFF93D, - 0xFFFFF97E, 0xFFFFF9C0, 0xFFFFFA02, 0xFFFFFA44, - 0xFFFFFA87, 0xFFFFFACA, 0xFFFFFB0E, 0xFFFFFB52, - 0xFFFFFB97, 0xFFFFFBDC, 0xFFFFFC21, 0xFFFFFC67, - 0xFFFFFCAC, 0xFFFFFCF2, 0xFFFFFD39, 0xFFFFFD7F, - 0xFFFFFDC6, 0xFFFFFE0D, 0xFFFFFE54, 0xFFFFFE9B, - 0xFFFFFEE2, 0xFFFFFF2A, 0xFFFFFF71, 0xFFFFFFB9, - 0x00000000, 0x00000047, 0x0000008F, 0x000000D6, - 0x0000011E, 0x00000165, 0x000001AC, 0x000001F3, - 0x0000023A, 0x00000281, 0x000002C7, 0x0000030E, - 0x00000354, 0x00000399, 0x000003DF, 0x00000424, - 0x00000469, 0x000004AE, 0x000004F2, 0x00000536, - 0x00000579, 0x000005BC, 0x000005FE, 0x00000640, - 0x00000682, 0x000006C3, 0x00000704, 0x00000744, - 0x00000783, 0x000007C2, 0x00000800, 0x0000083E, - 0x0000087B, 0x000008B7, 0x000008F2, 0x0000092D, - 0x00000968, 0x000009A1, 0x000009DA, 0x00000A12, - 0x00000A49, 0x00000A7F, 0x00000AB5, 0x00000AE9, - 0x00000B1D, 0x00000B50, 0x00000B82, 0x00000BB4, - 0x00000BE4, 0x00000C13, 0x00000C42, 0x00000C6F, - 0x00000C9C, 0x00000CC7, 0x00000CF2, 0x00000D1B, - 0x00000D44, 0x00000D6B, 0x00000D92, 0x00000DB7, - 0x00000DDB, 0x00000DFE, 0x00000E21, 0x00000E42, - 0x00000E61, 0x00000E80, 0x00000E9E, 0x00000EBA, - 0x00000ED6, 0x00000EF0, 0x00000F09, 0x00000F21, - 0x00000F38, 0x00000F4D, 0x00000F61, 0x00000F74, - 0x00000F86, 0x00000F97, 0x00000FA6, 0x00000FB5, - 0x00000FC2, 0x00000FCE, 0x00000FD8, 0x00000FE1, - 0x00000FEA, 0x00000FF0, 0x00000FF6, 0x00000FFA, - 0x00000FFE, 0x00000FFF + FX32_CONST(0.0), // sin(0) + FX32_CONST(0.017333984375), // sin(1) + FX32_CONST(0.034912109375), // sin(2) + FX32_CONST(0.05224609375), // sin(3) + FX32_CONST(0.06982421875), // sin(4) + FX32_CONST(0.087158203125), // sin(5) + FX32_CONST(0.1044921875), // sin(6) + FX32_CONST(0.121826171875), // sin(7) + FX32_CONST(0.13916015625), // sin(8) + FX32_CONST(0.156494140625), // sin(9) + FX32_CONST(0.173583984375), // sin(10) + FX32_CONST(0.19091796875), // sin(11) + FX32_CONST(0.2080078125), // sin(12) + FX32_CONST(0.224853515625), // sin(13) + FX32_CONST(0.241943359375), // sin(14) + FX32_CONST(0.2587890625), // sin(15) + FX32_CONST(0.275634765625), // sin(16) + FX32_CONST(0.29248046875), // sin(17) + FX32_CONST(0.30908203125), // sin(18) + FX32_CONST(0.32568359375), // sin(19) + FX32_CONST(0.342041015625), // sin(20) + FX32_CONST(0.3583984375), // sin(21) + FX32_CONST(0.37451171875), // sin(22) + FX32_CONST(0.390625), // sin(23) + FX32_CONST(0.40673828125), // sin(24) + FX32_CONST(0.422607421875), // sin(25) + FX32_CONST(0.4384765625), // sin(26) + FX32_CONST(0.4541015625), // sin(27) + FX32_CONST(0.469482421875), // sin(28) + FX32_CONST(0.48486328125), // sin(29) + FX32_CONST(0.5), // sin(30) + FX32_CONST(0.51513671875), // sin(31) + FX32_CONST(0.530029296875), // sin(32) + FX32_CONST(0.544677734375), // sin(33) + FX32_CONST(0.55908203125), // sin(34) + FX32_CONST(0.573486328125), // sin(35) + FX32_CONST(0.587890625), // sin(36) + FX32_CONST(0.601806640625), // sin(37) + FX32_CONST(0.61572265625), // sin(38) + FX32_CONST(0.62939453125), // sin(39) + FX32_CONST(0.642822265625), // sin(40) + FX32_CONST(0.656005859375), // sin(41) + FX32_CONST(0.669189453125), // sin(42) + FX32_CONST(0.681884765625), // sin(43) + FX32_CONST(0.694580078125), // sin(44) + FX32_CONST(0.70703125), // sin(45) + FX32_CONST(0.71923828125), // sin(46) + FX32_CONST(0.7314453125), // sin(47) + FX32_CONST(0.7431640625), // sin(48) + FX32_CONST(0.754638671875), // sin(49) + FX32_CONST(0.76611328125), // sin(50) + FX32_CONST(0.777099609375), // sin(51) + FX32_CONST(0.7880859375), // sin(52) + FX32_CONST(0.798583984375), // sin(53) + FX32_CONST(0.80908203125), // sin(54) + FX32_CONST(0.819091796875), // sin(55) + FX32_CONST(0.8291015625), // sin(56) + FX32_CONST(0.838623046875), // sin(57) + FX32_CONST(0.84814453125), // sin(58) + FX32_CONST(0.857177734375), // sin(59) + FX32_CONST(0.865966796875), // sin(60) + FX32_CONST(0.87451171875), // sin(61) + FX32_CONST(0.883056640625), // sin(62) + FX32_CONST(0.89111328125), // sin(63) + FX32_CONST(0.898681640625), // sin(64) + FX32_CONST(0.90625), // sin(65) + FX32_CONST(0.91357421875), // sin(66) + FX32_CONST(0.92041015625), // sin(67) + FX32_CONST(0.92724609375), // sin(68) + FX32_CONST(0.93359375), // sin(69) + FX32_CONST(0.939697265625), // sin(70) + FX32_CONST(0.945556640625), // sin(71) + FX32_CONST(0.951171875), // sin(72) + FX32_CONST(0.956298828125), // sin(73) + FX32_CONST(0.961181640625), // sin(74) + FX32_CONST(0.9658203125), // sin(75) + FX32_CONST(0.97021484375), // sin(76) + FX32_CONST(0.974365234375), // sin(77) + FX32_CONST(0.97802734375), // sin(78) + FX32_CONST(0.981689453125), // sin(79) + FX32_CONST(0.98486328125), // sin(80) + FX32_CONST(0.98779296875), // sin(81) + FX32_CONST(0.990234375), // sin(82) + FX32_CONST(0.992431640625), // sin(83) + FX32_CONST(0.99462890625), // sin(84) + FX32_CONST(0.99609375), // sin(85) + FX32_CONST(0.99755859375), // sin(86) + FX32_CONST(0.99853515625), // sin(87) + FX32_CONST(0.99951171875), // sin(88) + FX32_CONST(0.999755859375), // sin(89) + FX32_CONST(1.0), // sin(90) + FX32_CONST(0.999755859375), // sin(91) + FX32_CONST(0.99951171875), // sin(92) + FX32_CONST(0.99853515625), // sin(93) + FX32_CONST(0.99755859375), // sin(94) + FX32_CONST(0.99609375), // sin(95) + FX32_CONST(0.99462890625), // sin(96) + FX32_CONST(0.992431640625), // sin(97) + FX32_CONST(0.990234375), // sin(98) + FX32_CONST(0.98779296875), // sin(99) + FX32_CONST(0.98486328125), // sin(100) + FX32_CONST(0.981689453125), // sin(101) + FX32_CONST(0.97802734375), // sin(102) + FX32_CONST(0.974365234375), // sin(103) + FX32_CONST(0.97021484375), // sin(104) + FX32_CONST(0.9658203125), // sin(105) + FX32_CONST(0.961181640625), // sin(106) + FX32_CONST(0.956298828125), // sin(107) + FX32_CONST(0.951171875), // sin(108) + FX32_CONST(0.945556640625), // sin(109) + FX32_CONST(0.939697265625), // sin(110) + FX32_CONST(0.93359375), // sin(111) + FX32_CONST(0.92724609375), // sin(112) + FX32_CONST(0.92041015625), // sin(113) + FX32_CONST(0.91357421875), // sin(114) + FX32_CONST(0.90625), // sin(115) + FX32_CONST(0.898681640625), // sin(116) + FX32_CONST(0.89111328125), // sin(117) + FX32_CONST(0.883056640625), // sin(118) + FX32_CONST(0.87451171875), // sin(119) + FX32_CONST(0.865966796875), // sin(120) + FX32_CONST(0.857177734375), // sin(121) + FX32_CONST(0.84814453125), // sin(122) + FX32_CONST(0.838623046875), // sin(123) + FX32_CONST(0.8291015625), // sin(124) + FX32_CONST(0.819091796875), // sin(125) + FX32_CONST(0.80908203125), // sin(126) + FX32_CONST(0.798583984375), // sin(127) + FX32_CONST(0.7880859375), // sin(128) + FX32_CONST(0.777099609375), // sin(129) + FX32_CONST(0.76611328125), // sin(130) + FX32_CONST(0.754638671875), // sin(131) + FX32_CONST(0.7431640625), // sin(132) + FX32_CONST(0.7314453125), // sin(133) + FX32_CONST(0.71923828125), // sin(134) + FX32_CONST(0.70703125), // sin(135) + FX32_CONST(0.694580078125), // sin(136) + FX32_CONST(0.681884765625), // sin(137) + FX32_CONST(0.669189453125), // sin(138) + FX32_CONST(0.656005859375), // sin(139) + FX32_CONST(0.642822265625), // sin(140) + FX32_CONST(0.62939453125), // sin(141) + FX32_CONST(0.61572265625), // sin(142) + FX32_CONST(0.601806640625), // sin(143) + FX32_CONST(0.587890625), // sin(144) + FX32_CONST(0.573486328125), // sin(145) + FX32_CONST(0.55908203125), // sin(146) + FX32_CONST(0.544677734375), // sin(147) + FX32_CONST(0.530029296875), // sin(148) + FX32_CONST(0.51513671875), // sin(149) + FX32_CONST(0.5), // sin(150) + FX32_CONST(0.48486328125), // sin(151) + FX32_CONST(0.469482421875), // sin(152) + FX32_CONST(0.4541015625), // sin(153) + FX32_CONST(0.4384765625), // sin(154) + FX32_CONST(0.422607421875), // sin(155) + FX32_CONST(0.40673828125), // sin(156) + FX32_CONST(0.390625), // sin(157) + FX32_CONST(0.37451171875), // sin(158) + FX32_CONST(0.3583984375), // sin(159) + FX32_CONST(0.342041015625), // sin(160) + FX32_CONST(0.32568359375), // sin(161) + FX32_CONST(0.30908203125), // sin(162) + FX32_CONST(0.29248046875), // sin(163) + FX32_CONST(0.275634765625), // sin(164) + FX32_CONST(0.2587890625), // sin(165) + FX32_CONST(0.241943359375), // sin(166) + FX32_CONST(0.224853515625), // sin(167) + FX32_CONST(0.2080078125), // sin(168) + FX32_CONST(0.19091796875), // sin(169) + FX32_CONST(0.173583984375), // sin(170) + FX32_CONST(0.156494140625), // sin(171) + FX32_CONST(0.13916015625), // sin(172) + FX32_CONST(0.121826171875), // sin(173) + FX32_CONST(0.1044921875), // sin(174) + FX32_CONST(0.087158203125), // sin(175) + FX32_CONST(0.06982421875), // sin(176) + FX32_CONST(0.05224609375), // sin(177) + FX32_CONST(0.034912109375), // sin(178) + FX32_CONST(0.017333984375), // sin(179) + FX32_CONST(0.0), // sin(180) + FX32_CONST(-0.017333984375), // sin(181) + FX32_CONST(-0.034912109375), // sin(182) + FX32_CONST(-0.05224609375), // sin(183) + FX32_CONST(-0.06982421875), // sin(184) + FX32_CONST(-0.087158203125), // sin(185) + FX32_CONST(-0.1044921875), // sin(186) + FX32_CONST(-0.121826171875), // sin(187) + FX32_CONST(-0.13916015625), // sin(188) + FX32_CONST(-0.156494140625), // sin(189) + FX32_CONST(-0.173583984375), // sin(190) + FX32_CONST(-0.19091796875), // sin(191) + FX32_CONST(-0.2080078125), // sin(192) + FX32_CONST(-0.224853515625), // sin(193) + FX32_CONST(-0.241943359375), // sin(194) + FX32_CONST(-0.2587890625), // sin(195) + FX32_CONST(-0.275634765625), // sin(196) + FX32_CONST(-0.29248046875), // sin(197) + FX32_CONST(-0.30908203125), // sin(198) + FX32_CONST(-0.32568359375), // sin(199) + FX32_CONST(-0.342041015625), // sin(200) + FX32_CONST(-0.3583984375), // sin(201) + FX32_CONST(-0.37451171875), // sin(202) + FX32_CONST(-0.390625), // sin(203) + FX32_CONST(-0.40673828125), // sin(204) + FX32_CONST(-0.422607421875), // sin(205) + FX32_CONST(-0.4384765625), // sin(206) + FX32_CONST(-0.4541015625), // sin(207) + FX32_CONST(-0.469482421875), // sin(208) + FX32_CONST(-0.48486328125), // sin(209) + FX32_CONST(-0.5), // sin(210) + FX32_CONST(-0.51513671875), // sin(211) + FX32_CONST(-0.530029296875), // sin(212) + FX32_CONST(-0.544677734375), // sin(213) + FX32_CONST(-0.55908203125), // sin(214) + FX32_CONST(-0.573486328125), // sin(215) + FX32_CONST(-0.587890625), // sin(216) + FX32_CONST(-0.601806640625), // sin(217) + FX32_CONST(-0.61572265625), // sin(218) + FX32_CONST(-0.62939453125), // sin(219) + FX32_CONST(-0.642822265625), // sin(220) + FX32_CONST(-0.656005859375), // sin(221) + FX32_CONST(-0.669189453125), // sin(222) + FX32_CONST(-0.681884765625), // sin(223) + FX32_CONST(-0.694580078125), // sin(224) + FX32_CONST(-0.70703125), // sin(225) + FX32_CONST(-0.71923828125), // sin(226) + FX32_CONST(-0.7314453125), // sin(227) + FX32_CONST(-0.7431640625), // sin(228) + FX32_CONST(-0.754638671875), // sin(229) + FX32_CONST(-0.76611328125), // sin(230) + FX32_CONST(-0.777099609375), // sin(231) + FX32_CONST(-0.7880859375), // sin(232) + FX32_CONST(-0.798583984375), // sin(233) + FX32_CONST(-0.80908203125), // sin(234) + FX32_CONST(-0.819091796875), // sin(235) + FX32_CONST(-0.8291015625), // sin(236) + FX32_CONST(-0.838623046875), // sin(237) + FX32_CONST(-0.84814453125), // sin(238) + FX32_CONST(-0.857177734375), // sin(239) + FX32_CONST(-0.865966796875), // sin(240) + FX32_CONST(-0.87451171875), // sin(241) + FX32_CONST(-0.883056640625), // sin(242) + FX32_CONST(-0.89111328125), // sin(243) + FX32_CONST(-0.898681640625), // sin(244) + FX32_CONST(-0.90625), // sin(245) + FX32_CONST(-0.91357421875), // sin(246) + FX32_CONST(-0.92041015625), // sin(247) + FX32_CONST(-0.92724609375), // sin(248) + FX32_CONST(-0.93359375), // sin(249) + FX32_CONST(-0.939697265625), // sin(250) + FX32_CONST(-0.945556640625), // sin(251) + FX32_CONST(-0.951171875), // sin(252) + FX32_CONST(-0.956298828125), // sin(253) + FX32_CONST(-0.961181640625), // sin(254) + FX32_CONST(-0.9658203125), // sin(255) + FX32_CONST(-0.97021484375), // sin(256) + FX32_CONST(-0.974365234375), // sin(257) + FX32_CONST(-0.97802734375), // sin(258) + FX32_CONST(-0.981689453125), // sin(259) + FX32_CONST(-0.98486328125), // sin(260) + FX32_CONST(-0.98779296875), // sin(261) + FX32_CONST(-0.990234375), // sin(262) + FX32_CONST(-0.992431640625), // sin(263) + FX32_CONST(-0.99462890625), // sin(264) + FX32_CONST(-0.99609375), // sin(265) + FX32_CONST(-0.99755859375), // sin(266) + FX32_CONST(-0.99853515625), // sin(267) + FX32_CONST(-0.99951171875), // sin(268) + FX32_CONST(-0.999755859375), // sin(269) + FX32_CONST(-1.0), // sin(270) + FX32_CONST(-0.999755859375), // sin(271) + FX32_CONST(-0.99951171875), // sin(272) + FX32_CONST(-0.99853515625), // sin(273) + FX32_CONST(-0.99755859375), // sin(274) + FX32_CONST(-0.99609375), // sin(275) + FX32_CONST(-0.99462890625), // sin(276) + FX32_CONST(-0.992431640625), // sin(277) + FX32_CONST(-0.990234375), // sin(278) + FX32_CONST(-0.98779296875), // sin(279) + FX32_CONST(-0.98486328125), // sin(280) + FX32_CONST(-0.981689453125), // sin(281) + FX32_CONST(-0.97802734375), // sin(282) + FX32_CONST(-0.974365234375), // sin(283) + FX32_CONST(-0.97021484375), // sin(284) + FX32_CONST(-0.9658203125), // sin(285) + FX32_CONST(-0.961181640625), // sin(286) + FX32_CONST(-0.956298828125), // sin(287) + FX32_CONST(-0.951171875), // sin(288) + FX32_CONST(-0.945556640625), // sin(289) + FX32_CONST(-0.939697265625), // sin(290) + FX32_CONST(-0.93359375), // sin(291) + FX32_CONST(-0.92724609375), // sin(292) + FX32_CONST(-0.92041015625), // sin(293) + FX32_CONST(-0.91357421875), // sin(294) + FX32_CONST(-0.90625), // sin(295) + FX32_CONST(-0.898681640625), // sin(296) + FX32_CONST(-0.89111328125), // sin(297) + FX32_CONST(-0.883056640625), // sin(298) + FX32_CONST(-0.87451171875), // sin(299) + FX32_CONST(-0.865966796875), // sin(300) + FX32_CONST(-0.857177734375), // sin(301) + FX32_CONST(-0.84814453125), // sin(302) + FX32_CONST(-0.838623046875), // sin(303) + FX32_CONST(-0.8291015625), // sin(304) + FX32_CONST(-0.819091796875), // sin(305) + FX32_CONST(-0.80908203125), // sin(306) + FX32_CONST(-0.798583984375), // sin(307) + FX32_CONST(-0.7880859375), // sin(308) + FX32_CONST(-0.777099609375), // sin(309) + FX32_CONST(-0.76611328125), // sin(310) + FX32_CONST(-0.754638671875), // sin(311) + FX32_CONST(-0.7431640625), // sin(312) + FX32_CONST(-0.7314453125), // sin(313) + FX32_CONST(-0.71923828125), // sin(314) + FX32_CONST(-0.70703125), // sin(315) + FX32_CONST(-0.694580078125), // sin(316) + FX32_CONST(-0.681884765625), // sin(317) + FX32_CONST(-0.669189453125), // sin(318) + FX32_CONST(-0.656005859375), // sin(319) + FX32_CONST(-0.642822265625), // sin(320) + FX32_CONST(-0.62939453125), // sin(321) + FX32_CONST(-0.61572265625), // sin(322) + FX32_CONST(-0.601806640625), // sin(323) + FX32_CONST(-0.587890625), // sin(324) + FX32_CONST(-0.573486328125), // sin(325) + FX32_CONST(-0.55908203125), // sin(326) + FX32_CONST(-0.544677734375), // sin(327) + FX32_CONST(-0.530029296875), // sin(328) + FX32_CONST(-0.51513671875), // sin(329) + FX32_CONST(-0.5), // sin(330) + FX32_CONST(-0.48486328125), // sin(331) + FX32_CONST(-0.469482421875), // sin(332) + FX32_CONST(-0.4541015625), // sin(333) + FX32_CONST(-0.4384765625), // sin(334) + FX32_CONST(-0.422607421875), // sin(335) + FX32_CONST(-0.40673828125), // sin(336) + FX32_CONST(-0.390625), // sin(337) + FX32_CONST(-0.37451171875), // sin(338) + FX32_CONST(-0.3583984375), // sin(339) + FX32_CONST(-0.342041015625), // sin(340) + FX32_CONST(-0.32568359375), // sin(341) + FX32_CONST(-0.30908203125), // sin(342) + FX32_CONST(-0.29248046875), // sin(343) + FX32_CONST(-0.275634765625), // sin(344) + FX32_CONST(-0.2587890625), // sin(345) + FX32_CONST(-0.241943359375), // sin(346) + FX32_CONST(-0.224853515625), // sin(347) + FX32_CONST(-0.2080078125), // sin(348) + FX32_CONST(-0.19091796875), // sin(349) + FX32_CONST(-0.173583984375), // sin(350) + FX32_CONST(-0.156494140625), // sin(351) + FX32_CONST(-0.13916015625), // sin(352) + FX32_CONST(-0.121826171875), // sin(353) + FX32_CONST(-0.1044921875), // sin(354) + FX32_CONST(-0.087158203125), // sin(355) + FX32_CONST(-0.06982421875), // sin(356) + FX32_CONST(-0.05224609375), // sin(357) + FX32_CONST(-0.034912109375), // sin(358) + FX32_CONST(-0.017333984375), // sin(359) + FX32_CONST(0.0), // sin(360) + FX32_CONST(0.017333984375), // sin(361) + FX32_CONST(0.034912109375), // sin(362) + FX32_CONST(0.05224609375), // sin(363) + FX32_CONST(0.06982421875), // sin(364) + FX32_CONST(0.087158203125), // sin(365) + FX32_CONST(0.1044921875), // sin(366) + FX32_CONST(0.121826171875), // sin(367) + FX32_CONST(0.13916015625), // sin(368) + FX32_CONST(0.156494140625), // sin(369) + FX32_CONST(0.173583984375), // sin(370) + FX32_CONST(0.19091796875), // sin(371) + FX32_CONST(0.2080078125), // sin(372) + FX32_CONST(0.224853515625), // sin(373) + FX32_CONST(0.241943359375), // sin(374) + FX32_CONST(0.2587890625), // sin(375) + FX32_CONST(0.275634765625), // sin(376) + FX32_CONST(0.29248046875), // sin(377) + FX32_CONST(0.30908203125), // sin(378) + FX32_CONST(0.32568359375), // sin(379) + FX32_CONST(0.342041015625), // sin(380) + FX32_CONST(0.3583984375), // sin(381) + FX32_CONST(0.37451171875), // sin(382) + FX32_CONST(0.390625), // sin(383) + FX32_CONST(0.40673828125), // sin(384) + FX32_CONST(0.422607421875), // sin(385) + FX32_CONST(0.4384765625), // sin(386) + FX32_CONST(0.4541015625), // sin(387) + FX32_CONST(0.469482421875), // sin(388) + FX32_CONST(0.48486328125), // sin(389) + FX32_CONST(0.5), // sin(390) + FX32_CONST(0.51513671875), // sin(391) + FX32_CONST(0.530029296875), // sin(392) + FX32_CONST(0.544677734375), // sin(393) + FX32_CONST(0.55908203125), // sin(394) + FX32_CONST(0.573486328125), // sin(395) + FX32_CONST(0.587890625), // sin(396) + FX32_CONST(0.601806640625), // sin(397) + FX32_CONST(0.61572265625), // sin(398) + FX32_CONST(0.62939453125), // sin(399) + FX32_CONST(0.642822265625), // sin(400) + FX32_CONST(0.656005859375), // sin(401) + FX32_CONST(0.669189453125), // sin(402) + FX32_CONST(0.681884765625), // sin(403) + FX32_CONST(0.694580078125), // sin(404) + FX32_CONST(0.70703125), // sin(405) + FX32_CONST(0.71923828125), // sin(406) + FX32_CONST(0.7314453125), // sin(407) + FX32_CONST(0.7431640625), // sin(408) + FX32_CONST(0.754638671875), // sin(409) + FX32_CONST(0.76611328125), // sin(410) + FX32_CONST(0.777099609375), // sin(411) + FX32_CONST(0.7880859375), // sin(412) + FX32_CONST(0.798583984375), // sin(413) + FX32_CONST(0.80908203125), // sin(414) + FX32_CONST(0.819091796875), // sin(415) + FX32_CONST(0.8291015625), // sin(416) + FX32_CONST(0.838623046875), // sin(417) + FX32_CONST(0.84814453125), // sin(418) + FX32_CONST(0.857177734375), // sin(419) + FX32_CONST(0.865966796875), // sin(420) + FX32_CONST(0.87451171875), // sin(421) + FX32_CONST(0.883056640625), // sin(422) + FX32_CONST(0.89111328125), // sin(423) + FX32_CONST(0.898681640625), // sin(424) + FX32_CONST(0.90625), // sin(425) + FX32_CONST(0.91357421875), // sin(426) + FX32_CONST(0.92041015625), // sin(427) + FX32_CONST(0.92724609375), // sin(428) + FX32_CONST(0.93359375), // sin(429) + FX32_CONST(0.939697265625), // sin(430) + FX32_CONST(0.945556640625), // sin(431) + FX32_CONST(0.951171875), // sin(432) + FX32_CONST(0.956298828125), // sin(433) + FX32_CONST(0.961181640625), // sin(434) + FX32_CONST(0.9658203125), // sin(435) + FX32_CONST(0.97021484375), // sin(436) + FX32_CONST(0.974365234375), // sin(437) + FX32_CONST(0.97802734375), // sin(438) + FX32_CONST(0.981689453125), // sin(439) + FX32_CONST(0.98486328125), // sin(440) + FX32_CONST(0.98779296875), // sin(441) + FX32_CONST(0.990234375), // sin(442) + FX32_CONST(0.992431640625), // sin(443) + FX32_CONST(0.99462890625), // sin(444) + FX32_CONST(0.99609375), // sin(445) + FX32_CONST(0.99755859375), // sin(446) + FX32_CONST(0.99853515625), // sin(447) + FX32_CONST(0.99951171875), // sin(448) + FX32_CONST(0.999755859375), // sin(449) }; -const u16 UNK_020EDC7E[] = // rotations? +static const u16 UNK_020EDC7E[] = // rotations? { 0x0000, 0x00B7, 0x016D, 0x0223, 0x02D9, 0x038F, 0x0445, 0x04FB, 0x05B1, 0x0667, 0x071D, 0x07D3, 0x0889, 0x093F, 0x09F5, 0x0AAB, 0x0B61, 0x0C17, 0x0CCD, 0x0D83, @@ -255,31 +592,41 @@ THUMB_FUNC s32 Sin32(s32 degrees) * Random number generators */ static u32 sMTRNG_State[624]; // Mersenne Twister seed storage/buffer +#ifdef NONMATCHING +// Using -ipa file makes the following hack unnecessary, +// but for some reason forces UNK_020EDC7E to align to +// word rather than short... +static u32 sLCRNG_State; +#define sMTRNG_State_2 sMTRNG_State +#else static union { u32 LC_State; // Linear-congruential seed storage/buffer u32 MTRNG_State[]; // Don't bother asking why Game Freak did this. Just don't. } sRNGHack; +#define sLCRNG_State sRNGHack.LC_State +#define sMTRNG_State_2 (sRNGHack.MTRNG_State + 1) +#endif // Returns the Linear-congruential buffer in full. THUMB_FUNC u32 GetLCRNGSeed() { - return sRNGHack.LC_State; + return sLCRNG_State; } // Initializes the Linear-congruential buffer with a 32-bit seed. THUMB_FUNC void SetLCRNGSeed(u32 seed) { - sRNGHack.LC_State = seed; + sLCRNG_State = seed; } // Calculates an unsigned 16-bit random integer using the Linear-congruential algorithm. THUMB_FUNC u16 LCRandom(void) { // cycle the RNG - sRNGHack.LC_State *= 0x41C64E6D; - sRNGHack.LC_State += 0x6073; - return (u16)(sRNGHack.LC_State / 65536); // shut up the compiler + sLCRNG_State *= 0x41C64E6D; + sLCRNG_State += 0x6073; + return (u16)(sLCRNG_State / 65536); // shut up the compiler } // Returns a cheap, psuedo-random unsigned 32-bit random integer from a seed. @@ -294,7 +641,7 @@ static u32 sMTRNG_XOR[2] = {0, 0x9908b0df}; // Mersenne Twister XOR mask table // Initializes the Mersenne Twister buffer with a 32-bit seed. THUMB_FUNC void SetMTRNGSeed(u32 seed) { - sRNGHack.MTRNG_State[0+1] = seed; + sMTRNG_State_2[0] = seed; for (sMTRNG_Cycles = 1; sMTRNG_Cycles < 624; sMTRNG_Cycles++) sMTRNG_State[sMTRNG_Cycles] = 1812433253 * (sMTRNG_State[sMTRNG_Cycles - 1] ^ (sMTRNG_State[sMTRNG_Cycles - 1] >> 30)) + sMTRNG_Cycles; @@ -310,7 +657,7 @@ THUMB_FUNC u32 MTRandom(void) { if (sMTRNG_Cycles == 625) SetMTRNGSeed(5489); - + for (i = 0; i < 227; i++) { val = (sMTRNG_State[i] & 0x80000000) | (sMTRNG_State[i + 1] & 0x7fffffff); @@ -321,20 +668,20 @@ THUMB_FUNC u32 MTRandom(void) val = (sMTRNG_State[i] & 0x80000000) | (sMTRNG_State[i + 1] & 0x7fffffff); sMTRNG_State[i] = sMTRNG_State[i + -227] ^ (val >> 1) ^ sMTRNG_XOR[val & 0x1]; } - - val = (sRNGHack.MTRNG_State[623+1] & 0x80000000) | (sRNGHack.MTRNG_State[0+1] & 0x7fffffff); - sRNGHack.MTRNG_State[623+1] = sRNGHack.MTRNG_State[396+1] ^ (val >> 1) ^ sMTRNG_XOR[val & 0x1]; + + val = (sMTRNG_State_2[623] & 0x80000000) | (sMTRNG_State_2[0] & 0x7fffffff); + sMTRNG_State_2[623] = sMTRNG_State_2[396] ^ (val >> 1) ^ sMTRNG_XOR[val & 0x1]; sMTRNG_Cycles = 0; } - + val = sMTRNG_State[sMTRNG_Cycles++]; // has to be this way in order to match - + val ^= val >> 11; val ^= (val << 7) & 0x9d2c5680; val ^= (val << 15) & 0xefc60000; val ^= val >> 18; - + return val; } @@ -350,8 +697,8 @@ THUMB_FUNC void MTX22_2DAffine(struct Mtx22 * mtx, u16 radians, fx32 x, fx32 y, radians = (u16)((u32)(radians * 65535) / 360); // shut up the compiler MTX_Rot22_(mtx, - UNK_020FFA38[((radians >> 4) * 2)], // TODO: macros - UNK_020FFA38[((radians >> 4) * 2) + 1]); // TODO: macros + FX_SinCosTable_[((radians >> 4) * 2)], // TODO: macros + FX_SinCosTable_[((radians >> 4) * 2) + 1]); // TODO: macros MTX_ScaleApply22(mtx, mtx, x, y); } diff --git a/arm9/src/overlay_manager.c b/arm9/src/overlay_manager.c index a59e15ac..0a03a87d 100644 --- a/arm9/src/overlay_manager.c +++ b/arm9/src/overlay_manager.c @@ -4,7 +4,7 @@ #include "heap.h" #include "overlay_manager.h" -THUMB_FUNC struct UnkStruct_02006234 * OverlayManager_new(struct Unk21DBE18 * ovly_mgr, int * a1, u32 heap_id) +THUMB_FUNC struct UnkStruct_02006234 * OverlayManager_new(const struct Unk21DBE18 * ovly_mgr, s32 * a1, u32 heap_id) { struct UnkStruct_02006234 * ret = (struct UnkStruct_02006234 *)AllocFromHeap(heap_id, sizeof(struct UnkStruct_02006234)); ret->ovly_mgr = *ovly_mgr; @@ -38,7 +38,7 @@ THUMB_FUNC void OverlayManager_FreeData(struct UnkStruct_02006234 * a0) a0->unk1C = NULL; } -THUMB_FUNC int * OverlayManager_GetField18(struct UnkStruct_02006234 * a0) +THUMB_FUNC s32 * OverlayManager_GetField18(struct UnkStruct_02006234 * a0) { return a0->unk18; } diff --git a/arm9/src/poke_overlay.c b/arm9/src/poke_overlay.c index 4dd98670..e11ecbb6 100644 --- a/arm9/src/poke_overlay.c +++ b/arm9/src/poke_overlay.c @@ -9,9 +9,9 @@ static struct LoadedOverlay gLoadedOverlays[3][8]; THUMB_FUNC void FreeOverlayAllocation(struct LoadedOverlay * loaded) { if (loaded->active != TRUE) - ErrorHandling(); + GF_AssertFail(); if (FS_UnloadOverlay(MI_PROCESSOR_ARM9, loaded->id) != TRUE) - ErrorHandling(); + GF_AssertFail(); loaded->active = FALSE; } @@ -35,7 +35,7 @@ THUMB_FUNC s32 GetOverlayLoadDestination(FSOverlayID id) u8 *end; u8 *start; if (FS_LoadOverlayInfo(&info, MI_PROCESSOR_ARM9, id) != TRUE) - ErrorHandling(); + GF_AssertFail(); start = (u8 *)HW_ITCM_IMAGE; end = (u8 *)HW_ITCM_END; if (info.header.ram_address <= end && info.header.ram_address >= start) @@ -72,7 +72,7 @@ THUMB_FUNC BOOL HandleLoadOverlay(FSOverlayID id, s32 a1) } if (r6 >= 8) { - ErrorHandling(); + GF_AssertFail(); return FALSE; } if (r7 == OVERLAY_LOAD_ITCM || r7 == OVERLAY_LOAD_DTCM) @@ -91,7 +91,7 @@ THUMB_FUNC BOOL HandleLoadOverlay(FSOverlayID id, s32 a1) result = LoadOverlayNoInitAsync(MI_PROCESSOR_ARM9, id); break; default: - ErrorHandling(); + GF_AssertFail(); return FALSE; } if (r7 == OVERLAY_LOAD_ITCM || r7 == OVERLAY_LOAD_DTCM) @@ -100,7 +100,7 @@ THUMB_FUNC BOOL HandleLoadOverlay(FSOverlayID id, s32 a1) } if (result == 0) { - ErrorHandling(); + GF_AssertFail(); return FALSE; } return TRUE; @@ -120,7 +120,7 @@ THUMB_FUNC BOOL CanOverlayBeLoaded(FSOverlayID id) { if ((start >= start2 && start < end2) || (end > start2 && end <= end2) || (start <= start2 && end >= end2)) { - ErrorHandling(); + GF_AssertFail(); return FALSE; } } @@ -146,7 +146,7 @@ THUMB_FUNC BOOL GetOverlayRamBounds(FSOverlayID id, void ** start, void ** end) { FSOverlayInfo info; if (!FS_LoadOverlayInfo(&info, MI_PROCESSOR_ARM9, id)) { - ErrorHandling(); + GF_AssertFail(); return FALSE; } *start = (void *)info.header.ram_address; diff --git a/arm9/src/pokedex.c b/arm9/src/pokedex.c index bd1ea254..d86afa6a 100644 --- a/arm9/src/pokedex.c +++ b/arm9/src/pokedex.c @@ -226,12 +226,11 @@ void Pokedex_InitSeenDeoxysFormesArray(struct Pokedex * pokedex) static inline BOOL HasUnownLetterBeenSeen(struct Pokedex * pokedex, u8 letter) { - u8 * arr; s32 i; + u8 * arr; for (i = 0, arr = (u8 *)pokedex; i < 28; i++, arr++) { - u8 val = arr[0x010C]; - if (letter == val) + if (letter == *(arr + 0x10C)) return TRUE; } return FALSE; @@ -239,12 +238,11 @@ static inline BOOL HasUnownLetterBeenSeen(struct Pokedex * pokedex, u8 letter) static inline s32 FindFirstAvailableUnownLetterSlot(struct Pokedex * pokedex) { - u8 * arr; s32 i; + u8 * arr; for (i = 0, arr = (u8 *)pokedex; i < 28; i++, arr++) { - u8 val = arr[0x010C]; - if (val == 0xFF) + if (*(arr + 0x10C) == 0xFF) break; } return i; @@ -320,26 +318,26 @@ s32 FUN_020242C8(struct Pokedex * pokedex, u16 species, s32 r4) return r1; } -const u16 sSinnohDexMythicalMons[] = { - SPECIES_MANAPHY -}; - -const u16 sNationalDexMythicalMons[] = { - SPECIES_MEW, - SPECIES_LUGIA, - SPECIES_HO_OH, - SPECIES_CELEBI, - SPECIES_JIRACHI, - SPECIES_DEOXYS, - SPECIES_PHIONE, - SPECIES_MANAPHY, - SPECIES_DARKRAI, - SPECIES_SHAYMIN, - SPECIES_ARCEUS -}; - BOOL Pokedex_SpeciesIsNotMythical(u16 species) { + static const u16 sSinnohDexMythicalMons[] = { + SPECIES_MANAPHY + }; + + static const u16 sNationalDexMythicalMons[] = { + SPECIES_MEW, + SPECIES_LUGIA, + SPECIES_HO_OH, + SPECIES_CELEBI, + SPECIES_JIRACHI, + SPECIES_DEOXYS, + SPECIES_PHIONE, + SPECIES_MANAPHY, + SPECIES_DARKRAI, + SPECIES_SHAYMIN, + SPECIES_ARCEUS + }; + s32 i; BOOL ret = TRUE; for (i = 0; i < (s32)NELEMS(sNationalDexMythicalMons); i++) diff --git a/arm9/src/pokemon.c b/arm9/src/pokemon.c index b3e53d1a..29075833 100644 --- a/arm9/src/pokemon.c +++ b/arm9/src/pokemon.c @@ -176,14 +176,14 @@ const s8 sNatureStatMods[][5] = { void ZeroMonData(struct Pokemon * pokemon) { - MIi_CpuClearFast(0, pokemon, sizeof(struct Pokemon)); + MI_CpuClearFast(pokemon, sizeof(struct Pokemon)); ENCRYPT_BOX(&pokemon->box); ENCRYPT_PTY(pokemon); } void ZeroBoxMonData(struct BoxPokemon * boxmon) { - MIi_CpuClearFast(0, boxmon, sizeof(struct BoxPokemon)); + MI_CpuClearFast(boxmon, sizeof(struct BoxPokemon)); ENCRYPT_BOX(boxmon); } @@ -272,7 +272,7 @@ void CreateMon(struct Pokemon * pokemon, int species, int level, int fixedIV, in FreeToHeap(mail); capsule = 0; SetMonData(pokemon, MON_DATA_CAPSULE, &capsule); - MIi_CpuClearFast(0, seal_coords, sizeof(seal_coords)); + MI_CpuClearFast(seal_coords, sizeof(seal_coords)); SetMonData(pokemon, MON_DATA_SEAL_COORDS, seal_coords); CalcMonLevelAndStats(pokemon); } @@ -3004,7 +3004,7 @@ void CopyBoxPokemonToPokemon(struct BoxPokemon * src, struct Pokemon * dest) SetMonData(dest, MON_DATA_MAIL_STRUCT, mail); FreeToHeap(mail); SetMonData(dest, MON_DATA_CAPSULE, &sp0); - MIi_CpuClearFast(0, &sp4, sizeof(sp4)); + MI_CpuClearFast(&sp4, sizeof(sp4)); SetMonData(dest, MON_DATA_SEAL_COORDS, &sp4); CalcMonLevelAndStats(dest); } @@ -3724,7 +3724,7 @@ void Pokemon_RemoveCapsule(struct Pokemon * pokemon) { u8 sp0 = 0; CapsuleArray sp1; - MIi_CpuClearFast(0, &sp1, sizeof(sp1)); + MI_CpuClearFast(&sp1, sizeof(sp1)); SetMonData(pokemon, MON_DATA_CAPSULE, &sp0); SetMonData(pokemon, MON_DATA_SEAL_COORDS, &sp1); } diff --git a/arm9/src/sav_chatot.c b/arm9/src/sav_chatot.c new file mode 100644 index 00000000..86786e66 --- /dev/null +++ b/arm9/src/sav_chatot.c @@ -0,0 +1,98 @@ +#include "global.h"
+#include "MI_memory.h"
+#include "heap.h"
+#include "sav_chatot.h"
+
+THUMB_FUNC u32 Sav2_Chatot_sizeof(void)
+{
+ return sizeof(struct SaveChatotSoundClip);
+}
+
+THUMB_FUNC void Sav2_Chatot_init(struct SaveChatotSoundClip * chatot)
+{
+ MI_CpuClear32(chatot, sizeof(struct SaveChatotSoundClip));
+ chatot->exists = FALSE;
+}
+
+THUMB_FUNC struct SaveChatotSoundClip * Chatot_new(u32 heap_id)
+{
+ struct SaveChatotSoundClip * ret = (struct SaveChatotSoundClip *)AllocFromHeap(heap_id, sizeof(struct SaveChatotSoundClip));
+ Sav2_Chatot_init(ret);
+ return ret;
+}
+
+THUMB_FUNC struct SaveChatotSoundClip * Sav2_Chatot_get(struct SaveBlock2 * sav2)
+{
+ return (struct SaveChatotSoundClip *) SavArray_get(sav2, 22);
+}
+
+THUMB_FUNC BOOL Chatot_exists(struct SaveChatotSoundClip * chatot)
+{
+ return chatot->exists;
+}
+
+THUMB_FUNC void Chatot_invalidate(struct SaveChatotSoundClip * chatot)
+{
+ chatot->exists = FALSE;
+}
+
+THUMB_FUNC s8 * Chatot_GetData(struct SaveChatotSoundClip * chatot)
+{
+ return chatot->data;
+}
+
+static inline s8 transform(u8 value)
+{
+ return (s8)(value - 8);
+}
+
+THUMB_FUNC void Chatot_Decode(s8 * dest, const s8 * data)
+{
+ s32 i;
+ s32 dest_i;
+ u8 val;
+ s8 val2;
+
+ for (dest_i = 0, i = 0; i < 1000; i++, dest_i += 2)
+ {
+ val = (u8)(data[i] & 0xF);
+ val2 = transform(val);
+ dest[dest_i + 0] = (s8)(val2 << 4);
+ val = (u8)(data[i] >> 4);
+ val2 = transform(val);
+ dest[dest_i + 1] = (s8)(val2 << 4);
+ }
+}
+
+static inline u8 untransform(s8 val)
+{
+ val /= 16;
+ return (u8)(val + 8);
+}
+
+THUMB_FUNC void Chatot_Encode(struct SaveChatotSoundClip * chatot, const s8 * data)
+{
+ s32 src_i;
+ s32 i = 0;
+ u8 val2;
+ s8 val;
+ chatot->exists = TRUE;
+
+ for (src_i = 0; src_i < 2000; src_i += 2)
+ {
+ val = data[src_i + 0];
+ val2 = untransform(val);
+ chatot->data[i] = (s8)val2;
+
+ val = data[src_i + 1];
+ val2 = untransform(val);
+ chatot->data[i] |= val2 << 4;
+
+ i++;
+ }
+}
+
+THUMB_FUNC void Chatot_copy(struct SaveChatotSoundClip * dest, const struct SaveChatotSoundClip * src)
+{
+ MI_CpuCopyFast(src, dest, sizeof(struct SaveChatotSoundClip));
+}
diff --git a/arm9/src/save.c b/arm9/src/save.c index 85d18d06..89bd8374 100644 --- a/arm9/src/save.c +++ b/arm9/src/save.c @@ -82,7 +82,7 @@ BOOL FUN_0202263C(struct SaveBlock2 * sav2) FlashClobberChunkFooter(sav2, 1, (u32)(sav2->unk_20220[1] == 0 ? 1 : 0)); FlashClobberChunkFooter(sav2, 0, (u32)(sav2->unk_20220[0])); FlashClobberChunkFooter(sav2, 1, (u32)(sav2->unk_20220[1])); - MIi_CpuClearFast(-1u, r6, 0x1000); + MI_CpuFillFast(r6, -1u, 0x1000); for (int i = 0; i < 64; i++) { FlashWriteChunk((u32)(0x1000 * i), r6, 0x1000); diff --git a/arm9/src/save_arrays.c b/arm9/src/save_arrays.c index 8520f2c1..f4b18b86 100644 --- a/arm9/src/save_arrays.c +++ b/arm9/src/save_arrays.c @@ -15,6 +15,7 @@ #include "seal.h" #include "unk_020139D8.h" #include "unk_02024E64.h" +#include "sav_chatot.h" extern u32 FUN_0202AC20(void); extern u32 FUN_02034D7C(void); @@ -26,7 +27,7 @@ extern u32 FUN_02028054(void); extern u32 FUN_02028980(void); extern u32 FUN_02029A84(void); extern u32 FUN_02029FB0(void); -extern u32 FUN_02029EC4(void); +extern u32 Sav2_Chatot_sizeof(void); extern u32 FUN_0202A89C(void); extern u32 FUN_0202A8F4(void); extern u32 FUN_0202A924(void); @@ -47,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_02029ECC(void *); extern void FUN_0202A8A4(void *); extern void FUN_0202A8F8(void *); extern void FUN_0202A92C(void *); @@ -87,7 +87,7 @@ const struct SaveChunkHeader UNK_020EE700[] = { { 19, 0, (SAVSIZEFN)FUN_02029A84, (SAVINITFN)FUN_02029A8C }, { 20, 0, (SAVSIZEFN)FUN_02029FB0, (SAVINITFN)FUN_02029FB8 }, { 21, 0, (SAVSIZEFN)Sav2_SealCase_sizeof, (SAVINITFN)Sav2_SealCase_init }, - { 22, 0, (SAVSIZEFN)FUN_02029EC4, (SAVINITFN)FUN_02029ECC }, + { 22, 0, (SAVSIZEFN)Sav2_Chatot_sizeof, (SAVINITFN)Sav2_Chatot_init }, { 23, 0, (SAVSIZEFN)FUN_0202A89C, (SAVINITFN)FUN_0202A8A4 }, { 24, 0, (SAVSIZEFN)FUN_0202A8F4, (SAVINITFN)FUN_0202A8F8 }, { 25, 0, (SAVSIZEFN)FUN_0202A924, (SAVINITFN)FUN_0202A92C }, diff --git a/arm9/src/scrcmd.c b/arm9/src/scrcmd.c index 4ad17e51..7adb1fe8 100644 --- a/arm9/src/scrcmd.c +++ b/arm9/src/scrcmd.c @@ -4,6 +4,7 @@ #include "options.h" #include "player_data.h" #include "text.h" +#include "unk_02016B94.h" extern void *FUN_02039438(struct UnkSavStruct80* arg, u32 id); extern void *CreateScriptContext(struct UnkSavStruct80* arg, u16 id); @@ -27,16 +28,14 @@ extern void FUN_02055304(u32 param0, u32 param1); extern void FUN_02039460(struct UnkSavStruct80 *arg); extern void FUN_020545B8(u32 param0, u8 *param1, u32 param2); extern void FUN_02054608(u8 *param0, struct Options *options); -extern void FUN_0200D0E0(u32 *param0, u32 param1); -extern void FUN_02019178(u32 *param0); -extern void FUN_020179E0(u32 param0, u32 param1, u32 param2, u16 val); +extern void FUN_0200D0E0(struct Window *param0, u32 param1); extern u32 FUN_02058510(u32 param0, u32 param1); extern void MOD05_021E8128(u32 param0, u8 type, u16 map); extern void MOD05_021E8130(u32 param0, u32 param1); extern void MOD05_021E8158(struct UnkSavStruct80 *unk80); -extern u32 MOD05_021E8140(u32 param0); +extern struct Window * MOD05_021E8140(u32 param0); extern BOOL MOD05_021E8148(u32 param0); -extern u8 FUN_02054658(u32 param0, struct String *str, struct Options *opt, u32 param3); +extern u8 FUN_02054658(struct Window * param0, struct String *str, struct Options *opt, u32 param3); extern void MOD05_021E8144(u32 param0); extern void FUN_0200CB00(u32 param0, u32 param1, u32 param2, u32 param3, u32 param4, u32 param5); extern u32 Std_CreateYesNoMenu(u32 param0, u8 **param1, u32 param2, u32 param3, u32 param4); @@ -55,6 +54,10 @@ 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 u8 *UNK_020F34E0; static BOOL RunPauseTimer(struct ScriptContext *ctx); @@ -575,7 +578,7 @@ THUMB_FUNC BOOL ScrCmd_Unk01FF(struct ScriptContext *ctx) return TRUE; } -THUMB_FUNC BOOL ScrCmd_Unk026D(struct ScriptContext *ctx) //message unown font? +THUMB_FUNC BOOL ScrCmd_MessageUnown(struct ScriptContext *ctx) { struct UnkStruct_0203A288 myLocalStruct; u16 msg = ScriptReadHalfword(ctx); @@ -672,7 +675,7 @@ THUMB_FUNC BOOL ScrCmd_WaitButtonAB(struct ScriptContext *ctx) THUMB_FUNC static BOOL FUN_0203A46C(struct ScriptContext *ctx) { #pragma unused(ctx) - if (gMain.unk48 & 0x3) // Mask (A | B) ? + if (gMain.newKeys & 0x3) // Mask (A | B) ? { return TRUE; } @@ -688,7 +691,7 @@ THUMB_FUNC BOOL ScrCmd_WaitButtonABTime(struct ScriptContext *ctx) THUMB_FUNC static BOOL FUN_0203A4AC(struct ScriptContext *ctx) { - if (gMain.unk48 & 0x3) // Mask (A | B) ? + if (gMain.newKeys & 0x3) // Mask (A | B) ? { return TRUE; } @@ -709,27 +712,27 @@ THUMB_FUNC BOOL ScrCmd_WaitButton(struct ScriptContext *ctx) THUMB_FUNC static BOOL FUN_0203A4E0(struct ScriptContext *ctx) { - if (gMain.unk48 & 3) + if (gMain.newKeys & 3) { return TRUE; } - else if (gMain.unk48 & 0x40) + else if (gMain.newKeys & 0x40) { FUN_02055304(ctx->unk80->unk38, 0); } - else if (gMain.unk48 & 0x80) + else if (gMain.newKeys & 0x80) { FUN_02055304(ctx->unk80->unk38, 1); } - else if (gMain.unk48 & 0x20) + else if (gMain.newKeys & 0x20) { FUN_02055304(ctx->unk80->unk38, 2); } - else if (gMain.unk48 & 0x10) + else if (gMain.newKeys & 0x10) { FUN_02055304(ctx->unk80->unk38, 3); } - else if (gMain.unk48 & 0x400) + else if (gMain.newKeys & 0x400) { FUN_02039460(ctx->unk80); } @@ -740,7 +743,7 @@ THUMB_FUNC static BOOL FUN_0203A4E0(struct ScriptContext *ctx) return TRUE; } -THUMB_FUNC BOOL ScrCmd_Unk0032(struct ScriptContext *ctx) +THUMB_FUNC BOOL ScrCmd_WaitButtonABPad(struct ScriptContext *ctx) { SetupNativeScript(ctx, FUN_0203A570); return TRUE; @@ -749,11 +752,11 @@ THUMB_FUNC BOOL ScrCmd_Unk0032(struct ScriptContext *ctx) THUMB_FUNC static BOOL FUN_0203A570(struct ScriptContext *ctx) { #pragma unused(ctx) - if (gMain.unk48 & 0x3) + if (gMain.newKeys & 0x3) { return TRUE; } - else if (gMain.unk48 & 0xf0) + else if (gMain.newKeys & 0xf0) { return TRUE; } @@ -770,10 +773,10 @@ THUMB_FUNC BOOL ScrCmd_Unk0033(struct ScriptContext *ctx) return FALSE; } -THUMB_FUNC BOOL ScrCmd_Unk0034(struct ScriptContext* ctx) +THUMB_FUNC BOOL ScrCmd_CloseMessageBox(struct ScriptContext* ctx) { struct UnkSavStruct80 *unk80 = ctx->unk80; - u32 *unk = FUN_02039438(unk80, 0x1); //windowID? + struct Window *unk = FUN_02039438(unk80, 0x1); u8 *unk2 = FUN_02039438(unk80, 0x6); FUN_0200D0E0(unk, 0); //clear window? FUN_02019178(unk); @@ -784,7 +787,7 @@ THUMB_FUNC BOOL ScrCmd_Unk0034(struct ScriptContext* ctx) THUMB_FUNC BOOL ScrCmd_Unk0035(struct ScriptContext* ctx) { struct UnkSavStruct80 *unk80 = ctx->unk80; - u32 *unk = FUN_02039438(unk80, 0x1); //windowID? + struct Window *unk = FUN_02039438(unk80, 0x1); u8 *unk2 = FUN_02039438(unk80, 0x6); FUN_02019178(unk); *unk2 = 0; @@ -889,7 +892,7 @@ THUMB_FUNC BOOL ScrCmd_CreateMessageBox(struct ScriptContext* ctx) MOD05_021E8158(unk80); ReadMsgDataIntoString(ctx->msgData, msg, *unk1); StringExpandPlaceholders(*unk3, *unk2, *unk1); - AddTextPrinterParameterized(MOD05_021E8140(unk80->unk60), 1, (u16 *)*unk2, 0, 0, 0, NULL); + AddTextPrinterParameterized(MOD05_021E8140(unk80->unk60), 1, *unk2, 0, 0, 0, NULL); return TRUE; } @@ -969,19 +972,19 @@ THUMB_FUNC static BOOL FUN_0203A94C(struct ScriptContext *ctx) return TRUE; } - if (gMain.unk48 & 0x40) + if (gMain.newKeys & 0x40) { tmp = 0; } - else if (gMain.unk48 & 0x80) + else if (gMain.newKeys & 0x80) { tmp = 1; } - else if (gMain.unk48 & 0x20) + else if (gMain.newKeys & 0x20) { tmp = 2; } - else if (gMain.unk48 & 0x10) + else if (gMain.newKeys & 0x10) { tmp = 3; } @@ -995,7 +998,7 @@ THUMB_FUNC static BOOL FUN_0203A94C(struct ScriptContext *ctx) } else { - if (gMain.unk48 & 0x400) + if (gMain.newKeys & 0x400) { FUN_0201BD7C(*unk1); *varPtr = 1; @@ -1018,24 +1021,24 @@ THUMB_FUNC static BOOL FUN_0203AA0C(struct ScriptContext *ctx) u16 *unk = GetVarPointer(ctx->unk80, (u16)ctx->data[0]); u32 tmp = 0xFFFF; - if (gMain.unk48 & 0x3) + if (gMain.newKeys & 0x3) { *unk = 0; return TRUE; } - else if (gMain.unk48 & 0x40) + else if (gMain.newKeys & 0x40) { tmp = 0; } - else if (gMain.unk48 & 0x80) + else if (gMain.newKeys & 0x80) { tmp = 1; } - else if (gMain.unk48 & 0x20) + else if (gMain.newKeys & 0x20) { tmp = 2; } - else if (gMain.unk48 & 0x10) + else if (gMain.newKeys & 0x10) { tmp = 3; } @@ -1048,7 +1051,7 @@ THUMB_FUNC static BOOL FUN_0203AA0C(struct ScriptContext *ctx) } else { - if (gMain.unk48 & 0x400) + if (gMain.newKeys & 0x400) { *unk = 1; return TRUE; @@ -1298,3 +1301,19 @@ THUMB_FUNC BOOL ScrCmd_Unk02D0(struct ScriptContext *ctx) MOD05_021E2B9C(*unk, ScriptReadByte(ctx)); return TRUE; } + +THUMB_FUNC BOOL ScrCmd_Unk005E(struct ScriptContext *ctx) //ApplyMovement? +{ + u16 unk = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); + u32 unk2 = ScriptReadWord(ctx); + + u32 unk3 = FUN_0203B120(ctx->unk80, unk); + GF_ASSERT(unk3); + + u32 unk4 = FUN_0205AEA4(unk3, ctx->scriptPtr + unk2); + u8 *unk5 = FUN_02039438(ctx->unk80, 4); + (*unk5)++; + + FUN_0203B174(ctx->unk80, unk4, 0); + return FALSE; +} diff --git a/arm9/src/scrcmd_20.c b/arm9/src/scrcmd_20.c deleted file mode 100644 index 882126a0..00000000 --- a/arm9/src/scrcmd_20.c +++ /dev/null @@ -1,35 +0,0 @@ -#include "scrcmd.h" - -const u16 UNK_020F452A[19][2] = { - { 0x00FB, 0x03E8 }, - { 0x0109, 0x03E8 }, - { 0x0114, 0x03E8 }, - { 0x0115, 0x03E8 }, - { 0x01A1, 0x07D0 }, - { 0x0181, 0x07D0 }, - { 0x0192, 0x0FA0 }, - { 0x0167, 0x0FA0 }, - { 0x0173, 0x1770 }, - { 0x01A0, 0x1770 }, - { 0x0151, 0x1770 }, - { 0x0162, 0x1F40 }, - { 0x015C, 0x1F40 }, - { 0x016A, 0x2710 }, - { 0x015F, 0x2710 }, - { 0x0154, 0x2710 }, - { 0x0164, 0x2710 }, - { 0x0191, 0x3A98 }, - { 0x018B, 0x4E20 }, -}; - -THUMB_FUNC BOOL ScrCmd_Unk02A6(struct ScriptContext * ctx) -{ - u16 idx = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); - u16 * ret_ptr1 = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx)); - u16 * ret_ptr2 = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx)); - - *ret_ptr1 = UNK_020F452A[idx][0]; - *ret_ptr2 = UNK_020F452A[idx][1]; - - return FALSE; -} diff --git a/arm9/src/scrcmd_24.c b/arm9/src/scrcmd_24.c new file mode 100644 index 00000000..9c8f8d4b --- /dev/null +++ b/arm9/src/scrcmd_24.c @@ -0,0 +1,276 @@ +#include "scrcmd.h" +#include "heap.h" +#include "party.h" +#include "unk_020377F0.h" +#include "unk_02088DD8.h" + +extern void* FUN_02039438(struct UnkSavStruct80*, int idx); + +extern struct UnkStruct_02037CF0* FUN_02037CF0(u32 heap_id, struct UnkSavStruct80*, u8); +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) +{ + u16 unk = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); + struct UnkStruct_02037CF0** unk_ret_ptr = FUN_02039438(ctx->unk80, 19); + *unk_ret_ptr = FUN_02037CF0(32, ctx->unk80, (u8)unk); + + SetupNativeScript(ctx, FUN_0203BC04); + return TRUE; +} + +#ifdef NONMATCHING +THUMB_FUNC BOOL ScrCmd_Unk01C7(struct ScriptContext* ctx) +{ + u16* ret_ptr = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx)); + struct UnkStruct_02037CF0** unk_ptr = FUN_02039438(ctx->unk80, 19); + GF_ASSERT(*unk_ptr != NULL); + + *ret_ptr = FUN_02037D5C(*unk_ptr); + if (*ret_ptr == 4) + { + *ret_ptr = 0xFF; + } + + FreeToHeap(*unk_ptr); + *unk_ptr = NULL; + return FALSE; +} +#else +THUMB_FUNC asm BOOL ScrCmd_Unk01C7(struct ScriptContext* ctx) +{ + push {r3-r5, lr} + add r4, r0, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r4, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl GetVarPointer + add r4, #0x80 + add r5, r0, #0x0 + ldr r0, [r4, #0x0] + mov r1, #0x13 + bl FUN_02039438 + add r4, r0, #0x0 + ldr r0, [r4, #0x0] + cmp r0, #0x0 + bne _02045DFC + bl GF_AssertFail +_02045DFC: + ldr r0, [r4, #0x0] + bl FUN_02037D5C + strh r0, [r5, #0x0] + ldrh r0, [r5, #0x0] + cmp r0, #0x4 + bne _02045E0E + mov r0, #0xff + strh r0, [r5, #0x0] +_02045E0E: + ldr r0, [r4, #0x0] + bl FreeToHeap + mov r0, #0x0 + str r0, [r4, #0x0] + pop {r3-r5, pc} +} +#endif + +THUMB_FUNC BOOL ScrCmd_Unk021E(struct ScriptContext* ctx) +{ +#pragma unused(ctx) + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_Unk021F(struct ScriptContext* ctx) +{ + u16* ret_ptr = GetVarPointer(ctx->unk80, ScriptReadHalfword(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); + + *ret_ptr = (u16)FUN_02088EF8(unk_ptr); + FreeToHeap(unk_ptr); + + return FALSE; +} + +THUMB_FUNC void FUN_02045E74(struct ScriptContext* ctx, u8 a1, struct Pokemon* pokemon, void* a3) +{ + struct UnkStruct_02088DD8** unk = FUN_02039438(ctx->unk80, 19); + struct UnkStruct_02088DD8* unk2 = FUN_02088DD8(32); + *unk = unk2; + + unk2->pokemon = pokemon; + + struct SaveBlock2* sav2 = ScriptEnvironment_GetSav2Ptr(ctx->unk80); + unk2->player = Sav2_PlayerData_GetProfileAddr(sav2); + + unk2->options = Sav2_PlayerData_GetOptionsAddr(ctx->unk80->saveBlock2); + unk2->unkC = a3; + unk2->unk15 = a1; + FUN_02038864(ctx->unk80, unk2); + + SetupNativeScript(ctx, FUN_0203BC04); + FreeToHeap(a3); +} + +THUMB_FUNC BOOL ScrCmd_Unk0220(struct ScriptContext* ctx) +{ +#pragma unused(ctx) + return TRUE; +} + +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); + + FUN_02045E74(ctx, 1, pokemon, unk_ptr); + return TRUE; +} + +THUMB_FUNC BOOL ScrCmd_Unk0224(struct ScriptContext* ctx) +{ + u16 mon_idx = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); + u16 unk2 = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); + struct PlayerParty* party = SavArray_PlayerParty_get(ctx->unk80->saveBlock2); + struct Pokemon* pokemon = GetPartyMonByIndex(party, mon_idx); + + u16* unk_array = AllocFromHeap(32, 2 * sizeof(u16)); + unk_array[0] = unk2; + unk_array[1] = 0xFFFF; + + FUN_02045E74(ctx, 0, pokemon, unk_array); + return TRUE; +} + +THUMB_FUNC BOOL ScrCmd_Unk0222(struct ScriptContext* ctx) +{ +#pragma unused(ctx) + return FALSE; +} + +#ifdef NONMATCHING +THUMB_FUNC BOOL ScrCmd_Unk0223(struct ScriptContext* ctx) +{ + u16* ret_ptr = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx)); + struct UnkStruct_02037CF0** unk = FUN_02039438(ctx->unk80, 19); + struct UnkStruct_02037CF0* unk_sub = *unk; + + GF_ASSERT(unk_sub != NULL); + + if (unk_sub->unk16 == 0) + { + *ret_ptr = 0; + } + else + { + *ret_ptr = 0xFF; + } + + FUN_02088DF0(unk_sub); + return FALSE; +} +#else +THUMB_FUNC asm BOOL ScrCmd_Unk0223(struct ScriptContext* ctx) +{ + push {r3-r5, lr} + add r4, r0, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r4, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl GetVarPointer + add r4, #0x80 + add r5, r0, #0x0 + ldr r0, [r4, #0x0] + mov r1, #0x13 + bl FUN_02039438 + ldr r4, [r0, #0x0] + cmp r4, #0x0 + bne _02045FB2 + bl GF_AssertFail +_02045FB2: + ldrb r0, [r4, #0x16] + cmp r0, #0x0 + bne _02045FBC + mov r0, #0x0 + b _02045FBE +_02045FBC: + mov r0, #0xff +_02045FBE: + strh r0, [r5, #0x0] + add r0, r4, #0x0 + bl FUN_02088DF0 + mov r0, #0x0 + pop {r3-r5, pc} +} +#endif + +#ifdef NONMATCHING +THUMB_FUNC BOOL ScrCmd_Unk0225(struct ScriptContext* ctx) +{ + u16* ret_ptr = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx)); + struct UnkStruct_02037CF0** unk = FUN_02039438(ctx->unk80, 19); + struct UnkStruct_02037CF0* unk_sub = *unk; + + GF_ASSERT(unk_sub != NULL); + + if (unk_sub->unk16 == 0) + { + *ret_ptr = 0; + } + else + { + *ret_ptr = 0xFF; + } + + FUN_02088DF0(unk_sub); + return FALSE; +} +#else +THUMB_FUNC asm BOOL ScrCmd_Unk0225(struct ScriptContext* ctx) +{ + push {r3-r5, lr} + add r4, r0, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r4, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl GetVarPointer + add r4, #0x80 + add r5, r0, #0x0 + ldr r0, [r4, #0x0] + mov r1, #0x13 + bl FUN_02039438 + ldr r4, [r0, #0x0] + cmp r4, #0x0 + bne _02045FB2 + bl GF_AssertFail +_02045FB2: + ldrb r0, [r4, #0x16] + cmp r0, #0x0 + bne _02045FBC + mov r0, #0x0 + b _02045FBE +_02045FBC: + mov r0, #0xff +_02045FBE: + strh r0, [r5, #0x0] + add r0, r4, #0x0 + bl FUN_02088DF0 + mov r0, #0x0 + pop {r3-r5, pc} +} +#endif diff --git a/arm9/src/scrcmd_8.c b/arm9/src/scrcmd_8.c new file mode 100644 index 00000000..0c47594b --- /dev/null +++ b/arm9/src/scrcmd_8.c @@ -0,0 +1,88 @@ +#include "scrcmd.h" +#include "math_util.h" +#include "unk_020286F8.h" + +extern void* FUN_02039438(struct UnkSavStruct80*, u8 idx); + +extern void FUN_020385CC(struct UnkStruct_0204639C*, u32, u32, u32, u32, u16*, u16* ret_ptr); +extern BOOL FUN_020612EC(struct UnkSavStruct80*); +extern BOOL FUN_020612F8(struct UnkSavStruct80*); + +THUMB_FUNC BOOL ScrCmd_Unk021D(struct ScriptContext* ctx) //docs has this command as ScrCmd_Group, with a comment saying + //"This command is the devil" +{ + struct ScrStrBufs** mgr = FUN_02039438(ctx->unk80, 15); + struct UnkSaveStruct_020286F8* unk_sav_ptr = FUN_0202881C(ctx->unk80->saveBlock2); + struct SaveBlock2* sav2 = ctx->unk80->saveBlock2; + + u16 option = ScriptReadHalfword(ctx); + switch (option) + { + case 0: { //check if group ID exists + u16 unk_var = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); + u16* ret_ptr = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx)); + + *ret_ptr = (u16)FUN_02028828(unk_sav_ptr, unk_var); + return FALSE; + } + case 1: { //check if group ID is accessible + u16 unk_var = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); + u16* ret_ptr = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx)); + + *ret_ptr = (u16)FUN_02028840(unk_sav_ptr, unk_var); + return FALSE; + } + case 2: { //writes group ID to string buffer + u16 unk_var = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); + u16 idx = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); + + BufferEasyChatWord(*mgr, sav2, unk_var, idx, 0); + break; + } + case 3: { //writes group leader name to string buffer + u16 unk_var = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); + u16 idx = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); + + BufferEasyChatWord(*mgr, sav2, unk_var, idx, 1); + break; + } + case 4: { //opens keyboard, 2 if group id exists, 1 if cancel, 0 otherwise + u16* unk_str_ptr = FUN_020287A8(unk_sav_ptr, 0, 0); + u16* ret_ptr = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx)); + + FUN_020385CC(ctx->unk74, 5, 0, 7, 0, unk_str_ptr, ret_ptr); + return TRUE; + } + case 5: { //enter in group id (whatever this means, needs more investigation) + u16 src_idx = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); + BOOL unk_bool = FUN_02028828(unk_sav_ptr, 1); + + FUN_02028700(unk_sav_ptr, src_idx, 1); + if (unk_bool != FALSE) + { + FUN_020612F8(ctx->unk80); + } + + return FALSE; + } + case 6: { //create a group + struct String* player_name = String_ctor(64, 32); + struct PlayerData* player = Sav2_PlayerData_GetProfileAddr(ctx->unk80->saveBlock2); + + PlayerName_FlatToString(player, player_name); + FUN_020287C0(unk_sav_ptr, 0, 1, player_name); + FUN_020287EC(unk_sav_ptr, 0, PlayerProfile_GetTrainerGender(player)); + FUN_02028810(unk_sav_ptr, 0, 2); + FUN_02028788(unk_sav_ptr, 0, MTRandom()); + + String_dtor(player_name); + + FUN_02028700(unk_sav_ptr, 0, 1); + FUN_020612EC(ctx->unk80); + + break; + } + } + + return FALSE; +} diff --git a/arm9/src/scrcmd_11.c b/arm9/src/scrcmd_berry_trees.c index 8553adfa..53715ca1 100644 --- a/arm9/src/scrcmd_11.c +++ b/arm9/src/scrcmd_berry_trees.c @@ -16,7 +16,7 @@ extern void FUN_0204B5A8(struct UnkSavStruct80*, void*, u16); extern void FUN_0204B9A0(struct UnkSavStruct80*); extern void FUN_0204B4FC(struct UnkSavStruct80*, void*); -THUMB_FUNC BOOL ScrCmd_Unk017D(struct ScriptContext* ctx) +THUMB_FUNC BOOL ScrCmd_GetBerryTreeGrowth(struct ScriptContext* ctx) { u16* ret_ptr = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx)); void** unk = FUN_02039438(ctx->unk80, 10); @@ -26,7 +26,7 @@ THUMB_FUNC BOOL ScrCmd_Unk017D(struct ScriptContext* ctx) return FALSE; } -THUMB_FUNC BOOL ScrCmd_Unk017E(struct ScriptContext* ctx) +THUMB_FUNC BOOL ScrCmd_GetBerryTreeType(struct ScriptContext* ctx) { void** unk = FUN_02039438(ctx->unk80, 10); u16* ret_ptr = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx)); @@ -36,7 +36,7 @@ THUMB_FUNC BOOL ScrCmd_Unk017E(struct ScriptContext* ctx) return FALSE; } -THUMB_FUNC BOOL ScrCmd_Unk017F(struct ScriptContext* ctx) +THUMB_FUNC BOOL ScrCmd_GetBerryTreeMulch(struct ScriptContext* ctx) { void** unk = FUN_02039438(ctx->unk80, 10); u16* ret_ptr = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx)); @@ -46,7 +46,7 @@ THUMB_FUNC BOOL ScrCmd_Unk017F(struct ScriptContext* ctx) return FALSE; } -THUMB_FUNC BOOL ScrCmd_Unk0180(struct ScriptContext* ctx) +THUMB_FUNC BOOL ScrCmd_GetBerryTreeWater(struct ScriptContext* ctx) { void** unk = FUN_02039438(ctx->unk80, 10); u16* ret_ptr = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx)); @@ -56,7 +56,7 @@ THUMB_FUNC BOOL ScrCmd_Unk0180(struct ScriptContext* ctx) return FALSE; } -THUMB_FUNC BOOL ScrCmd_Unk0181(struct ScriptContext* ctx) +THUMB_FUNC BOOL ScrCmd_GetBerryTreeAmount(struct ScriptContext* ctx) { void** unk = FUN_02039438(ctx->unk80, 10); u16* ret_ptr = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx)); @@ -66,7 +66,7 @@ THUMB_FUNC BOOL ScrCmd_Unk0181(struct ScriptContext* ctx) return FALSE; } -THUMB_FUNC BOOL ScrCmd_Unk0182(struct ScriptContext* ctx) +THUMB_FUNC BOOL ScrCmd_SetBerryTreeMulch(struct ScriptContext* ctx) { void** unk = FUN_02039438(ctx->unk80, 10); u16 unk2 = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); @@ -76,7 +76,7 @@ THUMB_FUNC BOOL ScrCmd_Unk0182(struct ScriptContext* ctx) return FALSE; } -THUMB_FUNC BOOL ScrCmd_Unk0183(struct ScriptContext* ctx) +THUMB_FUNC BOOL ScrCmd_SetBerryTreeType(struct ScriptContext* ctx) { void** unk = FUN_02039438(ctx->unk80, 10); struct UnkStruct_02029FB0* unk2 = FUN_02029FC8(ctx->unk80->saveBlock2); @@ -88,7 +88,7 @@ THUMB_FUNC BOOL ScrCmd_Unk0183(struct ScriptContext* ctx) return FALSE; } -THUMB_FUNC BOOL ScrCmd_Unk0184(struct ScriptContext* ctx) +THUMB_FUNC BOOL ScrCmd_Unk0184(struct ScriptContext* ctx) //SetBerryTreeWater/WaterBerryTree, or just the animation? { u16 unk = ScriptReadHalfword(ctx); @@ -108,7 +108,7 @@ THUMB_FUNC BOOL ScrCmd_Unk0184(struct ScriptContext* ctx) return TRUE; } -THUMB_FUNC BOOL ScrCmd_Unk0185(struct ScriptContext* ctx) +THUMB_FUNC BOOL ScrCmd_TakeBerryTreeBerries(struct ScriptContext* ctx) { struct UnkStruct_02029FB0* unk = FUN_02029FC8(ctx->unk80->saveBlock2); void** unk2 = FUN_02039438(ctx->unk80, 10); diff --git a/arm9/src/scrcmd_coins.c b/arm9/src/scrcmd_coins.c index 59638c83..f4fea1de 100644 --- a/arm9/src/scrcmd_coins.c +++ b/arm9/src/scrcmd_coins.c @@ -7,7 +7,7 @@ extern u32 MOD05_021E2950(struct UnkSavStruct80* arg, u8, u8); extern MOD05_021E29B4(); extern MOD05_021E29C8(); -THUMB_FUNC BOOL ScrCmd_Unk0075(struct ScriptContext * ctx) +THUMB_FUNC BOOL ScrCmd_ShowCoinBox(struct ScriptContext * ctx) { struct UnkSavStruct80* sav_ptr = ctx->unk80; u32 unk1 = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); @@ -20,7 +20,7 @@ THUMB_FUNC BOOL ScrCmd_Unk0075(struct ScriptContext * ctx) return FALSE; } -THUMB_FUNC BOOL ScrCmd_Unk0076(struct ScriptContext * ctx) +THUMB_FUNC BOOL ScrCmd_HideCoinBox(struct ScriptContext * ctx) { u16 ** unk = FUN_02039438(ctx->unk80, 0x26); MOD05_021E29B4(*unk); @@ -28,7 +28,7 @@ THUMB_FUNC BOOL ScrCmd_Unk0076(struct ScriptContext * ctx) return FALSE; } -THUMB_FUNC BOOL ScrCmd_Unk0077(struct ScriptContext * ctx) +THUMB_FUNC BOOL ScrCmd_UpdateCoinBox(struct ScriptContext * ctx) { u16 ** unk = FUN_02039438(ctx->unk80, 0x26); MOD05_021E29C8(ctx->unk80, *unk); diff --git a/arm9/src/scrcmd_daycare.c b/arm9/src/scrcmd_daycare.c index 4e2f925e..34abab1e 100644 --- a/arm9/src/scrcmd_daycare.c +++ b/arm9/src/scrcmd_daycare.c @@ -17,7 +17,7 @@ extern u16 MOD05_021ED5C4(struct PlayerParty* party, int idx, struct ScrStrBufs* extern u16 MOD05_021ED5EC(struct DayCare* daycare); extern u32 MOD05_021ED644(struct DayCare* daycare); -THUMB_FUNC BOOL ScrCmd_Unk016D(struct ScriptContext* ctx) +THUMB_FUNC BOOL ScrCmd_GetDaycarePokemonNames(struct ScriptContext* ctx) { struct SaveBlock2* sav2 = ctx->unk80->saveBlock2; struct ScrStrBufs** mgr = FUN_02039438(ctx->unk80, 15); @@ -28,7 +28,7 @@ THUMB_FUNC BOOL ScrCmd_Unk016D(struct ScriptContext* ctx) return FALSE; } -THUMB_FUNC BOOL ScrCmd_Unk016E(struct ScriptContext* ctx) +THUMB_FUNC BOOL ScrCmd_GetDaycareStatus(struct ScriptContext* ctx) { struct UnkSavStruct80* sav_ptr = ctx->unk80; struct SaveBlock2* sav2 = sav_ptr->saveBlock2; @@ -40,7 +40,7 @@ THUMB_FUNC BOOL ScrCmd_Unk016E(struct ScriptContext* ctx) return FALSE; } -THUMB_FUNC BOOL ScrCmd_Unk01A8(struct ScriptContext* ctx) +THUMB_FUNC BOOL ScrCmd_DeleteDaycareEgg(struct ScriptContext* ctx) { struct DayCare* daycare = SavArray_get(ctx->unk80->saveBlock2, 8); MOD05_021ECD64(daycare); @@ -48,7 +48,7 @@ THUMB_FUNC BOOL ScrCmd_Unk01A8(struct ScriptContext* ctx) return FALSE; } -THUMB_FUNC BOOL ScrCmd_Unk01A9(struct ScriptContext* ctx) +THUMB_FUNC BOOL ScrCmd_GiveDaycareEgg(struct ScriptContext* ctx) { struct UnkSavStruct80* sav_ptr = ctx->unk80; struct DayCare* daycare = SavArray_get(sav_ptr->saveBlock2, 8); @@ -90,7 +90,7 @@ THUMB_FUNC BOOL ScrCmd_Unk01AA(struct ScriptContext* ctx) return FALSE; } -THUMB_FUNC BOOL ScrCmd_Unk01AE(struct ScriptContext* ctx) +THUMB_FUNC BOOL ScrCmd_GetDaycareLevel(struct ScriptContext* ctx) { struct SaveBlock2* sav2 = ctx->unk80->saveBlock2; struct ScrStrBufs** mgr = FUN_02039438(ctx->unk80, 15); diff --git a/arm9/src/scrcmd_flags.c b/arm9/src/scrcmd_flags.c new file mode 100644 index 00000000..ee13ebc0 --- /dev/null +++ b/arm9/src/scrcmd_flags.c @@ -0,0 +1,284 @@ +#include "scrcmd.h" +#include "event_data.h" +#include "pokedex.h" + +extern void* FUN_02034E20(void*); +extern void* FUN_02034E30(void*); +extern BOOL FUN_02055474(void*); +extern void FUN_02055488(void*, u32); +extern void FUN_0205ECD4(struct ScriptState* state); +extern BOOL FUN_0205ECE0(struct ScriptState* state); +extern void FUN_0205ECFC(struct ScriptState* state); +extern BOOL FUN_0205ED0C(struct ScriptState* state); +extern void FUN_0205ED1C(struct ScriptState* state); +extern void FUN_0205ED2C(struct ScriptState* state); +extern BOOL FUN_0205ED3C(struct ScriptState* state); +extern void FUN_0205ED4C(struct ScriptState* state); +extern void FUN_0205ED5C(struct ScriptState* state); +extern BOOL FUN_0205ED6C(struct ScriptState* state); +extern BOOL FUN_0205F264(struct ScriptState* state, u32); +extern void FUN_0205F274(struct ScriptState* state); +extern void FUN_0205F284(struct ScriptState* state); +extern BOOL FUN_0205F294(struct ScriptState* state); +extern void FUN_0205F2A4(struct ScriptState* state); +extern void FUN_0205F2B4(struct ScriptState* state); +extern BOOL FUN_0205F2C4(struct ScriptState* state); + +const u8 UNK_020F457F[8] = { + 0, 1, 2, 3, 4, 5, 6, 7, +}; + +THUMB_FUNC BOOL ScrCmd_HasSinnohDex(struct ScriptContext* ctx) +{ + struct Pokedex* pokedex = Sav2_Pokedex_get(ctx->unk80->saveBlock2); + u16* ret_ptr = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx)); + + *ret_ptr = (u16)Pokedex_GetSinnohDexFlag(pokedex); + + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_GiveSinnohDex(struct ScriptContext* ctx) +{ + struct Pokedex* pokedex = Sav2_Pokedex_get(ctx->unk80->saveBlock2); + + Pokedex_SetSinnohDexFlag(pokedex); + + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_HasRunningShoes(struct ScriptContext* ctx) +{ + u16* ret_ptr = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx)); + void* unk_sav_ptr = FUN_02034E30(ctx->unk80->saveBlock2); + void* unk = FUN_02034E20(unk_sav_ptr); + + *ret_ptr = (u16)FUN_02055474(unk); + + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_GiveRunningShoes(struct ScriptContext* ctx) +{ + void* unk_sav_ptr = FUN_02034E30(ctx->unk80->saveBlock2); + void* unk = FUN_02034E20(unk_sav_ptr); + + FUN_02055488(unk, 1); + + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_HasBadge(struct ScriptContext* ctx) +{ + u16 badge_no = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); + u16* ret_ptr = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx)); + GF_ASSERT(badge_no < 8); + struct PlayerData* player = Sav2_PlayerData_GetProfileAddr(ctx->unk80->saveBlock2); + + *ret_ptr = (u16)PlayerProfile_TestBadgeFlag(player, badge_no); + + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_GiveBadge(struct ScriptContext* ctx) +{ + u16 badge_no = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); + GF_ASSERT(badge_no < 8); + struct PlayerData* player = Sav2_PlayerData_GetProfileAddr(ctx->unk80->saveBlock2); + + PlayerProfile_SetBadgeFlag(player, badge_no); + + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_GiveBag(struct ScriptContext* ctx) +{ + u16* ret_ptr = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx)); + struct ScriptState* state = SavArray_Flags_get(ctx->unk80->saveBlock2); + + *ret_ptr = (u16)FUN_0205ECE0(state); + + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_GetTotalEarnedBadges(struct ScriptContext* ctx) +{ + u16* ret_ptr = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx)); + + u16 i; + u16 badges; + for (i = 0, badges = 0; i < 8; i++) + { + struct PlayerData* player = Sav2_PlayerData_GetProfileAddr(ctx->unk80->saveBlock2); + BOOL has_badge = PlayerProfile_TestBadgeFlag(player, UNK_020F457F[i]); + if (has_badge == TRUE) + { + badges++; + } + } + + *ret_ptr = badges; + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_HasBag(struct ScriptContext* ctx) +{ + struct ScriptState* state = SavArray_Flags_get(ctx->unk80->saveBlock2); + + FUN_0205ECD4(state); + + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_Unk0160(struct ScriptContext* ctx) +{ + u16* ret_ptr = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx)); + struct ScriptState* state = SavArray_Flags_get(ctx->unk80->saveBlock2); + + *ret_ptr = (u16)FUN_0205ED3C(state); + + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_Unk0161(struct ScriptContext* ctx) +{ + struct ScriptState* state = SavArray_Flags_get(ctx->unk80->saveBlock2); + + FUN_0205ED1C(state); + + return 0; +} + +THUMB_FUNC BOOL ScrCmd_Unk0162(struct ScriptContext* ctx) +{ + struct ScriptState* state = SavArray_Flags_get(ctx->unk80->saveBlock2); + + FUN_0205ED2C(state); + + return 0; +} + +THUMB_FUNC BOOL ScrCmd_Unk0163(struct ScriptContext* ctx) +{ + u16* ret_ptr = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx)); + struct ScriptState* state = SavArray_Flags_get(ctx->unk80->saveBlock2); + + *ret_ptr = (u16)FUN_0205ED6C(state); + + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_Unk0164(struct ScriptContext* ctx) +{ + struct ScriptState* state = SavArray_Flags_get(ctx->unk80->saveBlock2); + + FUN_0205ED4C(state); + + return 0; +} + +THUMB_FUNC BOOL ScrCmd_Unk0165(struct ScriptContext* ctx) +{ + struct ScriptState* state = SavArray_Flags_get(ctx->unk80->saveBlock2); + + FUN_0205ED5C(state); + + return 0; +} + +THUMB_FUNC BOOL ScrCmd_CheckGameCompleted(struct ScriptContext* ctx) +{ + u16* ret_ptr = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx)); + struct ScriptState* state = SavArray_Flags_get(ctx->unk80->saveBlock2); + + *ret_ptr = (u16)FUN_0205ED0C(state); + + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_SetGameCompleted(struct ScriptContext* ctx) +{ + struct ScriptState* state = SavArray_Flags_get(ctx->unk80->saveBlock2); + + FUN_0205ECFC(state); + + return 0; +} + +THUMB_FUNC BOOL ScrCmd_GetSetStrength(struct ScriptContext* ctx) +{ + struct ScriptState* state = SavArray_Flags_get(ctx->unk80->saveBlock2); + u8 option = ScriptReadByte(ctx); + u16* ret_ptr; + + switch (option) + { + case 1: //set strength to on + FUN_0205F264(state, 1); + break; + case 0: //set strength to off + FUN_0205F264(state, 0); + break; + case 2: //get whether strength is on or off + ret_ptr = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx)); + *ret_ptr = (u16)FUN_0205F264(state, 2); + break; + default: + GF_ASSERT(FALSE); + break; + } + + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_GetSetFlash(struct ScriptContext* ctx) +{ + struct ScriptState* state = SavArray_Flags_get(ctx->unk80->saveBlock2); + u8 option = ScriptReadByte(ctx); + u16* ret_ptr; + + switch (option) + { + case 1: //set flash to on + FUN_0205F274(state); + break; + case 0: //set flash to off + FUN_0205F284(state); + break; + case 2: //get whether flash is on or off + ret_ptr = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx)); + *ret_ptr = (u16)FUN_0205F294(state); + break; + default: + GF_ASSERT(FALSE); + break; + } + + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_GetSetDefog(struct ScriptContext* ctx) +{ + struct ScriptState* state = SavArray_Flags_get(ctx->unk80->saveBlock2); + u8 option = ScriptReadByte(ctx); + u16* ret_ptr; + + switch (option) + { + case 1: //set defog to on + FUN_0205F2A4(state); + break; + case 0: //set defog to off + FUN_0205F2B4(state); + break; + case 2: //get whether defog is on or off + ret_ptr = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx)); + *ret_ptr = (u16)FUN_0205F2C4(state); + break; + default: + GF_ASSERT(FALSE); + break; + } + + return FALSE; +} diff --git a/arm9/src/scrcmd_19.c b/arm9/src/scrcmd_fossils.c index b0a201b7..e4177382 100644 --- a/arm9/src/scrcmd_19.c +++ b/arm9/src/scrcmd_fossils.c @@ -1,45 +1,45 @@ #include "scrcmd.h" #include "bag.h" -const u16 UNK_020F450C[7][2] = { - { 0x0067, 0x008E }, - { 0x0065, 0x008A }, - { 0x0066, 0x008C }, - { 0x0063, 0x0159 }, - { 0x0064, 0x015B }, - { 0x0068, 0x019A }, - { 0x0069, 0x0198 }, +const u16 gFossilPokemonMap[7][2] = { + { ITEM_OLD_AMBER, SPECIES_AERODACTYL }, + { ITEM_HELIX_FOSSIL, SPECIES_OMANYTE }, + { ITEM_DOME_FOSSIL, SPECIES_KABUTO }, + { ITEM_ROOT_FOSSIL, SPECIES_LILEEP }, + { ITEM_CLAW_FOSSIL, SPECIES_ANORITH }, + { ITEM_ARMOR_FOSSIL, SPECIES_SHIELDON }, + { ITEM_SKULL_FOSSIL, SPECIES_CRANIDOS }, }; -THUMB_FUNC BOOL ScrCmd_Unk01F1(struct ScriptContext * ctx) +THUMB_FUNC BOOL ScrCmd_CountFossils(struct ScriptContext * ctx) { struct UnkSavStruct80 * sav_ptr = ctx->unk80; - u16 * ret_ptr = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx)); + u16 *ret_ptr = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx)); u8 i; u16 total; for (i = 0, total = 0; i < 7; i++) { - total += Bag_GetQuantity(Sav2_Bag_get(sav_ptr->saveBlock2), UNK_020F450C[i][0], 4); + total += Bag_GetQuantity(Sav2_Bag_get(sav_ptr->saveBlock2), gFossilPokemonMap[i][0], 4); } *ret_ptr = total; return FALSE; } -THUMB_FUNC BOOL ScrCmd_Unk01F4(struct ScriptContext * ctx) +THUMB_FUNC BOOL ScrCmd_GetFossilPokemon(struct ScriptContext * ctx) { - u16 * ret_ptr = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx)); - u16 unk = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); + u16 *ret_ptr = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx)); + u16 fossilId = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); *ret_ptr = 0; for (u16 i = 0; i < 7; i++) { - if (UNK_020F450C[i][0] == unk) + if (gFossilPokemonMap[i][0] == fossilId) { - *ret_ptr = UNK_020F450C[i][1]; + *ret_ptr = gFossilPokemonMap[i][1]; break; } } @@ -47,7 +47,7 @@ THUMB_FUNC BOOL ScrCmd_Unk01F4(struct ScriptContext * ctx) return FALSE; } -THUMB_FUNC BOOL ScrCmd_Unk01F5(struct ScriptContext * ctx) +THUMB_FUNC BOOL ScrCmd_GetFossilMinimumAmount(struct ScriptContext * ctx) { struct UnkSavStruct80* sav_ptr = ctx->unk80; u16 * ret_ptr1 = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx)); @@ -61,10 +61,10 @@ THUMB_FUNC BOOL ScrCmd_Unk01F5(struct ScriptContext * ctx) u16 total = 0; for (; i < 7; i++) { - total += Bag_GetQuantity(Sav2_Bag_get(sav_ptr->saveBlock2), UNK_020F450C[i][0], 4); + total += Bag_GetQuantity(Sav2_Bag_get(sav_ptr->saveBlock2), gFossilPokemonMap[i][0], 4); if (total >= needed_amount) { - *ret_ptr1 = UNK_020F450C[i][0]; + *ret_ptr1 = gFossilPokemonMap[i][0]; *ret_ptr2 = i; break; } diff --git a/arm9/src/scrcmd_mart.c b/arm9/src/scrcmd_mart.c new file mode 100644 index 00000000..6803617c --- /dev/null +++ b/arm9/src/scrcmd_mart.c @@ -0,0 +1,442 @@ +#include "global.h"
+#include "constants/items.h"
+#include "constants/seal_constants.h"
+#include "constants/decorations.h"
+#include "scrcmd.h"
+#include "module_06.h"
+
+extern void FUN_02038AD0(struct UnkStruct_0204639C *);
+
+static const u16 UNK_020F40A6[] = {
+ ITEM_AIR_MAIL,
+ ITEM_HEAL_BALL,
+ 0xFFFF
+};
+
+static const u16 UNK_020F40A0[] = {
+ ITEM_STEEL_MAIL,
+ ITEM_LUXURY_BALL,
+ 0xFFFF
+};
+
+static const u16 UNK_020F40B4[] = {
+ ITEM_TUNNEL_MAIL,
+ ITEM_HEAL_BALL,
+ ITEM_NET_BALL,
+ 0xFFFF
+};
+
+static const u16 UNK_020F40AC[] = {
+ ITEM_BLOOM_MAIL,
+ ITEM_HEAL_BALL,
+ ITEM_NET_BALL,
+ 0xFFFF
+};
+
+static const u16 UNK_020F40BC[] = {
+ ITEM_AIR_MAIL,
+ ITEM_HEAL_BALL,
+ ITEM_NET_BALL,
+ ITEM_NEST_BALL,
+ 0xFFFF
+};
+
+static const u16 UNK_020F40F8[] = {
+ ITEM_HEART_MAIL,
+ ITEM_HEAL_BALL,
+ ITEM_NET_BALL,
+ ITEM_NEST_BALL,
+ 0xFFFF
+};
+
+static const u16 UNK_020F4102[] = {
+ ITEM_AIR_MAIL,
+ ITEM_QUICK_BALL,
+ ITEM_TIMER_BALL,
+ ITEM_REPEAT_BALL,
+ 0xFFFF
+};
+
+static const u16 UNK_020F40DA[] = {
+ ITEM_AIR_MAIL,
+ ITEM_NET_BALL,
+ ITEM_NEST_BALL,
+ ITEM_DUSK_BALL,
+ 0xFFFF
+};
+
+static const u16 UNK_020F40EE[] = {
+ ITEM_AIR_MAIL,
+ ITEM_DUSK_BALL,
+ ITEM_QUICK_BALL,
+ ITEM_TIMER_BALL,
+ 0xFFFF
+};
+
+static const u16 UNK_020F40D0[] = {
+ ITEM_SNOW_MAIL,
+ ITEM_DUSK_BALL,
+ ITEM_QUICK_BALL,
+ ITEM_TIMER_BALL,
+ 0xFFFF
+};
+
+static const u16 UNK_020F40C6[] = {
+ ITEM_HEAL_POWDER,
+ ITEM_ENERGYPOWDER,
+ ITEM_ENERGY_ROOT,
+ ITEM_REVIVAL_HERB,
+ 0xFFFF
+};
+
+static const u16 UNK_020F40E4[] = {
+ ITEM_AIR_MAIL,
+ ITEM_NEST_BALL,
+ ITEM_DUSK_BALL,
+ ITEM_QUICK_BALL,
+ 0xFFFF
+};
+
+static const u16 UNK_020F410C[] = {
+ DECORATION_YELLOW_CUSHION,
+ DECORATION_CUPBOARD,
+ DECORATION_TV,
+ DECORATION_REFRIGERATOR,
+ DECORATION_PRETTY_SINK,
+ 0xFFFF
+};
+
+static const u16 UNK_020F4118[] = {
+ DECORATION_MUNCHLAX_DOLL,
+ DECORATION_BONSLY_DOLL,
+ DECORATION_MIME_JR__DOLL,
+ DECORATION_MANTYKE_DOLL,
+ DECORATION_BUIZEL_DOLL,
+ DECORATION_CHATOT_DOLL,
+ 0xFFFF
+};
+
+static const u16 UNK_020F4126[] = {
+ ITEM_PROTEIN,
+ ITEM_IRON,
+ ITEM_CALCIUM,
+ ITEM_ZINC,
+ ITEM_CARBOS,
+ ITEM_HP_UP,
+ 0xFFFF
+};
+
+static const u16 UNK_020F4134[] = {
+ ITEM_TM38,
+ ITEM_TM25,
+ ITEM_TM14,
+ ITEM_TM22,
+ ITEM_TM52,
+ ITEM_TM15,
+ 0xFFFF
+};
+
+static const u16 UNK_020F41B2[] = {
+ SEAL_STAR_A,
+ SEAL_A,
+ SEAL_FIRE_A,
+ SEAL_SONG_A,
+ SEAL_LINE_B,
+ SEAL_ELE_B,
+ SEAL_PARTY_D,
+ 0xFFFF
+};
+
+static const u16 UNK_020F4142[] = {
+ SEAL_HEART_B,
+ SEAL_STAR_C,
+ SEAL_FIRE_C,
+ SEAL_FLORA_B,
+ SEAL_SONG_C,
+ SEAL_SMOKE_A,
+ SEAL_ELE_D,
+ 0xFFFF
+};
+
+static const u16 UNK_020F4152[] = {
+ SEAL_FOAMY_D,
+ SEAL_PARTY_C,
+ SEAL_FLORA_F,
+ SEAL_SONG_G,
+ SEAL_HEART_F,
+ SEAL_LINE_A,
+ SEAL_ELE_A,
+ 0xFFFF
+};
+
+static const u16 UNK_020F4162[] = {
+ SEAL_HEART_C,
+ SEAL_STAR_D,
+ SEAL_FIRE_D,
+ SEAL_FLORA_C,
+ SEAL_SONG_D,
+ SEAL_SMOKE_B,
+ SEAL_FOAMY_A,
+ 0xFFFF
+};
+
+static const u16 UNK_020F4172[] = {
+ SEAL_HEART_D,
+ SEAL_FOAMY_B,
+ SEAL_PARTY_A,
+ SEAL_FLORA_D,
+ SEAL_SONG_E,
+ SEAL_STAR_E,
+ SEAL_SMOKE_C,
+ 0xFFFF
+};
+
+static const u16 UNK_020F4182[] = {
+ ITEM_TM83,
+ ITEM_TM17,
+ ITEM_TM54,
+ ITEM_TM20,
+ ITEM_TM33,
+ ITEM_TM16,
+ ITEM_TM70,
+ 0xFFFF
+};
+
+static const u16 UNK_020F4192[] = {
+ SEAL_HEART_A,
+ SEAL_STAR_B,
+ SEAL_FIRE_B,
+ SEAL_SONG_B,
+ SEAL_LINE_C,
+ SEAL_ELE_C,
+ SEAL_FLORA_A,
+ 0xFFFF
+};
+
+static const u16 UNK_020F41A2[] = {
+ SEAL_FOAMY_C,
+ SEAL_PARTY_B,
+ SEAL_FLORA_E,
+ SEAL_SONG_F,
+ SEAL_HEART_E,
+ SEAL_STAR_F,
+ SEAL_SMOKE_D,
+ 0xFFFF
+};
+
+static const u16 UNK_020F41D4[] = {
+ ITEM_X_SPEED,
+ ITEM_X_ATTACK,
+ ITEM_X_DEFENSE,
+ ITEM_GUARD_SPEC_,
+ ITEM_DIRE_HIT,
+ ITEM_X_ACCURACY,
+ ITEM_X_SPECIAL,
+ ITEM_X_SP__DEF,
+ 0xFFFF
+};
+
+static const u16 UNK_020F41C2[] = {
+ ITEM_HEAL_BALL,
+ ITEM_NET_BALL,
+ ITEM_NEST_BALL,
+ ITEM_DUSK_BALL,
+ ITEM_QUICK_BALL,
+ ITEM_TIMER_BALL,
+ ITEM_REPEAT_BALL,
+ ITEM_LUXURY_BALL,
+ 0xFFFF
+};
+
+static const u16 UNK_020F41E6[] = {
+ ITEM_POTION,
+ ITEM_SUPER_POTION,
+ ITEM_HYPER_POTION,
+ ITEM_MAX_POTION,
+ ITEM_REVIVE,
+ ITEM_ANTIDOTE,
+ ITEM_PARLYZ_HEAL,
+ ITEM_BURN_HEAL,
+ ITEM_ICE_HEAL,
+ ITEM_AWAKENING,
+ ITEM_FULL_HEAL,
+ 0xFFFF
+};
+
+static const u16 UNK_020F41FE[] = {
+ ITEM_POKE_BALL,
+ ITEM_GREAT_BALL,
+ ITEM_ULTRA_BALL,
+ ITEM_ESCAPE_ROPE,
+ ITEM_POKE_DOLL,
+ ITEM_REPEL,
+ ITEM_SUPER_REPEL,
+ ITEM_MAX_REPEL,
+ ITEM_GRASS_MAIL,
+ ITEM_FLAME_MAIL,
+ ITEM_BUBBLE_MAIL,
+ ITEM_SPACE_MAIL,
+ 0xFFFF
+};
+
+static const u16 sNormalMartBadgeThresholds[][2] = {
+ // Balls
+ {ITEM_POKE_BALL, 1},
+ {ITEM_GREAT_BALL, 3},
+ {ITEM_ULTRA_BALL, 4},
+ // Potions
+ {ITEM_POTION, 1},
+ {ITEM_SUPER_POTION, 2},
+ {ITEM_HYPER_POTION, 4},
+ {ITEM_MAX_POTION, 5},
+ {ITEM_FULL_RESTORE, 6},
+ // Revives
+ {ITEM_REVIVE, 3},
+ // Status heal
+ {ITEM_ANTIDOTE, 1},
+ {ITEM_PARLYZ_HEAL, 1},
+ {ITEM_AWAKENING, 2},
+ {ITEM_BURN_HEAL, 2},
+ {ITEM_ICE_HEAL, 2},
+ {ITEM_FULL_HEAL, 4},
+ // Dungeon items
+ {ITEM_ESCAPE_ROPE, 2},
+ // Repels
+ {ITEM_REPEL, 2},
+ {ITEM_SUPER_REPEL, 3},
+ {ITEM_MAX_REPEL, 4},
+};
+
+const u16 *sDecorationMartPointers[] = {
+ UNK_020F410C,
+ UNK_020F4118,
+};
+
+const u16 *sSpecialMartPointers[] = {
+ UNK_020F40A6,
+ UNK_020F40B4,
+ UNK_020F40AC,
+ UNK_020F40BC,
+ UNK_020F40C6,
+ UNK_020F40F8,
+ UNK_020F40DA,
+ UNK_020F40E4,
+ UNK_020F41E6,
+ UNK_020F41FE,
+ UNK_020F41D4,
+ UNK_020F4126,
+ UNK_020F4182,
+ UNK_020F4134,
+ UNK_020F40EE,
+ UNK_020F40D0,
+ UNK_020F4102,
+ UNK_020F40A0,
+ UNK_020F41C2,
+};
+
+const u16 *sSealsMartPointers[] = {
+ UNK_020F4192,
+ UNK_020F4142,
+ UNK_020F4162,
+ UNK_020F4172,
+ UNK_020F41A2,
+ UNK_020F4152,
+ UNK_020F41B2,
+};
+
+THUMB_FUNC BOOL ScrCmd_NormalMart(struct ScriptContext * ctx)
+{
+ u16 whichMart = VarGet(ctx->unk80, ScriptReadHalfword(ctx));
+ s32 param;
+ u16 martItems[64];
+ u8 martIdx = 0;
+ u8 badgeCount = 0;
+ u8 i;
+
+ for (i = 0; i < 8; i++)
+ {
+ if (PlayerProfile_TestBadgeFlag(Sav2_PlayerData_GetProfileAddr(ctx->unk80->saveBlock2), i) == TRUE)
+ badgeCount++;
+ }
+ switch (badgeCount)
+ {
+ case 0:
+ param = 1;
+ break;
+ case 1:
+ case 2:
+ param = 2;
+ break;
+ case 3:
+ case 4:
+ param = 3;
+ break;
+ case 5:
+ case 6:
+ param = 4;
+ break;
+ case 7:
+ param = 5;
+ break;
+ case 8:
+ param = 6;
+ break;
+ default:
+ param = 1;
+ break;
+ }
+ for (i = 0; i < NELEMS(sNormalMartBadgeThresholds); i++)
+ {
+ if (param >= sNormalMartBadgeThresholds[i][1])
+ {
+ martItems[martIdx] = sNormalMartBadgeThresholds[i][0];
+ martIdx++;
+ }
+ }
+ martItems[martIdx] = 0xFFFF; // terminator
+ MOD06_0223D3D0(ctx->unk74, ctx->unk80, martItems, MART_ITEMS, 0);
+ return TRUE;
+}
+
+THUMB_FUNC BOOL ScrCmd_SpecialMart(struct ScriptContext * ctx)
+{
+ u16 whichMart = VarGet(ctx->unk80, ScriptReadHalfword(ctx));
+ u32 sp0;
+
+ // Fakematch?
+ if ((u16)(whichMart + (u16)(-8u)) <= 5)
+ sp0 = 1;
+ else
+ sp0 = 0;
+
+ MOD06_0223D3D0(ctx->unk74, ctx->unk80, sSpecialMartPointers[whichMart], MART_ITEMS, sp0);
+ return TRUE;
+}
+
+THUMB_FUNC BOOL ScrCmd_GoodsMart(struct ScriptContext * ctx)
+{
+ u16 whichMart = VarGet(ctx->unk80, ScriptReadHalfword(ctx));
+ u32 sp0;
+
+ if (whichMart <= 1)
+ sp0 = 1;
+ else
+ sp0 = 0;
+
+ MOD06_0223D3D0(ctx->unk74, ctx->unk80, sDecorationMartPointers[whichMart], MART_DECORATIONS, sp0);
+ return TRUE;
+}
+
+THUMB_FUNC BOOL ScrCmd_SealsMart(struct ScriptContext * ctx)
+{
+ u16 whichMart = VarGet(ctx->unk80, ScriptReadHalfword(ctx));
+
+ MOD06_0223D3D0(ctx->unk74, ctx->unk80, sSealsMartPointers[whichMart], MART_SEALS, 0);
+ return TRUE;
+}
+
+THUMB_FUNC BOOL ScrCmd_AccessoriesShop(struct ScriptContext * ctx)
+{
+ FUN_02038AD0(ctx->unk80->unk10);
+ return TRUE;
+}
diff --git a/arm9/src/scrcmd_money.c b/arm9/src/scrcmd_money.c index d2254844..6f18d65d 100644 --- a/arm9/src/scrcmd_money.c +++ b/arm9/src/scrcmd_money.c @@ -82,7 +82,7 @@ THUMB_FUNC BOOL ScrCmd_HasEnoughMoneyAddress(struct ScriptContext * ctx) return FALSE; } -THUMB_FUNC BOOL ScrCmd_Unk0072(struct ScriptContext * ctx) +THUMB_FUNC BOOL ScrCmd_ShowMoneyBox(struct ScriptContext * ctx) { struct UnkSavStruct80 * sav_ptr = ctx->unk80; u32 unk1 = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); @@ -94,7 +94,7 @@ THUMB_FUNC BOOL ScrCmd_Unk0072(struct ScriptContext * ctx) return FALSE; } -THUMB_FUNC BOOL ScrCmd_Unk0073(struct ScriptContext * ctx) +THUMB_FUNC BOOL ScrCmd_HideMoneyBox(struct ScriptContext * ctx) { u32 ** unk = FUN_02039438(ctx->unk80, 0x27); MOD05_021E288C(*unk); @@ -102,7 +102,7 @@ THUMB_FUNC BOOL ScrCmd_Unk0073(struct ScriptContext * ctx) return FALSE; } -THUMB_FUNC BOOL ScrCmd_Unk0074(struct ScriptContext * ctx) +THUMB_FUNC BOOL ScrCmd_UpdateMoneyBox(struct ScriptContext * ctx) { u32 ** unk = FUN_02039438(ctx->unk80, 0x27); MOD05_021E28A0(ctx->unk80, *unk); diff --git a/arm9/src/scrcmd_names.c b/arm9/src/scrcmd_names.c index cf721328..ec1d8c92 100644 --- a/arm9/src/scrcmd_names.c +++ b/arm9/src/scrcmd_names.c @@ -53,7 +53,7 @@ THUMB_FUNC BOOL ScrCmd_GetFriendName(struct ScriptContext* ctx) return FALSE; } -THUMB_FUNC BOOL ScrCmd_Unk00D0(struct ScriptContext* ctx) +THUMB_FUNC BOOL ScrCmd_GetPokemonName(struct ScriptContext* ctx) { struct UnkSavStruct80* sav_ptr = ctx->unk80; struct ScrStrBufs** mgr = FUN_02039438(sav_ptr, 15); @@ -145,7 +145,7 @@ THUMB_FUNC BOOL ScrCmd_Unk0280(struct ScriptContext* ctx) return FALSE; } -THUMB_FUNC BOOL ScrCmd_Unk00D6(struct ScriptContext* ctx) +THUMB_FUNC BOOL ScrCmd_GetPokemonNickname(struct ScriptContext* ctx) { struct UnkSavStruct80* sav_ptr = ctx->unk80; struct ScrStrBufs** mgr = FUN_02039438(sav_ptr, 15); @@ -237,7 +237,7 @@ THUMB_FUNC struct String* FUN_02040AE4(u32 msg_no, u32 heap_id) return ret; } -THUMB_FUNC BOOL ScrCmd_Unk00DB(struct ScriptContext* ctx) +THUMB_FUNC BOOL ScrCmd_GetPlayerStarterName(struct ScriptContext* ctx) { struct ScrStrBufs** mgr = FUN_02039438(ctx->unk80, 15); u8 idx = ScriptReadByte(ctx); @@ -251,7 +251,7 @@ THUMB_FUNC BOOL ScrCmd_Unk00DB(struct ScriptContext* ctx) return FALSE; } -THUMB_FUNC BOOL ScrCmd_Unk00DC(struct ScriptContext* ctx) +THUMB_FUNC BOOL ScrCmd_GetRivalStarterName(struct ScriptContext* ctx) { struct ScrStrBufs** mgr = FUN_02039438(ctx->unk80, 15); u8 idx = ScriptReadByte(ctx); @@ -265,7 +265,7 @@ THUMB_FUNC BOOL ScrCmd_Unk00DC(struct ScriptContext* ctx) return FALSE; } -THUMB_FUNC BOOL ScrCmd_Unk00DD(struct ScriptContext* ctx) +THUMB_FUNC BOOL ScrCmd_GetCounterpartStarterName(struct ScriptContext* ctx) { struct ScrStrBufs** mgr = FUN_02039438(ctx->unk80, 15); u8 idx = ScriptReadByte(ctx); @@ -312,7 +312,7 @@ THUMB_FUNC BOOL ScrCmd_GetUndergroundItemName(struct ScriptContext* ctx) return FALSE; } -THUMB_FUNC BOOL ScrCmd_Unk00E2(struct ScriptContext* ctx) +THUMB_FUNC BOOL ScrCmd_GetMapName(struct ScriptContext* ctx) { struct String* str = String_ctor(22, 4); struct ScrStrBufs** mgr = FUN_02039438(ctx->unk80, 15); @@ -326,7 +326,7 @@ THUMB_FUNC BOOL ScrCmd_Unk00E2(struct ScriptContext* ctx) return FALSE; } -THUMB_FUNC BOOL ScrCmd_Unk017B(struct ScriptContext* ctx) +THUMB_FUNC BOOL ScrCmd_GetBerryName(struct ScriptContext* ctx) { struct ScrStrBufs** mgr = FUN_02039438(ctx->unk80, 15); u8 idx = ScriptReadByte(ctx); @@ -362,7 +362,7 @@ THUMB_FUNC BOOL ScrCmd_GetFashionName(struct ScriptContext* ctx) return FALSE; } -THUMB_FUNC BOOL ScrCmd_Unk0272(struct ScriptContext* ctx) +THUMB_FUNC BOOL ScrCmd_GetWhiteRockInscription(struct ScriptContext* ctx) { struct ScrStrBufs** mgr = FUN_02039438(ctx->unk80, 15); u8 idx = ScriptReadByte(ctx); @@ -393,7 +393,7 @@ THUMB_FUNC BOOL ScrCmd_GetPokemonMoveName(struct ScriptContext* ctx) return FALSE; } -THUMB_FUNC BOOL ScrCmd_Unk0232(struct ScriptContext* ctx) +THUMB_FUNC BOOL ScrCmd_GetRibbonName(struct ScriptContext* ctx) { struct ScrStrBufs** mgr = FUN_02039438(ctx->unk80, 15); u8 idx = ScriptReadByte(ctx); diff --git a/arm9/src/scrcmd_prizes.c b/arm9/src/scrcmd_prizes.c new file mode 100644 index 00000000..9a6cde41 --- /dev/null +++ b/arm9/src/scrcmd_prizes.c @@ -0,0 +1,36 @@ +#include "scrcmd.h" +#include "constants/items.h" + +const u16 gGameCornerPrizes[19][2] = { + { ITEM_SILK_SCARF, 1000 }, + { ITEM_WIDE_LENS, 1000 }, + { ITEM_ZOOM_LENS, 1000 }, + { ITEM_METRONOME, 1000 }, + { ITEM_TM90, 2000 }, + { ITEM_TM58, 2000 }, + { ITEM_TM75, 4000 }, + { ITEM_TM32, 4000 }, + { ITEM_TM44, 6000 }, + { ITEM_TM89, 6000 }, + { ITEM_TM10, 6000 }, + { ITEM_TM27, 8000 }, + { ITEM_TM21, 8000 }, + { ITEM_TM35, 10000 }, + { ITEM_TM24, 10000 }, + { ITEM_TM13, 10000 }, + { ITEM_TM29, 10000 }, + { ITEM_TM74, 15000 }, + { ITEM_TM68, 20000 }, +}; + +THUMB_FUNC BOOL ScrCmd_GetPrizeItemIdAndCost(struct ScriptContext* ctx) +{ + u16 idx = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); + u16* prize_item_id = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx)); + u16* prize_cost_in_coins = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx)); + + *prize_item_id = gGameCornerPrizes[idx][0]; + *prize_cost_in_coins = gGameCornerPrizes[idx][1]; + + return FALSE; +} diff --git a/arm9/src/scrcmd_sound.c b/arm9/src/scrcmd_sound.c new file mode 100644 index 00000000..ec5ab7f8 --- /dev/null +++ b/arm9/src/scrcmd_sound.c @@ -0,0 +1,266 @@ +#include "scrcmd.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); +extern void FUN_02005308(u32, u16); +extern void FUN_02005350(u32, u32); +extern void FUN_0200538C(u32, u16, u32); +extern void FUN_020053CC(u16, u16); +extern BOOL FUN_02005404(void); +extern u16 FUN_02005410(u16); +extern void FUN_020054C8(u16); +extern void 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) +{ + u16 unk0 = ScriptReadHalfword(ctx); + u16 *unk1 = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx)); + + *unk1 = FUN_02005410(unk0); + + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_PlayBgm(struct ScriptContext *ctx) +{ + FUN_0200521C(ScriptReadHalfword(ctx)); + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_StopBgm(struct ScriptContext *ctx) +{ + u32 unk0 = FUN_02004124(ScriptReadHalfword(ctx)); + FUN_02005350(unk0, 0); + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_PlayDefaultBgm(struct ScriptContext *ctx) +{ + u16 unk0 = FUN_0204ABA8(ctx->unk80, *ctx->unk80->mapId); + FUN_0200521C(unk0); + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_Unk0053(struct ScriptContext *ctx) //Special BGM? +{ + FUN_0204AB20(ctx->unk80, ScriptReadHalfword(ctx)); + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_FadeOutBgm(struct ScriptContext *ctx) +{ + u16 unk1 = ScriptReadHalfword(ctx); + u16 unk2 = ScriptReadHalfword(ctx); + + FUN_020053CC(unk1, unk2); + SetupNativeScript(ctx, FUN_02041464); + + return TRUE; +} + +THUMB_FUNC BOOL FUN_02041464(struct ScriptContext* ctx) +{ +#pragma unused(ctx) + + if(!FUN_02005404()) + return TRUE; + else + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_FadeInBgm(struct ScriptContext* ctx) +{ + u16 unk = ScriptReadHalfword(ctx); + + FUN_0200538C(0x7F, unk, 0); + SetupNativeScript(ctx, FUN_02041464); + + return TRUE; +} + +THUMB_FUNC BOOL ScrCmd_Unk0056(struct ScriptContext* ctx) +{ + + u8 PtrIndx0 = ScriptReadByte(ctx); + + u8 PtrIndx1 = ScriptReadByte(ctx); + + FUN_020047C8(PtrIndx0, PtrIndx1); + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_Unk0057(struct ScriptContext* ctx) +{ + FUN_02005308(4, ScriptReadHalfword(ctx)); + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_Unk0058(struct ScriptContext* ctx) +{ + u8 PtrIndx0 = ScriptReadByte(ctx); + FUN_020040F4(PtrIndx0); + return FALSE; +} + + +THUMB_FUNC BOOL ScrCmd_PlayFanfare(struct ScriptContext* ctx) +{ + u16 unk = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); + FUN_020054C8(unk); + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_StopFanfare(struct ScriptContext* ctx) +{ + u16 unk = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); + FUN_020054F0(unk, 0); + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_PlayFanfareWait(struct ScriptContext* ctx) +{ + u16 unk = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); + + ctx->data[0] = unk; + SetupNativeScript(ctx, FUN_02041540); + + return TRUE; +} + +THUMB_FUNC BOOL FUN_02041540(struct ScriptContext* ctx) +{ + if(!FUN_02005508((u16)ctx->data[0])) + return TRUE; + else + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_PlayCry(struct ScriptContext* ctx) +{ + u16 unk0 = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); + u16 unused = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); + FUN_02005578(unk0); + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_PlayCryWait(struct ScriptContext* ctx) +{ + SetupNativeScript(ctx, FUN_02041598); + return TRUE; +} + +THUMB_FUNC BOOL FUN_02041598(struct ScriptContext* ctx) +{ +#pragma unused(ctx) + + if(!FUN_02005670()) + return TRUE; + else + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_PlaySound(struct ScriptContext* ctx) +{ + u16 bgm_id = ScriptReadHalfword(ctx); + PlaySound(bgm_id); + + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_PlaySoundWait(struct ScriptContext* ctx) +{ + SetupNativeScript(ctx, FUN_020415CC); + return TRUE; +} + +THUMB_FUNC BOOL FUN_020415CC(struct ScriptContext* ctx) +{ +#pragma unused(ctx) + if (!FUN_02005CBC()) + return TRUE; + else + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_CheckChatotCry(struct ScriptContext* ctx) +{ + u16* ret_ptr = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx)); + + void* unk = Sav2_Chatot_get(ctx->unk80->saveBlock2); + if (FUN_02005D20(unk) == 1) + { + *ret_ptr = 1; + return FALSE; + } + else + { + *ret_ptr = 0; + return FALSE; + } +} + +THUMB_FUNC BOOL ScrCmd_StartChatotRecord(struct ScriptContext* ctx) +{ + u16* ret_ptr = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx)); + + if (FUN_02005E28() == 0) + { + *ret_ptr = 1; + return FALSE; + } + else + { + *ret_ptr = 0; + return FALSE; + } +} + +THUMB_FUNC BOOL ScrCmd_StopChatotRecord(struct ScriptContext* ctx) +{ +#pragma unused(ctx) + FUN_02005E64(); + return TRUE; +} + +THUMB_FUNC BOOL ScrCmd_SaveChatotCry(struct ScriptContext* ctx) +{ + void* unk = Sav2_Chatot_get(ctx->unk80->saveBlock2); + FUN_02005E6C(unk); + + return TRUE; +} + +THUMB_FUNC BOOL ScrCmd_Unk005D(struct ScriptContext* ctx) +{ +#pragma unused(ctx) + FUN_0200433C(0x3F, 0, 0); + return TRUE; +} + +THUMB_FUNC BOOL ScrCmd_SetVolume(struct ScriptContext* ctx) +{ + u16 unk1 = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); + u16 unk2 = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); + + FUN_0200488C(unk1, unk2); + + return FALSE; +} + diff --git a/arm9/src/scrcmd_23.c b/arm9/src/scrcmd_underground.c index 0c9907a5..5d273c9b 100644 --- a/arm9/src/scrcmd_23.c +++ b/arm9/src/scrcmd_underground.c @@ -6,7 +6,7 @@ extern BOOL FUN_02026298(void*, u16); extern void* FUN_02026CC4(struct SaveBlock2* sav2); extern BOOL FUN_020260C4(void*, u16, u16); -THUMB_FUNC BOOL ScrCmd_Unk0083(struct ScriptContext* ctx) +THUMB_FUNC BOOL ScrCmd_GiveSecretBaseDecoration(struct ScriptContext* ctx) { struct SaveBlock2* sav2 = ctx->unk80->saveBlock2; u16 unk1 = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); @@ -19,7 +19,7 @@ THUMB_FUNC BOOL ScrCmd_Unk0083(struct ScriptContext* ctx) return FALSE; } -THUMB_FUNC BOOL ScrCmd_Unk0084(struct ScriptContext* ctx) +THUMB_FUNC BOOL ScrCmd_TakeSecretBaseDecoration(struct ScriptContext* ctx) { u16 unused1 = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); u16 unused2 = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); @@ -28,7 +28,7 @@ THUMB_FUNC BOOL ScrCmd_Unk0084(struct ScriptContext* ctx) return FALSE; } -THUMB_FUNC BOOL ScrCmd_Unk0085(struct ScriptContext* ctx) +THUMB_FUNC BOOL ScrCmd_HasSpaceForDecoration(struct ScriptContext* ctx) { struct SaveBlock2* sav2 = ctx->unk80->saveBlock2; u16 unk1 = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); @@ -41,7 +41,7 @@ THUMB_FUNC BOOL ScrCmd_Unk0085(struct ScriptContext* ctx) return FALSE; } -THUMB_FUNC BOOL ScrCmd_Unk0086(struct ScriptContext* ctx) +THUMB_FUNC BOOL ScrCmd_GetDecorationCount(struct ScriptContext* ctx) //somewhat unsure on name, was originally CheckGoods { u16 unused1 = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); u16 unused2 = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); @@ -50,7 +50,7 @@ THUMB_FUNC BOOL ScrCmd_Unk0086(struct ScriptContext* ctx) return FALSE; } -THUMB_FUNC BOOL ScrCmd_Unk0087(struct ScriptContext* ctx) +THUMB_FUNC BOOL ScrCmd_GiveUndergroundTrap(struct ScriptContext* ctx) { struct SaveBlock2* sav2 = ctx->unk80->saveBlock2; u16 unk1 = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); @@ -63,7 +63,7 @@ THUMB_FUNC BOOL ScrCmd_Unk0087(struct ScriptContext* ctx) return FALSE; } -THUMB_FUNC BOOL ScrCmd_Unk0088(struct ScriptContext* ctx) +THUMB_FUNC BOOL ScrCmd_TakeUndergroundTrap(struct ScriptContext* ctx) { u16 unused1 = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); u16 unused2 = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); @@ -72,7 +72,7 @@ THUMB_FUNC BOOL ScrCmd_Unk0088(struct ScriptContext* ctx) return FALSE; } -THUMB_FUNC BOOL ScrCmd_Unk0089(struct ScriptContext* ctx) +THUMB_FUNC BOOL ScrCmd_HasSpaceForTrap(struct ScriptContext* ctx) { u16 unused1 = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); u16 unused2 = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); @@ -81,7 +81,7 @@ THUMB_FUNC BOOL ScrCmd_Unk0089(struct ScriptContext* ctx) return FALSE; } -THUMB_FUNC BOOL ScrCmd_Unk008A(struct ScriptContext* ctx) +THUMB_FUNC BOOL ScrCmd_GetTrapCount(struct ScriptContext* ctx) { u16 unused1 = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); u16 unused2 = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); @@ -90,7 +90,7 @@ THUMB_FUNC BOOL ScrCmd_Unk008A(struct ScriptContext* ctx) return FALSE; } -THUMB_FUNC BOOL ScrCmd_Unk008B(struct ScriptContext* ctx) +THUMB_FUNC BOOL ScrCmd_GiveTreasure(struct ScriptContext* ctx) { struct SaveBlock2* sav2 = ctx->unk80->saveBlock2; u16 unused1 = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); @@ -101,7 +101,7 @@ THUMB_FUNC BOOL ScrCmd_Unk008B(struct ScriptContext* ctx) return FALSE; } -THUMB_FUNC BOOL ScrCmd_Unk008C(struct ScriptContext* ctx) +THUMB_FUNC BOOL ScrCmd_TakeTreasure(struct ScriptContext* ctx) { u16 unused1 = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); u16 unused2 = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); @@ -110,7 +110,7 @@ THUMB_FUNC BOOL ScrCmd_Unk008C(struct ScriptContext* ctx) return FALSE; } -THUMB_FUNC BOOL ScrCmd_Unk008D(struct ScriptContext* ctx) +THUMB_FUNC BOOL ScrCmd_HasSpaceForTreasure(struct ScriptContext* ctx) { u16 unused1 = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); u16 unused2 = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); @@ -119,7 +119,7 @@ THUMB_FUNC BOOL ScrCmd_Unk008D(struct ScriptContext* ctx) return FALSE; } -THUMB_FUNC BOOL ScrCmd_Unk008E(struct ScriptContext* ctx) +THUMB_FUNC BOOL ScrCmd_GetTreasureCount(struct ScriptContext* ctx) { u16 unused1 = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); u16 unused2 = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); @@ -128,7 +128,7 @@ THUMB_FUNC BOOL ScrCmd_Unk008E(struct ScriptContext* ctx) return FALSE; } -THUMB_FUNC BOOL ScrCmd_Unk008F(struct ScriptContext* ctx) +THUMB_FUNC BOOL ScrCmd_GiveUndergroundSphere(struct ScriptContext* ctx) { struct SaveBlock2* sav2 = ctx->unk80->saveBlock2; u16 unk1 = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); @@ -141,7 +141,7 @@ THUMB_FUNC BOOL ScrCmd_Unk008F(struct ScriptContext* ctx) return FALSE; } -THUMB_FUNC BOOL ScrCmd_Unk0090(struct ScriptContext* ctx) +THUMB_FUNC BOOL ScrCmd_TakeUndergroundSphere(struct ScriptContext* ctx) { u16 unused1 = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); u16 unused2 = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); @@ -150,7 +150,7 @@ THUMB_FUNC BOOL ScrCmd_Unk0090(struct ScriptContext* ctx) return FALSE; } -THUMB_FUNC BOOL ScrCmd_Unk0091(struct ScriptContext* ctx) +THUMB_FUNC BOOL ScrCmd_HasSpaceForSphere(struct ScriptContext* ctx) { u16 unused1 = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); u16 unused2 = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); @@ -159,7 +159,7 @@ THUMB_FUNC BOOL ScrCmd_Unk0091(struct ScriptContext* ctx) return FALSE; } -THUMB_FUNC BOOL ScrCmd_Unk0092(struct ScriptContext* ctx) +THUMB_FUNC BOOL ScrCmd_GetSphereCount(struct ScriptContext* ctx) { u16 unused1 = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); u16 unused2 = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); diff --git a/arm9/src/script.c b/arm9/src/script.c index 2fa80058..3de2ee73 100644 --- a/arm9/src/script.c +++ b/arm9/src/script.c @@ -76,7 +76,7 @@ THUMB_FUNC u8 RunScriptCommand(struct ScriptContext *ctx) cmdCode = ScriptReadHalfword(ctx);
if (cmdCode >= ctx->cmdCount)
{
- ErrorHandling();
+ GF_AssertFail();
ctx->mode = 0;
return FALSE;
}
diff --git a/arm9/src/script_buffers.c b/arm9/src/script_buffers.c index e9a55051..1242d550 100644 --- a/arm9/src/script_buffers.c +++ b/arm9/src/script_buffers.c @@ -12,6 +12,7 @@ #include "trainer_data.h" #include "script_buffers.h" #include "unk_02024E64.h" +#include "text.h" #pragma thumb on @@ -19,10 +20,8 @@ extern u32 GetCityNamesMsgdataIdByCountry(u32); extern void GetECWordIntoStringByIndex(u32 a0, struct String * a1); extern void StringCat_HandleTrainerName(struct String * dest, const struct String * src); extern void StrAddChar(struct String * str, u16 val); -extern void * FUN_02006BB0(NarcId, s32, s32, struct UnkStruct_0200B870_sub **, u32); -extern BOOL UncompressFromNarc(NarcId narcId, s32 memberNo, BOOL a2, u32 heap_id, BOOL a4); -extern void FUN_02019658(int, u8 *, u16, u16, u16, u16, u16, u16, u16, u16); -extern void FUN_020196F4(int, u8, u16, u16, u16, u16); +extern void * GfGfxLoader_GetCharData(NarcId, s32, s32, struct UnkStruct_0200B870_sub **, u32); +extern void * GfGfxLoader_LoadFromNarc(NarcId narcId, s32 memberNo, BOOL isCompressed, u32 heap_id, BOOL allocAtEnd); const u16 UNK_020ECE6C[][2] = { { 0x0140, 0x0008 }, @@ -752,7 +751,7 @@ struct UnkStruct_0200B870 * MessagePrinter_new(u32 r5, u32 r6, u32 sp4, u32 r4) struct UnkStruct_0200B870 * sp8 = AllocFromHeap(r4, sizeof(struct UnkStruct_0200B870)); if (sp8 != NULL) { - sp8->unk_0 = FUN_02006BB0(NARC_GRAPHIC_FONT, 4, 1, &sp8->unk_4, r4); + sp8->unk_0 = GfGfxLoader_GetCharData(NARC_GRAPHIC_FONT, 4, 1, &sp8->unk_4, r4); int i; u8 * ptr = sp8->unk_4->unk_14; for (i = 0; i < sp8->unk_4->unk_10; i++) @@ -803,24 +802,24 @@ void MessagePrinter_delete(struct UnkStruct_0200B870 * a0) } } -void FUN_0200B9A8(struct UnkStruct_0200B870 * a0, int a1, int a2, int a3, int a4) +void FUN_0200B9A8(struct UnkStruct_0200B870 * a0, int a1, struct Window *a2, int a3, int a4) { - FUN_02019658(a2, a0->unk_4->unk_14 + UNK_020ECE6C[a1][0], 0, 0, UNK_020ECE6C[a1][1], 8, (u16)a3, (u16)a4, UNK_020ECE6C[a1][1], 8); + BlitBitmapRectToWindow(a2, a0->unk_4->unk_14 + UNK_020ECE6C[a1][0], 0, 0, UNK_020ECE6C[a1][1], 8, (u16)a3, (u16)a4, UNK_020ECE6C[a1][1], 8); } -void FUN_0200B9EC(struct UnkStruct_0200B870 * string, u32 value, u32 n, enum PrintingMode mode, int sp30, int r5, int r7) +void FUN_0200B9EC(struct UnkStruct_0200B870 * string, u32 value, u32 n, enum PrintingMode mode, struct Window *window, int x, int y) { ConvertUIntToDecimalString(string->data, value, mode, n); for (int i = 0; string->data[i] != EOS; i++) { - if (string->data[i] >= 0x00A2 && string->data[i] <= 0x00AB) + if (string->data[i] >= CHAR_0 && string->data[i] <= CHAR_9) { - FUN_02019658(sp30, string->unk_4->unk_14 + (string->data[i] - 0x00A2) * 32, 0, 0, 8, 8, (u16)r5, (u16)r7, 8, 8); + BlitBitmapRectToWindow(window, string->unk_4->unk_14 + (string->data[i] - CHAR_0) * 32, 0, 0, 8, 8, (u16)x, (u16)y, 8, 8); } else { - FUN_020196F4(sp30, (u8)string->unk_28, (u16)r5, (u16)r7, 8, 8); + FillWindowPixelRect(window, (u8)string->unk_28, (u16)x, (u16)y, 8, 8); } - r5 += 8; + x += 8; } } diff --git a/arm9/src/script_pokemon_util.c b/arm9/src/script_pokemon_util.c index a3518bf4..55519ca3 100644 --- a/arm9/src/script_pokemon_util.c +++ b/arm9/src/script_pokemon_util.c @@ -109,7 +109,7 @@ struct Pokemon * GetFirstAliveMonInParty_CrashIfNone(struct PlayerParty * party) if(MonNotFaintedOrEgg(mon))
return mon;
}
- ErrorHandling();
+ GF_AssertFail();
return 0;
}
diff --git a/arm9/src/sound.c b/arm9/src/sound.c index a1e31bbd..a5228dab 100644 --- a/arm9/src/sound.c +++ b/arm9/src/sound.c @@ -6,12 +6,13 @@ #pragma thumb on static struct SoundData sSoundDataBuffer; -static u32 UNK_02107070[2]; +static u32 UNK_02107070; +static u32 UNK_02107074; void FUN_02003C40(void); BOOL FUN_02003D04(void); -void FUN_020040C8(void); -void FUN_02004064(struct SoundData *); +void GF_InitMic(void); +void GF_SoundDataInit(struct SoundData *); void FUN_02004088(struct SoundData *); void FUN_020040A4(struct SoundData *); void FUN_02003CE8(int); @@ -25,20 +26,20 @@ extern void FUN_0200538C(int, int, int); extern BOOL FUN_02005404(void); extern void FUN_02005CFC(void); -void InitSoundData(void * a0, struct Options * a1) +void InitSoundData(struct SaveChatotSoundClip * chatot, struct Options * options) { struct SoundData * sdat = GetSoundDataPointer(); - SDAT_Init(); - FUN_020040C8(); - FUN_02004064(sdat); - sdat->unk_00090 = FUN_020C2A94(sdat->unk_00094, sizeof(sdat->unk_00094)); - SDAT_Open(&sdat->header, "data/sound/sound_data.sdat", sdat->unk_00090, 0); - FUN_020C39CC(sdat->unk_00090); + NNS_SndInit(); + GF_InitMic(); + GF_SoundDataInit(sdat); + sdat->heap = NNS_SndHeapCreate(sdat->heapBuffer, sizeof(sdat->heapBuffer)); + NNS_SndArcInit(&sdat->header, "data/sound/sound_data.sdat", sdat->heap, 0); + NNS_SndArcPlayerSetup(sdat->heap); FUN_02004088(sdat); FUN_020040A4(sdat); - UNK_02107070[1] = 0; - sdat->unk_BCD4C = a0; - FUN_02004D60(a1->soundMethod); + UNK_02107074 = 0; + sdat->chatot = chatot; + FUN_02004D60(options->soundMethod); } void DoSoundUpdateFrame(void) @@ -51,13 +52,13 @@ void DoSoundUpdateFrame(void) FUN_02003C40(); } FUN_02005CFC(); - FUN_020C01A0(); + NNS_SndMain(); } void FUN_02003C40(void) { struct SoundData * sdat = GetSoundDataPointer(); - switch (UNK_02107070[0]) + switch (UNK_02107070) { case 1: FUN_02003CE8(2); @@ -92,7 +93,7 @@ void FUN_02003CE8(int a0) { struct SoundData * sdat = GetSoundDataPointer(); sdat->unk_BCCFC = 0; - UNK_02107070[0] = (u32)a0; + UNK_02107070 = (u32)a0; } BOOL FUN_02003D04(void) @@ -184,7 +185,7 @@ void * FUN_02003D38(u32 a0) case 34: return &sdat->unk_BCD48; case 35: - return &sdat->unk_BCD4C; + return &sdat->chatot; case 36: return &sdat->unk_BCD50; case 37: @@ -199,61 +200,61 @@ void * FUN_02003D38(u32 a0) } } -int FUN_02003F3C(int * a0) +int GF_Snd_SaveState(int * level_p) { struct SoundData * sdat = GetSoundDataPointer(); - int r4 = FUN_020C290C(sdat->unk_00090); - GF_ASSERT(r4 != -1); - if (a0 != NULL) - *a0 = r4; - return r4; + int level = NNS_SndHeapSaveState(sdat->heap); + GF_ASSERT(level != -1); + if (level_p != NULL) + *level_p = level; + return level; } -void FUN_02003F64(int a0) +void GF_Snd_RestoreState(int level) { struct SoundData * sdat = GetSoundDataPointer(); - FUN_020C2828(sdat->unk_00090, a0); + NNS_SndHeapLoadState(sdat->heap, level); } -BOOL FUN_02003F78(u32 * a0) +BOOL GF_Snd_LoadGroup(int groupNo) { struct SoundData * sdat = GetSoundDataPointer(); - return FUN_020C36A8(a0, sdat->unk_00090); + return NNS_SndArcLoadGroup(groupNo, sdat->heap); } -BOOL FUN_02003F90(u32 * a0) +BOOL GF_Snd_LoadSeq(int seqNo) { struct SoundData * sdat = GetSoundDataPointer(); - return FUN_020C3674(a0, sdat->unk_00090); + return NNS_SndArcLoadSeq(seqNo, sdat->heap); } -BOOL FUN_02003FA8(u32 * a0, u32 * a1) +BOOL GF_Snd_LoadSeqEx(int seqNo, u32 loadFlag) { struct SoundData * sdat = GetSoundDataPointer(); - return FUN_020C35E0(a0, a1, sdat->unk_00090); + return NNS_SndArcLoadSeqEx(seqNo, loadFlag, sdat->heap); } -BOOL FUN_02003FC4(u32 * a0) +BOOL GF_Snd_LoadWaveArc(int waveArcNo) { struct SoundData * sdat = GetSoundDataPointer(); - return FUN_020C360C(a0, sdat->unk_00090); + return NNS_SndArcLoadWaveArc(waveArcNo, sdat->heap); } -BOOL FUN_02003FDC(u32 * a0) +BOOL GF_Snd_LoadBank(int bankNo) { struct SoundData * sdat = GetSoundDataPointer(); - return FUN_020C3640(a0, sdat->unk_00090); + return NNS_SndArcLoadBank(bankNo, sdat->heap); } -u32 * FUN_02003FF4(int a0) +u32 * FUN_02003FF4(int playerNo) { struct SoundData * sdat = GetSoundDataPointer(); - if (a0 >= 9) + if (playerNo >= (s32)NELEMS(sdat->players)) { GF_ASSERT(0); - a0 = 0; + playerNo = 0; } - return &sdat->unk_BBC94[a0]; + return &sdat->players[playerNo]; } u32 FUN_02004018(u32 a0) @@ -282,7 +283,7 @@ u32 FUN_02004018(u32 a0) } } -void FUN_02004064(struct SoundData * sdat) +void GF_SoundDataInit(struct SoundData * sdat) { int i; memset(sdat, 0, sizeof(*sdat)); @@ -295,18 +296,18 @@ void FUN_02004088(struct SoundData * sdat) int i; for (i = 0; i < 9; i++) { - FUN_020C0F80(&sdat->unk_BBC94[i]); + NNS_SndHandleInit(&sdat->players[i]); } } void FUN_020040A4(struct SoundData * sdat) { - FUN_02003F3C(&sdat->unk_BCD1C[0]); - FUN_02003F78(NULL); - FUN_02003F3C(&sdat->unk_BCD1C[1]); + GF_Snd_SaveState(&sdat->unk_BCD1C[0]); + GF_Snd_LoadGroup(0); + GF_Snd_SaveState(&sdat->unk_BCD1C[1]); } -void FUN_020040C8(void) +void GF_InitMic(void) { MIC_Init(); PM_SetAmp(1); @@ -315,7 +316,7 @@ void FUN_020040C8(void) void FUN_020040DC(void) { - FUN_020C1040(7, 0); + NNS_SndPlayerStopSeqByPlayerNo(7, 0); FUN_02003FF4(7); - FUN_020C0F68(); + NNS_SndHandleReleaseSeq(); } diff --git a/arm9/src/text.c b/arm9/src/text.c index aadb84c0..36349b8b 100644 --- a/arm9/src/text.c +++ b/arm9/src/text.c @@ -2,27 +2,26 @@ #include "heap.h" #include "string16.h" #include "MI_memory.h" +#include "filesystem.h" +#include "script_buffers.h" +#include "unk_0200CA44.h" const struct FontInfo *gFonts = NULL; u16 UNK_021C5734[0x100]; -u32 UNK_021C5714[8]; -u8 UNK_021C570C[8]; - -extern u32 FUN_0200CA7C(void (*func)(u32, struct TextPrinter *), struct TextPrinter *printer, u32 param2); +BOOL UNK_021C5714[8]; +u16 UNK_021C570E; +u16 UNK_021C5710; +u16 UNK_021C5712; +u8 UNK_021C570C; extern struct TextPrinter *FUN_0201B6C8(void); -extern void FUN_0200CAB4(u32 param0); extern void FUN_0201C1A8(struct TextPrinter *printer); -extern void CopyWindowToVram(u32 windowId); extern u32 FontFunc(u8 fontId, struct TextPrinter *printer); -extern void *FUN_02006BB0(u32 param0, u32 param1, u32 param2, struct TextPrinter **param3, u32 param4); - -extern u32 FUN_0201AB0C(u32 windowId); -extern void FUN_02019658(u32 param0, u32 param1, u32 param2, u32 param3, u32 param4, u32 param5, u32 param6, u32 param7, u32 param8, u32 param9); +extern void * GfGfxLoader_GetCharData(NarcId, s32, s32, struct UnkStruct_0200B870_sub **, u32); THUMB_FUNC void SetFontsPointer(const struct FontInfo *fonts) @@ -96,12 +95,12 @@ THUMB_FUNC void FUN_0201BD7C(u32 param0) FUN_0201BCFC(param0); } -THUMB_FUNC u16 AddTextPrinterParameterized(u32 windowId, u8 fontId, const u16 *str, u32 x, u32 y, u32 speed, u8 (*callback)(struct TextPrinterTemplate *, u16)) +THUMB_FUNC u16 AddTextPrinterParameterized(struct Window * window, u8 fontId, struct String *str, u32 x, u32 y, u32 speed, u8 (*callback)(struct TextPrinterTemplate *, u16)) { struct TextPrinterTemplate printerTemplate; - printerTemplate.windowId = windowId; - printerTemplate.currentChar = str; + printerTemplate.window = window; + printerTemplate.currentChar.wrapped = str; printerTemplate.fontId = fontId; printerTemplate.x = (u8)x; printerTemplate.y = (u8)y; @@ -119,12 +118,12 @@ THUMB_FUNC u16 AddTextPrinterParameterized(u32 windowId, u8 fontId, const u16 *s return AddTextPrinter(&printerTemplate, speed, callback); } -THUMB_FUNC u16 AddTextPrinterParameterized2(u32 windowId, u8 fontId, const u16 *str, u32 x, u32 y, u32 speed, u32 colors, u8 (*callback)(struct TextPrinterTemplate *, u16)) +THUMB_FUNC u16 AddTextPrinterParameterized2(struct Window * window, u8 fontId, struct String *str, u32 x, u32 y, u32 speed, u32 colors, u8 (*callback)(struct TextPrinterTemplate *, u16)) { struct TextPrinterTemplate printerTemplate; - printerTemplate.windowId = windowId; - printerTemplate.currentChar = str; + printerTemplate.window = window; + printerTemplate.currentChar.wrapped = str; printerTemplate.fontId = fontId; printerTemplate.x = (u8)x; printerTemplate.y = (u8)y; @@ -142,13 +141,13 @@ THUMB_FUNC u16 AddTextPrinterParameterized2(u32 windowId, u8 fontId, const u16 * return AddTextPrinter(&printerTemplate, speed, callback); } -THUMB_FUNC u16 AddTextPrinterParameterized3(u32 windowId, u8 fontId, const u16 *str, u32 x, u32 y, u32 speed, u32 colors, u32 letterSpacing, u32 lineSpacing, u8 (*callback)(struct TextPrinterTemplate *, u16)) +THUMB_FUNC u16 AddTextPrinterParameterized3(struct Window * window, u32 fontId, struct String *str, u32 x, u32 y, u32 speed, u32 colors, u32 letterSpacing, u32 lineSpacing, u8 (*callback)(struct TextPrinterTemplate *, u16)) { struct TextPrinterTemplate printerTemplate; - printerTemplate.windowId = windowId; - printerTemplate.currentChar = str; - printerTemplate.fontId = fontId; + printerTemplate.window = window; + printerTemplate.currentChar.wrapped = str; + printerTemplate.fontId = (u8)fontId; printerTemplate.x = (u8)x; printerTemplate.y = (u8)y; printerTemplate.currentX = (u8)x; @@ -185,13 +184,13 @@ THUMB_FUNC u16 AddTextPrinter(struct TextPrinterTemplate *printerTemplate, u32 s } printer->printerTemplate = *printerTemplate; - printer->printerTemplate.currentChar = String_c_str((struct String *)printer->printerTemplate.currentChar); //TODO clean up + printer->printerTemplate.currentChar.raw = String_c_str(printer->printerTemplate.currentChar.wrapped); printer->callback = callback; - UNK_021C570C[0] = 0; + UNK_021C570C = 0; FUN_0201C1A8(printer); if (speed != 0xff && speed != 0) { - printer->textSpeedBottom += 0xff; + printer->textSpeedBottom--; printer->textSpeedTop = 1; printer->minLetterSpacing = FUN_0201BCC8(RunTextPrinter, printer, 1); return printer->minLetterSpacing; @@ -211,7 +210,7 @@ THUMB_FUNC u16 AddTextPrinter(struct TextPrinterTemplate *printerTemplate, u32 s } if (speed != 0xff) { - CopyWindowToVram(printer->printerTemplate.windowId); // CopyWindowToVram? + CopyWindowToVram(printer->printerTemplate.window); } FUN_0201C238(printer); FreeToHeap((void *)printer); @@ -222,7 +221,7 @@ THUMB_FUNC u16 AddTextPrinter(struct TextPrinterTemplate *printerTemplate, u32 s THUMB_FUNC void RunTextPrinter(u32 param0, struct TextPrinter *printer) { #pragma unused(param0) - if (UNK_021C570C[0] == 0) + if (UNK_021C570C == 0) { if (printer->Unk29 == 0) { @@ -232,7 +231,7 @@ THUMB_FUNC void RunTextPrinter(u32 param0, struct TextPrinter *printer) switch (temp) { case 0: - CopyWindowToVram(printer->printerTemplate.windowId); + CopyWindowToVram(printer->printerTemplate.window); //fallthrough case 3: if (printer->callback == NULL) @@ -268,156 +267,39 @@ THUMB_FUNC u32 RenderFont(struct TextPrinter *printer) } } -#ifdef NONMATCHING THUMB_FUNC void GenerateFontHalfRowLookupTable(u8 fgColor, u8 bgColor, u8 shadowColor) { - u32 fg12, bg12, shadow12; - u32 temp; - - u16 *current = UNK_021C570C; - - bg12 = bgColor << 12; - fg12 = fgColor << 12; - shadow12 = shadowColor << 12; - - temp = (bgColor << 8) | (bgColor << 4) | bgColor; - *(current++) = (bg12) | temp; - *(current++) = (fg12) | temp; - *(current++) = (shadow12) | temp; - - temp = (fgColor << 8) | (bgColor << 4) | bgColor; - *(current++) = (bg12) | temp; - *(current++) = (fg12) | temp; - *(current++) = (shadow12) | temp; - - temp = (shadowColor << 8) | (bgColor << 4) | bgColor; - *(current++) = (bg12) | temp; - *(current++) = (fg12) | temp; - *(current++) = (shadow12) | temp; - - temp = (bgColor << 8) | (fgColor << 4) | bgColor; - *(current++) = (bg12) | temp; - *(current++) = (fg12) | temp; - *(current++) = (shadow12) | temp; - - temp = (fgColor << 8) | (fgColor << 4) | bgColor; - *(current++) = (bg12) | temp; - *(current++) = (fg12) | temp; - *(current++) = (shadow12) | temp; - - temp = (shadowColor << 8) | (fgColor << 4) | bgColor; - *(current++) = (bg12) | temp; - *(current++) = (fg12) | temp; - *(current++) = (shadow12) | temp; - - temp = (bgColor << 8) | (shadowColor << 4) | bgColor; - *(current++) = (bg12) | temp; - *(current++) = (fg12) | temp; - *(current++) = (shadow12) | temp; - - temp = (fgColor << 8) | (shadowColor << 4) | bgColor; - *(current++) = (bg12) | temp; - *(current++) = (fg12) | temp; - *(current++) = (shadow12) | temp; - - temp = (shadowColor << 8) | (shadowColor << 4) | bgColor; - *(current++) = (bg12) | temp; - *(current++) = (fg12) | temp; - *(current++) = (shadow12) | temp; - - temp = (bgColor << 8) | (bgColor << 4) | fgColor; - *(current++) = (bg12) | temp; - *(current++) = (fg12) | temp; - *(current++) = (shadow12) | temp; - - temp = (fgColor << 8) | (bgColor << 4) | fgColor; - *(current++) = (bg12) | temp; - *(current++) = (fg12) | temp; - *(current++) = (shadow12) | temp; - - temp = (shadowColor << 8) | (bgColor << 4) | fgColor; - *(current++) = (bg12) | temp; - *(current++) = (fg12) | temp; - *(current++) = (shadow12) | temp; - - temp = (bgColor << 8) | (fgColor << 4) | fgColor; - *(current++) = (bg12) | temp; - *(current++) = (fg12) | temp; - *(current++) = (shadow12) | temp; - - temp = (fgColor << 8) | (fgColor << 4) | fgColor; - *(current++) = (bg12) | temp; - *(current++) = (fg12) | temp; - *(current++) = (shadow12) | temp; - - temp = (shadowColor << 8) | (fgColor << 4) | fgColor; - *(current++) = (bg12) | temp; - *(current++) = (fg12) | temp; - *(current++) = (shadow12) | temp; - - temp = (bgColor << 8) | (shadowColor << 4) | fgColor; - *(current++) = (bg12) | temp; - *(current++) = (fg12) | temp; - *(current++) = (shadow12) | temp; - - temp = (fgColor << 8) | (shadowColor << 4) | fgColor; - *(current++) = (bg12) | temp; - *(current++) = (fg12) | temp; - *(current++) = (shadow12) | temp; - - temp = (shadowColor << 8) | (shadowColor << 4) | fgColor; - *(current++) = (bg12) | temp; - *(current++) = (fg12) | temp; - *(current++) = (shadow12) | temp; - - temp = (bgColor << 8) | (bgColor << 4) | shadowColor; - *(current++) = (bg12) | temp; - *(current++) = (fg12) | temp; - *(current++) = (shadow12) | temp; - - temp = (fgColor << 8) | (bgColor << 4) | shadowColor; - *(current++) = (bg12) | temp; - *(current++) = (fg12) | temp; - *(current++) = (shadow12) | temp; - - temp = (shadowColor << 8) | (bgColor << 4) | shadowColor; - *(current++) = (bg12) | temp; - *(current++) = (fg12) | temp; - *(current++) = (shadow12) | temp; - - temp = (bgColor << 8) | (fgColor << 4) | shadowColor; - *(current++) = (bg12) | temp; - *(current++) = (fg12) | temp; - *(current++) = (shadow12) | temp; - - temp = (fgColor << 8) | (fgColor << 4) | shadowColor; - *(current++) = (bg12) | temp; - *(current++) = (fg12) | temp; - *(current++) = (shadow12) | temp; - - temp = (shadowColor << 8) | (fgColor << 4) | shadowColor; - *(current++) = (bg12) | temp; - *(current++) = (fg12) | temp; - *(current++) = (shadow12) | temp; - - temp = (bgColor << 8) | (shadowColor << 4) | shadowColor; - *(current++) = (bg12) | temp; - *(current++) = (fg12) | temp; - *(current++) = (shadow12) | temp; - - temp = (fgColor << 8) | (shadowColor << 4) | shadowColor; - *(current++) = (bg12) | temp; - *(current++) = (fg12) | temp; - *(current++) = (shadow12) | temp; - - temp = (shadowColor << 8) | (shadowColor << 4) | shadowColor; - *(current++) = (bg12) | temp; - *(current++) = (fg12) | temp; - *(current++) = (shadow12) | temp; + s32 r5 = 0; + u32 sp20[4]; + s32 i; // sp14 + s32 j; // sp10 + s32 k; // spC + s32 l; // r3 + + sp20[0] = 0; + sp20[1] = fgColor; + sp20[2] = shadowColor; + sp20[3] = bgColor; + + // FIXME: Need these to be accessed by a pointer to UNK_021C570C + UNK_021C5712 = bgColor; + UNK_021C570E = fgColor; + UNK_021C5710 = shadowColor; + + for (i = 0; i < 4; i++) + { + for (j = 0; j < 4; j++) + { + for (k = 0; k < 4; k++) + { + for (l = 0; l < 4; l++) + { + UNK_021C5734[r5++] = (u16)((sp20[l] << 12) | (sp20[k] << 8) | (sp20[j] << 4) | (sp20[i] << 0)); + } + } + } + } } -#else -GLOBAL_ASM("asm/nonmatchings/GenerateFontHalfRowLookupTable.s") -#endif THUMB_FUNC void DecompressGlyphTile(const u16 *src, u16 *dst) { @@ -444,12 +326,12 @@ THUMB_FUNC void FUN_0201C1A8(struct TextPrinter *printer) printer->Unk2C = NULL; } -THUMB_FUNC void *FUN_0201C1B0(void) +THUMB_FUNC u16 *FUN_0201C1B0(void) { - void *res = AllocFromHeap(0, sizeof(struct TextPrinter) * 32); - struct TextPrinter *var; - void *tmp = FUN_02006BB0(14, 5, 0, &var, 0); - MIi_CpuCopy32((void *)var->printerTemplate.Unk20, res, sizeof(struct TextPrinter) * 32); //todo Unk20 can't be right here + void *res = AllocFromHeap(0, 32 * 24 * sizeof(u16)); + struct UnkStruct_0200B870_sub * var; + void *tmp = GfGfxLoader_GetCharData(NARC_GRAPHIC_FONT, 5, 0, &var, 0); + MI_CpuCopy32(var->unk_14, res, 32 * 24 * sizeof(u16)); FreeToHeap(tmp); return res; } @@ -457,14 +339,14 @@ THUMB_FUNC void *FUN_0201C1B0(void) THUMB_FUNC void FUN_0201C1EC(struct TextPrinter *printer, u32 param1, u32 param2, u32 param3) { #pragma unused (param1, param2) - u32 windowId = printer->printerTemplate.windowId; + struct Window * window = printer->printerTemplate.window; if (printer->Unk2C == NULL) { printer->Unk2C = FUN_0201C1B0(); } - u32 r6 = (u32)printer->Unk2C + param3 * (sizeof(struct TextPrinter) * 8); - u32 r2 = ((FUN_0201AB0C(windowId) - 3) << 0x13) >> 0x10; - FUN_02019658(windowId, r6, 0, 0, 24, 32, r2, 0, 24, 32); + u16 * r6 = printer->Unk2C + param3 * 24 * 8; + u16 r2 = (u16)((GetWindowWidth(window) - 3) * 8); + BlitBitmapRectToWindow(window, r6, 0, 0, 24, 32, r2, 0, 24, 32); } THUMB_FUNC void FUN_0201C238(struct TextPrinter *printer) diff --git a/arm9/src/text_02054590.c b/arm9/src/text_02054590.c index 470a2fe3..dcbad024 100644 --- a/arm9/src/text_02054590.c +++ b/arm9/src/text_02054590.c @@ -1,25 +1,27 @@ #include "text_02054590.h" #include "text.h" +#include "unk_02016B94.h" extern void FUN_0201BD5C(void); extern void FUN_02002ED0(u32 param0, u32 param1, u32 param2); extern void FUN_02002EEC(u32 param0, u32 param1, u32 param2); -extern void FUN_02019064(u32 param0, u32 param1, u32 param2, u8 param3, u32 param4, u8 param5, u32 param6, u32 param7, u32 param8); - -extern void FUN_0200CD68(u32 param0, u32 param1, u32 param2, u32 param3, u8 param4, u32 param5); -extern u32 FUN_0201AB08(u32 *param0); -extern void FUN_0200D0BC(u32 *param0, u32 param1, u32 param2, u32 param3); - -extern void FUN_02019620(u32 *param0, u32 param1); +extern void FUN_0200CD68( + struct UnkStruct_02016B94_2 *param0, u32 param1, u32 param2, u32 param3, u8 param4, u32 param5); +extern void FUN_0200D0BC(struct Window *param0, u32 param1, u32 param2, u32 param3); extern void FUN_02002B60(u8 param0); extern void FUN_02002B7C(u32 param0); extern void FUN_02002BB8(u32 param0); -extern void FUN_0200D300(u32 param0, u32 param1, u32 param2, u32 param3, u8 param4, u32 param5, u32 param6); -extern void FUN_0200D6F8(u32 *param0, u32 param1, u32 param2, u32 param3, u8 param4); - +extern void FUN_0200D300(struct UnkStruct_02016B94_2 *param0, + u32 param1, + u32 param2, + u32 param3, + u8 param4, + u32 param5, + u32 param6); +extern void FUN_0200D6F8(struct Window *param0, u32 param1, u32 param2, u32 param3, u8 param4); THUMB_FUNC void FUN_02054590(u32 param0, u32 param1) { @@ -31,7 +33,7 @@ THUMB_FUNC void FUN_02054590(u32 param0, u32 param1) FUN_02002EEC(param0, 384, 4); } -THUMB_FUNC void FUN_020545B8(u32 param0, u32 param1, u32 param2) +THUMB_FUNC void FUN_020545B8(struct UnkStruct_02016B94_2 *param0, struct Window *param1, u32 param2) { if (param2 == 3) { @@ -43,40 +45,41 @@ THUMB_FUNC void FUN_020545B8(u32 param0, u32 param1, u32 param2) } } -THUMB_FUNC void FUN_02054608(u32 *param0, struct Options *options) +THUMB_FUNC void FUN_02054608(struct Window *param0, struct Options *options) { - FUN_0200CD68(*param0, FUN_0201AB08(param0), 994, 10, (u8)Options_GetFrame(options), 4); + FUN_0200CD68(param0->unk00, FUN_0201AB08(param0), 994, 10, (u8)Options_GetFrame(options), 4); FUN_0205464C(param0); FUN_0200D0BC(param0, 0, 994, 10); } -THUMB_FUNC void FUN_0205464C(u32 *param0) +THUMB_FUNC void FUN_0205464C(struct Window *param0) { - FUN_02019620(param0, 15); + FillWindowPixelBuffer(param0, 15); } -THUMB_FUNC u16 FUN_02054658(u8 windowId, const u16 *str, struct Options *options, u8 param3) +THUMB_FUNC u16 FUN_02054658(struct Window * window, struct String *str, struct Options *options, u8 param3) { FUN_02002B60(param3); FUN_02002B7C(0); FUN_02002BB8(0); - return AddTextPrinterParameterized(windowId, 1, str, 0, 0, (u32)Options_GetTextFrameDelay(options), NULL); + return AddTextPrinterParameterized(window, 1, str, 0, 0, (u32)Options_GetTextFrameDelay(options), NULL); } -THUMB_FUNC u16 DrawFieldMessage(u8 windowId, const u16 *str, u8 fontId, u32 speed, u8 a4, u32 a5) +THUMB_FUNC u16 DrawFieldMessage(struct Window * window, struct String *str, u8 fontId, u32 speed, u8 a4, u32 a5) { FUN_02002B60(a4); FUN_02002B7C(a5); FUN_02002BB8(0); - return AddTextPrinterParameterized(windowId, fontId, str, 0, 0, speed, NULL); + return AddTextPrinterParameterized(window, fontId, str, 0, 0, speed, NULL); } -THUMB_FUNC u8 FUN_020546C8(u32 param0) //bool8? +THUMB_FUNC u8 FUN_020546C8(u32 param0) // bool8? { return !FUN_0201BD70(param0); } -THUMB_FUNC void FUN_020546E0(u32 param0, u32 param1, u32 param2, u32 param3) +THUMB_FUNC void FUN_020546E0( + struct UnkStruct_02016B94_2 *param0, struct Window *param1, u32 param2, u32 param3) { u32 r4 = 0; u32 r5 = 0; @@ -100,9 +103,9 @@ THUMB_FUNC void FUN_020546E0(u32 param0, u32 param1, u32 param2, u32 param3) } } -THUMB_FUNC void FUN_02054744(u32 *param0, u32 param1, u32 param2) +THUMB_FUNC void FUN_02054744(struct Window *param0, u32 param1, u32 param2) { - FUN_0200D300(*param0, FUN_0201AB08(param0), 0x399, 9, (u8)param1, param2, 4); - FUN_02019620(param0, 15); + FUN_0200D300(param0->unk00, FUN_0201AB08(param0), 0x399, 9, (u8)param1, param2, 4); + FillWindowPixelBuffer(param0, 15); FUN_0200D6F8(param0, 0, 0x399, 9, (u8)param1); } diff --git a/arm9/src/unk_0200BA78.c b/arm9/src/unk_0200BA78.c new file mode 100644 index 00000000..457001ef --- /dev/null +++ b/arm9/src/unk_0200BA78.c @@ -0,0 +1,36 @@ +#include "global.h" +#include "unk_0200BA78.h" +#include "script_buffers.h" + +THUMB_FUNC void FUN_0200BA78(struct UnkStruct_0200B870 *param0, + int param1, + u32 value, + u32 n, + enum PrintingMode mode, + struct Window *window, + int x, + int y) +{ + FUN_0200B9A8(param0, param1, window, x, y); + FUN_0200B9EC(param0, value, n, mode, window, x + 16, y); +} + +THUMB_FUNC void FUN_0200BAAC( + struct UnkStruct_0200B870 *param0, u32 value, u32 n, enum PrintingMode mode, void *dest) +{ + u8 st0 = (u8)((param0->unk_28 << 4) | param0->unk_28); + ConvertUIntToDecimalString(param0->data, value, mode, n); + + for (int i = 0; param0->data[i] != 0xffff; i++) + { + if (param0->data[i] >= 0xa2 && param0->data[i] <= 0xab) + { + MI_CpuCopy32( + ¶m0->unk_4->unk_14[(param0->data[i] - 0xa2) << 5], dest + i * 0x20, 0x20); + } + else + { + MI_CpuFill8(dest + i * 0x20, st0, 0x20); + } + } +} diff --git a/arm9/src/unk_0200BB14.c b/arm9/src/unk_0200BB14.c new file mode 100644 index 00000000..45850885 --- /dev/null +++ b/arm9/src/unk_0200BB14.c @@ -0,0 +1,1323 @@ +#include "global.h" +#include "unk_0200BB14.h" +#include "game_init.h" +#include "heap.h" + +extern void FUN_0201D060(u32 *param0, u32 param1, u32 param2); +extern void FUN_0201E00C(u32 param0, u32 param1); +extern void NNS_G2dInitOamManagerModule(); +extern void FUN_02009EAC(u32 param0, + u32 param1, + u32 param2, + u32 param3, + u32 param4, + u32 param5, + u32 param6, + u32 param7, + u32 param8); +extern u32 FUN_0201C328(u32 param0, u32 param1); +extern void FUN_0201D168(); +extern void FUN_0201E0BC(); +extern u32 FUN_02008C9C(u32 param0, void *param1, u32 param2); +extern void FUN_0201FFC8(u32 param0); +extern void FUN_0201FDEC(u32 param0); +extern void FUN_02009F80(); +extern void FUN_0201C348(); +extern void FUN_0201FD58(u32 param0); +extern void FUN_02008C80(u32 param0); +extern u32 FUN_02009660(u32 *param0, s32 param1); +extern void FUN_020096B4(u32 param0); +extern void FUN_02009C30(u32 *param0); +extern void FUN_02009E28(u32 *param0); +extern void FUN_02009448(u32 *param0); +extern void FUN_02008E2C(u32 param0); +extern void FUN_0201C350(u32 param0); +extern void FUN_0201D12C(); +extern void FUN_0201E08C(); +extern void FUN_02009FA0(); +extern u32 FUN_0200965C(s32 param0); +extern void FUN_02009668(void *param0, u32 param1, u32 param2); +extern u32 FUN_020096CC(u32 param0); +extern u32 FUN_02008DEC(u32 param0, s32 param1, u32 param2); +extern u32 *FUN_02009424(u32 param0, u32 param1); +extern u32 FUN_020093A8(u32 param0, u32 param1, u32 *param2, u32 param3); +extern void FUN_02009A90(u32 *param0); +extern void FUN_02009D34(u32 *param0); +extern u32 FUN_02008BE0(void *param0, + u32 param1, + u32 param2, + u32 param3, + u32 param4, + u32 param5, + u32 param6, + u32 param7); +extern u32 FUN_0201FE94(struct UnkStruct_0200BB14_4 *param0); +extern void FUN_02020130(u32 param0, u32 param1); +extern void FUN_02020248(u32 param0, u32 param1); +extern u32 FUN_0200945C(u32 param0, s32 param1); +extern u32 FUN_02008F34( + u32 param0, u32 param1, u32 param2, u32 param3, s32 param4, u32 param5, u32 param6); +extern void FUN_02009B04(u32 param0); +extern u32 FUN_02008FEC( + u32 param0, u32 param1, u32 param2, u32 param3, s32 param4, u32 param5, u32 param6, u32 param7); +extern u32 FUN_02009D68(u32 param0); +extern u32 FUN_02009E88(u32 param0, u32 param1); +extern void FUN_02003108(u32 param0, u32 param1, u16 param2, u32 param3); +extern void FUN_02008AA4(struct UnkStruct_0200BB14_sub *param0, + s32 param1, + s32 param2, + s32 param3, + s32 param4, + s32 param5, + s32 param6, + u32 param7, + u32 param8, + u32 param9, + u32 param10, + u32 param11, + u32 param12, + u32 param13, + u32 param14); +extern u8 FUN_020202A0(u32 param0); +extern u32 FUN_020094F0(u32 param0, u32 param1); +extern u32 FUN_02009E54(u32 param0, u32 param1); +extern void FUN_02009CDC(u32 param0); +extern u32 FUN_020090AC( + u32 param0, u32 param1, u32 param2, u32 param3, s32 param4, u32 param5, u32 param6); +extern u32 FUN_02009530(u32 param0); +extern void FUN_02009490(u32 param0, u32 param1); +extern void FUN_0201D324(u32 param0); +extern void FUN_0201E1C8(u32 param0); +extern void FUN_020201E4(u32 param0, u32 param1); +extern u32 FUN_020201DC(u32 param0); +extern void FUN_020200BC(u32 param0, u32 param1); +extern void FUN_020200D8(u32 param0, u32 param1); +extern u32 FUN_02020388(u32 param0); +extern void FUN_02020208(u32 param0); +extern void FUN_0202022C(u32 param0); +extern void FUN_020200A0(u32 param0, u32 param1); +extern u8 FUN_02020128(u32 param0); +extern void FUN_020202A8(u32 param0, u32 param1); +extern u8 FUN_02020300(u32 param0); +extern void FUN_02020238(u32 param0, u8 param1); +extern u8 FUN_02020240(u32 param0); +extern void FUN_02020310(u32 param0, u32 param1); +extern u16 FUN_0202032C(u32 param0); +extern u32 FUN_02020380(u32 param0); +extern void FUN_02020044(u32 param0, u32 *param1); +extern u32 *FUN_0202011C(u32 param0, u16 *param1, u16 *param2); +extern void FUN_020200EC(u32 param0, u32 param1); +extern u32 *FUN_02020120(u32 param0); +extern void FUN_02020064(u32 param0, s32 *param1); +extern void FUN_02020088(u32 param0, u16 param1); +extern u16 FUN_02020124(u32 param0); +extern void FUN_02020100(u32 param0, u32 param1); +extern void FUN_02020054(u32 param0, u32 *param1); +extern void FUN_02020358(u32 param0, u32 param1); +extern void FUN_02020398(u32 param0, u32 param1); +extern void FUN_02009AC4(u32 param0); +extern void FUN_02009B78(u32 param0); +extern void FUN_020090FC(u32 param0, u32 param1, u32 param2, u32 param3, u32 param4, u32 param5); +extern void FUN_02009BE8(u32 param0); +extern void FUN_02009168(u32 param0, u32 param1, u32 param2, u32 param3, u32 param4, u32 param5); +extern void FUN_02009DE0(u32 param0); + +THUMB_FUNC struct UnkStruct_0200BB14_1 *FUN_0200BB14(u32 heap_id) +{ + struct UnkStruct_0200BB14_1 *ptr = AllocFromHeap(heap_id, sizeof(struct UnkStruct_0200BB14_1)); + if (ptr == NULL) + { + return NULL; + } + + ptr->unk000 = heap_id; + ptr->unk004 = 0; + ptr->unk008 = 1; + + return ptr; +} + +THUMB_FUNC struct UnkStruct_0200BB14_2 *FUN_0200BB34(struct UnkStruct_0200BB14_1 *param0) +{ + GF_ASSERT(param0 != NULL); + + struct UnkStruct_0200BB14_2 *ptr = + AllocFromHeap(param0->unk000, sizeof(struct UnkStruct_0200BB14_2)); + if (ptr == NULL) + { + return NULL; + } + + param0->unk004++; + + for (s32 i = 0; i < 6; i++) + { + ptr->unk0c[i] = 0; + } + + return ptr; +} + +THUMB_FUNC u32 FUN_0200BB68(u32 param0) +{ + return param0 + 0x10; +} + +THUMB_FUNC BOOL FUN_0200BB6C( + struct UnkStruct_0200BB14_1 *param0, u32 *param1, u32 *param2, u32 param3) +{ + GF_ASSERT(param0 != NULL); + + if (param0 == NULL) + { + return FALSE; + } + + u32 st14[4] = { param2[0], param2[1], param2[2], param0->unk000 }; + + FUN_0201D060(st14, param2[3], param2[4]); + FUN_0201E00C(param3, param0->unk000); + NNS_G2dInitOamManagerModule(); + + if (param0->unk008 == 1) + { + FUN_02009EAC(param1[0], + param1[1], + param1[2], + param1[3], + param1[4], + param1[5], + param1[6], + param1[7], + param0->unk000); + } + + param0->unk00c = FUN_0201C328(0x20, param0->unk000); + FUN_0201D168(); + FUN_0201E0BC(); + + return TRUE; +} + +THUMB_FUNC BOOL FUN_0200BBF0( + struct UnkStruct_0200BB14_1 *param0, struct UnkStruct_0200BB14_2 *param1, u32 param2) +{ + if (param0 == NULL || param1 == NULL) + { + return FALSE; + } + + param1->unk00 = FUN_02008C9C(param2, param0->unk010, param0->unk000); + + return TRUE; +} + +THUMB_FUNC void FUN_0200BC14(u32 param0) +{ + FUN_0201FFC8(param0); +} + +THUMB_FUNC void FUN_0200BC1C(u32 *param0) +{ + GF_ASSERT(param0 != NULL); + + FUN_0201FDEC(*param0); +} + +THUMB_FUNC void FUN_0200BC30() +{ + FUN_02009F80(); +} + +THUMB_FUNC void FUN_0200BC38() +{ + FUN_0201C348(); +} + +THUMB_FUNC void FUN_0200BC40(struct UnkStruct_0200BB14_2 *param0) +{ + FUN_0201FD58(param0->unk00); +} + +THUMB_FUNC void FUN_0200BC4C(struct UnkStruct_0200BB14_2 *param0) +{ + if (param0->unk04 != 0) + { + FUN_02008C80(param0->unk04); + } +} + +THUMB_FUNC void FUN_0200BC5C(struct UnkStruct_0200BB14_2 *param0) +{ + for (s32 i = 0; i < param0->unk54; i++) + { + FUN_020096B4(FUN_02009660(param0->unk08, i)); + } + + FreeToHeap(param0->unk08); + FUN_02009C30(param0->unk24[0]); + FUN_02009E28(param0->unk24[1]); + + for (s32 i = 0; i < param0->unk54; i++) + { + FUN_02009448(param0->unk24[i]); + FUN_02008E2C(param0->unk0c[i]); + } +} + +THUMB_FUNC void FUN_0200BCB0(u32 *param0) +{ + FUN_0201C350(param0[3]); + FUN_0201D12C(); + FUN_0201E08C(); + + if (param0[2] == 1) + { + FUN_02009FA0(); + } +} + +THUMB_FUNC void FUN_0200BCD0( + struct UnkStruct_0200BB14_1 *param0, struct UnkStruct_0200BB14_2 *param1) +{ + param0->unk004--; + FreeToHeap(param1); +} + +THUMB_FUNC void FUN_0200BCE0( + struct UnkStruct_0200BB14_1 *param0, struct UnkStruct_0200BB14_2 *param1) +{ + FUN_0200BC40(param1); + FUN_0200BC4C(param1); + FUN_0200BC5C(param1); + FUN_0200BCD0(param0, param1); +} + +THUMB_FUNC void FUN_0200BD04(u32 *param0) +{ + GF_ASSERT(param0[1] == 0); + FUN_0200BCB0(param0); + FreeToHeap(param0); +} + +THUMB_FUNC BOOL FUN_0200BD20( + struct UnkStruct_0200BB14_1 *param0, struct UnkStruct_0200BB14_2 *param1, const char **param2) +{ + s32 st14 = 6; + const char **st10 = param2; + + if (param0 == NULL || param1 == NULL) + { + return FALSE; + } + + if (param2[4] == 0) + { + st14 = 4; + } + + param1->unk54 = st14; + u32 r2 = FUN_0200965C(st14); + param1->unk08 = AllocFromHeap(param0->unk000, r2 * st14); + + for (s32 i = 0; i < st14; i++) + { + u32 st18 = FUN_02009660(param1->unk08, i); + void *st1c = FUN_020161A4(param0->unk000, st10[i]); + + FUN_02009668(st1c, st18, param0->unk000); + FreeToHeap(st1c); + } + + for (s32 i = 0; i < st14; i++) + { + param1->unk0c[i] = + FUN_02008DEC(FUN_020096CC(FUN_02009660(param1->unk08, i)), i, param0->unk000); + } + + for (s32 i = 0; i < st14; i++) + { + u32 st20 = FUN_02009660(param1->unk08, i); + param1->unk24[i] = FUN_02009424(FUN_020096CC(st20), param0->unk000); + param1->unk3c[i] = FUN_020093A8(param1->unk0c[i], st20, param1->unk24[i], param0->unk000); + } + + FUN_02009A90(param1->unk24[0]); + FUN_02009D34(param1->unk24[1]); + void *r6 = FUN_020161A4(param0->unk000, st10[6]); + param1->unk04 = FUN_02008BE0(r6, + param0->unk000, + param1->unk0c[0], + param1->unk0c[1], + param1->unk0c[2], + param1->unk0c[3], + param1->unk0c[4], + param1->unk0c[5]); + FreeToHeap(r6); + + return TRUE; +} + +THUMB_FUNC u32 FUN_0200BE38(u32 *param0, u32 *param1, struct UnkStruct_0200BB14_3 *param2) +{ + return FUN_0200BE74(param0, + param1, + param2->unk00, + param2->unk04, + param2->unk06, + param2->unk04, + param2->unk0a, + param2->unk0c, + param2->unk10, + param2->unk14, + param2->unk18, + param2->unk1c, + param2->unk20, + param2->unk24); +} + +THUMB_FUNC u32 FUN_0200BE74(u32 *param0, + u32 *param1, + u32 param2, + s16 param3, + s16 param4, + s16 param5, + u16 param6, + u32 param7, + u32 param8, + u32 param9, + u32 param10, + u32 param11, + u32 param12, + u32 param13) +{ +#pragma unused(param10) +#pragma unused(param11) +#pragma unused(param12) +#pragma unused(param13) + + struct UnkStruct_0200BB14_4 st0; + st0.unk00 = param1[0]; + st0.unk04 = &(*(struct UnkStruct_0200BB14_sub **)(param1[1]))[param2]; + + f32 r0; + if (param3 > 0) + { + r0 = ((f32)(param3 * 0x1000) + (f32)0.5); + } + else + { + r0 = ((f32)(param3 * 0x1000) - (f32)0.5); + } + st0.unk08 = (s32)r0; + + if (param4 > 0) + { + r0 = ((f32)(param4 * 0x1000) + (f32)0.5); + } + else + { + r0 = ((f32)(param4 * 0x1000) - (f32)0.5); + } + st0.unk0c = (s32)r0; + + if (param5 > 0) + { + r0 = ((f32)(param5 * 0x1000) + (f32)0.5); + } + else + { + r0 = ((f32)(param5 * 0x1000) - (f32)0.5); + } + st0.unk10 = (s32)r0; + + if (param9 == 2) + { + st0.unk0c += 0xC0000; + } + + st0.unk14 = 0x1000; + st0.unk18 = 0x1000; + st0.unk1c = 0x1000; + st0.unk20 = 0; + st0.unk24 = param7; + st0.unk28 = param9; + st0.unk2c = param0[0]; + + u32 r4 = FUN_0201FE94(&st0); + if (r4 != 0) + { + FUN_02020130(r4, param6); + + FUN_02020248(r4, param8); + } + + return r4; +} + +THUMB_FUNC BOOL FUN_0200BF60( + struct UnkStruct_0200BB14_1 *param0, struct UnkStruct_0200BB14_2 *param1, u32 *param2) +{ + struct UnkStruct_0200BB14_1 *st0 = param0; + s32 i; + s32 st4 = 6; + + if (st0 == NULL || param1 == NULL) + { + return FALSE; + } + + if (param2[4] == 0 || param2[5] == 0) + { + st4 = 4; + } + + param1->unk54 = st4; + + for (i = 0; i < st4; i++) + { + param1->unk0c[i] = FUN_02008DEC(param2[i], i, st0->unk000); + } + + for (i = 0; i < st4; i++) + { + if (param2[i] != 0) + { + param1->unk24[i] = FUN_02009424(param2[i], st0->unk000); + param1->unk3c[i] = 0; + + for (s32 j = 0; j < (s32)param1->unk24[i][1]; j++) + { + ((u32 *)param1->unk24[i][0])[j] = 0; + } + } + } + + return TRUE; +} + +THUMB_FUNC BOOL FUN_0200C00C(u32 *param0, + struct UnkStruct_0200BB14_2 *param1, + u32 param2, + u32 param3, + u32 param4, + u32 param5, + s32 param6) +{ + if (FUN_0200945C(param1->unk0c[0], param6) == 0) + { + return FALSE; + } + + u32 r5 = FUN_02008F34(param1->unk0c[0], param2, param3, param4, param6, param5, param0[0]); + if (r5 != 0) + { + FUN_02009B04(r5); + FUN_0200C474(param1->unk24[0], r5); + return TRUE; + } + + GF_AssertFail(); + if (r5 != 0) + { + return TRUE; + } + + return FALSE; +} + +THUMB_FUNC s32 FUN_0200C06C(u32 *param0, + struct UnkStruct_0200BB14_2 *param1, + u32 param2, + u32 param3, + u32 param4, + u32 param5, + u32 param6, + s32 param7) +{ + if (FUN_0200945C(param1->unk0c[1], param7) == 0) + { + return -1; + } + + u32 r5 = + FUN_02008FEC(param1->unk0c[1], param2, param3, param4, param7, param6, param5, param0[0]); + if (r5 != 0) + { + GF_ASSERT(FUN_02009D68(r5) == 1); + FUN_0200C474(param1->unk24[1], r5); + return (s8)FUN_02009E88(r5, param6); + } + + GF_AssertFail(); + return -1; +} + +THUMB_FUNC u8 FUN_0200C0DC(u32 param0, + u32 param1, + u32 *param2, + struct UnkStruct_0200BB14_2 *param3, + u32 param4, + u32 param5, + u32 param6, + u32 param7, + u32 param8, + s32 param9) +{ + s32 r4 = FUN_0200C06C(param2, param3, param4, param5, param6, param7, param8, param9); + if (r4 != -1) + { + FUN_02003108(param0, param1, (u16)(r4 << 4), param7 << 5); + } + + return (u8)r4; +} + +THUMB_FUNC u32 FUN_0200C124(u32 *param0, + struct UnkStruct_0200BB14_2 *param1, + u32 param2, + u32 param3, + u32 param4, + s32 param5) +{ + return FUN_0200C404(param0, param1, param2, param3, param4, 2, param5); +} + +THUMB_FUNC u32 FUN_0200C13C(u32 *param0, + struct UnkStruct_0200BB14_2 *param1, + u32 param2, + u32 param3, + u32 param4, + s32 param5) +{ + return FUN_0200C404(param0, param1, param2, param3, param4, 3, param5); +} + +THUMB_FUNC struct UnkStruct_0200BB14_5 *FUN_0200C154( + struct UnkStruct_0200BB14_1 *param0, struct UnkStruct_0200BB14_2 *param1, u32 *param2) +{ + struct UnkStruct_0200BB14_4 st44; + s32 st2c[6]; + + struct UnkStruct_0200BB14_5 *ptr = + AllocFromHeap(param0->unk000, sizeof(struct UnkStruct_0200BB14_5)); + if (ptr == NULL) + { + return NULL; + } + + ptr->unk08 = AllocFromHeap(param0->unk000, sizeof(struct UnkStruct_0200BB14_6)); + if (ptr->unk08 == 0) + { + return NULL; + } + + ptr->unk08->unk0 = AllocFromHeap(param0->unk000, sizeof(struct UnkStruct_0200BB14_sub)); + ptr->unk04 = ptr->unk08->unk0; + if (ptr->unk08->unk0 == NULL) + { + if (ptr->unk08 != NULL) + { + FreeToHeap(ptr->unk08); + } + + return NULL; + } + + for (s32 i = 0; i < 6; i++) + { + st2c[i] = (s32)param2[5 + i]; + } + + if (param1->unk0c[4] == 0 || param1->unk0c[5] == 0) + { + st2c[4] = -1; + st2c[5] = -1; + } + else + { + if (st2c[4] != -1 && FUN_0200945C(param1->unk0c[4], st2c[4]) == 0) + { + st2c[4] = -1; + } + + if (st2c[5] != -1 && FUN_0200945C(param1->unk0c[5], st2c[5]) == 0) + { + st2c[5] = -1; + } + } + + FUN_02008AA4(ptr->unk04, + st2c[0], + st2c[1], + st2c[2], + st2c[3], + st2c[4], + st2c[5], + param2[12], + param2[11], + param1->unk0c[0], + param1->unk0c[1], + param1->unk0c[2], + param1->unk0c[3], + param1->unk0c[4], + param1->unk0c[5]); + + st44.unk00 = param1->unk00; + st44.unk04 = ptr->unk04; + f32 r0; + if (((s16 *)param2)[0] > 0) + { + r0 = ((f32)(((s16 *)param2)[0] << 0xc) + (f32)0.5); + } + else + { + r0 = ((f32)(((s16 *)param2)[0] << 0xc) - (f32)0.5); + } + st44.unk08 = (s32)r0; + + if (((s16 *)param2)[1] > 0) + { + r0 = ((f32)(((s16 *)param2)[1] << 0xc) + (f32)0.5); + } + else + { + r0 = ((f32)(((s16 *)param2)[1] << 0xc) - (f32)0.5); + } + st44.unk0c = (s32)r0; + + if (((s16 *)param2)[2] > 0) + { + r0 = ((f32)(((s16 *)param2)[2] << 0xc) + (f32)0.5); + } + else + { + r0 = ((f32)(((s16 *)param2)[2] << 0xc) - (f32)0.5); + } + st44.unk10 = (s32)r0; + + if (param2[4] == 2) + { + st44.unk0c += 0xC0000; + } + + st44.unk14 = 0x1000; + st44.unk18 = 0x1000; + st44.unk1c = 0x1000; + st44.unk20 = 0; + st44.unk24 = param2[2]; + st44.unk28 = param2[4]; + st44.unk2c = param0->unk000; + + ptr->unk00 = FUN_0201FE94(&st44); + ptr->unk0c = param2[12]; + + if (ptr->unk00 != 0) + { + u8 r6 = FUN_020202A0(ptr->unk00); + + FUN_02020130(ptr->unk00, ((u16 *)param2)[3]); + FUN_02020248(ptr->unk00, r6 + param2[3]); + } + else + { + GF_AssertFail(); + } + + return ptr; +} + +THUMB_FUNC u32 FUN_0200C334(u32 *param0, u32 param1) +{ + return FUN_02009E54(FUN_020094F0(param0[4], param1), 0); +} + +THUMB_FUNC u32 FUN_0200C344(u32 *param0, u32 param1, u32 param2) +{ + return FUN_02009E88(FUN_020094F0(param0[4], param1), param2); +} + +THUMB_FUNC u32 FUN_0200C358(struct UnkStruct_0200BB14_2 *param0, u32 param1) +{ + return FUN_0200C4F4(param0->unk0c[0], param0->unk24[0], param1); +} + +THUMB_FUNC u32 FUN_0200C368(struct UnkStruct_0200BB14_2 *param0, u32 param1) +{ + return FUN_0200C548(param0->unk0c[1], param0->unk24[1], param1); +} + +THUMB_FUNC u32 FUN_0200C378(struct UnkStruct_0200BB14_2 *param0, u32 param1) +{ + return FUN_0200C4A8(param0->unk0c[2], param0->unk24[2], param1); +} + +THUMB_FUNC u32 FUN_0200C388(struct UnkStruct_0200BB14_2 *param0, u32 param1) +{ + return FUN_0200C4A8(param0->unk0c[3], param0->unk24[3], param1); +} + +THUMB_FUNC void FUN_0200C398( + struct UnkStruct_0200BB14_1 *param0, struct UnkStruct_0200BB14_2 *param1) +{ + FUN_0200BC40(param1); + FUN_02009C30(param1->unk24[0]); + FUN_02009E28(param1->unk24[1]); + + for (s32 i = 0; i < param1->unk54; i++) + { + FUN_02009448(param1->unk24[i]); + FUN_02008E2C(param1->unk0c[i]); + } + + FUN_0200BCD0(param0, param1); +} + +THUMB_FUNC void FUN_0200C3DC(u32 *param0) +{ + if (param0[3] != 0) + { + FUN_02009CDC(*(u32 *)param0[1]); + } + + FUN_0201FFC8(param0[0]); + FUN_02008C80(param0[2]); + FreeToHeap(param0); +} + +THUMB_FUNC BOOL FUN_0200C404(u32 *param0, + struct UnkStruct_0200BB14_2 *param1, + u32 param2, + u32 param3, + u32 param4, + u32 param5, + s32 param6) +{ + if (FUN_0200945C(param1->unk0c[param5], param6) == 0) + { + return FALSE; + } + + u32 r5 = FUN_020090AC(param1->unk0c[param5], param2, param3, param4, param6, param5, param0[0]); + if (r5 != 0) + { + u32 r4 = FUN_0200C474(param1->unk24[param5], r5); + GF_ASSERT(r4 == 1); + return r4; + } + GF_AssertFail(); + if (r5 != 0) + { + return TRUE; + } + + return FALSE; +} + +THUMB_FUNC BOOL FUN_0200C474(u32 *param0, u32 param1) +{ + for (s32 i = 0; i < (s32)param0[1]; i++) + { + if (((u32 *)param0[0])[i] == 0) + { + ((u32 *)param0[0])[i] = param1; + param0[2]++; + return TRUE; + } + } + + return FALSE; +} + +THUMB_FUNC BOOL FUN_0200C4A8(u32 param0, u32 *param1, u32 param2) +{ + for (s32 i = 0; i < (s32)param1[1]; i++) + { + if (((u32 *)param1[0])[i] != 0) + { + u32 r0 = FUN_02009530(((u32 *)param1[0])[i]); + if (r0 == param2) + { + + FUN_02009490(param0, ((u32 *)param1[0])[i]); + ((u32 *)param1[0])[i] = 0; + param1[2]--; + + return TRUE; + } + } + } + + return FALSE; +} + +THUMB_FUNC BOOL FUN_0200C4F4(u32 param0, u32 *param1, u32 param2) +{ + for (s32 i = 0; i < (s32)param1[1]; i++) + { + if (((u32 *)param1[0])[i] != 0) + { + u32 r0 = FUN_02009530(((u32 *)param1[0])[i]); + if (r0 == param2) + { + FUN_0201D324(param2); + + FUN_02009490(param0, ((u32 *)param1[0])[i]); + ((u32 *)param1[0])[i] = 0; + param1[2]--; + + return TRUE; + } + } + } + + return FALSE; +} + +THUMB_FUNC BOOL FUN_0200C548(u32 param0, u32 *param1, u32 param2) +{ + for (s32 i = 0; i < (s32)param1[1]; i++) + { + if (((u32 *)param1[0])[i] != 0) + { + u32 r0 = FUN_02009530(((u32 *)param1[0])[i]); + if (r0 == param2) + { + FUN_0201E1C8(param2); + + FUN_02009490(param0, ((u32 *)param1[0])[i]); + ((u32 *)param1[0])[i] = 0; + param1[2]--; + + return TRUE; + } + } + } + + return FALSE; +} + +THUMB_FUNC void FUN_0200C59C(u32 param0) +{ + FUN_020201E4(param0, 0x1000); +} + +THUMB_FUNC void FUN_0200C5A8(u32 *param0) +{ + FUN_0200C59C(param0[0]); +} + +THUMB_FUNC void FUN_0200C5B4(u32 *param0, u32 param1) +{ + FUN_020201E4(param0[0], param1); +} + +THUMB_FUNC void FUN_0200C5C0(u32 *param0, u32 param1) +{ + FUN_02020130(param0[0], param1); +} + +THUMB_FUNC u32 FUN_0200C5CC(u32 *param0) +{ + return FUN_020201DC(param0[0]); +} + +THUMB_FUNC void FUN_0200C5D8(u32 param0, u32 param1) +{ + FUN_020200BC(param0, param1); +} + +THUMB_FUNC void FUN_0200C5E0(u32 *param0, u32 param1) +{ + FUN_0200C5D8(param0[0], param1); +} + +THUMB_FUNC void FUN_0200C5EC(u32 param0, u32 param1) +{ + FUN_020200D8(param0, param1); +} + +THUMB_FUNC void FUN_0200C5F4(u32 *param0, u32 param1) +{ + FUN_0200C5EC(*param0, param1); +} + +THUMB_FUNC u32 FUN_0200C600(u32 param0) +{ + return FUN_02020388(param0); +} + +THUMB_FUNC u32 FUN_0200C608(u32 *param0) +{ + return FUN_0200C600(*param0); +} + +THUMB_FUNC void FUN_0200C614(u32 param0) +{ + FUN_02020208(param0); +} + +THUMB_FUNC void FUN_0200C61C(u32 *param0) +{ + FUN_0200C614(*param0); +} + +THUMB_FUNC void FUN_0200C628(u32 param0) +{ + FUN_0202022C(param0); +} + +THUMB_FUNC void FUN_0200C630(u32 *param0) +{ + FUN_0200C628(*param0); +} + +THUMB_FUNC void FUN_0200C63C(u32 param0, u32 param1) +{ + FUN_020200A0(param0, param1); +} + +THUMB_FUNC void FUN_0200C644(u32 *param0, u32 param1) +{ + FUN_0200C63C(*param0, param1); +} + +THUMB_FUNC u8 FUN_0200C650(u32 param0) +{ + return FUN_02020128(param0); +} + +THUMB_FUNC u8 FUN_0200C658(u32 *param0) +{ + return FUN_0200C650(*param0); +} + +THUMB_FUNC void FUN_0200C664(u32 param0, u32 param1) +{ + FUN_02020248(param0, param1); +} + +THUMB_FUNC void FUN_0200C66C(u32 *param0, u32 param1) +{ + FUN_0200C664(*param0, param1); +} + +THUMB_FUNC void FUN_0200C678(u32 param0, u32 param1) +{ + FUN_020202A8(param0, param1); +} + +THUMB_FUNC void FUN_0200C680(u32 *param0, u32 param1) +{ + FUN_0200C678(*param0, param1); +} + +THUMB_FUNC u8 FUN_0200C68C(u32 *param0) +{ + return FUN_02020300(*param0); +} + +THUMB_FUNC void FUN_0200C698(u32 param0, u32 param1) +{ + FUN_02020238(param0, (u8)param1); +} + +THUMB_FUNC u8 FUN_0200C6A4(u32 *param0) +{ + return FUN_02020240(*param0); +} + +THUMB_FUNC void FUN_0200C6B0(u32 *param0, u32 param1) +{ + FUN_0200C698(*param0, param1); +} + +THUMB_FUNC void FUN_0200C6BC(u32 param0, u32 param1) +{ + FUN_02020310(param0, param1); +} + +THUMB_FUNC void FUN_0200C6C4(u32 *param0, u32 param1) +{ + FUN_0200C6BC(*param0, param1); +} + +THUMB_FUNC u16 FUN_0200C6D0(u32 param0) +{ + return FUN_0202032C(param0); +} + +THUMB_FUNC u16 FUN_0200C6D8(u32 *param0) +{ + return FUN_0200C6D0(*param0); +} + +THUMB_FUNC void FUN_0200C6E4(u32 param0, u32 param1, u32 param2) +{ + u32 st0[3]; + st0[0] = param1 << 12; + st0[1] = param2 << 12; + if (FUN_02020380(param0) == 2) + { + st0[1] += 0xc0000; + } + st0[2] = 0; + + FUN_02020044(param0, st0); +} + +THUMB_FUNC void FUN_0200C714(u32 *param0, u32 param1, u32 param2) +{ + FUN_0200C6E4(*param0, param1, param2); +} + +THUMB_FUNC void FUN_0200C720(u32 param0, u32 param1, u32 param2, u32 param3) +{ + u32 st0[3]; + + st0[0] = param1 << 12; + st0[1] = param2 << 12; + if (FUN_02020380(param0) == 2) + { + st0[1] += param3; + } + st0[2] = 0; + + FUN_02020044(param0, st0); +} + +THUMB_FUNC void FUN_0200C750(u32 *param0, u32 param1, u32 param2, u32 param3) +{ + FUN_0200C720(*param0, param1, param2, param3); +} + +THUMB_FUNC void FUN_0200C75C(u32 param0, u16 *param1, u16 *param2) +{ + s32 *r4 = FUN_0202011C(param0, param1, param2); + + param1[0] = r4[0] / 0x1000; + + if (FUN_02020380(param0) == 2) + { + s32 r1 = r4[1] - 0xc0000; + + param2[0] = r1 / 0x1000; + + return; + } + + param2[0] = r4[1] / 0x1000; +} + +THUMB_FUNC void FUN_0200C7A0(u32 *param0, u16 *param1, u16 *param2) +{ + FUN_0200C75C(*param0, param1, param2); +} + +THUMB_FUNC void FUN_0200C7AC(u32 param0, u16 *param1, u16 *param2, u32 param3) +{ + s32 *r4 = FUN_0202011C(param0, param1, param2); + + param1[0] = r4[0] / 0x1000; + + if (FUN_02020380(param0) == 2) + { + s32 r1 = r4[1] - param3; + + param2[0] = r1 / 0x1000; + + return; + } + + param2[0] = r4[1] / 0x1000; +} + +THUMB_FUNC void FUN_0200C7F0(u32 *param0, u16 *param1, u16 *param2, u32 param3) +{ + FUN_0200C7AC(*param0, param1, param2, param3); +} + +THUMB_FUNC void FUN_0200C7FC(u32 param0, u16 *param1, u16 *param2) +{ + u32 st0[3]; + + u32 *r0 = FUN_0202011C(param0, param1, param2); + + st0[0] = r0[0] + ((u32)param1 << 0xc); + st0[1] = r0[1] + ((u32)param2 << 0xc); + st0[2] = r0[2]; + + FUN_02020044(param0, st0); +} + +THUMB_FUNC void FUN_0200C82C(u32 *param0, u16 *param1, u16 *param2) +{ + FUN_0200C7FC(*param0, param1, param2); +} + +THUMB_FUNC void FUN_0200C838(u32 param0, u32 param1) +{ + FUN_020200EC(param0, param1); +} + +THUMB_FUNC void FUN_0200C840(u32 *param0, u32 param1) +{ + FUN_0200C838(*param0, param1); +} + +THUMB_FUNC void FUN_0200C84C(u32 param0, f32 param1, f32 param2) +{ + s32 *r4 = FUN_02020120(param0); + + r4[0] = (s32)(param1 * 0x1000); + r4[1] = (s32)(param2 * 0x1000); + + FUN_02020064(param0, r4); +} + +THUMB_FUNC void FUN_0200C884(u32 *param0, f32 param1, f32 param2) +{ + FUN_0200C84C(*param0, param1, param2); +} + +THUMB_FUNC void FUN_0200C890(u32 param0, u16 param1) +{ + FUN_02020088(param0, param1); +} + +THUMB_FUNC void FUN_0200C898(u32 *param0, u16 param1) +{ + FUN_0200C890(*param0, param1); +} + +THUMB_FUNC void FUN_0200C8A4(u32 param0, u32 param1) +{ + u16 r0 = FUN_02020124(param0); + r0 += param1; + FUN_02020088(param0, r0); +} + +THUMB_FUNC void FUN_0200C8BC(u32 *param0, u32 param1) +{ + FUN_0200C8A4(*param0, param1); +} + +THUMB_FUNC void FUN_0200C8C8(u32 param0, u32 param1) +{ + FUN_02020100(param0, param1); +} + +THUMB_FUNC void FUN_0200C8D0(u32 *param0, u32 param1) +{ + FUN_0200C8C8(*param0, param1); +} + +THUMB_FUNC void FUN_0200C8DC(u32 *param0, u32 param1, u32 param2) +{ + u32 st0[3]; + st0[0] = param1 << 12; + st0[1] = param2 << 12; + st0[2] = 0; + + FUN_02020054(*param0, st0); +} + +THUMB_FUNC void FUN_0200C8F8(u32 *param0, u32 param1) +{ + FUN_02020358(*param0, param1); +} + +THUMB_FUNC void FUN_0200C904(u32 param0, u32 param1) +{ + FUN_02020398(param0, param1); +} + +THUMB_FUNC void FUN_0200C90C(u32 *param0, u32 param1) +{ + FUN_0200C904(*param0, param1); +} + +THUMB_FUNC BOOL FUN_0200C918(u32 *param0, + struct UnkStruct_0200BB14_2 *param1, + u32 param2, + u32 param3, + u32 param4, + u32 param5, + s32 param6) +{ + if (FUN_0200945C(param1->unk0c[0], param6) == 0) + { + return FALSE; + } + + u32 r5 = FUN_02008F34(param1->unk0c[0], param2, param3, param4, param6, param5, param0[0]); + if (r5 != 0) + { + FUN_02009AC4(r5); + FUN_0200C474(param1->unk24[0], r5); + + return TRUE; + } + + GF_AssertFail(); + if (r5 != 0) + { + return TRUE; + } + + return FALSE; +} + +THUMB_FUNC BOOL FUN_0200C978(u32 *param0, + struct UnkStruct_0200BB14_2 *param1, + u32 param2, + u32 param3, + u32 param4, + u32 param5, + s32 param6) +{ + if (FUN_0200945C(param1->unk0c[0], param6) == 0) + { + return FALSE; + } + + u32 r5 = FUN_02008F34(param1->unk0c[0], param2, param3, param4, param6, param5, param0[0]); + if (r5 != 0) + { + FUN_02009B78(r5); + FUN_0200C474(param1->unk24[0], r5); + + return TRUE; + } + + GF_AssertFail(); + if (r5 != 0) + { + return TRUE; + } + + return FALSE; +} + +THUMB_FUNC void FUN_0200C9D8( + u32 *param0, u32 *param1, u32 param2, u32 param3, u32 param4, u32 param5) +{ + u32 r6 = FUN_020094F0(param1[3], param5); + FUN_020090FC(param1[3], r6, param2, param3, param4, param0[0]); + + FUN_02009BE8(r6); +} + +THUMB_FUNC void FUN_0200CA0C( + u32 *param0, u32 *param1, u32 param2, u32 param3, u32 param4, u32 param5) +{ + u32 r6 = FUN_020094F0(param1[4], param5); + FUN_02009168(param1[4], r6, param2, param3, param4, param0[0]); + + FUN_02009DE0(r6); +} + +THUMB_FUNC u32 FUN_0200CA40(u32 *param0) +{ + return *param0; +} diff --git a/arm9/src/unk_0200CA44.c b/arm9/src/unk_0200CA44.c index fd703cd3..6ffed8be 100644 --- a/arm9/src/unk_0200CA44.c +++ b/arm9/src/unk_0200CA44.c @@ -2,25 +2,25 @@ #include "main.h" #include "unk_0200CA44.h" -extern BOOL FUN_0201B60C(void *, void (*)(u32, void *), void *, void *); +extern BOOL FUN_0201B60C(void *, void (*)(u32, struct TextPrinter *), struct TextPrinter *, u32); extern void FUN_0201B6A0(s32); -THUMB_FUNC BOOL FUN_0200CA44(void (*r0)(u32, void *), void * r1, void * r2) +THUMB_FUNC BOOL FUN_0200CA44(void (*r0)(u32, struct TextPrinter *), struct TextPrinter * r1, u32 r2) { return FUN_0201B60C(gMain.unk18, r0, r1, r2); } -THUMB_FUNC BOOL FUN_0200CA60(void (*r0)(u32, void *), void * r1, void * r2) +THUMB_FUNC BOOL FUN_0200CA60(void (*r0)(u32, struct TextPrinter *), struct TextPrinter * r1, u32 r2) { return FUN_0201B60C(gMain.unk1C, r0, r1, r2); } -THUMB_FUNC BOOL FUN_0200CA7C(void (*r0)(u32, void *), void * r1, void * r2) +THUMB_FUNC BOOL FUN_0200CA7C(void (*r0)(u32, struct TextPrinter *), struct TextPrinter * r1, u32 r2) { return FUN_0201B60C(gMain.unk24, r0, r1, r2); } -THUMB_FUNC BOOL FUN_0200CA98(void (*r0)(u32, void *), void * r1, void * r2) +THUMB_FUNC BOOL FUN_0200CA98(void (*r0)(u32, struct TextPrinter *), struct TextPrinter * r1, u32 r2) { return FUN_0201B60C(gMain.unk20, r0, r1, r2); } diff --git a/arm9/src/unk_02015E30.c b/arm9/src/unk_02015E30.c index 8be466fb..2f7b5bb5 100644 --- a/arm9/src/unk_02015E30.c +++ b/arm9/src/unk_02015E30.c @@ -1,35 +1,37 @@ #include "unk_02015E30.h" -struct UnkStruct_02015E30 UNK_021C4898; +u64 UNK_021C48B0; +u64 UNK_021C48A8; +u64 UNK_021C48A0; +struct IGT * UNK_021C489C; +u32 UNK_021C4898; THUMB_FUNC void FUN_02015E30() { - UNK_021C4898.unk00 = 0; + UNK_021C4898 = 0; } THUMB_FUNC void FUN_02015E3C(struct IGT *igt) { - struct UnkStruct_02015E30 *unk1 = &UNK_021C4898; - UNK_021C4898.unk00 = 1; - UNK_021C4898.unk10 = 0; - UNK_021C4898.unk14 = 0; - UNK_021C4898.unk08 = 0; - UNK_021C4898.unk04 = igt; + UNK_021C4898 = 1; + UNK_021C48A8 = 0; + UNK_021C48A0 = 0; + UNK_021C489C = igt; - UNK_021C4898.unk18 = GetTimer3Count(); + UNK_021C48B0 = GetTimer3Count(); } THUMB_FUNC void FUN_02015E60() { - if (UNK_021C4898.unk00 != 0) + if (UNK_021C4898 != 0) { - u64 res = Timer3CountToSeconds(GetTimer3Count() - UNK_021C4898.unk18); + u64 res = Timer3CountToSeconds(GetTimer3Count() - UNK_021C48B0); - if (UNK_021C4898.unk08 < res) + if (UNK_021C48A0 < res) { - AddIGTSeconds(UNK_021C4898.unk04, (u32)(res - UNK_021C4898.unk08)); - UNK_021C4898.unk08 = res; + AddIGTSeconds(UNK_021C489C, (u32)(res - UNK_021C48A0)); + UNK_021C48A0 = res; } } } diff --git a/arm9/src/unk_02016B94.c b/arm9/src/unk_02016B94.c new file mode 100644 index 00000000..6a9dd194 --- /dev/null +++ b/arm9/src/unk_02016B94.c @@ -0,0 +1,8110 @@ +#include "global.h" +#include "unk_02016B94.h" +#include "GX_layers.h" +#include "game_init.h" +#include "gx.h" +#include "heap.h" + +extern void NNS_G2dGetUnpackedBGCharacterData(void *param0, u32 *param1); +extern void NNS_G2dGetUnpackedPaletteData(void *param0, u32 *param1); + +const u8 UNK_020EDB30[8] = { + 0x10, + 0x20, + 0x20, + 0x20, + 0x20, + 0x20, + 0x00, + 0x00, +}; + +void (*const UNK_020EDB5C[])(struct Window *) = { + FUN_020194C8, + FUN_0201951C, + FUN_020194C8, +}; + +void (*const UNK_020EDB50[])(struct Window *) = { + FUN_020195A8, + FUN_020195E4, + FUN_020195A8, +}; + +void (*const UNK_020EDB44[])(struct Window *) = { + FUN_020195D0, + FUN_0201960C, + FUN_020195D0, +}; + +void (*const UNK_020EDB38[])(struct Window *) = { + FUN_020192D4, + FUN_02019358, + FUN_020192D4, +}; + +void (*const UNK_020EDB68[])(struct Window *) = { + FUN_0201949C, + FUN_020194E0, + FUN_0201949C, +}; + +void (*const UNK_020EDB74[])(struct Window *) = { + FUN_020193B4, + FUN_02019444, + FUN_020193B4, +}; + +THUMB_FUNC struct UnkStruct_02016B94_2 *FUN_02016B94(u32 heap_id) +{ + struct UnkStruct_02016B94_2 *ptr = AllocFromHeap(heap_id, sizeof(struct UnkStruct_02016B94_2)); + memset(ptr, 0, sizeof(struct UnkStruct_02016B94_2)); + ptr->unk00 = heap_id; + ptr->unk04 = 0; + ptr->unk06 = 0; + + return ptr; +} + +THUMB_FUNC u32 FUN_02016BB8(u32 *param0) +{ + return *param0; +} + +THUMB_FUNC void FUN_02016BBC(const struct GraphicsModes *modes) +{ + GX_SetGraphicsMode(modes->mode1, modes->mode2, modes->mode4); + GXS_SetGraphicsMode(modes->mode3); + reg_GX_DISPCNT &= 0xC7FFFFFF; + reg_GX_DISPCNT &= 0xF8FFFFFF; + + GX_DisableEngineALayers(); + GX_DisableEngineBLayers(); +} + +THUMB_FUNC void FUN_02016BF4(u32 *param0, u32 param1) +{ + if (param1 == 0) + { + GX_SetGraphicsMode(param0[0], param0[1], param0[3]); + GX_DisableEngineALayers(); + } + else + { + GXS_SetGraphicsMode(param0[2]); + GX_DisableEngineBLayers(); + } +} + +#ifdef NONMATCHING +THUMB_FUNC void FUN_02016C18( + struct UnkStruct_02016B94_2 *param0, u8 param1, struct UnkStruct_02016B94_1 *param2, u8 param3) +{ + u8 res = FUN_020177DC(param2->unk10, param3); + switch (param1) + { + case 0: + GX_EngineAToggleLayers(1, GX_LAYER_TOGGLE_ON); + + reg_G2_BG0CNT = (reg_G2_BG0CNT & 0x43) | (res << 14) | (param2->unk12 << 8) | + (param2->unk11 << 7) | (param2->unk14 << 13) | (param2->unk13 << 2); + reg_G2_BG0CNT = (reg_G2_BG0CNT & ~3) | (param2->unk15); + + if (param2->unk18 != 0) + { + reg_G2_BG0CNT |= 0x40; + } + else + { + reg_G2_BG0CNT &= ~0x40; + } + + break; + + case 1: + GX_EngineAToggleLayers(2, GX_LAYER_TOGGLE_ON); + reg_G2_BG1CNT = (reg_G2_BG1CNT & 0x43) | (res << 14) | (param2->unk12 << 8) | + (param2->unk11 << 7) | (param2->unk14 << 13) | (param2->unk13 << 2); + reg_G2_BG1CNT = (reg_G2_BG1CNT & ~3) | (param2->unk15); + + if (param2->unk18 != 0) + { + reg_G2_BG1CNT |= 0x40; + } + else + { + reg_G2_BG1CNT &= ~0x40; + } + + break; + + case 2: + GX_EngineAToggleLayers(4, GX_LAYER_TOGGLE_ON); + switch (param3) + { + default: + case 0: + reg_G2_BG2CNT = (reg_G2_BG2CNT & 0x43) | (res << 14) | (param2->unk12 << 8) | + (param2->unk11 << 7) | (param2->unk13 << 2); + break; + case 1: + reg_G2_BG2CNT = (reg_G2_BG2CNT & 0x43) | (res << 14) | (param2->unk12 << 8) | + (param2->unk16 << 13) | (param2->unk13 << 2); + break; + case 2: + reg_G2_BG2CNT = (reg_G2_BG2CNT & 0x43) | (res << 14) | (param2->unk12 << 8) | + (param2->unk16 << 13) | (param2->unk13 << 2); + break; + } + + reg_G2_BG2CNT = (reg_G2_BG2CNT & ~3) | (param2->unk15); + + if (param2->unk18 != 0) + { + reg_G2_BG2CNT |= 0x40; + } + else + { + reg_G2_BG2CNT &= ~0x40; + } + + break; + + case 3: + GX_EngineAToggleLayers(8, GX_LAYER_TOGGLE_ON); + + switch (param3) + { + default: + case 0: + reg_G2_BG3CNT = (reg_G2_BG3CNT & 0x43) | (res << 14) | (param2->unk12 << 8) | + (param2->unk11 << 7) | (param2->unk13 << 2); + break; + case 1: + reg_G2_BG3CNT = (reg_G2_BG3CNT & 0x43) | (res << 14) | (param2->unk12 << 8) | + (param2->unk16 << 13) | (param2->unk13 << 2); + break; + case 2: + reg_G2_BG3CNT = (reg_G2_BG3CNT & 0x43) | (res << 14) | (param2->unk12 << 8) | + (param2->unk16 << 13) | (param2->unk13 << 2); + break; + } + + reg_G2_BG3CNT = (reg_G2_BG3CNT & ~3) | (param2->unk15); + if (param2->unk18 != 0) + { + reg_G2_BG3CNT |= 0x40; + } + else + { + reg_G2_BG3CNT &= ~0x40; + } + break; + + case 4: + GX_EngineBToggleLayers(1, GX_LAYER_TOGGLE_ON); + + reg_G2S_DB_BG0CNT = (reg_G2S_DB_BG0CNT & 0x43) | (res << 14) | (param2->unk12 << 8) | + (param2->unk11 << 7) | (param2->unk14 << 13) | (param2->unk13 << 2); + + reg_G2S_DB_BG0CNT = (reg_G2S_DB_BG0CNT & ~3) | (param2->unk15); + + if (param2->unk18 != 0) + { + reg_G2S_DB_BG0CNT |= 0x40; + } + else + { + reg_G2S_DB_BG0CNT &= ~0x40; + } + + break; + + case 5: + GX_EngineBToggleLayers(2, GX_LAYER_TOGGLE_ON); + + reg_G2S_DB_BG1CNT = (reg_G2S_DB_BG1CNT & 0x43) | (res << 14) | (param2->unk12 << 8) | + (param2->unk11 << 7) | (param2->unk14 << 13) | (param2->unk13 << 2); + + reg_G2S_DB_BG1CNT = (reg_G2S_DB_BG1CNT & ~3) | (param2->unk15); + + if (param2->unk18 != 0) + { + reg_G2S_DB_BG1CNT |= 0x40; + } + else + { + reg_G2S_DB_BG1CNT &= ~0x40; + } + + break; + + case 6: + GX_EngineBToggleLayers(4, GX_LAYER_TOGGLE_ON); + + switch (param3) + { + default: + case 0: + reg_G2S_DB_BG2CNT = (reg_G2S_DB_BG2CNT & 0x43) | (res << 14) | (param2->unk12 << 8) | + (param2->unk11 << 7) | (param2->unk13 << 2); + break; + case 1: + reg_G2S_DB_BG2CNT = (reg_G2S_DB_BG2CNT & 0x43) | (res << 14) | (param2->unk12 << 8) | + (param2->unk16 << 13) | (param2->unk13 << 2); + break; + case 2: + reg_G2S_DB_BG2CNT = (reg_G2S_DB_BG2CNT & 0x43) | (res << 14) | (param2->unk12 << 8) | + (param2->unk16 << 13) | (param2->unk13 << 2); + break; + } + + reg_G2S_DB_BG2CNT = (reg_G2S_DB_BG2CNT & ~3) | (param2->unk15); + + if (param2->unk18 != 0) + { + reg_G2S_DB_BG2CNT |= 0x40; + } + else + { + reg_G2S_DB_BG2CNT &= ~0x40; + } + + break; + case 7: + GX_EngineBToggleLayers(8, GX_LAYER_TOGGLE_ON); + switch (param3) + { + default: + case 0: + reg_G2S_DB_BG3CNT = (reg_G2S_DB_BG3CNT & 0x43) | (res << 14) | (param2->unk12 << 8) | + (param2->unk11 << 7) | (param2->unk13 << 2); + break; + case 1: + reg_G2S_DB_BG3CNT = (reg_G2S_DB_BG3CNT & 0x43) | (res << 14) | (param2->unk12 << 8) | + (param2->unk16 << 13) | (param2->unk13 << 2); + break; + case 2: + reg_G2S_DB_BG3CNT = (reg_G2S_DB_BG3CNT & 0x43) | (res << 14) | (param2->unk12 << 8) | + (param2->unk16 << 13) | (param2->unk13 << 2); + break; + } + + reg_G2S_DB_BG3CNT = (reg_G2S_DB_BG3CNT & ~3) | (param2->unk15); + if (param2->unk18 != 0) + { + reg_G2S_DB_BG3CNT |= 0x40; + } + else + { + reg_G2S_DB_BG3CNT &= ~0x40; + } + break; + } + + param0->unk08[param1].unk20 = 0; + param0->unk08[param1].unk24 = 0x1000; + param0->unk08[param1].unk28 = 0x1000; + param0->unk08[param1].unk2c = 0; + param0->unk08[param1].unk30 = 0; + + if (param2->unk08 != 0) + { + param0->unk08[param1].unk08 = AllocFromHeap(param0->unk00, param2->unk08); + + MI_CpuClear16(param0->unk08[param1].unk08, param2->unk08); + + param0->unk08[param1].unk0c = param2->unk08; + param0->unk08[param1].unk10 = param2->unk0c; + } + else + { + param0->unk08[param1].unk08 = 0; + param0->unk08[param1].unk0c = 0; + param0->unk08[param1].unk10 = 0; + } + + param0->unk08[param1].unk1d = param2->unk10; + param0->unk08[param1].unk1c = param3; + param0->unk08[param1].unk1e = param2->unk11; + + if (param3 == 0 && param2->unk11 == 0) + { + param0->unk08[param1].unk1f = 0x20; + } + else + { + param0->unk08[param1].unk1f = 0x40; + } + + FUN_020179E0(param0, param1, 0, param2->unk00); + FUN_020179E0(param0, param1, 3, param2->unk04); +} +#else +THUMB_FUNC asm void FUN_02016C18( + struct UnkStruct_02016B94_2 *param0, u8 param1, struct UnkStruct_02016B94_1 *param2, u8 param3) +{ + // clang-format off + push {r3-r7, lr} + sub sp, #0x18 + str r1, [sp, #0x4] + str r3, [sp, #0x8] + add r4, r2, #0x0 + str r0, [sp, #0x0] + ldrb r0, [r4, #0x10] + ldr r1, [sp, #0x8] + bl FUN_020177DC + add r5, r0, #0x0 + ldr r0, [sp, #0x4] + cmp r0, #0x7 + bls _02016C36 + b _0201705A +_02016C36: + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #0x6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02016C42: + // jump table (using 16-bit offset) + // .short _02016C52 - _02016C42 - 2; case 0 + // .short _02016CAA - _02016C42 - 2; case 1 + // .short _02016D02 - _02016C42 - 2; case 2 + // .short _02016DA4 - _02016C42 - 2; case 3 + // .short _02016E46 - _02016C42 - 2; case 4 + // .short _02016E9E - _02016C42 - 2; case 5 + // .short _02016EF6 - _02016C42 - 2; case 6 + // .short _02016F98 - _02016C42 - 2; case 7 + + lsl r6, r1, #0 + lsl r6, r4, #1 + lsl r6, r7, #2 + lsl r0, r4, #5 + lsl r2, r0, #8 + lsl r2, r3, #9 + lsl r2, r6, #10 + lsl r4, r2, #13 +_02016C52: + mov r0, #0x1 + add r1, r0, #0x0 + bl GX_EngineAToggleLayers + ldrb r3, [r4, #0x14] + ldrb r1, [r4, #0x12] + ldrb r0, [r4, #0x11] + ldrb r2, [r4, #0x13] + lsl r6, r3, #0xd + lsl r0, r0, #0x7 + lsl r3, r2, #0x2 + str r0, [sp, #0xc] + ldr r2, =0x04000008 + lsl r7, r1, #0x8 + ldrh r1, [r2, #0x0] + mov r0, #0x43 + and r0, r1 + lsl r1, r5, #0xe + orr r1, r0 + ldr r0, [sp, #0xc] + orr r0, r1 + orr r0, r7 + orr r0, r3 + orr r0, r6 + strh r0, [r2, #0x0] + ldrh r1, [r2, #0x0] + mov r0, #0x3 + bic r1, r0 + ldrb r0, [r4, #0x15] + orr r0, r1 + strh r0, [r2, #0x0] + ldr r0, [r4, #0x18] + cmp r0, #0x0 + beq _02016CA0 + ldrh r1, [r2, #0x0] + mov r0, #0x40 + orr r0, r1 + strh r0, [r2, #0x0] + b _0201705A +_02016CA0: + ldrh r1, [r2, #0x0] + mov r0, #0x40 + bic r1, r0 + strh r1, [r2, #0x0] + b _0201705A +_02016CAA: + mov r0, #0x2 + mov r1, #0x1 + bl GX_EngineAToggleLayers + ldrb r3, [r4, #0x14] + ldrb r1, [r4, #0x12] + ldrb r0, [r4, #0x11] + ldrb r2, [r4, #0x13] + lsl r6, r3, #0xd + lsl r0, r0, #0x7 + lsl r3, r2, #0x2 + str r0, [sp, #0x10] + ldr r2, =0x0400000A + lsl r7, r1, #0x8 + ldrh r1, [r2, #0x0] + mov r0, #0x43 + and r0, r1 + lsl r1, r5, #0xe + orr r1, r0 + ldr r0, [sp, #0x10] + orr r0, r1 + orr r0, r7 + orr r0, r3 + orr r0, r6 + strh r0, [r2, #0x0] + ldrh r1, [r2, #0x0] + mov r0, #0x3 + bic r1, r0 + ldrb r0, [r4, #0x15] + orr r0, r1 + strh r0, [r2, #0x0] + ldr r0, [r4, #0x18] + cmp r0, #0x0 + beq _02016CF8 + ldrh r1, [r2, #0x0] + mov r0, #0x40 + orr r0, r1 + strh r0, [r2, #0x0] + b _0201705A +_02016CF8: + ldrh r1, [r2, #0x0] + mov r0, #0x40 + bic r1, r0 + strh r1, [r2, #0x0] + b _0201705A +_02016D02: + mov r0, #0x4 + mov r1, #0x1 + bl GX_EngineAToggleLayers + ldr r0, [sp, #0x8] + cmp r0, #0x0 + beq _02016D18 + cmp r0, #0x1 + beq _02016D3A + cmp r0, #0x2 + beq _02016D5C +_02016D18: + ldrb r1, [r4, #0x12] + ldr r7, =0x0400000C + ldrb r2, [r4, #0x13] + lsl r3, r1, #0x8 + ldrb r0, [r4, #0x11] + lsl r6, r2, #0x2 + ldrh r1, [r7, #0x0] + lsl r2, r0, #0x7 + mov r0, #0x43 + and r0, r1 + lsl r1, r5, #0xe + orr r0, r1 + orr r0, r2 + orr r0, r3 + orr r0, r6 + strh r0, [r7, #0x0] + b _02016D7C +_02016D3A: + ldrb r2, [r4, #0x13] + ldrb r1, [r4, #0x12] + ldrb r0, [r4, #0x16] + lsl r3, r2, #0x2 + ldr r7, =0x0400000C + lsl r2, r1, #0x8 + lsl r6, r0, #0xd + ldrh r1, [r7, #0x0] + mov r0, #0x43 + and r0, r1 + lsl r1, r5, #0xe + orr r0, r1 + orr r0, r2 + orr r0, r3 + orr r0, r6 + strh r0, [r7, #0x0] + b _02016D7C +_02016D5C: + ldrb r1, [r4, #0x12] + ldr r7, =0x0400000C + ldrb r0, [r4, #0x16] + lsl r3, r1, #0x8 + ldrb r2, [r4, #0x13] + lsl r6, r0, #0xd + ldrh r1, [r7, #0x0] + mov r0, #0x43 + lsl r2, r2, #0x2 + and r0, r1 + lsl r1, r5, #0xe + orr r0, r1 + orr r0, r2 + orr r0, r3 + orr r0, r6 + strh r0, [r7, #0x0] +_02016D7C: + ldr r0, =0x0400000C + mov r1, #0x3 + ldrh r2, [r0, #0x0] + bic r2, r1 + ldrb r1, [r4, #0x15] + orr r1, r2 + strh r1, [r0, #0x0] + ldr r1, [r4, #0x18] + cmp r1, #0x0 + beq _02016D9A + ldrh r2, [r0, #0x0] + mov r1, #0x40 + orr r1, r2 + strh r1, [r0, #0x0] + b _0201705A +_02016D9A: + ldrh r2, [r0, #0x0] + mov r1, #0x40 + bic r2, r1 + strh r2, [r0, #0x0] + b _0201705A +_02016DA4: + mov r0, #0x8 + mov r1, #0x1 + bl GX_EngineAToggleLayers + ldr r0, [sp, #0x8] + cmp r0, #0x0 + beq _02016DBA + cmp r0, #0x1 + beq _02016DDC + cmp r0, #0x2 + beq _02016DFE +_02016DBA: + ldrb r1, [r4, #0x12] + ldr r7, =0x0400000E + ldrb r2, [r4, #0x13] + lsl r3, r1, #0x8 + ldrb r0, [r4, #0x11] + lsl r6, r2, #0x2 + ldrh r1, [r7, #0x0] + lsl r2, r0, #0x7 + mov r0, #0x43 + and r0, r1 + lsl r1, r5, #0xe + orr r0, r1 + orr r0, r2 + orr r0, r3 + orr r0, r6 + strh r0, [r7, #0x0] + b _02016E1E +_02016DDC: + ldrb r2, [r4, #0x13] + ldrb r1, [r4, #0x12] + ldrb r0, [r4, #0x16] + lsl r3, r2, #0x2 + ldr r7, =0x0400000E + lsl r2, r1, #0x8 + lsl r6, r0, #0xd + ldrh r1, [r7, #0x0] + mov r0, #0x43 + and r0, r1 + lsl r1, r5, #0xe + orr r0, r1 + orr r0, r2 + orr r0, r3 + orr r0, r6 + strh r0, [r7, #0x0] + b _02016E1E +_02016DFE: + ldrb r1, [r4, #0x12] + ldr r7, =0x0400000E + ldrb r0, [r4, #0x16] + lsl r3, r1, #0x8 + ldrb r2, [r4, #0x13] + lsl r6, r0, #0xd + ldrh r1, [r7, #0x0] + mov r0, #0x43 + lsl r2, r2, #0x2 + and r0, r1 + lsl r1, r5, #0xe + orr r0, r1 + orr r0, r2 + orr r0, r3 + orr r0, r6 + strh r0, [r7, #0x0] +_02016E1E: + ldr r0, =0x0400000E + mov r1, #0x3 + ldrh r2, [r0, #0x0] + bic r2, r1 + ldrb r1, [r4, #0x15] + orr r1, r2 + strh r1, [r0, #0x0] + ldr r1, [r4, #0x18] + cmp r1, #0x0 + beq _02016E3C + ldrh r2, [r0, #0x0] + mov r1, #0x40 + orr r1, r2 + strh r1, [r0, #0x0] + b _0201705A +_02016E3C: + ldrh r2, [r0, #0x0] + mov r1, #0x40 + bic r2, r1 + strh r2, [r0, #0x0] + b _0201705A +_02016E46: + mov r0, #0x1 + add r1, r0, #0x0 + bl GX_EngineBToggleLayers + ldrb r3, [r4, #0x14] + ldrb r1, [r4, #0x12] + ldrb r0, [r4, #0x11] + ldrb r2, [r4, #0x13] + lsl r6, r3, #0xd + lsl r0, r0, #0x7 + lsl r3, r2, #0x2 + str r0, [sp, #0x14] + ldr r2, =0x04001008 + lsl r7, r1, #0x8 + ldrh r1, [r2, #0x0] + mov r0, #0x43 + and r0, r1 + lsl r1, r5, #0xe + orr r1, r0 + ldr r0, [sp, #0x14] + orr r0, r1 + orr r0, r7 + orr r0, r3 + orr r0, r6 + strh r0, [r2, #0x0] + ldrh r1, [r2, #0x0] + mov r0, #0x3 + bic r1, r0 + ldrb r0, [r4, #0x15] + orr r0, r1 + strh r0, [r2, #0x0] + ldr r0, [r4, #0x18] + cmp r0, #0x0 + beq _02016E94 + ldrh r1, [r2, #0x0] + mov r0, #0x40 + orr r0, r1 + strh r0, [r2, #0x0] + b _0201705A +_02016E94: + ldrh r1, [r2, #0x0] + mov r0, #0x40 + bic r1, r0 + strh r1, [r2, #0x0] + b _0201705A +_02016E9E: + mov r0, #0x2 + mov r1, #0x1 + bl GX_EngineBToggleLayers + ldrb r2, [r4, #0x13] + ldrb r1, [r4, #0x12] + ldrb r0, [r4, #0x11] + lsl r6, r2, #0x2 + ldrb r3, [r4, #0x14] + lsl r0, r0, #0x7 + mov r12, r0 + ldr r2, =0x0400100A + lsl r7, r1, #0x8 + ldrh r1, [r2, #0x0] + mov r0, #0x43 + lsl r3, r3, #0xd + and r0, r1 + lsl r1, r5, #0xe + orr r0, r1 + mov r1, r12 + orr r0, r1 + orr r0, r7 + orr r0, r6 + orr r0, r3 + strh r0, [r2, #0x0] + ldrh r1, [r2, #0x0] + mov r0, #0x3 + bic r1, r0 + ldrb r0, [r4, #0x15] + orr r0, r1 + strh r0, [r2, #0x0] + ldr r0, [r4, #0x18] + cmp r0, #0x0 + beq _02016EEC + ldrh r1, [r2, #0x0] + mov r0, #0x40 + orr r0, r1 + strh r0, [r2, #0x0] + b _0201705A +_02016EEC: + ldrh r1, [r2, #0x0] + mov r0, #0x40 + bic r1, r0 + strh r1, [r2, #0x0] + b _0201705A +_02016EF6: + mov r0, #0x4 + mov r1, #0x1 + bl GX_EngineBToggleLayers + ldr r0, [sp, #0x8] + cmp r0, #0x0 + beq _02016F0C + cmp r0, #0x1 + beq _02016F2E + cmp r0, #0x2 + beq _02016F50 +_02016F0C: + ldrb r1, [r4, #0x12] + ldr r7, =0x0400100C + ldrb r2, [r4, #0x13] + lsl r3, r1, #0x8 + ldrb r0, [r4, #0x11] + lsl r6, r2, #0x2 + ldrh r1, [r7, #0x0] + lsl r2, r0, #0x7 + mov r0, #0x43 + and r0, r1 + lsl r1, r5, #0xe + orr r0, r1 + orr r0, r2 + orr r0, r3 + orr r0, r6 + strh r0, [r7, #0x0] + b _02016F70 +_02016F2E: + ldrb r2, [r4, #0x13] + ldrb r1, [r4, #0x12] + ldrb r0, [r4, #0x16] + lsl r3, r2, #0x2 + ldr r7, =0x0400100C + lsl r2, r1, #0x8 + lsl r6, r0, #0xd + ldrh r1, [r7, #0x0] + mov r0, #0x43 + and r0, r1 + lsl r1, r5, #0xe + orr r0, r1 + orr r0, r2 + orr r0, r3 + orr r0, r6 + strh r0, [r7, #0x0] + b _02016F70 +_02016F50: + ldrb r1, [r4, #0x12] + ldr r7, =0x0400100C + ldrb r0, [r4, #0x16] + lsl r3, r1, #0x8 + ldrb r2, [r4, #0x13] + lsl r6, r0, #0xd + ldrh r1, [r7, #0x0] + mov r0, #0x43 + lsl r2, r2, #0x2 + and r0, r1 + lsl r1, r5, #0xe + orr r0, r1 + orr r0, r2 + orr r0, r3 + orr r0, r6 + strh r0, [r7, #0x0] +_02016F70: + ldr r0, =0x0400100C + mov r1, #0x3 + ldrh r2, [r0, #0x0] + bic r2, r1 + ldrb r1, [r4, #0x15] + orr r1, r2 + strh r1, [r0, #0x0] + ldr r1, [r4, #0x18] + cmp r1, #0x0 + beq _02016F8E + ldrh r2, [r0, #0x0] + mov r1, #0x40 + orr r1, r2 + strh r1, [r0, #0x0] + b _0201705A +_02016F8E: + ldrh r2, [r0, #0x0] + mov r1, #0x40 + bic r2, r1 + strh r2, [r0, #0x0] + b _0201705A +_02016F98: + mov r0, #0x8 + mov r1, #0x1 + bl GX_EngineBToggleLayers + ldr r0, [sp, #0x8] + cmp r0, #0x0 + beq _02016FAE + cmp r0, #0x1 + beq _02016FF2 + cmp r0, #0x2 + beq _02017014 +_02016FAE: + ldrb r1, [r4, #0x12] + ldr r7, =0x0400100E + b _02016FD4 +_02016FD4: + ldrb r2, [r4, #0x13] + lsl r3, r1, #0x8 + ldrb r0, [r4, #0x11] + lsl r6, r2, #0x2 + ldrh r1, [r7, #0x0] + lsl r2, r0, #0x7 + mov r0, #0x43 + and r0, r1 + lsl r1, r5, #0xe + orr r0, r1 + orr r0, r2 + orr r0, r3 + orr r0, r6 + strh r0, [r7, #0x0] + b _02017034 +_02016FF2: + ldrb r2, [r4, #0x13] + ldrb r1, [r4, #0x12] + ldrb r0, [r4, #0x16] + lsl r3, r2, #0x2 + ldr r7, =0x0400100E + lsl r2, r1, #0x8 + lsl r6, r0, #0xd + ldrh r1, [r7, #0x0] + mov r0, #0x43 + and r0, r1 + lsl r1, r5, #0xe + orr r0, r1 + orr r0, r2 + orr r0, r3 + orr r0, r6 + strh r0, [r7, #0x0] + b _02017034 +_02017014: + ldrb r1, [r4, #0x12] + ldr r7, =0x0400100E + ldrb r0, [r4, #0x16] + lsl r3, r1, #0x8 + ldrb r2, [r4, #0x13] + lsl r6, r0, #0xd + ldrh r1, [r7, #0x0] + mov r0, #0x43 + lsl r2, r2, #0x2 + and r0, r1 + lsl r1, r5, #0xe + orr r0, r1 + orr r0, r2 + orr r0, r3 + orr r0, r6 + strh r0, [r7, #0x0] +_02017034: + ldr r0, =0x0400100E + mov r1, #0x3 + ldrh r2, [r0, #0x0] + bic r2, r1 + ldrb r1, [r4, #0x15] + orr r1, r2 + strh r1, [r0, #0x0] + ldr r1, [r4, #0x18] + cmp r1, #0x0 + beq _02017052 + ldrh r2, [r0, #0x0] + mov r1, #0x40 + orr r1, r2 + strh r1, [r0, #0x0] + b _0201705A +_02017052: + ldrh r2, [r0, #0x0] + mov r1, #0x40 + bic r2, r1 + strh r2, [r0, #0x0] +_0201705A: + ldr r0, [sp, #0x4] + mov r1, #0x2c + add r5, r0, #0x0 + ldr r0, [sp, #0x0] + mul r5, r1 + add r2, r0, r5 + mov r3, #0x0 + mov r0, #0x1 + strh r3, [r2, #0x20] + lsl r0, r0, #0xc + str r0, [r2, #0x24] + str r0, [r2, #0x28] + str r3, [r2, #0x2c] + str r3, [r2, #0x30] + ldr r1, [r4, #0x8] + cmp r1, #0x0 + beq _020170A2 + ldr r0, [sp, #0x0] + ldr r6, [sp, #0x0] + ldr r0, [r0, #0x0] + add r6, #0x8 + bl AllocFromHeap + str r0, [r6, r5] + ldr r1, [r6, r5] + ldr r2, [r4, #0x8] + mov r0, #0x0 + bl MIi_CpuClear16 + ldr r0, [sp, #0x0] + ldr r2, [r4, #0x8] + add r1, r0, r5 + str r2, [r1, #0xc] + ldr r0, [r4, #0xc] + str r0, [r1, #0x10] + b _020170A8 +_020170A2: + str r3, [r2, #0x8] + str r3, [r2, #0xc] + str r3, [r2, #0x10] +_020170A8: + ldr r0, [sp, #0x0] + ldrb r1, [r4, #0x10] + add r0, r0, r5 + strb r1, [r0, #0x1d] + ldr r1, [sp, #0x8] + strb r1, [r0, #0x1c] + ldrb r1, [r4, #0x11] + strb r1, [r0, #0x1e] + ldr r1, [sp, #0x8] + cmp r1, #0x0 + bne _020170CA + ldrb r1, [r4, #0x11] + cmp r1, #0x0 + bne _020170CA + mov r1, #0x20 + strb r1, [r0, #0x1f] + b _020170D2 +_020170CA: + ldr r0, [sp, #0x0] + mov r1, #0x40 + add r0, r0, r5 + strb r1, [r0, #0x1f] +_020170D2: + ldr r0, [sp, #0x0] + ldr r1, [sp, #0x4] + ldr r3, [r4, #0x0] + mov r2, #0x0 + bl FUN_020179E0 + ldr r0, [sp, #0x0] + ldr r1, [sp, #0x4] + ldr r3, [r4, #0x4] + mov r2, #0x3 + bl FUN_020179E0 + add sp, #0x18 + pop {r3-r7, pc} + // clang-format on +} +#endif + +#ifdef NONMATCHING +THUMB_FUNC void FUN_020170F4(struct UnkStruct_02016B94_2 *param0, u8 param1, u32 param2, u8 param3) +{ + if (param2 == 0) + { + param0->unk08[param1].unk1e = param3; + } + + switch (param1) + { + case 0: + u16 bg0cnt = reg_G2_BG0CNT; + if (param2 == 1) + { + bg0cnt = bg0cnt & 0xFFFFE0FF | ((u32)(param3 << 0x1b) >> 0x13); + } + else if (param2 == 2) + { + bg0cnt = bg0cnt & ~0x3c | ((u32)(param3 << 0x1c) >> 0x1a); + } + + reg_G2_BG0CNT = (reg_G2_BG0CNT & 0x43) | ((u32)(bg0cnt << 0x10) >> 0x1e) << 0xe | + param0->unk08[param1].unk1e << 7 | ((u32)(bg0cnt << 0x13) >> 0x1b) << 8 | + ((u32)(bg0cnt << 0x1a) >> 0x1c) << 2 | + ((u32)(bg0cnt << 0x12) >> 0x1f) << 0xd; + + break; + case 1: + u16 bg1cnt = reg_G2_BG1CNT; + if (param2 == 1) + { + bg1cnt = bg1cnt & 0xFFFFE0FF | ((u32)(param3 << 0x1b) >> 0x13); + } + else if (param2 == 2) + { + bg1cnt = bg1cnt & ~0x3c | ((u32)(param3 << 0x1c) >> 0x1a); + } + + reg_G2_BG1CNT = (reg_G2_BG1CNT & 0x43) | (((u32)bg1cnt << 0x10) >> 0x1e) << 0xe | + param0->unk08[param1].unk1e << 7 | ((u32)(bg1cnt << 0x13) >> 0x1b) << 8 | + ((u32)(bg1cnt << 0x1a) >> 0x1c) << 2 | + ((u32)(bg1cnt << 0x12) >> 0x1f) << 0xd; + + break; + case 2: + switch (param0->unk08[param1].unk1c) + { + default: + case 0: + u16 bg2cnt_0 = reg_G2_BG2CNT; + if (param2 == 1) + { + bg2cnt_0 = bg2cnt_0 & 0xFFFFE0FF | ((u32)(param3 << 0x1b) >> 0x13); + } + else if (param2 == 2) + { + bg2cnt_0 = bg2cnt_0 & ~0x3c | ((u32)(param3 << 0x1c) >> 0x1a); + } + + reg_G2_BG2CNT = (reg_G2_BG2CNT & 0x43) | ((u32)(bg2cnt_0 << 0x10) >> 0x1e) << 0xe | + param0->unk08[param1].unk1e << 7 | + ((u32)(bg2cnt_0 << 0x13) >> 0x1b) << 8 | + ((u32)(bg2cnt_0 << 0x1a) >> 0x1c) << 2; + + break; + case 1: + u16 bg2cnt_1 = reg_G2_BG2CNT; + if (param2 == 1) + { + bg2cnt_1 = bg2cnt_1 & 0xFFFFE0FF | ((u32)(param3 << 0x1b) >> 0x13); + } + else if (param2 == 2) + { + bg2cnt_1 = bg2cnt_1 & ~0x3c | ((u32)(param3 << 0x1c) >> 0x1a); + } + + reg_G2_BG2CNT = (reg_G2_BG2CNT & 0x43) | ((u32)(bg2cnt_1 << 0x10) >> 0x1e) << 0xe | + ((u32)(bg2cnt_1 << 0x13) >> 0x1b) << 8 | + ((u32)(bg2cnt_1 << 0x1a) >> 0x1c) << 2 | + ((u32)(bg2cnt_1 << 0x12) >> 0x1f) << 0xd; + break; + case 2: + u16 bg2cnt_2 = reg_G2_BG2CNT; + if (param2 == 1) + { + bg2cnt_2 = bg2cnt_2 & 0xFFFFE0FF | ((u32)(param3 << 0x1b) >> 0x13); + } + else if (param2 == 2) + { + bg2cnt_2 = bg2cnt_2 & ~0x38 | ((u32)(param3 << 0x1d) >> 0x1a); + } + + reg_G2_BG2CNT = (reg_G2_BG2CNT & 0x43) | ((u32)(bg2cnt_2 << 0x10) >> 0x1e) << 0xe | + ((u32)(bg2cnt_2 << 0x13) >> 0x1b) << 8 | + ((u32)(bg2cnt_2 << 0x1a) >> 0x1d) << 2 | + ((u32)(bg2cnt_2 << 0x12) >> 0x1f) << 0xd; + break; + } + break; + case 3: + switch (param0->unk08[param1].unk1c) + { + default: + case 0: + u16 bg3cnt_0 = reg_G2_BG3CNT; + if (param2 == 1) + { + bg3cnt_0 = bg3cnt_0 & 0xFFFFE0FF | ((u32)(param3 << 0x1b) >> 0x13); + } + else if (param2 == 2) + { + bg3cnt_0 = bg3cnt_0 & ~0x3c | ((u32)(param3 << 0x1c) >> 0x1a); + } + + reg_G2_BG3CNT = (reg_G2_BG3CNT & 0x43) | ((u32)(bg3cnt_0 << 0x10) >> 0x1e) << 0xe | + param0->unk08[param1].unk1e << 7 | + ((u32)(bg3cnt_0 << 0x13) >> 0x1b) << 8 | + ((u32)(bg3cnt_0 << 0x1a) >> 0x1c) << 2; + + break; + case 1: + u16 bg3cnt_1 = reg_G2_BG3CNT; + if (param2 == 1) + { + bg3cnt_1 = bg3cnt_1 & 0xFFFFE0FF | ((u32)(param3 << 0x1b) >> 0x13); + } + else if (param2 == 2) + { + bg3cnt_1 = bg3cnt_1 & ~0x3c | ((u32)(param3 << 0x1c) >> 0x1a); + } + + reg_G2_BG3CNT = (reg_G2_BG3CNT & 0x43) | ((u32)(bg3cnt_1 << 0x10) >> 0x1e) << 0xe | + ((u32)(bg3cnt_1 << 0x13) >> 0x1b) << 8 | + ((u32)(bg3cnt_1 << 0x1a) >> 0x1c) << 2 | + ((u32)(bg3cnt_1 << 0x12) >> 0x1f) << 0xd; + break; + case 2: + u16 bg3cnt_2 = reg_G2_BG3CNT; + if (param2 == 1) + { + bg3cnt_2 = bg3cnt_2 & 0xFFFFE0FF | ((u32)(param3 << 0x1b) >> 0x13); + } + else if (param2 == 2) + { + bg3cnt_2 = bg3cnt_2 & ~0x38 | ((u32)(param3 << 0x1d) >> 0x1a); + } + + reg_G2_BG3CNT = (reg_G2_BG3CNT & 0x43) | ((u32)(bg3cnt_2 << 0x10) >> 0x1e) << 0xe | + ((u32)(bg3cnt_2 << 0x13) >> 0x1b) << 8 | + ((u32)(bg3cnt_2 << 0x1a) >> 0x1d) << 2 | + ((u32)(bg3cnt_2 << 0x12) >> 0x1f) << 0xd; + break; + } + break; + case 4: + u16 db_bg0cnt = reg_G2S_DB_BG0CNT; + if (param2 == 1) + { + db_bg0cnt = db_bg0cnt & 0xFFFFE0FF | ((u32)(param3 << 0x1b) >> 0x13); + } + else if (param2 == 2) + { + db_bg0cnt = db_bg0cnt & ~0x3c | ((u32)(param3 << 0x1c) >> 0x1a); + } + + reg_G2S_DB_BG0CNT = + (reg_G2S_DB_BG0CNT & 0x43) | ((u32)(db_bg0cnt << 0x10) >> 0x1e) << 0xe | + param0->unk08[param1].unk1e << 7 | ((u32)(db_bg0cnt << 0x13) >> 0x1b) << 8 | + ((u32)(db_bg0cnt << 0x1a) >> 0x1c) << 2 | ((u32)(db_bg0cnt << 0x12) >> 0x1f) << 0xd; + + break; + case 5: + u16 db_bg1cnt = reg_G2S_DB_BG1CNT; + if (param2 == 1) + { + db_bg1cnt = db_bg1cnt & 0xFFFFE0FF | ((u32)(param3 << 0x1b) >> 0x13); + } + else if (param2 == 2) + { + db_bg1cnt = db_bg1cnt & ~0x3c | ((u32)(param3 << 0x1c) >> 0x1a); + } + + reg_G2S_DB_BG1CNT = + (reg_G2S_DB_BG1CNT & 0x43) | ((u32)(db_bg1cnt << 0x10) >> 0x1e) << 0xe | + param0->unk08[param1].unk1e << 7 | ((u32)(db_bg1cnt << 0x13) >> 0x1b) << 8 | + ((u32)(db_bg1cnt << 0x1a) >> 0x1c) << 2 | ((u32)(db_bg1cnt << 0x12) >> 0x1f) << 0xd; + + break; + case 6: + switch (param0->unk08[param1].unk1c) + { + default: + case 0: + u16 db_bg2cnt_0 = reg_G2S_DB_BG2CNT; + if (param2 == 1) + { + db_bg2cnt_0 = db_bg2cnt_0 & 0xFFFFE0FF | ((u32)(param3 << 0x1b) >> 0x13); + } + else if (param2 == 2) + { + db_bg2cnt_0 = db_bg2cnt_0 & ~0x3c | ((u32)(param3 << 0x1c) >> 0x1a); + } + + reg_G2S_DB_BG2CNT = + (reg_G2S_DB_BG2CNT & 0x43) | ((u32)(db_bg2cnt_0 << 0x10) >> 0x1e) << 0xe | + param0->unk08[param1].unk1e << 7 | ((u32)(db_bg2cnt_0 << 0x13) >> 0x1b) << 8 | + ((u32)(db_bg2cnt_0 << 0x1a) >> 0x1c) << 2; + + break; + case 1: + u16 db_bg2cnt_1 = reg_G2S_DB_BG2CNT; + if (param2 == 1) + { + db_bg2cnt_1 = db_bg2cnt_1 & 0xFFFFE0FF | ((u32)(param3 << 0x1b) >> 0x13); + } + else if (param2 == 2) + { + db_bg2cnt_1 = db_bg2cnt_1 & ~0x3c | ((u32)(param3 << 0x1c) >> 0x1a); + } + + reg_G2S_DB_BG2CNT = (reg_G2S_DB_BG2CNT & 0x43) | + ((u32)(db_bg2cnt_1 << 0x10) >> 0x1e) << 0xe | + ((u32)(db_bg2cnt_1 << 0x13) >> 0x1b) << 8 | + ((u32)(db_bg2cnt_1 << 0x1a) >> 0x1c) << 2 | + ((u32)(db_bg2cnt_1 << 0x12) >> 0x1f) << 0xd; + break; + case 2: + u16 db_bg2cnt_2 = reg_G2S_DB_BG2CNT; + if (param2 == 1) + { + db_bg2cnt_2 = db_bg2cnt_2 & 0xFFFFE0FF | ((u32)(param3 << 0x1b) >> 0x13); + } + else if (param2 == 2) + { + db_bg2cnt_2 = db_bg2cnt_2 & ~0x38 | ((u32)(param3 << 0x1d) >> 0x1a); + } + + reg_G2S_DB_BG2CNT = (reg_G2S_DB_BG2CNT & 0x43) | + ((u32)(db_bg2cnt_2 << 0x10) >> 0x1e) << 0xe | + ((u32)(db_bg2cnt_2 << 0x13) >> 0x1b) << 8 | + ((u32)(db_bg2cnt_2 << 0x1a) >> 0x1d) << 2 | + ((u32)(db_bg2cnt_2 << 0x12) >> 0x1f) << 0xd; + break; + } + break; + case 7: + switch (param0->unk08[param1].unk1c) + { + default: + case 0: + u16 db_bg3cnt_0 = reg_G2S_DB_BG3CNT; + if (param2 == 1) + { + db_bg3cnt_0 = db_bg3cnt_0 & 0xFFFFE0FF | ((u32)(param3 << 0x1b) >> 0x13); + } + else if (param2 == 2) + { + db_bg3cnt_0 = db_bg3cnt_0 & ~0x3c | ((u32)(param3 << 0x1c) >> 0x1a); + } + + reg_G2S_DB_BG3CNT = + (reg_G2S_DB_BG3CNT & 0x43) | ((u32)(db_bg3cnt_0 << 0x10) >> 0x1e) << 0xe | + param0->unk08[param1].unk1e << 7 | ((u32)(db_bg3cnt_0 << 0x13) >> 0x1b) << 8 | + ((u32)(db_bg3cnt_0 << 0x1a) >> 0x1c) << 2; + + break; + case 1: + u16 db_bg3cnt_1 = reg_G2S_DB_BG3CNT; + if (param2 == 1) + { + db_bg3cnt_1 = db_bg3cnt_1 & 0xFFFFE0FF | ((u32)(param3 << 0x1b) >> 0x13); + } + else if (param2 == 2) + { + db_bg3cnt_1 = db_bg3cnt_1 & ~0x3c | ((u32)(param3 << 0x1c) >> 0x1a); + } + + reg_G2S_DB_BG3CNT = (reg_G2S_DB_BG3CNT & 0x43) | + ((u32)(db_bg3cnt_1 << 0x10) >> 0x1e) << 0xe | + ((u32)(db_bg3cnt_1 << 0x13) >> 0x1b) << 8 | + ((u32)(db_bg3cnt_1 << 0x1a) >> 0x1c) << 2 | + ((u32)(db_bg3cnt_1 << 0x12) >> 0x1f) << 0xd; + break; + case 2: + u16 db_bg3cnt_2 = reg_G2S_DB_BG3CNT; + if (param2 == 1) + { + db_bg3cnt_2 = db_bg3cnt_2 & 0xFFFFE0FF | ((u32)(param3 << 0x1b) >> 0x13); + } + else if (param2 == 2) + { + db_bg3cnt_2 = db_bg3cnt_2 & ~0x38 | ((u32)(param3 << 0x1d) >> 0x1a); + } + + reg_G2S_DB_BG3CNT = (reg_G2S_DB_BG3CNT & 0x43) | + ((u32)(db_bg3cnt_2 << 0x10) >> 0x1e) << 0xe | + ((u32)(db_bg3cnt_2 << 0x13) >> 0x1b) << 8 | + ((u32)(db_bg3cnt_2 << 0x1a) >> 0x1d) << 2 | + ((u32)(db_bg3cnt_2 << 0x12) >> 0x1f) << 0xd; + break; + } + break; + } +} +#else +THUMB_FUNC asm void FUN_020170F4( + struct UnkStruct_02016B94_2 *param0, u8 param1, u32 param2, u8 param3) +{ + // clang-format off + push {r3-r7, lr} + sub sp, #0x20 + add r4, r1, #0x0 + add r5, r0, #0x0 + add r1, r2, #0x0 + add r0, r3, #0x0 + cmp r1, #0x0 + bne _0201710C + mov r2, #0x2c + mul r2, r4 + add r2, r5, r2 + strb r0, [r2, #0x1e] +_0201710C: + cmp r4, #0x7 + bls _02017112 + b _020177C4 +_02017112: + add r2, r4, r4 + add r2, pc + ldrh r2, [r2, #0x6] + lsl r2, r2, #0x10 + asr r2, r2, #0x10 + add pc, r2 +_0201711E: //; jump table (using 16-bit offset) + // .short _0201712E - _0201711E - 2; case 0 + // .short _0201719A - _0201711E - 2; case 1 + // .short _02017206 - _0201711E - 2; case 2 + // .short _0201733A - _0201711E - 2; case 3 + // .short _0201746E - _0201711E - 2; case 4 + // .short _020174F4 - _0201711E - 2; case 5 + // .short _02017560 - _0201711E - 2; case 6 + // .short _02017694 - _0201711E - 2; case 7 + + lsl r6, r1, #0 + lsl r2, r7, #1 + lsl r6, r4, #3 + lsl r2, r3, #8 + lsl r6, r1, #13 + lsl r4, r2, #15 + lsl r0, r0, #17 + lsl r4, r6, #21 +_0201712E: + ldr r2, =0x04000008 + cmp r1, #0x1 + ldrh r3, [r2, #0x0] + add r2, sp, #0x0 + strh r3, [r2, #0x1e] + bne _0201714A + ldrh r3, [r2, #0x1e] + ldr r1, =0xFFFFE0FF + lsl r0, r0, #0x1b + and r1, r3 + lsr r0, r0, #0x13 + orr r0, r1 + strh r0, [r2, #0x1e] + b _0201715C +_0201714A: + cmp r1, #0x2 + bne _0201715C + ldrh r3, [r2, #0x1e] + mov r1, #0x3c + lsl r0, r0, #0x1c + bic r3, r1 + lsr r0, r0, #0x1a + orr r0, r3 + strh r0, [r2, #0x1e] +_0201715C: + add r0, sp, #0x0 + ldrh r3, [r0, #0x1e] + add sp, #0x20 + lsl r0, r3, #0x12 + lsr r6, r0, #0x1f + lsl r0, r3, #0x1a + lsr r2, r0, #0x1c + lsl r0, r3, #0x13 + lsr r1, r0, #0x1b + mov r0, #0x2c + mul r0, r4 + add r0, r5, r0 + lsl r3, r3, #0x10 + lsr r5, r3, #0x1e + lsl r3, r2, #0x2 + ldrb r0, [r0, #0x1e] + lsl r2, r1, #0x8 + lsl r4, r6, #0xd + lsl r1, r0, #0x7 + ldr r0, =0x04000008 + mov r6, #0x43 + ldrh r7, [r0, #0x0] + lsl r5, r5, #0xe + and r6, r7 + orr r5, r6 + orr r1, r5 + orr r1, r2 + orr r1, r3 + orr r1, r4 + strh r1, [r0, #0x0] + pop {r3-r7, pc} +_0201719A: + ldr r2, =0x0400000A + cmp r1, #0x1 + ldrh r3, [r2, #0x0] + add r2, sp, #0x0 + strh r3, [r2, #0x1c] + bne _020171B6 + ldrh r3, [r2, #0x1c] + ldr r1, =0xFFFFE0FF + lsl r0, r0, #0x1b + and r1, r3 + lsr r0, r0, #0x13 + orr r0, r1 + strh r0, [r2, #0x1c] + b _020171C8 +_020171B6: + cmp r1, #0x2 + bne _020171C8 + ldrh r3, [r2, #0x1c] + mov r1, #0x3c + lsl r0, r0, #0x1c + bic r3, r1 + lsr r0, r0, #0x1a + orr r0, r3 + strh r0, [r2, #0x1c] +_020171C8: + add r0, sp, #0x0 + ldrh r3, [r0, #0x1c] + add sp, #0x20 + lsl r0, r3, #0x12 + lsr r6, r0, #0x1f + lsl r0, r3, #0x1a + lsr r2, r0, #0x1c + lsl r0, r3, #0x13 + lsr r1, r0, #0x1b + mov r0, #0x2c + mul r0, r4 + add r0, r5, r0 + lsl r3, r3, #0x10 + lsr r5, r3, #0x1e + lsl r3, r2, #0x2 + ldrb r0, [r0, #0x1e] + lsl r2, r1, #0x8 + lsl r4, r6, #0xd + lsl r1, r0, #0x7 + ldr r0, =0x0400000A + mov r6, #0x43 + ldrh r7, [r0, #0x0] + lsl r5, r5, #0xe + and r6, r7 + orr r5, r6 + orr r1, r5 + orr r1, r2 + orr r1, r3 + orr r1, r4 + strh r1, [r0, #0x0] + pop {r3-r7, pc} +_02017206: + mov r2, #0x2c + mul r2, r4 + add r3, r5, r2 + ldrb r3, [r3, #0x1c] + cmp r3, #0x0 + beq _0201721A + cmp r3, #0x1 + beq _0201727A + cmp r3, #0x2 + beq _020172DA +_0201721A: + ldr r3, =0x0400000C + cmp r1, #0x1 + ldrh r4, [r3, #0x0] + add r3, sp, #0x0 + strh r4, [r3, #0x1a] + bne _02017236 + ldrh r4, [r3, #0x1a] + ldr r1, =0xFFFFE0FF + lsl r0, r0, #0x1b + and r1, r4 + lsr r0, r0, #0x13 + orr r0, r1 + strh r0, [r3, #0x1a] + b _02017248 +_02017236: + cmp r1, #0x2 + bne _02017248 + ldrh r4, [r3, #0x1a] + mov r1, #0x3c + lsl r0, r0, #0x1c + bic r4, r1 + lsr r0, r0, #0x1a + orr r0, r4 + strh r0, [r3, #0x1a] +_02017248: + add r0, sp, #0x0 + ldrh r3, [r0, #0x1a] + add r2, r5, r2 + ldr r6, =0x0400000C + lsl r0, r3, #0x1a + ldrb r4, [r2, #0x1e] + lsr r1, r0, #0x1c + lsl r0, r3, #0x13 + lsl r2, r3, #0x10 + lsr r3, r2, #0x1e + ldrh r5, [r6, #0x0] + lsr r0, r0, #0x1b + lsl r2, r1, #0x2 + lsl r1, r0, #0x8 + lsl r0, r4, #0x7 + mov r4, #0x43 + and r4, r5 + lsl r3, r3, #0xe + orr r3, r4 + orr r0, r3 + orr r0, r1 + orr r0, r2 + add sp, #0x20 + strh r0, [r6, #0x0] + pop {r3-r7, pc} +_0201727A: + ldr r2, =0x0400000C + cmp r1, #0x1 + ldrh r3, [r2, #0x0] + add r2, sp, #0x0 + strh r3, [r2, #0x18] + bne _02017296 + ldrh r3, [r2, #0x18] + ldr r1, =0xFFFFE0FF + lsl r0, r0, #0x1b + and r1, r3 + lsr r0, r0, #0x13 + orr r0, r1 + strh r0, [r2, #0x18] + b _020172A8 +_02017296: + cmp r1, #0x2 + bne _020172A8 + ldrh r3, [r2, #0x18] + mov r1, #0x3c + lsl r0, r0, #0x1c + bic r3, r1 + lsr r0, r0, #0x1a + orr r0, r3 + strh r0, [r2, #0x18] +_020172A8: + add r0, sp, #0x0 + ldrh r3, [r0, #0x18] + ldr r6, =0x0400000C + add sp, #0x20 + lsl r1, r3, #0x13 + lsl r0, r3, #0x1a + lsr r4, r1, #0x1b + lsl r1, r3, #0x12 + lsr r2, r1, #0x1f + lsl r1, r3, #0x10 + lsr r3, r1, #0x1e + lsr r0, r0, #0x1c + lsl r1, r0, #0x2 + lsl r0, r4, #0x8 + ldrh r5, [r6, #0x0] + mov r4, #0x43 + lsl r3, r3, #0xe + and r4, r5 + orr r3, r4 + orr r0, r3 + lsl r2, r2, #0xd + orr r0, r1 + orr r0, r2 + strh r0, [r6, #0x0] + pop {r3-r7, pc} +_020172DA: + ldr r2, =0x0400000C + cmp r1, #0x1 + ldrh r3, [r2, #0x0] + add r2, sp, #0x0 + strh r3, [r2, #0x16] + bne _020172F6 + ldrh r3, [r2, #0x16] + ldr r1, =0xFFFFE0FF + lsl r0, r0, #0x1b + and r1, r3 + lsr r0, r0, #0x13 + orr r0, r1 + strh r0, [r2, #0x16] + b _02017308 +_020172F6: + cmp r1, #0x2 + bne _02017308 + ldrh r3, [r2, #0x16] + mov r1, #0x38 + lsl r0, r0, #0x1d + bic r3, r1 + lsr r0, r0, #0x1a + orr r0, r3 + strh r0, [r2, #0x16] +_02017308: + add r0, sp, #0x0 + ldrh r3, [r0, #0x16] + ldr r6, =0x0400000C + add sp, #0x20 + lsl r1, r3, #0x13 + lsr r4, r1, #0x1b + lsl r1, r3, #0x12 + lsr r2, r1, #0x1f + lsl r0, r3, #0x1a + lsl r1, r3, #0x10 + lsr r3, r1, #0x1e + lsl r1, r4, #0x8 + lsr r0, r0, #0x1d + ldrh r5, [r6, #0x0] + mov r4, #0x43 + lsl r3, r3, #0xe + and r4, r5 + lsl r0, r0, #0x2 + orr r3, r4 + orr r0, r3 + lsl r2, r2, #0xd + orr r0, r1 + orr r0, r2 + strh r0, [r6, #0x0] + pop {r3-r7, pc} +_0201733A: + mov r2, #0x2c + mul r2, r4 + add r3, r5, r2 + ldrb r3, [r3, #0x1c] + cmp r3, #0x0 + beq _0201734E + cmp r3, #0x1 + beq _020173AE + cmp r3, #0x2 + beq _0201740E +_0201734E: + ldr r3, =0x0400000E + cmp r1, #0x1 + ldrh r4, [r3, #0x0] + add r3, sp, #0x0 + strh r4, [r3, #0x14] + bne _0201736A + ldrh r4, [r3, #0x14] + ldr r1, =0xFFFFE0FF + lsl r0, r0, #0x1b + and r1, r4 + lsr r0, r0, #0x13 + orr r0, r1 + strh r0, [r3, #0x14] + b _0201737C +_0201736A: + cmp r1, #0x2 + bne _0201737C + ldrh r4, [r3, #0x14] + mov r1, #0x3c + lsl r0, r0, #0x1c + bic r4, r1 + lsr r0, r0, #0x1a + orr r0, r4 + strh r0, [r3, #0x14] +_0201737C: + add r0, sp, #0x0 + ldrh r3, [r0, #0x14] + add r2, r5, r2 + ldr r6, =0x0400000E + lsl r0, r3, #0x1a + ldrb r4, [r2, #0x1e] + lsr r1, r0, #0x1c + lsl r0, r3, #0x13 + lsl r2, r3, #0x10 + lsr r3, r2, #0x1e + ldrh r5, [r6, #0x0] + lsr r0, r0, #0x1b + lsl r2, r1, #0x2 + lsl r1, r0, #0x8 + lsl r0, r4, #0x7 + mov r4, #0x43 + and r4, r5 + lsl r3, r3, #0xe + orr r3, r4 + orr r0, r3 + orr r0, r1 + orr r0, r2 + add sp, #0x20 + strh r0, [r6, #0x0] + pop {r3-r7, pc} +_020173AE: + ldr r2, =0x0400000E + cmp r1, #0x1 + ldrh r3, [r2, #0x0] + add r2, sp, #0x0 + strh r3, [r2, #0x12] + bne _020173CA + ldrh r3, [r2, #0x12] + ldr r1, =0xFFFFE0FF + lsl r0, r0, #0x1b + and r1, r3 + lsr r0, r0, #0x13 + orr r0, r1 + strh r0, [r2, #0x12] + b _020173DC +_020173CA: + cmp r1, #0x2 + bne _020173DC + ldrh r3, [r2, #0x12] + mov r1, #0x3c + lsl r0, r0, #0x1c + bic r3, r1 + lsr r0, r0, #0x1a + orr r0, r3 + strh r0, [r2, #0x12] +_020173DC: + add r0, sp, #0x0 + ldrh r3, [r0, #0x12] + ldr r6, =0x0400000E + add sp, #0x20 + lsl r1, r3, #0x13 + lsl r0, r3, #0x1a + lsr r4, r1, #0x1b + lsl r1, r3, #0x12 + lsr r2, r1, #0x1f + lsl r1, r3, #0x10 + lsr r3, r1, #0x1e + lsr r0, r0, #0x1c + lsl r1, r0, #0x2 + lsl r0, r4, #0x8 + ldrh r5, [r6, #0x0] + mov r4, #0x43 + lsl r3, r3, #0xe + and r4, r5 + orr r3, r4 + orr r0, r3 + lsl r2, r2, #0xd + orr r0, r1 + orr r0, r2 + strh r0, [r6, #0x0] + pop {r3-r7, pc} +_0201740E: + ldr r2, =0x0400000E + cmp r1, #0x1 + ldrh r3, [r2, #0x0] + add r2, sp, #0x0 + strh r3, [r2, #0x10] + bne _0201742A + ldrh r3, [r2, #0x10] + ldr r1, =0xFFFFE0FF + lsl r0, r0, #0x1b + and r1, r3 + lsr r0, r0, #0x13 + orr r0, r1 + strh r0, [r2, #0x10] + b _0201743C +_0201742A: + cmp r1, #0x2 + bne _0201743C + ldrh r3, [r2, #0x10] + mov r1, #0x38 + lsl r0, r0, #0x1d + bic r3, r1 + lsr r0, r0, #0x1a + orr r0, r3 + strh r0, [r2, #0x10] +_0201743C: + add r0, sp, #0x0 + ldrh r3, [r0, #0x10] + ldr r6, =0x0400000E + add sp, #0x20 + lsl r1, r3, #0x13 + lsr r4, r1, #0x1b + lsl r1, r3, #0x12 + lsr r2, r1, #0x1f + lsl r0, r3, #0x1a + lsl r1, r3, #0x10 + lsr r3, r1, #0x1e + lsl r1, r4, #0x8 + lsr r0, r0, #0x1d + ldrh r5, [r6, #0x0] + mov r4, #0x43 + lsl r3, r3, #0xe + and r4, r5 + lsl r0, r0, #0x2 + orr r3, r4 + orr r0, r3 + lsl r2, r2, #0xd + orr r0, r1 + orr r0, r2 + strh r0, [r6, #0x0] + pop {r3-r7, pc} +_0201746E: + ldr r2, =0x04001008 + cmp r1, #0x1 + ldrh r3, [r2, #0x0] + add r2, sp, #0x0 + strh r3, [r2, #0xe] + bne _020174A4 + ldrh r3, [r2, #0xe] + ldr r1, =0xFFFFE0FF + b _02017498 +_02017498: + lsl r0, r0, #0x1b + and r1, r3 + lsr r0, r0, #0x13 + orr r0, r1 + strh r0, [r2, #0xe] + b _020174B6 +_020174A4: + cmp r1, #0x2 + bne _020174B6 + ldrh r3, [r2, #0xe] + mov r1, #0x3c + lsl r0, r0, #0x1c + bic r3, r1 + lsr r0, r0, #0x1a + orr r0, r3 + strh r0, [r2, #0xe] +_020174B6: + add r0, sp, #0x0 + ldrh r3, [r0, #0xe] + add sp, #0x20 + lsl r0, r3, #0x12 + lsr r6, r0, #0x1f + lsl r0, r3, #0x1a + lsr r2, r0, #0x1c + lsl r0, r3, #0x13 + lsr r1, r0, #0x1b + mov r0, #0x2c + mul r0, r4 + add r0, r5, r0 + lsl r3, r3, #0x10 + lsr r5, r3, #0x1e + lsl r3, r2, #0x2 + ldrb r0, [r0, #0x1e] + lsl r2, r1, #0x8 + lsl r4, r6, #0xd + lsl r1, r0, #0x7 + ldr r0, =0x04001008 + mov r6, #0x43 + ldrh r7, [r0, #0x0] + lsl r5, r5, #0xe + and r6, r7 + orr r5, r6 + orr r1, r5 + orr r1, r2 + orr r1, r3 + orr r1, r4 + strh r1, [r0, #0x0] + pop {r3-r7, pc} +_020174F4: + ldr r2, =0x0400100A + cmp r1, #0x1 + ldrh r3, [r2, #0x0] + add r2, sp, #0x0 + strh r3, [r2, #0xc] + bne _02017510 + ldrh r3, [r2, #0xc] + ldr r1, =0xFFFFE0FF + lsl r0, r0, #0x1b + and r1, r3 + lsr r0, r0, #0x13 + orr r0, r1 + strh r0, [r2, #0xc] + b _02017522 +_02017510: + cmp r1, #0x2 + bne _02017522 + ldrh r3, [r2, #0xc] + mov r1, #0x3c + lsl r0, r0, #0x1c + bic r3, r1 + lsr r0, r0, #0x1a + orr r0, r3 + strh r0, [r2, #0xc] +_02017522: + add r0, sp, #0x0 + ldrh r3, [r0, #0xc] + add sp, #0x20 + lsl r0, r3, #0x12 + lsr r6, r0, #0x1f + lsl r0, r3, #0x1a + lsr r2, r0, #0x1c + lsl r0, r3, #0x13 + lsr r1, r0, #0x1b + mov r0, #0x2c + mul r0, r4 + add r0, r5, r0 + lsl r3, r3, #0x10 + lsr r5, r3, #0x1e + lsl r3, r2, #0x2 + ldrb r0, [r0, #0x1e] + lsl r2, r1, #0x8 + lsl r4, r6, #0xd + lsl r1, r0, #0x7 + ldr r0, =0x0400100A + mov r6, #0x43 + ldrh r7, [r0, #0x0] + lsl r5, r5, #0xe + and r6, r7 + orr r5, r6 + orr r1, r5 + orr r1, r2 + orr r1, r3 + orr r1, r4 + strh r1, [r0, #0x0] + pop {r3-r7, pc} +_02017560: + mov r2, #0x2c + mul r2, r4 + add r3, r5, r2 + ldrb r3, [r3, #0x1c] + cmp r3, #0x0 + beq _02017574 + cmp r3, #0x1 + beq _020175D4 + cmp r3, #0x2 + beq _02017634 +_02017574: + ldr r3, =0x0400100C + cmp r1, #0x1 + ldrh r4, [r3, #0x0] + add r3, sp, #0x0 + strh r4, [r3, #0xa] + bne _02017590 + ldrh r4, [r3, #0xa] + ldr r1, =0xFFFFE0FF + lsl r0, r0, #0x1b + and r1, r4 + lsr r0, r0, #0x13 + orr r0, r1 + strh r0, [r3, #0xa] + b _020175A2 +_02017590: + cmp r1, #0x2 + bne _020175A2 + ldrh r4, [r3, #0xa] + mov r1, #0x3c + lsl r0, r0, #0x1c + bic r4, r1 + lsr r0, r0, #0x1a + orr r0, r4 + strh r0, [r3, #0xa] +_020175A2: + add r0, sp, #0x0 + ldrh r3, [r0, #0xa] + add r2, r5, r2 + ldr r6, =0x0400100C + lsl r0, r3, #0x1a + ldrb r4, [r2, #0x1e] + lsr r1, r0, #0x1c + lsl r0, r3, #0x13 + lsl r2, r3, #0x10 + lsr r3, r2, #0x1e + ldrh r5, [r6, #0x0] + lsr r0, r0, #0x1b + lsl r2, r1, #0x2 + lsl r1, r0, #0x8 + lsl r0, r4, #0x7 + mov r4, #0x43 + and r4, r5 + lsl r3, r3, #0xe + orr r3, r4 + orr r0, r3 + orr r0, r1 + orr r0, r2 + add sp, #0x20 + strh r0, [r6, #0x0] + pop {r3-r7, pc} +_020175D4: + ldr r2, =0x0400100C + cmp r1, #0x1 + ldrh r3, [r2, #0x0] + add r2, sp, #0x0 + strh r3, [r2, #0x8] + bne _020175F0 + ldrh r3, [r2, #0x8] + ldr r1, =0xFFFFE0FF + lsl r0, r0, #0x1b + and r1, r3 + lsr r0, r0, #0x13 + orr r0, r1 + strh r0, [r2, #0x8] + b _02017602 +_020175F0: + cmp r1, #0x2 + bne _02017602 + ldrh r3, [r2, #0x8] + mov r1, #0x3c + lsl r0, r0, #0x1c + bic r3, r1 + lsr r0, r0, #0x1a + orr r0, r3 + strh r0, [r2, #0x8] +_02017602: + add r0, sp, #0x0 + ldrh r3, [r0, #0x8] + ldr r6, =0x0400100C + add sp, #0x20 + lsl r1, r3, #0x13 + lsl r0, r3, #0x1a + lsr r4, r1, #0x1b + lsl r1, r3, #0x12 + lsr r2, r1, #0x1f + lsl r1, r3, #0x10 + lsr r3, r1, #0x1e + lsr r0, r0, #0x1c + lsl r1, r0, #0x2 + lsl r0, r4, #0x8 + ldrh r5, [r6, #0x0] + mov r4, #0x43 + lsl r3, r3, #0xe + and r4, r5 + orr r3, r4 + orr r0, r3 + lsl r2, r2, #0xd + orr r0, r1 + orr r0, r2 + strh r0, [r6, #0x0] + pop {r3-r7, pc} +_02017634: + ldr r2, =0x0400100C + cmp r1, #0x1 + ldrh r3, [r2, #0x0] + add r2, sp, #0x0 + strh r3, [r2, #0x6] + bne _02017650 + ldrh r3, [r2, #0x6] + ldr r1, =0xFFFFE0FF + lsl r0, r0, #0x1b + and r1, r3 + lsr r0, r0, #0x13 + orr r0, r1 + strh r0, [r2, #0x6] + b _02017662 +_02017650: + cmp r1, #0x2 + bne _02017662 + ldrh r3, [r2, #0x6] + mov r1, #0x38 + lsl r0, r0, #0x1d + bic r3, r1 + lsr r0, r0, #0x1a + orr r0, r3 + strh r0, [r2, #0x6] +_02017662: + add r0, sp, #0x0 + ldrh r3, [r0, #0x6] + ldr r6, =0x0400100C + add sp, #0x20 + lsl r1, r3, #0x13 + lsr r4, r1, #0x1b + lsl r1, r3, #0x12 + lsr r2, r1, #0x1f + lsl r0, r3, #0x1a + lsl r1, r3, #0x10 + lsr r3, r1, #0x1e + lsl r1, r4, #0x8 + lsr r0, r0, #0x1d + ldrh r5, [r6, #0x0] + mov r4, #0x43 + lsl r3, r3, #0xe + and r4, r5 + lsl r0, r0, #0x2 + orr r3, r4 + orr r0, r3 + lsl r2, r2, #0xd + orr r0, r1 + orr r0, r2 + strh r0, [r6, #0x0] + pop {r3-r7, pc} +_02017694: + mov r2, #0x2c + mul r2, r4 + add r3, r5, r2 + ldrb r3, [r3, #0x1c] + cmp r3, #0x0 + beq _020176A8 + cmp r3, #0x1 + beq _02017708 + cmp r3, #0x2 + beq _02017768 +_020176A8: + ldr r3, =0x0400100E + cmp r1, #0x1 + ldrh r4, [r3, #0x0] + add r3, sp, #0x0 + strh r4, [r3, #0x4] + bne _020176C4 + ldrh r4, [r3, #0x4] + ldr r1, =0xFFFFE0FF + lsl r0, r0, #0x1b + and r1, r4 + lsr r0, r0, #0x13 + orr r0, r1 + strh r0, [r3, #0x4] + b _020176D6 +_020176C4: + cmp r1, #0x2 + bne _020176D6 + ldrh r4, [r3, #0x4] + mov r1, #0x3c + lsl r0, r0, #0x1c + bic r4, r1 + lsr r0, r0, #0x1a + orr r0, r4 + strh r0, [r3, #0x4] +_020176D6: + add r0, sp, #0x0 + ldrh r3, [r0, #0x4] + add r2, r5, r2 + ldr r6, =0x0400100E + lsl r0, r3, #0x1a + ldrb r4, [r2, #0x1e] + lsr r1, r0, #0x1c + lsl r0, r3, #0x13 + lsl r2, r3, #0x10 + lsr r3, r2, #0x1e + ldrh r5, [r6, #0x0] + lsr r0, r0, #0x1b + lsl r2, r1, #0x2 + lsl r1, r0, #0x8 + lsl r0, r4, #0x7 + mov r4, #0x43 + and r4, r5 + lsl r3, r3, #0xe + orr r3, r4 + orr r0, r3 + orr r0, r1 + orr r0, r2 + add sp, #0x20 + strh r0, [r6, #0x0] + pop {r3-r7, pc} +_02017708: + ldr r2, =0x0400100E + cmp r1, #0x1 + ldrh r3, [r2, #0x0] + add r2, sp, #0x0 + strh r3, [r2, #0x2] + bne _02017724 + ldrh r3, [r2, #0x2] + ldr r1, =0xFFFFE0FF + lsl r0, r0, #0x1b + and r1, r3 + lsr r0, r0, #0x13 + orr r0, r1 + strh r0, [r2, #0x2] + b _02017736 +_02017724: + cmp r1, #0x2 + bne _02017736 + ldrh r3, [r2, #0x2] + mov r1, #0x3c + lsl r0, r0, #0x1c + bic r3, r1 + lsr r0, r0, #0x1a + orr r0, r3 + strh r0, [r2, #0x2] +_02017736: + add r0, sp, #0x0 + ldrh r3, [r0, #0x2] + ldr r6, =0x0400100E + add sp, #0x20 + lsl r1, r3, #0x13 + lsl r0, r3, #0x1a + lsr r4, r1, #0x1b + lsl r1, r3, #0x12 + lsr r2, r1, #0x1f + lsl r1, r3, #0x10 + lsr r3, r1, #0x1e + lsr r0, r0, #0x1c + lsl r1, r0, #0x2 + lsl r0, r4, #0x8 + ldrh r5, [r6, #0x0] + mov r4, #0x43 + lsl r3, r3, #0xe + and r4, r5 + orr r3, r4 + orr r0, r3 + lsl r2, r2, #0xd + orr r0, r1 + orr r0, r2 + strh r0, [r6, #0x0] + pop {r3-r7, pc} +_02017768: + ldr r2, =0x0400100E + cmp r1, #0x1 + ldrh r3, [r2, #0x0] + add r2, sp, #0x0 + strh r3, [r2, #0x0] + bne _02017784 + ldrh r3, [r2, #0x0] + ldr r1, =0xFFFFE0FF + lsl r0, r0, #0x1b + and r1, r3 + lsr r0, r0, #0x13 + orr r0, r1 + strh r0, [r2, #0x0] + b _02017796 +_02017784: + cmp r1, #0x2 + bne _02017796 + ldrh r3, [r2, #0x0] + mov r1, #0x38 + lsl r0, r0, #0x1d + bic r3, r1 + lsr r0, r0, #0x1a + orr r0, r3 + strh r0, [r2, #0x0] +_02017796: + add r0, sp, #0x0 + ldrh r3, [r0, #0x0] + ldr r6, =0x0400100E + lsl r1, r3, #0x13 + lsr r4, r1, #0x1b + lsl r1, r3, #0x12 + lsr r2, r1, #0x1f + lsl r0, r3, #0x1a + lsl r1, r3, #0x10 + lsr r3, r1, #0x1e + lsl r1, r4, #0x8 + lsr r0, r0, #0x1d + ldrh r5, [r6, #0x0] + mov r4, #0x43 + lsl r3, r3, #0xe + and r4, r5 + lsl r0, r0, #0x2 + orr r3, r4 + orr r0, r3 + lsl r2, r2, #0xd + orr r0, r1 + orr r0, r2 + strh r0, [r6, #0x0] +_020177C4: + add sp, #0x20 + pop {r3-r7, pc} + // clang-format on +} +#endif + +THUMB_FUNC u8 FUN_020177DC(u8 param0, u32 param1) +{ + switch (param1) + { + case 0: + + if (param0 == 1) + { + return 0; + } + else if (param0 == 2) + { + return 2; + } + else if (param0 == 3) + { + return 1; + } + else if (param0 == 4) + { + return 3; + } + break; + + case 1: + + if (param0 == 0) + { + return 0; + } + else if (param0 == 1) + { + return 1; + } + else if (param0 == 4) + { + return 2; + } + else if (param0 == 5) + { + return 3; + } + break; + + case 2: + + if (param0 == 0) + { + return 0; + } + else if (param0 == 1) + { + return 1; + } + else if (param0 == 4) + { + return 2; + } + else if (param0 == 5) + { + return 3; + } + break; + } + + return 0; +} + +THUMB_FUNC void FUN_02017850(u32 param0, u8 *param1, u8 *param2) +{ + switch (param0) + { + case 0: + *param1 = 0x10; + *param2 = 0x10; + break; + case 1: + *param1 = 0x20; + *param2 = 0x20; + break; + case 2: + *param1 = 0x20; + *param2 = 0x40; + break; + case 3: + *param1 = 0x40; + *param2 = 0x20; + break; + case 4: + *param1 = 0x40; + *param2 = 0x40; + break; + case 5: + *param1 = 0x80; + *param2 = 0x80; + break; + } +} + +THUMB_FUNC void FUN_020178A0(struct UnkStruct_02016B94_2 *param0, u32 param1) +{ + if (param0->unk08[param1].unk08 != NULL) + { + FreeToHeap(param0->unk08[param1].unk08); + param0->unk08[param1].unk08 = NULL; + } +} + +THUMB_FUNC void FUN_020178BC(u32 param0, u16 param1) +{ + switch (param0) + { + case 0: + reg_G2_BG0CNT = (u16)(reg_G2_BG0CNT & ~3 | param1); + break; + case 1: + reg_G2_BG1CNT = (u16)(reg_G2_BG1CNT & ~3 | param1); + break; + case 2: + reg_G2_BG2CNT = (u16)(reg_G2_BG2CNT & ~3 | param1); + break; + case 3: + reg_G2_BG3CNT = (u16)(reg_G2_BG3CNT & ~3 | param1); + break; + case 4: + reg_G2S_DB_BG0CNT = (u16)(reg_G2S_DB_BG0CNT & ~3 | param1); + break; + case 5: + reg_G2S_DB_BG1CNT = (u16)(reg_G2S_DB_BG1CNT & ~3 | param1); + break; + case 6: + reg_G2S_DB_BG2CNT = (u16)(reg_G2S_DB_BG2CNT & ~3 | param1); + break; + case 7: + reg_G2S_DB_BG3CNT = (u16)(reg_G2S_DB_BG3CNT & ~3 | param1); + break; + } +} + +THUMB_FUNC void FUN_0201797C(u32 param0, GX_LayerToggle toggle) +{ + switch (param0) + { + case 0: + GX_EngineAToggleLayers(1, toggle); + break; + case 1: + GX_EngineAToggleLayers(2, toggle); + break; + case 2: + GX_EngineAToggleLayers(4, toggle); + break; + case 3: + GX_EngineAToggleLayers(8, toggle); + break; + case 4: + GX_EngineBToggleLayers(1, toggle); + break; + case 5: + GX_EngineBToggleLayers(2, toggle); + break; + case 6: + GX_EngineBToggleLayers(4, toggle); + break; + case 7: + GX_EngineBToggleLayers(8, toggle); + break; + } +} + +THUMB_FUNC void FUN_020179E0(struct UnkStruct_02016B94_2 *param0, u32 param1, u32 param2, fx32 val) +{ + FUN_02017B8C(¶m0->unk08[param1], param2, val); + + u32 r1 = (u32)param0->unk08[param1].unk14; + u32 r0 = (u32)param0->unk08[param1].unk18; + switch (param1) + { + case 0: + + reg_G2_BG0OFS = (r1 & 0x1FF) | ((r0 << 16) & 0x1FF0000); + break; + case 1: + + reg_G2_BG1OFS = (r1 & 0x1FF) | ((r0 << 16) & 0x1FF0000); + break; + + case 2: + if (param0->unk08[2].unk1c == 0) + { + reg_G2_BG2OFS = (r1 & 0x1FF) | ((r0 << 16) & 0x1FF0000); + } + else + { + FUN_02017C6C(param0, 2); + } + + break; + + case 3: + if (param0->unk08[3].unk1c == 0) + { + reg_G2_BG3OFS = (r1 & 0x1FF) | ((r0 << 16) & 0x1FF0000); + } + else + { + FUN_02017C6C(param0, 3); + } + + break; + + case 4: + + reg_G2S_DB_BG0OFS = (r1 & 0x1FF) | ((r0 << 16) & 0x1FF0000); + break; + case 5: + + reg_G2S_DB_BG1OFS = (r1 & 0x1FF) | ((r0 << 16) & 0x1FF0000); + break; + + case 6: + if (param0->unk08[6].unk1c == 0) + { + reg_G2S_DB_BG2OFS = (r1 & 0x1FF) | ((r0 << 16) & 0x1FF0000); + } + else + { + FUN_02017C6C(param0, 6); + } + + break; + + case 7: + if (param0->unk08[7].unk1c == 0) + { + reg_G2S_DB_BG3OFS = (r1 & 0x1FF) | ((r0 << 16) & 0x1FF0000); + } + else + { + FUN_02017C6C(param0, 7); + } + + break; + } +} + +THUMB_FUNC fx32 FUN_02017B48(struct UnkStruct_02016B94_2 *param0, u32 param1) +{ + return param0->unk08[param1].unk14; +} + +THUMB_FUNC fx32 FUN_02017B54(struct UnkStruct_02016B94_2 *param0, u32 param1) +{ + return param0->unk08[param1].unk18; +} + +THUMB_FUNC void FUN_02017B60(struct UnkStruct_02016B94_2 *param0, + u32 param1, + u32 param2, + fx32 param3, + struct Mtx22 *param4, + fx32 param5, + fx32 param6) +{ + FUN_02017B8C(¶m0->unk08[param1], param2, param3); + FUN_02017BD0(param0, param1, param4, param5, param6); +} + +THUMB_FUNC void FUN_02017B8C(struct UnkStruct_02016B94_2_sub *param0, u32 param1, fx32 val) +{ + switch (param1) + { + case 0: + param0->unk14 = val; + break; + case 1: + param0->unk14 += val; + break; + case 2: + param0->unk14 -= val; + break; + case 3: + param0->unk18 = val; + break; + case 4: + param0->unk18 += val; + break; + case 5: + param0->unk18 -= val; + break; + } +} + +THUMB_FUNC void FUN_02017BD0( + struct UnkStruct_02016B94_2 *param0, u32 param1, struct Mtx22 *param2, fx32 param3, fx32 param4) +{ + switch (param1) + { + case 2: + G2x_SetBGyAffine_(reg_G2_BG2P, + param2, + param3, + param4, + param0->unk08[param1].unk14, + param0->unk08[param1].unk18); + break; + case 3: + G2x_SetBGyAffine_(reg_G2_BG3P, + param2, + param3, + param4, + param0->unk08[param1].unk14, + param0->unk08[param1].unk18); + break; + case 6: + G2x_SetBGyAffine_(reg_G2S_DB_BG2P, + param2, + param3, + param4, + param0->unk08[param1].unk14, + param0->unk08[param1].unk18); + break; + case 7: + G2x_SetBGyAffine_(reg_G2S_DB_BG3P, + param2, + param3, + param4, + param0->unk08[param1].unk14, + param0->unk08[param1].unk18); + break; + } +} + +THUMB_FUNC void FUN_02017C6C(struct UnkStruct_02016B94_2 *param0, u32 param1) +{ + struct Mtx22 mtx; + MTX22_2DAffine(&mtx, 0, 0x1000, 0x1000, 0); + FUN_02017BD0(param0, param1, &mtx, 0, 0); +} + +THUMB_FUNC void FUN_02017C98(const void *param0, void *param1, u32 param2) +{ + if (param2 == 0) + { + MI_UncompressLZ8(param0, param1); + return; + } + + if (((u32)param0 % 4) == 0 && ((u32)param1 % 4) == 0 && ((u16)param2 % 4) == 0) + { + MI_CpuCopy32(param0, param1, param2); + return; + } + + MI_CpuCopy16(param0, param1, param2); +} + +THUMB_FUNC void FUN_02017CD0(struct UnkStruct_02016B94_2 *param0, u32 param1) +{ + FUN_02017CE8(param0, + param1, + param0->unk08[param1].unk08, + param0->unk08[param1].unk0c, + param0->unk08[param1].unk10); +} + +THUMB_FUNC void FUN_02017CE8( + struct UnkStruct_02016B94_2 *param0, u32 param1, u32 *param2, u32 param3, u32 param4) +{ + u32 st0 = param3; + if (param3 == 0) + { + void *st4 = param0->unk08[param1].unk08; + if (st4 != 0) + { + FUN_02017C98(param2, st4, param3); + FUN_02017D68(param1, st4, param0->unk08[param1].unk10 * 2, param0->unk08[param1].unk0c); + return; + } + + u32 r7 = param2[0] >> 8; + void *ptr = AllocFromHeapAtEnd(param0->unk00, r7); + FUN_02017C98(param2, ptr, st0); + FUN_02017D68(param1, ptr, param4 * 2, r7); + FreeToHeap(ptr); + return; + } + + FUN_02017D68(param1, param2, param4 * 2, param3); +} + +THUMB_FUNC void FUN_02017D68(u32 param0, void *param1, u32 offset, u32 size) +{ + DC_FlushRange(param1, size); + + switch (param0) + { + case 0: + GX_LoadBG0Scr(param1, offset, size); + break; + case 1: + GX_LoadBG1Scr(param1, offset, size); + break; + case 2: + GX_LoadBG2Scr(param1, offset, size); + break; + case 3: + GX_LoadBG3Scr(param1, offset, size); + break; + case 4: + GXS_LoadBG0Scr(param1, offset, size); + break; + case 5: + GXS_LoadBG1Scr(param1, offset, size); + break; + case 6: + GXS_LoadBG2Scr(param1, offset, size); + break; + case 7: + GXS_LoadBG3Scr(param1, offset, size); + break; + } +} + +THUMB_FUNC void FUN_02017DFC( + struct UnkStruct_02016B94_2 *param0, u32 param1, void *param2, u32 param3) +{ + FUN_02017C98(param2, param0->unk08[param1].unk08, param3); +} + +THUMB_FUNC void FUN_02017E14( + struct UnkStruct_02016B94_2 *param0, u32 param1, u32 *param2, u32 param3, u32 param4) +{ + if (param0->unk08[param1].unk1e == 0) + { + FUN_02017E40(param0, param1, param2, param3, param4 << 5); + return; + } + FUN_02017E40(param0, param1, param2, param3, param4 << 6); +} + +THUMB_FUNC void FUN_02017E40( + struct UnkStruct_02016B94_2 *param0, u32 param1, u32 *param2, u32 param3, u32 param4) +{ + u32 st0 = param3; + if (param3 == 0) + { + + u32 r4 = param2[0] >> 8; + void *ptr = AllocFromHeapAtEnd(param0->unk00, r4); + FUN_02017C98(param2, ptr, st0); + FUN_02017E84(param1, ptr, param4, r4); + FreeToHeap(ptr); + return; + } + + FUN_02017E84(param1, param2, param4, param3); +} + +THUMB_FUNC void FUN_02017E84(u32 param0, void *param1, u32 offset, u32 size) +{ + DC_FlushRange(param1, size); + + switch (param0) + { + case 0: + GX_LoadBG0Char(param1, offset, size); + break; + case 1: + GX_LoadBG1Char(param1, offset, size); + break; + case 2: + GX_LoadBG2Char(param1, offset, size); + break; + case 3: + GX_LoadBG3Char(param1, offset, size); + break; + case 4: + GXS_LoadBG0Char(param1, offset, size); + break; + case 5: + GXS_LoadBG1Char(param1, offset, size); + break; + case 6: + GXS_LoadBG2Char(param1, offset, size); + break; + case 7: + GXS_LoadBG3Char(param1, offset, size); + break; + } +} + +THUMB_FUNC void FUN_02017F18(u32 param0, u32 size, u32 offset, u32 heap_id) +{ + void *ptr = AllocFromHeapAtEnd(heap_id, size); + memset(ptr, 0, size); + + FUN_02017E84(param0, ptr, offset, size); + FreeToHeapExplicit(heap_id, ptr); +} + +THUMB_FUNC void FUN_02017F48( + struct UnkStruct_02016B94_2 *param0, u32 param1, u32 param2, u32 param3, u32 param4) +{ + void *st4; + u32 st0 = param3 * param0->unk08[param1].unk1f; + u32 r5 = param2; + st4 = AllocFromHeapAtEnd(param0->unk00, st0); + + if (param0->unk08[param1].unk1f == 0x20) + { + r5 = (r5 << 0xc | r5 << 0x8 | r5 << 0x4 | r5); + r5 |= r5 << 0x10; + } + else + { + r5 = r5 << 0x18 | r5 << 0x10 | r5 << 8 | r5; + } + + MI_CpuFillFast(st4, r5, st0); + + FUN_02017E84((u8)param1, st4, param0->unk08[param1].unk1f * param4, st0); + FreeToHeap(st4); +} + +THUMB_FUNC void FUN_02017FB4(u32 param0, void *param1, u32 offset, u32 size) +{ + DC_FlushRange(param1, offset); + if (param0 < 4) + { + GX_LoadBGPltt(param1, size, offset); + return; + } + + GXS_LoadBGPltt(param1, size, offset); +} + +THUMB_FUNC void FUN_02017FE4(u32 param0, u32 param1) +{ + FUN_02017FB4(param0, ¶m1, 2, 0); +} + +THUMB_FUNC u16 FUN_02017FFC(u8 param0, u8 param1, u8 param2) +{ + switch (param2) + { + case 0: + return (u16)(param0 + (param1 << 4)); + case 1: + case 2: + return (u16)(param0 + (param1 << 5)); + case 3: + return (u16)((param0 & 0x1f) + ((param1 + (param0 & ~0x1f)) << 5)); + case 4: + u16 res = (u16)(((u16)((param0 >> 5) + (param1 >> 5) * 2)) << 10); + res += (param0 & 0x1f) + ((param1 & 0x1f) << 5); + return res; + case 5: + return 0; + } + + return param0; +} + +THUMB_FUNC u16 FUN_02018068(u8 param0, u8 param1, u8 param2, u8 param3) +{ + u8 r2 = 0; + u16 r3 = 0; + s16 r4 = (s16)(param2 - 32); + s16 r5 = (s16)(param3 - 32); + + if (((u32)param0 >> 5) != 0) + { + r2++; + } + + if (((u32)param1 >> 5) != 0) + { + r2 += 2; + } + + switch (r2) + { + case 0: + if (r4 >= 0) + { + r3 += param0 + (param1 << 5); + } + else + { + r3 += param0 + param1 * param2; + } + break; + case 1: + if (r5 >= 0) + { + r3 += 0x400; + } + else + { + r3 += (param3 << 5); + } + + r3 += (param0 & 0x1f) + param1 * r4; + break; + case 2: + r3 += param2 << 5; + if (r4 >= 0) + { + r3 += param0 + ((param1 & 0x1f) << 5); + } + else + { + r3 += param0 + (param1 & 0x1f) * param2; + } + break; + case 3: + r3 += (param2 + r5) << 5; + r3 += (param0 & 0x1f) + (param1 & 0x1f) * r4; + break; + } + + return r3; +} + +THUMB_FUNC void FUN_02018148(struct UnkStruct_02016B94_2 *param0, + u32 param1, + void *param2, + u8 param3, + u8 param4, + u8 param5, + u8 param6) +{ + FUN_02018170(param0, param1, param3, param4, param5, param6, param2, 0, 0, param5, param6); +} + +THUMB_FUNC void FUN_02018170(struct UnkStruct_02016B94_2 *param0, + u32 param1, + u8 param2, + u8 param3, + u8 param4, + u8 param5, + void *param6, + u8 param7, + u8 param8, + u8 param9, + u8 param10) +{ + if (param0->unk08[param1].unk1c != 1) + { + FUN_02018268(¶m0->unk08[param1], + param2, + param3, + param4, + param5, + (u16 *)param6, + param7, + param8, + param9, + param10, + 0); + } + else + { + FUN_020183DC(¶m0->unk08[param1], + param2, + param3, + param4, + param5, + (u8 *)param6, + param7, + param8, + param9, + param10, + 0); + } +} + +THUMB_FUNC void FUN_020181EC(struct UnkStruct_02016B94_2 *param0, + u32 param1, + u8 param2, + u8 param3, + u8 param4, + u8 param5, + void *param6, + u8 param7, + u8 param8, + u8 param9, + u8 param10) +{ + if (param0->unk08[param1].unk1c != 1) + { + FUN_02018268(¶m0->unk08[param1], + param2, + param3, + param4, + param5, + (u16 *)param6, + param7, + param8, + param9, + param10, + 1); + } + else + { + FUN_020183DC(¶m0->unk08[param1], + param2, + param3, + param4, + param5, + (u8 *)param6, + param7, + param8, + param9, + param10, + 1); + } +} + +THUMB_FUNC void FUN_02018268(struct UnkStruct_02016B94_2_sub *param0, + u8 param1, + u8 param2, + u8 param3, + u8 param4, + u16 *param5, + u8 param6, + u8 param7, + u8 param8, + u8 param9, + u8 param10) +{ + void *st2c = param0->unk08; + + if (st2c == 0) + { + return; + } + + u8 st41; + u8 st40; + FUN_02017850(param0->unk1d, &st41, &st40); + + u8 i; + u8 j; + if (param10 == 0) + { + for (i = 0; i < param4; i++) + { + + if (param2 + i >= st40) + { + break; + } + + if (param7 + i >= param9) + { + break; + } + + for (j = 0; j < param3; j++) + { + + if (param1 + j >= st41) + { + break; + } + + if (param6 + j >= param8) + { + break; + } + + ((u16 *)st2c)[FUN_02017FFC((u8)(param1 + j), (u8)(param2 + i), param0->unk1d)] = + param5[param6 + param8 * (param7 + i) + j]; + } + } + } + else + { + for (i = 0; i < param4; i++) + { + + if (param2 + i >= st40) + { + break; + } + + if (param7 + i >= param9) + { + break; + } + + for (j = 0; j < param3; j++) + { + + if (param1 + j >= st41) + { + break; + } + + if (param6 + j >= param8) + { + break; + } + + ((u16 *)st2c)[FUN_02017FFC((u8)(param1 + j), (u8)(param2 + i), param0->unk1d)] = + param5[FUN_02018068((u8)(param6 + j), (u8)(param7 + i), param8, param9)]; + } + } + } +} + +THUMB_FUNC void FUN_020183DC(struct UnkStruct_02016B94_2_sub *param0, + u8 param1, + u8 param2, + u8 param3, + u8 param4, + u8 *param5, + u8 param6, + u8 param7, + u8 param8, + u8 param9, + u8 param10) +{ + void *st2c = param0->unk08; + + if (st2c == 0) + { + return; + } + + u8 st41; + u8 st40; + FUN_02017850(param0->unk1d, &st41, &st40); + + u8 i; + u8 j; + if (param10 == 0) + { + for (i = 0; i < param4; i++) + { + + if (param2 + i >= st40) + { + break; + } + + if (param7 + i >= param9) + { + break; + } + + for (j = 0; j < param3; j++) + { + + if (param1 + j >= st41) + { + break; + } + + if (param6 + j >= param8) + { + break; + } + + ((u8 *)st2c)[FUN_02017FFC((u8)(param1 + j), (u8)(param2 + i), param0->unk1d)] = + param5[param6 + param8 * (param7 + i) + j]; + } + } + } + else + { + for (i = 0; i < param4; i++) + { + + if (param2 + i >= st40) + { + break; + } + + if (param7 + i >= param9) + { + break; + } + + for (j = 0; j < param3; j++) + { + + if (param1 + j >= st41) + { + break; + } + + if (param6 + j >= param8) + { + break; + } + + ((u8 *)st2c)[FUN_02017FFC((u8)(param1 + j), (u8)(param2 + i), param0->unk1d)] = + param5[FUN_02018068((u8)(param6 + j), (u8)(param7 + i), param8, param9)]; + } + } + } +} + +THUMB_FUNC void FUN_02018540(struct UnkStruct_02016B94_2 *param0, + u32 param1, + u16 param2, + u8 param3, + u8 param4, + u8 param5, + u8 param6, + u8 param7) +{ + if (param0->unk08[param1].unk1c != 1) + { + + FUN_02018590(¶m0->unk08[param1], param2, param3, param4, param5, param6, param7); + } + else + { + FUN_02018640(¶m0->unk08[param1], (u8)param2, param3, param4, param5, param6); + } +} + +THUMB_FUNC void FUN_02018590(struct UnkStruct_02016B94_2_sub *param0, + u16 param1, + u8 param2, + u8 param3, + u8 param4, + u8 param5, + u8 param6) +{ + void *r4 = param0->unk08; + + if (r4 != 0) + { + + u8 st19; + u8 st18; + FUN_02017850(param0->unk1d, &st19, &st18); + + u8 i; + u8 j; + for (i = param3; i < param3 + param5; i++) + { + if (i >= st18) + { + break; + } + + for (j = param2; j < param2 + param4; j++) + { + if (j >= st19) + { + break; + } + + u16 idx = FUN_02017FFC(j, i, param0->unk1d); + + if (param6 == 0x11) + { + ((u16 *)r4)[idx] = param1; + } + else if (param6 == 0x10) + { + ((u16 *)r4)[idx] = (u16)((((u16 *)r4)[idx] & 0xF000) + param1); + } + else + { + ((u16 *)r4)[idx] = (u16)((param6 << 0xc) + param1); + } + } + } + } +} + +THUMB_FUNC void FUN_02018640( + struct UnkStruct_02016B94_2_sub *param0, u8 param1, u8 param2, u8 param3, u8 param4, u8 param5) +{ + void *r4 = param0->unk08; + + if (r4 != 0) + { + + u8 st19; + u8 st18; + FUN_02017850(param0->unk1d, &st19, &st18); + + u8 i; + u8 j; + for (i = param3; i < param3 + param5; i++) + { + if (i >= st18) + { + break; + } + + for (j = param2; j < param2 + param4; j++) + { + if (j >= st19) + { + break; + } + + ((u8 *)r4)[FUN_02017FFC(j, i, param0->unk1d)] = param1; + } + } + } +} + +THUMB_FUNC void FUN_020186B4(struct UnkStruct_02016B94_2 *param0, + u32 param1, + u8 param2, + u8 param3, + u8 param4, + u8 param5, + u8 param6) +{ + void *r4 = param0->unk08[param1].unk08; + + if (r4 != NULL) + { + u8 st11; + u8 st10; + FUN_02017850(param0->unk08[param1].unk1d, &st11, &st10); + + u8 i; + u8 j; + for (i = param3; i < param3 + param5; i++) + { + if (i >= st10) + { + break; + } + + for (j = param2; j < param2 + param4; j++) + { + if (j >= st11) + { + break; + } + + u16 idx = FUN_02017FFC(j, i, param0->unk08[param1].unk1d); + ((u16 *)r4)[idx] = (u16)((((u16 *)r4)[idx] & 0xfff) | (param6 << 0xc)); + } + } + } +} + +THUMB_FUNC void FUN_02018744(struct UnkStruct_02016B94_2 *param0, u32 param1) +{ + if (param0->unk08[param1].unk08 != NULL) + { + MI_CpuClear16(param0->unk08[param1].unk08, param0->unk08[param1].unk0c); + FUN_02017CD0(param0, param1); + } +} + +THUMB_FUNC void FUN_02018768(struct UnkStruct_02016B94_2 *param0, u32 param1, u16 param2) +{ + if (param0->unk08[param1].unk08 != NULL) + { + MI_CpuFill16(param0->unk08[param1].unk08, param2, param0->unk08[param1].unk0c); + FUN_02017CD0(param0, param1); + } +} + +THUMB_FUNC void FUN_0201878C(struct UnkStruct_02016B94_2 *param0, u32 param1, u16 param2) +{ + if (param0->unk08[param1].unk08 != NULL) + { + MI_CpuFill16(param0->unk08[param1].unk08, param2, param0->unk08[param1].unk0c); + FUN_0201AC68(param0, param1); + } +} + +THUMB_FUNC void *FUN_020187B0(u32 param0) +{ + switch (param0) + { + case 0: + return G2_GetBG0CharPtr(); + case 1: + return G2_GetBG1CharPtr(); + case 2: + return G2_GetBG2CharPtr(); + case 3: + return G2_GetBG3CharPtr(); + case 4: + return G2S_GetBG0CharPtr(); + case 5: + return G2S_GetBG1CharPtr(); + case 6: + return G2S_GetBG2CharPtr(); + case 7: + return G2S_GetBG3CharPtr(); + } + + return NULL; +} + +THUMB_FUNC void FUN_02018808(u8 *param0, u32 param1, u8 (*param2)[2], u8 param3) +{ + param3 <<= 4; + for (int i = 0; i < param1; i++) + { + param2[i][0] = (u8)(param0[i] & 0xf); + if (param2[i][0] != 0) + { + param2[i][0] += param3; + } + + param2[i][1] = (u8)((param0[i] >> 4) & 0xf); + if (param2[i][1] != 0) + { + param2[i][1] += param3; + } + } +} + +THUMB_FUNC u8 (*FUN_02018848(u8 *param0, u32 param1, u8 param2, u32 heap_id))[2] +{ + u8(*ptr)[2] = (u8(*)[2])AllocFromHeap(heap_id, param1 * 2); + + FUN_02018808(param0, param1, ptr, param2); + + return ptr; +} + +THUMB_FUNC void *FUN_0201886C(struct UnkStruct_02016B94_2 *param0, u8 param1) +{ + return param0->unk08[param1].unk08; +} + +THUMB_FUNC u16 FUN_02018878(struct UnkStruct_02016B94_2 *param0, u32 param1) +{ + return param0->unk08[param1].unk20; +} + +#ifdef NONMATCHING +THUMB_FUNC u8 FUN_02018884(struct UnkStruct_02016B94_2 *param0, u32 param1) +{ + + // the compiler keeps optimizing the stack away :( + u16 st0[16]; + switch (param1) + { + case 0: + st0[15] = reg_G2_BG0CNT; + return (u32)(st0[15] << 0x1e) >> 0x1e; + case 1: + st0[14] = reg_G2_BG1CNT; + return (u32)(st0[14] << 0x1e) >> 0x1e; + + case 2: + switch (param0->unk08[param1].unk1c) + { + default: + case 0: + st0[13] = reg_G2_BG2CNT; + return (u32)(st0[13] << 0x1e) >> 0x1e; + case 1: + st0[12] = reg_G2_BG2CNT; + return (u32)(st0[12] << 0x1e) >> 0x1e; + case 2: + st0[11] = reg_G2_BG2CNT; + return (u32)(st0[11] << 0x1e) >> 0x1e; + } + break; + case 3: + switch (param0->unk08[param1].unk1c) + { + default: + case 0: + st0[10] = reg_G2_BG3CNT; + return (u32)(st0[10] << 0x1e) >> 0x1e; + case 1: + st0[9] = reg_G2_BG3CNT; + return (u32)(st0[9] << 0x1e) >> 0x1e; + case 2: + st0[8] = reg_G2_BG3CNT; + return (u32)(st0[8] << 0x1e) >> 0x1e; + } + break; + + case 4: + st0[7] = reg_G2S_DB_BG0CNT; + return (u32)(st0[7] << 0x1e) >> 0x1e; + case 5: + st0[6] = reg_G2S_DB_BG1CNT; + return (u32)(st0[6] << 0x1e) >> 0x1e; + + case 6: + switch (param0->unk08[param1].unk1c) + { + default: + case 0: + st0[5] = reg_G2S_DB_BG2CNT; + return (u32)(st0[5] << 0x1e) >> 0x1e; + case 1: + st0[4] = reg_G2S_DB_BG2CNT; + return (u32)(st0[4] << 0x1e) >> 0x1e; + case 2: + st0[3] = reg_G2S_DB_BG2CNT; + return (u32)(st0[3] << 0x1e) >> 0x1e; + } + break; + case 7: + switch (param0->unk08[param1].unk1c) + { + default: + case 0: + st0[2] = reg_G2S_DB_BG3CNT; + return (u32)(st0[2] << 0x1e) >> 0x1e; + case 1: + st0[1] = reg_G2S_DB_BG3CNT; + return (u32)(st0[1] << 0x1e) >> 0x1e; + case 2: + st0[0] = reg_G2S_DB_BG3CNT; + return (u32)(st0[0] << 0x1e) >> 0x1e; + } + break; + } + + return 0; +} +#else +THUMB_FUNC asm u8 FUN_02018884(struct UnkStruct_02016B94_2 *param0, u32 param1) +{ + // clang-format off + sub sp, #0x20 + cmp r1, #0x7 + bls _0201888C + b _02018A38 +_0201888C: + add r2, r1, r1 + add r2, pc + ldrh r2, [r2, #0x6] + lsl r2, r2, #0x10 + asr r2, r2, #0x10 + add pc, r2 +_02018898: + // jump table (using 16-bit offset) + // .short _020188A8 - _02018898 - 2; case 0 + // .short _020188BC - _02018898 - 2; case 1 + // .short _020188D0 - _02018898 - 2; case 2 + // .short _02018920 - _02018898 - 2; case 3 + // .short _02018970 - _02018898 - 2; case 4 + // .short _02018984 - _02018898 - 2; case 5 + // .short _02018998 - _02018898 - 2; case 6 + // .short _020189E8 - _02018898 - 2; case 7 + + lsl r6, r1, #0 + lsl r2, r4, #0 + lsl r6, r6, #0 + lsl r6, r0, #2 + lsl r6, r2, #3 + lsl r2, r5, #3 + lsl r6, r7, #3 + lsl r6, r1, #5 +_020188A8: + ldr r0, =0x04000008 + ldrh r1, [r0, #0x0] + add r0, sp, #0x0 + add sp, #0x20 + strh r1, [r0, #0x1e] + lsl r0, r1, #0x1e + lsr r0, r0, #0x1e + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bx lr +_020188BC: + ldr r0, =0x0400000A + ldrh r1, [r0, #0x0] + add r0, sp, #0x0 + add sp, #0x20 + strh r1, [r0, #0x1c] + lsl r0, r1, #0x1e + lsr r0, r0, #0x1e + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bx lr +_020188D0: + mov r2, #0x2c + mul r2, r1 + add r0, r0, r2 + ldrb r0, [r0, #0x1c] + cmp r0, #0x0 + beq _020188E4 + cmp r0, #0x1 + beq _020188F8 + cmp r0, #0x2 + beq _0201890C +_020188E4: + ldr r0, =0x0400000C + ldrh r1, [r0, #0x0] + add r0, sp, #0x0 + add sp, #0x20 + strh r1, [r0, #0x1a] + lsl r0, r1, #0x1e + lsr r0, r0, #0x1e + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bx lr +_020188F8: + ldr r0, =0x0400000C + ldrh r1, [r0, #0x0] + add r0, sp, #0x0 + add sp, #0x20 + strh r1, [r0, #0x18] + lsl r0, r1, #0x1e + lsr r0, r0, #0x1e + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bx lr +_0201890C: + ldr r0, =0x0400000C + ldrh r1, [r0, #0x0] + add r0, sp, #0x0 + add sp, #0x20 + strh r1, [r0, #0x16] + lsl r0, r1, #0x1e + lsr r0, r0, #0x1e + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bx lr +_02018920: + mov r2, #0x2c + mul r2, r1 + add r0, r0, r2 + ldrb r0, [r0, #0x1c] + cmp r0, #0x0 + beq _02018934 + cmp r0, #0x1 + beq _02018948 + cmp r0, #0x2 + beq _0201895C +_02018934: + ldr r0, =0x0400000E + ldrh r1, [r0, #0x0] + add r0, sp, #0x0 + add sp, #0x20 + strh r1, [r0, #0x14] + lsl r0, r1, #0x1e + lsr r0, r0, #0x1e + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bx lr +_02018948: + ldr r0, =0x0400000E + ldrh r1, [r0, #0x0] + add r0, sp, #0x0 + add sp, #0x20 + strh r1, [r0, #0x12] + lsl r0, r1, #0x1e + lsr r0, r0, #0x1e + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bx lr +_0201895C: + ldr r0, =0x0400000E + ldrh r1, [r0, #0x0] + add r0, sp, #0x0 + add sp, #0x20 + strh r1, [r0, #0x10] + lsl r0, r1, #0x1e + lsr r0, r0, #0x1e + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bx lr +_02018970: + ldr r0, =0x04001008 + ldrh r1, [r0, #0x0] + add r0, sp, #0x0 + add sp, #0x20 + strh r1, [r0, #0xe] + lsl r0, r1, #0x1e + lsr r0, r0, #0x1e + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bx lr +_02018984: + ldr r0, =0x0400100A + ldrh r1, [r0, #0x0] + add r0, sp, #0x0 + add sp, #0x20 + strh r1, [r0, #0xc] + lsl r0, r1, #0x1e + lsr r0, r0, #0x1e + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bx lr +_02018998: + mov r2, #0x2c + mul r2, r1 + add r0, r0, r2 + ldrb r0, [r0, #0x1c] + cmp r0, #0x0 + beq _020189AC + cmp r0, #0x1 + beq _020189C0 + cmp r0, #0x2 + beq _020189D4 +_020189AC: + ldr r0, =0x0400100C + ldrh r1, [r0, #0x0] + add r0, sp, #0x0 + add sp, #0x20 + strh r1, [r0, #0xa] + lsl r0, r1, #0x1e + lsr r0, r0, #0x1e + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bx lr +_020189C0: + ldr r0, =0x0400100C + ldrh r1, [r0, #0x0] + add r0, sp, #0x0 + add sp, #0x20 + strh r1, [r0, #0x8] + lsl r0, r1, #0x1e + lsr r0, r0, #0x1e + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bx lr +_020189D4: + ldr r0, =0x0400100C + ldrh r1, [r0, #0x0] + add r0, sp, #0x0 + add sp, #0x20 + strh r1, [r0, #0x6] + lsl r0, r1, #0x1e + lsr r0, r0, #0x1e + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bx lr +_020189E8: + mov r2, #0x2c + mul r2, r1 + add r0, r0, r2 + ldrb r0, [r0, #0x1c] + cmp r0, #0x0 + beq _020189FC + cmp r0, #0x1 + beq _02018A10 + cmp r0, #0x2 + beq _02018A24 +_020189FC: + ldr r0, =0x0400100E + ldrh r1, [r0, #0x0] + add r0, sp, #0x0 + add sp, #0x20 + strh r1, [r0, #0x4] + lsl r0, r1, #0x1e + lsr r0, r0, #0x1e + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bx lr +_02018A10: + ldr r0, =0x0400100E + ldrh r1, [r0, #0x0] + add r0, sp, #0x0 + add sp, #0x20 + strh r1, [r0, #0x2] + lsl r0, r1, #0x1e + lsr r0, r0, #0x1e + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bx lr +_02018A24: + ldr r0, =0x0400100E + ldrh r1, [r0, #0x0] + add r0, sp, #0x0 + add sp, #0x20 + strh r1, [r0, #0x0] + lsl r0, r1, #0x1e + lsr r0, r0, #0x1e + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bx lr +_02018A38: + mov r0, #0x0 + add sp, #0x20 + bx lr + // clang-format on +} +#endif + +#ifdef NONMATCHING +THUMB_FUNC void BlitBitmapRect4Bit(struct UnkStruct_02016B94_3 *param0, + struct UnkStruct_02016B94_3 *param1, + u16 param2, + u16 param3, + u16 param4, + u16 param5, + u16 param6, + u16 param7, + u16 param8) +{ + + u8 *unk1; + u8 *unk2; + + int st50; + if (param1->unk04 - param4 < param6) + { + st50 = param2 + param1->unk04 - param4; + } + else + { + st50 = param2 + param6; + } + + int st4c; + if (param1->unk06 - param5 < param7) + { + st4c = param3 + param1->unk06 - param5; + } + else + { + st4c = param3 + param7; + } + + int st48 = (param0->unk04 + (param0->unk04 & 7)) >> 3; + + int st44 = (param1->unk04 + (param1->unk04 & 7)) >> 3; + + u32 i, i1; + u32 j, j1; + if (param8 == 0xFFFF) + { + i1 = param5; + for (i = param3; i < st4c; i++) + { + j1 = param4; + for (j = param2; j < st50; j++) + { + + unk1 = + (u32)(param1->unk00) + (j1 >> 1) & + 0x3 + ((j1 << 2) & 0x3fe0) + st44 * ((i1 << 2) & 0x3fe0) + ((i1 << 2) & 0x1c); + unk2 = (u32)(param0->unk00) + (j >> 1) & + 0x3 + ((j << 2) & 0x3fe0) + st48 * ((i << 2) & 0x3FE0) + ((i << 2) & 0x1c); + + u8 r1 = *unk2; + + u32 r2 = (j1 << 0x1f) >> 0x1d; + u32 r7 = ((r1 >> ((j << 0x1f) >> 0x1d)) & 0xf) << r2; + + *unk1 = r7 | (*unk1 & (0xf0 >> r2)); + + j1++; + } + i1++; + } + } + else + { + + i1 = param5; + for (i = param3; i < st4c; i++) + { + j1 = param4; + for (j = param2; j < st50; j++) + { + + unk1 = (u32)param1->unk00 + ((j1 >> 1) & 3) + ((j1 << 2) & 0x3fe0) + + st44 * ((i1 << 2) & 0x3fe0) + (i1 << 2) & + 0x1c; + unk2 = (u32)param0->unk00 + ((j >> 1) & 3) + ((j << 2) & 0x3fe0) + + st48 * ((i << 2) & 0x3fe0) + ((i << 2) & 0x1c); + u8 r0 = ((*unk2) >> ((j << 0x1f) >> 0x1d)) & 0xf; + + if (r0 != param8) + { + u32 r7 = ((j1 << 0x1f) >> 0x1d); + *unk1 = (r0 << r7) | (*unk1 & (0xf0 >> r7)); + } + + j1++; + } + i1++; + } + } +} +#else +THUMB_FUNC asm void BlitBitmapRect4Bit(struct UnkStruct_02016B94_3 *param0, + struct UnkStruct_02016B94_3 *param1, + u16 param2, + u16 param3, + u16 param4, + u16 param5, + u16 param6, + u16 param7, + u16 param8) +{ + // clang-format off + push {r3-r7, lr} + sub sp, #0x68 + str r2, [sp, #0x8] + str r3, [sp, #0xc] + add r2, sp, #0x70 + str r0, [sp, #0x0] + ldrh r0, [r2, #0x10] + str r1, [sp, #0x4] + ldrh r2, [r2, #0x18] + str r0, [sp, #0x10] + add r0, r1, #0x0 + ldrh r1, [r0, #0x4] + ldr r0, [sp, #0x10] + sub r3, r1, r0 + cmp r3, r2 + bge _02018A88 + ldr r0, [sp, #0x8] + add r0, r0, r3 + str r0, [sp, #0x50] + b _02018A8E +_02018A88: + ldr r0, [sp, #0x8] + add r0, r2, r0 + str r0, [sp, #0x50] +_02018A8E: + ldr r2, [sp, #0x4] + add r3, sp, #0x70 + ldrh r0, [r3, #0x14] + ldrh r2, [r2, #0x6] + ldrh r3, [r3, #0x1c] + sub r4, r2, r0 + cmp r4, r3 + bge _02018AA6 + ldr r2, [sp, #0xc] + add r2, r2, r4 + str r2, [sp, #0x4c] + b _02018AAC +_02018AA6: + ldr r2, [sp, #0xc] + add r2, r3, r2 + str r2, [sp, #0x4c] +_02018AAC: + ldr r2, [sp, #0x0] + mov r3, #0x7 + ldrh r4, [r2, #0x4] + add r2, r4, #0x0 + and r2, r3 + add r2, r4, r2 + asr r2, r2, #0x3 + str r2, [sp, #0x48] + add r2, r1, #0x0 + and r2, r3 + add r1, r1, r2 + asr r1, r1, #0x3 + str r1, [sp, #0x44] + add r1, sp, #0x70 + ldrh r1, [r1, #0x20] + ldr r2, =0x0000FFFF + str r1, [sp, #0x38] + cmp r1, r2 + bne _02018BB4 + ldr r2, [sp, #0xc] + ldr r1, [sp, #0x4c] + cmp r2, r1 + bge _02018ADE + cmp r2, r1 + blt _02018AE0 +_02018ADE: + b _02018C92 +_02018AE0: + add r1, r2, #0x0 + lsl r1, r1, #0x2 + lsl r0, r0, #0x2 + str r1, [sp, #0x28] + str r0, [sp, #0x24] +_02018AEA: + ldr r3, [sp, #0x8] + ldr r0, [sp, #0x50] + add r1, r3, #0x0 + ldr r4, [sp, #0x10] + cmp r1, r0 + bge _02018B96 + cmp r1, r0 + bge _02018B96 + add r0, r3, #0x0 + lsl r5, r0, #0x2 + add r0, r4, #0x0 + lsl r6, r0, #0x2 + ldr r0, =0x00003FE0 + ldr r1, [sp, #0x28] + ldr r2, [sp, #0x48] + and r1, r0 + mul r2, r1 + str r2, [sp, #0x20] + ldr r2, [sp, #0x28] + mov r1, #0x1c + and r2, r1 + str r2, [sp, #0x1c] + ldr r2, [sp, #0x24] + and r0, r2 + ldr r2, [sp, #0x44] + mul r2, r0 + ldr r0, [sp, #0x24] + str r2, [sp, #0x18] + and r0, r1 + str r0, [sp, #0x14] +_02018B26: + ldr r0, [sp, #0x4] + asr r2, r4, #0x1 + mov r1, #0x3 + ldr r0, [r0, #0x0] + and r1, r2 + add r1, r0, r1 + ldr r0, =0x00003FE0 + and r0, r6 + add r1, r1, r0 + ldr r0, [sp, #0x18] + add r6, r6, #0x4 + add r0, r1, r0 + str r0, [sp, #0x64] + lsl r0, r4, #0x1f + lsr r2, r0, #0x1d + ldr r0, [sp, #0x0] + asr r1, r3, #0x1 + ldr r7, [r0, #0x0] + mov r0, #0x3 + and r0, r1 + ldr r1, =0x00003FE0 + add r4, r4, #0x1 + and r1, r5 + str r1, [sp, #0x54] + add r1, r7, r0 + ldr r0, [sp, #0x54] + add r5, r5, #0x4 + add r1, r0, r1 + ldr r0, [sp, #0x20] + add r1, r0, r1 + ldr r0, [sp, #0x1c] + ldrb r1, [r0, r1] + lsl r0, r3, #0x1f + lsr r0, r0, #0x1d + asr r1, r0 + mov r0, #0xf + and r0, r1 + add r7, r0, #0x0 + ldr r1, [sp, #0x14] + ldr r0, [sp, #0x64] + lsl r7, r2 + ldrb r0, [r0, r1] + add r3, r3, #0x1 + str r0, [sp, #0x58] + mov r0, #0xf0 + asr r0, r2 + ldr r1, [sp, #0x58] + add r2, r7, #0x0 + and r0, r1 + orr r2, r0 + ldr r1, [sp, #0x14] + ldr r0, [sp, #0x64] + strb r2, [r0, r1] + ldr r0, [sp, #0x50] + cmp r3, r0 + blt _02018B26 +_02018B96: + ldr r0, [sp, #0x28] + add r0, r0, #0x4 + str r0, [sp, #0x28] + ldr r0, [sp, #0xc] + add r0, r0, #0x1 + str r0, [sp, #0xc] + ldr r0, [sp, #0x24] + ldr r1, [sp, #0xc] + add r0, r0, #0x4 + str r0, [sp, #0x24] + ldr r0, [sp, #0x4c] + cmp r1, r0 + blt _02018AEA + add sp, #0x68 + pop {r3-r7, pc} +_02018BB4: + ldr r2, [sp, #0xc] + ldr r1, [sp, #0x4c] + cmp r2, r1 + bge _02018C92 + cmp r2, r1 + bge _02018C92 + add r1, r2, #0x0 + lsl r1, r1, #0x2 + lsl r0, r0, #0x2 + str r1, [sp, #0x40] + str r0, [sp, #0x3c] +_02018BCA: + ldr r3, [sp, #0x8] + ldr r0, [sp, #0x50] + add r1, r3, #0x0 + ldr r4, [sp, #0x10] + cmp r1, r0 + bge _02018C78 + cmp r1, r0 + bge _02018C78 + add r0, r3, #0x0 + lsl r1, r0, #0x2 + add r0, r4, #0x0 + lsl r2, r0, #0x2 + ldr r0, =0x00003FE0 + ldr r5, [sp, #0x40] + ldr r6, [sp, #0x48] + and r5, r0 + mul r6, r5 + str r6, [sp, #0x34] + ldr r6, [sp, #0x40] + mov r5, #0x1c + and r6, r5 + str r6, [sp, #0x30] + ldr r6, [sp, #0x3c] + and r0, r6 + ldr r6, [sp, #0x44] + mul r6, r0 + ldr r0, [sp, #0x3c] + str r6, [sp, #0x2c] + and r0, r5 + str r0, [sp, #0x60] +_02018C06: + ldr r0, [sp, #0x4] + asr r6, r4, #0x1 + mov r5, #0x3 + and r5, r6 + ldr r0, [r0, #0x0] + asr r6, r3, #0x1 + add r5, r0, r5 + ldr r0, =0x00003FE0 + and r0, r2 + add r5, r5, r0 + ldr r0, [sp, #0x2c] + add r5, r5, r0 + ldr r0, [sp, #0x0] + ldr r7, [r0, #0x0] + mov r0, #0x3 + and r0, r6 + ldr r6, =0x00003FE0 + and r6, r1 + str r6, [sp, #0x5c] + add r6, r7, r0 + ldr r0, [sp, #0x5c] + add r6, r0, r6 + ldr r0, [sp, #0x34] + add r6, r0, r6 + ldr r0, [sp, #0x30] + ldrb r6, [r0, r6] + lsl r0, r3, #0x1f + lsr r0, r0, #0x1d + asr r6, r0 + mov r0, #0xf + and r0, r6 + ldr r6, [sp, #0x38] + cmp r0, r6 + beq _02018C6A + lsl r6, r4, #0x1f + lsr r7, r6, #0x1d + lsl r0, r7 + mov lr, r0 + ldr r0, [sp, #0x60] + ldrb r0, [r5, r0] + mov r12, r0 + mov r0, #0xf0 + add r6, r0, #0x0 + asr r6, r7 + mov r0, r12 + and r0, r6 + mov r6, lr + orr r6, r0 + ldr r0, [sp, #0x60] + strb r6, [r5, r0] +_02018C6A: + ldr r0, [sp, #0x50] + add r3, r3, #0x1 + add r1, r1, #0x4 + add r2, r2, #0x4 + add r4, r4, #0x1 + cmp r3, r0 + blt _02018C06 +_02018C78: + ldr r0, [sp, #0x40] + add r0, r0, #0x4 + str r0, [sp, #0x40] + ldr r0, [sp, #0xc] + add r0, r0, #0x1 + str r0, [sp, #0xc] + ldr r0, [sp, #0x3c] + ldr r1, [sp, #0xc] + add r0, r0, #0x4 + str r0, [sp, #0x3c] + ldr r0, [sp, #0x4c] + cmp r1, r0 + blt _02018BCA +_02018C92: + add sp, #0x68 + pop {r3-r7, pc} + // clang-format on +} +#endif + +#ifdef NONMATCHING +THUMB_FUNC void BlitBitmapRect8Bit(struct UnkStruct_02016B94_3 *param0, + struct UnkStruct_02016B94_3 *param1, + u16 param2, + u16 param3, + u16 param4, + u16 param5, + u16 param6, + u16 param7, + u16 param8) +{ + // horrible for loops like the one above +} +#else +THUMB_FUNC asm void BlitBitmapRect8Bit(struct UnkStruct_02016B94_3 *param0, + struct UnkStruct_02016B94_3 *param1, + u16 param2, + u16 param3, + u16 param4, + u16 param5, + u16 param6, + u16 param7, + u16 param8) +{ + // clang-format off + push {r3-r7, lr} + sub sp, #0x50 + str r2, [sp, #0x8] + str r3, [sp, #0xc] + add r2, sp, #0x58 + str r0, [sp, #0x0] + ldrh r0, [r2, #0x10] + str r1, [sp, #0x4] + ldrh r2, [r2, #0x18] + str r0, [sp, #0x10] + add r0, r1, #0x0 + ldrh r1, [r0, #0x4] + ldr r0, [sp, #0x10] + sub r3, r1, r0 + cmp r3, r2 + bge _02018CC6 + ldr r0, [sp, #0x8] + add r0, r0, r3 + b _02018CCA +_02018CC6: + ldr r0, [sp, #0x8] + add r0, r2, r0 +_02018CCA: + ldr r2, [sp, #0x4] + add r3, sp, #0x58 + mov r12, r0 + ldrh r0, [r3, #0x14] + ldrh r2, [r2, #0x6] + ldrh r3, [r3, #0x1c] + sub r4, r2, r0 + cmp r4, r3 + bge _02018CE2 + ldr r2, [sp, #0xc] + add r2, r2, r4 + b _02018CE6 +_02018CE2: + ldr r2, [sp, #0xc] + add r2, r3, r2 +_02018CE6: + mov lr, r2 + ldr r2, [sp, #0x0] + mov r3, #0x7 + ldrh r4, [r2, #0x4] + add r2, r4, #0x0 + and r2, r3 + add r2, r4, r2 + asr r2, r2, #0x3 + str r2, [sp, #0x4c] + add r2, r1, #0x0 + and r2, r3 + add r1, r1, r2 + asr r1, r1, #0x3 + str r1, [sp, #0x48] + add r1, sp, #0x58 + ldrh r1, [r1, #0x20] + ldr r2, =0x0000FFFF + str r1, [sp, #0x3c] + cmp r1, r2 + bne _02018DC6 + ldr r2, [sp, #0xc] + mov r1, lr + cmp r2, r1 + bge _02018D1C + mov r1, lr + cmp r2, r1 + blt _02018D1E +_02018D1C: + b _02018E7C +_02018D1E: + add r1, r2, #0x0 + lsl r1, r1, #0x3 + lsl r0, r0, #0x3 + str r1, [sp, #0x28] + str r0, [sp, #0x24] +_02018D28: + ldr r1, [sp, #0x8] + mov r0, r12 + add r2, r1, #0x0 + ldr r7, [sp, #0x10] + cmp r2, r0 + bge _02018DA8 + mov r0, r12 + cmp r2, r0 + bge _02018DA8 + add r0, r1, #0x0 + lsl r2, r0, #0x3 + add r0, r7, #0x0 + lsl r3, r0, #0x3 + ldr r6, =0x00007FC0 + ldr r0, [sp, #0x28] + ldr r4, [sp, #0x4c] + and r0, r6 + mul r4, r0 + str r4, [sp, #0x20] + ldr r0, [sp, #0x28] + mov r5, #0x38 + and r0, r5 + str r0, [sp, #0x1c] + ldr r0, [sp, #0x24] + ldr r4, [sp, #0x48] + and r0, r6 + mul r4, r0 + ldr r0, [sp, #0x24] + str r4, [sp, #0x18] + and r0, r5 + str r0, [sp, #0x14] +_02018D66: + ldr r0, [sp, #0x0] + add r5, r1, #0x0 + mov r4, #0x7 + and r5, r4 + ldr r0, [r0, #0x0] + ldr r4, =0x00007FC0 + add r0, r0, r5 + and r4, r2 + add r4, r4, r0 + ldr r0, [sp, #0x20] + add r5, r7, #0x0 + add r4, r0, r4 + ldr r0, [sp, #0x1c] + add r1, r1, #0x1 + ldrb r6, [r0, r4] + ldr r0, [sp, #0x4] + mov r4, #0x7 + and r5, r4 + ldr r0, [r0, #0x0] + ldr r4, =0x00007FC0 + add r0, r0, r5 + and r4, r3 + add r4, r4, r0 + ldr r0, [sp, #0x18] + add r2, #0x8 + add r4, r0, r4 + ldr r0, [sp, #0x14] + add r3, #0x8 + strb r6, [r0, r4] + mov r0, r12 + add r7, r7, #0x1 + cmp r1, r0 + blt _02018D66 +_02018DA8: + ldr r0, [sp, #0x28] + add r0, #0x8 + str r0, [sp, #0x28] + ldr r0, [sp, #0xc] + add r0, r0, #0x1 + str r0, [sp, #0xc] + ldr r0, [sp, #0x24] + ldr r1, [sp, #0xc] + add r0, #0x8 + str r0, [sp, #0x24] + mov r0, lr + cmp r1, r0 + blt _02018D28 + add sp, #0x50 + pop {r3-r7, pc} +_02018DC6: + ldr r2, [sp, #0xc] + mov r1, lr + cmp r2, r1 + bge _02018E7C + mov r1, lr + cmp r2, r1 + bge _02018E7C + add r1, r2, #0x0 + lsl r1, r1, #0x3 + lsl r0, r0, #0x3 + str r1, [sp, #0x44] + str r0, [sp, #0x40] +_02018DDE: + ldr r2, [sp, #0x8] + mov r0, r12 + add r1, r2, #0x0 + ldr r3, [sp, #0x10] + cmp r1, r0 + bge _02018E62 + mov r0, r12 + cmp r1, r0 + bge _02018E62 + add r0, r2, #0x0 + lsl r6, r0, #0x3 + add r0, r3, #0x0 + lsl r1, r0, #0x3 + ldr r7, =0x00007FC0 + ldr r0, [sp, #0x44] + ldr r4, [sp, #0x4c] + and r0, r7 + mul r4, r0 + str r4, [sp, #0x38] + ldr r0, [sp, #0x44] + mov r5, #0x38 + and r0, r5 + str r0, [sp, #0x34] + ldr r0, [sp, #0x40] + ldr r4, [sp, #0x48] + and r0, r7 + mul r4, r0 + ldr r0, [sp, #0x40] + str r4, [sp, #0x30] + and r0, r5 + str r0, [sp, #0x2c] +_02018E1C: + ldr r0, [sp, #0x4] + mov r4, #0x7 + ldr r0, [r0, #0x0] + and r4, r3 + add r0, r0, r4 + ldr r4, =0x00007FC0 + add r5, r2, #0x0 + and r4, r1 + add r4, r0, r4 + ldr r0, [sp, #0x30] + add r7, r4, r0 + ldr r0, [sp, #0x0] + mov r4, #0x7 + and r5, r4 + ldr r0, [r0, #0x0] + ldr r4, =0x00007FC0 + add r0, r0, r5 + and r4, r6 + add r4, r4, r0 + ldr r0, [sp, #0x38] + add r4, r0, r4 + ldr r0, [sp, #0x34] + ldrb r0, [r0, r4] + ldr r4, [sp, #0x3c] + cmp r0, r4 + beq _02018E54 + ldr r4, [sp, #0x2c] + strb r0, [r7, r4] +_02018E54: + add r2, r2, #0x1 + mov r0, r12 + add r6, #0x8 + add r1, #0x8 + add r3, r3, #0x1 + cmp r2, r0 + blt _02018E1C +_02018E62: + ldr r0, [sp, #0x44] + add r0, #0x8 + str r0, [sp, #0x44] + ldr r0, [sp, #0xc] + add r0, r0, #0x1 + str r0, [sp, #0xc] + ldr r0, [sp, #0x40] + ldr r1, [sp, #0xc] + add r0, #0x8 + str r0, [sp, #0x40] + mov r0, lr + cmp r1, r0 + blt _02018DDE +_02018E7C: + add sp, #0x50 + pop {r3-r7, pc} + // clang-format on +} +#endif + +THUMB_FUNC void FUN_02018E88( + struct UnkStruct_02016B94_3 *param0, u16 param1, u16 param2, u16 param3, u16 param4, u8 param5) +{ + + int r6 = param1 + param3; + if (r6 > param0->unk04) + { + r6 = param0->unk04; + } + + int r12 = param2 + param4; + if (r12 > param0->unk06) + { + r12 = param0->unk06; + } + + int lr = (((param0->unk04) + (param0->unk04 & 7)) >> 3); + + for (int i = param2; i < r12; i++) + { + + for (int j = param1; j < r6; j++) + { + + u8 *unk = (u8 *)((u8 *)param0->unk00 + ((j >> 1) & 3) + ((j << 2) & 0x3fe0) + + (((i << 2) & 0x3fe0) * lr) + ((i << 2) & 0x1c)); + + if ((j & 1) != 0) + { + *unk &= 0xf; + *unk |= (param5 << 4); + } + else + { + *unk &= 0xf0; + *unk |= param5; + } + } + } +} + +THUMB_FUNC void FUN_02018F4C( + struct UnkStruct_02016B94_3 *param0, u16 param1, u16 param2, u16 param3, u16 param4, u8 param5) +{ + + int r6 = param1 + param3; + if (r6 > param0->unk04) + { + r6 = param0->unk04; + } + + int r12 = param2 + param4; + if (r12 > param0->unk06) + { + r12 = param0->unk06; + } + + int lr = (((param0->unk04) + (param0->unk04 & 7)) >> 3); + + for (int i = param2; i < r12; i++) + { + + for (int j = param1; j < r6; j++) + { + + u8 *unk = (u8 *)((u8 *)param0->unk00 + (j & 7) + ((j << 3) & 0x7fc0) + + (((i << 3) & 0x7fc0) * lr) + ((i << 3) & 0x38)); + + *unk = param5; + } + } +} + +THUMB_FUNC void *AllocWindows(u32 heap_id, s32 size) +{ + struct Window *ptr = AllocFromHeap(heap_id, (u32)(size << 4)); + + for (u16 i = 0; i < size; i++) + { + InitWindow(&ptr[i]); + } + + return ptr; +} + +THUMB_FUNC void InitWindow(struct Window *param0) +{ + param0->unk00 = 0; + param0->unk04 = 0xff; + param0->unk05 = 0; + param0->unk06 = 0; + param0->width = 0; + param0->height = 0; + param0->unk09 = 0; + + param0->unk0a_0 = 0; + param0->unk0c = 0; + + param0->unk0b_15 = 0; +} + +THUMB_FUNC BOOL FUN_02019048(struct Window *param0) +{ + if (param0->unk00 == 0 || param0->unk04 == 0xff || param0->unk0c == 0) + { + return FALSE; + } + + return TRUE; +} + +enum UnkEnum1 +{ + UnkEnum1_0 = 0, + UnkEnum1_1 = 1 +}; + +THUMB_FUNC void FUN_02019064(struct UnkStruct_02016B94_2 *param0, + struct Window *param1, + u8 param2, + u8 param3, + u8 param4, + u8 param5, + u8 param6, + u8 param7, + u16 param8) +{ + if (param0->unk08[param2].unk08 == NULL) + { + return; + } + + void *ptr = AllocFromHeap(param0->unk00, (u32)(param5 * param6 * param0->unk08[param2].unk1f)); + + if (ptr == NULL) + { + return; + } + param1->unk00 = param0; + param1->unk04 = param2; + param1->unk05 = param3; + param1->unk06 = param4; + param1->width = param5; + param1->height = param6; + param1->unk09 = param7; + + param1->unk0a_0 = param8; + param1->unk0c = ptr; + + enum UnkEnum1 r2; + if (param0->unk08[param2].unk1e == 0) + { + r2 = UnkEnum1_0; + } + else + { + r2 = UnkEnum1_1; + } + + param1->unk0b_15 = r2; +} + +THUMB_FUNC void FUN_020190EC(struct UnkStruct_02016B94_2 *param0, + struct Window *param1, + u8 param2, + u8 param3, + u16 param4, + u8 param5) +{ + u32 size = (u32)(param2 * param3 * 32); + + void *ptr = AllocFromHeap(param0->unk00, size); + + param5 |= (param5 * 16); + memset(ptr, param5, size); + + if (ptr != NULL) + { + param1->unk00 = param0; + param1->width = param2; + param1->height = param3; + param1->unk0a_0 = param4; + param1->unk0c = ptr; + param1->unk0b_15 = 0; + } +} + +THUMB_FUNC void FUN_02019150( + struct UnkStruct_02016B94_2 *param0, struct Window *param1, struct UnkStruct_02016B94_4 *param2) +{ + + FUN_02019064(param0, + param1, + param2->unk0, + param2->unk1, + param2->unk2, + param2->unk3, + param2->unk4, + param2->unk5, + param2->unk6); +} + +THUMB_FUNC void FUN_02019178(struct Window *param0) +{ + FreeToHeap(param0->unk0c); + + param0->unk00 = 0; + param0->unk04 = 0xff; + param0->unk05 = 0; + param0->unk06 = 0; + param0->width = 0; + param0->height = 0; + param0->unk09 = 0; + param0->unk0a_0 = 0; + param0->unk0c = 0; +} + +THUMB_FUNC void FUN_020191A4(struct Window *param0, int param1) +{ + for (u16 i = 0; i < param1; i++) + { + if (param0[i].unk0c != NULL) + { + FreeToHeap(param0[i].unk0c); + } + } + + FreeToHeap(param0); +} + +THUMB_FUNC void CopyWindowToVram(struct Window *param0) +{ + + GF_ASSERT(param0); + GF_ASSERT(param0->unk00); + GF_ASSERT(param0->unk04 < 8); + GF_ASSERT(param0->unk00->unk08[param0->unk04].unk1c < 3); + + UNK_020EDB68[param0->unk00->unk08[param0->unk04].unk1c](param0); +} + +THUMB_FUNC void FUN_02019220(struct Window *param0) +{ + + GF_ASSERT(param0); + GF_ASSERT(param0->unk00); + GF_ASSERT(param0->unk04 < 8); + GF_ASSERT(param0->unk00->unk08[param0->unk04].unk1c < 3); + + UNK_020EDB5C[param0->unk00->unk08[param0->unk04].unk1c](param0); +} + +THUMB_FUNC void FUN_02019270(struct Window *param0) +{ + UNK_020EDB38[param0->unk00->unk08[param0->unk04].unk1c](param0); +} + +THUMB_FUNC void FUN_0201928C(struct Window *param0, u8 param1, u8 param2) +{ + u8 unk07 = param0->width; + u8 unk08 = param0->height; + + param0->width = param1; + param0->height = param2; + UNK_020EDB38[param0->unk00->unk08[param0->unk04].unk1c](param0); + + param0->width = unk07; + param0->height = unk08; +} + +THUMB_FUNC void FUN_020192B8(struct Window *param0) +{ + UNK_020EDB74[param0->unk00->unk08[param0->unk04].unk1c](param0); +} + +THUMB_FUNC void FUN_020192D4(struct Window *param0) +{ + u32 i, j; + u32 r3; + u32 iCount, jCount; + u16 *st4 = param0->unk00->unk08[param0->unk04].unk08; + + if (st4 == NULL) + { + return; + } + + r3 = param0->unk0a_0; + jCount = (u32)(param0->unk05 + param0->width); + iCount = (u32)(param0->unk06 + param0->height); + + for (i = param0->unk06; i < iCount; i++) + { + for (j = param0->unk05; j < jCount; j++) + { + st4[((i & 0x20) * 32) + ((j & 0x20) * 32) + ((i & 0x1f) << 5) + (j & 0x1f)] = + (u16)(r3 | (param0->unk09 << 12)); + + r3++; + } + } +} + +THUMB_FUNC void FUN_02019358(struct Window *param0) +{ + int j, i; + u8 *r4; + + int r5; + int r6; + + if (param0->unk00->unk08[param0->unk04].unk08 == NULL) + { + return; + } + + r6 = UNK_020EDB30[param0->unk00->unk08[param0->unk04].unk1d]; + + r4 = param0->unk00->unk08[param0->unk04].unk08 + param0->unk06 * r6 + param0->unk05; + r5 = param0->unk0a_0; + + for (i = 0; i < param0->height; i++) + { + for (j = 0; j < param0->width; j++) + { + r4[j] = (u8)r5; + r5++; + } + r4 += r6; + } +} + +THUMB_FUNC void FUN_020193B4(struct Window *param0) +{ + + u32 i, j; + + u32 iCount, jCount; + u32 st8; + + u16 *st4; + + if (param0->unk00->unk08[param0->unk04].unk08 == NULL) + { + return; + } + st4 = param0->unk00->unk08[param0->unk04].unk08; + + st8 = UNK_020EDB30[param0->unk00->unk08[param0->unk04].unk1d]; + jCount = (u32)(param0->unk05 + param0->width); + iCount = (u32)(param0->unk06 + param0->height); + + for (i = param0->unk06; i < iCount; i++) + { + for (j = param0->unk05; j < jCount; j++) + { + st4[((i & 0x20) * 32) + ((j & 0x20) * 32) + ((i & 0x1f) * st8) + (j & 0x1f)] = 0; + } + } +} + +THUMB_FUNC void FUN_02019444(struct Window *param0) +{ + + int j, i; + u8 *r5; + + int r6; + + if (param0->unk00->unk08[param0->unk04].unk08 == NULL) + { + return; + } + + r6 = UNK_020EDB30[param0->unk00->unk08[param0->unk04].unk1d]; + r5 = param0->unk00->unk08[param0->unk04].unk08 + param0->unk06 * r6 + param0->unk05; + + for (i = 0; i < param0->height; i++) + { + for (j = 0; j < param0->width; j++) + { + r5[j] = 0; + } + r5 += r6; + } +} + +THUMB_FUNC void FUN_0201949C(struct Window *window) +{ + FUN_020192D4(window); + FUN_02019548(window); + FUN_02017CE8(window->unk00, + window->unk04, + window->unk00->unk08[window->unk04].unk08, + window->unk00->unk08[window->unk04].unk0c, + window->unk00->unk08[window->unk04].unk10); +} + +THUMB_FUNC void FUN_020194C8(struct Window *window) +{ + FUN_020192D4(window); + FUN_0201AC68(window->unk00, window->unk04); + FUN_02019548(window); +} + +THUMB_FUNC void FUN_020194E0(struct Window *window) +{ + FUN_02019358(window); + FUN_02017CE8(window->unk00, + window->unk04, + window->unk00->unk08[window->unk04].unk08, + window->unk00->unk08[window->unk04].unk0c, + window->unk00->unk08[window->unk04].unk10); + + FUN_02017E14(window->unk00, + window->unk04, + window->unk0c, + (u32)(window->width * window->height * 64), + window->unk0a_0); +} + +THUMB_FUNC void FUN_0201951C(struct Window *window) +{ + FUN_02019358(window); + FUN_0201AC68(window->unk00, window->unk04); + FUN_02017E14(window->unk00, + window->unk04, + window->unk0c, + (u32)(window->width * window->height * 64), + window->unk0a_0); +} + +THUMB_FUNC void FUN_02019548(struct Window *window) +{ + FUN_02017E14(window->unk00, + window->unk04, + window->unk0c, + (u32)(window->width * window->height * window->unk00->unk08[window->unk04].unk1f), + window->unk0a_0); +} + +THUMB_FUNC void FUN_02019570(struct Window *window) +{ + UNK_020EDB50[window->unk00->unk08[window->unk04].unk1c](window); +} + +THUMB_FUNC void FUN_0201958C(struct Window *window) +{ + UNK_020EDB44[window->unk00->unk08[window->unk04].unk1c](window); +} + +THUMB_FUNC void FUN_020195A8(struct Window *window) +{ + FUN_020193B4(window); + FUN_02017CE8(window->unk00, + window->unk04, + window->unk00->unk08[window->unk04].unk08, + window->unk00->unk08[window->unk04].unk0c, + window->unk00->unk08[window->unk04].unk10); +} + +THUMB_FUNC void FUN_020195D0(struct Window *window) +{ + FUN_020193B4(window); + FUN_0201AC68(window->unk00, window->unk04); +} + +THUMB_FUNC void FUN_020195E4(struct Window *window) +{ + FUN_02019444(window); + FUN_02017CE8(window->unk00, + window->unk04, + window->unk00->unk08[window->unk04].unk08, + window->unk00->unk08[window->unk04].unk0c, + window->unk00->unk08[window->unk04].unk10); +} + +THUMB_FUNC void FUN_0201960C(struct Window *window) +{ + FUN_02019444(window); + FUN_0201AC68(window->unk00, window->unk04); +} + +THUMB_FUNC void FillWindowPixelBuffer(struct Window *window, u8 param1) +{ + if (window->unk00->unk08[window->unk04].unk1f == 0x20) + { + param1 |= param1 << 4; + } + + MI_CpuFillFast( + window->unk0c, + (u32)((param1 << 0x18) | (param1 << 0x10) | (param1 << 0x8) | param1), + (u32)(window->unk00->unk08[window->unk04].unk1f * window->width * window->height)); +} + +THUMB_FUNC void BlitBitmapRectToWindow(struct Window *window, + const void *src, + u16 srcX, + u16 srcY, + u16 srcWidth, + u16 srcHeight, + u16 dstX, + u16 dstY, + u16 dstWidth, + u16 dstHeight) +{ + BlitBitmapRect( + window, src, srcX, srcY, srcWidth, srcHeight, dstX, dstY, dstWidth, dstHeight, 0); +} + +THUMB_FUNC void BlitBitmapRect(struct Window *window, + void *param1, + u16 param2, + u16 param3, + u16 param4, + u16 param5, + u16 param6, + u16 param7, + u16 param8, + u16 param9, + u16 param10) +{ + struct UnkStruct_02016B94_3 st1c = { param1, param4, param5 }; + struct UnkStruct_02016B94_3 st14 = { + window->unk0c, (u16)(window->width << 3), (u16)(window->height << 3) + }; + + if (window->unk00->unk08[window->unk04].unk1e == 0) + { + BlitBitmapRect4Bit(&st1c, &st14, param2, param3, param6, param7, param8, param9, param10); + } + else + { + BlitBitmapRect8Bit(&st1c, &st14, param2, param3, param6, param7, param8, param9, param10); + } +} + +THUMB_FUNC void FillWindowPixelRect( + struct Window *window, u8 fillValue, u16 x, u16 y, u16 width, u16 height) +{ + struct UnkStruct_02016B94_3 st8 = { + window->unk0c, (u16)(window->width << 3), (u16)(window->height << 3) + }; + + if (window->unk00->unk08[window->unk04].unk1e == 0) + { + FUN_02018E88(&st8, x, y, width, height, fillValue); + } + else + { + FUN_02018F4C(&st8, x, y, width, height, fillValue); + } +} + +#ifdef NONMATCHING +THUMB_FUNC void FUN_0201974C( + struct Window *window, u32 *param1, u32 param2, u32 param3, u16 param4, u16 param5, u32 param6) +{ + u32 str330 = param6; + u32 *st0 = param1; + u16 st5c = param4; + + void *st278 = window->unk0c; + u16 st58 = window->width << 3; + + int st8 = st58 - st5c; + + if (st8 >= param2) + { + st8 = param2; + } + + int st4 = (u16)(window->height << 3) - param5; + u16 st48 = param5; + + if (st4 >= param3) + { + st4 = param3; + } + + u8 r4 = 0; + if (st8 > 8) + { + r4 |= 1; + } + + if (st4 > 8) + { + r4 |= 2; + } + + if (window->unk0b_15 == 0) + { + switch (r4) + { + case 0: + u8 st70 = param6; + for (u32 st274 = 0; st274 < st4; st274++) + { + u32 st6c = (st58 + (st58 & 7)) >> 3; + + u32 st26c = st0[0]; + u8 st270 = (u8)((st70 >> st274) & 1); + u32 r2 = st5c; + + for (u32 r1 = 0; r1 < st8; r1++) + { + u32 r3 = st5c << 2; + u32 st68 = ((st48 << 2) & 0x3fe0) * st6c; + u32 r7 = (st48 << 2) & 0x1c; + u32 st64 = (((st48 + 1) << 2) & 0x3fe0) * st6c; + u32 st60 = ((st48 + 1) << 2) & 0x1c; + u32 r4 = r1; + + void *st27c = st278 + ((r2 >> 1) & 3) + (r3 & 0x3fe0); + u8 *r0 = st27c + st68; + + u8 r5 = (u8)((st26c >> r4) & 0xf); + if (r5 != 0) + { + u32 st280 = (r5 << ((r2 & 1) << 2)); + u32 st284 = r0[r7]; + + u8 r5 = ((0xf0 >> ((r2 & 1) << 2)) & st284) | st280; + r0[r7] = r5; + + if (st270 != 0) + { + *(u8 *)(st27c + st64 + st60) = r5; + } + } + + r4 += 4; + r3 += 4; + r2 += 1; + } + + if (st270 != 0) + { + st48 += 2; + } + else + { + st48++; + } + + st0++; + } + + break; + + case 1: + u32 *st25c = st0; + u32 st264 = st48; + u8 st54 = param6; + u8 st84 = param6; + + for (u32 st268 = 0; st268 < st4; st268++) + { + u32 st80 = (st58 + (st58 & 7)) >> 3; + + u32 st258 = *st25c; + u32 r2 = st5c; + u8 st260 = (st84 >> st268) & 1; + u32 r3 = st5c << 2; + u32 st7c = ((st264 << 2) & 0x3fe0) * st80; + u32 r7 = (st264 << 2) & 0x1c; + u32 st78 = (((st264 + 1) << 2) & 0x3fe0) * st80; + u32 st74 = ((st264 + 1) << 2) & 0x1c; + u32 r4 = 0; + + for (u32 r1 = 0; r1 < 8; r1++) + { + void *st288 = st278 + ((r2 >> 1) & 3) + (r3 & 0x3fe0); + u8 *r0 = st288 + st7c; + u8 r5 = (st258 >> r4) & 0xf; + if (r5 != 0) + { + u32 st28c = r5 << ((r2 & 1) << 2); + u32 st290 = r0[r7]; + u8 r5 = ((0xf0 >> ((r2 & 1) << 2)) & st290) | st28c; + r0[r7] = r5; + + if (st260 != 0) + { + *(u8 *)(st288 + st78 + st74) = r5; + } + } + + r4 += 4; + r3 += 4; + r2++; + } + + if (st260 != 0) + { + st264 += 2; + } + else + { + st264++; + } + + st25c++; + } + + st0 += 0x20; + u8 st98 = st54; + + for (u32 st254 = 0; st254 < st4; st254++) + { + st5c += 8; + u32 st94 = (st58 + (st58 & 7)) >> 3; + + //_02019A00 + } + + break; + + case 2: + // TODO + break; + case 3: + // TODO + break; + } + } + else + { + // TODO: FUN_0201A12C + } +} +#else +asm void FUN_0201974C( + struct Window *window, u32 *param1, u32 param2, u32 param3, u16 param4, u16 param5, u32 param6) +{ + // clang-format off + push {r4-r7, lr} + sub sp, #0x1fc + sub sp, #0x118 + add r5, r0, #0x0 + ldr r0, [sp, #0x330] + str r1, [sp, #0x0] + str r0, [sp, #0x330] + add r1, sp, #0x318 + ldrh r1, [r1, #0x10] + ldr r0, [r5, #0xc] + str r1, [sp, #0x5c] + ldrb r1, [r5, #0x7] + str r0, [sp, #0x278] + ldrb r0, [r5, #0x8] + lsl r1, r1, #0x13 + lsr r4, r1, #0x10 + ldr r1, [sp, #0x5c] + lsl r0, r0, #0x13 + sub r1, r4, r1 + lsr r0, r0, #0x10 + str r4, [sp, #0x58] + str r1, [sp, #0x8] + cmp r1, r2 + blt _0201977E + str r2, [sp, #0x8] +_0201977E: + add r1, sp, #0x318 + ldrh r1, [r1, #0x14] + sub r0, r0, r1 + str r1, [sp, #0x48] + str r0, [sp, #0x4] + cmp r0, r3 + blt _0201978E + str r3, [sp, #0x4] +_0201978E: + ldr r0, [sp, #0x8] + mov r4, #0x0 + cmp r0, #0x8 + ble _0201979E + mov r0, #0x1 + orr r0, r4 + lsl r0, r0, #0x18 + lsr r4, r0, #0x18 +_0201979E: + ldr r0, [sp, #0x4] + cmp r0, #0x8 + ble _020197AC + mov r0, #0x2 + orr r0, r4 + lsl r0, r0, #0x18 + lsr r4, r0, #0x18 +_020197AC: + ldrh r0, [r5, #0xa] + lsl r0, r0, #0x10 + lsr r0, r0, #0x1f + beq _020197B8 + bl FUN_0201A12C +_020197B8: + cmp r4, #0x3 + bls _020197C0 + bl FUN_0201A8BC +_020197C0: + add r0, r4, r4 + add r0, pc + ldrh r0, [r0, #0x6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_020197CC: + lsl r6, r0, #0 + lsl r0, r1, #4 + lsl r0, r3, #12 + lsl r0, r7, #20 + // jump table (using 16-bit offset) + // .short _020197D4 - _020197CC - 2; case 0 + // .short _020198D6 - _020197CC - 2; case 1 + // .short _02019AE6 - _020197CC - 2; case 2 + // .short _02019D06 - _020197CC - 2; case 3 +_020197D4: + ldr r0, [sp, #0x330] + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x70] + mov r0, #0x0 + str r0, [sp, #0x274] + ldr r0, [sp, #0x4] + cmp r0, #0x0 + bgt _020197EA + bl FUN_0201A8BC +_020197EA: + ldr r0, [sp, #0x58] + mov r1, #0x7 + and r1, r0 + add r0, r0, r1 + asr r0, r0, #0x3 + str r0, [sp, #0x6c] +_020197F6: + ldr r0, [sp, #0x0] + ldr r1, [sp, #0x70] + ldr r0, [r0, #0x0] + ldr r2, [sp, #0x5c] + str r0, [sp, #0x26c] + ldr r0, [sp, #0x274] + asr r1, r0 + mov r0, #0x1 + and r0, r1 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x270] + ldr r0, [sp, #0x8] + mov r1, #0x0 + cmp r0, #0x0 + ble _020198AA + ble _020198AA + add r0, r2, #0x0 + lsl r3, r0, #0x2 + ldr r0, [sp, #0x48] + ldr r6, [sp, #0x6c] + lsl r5, r0, #0x2 + ldr r0, =0x00003FE0 + add r7, r5, #0x0 + and r0, r5 + mul r6, r0 + mov r0, #0x1c + and r7, r0 + ldr r0, [sp, #0x48] + str r6, [sp, #0x68] + add r0, r0, #0x1 + lsl r6, r0, #0x2 + ldr r0, =0x00003FE0 + ldr r5, [sp, #0x6c] + and r0, r6 + mul r5, r0 + mov r0, #0x1c + and r0, r6 + add r4, r1, #0x0 + str r5, [sp, #0x64] + str r0, [sp, #0x60] +_02019848: + asr r5, r2, #0x1 + mov r0, #0x3 + and r5, r0 + ldr r0, [sp, #0x278] + add r0, r0, r5 + ldr r5, =0x00003FE0 + and r5, r3 + add r5, r0, r5 + ldr r0, [sp, #0x68] + str r5, [sp, #0x27c] + add r0, r5, r0 + ldr r5, [sp, #0x26c] + add r6, r5, #0x0 + lsr r6, r4 + mov r5, #0xf + and r5, r6 + lsl r5, r5, #0x18 + lsr r5, r5, #0x18 + beq _0201989C + lsl r6, r2, #0x1f + lsr r6, r6, #0x1d + lsl r5, r6 + str r5, [sp, #0x280] + ldrb r5, [r0, r7] + str r5, [sp, #0x284] + mov r5, #0xf0 + asr r5, r6 + ldr r6, [sp, #0x284] + and r6, r5 + ldr r5, [sp, #0x280] + orr r5, r6 + lsl r5, r5, #0x18 + lsr r5, r5, #0x18 + strb r5, [r0, r7] + ldr r0, [sp, #0x270] + cmp r0, #0x0 + beq _0201989C + ldr r6, [sp, #0x27c] + ldr r0, [sp, #0x64] + add r6, r6, r0 + ldr r0, [sp, #0x60] + strb r5, [r0, r6] +_0201989C: + ldr r0, [sp, #0x8] + add r1, r1, #0x1 + add r4, r4, #0x4 + add r3, r3, #0x4 + add r2, r2, #0x1 + cmp r1, r0 + blt _02019848 +_020198AA: + ldr r0, [sp, #0x270] + cmp r0, #0x0 + beq _020198B8 + ldr r0, [sp, #0x48] + add r0, r0, #0x2 + str r0, [sp, #0x48] + b _020198BE +_020198B8: + ldr r0, [sp, #0x48] + add r0, r0, #0x1 + str r0, [sp, #0x48] +_020198BE: + ldr r0, [sp, #0x0] + add r0, r0, #0x4 + str r0, [sp, #0x0] + ldr r0, [sp, #0x274] + add r1, r0, #0x1 + ldr r0, [sp, #0x4] + str r1, [sp, #0x274] + cmp r1, r0 + blt _020197F6 + add sp, #0x1fc + add sp, #0x118 + pop {r4-r7, pc} +_020198D6: + ldr r0, [sp, #0x0] + str r0, [sp, #0x25c] + ldr r0, [sp, #0x48] + str r0, [sp, #0x264] + ldr r0, [sp, #0x330] + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x54] + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x84] + mov r0, #0x0 + str r0, [sp, #0x268] + ldr r0, [sp, #0x4] + cmp r0, #0x0 + ble _020199D2 + ldr r0, [sp, #0x58] + mov r1, #0x7 + and r1, r0 + add r0, r0, r1 + asr r0, r0, #0x3 + str r0, [sp, #0x80] +_02019902: + ldr r0, [sp, #0x25c] + ldr r1, [sp, #0x84] + ldr r0, [r0, #0x0] + ldr r2, [sp, #0x5c] + str r0, [sp, #0x258] + ldr r0, [sp, #0x268] + ldr r6, [sp, #0x80] + asr r1, r0 + mov r0, #0x1 + and r0, r1 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x260] + add r0, r2, #0x0 + lsl r3, r0, #0x2 + ldr r0, [sp, #0x264] + mov r1, #0x0 + lsl r5, r0, #0x2 + ldr r0, =0x00003FE0 + add r7, r5, #0x0 + and r0, r5 + mul r6, r0 + mov r0, #0x1c + and r7, r0 + ldr r0, [sp, #0x264] + str r6, [sp, #0x7c] + add r0, r0, #0x1 + lsl r6, r0, #0x2 + ldr r0, =0x00003FE0 + ldr r5, [sp, #0x80] + and r0, r6 + mul r5, r0 + mov r0, #0x1c + and r0, r6 + add r4, r1, #0x0 + str r5, [sp, #0x78] + str r0, [sp, #0x74] +_0201994C: + asr r5, r2, #0x1 + mov r0, #0x3 + and r5, r0 + ldr r0, [sp, #0x278] + add r0, r0, r5 + ldr r5, =0x00003FE0 + and r5, r3 + add r5, r0, r5 + ldr r0, [sp, #0x7c] + str r5, [sp, #0x288] + add r0, r5, r0 + ldr r5, [sp, #0x258] + add r6, r5, #0x0 + lsr r6, r4 + mov r5, #0xf + and r5, r6 + lsl r5, r5, #0x18 + lsr r5, r5, #0x18 + beq _020199A0 + lsl r6, r2, #0x1f + lsr r6, r6, #0x1d + lsl r5, r6 + str r5, [sp, #0x28c] + ldrb r5, [r0, r7] + str r5, [sp, #0x290] + mov r5, #0xf0 + asr r5, r6 + ldr r6, [sp, #0x290] + and r6, r5 + ldr r5, [sp, #0x28c] + orr r5, r6 + lsl r5, r5, #0x18 + lsr r5, r5, #0x18 + strb r5, [r0, r7] + ldr r0, [sp, #0x260] + cmp r0, #0x0 + beq _020199A0 + ldr r6, [sp, #0x288] + ldr r0, [sp, #0x78] + add r6, r6, r0 + ldr r0, [sp, #0x74] + strb r5, [r0, r6] +_020199A0: + add r1, r1, #0x1 + add r4, r4, #0x4 + add r3, r3, #0x4 + add r2, r2, #0x1 + cmp r1, #0x8 + blt _0201994C + ldr r0, [sp, #0x260] + cmp r0, #0x0 + beq _020199BA + ldr r0, [sp, #0x264] + add r0, r0, #0x2 + str r0, [sp, #0x264] + b _020199C0 +_020199BA: + ldr r0, [sp, #0x264] + add r0, r0, #0x1 + str r0, [sp, #0x264] +_020199C0: + ldr r0, [sp, #0x25c] + add r0, r0, #0x4 + str r0, [sp, #0x25c] + ldr r0, [sp, #0x268] + add r1, r0, #0x1 + ldr r0, [sp, #0x4] + str r1, [sp, #0x268] + cmp r1, r0 + blt _02019902 +_020199D2: + ldr r0, [sp, #0x0] + add r0, #0x20 + str r0, [sp, #0x0] + ldr r0, [sp, #0x54] + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x98] + mov r0, #0x0 + str r0, [sp, #0x254] + ldr r0, [sp, #0x4] + cmp r0, #0x0 + bgt _020199EE + bl FUN_0201A8BC +_020199EE: + ldr r0, [sp, #0x5c] + mov r1, #0x7 + add r0, #0x8 + str r0, [sp, #0x5c] + ldr r0, [sp, #0x58] + and r1, r0 + add r0, r0, r1 + asr r0, r0, #0x3 + str r0, [sp, #0x94] +_02019A00: + ldr r0, [sp, #0x0] + ldr r1, [sp, #0x98] + ldr r0, [r0, #0x0] + ldr r2, [sp, #0x5c] + str r0, [sp, #0x24c] + ldr r0, [sp, #0x254] + asr r1, r0 + mov r0, #0x1 + and r0, r1 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x250] + ldr r0, [sp, #0x8] + mov r1, #0x0 + str r0, [sp, #0x294] + sub r0, #0x8 + str r0, [sp, #0x294] + cmp r0, #0x0 + ble _02019ABA + ble _02019ABA + add r0, r2, #0x0 + lsl r3, r0, #0x2 + ldr r0, [sp, #0x48] + ldr r6, [sp, #0x94] + lsl r5, r0, #0x2 + ldr r0, =0x00003FE0 + add r7, r5, #0x0 + and r0, r5 + mul r6, r0 + mov r0, #0x1c + and r7, r0 + ldr r0, [sp, #0x48] + str r6, [sp, #0x90] + add r0, r0, #0x1 + lsl r6, r0, #0x2 + ldr r0, =0x00003FE0 + ldr r5, [sp, #0x94] + and r0, r6 + mul r5, r0 + mov r0, #0x1c + and r0, r6 + add r4, r1, #0x0 + str r5, [sp, #0x8c] + str r0, [sp, #0x88] +_02019A58: + asr r5, r2, #0x1 + mov r0, #0x3 + and r5, r0 + ldr r0, [sp, #0x278] + add r0, r0, r5 + ldr r5, =0x00003FE0 + and r5, r3 + add r5, r0, r5 + ldr r0, [sp, #0x90] + str r5, [sp, #0x298] + add r0, r5, r0 + ldr r5, [sp, #0x24c] + add r6, r5, #0x0 + lsr r6, r4 + mov r5, #0xf + and r5, r6 + lsl r5, r5, #0x18 + lsr r5, r5, #0x18 + beq _02019AAC + lsl r6, r2, #0x1f + lsr r6, r6, #0x1d + lsl r5, r6 + str r5, [sp, #0x29c] + ldrb r5, [r0, r7] + str r5, [sp, #0x2a0] + mov r5, #0xf0 + asr r5, r6 + ldr r6, [sp, #0x2a0] + and r6, r5 + ldr r5, [sp, #0x29c] + orr r5, r6 + lsl r5, r5, #0x18 + lsr r5, r5, #0x18 + strb r5, [r0, r7] + ldr r0, [sp, #0x250] + cmp r0, #0x0 + beq _02019AAC + ldr r6, [sp, #0x298] + ldr r0, [sp, #0x8c] + add r6, r6, r0 + ldr r0, [sp, #0x88] + strb r5, [r0, r6] +_02019AAC: + ldr r0, [sp, #0x294] + add r1, r1, #0x1 + add r4, r4, #0x4 + add r3, r3, #0x4 + add r2, r2, #0x1 + cmp r1, r0 + blt _02019A58 +_02019ABA: + ldr r0, [sp, #0x250] + cmp r0, #0x0 + beq _02019AC8 + ldr r0, [sp, #0x48] + add r0, r0, #0x2 + str r0, [sp, #0x48] + b _02019ACE +_02019AC8: + ldr r0, [sp, #0x48] + add r0, r0, #0x1 + str r0, [sp, #0x48] +_02019ACE: + ldr r0, [sp, #0x0] + add r0, r0, #0x4 + str r0, [sp, #0x0] + ldr r0, [sp, #0x254] + add r1, r0, #0x1 + ldr r0, [sp, #0x4] + str r1, [sp, #0x254] + cmp r1, r0 + blt _02019A00 + add sp, #0x1fc + add sp, #0x118 + pop {r4-r7, pc} +_02019AE6: + ldr r0, [sp, #0x0] + mov r1, #0x7 + str r0, [sp, #0x23c] + ldr r0, [sp, #0x48] + str r0, [sp, #0x244] + mov r0, #0x0 + str r0, [sp, #0x248] + ldr r0, [sp, #0x330] + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0xa8] + ldr r0, [sp, #0x58] + and r1, r0 + add r0, r0, r1 + asr r0, r0, #0x3 + str r0, [sp, #0x40] +_02019B06: + ldr r0, [sp, #0x23c] + ldr r1, [sp, #0xa8] + ldr r0, [r0, #0x0] + ldr r2, [sp, #0x5c] + str r0, [sp, #0x238] + ldr r0, [sp, #0x248] + asr r1, r0 + mov r0, #0x1 + and r0, r1 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x240] + ldr r0, [sp, #0x8] + mov r1, #0x0 + cmp r0, #0x0 + ble _02019BC2 + ble _02019BC2 + add r0, r2, #0x0 + lsl r3, r0, #0x2 + ldr r0, [sp, #0x244] + ldr r6, [sp, #0x40] + lsl r5, r0, #0x2 + ldr r0, =0x00003FE0 + add r7, r5, #0x0 + and r0, r5 + mul r6, r0 + mov r0, #0x1c + and r7, r0 + ldr r0, [sp, #0x244] + str r6, [sp, #0xa4] + add r0, r0, #0x1 + lsl r6, r0, #0x2 + ldr r0, =0x00003FE0 + ldr r5, [sp, #0x40] + and r0, r6 + mul r5, r0 + mov r0, #0x1c + and r0, r6 + add r4, r1, #0x0 + str r5, [sp, #0xa0] + str r0, [sp, #0x9c] +_02019B58: + asr r5, r2, #0x1 + mov r0, #0x3 + and r5, r0 + ldr r0, [sp, #0x278] + add r0, r0, r5 + ldr r5, =0x00003FE0 +// b _02019B6C +// nop +// _02019B68: .word 0x00003FE0 +// _02019B6C: + and r5, r3 + add r5, r0, r5 + ldr r0, [sp, #0xa4] + str r5, [sp, #0x2a4] + add r0, r5, r0 + ldr r5, [sp, #0x238] + add r6, r5, #0x0 + lsr r6, r4 + mov r5, #0xf + and r5, r6 + lsl r5, r5, #0x18 + lsr r5, r5, #0x18 + beq _02019BB4 + lsl r6, r2, #0x1f + lsr r6, r6, #0x1d + lsl r5, r6 + str r5, [sp, #0x2a8] + ldrb r5, [r0, r7] + str r5, [sp, #0x2ac] + mov r5, #0xf0 + asr r5, r6 + ldr r6, [sp, #0x2ac] + and r6, r5 + ldr r5, [sp, #0x2a8] + orr r5, r6 + lsl r5, r5, #0x18 + lsr r5, r5, #0x18 + strb r5, [r0, r7] + ldr r0, [sp, #0x240] + cmp r0, #0x0 + beq _02019BB4 + ldr r6, [sp, #0x2a4] + ldr r0, [sp, #0xa0] + add r6, r6, r0 + ldr r0, [sp, #0x9c] + strb r5, [r0, r6] +_02019BB4: + ldr r0, [sp, #0x8] + add r1, r1, #0x1 + add r4, r4, #0x4 + add r3, r3, #0x4 + add r2, r2, #0x1 + cmp r1, r0 + blt _02019B58 +_02019BC2: + ldr r0, [sp, #0x240] + cmp r0, #0x0 + beq _02019BD0 + ldr r0, [sp, #0x244] + add r0, r0, #0x2 + str r0, [sp, #0x244] + b _02019BD6 +_02019BD0: + ldr r0, [sp, #0x244] + add r0, r0, #0x1 + str r0, [sp, #0x244] +_02019BD6: + ldr r0, [sp, #0x23c] + add r0, r0, #0x4 + str r0, [sp, #0x23c] + ldr r0, [sp, #0x248] + add r0, r0, #0x1 + str r0, [sp, #0x248] + cmp r0, #0x8 + blt _02019B06 + ldr r0, [sp, #0x0] + mov r2, #0x0 + add r0, #0x40 + str r0, [sp, #0x0] + ldr r0, [sp, #0x48] + mov r1, #0x1 + add r0, #0x8 + str r0, [sp, #0x48] +_02019BF6: + ldr r0, [sp, #0x330] + asr r0, r2 + tst r0, r1 + beq _02019C04 + ldr r0, [sp, #0x48] + add r0, r0, #0x1 + str r0, [sp, #0x48] +_02019C04: + add r2, r2, #0x1 + cmp r2, #0x8 + blt _02019BF6 + ldr r0, [sp, #0x330] + asr r0, r0, #0x8 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0xb8] + mov r0, #0x0 + str r0, [sp, #0x20] + ldr r0, [sp, #0x4] + sub r0, #0x8 + cmp r0, #0x0 + bgt _02019C24 + bl FUN_0201A8BC +_02019C24: + ldr r0, [sp, #0x0] + ldr r1, [sp, #0xb8] + ldr r0, [r0, #0x0] + ldr r2, [sp, #0x5c] + str r0, [sp, #0x230] + ldr r0, [sp, #0x20] + asr r1, r0 + mov r0, #0x1 + and r0, r1 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x234] + ldr r0, [sp, #0x8] + mov r1, #0x0 + cmp r0, #0x0 + ble _02019CD8 + ble _02019CD8 + add r0, r2, #0x0 + lsl r3, r0, #0x2 + ldr r0, [sp, #0x48] + ldr r6, [sp, #0x40] + lsl r5, r0, #0x2 + ldr r0, =0x00003FE0 + add r7, r5, #0x0 + and r0, r5 + mul r6, r0 + mov r0, #0x1c + and r7, r0 + ldr r0, [sp, #0x48] + str r6, [sp, #0xb4] + add r0, r0, #0x1 + lsl r6, r0, #0x2 + ldr r0, =0x00003FE0 + ldr r5, [sp, #0x40] + and r0, r6 + mul r5, r0 + mov r0, #0x1c + and r0, r6 + add r4, r1, #0x0 + str r5, [sp, #0xb0] + str r0, [sp, #0xac] +_02019C76: + asr r5, r2, #0x1 + mov r0, #0x3 + and r5, r0 + ldr r0, [sp, #0x278] + add r0, r0, r5 + ldr r5, =0x00003FE0 + and r5, r3 + add r5, r0, r5 + ldr r0, [sp, #0xb4] + str r5, [sp, #0x2b0] + add r0, r5, r0 + ldr r5, [sp, #0x230] + add r6, r5, #0x0 + lsr r6, r4 + mov r5, #0xf + and r5, r6 + lsl r5, r5, #0x18 + lsr r5, r5, #0x18 + beq _02019CCA + lsl r6, r2, #0x1f + lsr r6, r6, #0x1d + lsl r5, r6 + str r5, [sp, #0x2b4] + ldrb r5, [r0, r7] + str r5, [sp, #0x2b8] + mov r5, #0xf0 + asr r5, r6 + ldr r6, [sp, #0x2b8] + and r6, r5 + ldr r5, [sp, #0x2b4] + orr r5, r6 + lsl r5, r5, #0x18 + lsr r5, r5, #0x18 + strb r5, [r0, r7] + ldr r0, [sp, #0x234] + cmp r0, #0x0 + beq _02019CCA + ldr r6, [sp, #0x2b0] + ldr r0, [sp, #0xb0] + add r6, r6, r0 + ldr r0, [sp, #0xac] + strb r5, [r0, r6] +_02019CCA: + ldr r0, [sp, #0x8] + add r1, r1, #0x1 + add r4, r4, #0x4 + add r3, r3, #0x4 + add r2, r2, #0x1 + cmp r1, r0 + blt _02019C76 +_02019CD8: + ldr r0, [sp, #0x234] + cmp r0, #0x0 + beq _02019CE6 + ldr r0, [sp, #0x48] + add r0, r0, #0x2 + str r0, [sp, #0x48] + b _02019CEC +_02019CE6: + ldr r0, [sp, #0x48] + add r0, r0, #0x1 + str r0, [sp, #0x48] +_02019CEC: + ldr r0, [sp, #0x0] + ldr r1, [sp, #0x4] + add r0, r0, #0x4 + str r0, [sp, #0x0] + ldr r0, [sp, #0x20] + sub r1, #0x8 + add r0, r0, #0x1 + str r0, [sp, #0x20] + cmp r0, r1 + blt _02019C24 + add sp, #0x1fc + add sp, #0x118 + pop {r4-r7, pc} +_02019D06: + ldr r0, [sp, #0x0] + str r0, [sp, #0x220] + ldr r0, [sp, #0x48] + str r0, [sp, #0x228] + ldr r0, [sp, #0x330] + lsl r0, r0, #0x18 + lsr r1, r0, #0x18 + mov r0, #0x0 + str r0, [sp, #0x22c] + lsl r0, r1, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x3c] + ldr r0, [sp, #0x58] + mov r1, #0x7 + and r1, r0 + add r0, r0, r1 + asr r0, r0, #0x3 + str r0, [sp, #0x38] +_02019D2A: + ldr r0, [sp, #0x220] + ldr r1, [sp, #0x3c] + ldr r0, [r0, #0x0] + ldr r2, [sp, #0x5c] + str r0, [sp, #0x21c] + ldr r0, [sp, #0x22c] + ldr r6, [sp, #0x38] + asr r1, r0 + mov r0, #0x1 + and r0, r1 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x224] + add r0, r2, #0x0 + lsl r3, r0, #0x2 + ldr r0, [sp, #0x228] + mov r1, #0x0 + lsl r5, r0, #0x2 + ldr r0, =0x00003FE0 + add r7, r5, #0x0 + and r0, r5 + mul r6, r0 + mov r0, #0x1c + and r7, r0 + ldr r0, [sp, #0x228] + str r6, [sp, #0xc4] + add r0, r0, #0x1 + lsl r6, r0, #0x2 + ldr r0, =0x00003FE0 + ldr r5, [sp, #0x38] + and r0, r6 + mul r5, r0 + mov r0, #0x1c + and r0, r6 + str r3, [sp, #0x34] + add r4, r1, #0x0 + str r5, [sp, #0xc0] + str r0, [sp, #0xbc] +_02019D76: + asr r5, r2, #0x1 + mov r0, #0x3 + and r5, r0 + ldr r0, [sp, #0x278] + add r0, r0, r5 + ldr r5, =0x00003FE0 + and r5, r3 + add r5, r0, r5 + ldr r0, [sp, #0xc4] + str r5, [sp, #0x2bc] + add r0, r5, r0 + ldr r5, [sp, #0x21c] + add r6, r5, #0x0 + lsr r6, r4 + mov r5, #0xf + and r5, r6 + lsl r5, r5, #0x18 + lsr r5, r5, #0x18 + beq _02019DCA + lsl r6, r2, #0x1f + lsr r6, r6, #0x1d + lsl r5, r6 + str r5, [sp, #0x2c0] + ldrb r5, [r0, r7] + str r5, [sp, #0x2c4] + mov r5, #0xf0 + asr r5, r6 + ldr r6, [sp, #0x2c4] + and r6, r5 + ldr r5, [sp, #0x2c0] + orr r5, r6 + lsl r5, r5, #0x18 + lsr r5, r5, #0x18 + strb r5, [r0, r7] + ldr r0, [sp, #0x224] + cmp r0, #0x0 + beq _02019DCA + ldr r6, [sp, #0x2bc] + ldr r0, [sp, #0xc0] + add r6, r6, r0 + ldr r0, [sp, #0xbc] + strb r5, [r0, r6] +_02019DCA: + add r1, r1, #0x1 + add r4, r4, #0x4 + add r3, r3, #0x4 + add r2, r2, #0x1 + cmp r1, #0x8 + blt _02019D76 + ldr r0, [sp, #0x224] + cmp r0, #0x0 + beq _02019DE4 + ldr r0, [sp, #0x228] + add r0, r0, #0x2 + str r0, [sp, #0x228] + b _02019DEA +_02019DE4: + ldr r0, [sp, #0x228] + add r0, r0, #0x1 + str r0, [sp, #0x228] +_02019DEA: + ldr r0, [sp, #0x220] + add r0, r0, #0x4 + str r0, [sp, #0x220] + ldr r0, [sp, #0x22c] + add r0, r0, #0x1 + str r0, [sp, #0x22c] + cmp r0, #0x8 + blt _02019D2A + ldr r0, [sp, #0x0] + str r0, [sp, #0x20c] + add r0, #0x20 + str r0, [sp, #0x20c] + ldr r0, [sp, #0x48] + str r0, [sp, #0x214] + mov r0, #0x0 + str r0, [sp, #0x218] + ldr r0, [sp, #0x5c] + str r0, [sp, #0xd4] + add r0, #0x8 + str r0, [sp, #0xd4] +_02019E12: + ldr r0, [sp, #0x20c] + ldr r1, [sp, #0x3c] + ldr r0, [r0, #0x0] + ldr r2, [sp, #0xd4] + str r0, [sp, #0x208] + ldr r0, [sp, #0x218] + asr r1, r0 + mov r0, #0x1 + and r0, r1 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x210] + ldr r0, [sp, #0x8] + mov r1, #0x0 + str r0, [sp, #0x2c8] + sub r0, #0x8 + str r0, [sp, #0x2c8] + cmp r0, #0x0 + ble _02019ECC + ble _02019ECC + add r0, r2, #0x0 + lsl r3, r0, #0x2 + ldr r0, [sp, #0x214] + ldr r6, [sp, #0x38] + lsl r5, r0, #0x2 + ldr r0, =0x00003FE0 + add r7, r5, #0x0 + and r0, r5 + mul r6, r0 + mov r0, #0x1c + and r7, r0 + ldr r0, [sp, #0x214] + str r6, [sp, #0xd0] + add r0, r0, #0x1 + lsl r6, r0, #0x2 + ldr r0, =0x00003FE0 + ldr r5, [sp, #0x38] + and r0, r6 + mul r5, r0 + mov r0, #0x1c + and r0, r6 + add r4, r1, #0x0 + str r5, [sp, #0xcc] + str r0, [sp, #0xc8] +_02019E6A: + asr r5, r2, #0x1 + mov r0, #0x3 + and r5, r0 + ldr r0, [sp, #0x278] + add r0, r0, r5 + ldr r5, =0x00003FE0 + and r5, r3 + add r5, r0, r5 + ldr r0, [sp, #0xd0] + str r5, [sp, #0x2cc] + add r0, r5, r0 + ldr r5, [sp, #0x208] + add r6, r5, #0x0 + lsr r6, r4 + mov r5, #0xf + and r5, r6 + lsl r5, r5, #0x18 + lsr r5, r5, #0x18 + beq _02019EBE + lsl r6, r2, #0x1f + lsr r6, r6, #0x1d + lsl r5, r6 + str r5, [sp, #0x2d0] + ldrb r5, [r0, r7] + str r5, [sp, #0x2d4] + mov r5, #0xf0 + asr r5, r6 + ldr r6, [sp, #0x2d4] + and r6, r5 + ldr r5, [sp, #0x2d0] + orr r5, r6 + lsl r5, r5, #0x18 + lsr r5, r5, #0x18 + strb r5, [r0, r7] + ldr r0, [sp, #0x210] + cmp r0, #0x0 + beq _02019EBE + ldr r6, [sp, #0x2cc] + ldr r0, [sp, #0xcc] + add r6, r6, r0 + ldr r0, [sp, #0xc8] + strb r5, [r0, r6] +_02019EBE: + ldr r0, [sp, #0x2c8] + add r1, r1, #0x1 + add r4, r4, #0x4 + add r3, r3, #0x4 + add r2, r2, #0x1 + cmp r1, r0 + blt _02019E6A +_02019ECC: + ldr r0, [sp, #0x210] + cmp r0, #0x0 + beq _02019EDA + ldr r0, [sp, #0x214] + add r0, r0, #0x2 + str r0, [sp, #0x214] + b _02019EE0 +_02019EDA: + ldr r0, [sp, #0x214] + add r0, r0, #0x1 + str r0, [sp, #0x214] +_02019EE0: + ldr r0, [sp, #0x20c] + add r0, r0, #0x4 + str r0, [sp, #0x20c] + ldr r0, [sp, #0x218] + add r0, r0, #0x1 + str r0, [sp, #0x218] + cmp r0, #0x8 + blt _02019E12 + ldr r0, [sp, #0x0] + mov r2, #0x0 + str r0, [sp, #0x1fc] + add r0, #0x40 + str r0, [sp, #0x1fc] + ldr r0, [sp, #0x48] + mov r1, #0x1 + add r0, #0x8 + str r0, [sp, #0x48] + str r0, [sp, #0x204] +_02019F04: + ldr r0, [sp, #0x330] + asr r0, r2 + tst r0, r1 + beq _02019F12 + ldr r0, [sp, #0x204] + add r0, r0, #0x1 + str r0, [sp, #0x204] +_02019F12: + add r2, r2, #0x1 + cmp r2, #0x8 + blt _02019F04 + ldr r0, [sp, #0x330] + asr r0, r0, #0x8 + str r0, [sp, #0x50] + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0xe4] + mov r0, #0x0 + str r0, [sp, #0x1c] + ldr r0, [sp, #0x4] + sub r0, #0x8 + cmp r0, #0x0 + ble _0201A008 +_02019F30: + ldr r0, [sp, #0x1fc] + ldr r1, [sp, #0xe4] + ldr r0, [r0, #0x0] + ldr r6, [sp, #0x38] + str r0, [sp, #0x1f8] + ldr r0, [sp, #0x1c] + ldr r2, [sp, #0x5c] + asr r1, r0 + mov r0, #0x1 + and r0, r1 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x200] + ldr r0, [sp, #0x204] + mov r1, #0x0 + lsl r5, r0, #0x2 + ldr r0, =0x00003FE0 + add r7, r5, #0x0 + and r0, r5 + mul r6, r0 + mov r0, #0x1c + and r7, r0 + ldr r0, [sp, #0x204] + str r6, [sp, #0xe0] + add r0, r0, #0x1 + lsl r6, r0, #0x2 + ldr r0, =0x00003FE0 + ldr r5, [sp, #0x38] + and r0, r6 + mul r5, r0 + mov r0, #0x1c + and r0, r6 + ldr r3, [sp, #0x34] + add r4, r1, #0x0 + str r5, [sp, #0xdc] + str r0, [sp, #0xd8] +_02019F78: + asr r5, r2, #0x1 + mov r0, #0x3 + and r5, r0 + ldr r0, [sp, #0x278] + add r0, r0, r5 + ldr r5, =0x00003FE0 +// b _02019F8C +// nop +// _02019F88: .word 0x00003FE0 +// _02019F8C: + and r5, r3 + add r5, r0, r5 + ldr r0, [sp, #0xe0] + str r5, [sp, #0x2d8] + add r0, r5, r0 + ldr r5, [sp, #0x1f8] + add r6, r5, #0x0 + lsr r6, r4 + mov r5, #0xf + and r5, r6 + lsl r5, r5, #0x18 + lsr r5, r5, #0x18 + beq _02019FD4 + lsl r6, r2, #0x1f + lsr r6, r6, #0x1d + lsl r5, r6 + str r5, [sp, #0x2dc] + ldrb r5, [r0, r7] + str r5, [sp, #0x2e0] + mov r5, #0xf0 + asr r5, r6 + ldr r6, [sp, #0x2e0] + and r6, r5 + ldr r5, [sp, #0x2dc] + orr r5, r6 + lsl r5, r5, #0x18 + lsr r5, r5, #0x18 + strb r5, [r0, r7] + ldr r0, [sp, #0x200] + cmp r0, #0x0 + beq _02019FD4 + ldr r6, [sp, #0x2d8] + ldr r0, [sp, #0xdc] + add r6, r6, r0 + ldr r0, [sp, #0xd8] + strb r5, [r0, r6] +_02019FD4: + add r1, r1, #0x1 + add r4, r4, #0x4 + add r3, r3, #0x4 + add r2, r2, #0x1 + cmp r1, #0x8 + blt _02019F78 + ldr r0, [sp, #0x200] + cmp r0, #0x0 + beq _02019FEE + ldr r0, [sp, #0x204] + add r0, r0, #0x2 + str r0, [sp, #0x204] + b _02019FF4 +_02019FEE: + ldr r0, [sp, #0x204] + add r0, r0, #0x1 + str r0, [sp, #0x204] +_02019FF4: + ldr r0, [sp, #0x1fc] + ldr r1, [sp, #0x4] + add r0, r0, #0x4 + str r0, [sp, #0x1fc] + ldr r0, [sp, #0x1c] + sub r1, #0x8 + add r0, r0, #0x1 + str r0, [sp, #0x1c] + cmp r0, r1 + blt _02019F30 +_0201A008: + ldr r0, [sp, #0x0] + mov r2, #0x0 + add r0, #0x60 + str r0, [sp, #0x0] + mov r1, #0x1 +_0201A012: + ldr r0, [sp, #0x330] + asr r0, r2 + tst r0, r1 + beq _0201A020 + ldr r0, [sp, #0x48] + add r0, r0, #0x1 + str r0, [sp, #0x48] +_0201A020: + add r2, r2, #0x1 + cmp r2, #0x8 + blt _0201A012 + ldr r0, [sp, #0x50] + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0xf4] + mov r0, #0x0 + str r0, [sp, #0x18] + ldr r0, [sp, #0x4] + sub r0, #0x8 + cmp r0, #0x0 + bgt _0201A03E + bl FUN_0201A8BC +_0201A03E: + ldr r0, [sp, #0x5c] + add r0, #0x8 + str r0, [sp, #0x5c] +_0201A044: + ldr r0, [sp, #0x0] + ldr r1, [sp, #0xf4] + ldr r0, [r0, #0x0] + ldr r2, [sp, #0x5c] + str r0, [sp, #0x1f0] + ldr r0, [sp, #0x18] + asr r1, r0 + mov r0, #0x1 + and r0, r1 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x1f4] + ldr r0, [sp, #0x8] + mov r1, #0x0 + str r0, [sp, #0x2e4] + sub r0, #0x8 + str r0, [sp, #0x2e4] + cmp r0, #0x0 + ble _0201A0FE + ble _0201A0FE + add r0, r2, #0x0 + lsl r3, r0, #0x2 + ldr r0, [sp, #0x48] + ldr r6, [sp, #0x38] + lsl r5, r0, #0x2 + ldr r0, =0x00003FE0 + add r7, r5, #0x0 + and r0, r5 + mul r6, r0 + mov r0, #0x1c + and r7, r0 + ldr r0, [sp, #0x48] + str r6, [sp, #0xf0] + add r0, r0, #0x1 + lsl r6, r0, #0x2 + ldr r0, =0x00003FE0 + ldr r5, [sp, #0x38] + and r0, r6 + mul r5, r0 + mov r0, #0x1c + and r0, r6 + add r4, r1, #0x0 + str r5, [sp, #0xec] + str r0, [sp, #0xe8] +_0201A09C: + asr r5, r2, #0x1 + mov r0, #0x3 + and r5, r0 + ldr r0, [sp, #0x278] + add r0, r0, r5 + ldr r5, =0x00003FE0 + and r5, r3 + add r5, r0, r5 + ldr r0, [sp, #0xf0] + str r5, [sp, #0x2e8] + add r0, r5, r0 + ldr r5, [sp, #0x1f0] + add r6, r5, #0x0 + lsr r6, r4 + mov r5, #0xf + and r5, r6 + lsl r5, r5, #0x18 + lsr r5, r5, #0x18 + beq _0201A0F0 + lsl r6, r2, #0x1f + lsr r6, r6, #0x1d + lsl r5, r6 + str r5, [sp, #0x2ec] + ldrb r5, [r0, r7] + mov r12, r5 + mov r5, #0xf0 + asr r5, r6 + mov r6, r12 + and r6, r5 + ldr r5, [sp, #0x2ec] + orr r5, r6 + lsl r5, r5, #0x18 + lsr r5, r5, #0x18 + strb r5, [r0, r7] + ldr r0, [sp, #0x1f4] + cmp r0, #0x0 + beq _0201A0F0 + ldr r6, [sp, #0x2e8] + ldr r0, [sp, #0xec] + add r6, r6, r0 + ldr r0, [sp, #0xe8] + strb r5, [r0, r6] +_0201A0F0: + ldr r0, [sp, #0x2e4] + add r1, r1, #0x1 + add r4, r4, #0x4 + add r3, r3, #0x4 + add r2, r2, #0x1 + cmp r1, r0 + blt _0201A09C +_0201A0FE: + ldr r0, [sp, #0x1f4] + cmp r0, #0x0 + beq _0201A10C + ldr r0, [sp, #0x48] + add r0, r0, #0x2 + str r0, [sp, #0x48] + b _0201A112 +_0201A10C: + ldr r0, [sp, #0x48] + add r0, r0, #0x1 + str r0, [sp, #0x48] +_0201A112: + ldr r0, [sp, #0x0] + ldr r1, [sp, #0x4] + add r0, r0, #0x4 + str r0, [sp, #0x0] + ldr r0, [sp, #0x18] + sub r1, #0x8 + add r0, r0, #0x1 + str r0, [sp, #0x18] + cmp r0, r1 + blt _0201A044 + add sp, #0x1fc + add sp, #0x118 + pop {r4-r7, pc} + +FUN_0201A12C: // 0x0201A12C + lsl r1, r2, #0x2 + mul r1, r3 + ldr r3, [r5, #0x0] + ldrb r2, [r5, #0x9] + ldr r0, [sp, #0x0] + ldr r3, [r3, #0x0] + lsl r1, r1, #0x3 + bl FUN_02018848 + str r0, [sp, #0x1ec] + cmp r4, #0x3 + bhi _0201A21E + add r0, r4, r4 + add r0, pc + ldrh r0, [r0, #0x6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0201A150: + + lsl r6, r0, #0 + lsl r6, r1, #3 + lsl r0, r7, #9 + lsl r4, r3, #16 + // jump table (using 16-bit offset) + // .short _0201A158 - _0201A150 - 2; case 0 + // .short _0201A220 - _0201A150 - 2; case 1 + // .short _0201A3CA - _0201A150 - 2; case 2 + // .short _0201A56E - _0201A150 - 2; case 3 +_0201A158: + ldr r0, [sp, #0x330] + ldr r7, [sp, #0x1ec] + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x10c] + mov r0, #0x0 + str r0, [sp, #0x1e8] + ldr r0, [sp, #0x4] + cmp r0, #0x0 + ble _0201A21E + ldr r0, [sp, #0x58] + mov r1, #0x7 + and r1, r0 + add r0, r0, r1 + asr r0, r0, #0x3 + str r0, [sp, #0x108] +_0201A178: + ldr r1, [sp, #0x10c] + ldr r0, [sp, #0x1e8] + mov r4, #0x0 + asr r1, r0 + mov r0, #0x1 + and r0, r1 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x310] + ldr r0, [sp, #0x8] + ldr r5, [sp, #0x5c] + cmp r0, #0x0 + ble _0201A1FC + ble _0201A1FC + add r0, r5, #0x0 + lsl r6, r0, #0x3 + ldr r0, [sp, #0x48] + ldr r2, [sp, #0x108] + lsl r1, r0, #0x3 + ldr r0, =0x00007FC0 + mov r3, #0x38 + and r0, r1 + mul r2, r0 + add r0, r1, #0x0 + and r0, r3 + str r0, [sp, #0x100] + ldr r0, [sp, #0x48] + str r2, [sp, #0x104] + add r0, r0, #0x1 + lsl r1, r0, #0x3 + ldr r0, =0x00007FC0 + ldr r2, [sp, #0x108] + and r0, r1 + mul r2, r0 + add r0, r1, #0x0 + and r0, r3 + str r2, [sp, #0xfc] + str r0, [sp, #0xf8] +_0201A1C4: + mov r0, #0x7 + add r1, r5, #0x0 + and r1, r0 + ldr r0, [sp, #0x278] + add r1, r0, r1 + ldr r0, =0x00007FC0 + and r0, r6 + add r3, r1, r0 + ldr r0, [sp, #0x104] + ldrb r1, [r7, r4] + add r2, r3, r0 + cmp r1, #0x0 + beq _0201A1F0 + ldr r0, [sp, #0x100] + strb r1, [r2, r0] + ldr r0, [sp, #0x310] + cmp r0, #0x0 + beq _0201A1F0 + ldr r0, [sp, #0xfc] + add r2, r3, r0 + ldr r0, [sp, #0xf8] + strb r1, [r0, r2] +_0201A1F0: + ldr r0, [sp, #0x8] + add r4, r4, #0x1 + add r6, #0x8 + add r5, r5, #0x1 + cmp r4, r0 + blt _0201A1C4 +_0201A1FC: + ldr r0, [sp, #0x310] + cmp r0, #0x0 + beq _0201A20A + ldr r0, [sp, #0x48] + add r0, r0, #0x2 + str r0, [sp, #0x48] + b _0201A210 +_0201A20A: + ldr r0, [sp, #0x48] + add r0, r0, #0x1 + str r0, [sp, #0x48] +_0201A210: + ldr r0, [sp, #0x1e8] + add r7, #0x8 + add r1, r0, #0x1 + ldr r0, [sp, #0x4] + str r1, [sp, #0x1e8] + cmp r1, r0 + blt _0201A178 +_0201A21E: + b _0201A8B6 +_0201A220: + ldr r0, [sp, #0x48] + ldr r7, [sp, #0x1ec] + str r0, [sp, #0x1e0] + ldr r0, [sp, #0x330] + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x4c] + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x124] + mov r0, #0x0 + str r0, [sp, #0x1e4] + ldr r0, [sp, #0x4] + cmp r0, #0x0 + ble _0201A2E6 + ldr r0, [sp, #0x58] + mov r1, #0x7 + and r1, r0 + add r0, r0, r1 + asr r0, r0, #0x3 + str r0, [sp, #0x120] +_0201A24A: + ldr r1, [sp, #0x124] + ldr r0, [sp, #0x1e4] + ldr r5, [sp, #0x5c] + asr r1, r0 + mov r0, #0x1 + and r0, r1 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x30c] + add r0, r5, #0x0 + lsl r6, r0, #0x3 + ldr r0, [sp, #0x1e0] + ldr r2, [sp, #0x120] + lsl r1, r0, #0x3 + ldr r0, =0x00007FC0 + mov r3, #0x38 + and r0, r1 + mul r2, r0 + add r0, r1, #0x0 + and r0, r3 + str r0, [sp, #0x118] + ldr r0, [sp, #0x1e0] + str r2, [sp, #0x11c] + add r0, r0, #0x1 + lsl r1, r0, #0x3 + ldr r0, =0x00007FC0 + ldr r2, [sp, #0x120] + and r0, r1 + mul r2, r0 + add r0, r1, #0x0 + and r0, r3 + mov r4, #0x0 + str r2, [sp, #0x114] + str r0, [sp, #0x110] +_0201A28E: + mov r0, #0x7 + add r1, r5, #0x0 + and r1, r0 + ldr r0, [sp, #0x278] + add r1, r0, r1 + ldr r0, =0x00007FC0 + and r0, r6 + add r3, r1, r0 + ldr r0, [sp, #0x11c] + ldrb r1, [r7, r4] + add r2, r3, r0 + cmp r1, #0x0 + beq _0201A2BA + ldr r0, [sp, #0x118] + strb r1, [r2, r0] + ldr r0, [sp, #0x30c] + cmp r0, #0x0 + beq _0201A2BA + ldr r0, [sp, #0x114] + add r2, r3, r0 + ldr r0, [sp, #0x110] + strb r1, [r0, r2] +_0201A2BA: + add r4, r4, #0x1 + add r6, #0x8 + add r5, r5, #0x1 + cmp r4, #0x8 + blt _0201A28E + ldr r0, [sp, #0x30c] + cmp r0, #0x0 + beq _0201A2D2 + ldr r0, [sp, #0x1e0] + add r0, r0, #0x2 + str r0, [sp, #0x1e0] + b _0201A2D8 +_0201A2D2: + ldr r0, [sp, #0x1e0] + add r0, r0, #0x1 + str r0, [sp, #0x1e0] +_0201A2D8: + ldr r0, [sp, #0x1e4] + add r7, #0x8 + add r1, r0, #0x1 + ldr r0, [sp, #0x4] + str r1, [sp, #0x1e4] + cmp r1, r0 + blt _0201A24A +_0201A2E6: + ldr r0, [sp, #0x1ec] + str r0, [sp, #0x308] + add r0, #0x40 + str r0, [sp, #0x308] + ldr r0, [sp, #0x4c] + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x13c] + mov r0, #0x0 + str r0, [sp, #0x1dc] + ldr r0, [sp, #0x4] + cmp r0, #0x0 + ble _0201A3C8 + ldr r0, [sp, #0x5c] + mov r1, #0x7 + add r0, #0x8 + str r0, [sp, #0x5c] + ldr r0, [sp, #0x58] + and r1, r0 + add r0, r0, r1 + asr r0, r0, #0x3 + str r0, [sp, #0x138] +_0201A312: + ldr r1, [sp, #0x13c] + ldr r0, [sp, #0x1dc] + ldr r7, [sp, #0x8] + asr r1, r0 + mov r0, #0x1 + and r0, r1 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + sub r7, #0x8 + mov r4, #0x0 + str r0, [sp, #0x1d8] + ldr r5, [sp, #0x5c] + cmp r7, #0x0 + ble _0201A398 + ble _0201A398 + add r0, r5, #0x0 + lsl r6, r0, #0x3 + ldr r0, [sp, #0x48] + ldr r2, [sp, #0x138] + lsl r1, r0, #0x3 + ldr r0, =0x00007FC0 + mov r3, #0x38 + and r0, r1 + mul r2, r0 + add r0, r1, #0x0 + and r0, r3 + str r0, [sp, #0x130] + ldr r0, [sp, #0x48] + str r2, [sp, #0x134] + add r0, r0, #0x1 + lsl r1, r0, #0x3 + ldr r0, =0x00007FC0 + ldr r2, [sp, #0x138] + and r0, r1 + mul r2, r0 + add r0, r1, #0x0 + and r0, r3 + str r2, [sp, #0x12c] + str r0, [sp, #0x128] +_0201A360: + mov r0, #0x7 + add r1, r5, #0x0 + and r1, r0 + ldr r0, [sp, #0x278] + add r1, r0, r1 + ldr r0, =0x00007FC0 + and r0, r6 + add r3, r1, r0 + ldr r0, [sp, #0x134] + add r2, r3, r0 + ldr r0, [sp, #0x308] + ldrb r1, [r0, r4] + cmp r1, #0x0 + beq _0201A38E + ldr r0, [sp, #0x130] + strb r1, [r2, r0] + ldr r0, [sp, #0x1d8] + cmp r0, #0x0 + beq _0201A38E + ldr r0, [sp, #0x12c] + add r2, r3, r0 + ldr r0, [sp, #0x128] + strb r1, [r0, r2] +_0201A38E: + add r4, r4, #0x1 + add r6, #0x8 + add r5, r5, #0x1 + cmp r4, r7 + blt _0201A360 +_0201A398: + ldr r0, [sp, #0x1d8] + cmp r0, #0x0 + beq _0201A3B0 + ldr r0, [sp, #0x48] + add r0, r0, #0x2 + str r0, [sp, #0x48] + b _0201A3B6 +// nop +// _0201A3A8: .word 0x00003FE0 +// _0201A3AC: .word 0x00007FC0 +_0201A3B0: + ldr r0, [sp, #0x48] + add r0, r0, #0x1 + str r0, [sp, #0x48] +_0201A3B6: + ldr r0, [sp, #0x308] + add r0, #0x8 + str r0, [sp, #0x308] + ldr r0, [sp, #0x1dc] + add r1, r0, #0x1 + ldr r0, [sp, #0x4] + str r1, [sp, #0x1dc] + cmp r1, r0 + blt _0201A312 +_0201A3C8: + b _0201A8B6 +_0201A3CA: + ldr r0, [sp, #0x48] + mov r1, #0x7 + str r0, [sp, #0x1d0] + mov r0, #0x0 + str r0, [sp, #0x1d4] + ldr r0, [sp, #0x330] + ldr r7, [sp, #0x1ec] + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x150] + ldr r0, [sp, #0x58] + and r1, r0 + add r0, r0, r1 + asr r0, r0, #0x3 + str r0, [sp, #0x30] +_0201A3E8: + ldr r1, [sp, #0x150] + ldr r0, [sp, #0x1d4] + mov r4, #0x0 + asr r1, r0 + mov r0, #0x1 + and r0, r1 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x304] + ldr r0, [sp, #0x8] + ldr r5, [sp, #0x5c] + cmp r0, #0x0 + ble _0201A46C + ble _0201A46C + add r0, r5, #0x0 + lsl r6, r0, #0x3 + ldr r0, [sp, #0x1d0] + ldr r2, [sp, #0x30] + lsl r1, r0, #0x3 + ldr r0, =0x00007FC0 + mov r3, #0x38 + and r0, r1 + mul r2, r0 + add r0, r1, #0x0 + and r0, r3 + str r0, [sp, #0x148] + ldr r0, [sp, #0x1d0] + str r2, [sp, #0x14c] + add r0, r0, #0x1 + lsl r1, r0, #0x3 + ldr r0, =0x00007FC0 + ldr r2, [sp, #0x30] + and r0, r1 + mul r2, r0 + add r0, r1, #0x0 + and r0, r3 + str r2, [sp, #0x144] + str r0, [sp, #0x140] +_0201A434: + mov r0, #0x7 + add r1, r5, #0x0 + and r1, r0 + ldr r0, [sp, #0x278] + add r1, r0, r1 + ldr r0, =0x00007FC0 + and r0, r6 + add r3, r1, r0 + ldr r0, [sp, #0x14c] + ldrb r1, [r7, r4] + add r2, r3, r0 + cmp r1, #0x0 + beq _0201A460 + ldr r0, [sp, #0x148] + strb r1, [r2, r0] + ldr r0, [sp, #0x304] + cmp r0, #0x0 + beq _0201A460 + ldr r0, [sp, #0x144] + add r2, r3, r0 + ldr r0, [sp, #0x140] + strb r1, [r0, r2] +_0201A460: + ldr r0, [sp, #0x8] + add r4, r4, #0x1 + add r6, #0x8 + add r5, r5, #0x1 + cmp r4, r0 + blt _0201A434 +_0201A46C: + ldr r0, [sp, #0x304] + cmp r0, #0x0 + beq _0201A47A + ldr r0, [sp, #0x1d0] + add r0, r0, #0x2 + str r0, [sp, #0x1d0] + b _0201A480 +_0201A47A: + ldr r0, [sp, #0x1d0] + add r0, r0, #0x1 + str r0, [sp, #0x1d0] +_0201A480: + ldr r0, [sp, #0x1d4] + add r7, #0x8 + add r0, r0, #0x1 + str r0, [sp, #0x1d4] + cmp r0, #0x8 + blt _0201A3E8 + ldr r0, [sp, #0x48] + ldr r7, [sp, #0x1ec] + add r0, #0x8 + str r0, [sp, #0x48] + add r7, #0x80 + mov r0, #0x0 + mov r2, #0x1 +_0201A49A: + ldr r1, [sp, #0x330] + asr r1, r0 + tst r1, r2 + beq _0201A4A8 + ldr r1, [sp, #0x48] + add r1, r1, #0x1 + str r1, [sp, #0x48] +_0201A4A8: + add r0, r0, #0x1 + cmp r0, #0x8 + blt _0201A49A + ldr r0, [sp, #0x330] + asr r0, r0, #0x8 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x164] + mov r0, #0x0 + str r0, [sp, #0x14] + ldr r0, [sp, #0x4] + sub r0, #0x8 + cmp r0, #0x0 + ble _0201A56C +_0201A4C4: + ldr r1, [sp, #0x164] + ldr r0, [sp, #0x14] + mov r4, #0x0 + asr r1, r0 + mov r0, #0x1 + and r0, r1 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x300] + ldr r0, [sp, #0x8] + ldr r5, [sp, #0x5c] + cmp r0, #0x0 + ble _0201A548 + ble _0201A548 + add r0, r5, #0x0 + lsl r6, r0, #0x3 + ldr r0, [sp, #0x48] + ldr r2, [sp, #0x30] + lsl r1, r0, #0x3 + ldr r0, =0x00007FC0 + mov r3, #0x38 + and r0, r1 + mul r2, r0 + add r0, r1, #0x0 + and r0, r3 + str r0, [sp, #0x15c] + ldr r0, [sp, #0x48] + str r2, [sp, #0x160] + add r0, r0, #0x1 + lsl r1, r0, #0x3 + ldr r0, =0x00007FC0 + ldr r2, [sp, #0x30] + and r0, r1 + mul r2, r0 + add r0, r1, #0x0 + and r0, r3 + str r2, [sp, #0x158] + str r0, [sp, #0x154] +_0201A510: + mov r0, #0x7 + add r1, r5, #0x0 + and r1, r0 + ldr r0, [sp, #0x278] + add r1, r0, r1 + ldr r0, =0x00007FC0 + and r0, r6 + add r3, r1, r0 + ldr r0, [sp, #0x160] + ldrb r1, [r7, r4] + add r2, r3, r0 + cmp r1, #0x0 + beq _0201A53C + ldr r0, [sp, #0x15c] + strb r1, [r2, r0] + ldr r0, [sp, #0x300] + cmp r0, #0x0 + beq _0201A53C + ldr r0, [sp, #0x158] + add r2, r3, r0 + ldr r0, [sp, #0x154] + strb r1, [r0, r2] +_0201A53C: + ldr r0, [sp, #0x8] + add r4, r4, #0x1 + add r6, #0x8 + add r5, r5, #0x1 + cmp r4, r0 + blt _0201A510 +_0201A548: + ldr r0, [sp, #0x300] + cmp r0, #0x0 + beq _0201A556 + ldr r0, [sp, #0x48] + add r0, r0, #0x2 + str r0, [sp, #0x48] + b _0201A55C +_0201A556: + ldr r0, [sp, #0x48] + add r0, r0, #0x1 + str r0, [sp, #0x48] +_0201A55C: + ldr r0, [sp, #0x14] + ldr r1, [sp, #0x4] + add r0, r0, #0x1 + sub r1, #0x8 + add r7, #0x8 + str r0, [sp, #0x14] + cmp r0, r1 + blt _0201A4C4 +_0201A56C: + b _0201A8B6 +_0201A56E: + ldr r0, [sp, #0x48] + ldr r7, [sp, #0x1ec] + str r0, [sp, #0x1c8] + ldr r0, [sp, #0x330] + lsl r0, r0, #0x18 + lsr r1, r0, #0x18 + mov r0, #0x0 + str r0, [sp, #0x1cc] + lsl r0, r1, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x2c] + ldr r0, [sp, #0x58] + mov r1, #0x7 + and r1, r0 + add r0, r0, r1 + asr r0, r0, #0x3 + str r0, [sp, #0x28] +_0201A590: + ldr r1, [sp, #0x2c] + ldr r0, [sp, #0x1cc] + ldr r5, [sp, #0x5c] + asr r1, r0 + mov r0, #0x1 + and r0, r1 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x2fc] + add r0, r5, #0x0 + lsl r6, r0, #0x3 + ldr r0, [sp, #0x1c8] + ldr r2, [sp, #0x28] + lsl r1, r0, #0x3 + ldr r0, =0x00007FC0 + mov r3, #0x38 + and r0, r1 + mul r2, r0 + add r0, r1, #0x0 + and r0, r3 + str r0, [sp, #0x170] + ldr r0, [sp, #0x1c8] + str r2, [sp, #0x174] + add r0, r0, #0x1 + lsl r1, r0, #0x3 + ldr r0, =0x00007FC0 + ldr r2, [sp, #0x28] + and r0, r1 + mul r2, r0 + add r0, r1, #0x0 + and r0, r3 + mov r4, #0x0 + str r6, [sp, #0x24] + str r2, [sp, #0x16c] + str r0, [sp, #0x168] +_0201A5D6: + mov r0, #0x7 + add r1, r5, #0x0 + and r1, r0 + ldr r0, [sp, #0x278] + add r1, r0, r1 + ldr r0, =0x00007FC0 + and r0, r6 + add r3, r1, r0 + ldr r0, [sp, #0x174] + ldrb r1, [r7, r4] + add r2, r3, r0 + cmp r1, #0x0 + beq _0201A602 + ldr r0, [sp, #0x170] + strb r1, [r2, r0] + ldr r0, [sp, #0x2fc] + cmp r0, #0x0 + beq _0201A602 + ldr r0, [sp, #0x16c] + add r2, r3, r0 + ldr r0, [sp, #0x168] + strb r1, [r0, r2] +_0201A602: + add r4, r4, #0x1 + add r6, #0x8 + add r5, r5, #0x1 + cmp r4, #0x8 + blt _0201A5D6 + ldr r0, [sp, #0x2fc] + cmp r0, #0x0 + beq _0201A61A + ldr r0, [sp, #0x1c8] + add r0, r0, #0x2 + str r0, [sp, #0x1c8] + b _0201A620 +_0201A61A: + ldr r0, [sp, #0x1c8] + add r0, r0, #0x1 + str r0, [sp, #0x1c8] +_0201A620: + ldr r0, [sp, #0x1cc] + add r7, #0x8 + add r0, r0, #0x1 + str r0, [sp, #0x1cc] + cmp r0, #0x8 + blt _0201A590 + ldr r0, [sp, #0x1ec] + str r0, [sp, #0x2f8] + add r0, #0x40 + str r0, [sp, #0x2f8] + ldr r0, [sp, #0x48] + str r0, [sp, #0x1c0] + mov r0, #0x0 + str r0, [sp, #0x1c4] + ldr r0, [sp, #0x5c] + str r0, [sp, #0x188] + add r0, #0x8 + str r0, [sp, #0x188] +_0201A644: + ldr r1, [sp, #0x2c] + ldr r0, [sp, #0x1c4] + ldr r7, [sp, #0x8] + asr r1, r0 + mov r0, #0x1 + and r0, r1 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + sub r7, #0x8 + mov r4, #0x0 + str r0, [sp, #0x1bc] + ldr r5, [sp, #0x188] + cmp r7, #0x0 + ble _0201A6CA + ble _0201A6CA + add r0, r5, #0x0 + lsl r6, r0, #0x3 + ldr r0, [sp, #0x1c0] + ldr r2, [sp, #0x28] + lsl r1, r0, #0x3 + ldr r0, =0x00007FC0 + mov r3, #0x38 + and r0, r1 + mul r2, r0 + add r0, r1, #0x0 + and r0, r3 + str r0, [sp, #0x180] + ldr r0, [sp, #0x1c0] + str r2, [sp, #0x184] + add r0, r0, #0x1 + lsl r1, r0, #0x3 + ldr r0, =0x00007FC0 + ldr r2, [sp, #0x28] + and r0, r1 + mul r2, r0 + add r0, r1, #0x0 + and r0, r3 + str r2, [sp, #0x17c] + str r0, [sp, #0x178] +_0201A692: + mov r0, #0x7 + add r1, r5, #0x0 + and r1, r0 + ldr r0, [sp, #0x278] + add r1, r0, r1 + ldr r0, =0x00007FC0 + and r0, r6 + add r3, r1, r0 + ldr r0, [sp, #0x184] + add r2, r3, r0 + ldr r0, [sp, #0x2f8] + ldrb r1, [r0, r4] + cmp r1, #0x0 + beq _0201A6C0 + ldr r0, [sp, #0x180] + strb r1, [r2, r0] + ldr r0, [sp, #0x1bc] + cmp r0, #0x0 + beq _0201A6C0 + ldr r0, [sp, #0x17c] + add r2, r3, r0 + ldr r0, [sp, #0x178] + strb r1, [r0, r2] +_0201A6C0: + add r4, r4, #0x1 + add r6, #0x8 + add r5, r5, #0x1 + cmp r4, r7 + blt _0201A692 +_0201A6CA: + ldr r0, [sp, #0x1bc] + cmp r0, #0x0 + beq _0201A6D8 + ldr r0, [sp, #0x1c0] + add r0, r0, #0x2 + str r0, [sp, #0x1c0] + b _0201A6DE +_0201A6D8: + ldr r0, [sp, #0x1c0] + add r0, r0, #0x1 + str r0, [sp, #0x1c0] +_0201A6DE: + ldr r0, [sp, #0x2f8] + add r0, #0x8 + str r0, [sp, #0x2f8] + ldr r0, [sp, #0x1c4] + add r0, r0, #0x1 + str r0, [sp, #0x1c4] + cmp r0, #0x8 + blt _0201A644 + ldr r0, [sp, #0x48] + ldr r7, [sp, #0x1ec] + add r0, #0x8 + add r7, #0x80 + str r0, [sp, #0x48] + str r0, [sp, #0x1b8] + mov r0, #0x0 + mov r2, #0x1 +_0201A6FE: + ldr r1, [sp, #0x330] + asr r1, r0 + tst r1, r2 + beq _0201A70C + ldr r1, [sp, #0x1b8] + add r1, r1, #0x1 + str r1, [sp, #0x1b8] +_0201A70C: + add r0, r0, #0x1 + cmp r0, #0x8 + blt _0201A6FE + ldr r0, [sp, #0x330] + asr r0, r0, #0x8 + str r0, [sp, #0x44] + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x19c] + mov r0, #0x0 + str r0, [sp, #0x10] + ldr r0, [sp, #0x4] + sub r0, #0x8 + cmp r0, #0x0 + ble _0201A7CE +_0201A72A: + ldr r1, [sp, #0x19c] + ldr r0, [sp, #0x10] + ldr r2, [sp, #0x28] + asr r1, r0 + mov r0, #0x1 + and r0, r1 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x2f4] + ldr r0, [sp, #0x1b8] + mov r3, #0x38 + lsl r1, r0, #0x3 + ldr r0, =0x00007FC0 +// b _0201A74C +// nop +// _0201A748: .word 0x00007FC0 +// _0201A74C: + ldr r5, [sp, #0x5c] + and r0, r1 + mul r2, r0 + add r0, r1, #0x0 + and r0, r3 + str r0, [sp, #0x194] + ldr r0, [sp, #0x1b8] + str r2, [sp, #0x198] + add r0, r0, #0x1 + lsl r1, r0, #0x3 + ldr r0, =0x00007FC0 + ldr r2, [sp, #0x28] + and r0, r1 + mul r2, r0 + add r0, r1, #0x0 + and r0, r3 + ldr r6, [sp, #0x24] + mov r4, #0x0 + str r2, [sp, #0x190] + str r0, [sp, #0x18c] +_0201A774: + mov r0, #0x7 + add r1, r5, #0x0 + and r1, r0 + ldr r0, [sp, #0x278] + add r1, r0, r1 + ldr r0, =0x00007FC0 + and r0, r6 + add r3, r1, r0 + ldr r0, [sp, #0x198] + ldrb r1, [r7, r4] + add r2, r3, r0 + cmp r1, #0x0 + beq _0201A7A0 + ldr r0, [sp, #0x194] + strb r1, [r2, r0] + ldr r0, [sp, #0x2f4] + cmp r0, #0x0 + beq _0201A7A0 + ldr r0, [sp, #0x190] + add r2, r3, r0 + ldr r0, [sp, #0x18c] + strb r1, [r0, r2] +_0201A7A0: + add r4, r4, #0x1 + add r6, #0x8 + add r5, r5, #0x1 + cmp r4, #0x8 + blt _0201A774 + ldr r0, [sp, #0x2f4] + cmp r0, #0x0 + beq _0201A7B8 + ldr r0, [sp, #0x1b8] + add r0, r0, #0x2 + str r0, [sp, #0x1b8] + b _0201A7BE +_0201A7B8: + ldr r0, [sp, #0x1b8] + add r0, r0, #0x1 + str r0, [sp, #0x1b8] +_0201A7BE: + ldr r0, [sp, #0x10] + ldr r1, [sp, #0x4] + add r0, r0, #0x1 + sub r1, #0x8 + add r7, #0x8 + str r0, [sp, #0x10] + cmp r0, r1 + blt _0201A72A +_0201A7CE: + ldr r0, [sp, #0x1ec] + mov r2, #0x0 + str r0, [sp, #0x2f0] + add r0, #0xc0 + str r0, [sp, #0x2f0] + mov r1, #0x1 +_0201A7DA: + ldr r0, [sp, #0x330] + asr r0, r2 + tst r0, r1 + beq _0201A7E8 + ldr r0, [sp, #0x48] + add r0, r0, #0x1 + str r0, [sp, #0x48] +_0201A7E8: + add r2, r2, #0x1 + cmp r2, #0x8 + blt _0201A7DA + ldr r0, [sp, #0x44] + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x1b0] + mov r0, #0x0 + str r0, [sp, #0xc] + ldr r0, [sp, #0x4] + sub r0, #0x8 + cmp r0, #0x0 + ble _0201A8B6 + ldr r0, [sp, #0x5c] + add r0, #0x8 + str r0, [sp, #0x5c] +_0201A808: + ldr r1, [sp, #0x1b0] + ldr r0, [sp, #0xc] + ldr r7, [sp, #0x8] + asr r1, r0 + mov r0, #0x1 + and r0, r1 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + sub r7, #0x8 + mov r4, #0x0 + str r0, [sp, #0x1b4] + ldr r5, [sp, #0x5c] + cmp r7, #0x0 + ble _0201A88E + ble _0201A88E + add r0, r5, #0x0 + lsl r6, r0, #0x3 + ldr r0, [sp, #0x48] + ldr r2, [sp, #0x28] + lsl r1, r0, #0x3 + ldr r0, =0x00007FC0 + mov r3, #0x38 + and r0, r1 + mul r2, r0 + add r0, r1, #0x0 + and r0, r3 + str r0, [sp, #0x1a8] + ldr r0, [sp, #0x48] + str r2, [sp, #0x1ac] + add r0, r0, #0x1 + lsl r1, r0, #0x3 + ldr r0, =0x00007FC0 + ldr r2, [sp, #0x28] + and r0, r1 + mul r2, r0 + add r0, r1, #0x0 + and r0, r3 + str r2, [sp, #0x1a4] + str r0, [sp, #0x1a0] +_0201A856: + mov r0, #0x7 + add r1, r5, #0x0 + and r1, r0 + ldr r0, [sp, #0x278] + add r1, r0, r1 + ldr r0, =0x00007FC0 + and r0, r6 + add r3, r1, r0 + ldr r0, [sp, #0x1ac] + add r2, r3, r0 + ldr r0, [sp, #0x2f0] + ldrb r1, [r0, r4] + cmp r1, #0x0 + beq _0201A884 + ldr r0, [sp, #0x1a8] + strb r1, [r2, r0] + ldr r0, [sp, #0x1b4] + cmp r0, #0x0 + beq _0201A884 + ldr r0, [sp, #0x1a4] + add r2, r3, r0 + ldr r0, [sp, #0x1a0] + strb r1, [r0, r2] +_0201A884: + add r4, r4, #0x1 + add r6, #0x8 + add r5, r5, #0x1 + cmp r4, r7 + blt _0201A856 +_0201A88E: + ldr r0, [sp, #0x1b4] + cmp r0, #0x0 + beq _0201A89C + ldr r0, [sp, #0x48] + add r0, r0, #0x2 + str r0, [sp, #0x48] + b _0201A8A2 +_0201A89C: + ldr r0, [sp, #0x48] + add r0, r0, #0x1 + str r0, [sp, #0x48] +_0201A8A2: + ldr r0, [sp, #0x2f0] + ldr r1, [sp, #0x4] + add r0, #0x8 + str r0, [sp, #0x2f0] + ldr r0, [sp, #0xc] + sub r1, #0x8 + add r0, r0, #0x1 + str r0, [sp, #0xc] + cmp r0, r1 + blt _0201A808 +_0201A8B6: + ldr r0, [sp, #0x1ec] + bl FreeToHeap + +FUN_0201A8BC: // 0x0201A8BC + add sp, #0x1fc + add sp, #0x118 + pop {r4-r7, pc} + // clang-format on +} +#endif + +THUMB_FUNC void ScrollWindow(struct Window *window, u32 param1, u8 param2, u8 param3) +{ + if (window->unk00->unk08[window->unk04].unk1e == 0) + { + FUN_0201A8E8(window, param1, param2, param3); + } + else + { + FUN_0201A9D4(window, param1, param2, param3); + } +} + +THUMB_FUNC void FUN_0201A8E8(struct Window *window, u32 param1, u8 param2, u8 param3) +{ + void *r2; + int r5, r1, r3; + int st4, stc; + u32 st8; + int i, j; + + r2 = window->unk0c; + st4 = (param3 << 0x18) | (param3 << 0x10) | (param3 << 0x8) | param3; + stc = window->height * window->width * 32; + st8 = window->width; + + switch (param1) + { + case 0: + for (i = 0; i < stc; i += 32) + { + r3 = param2; + for (j = 0; j < 8; j++) + { + r5 = i + (j << 2); + r1 = i + (int)(((st8 * (r3 & ~7)) | (r3 & 7)) << 2); + + if (r1 < stc) + { + *(u32 *)(r2 + r5) = *(u32 *)(r2 + r1); + } + else + { + *(u32 *)(r2 + r5) = (u32)st4; + } + + r3++; + } + } + + break; + case 1: + r2 += stc - 4; + for (i = 0; i < stc; i += 32) + { + r3 = param2; + for (j = 0; j < 8; j++) + { + r5 = i + (j << 2); + r1 = i + (int)(((st8 * (r3 & ~7)) | (r3 & 7)) << 2); + + if (r1 < stc) + { + *(u32 *)(r2 - r5) = *(u32 *)(r2 - r1); + } + else + { + *(u32 *)(r2 - r5) = (u32)st4; + } + + r3++; + } + } + + break; + case 2: + case 3: + break; + } +} + +THUMB_FUNC void FUN_0201A9D4(struct Window *window, u32 param1, u8 param2, u8 param3) +{ + + void *r2; + int r5, r1, r3; + int st4, stc; + u32 st8; + int i, j; + + r2 = (u8 *)window->unk0c; + st4 = (param3 << 0x18) | (param3 << 0x10) | (param3 << 0x8) | param3; + stc = window->height * window->width * 64; + st8 = window->width; + + switch (param1) + { + case 0: + for (i = 0; i < stc; i += 64) + { + r3 = param2; + for (j = 0; j < 8; j++) + { + r5 = i + (j << 3); + r1 = i + (int)(((st8 * (r3 & ~7)) | (r3 & 7)) << 3); + + if (r1 < stc) + { + *(u32 *)(r2 + r5) = *(u32 *)(r2 + r1); + } + else + { + *(u32 *)(r2 + r5) = (u32)st4; + } + + r5 += 4; + r1 += 4; + if (r1 < stc + 4) + { + *(u32 *)(r2 + r5) = *(u32 *)(r2 + r1); + } + else + { + *(u32 *)(r2 + r5) = (u32)st4; + } + + r3++; + } + } + + break; + case 1: + r2 += stc - 8; + for (i = 0; i < stc; i += 64) + { + r3 = param2; + for (j = 0; j < 8; j++) + { + r5 = i + (j << 3); + r1 = i + (int)(((st8 * (r3 & ~7)) | (r3 & 7)) << 3); + + if (r1 < stc) + { + *(u32 *)(r2 - r5) = *(u32 *)(r2 - r1); + } + else + { + *(u32 *)(r2 - r5) = (u32)st4; + } + + r5 -= 4; + r1 -= 4; + if (r1 < stc - 4) + { + *(u32 *)(r2 - r5) = *(u32 *)(r2 - r1); + } + else + { + *(u32 *)(r2 - r5) = (u32)st4; + } + + r3++; + } + } + + break; + case 2: + case 3: + break; + } +} + +THUMB_FUNC u8 FUN_0201AB08(struct Window *window) +{ + return window->unk04; +} + +THUMB_FUNC u8 GetWindowWidth(struct Window *window) +{ + return window->width; +} +THUMB_FUNC u8 GetWindowHeight(struct Window *window) +{ + return window->height; +} +THUMB_FUNC u8 FUN_0201AB14(struct Window *window) +{ + return window->unk05; +} +THUMB_FUNC u8 FUN_0201AB18(struct Window *window) +{ + return window->unk06; +} +THUMB_FUNC void FUN_0201AB1C(struct Window *window, u8 param1) +{ + window->unk05 = param1; +} +THUMB_FUNC void FUN_0201AB20(struct Window *window, u8 param1) +{ + window->unk06 = param1; +} +THUMB_FUNC void FUN_0201AB24(struct Window *window, u8 param1) +{ + window->unk09 = param1; +} + +THUMB_FUNC u32 FUN_0201AB28(struct Window *window, u32 heap_id, const char *path) +{ + void *ptr = FUN_020161A4(heap_id, path); + window->unk00 = ptr; + u32 st0; + NNS_G2dGetUnpackedBGCharacterData(ptr, &st0); + + return st0; +} + +THUMB_FUNC u32 FUN_0201AB44(struct Window *window, u32 heap_id, const char *path) +{ + void *ptr = FUN_020161A4(heap_id, path); + window->unk00 = ptr; + u32 st0; + NNS_G2dGetUnpackedPaletteData(ptr, &st0); + + return st0; +} + +THUMB_FUNC void FUN_0201AB60(struct UnkStruct_02016B94_2 *param0) +{ + FUN_0201AC78(param0); + FUN_0201AB78(param0); + + param0->unk04 = 0; + param0->unk06 = 0; +} + +THUMB_FUNC void FUN_0201AB78(struct UnkStruct_02016B94_2 *param0) +{ + if ((param0->unk06 & 1) != 0) + { + FUN_02017D68(0, param0->unk08[0].unk08, param0->unk08[0].unk10 * 2, param0->unk08[0].unk0c); + } + + if ((param0->unk06 & 2) != 0) + { + FUN_02017D68(1, param0->unk08[1].unk08, param0->unk08[1].unk10 * 2, param0->unk08[1].unk0c); + } + + if ((param0->unk06 & 4) != 0) + { + FUN_02017D68(2, param0->unk08[2].unk08, param0->unk08[2].unk10 * 2, param0->unk08[2].unk0c); + } + + if ((param0->unk06 & 8) != 0) + { + FUN_02017D68(3, param0->unk08[3].unk08, param0->unk08[3].unk10 * 2, param0->unk08[3].unk0c); + } + + if ((param0->unk06 & 0x10) != 0) + { + FUN_02017D68(4, param0->unk08[4].unk08, param0->unk08[4].unk10 * 2, param0->unk08[4].unk0c); + } + + if ((param0->unk06 & 0x20) != 0) + { + FUN_02017D68(5, param0->unk08[5].unk08, param0->unk08[5].unk10 * 2, param0->unk08[5].unk0c); + } + + if ((param0->unk06 & 0x40) != 0) + { + FUN_02017D68(6, param0->unk08[6].unk08, param0->unk08[6].unk10 * 2, param0->unk08[6].unk0c); + } + + if ((param0->unk06 & 0x80) != 0) + { + FUN_02017D68(7, param0->unk08[7].unk08, param0->unk08[7].unk10 * 2, param0->unk08[7].unk0c); + } +} + +THUMB_FUNC void FUN_0201AC68(struct UnkStruct_02016B94_2 *param0, u32 param1) +{ + param0->unk06 |= 1 << param1; +} + +THUMB_FUNC void FUN_0201AC78(struct UnkStruct_02016B94_2 *param0) +{ + if ((param0->unk04 & 1) != 0) + { + reg_G2_BG0OFS = (u32)( + (param0->unk08[0].unk14 & 0x1ff) | ((param0->unk08[0].unk18 << 0x10) & 0x1ff0000)); + } + + if ((param0->unk04 & 2) != 0) + { + reg_G2_BG1OFS = (u32)( + (param0->unk08[1].unk14 & 0x1ff) | ((param0->unk08[1].unk18 << 0x10) & 0x1ff0000)); + } + + if ((param0->unk04 & 4) != 0) + { + if (param0->unk08[2].unk1c == 0) + { + reg_G2_BG2OFS = (u32)( + (param0->unk08[2].unk14 & 0x1ff) | ((param0->unk08[2].unk18 << 0x10) & 0x1ff0000)); + } + else + { + struct Mtx22 st38; + MTX22_2DAffine( + &st38, param0->unk08[2].unk20, param0->unk08[2].unk24, param0->unk08[2].unk28, 2); + G2x_SetBGyAffine_(reg_G2_BG2P, + &st38, + param0->unk08[2].unk2c, + param0->unk08[2].unk30, + param0->unk08[2].unk14, + param0->unk08[2].unk18); + } + } + + if ((param0->unk04 & 8) != 0) + { + if (param0->unk08[3].unk1c == 0) + { + reg_G2_BG3OFS = (u32)( + (param0->unk08[3].unk14 & 0x1ff) | ((param0->unk08[3].unk18 << 0x10) & 0x1ff0000)); + } + else + { + struct Mtx22 st28; + MTX22_2DAffine( + &st28, param0->unk08[3].unk20, param0->unk08[3].unk24, param0->unk08[3].unk28, 2); + G2x_SetBGyAffine_(reg_G2_BG3P, + &st28, + param0->unk08[3].unk2c, + param0->unk08[3].unk30, + param0->unk08[3].unk14, + param0->unk08[3].unk18); + } + } + + if ((param0->unk04 & 0x10) != 0) + { + reg_G2S_DB_BG0OFS = (u32)( + (param0->unk08[4].unk14 & 0x1ff) | ((param0->unk08[4].unk18 << 0x10) & 0x1ff0000)); + } + + if ((param0->unk04 & 0x20) != 0) + { + reg_G2S_DB_BG1OFS = (u32)( + (param0->unk08[5].unk14 & 0x1ff) | ((param0->unk08[5].unk18 << 0x10) & 0x1ff0000)); + } + + if ((param0->unk04 & 0x40) != 0) + { + if (param0->unk08[6].unk1c == 0) + { + reg_G2S_DB_BG2OFS = (u32)( + (param0->unk08[6].unk14 & 0x1ff) | ((param0->unk08[6].unk18 << 0x10) & 0x1ff0000)); + } + else + { + struct Mtx22 st18; + MTX22_2DAffine( + &st18, param0->unk08[6].unk20, param0->unk08[6].unk24, param0->unk08[6].unk28, 2); + G2x_SetBGyAffine_(reg_G2S_DB_BG2P, + &st18, + param0->unk08[6].unk2c, + param0->unk08[6].unk30, + param0->unk08[6].unk14, + param0->unk08[6].unk18); + } + } + + if ((param0->unk04 & 0x80) != 0) + { + if (param0->unk08[7].unk1c == 0) + { + reg_G2S_DB_BG3OFS = (u32)( + (param0->unk08[7].unk14 & 0x1ff) | ((param0->unk08[7].unk18 << 0x10) & 0x1ff0000)); + } + else + { + struct Mtx22 st08; + MTX22_2DAffine( + &st08, param0->unk08[7].unk20, param0->unk08[7].unk24, param0->unk08[7].unk28, 2); + G2x_SetBGyAffine_(reg_G2S_DB_BG3P, + &st08, + param0->unk08[7].unk2c, + param0->unk08[7].unk30, + param0->unk08[7].unk14, + param0->unk08[7].unk18); + } + } +} + +THUMB_FUNC void FUN_0201AEE4( + struct UnkStruct_02016B94_2 *param0, u32 param1, u32 param2, fx32 param3) +{ + FUN_02017B8C(¶m0->unk08[param1], param2, param3); + param0->unk04 |= 1 << param1; +} + +THUMB_FUNC void FUN_0201AF08( + struct UnkStruct_02016B94_2 *param0, u32 param1, u32 param2, u16 param3) +{ + FUN_0201AF2C(¶m0->unk08[param1], param2, param3); + param0->unk04 |= 1 << param1; +} + +THUMB_FUNC void FUN_0201AF2C(struct UnkStruct_02016B94_2_sub *param0, u32 param1, u16 val) +{ + switch (param1) + { + case 0: + param0->unk20 = val; + break; + case 1: + param0->unk20 += val; + break; + case 2: + param0->unk20 -= val; + break; + } +} + +THUMB_FUNC void FUN_0201AF50( + struct UnkStruct_02016B94_2 *param0, u32 param1, u32 param2, fx32 param3) +{ + FUN_0201AF74(¶m0->unk08[param1], param2, param3); + param0->unk04 |= 1 << param1; +} + +THUMB_FUNC void FUN_0201AF74(struct UnkStruct_02016B94_2_sub *param0, u32 param1, fx32 val) +{ + switch (param1 - 9) + { + case 0: + param0->unk2c = val; + break; + case 1: + param0->unk2c += val; + break; + case 2: + param0->unk2c -= val; + break; + case 3: + param0->unk30 = val; + break; + case 4: + param0->unk30 += val; + break; + case 5: + param0->unk30 -= val; + break; + } +} + +THUMB_FUNC u32 FUN_0201AFBC( + struct UnkStruct_02016B94_2 *param0, u8 param1, u8 param2, u8 param3, u16 *param4) +{ + void *st18; + u16 r6; + u8 st14; + u8 st10; + u8 r5; + u8 i; + + if (param0->unk08[param1].unk08 == NULL) + { + return 0; + } + + r6 = FUN_02017FFC((u8)(param2 >> 3), (u8)(param3 >> 3), param0->unk08[param1].unk1d); + st18 = FUN_020187B0(param1); + + st14 = (u8)(param2 & 7); + st10 = (u8)(param3 & 7); + + if (param0->unk08[param1].unk1e == 0) + { + u16 *stc = param0->unk08[param1].unk08; + u8 *ptr = AllocFromHeapAtEnd(param0->unk00, 0x40); + + st18 += ((stc[r6] & 0x3ff) << 5); + for (i = 0; i < 0x20; i++) + { + ptr[(i << 1)] = (u8)(((u8 *)st18)[i] & 0xf); + ptr[(i << 1) + 1] = (u8)(((u8 *)st18)[i] >> 4); + } + + FUN_0201B118(param0, (u8)((stc[r6] >> 0xa) & 3), ptr); + + r5 = ptr[st14 + (st10 << 3)]; + FreeToHeap(ptr); + + if ((param4[0] & (1 << r5)) != 0) + { + return 1; + } + } + else + { + if (param0->unk08[param1].unk1c != 1) + { + u16 *r4 = param0->unk08[param1].unk08; + u8 *ptr = AllocFromHeapAtEnd(param0->unk00, 0x40); + + memcpy(ptr, st18 + ((r4[r6] & 0x3ff) << 6), 0x40); + + FUN_0201B118(param0, (u8)((r4[r6] >> 0xa) & 3), ptr); + + r5 = ptr[st14 + (st10 << 3)]; + FreeToHeap(ptr); + } + else + { + r5 = ((u8 *)st18)[(((u8 *)param0->unk08[param1].unk08)[r6] << 6) + st14 + (st10 << 3)]; + } + + while (TRUE) + { + if (param4[0] == 0xffff) + { + break; + } + if (r5 == (u8)(param4[0])) + { + return 1; + } + } + } + return 0; +} + +THUMB_FUNC void FUN_0201B118(struct UnkStruct_02016B94_2 *param0, u8 param1, u8 *param2) +{ + u8 i, j; + if (param1 != 0) + { + u8 *ptr = AllocFromHeapAtEnd(param0->unk00, 0x40); + + if ((param1 & 1) != 0) + { + for (i = 0; i < 8; i++) + { + for (j = 0; j < 8; j++) + { + ptr[i * 8 + j] = param2[i * 8 + (7 - j)]; + } + } + + memcpy(param2, ptr, 0x40); + } + + if ((param1 & 2) != 0) + { + for (i = 0; i < 8; i++) + { + u8 *r3 = &ptr[i * 8]; + u8 *r2 = ¶m2[(7 - i) * 8]; + for (u32 j = 8; j > 0; j--) + { + *r3++ = *r2++; + } + } + + memcpy(param2, ptr, 0x40); + } + + FreeToHeap(ptr); + } +} diff --git a/arm9/src/unk_02021934.c b/arm9/src/unk_02021934.c index cd66a136..ebc600fa 100644 --- a/arm9/src/unk_02021934.c +++ b/arm9/src/unk_02021934.c @@ -109,31 +109,31 @@ struct String * StringDup(struct String * src, u32 heap_id) return dest; } -static const u16 sCharset_JP[10] = { - 0xA2, 0xA3, 0xA4, 0xA5, 0xA6, - 0xA7, 0xA8, 0xA9, 0xAA, 0xAB -}; - -static const u16 sCharset_EN[10] = { - 0x121, 0x122, 0x123, 0x124, 0x125, - 0x126, 0x127, 0x128, 0x129, 0x12A -}; - -static const u32 sPowersOfTen[10] = { - 1, - 10, - 100, - 1000, - 10000, - 100000, - 1000000, - 10000000, - 100000000, - 1000000000 -}; - void String16_FormatInteger(struct String * str, int num, u32 ndigits, int strConvMode, BOOL whichCharset) { + static const u16 sCharset_EN[10] = { + 0x121, 0x122, 0x123, 0x124, 0x125, + 0x126, 0x127, 0x128, 0x129, 0x12A + }; + + static const u16 sCharset_JP[10] = { + 0xA2, 0xA3, 0xA4, 0xA5, 0xA6, + 0xA7, 0xA8, 0xA9, 0xAA, 0xAB + }; + + static const u32 sPowersOfTen[10] = { + 1, + 10, + 100, + 1000, + 10000, + 100000, + 1000000, + 10000000, + 100000000, + 1000000000 + }; + ASSERT_STR16(str); const u16 * charbase; diff --git a/arm9/src/unk_02022504.c b/arm9/src/unk_02022504.c new file mode 100644 index 00000000..7f50815b --- /dev/null +++ b/arm9/src/unk_02022504.c @@ -0,0 +1,32 @@ +#include "global.h" +#include "unk_02022504.h" + +THUMB_FUNC void *FUN_02022504(struct SaveBlock2 *sav2) +{ + return SavArray_get(sav2, 27); +} + +THUMB_FUNC struct PCStorage *GetStoragePCPointer(struct SaveBlock2 *sav2) +{ + return SavArray_get(sav2, 35); +} + +THUMB_FUNC void *FUN_0202251C(struct SaveBlock2 *sav2) +{ + return SavArray_get(sav2, 31); +} + +THUMB_FUNC void *FUN_02022528(struct SaveBlock2 *sav2) +{ + return SavArray_get(sav2, 32); +} + +THUMB_FUNC u8 *LoadHallOfFame(struct SaveBlock2 *sav2, u32 heap_id, int *ret_p) +{ + return ReadSaveFileFromFlash(sav2, heap_id, 0, ret_p); +} + +THUMB_FUNC s32 SaveHallOfFame(struct SaveBlock2 *sav2, u8 *data) +{ + return WriteSaveFileToFlash(sav2, 0, data); +} diff --git a/arm9/src/unk_02024E64.c b/arm9/src/unk_02024E64.c index d8682531..ad6a7eac 100644 --- a/arm9/src/unk_02024E64.c +++ b/arm9/src/unk_02024E64.c @@ -10,14 +10,14 @@ THUMB_FUNC u32 FUN_02024E64() THUMB_FUNC void FUN_02024E6C(struct UnkStruct_02024E64 *param0) { - MIi_CpuClearFast(0, param0, sizeof(struct UnkStruct_02024E64)); + MI_CpuClearFast(param0, sizeof(struct UnkStruct_02024E64)); FUN_020250A4(param0->unk0); FUN_02025484(param0->unk700); - MIi_CpuClear16(0xFFFF, param0->rival_name_buf, sizeof(param0->rival_name_buf) / sizeof(u16)); - MIi_CpuClear16(0xFFFF, param0->unk734, sizeof(param0->unk734) / sizeof(u16)); + MI_CpuFill16(param0->rival_name_buf, EOS, sizeof(param0->rival_name_buf) / sizeof(u16)); + MI_CpuFill16(param0->unk734, EOS, sizeof(param0->unk734) / sizeof(u16)); } THUMB_FUNC struct UnkStruct_02024E64 *FUN_02024EB4(struct SaveBlock2 *sav2) diff --git a/arm9/src/unk_02025484.c b/arm9/src/unk_02025484.c index 733ac23a..96da04c9 100644 --- a/arm9/src/unk_02025484.c +++ b/arm9/src/unk_02025484.c @@ -3,14 +3,14 @@ #include "error_handling.h" #include "unk_02025484.h" -THUMB_FUNC void FUN_02025484(struct unk_2025484 *r0, u32 r1) +THUMB_FUNC void FUN_02025484(struct unk_2025484 *r0) { MI_CpuFill8(r0, 0, sizeof(struct unk_2025484)); } THUMB_FUNC u32 *FUN_02025490(struct unk_2025484 *r0, u32 r1) { - FUN_02025484(r0, r1); + FUN_02025484(r0); r0->unk0 = r1; return &r0->unk4; } diff --git a/arm9/src/unk_020286F8.c b/arm9/src/unk_020286F8.c index f54d1e2e..a23a94ff 100644 --- a/arm9/src/unk_020286F8.c +++ b/arm9/src/unk_020286F8.c @@ -75,9 +75,9 @@ void FUN_020287C0(struct UnkSaveStruct_020286F8 * ptr, u32 i, u32 j, struct Stri CopyStringToU16Array(k, ptr[i].unk_10, 8); } -void FUN_020287EC(struct UnkSaveStruct_020286F8 * ptr, u32 i, u8 j) +void FUN_020287EC(struct UnkSaveStruct_020286F8 * ptr, u32 i, u32 j) { - ptr[i].unk_20 = j; + ptr[i].unk_20 = (u8)j; } u8 FUN_020287F8(struct UnkSaveStruct_020286F8 * ptr, u32 i) @@ -90,10 +90,9 @@ u8 FUN_02028804(struct UnkSaveStruct_020286F8 * ptr, u32 i) return ptr[i].unk_21; } - -void FUN_02028810(struct UnkSaveStruct_020286F8 * ptr, u32 i, u8 j) +void FUN_02028810(struct UnkSaveStruct_020286F8 * ptr, u32 i, u32 j) { - ptr[i].unk_21 = j; + ptr[i].unk_21 = (u8)j; } struct UnkSaveStruct_020286F8 * FUN_0202881C(struct SaveBlock2 * sav2) diff --git a/arm9/src/unk_0202ABBC.c b/arm9/src/unk_0202ABBC.c index 7bc9d3fc..75a43f60 100644 --- a/arm9/src/unk_0202ABBC.c +++ b/arm9/src/unk_0202ABBC.c @@ -15,7 +15,7 @@ THUMB_FUNC u32 FUN_0202ABC8() THUMB_FUNC void FUN_0202ABCC(struct Unk0202ABBC* unk) { - MIi_CpuClearFast(0, unk, 0xf4); + MI_CpuClearFast(unk, sizeof(struct Unk0202ABBC)); } THUMB_FUNC u16 FUN_0202ABDC(struct Unk0202ABBC* unk) @@ -30,12 +30,12 @@ THUMB_FUNC void FUN_0202ABE4(struct Unk0202ABBC* unk, u16 data) THUMB_FUNC void FUN_0202ABEC(void *srcp, void *destp) { - MIi_CpuCopyFast(srcp, destp, 0xec); + MI_CpuCopyFast(srcp, destp, 0xec); } THUMB_FUNC void FUN_0202ABF8(void *destp, void *srcp) { - MIi_CpuCopyFast(srcp, destp, 0xec); + MI_CpuCopyFast(srcp, destp, 0xec); } THUMB_FUNC u32 FUN_0202AC08(struct Unk0202ABBC* unk) diff --git a/arm9/src/unk_0202D858.c b/arm9/src/unk_0202D858.c new file mode 100644 index 00000000..45c7c776 --- /dev/null +++ b/arm9/src/unk_0202D858.c @@ -0,0 +1,96 @@ +#include "unk_0202D858.h" + +struct UnkStruct_0202D858 +{ + u8 unk00[0x1a]; +}; + +static const struct UnkStruct_0202D858 UNK_020EEB04 = { { + 0x01, + 0x01, + 0x01, + 0x01, + 0x03, + 0x03, + 0x03, + 0x04, + 0x03, + 0x04, + 0x07, + 0x03, + 0x07, + 0x04, + 0x01, + 0x04, + 0x01, + 0x01, + 0x04, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x00, + 0x00, +} }; + +static const struct UnkStruct_0202D858 UNK_020EEB1E = { { + 0x01, + 0x01, + 0x01, + 0x01, + 0x03, + 0x03, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x00, + 0x00, +} }; + +THUMB_FUNC u8 FUN_0202D858(u16 param0) +{ + struct UnkStruct_0202D858 st0 = UNK_020EEB04; + + GF_ASSERT(param0 < 0x1a); + + return st0.unk00[param0]; +} + +THUMB_FUNC u8 FUN_0202D884(u16 param0) +{ + struct UnkStruct_0202D858 st0 = UNK_020EEB1E; + + GF_ASSERT(param0 < 0x1a); + + return st0.unk00[param0]; +} + +THUMB_FUNC u32 FUN_0202D8B0(int param0) +{ + switch (param0) + { + case 0x7: + case 0x9: + case 0xd: + case 0x12: + return 1; + } + + return 0; +} diff --git a/arm9/src/unk_0202E29C.c b/arm9/src/unk_0202E29C.c new file mode 100644 index 00000000..2b088d6f --- /dev/null +++ b/arm9/src/unk_0202E29C.c @@ -0,0 +1,1087 @@ +#include "global.h" +#include "unk_0202E29C.h" +#include "MI_memory.h" +#include "OS_cache.h" +#include "game_init.h" +#include "heap.h" +#include "mail_message.h" +#include "player_data.h" +#include "unk_0202D858.h" +#include "unk_0202F150.h" +#include "unk_02031734.h" + +struct UnkStruct_0202E29C_const +{ + u8 unk0[6]; +}; + +const struct UnkStruct_0202E29C_const UNK_020EEC40 = { { 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF } }; + +u16 UNK_021C59E8; +struct UnkStruct_0202E29C *UNK_021C59F0; +u32 UNK_021C59EC; + +extern u32 FUN_0202CEEC(); +extern u32 FUN_02023AC4(); +extern u32 FUN_02090DB8(u32 param0, void (*param1)(u32, u32), u32 param2); +extern void FUN_02090CC8(void (*param0)(), u32 param1); +extern void FUN_0202CE64(void *param0); +extern void FUN_0202CB70(u32 param0); +extern void FUN_0202D2F4(); +extern void FUN_0202D0A0(void (*param0)(u32, u8 *, u32), u32 param1); +extern u32 FUN_0202CBD4(); +extern u32 FUN_0202CBFC(); +extern u32 FUN_0202C570(void (*param0)(struct UnkStruct_0202E29C_sub *, u32), u8 *param1, u32 param2); +extern u32 FUN_0202D21C(); +extern void FUN_0202C770(); +extern u32 FUN_0202D1E4(); +extern void FUN_0202D100(); +extern u32 FUN_0202D1C8(); +extern u32 FUN_0202D200(); +extern void FUN_0202C4D8(u32 param0, u8 *param1, u32 param2); +extern void FUN_0202D034(u32 param0, struct UnkStruct_0202E29C_sub *param1); +extern u32 FUN_0202D358(); +extern void FUN_0202CB7C(void *param0, u32 param1); +extern void FUN_0202D240(void *param0, u32 size, u32 param2, u32 param3); +extern void FUN_0202DF54(); +extern u16 FUN_0202D19C(); +extern u32 FUN_0202CBE8(); +extern u32 FUN_0202D178(); +extern u16 FUN_0202CDA4(); +extern void FUN_0202CF84(u32 param0, u16 param1, u16 param2, u32 param3, u32 param4, u32 param5); +extern u32 FUN_0202CB8C(); +extern u16 WM_GetDispersionBeaconPeriod(); +extern BOOL FUN_0202D2D0(); + +THUMB_FUNC void FUN_0202E29C(struct PlayerData *player_data) +{ + if (UNK_021C59F0 == NULL) + { + UNK_021C59F0 = AllocFromHeap(0xf, sizeof(struct UnkStruct_0202E29C)); + MI_CpuFill8(UNK_021C59F0, 0, sizeof(struct UnkStruct_0202E29C)); + + UNK_021C59F0->unkCA4 = AllocFromHeap(0xf, FUN_0202CEEC()); + MI_CpuFill8(UNK_021C59F0->unkCA4, 0, FUN_0202CEEC()); + + UNK_021C59F0->unkCBC = AllocFromHeap(0xf, FUN_02023AC4()); + MI_CpuFill8(UNK_021C59F0->unkCBC, 0, FUN_02023AC4()); + + UNK_021C59F0->unkCC0 = 0x333; + UNK_021C59F0->unkCB8 = player_data; + + MailMsg_init(&UNK_021C59F0->unkCA8); + FUN_0202E500(); + } +} + +THUMB_FUNC BOOL FUN_0202E344() +{ + if (UNK_021C59F0 != NULL) + { + return TRUE; + } + + return FALSE; +} + +THUMB_FUNC BOOL FUN_0202E358(u8 *param0, u8 *param1, s32 param2) +{ + int i = 0; + while (i < param2) + { + if (*param0 != *param1) + { + return FALSE; + } + + i++; + param0++; + param1++; + } + + return TRUE; +} + +THUMB_FUNC void FUN_0202E380(struct UnkStruct_0202E29C_sub *param0, u32 param1) +{ +#pragma unused(param1) + s32 r5 = FUN_02033534(); + u8 r6 = FUN_0203354C(); + struct UnkStruct_0202E29C_sub4 *r4 = ¶m0->unk50; + + if (r5 != 0xe) + { + if (FUN_0202D8B0(r4->unk04) == 0 || FUN_0202D8B0(r5) == 0) + { + if (r4->unk30[0x24] != 0) + { + if (r4->unk04 == 0xa) + { + return; + } + } + + if (r4->unk04 != r5) + { + return; + } + } + } + + if (r5 != 0xe) + { + if (r4->unk05 != r6) + { + return; + } + } + + for (int i = 0; i < 0x10; i++) + { + if (UNK_021C59F0->unkC84[i] == 0) + { + continue; + } + + if (!FUN_0202E358(UNK_021C59F0->unk054[i].unk04, param0->unk04, 6)) + { + continue; + } + + UNK_021C59F0->unkC84[i] = 0x96; + + MI_CpuCopy8(param0, &UNK_021C59F0->unk054[i], sizeof(struct UnkStruct_0202E29C_sub)); + return; + } + + int i; + for (i = 0; i < 0x10; i++) + { + if (UNK_021C59F0->unkC84[i] == 0) + { + break; + } + } + + if (i < 0x10) + { + UNK_021C59F0->unkC84[i] = 0x96; + MI_CpuCopy8(param0, &UNK_021C59F0->unk054[i], sizeof(struct UnkStruct_0202E29C_sub)); + UNK_021C59F0->unkCB4 = 1; + } +} + +THUMB_FUNC void FUN_0202E470(u32 param0, u32 param1) +{ +#pragma unused(param0) + if (param1 != 0) + { + OS_Terminate(); + } + + UNK_021C59EC = 2; +} + +THUMB_FUNC void FUN_0202E488() +{ + UNK_021C59EC = 0; + FUN_02016454(4); +} + +THUMB_FUNC void FUN_0202E49C() +{ + FUN_02016444(4); + UNK_021C59EC = 1; + if (FUN_02090DB8(8, FUN_0202E470, 0) != 1) + { + OS_Terminate(); + } +} + +THUMB_FUNC BOOL FUN_0202E4C8() +{ + if (UNK_021C59EC == 2) + { + return TRUE; + } + + return FALSE; +} + +THUMB_FUNC BOOL FUN_0202E4DC() +{ + if (UNK_021C59EC != 0) + { + return TRUE; + } + + return FALSE; +} + +THUMB_FUNC void FUN_0202E4F0() +{ + FUN_02090CC8(FUN_0202E488, 0); +} + +THUMB_FUNC void FUN_0202E500() +{ + UNK_021C59F0->unkCB0 = 0; + FUN_0202CE64(UNK_021C59F0->unkCA4 + (32 - (u32)(UNK_021C59F0->unkCA4) % 32)); + + FUN_0202CB70(UNK_021C59F0->unkCC0); +} + +THUMB_FUNC void FUN_0202E538() +{ + for (int i = 0; i < 0x10; i++) + { + UNK_021C59F0->unkC84[i] = 0; + } + + MI_CpuFill8(UNK_021C59F0->unk054, 0, 0xC00); +} + +THUMB_FUNC void FUN_0202E56C(u32 param0) +{ + UNK_021C59F0->unkDAD_3 = (u8)param0; +} + +THUMB_FUNC void FUN_0202E594() +{ + UNK_021C59F0->unkCB4 = 0; + + UNK_021C59F0->unkDAD_0 = 0; + + UNK_021C59F0->unkDAD_2 = 0; + + UNK_021C59F0->unkDAA = 0; + + UNK_021C59F0->unkDAD_4 = 0; + + UNK_021C59F0->unkDAC = 0; + + UNK_021C59F0->unkDAB = 0; +} + +THUMB_FUNC BOOL FUN_0202E5F8(u32 param0, u32 param1, u32 param2) +{ +#pragma unused(param0) + FUN_0202E594(); + FUN_0202E56C(param1); + FUN_0202D2F4(); + + if (UNK_021C59F0->unkDAB == 0) + { + FUN_0202D0A0(FUN_020303BC, 0xe); + UNK_021C59F0->unkDAB = 1; + } + + UNK_021C59F0->unkDAD_5 = (u8)param2; + if (FUN_0202CBD4() == 1 && FUN_0202CBFC() != 0) + { + return TRUE; + } + + return FALSE; +} + +THUMB_FUNC u32 FUN_0202E66C(u32 param0, u32 param1) +{ +#pragma unused(param0) + FUN_0202E594(); + if (param1 != 0) + { + FUN_0202E538(); + } + + if (UNK_021C59F0->unkDAB == 0) + { + FUN_0202D0A0(FUN_02030238, 0xe); + UNK_021C59F0->unkDAB = 1; + } + + if (FUN_0202CBD4() == 1) + { + struct UnkStruct_0202E29C_const st0 = UNK_020EEC40; + + if (FUN_0202C570(FUN_0202E380, st0.unk0, 0) != 0) + { + return 1; + } + } + + return 0; +} + +THUMB_FUNC u32 FUN_0202E6F0() +{ + if (UNK_021C59F0 == NULL) + { + return 1; + } + + switch (UNK_021C59F0->unkDAC) + { + case 0: + if (FUN_0202D21C() != 0) + { + FUN_0202C770(); + UNK_021C59F0->unkDAC = 1; + } + else if (FUN_0202D1E4() == 0) + { + FUN_0202D100(); + UNK_021C59F0->unkDAC = 2; + } + break; + + case 1: + if (FUN_0202D1E4() == 0) + { + FUN_0202D100(); + UNK_021C59F0->unkDAC = 2; + } + break; + case 2: + if (FUN_0202D1C8() != 0) + { + return 1; + } + + if (FUN_0202D200() != 0) + { + UNK_021C59F0->unkDAC = 1; + } + break; + } + + return 0; +} + +THUMB_FUNC BOOL FUN_0202E784() +{ + if (UNK_021C59F0 != NULL && UNK_021C59F0->unkDAA == 0) + { + UNK_021C59F0->unkDAA = 1; + FUN_0202D100(); + return TRUE; + } + + return FALSE; +} + +THUMB_FUNC void FUN_0202E7B0(u32 param0) +{ + if (UNK_021C59F0 != NULL) + { + if (param0 != 0) + { + UNK_021C59F0->unkDAA = 2; + return; + } + + UNK_021C59F0->unkDAA = 0; + FUN_0202E500(); + } +} + +THUMB_FUNC void FUN_0202E7D8() +{ + FreeToHeap(UNK_021C59F0->unkCBC); + FreeToHeap(UNK_021C59F0->unkCA4); + FreeToHeap(UNK_021C59F0); + + UNK_021C59F0 = NULL; +} + +THUMB_FUNC u32 FUN_0202E810() +{ + if (FUN_02030F40() == 0) + { + return 0; + } + + u32 count = 0; + for (int i = 0; i < 0x10; i++) + { + if (UNK_021C59F0->unkC84[i] != 0) + { + count++; + } + } + + return count; +} + +THUMB_FUNC s32 FUN_0202E844(u32 param0) +{ + int i; + u32 count = 0; + for (i = 0; i < 0x10; i++) + { + if (UNK_021C59F0->unkC84[i] == 0) + { + continue; + } + + if (count == param0) + { + return i; + } + + count++; + } + + GF_AssertFail(); + return 0; +} + +THUMB_FUNC u8 FUN_0202E878() +{ + return UNK_021C59F0->unkCB4; +} + +THUMB_FUNC void FUN_0202E88C() +{ + UNK_021C59F0->unkCB4 = 0; +} + +THUMB_FUNC s32 FUN_0202E8A0(s32 param0) +{ + if (UNK_021C59F0->unkC84[param0] != 0) + { + if (UNK_021C59F0->unk054[param0].unk50.unk06 == 0) + { + return 1; + } + else + { + return UNK_021C59F0->unk054[param0].unk50.unk06; + } + } + + return 0; +} + +THUMB_FUNC s32 FUN_0202E8D0(s32 param0) +{ + for (int i = 0xf; i >= 0; i--) + { + s32 ret = FUN_0202E8A0(i); + if (ret > param0 && 8 > ret) + { + return i; + } + } + + return -1; +} + +THUMB_FUNC s32 FUN_0202E8F4() +{ + if (FUN_0202E810() == 0) + { + return -1; + } + + for (int i = 0xf; i >= 0; i--) + { + if (UNK_021C59F0->unkC84[i] != 0 && FUN_0202EFE4(UNK_021C59F0->unk054[i].unk04)) + { + s32 ret2 = FUN_0202E8A0(i); + if (ret2 > 1 && ret2 < 8) + { + return i; + } + } + } + + return -1; +} + +THUMB_FUNC s32 FUN_0202E950() +{ + if (FUN_0202E810() == 0) + { + return -1; + } + + for (int i = 0xf; i >= 0; i--) + { + if (UNK_021C59F0->unkC84[i] != 0 && FUN_0202EFE4(UNK_021C59F0->unk054[i].unk04)) + { + + return i; + } + } + + s32 ret = FUN_0202E8D0(1); + if (ret == -1) + { + return FUN_0202E8D0(0); + } + + return ret; +} + +THUMB_FUNC void FUN_0202E9AC(u32 param0, struct PlayerData *player_data) +{ + int i; + u32 count = 0; + for (i = 0; i < 0x10; i++) + { + if (UNK_021C59F0->unkC84[i] == 0) + { + continue; + } + + if (param0 == count) + { + + PlayerProfile_Copy(FUN_0202EF84(i), player_data); + return; + } + + count++; + } +} + +THUMB_FUNC u32 FUN_0202E9E8(u32 param0) +{ + if (FUN_0202CBD4() == 2) + { + FUN_0202C770(); + return 0; + } + + if (FUN_0202CBD4() == 1) + { + s32 ret = FUN_02033534(); + UNK_021C59F0->unkDA8 = (u8)UNK_021C59F0->unk054[param0].unk36; + if (FUN_0202D8B0(ret) != 0) + { + FUN_0202C4D8(1, UNK_021C59F0->unk054[param0].unk04, 0); + } + else + { + FUN_0202D034(1, &UNK_021C59F0->unk054[param0]); + } + + return 1; + } + + return 0; +} + +THUMB_FUNC void FUN_0202EA54() +{ + for (int i = 0; i < 0x10; i++) + { + if (UNK_021C59F0->unkC84[i] == 0) + { + continue; + } + if (UNK_021C59F0->unkC84[i] == 0) + { + continue; + } + + UNK_021C59F0->unkC84[i]--; + + if (UNK_021C59F0->unkC84[i] == 0) + { + UNK_021C59F0->unkCB4 = 1; + } + } +} + +THUMB_FUNC void FUN_0202EA9C() +{ + s32 res = FUN_02033534(); + struct PlayerData *player_data = FUN_0202EF70(); + + if (res != 0xf) + { + struct UnkStruct_0202E29C_sub2 *res = &UNK_021C59F0->unkCC4; + GF_ASSERT((s32)FUN_02023AC4() <= 0x20); + GF_ASSERT(PlayerProfile_sizeof() == 0x20); + + MI_CpuCopy8(player_data, &res->unk08.unk08, PlayerProfile_sizeof()); + + MI_CpuCopy8(UNK_021C59F0->unkCBC, res->unk08.unk28, FUN_02023AC4()); + + res->unk00 = PlayerProfile_GetTrainerID(player_data); + res->unk04 = (u8)FUN_02033534(); + res->unk05 = FUN_0203354C(); + + MI_CpuCopy8(&UNK_021C59F0->unkCA8, &res->unk08.unk00, sizeof(struct MailMessage)); + res->unk08.unk4C = (u8)FUN_0202D358(); + } + else + { + struct UnkStruct_0202E29C_sub2 *res = &UNK_021C59F0->unkCC4; + res->unk00 = PlayerProfile_GetTrainerID(player_data); + res->unk04 = (u8)FUN_02033534(); + res->unk05 = FUN_0203354C(); + + MI_CpuCopy8(&UNK_021C59F0->unk000, &res->unk08, sizeof(struct UnkStruct_0202E29C_sub3)); + } + + DC_FlushRange(&UNK_021C59F0->unkCC4, sizeof(struct UnkStruct_0202E29C_sub2)); + FUN_0202CB7C(&UNK_021C59F0->unkCC4, sizeof(struct UnkStruct_0202E29C_sub2)); +} + +THUMB_FUNC void FUN_0202EB7C() +{ + struct UnkStruct_0202E29C_sub2 *r4 = &UNK_021C59F0->unkCC4; + if (r4->unk06 != FUN_0202EDB8()) + { + r4->unk06 = (u8)FUN_0202EDB8(); + DC_FlushRange(&UNK_021C59F0->unkCC4, sizeof(struct UnkStruct_0202E29C_sub2)); + FUN_0202CB7C(&UNK_021C59F0->unkCC4, sizeof(struct UnkStruct_0202E29C_sub2)); + + FUN_0202D240(&UNK_021C59F0->unkCC4, + sizeof(struct UnkStruct_0202E29C_sub2), + UNK_021C59F0->unkCC0, + UNK_021C59E8); + } +} + +THUMB_FUNC void FUN_0202EBD0(u16 param0) +{ + u32 r5 = FUN_0202CBD4(); + FUN_0202DF54(); + FUN_0202EB7C(); + + if (FUN_0202D19C() == 0 && FUN_0202EE24() == 0 && UNK_021C59F0->unkDAD_2) + { + UNK_021C59F0->unkDAD_0 = 1; + } + + if (UNK_021C59F0->unkDA6 == 0xFFFF) + { + UNK_021C59F0->unkDA6 = param0; + } + + if (UNK_021C59F0->unkDAD_1 && + UNK_021C59F0->unkDA6 > param0) + { + UNK_021C59F0->unkDAD_0 = 1; + } + + if (FUN_0202CBE8() == 25) + { + FUN_020335D0(0); + } + + switch (r5) + { + case 0: + if (UNK_021C59F0->unkDAA == 1) + { + FUN_0202E7D8(); + return; + } + else if (UNK_021C59F0->unkDAA == 2) + { + UNK_021C59F0->unkDAA = 3; + } + break; + + case 1: + if (UNK_021C59F0->unkDAA == 1 && FUN_0202D178() != 0) + { + return; + } + + if (UNK_021C59F0->unkDAA == 2 && FUN_0202D178() != 0) + { + return; + } + + break; + + case 8: + case 9: + + if (UNK_021C59F0 != NULL) + { + UNK_021C59F0->unkDAD_0 = 1; + return; + } + break; + + case 7: + u16 r0 = FUN_0202CDA4(); + if (UNK_021C59F0->unkDA9 == 0) + { + UNK_021C59F0->unkDA4 = r0; + UNK_021C59F0->unkDA9 = 5; + } + else + { + UNK_021C59F0->unkDA9--; + } + + u16 r5 = UNK_021C59F0->unkDA4; + if (UNK_021C59F0->unkDAD_3) + { + UNK_021C59E8++; + } + + FUN_0202EA9C(); + + FUN_0202CF84(0, + UNK_021C59E8, + r5, + FUN_0202D858((u16)FUN_02033534()), + FUN_0202EEE8((u16)FUN_02033534()), + UNK_021C59F0->unkDAD_5); + + UNK_021C59F0->unkDA8 = (u8)r5; + + break; + } +} + +THUMB_FUNC void FUN_0202ED70(u16 param0) +{ + if (UNK_021C59F0 != NULL) + { + FUN_0202EBD0(param0); + } +} + +THUMB_FUNC u32 FUN_0202ED84(u16 param0) +{ + if (UNK_021C59F0 == NULL) + { + return 0; + } + + if (FUN_0202CBD4() != 4) + { + return 0; + } + + if ((FUN_0202CB8C() & (1 << param0)) == 0) + { + return 0; + } + + return 1; +} + +THUMB_FUNC u32 FUN_0202EDB8() +{ + u32 count = 0; + for (int i = 0; i < 8; i++) + { + if (FUN_0202ED84((u16)i) != 0) + { + count++; + } + } + + return count; +} + +THUMB_FUNC BOOL FUN_0202EDD8() +{ + if (UNK_021C59F0 != NULL) + { + if (UNK_021C59F0->unkDAA == 3) + { + return TRUE; + } + } + + return FALSE; +} + +THUMB_FUNC BOOL FUN_0202EDF8() +{ + if (UNK_021C59F0 != NULL) + { + return TRUE; + } + + return FALSE; +} + +THUMB_FUNC u32 FUN_0202EE0C() +{ + if (UNK_021C59F0 != NULL) + { + return FUN_0202D1C8(); + } + + return 1; +} + +THUMB_FUNC u32 FUN_0202EE24() +{ + if (UNK_021C59F0 != NULL) + { + return FUN_0202CB8C() & 0xFFFE; + } + + return 0; +} + +THUMB_FUNC BOOL FUN_0202EE44() +{ + if (FUN_0202EE60() && FUN_0202CBE8() == 0x14) + { + return TRUE; + } + + return FALSE; +} + +THUMB_FUNC BOOL FUN_0202EE60() +{ + if (UNK_021C59F0 != NULL && UNK_021C59F0->unkDAD_0) + { + return TRUE; + } + + return FALSE; +} + +THUMB_FUNC void FUN_0202EE84(u32 param0) +{ + if (UNK_021C59F0 != NULL) + { + UNK_021C59F0->unkDAD_2 = (u8)param0; + } +} + +THUMB_FUNC void FUN_0202EEB0(u32 param0) +{ + if (UNK_021C59F0 != NULL) + { + UNK_021C59F0->unkDAD_1 = (u8)param0; + + UNK_021C59F0->unkDA6 = 0xFFFF; + } +} + +THUMB_FUNC u32 FUN_0202EEE8(u16 param0) +{ + u16 r4 = WM_GetDispersionBeaconPeriod(); + GF_ASSERT(param0 < 0x1a); + + if (param0 == 0xa) + { + return (u32)(r4 << 0xe) >> 0x10; + } + + if (param0 == 9 || param0 == 0xd) + { + return (u32)(r4 << 0xe) >> 0x10; + } + + return r4; +} + +THUMB_FUNC struct UnkStruct_0202E29C_sub *FUN_0202EF18(u32 param0) +{ + if (UNK_021C59F0 != NULL) + { + if (UNK_021C59F0->unkC84[param0] != 0) + { + return &UNK_021C59F0->unk054[param0]; + } + } + + return NULL; +} + +THUMB_FUNC struct UnkStruct_0202E29C_sub4 *FUN_0202EF44(s32 param0) +{ + if (UNK_021C59F0 != NULL) + { + if (UNK_021C59F0->unkC84[param0] != 0) + { + return &UNK_021C59F0->unk054[param0].unk50; + } + } + + return NULL; +} + +THUMB_FUNC struct PlayerData *FUN_0202EF70() +{ + return UNK_021C59F0->unkCB8; +} + +THUMB_FUNC struct PlayerData *FUN_0202EF84(int param0) +{ + if (UNK_021C59F0->unkC84[param0] == 0) + { + return NULL; + } + + struct UnkStruct_0202E29C_sub4 *r0 = &UNK_021C59F0->unk054[param0].unk50; + + return &r0->unk10; +} + +THUMB_FUNC void FUN_0202EFAC(u8 *param0, s32 param1) +{ + if (UNK_021C59F0 != NULL) + { + GF_ASSERT(param1 < 8); + + MI_CpuCopy8(param0, UNK_021C59F0->unkC54[param1], 6); + } +} + +#ifdef NONMATCHING +THUMB_FUNC BOOL FUN_0202EFE4(u8 *param0) +{ + u8 (*ptr)[6] = UNK_021C59F0->unkC54; + for (int i = 0; i < 8; i++) + { + if (ptr[i][0] != param0[0]) + continue; + if (ptr[i][1] != param0[1]) + continue; + if (ptr[i][2] != param0[2]) + continue; + if (ptr[i][3] != param0[3]) + continue; + if (ptr[i][4] != param0[4]) + continue; + if (ptr[i][5] != param0[5]) + continue; + return TRUE; + } + + return FALSE; +} +#else +THUMB_FUNC asm BOOL FUN_0202EFE4(u8 *param0) +{ + // clang-format off + push {r4-r5} + ldr r2, =UNK_021C59E8 + mov r1, #0x0 + ldr r3, [r2, #0x8] + ldr r2, =0x00000C54 + add r2, r3, r2 + ldrb r3, [r0, #0x0] +_0202EFF2: + ldrb r4, [r2, #0x0] + cmp r4, r3 + bne _0202F026 + ldrb r5, [r2, #0x1] + ldrb r4, [r0, #0x1] + cmp r5, r4 + bne _0202F026 + ldrb r5, [r2, #0x2] + ldrb r4, [r0, #0x2] + cmp r5, r4 + bne _0202F026 + ldrb r5, [r2, #0x3] + ldrb r4, [r0, #0x3] + cmp r5, r4 + bne _0202F026 + ldrb r5, [r2, #0x4] + ldrb r4, [r0, #0x4] + cmp r5, r4 + bne _0202F026 + ldrb r5, [r2, #0x5] + ldrb r4, [r0, #0x5] + cmp r5, r4 + bne _0202F026 + mov r0, #0x1 + pop {r4-r5} + bx lr +_0202F026: + add r1, r1, #0x1 + add r2, r2, #0x6 + cmp r1, #0x8 + blt _0202EFF2 + mov r0, #0x0 + pop {r4-r5} + bx lr + // clang-format on +} +#endif + +THUMB_FUNC u32 FUN_0202F03C() +{ + if (UNK_021C59F0 != NULL) + { + return UNK_021C59F0->unkDAD_4; + } + + return 0; +} + +THUMB_FUNC void FUN_0202F05C() +{ + if (UNK_021C59F0 != NULL) + { + UNK_021C59F0->unkDAD_4 = 1; + } +} + +THUMB_FUNC void FUN_0202F078(struct MailMessage *mail_message) +{ + MI_CpuCopy8(mail_message, &UNK_021C59F0->unkCA8, sizeof(struct MailMessage)); +} + +THUMB_FUNC void FUN_0202F094(void *param0) +{ + MI_CpuCopy8(param0, UNK_021C59F0->unkCBC, FUN_02023AC4()); +} + +THUMB_FUNC void FUN_0202F0B8() +{ + FUN_0202EA9C(); + FUN_0202D240(&UNK_021C59F0->unkCC4, + sizeof(struct UnkStruct_0202E29C_sub2), + UNK_021C59F0->unkCC0, + UNK_021C59E8); +} + +THUMB_FUNC u32 FUN_0202F0DC(u8 param0) +{ + int i; + u32 r5 = 0; + for (i = 0; i < 0x10; i++) + { + struct UnkStruct_0202E29C_sub4 *res = FUN_0202EF44(i); + if (res != 0 && res->unk04 == param0) + { + r5 += res->unk06; + } + } + + return r5; +} + +THUMB_FUNC BOOL FUN_0202F104() +{ + return FUN_0202D2D0(); +} + +THUMB_FUNC void FUN_0202F10C(struct UnkStruct_0202E29C_sub3 *param0) +{ + MI_CpuCopy8(param0, &UNK_021C59F0->unk000, sizeof(struct UnkStruct_0202E29C_sub3)); + FUN_0202F0B8(); +} + +THUMB_FUNC u8 *FUN_0202F124(u32 param0) +{ + if (UNK_021C59F0 != NULL && UNK_021C59F0->unkC84[param0] != 0) + { + struct UnkStruct_0202E29C_sub4 *r0 = &UNK_021C59F0->unk054[param0].unk50; + return r0->unk08; + } + + return NULL; +} diff --git a/arm9/src/unk_0202F150.c b/arm9/src/unk_0202F150.c index 23a7de85..09b5b56f 100644 --- a/arm9/src/unk_0202F150.c +++ b/arm9/src/unk_0202F150.c @@ -1,38 +1,27 @@ #include "unk_0202F150.h" +#include "unk_02031480.h" +#include "unk_02031734.h" +#include "unk_0202E29C.h" + + struct { u8 unk00; struct UnkStruct0202F150 *unk04; } UNK_021C59F4; -vu8 UNK_02105D58 = 4; vu8 UNK_02105D59 = 4; +vu8 UNK_02105D58 = 4; -extern int FUN_02033534(); -extern u32 FUN_0202D858(u16 param0); -extern void FUN_02031480(u32 param0); extern void FUN_0202D7D8(u8 *param0, u32 param1, struct UnkStruct0202F150_sub1 *param2); extern u32 FUN_0200CA60(void (*param0)(), u32 param1, u32 param2); extern void FUN_0202D394(struct UnkStruct0202F150_sub1 *param0, u8 *param1, u32 param2); extern void FUN_0202D804(u8 *param0); -extern u32 FUN_0202E5F8(u32 param0, u32 param1, u32 param2); extern void FUN_0202D330(void (*param0)(int)); -extern u32 FUN_0202E66C(u32 param0, u32 param1); extern void MOD04_021D83C0(); -extern u32 FUN_0202E784(); -extern void FUN_020314D0(); extern void FUN_0202DBA4(); extern void FUN_0200CAB4(u32 param0); extern void FUN_0202D824(u8 *param0); -extern u32 FUN_0202E9E8(u32 param0); -extern u32 FUN_0202F03C(); -extern u32 FUN_0202EE24(); -extern void FUN_02031CDC(); -extern void FUN_0202EBD0(u16 param0); -extern void FUN_0202ED70(u32 param0); -extern void FUN_020335F4(u32 param0); -extern void FUN_020315A4(); -extern void FUN_0202E538(); extern u32 MOD04_021D78FC(void *param0, u32 param1); extern u32 FUN_0202CBD4(); extern void FUN_0202D4BC(void *param0); @@ -53,12 +42,7 @@ extern s16 FUN_0202D9A0(u32 param0); extern u32 FUN_0202DA04(u32 param0); extern void *FUN_0202DA40(u32 param0, u32 param1, u16 param2); extern u32 MOD04_021D8018(); -extern u32 FUN_0202EDF8(); extern u16 FUN_0202D19C(); -extern void FUN_020334E8(u32 param0, u32 param1); -extern u32 FUN_0202EE60(); -extern u32 FUN_0202D884(u16 param0); -extern void FUN_0202F05C(); extern void GF_RTC_CopyDateTime(RTCDate *, RTCTime *); extern void FUN_0202D830(u8 *param0, u32 param1); extern u32 MOD04_021D8624(); @@ -69,7 +53,7 @@ THUMB_FUNC u32 FUN_0202F150(u32 param0, u32 param1) UNK_021C59F4.unk00 = 0; if (param0 != 0) { - u32 res = FUN_0202D858((u16)FUN_02033534()) + 1; + int res = FUN_0202D858((u16)FUN_02033534()) + 1; if (UNK_021C59F4.unk04 != 0) { @@ -111,7 +95,7 @@ THUMB_FUNC u32 FUN_0202F150(u32 param0, u32 param1) r4 = 1; if (UNK_021C59F4.unk04 == 0) { - ErrorHandling(); + GF_AssertFail(); } } @@ -148,7 +132,7 @@ THUMB_FUNC void FUN_0202F2F0() UNK_021C59F4.unk04->unk67F = 0; UNK_021C59F4.unk04->unk680 = 0; - int res = (int)FUN_0202D858((u16)FUN_02033534()) + 1; + int res = FUN_0202D858((u16)FUN_02033534()) + 1; MI_CpuFill8(UNK_021C59F4.unk04->unk458, 0, UNK_021C59F4.unk04->unk658 * res); @@ -236,7 +220,7 @@ THUMB_FUNC void FUN_0202F5A4() UNK_021C59F4.unk04->unk62C = 0; UNK_021C59F4.unk04->unk62D = 0; - int res = (int)FUN_0202D858((u16)FUN_02033534()) + 1; + int res = FUN_0202D858((u16)FUN_02033534()) + 1; MI_CpuFill8(UNK_021C59F4.unk04->unk458, 0, UNK_021C59F4.unk04->unk658 * res); @@ -352,9 +336,9 @@ THUMB_FUNC void FUN_0202F910(int param0) FUN_0202F820(param0); } -THUMB_FUNC u32 FUN_0202F918(u32 param0, u32 param1, u32 param2, u32 param3) +THUMB_FUNC BOOL FUN_0202F918(u32 param0, u32 param1, u32 param2, u32 param3) { - u32 ret = 1; + BOOL ret = TRUE; if (FUN_02033534() < 0x13) { ret = FUN_0202E5F8(param0, param1, param3); @@ -478,7 +462,7 @@ THUMB_FUNC void FUN_0202FA5C() } else { - if (FUN_0202E784() != 0) + if (FUN_0202E784()) { r4 = 1; } @@ -541,7 +525,7 @@ THUMB_FUNC void FUN_0202FB58() } } -THUMB_FUNC u32 FUN_0202FB80() +THUMB_FUNC BOOL FUN_0202FB80() { FUN_02031CDC(); @@ -591,7 +575,7 @@ THUMB_FUNC u32 FUN_0202FB80() FUN_020335F4(0); FUN_020315A4(); - return 1; + return TRUE; } THUMB_FUNC void FUN_0202FC60() @@ -883,7 +867,7 @@ THUMB_FUNC void FUN_0202FEEC() } int st0 = FUN_02031228((u16)FUN_02033534()); - int r6 = (int)FUN_0202D858((u16)FUN_02033534()) + 1; + int r6 = FUN_0202D858((u16)FUN_02033534()) + 1; if (UNK_02105D59 == 2 || UNK_02105D59 == 0) { @@ -1050,7 +1034,7 @@ THUMB_FUNC void FUN_02030074() } } -THUMB_FUNC void FUN_02030238(u32 param0, void *param1, u32 param2) +THUMB_FUNC void FUN_02030238(u32 param0, u8 *param1, u32 param2) { if (UNK_021C59F4.unk04->unk66F[0] != 0) { @@ -1100,7 +1084,7 @@ THUMB_FUNC void FUN_0203026C(u32 param0, u8 *param1, u32 param2) if (FUN_0202FA28() == 1) { int r6 = FUN_02031228((u16)FUN_02033534()); - int st4 = (int)FUN_0202D858((u16)FUN_02033534()) + 1; + int st4 = FUN_0202D858((u16)FUN_02033534()) + 1; int r4 = 0; while (r4 < st4) @@ -1149,7 +1133,7 @@ THUMB_FUNC void FUN_0203026C(u32 param0, u8 *param1, u32 param2) FUN_0202D3A4(&UNK_021C59F4.unk04->unk470, param1 + 4, param1[3], 0x5FF); } -THUMB_FUNC void FUN_020303BC(u32 param0, u8 *param1, u16 param2) +THUMB_FUNC void FUN_020303BC(u32 param0, u8 *param1, u32 param2) { if (UNK_021C59F4.unk04->unk66F[param0] != 0) { @@ -1162,7 +1146,7 @@ THUMB_FUNC void FUN_020303BC(u32 param0, u8 *param1, u16 param2) FUN_020303F4(param0, param1, param2); } -THUMB_FUNC void FUN_020303F4(u32 param0, u8 *param1, u16 param2) +THUMB_FUNC void FUN_020303F4(u32 param0, u8 *param1, u32 param2) { #pragma unused(param2) UNK_021C59F4.unk04->unk638[param0]--; @@ -1207,7 +1191,7 @@ THUMB_FUNC void FUN_020304D4(u32 param0) return; } - ErrorHandling(); + GF_AssertFail(); } THUMB_FUNC void FUN_020304F0(u32 param0) @@ -1218,7 +1202,7 @@ THUMB_FUNC void FUN_020304F0(u32 param0) return; } - ErrorHandling(); + GF_AssertFail(); } THUMB_FUNC void FUN_0203050C() @@ -1757,7 +1741,7 @@ THUMB_FUNC u32 FUN_02030B3C(u32 param0, u8 *param1, u32 param2) { if (FUN_02031190() != 0) { - ErrorHandling(); + GF_AssertFail(); return 0; } @@ -1946,7 +1930,7 @@ THUMB_FUNC void FUN_02030DFC() { if (UNK_021C59F4.unk04->unk68B == 0) { - int r7 = (int)FUN_0202D858((u16)FUN_02033534()) + 1; + int r7 = FUN_0202D858((u16)FUN_02033534()) + 1; int r4; for (r4 = 0; r4 < r7; r4++) { @@ -2025,9 +2009,9 @@ THUMB_FUNC u32 FUN_02030E7C(u16 param0) return 0; } -THUMB_FUNC u32 FUN_02030F20() +THUMB_FUNC s32 FUN_02030F20() { - u32 r4 = 0; + s32 r4 = 0; for (int i = 0; i < 8; i++) { if (FUN_02030E7C((u16)i) != 0) @@ -2039,11 +2023,11 @@ THUMB_FUNC u32 FUN_02030F20() return r4; } -THUMB_FUNC u32 FUN_02030F40() +THUMB_FUNC BOOL FUN_02030F40() { if (UNK_021C59F4.unk04 != NULL && FUN_02033534() >= 0x13) { - return 1; + return TRUE; } return FUN_0202EDF8(); @@ -2227,17 +2211,17 @@ THUMB_FUNC u32 FUN_020311E8() return FUN_0202EE24(); } -THUMB_FUNC u32 FUN_020311F0() +THUMB_FUNC BOOL FUN_020311F0() { if (FUN_02031280() != 0) { - return 0; + return FALSE; } if (UNK_021C59F4.unk04 != NULL && UNK_021C59F4.unk04->unk689 != 0) { FUN_020334E8(1, 1); - return 1; + return TRUE; } return FUN_0202EE60(); @@ -2258,12 +2242,12 @@ THUMB_FUNC int FUN_02031228(u16 param0) return 0x26; } -THUMB_FUNC u32 FUN_02031248(u32 param0) +THUMB_FUNC int FUN_02031248(u32 param0) { return FUN_0202D858((u16)param0) + 1; } -THUMB_FUNC u32 FUN_02031258(u32 param0) +THUMB_FUNC int FUN_02031258(u32 param0) { return FUN_0202D884((u16)param0) + 1; } @@ -2475,4 +2459,4 @@ THUMB_FUNC void FUN_02031468() { UNK_021C59F4.unk04->unk68A = 1; } -}
\ No newline at end of file +} diff --git a/arm9/src/unk_02031480.c b/arm9/src/unk_02031480.c new file mode 100644 index 00000000..9639cd74 --- /dev/null +++ b/arm9/src/unk_02031480.c @@ -0,0 +1,213 @@ +#include "unk_02031480.h" + +struct UnkStruct_02031480 +{ + u8 unk000[8][2]; + u8 unk010[8]; + u8 unk018[8][70]; + u8 unk248[8]; + u8 unk250; + u8 unk251; + u8 unk252; +}; + +static struct UnkStruct_02031480 *UNK_021C59FC; + +THUMB_FUNC void FUN_02031480(u32 heap_id) +{ + if (UNK_021C59FC == NULL) + { + UNK_021C59FC = AllocFromHeap(heap_id, sizeof(struct UnkStruct_02031480)); + MI_CpuFill8(UNK_021C59FC, 0, sizeof(struct UnkStruct_02031480)); + } + + for (int i = 0; i < 8; i++) + { + UNK_021C59FC->unk010[i] = 0xff; + } + UNK_021C59FC->unk250 = 0xff; + UNK_021C59FC->unk251 = 0xff; + UNK_021C59FC->unk252 = 0x00; +} + +THUMB_FUNC void FUN_020314D0() +{ + FreeToHeap(UNK_021C59FC); + UNK_021C59FC = NULL; +} + +THUMB_FUNC BOOL FUN_020314E8() +{ + if (UNK_021C59FC != NULL) + { + return TRUE; + } + + return FALSE; +} + +THUMB_FUNC void FUN_020314FC(u8 param0, u32 unused, u8 *param2) +{ +#pragma unused(unused) + u8 st0[3]; + + st0[0] = param2[0]; + + if (FUN_02031190() == 0) + { + + st0[1] = param0; + st0[2] = st0[0]; + + FUN_02030C4C(0x12, &st0[1]); + + UNK_021C59FC->unk010[param0] = st0[0]; + + for (int i = 0; i < 8; i++) + { + if (FUN_02030E7C((u16)i) != 0) + { + if (st0[0] != UNK_021C59FC->unk010[i]) + { + return; + } + } + } + + FUN_02030C4C(0x11, &st0[0]); + } +} + +THUMB_FUNC void FUN_02031560(u32 unused1, u32 unused2, u8 *param2) +{ +#pragma unused(unused1) +#pragma unused(unused2) + UNK_021C59FC->unk010[param2[0]] = param2[1]; +} + +THUMB_FUNC void FUN_02031574(u32 unused1, u32 unused2, u8 *param2) +{ +#pragma unused(unused1) +#pragma unused(unused2) + UNK_021C59FC->unk250 = *param2; +} + +THUMB_FUNC void FUN_02031588(u8 param0) +{ + UNK_021C59FC->unk251 = param0; + UNK_021C59FC->unk252 = 1; +} + +THUMB_FUNC void FUN_020315A4() +{ + if (UNK_021C59FC != NULL && UNK_021C59FC->unk252 != 0 && + FUN_020311D0(0x10, &UNK_021C59FC->unk251)) + { + UNK_021C59FC->unk252 = 0; + } +} + +THUMB_FUNC BOOL FUN_020315D8(u8 param0) +{ + if (UNK_021C59FC == NULL) + { + return TRUE; + } + + if (UNK_021C59FC->unk250 == param0) + { + return TRUE; + } + + return FALSE; +} + +THUMB_FUNC u8 FUN_020315FC(u8 index) +{ + return UNK_021C59FC->unk010[index]; +} + +THUMB_FUNC void FUN_0203160C(u32 param0, u32 unused, u8 *param2) +{ +#pragma unused(unused) + UNK_021C59FC->unk000[param0][0] = param2[0]; + UNK_021C59FC->unk000[param0][1] = param2[1]; +} + +THUMB_FUNC u32 FUN_02031628() +{ + return 2; +} + +THUMB_FUNC void FUN_0203162C(u8 param0, u8 param1) +{ + u8 st0[2] = { param0, param1 }; + + FUN_020311D0(0x13, st0); +} + +THUMB_FUNC int FUN_02031640(u32 param0, u8 param1) +{ + if (UNK_021C59FC == NULL) + { + return -1; + } + + if (UNK_021C59FC->unk000[param0][0] == param1) + { + return UNK_021C59FC->unk000[param0][1]; + } + + return -1; +} + +THUMB_FUNC void FUN_02031668() +{ + for (int i = 0; i < 8; i++) + { + MI_CpuFill8(UNK_021C59FC->unk000[i], 0, 2); + } +} + +THUMB_FUNC void FUN_0203168C() +{ + for (int i = 0; i < 8; i++) + { + UNK_021C59FC->unk248[i] = 0; + } +} + +THUMB_FUNC BOOL FUN_020316AC(u32 param0, void *param1) +{ + if (UNK_021C59FC != NULL) + { + MI_CpuCopy8(param1, UNK_021C59FC->unk018[param0], 0x46); + FUN_020311D0(0x14, UNK_021C59FC->unk018[param0]); + + return TRUE; + } + + return FALSE; +} + +THUMB_FUNC u8 *FUN_020316E0(int param0) +{ + if (UNK_021C59FC->unk248[param0] != 0) + { + return UNK_021C59FC->unk018[param0]; + } + + return NULL; +} + +THUMB_FUNC void FUN_02031704(u32 param0, u32 unused, void *param2) +{ +#pragma unused(unused) + UNK_021C59FC->unk248[param0] = 1; + MI_CpuCopy8(param2, UNK_021C59FC->unk018[param0], 0x46); +} + +THUMB_FUNC u32 FUN_02031730() +{ + return 0x46; +} diff --git a/arm9/src/unk_02031734.c b/arm9/src/unk_02031734.c new file mode 100644 index 00000000..57764b82 --- /dev/null +++ b/arm9/src/unk_02031734.c @@ -0,0 +1,2173 @@ +#include "global.h" +#include "unk_02031734.h" +#include "MI_memory.h" +#include "game_init.h" +#include "heap.h" +#include "player_data.h" +#include "unk_0202F150.h" +#include "unk_0202E29C.h" + + +const struct UnkStruct_02031734_const2 UNK_020EEC48 = { { (u32)FUN_02032B84, 0 } }; + +const struct UnkStruct_02031734_const1 UNK_020EEC50 = { + { (u32)FUN_0203213C, (u32)FUN_02032138, 0 } +}; + +const struct UnkStruct_02031734_const1 UNK_020EEC5C = { + { (u32)FUN_02032234, (u32)FUN_0203234C, 0 } +}; + +char UNK_02105D64[] = " FULL"; +char UNK_02105D5C[] = "FREAK"; +char UNK_02105D6C[] = " GAME"; + +struct UnkStruct_02031734 *UNK_021C5A00; + +extern void FUN_0202D8D0(u32 param0, u32 param1, u32 param2); +extern void FUN_02033E74(); +extern void FUN_0202D918(); +extern void FUN_02033ED0(); +extern void FUN_0202D298(); +extern void FUN_0202D344(u32 param0); +extern void FUN_0202D1B0(u8 param0); +extern void FUN_0202D36C(u32 param0); +extern u32 MOD04_021DDB08(); +extern void FUN_02033EEC(u32 param0); +extern u32 WM_GetLinkLevel(); +extern void FUN_0202DB14(struct SaveBlock2 *sav2, u32 param1); +extern s64 _ll_mul(s64, s64); +extern void FUN_0202DBE0(); +extern void FUN_0202DDE8(); +extern void FUN_0202D308(void (*param0)(u32, u32)); +extern void MOD04_021D83C0(); +extern s32 MOD04_021D7F8C(); +extern s32 MOD04_021D7800(u32 param0); +extern u32 MOD04_021D8494(s32 param0); +extern void MOD04_021D77C4(void (*param0)(u32, u8 *, u32), void (*param1)(u32, u8 *, u32)); +extern u32 MOD04_021D82BC(u8 param0); +extern void MOD04_021D836C(); +extern u32 MOD04_021DD718(u32 *param0, u32 *param1); +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) +{ + if (UNK_021C5A00 == NULL) + { + FUN_0202E49C(); + struct UnkStruct_02031734 *ptr = AllocFromHeap(0xf, sizeof(struct UnkStruct_02031734)); + UNK_021C5A00 = ptr; + MI_CpuFill8(ptr, 0, sizeof(struct UnkStruct_02031734)); + + UNK_021C5A00->unk3A = 0x32; + UNK_021C5A00->unk43 = 1; + UNK_021C5A00->unk28 = sav2; + + UNK_021C5A00->unk2C = Sav2_PlayerData_GetProfileAddr(sav2); + + UNK_021C5A00->unk3C = 2; + UNK_021C5A00->unk3D = 0; + UNK_021C5A00->unk48 = 0; + UNK_021C5A00->unk3F = param1; + + FUN_020312BC(UNK_021C5A00->unk0C); + FUN_0202D8D0(0, 0, 0); + + if (param1 != 9 && param1 != 0x11 && param1 != 0xf) + { + FUN_02033E74(); + } + } +} + +THUMB_FUNC void FUN_020317C0() +{ + if (UNK_021C5A00 != NULL) + { + FUN_0202D918(); + if (UNK_021C5A00->unk00 != NULL) + { + FreeToHeap(UNK_021C5A00->unk00); + } + + if (UNK_021C5A00->unk3F >= 0x13) + { + FUN_020168D0(0x31); + } + + FUN_02033ED0(); + FUN_0202E4F0(); + + FreeToHeap(UNK_021C5A00); + FUN_020168D0(0xf); + + UNK_021C5A00 = NULL; + } +} + +THUMB_FUNC BOOL FUN_02031810() +{ + if (UNK_021C5A00 != NULL) + { + return TRUE; + } + return FALSE; +} + +THUMB_FUNC void FUN_02031824(struct SaveBlock2 *sav2) +{ + if (UNK_021C5A00 == NULL) + { + FUN_02016828(3, 0xf, 0xe000); + FUN_02031734(sav2, 0xa); + + UNK_021C5A00->unk40 = 0; + FUN_02031D20(FUN_02031D30, 0x32); + } +} + +THUMB_FUNC void FUN_02031860() +{ + if (UNK_021C5A00 != NULL) + { + FUN_02031468(); + FUN_02031D20(FUN_020323CC, 0); + } +} + +THUMB_FUNC void FUN_02031880() +{ + FUN_0202FC60(); + UNK_021C5A00->unk38 = FUN_02031190(); + + FUN_02031D20(FUN_020321B8, 0); +} + +THUMB_FUNC void FUN_020318A4(u8 param0) +{ + UNK_021C5A00->unk4F = param0; +} + +THUMB_FUNC void FUN_020318B4() +{ + FUN_02031D20(FUN_02032028, 0); +} + +THUMB_FUNC BOOL FUN_020318C4() +{ + struct UnkStruct_02031734_const1 st0 = UNK_020EEC50; + + u32 r1 = (u32)UNK_021C5A00->unk24; + + if (UNK_021C5A00 == NULL) + { + return FALSE; + } + + for (u32 i = 0; st0.unk00[i] != 0; i++) + { + + if (r1 == st0.unk00[i]) + { + return TRUE; + } + } + + return FALSE; +} + +THUMB_FUNC void FUN_02031914() +{ + FUN_02031D20(FUN_02032178, 0); +} + +THUMB_FUNC void FUN_02031924() +{ + UNK_021C5A00->unk4C = 1; +} + +THUMB_FUNC void FUN_02031934() +{ + FUN_0202E49C(); + FUN_02031D20(FUN_02032194, 0); +} + +THUMB_FUNC void FUN_02031948(struct SaveBlock2 *sav2, u8 param1, u8 param2, u32 param3) +{ + if (FUN_02030F40() == 0) + { + FUN_02016828(3, 0xf, 0x7080); + FUN_02031734(sav2, param1); + UNK_021C5A00->unk40 = param2; + UNK_021C5A00->unk30 = param3; + FUN_02031D20(FUN_020321D0, 0); + } +} + +THUMB_FUNC void FUN_02031990(struct SaveBlock2 *sav2, u8 param1, u8 param2, u32 param3) +{ + if (FUN_02030F40() == 0) + { + FUN_02016828(3, 0xf, 0x7080); + FUN_02031734(sav2, param1); + UNK_021C5A00->unk40 = param2; + UNK_021C5A00->unk30 = param3; + FUN_02031D20(FUN_0203224C, 0); + } +} + +THUMB_FUNC void FUN_020319D8(u8 param0) +{ + UNK_021C5A00->unk3E = param0; + FUN_02031D20(FUN_02032298, 0); +} + +THUMB_FUNC void FUN_020319F4() +{ + FUN_0202FCA8(); + FUN_02031D20(FUN_02032364, 0); +} + +THUMB_FUNC void FUN_02031A08() +{ + if (UNK_021C5A00 != NULL) + { + FUN_02031D20(FUN_02032440, 5); + } +} + +THUMB_FUNC void FUN_02031A24() +{ + FUN_0202D298(); +} + +THUMB_FUNC BOOL FUN_02031A2C() +{ + struct UnkStruct_02031734_const1 st0 = UNK_020EEC5C; + + u32 r1 = (u32)UNK_021C5A00->unk24; + + if (UNK_021C5A00 == NULL) + { + return FALSE; + } + + for (u32 i = 0; st0.unk00[i] != 0; i++) + { + + if (r1 == st0.unk00[i]) + { + return TRUE; + } + } + + return FALSE; +} + +THUMB_FUNC void FUN_02031A7C(struct SaveBlock2 *sav2) +{ + if (UNK_021C5A00 == NULL) + { + if (FUN_02016828(3, 0xf, 0x7080) == 0) + { + FUN_020335E0(); + } + + FUN_02031734(sav2, 9); + UNK_021C5A00->unk3F = 9; + UNK_021C5A00->unk40 = 0; + FUN_02031D20(FUN_02032478, 0); + } +} + +THUMB_FUNC void FUN_02031AC8(u8 param0) +{ + UNK_021C5A00->unk3E = param0; + UNK_021C5A00->unk38 = 3; + FUN_0202D344(1); + FUN_02033E74(); + FUN_02031D20(FUN_02032628, 0); +} + +THUMB_FUNC s32 FUN_02031AF4() +{ + if (UNK_021C5A00 == NULL) + { + return -1; + } + if (UNK_021C5A00->unk24 == FUN_0203279C) + { + return 1; + } + + if (UNK_021C5A00->unk24 == FUN_020327B4) + { + return -1; + } + + return 0; +} + +THUMB_FUNC BOOL FUN_02031B2C() +{ + if (UNK_021C5A00 == NULL) + { + return FALSE; + } + if (UNK_021C5A00->unk24 == FUN_020327FC) + { + return TRUE; + } + + return FALSE; +} + +THUMB_FUNC void FUN_02031B50() +{ + FUN_0202D344(0); + if (UNK_021C5A00->unk44 != 1 || UNK_021C5A00->unk45 != 1 || UNK_021C5A00->unk3F == 9) + { + FUN_020334E8(0, 0); + } + + FUN_02033ED0(); + UNK_021C5A00->unk3F = 9; + UNK_021C5A00->unk48 = 0; + FUN_0202D1B0(UNK_021C5A00->unk3C); + + if (FUN_02031190() == 0) + { + FUN_0202D36C(1); + FUN_02031D20(FUN_020323DC, 0xf); + return; + } + + FUN_02031D20(FUN_02032424, 5); +} + +THUMB_FUNC u32 FUN_02031BD0() +{ + if (UNK_021C5A00 == NULL) + { + return 1; + } + + if (UNK_021C5A00->unk24 != FUN_020324F8) + { + return 1; + } + + return 0; +} + +THUMB_FUNC void FUN_02031BF4() +{ + if (UNK_021C5A00 != NULL) + { + FUN_02031D20(FUN_02032440, 5); + } +} + +THUMB_FUNC void FUN_02031C10() +{ + if (UNK_021C5A00 != NULL) + { + UNK_021C5A00->unk48 = 1; + FUN_0202D344(1); + } +} + +THUMB_FUNC void FUN_02031C2C() +{ + if (UNK_021C5A00 != NULL) + { + UNK_021C5A00->unk48 = 1; + FUN_0202D344(1); + FUN_02031D20(FUN_02032850, 0); + } +} + +THUMB_FUNC void FUN_02031C54() +{ + UNK_021C5A00->unk3F = 0x12; +} + +THUMB_FUNC void FUN_02031C64() +{ + UNK_021C5A00->unk3F = 0x9; +} + +THUMB_FUNC void FUN_02031C74(struct SaveBlock2 *sav2, u8 param1) +{ + if (FUN_02030F40() == 0) + { + FUN_02016828(3, 0xf, 0x7080); + FUN_02031734(sav2, param1); + FUN_02031D20(FUN_02032E00, 0); + } +} + +THUMB_FUNC void FUN_02031CA8(struct SaveBlock2 *sav2, u8 param1) +{ + if (FUN_02030F40() == 0) + { + FUN_02016828(3, 0xf, 0x7080); + FUN_02031734(sav2, param1); + FUN_02031D20(FUN_02032E48, 0); + } +} + +THUMB_FUNC void FUN_02031CDC() +{ + if (UNK_021C5A00 != NULL && UNK_021C5A00->unk24 != 0) + { + ((void (*)(void))(UNK_021C5A00->unk24))(); + } + if (FUN_02033590() != 0) + { + FUN_02033EEC(3 - MOD04_021DDB08()); + return; + } + + if (FUN_0202EDF8()) + { + FUN_02033EEC(3 - WM_GetLinkLevel()); + } +} + +THUMB_FUNC void FUN_02031D20(void (*param0)(), u32 param1) +{ + UNK_021C5A00->unk24 = param0; + UNK_021C5A00->unk3A = (u16)param1; +} + +THUMB_FUNC void FUN_02031D30() +{ + if (UNK_021C5A00->unk3A != 0) + { + UNK_021C5A00->unk3A--; + return; + } + + if (!FUN_0202E4C8()) + { + return; + } + + FUN_0202E29C(UNK_021C5A00->unk2C); + FUN_0202DB14(UNK_021C5A00->unk28, 0); + FUN_02031268(1); + FUN_02030FA8(); + + if (UNK_021C5A00->unk4A != 0) + { + if (FUN_0202F918(1, UNK_021C5A00->unk43, 0x1F4, 1) == 0) + { + return; + } + + u32 r1 = compute(UNK_021C5A00->unk0C, 0x14); + + UNK_021C5A00->unk43 = 0; + FUN_02031D20(FUN_020320C4, r1 + 0x14); + return; + } + + if (FUN_0202F950(1, 1, 0x1F4) != 0) + { + if (UNK_021C5A00->unk4C != 0) + { + FUN_02031D20(FUN_020323B8, 0); + } + else + { + FUN_02031D20(FUN_02031EE0, 0x40); + } + } +} + +THUMB_FUNC void FUN_02031E08() +{ + if (FUN_0202EE0C() != 0) + { + FUN_02031268(1); + FUN_02030FA8(); + + if (UNK_021C5A00->unk4A != 0) + { + FUN_02031D20(FUN_02032058, 0); + return; + } + + if (FUN_0202F950(0, 1, 0x1F4) != 0) + { + + u32 r1 = compute(UNK_021C5A00->unk0C, 0x40); + + if (UNK_021C5A00->unk38 != 0) + { + r1 = (u32)(UNK_021C5A00->unk38 << 6); + UNK_021C5A00->unk38 = 0; + } + FUN_02031D20(FUN_02031EE0, r1); + } + } +} + +THUMB_FUNC void FUN_02031E8C() +{ + if (FUN_0202EE0C() != 0) + { + if (FUN_0202F950(0, 0, 0x1F4) != 0) + { + + u32 r1 = compute(UNK_021C5A00->unk0C, 0x20); + + FUN_02031D20(FUN_02031EE0, r1 + 0x10); + } + } +} + +THUMB_FUNC void FUN_02031EE0() +{ + FUN_0202EA54(); + if (UNK_021C5A00->unk4F == 0 && UNK_021C5A00->unk4B == 0) + { + s32 r0 = FUN_0202E8F4(); + if (r0 != -1) + { + UNK_021C5A00->unk3E = (u8)r0; + FUN_02031D20(FUN_02031F60, 0x20); + return; + } + + if (UNK_021C5A00->unk3A != 0) + { + UNK_021C5A00->unk3A--; + return; + } + + r0 = FUN_0202E950(); + if (r0 != -1) + { + UNK_021C5A00->unk3E = (u8)r0; + FUN_02031D20(FUN_02031F60, 0x20); + return; + } + + FUN_02031D20(FUN_02032028, 0); + } +} + +THUMB_FUNC void FUN_02031F60() +{ + FUN_0202EA54(); + if (FUN_0202E8A0(UNK_021C5A00->unk3E) != 0 && FUN_0202FB18(UNK_021C5A00->unk3E) != 0) + { + FUN_02031D20(FUN_02031FC8, 0x64); + return; + } + + if (FUN_020311F0() != 0) + { + FUN_02031D20(FUN_02032028, 0); + return; + } + + if (UNK_021C5A00->unk3A != 0) + { + UNK_021C5A00->unk3A--; + return; + } + + FUN_02031D20(FUN_02032028, 0); +} + +THUMB_FUNC void FUN_02031FC8() +{ + if (FUN_02030E7C(FUN_02031190()) != 0) + { + FUN_0202FC60(); + FUN_02031268(0); + FUN_02030FA8(); + FUN_02031D20(FUN_0203213C, 0); + return; + } + + if (FUN_020311F0() != 0) + { + FUN_02031D20(FUN_02032028, 0); + return; + } + + if (UNK_021C5A00->unk3A != 0) + { + UNK_021C5A00->unk3A--; + return; + } + + FUN_02031D20(FUN_02032028, 0); +} + +THUMB_FUNC void FUN_02032028() +{ + if (FUN_0202E6F0() != 0) + { + FUN_02031D20(FUN_02032058, 0); + } +} + +THUMB_FUNC void FUN_02032040() +{ + if (FUN_0202E6F0() != 0) + { + FUN_02031D20(FUN_02031E8C, 0); + } +} + +THUMB_FUNC void FUN_02032058() +{ + if (FUN_0202EE0C() != 0) + { + FUN_02031268(1); + if (FUN_0202F918(0, UNK_021C5A00->unk43, 0x1F4, 1) != 0) + { + u32 r1 = compute(UNK_021C5A00->unk0C, 0x14); + + UNK_021C5A00->unk43 = 0; + FUN_02031D20(FUN_020320C4, r1 + 0x14); + } + } +} + +THUMB_FUNC void FUN_020320C4() +{ + if (FUN_020311E8() != 0) + { + UNK_021C5A00->unk43 = 1; + FUN_02031D20(FUN_02032118, 0); + return; + } + + if (UNK_021C5A00->unk3A != 0) + { + UNK_021C5A00->unk3A--; + return; + } + + if (UNK_021C5A00->unk4A == 0 && FUN_0202E6F0() != 0) + { + FUN_02031D20(FUN_02032040, 2); + } +} + +THUMB_FUNC void FUN_02032118() +{ + FUN_02031268(0); + FUN_0202EE84(1); + FUN_02030FA8(); + FUN_02031D20(FUN_02032138, 0); +} + +THUMB_FUNC void FUN_02032138() +{ +} +THUMB_FUNC void FUN_0203213C() +{ +} + +THUMB_FUNC void FUN_02032140() +{ + if (UNK_021C5A00->unk3F < 0x13) + { + if (FUN_0202EE0C() == 0) + { + return; + } + + FUN_02031268(1); + FUN_02030FA8(); + FUN_0202E7B0(1); + } + + FUN_02031D20(FUN_020323B8, 0); +} + +THUMB_FUNC void FUN_02032178() +{ + if (FUN_0202E6F0() != 0) + { + FUN_0202FC60(); + FUN_02031D20(FUN_02032140, 0); + } +} + +THUMB_FUNC void FUN_02032194() +{ + if (FUN_0202E4C8()) + { + FUN_0202E7B0(0); + FUN_0202FC60(); + FUN_02031D20(FUN_02031E08, 0); + } +} + +THUMB_FUNC void FUN_020321B8() +{ + if (FUN_0202E6F0() != 0) + { + FUN_02031D20(FUN_02031E08, 0); + } +} + +THUMB_FUNC void FUN_020321D0() +{ + if (FUN_0202E4C8()) + { + FUN_0202E29C(UNK_021C5A00->unk2C); + FUN_0202DB14(UNK_021C5A00->unk28, UNK_021C5A00->unk30); + if (FUN_0202F918(1, 1, 0x200, 1) != 0) + { + FUN_0202FA10(); + FUN_02031D20(FUN_02032218, 0); + } + } +} + +THUMB_FUNC void FUN_02032218() +{ + if (FUN_02030E7C(FUN_02031190()) != 0) + { + FUN_02031D20(FUN_02032234, 0); + } +} + +THUMB_FUNC void FUN_02032234() +{ + if (FUN_02030F40() == 0) + { + FUN_02031D20(FUN_020323BC, 0); + } +} + +THUMB_FUNC void FUN_0203224C() +{ + if (FUN_0202E4C8()) + { + FUN_0202E29C(UNK_021C5A00->unk2C); + FUN_0202DB14(UNK_021C5A00->unk28, UNK_021C5A00->unk30); + if (FUN_0202F950(1, 1, 0x200) != 0) + { + FUN_0202FA10(); + FUN_02031D20(FUN_02032290, 0); + } + } +} + +THUMB_FUNC void FUN_02032290() +{ + FUN_0202EA54(); +} + +THUMB_FUNC void FUN_02032298() +{ + FUN_0202EA54(); + if (FUN_0202FB18(UNK_021C5A00->unk3E) != 0) + { + FUN_02031D20(FUN_020322C0, 0xa); + } +} + +THUMB_FUNC void FUN_020322C0() +{ + if (FUN_020311F0() != 0) + { + FUN_02031D20(FUN_020322F8, 0); + } + + if (FUN_02030E7C(FUN_02031190()) != 0 && FUN_02031190() != 0) + { + FUN_02031D20(FUN_0203234C, 0); + } +} + +THUMB_FUNC void FUN_020322F8() +{ + FUN_0202E6F0(); + FUN_02031D20(FUN_0203230C, 2); +} + +THUMB_FUNC void FUN_0203230C() +{ + if (UNK_021C5A00->unk3A != 0) + { + UNK_021C5A00->unk3A--; + return; + } + + if (FUN_0202EE0C() != 0 && FUN_0202F950(0, 1, 0x200) != 0) + { + FUN_0202FA10(); + FUN_02031D20(FUN_02032298, 0xa); + } +} + +THUMB_FUNC void FUN_0203234C() +{ + if (FUN_02030F40() == 0) + { + FUN_02031D20(FUN_020323BC, 0); + } +} + +THUMB_FUNC void FUN_02032364() +{ + FUN_0202E6F0(); + FUN_02031D20(FUN_02032378, 2); +} + +THUMB_FUNC void FUN_02032378() +{ + if (UNK_021C5A00->unk3A != 0) + { + UNK_021C5A00->unk3A--; + return; + } + + if (FUN_0202EE0C() != 0 && FUN_0202F950(0, 1, 0x200) != 0) + { + FUN_0202FA10(); + FUN_02031D20(FUN_02032290, 0xa); + } +} + +THUMB_FUNC void FUN_020323B8() +{ +} + +THUMB_FUNC void FUN_020323BC() +{ + if (FUN_02030F40() == 0) + { + FUN_020317C0(); + } +} + +THUMB_FUNC void FUN_020323CC() +{ + FUN_02031D20(FUN_02032440, 5); +} + +THUMB_FUNC void FUN_020323DC() +{ + if (FUN_02030F20() <= 1) + { + FUN_0202D36C(0); + FUN_0202FC80(); + FUN_02031D20(FUN_020324F8, 0); + } + + if (UNK_021C5A00->unk3A != 0) + { + UNK_021C5A00->unk3A--; + return; + } + + FUN_0202D36C(0); + FUN_0202FC80(); + FUN_02031D20(FUN_020324F8, 0); +} + +THUMB_FUNC void FUN_02032424() +{ + if (FUN_0202E6F0() != 0) + { + FUN_0202FC60(); + FUN_02031D20(FUN_020324F8, 0); + } +} + +THUMB_FUNC void FUN_02032440() +{ + if (UNK_021C5A00->unk3A != 0) + { + UNK_021C5A00->unk3A--; + } + + if (FUN_0202E6F0() != 0 && UNK_021C5A00->unk3A == 0) + { + FUN_0202FA5C(); + FUN_02031D20(FUN_020323BC, 0); + } +} + +THUMB_FUNC void FUN_02032478() +{ + if (FUN_0202E4C8()) + { + FUN_0202E29C(UNK_021C5A00->unk2C); + FUN_0202D1B0(UNK_021C5A00->unk3C); + FUN_0202DB14(UNK_021C5A00->unk28, 0); + if (FUN_0202F950(1, 1, 0x200) != 0) + { + FUN_0202FA10(); + FUN_02031D20(FUN_020324C8, 0x40); + } + } +} + +THUMB_FUNC void FUN_020324C8() +{ + FUN_0202EA54(); + if (UNK_021C5A00->unk3A != 0) + { + UNK_021C5A00->unk3A--; + return; + } + + if (FUN_0202E6F0() != 0) + { + FUN_02031D20(FUN_02032510, 0); + } +} + +THUMB_FUNC void FUN_020324F8() +{ + if (FUN_0202E6F0() != 0) + { + FUN_02031D20(FUN_02032510, 0); + } +} + +THUMB_FUNC void FUN_02032510() +{ + if (FUN_0202EE0C() != 0 && FUN_0202F918(0, UNK_021C5A00->unk43, 0x200, 1) != 0) + { + // the compiler optimizes away the result of this function because it's not used, so any + // second parameter value matches + compute(UNK_021C5A00->unk0C, 0); + + FUN_0202FA10(); + UNK_021C5A00->unk43 = 0; + + FUN_02031D20(FUN_02032578, 0x2710); + } +} + +THUMB_FUNC void FUN_02032578() +{ + if (!FUN_0202F104()) + { + if (FUN_020311E8() != 0) + { + UNK_021C5A00->unk43 = 1; + FUN_02033E74(); + FUN_02031D20(FUN_020327FC, 0); + return; + } + + if (UNK_021C5A00->unk3A != 0) + { + UNK_021C5A00->unk3A--; + return; + } + } + + if (FUN_0202E6F0() != 0) + { + FUN_02031D20(FUN_020325D0, 0); + } +} + +THUMB_FUNC void FUN_020325D0() +{ + if (FUN_0202EE0C() != 0 && FUN_0202F950(0, 0, 0x200) != 0) + { + FUN_0202FA10(); + + u32 r1 = compute(UNK_021C5A00->unk0C, 0x20); + + FUN_02031D20(FUN_020324C8, r1); + } +} + +THUMB_FUNC void FUN_02032628() +{ + if (FUN_0202E6F0() != 0) + { + FUN_02031D20(FUN_02032640, 0); + } +} + +THUMB_FUNC void FUN_02032640() +{ + if (FUN_0202EE0C() != 0 && FUN_0202F950(0, 0, 0x200)) + { + FUN_0202FA10(); + FUN_02031D20(FUN_0203266C, 0x64); + } +} + +THUMB_FUNC void FUN_0203266C() +{ + if (FUN_0202E8A0(UNK_021C5A00->unk3E) != 0 && FUN_0202FB18(UNK_021C5A00->unk3E) != 0) + { + FUN_02031D20(FUN_020326D0, 0x64); + return; + } + + if (FUN_020311F0() != 0) + { + FUN_02031D20(FUN_020327B8, 0); + return; + } + + if (UNK_021C5A00->unk3A != 0) + { + UNK_021C5A00->unk3A--; + return; + } + + FUN_02031D20(FUN_020327B8, 0); +} + +THUMB_FUNC void FUN_020326D0() +{ + if (FUN_020311F0() != 0) + { + FUN_02031D20(FUN_020327B8, 0); + return; + } + + if (FUN_02030E7C(FUN_02031190()) != 0) + { + UNK_021C5A00->unk3D = 0; + FUN_020311D0(6, UNK_02105D5C); + FUN_02031D20(FUN_02032738, 0x78); + return; + } + + if (UNK_021C5A00->unk3A != 0) + { + UNK_021C5A00->unk3A--; + return; + } + + FUN_02031D20(FUN_020327B8, 0); +} + +THUMB_FUNC void FUN_02032738() +{ + if (FUN_020311F0() != 0) + { + FUN_02031D20(FUN_020327B8, 0); + return; + } + + if (UNK_021C5A00->unk3D == 2) + { + FUN_02031D20(FUN_020327B4, 0); + return; + } + else if (UNK_021C5A00->unk3D == 1) + { + FUN_0202DBE0(); + FUN_02031D20(FUN_0203279C, 0); + return; + } + + if (UNK_021C5A00->unk3A != 0) + { + UNK_021C5A00->unk3A--; + return; + } + + FUN_02031D20(FUN_020327B8, 0); +} + +THUMB_FUNC void FUN_0203279C() +{ + if (FUN_020311F0() != 0) + { + FUN_02031D20(FUN_020327B8, 0); + } +} + +THUMB_FUNC void FUN_020327B4() +{ +} + +THUMB_FUNC void FUN_020327B8() +{ + UNK_021C5A00->unk3D = 0; + if (FUN_0202E6F0() != 0) + { + if (UNK_021C5A00->unk38 != 0) + { + UNK_021C5A00->unk38--; + FUN_02031D20(FUN_02032640, 0); + return; + } + + FUN_02031D20(FUN_020327B4, 0); + } +} + +THUMB_FUNC void FUN_020327FC() +{ + if (FUN_020311E8() == 0) + { + if (FUN_02033510() == 0 && FUN_0202E6F0() != 0) + { + FUN_02031D20(FUN_020325D0, 0); + } + } + else if (FUN_02031190() == 0) + { + FUN_0202DDE8(); + } + + if (FUN_020311F0() != 0 && FUN_02033510() == 0) + { + FUN_02031D20(FUN_020327B8, 0); + } +} + +THUMB_FUNC void FUN_02032850() +{ + if (FUN_0202EE0C() != 0) + { + if (FUN_0202F918(0, UNK_021C5A00->unk43, 0x200, 0) != 0) + { + FUN_0202FA10(); + FUN_02031D20(FUN_020323B8, 0); + } + } +} + +THUMB_FUNC void FUN_02032888() +{ + u8 st0[4]; + UNK_021C5A00->unk3F = 0xd; + if (FUN_02031190() == 0) + { + st0[1] = 0; + FUN_020311D0(0xa, &st0[1]); + return; + } + + st0[0] = 0; + FUN_020311D0(0xa, st0); +} + +THUMB_FUNC void FUN_020328C0(u8 param0) +{ + UNK_021C5A00->unk3E = param0; + UNK_021C5A00->unk38 = 3; + FUN_02031D20(FUN_02032924, 0); +} + +THUMB_FUNC void FUN_020328E4() +{ + UNK_021C5A00->unk3F = 7; +} + +THUMB_FUNC void FUN_020328F4(u8 param0) +{ + UNK_021C5A00->unk3E = param0; + UNK_021C5A00->unk3F = 7; + UNK_021C5A00->unk38 = 3; + FUN_02033E74(); + FUN_02031D20(FUN_02032628, 0); +} + +THUMB_FUNC void FUN_02032924() +{ + if (FUN_0202E6F0() != 0) + { + FUN_02031D20(FUN_0203293C, 0); + } +} + +THUMB_FUNC void FUN_0203293C() +{ + if (FUN_0202EE0C() != 0) + { + UNK_021C5A00->unk3F = 0xd; + if (FUN_0202F950(0, 0, 0x200) != 0) + { + FUN_0202FA1C(); + FUN_02031D20(FUN_02032978, 0x64); + } + } +} + +THUMB_FUNC void FUN_02032978() +{ + if (FUN_0202E8A0(UNK_021C5A00->unk3E) != 0 && FUN_0202FB18(UNK_021C5A00->unk3E) != 0) + { + FUN_02031D20(FUN_020329F4, 0x64); + return; + } + + if (FUN_020311F0() != 0 || UNK_021C5A00->unk3A == 0) + { + UNK_021C5A00->unk38--; + if (UNK_021C5A00->unk38 == 0) + { + FUN_02031D20(FUN_020327B4, 0); + return; + } + + FUN_02031D20(FUN_02032924, 0); + return; + } + + if (UNK_021C5A00->unk3A != 0) + { + UNK_021C5A00->unk3A--; + return; + } +} + +THUMB_FUNC void FUN_020329F4() +{ + if (UNK_021C5A00->unk3A > 0x5a) + { + UNK_021C5A00->unk3A--; + return; + } + + if (FUN_020311F0() != 0) + { + UNK_021C5A00->unk38--; + if (UNK_021C5A00->unk38 == 0) + { + FUN_02031D20(FUN_020327B4, 0); + return; + } + + FUN_02031D20(FUN_02032924, 0); + return; + } + + if (FUN_02030E7C(FUN_02031190()) != 0) + { + FUN_02031D20(FUN_0203279C, 0); + return; + } + + if (UNK_021C5A00->unk3A != 0) + { + UNK_021C5A00->unk3A--; + return; + } + + UNK_021C5A00->unk38--; + if (UNK_021C5A00->unk38 == 0) + { + FUN_02031D20(FUN_020327B4, 0); + return; + } + + FUN_02031D20(FUN_02032924, 0); +} + +THUMB_FUNC void FUN_02032A8C(u8 param0, u32 param1, u8 *param2) +{ +#pragma unused(param1) + if (FUN_02031190() == 0) + { + + u32 i; + BOOL r3 = TRUE; + for (i = 0; i < 6; i++) + { + if (UNK_02105D5C[i] != param2[i]) + { + r3 = FALSE; + break; + } + } + + if (r3 && UNK_021C5A00->unk48 == 0) + { + UNK_02105D6C[0] = param0; + FUN_02030C4C(7, UNK_02105D6C); + return; + } + + UNK_02105D64[0] = param0; + FUN_02030C4C(7, UNK_02105D64); + } +} + +THUMB_FUNC void FUN_02032AEC(u32 param0, u32 param1, u8 *param2) +{ +#pragma unused(param0) +#pragma unused(param1) + u32 i; + BOOL r4 = TRUE; + for (i = 1; i < 6; i++) + { + if (param2[i] != UNK_02105D6C[i]) + { + r4 = FALSE; + break; + } + } + + if (r4) + { + u8 first = param2[0]; + if (first != FUN_02031190()) + { + return; + } + + UNK_021C5A00->unk3D = 1; + return; + } + + r4 = TRUE; + for (i = 1; i < 6; i++) + { + if (param2[i] != UNK_02105D64[i]) + { + r4 = FALSE; + break; + } + } + + if (r4) + { + u8 first = param2[0]; + if (first != (u8)FUN_02031190()) + { + return; + } + + UNK_021C5A00->unk3D = 2; + } +} + +THUMB_FUNC u32 FUN_02032B68() +{ + return 6; +} + +THUMB_FUNC void FUN_02032B6C(u8 param0) +{ + if (UNK_021C5A00 != NULL) + { + UNK_021C5A00->unk3C = param0; + FUN_0202D1B0(param0); + } +} + +THUMB_FUNC void FUN_02032B84() +{ + FUN_0202EA54(); +} + +THUMB_FUNC void FUN_02032B8C() +{ + if (FUN_0202E4C8()) + { + FUN_0202E29C(UNK_021C5A00->unk2C); + FUN_0202DB14(UNK_021C5A00->unk28, 0); + if (FUN_0202F950(1, 1, 0x20) != 0) + { + FUN_0202FA10(); + FUN_02031D20(FUN_02032B84, 0); + } + } +} + +THUMB_FUNC void FUN_02032BD0(struct SaveBlock2 *sav2) +{ + if (FUN_02030F40() == 0) + { + FUN_02016828(3, 0xf, 0x7000); + FUN_02031734(sav2, 0xe); + UNK_021C5A00->unk40 = 0; + FUN_02031D20(FUN_02032B8C, 0); + } +} + +THUMB_FUNC void FUN_02032C0C() +{ + if (UNK_021C5A00 != NULL) + { + FUN_02031D20(FUN_02032440, 5); + } +} + +THUMB_FUNC u32 FUN_02032C28() +{ + struct UnkStruct_02031734_const2 st0 = UNK_020EEC48; + + u32 fun = (u32)UNK_021C5A00->unk24; + if (UNK_021C5A00 == NULL) + { + return 0; + } + + u32 i = 0; + while (st0.unk00[i] != 0) + { + if (st0.unk00[i] == fun) + { + return 1; + } + + i++; + } + + return 0; +} + +THUMB_FUNC void FUN_02032C6C(u32 param0, u32 param1) +{ + switch (param0) + { + case 0x333: + if (param1 != 0xf) + { + return; + } + UNK_021C5A00->unk49 |= 1; + break; + case 0x400318: + + UNK_021C5A00->unk49 |= 1; + break; + + case 0x400131: + + UNK_021C5A00->unk49 |= 2; + break; + + case 0x400286: + + UNK_021C5A00->unk49 |= 4; + break; + } +} + +THUMB_FUNC void FUN_02032CF4() +{ + if (FUN_0202E4C8()) + { + FUN_0202E29C(UNK_021C5A00->unk2C); + FUN_0202DB14(UNK_021C5A00->unk28, 0); + FUN_0202D308(FUN_02032C6C); + if (FUN_0202F950(1, 1, 0x20) != 0) + { + FUN_0202FA10(); + FUN_02031D20(FUN_02032B84, 0); + } + } +} + +THUMB_FUNC void FUN_02032D44(struct SaveBlock2 *sav2) +{ + if (FUN_02030F40() == 0) + { + FUN_02016828(3, 0xf, 0x7000); + FUN_02031734(sav2, 0x11); + UNK_021C5A00->unk40 = 0; + FUN_02031D20(FUN_02032CF4, 0); + } +} + +THUMB_FUNC void FUN_02032D80() +{ + if (UNK_021C5A00 != NULL) + { + FUN_02031D20(FUN_02032440, 5); + } +} + +THUMB_FUNC u8 FUN_02032D9C() +{ + return UNK_021C5A00->unk49; +} + +THUMB_FUNC BOOL FUN_02032DAC() +{ + FUN_02031468(); + + if (UNK_021C5A00 == NULL) + { + return TRUE; + } + + if ((u8)(UNK_021C5A00->unk3F + 0xe8) <= 1) + { + MOD04_021D83C0(); + return TRUE; + }; + + if (FUN_02033590() != 0) + { + FUN_02031D20(FUN_0203318C, 0); + } + else + { + FUN_02031D20(FUN_02032178, 0); + } + + return FALSE; +} + +THUMB_FUNC void FUN_02032E00() +{ + if (FUN_0202E4C8()) + { + FUN_0202E29C(UNK_021C5A00->unk2C); + FUN_0202DB14(UNK_021C5A00->unk28, 0); + if (FUN_0202F918(1, 1, 0x200, 1) != 0) + { + FUN_0202FA10(); + FUN_02031D20(FUN_02032218, 0); + } + } +} + +THUMB_FUNC void FUN_02032E48() +{ + if (FUN_0202E4C8()) + { + FUN_0202E29C(UNK_021C5A00->unk2C); + FUN_0202DB14(UNK_021C5A00->unk28, 0); + if (FUN_0202F950(1, 1, 0x200) != 0) + { + FUN_0202FA10(); + FUN_02031D20(FUN_02032290, 0); + } + } +} + +THUMB_FUNC void FUN_02032E8C() +{ +} + +THUMB_FUNC void FUN_02032E90() +{ + if (MOD04_021D7F8C() < 0) + { + FUN_02031D20(FUN_02032E8C, 0); + } +} + +THUMB_FUNC void FUN_02032EA8() +{ +} + +THUMB_FUNC void FUN_02032EAC() +{ +} + +THUMB_FUNC void FUN_02032EB0() +{ + FUN_020313A0(1); + + s32 res = MOD04_021D7F8C(); + if (res >= 0xa) + { + FUN_02031D20(FUN_02032EAC, 0); + return; + } + + if (res < 0) + { + FUN_02031D20(FUN_02032E8C, 0); + return; + } + + if (res == 1) + { + FUN_02031D20(FUN_02032E90, 0); + return; + } + + if (res == 2) + { + if (UNK_021C5A00->unk44 != 0) + { + FUN_02031D20(FUN_02032E8C, 0); + return; + } + FUN_02031D20(FUN_02032EA8, 0); + return; + } +} + +THUMB_FUNC void FUN_02032F20(u32 param0) +{ + if (param0 + 2 > 1) + { + param0 = -param0; + } + + UNK_021C5A00->unk34 = param0; +} + +THUMB_FUNC void FUN_02032F34() +{ + s32 res = MOD04_021D7800(0); + if (res >= 0xa) + { + FUN_02031D20(FUN_02032EAC, 0); + return; + } + + if (res < 0) + { + FUN_02032F20((u32)res); + FUN_02031D20(FUN_02032E8C, 0); + return; + } + + if (res == 1) + { + FUN_02031D20(FUN_02032EB0, 0); + return; + } + + if (res == 2) + { + FUN_02031D20(FUN_02032EA8, 0); + return; + } + + if (res == 3) + { + FUN_02031D20(FUN_02032EAC, 0); + return; + } +} + +THUMB_FUNC void FUN_02032F98() +{ + s32 res = MOD04_021D7800(1); + if (res < 0) + { + FUN_02032F20((u32)res); + FUN_02031D20(FUN_02032E8C, 0); + return; + } + + if (MOD04_021D8494(UNK_021C5A00->unk42) != 0) + { + FUN_0202FC60(); + FUN_02031D20(FUN_02032F34, 0); + } +} + +THUMB_FUNC u32 FUN_02032FDC(u8 param0) +{ + MOD04_021D77C4(FUN_020303BC, FUN_02030238); + UNK_021C5A00->unk42 = param0; + FUN_02031D20(FUN_02032F98, 0); + + return 1; +} + +THUMB_FUNC u32 FUN_0203300C() +{ + if (UNK_021C5A00->unk24 == FUN_02032F34) + { + return 0; + } + + if (UNK_021C5A00->unk24 == FUN_02032EB0) + { + return 1; + } + + if (UNK_021C5A00->unk24 == FUN_02032E90) + { + return 3; + } + + if (UNK_021C5A00->unk24 == FUN_02032EA8) + { + return 4; + } + + if (UNK_021C5A00->unk24 == FUN_02032EAC) + { + return 5; + } + + return 2; +} + +THUMB_FUNC void FUN_02033060() +{ + MOD04_021D77C4(FUN_020303BC, FUN_02030238); + if (MOD04_021D8494(-1) != 0) + { + UNK_021C5A00->unk4D = 0; + FUN_0202FC60(); + FUN_02031D20(FUN_02032F34, 0); + } +} + +THUMB_FUNC void FUN_020330A0() +{ + FUN_020313A0(0); + if (MOD04_021D82BC(UNK_021C5A00->unk41) != 0) + { + MOD04_021D836C(); + FUN_02031D20(FUN_02033060, 0); + return; + } + + if (MOD04_021D7F8C() < 0) + { + FUN_02031D20(FUN_02032E8C, 0); + } +} + +THUMB_FUNC void FUN_020330E4() +{ + if (FUN_02031190() == 0) + { + UNK_021C5A00->unk41 = 0; + FUN_02031D20(FUN_020330A0, 0); + } + else + { + UNK_021C5A00->unk41 = 1; + FUN_02031D20(FUN_020330A0, 0); + } + + UNK_021C5A00->unk4D = 1; +} + +THUMB_FUNC u8 FUN_02033128() +{ + return UNK_021C5A00->unk4D; +} + +THUMB_FUNC u32 FUN_02033138() +{ + if (UNK_021C5A00->unk24 == FUN_02033060) + { + return 1; + } + + return 0; +} + +THUMB_FUNC u32 FUN_02033154() +{ + if (UNK_021C5A00->unk24 == FUN_02032F34) + { + return 1; + } + + if (UNK_021C5A00->unk24 == FUN_02033060) + { + return 1; + } + + return 0; +} + +THUMB_FUNC u32 FUN_02033180() +{ + return UNK_021C5A00->unk34; +} + +THUMB_FUNC void FUN_0203318C() +{ + FUN_020313A0(0); + if (MOD04_021D82BC(0) != 0) + { + MOD04_021D836C(); + FUN_02031D20(FUN_02032440, 0); + } + + if (MOD04_021D7F8C() < 0) + { + FUN_02031D20(FUN_02032E8C, 0); + } +} + +THUMB_FUNC void FUN_020331C4() +{ + if (UNK_021C5A00 != NULL) + { + FUN_020166B8(1); + FUN_02031D20(FUN_02032440, 5); + } +} + +THUMB_FUNC void FUN_020331E8() +{ + if (UNK_021C5A00 != NULL) + { + UNK_021C5A00->unk41 = 0; + FUN_02031D20(FUN_020330A0, 0); + } +} + +THUMB_FUNC void FUN_02033208() +{ + if (UNK_021C5A00 != NULL) + { + if (FUN_02031190() == 0) + { + UNK_021C5A00->unk41 = 0; + } + else + { + UNK_021C5A00->unk41 = 1; + } + + FUN_02031D20(FUN_020330A0, 0); + } +} + +THUMB_FUNC void FUN_0203323C() +{ + u8 res = (u8)FUN_02031190(); + FUN_020311D0(0x15, &res); +} + +THUMB_FUNC u32 FUN_02033250() +{ + if (UNK_021C5A00 != NULL) + { + if (UNK_021C5A00->unk24 == FUN_02032E8C) + { + return 1; + } + + if (UNK_021C5A00->unk24 == FUN_02032E90 && UNK_021C5A00->unk44 != 0) + { + return 1; + } + } + + return 0; +} + +THUMB_FUNC void FUN_02033288(struct SaveBlock2 *sav2) +{ + if (UNK_021C5A00 == NULL) + { + FUN_02016828(3, 0xf, 0x100); + UNK_021C5A00 = + (struct UnkStruct_02031734 *)AllocFromHeap(0xf, sizeof(struct UnkStruct_02031734)); + MI_CpuFill8(UNK_021C5A00, 0, sizeof(struct UnkStruct_02031734)); + + UNK_021C5A00->unk3F = 0x18; + UNK_021C5A00->unk46 = 1; + UNK_021C5A00->unk28 = sav2; + FUN_020334E8(0, 1); + FUN_020166A8(1); + } +} + +THUMB_FUNC void FUN_020332DC() +{ + if (UNK_021C5A00 != 0) + { + FUN_020166B8(1); + FUN_020334E8(0, 0); + FreeToHeap(UNK_021C5A00); + UNK_021C5A00 = NULL; + FUN_020168D0(0xf); + } +} + +THUMB_FUNC void FUN_02033310(struct SaveBlock2 *sav2) +{ + if (UNK_021C5A00 == NULL) + { + FUN_02016828(3, 0xf, 0x100); + UNK_021C5A00 = + (struct UnkStruct_02031734 *)AllocFromHeap(0xf, sizeof(struct UnkStruct_02031734)); + MI_CpuFill8(UNK_021C5A00, 0, sizeof(struct UnkStruct_02031734)); + UNK_021C5A00->unk3F = 0x19; + UNK_021C5A00->unk46 = 1; + UNK_021C5A00->unk28 = sav2; + FUN_020334E8(0, 1); + FUN_020166A8(1); + } +} + +THUMB_FUNC void FUN_02033364() +{ + if (UNK_021C5A00 != 0) + { + FUN_020166B8(1); + FUN_020334E8(0, 0); + FreeToHeap(UNK_021C5A00); + UNK_021C5A00 = NULL; + FUN_020168D0(0xf); + } +} + +THUMB_FUNC u32 FUN_02033398() +{ + u32 st4; + u32 st0; + if (UNK_021C5A00 == NULL) + { + return 0; + } + + if (UNK_021C5A00->unk3F == 0x18) + { + if (MOD04_021DD718(&st4, &st0) != 0) + { + MOD04_021DD6F0(); + return 1; + } + } + else if (UNK_021C5A00->unk3F == 0x19) + { + if (MOD04_021DD718(&st4, &st0) != 0 && st0 == 7) + { + return 1; + } + } + + return 0; +} + +THUMB_FUNC void FUN_020333F0() +{ + s32 res = MOD04_021D76AC(); + if (res < 0) + { + FUN_02032F20((u32)res); + FUN_02031D20(FUN_02032E8C, 0); + return; + } + else if (res > 0) + { + FUN_02031D20(FUN_02033060, 0); + } +} + +THUMB_FUNC void FUN_0203341C() +{ + if (FUN_0202E4C8()) + { + FUN_02016828(3, 0x31, 0x31000); + if (FUN_0202F918(1, 1, 0x200, 1) != 0) + { + MOD05_021D74E0(UNK_021C5A00->unk28, 0x31); + MOD04_021D83A8(FUN_020335D0); + FUN_0202FA10(); + FUN_02031D20(FUN_020333F0, 0); + } + } +} + +THUMB_FUNC void *FUN_0203346C(struct SaveBlock2 *sav2, u32 param1) +{ + Sav2_PlayerData_GetProfileAddr(sav2); + if (FUN_02030F40() != 0) + { + return 0; + } + + FUN_020166A8(1); + FUN_02016828(3, 0xf, 0x7080); + FUN_02031734(sav2, 0x17); + UNK_021C5A00->unk00 = AllocFromHeap(0xf, param1); + MI_CpuFill8(UNK_021C5A00->unk00, 0, param1); + + UNK_021C5A00->unk40 = 0; + UNK_021C5A00->unk28 = sav2; + FUN_02031D20(FUN_0203341C, 0); + + return UNK_021C5A00->unk00; +} + +THUMB_FUNC void *FUN_020334DC() +{ + return UNK_021C5A00->unk00; +} + +THUMB_FUNC void FUN_020334E8(u8 param0, u8 param1) +{ + if (UNK_021C5A00 != NULL) + { + UNK_021C5A00->unk44 = param0; + UNK_021C5A00->unk45 = param1; + } + + FUN_0202EE84(param0); + FUN_0202EEB0(param0); +} + +THUMB_FUNC u8 FUN_02033510() +{ + if (UNK_021C5A00 != NULL) + { + if (UNK_021C5A00->unk4E != 0) + { + return 1; + } + + return UNK_021C5A00->unk45; + } + + return 0; +} + +THUMB_FUNC s32 FUN_02033534() +{ + if (UNK_021C5A00 != NULL) + { + return UNK_021C5A00->unk3F; + } + + return 1; +} + +THUMB_FUNC u8 FUN_0203354C() +{ + if (UNK_021C5A00 != NULL) + { + return UNK_021C5A00->unk40; + } + + return 0; +} + +THUMB_FUNC void FUN_02033564(void *src) +{ + MI_CpuCopy8(src, UNK_021C5A00->unk04, 0x6); +} + +THUMB_FUNC void FUN_02033578(void *dst) +{ + MI_CpuCopy8(UNK_021C5A00->unk04, dst, 0x6); +} + +THUMB_FUNC u32 FUN_02033590() +{ + if (FUN_02033534() >= 0x13) + { + return 1; + } + + return 0; +} + +THUMB_FUNC void FUN_020335A4(u8 param0) +{ + if (UNK_021C5A00 != NULL) + { + UNK_021C5A00->unk47 = param0; + } +} + +THUMB_FUNC u8 FUN_020335B8() +{ + if (UNK_021C5A00 != NULL) + { + return UNK_021C5A00->unk47; + } + + return 0; +} + +THUMB_FUNC void FUN_020335D0(s32 param0) +{ + FUN_02033F70(0, 1, param0); + while (TRUE) + { + } +} + +THUMB_FUNC void FUN_020335E0() +{ + FUN_02033F70(0, 4, 0); + while (TRUE) + { + } +} + +THUMB_FUNC void FUN_020335F0() +{ +} + +THUMB_FUNC void FUN_020335F4() +{ + if (FUN_02033510() != 0) + { + if (FUN_020311F0() == 0 && FUN_02033250() == 0 && FUN_02033398() == 0) + { + if (UNK_021C5A00->unk4E == 0) + { + return; + } + } + + if (FUN_020335B8() != 0) + { + return; + } + + FUN_0200541C(); + FUN_0202287C(UNK_021C5A00->unk28); + gMain.unk64 = 1; + if (UNK_021C5A00->unk4E == 3) + { + FUN_020335A4(3); + return; + } + + if (UNK_021C5A00->unk3F == 0x19 || UNK_021C5A00->unk3F == 0xf) + { + FUN_020335A4(2); + } + else + { + FUN_020335A4(1); + } + } +} + +THUMB_FUNC BOOL FUN_02033678() +{ + if (FUN_0202EDD8() || !FUN_02031810()) + { + return TRUE; + } + + if (!FUN_0202E344()) + { + return TRUE; + } + + return FALSE; +} + +THUMB_FUNC u32 FUN_020336A0(u8 param0) +{ + if (UNK_021C5A00 != NULL) + { + UNK_021C5A00->unk4E = param0; + FUN_02031468(); + return 1; + } + + return 0; +} diff --git a/arm9/src/unk_02033778.c b/arm9/src/unk_02033778.c new file mode 100644 index 00000000..fa2a67da --- /dev/null +++ b/arm9/src/unk_02033778.c @@ -0,0 +1,33 @@ +#include "global.h" +#include "unk_02033778.h" +#include "unk_0202F150.h" +#include "player_data.h" + +extern struct PlayerData *FUN_0202DFA4(s32 param0); +extern u32 FUN_0202E020(s32 param0); +extern u32 FUN_0202E044(s32 param0); +extern u32 FUN_02029B40(u32 param0, u32 param1, u32 param2, u32 language); +extern void FUN_02029B90(u32 param0, u32 param1, u32 param2, u32 param3); + +THUMB_FUNC void FUN_02033778(u32 param0) +{ + s32 unk = FUN_02030F20(); + if (FUN_0202DFA4(0) != NULL) + { + for (s32 i = 0; i < unk; i++) + { + if (FUN_02031190() != i) + { + FUN_020337C8(param0, FUN_0202E020(i), FUN_0202E044(i), PlayerProfile_GetLanguage(FUN_0202DFA4(i))); + } + } + } +} + +THUMB_FUNC void FUN_020337C8(u32 param0, u32 param1, u32 param2, u32 language) +{ + if (FUN_02029B40(param0, param1, param2, language) == 0) + { + FUN_02029B90(param0, param1, param2, 1); + } +} diff --git a/arm9/src/unk_020337E8.c b/arm9/src/unk_020337E8.c new file mode 100644 index 00000000..856ba3b8 --- /dev/null +++ b/arm9/src/unk_020337E8.c @@ -0,0 +1,50 @@ +#include "unk_020337E8.h" +#include "heap.h" + +extern struct DWC_Struct *FUN_020286EC(struct SaveBlock2 *sav2); +extern struct DWC_Struct *FUN_02028228(struct DWC_Struct *); + +// DWC_init +extern s32 DWC_Init(s32); + +// DWC_account +extern void DWC_CreateExchangeToken(struct DWC_Struct *, struct DWC_token *); +extern void DWC_CreateUserData(struct DWC_Struct *, s32); +extern void DWC_ClearDirtyFlag(struct DWC_Struct *); +extern BOOL DWC_CheckHasProfile(struct DWC_Struct *); +extern BOOL DWC_CheckValidConsole(struct DWC_Struct *); +extern BOOL DWC_CheckUserData(struct DWC_Struct *); +extern s32 DWC_GetGsProfileId(struct DWC_Struct *, struct DWC_token *); + +THUMB_FUNC s32 FUN_020337E8(u32 heap_id) +{ + s32 ret = (s32)AllocFromHeap(heap_id, 0x720); + s32 ret1 = DWC_Init((ret + 0x1F) & ~0x1F); + FreeToHeap((void*)ret); + return ret1; +} + +THUMB_FUNC void FUN_0203380C(struct DWC_Struct *dwc) +{ + struct DWC_Struct * dwc1 = FUN_02028228(dwc); + if(!DWC_CheckUserData(dwc1)) + { + DWC_CreateUserData(dwc1, 0x4144414A); + DWC_ClearDirtyFlag(dwc1); + } +} + +THUMB_FUNC s32 FUN_02033830(struct DWC_Struct *dwc) +{ + struct DWC_token token; + + struct DWC_Struct * dwc1 = FUN_02028228(dwc); + DWC_CreateExchangeToken(dwc1, &token); + return DWC_GetGsProfileId(dwc1, &token); +} + +THUMB_FUNC BOOL FUN_0203384C(struct SaveBlock2 *sav2) +{ + struct DWC_Struct * dwc = FUN_02028228(FUN_020286EC(sav2)); + return (DWC_CheckHasProfile(dwc) && DWC_CheckValidConsole(dwc)); +} diff --git a/arm9/src/unk_0204639C.c b/arm9/src/unk_0204639C.c index 50aae8fa..c8291f5a 100644 --- a/arm9/src/unk_0204639C.c +++ b/arm9/src/unk_0204639C.c @@ -4,7 +4,7 @@ #pragma thumb on -struct UnkStruct_0204639C * FUN_0204639C(struct UnkStruct_0204639C * r5, UnkStruct_0204639C_cb r6, u32 * r7) +struct UnkStruct_0204639C * FUN_0204639C(struct UnkSavStruct80 * r5, UnkStruct_0204639C_cb r6, u32 * r7) { struct UnkStruct_0204639C * ret = AllocFromHeapAtEnd(32, sizeof(struct UnkStruct_0204639C)); ret->unk0 = 0; @@ -18,10 +18,9 @@ struct UnkStruct_0204639C * FUN_0204639C(struct UnkStruct_0204639C * r5, UnkStru return ret; } -void FUN_020463CC(struct UnkStruct_0204639C * r5, UnkStruct_0204639C_cb r4, u32 * r6) +void FUN_020463CC(struct UnkSavStruct80 * r5, UnkStruct_0204639C_cb r4, u32 * r6) { - if (r5->unk10 != NULL) - ErrorHandling(); + GF_ASSERT(r5->unk10 == NULL); r5->unk10 = FUN_0204639C(r5, r4, r6); } @@ -85,7 +84,7 @@ BOOL FUN_020464A4(void * r0) BOOL FUN_020464B8(struct UnkStruct_0204639C * r4) { - struct UnkStruct_0204639C * r5 = FUN_02046528(r4); + struct UnkSavStruct80 * r5 = FUN_02046528(r4); u32 * r4_2 = FUN_0204652C(r4); switch (r4_2[0]) { @@ -113,7 +112,7 @@ void FUN_02046500(struct UnkStruct_0204639C * r6, u32 r5, u32 r4) FUN_0204640C(r6, FUN_020464B8, r2); } -struct UnkStruct_0204639C * FUN_02046528(struct UnkStruct_0204639C * r0) +struct UnkSavStruct80 * FUN_02046528(struct UnkStruct_0204639C * r0) { return r0->unk18; } diff --git a/arm9/src/unk_0204AEA8.c b/arm9/src/unk_0204AEA8.c index 9c572a8e..a2b2dd71 100644 --- a/arm9/src/unk_0204AEA8.c +++ b/arm9/src/unk_0204AEA8.c @@ -3,12 +3,12 @@ #include "unk_0204639C.h" #include "unk_0204AEA8.h" -extern void MOD05_021E3444(u32, struct UnkStruct_0204639C *, u32); +extern void MOD05_021E3444(u32, struct UnkSavStruct80 *, u32); extern void FUN_0200433C(u32, u16, u32); THUMB_FUNC BOOL FUN_0204AEA8(struct UnkStruct_0204639C *a0) { - struct UnkStruct_0204639C *v0 = FUN_02046528(a0); + struct UnkSavStruct80 *v0 = FUN_02046528(a0); u32 *v1 = FUN_0204652C(a0); switch (v1[0]) diff --git a/arm9/src/unk_0204B0A0.c b/arm9/src/unk_0204B0A0.c new file mode 100644 index 00000000..15a9111d --- /dev/null +++ b/arm9/src/unk_0204B0A0.c @@ -0,0 +1,198 @@ +#include "global.h" +#include "event_data.h" +#include "unk_0204B0A0.h" +#include "unk_0205FA2C.h" + +extern void GF_RTC_CopyDateTime(struct RTCDate* date, struct RTCTime* time); +extern void FUN_02029C08(void*); +extern void FUN_0202B3C4(void*, s32, u32); +extern u8 GF_RTC_GetTimeOfDayByHour(u32 hour); +extern s64 GF_RTC_DateTimeToSec(void); +extern void* FUN_02029AFC(struct SaveBlock2* sav2); +extern void* FUN_02022504(struct SaveBlock2* sav2); +extern void FUN_02025B60(struct SaveBlock2* sav2, s32, BOOL); +extern BOOL FUN_0205F668(struct SaveBlock2* sav2); +extern void FUN_0202A9D0(struct SaveBlock2* sav2, s32); +extern BOOL FUN_0205F618(struct SaveBlock2* sav2, u16); +extern void FUN_0204B3D0(struct UnkSavStruct80*, s32); +extern void FUN_0205F5A4(struct ScriptState* state, u16); +extern s32 FUN_0205F594(struct ScriptState* state); +extern void FUN_0202A988(void*, u32); +extern void* FUN_0202A9B0(struct SaveBlock2* sav2); +extern void FUN_02060344(struct SaveBlock2* sav2, s32); +extern void FUN_0203959C(struct UnkSavStruct80*); +extern void FUN_02025A60(struct SaveBlock2* sav2, s32); +extern struct SaveBlock2* ScriptEnvironment_GetSav2Ptr(struct UnkSavStruct80*); + +THUMB_FUNC void FUN_0204B0F8(struct UnkSavStruct80* unk) +{ + RTCDate date; + RTCTime time; + + struct UnkSaveStruct_0202376C_sub* rtc_info = Sav2_SysInfo_RTC_get(unk->saveBlock2); + if (rtc_info->field_00 != 0) + { + GF_RTC_CopyDateTime(&date, &time); + FUN_0204B130(unk, rtc_info, &date); + FUN_0204B158(unk, rtc_info, &date, &time); + } +} + +THUMB_FUNC void FUN_0204B130(struct UnkSavStruct80* unk, struct UnkSaveStruct_0202376C_sub* rtc_info, struct RTCDate* date) +{ + u32 days = (u32)RTC_ConvertDateToDay(date); + u32 days_since_nitro_epoch = (u32)rtc_info->daysSinceNitroEpoch; + + if (days < days_since_nitro_epoch) + { + rtc_info->daysSinceNitroEpoch = (s32)days; + } + else if (days > days_since_nitro_epoch) + { + FUN_0204B1DC(unk, (s32)(days - days_since_nitro_epoch)); + rtc_info->daysSinceNitroEpoch = (s32)days; + } +} + +THUMB_FUNC void FUN_0204B158(struct UnkSavStruct80* unk, struct UnkSaveStruct_0202376C_sub* rtc_info, struct RTCDate* date, struct RTCTime* time) +{ + s64 unk1 = RTC_ConvertDateTimeToSecond(date, time); + s64 unk2 = RTC_ConvertDateTimeToSecond(&rtc_info->date, &rtc_info->time); + + if (unk2 > unk1) + { + rtc_info->date = *date; + rtc_info->time = *time; + return; + } + + s32 minutes = (s32)((unk1 - unk2) / 60); + if (minutes > 0) + { + FUN_02023884(rtc_info, (u32)minutes); + FUN_0204B270(unk, minutes, time); + + rtc_info->date = *date; + rtc_info->time = *time; + } +} + +THUMB_FUNC void FUN_0204B1DC(struct UnkSavStruct80* unk, s32 a1) +{ + struct SaveBlock2* sav2 = ScriptEnvironment_GetSav2Ptr(unk); + FUN_02025A60(sav2, a1); + FUN_0203959C(unk); + FUN_02060344(unk->saveBlock2, a1); + + void* unk_sav_ptr1 = FUN_0202881C(unk->saveBlock2); + FUN_02028754(unk_sav_ptr1, (u32)a1); + + void* unk_sav_ptr2 = FUN_0202A9B0(unk->saveBlock2); + unk_sav_ptr1 = FUN_0202881C(unk->saveBlock2); + u32 unk1 = FUN_020287A4(unk_sav_ptr1); + FUN_0202A988(unk_sav_ptr2, unk1); + + struct PlayerParty* party = SavArray_PlayerParty_get(unk->saveBlock2); + Party_UpdatePokerus(party, a1); + + struct ScriptState* state = SavArray_Flags_get(unk->saveBlock2); + s32 unk2 = FUN_0205F594(state); + + u16 unk3; + if (unk2 > a1) + { + unk3 = (u16)(unk2 - a1); + } + else + { + unk3 = 0; + } + + FUN_0205F5A4(state, unk3); + FUN_0205F618(unk->saveBlock2, (u16)a1); + FUN_0205F668(unk->saveBlock2); + FUN_0206007C(unk->saveBlock2); + + void* unk_sav_ptr3 = FUN_02029AFC(unk->saveBlock2); + FUN_02029C08(unk_sav_ptr3); +} + +THUMB_FUNC void FUN_0204B270(struct UnkSavStruct80* unk, s32 a1, struct RTCTime* time) +{ + FUN_0204B3D0(unk, a1); + FUN_0202A9D0(unk->saveBlock2, a1); + BOOL unk_bool = FUN_0204B33C(unk); + FUN_02025B60(unk->saveBlock2, a1, unk_bool); + void* unk_sav_ptr = FUN_02022504(unk->saveBlock2); + FUN_0202B3C4(unk_sav_ptr, a1, time->minute); +} + +THUMB_FUNC u32 Script_GetTimeOfDay(struct UnkSavStruct80* unk) +{ + struct UnkSaveStruct_0202376C_sub* rtc_info = Sav2_SysInfo_RTC_get(unk->saveBlock2); + + return GF_RTC_GetTimeOfDayByHour(rtc_info->time.hour); +} + +THUMB_FUNC u32 Script_GetMonth(struct UnkSavStruct80* unk) +{ + struct UnkSaveStruct_0202376C_sub* rtc_info = Sav2_SysInfo_RTC_get(unk->saveBlock2); + + return rtc_info->date.month; +} + +THUMB_FUNC u32 Script_GetDay(struct UnkSavStruct80* unk) +{ + struct UnkSaveStruct_0202376C_sub* rtc_info = Sav2_SysInfo_RTC_get(unk->saveBlock2); + + return rtc_info->date.day; +} + +THUMB_FUNC RTCWeek Script_GetWeekday(struct UnkSavStruct80* unk) +{ + struct UnkSaveStruct_0202376C_sub* rtc_info = Sav2_SysInfo_RTC_get(unk->saveBlock2); + + return rtc_info->date.week; +} + +THUMB_FUNC u32 Script_GetHour(struct UnkSavStruct80* unk) +{ + struct UnkSaveStruct_0202376C_sub* rtc_info = Sav2_SysInfo_RTC_get(unk->saveBlock2); + + return rtc_info->time.hour; +} + +THUMB_FUNC u32 Script_GetMinute(struct UnkSavStruct80* unk) +{ + struct UnkSaveStruct_0202376C_sub* rtc_info = Sav2_SysInfo_RTC_get(unk->saveBlock2); + + return rtc_info->time.minute; +} + +THUMB_FUNC void Script_SavRTC_x24toDateTime(struct UnkSavStruct80* unk, struct RTCDate* date, struct RTCTime* time) +{ + struct UnkSaveStruct_0202376C_sub* rtc_info = Sav2_SysInfo_RTC_get(unk->saveBlock2); + + RTC_ConvertSecondToDateTime(date, time, rtc_info->secondsSinceNitroEpoch); +} + +THUMB_FUNC void Script_SavRTC_x2CtoDateTime(struct UnkSavStruct80* unk, struct RTCDate* date, struct RTCTime* time) +{ + struct UnkSaveStruct_0202376C_sub* rtc_info = Sav2_SysInfo_RTC_get(unk->saveBlock2); + + RTC_ConvertSecondToDateTime(date, time, rtc_info->field_2C); +} + +THUMB_FUNC void Script_SavRTC_DateTimeTox2C(struct UnkSavStruct80* unk) +{ + struct UnkSaveStruct_0202376C_sub* rtc_info = Sav2_SysInfo_RTC_get(unk->saveBlock2); + + rtc_info->field_2C = GF_RTC_DateTimeToSec(); +} + +THUMB_FUNC BOOL FUN_0204B33C(struct UnkSavStruct80* unk) +{ + struct UnkSaveStruct_0202376C_sub* rtc_info = Sav2_SysInfo_RTC_get(unk->saveBlock2); + + return FUN_02023874(rtc_info); +} diff --git a/arm9/src/unk_0205FA2C.c b/arm9/src/unk_0205FA2C.c index 7bcdf950..cabd756e 100644 --- a/arm9/src/unk_0205FA2C.c +++ b/arm9/src/unk_0205FA2C.c @@ -1,18 +1,16 @@ #include "unk_0205FA2C.h" +#include "unk_020337E8.h" extern void *UNK_020F96DC; extern void *UNK_020FA6E8; extern u32 FUN_02079C70(struct SaveBlock2 *sav2); extern void FUN_0207B000(struct UnkPlayerStruct2_0205FA2C *ptr, const u8 param1[12]); extern void FUN_0207C2A4(struct UnkPlayerStruct2_0205FA2C *ptr, struct PlayerData *player_data); -extern u32 FUN_0203384C(u32 *param0); -extern u32 *FUN_02038790(struct UnkStruct_0204639C *param0, u16 param1, u16 param2); +extern u32 *FUN_02038790(struct UnkSavStruct80 *param0, u16 param1, u16 param2); extern u16 *GetVarPointer(struct UnkSavStruct80 *arg, u16); -extern u32 FUN_02031190(); -extern u32 FUN_020316E0(u32 param0); -extern u16 MOD06_02244660(struct UnkStruct_0204639C *param0, u32 param1); -extern u16 MOD06_022446BC(struct UnkStruct_0204639C *param0, u32 param1); -extern u16 MOD06_022446E0(struct UnkStruct_0204639C *param0, u32 param1); +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); @@ -38,12 +36,12 @@ const u8 UNK_020F7454[] = { }; THUMB_FUNC u32 FUN_0205FA2C( - struct UnkCallbackStruct1_0205FA2C *param0, struct UnkStruct_0204639C *param1, u32 heap_id) + struct UnkCallbackStruct1_0205FA2C *param0, struct UnkSavStruct80 *param1, u32 heap_id) { struct UnkPlayerStruct1_0205FA2C *ptr = (struct UnkPlayerStruct1_0205FA2C *)AllocFromHeapAtEnd( heap_id, sizeof(struct UnkPlayerStruct1_0205FA2C)); - struct SaveBlock2 *sav2 = (struct SaveBlock2 *)(param1->unkC); + struct SaveBlock2 *sav2 = param1->saveBlock2; MI_CpuFill8(ptr, 0, sizeof(struct UnkPlayerStruct1_0205FA2C)); ptr->options = Sav2_PlayerData_GetOptionsAddr(sav2); @@ -72,7 +70,7 @@ THUMB_FUNC u32 FUN_0205FA2C( } THUMB_FUNC u32 FUN_0205FAD8( - struct UnkCallbackStruct1_0205FA2C *param0, struct UnkStruct_0204639C *param1) + struct UnkCallbackStruct1_0205FA2C *param0, struct UnkSavStruct80 *param1) { if (FUN_0204647C(param1)) { @@ -107,9 +105,9 @@ THUMB_FUNC u32 FUN_0205FAD8( } THUMB_FUNC u32 FUN_0205FB34( - struct UnkCallbackStruct1_0205FA2C *param0, struct UnkStruct_0204639C *param1, u32 heap_id) + struct UnkCallbackStruct1_0205FA2C *param0, struct UnkSavStruct80 *param1, u32 heap_id) { - struct SaveBlock2 *sav2 = (struct SaveBlock2 *)(param1->unkC); + struct SaveBlock2 *sav2 = param1->saveBlock2; struct UnkPlayerStruct2_0205FA2C *ptr = (struct UnkPlayerStruct2_0205FA2C *)AllocFromHeapAtEnd( heap_id, sizeof(struct UnkPlayerStruct2_0205FA2C)); @@ -142,7 +140,7 @@ THUMB_FUNC u32 FUN_0205FB34( } THUMB_FUNC u32 FUN_0205FBC0( - struct UnkCallbackStruct1_0205FA2C *param0, struct UnkStruct_0204639C *param1) + struct UnkCallbackStruct1_0205FA2C *param0, struct UnkSavStruct80 *param1) { if (FUN_0204647C(param1)) { @@ -160,7 +158,7 @@ THUMB_FUNC u32 FUN_0205FBC0( THUMB_FUNC int FUN_0205FBE8(struct UnkStruct_0204639C *param0) { - struct UnkStruct_0204639C *res = FUN_02046528(param0); + struct UnkSavStruct80 *res = FUN_02046528(param0); struct UnkCallbackStruct1_0205FA2C *res2 = (struct UnkCallbackStruct1_0205FA2C *)FUN_0204652C(param0); switch (res2->unk04) @@ -194,7 +192,7 @@ THUMB_FUNC void FUN_0205FC50(struct UnkStruct_0204639C *param0, u8 param6, u8 param7) { - struct UnkStruct_0204639C *res = FUN_02046528(param0); + struct UnkSavStruct80 *res = FUN_02046528(param0); struct UnkCallbackStruct1_0205FA2C *ptr = (struct UnkCallbackStruct1_0205FA2C *)AllocFromHeap( 0xb, sizeof(struct UnkCallbackStruct1_0205FA2C)); @@ -212,9 +210,9 @@ THUMB_FUNC void FUN_0205FC50(struct UnkStruct_0204639C *param0, } THUMB_FUNC u32 FUN_0205FC9C( - struct UnkCallbackStruct2_0205FA2C *param0, struct UnkStruct_0204639C *param1) + struct UnkCallbackStruct2_0205FA2C *param0, struct UnkSavStruct80 *param1) { - if (FUN_0203384C(param1->unkC)) + if (FUN_0203384C(param1->saveBlock2)) { param0->unk08 = FUN_02038790(param1, param0->unk12, param0->unk14); @@ -226,7 +224,7 @@ THUMB_FUNC u32 FUN_0205FC9C( } THUMB_FUNC u32 FUN_0205FCC4( - struct UnkCallbackStruct2_0205FA2C *param0, struct UnkStruct_0204639C *param1) + struct UnkCallbackStruct2_0205FA2C *param0, struct UnkSavStruct80 *param1) { if (FUN_0204647C(param1)) { @@ -241,7 +239,7 @@ THUMB_FUNC u32 FUN_0205FCC4( THUMB_FUNC int FUN_0205FCE8(struct UnkStruct_0204639C *param0) { - struct UnkStruct_0204639C *res = FUN_02046528(param0); + struct UnkSavStruct80 *res = FUN_02046528(param0); struct UnkCallbackStruct2_0205FA2C *res2 = (struct UnkCallbackStruct2_0205FA2C *)FUN_0204652C(param0); @@ -254,7 +252,7 @@ THUMB_FUNC int FUN_0205FCE8(struct UnkStruct_0204639C *param0) res2->unk04 = FUN_0205FCC4(res2, res); break; case 2: - u16 *var = GetVarPointer((struct UnkSavStruct80 *)res, res2->unk10); + u16 *var = GetVarPointer(res, res2->unk10); *var = (u16)res2->unk00; FreeToHeap(res2); @@ -266,7 +264,7 @@ THUMB_FUNC int FUN_0205FCE8(struct UnkStruct_0204639C *param0) THUMB_FUNC void FUN_0205FD38(struct UnkStruct_0204639C *param0, u16 param1, u16 param2, u16 param3) { - struct UnkStruct_0204639C *res = FUN_02046528(param0); + struct UnkSavStruct80 *res = FUN_02046528(param0); struct UnkCallbackStruct2_0205FA2C *ptr = (struct UnkCallbackStruct2_0205FA2C *)AllocFromHeap( 0xb, sizeof(struct UnkCallbackStruct2_0205FA2C)); MI_CpuFill8(ptr, 0, sizeof(struct UnkCallbackStruct2_0205FA2C)); @@ -280,15 +278,15 @@ THUMB_FUNC void FUN_0205FD38(struct UnkStruct_0204639C *param0, u16 param1, u16 THUMB_FUNC int FUN_0205FD70(struct UnkStruct_0204639C *param0) { - struct UnkStruct_0204639C *res = FUN_02046528(param0); + struct UnkSavStruct80 *res = FUN_02046528(param0); u16 *res2 = (u16 *)FUN_0204652C(param0); - u32 res3 = FUN_020316E0(1 - FUN_02031190()); - if (res3 == 0) + u8 *res3 = FUN_020316E0(1 - FUN_02031190()); + if (res3 == NULL) { return 0; } - u16 *var = GetVarPointer((struct UnkSavStruct80 *)res, res2[1]); + u16 *var = GetVarPointer(res, res2[1]); switch (res2[0]) { case 0: @@ -296,11 +294,9 @@ THUMB_FUNC int FUN_0205FD70(struct UnkStruct_0204639C *param0) break; case 1: *var = MOD06_022446BC(res, res3); - break; case 2: *var = MOD06_022446E0(res, res3); - break; } @@ -311,7 +307,7 @@ THUMB_FUNC int FUN_0205FD70(struct UnkStruct_0204639C *param0) THUMB_FUNC void FUN_0205FDDC(struct UnkStruct_0204639C *param0, u16 param1, u16 param2) { - struct UnkStruct_0204639C *res = FUN_02046528(param0); + struct UnkSavStruct80 *res = FUN_02046528(param0); u16 *ptr = AllocFromHeap(0xb, 2 * sizeof(u16)); MI_CpuFill8(ptr, 0, 2 * sizeof(u16)); diff --git a/arm9/src/unk_0206015C.c b/arm9/src/unk_0206015C.c new file mode 100644 index 00000000..a217f52c --- /dev/null +++ b/arm9/src/unk_0206015C.c @@ -0,0 +1,149 @@ +#include "unk_0206015C.h" + +#include "heap.h" +#include "event_data.h" +#include "main.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 FUN_020054C8(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); + + + +THUMB_FUNC void FUN_0206015C(struct UnkSavStruct80 *savStruct) +{ + struct UnkStruct_0206015C *unkStruct = AllocFromHeapAtEnd(0xb, 0x10); + unkStruct->unk0 = MOD06_02244DB0(0xb); + unkStruct->unk4 = MOD06_02245114(0xb, savStruct); + unkStruct->unkC = 0; + unkStruct->unkD = 0; + + FUN_0204640C(savStruct->unk10, FUN_02060194, (u32 *)unkStruct); +} + +THUMB_FUNC BOOL FUN_02060194(struct UnkStruct_0204639C *unkStruct0) +{ + struct UnkSavStruct80 *savStruct = FUN_02046528(unkStruct0); + struct UnkStruct_0204652C *unkStruct1 = (struct UnkStruct_0204652C *)FUN_0204652C(unkStruct0); + + switch (unkStruct1->action) + { + case 0: + FUN_0206367C(savStruct, 1); + MOD06_02245198(unkStruct1->unkD, unkStruct1->unk4); + unkStruct1->unk8 = MOD06_022451F0(unkStruct1->unk4); + FUN_0204AFC8(unkStruct0); + unkStruct1->action = 1; + break; + + case 1: + FUN_0204AF3C(unkStruct0); + unkStruct1->action = 2; + break; + + case 2: + struct ScriptState *scrState = SavArray_Flags_get(savStruct->saveBlock2); + u8 unkD = unkStruct1->unkD; + if (unkD == 0) + { + FUN_0205F1C4(scrState); + } + else if (unkD == 5) + { + FUN_0205F1D4(scrState); + } + FUN_02049160(unkStruct0, unkStruct1->unk8); + unkStruct1->action = 3; + break; + + case 3: + FUN_0204AF84(unkStruct0); + unkStruct1->action = 4; + break; + + case 4: + u32 unk0 = FUN_020553A0(savStruct->unk38); + unkStruct1->unkD += 1; + if (unkStruct1->unkD <= 5) + { + void *unkAddr = MOD06_02245088(savStruct); + FUN_0205889C(unk0, 1); + MOD06_02244DC4(unkStruct1->unk0, unkAddr); + MOD06_02244EF8(unkStruct1->unk0); + unkStruct1->unkE = 0; + FUN_020054C8(1657); + FUN_0204C1B4(unkStruct0, 0x3, 0x11, 0x0000FFFF, 0, 6, 1, 0xb); + unkStruct1->action = 5; + } + else + { + FUN_0205889C(unk0, 0); + FUN_0204B00C(unkStruct0); + unkStruct1->action = 8; + } + break; + + case 5: + unkStruct1->unkE += 1; + if (unkStruct1->unkE < 0x3c && !(gMain.newKeys & 1)) + break; + + MOD06_02245198(unkStruct1->unkD, unkStruct1->unk4); + unkStruct1->unk8 = MOD06_022451F0(unkStruct1->unk4); + + FUN_020054C8(1657); + FUN_0204C1B4(unkStruct0, 0x3, 0x10, 0x0000FFFF, 0, 6, 1, 0xb); + unkStruct1->action = 6; + break; + + case 6: + MOD06_02244F18(unkStruct1->unk0); + unkStruct1->action = 7; + break; + + case 7: + if (MOD06_02244F24(unkStruct1->unk0)) + { + MOD06_02244F2C(unkStruct1->unk0); + unkStruct1->action = 1; + } + break; + + case 8: + FUN_0206367C(savStruct, 0); + MOD06_02245190(unkStruct1->unk4); + MOD06_02244DBC(unkStruct1->unk0); + FreeToHeap(unkStruct1); + return TRUE; + + default: + break; + } + return FALSE; +} diff --git a/arm9/src/unk_0206439C.c b/arm9/src/unk_0206439C.c new file mode 100644 index 00000000..80d93557 --- /dev/null +++ b/arm9/src/unk_0206439C.c @@ -0,0 +1,16 @@ +#include "global.h" +#include "heap.h" +#include "party.h" +#include "save_block_2.h" +#include "unk_0206439C.h" + +THUMB_FUNC struct UnkStruct_0206439C* FUN_0206439C(u32 heap_id, u8 mon_idx, struct SaveBlock2* sav2) +{ + struct UnkStruct_0206439C* ret = AllocFromHeapAtEnd(heap_id, sizeof(struct UnkStruct_0206439C)); + struct PlayerParty* party = SavArray_PlayerParty_get(sav2); + + ret->pokemon = GetPartyMonByIndex(party, mon_idx); + ret->unk4 = NULL; + + return ret; +} diff --git a/arm9/src/unk_0208890C.c b/arm9/src/unk_0208890C.c new file mode 100644 index 00000000..0bc8803f --- /dev/null +++ b/arm9/src/unk_0208890C.c @@ -0,0 +1,53 @@ +#include "global.h" +#include "bag.h" +#include "heap.h" +#include "main.h" +#include "MI_memory.h" +#include "player_data.h" +#include "script.h" +#include "unk_0208890C.h" + +extern struct SaveBlock2* ScriptEnvironment_GetSav2Ptr(struct UnkSavStruct80*); +extern void* FUN_02028048(struct SaveBlock2* sav2); +extern void FUN_020373D4(struct UnkSavStruct80*, struct Unk21DBE18*, void*); +extern BOOL FUN_020889B0(struct UnkStruct_02006234*, u32*); +extern BOOL FUN_02088A00(struct UnkStruct_02006234*, u32*); +extern BOOL FUN_02088A78(struct UnkStruct_02006234*, u32*); + +const struct Unk21DBE18 UNK_020FD6E4 = { + FUN_020889B0, + FUN_02088A00, + FUN_02088A78, + 0xFFFFFFFF, +}; + +THUMB_FUNC struct UnkStruct_0208890C* FUN_0208890C(void* a0, struct SaveBlock2* sav2, u32 heap_id, void* a3) +{ + struct UnkStruct_0208890C* ret = AllocFromHeap(heap_id, sizeof(struct UnkStruct_0208890C)); + MI_CpuFill8(ret, 0, sizeof(struct UnkStruct_0208890C)); + + ret->sav2 = sav2; + ret->unk8 = FUN_02028048(sav2); + ret->player = Sav2_PlayerData_GetProfileAddr(sav2); + ret->bag = Sav2_Bag_get(sav2); + ret->options = Sav2_PlayerData_GetOptionsAddr(sav2); + ret->unk1C = a3; + ret->unk4 = a0; + + return ret; +} + +THUMB_FUNC void FUN_02088950(struct UnkSavStruct80* unk, struct UnkStruct_0208890C* unk2) +{ + FUN_020373D4(unk, (struct Unk21DBE18*)&UNK_020FD6E4, unk2); +} + +THUMB_FUNC struct UnkStruct_0208890C* FUN_02088960(struct UnkSavStruct80* unk, void* a1, u32 heap_id) +{ + struct SaveBlock2* sav2 = ScriptEnvironment_GetSav2Ptr(unk); + struct UnkStruct_0208890C* ret = FUN_0208890C(a1, sav2, heap_id, unk->unk98); + + FUN_02088950(unk, ret); + + return ret; +} diff --git a/arm9/src/unk_0208A300.c b/arm9/src/unk_0208A300.c new file mode 100644 index 00000000..3c4a496b --- /dev/null +++ b/arm9/src/unk_0208A300.c @@ -0,0 +1,38 @@ +#include "global.h" +#include "heap.h" +#include "unk_0208A300.h" + +THUMB_FUNC struct UnkStruct_0208A300* FUN_0208A300(u32 heap_id) +{ + struct UnkStruct_0208A300* ret = AllocFromHeap(heap_id, sizeof(struct UnkStruct_0208A300)); + + __builtin__clear(ret, sizeof(struct UnkStruct_0208A300)); + ret->unk4 = 2; + + return ret; +} + +THUMB_FUNC void FUN_0208A320(struct UnkStruct_0208A300* unk) +{ + FreeToHeap(unk); +} + +THUMB_FUNC u32 FUN_0208A328(struct UnkStruct_0208A300* unk) +{ + return unk->unk0; +} + +THUMB_FUNC void FUN_0208A32C(struct UnkStruct_0208A300* unk, u32 a1) +{ + unk->unk0 = a1; +} + +THUMB_FUNC u32 FUN_0208A330(struct UnkStruct_0208A300* unk) +{ + return unk->unk4; +} + +THUMB_FUNC void FUN_0208A334(struct UnkStruct_0208A300* unk, u32 a1) +{ + unk->unk4 = a1; +} diff --git a/files/itemtool/itemdata/item_icon/.gitignore b/files/itemtool/itemdata/item_icon/.gitignore index 190832e8..6710dbd1 100644 --- a/files/itemtool/itemdata/item_icon/.gitignore +++ b/files/itemtool/itemdata/item_icon/.gitignore @@ -162,3 +162,13 @@ narc_0162.NCGR narc_0162.NCLR narc_0164.NCGR narc_0164.NCLR +narc_0166.NCGR +narc_0166.NCLR +narc_0168.NCGR +narc_0168.NCLR +narc_0170.NCGR +narc_0170.NCLR +narc_0172.NCGR +narc_0172.NCLR +narc_0174.NCGR +narc_0174.NCLR diff --git a/files/itemtool/itemdata/item_icon/narc_0166.NCGR b/files/itemtool/itemdata/item_icon/narc_0166.NCGR Binary files differdeleted file mode 100644 index ec3586be..00000000 --- a/files/itemtool/itemdata/item_icon/narc_0166.NCGR +++ /dev/null diff --git a/files/itemtool/itemdata/item_icon/narc_0166.png b/files/itemtool/itemdata/item_icon/narc_0166.png Binary files differnew file mode 100644 index 00000000..de6ca576 --- /dev/null +++ b/files/itemtool/itemdata/item_icon/narc_0166.png diff --git a/files/itemtool/itemdata/item_icon/narc_0167.NCLR b/files/itemtool/itemdata/item_icon/narc_0167.NCLR Binary files differdeleted file mode 100644 index 65e3fb33..00000000 --- a/files/itemtool/itemdata/item_icon/narc_0167.NCLR +++ /dev/null diff --git a/files/itemtool/itemdata/item_icon/narc_0168.NCGR b/files/itemtool/itemdata/item_icon/narc_0168.NCGR Binary files differdeleted file mode 100644 index 260d4342..00000000 --- a/files/itemtool/itemdata/item_icon/narc_0168.NCGR +++ /dev/null diff --git a/files/itemtool/itemdata/item_icon/narc_0168.png b/files/itemtool/itemdata/item_icon/narc_0168.png Binary files differnew file mode 100644 index 00000000..351d0712 --- /dev/null +++ b/files/itemtool/itemdata/item_icon/narc_0168.png diff --git a/files/itemtool/itemdata/item_icon/narc_0169.NCLR b/files/itemtool/itemdata/item_icon/narc_0169.NCLR Binary files differdeleted file mode 100644 index 1082f764..00000000 --- a/files/itemtool/itemdata/item_icon/narc_0169.NCLR +++ /dev/null diff --git a/files/itemtool/itemdata/item_icon/narc_0170.NCGR b/files/itemtool/itemdata/item_icon/narc_0170.NCGR Binary files differdeleted file mode 100644 index 922ca0a3..00000000 --- a/files/itemtool/itemdata/item_icon/narc_0170.NCGR +++ /dev/null diff --git a/files/itemtool/itemdata/item_icon/narc_0170.png b/files/itemtool/itemdata/item_icon/narc_0170.png Binary files differnew file mode 100644 index 00000000..1bfc49f1 --- /dev/null +++ b/files/itemtool/itemdata/item_icon/narc_0170.png diff --git a/files/itemtool/itemdata/item_icon/narc_0171.NCLR b/files/itemtool/itemdata/item_icon/narc_0171.NCLR Binary files differdeleted file mode 100644 index e15a8a7a..00000000 --- a/files/itemtool/itemdata/item_icon/narc_0171.NCLR +++ /dev/null diff --git a/files/itemtool/itemdata/item_icon/narc_0172.NCGR b/files/itemtool/itemdata/item_icon/narc_0172.NCGR Binary files differdeleted file mode 100644 index 15a77735..00000000 --- a/files/itemtool/itemdata/item_icon/narc_0172.NCGR +++ /dev/null diff --git a/files/itemtool/itemdata/item_icon/narc_0172.png b/files/itemtool/itemdata/item_icon/narc_0172.png Binary files differnew file mode 100644 index 00000000..81b648e5 --- /dev/null +++ b/files/itemtool/itemdata/item_icon/narc_0172.png diff --git a/files/itemtool/itemdata/item_icon/narc_0173.NCLR b/files/itemtool/itemdata/item_icon/narc_0173.NCLR Binary files differdeleted file mode 100644 index b3edb23e..00000000 --- a/files/itemtool/itemdata/item_icon/narc_0173.NCLR +++ /dev/null diff --git a/files/itemtool/itemdata/item_icon/narc_0174.NCGR b/files/itemtool/itemdata/item_icon/narc_0174.NCGR Binary files differdeleted file mode 100644 index 390dd391..00000000 --- a/files/itemtool/itemdata/item_icon/narc_0174.NCGR +++ /dev/null diff --git a/files/itemtool/itemdata/item_icon/narc_0174.png b/files/itemtool/itemdata/item_icon/narc_0174.png Binary files differnew file mode 100644 index 00000000..1766cbcd --- /dev/null +++ b/files/itemtool/itemdata/item_icon/narc_0174.png diff --git a/files/itemtool/itemdata/item_icon/narc_0175.NCLR b/files/itemtool/itemdata/item_icon/narc_0175.NCLR Binary files differdeleted file mode 100644 index 9ab0f314..00000000 --- a/files/itemtool/itemdata/item_icon/narc_0175.NCLR +++ /dev/null diff --git a/files/poketool/icongra/poke_icon/.gitignore b/files/poketool/icongra/poke_icon/.gitignore index 8f4afa7f..fccab7c8 100644 --- a/files/poketool/icongra/poke_icon/.gitignore +++ b/files/poketool/icongra/poke_icon/.gitignore @@ -1,6 +1,5 @@ narc_0000.NCLR -narc_0002.NCER -narc_0004.NCER +*.NCER narc_0007.NCGR narc_0008.NCGR narc_0009.NCGR @@ -11,4 +10,24 @@ 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_0402.NCGR diff --git a/files/poketool/icongra/poke_icon/narc_0002.json b/files/poketool/icongra/poke_icon/narc_0002.json index defb5b41..1750fa55 100644 --- a/files/poketool/icongra/poke_icon/narc_0002.json +++ b/files/poketool/icongra/poke_icon/narc_0002.json @@ -4,6 +4,7 @@ "imageHeight": 32, "imageWidth": 32, "cellCount": 2, + "mappingType": 0, "cells": [ { "readOnly": 2054, diff --git a/files/poketool/icongra/poke_icon/narc_0004.json b/files/poketool/icongra/poke_icon/narc_0004.json index 3d8b8b80..b8cae63a 100644 --- a/files/poketool/icongra/poke_icon/narc_0004.json +++ b/files/poketool/icongra/poke_icon/narc_0004.json @@ -4,6 +4,7 @@ "imageHeight": 32, "imageWidth": 32, "cellCount": 2, + "mappingType": 0, "cells": [ { "readOnly": 2054, diff --git a/files/poketool/icongra/poke_icon/narc_0006.NCER b/files/poketool/icongra/poke_icon/narc_0006.NCER Binary files differdeleted file mode 100644 index 19e6e054..00000000 --- a/files/poketool/icongra/poke_icon/narc_0006.NCER +++ /dev/null diff --git a/files/poketool/icongra/poke_icon/narc_0006.json b/files/poketool/icongra/poke_icon/narc_0006.json new file mode 100644 index 00000000..ce7f1d83 --- /dev/null +++ b/files/poketool/icongra/poke_icon/narc_0006.json @@ -0,0 +1,68 @@ +{ + "labelEnabled": true, + "extended": true, + "imageHeight": 32, + "imageWidth": 32, + "cellCount": 2, + "mappingType": 1, + "cells": [ + { + "readOnly": 2054, + "maxX": 15, + "maxY": 15, + "minX": 65520, + "minY": 65520, + "OAM": { + "Attr0": { + "YCoordinate": 240, + "Rotation": false, + "SizeDisable": false, + "Mode": 0, + "Mosaic": false, + "Colours": 16, + "Shape": 0 + }, + "Attr1": { + "XCoordinate": 496, + "RotationScaling": 0, + "Size": 2 + }, + "Attr2": { + "CharName": 0, + "Priority": 0, + "Palette": 0 + } + } + }, + { + "readOnly": 2054, + "maxX": 15, + "maxY": 15, + "minX": 65520, + "minY": 65520, + "OAM": { + "Attr0": { + "YCoordinate": 240, + "Rotation": false, + "SizeDisable": false, + "Mode": 0, + "Mosaic": false, + "Colours": 16, + "Shape": 0 + }, + "Attr1": { + "XCoordinate": 496, + "RotationScaling": 0, + "Size": 2 + }, + "Attr2": { + "CharName": 8, + "Priority": 0, + "Palette": 0 + } + } + } + ], + "labels": ["CellAnime0", "CellAnime1", "CellAnime2", "CellAnime3", "CellAnime4", "CellAnime5"], + "labelCount": 6 +} diff --git a/files/poketool/icongra/poke_icon/narc_0017.NCGR b/files/poketool/icongra/poke_icon/narc_0017.NCGR Binary files differdeleted file mode 100644 index 8676315a..00000000 --- a/files/poketool/icongra/poke_icon/narc_0017.NCGR +++ /dev/null diff --git a/files/poketool/icongra/poke_icon/narc_0017.png b/files/poketool/icongra/poke_icon/narc_0017.png Binary files differnew file mode 100644 index 00000000..2b8dbd37 --- /dev/null +++ b/files/poketool/icongra/poke_icon/narc_0017.png diff --git a/files/poketool/icongra/poke_icon/narc_0018.NCGR b/files/poketool/icongra/poke_icon/narc_0018.NCGR Binary files differdeleted file mode 100644 index 6401655c..00000000 --- a/files/poketool/icongra/poke_icon/narc_0018.NCGR +++ /dev/null diff --git a/files/poketool/icongra/poke_icon/narc_0018.png b/files/poketool/icongra/poke_icon/narc_0018.png Binary files differnew file mode 100644 index 00000000..fe17c1e7 --- /dev/null +++ b/files/poketool/icongra/poke_icon/narc_0018.png diff --git a/files/poketool/icongra/poke_icon/narc_0019.NCGR b/files/poketool/icongra/poke_icon/narc_0019.NCGR Binary files differdeleted file mode 100644 index 46d342ae..00000000 --- a/files/poketool/icongra/poke_icon/narc_0019.NCGR +++ /dev/null diff --git a/files/poketool/icongra/poke_icon/narc_0019.png b/files/poketool/icongra/poke_icon/narc_0019.png Binary files differnew file mode 100644 index 00000000..11ad963d --- /dev/null +++ b/files/poketool/icongra/poke_icon/narc_0019.png diff --git a/files/poketool/icongra/poke_icon/narc_0020.NCGR b/files/poketool/icongra/poke_icon/narc_0020.NCGR Binary files differdeleted file mode 100644 index db6cb323..00000000 --- a/files/poketool/icongra/poke_icon/narc_0020.NCGR +++ /dev/null diff --git a/files/poketool/icongra/poke_icon/narc_0020.png b/files/poketool/icongra/poke_icon/narc_0020.png Binary files differnew file mode 100644 index 00000000..6efbd041 --- /dev/null +++ b/files/poketool/icongra/poke_icon/narc_0020.png diff --git a/files/poketool/icongra/poke_icon/narc_0021.NCGR b/files/poketool/icongra/poke_icon/narc_0021.NCGR Binary files differdeleted file mode 100644 index f0e4eb2b..00000000 --- a/files/poketool/icongra/poke_icon/narc_0021.NCGR +++ /dev/null diff --git a/files/poketool/icongra/poke_icon/narc_0021.png b/files/poketool/icongra/poke_icon/narc_0021.png Binary files differnew file mode 100644 index 00000000..1c857d44 --- /dev/null +++ b/files/poketool/icongra/poke_icon/narc_0021.png diff --git a/files/poketool/icongra/poke_icon/narc_0022.NCGR b/files/poketool/icongra/poke_icon/narc_0022.NCGR Binary files differdeleted file mode 100644 index 3d83aea4..00000000 --- a/files/poketool/icongra/poke_icon/narc_0022.NCGR +++ /dev/null diff --git a/files/poketool/icongra/poke_icon/narc_0022.png b/files/poketool/icongra/poke_icon/narc_0022.png Binary files differnew file mode 100644 index 00000000..d5e6471a --- /dev/null +++ b/files/poketool/icongra/poke_icon/narc_0022.png diff --git a/files/poketool/icongra/poke_icon/narc_0023.NCGR b/files/poketool/icongra/poke_icon/narc_0023.NCGR Binary files differdeleted file mode 100644 index b84b867e..00000000 --- a/files/poketool/icongra/poke_icon/narc_0023.NCGR +++ /dev/null diff --git a/files/poketool/icongra/poke_icon/narc_0023.png b/files/poketool/icongra/poke_icon/narc_0023.png Binary files differnew file mode 100644 index 00000000..c3c8f5d8 --- /dev/null +++ b/files/poketool/icongra/poke_icon/narc_0023.png diff --git a/files/poketool/icongra/poke_icon/narc_0024.NCGR b/files/poketool/icongra/poke_icon/narc_0024.NCGR Binary files differdeleted file mode 100644 index a0bb2fad..00000000 --- a/files/poketool/icongra/poke_icon/narc_0024.NCGR +++ /dev/null diff --git a/files/poketool/icongra/poke_icon/narc_0024.png b/files/poketool/icongra/poke_icon/narc_0024.png Binary files differnew file mode 100644 index 00000000..c0348df5 --- /dev/null +++ b/files/poketool/icongra/poke_icon/narc_0024.png diff --git a/files/poketool/icongra/poke_icon/narc_0025.NCGR b/files/poketool/icongra/poke_icon/narc_0025.NCGR Binary files differdeleted file mode 100644 index e3945760..00000000 --- a/files/poketool/icongra/poke_icon/narc_0025.NCGR +++ /dev/null diff --git a/files/poketool/icongra/poke_icon/narc_0025.png b/files/poketool/icongra/poke_icon/narc_0025.png Binary files differnew file mode 100644 index 00000000..fc77716e --- /dev/null +++ b/files/poketool/icongra/poke_icon/narc_0025.png diff --git a/files/poketool/icongra/poke_icon/narc_0026.NCGR b/files/poketool/icongra/poke_icon/narc_0026.NCGR Binary files differdeleted file mode 100644 index f40adfe7..00000000 --- a/files/poketool/icongra/poke_icon/narc_0026.NCGR +++ /dev/null diff --git a/files/poketool/icongra/poke_icon/narc_0026.png b/files/poketool/icongra/poke_icon/narc_0026.png Binary files differnew file mode 100644 index 00000000..ae7b2225 --- /dev/null +++ b/files/poketool/icongra/poke_icon/narc_0026.png diff --git a/files/poketool/icongra/poke_icon/narc_0027.NCGR b/files/poketool/icongra/poke_icon/narc_0027.NCGR Binary files differdeleted file mode 100644 index 690c7ab2..00000000 --- a/files/poketool/icongra/poke_icon/narc_0027.NCGR +++ /dev/null diff --git a/files/poketool/icongra/poke_icon/narc_0027.png b/files/poketool/icongra/poke_icon/narc_0027.png Binary files differnew file mode 100644 index 00000000..b9959d1c --- /dev/null +++ b/files/poketool/icongra/poke_icon/narc_0027.png diff --git a/files/poketool/icongra/poke_icon/narc_0028.NCGR b/files/poketool/icongra/poke_icon/narc_0028.NCGR Binary files differdeleted file mode 100644 index 4adf4b97..00000000 --- a/files/poketool/icongra/poke_icon/narc_0028.NCGR +++ /dev/null diff --git a/files/poketool/icongra/poke_icon/narc_0028.png b/files/poketool/icongra/poke_icon/narc_0028.png Binary files differnew file mode 100644 index 00000000..b7f3a1eb --- /dev/null +++ b/files/poketool/icongra/poke_icon/narc_0028.png diff --git a/files/poketool/icongra/poke_icon/narc_0029.NCGR b/files/poketool/icongra/poke_icon/narc_0029.NCGR Binary files differdeleted file mode 100644 index 7db15dcf..00000000 --- a/files/poketool/icongra/poke_icon/narc_0029.NCGR +++ /dev/null diff --git a/files/poketool/icongra/poke_icon/narc_0029.png b/files/poketool/icongra/poke_icon/narc_0029.png Binary files differnew file mode 100644 index 00000000..a52ea031 --- /dev/null +++ b/files/poketool/icongra/poke_icon/narc_0029.png diff --git a/files/poketool/icongra/poke_icon/narc_0030.NCGR b/files/poketool/icongra/poke_icon/narc_0030.NCGR Binary files differdeleted file mode 100644 index 9eba4fa4..00000000 --- a/files/poketool/icongra/poke_icon/narc_0030.NCGR +++ /dev/null diff --git a/files/poketool/icongra/poke_icon/narc_0030.png b/files/poketool/icongra/poke_icon/narc_0030.png Binary files differnew file mode 100644 index 00000000..3c81efd6 --- /dev/null +++ b/files/poketool/icongra/poke_icon/narc_0030.png diff --git a/files/poketool/icongra/poke_icon/narc_0031.NCGR b/files/poketool/icongra/poke_icon/narc_0031.NCGR Binary files differdeleted file mode 100644 index ed436770..00000000 --- a/files/poketool/icongra/poke_icon/narc_0031.NCGR +++ /dev/null diff --git a/files/poketool/icongra/poke_icon/narc_0031.png b/files/poketool/icongra/poke_icon/narc_0031.png Binary files differnew file mode 100644 index 00000000..8967d44a --- /dev/null +++ b/files/poketool/icongra/poke_icon/narc_0031.png diff --git a/files/poketool/icongra/poke_icon/narc_0032.NCGR b/files/poketool/icongra/poke_icon/narc_0032.NCGR Binary files differdeleted file mode 100644 index 3424a464..00000000 --- a/files/poketool/icongra/poke_icon/narc_0032.NCGR +++ /dev/null diff --git a/files/poketool/icongra/poke_icon/narc_0032.png b/files/poketool/icongra/poke_icon/narc_0032.png Binary files differnew file mode 100644 index 00000000..feb77f7d --- /dev/null +++ b/files/poketool/icongra/poke_icon/narc_0032.png diff --git a/files/poketool/icongra/poke_icon/narc_0033.NCGR b/files/poketool/icongra/poke_icon/narc_0033.NCGR Binary files differdeleted file mode 100644 index ca90981b..00000000 --- a/files/poketool/icongra/poke_icon/narc_0033.NCGR +++ /dev/null diff --git a/files/poketool/icongra/poke_icon/narc_0033.png b/files/poketool/icongra/poke_icon/narc_0033.png Binary files differnew file mode 100644 index 00000000..67543933 --- /dev/null +++ b/files/poketool/icongra/poke_icon/narc_0033.png diff --git a/files/poketool/icongra/poke_icon/narc_0034.NCGR b/files/poketool/icongra/poke_icon/narc_0034.NCGR Binary files differdeleted file mode 100644 index 9fa16d27..00000000 --- a/files/poketool/icongra/poke_icon/narc_0034.NCGR +++ /dev/null diff --git a/files/poketool/icongra/poke_icon/narc_0034.png b/files/poketool/icongra/poke_icon/narc_0034.png Binary files differnew file mode 100644 index 00000000..5919f109 --- /dev/null +++ b/files/poketool/icongra/poke_icon/narc_0034.png diff --git a/files/poketool/icongra/poke_icon/narc_0035.NCGR b/files/poketool/icongra/poke_icon/narc_0035.NCGR Binary files differdeleted file mode 100644 index 0fbd78f8..00000000 --- a/files/poketool/icongra/poke_icon/narc_0035.NCGR +++ /dev/null diff --git a/files/poketool/icongra/poke_icon/narc_0035.png b/files/poketool/icongra/poke_icon/narc_0035.png Binary files differnew file mode 100644 index 00000000..08198e6b --- /dev/null +++ b/files/poketool/icongra/poke_icon/narc_0035.png diff --git a/files/poketool/icongra/poke_icon/narc_0036.NCGR b/files/poketool/icongra/poke_icon/narc_0036.NCGR Binary files differdeleted file mode 100644 index 109becc0..00000000 --- a/files/poketool/icongra/poke_icon/narc_0036.NCGR +++ /dev/null diff --git a/files/poketool/icongra/poke_icon/narc_0036.png b/files/poketool/icongra/poke_icon/narc_0036.png Binary files differnew file mode 100644 index 00000000..a2483ae6 --- /dev/null +++ b/files/poketool/icongra/poke_icon/narc_0036.png diff --git a/filesystem.mk b/filesystem.mk index 4264c367..387231bf 100644 --- a/filesystem.mk +++ b/filesystem.mk @@ -275,10 +275,13 @@ endif HOSTFS_FILES := $(NITROFS_FILES:%=files/%) %.narc: - $(KNARC) -d $(basename $@)/ -p $@ + $(KNARC) -d $(basename $@)/ -p $@ -i %.arc: - $(KNARC) -d $(basename $@)/ -p $@ + $(KNARC) -d $(basename $@)/ -p $@ -i + +%.naix: %.narc +files/wazaeffect/we.naix: %.naix: %.arc O2NARC_TARGETS := \ files/poketool/personal/personal.narc \ @@ -295,8 +298,9 @@ O2NARC_TARGETS := \ ALL_O2NARC_TARGETS := $(O2NARC_TARGETS) \ files/poketool/trainer/trpoke.narc +O2NARCFLAGS := -i files/poketool/personal/pms.narc: O2NARCFLAGS = -f -files/itemtool/itemdata/item_data.narc: O2NARCFLAGS = -p 0xFF +files/itemtool/itemdata/item_data.narc: O2NARCFLAGS += -p 0xFF ifeq (,$(NODEP)) $(ALL_O2NARC_TARGETS): dep = $(shell $(SCANINC) -I include -I include-mw -I arm9/lib/include $(patsubst %.narc,%.json.txt,$@)) @@ -1742,7 +1746,17 @@ files/itemtool/itemdata/item_icon.narc: \ files/itemtool/itemdata/item_icon/narc_0162.NCGR \ files/itemtool/itemdata/item_icon/narc_0162.NCLR \ files/itemtool/itemdata/item_icon/narc_0164.NCGR \ - files/itemtool/itemdata/item_icon/narc_0164.NCLR + files/itemtool/itemdata/item_icon/narc_0164.NCLR \ + files/itemtool/itemdata/item_icon/narc_0166.NCGR \ + files/itemtool/itemdata/item_icon/narc_0166.NCLR \ + files/itemtool/itemdata/item_icon/narc_0168.NCGR \ + files/itemtool/itemdata/item_icon/narc_0168.NCLR \ + files/itemtool/itemdata/item_icon/narc_0170.NCGR \ + files/itemtool/itemdata/item_icon/narc_0170.NCLR \ + files/itemtool/itemdata/item_icon/narc_0172.NCGR \ + files/itemtool/itemdata/item_icon/narc_0172.NCLR \ + files/itemtool/itemdata/item_icon/narc_0174.NCGR \ + files/itemtool/itemdata/item_icon/narc_0174.NCLR files/application/custom_ball/data/cb_data.narc: \ @@ -2589,6 +2603,7 @@ files/poketool/icongra/poke_icon.narc: \ files/poketool/icongra/poke_icon/narc_0000.NCLR \ files/poketool/icongra/poke_icon/narc_0002.NCER \ files/poketool/icongra/poke_icon/narc_0004.NCER \ + files/poketool/icongra/poke_icon/narc_0006.NCER \ files/poketool/icongra/poke_icon/narc_0007.NCGR \ files/poketool/icongra/poke_icon/narc_0008.NCGR \ files/poketool/icongra/poke_icon/narc_0009.NCGR \ @@ -2599,6 +2614,26 @@ files/poketool/icongra/poke_icon.narc: \ files/poketool/icongra/poke_icon/narc_0014.NCGR \ files/poketool/icongra/poke_icon/narc_0015.NCGR \ files/poketool/icongra/poke_icon/narc_0016.NCGR \ + files/poketool/icongra/poke_icon/narc_0017.NCGR \ + files/poketool/icongra/poke_icon/narc_0018.NCGR \ + files/poketool/icongra/poke_icon/narc_0019.NCGR \ + files/poketool/icongra/poke_icon/narc_0020.NCGR \ + files/poketool/icongra/poke_icon/narc_0021.NCGR \ + files/poketool/icongra/poke_icon/narc_0022.NCGR \ + files/poketool/icongra/poke_icon/narc_0023.NCGR \ + files/poketool/icongra/poke_icon/narc_0024.NCGR \ + files/poketool/icongra/poke_icon/narc_0025.NCGR \ + files/poketool/icongra/poke_icon/narc_0026.NCGR \ + files/poketool/icongra/poke_icon/narc_0027.NCGR \ + files/poketool/icongra/poke_icon/narc_0028.NCGR \ + files/poketool/icongra/poke_icon/narc_0029.NCGR \ + files/poketool/icongra/poke_icon/narc_0030.NCGR \ + files/poketool/icongra/poke_icon/narc_0031.NCGR \ + files/poketool/icongra/poke_icon/narc_0032.NCGR \ + files/poketool/icongra/poke_icon/narc_0033.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/msgdata/msg.narc: \ diff --git a/graphics_rules.mk b/graphics_rules.mk index 8abbbbaa..691a81f4 100644 --- a/graphics_rules.mk +++ b/graphics_rules.mk @@ -76,6 +76,11 @@ CLOBBER_SIZE_VERSION101_NCGR_FILES := files/graphic/bag_gra/narc_0002.NCGR \ files/itemtool/itemdata/item_icon/narc_0160.NCGR \ files/itemtool/itemdata/item_icon/narc_0162.NCGR \ files/itemtool/itemdata/item_icon/narc_0164.NCGR \ + files/itemtool/itemdata/item_icon/narc_0166.NCGR \ + files/itemtool/itemdata/item_icon/narc_0168.NCGR \ + files/itemtool/itemdata/item_icon/narc_0170.NCGR \ + files/itemtool/itemdata/item_icon/narc_0172.NCGR \ + files/itemtool/itemdata/item_icon/narc_0174.NCGR \ files/poketool/icongra/poke_icon/narc_0007.NCGR \ files/poketool/icongra/poke_icon/narc_0008.NCGR \ files/poketool/icongra/poke_icon/narc_0009.NCGR \ @@ -86,6 +91,26 @@ CLOBBER_SIZE_VERSION101_NCGR_FILES := files/graphic/bag_gra/narc_0002.NCGR \ files/poketool/icongra/poke_icon/narc_0014.NCGR \ files/poketool/icongra/poke_icon/narc_0015.NCGR \ files/poketool/icongra/poke_icon/narc_0016.NCGR \ + files/poketool/icongra/poke_icon/narc_0017.NCGR \ + files/poketool/icongra/poke_icon/narc_0018.NCGR \ + files/poketool/icongra/poke_icon/narc_0019.NCGR \ + files/poketool/icongra/poke_icon/narc_0020.NCGR \ + files/poketool/icongra/poke_icon/narc_0021.NCGR \ + files/poketool/icongra/poke_icon/narc_0022.NCGR \ + files/poketool/icongra/poke_icon/narc_0023.NCGR \ + files/poketool/icongra/poke_icon/narc_0024.NCGR \ + files/poketool/icongra/poke_icon/narc_0025.NCGR \ + files/poketool/icongra/poke_icon/narc_0026.NCGR \ + files/poketool/icongra/poke_icon/narc_0027.NCGR \ + files/poketool/icongra/poke_icon/narc_0028.NCGR \ + files/poketool/icongra/poke_icon/narc_0029.NCGR \ + files/poketool/icongra/poke_icon/narc_0030.NCGR \ + files/poketool/icongra/poke_icon/narc_0031.NCGR \ + files/poketool/icongra/poke_icon/narc_0032.NCGR \ + files/poketool/icongra/poke_icon/narc_0033.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 4BPP_NCLR_FILES := files/application/wifi_earth/wifi_earth/narc_0006.NCLR \ @@ -488,6 +513,11 @@ NCGR_CLEAN_LIST := files/application/wifi_earth/wifi_earth/narc_0005.NCGR \ files/itemtool/itemdata/item_icon/narc_0160.NCGR \ files/itemtool/itemdata/item_icon/narc_0162.NCGR \ files/itemtool/itemdata/item_icon/narc_0164.NCGR \ + files/itemtool/itemdata/item_icon/narc_0166.NCGR \ + files/itemtool/itemdata/item_icon/narc_0168.NCGR \ + files/itemtool/itemdata/item_icon/narc_0170.NCGR \ + files/itemtool/itemdata/item_icon/narc_0172.NCGR \ + files/itemtool/itemdata/item_icon/narc_0174.NCGR \ files/poketool/icongra/poke_icon/narc_0007.NCGR \ files/poketool/icongra/poke_icon/narc_0008.NCGR \ files/poketool/icongra/poke_icon/narc_0009.NCGR \ @@ -498,6 +528,26 @@ NCGR_CLEAN_LIST := files/application/wifi_earth/wifi_earth/narc_0005.NCGR \ files/poketool/icongra/poke_icon/narc_0014.NCGR \ files/poketool/icongra/poke_icon/narc_0015.NCGR \ files/poketool/icongra/poke_icon/narc_0016.NCGR \ + files/poketool/icongra/poke_icon/narc_0017.NCGR \ + files/poketool/icongra/poke_icon/narc_0018.NCGR \ + files/poketool/icongra/poke_icon/narc_0019.NCGR \ + files/poketool/icongra/poke_icon/narc_0020.NCGR \ + files/poketool/icongra/poke_icon/narc_0021.NCGR \ + files/poketool/icongra/poke_icon/narc_0022.NCGR \ + files/poketool/icongra/poke_icon/narc_0023.NCGR \ + files/poketool/icongra/poke_icon/narc_0024.NCGR \ + files/poketool/icongra/poke_icon/narc_0025.NCGR \ + files/poketool/icongra/poke_icon/narc_0026.NCGR \ + files/poketool/icongra/poke_icon/narc_0027.NCGR \ + files/poketool/icongra/poke_icon/narc_0028.NCGR \ + files/poketool/icongra/poke_icon/narc_0029.NCGR \ + files/poketool/icongra/poke_icon/narc_0030.NCGR \ + files/poketool/icongra/poke_icon/narc_0031.NCGR \ + files/poketool/icongra/poke_icon/narc_0032.NCGR \ + files/poketool/icongra/poke_icon/narc_0033.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/pokegra/pokegra/narc_0006.NCGR \ files/poketool/pokegra/pokegra/narc_0007.NCGR \ @@ -752,6 +802,11 @@ NCLR_CLEAN_LIST := files/application/wifi_earth/wifi_earth/narc_0006.NCLR \ files/itemtool/itemdata/item_icon/narc_0160.NCLR \ files/itemtool/itemdata/item_icon/narc_0162.NCLR \ files/itemtool/itemdata/item_icon/narc_0164.NCLR \ + files/itemtool/itemdata/item_icon/narc_0166.NCLR \ + files/itemtool/itemdata/item_icon/narc_0168.NCLR \ + files/itemtool/itemdata/item_icon/narc_0170.NCLR \ + files/itemtool/itemdata/item_icon/narc_0172.NCLR \ + files/itemtool/itemdata/item_icon/narc_0174.NCLR \ files/poketool/icongra/poke_icon/narc_0000.NCLR \ files/poketool/pokegra/pokegra/narc_0010.NCLR \ files/poketool/pokegra/pokegra/narc_0011.NCLR \ @@ -881,7 +936,8 @@ NCLR_CLEAN_LIST := files/application/wifi_earth/wifi_earth/narc_0006.NCLR \ files/poketool/trgra/trfgra/narc_0194.NCLR \ NCER_CLEAN_LIST := files/poketool/icongra/poke_icon/narc_0002.NCER \ - files/poketool/icongra/poke_icon/narc_0004.NCER + files/poketool/icongra/poke_icon/narc_0004.NCER \ + files/poketool/icongra/poke_icon/narc_0006.NCER NSCR_CLEAN_LIST := files/demo/title/titledemo/narc_0000.NSCR \ files/demo/title/titledemo/narc_0008.NSCR \ diff --git a/include/GX_layers.h b/include/GX_layers.h index e94fb4ec..3943d582 100644 --- a/include/GX_layers.h +++ b/include/GX_layers.h @@ -3,9 +3,6 @@ #include "global.h" -#include "GX_vramcnt.h" -#include "error_message_reset.h" -#include "gx.h" struct GX_LayerData { @@ -20,14 +17,38 @@ typedef enum { } GX_LayerToggle; -THUMB_FUNC void GX_SetBanks(const struct GraphicsBanks *banks); -THUMB_FUNC void GX_DisableEngineALayers(); -THUMB_FUNC void GX_EngineAToggleLayers(u32 layer_mask, GX_LayerToggle layer_toggle); -THUMB_FUNC void GX_SetEngineALayers(u32 layer_mask); -THUMB_FUNC void GX_DisableEngineBLayers(); -THUMB_FUNC void GX_EngineBToggleLayers(u32 layer_mask, GX_LayerToggle layer_toggle); -THUMB_FUNC void GX_BothDispOn(); -THUMB_FUNC void GX_SwapDisplay(); -THUMB_FUNC u32 GX_GetEngineALayers(); +struct GraphicsBanks +{ + s32 bg; + s32 bgextpltt; + s32 subbg; + s32 subbgextpltt; + s32 obj; + s32 objextpltt; + s32 subobj; + s32 subobjextpltt; + s32 tex; + s32 texpltt; +}; + + +struct GraphicsModes { + u32 mode1; + u32 mode2; + u32 mode3; + u32 mode4; +}; + + + +void GX_SetBanks(const struct GraphicsBanks *banks); +void GX_DisableEngineALayers(); +void GX_EngineAToggleLayers(u32 layer_mask, GX_LayerToggle layer_toggle); +void GX_SetEngineALayers(u32 layer_mask); +void GX_DisableEngineBLayers(); +void GX_EngineBToggleLayers(u32 layer_mask, GX_LayerToggle layer_toggle); +void GX_BothDispOn(); +void GX_SwapDisplay(); +u32 GX_GetEngineALayers(); #endif //POKEDIAMOND_GX_LAYERS_H diff --git a/include/WIFI_stubsmd5_dummy.h b/include/WIFI_stubsmd5_dummy.h new file mode 100644 index 00000000..d82b55c5 --- /dev/null +++ b/include/WIFI_stubsmd5_dummy.h @@ -0,0 +1,11 @@ +#ifndef POKEDIAMOND_WIFI_STUBSMD5_DUMMY_H +#define POKEDIAMOND_WIFI_STUBSMD5_DUMMY_H + +#include "nitro/types.h" +#include "dgt.h" + +void MD5Final(u8 *digest, struct DGTHash1Context *context); +void MD5Update(struct DGTHash1Context *context, u8 *input, u32 length); +void MD5Init(struct DGTHash1Context *context); + +#endif //POKEDIAMOND_WIFI_STUBSMD5_DUMMY_H diff --git a/include/constants/decorations.h b/include/constants/decorations.h new file mode 100644 index 00000000..e9b4e947 --- /dev/null +++ b/include/constants/decorations.h @@ -0,0 +1,144 @@ +#ifndef POKEDIAMOND_DECORATIONS_H
+#define POKEDIAMOND_DECORATIONS_H
+
+#define DECORATION_NONE 0
+#define DECORATION_DUMMY_1 1
+#define DECORATION_DUMMY_2 2
+#define DECORATION_DUMMY_3 3
+#define DECORATION_DUMMY_4 4
+#define DECORATION_DUMMY_5 5
+#define DECORATION_BIG_BOULDER 6
+#define DECORATION_YELLOW_CUSHION 7
+#define DECORATION_BLUE_CUSHION 8
+#define DECORATION_WOODEN_CHAIR 9
+#define DECORATION_BIG_TABLE 10
+#define DECORATION_PLAIN_TABLE 11
+#define DECORATION_SMALL_TABLE 12
+#define DECORATION_LONG_TABLE 13
+#define DECORATION_WIDE_TABLE 14
+#define DECORATION_POKE_TABLE 15
+#define DECORATION_BIG_BOOKSHELF 16
+#define DECORATION_SMALL_BOOKSHELF 17
+#define DECORATION_RESEARCH_SHELF 18
+#define DECORATION_BIKE_RACK 19
+#define DECORATION_SHOP_SHELF 20
+#define DECORATION_DISPLAY_SHELF 21
+#define DECORATION_CUPBOARD 22
+#define DECORATION_WOOD_DRESSER 23
+#define DECORATION_PINK_DRESSER 24
+#define DECORATION_TV 25
+#define DECORATION_REFRIGERATOR 26
+#define DECORATION_PRETTY_SINK 27
+#define DECORATION_FEATHERY_BED 28
+#define DECORATION_TRASH_CAN 29
+#define DECORATION_CARDBOARD_BOX 30
+#define DECORATION_CRATE 31
+#define DECORATION_CONTAINER 32
+#define DECORATION_OIL_DRUM 33
+#define DECORATION_BIG_OIL_DRUM 34
+#define DECORATION_IRON_BEAM 35
+#define DECORATION_POTTED_PLANT 36
+#define DECORATION_POKE_FLOWER 37
+#define DECORATION_HEALING_MACHINE 38
+#define DECORATION_LAB_MACHINE 39
+#define DECORATION_TEST_MACHINE 40
+#define DECORATION_GAME_SYSTEM 41
+#define DECORATION_VENDING_MACHINE 42
+#define DECORATION_RED_BIKE 43
+#define DECORATION_GREEN_BIKE 44
+#define DECORATION_BINOCULARS 45
+#define DECORATION_GLOBE 46
+#define DECORATION_GYM_STATUE 47
+#define DECORATION_RED_TENT 48
+#define DECORATION_BLUE_TENT 49
+#define DECORATION_CLEAR_TENT 50
+#define DECORATION_MAZE_BLOCK_1 51
+#define DECORATION_MAZE_BLOCK_2 52
+#define DECORATION_MAZE_BLOCK_3 53
+#define DECORATION_MAZE_BLOCK_4 54
+#define DECORATION_MAZE_BLOCK_5 55
+#define DECORATION_HOLE_TOOL 56
+#define DECORATION_PIT_TOOL 57
+#define DECORATION_SMOKE_TOOL 58
+#define DECORATION_BIG_SMOKE_TOOL 59
+#define DECORATION_ROCK_TOOL 60
+#define DECORATION_ROCKFALL_TOOL 61
+#define DECORATION_FOAM_TOOL 62
+#define DECORATION_BUBBLE_TOOL 63
+#define DECORATION_ALERT_TOOL_1 64
+#define DECORATION_ALERT_TOOL_2 65
+#define DECORATION_ALERT_TOOL_3 66
+#define DECORATION_ALERT_TOOL_4 67
+#define DECORATION_LEAF_TOOL 68
+#define DECORATION_FLOWER_TOOL 69
+#define DECORATION_EMBER_TOOL 70
+#define DECORATION_FIRE_TOOL 71
+#define DECORATION_CUTE_CUP 72
+#define DECORATION_COOL_CUP 73
+#define DECORATION_BEAUTY_CUP 74
+#define DECORATION_TOUGH_CUP 75
+#define DECORATION_CLEVER_CUP 76
+#define DECORATION_BLUE_CRYSTAL 77
+#define DECORATION_PINK_CRYSTAL 78
+#define DECORATION_RED_CRYSTAL 79
+#define DECORATION_YELLOW_CRYSTAL 80
+#define DECORATION_PRETTY_GEM 81
+#define DECORATION_SHINY_GEM 82
+#define DECORATION_MYSTIC_GEM 83
+#define DECORATION_GLITTER_GEM 84
+#define DECORATION_BRONZE_TROPHY 85
+#define DECORATION_SILVER_TROPHY 86
+#define DECORATION_GOLD_TROPHY 87
+#define DECORATION_GREAT_TROPHY 88
+#define DECORATION_BALL_ORNAMENT 89
+#define DECORATION_ROUND_ORNAMENT 90
+#define DECORATION_CLEAR_ORNAMENT 91
+#define DECORATION_CHARMANDER_DOLL 92
+#define DECORATION_BULBASAUR_DOLL 93
+#define DECORATION_SQUIRTLE_DOLL 94
+#define DECORATION_CYNDAQUIL_DOLL 95
+#define DECORATION_CHIKORITA_DOLL 96
+#define DECORATION_TOTODILE_DOLL 97
+#define DECORATION_TORCHIC_DOLL 98
+#define DECORATION_TREECKO_DOLL 99
+#define DECORATION_MUDKIP_DOLL 100
+#define DECORATION_CHIMCHAR_DOLL 101
+#define DECORATION_TURTWIG_DOLL 102
+#define DECORATION_PIPLUP_DOLL 103
+#define DECORATION_PIKACHU_DOLL 104
+#define DECORATION_PLUSLE_DOLL 105
+#define DECORATION_MINUN_DOLL 106
+#define DECORATION_CLEFAIRY_DOLL 107
+#define DECORATION_JIGGLYPUFF_DOLL 108
+#define DECORATION_WOBBUFFET_DOLL 109
+#define DECORATION_MEOWTH_DOLL 110
+#define DECORATION_SKITTY_DOLL 111
+#define DECORATION_GLAMEOW_DOLL 112
+#define DECORATION_BUNEARY_DOLL 113
+#define DECORATION_WEAVILE_DOLL 114
+#define DECORATION_MUNCHLAX_DOLL 115
+#define DECORATION_BONSLY_DOLL 116
+#define DECORATION_MIME_JR__DOLL 117
+#define DECORATION_LUCARIO_DOLL 118
+#define DECORATION_MANTYKE_DOLL 119
+#define DECORATION_BUIZEL_DOLL 120
+#define DECORATION_CHATOT_DOLL 121
+#define DECORATION_MANAPHY_DOLL 122
+#define DECORATION_SNORLAX_DOLL 123
+#define DECORATION_WAILORD_DOLL 124
+#define DECORATION_MAGNEZONE_DOLL 125
+#define DECORATION_DRIFLOON_DOLL 126
+#define DECORATION_HAPPINY_DOLL 127
+#define DECORATION_PACHIRISU_DOLL 128
+#define DECORATION_129 129
+#define DECORATION_130 130
+#define DECORATION_131 131
+#define DECORATION_132 132
+#define DECORATION_WIDE_SOFA 133
+#define DECORATION_BONSAI 134
+#define DECORATION_DAINTY_FLOWERS 135
+#define DECORATION_LOVELY_FLOWERS 136
+#define DECORATION_PRETTY_FLOWERS 137
+#define DECORATION_LAVISH_FLOWERS 138
+
+#endif //POKEDIAMOND_DECORATIONS_H
diff --git a/include/error_handling.h b/include/error_handling.h index 1299fcba..c14c93fe 100644 --- a/include/error_handling.h +++ b/include/error_handling.h @@ -1,6 +1,6 @@ #ifndef POKEDIAMOND_ERROR_HANDLING_H #define POKEDIAMOND_ERROR_HANDLING_H -void ErrorHandling(void); +void GF_AssertFail(void); #endif //POKEDIAMOND_ERROR_HANDLING_H diff --git a/include/error_message_reset.h b/include/error_message_reset.h index d12cbf33..01286ca9 100644 --- a/include/error_message_reset.h +++ b/include/error_message_reset.h @@ -9,31 +9,7 @@ #include "text.h" - -struct GraphicsBanks -{ - s32 bg; - s32 bgextpltt; - s32 subbg; - s32 subbgextpltt; - s32 obj; - s32 objextpltt; - s32 subobj; - s32 subobjextpltt; - s32 tex; - s32 texpltt; -}; - - -struct GraphicsModes { - u32 mode1; - u32 mode2; - u32 mode3; - u32 mode4; -}; - - -THUMB_FUNC void VBlankHandler(); -THUMB_FUNC void PrintErrorMessageAndReset(); +void VBlankHandler(); +void PrintErrorMessageAndReset(); #endif //POKEDIAMOND_ERROR_MESSAGE_RESET_H diff --git a/include/font.h b/include/font.h new file mode 100644 index 00000000..e5e64e88 --- /dev/null +++ b/include/font.h @@ -0,0 +1,6 @@ +#ifndef POKEDIAMOND_FONT_H +#define POKEDIAMOND_FONT_H + +extern s32 GetFontAttribute(u8 fontId, s32 attr); + +#endif // POKEDIAMOND_FONT_H diff --git a/include/gf_gfx_loader.h b/include/gf_gfx_loader.h new file mode 100644 index 00000000..b95075dc --- /dev/null +++ b/include/gf_gfx_loader.h @@ -0,0 +1,23 @@ +#ifndef POKEDIAMOND_GF_GFX_LOADER_H
+#define POKEDIAMOND_GF_GFX_LOADER_H
+
+#include "unk_02016B94.h"
+
+u32 GfGfxLoader_LoadCharData(NarcId narcId, s32 memberNo, struct UnkStruct_02016B94_2 * unkStruct02016B94_2, u32 a3, u32 a4, u32 szByte, BOOL isCompressed, u32 heap_id);
+void GfGfxLoader_LoadScrnData(NarcId narcId, s32 memberNo, struct UnkStruct_02016B94_2 * unkStruct02016B94_2, u32 a3, u32 a4, u32 szByte, BOOL isCompressed, u32 heap_id);
+void GfGfxLoader_GXLoadPal(NarcId narcId, s32 memberNo, u32 whichRoutine, u32 baseAddr, u32 szByte, u32 heap_id);
+void GfGfxLoader_GXLoadPalWithSrcOffset(NarcId narcId, s32 memberNo, u32 whichRoutine, u32 srcOffset, u32 baseAddr, u32 szByte, u32 heap_id);
+u32 GfGfxLoader_LoadWholePalette(NarcId narcId, s32 memberId, u32 whichRoutine, u32 baseAddr, u32 szByte, BOOL isCompressed, u32 heap_id);
+void GfGfxLoader_PartiallyLoadPalette(NarcId narcId, s32 memberId, NNS_G2D_VRAM_TYPE vramType, u32 baseAddr, u32 heap_id, NNSG2dImagePaletteProxy * pPltProxy);
+u32 GfGfxLoader_LoadImageMapping(NarcId narcId, s32 memberId, BOOL isCompressed, u32 whichRoutine, u32 szByte, NNS_G2D_VRAM_TYPE type, u32 baseAddr, u32 heap_id, NNSG2dImageProxy *pImgProxy);
+void GfGfxLoader_SetObjCntFlagsAndLoadImageMapping(NarcId narcId, s32 memberId, BOOL isCompressed, u32 whichRoutine, u32 szByte, NNS_G2D_VRAM_TYPE type, u32 baseAddr, u32 heap_id, NNSG2dImageProxy * pImageProxy);
+void * GfGfxLoader_GetCharData(NarcId narcId, s32 memberId, BOOL isCompressed, NNSG2dCharacterData ** ppCharData, u32 heap_id);
+void * GfGfxLoader_GetScrnData(NarcId narcId, s32 memberId, BOOL isCompressed, NNSG2dScreenData ** ppScrData, u32 heap_id);
+void * GfGfxLoader_GetPlttData(NarcId narcId, s32 memberId, NNSG2dPaletteData ** ppPltData, u32 heap_id);
+void * GfGfxLoader_GetCellBank(NarcId narcId, s32 memberId, BOOL isCompressed, NNSG2dCellDataBank ** ppCellBank, u32 heap_id);
+void * GfGfxLoader_GetAnimBank(NarcId narcId, s32 memberId, BOOL isCompressed, NNSG2dAnimBankData ** ppAnimBank, u32 heap_id);
+void * GfGfxLoader_UncompressFromNarc(NarcId narcId, s32 memberId, u32 heap_id);
+void * GfGfxLoader_LoadFromNarc(NarcId narcId, s32 memberNo, BOOL isCompressed, u32 heap_id, BOOL allocAtEnd);
+void * GfGfxLoader_LoadFromNarc_GetSizeOut(NarcId narcId, s32 memberNo, BOOL isCompressed, u32 heap_id, BOOL allocAtEnd, u32 *size_p);
+
+#endif //POKEDIAMOND_GF_GFX_LOADER_H
diff --git a/include/gf_rtc.h b/include/gf_rtc.h new file mode 100644 index 00000000..f7a4e2a7 --- /dev/null +++ b/include/gf_rtc.h @@ -0,0 +1,31 @@ +#ifndef POKEDIAMOND_GF_RTC_H
+#define POKEDIAMOND_GF_RTC_H
+
+#include "RTC_api.h"
+
+enum RTC_Month
+{
+ RTC_MONTH_JANUARY = 1,
+ RTC_MONTH_FEBRUARY,
+ RTC_MONTH_MARCH,
+ RTC_MONTH_APRIL,
+ RTC_MONTH_MAY,
+ RTC_MONTH_JUNE,
+ RTC_MONTH_JULY,
+ RTC_MONTH_AUGUST,
+ RTC_MONTH_SEPTEMBER,
+ RTC_MONTH_OCTOBER,
+ RTC_MONTH_NOVEMBER,
+ RTC_MONTH_DECEMBER,
+};
+
+enum RTC_TimeOfDay
+{
+ RTC_TIMEOFDAY_MORN = 0,
+ RTC_TIMEOFDAY_DAY,
+ RTC_TIMEOFDAY_EVE,
+ RTC_TIMEOFDAY_NITE,
+ RTC_TIMEOFDAY_LATE,
+};
+
+#endif //POKEDIAMOND_GF_RTC_H
diff --git a/include/global.h b/include/global.h index 1c92a1ec..1853dbc3 100644 --- a/include/global.h +++ b/include/global.h @@ -11,7 +11,7 @@ #define NELEMS(a) (sizeof(a) / sizeof(*(a))) -#define GF_ASSERT(expr) do {if (!(expr)) ErrorHandling();} while (0) +#define GF_ASSERT(expr) do {if (!(expr)) GF_AssertFail();} while (0) #ifndef IN_MAIN_C extern const u8 gGameLanguage; diff --git a/include/heap.h b/include/heap.h index 69aedd9e..de1f5f18 100644 --- a/include/heap.h +++ b/include/heap.h @@ -17,21 +17,21 @@ struct UnkStruct_020166C8 }; -THUMB_FUNC void FUN_020166C8(u32 *param0, u32 param1, u32 param2, u32 pre_size); -THUMB_FUNC s32 FUN_020167F4(); -THUMB_FUNC u32 FUN_0201681C(u32 param0, u32 heap_id, u32 param2); -THUMB_FUNC u32 FUN_02016828(u32 param0, u32 param1, u32 param2); -THUMB_FUNC u32 FUN_02016834(u32 param0, u32 param1, u32 param2, s32 param3); -THUMB_FUNC void FUN_020168D0(u32 heap_id); -THUMB_FUNC u32 *FUN_02016944(void *param0, u32 param1, s32 param2, u32 param3); -THUMB_FUNC void FUN_02016988(); +void FUN_020166C8(u32 *param0, u32 param1, u32 param2, u32 pre_size); +s32 FUN_020167F4(); +u32 FUN_0201681C(u32 param0, u32 heap_id, u32 param2); +u32 FUN_02016828(u32 param0, u32 param1, u32 param2); +u32 FUN_02016834(u32 param0, u32 param1, u32 param2, s32 param3); +void FUN_020168D0(u32 heap_id); +u32 *FUN_02016944(void *param0, u32 param1, s32 param2, u32 param3); +void FUN_02016988(); void *AllocFromHeap(u32 heap_id, u32 size); void *AllocFromHeapAtEnd(u32 heap_id, u32 size); void FreeToHeap(void *ptr); -void FUN_02016A8C(u32 heap_id, void * ptr); -THUMB_FUNC u32 FUN_02016AF8(u32 param0); -THUMB_FUNC void FUN_02016B20(u32 param0, u32 param1, u32 param2); -THUMB_FUNC void FUN_02016B44(void *ptr, u32 param1); -THUMB_FUNC u32 FUN_02016B90(u32 param0); +void FreeToHeapExplicit(u32 heap_id, void * ptr); +u32 FUN_02016AF8(u32 param0); +void FUN_02016B20(u32 param0, u32 param1, u32 param2); +void FUN_02016B44(void *ptr, u32 param1); +u32 FUN_02016B90(u32 param0); #endif //POKEDIAMOND_HEAP_H diff --git a/include/list_menu.h b/include/list_menu.h new file mode 100644 index 00000000..a02e1273 --- /dev/null +++ b/include/list_menu.h @@ -0,0 +1,88 @@ +#ifndef POKEDIAMOND_LIST_MENU_H +#define POKEDIAMOND_LIST_MENU_H + +#include "list_menu_cursor.h" +#include "list_menu_items.h" + +#define LIST_HEADER -3 +#define LIST_CANCEL -2 +#define LIST_NOTHING_CHOSEN -1 + +#define LIST_NO_MULTIPLE_SCROLL 0 +#define LIST_MULTIPLE_SCROLL_DPAD 1 +#define LIST_MULTIPLE_SCROLL_L_R 2 + +struct ListMenu; + +// TODO: Document remaining fields. +// A lot of these are named based on similar fields in gen 3. + +typedef void (*LM_MoveCursorFunc_t)(struct ListMenu *list, s32 index, u8 onInit); +typedef void (*LM_ItemPrintFunc_t)(struct ListMenu *list, s32 index, u8 y); + +struct ListMenuTemplate +{ + /*0x00*/ struct ListMenuItem * items; + /*0x04*/ LM_MoveCursorFunc_t moveCursorFunc; + /*0x08*/ LM_ItemPrintFunc_t itemPrintFunc; + /*0x0C*/ struct Window * window; + /*0x10*/ u16 totalItems; + /*0x12*/ u16 maxShowed; + /*0x14*/ u8 header_X; + /*0x15*/ u8 item_X; + /*0x16*/ u8 cursor_X; + /*0x17*/ u8 upText_Y:4; + u8 cursorPal:4; + /*0x18*/ u8 fillValue:4; + u8 cursorShadowPal:4; + /*0x1A*/ u16 lettersSpacing:3; + u16 itemVerticalPadding:4; + u16 scrollMultiple:2; + u16 fontId:6; + u16 cursorKind:1; + /*0x1C*/ u32 unk_1C; +}; + +struct ListMenu +{ + /*0x00*/ struct ListMenuTemplate template; + // ListMenuOverride from gen 3 + /*0x20*/ u8 cursorPal:4; + u8 fillValue:4; + /*0x21*/ u8 cursorShadowPal:4; + u8 unk_21_4:4; + /*0x22*/ u8 lettersSpacing:6; + /*0x23*/ u8 unk_23; + /*0x24*/ u8 fontId:7; + u8 overrideEnabled:1; + /*0x28*/ struct ListMenuCursor *cursor; + /*0x2c*/ u16 cursorPos; + /*0x2e*/ u16 itemsAbove; + /*0x30*/ u8 unk_30; + /*0x31*/ u8 unk_31; + /*0x32*/ u8 taskId; + /*0x33*/ u8 unk_33; + /*0x34*/ u8 heap_id; +}; + +struct ListMenu * ListMenuInit(const struct ListMenuTemplate * template, u16 cursorPos, u16 itemsAbove, u32 heap_id); +s32 ListMenu_ProcessInput(struct ListMenu * list); +void DestroyListMenu(struct ListMenu * list, u16 * cursorPos, u16 * itemsAbove); +void RedrawListMenu(struct ListMenu * list); +s32 ListMenuTestInputInternal(struct ListMenu * list, const struct ListMenuTemplate * template, u16 cursorPos, u16 itemsAbove, u16 updateFlag, u16 input, u16 *newCursorPos, u16 *newItemsAbove); +s32 ListMenuTestInput(struct ListMenu * list, const struct ListMenuTemplate * template, u16 cursorPos, u16 itemsAbove, u16 input, u16 *newCursorPos, u16 *newItemsAbove); +void ListMenuOverrideSetColors(struct ListMenu * list, u8 cursorPal, u8 fillValue, u8 cursorShadowPal); +void ListMenuGetCurrentItemArrayId(struct ListMenu * list, u16 * index_p); +void ListMenuGetScrollAndRow(struct ListMenu * list, u16 * cursorPos_p, u16 * itemsAbove_p); +u8 ListMenuGetUnk33(struct ListMenu * list); +s32 ListMenuGetValueByArrayId(struct ListMenu * list, s32 index); +s32 ListMenuGetTemplateField(struct ListMenu * list, u32 attr); +void ListMenuSetTemplateField(struct ListMenu * list, u32 attr, s32 value); +void ListMenuGetItemStr(struct ListMenu * list, struct ListMenuItem * items); +void ListMenuPrint(struct ListMenu * list, struct String * str, u8 x, u8 y); +void ListMenuErasePrintedCursor(struct ListMenu * list, u16 itemsAbove); +u8 ListMenuUpdateSelectedRowIndexAndScrollOffset(struct ListMenu *list, u8 movingDown); +void ListMenuScroll(struct ListMenu * list, u8 count, u8 movingDown); +void ListMenuCopyToVram(struct ListMenu * list); + +#endif // POKEDIAMOND_LIST_MENU_H diff --git a/include/list_menu_cursor.h b/include/list_menu_cursor.h new file mode 100644 index 00000000..e4a4b6b9 --- /dev/null +++ b/include/list_menu_cursor.h @@ -0,0 +1,17 @@ +#ifndef POKEDIAMOND_LIST_MENU_CURSOR_H +#define POKEDIAMOND_LIST_MENU_CURSOR_H + +#include "unk_02016B94.h" + +// TODO: Move to its own header, and fill it out +struct ListMenuCursor +{ + // ??? +}; + +extern struct ListMenuCursor * ListMenuCursorNew(u32 heap_id); +extern void ListMenuUpdateCursorObj(struct ListMenuCursor *, struct Window *, u8 x, u8 y); +extern void ListMenuCursorSetColor(struct ListMenuCursor *, u32); +extern void DestroyListMenuCursorObj(struct ListMenuCursor *); + +#endif // POKEDIAMOND_LIST_MENU_CURSOR_H diff --git a/include/list_menu_items.h b/include/list_menu_items.h new file mode 100644 index 00000000..ec96d480 --- /dev/null +++ b/include/list_menu_items.h @@ -0,0 +1,21 @@ +#ifndef POKEDIAMOND_LIST_MENU_ITEMS_H +#define POKEDIAMOND_LIST_MENU_ITEMS_H + +#include "string16.h" +#include "msgdata.h" + +struct ListMenuItem +{ + struct String * text; + s32 value; +}; + +struct ListMenuItem * ListMenuItems_ctor(u32 count, u32 heap_id); +void ListMenuItems_dtor(struct ListMenuItem * items); +void ListMenuItems_AppendFromMsgData(struct ListMenuItem * items, struct MsgData * msgData, u32 msgNo, s32 value); +void ListMenuItems_AddItem(struct ListMenuItem * items, struct String * str, s32 value); +void ListMenuItems_CopyItem(struct ListMenuItem * items, struct ListMenuItem * src); +struct ListMenuItem * ListMenuItems_SeekEnd(struct ListMenuItem * items, u32 * heap_id_p); +void ListMenuItems_DestroyMenuStrings(struct ListMenuItem * items); + +#endif // POKEDIAMOND_LIST_MENU_ITEMS_H diff --git a/include/main.h b/include/main.h index d40e22f9..9227d9a8 100644 --- a/include/main.h +++ b/include/main.h @@ -20,7 +20,7 @@ struct UnkStruct_02006234 struct Unk21DBE18 ovly_mgr; u32 unk10; u32 unk14; - int * unk18; + s32 * unk18; void * unk1C; struct SaveBlock2 * unk20; u32 unk24; @@ -31,9 +31,9 @@ struct Unk2106FA0 PMBackLightSwitch unk0; s32 unk4; FSOverlayID unk8; - s32 unkC; + struct UnkStruct_02006234 *unkC; FSOverlayID unk10; - struct Unk21DBE18 * unk14; + const struct Unk21DBE18 * unk14; s32 unk18; s32 unk1C; struct SaveBlock2 * unk20; @@ -84,8 +84,8 @@ struct Main u32 unk3C; u32 unk40; u32 unk44; - u32 unk48; - u32 unk4C; + u32 newKeys; + u32 newAndRepeatedKeys; s32 unk50; s32 unk54; s32 unk58; @@ -104,8 +104,22 @@ struct Main //extern struct UnkStruct_021C4918 gMain + 0x60; -extern struct Unk2106FA0 gBacklightTop; -extern struct Unk2106FA0 gBacklightTop_2; // same as the first one, it's referenced twice in the constant pool... +extern PMBackLightSwitch gBacklightTop; +extern s32 UNK_02016FA4; + +struct UnkStruct_02016FA8 +{ + FSOverlayID unk0; + struct UnkStruct_02006234 *unk4; + FSOverlayID unk8; + const struct Unk21DBE18 * unkC; + s32 unk10; + s32 unk14; + struct SaveBlock2 * unk18; + +}; + +extern struct UnkStruct_02016FA8 UNK_02016FA8; void NitroMain(void); @@ -113,7 +127,7 @@ extern struct Main gMain; void FUN_02000DF4(void); void Main_RunOverlayManager(void); -void RegisterMainOverlay(FSOverlayID id, struct Unk21DBE18 * arg1); +void RegisterMainOverlay(FSOverlayID id, const struct Unk21DBE18 * arg1); void FUN_02000E9C(void); void FUN_02000EC8(u32 parameter); void FUN_02000EE8(void); diff --git a/include/overlay_manager.h b/include/overlay_manager.h index 193bc7e8..8d9bd6e3 100644 --- a/include/overlay_manager.h +++ b/include/overlay_manager.h @@ -5,12 +5,12 @@ struct Unk21DBE18; -struct UnkStruct_02006234 * OverlayManager_new(struct Unk21DBE18 * ovly_mgr, int * a1, u32 heap_id); +struct UnkStruct_02006234 * OverlayManager_new(const struct Unk21DBE18 * ovly_mgr, s32 * a1, u32 heap_id); void OverlayManager_delete(struct UnkStruct_02006234 * a0); void * OverlayManager_CreateAndGetData(struct UnkStruct_02006234 * a0, u32 size, u32 heap_id); void * OverlayManager_GetData(struct UnkStruct_02006234 * a0); void OverlayManager_FreeData(struct UnkStruct_02006234 * a0); -int * OverlayManager_GetField18(struct UnkStruct_02006234 * a0); +s32 * OverlayManager_GetField18(struct UnkStruct_02006234 * a0); BOOL OverlayManager_Run(struct UnkStruct_02006234 * a0); #endif //POKEDIAMOND_OVERLAY_MANAGER_H diff --git a/include/sav_chatot.h b/include/sav_chatot.h new file mode 100644 index 00000000..858423c5 --- /dev/null +++ b/include/sav_chatot.h @@ -0,0 +1,24 @@ +#ifndef POKEDIAMOND_SAV_CHATOT_H
+#define POKEDIAMOND_SAV_CHATOT_H
+
+#include "save_block_2.h"
+
+struct SaveChatotSoundClip
+{
+ // TODO: Fill this in
+ BOOL exists;
+ s8 data[1000];
+};
+
+u32 Sav2_Chatot_sizeof(void);
+void Sav2_Chatot_init(struct SaveChatotSoundClip * chatot);
+struct SaveChatotSoundClip * Chatot_new(u32 heap_id);
+struct SaveChatotSoundClip * Sav2_Chatot_get(struct SaveBlock2 * sav2);
+BOOL Chatot_exists(struct SaveChatotSoundClip * chatot);
+void Chatot_invalidate(struct SaveChatotSoundClip * chatot);
+s8 * Chatot_GetData(struct SaveChatotSoundClip * chatot);
+void Chatot_Decode(s8 * dest, const s8 * data);
+void Chatot_Encode(struct SaveChatotSoundClip * chatot, const s8 * data);
+void Chatot_copy(struct SaveChatotSoundClip * dest, const struct SaveChatotSoundClip * src);
+
+#endif //POKEDIAMOND_SAV_CHATOT_H
diff --git a/include/sav_system_info.h b/include/sav_system_info.h index 696cfe07..bded91f7 100644 --- a/include/sav_system_info.h +++ b/include/sav_system_info.h @@ -3,6 +3,8 @@ #include "RTC_api.h" +struct SaveBlock2; + struct UnkSaveStruct_0202376C_sub { /* 0x00 */ u32 field_00; diff --git a/include/scrcmd.h b/include/scrcmd.h index 120a0c96..91cb306c 100644 --- a/include/scrcmd.h +++ b/include/scrcmd.h @@ -67,7 +67,7 @@ BOOL ScrCmd_Unk01FC(struct ScriptContext* ctx); BOOL ScrCmd_Unk01FD(struct ScriptContext* ctx); BOOL ScrCmd_Unk01FE(struct ScriptContext* ctx); BOOL ScrCmd_Unk01FF(struct ScriptContext* ctx); -BOOL ScrCmd_Unk026D(struct ScriptContext* ctx); +BOOL ScrCmd_MessageUnown(struct ScriptContext* ctx); BOOL ScrCmd_Unk002C(struct ScriptContext* ctx); BOOL ScrCmd_Unk002D(struct ScriptContext* ctx); BOOL ScrCmd_Unk02C0(struct ScriptContext* ctx); @@ -77,9 +77,9 @@ BOOL ScrCmd_Unk002F(struct ScriptContext* ctx); BOOL ScrCmd_WaitButtonAB(struct ScriptContext* ctx); BOOL ScrCmd_WaitButtonABTime(struct ScriptContext *ctx); BOOL ScrCmd_WaitButton(struct ScriptContext* ctx); -BOOL ScrCmd_Unk0032(struct ScriptContext *ctx); +BOOL ScrCmd_WaitButtonABPad(struct ScriptContext *ctx); BOOL ScrCmd_Unk0033(struct ScriptContext *ctx); -BOOL ScrCmd_Unk0034(struct ScriptContext* ctx); +BOOL ScrCmd_CloseMessageBox(struct ScriptContext* ctx); BOOL ScrCmd_Unk0035(struct ScriptContext* ctx); BOOL ScrCmd_ScrollBg(struct ScriptContext* ctx); BOOL ScrCmd_CreateMessageBox(struct ScriptContext* ctx); @@ -105,38 +105,46 @@ BOOL ScrCmd_Unk0047(struct ScriptContext *ctx); BOOL ScrCmd_Unk0048(struct ScriptContext *ctx); BOOL ScrCmd_Unk02CF(struct ScriptContext *ctx); BOOL ScrCmd_Unk02D0(struct ScriptContext *ctx); +BOOL ScrCmd_Unk005E(struct ScriptContext *ctx); + +// scrcmd_mart.c +BOOL ScrCmd_NormalMart(struct ScriptContext * ctx); +BOOL ScrCmd_SpecialMart(struct ScriptContext * ctx); +BOOL ScrCmd_GoodsMart(struct ScriptContext * ctx); +BOOL ScrCmd_SealsMart(struct ScriptContext * ctx); +BOOL ScrCmd_AccessoriesShop(struct ScriptContext * ctx); //scrcmd_4.c BOOL ScrCmd_GetPlayerName(struct ScriptContext* ctx); BOOL ScrCmd_GetRivalName(struct ScriptContext* ctx); BOOL ScrCmd_GetFriendName(struct ScriptContext* ctx); -BOOL ScrCmd_Unk00D0(struct ScriptContext* ctx); +BOOL ScrCmd_GetPokemonName(struct ScriptContext* ctx); BOOL ScrCmd_GetItemName(struct ScriptContext* ctx); BOOL ScrCmd_GetPocketName(struct ScriptContext* ctx); BOOL ScrCmd_GetTMHMMoveName(struct ScriptContext* ctx); BOOL ScrCmd_GetMoveName(struct ScriptContext* ctx); BOOL ScrCmd_Unk00D5(struct ScriptContext* ctx); BOOL ScrCmd_Unk0280(struct ScriptContext* ctx); -BOOL ScrCmd_Unk00D6(struct ScriptContext* ctx); +BOOL ScrCmd_GetPokemonNickname(struct ScriptContext* ctx); BOOL ScrCmd_Unk0251(struct ScriptContext* ctx); BOOL ScrCmd_GetPoketchAppName(struct ScriptContext* ctx); BOOL ScrCmd_GetTrainerClassName(struct ScriptContext* ctx); BOOL ScrCmd_Unk00D9(struct ScriptContext* ctx); BOOL ScrCmd_Unk00DA(struct ScriptContext* ctx); struct String* FUN_02040AE4(u32 msg_no, u32 heap_id); -BOOL ScrCmd_Unk00DB(struct ScriptContext* ctx); -BOOL ScrCmd_Unk00DC(struct ScriptContext* ctx); -BOOL ScrCmd_Unk00DD(struct ScriptContext* ctx); +BOOL ScrCmd_GetPlayerStarterName(struct ScriptContext* ctx); +BOOL ScrCmd_GetRivalStarterName(struct ScriptContext* ctx); +BOOL ScrCmd_GetCounterpartStarterName(struct ScriptContext* ctx); BOOL ScrCmd_GetDecorationName(struct ScriptContext* ctx); BOOL ScrCmd_GetUndergroundTrapName(struct ScriptContext* ctx); BOOL ScrCmd_GetUndergroundItemName(struct ScriptContext* ctx); -BOOL ScrCmd_Unk00E2(struct ScriptContext* ctx); -BOOL ScrCmd_Unk017B(struct ScriptContext* ctx); +BOOL ScrCmd_GetMapName(struct ScriptContext* ctx); +BOOL ScrCmd_GetBerryName(struct ScriptContext* ctx); BOOL ScrCmd_GetNatureName(struct ScriptContext* ctx); BOOL ScrCmd_GetFashionName(struct ScriptContext* ctx); -BOOL ScrCmd_Unk0272(struct ScriptContext* ctx); +BOOL ScrCmd_GetWhiteRockInscription(struct ScriptContext* ctx); BOOL ScrCmd_GetPokemonMoveName(struct ScriptContext* ctx); -BOOL ScrCmd_Unk0232(struct ScriptContext* ctx); +BOOL ScrCmd_GetRibbonName(struct ScriptContext* ctx); BOOL ScrCmd_GetSealName(struct ScriptContext* ctx); BOOL ScrCmd_GetItemNameWithIndefArticle(struct ScriptContext* ctx); BOOL ScrCmd_GetItemNamePlural(struct ScriptContext* ctx); @@ -150,16 +158,48 @@ BOOL ScrCmd_Unk02CC(struct ScriptContext* ctx); BOOL ScrCmd_GetSealNamePlural(struct ScriptContext* ctx); BOOL ScrCmd_CapitalizeFirstChar(struct ScriptContext* ctx); -//scrcmd_11.c -BOOL ScrCmd_Unk017D(struct ScriptContext* ctx); -BOOL ScrCmd_Unk017E(struct ScriptContext* ctx); -BOOL ScrCmd_Unk017F(struct ScriptContext* ctx); -BOOL ScrCmd_Unk0180(struct ScriptContext* ctx); -BOOL ScrCmd_Unk0181(struct ScriptContext* ctx); -BOOL ScrCmd_Unk0182(struct ScriptContext* ctx); -BOOL ScrCmd_Unk0183(struct ScriptContext* ctx); +//scrcmd_sound.c +BOOL ScrCmd_Unk02AE(struct ScriptContext *ctx); +BOOL ScrCmd_PlayBgm(struct ScriptContext *ctx); +BOOL ScrCmd_StopBgm(struct ScriptContext *ctx); +BOOL ScrCmd_PlayDefaultBgm(struct ScriptContext *ctx); +BOOL ScrCmd_Unk0053(struct ScriptContext *ctx); +BOOL ScrCmd_FadeOutBgm(struct ScriptContext *ctx); +BOOL FUN_02041464(struct ScriptContext *ctx); +BOOL ScrCmd_FadeInBgm(struct ScriptContext* ctx); +BOOL ScrCmd_Unk0056(struct ScriptContext* ctx); +BOOL ScrCmd_Unk0057(struct ScriptContext* ctx); +BOOL ScrCmd_Unk0058(struct ScriptContext* ctx); +BOOL ScrCmd_PlayFanfare(struct ScriptContext* ctx); +BOOL ScrCmd_StopFanfare(struct ScriptContext* ctx); +BOOL ScrCmd_PlayFanfareWait(struct ScriptContext* ctx); +BOOL FUN_02041540(struct ScriptContext* ctx); +BOOL ScrCmd_PlayCry(struct ScriptContext* ctx); +BOOL ScrCmd_PlayCryWait(struct ScriptContext* ctx); +BOOL FUN_02041598(struct ScriptContext* ctx); +BOOL ScrCmd_PlaySoundWait(struct ScriptContext* ctx); +BOOL FUN_020415CC(struct ScriptContext* ctx); +BOOL ScrCmd_PlaySound(struct ScriptContext* ctx); +BOOL ScrCmd_CheckChatotCry(struct ScriptContext* ctx); +BOOL ScrCmd_StartChatotRecord(struct ScriptContext* ctx); +BOOL ScrCmd_StopChatotRecord(struct ScriptContext* ctx); +BOOL ScrCmd_SaveChatotCry(struct ScriptContext* ctx); +BOOL ScrCmd_Unk005D(struct ScriptContext* ctx); +BOOL ScrCmd_SetVolume(struct ScriptContext *ctx); + +//scrcmd_8.c +BOOL ScrCmd_Unk021D(struct ScriptContext* ctx); + +//scrcmd_berry_trees.c +BOOL ScrCmd_GetBerryTreeGrowth(struct ScriptContext* ctx); +BOOL ScrCmd_GetBerryTreeType(struct ScriptContext* ctx); +BOOL ScrCmd_GetBerryTreeMulch(struct ScriptContext* ctx); +BOOL ScrCmd_GetBerryTreeWater(struct ScriptContext* ctx); +BOOL ScrCmd_GetBerryTreeAmount(struct ScriptContext* ctx); +BOOL ScrCmd_SetBerryTreeMulch(struct ScriptContext* ctx); +BOOL ScrCmd_SetBerryTreeType(struct ScriptContext* ctx); BOOL ScrCmd_Unk0184(struct ScriptContext* ctx); -BOOL ScrCmd_Unk0185(struct ScriptContext* ctx); +BOOL ScrCmd_TakeBerryTreeBerries(struct ScriptContext* ctx); //scrcmd_13.c BOOL ScrCmd_Unk0253(struct ScriptContext* ctx); @@ -168,9 +208,9 @@ BOOL ScrCmd_Unk0255(struct ScriptContext* ctx); BOOL ScrCmd_Unk0256(struct ScriptContext* ctx); //scrcmd_coins.c -BOOL ScrCmd_Unk0075(struct ScriptContext* ctx); -BOOL ScrCmd_Unk0076(struct ScriptContext* ctx); -BOOL ScrCmd_Unk0077(struct ScriptContext* ctx); +BOOL ScrCmd_ShowCoinBox(struct ScriptContext* ctx); +BOOL ScrCmd_HideCoinBox(struct ScriptContext* ctx); +BOOL ScrCmd_UpdateCoinBox(struct ScriptContext* ctx); BOOL ScrCmd_GetCoins(struct ScriptContext* ctx); BOOL ScrCmd_GiveCoins(struct ScriptContext* ctx); BOOL ScrCmd_TakeCoinsImmediate(struct ScriptContext* ctx); @@ -185,18 +225,18 @@ BOOL ScrCmd_TakeMoneyImmediate(struct ScriptContext* ctx); BOOL ScrCmd_TakeMoneyAddress(struct ScriptContext* ctx); BOOL ScrCmd_HasEnoughMoneyImmediate(struct ScriptContext* ctx); BOOL ScrCmd_HasEnoughMoneyAddress(struct ScriptContext* ctx); -BOOL ScrCmd_Unk0072(struct ScriptContext* ctx); -BOOL ScrCmd_Unk0073(struct ScriptContext* ctx); -BOOL ScrCmd_Unk0074(struct ScriptContext* ctx); +BOOL ScrCmd_ShowMoneyBox(struct ScriptContext* ctx); +BOOL ScrCmd_HideMoneyBox(struct ScriptContext* ctx); +BOOL ScrCmd_UpdateMoneyBox(struct ScriptContext* ctx); //scrcmd_daycare.c -BOOL ScrCmd_Unk016D(struct ScriptContext* ctx); -BOOL ScrCmd_Unk016E(struct ScriptContext* ctx); -BOOL ScrCmd_Unk01A8(struct ScriptContext* ctx); -BOOL ScrCmd_Unk01A9(struct ScriptContext* ctx); +BOOL ScrCmd_GetDaycarePokemonNames(struct ScriptContext* ctx); +BOOL ScrCmd_GetDaycareStatus(struct ScriptContext* ctx); +BOOL ScrCmd_DeleteDaycareEgg(struct ScriptContext* ctx); +BOOL ScrCmd_GiveDaycareEgg(struct ScriptContext* ctx); BOOL ScrCmd_Unk01A4(struct ScriptContext* ctx); BOOL ScrCmd_Unk01AA(struct ScriptContext* ctx); -BOOL ScrCmd_Unk01AE(struct ScriptContext* ctx); +BOOL ScrCmd_GetDaycareLevel(struct ScriptContext* ctx); BOOL ScrCmd_Unk01AF(struct ScriptContext* ctx); BOOL ScrCmd_Unk01B0(struct ScriptContext* ctx); BOOL ScrCmd_Unk01BC(struct ScriptContext* ctx); @@ -210,15 +250,37 @@ BOOL ScrCmd_Unk01AD(struct ScriptContext* ctx); //scrcmd_18.c BOOL ScrCmd_GiveMon(struct ScriptContext* ctx); -//scrcmd_19.c -BOOL ScrCmd_Unk01F1(struct ScriptContext* ctx); -BOOL ScrCmd_Unk01F4(struct ScriptContext* ctx); -BOOL ScrCmd_Unk01F5(struct ScriptContext* ctx); +//scrcmd_fossils.c +BOOL ScrCmd_CountFossils(struct ScriptContext* ctx); +BOOL ScrCmd_GetFossilPokemon(struct ScriptContext* ctx); +BOOL ScrCmd_GetFossilMinimumAmount(struct ScriptContext* ctx); BOOL ScrCmd_Unk01F2(struct ScriptContext* ctx); BOOL ScrCmd_Unk01F3(struct ScriptContext* ctx); -//scrcmd_20.c -BOOL ScrCmd_Unk02A6(struct ScriptContext* ctx); +//scrcmd_prizes.c +BOOL ScrCmd_GetPrizeItemIdAndCost(struct ScriptContext* ctx); + +//scrcmd_flags.c +BOOL ScrCmd_HasSinnohDex(struct ScriptContext* ctx); +BOOL ScrCmd_GiveSinnohDex(struct ScriptContext* ctx); +BOOL ScrCmd_HasRunningShoes(struct ScriptContext* ctx); +BOOL ScrCmd_GiveRunningShoes(struct ScriptContext* ctx); +BOOL ScrCmd_HasBadge(struct ScriptContext* ctx); +BOOL ScrCmd_GiveBadge(struct ScriptContext* ctx); +BOOL ScrCmd_GiveBag(struct ScriptContext* ctx); +BOOL ScrCmd_GetTotalEarnedBadges(struct ScriptContext* ctx); +BOOL ScrCmd_HasBag(struct ScriptContext* ctx); +BOOL ScrCmd_Unk0160(struct ScriptContext* ctx); +BOOL ScrCmd_Unk0161(struct ScriptContext* ctx); +BOOL ScrCmd_Unk0162(struct ScriptContext* ctx); +BOOL ScrCmd_Unk0163(struct ScriptContext* ctx); +BOOL ScrCmd_Unk0164(struct ScriptContext* ctx); +BOOL ScrCmd_Unk0165(struct ScriptContext* ctx); +BOOL ScrCmd_CheckGameCompleted(struct ScriptContext* ctx); +BOOL ScrCmd_SetGameCompleted(struct ScriptContext* ctx); +BOOL ScrCmd_GetSetStrength(struct ScriptContext* ctx); +BOOL ScrCmd_GetSetFlash(struct ScriptContext* ctx); +BOOL ScrCmd_GetSetDefog(struct ScriptContext* ctx); //scrcmd_items.c BOOL ScrCmd_GiveItem(struct ScriptContext* ctx); @@ -230,23 +292,36 @@ BOOL ScrCmd_GetItemPocketId(struct ScriptContext* ctx); BOOL ScrCmd_Unk0081(struct ScriptContext* ctx); BOOL ScrCmd_Unk0082(struct ScriptContext* ctx); -//scrcmd_23.c -BOOL ScrCmd_Unk0083(struct ScriptContext* ctx); -BOOL ScrCmd_Unk0084(struct ScriptContext* ctx); -BOOL ScrCmd_Unk0085(struct ScriptContext* ctx); -BOOL ScrCmd_Unk0086(struct ScriptContext* ctx); -BOOL ScrCmd_Unk0087(struct ScriptContext* ctx); -BOOL ScrCmd_Unk0088(struct ScriptContext* ctx); -BOOL ScrCmd_Unk0089(struct ScriptContext* ctx); -BOOL ScrCmd_Unk008A(struct ScriptContext* ctx); -BOOL ScrCmd_Unk008B(struct ScriptContext* ctx); -BOOL ScrCmd_Unk008C(struct ScriptContext* ctx); -BOOL ScrCmd_Unk008D(struct ScriptContext* ctx); -BOOL ScrCmd_Unk008E(struct ScriptContext* ctx); -BOOL ScrCmd_Unk008F(struct ScriptContext* ctx); -BOOL ScrCmd_Unk0090(struct ScriptContext* ctx); -BOOL ScrCmd_Unk0091(struct ScriptContext* ctx); -BOOL ScrCmd_Unk0092(struct ScriptContext* ctx); +//scrcmd_underground.c +BOOL ScrCmd_GiveSecretBaseDecoration(struct ScriptContext* ctx); +BOOL ScrCmd_TakeSecretBaseDecoration(struct ScriptContext* ctx); +BOOL ScrCmd_HasSpaceForDecoration(struct ScriptContext* ctx); +BOOL ScrCmd_GetDecorationCount(struct ScriptContext* ctx); +BOOL ScrCmd_GiveUndergroundTrap(struct ScriptContext* ctx); +BOOL ScrCmd_TakeUndergroundTrap(struct ScriptContext* ctx); +BOOL ScrCmd_HasSpaceForTrap(struct ScriptContext* ctx); +BOOL ScrCmd_GetTrapCount(struct ScriptContext* ctx); +BOOL ScrCmd_GiveTreasure(struct ScriptContext* ctx); +BOOL ScrCmd_TakeTreasure(struct ScriptContext* ctx); +BOOL ScrCmd_HasSpaceForTreasure(struct ScriptContext* ctx); +BOOL ScrCmd_GetTreasureCount(struct ScriptContext* ctx); +BOOL ScrCmd_GiveUndergroundSphere(struct ScriptContext* ctx); +BOOL ScrCmd_TakeUndergroundSphere(struct ScriptContext* ctx); +BOOL ScrCmd_HasSpaceForSphere(struct ScriptContext* ctx); +BOOL ScrCmd_GetSphereCount(struct ScriptContext* ctx); + +//scrcmd_24.c +BOOL ScrCmd_Unk01C6(struct ScriptContext* ctx); +BOOL ScrCmd_Unk01C7(struct ScriptContext* ctx); +BOOL ScrCmd_Unk021E(struct ScriptContext* ctx); +BOOL ScrCmd_Unk021F(struct ScriptContext* ctx); +void FUN_02045E74(struct ScriptContext* ctx, u8 a1, struct Pokemon* pokemon, void* a3); +BOOL ScrCmd_Unk0220(struct ScriptContext* ctx); +BOOL ScrCmd_Unk0221(struct ScriptContext* ctx); +BOOL ScrCmd_Unk0224(struct ScriptContext* ctx); +BOOL ScrCmd_Unk0222(struct ScriptContext* ctx); +BOOL ScrCmd_Unk0223(struct ScriptContext* ctx); +BOOL ScrCmd_Unk0225(struct ScriptContext* ctx); //scrcmd_25.c BOOL ScrCmd_Unk023F(struct ScriptContext* ctx); diff --git a/include/script.h b/include/script.h index 9a7270c2..01bba305 100644 --- a/include/script.h +++ b/include/script.h @@ -4,6 +4,8 @@ #include "global.h"
#include "msgdata.h"
#include "save_block_2.h"
+#include "unk_02016B94.h"
+
struct ScriptContext;
@@ -26,9 +28,10 @@ struct UnkStruct_02046444 struct UnkSavStruct80
{
u8 padding[0x8];
- u32 unk08;
+ struct UnkStruct_02016B94_2 *unk08;
struct SaveBlock2 *saveBlock2; //0xC
- u8 padding2[0xC];
+ struct UnkStruct_0204639C *unk10;
+ u8 padding2[0x8];
u32 *mapId; //0x1C
u8 padding3[0x18];
u32 unk38;
@@ -36,7 +39,9 @@ struct UnkSavStruct80 u32 unk60;
u8 padding5[0x14];
u32 unk78;
- u8 padding6[0x2C];
+ u8 padding6[0x1C];
+ void *unk98;
+ u8 padding7[0xC];
struct UnkStruct_02046444 * unkA8;
};
diff --git a/include/script_buffers.h b/include/script_buffers.h index d0fff528..9a742545 100644 --- a/include/script_buffers.h +++ b/include/script_buffers.h @@ -4,6 +4,7 @@ #include "pokemon.h" #include "pokemon_storage_system.h" #include "trainer_data.h" +#include "unk_02016B94.h" struct UnkStruct_0200AA80_sub_sub { @@ -105,7 +106,7 @@ void StringExpandPlaceholders(struct ScrStrBufs * mgr, struct String * dest, str void ScrStrBufs_ResetBuffers(struct ScrStrBufs * mgr); struct UnkStruct_0200B870 * MessagePrinter_new(u32 r5, u32 r6, u32 sp4, u32 r4); void MessagePrinter_delete(struct UnkStruct_0200B870 * a0); -void FUN_0200B9A8(struct UnkStruct_0200B870 * a0, int a1, int a2, int a3, int a4); -void FUN_0200B9EC(struct UnkStruct_0200B870 * string, u32 value, u32 n, enum PrintingMode mode, int sp30, int r5, int r7); +void FUN_0200B9A8(struct UnkStruct_0200B870 * a0, int a1, struct Window * a2, int a3, int a4); +void FUN_0200B9EC(struct UnkStruct_0200B870 * string, u32 value, u32 n, enum PrintingMode mode, struct Window *window, int x, int y); #endif //POKEDIAMOND_SCRIPT_BUFFERS_H diff --git a/include/sdat.h b/include/sdat.h deleted file mode 100644 index 3ba8583c..00000000 --- a/include/sdat.h +++ /dev/null @@ -1,47 +0,0 @@ -#ifndef GUARD_LIBSDAT_H -#define GUARD_LIBSDAT_H - -struct SDATHeader -{ - // Generic header - char magic[4]; - u16 bom; - u16 version; - u32 filesize; - u16 header_size; - u16 section_count; - // SDAT chunks - u32 symb_offset, symb_size; - u32 info_offset, info_size; - u32 fat_offset, fat_size; - u32 file_offset, file_size; -}; - -struct SDATFileMgr -{ - struct SDATHeader header; - BOOL is_init; - FSFile file; // 00034 - FSFileID fileID; // 7C - void * fat_p; - void * symb_p; - void * info_p; -}; - -void SDAT_Init(void); -void * FUN_020C2A94(void *, u32); -void SDAT_Open(struct SDATFileMgr *, char *, void *, u32); -void FUN_020C39CC(void *); -void FUN_020C01A0(void); -int FUN_020C290C(void *); -void FUN_020C2828(void *, int); -BOOL FUN_020C36A8(u32 *, void *); -BOOL FUN_020C3674(u32 *, void *); -BOOL FUN_020C35E0(u32 *, u32 *, void *); -BOOL FUN_020C360C(u32 *, void *); -BOOL FUN_020C3640(u32 *, void *); -void FUN_020C0F80(u32 *); -void FUN_020C1040(int, int); -void FUN_020C0F68(void); - -#endif //GUARD_LIBSDAT_H diff --git a/include/sound.h b/include/sound.h index 9b50542f..781c6b5b 100644 --- a/include/sound.h +++ b/include/sound.h @@ -2,15 +2,18 @@ #define POKEDIAMOND_SOUND_H #include "FS_file.h" -#include "sdat.h" +#include "NNS_SND_arc.h" +#include "NNS_SND_heap.h" +#include "NNS_SND_arc_loader.h" #include "player_data.h" +#include "sav_chatot.h" struct SoundData { - struct SDATFileMgr header; - void * unk_00090; - u8 unk_00094[0xBBC00]; - u32 unk_BBC94[9]; + NNSSndArc header; + NNSSndHeapHandle * heap; // 0x00090 + u8 heapBuffer[0xBBC00]; + u32 players[9]; u32 unk_BBCB8; u32 unk_BBCBC; u8 unk_BBCC0[0x20]; @@ -42,7 +45,7 @@ struct SoundData u32 unk_BCD3C; u64 unk_BCD40; u32 unk_BCD48; - void * unk_BCD4C; + struct SaveChatotSoundClip * chatot; u32 unk_BCD50; u32 unk_BCD54; u32 unk_BCD58; @@ -50,16 +53,16 @@ struct SoundData }; struct SoundData * GetSoundDataPointer(void); -void InitSoundData(void * a0, struct Options * a1); +void InitSoundData(struct SaveChatotSoundClip * chatot, struct Options * options); void * FUN_02003D38(u32 a0); -int FUN_02003F3C(int * a0); -void FUN_02003F64(int a0); -BOOL FUN_02003F78(u32 * a0); -BOOL FUN_02003F90(u32 * a0); -BOOL FUN_02003FA8(u32 * a0, u32 * a1); -BOOL FUN_02003FC4(u32 * a0); -BOOL FUN_02003FDC(u32 * a0); -u32 * FUN_02003FF4(int a0); +int GF_Snd_SaveState(int * level_p); +void GF_Snd_RestoreState(int level); +BOOL GF_Snd_LoadGroup(int groupNo); +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); void DoSoundUpdateFrame(void); diff --git a/include/text.h b/include/text.h index 40f4d03a..c9984d75 100644 --- a/include/text.h +++ b/include/text.h @@ -2,52 +2,66 @@ #define POKEDIAMOND_TEXT_H #include "global.h" +#include "font.h" +#include "unk_02016B94.h" + + +#define CHAR_0 0x00A2 +#define CHAR_1 0x00A3 +#define CHAR_2 0x00A4 +#define CHAR_3 0x00A5 +#define CHAR_4 0x00A6 +#define CHAR_5 0x00A7 +#define CHAR_6 0x00A8 +#define CHAR_7 0x00A9 +#define CHAR_8 0x00AA +#define CHAR_9 0x00AB + +union StrbufForPrint +{ + struct String * wrapped; + const u16 * raw; +}; struct TextPrinterTemplate { - const u16* currentChar; - u32 windowId; - u8 padding[1]; - u8 fontId; - u8 x; - u8 y; - u8 currentX; - u8 currentY; - u8 letterSpacing; - u8 lineSpacing; - u8 unk; - u8 fgColor; - u8 bgColor; - u8 shadowColor; - union - { - struct - { - u16 unk2; - u8 unk3; - u8 unk4; - }; - u32 Unk20; //todo this can't be right - }; + union StrbufForPrint currentChar; // 0 + struct Window * window; // 4 + u8 padding[1]; // 8 + u8 fontId; // 9 + u8 x; // a + u8 y; // b + u8 currentX; // c + u8 currentY; // d + u8 letterSpacing; // e + u8 lineSpacing; // f + u8 unk; // 10 + u8 fgColor; // 11 + u8 bgColor; // 12 + u8 shadowColor; // 13 + u16 unk2; // 14 + u8 unk3; // 16 + u8 unk4; // 17 }; struct TextPrinter { struct TextPrinterTemplate printerTemplate; - u8 (*callback)(struct TextPrinterTemplate *, u16); // 0x10 + u8 (*callback)(struct TextPrinterTemplate *, u16); // 0x18 u8 subStructFields[7]; // always cast to struct TextPrinterSubStruct... so why bother - u8 active; - u8 state; // 0x1C - u8 textSpeedBottom:7; + // 1c + u8 active; // 23 + u8 state; // 0x24 + u8 textSpeedBottom:7; // 25 u8 textSpeedTop:1; - u8 delayCounter; - u8 scrollDistance; - u8 minLetterSpacing; // 0x20 + u8 delayCounter; // 26 + u8 scrollDistance; // 27 + u8 minLetterSpacing; // 0x28 u8 Unk29; // used to be japanese, not sure about that anymore u16 Unk2A; - void *Unk2C; + u16 *Unk2C; }; struct FontInfo @@ -69,16 +83,16 @@ BOOL FUN_0201BD44(u32 param0); void FUN_0201BD5C(void); u8 FUN_0201BD70(u32 param0); void FUN_0201BD7C(u32 param0); -u16 AddTextPrinterParameterized(u32 windowId, u8 fontId, const u16 *str, u32 x, u32 y, u32 speed, u8 (*callback)(struct TextPrinterTemplate *, u16)); -u16 AddTextPrinterParameterized2(u32 windowId, u8 fontId, const u16 *str, u32 x, u32 y, u32 speed, u32 colors, u8 (*callback)(struct TextPrinterTemplate *, u16)); -u16 AddTextPrinterParameterized3(u32 windowId, u8 fontId, const u16 *str, u32 x, u32 y, u32 speed, u32 colors, u32 letterSpacing, u32 lineSpacing, u8 (*callback)(struct TextPrinterTemplate *, u16)); +u16 AddTextPrinterParameterized(struct Window * window, u8 fontId, struct String *str, u32 x, u32 y, u32 speed, u8 (*callback)(struct TextPrinterTemplate *, u16)); +u16 AddTextPrinterParameterized2(struct Window * window, u8 fontId, struct String *str, u32 x, u32 y, u32 speed, u32 colors, u8 (*callback)(struct TextPrinterTemplate *, u16)); +u16 AddTextPrinterParameterized3(struct Window * window, u32 fontId, struct String *str, u32 x, u32 y, u32 speed, u32 colors, u32 letterSpacing, u32 lineSpacing, u8 (*callback)(struct TextPrinterTemplate *, u16)); u16 AddTextPrinter(struct TextPrinterTemplate *printerTemplate, u32 speed, u8 (*callback)(struct TextPrinterTemplate *, u16)); void RunTextPrinter(u32 param0, struct TextPrinter *printer); u32 RenderFont(struct TextPrinter *printer); void GenerateFontHalfRowLookupTable(u8 fgColor, u8 bgColor, u8 shadowColor); void DecompressGlyphTile(const u16 *src, u16 *dst); void FUN_0201C1A8(struct TextPrinter *printer); -void *FUN_0201C1B0(void); +u16 *FUN_0201C1B0(void); void FUN_0201C1EC(struct TextPrinter *printer, u32 param1, u32 param2, u32 param3); void FUN_0201C238(struct TextPrinter *printer); diff --git a/include/text_02054590.h b/include/text_02054590.h index 725bd9b4..77170e70 100644 --- a/include/text_02054590.h +++ b/include/text_02054590.h @@ -3,15 +3,18 @@ #include "global.h" #include "options.h" +#include "unk_02016B94.h" +#include "string16.h" + void FUN_02054590(u32 param0, u32 param1); -void FUN_020545B8(u32 param0, u32 param1, u32 param2); -void FUN_02054608(u32 *param0, struct Options *options); -void FUN_0205464C(u32 *param0); -u16 FUN_02054658(u8 windowId, const u16 *str, struct Options *options, u8 param3); -u16 DrawFieldMessage(u8 windowId, const u16 *str, u8 fontId, u32 speed, u8 a4, u32 a5); +void FUN_020545B8(struct UnkStruct_02016B94_2 *param0, struct Window *param1, u32 param2); +void FUN_02054608(struct Window *param0, struct Options *options); +void FUN_0205464C(struct Window *param0); +u16 FUN_02054658(struct Window * window, struct String *str, struct Options *options, u8 param3); +u16 DrawFieldMessage(struct Window * window, struct String *str, u8 fontId, u32 speed, u8 a4, u32 a5); u8 FUN_020546C8(u32 param0); -void FUN_020546E0(u32 param0, u32 param1, u32 param2, u32 param3); -void FUN_02054744(u32 *param0, u32 param1, u32 param2); +void FUN_020546E0(struct UnkStruct_02016B94_2 *param0, struct Window *param1, u32 param2, u32 param3); +void FUN_02054744(struct Window *param0, u32 param1, u32 param2); -#endif //POKEDIAMOND_UNK_02054590_H +#endif // POKEDIAMOND_UNK_02054590_H diff --git a/include/timer3.h b/include/timer3.h index be6e1da8..3220c7a3 100644 --- a/include/timer3.h +++ b/include/timer3.h @@ -10,12 +10,12 @@ struct Timer3Data vu64 Timer3Counter; }; -THUMB_FUNC void Init_Timer3(); -THUMB_FUNC void CountUpTimer3(); -THUMB_FUNC u64 internal_GetTimer3Count(); -THUMB_FUNC u64 GetTimer3Count(); -THUMB_FUNC u64 Timer3CountToMilliSeconds(u64 count); -THUMB_FUNC u64 Timer3CountToSeconds(u64 count); +void Init_Timer3(); +void CountUpTimer3(); +u64 internal_GetTimer3Count(); +u64 GetTimer3Count(); +u64 Timer3CountToMilliSeconds(u64 count); +u64 Timer3CountToSeconds(u64 count); #endif //POKEDIAMOND_TIMER3_H diff --git a/include/unk_0200BA78.h b/include/unk_0200BA78.h new file mode 100644 index 00000000..2efe233e --- /dev/null +++ b/include/unk_0200BA78.h @@ -0,0 +1,19 @@ +#ifndef POKEDIAMOND_UNK_0200BA78_H +#define POKEDIAMOND_UNK_0200BA78_H + +#include "global.h" +#include "script_buffers.h" + +void FUN_0200BA78(struct UnkStruct_0200B870 *param0, + int param1, + u32 value, + u32 n, + enum PrintingMode mode, + struct Window *window, + int x, + int y); + +void FUN_0200BAAC( + struct UnkStruct_0200B870 *param0, u32 value, u32 n, enum PrintingMode mode, void *dest); + +#endif // POKEDIAMOND_UNK_0200BA78_H diff --git a/include/unk_0200BB14.h b/include/unk_0200BB14.h new file mode 100644 index 00000000..a252fd93 --- /dev/null +++ b/include/unk_0200BB14.h @@ -0,0 +1,243 @@ +#ifndef POKEDIAMOND_UNK_0200BB14_H +#define POKEDIAMOND_UNK_0200BB14_H + +#include "global.h" + +struct UnkStruct_0200BB14_1 +{ + u32 unk000; + u32 unk004; + u32 unk008; + u32 unk00c; + u8 unk010[0x128]; +}; + +struct UnkStruct_0200BB14_2 +{ + u32 unk00; + u32 unk04; + u32 *unk08; + u32 unk0c[6]; + u32 *unk24[6]; + u32 unk3c[6]; + s32 unk54; +}; + +struct UnkStruct_0200BB14_3 +{ + u32 unk00; + s16 unk04; + s16 unk06; + u16 unk08; + u16 unk0a; + u32 unk0c; + u32 unk10; + u32 unk14; + u32 unk18; + u32 unk1c; + u32 unk20; + u32 unk24; +}; + +struct UnkStruct_0200BB14_sub +{ + u8 unk00[0x24]; +}; + +struct UnkStruct_0200BB14_4 +{ + u32 unk00; + struct UnkStruct_0200BB14_sub *unk04; + s32 unk08; + s32 unk0c; + s32 unk10; + u32 unk14; + u32 unk18; + u32 unk1c; + u16 unk20; + u32 unk24; + u32 unk28; + u32 unk2c; +}; + +struct UnkStruct_0200BB14_6 +{ + struct UnkStruct_0200BB14_sub *unk0; + u32 unk4; +}; +struct UnkStruct_0200BB14_5 +{ + u32 unk00; + struct UnkStruct_0200BB14_sub *unk04; + struct UnkStruct_0200BB14_6 *unk08; + u32 unk0c; +}; + +struct UnkStruct_0200BB14_1 *FUN_0200BB14(u32 heap_id); +struct UnkStruct_0200BB14_2 *FUN_0200BB34(struct UnkStruct_0200BB14_1 *param0); +u32 FUN_0200BB68(u32 param0); +BOOL FUN_0200BB6C(struct UnkStruct_0200BB14_1 *param0, u32 *param1, u32 *param2, u32 param3); +BOOL FUN_0200BBF0( + struct UnkStruct_0200BB14_1 *param0, struct UnkStruct_0200BB14_2 *param1, u32 param2); +void FUN_0200BC14(u32 param0); +void FUN_0200BC1C(u32 *param0); +void FUN_0200BC30(); +void FUN_0200BC38(); +void FUN_0200BC40(struct UnkStruct_0200BB14_2 *param0); +void FUN_0200BC4C(struct UnkStruct_0200BB14_2 *param0); +void FUN_0200BC5C(struct UnkStruct_0200BB14_2 *param0); +void FUN_0200BCB0(u32 *param0); +void FUN_0200BCD0(struct UnkStruct_0200BB14_1 *param0, struct UnkStruct_0200BB14_2 *param1); +void FUN_0200BCE0(struct UnkStruct_0200BB14_1 *param0, struct UnkStruct_0200BB14_2 *param1); +void FUN_0200BD04(u32 *param0); +BOOL FUN_0200BD20( + struct UnkStruct_0200BB14_1 *param0, struct UnkStruct_0200BB14_2 *param1, const char **param2); +u32 FUN_0200BE38(u32 *param0, u32 *param1, struct UnkStruct_0200BB14_3 *param2); +u32 FUN_0200BE74(u32 *param0, + u32 *param1, + u32 param2, + s16 param3, + s16 param4, + s16 param5, + u16 param6, + u32 param7, + u32 param8, + u32 param9, + u32 param10, + u32 param11, + u32 param12, + u32 param13); +BOOL FUN_0200BF60( + struct UnkStruct_0200BB14_1 *param0, struct UnkStruct_0200BB14_2 *param1, u32 *param2); +BOOL FUN_0200C00C(u32 *param0, + struct UnkStruct_0200BB14_2 *param1, + u32 param2, + u32 param3, + u32 param4, + u32 param5, + s32 param6); +s32 FUN_0200C06C(u32 *param0, + struct UnkStruct_0200BB14_2 *param1, + u32 param2, + u32 param3, + u32 param4, + u32 param5, + u32 param6, + s32 param7); +u8 FUN_0200C0DC(u32 param0, + u32 param1, + u32 *param2, + struct UnkStruct_0200BB14_2 *param3, + u32 param4, + u32 param5, + u32 param6, + u32 param7, + u32 param8, + s32 param9); +u32 FUN_0200C124(u32 *param0, + struct UnkStruct_0200BB14_2 *param1, + u32 param2, + u32 param3, + u32 param4, + s32 param5); +u32 FUN_0200C13C(u32 *param0, + struct UnkStruct_0200BB14_2 *param1, + u32 param2, + u32 param3, + u32 param4, + s32 param5); +struct UnkStruct_0200BB14_5 *FUN_0200C154( + struct UnkStruct_0200BB14_1 *param0, struct UnkStruct_0200BB14_2 *param1, u32 *param2); +u32 FUN_0200C334(u32 *param0, u32 param1); +u32 FUN_0200C344(u32 *param0, u32 param1, u32 param2); +u32 FUN_0200C358(struct UnkStruct_0200BB14_2 *param0, u32 param1); +u32 FUN_0200C368(struct UnkStruct_0200BB14_2 *param0, u32 param1); +u32 FUN_0200C378(struct UnkStruct_0200BB14_2 *param0, u32 param1); +u32 FUN_0200C388(struct UnkStruct_0200BB14_2 *param0, u32 param1); +void FUN_0200C398(struct UnkStruct_0200BB14_1 *param0, struct UnkStruct_0200BB14_2 *param1); +void FUN_0200C3DC(u32 *param0); +BOOL FUN_0200C404(u32 *param0, + struct UnkStruct_0200BB14_2 *param1, + u32 param2, + u32 param3, + u32 param4, + u32 param5, + s32 param6); +BOOL FUN_0200C474(u32 *param0, u32 param1); +BOOL FUN_0200C4A8(u32 param0, u32 *param1, u32 param2); +BOOL FUN_0200C4F4(u32 param0, u32 *param1, u32 param2); +BOOL FUN_0200C548(u32 param0, u32 *param1, u32 param2); +void FUN_0200C59C(u32 param0); +void FUN_0200C5A8(u32 *param0); +void FUN_0200C5B4(u32 *param0, u32 param1); +void FUN_0200C5C0(u32 *param0, u32 param1); +u32 FUN_0200C5CC(u32 *param0); +void FUN_0200C5D8(u32 param0, u32 param1); +void FUN_0200C5E0(u32 *param0, u32 param1); +void FUN_0200C5EC(u32 param0, u32 param1); +void FUN_0200C5F4(u32 *param0, u32 param1); +u32 FUN_0200C600(u32 param0); +u32 FUN_0200C608(u32 *param0); +void FUN_0200C614(u32 param0); +void FUN_0200C61C(u32 *param0); +void FUN_0200C628(u32 param0); +void FUN_0200C630(u32 *param0); +void FUN_0200C63C(u32 param0, u32 param1); +void FUN_0200C644(u32 *param0, u32 param1); +u8 FUN_0200C650(u32 param0); +u8 FUN_0200C658(u32 *param0); +void FUN_0200C664(u32 param0, u32 param1); +void FUN_0200C66C(u32 *param0, u32 param1); +void FUN_0200C678(u32 param0, u32 param1); +void FUN_0200C680(u32 *param0, u32 param1); +u8 FUN_0200C68C(u32 *param0); +void FUN_0200C698(u32 param0, u32 param1); +u8 FUN_0200C6A4(u32 *param0); +void FUN_0200C6B0(u32 *param0, u32 param1); +void FUN_0200C6BC(u32 param0, u32 param1); +void FUN_0200C6C4(u32 *param0, u32 param1); +u16 FUN_0200C6D0(u32 param0); +u16 FUN_0200C6D8(u32 *param0); +void FUN_0200C6E4(u32 param0, u32 param1, u32 param2); +void FUN_0200C714(u32 *param0, u32 param1, u32 param2); +void FUN_0200C720(u32 param0, u32 param1, u32 param2, u32 param3); +void FUN_0200C750(u32 *param0, u32 param1, u32 param2, u32 param3); +void FUN_0200C75C(u32 param0, u16 *param1, u16 *param2); +void FUN_0200C7A0(u32 *param0, u16 *param1, u16 *param2); +void FUN_0200C7AC(u32 param0, u16 *param1, u16 *param2, u32 param3); +void FUN_0200C7F0(u32 *param0, u16 *param1, u16 *param2, u32 param3); +void FUN_0200C7FC(u32 param0, u16 *param1, u16 *param2); +void FUN_0200C82C(u32 *param0, u16 *param1, u16 *param2); +void FUN_0200C838(u32 param0, u32 param1); +void FUN_0200C840(u32 *param0, u32 param1); +void FUN_0200C84C(u32 param0, f32 param1, f32 param2); +void FUN_0200C884(u32 *param0, f32 param1, f32 param2); +void FUN_0200C890(u32 param0, u16 param1); +void FUN_0200C898(u32 *param0, u16 param1); +void FUN_0200C8A4(u32 param0, u32 param1); +void FUN_0200C8BC(u32 *param0, u32 param1); +void FUN_0200C8C8(u32 param0, u32 param1); +void FUN_0200C8D0(u32 *param0, u32 param1); +void FUN_0200C8DC(u32 *param0, u32 param1, u32 param2); +void FUN_0200C8F8(u32 *param0, u32 param1); +void FUN_0200C904(u32 param0, u32 param1); +void FUN_0200C90C(u32 *param0, u32 param1); +BOOL FUN_0200C918(u32 *param0, + struct UnkStruct_0200BB14_2 *param1, + u32 param2, + u32 param3, + u32 param4, + u32 param5, + s32 param6); +BOOL FUN_0200C978(u32 *param0, + struct UnkStruct_0200BB14_2 *param1, + u32 param2, + u32 param3, + u32 param4, + u32 param5, + s32 param6); +void FUN_0200C9D8(u32 *param0, u32 *param1, u32 param2, u32 param3, u32 param4, u32 param5); +void FUN_0200CA0C(u32 *param0, u32 *param1, u32 param2, u32 param3, u32 param4, u32 param5); +u32 FUN_0200CA40(u32 *param0); + +#endif // POKEDIAMOND_UNK_0200BB14_H diff --git a/include/unk_0200CA44.h b/include/unk_0200CA44.h index 2e479ab8..6dd208c3 100644 --- a/include/unk_0200CA44.h +++ b/include/unk_0200CA44.h @@ -1,10 +1,12 @@ #ifndef POKEDIAMOND_UNK_0200CA44_H #define POKEDIAMOND_UNK_0200CA44_H -BOOL FUN_0200CA44(void (*r0)(u32, void *), void * r1, void * r2); -BOOL FUN_0200CA60(void (*r0)(u32, void *), void * r1, void * r2); -BOOL FUN_0200CA7C(void (*r0)(u32, void *), void * r1, void * r2); -BOOL FUN_0200CA98(void (*r0)(u32, void *), void * r1, void * r2); +#include "text.h" + +BOOL FUN_0200CA44(void (*r0)(u32, struct TextPrinter *), struct TextPrinter * r1, u32 r2); +BOOL FUN_0200CA60(void (*r0)(u32, struct TextPrinter *), struct TextPrinter * r1, u32 r2); +BOOL FUN_0200CA7C(void (*r0)(u32, struct TextPrinter *), struct TextPrinter * r1, u32 r2); +BOOL FUN_0200CA98(void (*r0)(u32, struct TextPrinter *), struct TextPrinter * r1, u32 r2); void FUN_0200CAB4(s32 unk1); #endif //POKEDIAMOND_UNK_0200CA44_H diff --git a/include/unk_02015E30.h b/include/unk_02015E30.h index 6a4d6c15..67a7aaaf 100644 --- a/include/unk_02015E30.h +++ b/include/unk_02015E30.h @@ -15,8 +15,8 @@ struct UnkStruct_02015E30 u64 unk18; }; -THUMB_FUNC void FUN_02015E30(); -THUMB_FUNC void FUN_02015E3C(struct IGT *igt); -THUMB_FUNC void FUN_02015E60(); +void FUN_02015E30(); +void FUN_02015E3C(struct IGT *igt); +void FUN_02015E60(); #endif //POKEDIAMOND_UNK_02015E30_H diff --git a/include/unk_02016B94.h b/include/unk_02016B94.h new file mode 100644 index 00000000..fec45cd8 --- /dev/null +++ b/include/unk_02016B94.h @@ -0,0 +1,340 @@ +#ifndef POKEDIAMOND_UNK_02016B94_H +#define POKEDIAMOND_UNK_02016B94_H + +#include "global.h" +#include "GX_layers.h" +#include "MI_uncompress.h" +#include "OS_cache.h" +#include "gx.h" +#include "heap.h" +#include "math_util.h" + +#define reg_G2_BG2P (u32 *)0x4000020 +#define reg_G2_BG3P (u32 *)0x4000030 +#define reg_G2S_DB_BG2P (u32 *)0x4001020 +#define reg_G2S_DB_BG3P (u32 *)0x4001030 +struct UnkStruct_02016B94_1 +{ + u32 unk00; + u32 unk04; + u32 unk08; + u32 unk0c; + + u8 unk10; + u8 unk11; + u8 unk12; + u8 unk13; + u8 unk14; + u8 unk15; + u8 unk16; + u8 unk17; // probably paddding + u32 unk18; +}; + +struct UnkStruct_02016B94_2 +{ + u32 unk00; + u16 unk04; + u16 unk06; + + struct UnkStruct_02016B94_2_sub + { + void *unk08; + u32 unk0c; + u32 unk10; + + fx32 unk14; + fx32 unk18; + + u8 unk1c; + u8 unk1d; + u8 unk1e; + u8 unk1f; + u16 unk20; + u16 unk22; // probably padding + fx32 unk24; + fx32 unk28; + fx32 unk2c; + fx32 unk30; + } unk08[8]; +}; + +struct UnkStruct_02016B94_3 +{ + void *unk00; + u16 unk04; + u16 unk06; +}; + +struct UnkStruct_02016B94_4 +{ + u8 unk0; + u8 unk1; + u8 unk2; + u8 unk3; + u8 unk4; + u8 unk5; + u16 unk6; +}; + +struct Window +{ + struct UnkStruct_02016B94_2 *unk00; + u8 unk04; + u8 unk05; + u8 unk06; + u8 width; + u8 height; + u8 unk09; + u16 unk0a_0 : 15; + u16 unk0b_15 : 1; + void *unk0c; +}; + +struct UnkStruct_02016B94_2 *FUN_02016B94(u32 heap_id); +u32 FUN_02016BB8(u32 *param0); +void FUN_02016BBC(const struct GraphicsModes *modes); +void FUN_02016BF4(u32 *param0, u32 param1); +void FUN_02016C18( + struct UnkStruct_02016B94_2 *param0, u8 param1, struct UnkStruct_02016B94_1 *param2, u8 param3); +void FUN_020170F4(struct UnkStruct_02016B94_2 *param0, u8 param1, u32 param2, u8 param3); +u8 FUN_020177DC(u8 param0, u32 param1); +void FUN_02017850(u32 param0, u8 *param1, u8 *param2); +void FUN_020178A0(struct UnkStruct_02016B94_2 *param0, u32 param1); +void FUN_020178BC(u32 param0, u16 param1); +void FUN_0201797C(u32 param0, GX_LayerToggle toggle); +void FUN_020179E0(struct UnkStruct_02016B94_2 *param0, u32 param1, u32 param2, fx32 val); +fx32 FUN_02017B48(struct UnkStruct_02016B94_2 *param0, u32 param1); +fx32 FUN_02017B54(struct UnkStruct_02016B94_2 *param0, u32 param1); +void FUN_02017B60(struct UnkStruct_02016B94_2 *param0, + u32 param1, + u32 param2, + fx32 param3, + struct Mtx22 *param4, + fx32 param5, + fx32 param6); +void FUN_02017B8C(struct UnkStruct_02016B94_2_sub *param0, u32 param1, fx32 val); +void FUN_02017BD0(struct UnkStruct_02016B94_2 *param0, + u32 param1, + struct Mtx22 *param2, + fx32 param3, + fx32 param4); +void FUN_02017C6C(struct UnkStruct_02016B94_2 *param0, u32 param1); +void FUN_02017C98(const void *param0, void *param1, u32 param2); +void FUN_02017CD0(struct UnkStruct_02016B94_2 *param0, u32 param1); +void FUN_02017CE8( + struct UnkStruct_02016B94_2 *param0, u32 param1, u32 *param2, u32 param3, u32 param4); +void FUN_02017D68(u32 param0, void *param1, u32 offset, u32 size); +void FUN_02017DFC(struct UnkStruct_02016B94_2 *param0, u32 param1, void *param2, u32 param3); +void FUN_02017E14( + struct UnkStruct_02016B94_2 *param0, u32 param1, u32 *param2, u32 param3, u32 param4); +void FUN_02017E40( + struct UnkStruct_02016B94_2 *param0, u32 param1, u32 *param2, u32 param3, u32 param4); +void FUN_02017E84(u32 param0, void *param1, u32 offset, u32 size); +void FUN_02017F18(u32 param0, u32 size, u32 offset, u32 heap_id); +void FUN_02017F48( + struct UnkStruct_02016B94_2 *param0, u32 param1, u32 param2, u32 param3, u32 param4); +void FUN_02017FB4(u32 param0, void *param1, u32 offset, u32 size); +void FUN_02017FE4(u32 param0, u32 param1); +u16 FUN_02017FFC(u8 param0, u8 param1, u8 param2); +u16 FUN_02018068(u8 param0, u8 param1, u8 param2, u8 param3); +void FUN_02018148(struct UnkStruct_02016B94_2 *param0, + u32 param1, + void *param2, + u8 param3, + u8 param4, + u8 param5, + u8 param6); +void FUN_02018170(struct UnkStruct_02016B94_2 *param0, + u32 param1, + u8 param2, + u8 param3, + u8 param4, + u8 param5, + void *param6, + u8 param7, + u8 param8, + u8 param9, + u8 param10); +void FUN_020181EC(struct UnkStruct_02016B94_2 *param0, + u32 param1, + u8 param2, + u8 param3, + u8 param4, + u8 param5, + void *param6, + u8 param7, + u8 param8, + u8 param9, + u8 param10); +void FUN_02018268(struct UnkStruct_02016B94_2_sub *param0, + u8 param1, + u8 param2, + u8 param3, + u8 param4, + u16 *param5, + u8 param6, + u8 param7, + u8 param8, + u8 param9, + u8 param10); +void FUN_020183DC(struct UnkStruct_02016B94_2_sub *param0, + u8 param1, + u8 param2, + u8 param3, + u8 param4, + u8 *param5, + u8 param6, + u8 param7, + u8 param8, + u8 param9, + u8 param10); +void FUN_02018540(struct UnkStruct_02016B94_2 *param0, + u32 param1, + u16 param2, + u8 param3, + u8 param4, + u8 param5, + u8 param6, + u8 param7); +void FUN_02018590(struct UnkStruct_02016B94_2_sub *param0, + u16 param1, + u8 param2, + u8 param3, + u8 param4, + u8 param5, + u8 param6); +void FUN_02018640( + struct UnkStruct_02016B94_2_sub *param0, u8 param1, u8 param2, u8 param3, u8 param4, u8 param5); +void FUN_020186B4(struct UnkStruct_02016B94_2 *param0, + u32 param1, + u8 param2, + u8 param3, + u8 param4, + u8 param5, + u8 param6); +void FUN_02018744(struct UnkStruct_02016B94_2 *param0, u32 param1); +void FUN_02018768(struct UnkStruct_02016B94_2 *param0, u32 param1, u16 param2); +void FUN_0201878C(struct UnkStruct_02016B94_2 *param0, u32 param1, u16 param2); +void *FUN_020187B0(u32 param0); +void FUN_02018808(u8 *param0, u32 param1, u8 (*param2)[2], u8 param3); +u8 (*FUN_02018848(u8 *param0, u32 param1, u8 param2, u32 heap_id))[2]; +void *FUN_0201886C(struct UnkStruct_02016B94_2 *param0, u8 param1); +u16 FUN_02018878(struct UnkStruct_02016B94_2 *param0, u32 param1); +u8 FUN_02018884(struct UnkStruct_02016B94_2 *param0, u32 param1); +void BlitBitmapRect4Bit(struct UnkStruct_02016B94_3 *param0, + struct UnkStruct_02016B94_3 *param1, + u16 param2, + u16 param3, + u16 param4, + u16 param5, + u16 param6, + u16 param7, + u16 param8); +void BlitBitmapRect8Bit(struct UnkStruct_02016B94_3 *param0, + struct UnkStruct_02016B94_3 *param1, + u16 param2, + u16 param3, + u16 param4, + u16 param5, + u16 param6, + u16 param7, + u16 param8); +void FUN_02018E88( + struct UnkStruct_02016B94_3 *param0, u16 param1, u16 param2, u16 param3, u16 param4, u8 param5); +void FUN_02018F4C( + struct UnkStruct_02016B94_3 *param0, u16 param1, u16 param2, u16 param3, u16 param4, u8 param5); +void *AllocWindows(u32 heap_id, s32 size); +void InitWindow(struct Window *param0); +BOOL FUN_02019048(struct Window *param0); +void FUN_02019064(struct UnkStruct_02016B94_2 *param0, + struct Window *param1, + u8 param2, + u8 param3, + u8 param4, + u8 param5, + u8 param6, + u8 param7, + u16 param8); +void FUN_020190EC(struct UnkStruct_02016B94_2 *param0, + struct Window *param1, + u8 param2, + u8 param3, + u16 param4, + u8 param5); +void FUN_02019150(struct UnkStruct_02016B94_2 *param0, + struct Window *param1, + struct UnkStruct_02016B94_4 *param2); +void FUN_02019178(struct Window *param0); +void FUN_020191A4(struct Window *param0, int param1); +void CopyWindowToVram(struct Window *param0); +void FUN_02019220(struct Window *param0); +void FUN_02019270(struct Window *param0); +void FUN_0201928C(struct Window *param0, u8 param1, u8 param2); +void FUN_020192B8(struct Window *param0); +void FUN_020192D4(struct Window *param0); +void FUN_02019358(struct Window *param0); +void FUN_020193B4(struct Window *param0); +void FUN_02019444(struct Window *param0); +void FUN_0201949C(struct Window *window); +void FUN_020194C8(struct Window *window); +void FUN_020194E0(struct Window *window); +void FUN_0201951C(struct Window *window); +void FUN_02019548(struct Window *window); +void FUN_02019570(struct Window *window); +void FUN_0201958C(struct Window *window); +void FUN_020195A8(struct Window *window); +void FUN_020195D0(struct Window *window); +void FUN_020195E4(struct Window *window); +void FUN_0201960C(struct Window *window); +void FillWindowPixelBuffer(struct Window *window, u8 param1); +void BlitBitmapRectToWindow(struct Window *window, + const void *src, + u16 srcX, + u16 srcY, + u16 srcWidth, + u16 srcHeight, + u16 dstX, + u16 dstY, + u16 dstWidth, + u16 dstHeight); +void BlitBitmapRect(struct Window *window, + void *param1, + u16 param2, + u16 param3, + u16 param4, + u16 param5, + u16 param6, + u16 param7, + u16 param8, + u16 param9, + u16 param10); +void FillWindowPixelRect(struct Window *window, u8 fillValue, u16 x, u16 y, u16 width, u16 height); +void FUN_0201974C( + struct Window *window, u32 *param1, u32 param2, u32 param3, u16 param4, u16 param5, u32 param6); +void ScrollWindow(struct Window *window, u32 param1, u8 param2, u8 param3); +void FUN_0201A8E8(struct Window *window, u32 param1, u8 param2, u8 param3); +void FUN_0201A9D4(struct Window *window, u32 param1, u8 param2, u8 param3); +u8 FUN_0201AB08(struct Window *window); +u8 GetWindowWidth(struct Window *window); +u8 GetWindowHeight(struct Window *window); +u8 FUN_0201AB14(struct Window *window); +u8 FUN_0201AB18(struct Window *window); +void FUN_0201AB1C(struct Window *window, u8 param1); +void FUN_0201AB20(struct Window *window, u8 param1); +void FUN_0201AB24(struct Window *window, u8 param1); +u32 FUN_0201AB28(struct Window *window, u32 heap_id, const char *path); +u32 FUN_0201AB44(struct Window *window, u32 heap_id, const char *path); +void FUN_0201AB60(struct UnkStruct_02016B94_2 *param0); +void FUN_0201AB78(struct UnkStruct_02016B94_2 *param0); +void FUN_0201AC68(struct UnkStruct_02016B94_2 *param0, u32 param1); +void FUN_0201AC78(struct UnkStruct_02016B94_2 *param0); +void FUN_0201AEE4(struct UnkStruct_02016B94_2 *param0, u32 param1, u32 param2, fx32 param3); +void FUN_0201AF08(struct UnkStruct_02016B94_2 *param0, u32 param1, u32 param2, u16 param3); +void FUN_0201AF2C(struct UnkStruct_02016B94_2_sub *param0, u32 param1, u16 val); +void FUN_0201AF50(struct UnkStruct_02016B94_2 *param0, u32 param1, u32 param2, fx32 param3); +void FUN_0201AF74(struct UnkStruct_02016B94_2_sub *param0, u32 param1, fx32 val); +u32 FUN_0201AFBC(struct UnkStruct_02016B94_2 *param0, u8 param1, u8 param2, u8 param3, u16 *param4); +void FUN_0201B118(struct UnkStruct_02016B94_2 *param0, u8 param1, u8 *param2); + +#endif // POKEDIAMOND_UNK_02016B94_H diff --git a/include/unk_02022504.h b/include/unk_02022504.h new file mode 100644 index 00000000..62e4def1 --- /dev/null +++ b/include/unk_02022504.h @@ -0,0 +1,14 @@ +#ifndef POKEDIAMOND_UNK_02022504_H +#define POKEDIAMOND_UNK_02022504_H + +#include "save_block_2.h" +#include "pokemon_storage_system.h" + +void *FUN_02022504(struct SaveBlock2 *sav2); +struct PCStorage *GetStoragePCPointer(struct SaveBlock2 *sav2); +void *FUN_0202251C(struct SaveBlock2 *sav2); +void *FUN_02022528(struct SaveBlock2 *sav2); +u8 *LoadHallOfFame(struct SaveBlock2 *sav2, u32 heap_id, int *ret_p); +s32 SaveHallOfFame(struct SaveBlock2 *sav2, u8 *data); + +#endif //POKEDIAMOND_UNK_02022504_H diff --git a/include/unk_02024E64.h b/include/unk_02024E64.h index ed1bd447..68e7103c 100644 --- a/include/unk_02024E64.h +++ b/include/unk_02024E64.h @@ -14,15 +14,15 @@ struct UnkStruct_02024E64 { u8 unk74A[2]; // might be padding }; -THUMB_FUNC u32 FUN_02024E64(); -THUMB_FUNC void FUN_02024E6C(struct UnkStruct_02024E64 *param0); -THUMB_FUNC struct UnkStruct_02024E64 *FUN_02024EB4(struct SaveBlock2 *sav2); -THUMB_FUNC void *FUN_02024EC0(struct SaveBlock2 *sav2); -THUMB_FUNC struct UnkStruct_02024E64 *FUN_02024ECC(struct SaveBlock2 *sav2); -THUMB_FUNC void *FUN_02024ED8(struct SaveBlock2 *sav2); -THUMB_FUNC u16 *GetRivalNamePtr(struct UnkStruct_02024E64 *unk); -THUMB_FUNC void RivalsNameToU16Array(struct UnkStruct_02024E64 *unk, struct String *str); -THUMB_FUNC u16 *FUN_02024F0C(struct UnkStruct_02024E64 *unk); -THUMB_FUNC void FUN_02024F18(struct UnkStruct_02024E64 *unk, struct String *str); +u32 FUN_02024E64(); +void FUN_02024E6C(struct UnkStruct_02024E64 *param0); +struct UnkStruct_02024E64 *FUN_02024EB4(struct SaveBlock2 *sav2); +void *FUN_02024EC0(struct SaveBlock2 *sav2); +struct UnkStruct_02024E64 *FUN_02024ECC(struct SaveBlock2 *sav2); +void *FUN_02024ED8(struct SaveBlock2 *sav2); +u16 *GetRivalNamePtr(struct UnkStruct_02024E64 *unk); +void RivalsNameToU16Array(struct UnkStruct_02024E64 *unk, struct String *str); +u16 *FUN_02024F0C(struct UnkStruct_02024E64 *unk); +void FUN_02024F18(struct UnkStruct_02024E64 *unk, struct String *str); #endif diff --git a/include/unk_02025484.h b/include/unk_02025484.h index 0412dda1..d2feccb3 100644 --- a/include/unk_02025484.h +++ b/include/unk_02025484.h @@ -9,7 +9,7 @@ struct unk_2025484 u8 padding[0x1C]; }; -void FUN_02025484(struct unk_2025484 *r0, u32 r1); +void FUN_02025484(struct unk_2025484 *r0); u32 *FUN_02025490(struct unk_2025484 *r0, u32 r1); u32 *FUN_020254A0(struct unk_2025484 *r0, u32 r1); u32 FUN_020254B4(struct unk_2025484 *r0); diff --git a/include/unk_020286F8.h b/include/unk_020286F8.h index 3d81753a..99ecd982 100644 --- a/include/unk_020286F8.h +++ b/include/unk_020286F8.h @@ -21,10 +21,10 @@ void FUN_02028788(struct UnkSaveStruct_020286F8 * ptr, u32 i, u32 j); u32 FUN_020287A4(struct UnkSaveStruct_020286F8 * ptr); u16 * FUN_020287A8(struct UnkSaveStruct_020286F8 * ptr, u32 i, u32 j); void FUN_020287C0(struct UnkSaveStruct_020286F8 * ptr, u32 i, u32 j, struct String * k); -void FUN_020287EC(struct UnkSaveStruct_020286F8 * ptr, u32 i, u8 j); +void FUN_020287EC(struct UnkSaveStruct_020286F8 * ptr, u32 i, u32 j); u8 FUN_020287F8(struct UnkSaveStruct_020286F8 * ptr, u32 i); u8 FUN_02028804(struct UnkSaveStruct_020286F8 * ptr, u32 i); -void FUN_02028810(struct UnkSaveStruct_020286F8 * ptr, u32 i, u8 j); +void FUN_02028810(struct UnkSaveStruct_020286F8 * ptr, u32 i, u32 j); struct UnkSaveStruct_020286F8 * FUN_0202881C(struct SaveBlock2 * sav2); BOOL FUN_02028828(struct UnkSaveStruct_020286F8 * ptr, u32 i); BOOL FUN_02028840(struct UnkSaveStruct_020286F8 * ptr, int i); diff --git a/include/unk_0202D858.h b/include/unk_0202D858.h new file mode 100644 index 00000000..b5845998 --- /dev/null +++ b/include/unk_0202D858.h @@ -0,0 +1,10 @@ +#ifndef POKEDIAMOND_UNK_0202D858_H +#define POKEDIAMOND_UNK_0202D858_H + +#include "global.h" + +u8 FUN_0202D858(u16 param0); +u8 FUN_0202D884(u16 param0); +u32 FUN_0202D8B0(int param0); + +#endif // POKEDIAMOND_UNK_0202D858_H diff --git a/include/unk_0202E29C.h b/include/unk_0202E29C.h new file mode 100644 index 00000000..92998f7c --- /dev/null +++ b/include/unk_0202E29C.h @@ -0,0 +1,142 @@ +#ifndef POKEDIAMOND_UNK_0202E29C_H +#define POKEDIAMOND_UNK_0202E29C_H + +#include "global.h" +#include "mail_message.h" +#include "player_data.h" + +struct UnkStruct_0202E29C_sub4 +{ + u32 unk00; + u8 unk04; + u8 unk05; + u8 unk06; + u8 unk07; + u8 unk08[8]; + struct PlayerData unk10; + u8 unk30[0x40]; +}; + +struct UnkStruct_0202E29C_sub +{ + u32 unk00; + u8 unk04[6]; + u8 unk0A[0x2C]; + u16 unk36; + u8 unk38[0x18]; + struct UnkStruct_0202E29C_sub4 unk50; +}; + +struct UnkStruct_0202E29C_sub3 +{ + struct MailMessage unk00; + struct PlayerData unk08; + u8 unk28[0x20]; + u8 unk48[0x4]; + u8 unk4C; + u8 unk4D[7]; +}; + +struct UnkStruct_0202E29C_sub2 +{ + u32 unk00; + u8 unk04; + u8 unk05; + u8 unk06; + struct UnkStruct_0202E29C_sub3 unk08; +}; + +struct UnkStruct_0202E29C +{ + struct UnkStruct_0202E29C_sub3 unk000; + struct UnkStruct_0202E29C_sub unk054[16]; + u8 unkC54[8][6]; + u16 unkC84[16]; + void *unkCA4; + struct MailMessage unkCA8; + u32 unkCB0; + u8 unkCB4; + struct PlayerData *unkCB8; + void *unkCBC; + u32 unkCC0; + struct UnkStruct_0202E29C_sub2 unkCC4; + u8 unkD20[0x84]; + u16 unkDA4; + u16 unkDA6; + u8 unkDA8; + u8 unkDA9; + u8 unkDAA; + u8 unkDAB; + u8 unkDAC; + u8 unkDAD_0:1; + u8 unkDAD_1:1; + u8 unkDAD_2:1; + u8 unkDAD_3:1; + u8 unkDAD_4:1; + u8 unkDAD_5:1; + u8 unkDAE[0x2]; +}; + +void FUN_0202E29C(struct PlayerData *player_data); +BOOL FUN_0202E344(); +BOOL FUN_0202E358(u8 *param0, u8 *param1, s32 param2); +void FUN_0202E380(struct UnkStruct_0202E29C_sub *param0, u32 param1); +void FUN_0202E470(u32 param0, u32 param1); +void FUN_0202E488(); +void FUN_0202E49C(); +BOOL FUN_0202E4C8(); +BOOL FUN_0202E4DC(); +void FUN_0202E4F0(); +void FUN_0202E500(); +void FUN_0202E538(); +void FUN_0202E56C(u32 param0); +void FUN_0202E594(); +BOOL FUN_0202E5F8(u32 param0, u32 param1, u32 param2); +u32 FUN_0202E66C(u32 param0, u32 param1); +u32 FUN_0202E6F0(); +BOOL FUN_0202E784(); +void FUN_0202E7B0(u32 param0); +void FUN_0202E7D8(); +u32 FUN_0202E810(); +s32 FUN_0202E844(u32 param0); +u8 FUN_0202E878(); +void FUN_0202E88C(); +s32 FUN_0202E8A0(s32 param0); +s32 FUN_0202E8D0(s32 param0); +s32 FUN_0202E8F4(); +s32 FUN_0202E950(); +void FUN_0202E9AC(u32 param0, struct PlayerData *player_data); +u32 FUN_0202E9E8(u32 param0); +void FUN_0202EA54(); +void FUN_0202EA9C(); +void FUN_0202EB7C(); +void FUN_0202EBD0(u16 param0); +void FUN_0202ED70(u16 param0); +u32 FUN_0202ED84(u16 param0); +u32 FUN_0202EDB8(); +BOOL FUN_0202EDD8(); +BOOL FUN_0202EDF8(); +u32 FUN_0202EE0C(); +u32 FUN_0202EE24(); +BOOL FUN_0202EE44(); +BOOL FUN_0202EE60(); +void FUN_0202EE84(u32 param0); +void FUN_0202EEB0(u32 param0); +u32 FUN_0202EEE8(u16 param0); +struct UnkStruct_0202E29C_sub *FUN_0202EF18(u32 param0); +struct UnkStruct_0202E29C_sub4 *FUN_0202EF44(s32 param0); +struct PlayerData *FUN_0202EF70(); +struct PlayerData *FUN_0202EF84(int param0); +void FUN_0202EFAC(u8 *param0, s32 param1); +BOOL FUN_0202EFE4(u8 *param0); +u32 FUN_0202F03C(); +void FUN_0202F05C(); +void FUN_0202F078(struct MailMessage *mail_message); +void FUN_0202F094(void *param0); +void FUN_0202F0B8(); +u32 FUN_0202F0DC(u8 param0); +BOOL FUN_0202F104(); +void FUN_0202F10C(struct UnkStruct_0202E29C_sub3 *param0); +u8 *FUN_0202F124(u32 param0); + +#endif // POKEDIAMOND_UNK_0202E29C_H diff --git a/include/unk_0202F150.h b/include/unk_0202F150.h index 3996c1c8..b87bbf0c 100644 --- a/include/unk_0202F150.h +++ b/include/unk_0202F150.h @@ -6,6 +6,8 @@ #include "RTC_api.h" #include "heap.h" #include "main.h" +#include "unk_0202D858.h" +#include "unk_02031480.h" struct UnkStruct0202F150_sub1 { @@ -85,100 +87,100 @@ struct UnkStruct0202F150 u8 unk68B; }; -THUMB_FUNC u32 FUN_0202F150(u32 param0, u32 param1); -THUMB_FUNC void FUN_0202F2F0(); -THUMB_FUNC void FUN_0202F5A4(); -THUMB_FUNC void FUN_0202F820(int param0); -THUMB_FUNC void FUN_0202F8D4(); -THUMB_FUNC void FUN_0202F910(int param0); -THUMB_FUNC u32 FUN_0202F918(u32 param0, u32 param1, u32 param2, u32 param3); -THUMB_FUNC u32 FUN_0202F950(u32 param0, u32 param1, u32 param2); -THUMB_FUNC void FUN_0202F984(); -THUMB_FUNC void FUN_0202F9E0(u32 param0); -THUMB_FUNC void FUN_0202FA10(); -THUMB_FUNC void FUN_0202FA1C(); -THUMB_FUNC u8 FUN_0202FA28(); -THUMB_FUNC u32 FUN_0202FA48(); -THUMB_FUNC void FUN_0202FA5C(); -THUMB_FUNC u32 FUN_0202FB18(u32 param0); -THUMB_FUNC void FUN_0202FB20(); -THUMB_FUNC void FUN_0202FB58(); -THUMB_FUNC u32 FUN_0202FB80(); -THUMB_FUNC void FUN_0202FC60(); -THUMB_FUNC void FUN_0202FC80(); -THUMB_FUNC void FUN_0202FCA8(); -THUMB_FUNC void FUN_0202FCCC(); -THUMB_FUNC u32 FUN_0202FE2C(int param0); -THUMB_FUNC void FUN_0202FEEC(); -THUMB_FUNC void FUN_02030074(); -THUMB_FUNC void FUN_02030238(u32 param0, void *param1, u32 param2); -THUMB_FUNC void FUN_0203026C(u32 param0, u8 *param1, u32 param2); -THUMB_FUNC void FUN_020303BC(u32 param0, u8 *param1, u16 param2); -THUMB_FUNC void FUN_020303F4(u32 param0, u8 *param1, u16 param2); -THUMB_FUNC void FUN_020304D4(u32 param0); -THUMB_FUNC void FUN_020304F0(u32 param0); -THUMB_FUNC void FUN_0203050C(); -THUMB_FUNC void FUN_02030674(); -THUMB_FUNC void FUN_020307A8(); -THUMB_FUNC void FUN_020307BC(); -THUMB_FUNC void FUN_020307D0(); -THUMB_FUNC u32 FUN_020307E4(u8 *param0, u32 param1); -THUMB_FUNC void FUN_0203086C(); -THUMB_FUNC u32 FUN_02030870(u8 *param0); -THUMB_FUNC u32 FUN_02030930(u8 *param0); -THUMB_FUNC void FUN_02030A00(u8 *param0); -THUMB_FUNC u32 FUN_02030A78(u32 param0, u8 *param1, u32 param2); -THUMB_FUNC u32 FUN_02030ADC(u32 param0, u8 *param1, u32 param2); -THUMB_FUNC u32 FUN_02030B3C(u32 param0, u8 *param1, u32 param2); -THUMB_FUNC u32 FUN_02030BC4(u32 param0, u8 *param1, u32 param2); -THUMB_FUNC u32 FUN_02030C4C(u32 param0, u8 *param1); -THUMB_FUNC int FUN_02030C58(); -THUMB_FUNC void FUN_02030C70( +u32 FUN_0202F150(u32 param0, u32 param1); +void FUN_0202F2F0(); +void FUN_0202F5A4(); +void FUN_0202F820(int param0); +void FUN_0202F8D4(); +void FUN_0202F910(int param0); +BOOL FUN_0202F918(u32 param0, u32 param1, u32 param2, u32 param3); +u32 FUN_0202F950(u32 param0, u32 param1, u32 param2); +void FUN_0202F984(); +void FUN_0202F9E0(u32 param0); +void FUN_0202FA10(); +void FUN_0202FA1C(); +u8 FUN_0202FA28(); +u32 FUN_0202FA48(); +void FUN_0202FA5C(); +u32 FUN_0202FB18(u32 param0); +void FUN_0202FB20(); +void FUN_0202FB58(); +BOOL FUN_0202FB80(); +void FUN_0202FC60(); +void FUN_0202FC80(); +void FUN_0202FCA8(); +void FUN_0202FCCC(); +u32 FUN_0202FE2C(int param0); +void FUN_0202FEEC(); +void FUN_02030074(); +void FUN_02030238(u32 param0, u8 *param1, u32 param2); +void FUN_0203026C(u32 param0, u8 *param1, u32 param2); +void FUN_020303BC(u32 param0, u8 *param1, u32 param2); +void FUN_020303F4(u32 param0, u8 *param1, u32 param2); +void FUN_020304D4(u32 param0); +void FUN_020304F0(u32 param0); +void FUN_0203050C(); +void FUN_02030674(); +void FUN_020307A8(); +void FUN_020307BC(); +void FUN_020307D0(); +u32 FUN_020307E4(u8 *param0, u32 param1); +void FUN_0203086C(); +u32 FUN_02030870(u8 *param0); +u32 FUN_02030930(u8 *param0); +void FUN_02030A00(u8 *param0); +u32 FUN_02030A78(u32 param0, u8 *param1, u32 param2); +u32 FUN_02030ADC(u32 param0, u8 *param1, u32 param2); +u32 FUN_02030B3C(u32 param0, u8 *param1, u32 param2); +u32 FUN_02030BC4(u32 param0, u8 *param1, u32 param2); +u32 FUN_02030C4C(u32 param0, u8 *param1); +int FUN_02030C58(); +void FUN_02030C70( u32 param0, u32 param1, u32 param2, void *param3, struct UnkStruct0202F150_sub2 *param4); -THUMB_FUNC void FUN_02030C8C(struct UnkStruct0202F150_sub1 *param0, +void FUN_02030C8C(struct UnkStruct0202F150_sub1 *param0, u32 param1, void *param2, u32 param3, struct UnkStruct0202F150_sub2 *param4); -THUMB_FUNC void FUN_02030DA4(); -THUMB_FUNC void FUN_02030DFC(); -THUMB_FUNC u32 FUN_02030E7C(u16 param0); -THUMB_FUNC u32 FUN_02030F20(); -THUMB_FUNC u32 FUN_02030F40(); -THUMB_FUNC void FUN_02030F60(u8 param0); -THUMB_FUNC u8 FUN_02030F74(u32 param0); -THUMB_FUNC u32 FUN_02030F88(u32 param0); -THUMB_FUNC void FUN_02030FA8(); -THUMB_FUNC void FUN_02030FC8(); -THUMB_FUNC u32 FUN_02030FE0(); -THUMB_FUNC void FUN_02031000(u32 param0, u8 *param1, u32 param2); -THUMB_FUNC void FUN_0203105C(u32 param0, u8 *param1, u32 param2); -THUMB_FUNC void FUN_02031088(); -THUMB_FUNC void FUN_0203110C(u32 param0, u32 param1, u8 *param2); -THUMB_FUNC void FUN_02031134(u32 param0, u32 param1, u8 *param2); -THUMB_FUNC void FUN_0203115C(u32 param0, u32 param1, u8 *param2); -THUMB_FUNC u16 FUN_02031190(); -THUMB_FUNC u32 FUN_020311D0(u32 param0, u8 *param1); -THUMB_FUNC u32 FUN_020311DC(u32 param0); -THUMB_FUNC u32 FUN_020311E8(); -THUMB_FUNC u32 FUN_020311F0(); -THUMB_FUNC int FUN_02031228(u16 param0); -THUMB_FUNC u32 FUN_02031248(u32 param0); -THUMB_FUNC u32 FUN_02031258(u32 param0); -THUMB_FUNC void FUN_02031268(u8 param0); -THUMB_FUNC u8 FUN_02031280(); -THUMB_FUNC void FUN_0203129C(); -THUMB_FUNC void FUN_020312BC(s64 *param0); -THUMB_FUNC void FUN_02031354(u32 param0); -THUMB_FUNC u32 FUN_02031370(); -THUMB_FUNC u32 FUN_02031388(); -THUMB_FUNC void FUN_020313A0(u8 param0); -THUMB_FUNC void FUN_020313B4(u8 param0, u32 param1); -THUMB_FUNC u32 FUN_020313CC(u32 param0); -THUMB_FUNC u32 FUN_020313EC(); -THUMB_FUNC void FUN_02031400(u32 param0); -THUMB_FUNC u32 FUN_02031438(); -THUMB_FUNC void FUN_02031454(); -THUMB_FUNC void FUN_02031468(); +void FUN_02030DA4(); +void FUN_02030DFC(); +u32 FUN_02030E7C(u16 param0); +s32 FUN_02030F20(); +BOOL FUN_02030F40(); +void FUN_02030F60(u8 param0); +u8 FUN_02030F74(u32 param0); +u32 FUN_02030F88(u32 param0); +void FUN_02030FA8(); +void FUN_02030FC8(); +u32 FUN_02030FE0(); +void FUN_02031000(u32 param0, u8 *param1, u32 param2); +void FUN_0203105C(u32 param0, u8 *param1, u32 param2); +void FUN_02031088(); +void FUN_0203110C(u32 param0, u32 param1, u8 *param2); +void FUN_02031134(u32 param0, u32 param1, u8 *param2); +void FUN_0203115C(u32 param0, u32 param1, u8 *param2); +u16 FUN_02031190(); +u32 FUN_020311D0(u32 param0, u8 *param1); +u32 FUN_020311DC(u32 param0); +u32 FUN_020311E8(); +BOOL FUN_020311F0(); +int FUN_02031228(u16 param0); +int FUN_02031248(u32 param0); +int FUN_02031258(u32 param0); +void FUN_02031268(u8 param0); +u8 FUN_02031280(); +void FUN_0203129C(); +void FUN_020312BC(s64 *param0); +void FUN_02031354(u32 param0); +u32 FUN_02031370(); +u32 FUN_02031388(); +void FUN_020313A0(u8 param0); +void FUN_020313B4(u8 param0, u32 param1); +u32 FUN_020313CC(u32 param0); +u32 FUN_020313EC(); +void FUN_02031400(u32 param0); +u32 FUN_02031438(); +void FUN_02031454(); +void FUN_02031468(); #endif // POKEDIAMOND_UNK_0202F150_H diff --git a/include/unk_02031480.h b/include/unk_02031480.h new file mode 100644 index 00000000..951a3717 --- /dev/null +++ b/include/unk_02031480.h @@ -0,0 +1,30 @@ +#ifndef POKEDIAMOND_UNK_02031480_H +#define POKEDIAMOND_UNK_02031480_H + +#include "global.h" +#include "MI_memory.h" +#include "heap.h" +#include "unk_0202F150.h" + +void FUN_02031480(u32 heap_id); +void FUN_020314D0(); +BOOL FUN_020314E8(); +void FUN_020314FC(u8 param0, u32 param1, u8 *param2); +void FUN_02031560(u32 param0, u32 param1, u8 *param2); +void FUN_02031574(u32 param0, u32 param1, u8 *param2); +void FUN_02031588(u8 param0); +void FUN_020315A4(); +BOOL FUN_020315D8(u8 param0); +u8 FUN_020315FC(u8 index); +void FUN_0203160C(u32 param0, u32 param1, u8 *param2); +u32 FUN_02031628(); +void FUN_0203162C(u8 param0, u8 param1); +int FUN_02031640(u32 param0, u8 param1); +void FUN_02031668(); +void FUN_0203168C(); +BOOL FUN_020316AC(u32 param0, void *param1); +u8 *FUN_020316E0(int param0); +void FUN_02031704(u32 param0, u32 param1, void *param2); +u32 FUN_02031730(); + +#endif // POKEDIAMOND_UNK_02031480_H diff --git a/include/unk_02031734.h b/include/unk_02031734.h new file mode 100644 index 00000000..baf3901f --- /dev/null +++ b/include/unk_02031734.h @@ -0,0 +1,215 @@ +#ifndef POKEDIAMOND_UNK_02031734_H +#define POKEDIAMOND_UNK_02031734_H + +#include "global.h" + +struct UnkStruct_02031734_const1 +{ + u32 unk00[3]; +}; + +struct UnkStruct_02031734_const2 +{ + u32 unk00[2]; +}; + +struct UnkStruct_02031734 +{ + void *unk00; + u8 unk04[6]; + s64 unk0C[3]; + void (*unk24)(); + struct SaveBlock2 *unk28; + struct PlayerData *unk2C; + u32 unk30; + u32 unk34; + u16 unk38; + u16 unk3A; + u8 unk3C; + u8 unk3D; + u8 unk3E; + u8 unk3F; + u8 unk40; + u8 unk41; + u8 unk42; + u8 unk43; + u8 unk44; + u8 unk45; + u8 unk46; + u8 unk47; + u8 unk48; + u8 unk49; + u8 unk4A; + u8 unk4B; + u8 unk4C; + u8 unk4D; + u8 unk4E; + u8 unk4F; +}; + +inline u32 compute(s64 *param0, u32 param1) +{ + param0[0] = param0[1] * param0[0] + param0[2]; + + return (u32)(((s64)((u64)(param0[0]) >> 32) * param1) >> 32); +} + +void FUN_02031734(struct SaveBlock2 *sav2, u8 param1); +void FUN_020317C0(); +BOOL FUN_02031810(); +void FUN_02031824(struct SaveBlock2 *sav2); +void FUN_02031860(); +void FUN_02031880(); +void FUN_020318A4(u8 param0); +void FUN_020318B4(); +BOOL FUN_020318C4(); +void FUN_02031914(); +void FUN_02031924(); +void FUN_02031934(); +void FUN_02031948(struct SaveBlock2 *sav2, u8 param1, u8 param2, u32 param3); +void FUN_02031990(struct SaveBlock2 *sav2, u8 param1, u8 param2, u32 param3); +void FUN_020319D8(u8 param0); +void FUN_020319F4(); +void FUN_02031A08(); +void FUN_02031A24(); +BOOL FUN_02031A2C(); +void FUN_02031A7C(struct SaveBlock2 *sav2); +void FUN_02031AC8(u8 param0); +s32 FUN_02031AF4(); +BOOL FUN_02031B2C(); +void FUN_02031B50(); +u32 FUN_02031BD0(); +void FUN_02031BF4(); +void FUN_02031C10(); +void FUN_02031C2C(); +void FUN_02031C54(); +void FUN_02031C64(); +void FUN_02031C74(struct SaveBlock2 *sav2, u8 param1); +void FUN_02031CA8(struct SaveBlock2 *sav2, u8 param1); +void FUN_02031CDC(); +void FUN_02031D20(void (*param0)(), u32 param1); +void FUN_02031D30(); +void FUN_02031E08(); +void FUN_02031E8C(); +void FUN_02031EE0(); +void FUN_02031F60(); +void FUN_02031FC8(); +void FUN_02032028(); +void FUN_02032040(); +void FUN_02032058(); +void FUN_020320C4(); +void FUN_02032118(); +void FUN_02032138(); +void FUN_0203213C(); +void FUN_02032140(); +void FUN_02032178(); +void FUN_02032194(); +void FUN_020321B8(); +void FUN_020321D0(); +void FUN_02032218(); +void FUN_02032234(); +void FUN_0203224C(); +void FUN_02032290(); +void FUN_02032298(); +void FUN_020322C0(); +void FUN_020322F8(); +void FUN_0203230C(); +void FUN_0203234C(); +void FUN_02032364(); +void FUN_02032378(); +void FUN_020323B8(); +void FUN_020323BC(); +void FUN_020323CC(); +void FUN_020323DC(); +void FUN_02032424(); +void FUN_02032440(); +void FUN_02032478(); +void FUN_020324C8(); +void FUN_020324F8(); +void FUN_02032510(); +void FUN_02032578(); +void FUN_020325D0(); +void FUN_02032628(); +void FUN_02032640(); +void FUN_0203266C(); +void FUN_020326D0(); +void FUN_02032738(); +void FUN_0203279C(); +void FUN_020327B4(); +void FUN_020327B8(); +void FUN_020327FC(); +void FUN_02032850(); +void FUN_02032888(); +void FUN_020328C0(u8 param0); +void FUN_020328E4(); +void FUN_020328F4(u8 param0); +void FUN_02032924(); +void FUN_0203293C(); +void FUN_02032978(); +void FUN_020329F4(); +void FUN_02032A8C(u8 param0, u32 param1, u8 *param2); +void FUN_02032AEC(u32 param0, u32 param1, u8 *param2); +u32 FUN_02032B68(); +void FUN_02032B6C(u8 param0); +void FUN_02032B84(); +void FUN_02032B8C(); +void FUN_02032BD0(struct SaveBlock2 *sav2); +void FUN_02032C0C(); +u32 FUN_02032C28(); +void FUN_02032C6C(u32 param0, u32 param1); +void FUN_02032CF4(); +void FUN_02032D44(struct SaveBlock2 *sav2); +void FUN_02032D80(); +u8 FUN_02032D9C(); +BOOL FUN_02032DAC(); +void FUN_02032E00(); +void FUN_02032E48(); +void FUN_02032E8C(); +void FUN_02032E90(); +void FUN_02032EA8(); +void FUN_02032EAC(); +void FUN_02032EB0(); +void FUN_02032F20(u32 param0); +void FUN_02032F34(); +void FUN_02032F98(); +u32 FUN_02032FDC(u8 param0); +u32 FUN_0203300C(); +void FUN_02033060(); +void FUN_020330A0(); +void FUN_020330E4(); +u8 FUN_02033128(); +u32 FUN_02033138(); +u32 FUN_02033154(); +u32 FUN_02033180(); +void FUN_0203318C(); +void FUN_020331C4(); +void FUN_020331E8(); +void FUN_02033208(); +void FUN_0203323C(); +u32 FUN_02033250(); +void FUN_02033288(struct SaveBlock2 *sav2); +void FUN_020332DC(); +void FUN_02033310(struct SaveBlock2 *sav2); +void FUN_02033364(); +u32 FUN_02033398(); +void FUN_020333F0(); +void FUN_0203341C(); +void *FUN_0203346C(struct SaveBlock2 *sav2, u32 param1); +void *FUN_020334DC(); +void FUN_020334E8(u8 param0, u8 param1); +u8 FUN_02033510(); +s32 FUN_02033534(); +u8 FUN_0203354C(); +void FUN_02033564(void *src); +void FUN_02033578(void *dst); +u32 FUN_02033590(); +void FUN_020335A4(u8 param0); +u8 FUN_020335B8(); +void FUN_020335D0(s32 param0); +void FUN_020335E0(); +void FUN_020335F0(); +void FUN_020335F4(); +BOOL FUN_02033678(); +u32 FUN_020336A0(u8 param0); + +#endif // POKEDIAMOND_UNK_0202F150_H diff --git a/include/unk_02033778.h b/include/unk_02033778.h new file mode 100644 index 00000000..e1f64e05 --- /dev/null +++ b/include/unk_02033778.h @@ -0,0 +1,9 @@ +#ifndef POKEDIAMOND_UNK_02033778_H +#define POKEDIAMOND_UNK_02033778_H + +#include "nitro/types.h" + +void FUN_02033778(u32 param0); +void FUN_020337C8(u32 param0, u32 param1, u32 param2, u32 language); + +#endif //POKEDIAMOND_UNK_02033778_H diff --git a/include/unk_020337E8.h b/include/unk_020337E8.h new file mode 100644 index 00000000..228570ea --- /dev/null +++ b/include/unk_020337E8.h @@ -0,0 +1,25 @@ +#ifndef POKEDIAMOND_UNK_020337E8_H +#define POKEDIAMOND_UNK_020337E8_H + +#include "global.h" +#include "save_block_2.h" + +// Dummy struct until DWC_account +struct DWC_Struct +{ + s32 unk0; +}; + +struct DWC_token +{ + // size: 0xC + u8 fill0[0xC]; +}; + +s32 FUN_020337E8(u32 heap_id); +void FUN_0203380C(struct DWC_Struct *); +s32 FUN_02033830(struct DWC_Struct *); +BOOL FUN_0203384C(struct SaveBlock2 *); + + +#endif // POKEDIAMOND_UNK_020337E8_H diff --git a/include/unk_020377F0.h b/include/unk_020377F0.h new file mode 100644 index 00000000..91276889 --- /dev/null +++ b/include/unk_020377F0.h @@ -0,0 +1,30 @@ +#ifndef POKEDIAMOND_UNK_020377F0_H +#define POKEDIAMOND_UNK_020377F0_H + +struct Options; +struct PlayerParty; + +// This struct gets created from a bunch of places, not just 0x02037CF0. This was +// just the first place I (tgsm) found it being created. +struct UnkStruct_02037CF0 +{ + struct PlayerParty* party; + struct Options* options; + u16* name_buf; + u32 trainer_id; + u8 gender; + u8 unk11; + u8 unk12; + u8 party_count; + u8 unk14; + u8 unk15; + u8 unk16; + u8 padding; + u16 unk18; + u8 padding2[0x2]; + BOOL has_national_dex; + u8 padding3[0xC]; + BOOL unk2C; +}; + +#endif diff --git a/include/unk_0204639C.h b/include/unk_0204639C.h index cff2241f..cebe192d 100644 --- a/include/unk_0204639C.h +++ b/include/unk_0204639C.h @@ -1,6 +1,8 @@ #ifndef GUARD_UNK_0204639C_H #define GUARD_UNK_0204639C_H +#include "script.h" + struct UnkStruct_0204639C; typedef BOOL (*UnkStruct_0204639C_cb)(struct UnkStruct_0204639C * ); @@ -13,18 +15,18 @@ struct UnkStruct_0204639C u32 * unkC; struct UnkStruct_0204639C * unk10; void * unk14; - struct UnkStruct_0204639C * unk18; + struct UnkSavStruct80 * unk18; u32 * unk1C; }; extern void LoadOverlay_MODULE_05(void *); -extern void FUN_020373D4(struct UnkStruct_0204639C *, u32, u32); +extern void FUN_020373D4(struct UnkSavStruct80 *, u32, u32); extern BOOL FUN_020373AC(void *); extern BOOL FUN_0203739C(void *); extern BOOL FUN_020373C4(void *); -struct UnkStruct_0204639C * FUN_0204639C(struct UnkStruct_0204639C * r5, UnkStruct_0204639C_cb r6, u32 * r7); -void FUN_020463CC(struct UnkStruct_0204639C * r5, UnkStruct_0204639C_cb r4, u32 * r6); +struct UnkStruct_0204639C * FUN_0204639C(struct UnkSavStruct80 * r5, UnkStruct_0204639C_cb r6, u32 * r7); +void FUN_020463CC(struct UnkSavStruct80 * r5, UnkStruct_0204639C_cb r4, u32 * r6); void FUN_020463EC(struct UnkStruct_0204639C * r4, UnkStruct_0204639C_cb r1, u32 * r2); void FUN_0204640C(struct UnkStruct_0204639C * r4, UnkStruct_0204639C_cb r1, u32 * r2); BOOL FUN_02046420(struct UnkStruct_0204639C * r5); @@ -37,6 +39,6 @@ void FUN_02046500(struct UnkStruct_0204639C * r6, u32 r5, u32 r4); u32 * FUN_0204652C(struct UnkStruct_0204639C * r0); u32 * FUN_02046530(struct UnkStruct_0204639C * r0); u32 FUN_02046534(struct UnkStruct_0204639C * r0); -struct UnkStruct_0204639C * FUN_02046528(struct UnkStruct_0204639C *); +struct UnkSavStruct80 * FUN_02046528(struct UnkStruct_0204639C *); #endif //GUARD_UNK_0204639C_H diff --git a/include/unk_0204B0A0.h b/include/unk_0204B0A0.h new file mode 100644 index 00000000..8d37e354 --- /dev/null +++ b/include/unk_0204B0A0.h @@ -0,0 +1,25 @@ +#ifndef POKEDIAMOND_UNK_0204B0A0_H +#define POKEDIAMOND_UNK_0204B0A0_H + +#include "RTC_api.h" +#include "RTC_convert.h" +#include "sav_system_info.h" +#include "script.h" + +void FUN_0204B0F8(struct UnkSavStruct80* unk); +void FUN_0204B130(struct UnkSavStruct80* unk, struct UnkSaveStruct_0202376C_sub* rtc_info, struct RTCDate* date); +void FUN_0204B158(struct UnkSavStruct80* unk, struct UnkSaveStruct_0202376C_sub* rtc_info, struct RTCDate* date, struct RTCTime* time); +void FUN_0204B1DC(struct UnkSavStruct80* unk, s32 a1); +void FUN_0204B270(struct UnkSavStruct80* unk, s32 a1, struct RTCTime* time); +u32 Script_GetTimeOfDay(struct UnkSavStruct80* unk); +u32 Script_GetMonth(struct UnkSavStruct80* unk); +u32 Script_GetDay(struct UnkSavStruct80* unk); +RTCWeek Script_GetWeekday(struct UnkSavStruct80* unk); +u32 Script_GetHour(struct UnkSavStruct80* unk); +u32 Script_GetMinute(struct UnkSavStruct80* unk); +void Script_SavRTC_x24toDateTime(struct UnkSavStruct80* unk, struct RTCDate* date, struct RTCTime* time); +void Script_SavRTC_x2CtoDateTime(struct UnkSavStruct80* unk, struct RTCDate* date, struct RTCTime* time); +void Script_SavRTC_DateTimeTox2C(struct UnkSavStruct80* unk); +BOOL FUN_0204B33C(struct UnkSavStruct80* unk); + +#endif diff --git a/include/unk_0205FA2C.h b/include/unk_0205FA2C.h index 99cf7606..418c7077 100644 --- a/include/unk_0205FA2C.h +++ b/include/unk_0205FA2C.h @@ -13,6 +13,7 @@ #include "unk_0202A8F4.h" #include "unk_0204639C.h" #include "unk_0206BB28.h" +#include "unk_02031480.h" struct UnkPlayerStruct1_0205FA2C { @@ -79,16 +80,16 @@ struct UnkCallbackStruct2_0205FA2C u16 unk14; }; -THUMB_FUNC u32 FUN_0205FA2C( - struct UnkCallbackStruct1_0205FA2C *param0, struct UnkStruct_0204639C *param1, u32 heap_id); -THUMB_FUNC u32 FUN_0205FAD8( - struct UnkCallbackStruct1_0205FA2C *param0, struct UnkStruct_0204639C *param1); -THUMB_FUNC u32 FUN_0205FB34( - struct UnkCallbackStruct1_0205FA2C *param0, struct UnkStruct_0204639C *param1, u32 heap_id); -THUMB_FUNC u32 FUN_0205FBC0( - struct UnkCallbackStruct1_0205FA2C *param0, struct UnkStruct_0204639C *param1); -THUMB_FUNC int FUN_0205FBE8(struct UnkStruct_0204639C *param0); -THUMB_FUNC void FUN_0205FC50(struct UnkStruct_0204639C *param0, +u32 FUN_0205FA2C( + struct UnkCallbackStruct1_0205FA2C *param0, struct UnkSavStruct80 *param1, u32 heap_id); +u32 FUN_0205FAD8( + struct UnkCallbackStruct1_0205FA2C *param0, struct UnkSavStruct80 *param1); +u32 FUN_0205FB34( + struct UnkCallbackStruct1_0205FA2C *param0, struct UnkSavStruct80 *param1, u32 heap_id); +u32 FUN_0205FBC0( + struct UnkCallbackStruct1_0205FA2C *param0, struct UnkSavStruct80 *param1); +int FUN_0205FBE8(struct UnkStruct_0204639C *param0); +void FUN_0205FC50(struct UnkStruct_0204639C *param0, void **param1, u8 param2, u8 param3, @@ -97,24 +98,24 @@ THUMB_FUNC void FUN_0205FC50(struct UnkStruct_0204639C *param0, u8 param6, u8 param7); -THUMB_FUNC u32 FUN_0205FC9C( - struct UnkCallbackStruct2_0205FA2C *param0, struct UnkStruct_0204639C *param1); -THUMB_FUNC u32 FUN_0205FCC4( - struct UnkCallbackStruct2_0205FA2C *param0, struct UnkStruct_0204639C *param1); -THUMB_FUNC int FUN_0205FCE8(struct UnkStruct_0204639C *param0); -THUMB_FUNC void FUN_0205FD38(struct UnkStruct_0204639C *param0, u16 param1, u16 param2, u16 param3); +u32 FUN_0205FC9C( + struct UnkCallbackStruct2_0205FA2C *param0, struct UnkSavStruct80 *param1); +u32 FUN_0205FCC4( + struct UnkCallbackStruct2_0205FA2C *param0, struct UnkSavStruct80 *param1); +int FUN_0205FCE8(struct UnkStruct_0204639C *param0); +void FUN_0205FD38(struct UnkStruct_0204639C *param0, u16 param1, u16 param2, u16 param3); -THUMB_FUNC int FUN_0205FD70(struct UnkStruct_0204639C *param0); -THUMB_FUNC void FUN_0205FDDC(struct UnkStruct_0204639C *param0, u16 param1, u16 param2); +int FUN_0205FD70(struct UnkStruct_0204639C *param0); +void FUN_0205FDDC(struct UnkStruct_0204639C *param0, u16 param1, u16 param2); -THUMB_FUNC u32 FUN_0205FE10(struct SaveBlock2 *sav2); -THUMB_FUNC u32 FUN_0205FF5C(struct SaveBlock2 *sav2); -THUMB_FUNC void FUN_02060044(u16 **param0, u32 *param1); -THUMB_FUNC u32 FUN_02060064(u32 param0); -THUMB_FUNC u32 FUN_02060070(u32 param0); -THUMB_FUNC u32 FUN_0206007C(struct SaveBlock2 *sav2); -THUMB_FUNC u32 FUN_020600A0(struct SaveBlock2 *sav2); -THUMB_FUNC u32 FUN_020600DC(struct SaveBlock2 *sav2); -THUMB_FUNC BOOL FUN_02060144(u32 **param0); +u32 FUN_0205FE10(struct SaveBlock2 *sav2); +u32 FUN_0205FF5C(struct SaveBlock2 *sav2); +void FUN_02060044(u16 **param0, u32 *param1); +u32 FUN_02060064(u32 param0); +u32 FUN_02060070(u32 param0); +u32 FUN_0206007C(struct SaveBlock2 *sav2); +u32 FUN_020600A0(struct SaveBlock2 *sav2); +u32 FUN_020600DC(struct SaveBlock2 *sav2); +BOOL FUN_02060144(u32 **param0); -#endif // POKEDIAMOND_UNK_0205FA2C_H
\ No newline at end of file +#endif // POKEDIAMOND_UNK_0205FA2C_H diff --git a/include/unk_0206015C.h b/include/unk_0206015C.h new file mode 100644 index 00000000..c285fac9 --- /dev/null +++ b/include/unk_0206015C.h @@ -0,0 +1,30 @@ +#ifndef UNK_0206015C_H_GUARD +#define UNK_0206015C_H_GUARD + +#include "global.h" +#include "script.h" +#include "unk_0204639C.h" + +struct UnkStruct_0206015C +{ + u32 unk0; + u32 unk4; + u32 unk8; + u8 unkC; + u8 unkD; +}; + +struct UnkStruct_0204652C +{ + void* unk0; + u32 unk4; + u32 unk8; + u8 action; + u8 unkD; // some kind of counter? + u8 unkE; // some kind of counter? +}; + +void FUN_0206015C(struct UnkSavStruct80* savStruct); +BOOL FUN_02060194(struct UnkStruct_0204639C * unkStruct0); + +#endif //UNK_0206015C_H_GUARD diff --git a/include/unk_0206439C.h b/include/unk_0206439C.h new file mode 100644 index 00000000..6d094e5c --- /dev/null +++ b/include/unk_0206439C.h @@ -0,0 +1,15 @@ +#ifndef POKEDIAMOND_UNK_0206439C_H +#define POKEDIAMOND_UNK_0206439C_H + +struct Pokemon; +struct SaveBlock2; + +struct UnkStruct_0206439C +{ + struct Pokemon* pokemon; + void* unk4; +}; + +struct UnkStruct_0206439C* FUN_0206439C(u32 heap_id, u8 mon_idx, struct SaveBlock2* sav2); + +#endif diff --git a/include/unk_0208890C.h b/include/unk_0208890C.h new file mode 100644 index 00000000..9ec040a1 --- /dev/null +++ b/include/unk_0208890C.h @@ -0,0 +1,25 @@ +#ifndef POKEDIAMOND_UNK_0208890C_H +#define POKEDIAMOND_UNK_0208890C_H + +struct Bag; +struct Options; +struct PlayerData; +struct SaveBlock2; + +struct UnkStruct_0208890C +{ + u8 padding[0x4]; + void* unk4; + void* unk8; + struct SaveBlock2* sav2; + struct PlayerData* player; + struct Bag* bag; + struct Options* options; + void* unk1C; +}; + +struct UnkStruct_0208890C* FUN_0208890C(void*, struct SaveBlock2* sav2, u32 heap_id, void*); +void FUN_02088950(struct UnkSavStruct80*, struct UnkStruct_0208890C*); +struct UnkStruct_0208890C* FUN_02088960(struct UnkSavStruct80*, void*, u32 heap_id); + +#endif diff --git a/include/unk_02088DD8.h b/include/unk_02088DD8.h new file mode 100644 index 00000000..318a98fb --- /dev/null +++ b/include/unk_02088DD8.h @@ -0,0 +1,19 @@ +#ifndef POKEDIAMOND_UNK_02088DD8_H +#define POKEDIAMOND_UNK_02088DD8_H + +struct Options; +struct PlayerData; +struct Pokemon; + +struct UnkStruct_02088DD8 +{ + struct Pokemon* pokemon; + struct PlayerData* player; + struct Options* options; + void* unkC; + u8 padding[0x5]; + u8 unk15; + u8 padding2[0x2]; +}; + +#endif diff --git a/include/unk_0208A300.h b/include/unk_0208A300.h new file mode 100644 index 00000000..9c2ae898 --- /dev/null +++ b/include/unk_0208A300.h @@ -0,0 +1,17 @@ +#ifndef POKEDIAMOND_UNK_0208A300_H +#define POKEDIAMOND_UNK_0208A300_H + +struct UnkStruct_0208A300 +{ + u32 unk0; + u32 unk4; +}; + +struct UnkStruct_0208A300* FUN_0208A300(u32 heap_id); +void FUN_0208A320(struct UnkStruct_0208A300* unk); +u32 FUN_0208A328(struct UnkStruct_0208A300* unk); +void FUN_0208A32C(struct UnkStruct_0208A300* unk, u32 a1); +u32 FUN_0208A330(struct UnkStruct_0208A300* unk); +void FUN_0208A334(struct UnkStruct_0208A300* unk, u32 a1); + +#endif diff --git a/tools/asm_processor/asm_processor.py b/tools/asm_processor/asm_processor.py index ec01c68e..5c909388 100755 --- a/tools/asm_processor/asm_processor.py +++ b/tools/asm_processor/asm_processor.py @@ -9,7 +9,7 @@ import os from collections import namedtuple, defaultdict from io import StringIO -MAX_FN_SIZE = 100 +MAX_FN_SIZE = 3000 SLOW_CHECKS = False EI_NIDENT = 16 @@ -375,14 +375,14 @@ def is_temp_name(name): # https://stackoverflow.com/a/241506 def re_comment_replacer(match): s = match.group(0) - if s[0] in "/#": + if s[0] in "/#;": return " " else: return s re_comment_or_string = re.compile( - r'#.*|/\*.*?\*/|"(?:\\.|[^\\"])*"' + r';.*|#.*|/\*.*?\*/|"(?:\\.|[^\\"])*"' ) @@ -584,8 +584,12 @@ class GlobalAsmBlock: elif line.startswith('.byte'): self.add_sized(len(line.split(',')), real_line) # Branches are 4 bytes long - elif line.startswith('bl'): + elif line.startswith('bl') and not line.startswith('bls'): self.add_sized(4, real_line) + elif line.startswith('.word'): + self.add_sized(4, real_line) + elif line.startswith('.extern'): + pass else: # Unfortunately, macros are hard to support for .rodata -- # we don't know how how space they will expand to before @@ -820,7 +824,7 @@ def repl_float_hex(m): def parse_source(f, opt, framepointer, input_enc, output_enc, print_source=None): opt = "O4" min_instr_count = 3 # idk - skip_instr_count = 2 # idk + skip_instr_count = 3 # mandatory instructions: push, pop and mov r0, 0 use_jtbl_for_rodata = False if opt in ['O2', 'g3'] and not framepointer: diff --git a/tools/fixrom/fixrom.c b/tools/fixrom/fixrom.c index 6c5f5da1..59fbd327 100644 --- a/tools/fixrom/fixrom.c +++ b/tools/fixrom/fixrom.c @@ -6,8 +6,12 @@ #include <stdnoreturn.h> #include <stdarg.h> -#define HEADER_SIZE 0x4000 +#define HEADER_SIZE 0x4000 +#define HEADER_CODE_OFFSET 0xC +#define HEADER_SECURE_CRC_OFFSET 0x6C +#define HEADER_CRC_OFFSET 0x15E +// ROM header buffer uint8_t RomHeader[HEADER_SIZE]; static inline noreturn __attribute__((format(printf, 1, 2))) void fatal_error(const char * message, ...) @@ -21,6 +25,9 @@ static inline noreturn __attribute__((format(printf, 1, 2))) void fatal_error(co exit(EXIT_FAILURE); } +// Pedantic check to make sure you're writing to or reading from a valid range +// within the ROM header buffer. +// Call twice, once with the first offset and again with the last address. static inline void OffsetCheck(int offset) { if (offset < 0 || offset >= HEADER_SIZE) @@ -29,80 +36,77 @@ static inline void OffsetCheck(int offset) } } +// Wrapper for memcpy that writes to the ROM header buffer +static inline uint8_t * SafeCopyToHeader(int offset, const void * src, size_t size) +{ + OffsetCheck(offset); + OffsetCheck(offset + size - 1); + return memcpy(RomHeader + offset, src, size); +} + +// Read a 16-bit word from the header buffer static inline uint16_t HeaderReadU16LE(int offset) { OffsetCheck(offset); + OffsetCheck(offset + 1); return RomHeader[offset] | (RomHeader[offset + 1] << 8); } +// Read a 32-bit word from the header buffer static inline uint32_t HeaderReadU32LE(int offset) { OffsetCheck(offset); + OffsetCheck(offset + 3); return RomHeader[offset] | (RomHeader[offset + 1] << 8) | (RomHeader[offset + 2] << 16) | (RomHeader[offset + 3] << 24); } +// Write a 16-bit word to the header buffer static inline void HeaderWriteU16LE(int offset, uint16_t value) { OffsetCheck(offset); + OffsetCheck(offset + 1); RomHeader[offset] = value; RomHeader[offset + 1] = value >> 8; } +// Write a 32-bit word to the header buffer static inline void HeaderWriteU32LE(int offset, uint32_t value) { OffsetCheck(offset); + OffsetCheck(offset + 3); RomHeader[offset] = value; RomHeader[offset + 1] = value >> 8; RomHeader[offset + 2] = value >> 16; RomHeader[offset + 3] = value >> 24; } +// Standard CRC16 routine +#define CRC16_POLYNOMIAL 0xA001 + static uint16_t Calc_CRC16(uint8_t * data, size_t length, uint16_t crc) { - static uint16_t CrcTable[16] = { - 0x0000, - 0xCC01, - 0xD801, - 0x1400, - 0xF001, - 0x3C00, - 0x2800, - 0xE401, - 0xA001, - 0x6C00, - 0x7800, - 0xB401, - 0x5000, - 0x9C01, - 0x8801, - 0x4400, - }; - - uint16_t x = 0; - uint16_t y; - uint16_t bit = 0; - uint8_t * end = data + length; - while (data < end) - { - if (bit == 0) - { - x = data[0] | (data[1] << 8); - } - y = CrcTable[crc & 15]; - crc >>= 4; - crc ^= y; - y = CrcTable[(x >> bit) & 15]; - crc ^= y; - bit += 4; - if (bit == 16) - { - data += 2; - bit = 0; + static uint16_t CrcTable[256] = {}; + static int initialized = 0; + int i; + + if (!initialized) { + for (i = 0; i < 256; i++) { + int c = i; + for (int j = 0; j < 8; j++) { + c = (c >> 1) ^ ((c & 1) ? CRC16_POLYNOMIAL : 0); + } + CrcTable[i] = c; } + initialized = 1; } + + for (i = 0; i < length; i++) { + crc = (crc >> 8) ^ CrcTable[(uint8_t)crc] ^ CrcTable[data[i]]; + } + return crc; } @@ -114,20 +118,24 @@ int main(int argc, char ** argv) int override_code = 0; FILE * rom = NULL; + // Parse arguments for (int i = 1; i < argc; i++) { if (strcmp(argv[i], "--secure-crc") == 0) { + // Enforce zero or one if (override_crc) { fatal_error("multiple --secure-crc options specified"); } + // Parse integer char * endptr; unsigned long secure_crc_l = strtoul(argv[++i], &endptr, 0); if (secure_crc_l == 0 && endptr == argv[i]) { fatal_error("argument to --secure-crc must be an integer"); } - if (secure_crc_l >= 0x10000) + // Enforce width + if (secure_crc_l > UINT16_MAX) { fatal_error("argument to --secure-crc must be a 16-bit integer"); } @@ -136,55 +144,66 @@ int main(int argc, char ** argv) } else if (strcmp(argv[i], "--game-code") == 0) { + // Enforce zero or one if (override_code) { fatal_error("multiple --game-code options specified"); } - if (strlen(argv[++i]) > 4) + // Enforce max length + if (strlen(argv[++i]) > sizeof(game_code)) { fatal_error("argument to --game-code must be 4 characters or fewer"); } - strncpy(game_code, argv[i], 4); + memset(game_code, 0, sizeof(game_code)); + strncpy(game_code, argv[i], sizeof(game_code)); override_code = 1; } - else + // Positional arguments + else if (rom == NULL) { - if (rom != NULL) - { - fatal_error("unrecognized %s argument: %s", argv[i][0] == '-' ? "flag" : "positional", argv[i]); - } rom = fopen(argv[i], "r+b"); if (rom == NULL) { fatal_error(argv[i][0] == '-' ? "unrecognized flag argument: %s" : "unable to open file '%s' for reading", argv[i]); } } + else + { + // Invalid argument, complain about it + fatal_error("unrecognized %s argument: %s", argv[i][0] == '-' ? "flag" : "positional", argv[i]); + } } + // Read header to buffer if (fread(RomHeader, 1, HEADER_SIZE, rom) != HEADER_SIZE) { fatal_error("error reading the ROM header"); } + // Update CRC if (override_crc) { - HeaderWriteU16LE(0x6C, secure_crc); + HeaderWriteU16LE(HEADER_SECURE_CRC_OFFSET, secure_crc); } - + + // Update code if (override_code) { - memcpy(RomHeader + 0xC, game_code, 4); + SafeCopyToHeader(HEADER_CODE_OFFSET, game_code, sizeof(game_code)); } - uint16_t header_crc = Calc_CRC16((uint8_t *)RomHeader, 0x15E, 0xFFFF); - HeaderWriteU16LE(0x15E, header_crc); + // Recompute CRC of header not including the crc offset + uint16_t header_crc = Calc_CRC16((uint8_t *)RomHeader, HEADER_CRC_OFFSET, 0xFFFF); + HeaderWriteU16LE(HEADER_CRC_OFFSET, header_crc); + // Write the header back fseek(rom, 0, SEEK_SET); if (fwrite(RomHeader, 1, HEADER_SIZE, rom) != HEADER_SIZE) { fatal_error("error writing the ROM header"); } + // Hooray, we done did it! fclose(rom); return EXIT_SUCCESS; } diff --git a/tools/knarc/Narc.cpp b/tools/knarc/Narc.cpp index 7e698571..cce7cdea 100644 --- a/tools/knarc/Narc.cpp +++ b/tools/knarc/Narc.cpp @@ -29,6 +29,7 @@ using namespace std; extern bool debug; extern bool pack_no_fnt; +extern bool output_header; void Narc::AlignDword(ofstream& ofs, uint8_t paddingChar) { @@ -145,6 +146,39 @@ bool Narc::Pack(const fs::path& fileName, const fs::path& directory) if (!ofs.good()) { return Cleanup(ofs, NarcError::InvalidOutputFile); } + ofstream ofhs; + string stem; + string stem_upper; + // Pikalax 29 May 2021 + // Output an includable header that enumerates the NARC contents + if (output_header) + { + fs::path naixfname = fileName; + naixfname.replace_extension(".naix"); + + ofhs.open(naixfname); + if (!ofhs.good()) + { + ofhs.close(); + return Cleanup(ofs, NarcError::InvalidOutputFile); + } + + stem = fileName.stem().string(); + stem_upper = stem; + for (char &c : stem_upper) + { c = toupper(c); } + + ofhs << "/*\n" + " * THIS FILE WAS AUTOMATICALLY\n" + " * GENERATED BY tools/knarc\n" + " * DO NOT MODIFY!!!\n" + " */\n" + "\n" + "#ifndef NARC_" << stem_upper << "_NAIX_\n" + "#define NARC_" << stem_upper << "_NAIX_\n" + "\n" + "enum {\n"; + } vector<FileAllocationTableEntry> fatEntries; uint16_t directoryCounter = 1; @@ -153,6 +187,7 @@ bool Narc::Pack(const fs::path& fileName, const fs::path& directory) ignore_patterns.push_back(".*keep"); WildcardVector keep_patterns(directory / ".knarckeep"); + int memberNo = 0; for (const auto& de : OrderedDirectoryIterator(directory, true)) { if (is_directory(de)) @@ -164,6 +199,12 @@ bool Narc::Pack(const fs::path& fileName, const fs::path& directory) if (debug) { cerr << "DEBUG: adding file " << de.path() << endl; } + if (output_header) + { + string de_stem = de.path().filename().string(); + std::replace(de_stem.begin(), de_stem.end(), '.', '_'); + ofhs << "\tNARC_" << stem << "_" << de_stem << " = " << (memberNo++) << ",\n"; + } fatEntries.push_back(FileAllocationTableEntry { .Start = 0x0, @@ -183,6 +224,11 @@ bool Narc::Pack(const fs::path& fileName, const fs::path& directory) fatEntries.back().End = fatEntries.back().Start + static_cast<uint32_t>(file_size(de)); } } + if (output_header) + { + ofhs << "};\n\n#endif //NARC_" << stem_upper << "_NAIX_\n"; + ofhs.close(); + } FileAllocationTable fat { diff --git a/tools/knarc/Source.cpp b/tools/knarc/Source.cpp index d9a5cf83..587c8527 100644 --- a/tools/knarc/Source.cpp +++ b/tools/knarc/Source.cpp @@ -8,6 +8,7 @@ using namespace std; bool debug = false; bool pack_no_fnt = true; +bool output_header = false; void PrintError(NarcError error) { @@ -40,6 +41,7 @@ static inline void usage() { cout << "\t-n\tBuild the filename table (default: discards filenames)" << endl; cout << "\t-D/--debug\tPrint additional debug messages" << endl; cout << "\t-h/--help\tPrint this message and exit" << endl; + cout << "\t-i\tOutput a .naix header" << endl; } int main(int argc, char* argv[]) @@ -104,6 +106,9 @@ int main(int argc, char* argv[]) else if (!strcmp(argv[i], "-n")) { pack_no_fnt = false; } + else if (!strcmp(argv[i], "-i")) { + output_header = true; + } else { usage(); cerr << "ERROR: Unrecognized argument: " << argv[i] << endl; diff --git a/tools/nitrogfx/gfx.c b/tools/nitrogfx/gfx.c index 305fbeb2..f5ff30e7 100644 --- a/tools/nitrogfx/gfx.c +++ b/tools/nitrogfx/gfx.c @@ -774,8 +774,9 @@ void WriteNtrCell(char *path, struct JsonToCellOptions *options) KBECHeader[4] = (size + 0x20) & 0xFF; //size KBECHeader[5] = (size + 0x20) >> 8; //unlikely to be more than 16 bits, but there are 32 allocated, change if necessary - fwrite(KBECHeader, 1, 0x20, fp); + KBECHeader[16] = (options->mappingType & 0xFF); //not possible to be more than 8 bits, though 32 are allocated + fwrite(KBECHeader, 1, 0x20, fp); unsigned char *KBECContents = malloc(size); diff --git a/tools/nitrogfx/json.c b/tools/nitrogfx/json.c index aad325be..b825c363 100644 --- a/tools/nitrogfx/json.c +++ b/tools/nitrogfx/json.c @@ -51,16 +51,17 @@ struct JsonToCellOptions *ParseNCERJson(char *path) cJSON *imageHeight = cJSON_GetObjectItemCaseSensitive(json, "imageHeight"); cJSON *imageWidth = cJSON_GetObjectItemCaseSensitive(json, "imageWidth"); cJSON *cellCount = cJSON_GetObjectItemCaseSensitive(json, "cellCount"); + cJSON *mappingType = cJSON_GetObjectItemCaseSensitive(json, "mappingType"); options->labelEnabled = GetBool(labelBool); options->extended = GetBool(extended); options->imageHeight = GetInt(imageHeight); options->imageWidth = GetInt(imageWidth); options->cellCount = GetInt(cellCount); + options->mappingType = GetInt(mappingType); options->cells = malloc(sizeof(struct Cell *) * options->cellCount); - if (options->labelEnabled) { cJSON *labelCount = cJSON_GetObjectItemCaseSensitive(json, "labelCount"); diff --git a/tools/nitrogfx/options.h b/tools/nitrogfx/options.h index 780c83e6..66e9895d 100644 --- a/tools/nitrogfx/options.h +++ b/tools/nitrogfx/options.h @@ -74,6 +74,7 @@ struct Cell { struct JsonToCellOptions { bool labelEnabled; bool extended; + int mappingType; int imageHeight; int imageWidth; int cellCount; diff --git a/tools/o2narc/o2narc.cpp b/tools/o2narc/o2narc.cpp index 1381788a..60e4e242 100644 --- a/tools/o2narc/o2narc.cpp +++ b/tools/o2narc/o2narc.cpp @@ -3,6 +3,7 @@ #include <getopt.h> #include <cstring> #include <vector> +#include <iomanip> #include "elf.h" #include "Narc.h" @@ -49,6 +50,7 @@ class Elf { public: ShdrTab shdr; Symtab symtab; + Elf(string const& filename) : Elf(filename.c_str()) {} Elf(const char * filename) { // Read the ELF header phdr = nullptr; @@ -155,25 +157,29 @@ static inline void usage() { cout << "\toutfile\tOutput NARC file" << endl; cout << "Options:" << endl; cout << "\t-f|--flatten\tDon't generate NARC headers" << endl; + cout << "\t-i|--output-header\tCreate a .naix file" << endl; } int main(int argc, char ** argv) { // CLI arguments - int flatten = 0; + int flatten = 0, output_header = 0; char padding = '\xFF'; static option options [] { { "flatten", no_argument, &flatten, 1 }, { "padding", required_argument, nullptr, 'p' }, + { "output_header", no_argument, &output_header, 1 }, {nullptr, 0, nullptr, 0} }; int opt_index; int c; - while ((c = getopt_long(argc, argv, "fp:", options, &opt_index)) != -1) + while ((c = getopt_long(argc, argv, "fp:i", options, &opt_index)) != -1) { if (c == 'f') { flatten = 1; } else if (c == 'p') { padding = strtol(optarg, NULL, 0); + } else if (c == 'i') { + output_header = 1; } } argv += optind; @@ -188,8 +194,13 @@ int main(int argc, char ** argv) { cerr << "Excess arguments: first unrecognized '" << argv[2] << "'" << endl; return 1; } - char * infname = argv[0]; - char * outfname = argv[1]; + if (output_header && flatten) { + usage(); + cerr << "Incompatible flags: -i, -f" << endl; + return 1; + } + const char * infname = argv[0]; + const char * outfname = argv[1]; // Read the ELF file Elf elf(infname); @@ -201,15 +212,45 @@ int main(int argc, char ** argv) { exit(1); } - fstream ofile; - ofile.open(outfname, ios_base::out | ios_base::binary); + ofstream ofile; + ofile.open(outfname, ios_base::binary); if (!ofile.good()) { cerr << "ERROR: Unable to open '" << outfname << "' for writing" << endl; exit(1); } - if (!flatten) // then build the NARC chunks { + string stem, stem_upper; + ofstream ofheader; + if (output_header) + { + string outhname = outfname; + outhname.replace(outhname.find(".narc"), 5, ".naix"); + ofheader.open(outhname); + if (!ofheader.good()) + { + ofile.close(); + cerr << "ERROR: Unable to open '" << outhname << "' for writing" << endl; + exit(1); + } + stem = outfname; + stem = stem.substr(0, stem.rfind(".")); + stem = stem.substr(stem.rfind("/") + 1); + stem_upper = stem; + for (char &_c : stem_upper) + { _c = toupper(_c); } + + ofheader << "/*\n" + " * THIS FILE WAS AUTOMATICALLY\n" + " * GENERATED BY tools/o2narc\n" + " * DO NOT MODIFY!!!\n" + " */\n" + "\n" + "#ifndef NARC_" << stem_upper << "_NAIX_\n" + "#define NARC_" << stem_upper << "_NAIX_\n" + "\n" + "enum {\n"; + } // .data contains the size table Elf32_Shdr & data_sec = elf.shdr[".data"]; uint32_t * _data = (uint32_t *)elf.read(data_sec); @@ -275,6 +316,15 @@ int main(int argc, char ** argv) { { _rodata[fat_entries[i].Start + j] = padding; } + if (output_header) + { + ofheader << "\tNARC_" << stem << "_narc_" << setw(4) << setfill('0') << i << " = " << i << ",\n"; + } + } + if (output_header) + { + ofheader << "};\n\n#endif //NARC_" << stem_upper << "_NAIX_\n"; + ofheader.close(); } // These NARCs have empty FNTs FileNameTable fnt{ |