mirror of
https://github.com/pret/pokediamond.git
synced 2026-09-10 01:56:24 -05:00
Merge branch 'master' into 0202A1E0
This commit is contained in:
18
.github/workflows/build.yml
vendored
18
.github/workflows/build.yml
vendored
@@ -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
|
||||
|
||||
1
.gitignore
vendored
1
.gitignore
vendored
@@ -49,3 +49,4 @@ symbols.csv
|
||||
*.arc
|
||||
files/**/*.c
|
||||
*.o
|
||||
*.naix
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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.
|
||||
|
||||
|
||||
5
Makefile
5
Makefile
@@ -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)
|
||||
|
||||
19
arm9/CMakeLists.txt
Normal file
19
arm9/CMakeLists.txt
Normal file
@@ -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__)
|
||||
@@ -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 ######################
|
||||
|
||||
|
||||
102
arm9/arm9.lsf
102
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
|
||||
|
||||
65
arm9/asm/NNS_FND_allocator.s
Normal file
65
arm9/asm/NNS_FND_allocator.s
Normal file
@@ -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
|
||||
583
arm9/asm/NNS_FND_expheap.s
Normal file
583
arm9/asm/NNS_FND_expheap.s
Normal file
@@ -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
|
||||
243
arm9/asm/NNS_FND_frameheap.s
Normal file
243
arm9/asm/NNS_FND_frameheap.s
Normal file
@@ -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
|
||||
112
arm9/asm/NNS_FND_heapcommon.s
Normal file
112
arm9/asm/NNS_FND_heapcommon.s
Normal file
@@ -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
|
||||
169
arm9/asm/NNS_FND_list.s
Normal file
169
arm9/asm/NNS_FND_list.s
Normal file
@@ -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
|
||||
336
arm9/asm/NNS_G2D_g2d_animation.s
Normal file
336
arm9/asm/NNS_G2D_g2d_animation.s
Normal file
@@ -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_
|
||||
417
arm9/asm/NNS_G2D_g2d_cellanimati.s
Normal file
417
arm9/asm/NNS_G2D_g2d_cellanimati.s
Normal file
@@ -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_
|
||||
286
arm9/asm/NNS_G2D_g2d_celltransfe.s
Normal file
286
arm9/asm/NNS_G2D_g2d_celltransfe.s
Normal file
@@ -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
|
||||
1357
arm9/asm/NNS_G2D_g2d_charcanvas.s
Normal file
1357
arm9/asm/NNS_G2D_g2d_charcanvas.s
Normal file
File diff suppressed because it is too large
Load Diff
284
arm9/asm/NNS_G2D_g2d_font.s
Normal file
284
arm9/asm/NNS_G2D_g2d_font.s
Normal file
@@ -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
|
||||
780
arm9/asm/NNS_G2D_g2d_image.s
Normal file
780
arm9/asm/NNS_G2D_g2d_image.s
Normal file
@@ -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
|
||||
55
arm9/asm/NNS_G2D_g2d_load.s
Normal file
55
arm9/asm/NNS_G2D_g2d_load.s
Normal file
@@ -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
|
||||
490
arm9/asm/NNS_G2D_g2d_multicellan.s
Normal file
490
arm9/asm/NNS_G2D_g2d_multicellan.s
Normal file
@@ -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_
|
||||
155
arm9/asm/NNS_G2D_g2d_nan_load.s
Normal file
155
arm9/asm/NNS_G2D_g2d_nan_load.s
Normal file
@@ -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_
|
||||
66
arm9/asm/NNS_G2D_g2d_ncg_load.s
Normal file
66
arm9/asm/NNS_G2D_g2d_ncg_load.s
Normal file
@@ -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
|
||||
66
arm9/asm/NNS_G2D_g2d_ncl_load.s
Normal file
66
arm9/asm/NNS_G2D_g2d_ncl_load.s
Normal file
@@ -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
|
||||
180
arm9/asm/NNS_G2D_g2d_nft_load.s
Normal file
180
arm9/asm/NNS_G2D_g2d_nft_load.s
Normal file
@@ -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
|
||||
83
arm9/asm/NNS_G2D_g2d_nmc_load.s
Normal file
83
arm9/asm/NNS_G2D_g2d_nmc_load.s
Normal file
@@ -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
|
||||
112
arm9/asm/NNS_G2D_g2d_nob_load.s
Normal file
112
arm9/asm/NNS_G2D_g2d_nob_load.s
Normal file
@@ -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_
|
||||
18
arm9/asm/NNS_G2D_g2d_node.s
Normal file
18
arm9/asm/NNS_G2D_g2d_node.s
Normal file
@@ -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
|
||||
21
arm9/asm/NNS_G2D_g2d_nsc_load.s
Normal file
21
arm9/asm/NNS_G2D_g2d_nsc_load.s
Normal file
@@ -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
|
||||
667
arm9/asm/NNS_G2D_g2d_oam.s
Normal file
667
arm9/asm/NNS_G2D_g2d_oam.s
Normal file
@@ -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_
|
||||
421
arm9/asm/NNS_G2D_g2d_oamsoftware.s
Normal file
421
arm9/asm/NNS_G2D_g2d_oamsoftware.s
Normal file
@@ -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_
|
||||
11
arm9/asm/NNS_G2D_g2d_palettetabl.s
Normal file
11
arm9/asm/NNS_G2D_g2d_palettetabl.s
Normal file
@@ -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
|
||||
1984
arm9/asm/NNS_G2D_g2d_renderer.s
Normal file
1984
arm9/asm/NNS_G2D_g2d_renderer.s
Normal file
File diff suppressed because it is too large
Load Diff
1095
arm9/asm/NNS_G2D_g2d_renderercor.s
Normal file
1095
arm9/asm/NNS_G2D_g2d_renderercor.s
Normal file
File diff suppressed because it is too large
Load Diff
129
arm9/asm/NNS_G2D_g2d_softsprite.s
Normal file
129
arm9/asm/NNS_G2D_g2d_softsprite.s
Normal file
@@ -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_
|
||||
62
arm9/asm/NNS_G2D_g2d_srtcontrol.s
Normal file
62
arm9/asm/NNS_G2D_g2d_srtcontrol.s
Normal file
@@ -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
|
||||
221
arm9/asm/NNS_G2D_g2d_textcanvas.s
Normal file
221
arm9/asm/NNS_G2D_g2d_textcanvas.s
Normal file
@@ -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
|
||||
35
arm9/asm/NNS_G2D_g2di_bitreader.s
Normal file
35
arm9/asm/NNS_G2D_g2di_bitreader.s
Normal file
@@ -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
|
||||
79
arm9/asm/NNS_G2D_g2di_mtx32.s
Normal file
79
arm9/asm/NNS_G2D_g2di_mtx32.s
Normal file
@@ -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
|
||||
13
arm9/asm/NNS_G2D_g2di_splitchar.s
Normal file
13
arm9/asm/NNS_G2D_g2di_splitchar.s
Normal file
@@ -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
|
||||
143
arm9/asm/NNS_G3D_1mat1shp.s
Normal file
143
arm9/asm/NNS_G3D_1mat1shp.s
Normal file
@@ -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
|
||||
466
arm9/asm/NNS_G3D_3dsmax.s
Normal file
466
arm9/asm/NNS_G3D_3dsmax.s
Normal file
@@ -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_
|
||||
352
arm9/asm/NNS_G3D_anm.s
Normal file
352
arm9/asm/NNS_G3D_anm.s
Normal file
@@ -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
|
||||
62
arm9/asm/NNS_G3D_basic.s
Normal file
62
arm9/asm/NNS_G3D_basic.s
Normal file
@@ -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
|
||||
23
arm9/asm/NNS_G3D_cgtool.s
Normal file
23
arm9/asm/NNS_G3D_cgtool.s
Normal file
@@ -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
|
||||
197
arm9/asm/NNS_G3D_gecom.s
Normal file
197
arm9/asm/NNS_G3D_gecom.s
Normal file
@@ -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
|
||||
355
arm9/asm/NNS_G3D_glbstate.s
Normal file
355
arm9/asm/NNS_G3D_glbstate.s
Normal file
@@ -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
|
||||
858
arm9/asm/NNS_G3D_kernel.s
Normal file
858
arm9/asm/NNS_G3D_kernel.s
Normal file
@@ -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
|
||||
594
arm9/asm/NNS_G3D_maya.s
Normal file
594
arm9/asm/NNS_G3D_maya.s
Normal file
@@ -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
|
||||
25
arm9/asm/NNS_G3D_mem.s
Normal file
25
arm9/asm/NNS_G3D_mem.s
Normal file
@@ -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
|
||||
656
arm9/asm/NNS_G3D_model.s
Normal file
656
arm9/asm/NNS_G3D_model.s
Normal file
@@ -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
|
||||
1591
arm9/asm/NNS_G3D_nsbca.s
Normal file
1591
arm9/asm/NNS_G3D_nsbca.s
Normal file
File diff suppressed because it is too large
Load Diff
287
arm9/asm/NNS_G3D_nsbma.s
Normal file
287
arm9/asm/NNS_G3D_nsbma.s
Normal file
@@ -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_
|
||||
299
arm9/asm/NNS_G3D_nsbta.s
Normal file
299
arm9/asm/NNS_G3D_nsbta.s
Normal file
@@ -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_
|
||||
180
arm9/asm/NNS_G3D_nsbtp.s
Normal file
180
arm9/asm/NNS_G3D_nsbtp.s
Normal file
@@ -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
|
||||
49
arm9/asm/NNS_G3D_nsbva.s
Normal file
49
arm9/asm/NNS_G3D_nsbva.s
Normal file
@@ -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
|
||||
317
arm9/asm/NNS_G3D_res_struct_acce.s
Normal file
317
arm9/asm/NNS_G3D_res_struct_acce.s
Normal file
@@ -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
|
||||
2738
arm9/asm/NNS_G3D_sbc.s
Normal file
2738
arm9/asm/NNS_G3D_sbc.s
Normal file
File diff suppressed because it is too large
Load Diff
359
arm9/asm/NNS_G3D_si3d.s
Normal file
359
arm9/asm/NNS_G3D_si3d.s
Normal file
@@ -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
|
||||
349
arm9/asm/NNS_G3D_util.s
Normal file
349
arm9/asm/NNS_G3D_util.s
Normal file
@@ -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
|
||||
477
arm9/asm/NNS_G3D_xsi.s
Normal file
477
arm9/asm/NNS_G3D_xsi.s
Normal file
@@ -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_
|
||||
165
arm9/asm/NNS_GFD_gfd_frameplttvr.s
Normal file
165
arm9/asm/NNS_GFD_gfd_frameplttvr.s
Normal file
@@ -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
|
||||
316
arm9/asm/NNS_GFD_gfd_frametexvra.s
Normal file
316
arm9/asm/NNS_GFD_gfd_frametexvra.s
Normal file
@@ -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
|
||||
152
arm9/asm/NNS_GFD_gfd_linkedlistp.s
Normal file
152
arm9/asm/NNS_GFD_gfd_linkedlistp.s
Normal file
@@ -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
|
||||
283
arm9/asm/NNS_GFD_gfd_linkedlistt.s
Normal file
283
arm9/asm/NNS_GFD_gfd_linkedlistt.s
Normal file
@@ -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
|
||||
26
arm9/asm/NNS_GFD_gfd_plttvramman.s
Normal file
26
arm9/asm/NNS_GFD_gfd_plttvramman.s
Normal file
@@ -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_
|
||||
26
arm9/asm/NNS_GFD_gfd_texvramman.s
Normal file
26
arm9/asm/NNS_GFD_gfd_texvramman.s
Normal file
@@ -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_
|
||||
592
arm9/asm/NNS_GFD_gfd_vramtransfe.s
Normal file
592
arm9/asm/NNS_GFD_gfd_vramtransfe.s
Normal file
@@ -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_
|
||||
261
arm9/asm/NNS_GFD_gfdi_linkedlist.s
Normal file
261
arm9/asm/NNS_GFD_gfdi_linkedlist.s
Normal file
@@ -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
|
||||
680
arm9/asm/NNS_SND_capture.s
Normal file
680
arm9/asm/NNS_SND_capture.s
Normal file
@@ -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
|
||||
63
arm9/asm/NNS_SND_fader.s
Normal file
63
arm9/asm/NNS_SND_fader.s
Normal file
@@ -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
|
||||
282
arm9/asm/NNS_SND_heap.s
Normal file
282
arm9/asm/NNS_SND_heap.s
Normal file
@@ -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}
|
||||
125
arm9/asm/NNS_SND_main.s
Normal file
125
arm9/asm/NNS_SND_main.s
Normal file
@@ -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
|
||||
877
arm9/asm/NNS_SND_player.s
Normal file
877
arm9/asm/NNS_SND_player.s
Normal file
@@ -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
|
||||
129
arm9/asm/NNS_SND_resource_mgr.s
Normal file
129
arm9/asm/NNS_SND_resource_mgr.s
Normal file
@@ -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
|
||||
23
arm9/asm/NNS_SND_seqdata.s
Normal file
23
arm9/asm/NNS_SND_seqdata.s
Normal file
@@ -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
|
||||
525
arm9/asm/NNS_SND_sndarc.s
Normal file
525
arm9/asm/NNS_SND_sndarc.s
Normal file
@@ -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
|
||||
872
arm9/asm/NNS_SND_sndarc_loader.s
Normal file
872
arm9/asm/NNS_SND_sndarc_loader.s
Normal file
@@ -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}
|
||||
261
arm9/asm/NNS_SND_sndarc_player.s
Normal file
261
arm9/asm/NNS_SND_sndarc_player.s
Normal file
@@ -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}
|
||||
263
arm9/asm/NNS_SND_sndarc_stream.s
Normal file
263
arm9/asm/NNS_SND_sndarc_stream.s
Normal file
@@ -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
|
||||
456
arm9/asm/NNS_SND_stream.s
Normal file
456
arm9/asm/NNS_SND_stream.s
Normal file
@@ -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
|
||||
240
arm9/asm/NNS_SND_waveout.s
Normal file
240
arm9/asm/NNS_SND_waveout.s
Normal file
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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}
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
|
||||
@@ -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]
|
||||
|
||||
@@ -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
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
@@ -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
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user