summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Makefile35
-rw-r--r--README.md1
-rw-r--r--arm7/Makefile2
-rw-r--r--arm7/arm7.lsf24
-rw-r--r--arm7/asm/EXI_genPort.s44
-rw-r--r--arm7/asm/MI_dma.s74
-rw-r--r--arm7/asm/MI_memory.s221
-rw-r--r--arm7/asm/MI_swap.s9
-rw-r--r--arm7/asm/OS_alarm.s12
-rw-r--r--arm7/asm/OS_alloc.s8
-rw-r--r--arm7/asm/OS_arena.s149
-rw-r--r--arm7/asm/OS_interrupt.s20
-rw-r--r--arm7/asm/OS_irqTable.s20
-rw-r--r--arm7/asm/OS_reset.s12
-rw-r--r--arm7/asm/OS_spinLock.s8
-rw-r--r--arm7/asm/OS_thread.s44
-rw-r--r--arm7/asm/OS_tick.s16
-rw-r--r--arm7/asm/OS_timer.s8
-rw-r--r--arm7/asm/OS_valarm.s20
-rw-r--r--arm7/asm/PAD_xyButton.s60
-rw-r--r--arm7/asm/PXI_fifo.s248
-rw-r--r--arm7/asm/PXI_init.s10
-rw-r--r--arm7/asm/SND.s498
-rw-r--r--arm7/asm/SND_alarm.s144
-rw-r--r--arm7/asm/SND_bank.s245
-rw-r--r--arm7/asm/SND_capture.s38
-rw-r--r--arm7/asm/SND_channel.s208
-rw-r--r--arm7/asm/SND_command.s639
-rw-r--r--arm7/asm/SND_exChannel.s645
-rw-r--r--arm7/asm/SND_lfo.s77
-rw-r--r--arm7/asm/SND_lockChannel.s167
-rw-r--r--arm7/asm/SND_main.s197
-rw-r--r--arm7/asm/SND_seq.s549
-rw-r--r--arm7/asm/SND_unk_037FD440.s1621
-rw-r--r--arm7/asm/SND_util.s184
-rw-r--r--arm7/asm/SND_wave.s43
-rw-r--r--arm7/asm/SND_work.s84
-rw-r--r--arm7/asm/dtcm.s5800
-rw-r--r--arm7/asm/dtcm_bss.s227
-rw-r--r--arm7/global.inc97
-rw-r--r--arm7/lib/include/OS_arena.h14
-rw-r--r--arm7/lib/include/OS_init.h1
-rw-r--r--arm7/lib/include/consts.h1
-rw-r--r--arm7/lib/include/mmap.h26
-rw-r--r--arm7/lib/src/OS_arena.c110
-rw-r--r--arm7/lib/src/OS_init.c1
-rw-r--r--arm7/lib/src/OS_system.c2
-rw-r--r--arm9/Makefile2
-rw-r--r--arm9/asm/OS_thread.s985
-rw-r--r--arm9/asm/arm9_itcm.s21
-rw-r--r--arm9/asm/pokemon.s555
-rw-r--r--arm9/asm/scrcmd.s28
-rw-r--r--arm9/asm/scrcmd_12.s58
-rw-r--r--arm9/asm/scrcmd_18.s110
-rw-r--r--arm9/asm/scrcmd_4.s2
-rw-r--r--arm9/asm/scrcmd_5.s4
-rw-r--r--arm9/asm/unk_02023C40.s22
-rw-r--r--arm9/asm/unk_02025658.s6
-rw-r--r--arm9/asm/unk_02026CD0.s18
-rw-r--r--arm9/asm/unk_0202B034.s24
-rw-r--r--arm9/asm/unk_0202BE98.s6
-rw-r--r--arm9/asm/unk_0202C144.s4
-rw-r--r--arm9/asm/unk_02035068.s2
-rw-r--r--arm9/asm/unk_020377F0.s8
-rw-r--r--arm9/asm/unk_0204653C.s12
-rw-r--r--arm9/asm/unk_02047500.s2
-rw-r--r--arm9/asm/unk_020476CC.s8
-rw-r--r--arm9/asm/unk_0204A01C.s34
-rw-r--r--arm9/asm/unk_0204B9EC.s6
-rw-r--r--arm9/asm/unk_02050E48.s2
-rw-r--r--arm9/asm/unk_02054C14.s4
-rw-r--r--arm9/asm/unk_020603B0.s6
-rw-r--r--arm9/asm/unk_02060CCC.s18
-rw-r--r--arm9/asm/unk_0206ABC4.s4
-rw-r--r--arm9/asm/unk_0206B8A4.s6
-rw-r--r--arm9/asm/unk_0206BB5C.s18
-rw-r--r--arm9/asm/unk_0206C700.s42
-rw-r--r--arm9/asm/unk_0206F3FC.s70
-rw-r--r--arm9/asm/unk_02072548.s12
-rw-r--r--arm9/asm/unk_02073710.s2
-rw-r--r--arm9/asm/unk_02073DA8.s6
-rw-r--r--arm9/asm/unk_0207550C.s70
-rw-r--r--arm9/asm/unk_02079C70.s90
-rw-r--r--arm9/asm/unk_0207C328.s2
-rw-r--r--arm9/asm/unk_0207EF6C.s2
-rw-r--r--arm9/asm/unk_0207FD00.s90
-rw-r--r--arm9/asm/unk_02080C38.s18
-rw-r--r--arm9/asm/unk_020828BC.s18
-rw-r--r--arm9/asm/unk_020842DC.s110
-rw-r--r--arm9/asm/unk_020854E0.s14
-rw-r--r--arm9/asm/unk_020859C0.s6
-rw-r--r--arm9/asm/unk_02086084.s14
-rw-r--r--arm9/asm/unk_02086414.s6
-rw-r--r--arm9/asm/unk_02086FA8.s4
-rw-r--r--arm9/asm/unk_02087D00.s8
-rw-r--r--arm9/asm/unk_02088DD8.s8
-rw-r--r--arm9/global.inc24
-rw-r--r--arm9/lib/.gitignore3
-rw-r--r--arm9/lib/include/MI_memory.h14
-rw-r--r--arm9/lib/include/OS_alarm.h5
-rw-r--r--arm9/lib/include/OS_arena.h27
-rw-r--r--arm9/lib/include/OS_context.h4
-rw-r--r--arm9/lib/include/OS_mutex.h2
-rw-r--r--arm9/lib/include/OS_reset.h5
-rw-r--r--arm9/lib/include/OS_thread.h59
-rw-r--r--arm9/lib/include/OS_tick.h6
-rw-r--r--arm9/lib/include/consts.h9
-rw-r--r--arm9/lib/include/mmap.h13
-rw-r--r--arm9/lib/src/OS_init.c1
-rw-r--r--arm9/lib/src/OS_reset.c45
-rw-r--r--arm9/lib/src/OS_thread.c720
-rw-r--r--arm9/modules/05/asm/module_05.s210
-rw-r--r--arm9/modules/06/asm/module_06.s184
-rw-r--r--arm9/modules/07/asm/module_07.s22
-rw-r--r--arm9/modules/08/asm/module_08.s6
-rw-r--r--arm9/modules/09/asm/module_09.s66
-rw-r--r--arm9/modules/11/asm/module_11.s560
-rw-r--r--arm9/modules/12/asm/module_12.s84
-rw-r--r--arm9/modules/14/asm/module_14.s48
-rw-r--r--arm9/modules/16/asm/module_16.s172
-rw-r--r--arm9/modules/17/asm/module_17.s2
-rw-r--r--arm9/modules/27/asm/module_27.s14
-rw-r--r--arm9/modules/28/asm/module_28.s10
-rw-r--r--arm9/modules/35/asm/module_35.s2
-rw-r--r--arm9/modules/39/asm/module_39.s6
-rw-r--r--arm9/modules/56/asm/module_56.s8
-rw-r--r--arm9/modules/62/asm/module_62.s28
-rw-r--r--arm9/modules/65/asm/module_65.s6
-rw-r--r--arm9/modules/69/asm/module_69.s24
-rw-r--r--arm9/modules/70/asm/module_70.s2
-rw-r--r--arm9/modules/71/asm/module_71.s34
-rw-r--r--arm9/modules/76/asm/module_76.s10
-rw-r--r--arm9/modules/80/asm/module_80.s38
-rw-r--r--arm9/modules/81/asm/module_81.s2
-rw-r--r--arm9/modules/83/asm/module_83.s16
-rw-r--r--files/.gitattributes2
-rw-r--r--files/FILE_339200_area00light.txt300
-rw-r--r--files/FILE_339C00_area01light.txt302
-rw-r--r--files/FILE_33A400_area02light.txt302
-rw-r--r--files/FILE_3B3600_dt_test_celact.txt4
-rw-r--r--files/FILE_3B3800_dt_test_res_cell.txt6
-rw-r--r--files/FILE_3B3A00_dt_test_res_cellanm.txt6
-rw-r--r--files/FILE_3B3C00_dt_test_res_char.txt6
-rw-r--r--files/FILE_3B3E00_dt_test_res_multi.txt4
-rw-r--r--files/FILE_3B4000_dt_test_res_multianm.txt4
-rw-r--r--files/FILE_3B4200_dt_test_res_pltt.txt6
-rw-r--r--files/FILE_441C00_tmapn_celact.txt16
-rw-r--r--files/FILE_442400_tmapn_res_canm.txt18
-rw-r--r--files/FILE_442600_tmapn_res_cell.txt20
-rw-r--r--files/FILE_442800_tmapn_res_chr.txt18
-rw-r--r--files/FILE_442A00_tmapn_res_pal.txt12
-rw-r--r--files/data/area00light.txt300
-rw-r--r--files/data/area01light.txt302
-rw-r--r--files/data/area02light.txt302
-rw-r--r--files/data/dt_test_celact.txt4
-rw-r--r--files/data/dt_test_res_cell.txt6
-rw-r--r--files/data/dt_test_res_cellanm.txt6
-rw-r--r--files/data/dt_test_res_char.txt6
-rw-r--r--files/data/dt_test_res_multi.txt4
-rw-r--r--files/data/dt_test_res_multianm.txt4
-rw-r--r--files/data/dt_test_res_pltt.txt6
-rw-r--r--files/data/tmapn_celact.txt16
-rw-r--r--files/data/tmapn_res_canm.txt18
-rw-r--r--files/data/tmapn_res_cell.txt20
-rw-r--r--files/data/tmapn_res_chr.txt18
-rw-r--r--files/data/tmapn_res_pal.txt12
-rw-r--r--files/poketool/personal/growtbl/grow2bin.c106
-rw-r--r--files/poketool/personal/growtbl/narc_0000.txt202
-rw-r--r--files/poketool/personal/growtbl/narc_0001.txt202
-rw-r--r--files/poketool/personal/growtbl/narc_0002.txt202
-rw-r--r--files/poketool/personal/growtbl/narc_0003.txt202
-rw-r--r--files/poketool/personal/growtbl/narc_0004.txt202
-rw-r--r--files/poketool/personal/growtbl/narc_0005.txt202
-rw-r--r--files/poketool/personal/growtbl/narc_0006.txt202
-rw-r--r--files/poketool/personal/growtbl/narc_0007.txt202
-rw-r--r--filesystem.mk12
-rw-r--r--include/constants/species.h520
-rw-r--r--include/nitro/OS_arena_shared.h38
-rw-r--r--include/nitro/consts_shared.h3
-rw-r--r--include/nitro/mmap_shared.h24
-rw-r--r--include/pokemon.h84
-rw-r--r--pokediamond.rsf2
-rw-r--r--tools/jsonproc/Makefile2
-rw-r--r--tools/knarc/.gitignore1
-rw-r--r--tools/knarc/Makefile15
-rw-r--r--tools/knarc/Narc.cpp543
-rw-r--r--tools/knarc/Narc.h93
-rw-r--r--tools/knarc/Source.cpp108
-rw-r--r--tools/narccomp/.gitignore1
-rw-r--r--tools/narccomp/Makefile1
-rw-r--r--tools/nitrogfx/gfx.c91
-rw-r--r--tools/nitrogfx/gfx.h3
-rw-r--r--tools/nitrogfx/jasc_pal.c7
-rw-r--r--tools/nitrogfx/main.c53
-rw-r--r--tools/nitrogfx/util.c24
-rw-r--r--tools/nitrogfx/util.h2
-rw-r--r--tools/scaninc/Makefile2
197 files changed, 12423 insertions, 10699 deletions
diff --git a/Makefile b/Makefile
index b7b31dbb..77352f41 100644
--- a/Makefile
+++ b/Makefile
@@ -1,12 +1,12 @@
# Makefile to build Pokemon Diamond image
include config.mk
-include filesystem.mk
HOSTCC = $(CC)
HOSTCXX = $(CXX)
HOSTCFLAGS = $(CFLAGS)
HOSTCXXFLAGS = $(CXXFLAGS)
+HOST_VARS := CC=$(HOSTCC) CXX=$(HOSTCXX) CFLAGS='$(HOSTCFLAGS)' CXXFLAGS='$(HOSTCXXFLAGS)'
.PHONY: clean tidy all default patch_mwasmarm
@@ -31,9 +31,9 @@ endif
ifeq ($(OS),Windows_NT)
EXE := .exe
-WINE :=
+WINE :=
else
-EXE :=
+EXE :=
WINE := wine
endif
@@ -175,6 +175,7 @@ MWCCARM = tools/mwccarm/$(MWCCVERSION)/mwccarm.exe
# have to use mwldarm for now.
# TODO: Is there a hack workaround to let us go back to GNU LD? Ideally, the
# only dependency should be MWCCARM.
+KNARC = tools/knarc/knarc$(EXE)
MWLDARM = tools/mwccarm/$(MWCCVERSION)/mwldarm.exe
MWASMARM = tools/mwccarm/$(MWCCVERSION)/mwasmarm.exe
NARCCOMP = tools/narccomp/narccomp$(EXE)
@@ -202,6 +203,7 @@ JSONPROC = $(TOOLS_DIR)/jsonproc/jsonproc
GFX = $(TOOLS_DIR)/nitrogfx/nitrogfx
MWASMARM_PATCHER = $(TOOLS_DIR)/mwasmarm_patcher/mwasmarm_patcher$(EXE) -q
MAKEBANNER = $(WINE) $(TOOLS_DIR)/bin/makebanner.exe
+MAKEROM = $(WIND) $(TOOLS_DIR)/bin/makerom.exe
TOOLDIRS = $(filter-out $(TOOLS_DIR)/mwccarm $(TOOLS_DIR)/bin,$(wildcard $(TOOLS_DIR)/*))
TOOLBASE = $(TOOLDIRS:$(TOOLS_DIR)/%=%)
@@ -218,7 +220,7 @@ infoshell = $(foreach line, $(shell $1 | sed "s/ /__SPACE__/g"), $(info $(subst
# Build tools when building the rom
# Disable dependency scanning for clean/tidy/tools
ifeq (,$(filter-out all,$(MAKECMDGOALS)))
-$(call infoshell, $(MAKE) tools patch_mwasmarm)
+$(call infoshell, $(HOST_VARS) $(MAKE) tools patch_mwasmarm)
else
NODEP := 1
endif
@@ -255,7 +257,7 @@ tidy:
tools: $(TOOLDIRS)
$(TOOLDIRS):
- @$(MAKE) -C $@
+ @$(HOST_VARS) $(MAKE) -C $@
$(MWASMARM): patch_mwasmarm
@:
@@ -298,9 +300,16 @@ $(ELF): $(BUILD_DIR)/$(LD_SCRIPT) $(O_FILES) $(BINFILES) $(BUILD_DIR)/pokediamon
$(ROM): $(ELF)
$(OBJCOPY) -O binary --gap-fill=0xFF --pad-to=0x04000000 $< $@
+# 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): pokediamond.rsf $(BUILD_DIR)/pokediamond_bnr.bin $(SBINFILES) $(HOSTFS_FILES)
+# $(MAKEROM) -DNITROFS_FILES="$(NITROFS_FILES)" $< $@
+
# Make sure build directory exists before compiling anything
DUMMY != mkdir -p $(ALL_DIRS)
+include filesystem.mk
+
%.4bpp: %.png
$(GFX) $< $@
@@ -316,22 +325,6 @@ DUMMY != mkdir -p $(ALL_DIRS)
%.png: ;
%.pal: ;
-##################### Filesystem #####################
-
-%.narc: members = $(wildcard $(@D)/$*/*.bin)
-%.narc: $$(members)
- $(NARCCOMP) -o $@ -p 255 $^
-
-%.arc: members = $(wildcard $(@D)/$*/*.bin)
-%.arc: $$(members)
- $(NARCCOMP) -o $@ -p 255 $^
-
-files/poketool/personal/pms.narc: ;
-
-files/poketool/personal/growtbl.narc: $(wildcard files/poketool/personal/growtbl/*.txt)
- $(MAKE) -C $(<D)
- $(NARCCOMP) -o $@ -p 255 $(^:%.txt=%.bin)
-
######################## Misc #######################
$(BUILD_DIR)/pokediamond_bnr.bin: pokediamond.bsf graphics/icon.4bpp graphics/icon.gbapal
diff --git a/README.md b/README.md
index bc6fe58b..57d05e9a 100644
--- a/README.md
+++ b/README.md
@@ -22,6 +22,7 @@ Other disassembly and/or decompilation projects:
* [**Pokémon Ruby and Sapphire**](https://github.com/pret/pokeruby)
* [**Pokémon Pinball: Ruby & Sapphire**](https://github.com/pret/pokepinballrs)
* [**Pokémon FireRed and LeafGreen**](https://github.com/pret/pokefirered)
+* [**Pokémon Emerald**](https://github.com/pret/pokeemerald)
* [**Pokémon Mystery Dungeon: Red Rescue Team**](https://github.com/pret/pmd-red)
Gen 4 decompilation projects:
diff --git a/arm7/Makefile b/arm7/Makefile
index 063e287a..1ade0ed4 100644
--- a/arm7/Makefile
+++ b/arm7/Makefile
@@ -89,7 +89,7 @@ OBJCOPY := $(CROSS)objcopy
# ./tools/mwccarm/2.0/base/mwasmarm.exe -proc arm5te asm/arm7_thumb.s -o arm7.o
ASFLAGS = -proc arm4t -i ..
-CFLAGS = -O4,p -proc arm7tdmi -fp soft -lang c99 -Cpp_exceptions off -i ../include -ir ../include-mw -ir lib/include -interworking -DFS_IMPLEMENT -enum int -W all
+CFLAGS = -O4,s -proc arm7tdmi -fp soft -lang c99 -Cpp_exceptions off -i ../include -ir ../include-mw -ir lib/include -interworking -DFS_IMPLEMENT -enum int -W all
LDFLAGS = -map -nodead -w off -proc v4t -interworking -map -symtab -m _start
####################### Other Tools #########################
diff --git a/arm7/arm7.lsf b/arm7/arm7.lsf
index 99082905..3b988f59 100644
--- a/arm7/arm7.lsf
+++ b/arm7/arm7.lsf
@@ -2,7 +2,7 @@
Static arm7
{
Address 0x02380000
- StackSize 1024 512
+ StackSize 1024 1024
}
Autoload MAIN
@@ -33,6 +33,28 @@ Autoload WRAM
Object OS_system.o
Object OS_reset.o
Object OS_terminate_proc.o
+ Object MI_dma.o
+ Object MI_memory.o
+ Object MI_swap.o
+ Object PXI_init.o
+ Object PXI_fifo.o
+ Object EXI_genPort.o
+ Object PAD_xyButton.o
+ Object SND.o
+ Object SND_util.o
+ Object SND_main.o
+ Object SND_capture.o
+ Object SND_channel.o
+ Object SND_lfo.o
+ Object SND_wave.o
+ Object SND_lockChannel.o
+ Object SND_exChannel.o
+ Object SND_unk_037FD440.o
+ Object SND_seq.o
+ Object SND_bank.o
+ Object SND_work.o
+ Object SND_alarm.o
+ Object SND_command.o
Object dtcm.o
Object libsyscall.o
Object dtcm2.o
diff --git a/arm7/asm/EXI_genPort.s b/arm7/asm/EXI_genPort.s
new file mode 100644
index 00000000..ff2a46f7
--- /dev/null
+++ b/arm7/asm/EXI_genPort.s
@@ -0,0 +1,44 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+
+ .text
+
+ arm_func_start EXIi_SelectRcnt
+EXIi_SelectRcnt: ; 0x037FB8F0
+ mov r1, r0
+ mov r0, #49152 ; 0xc000
+ mov r1, r1, lsl #16
+ mov r1, r1, lsr #16
+ ldr ip, _037FB908 ; =EXIi_SetBitRcnt0L
+ bx ip
+_037FB908: .word EXIi_SetBitRcnt0L
+
+ arm_func_start EXIi_SetBitRcnt0L
+EXIi_SetBitRcnt0L: ; 0x037FB90C
+ mvn r3, r0
+ ldr r2, _037FB928 ; =0x04000134
+ ldrh r0, [r2]
+ and r0, r3, r0
+ orr r0, r1, r0
+ strh r0, [r2]
+ bx lr
+_037FB928: .word 0x04000134
+
+ arm_func_start FUN_037FB92C
+FUN_037FB92C: ; 0x037FB92C
+ stmdb sp!, {r4, lr}
+ mov r4, #0
+ mov r0, #32768 ; 0x8000
+ bl EXIi_SelectRcnt
+ ldr r0, _037FB964 ; =0x04000136
+ ldrh r1, [r0]
+ ands r0, r1, #128 ; 0x80
+ movne r4, #32768 ; 0x8000
+ and r0, r1, #11
+ orr r1, r4, r0, lsl #10
+ ldr r0, _037FB968 ; =0x027FFFA8
+ strh r1, [r0]
+ ldmia sp!, {r4, lr}
+ bx lr
+_037FB964: .word 0x04000136
+_037FB968: .word 0x027FFFA8
diff --git a/arm7/asm/MI_dma.s b/arm7/asm/MI_dma.s
new file mode 100644
index 00000000..8cbc8cb5
--- /dev/null
+++ b/arm7/asm/MI_dma.s
@@ -0,0 +1,74 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+
+ .text
+
+ arm_func_start MI_StopDma
+MI_StopDma: ; 0x037FB20C
+ stmdb sp!, {r4, lr}
+ mov r4, r0
+ bl OS_DisableInterrupts
+ mov r1, #6
+ mul r1, r4, r1
+ add r1, r1, #5
+ mov r1, r1, lsl #1
+ add r1, r1, #67108864 ; 0x4000000
+ ldrh r2, [r1, #176] ; 0xb0
+ bic r2, r2, #12800 ; 0x3200
+ strh r2, [r1, #176] ; 0xb0
+ ldrh r2, [r1, #176] ; 0xb0
+ bic r2, r2, #32768 ; 0x8000
+ strh r2, [r1, #176] ; 0xb0
+ ldrh r2, [r1, #176] ; 0xb0
+ ldrh r1, [r1, #176] ; 0xb0
+ cmp r4, #0
+ bne _037FB27C
+ mov r1, #12
+ mul r3, r4, r1
+ ldr r1, _037FB288 ; =0x040000B0
+ add r4, r3, r1
+ mov r2, #0
+ add r1, r3, #67108864 ; 0x4000000
+ str r2, [r1, #176] ; 0xb0
+ str r2, [r4, #4]
+ ldr r1, _037FB28C ; =0x81400001
+ str r1, [r4, #8]
+_037FB27C:
+ bl OS_RestoreInterrupts
+ ldmia sp!, {r4, lr}
+ bx lr
+_037FB288: .word 0x040000B0
+_037FB28C: .word 0x81400001
+
+ arm_func_start MI_WaitDma
+MI_WaitDma: ; 0x037FB290
+ stmdb sp!, {r4, lr}
+ mov r4, r0
+ bl OS_DisableInterrupts
+ mov r1, #3
+ mul r1, r4, r1
+ add r2, r1, #2
+ ldr r1, _037FB2F8 ; =0x040000B0
+ add r2, r1, r2, lsl #2
+_037FB2B0:
+ ldr r1, [r2]
+ ands r1, r1, #-2147483648 ; 0x80000000
+ bne _037FB2B0
+ cmp r4, #0
+ bne _037FB2EC
+ mov r1, #12
+ mul r3, r4, r1
+ ldr r1, _037FB2F8 ; =0x040000B0
+ add r4, r3, r1
+ mov r2, #0
+ add r1, r3, #67108864 ; 0x4000000
+ str r2, [r1, #176] ; 0xb0
+ str r2, [r4, #4]
+ ldr r1, _037FB2FC ; =0x81400001
+ str r1, [r4, #8]
+_037FB2EC:
+ bl OS_RestoreInterrupts
+ ldmia sp!, {r4, lr}
+ bx lr
+_037FB2F8: .word 0x040000B0
+_037FB2FC: .word 0x81400001
diff --git a/arm7/asm/MI_memory.s b/arm7/asm/MI_memory.s
new file mode 100644
index 00000000..7f3fdef2
--- /dev/null
+++ b/arm7/asm/MI_memory.s
@@ -0,0 +1,221 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+
+ .text
+
+ arm_func_start MIi_CpuClear16
+MIi_CpuClear16: ; 0x037FB300
+ mov r3, #0
+_037FB304:
+ cmp r3, r2
+ strlth r0, [r1, r3]
+ addlt r3, r3, #2
+ blt _037FB304
+ bx lr
+
+ arm_func_start MIi_CpuCopy16
+MIi_CpuCopy16: ; 0x037FB318
+ mov ip, #0
+_037FB31C:
+ cmp ip, r2
+ ldrlth r3, [r0, ip]
+ strlth r3, [r1, ip]
+ addlt ip, ip, #2
+ blt _037FB31C
+ bx lr
+
+ arm_func_start MIi_CpuClear32
+MIi_CpuClear32: ; 0x037FB334
+ add ip, r1, r2
+_037FB338:
+ cmp r1, ip
+ stmltia r1!, {r0}
+ blt _037FB338
+ bx lr
+
+ arm_func_start MIi_CpuCopy32
+MIi_CpuCopy32: ; 0x037FB348
+ add ip, r1, r2
+_037FB34C:
+ cmp r1, ip
+ ldmltia r0!, {r2}
+ stmltia r1!, {r2}
+ blt _037FB34C
+ bx lr
+
+ arm_func_start MIi_CpuClearFast
+MIi_CpuClearFast: ; 0x037FB360
+ stmdb sp!, {r4, r5, r6, r7, r8, r9}
+ add r9, r1, r2
+ mov ip, r2, lsr #5
+ add ip, r1, ip, lsl #5
+ mov r2, r0
+ mov r3, r2
+ mov r4, r2
+ mov r5, r2
+ mov r6, r2
+ mov r7, r2
+ mov r8, r2
+_037FB38C:
+ cmp r1, ip
+ stmltia r1!, {r0, r2, r3, r4, r5, r6, r7, r8}
+ blt _037FB38C
+_037FB398:
+ cmp r1, r9
+ stmltia r1!, {r0}
+ blt _037FB398
+ ldmia sp!, {r4, r5, r6, r7, r8, r9}
+ bx lr
+
+ arm_func_start MIi_CpuCopyFast
+MIi_CpuCopyFast: ; 0x037FB3AC
+ stmdb sp!, {r4, r5, r6, r7, r8, r9, sl}
+ add sl, r1, r2
+ mov ip, r2, lsr #5
+ add ip, r1, ip, lsl #5
+_037FB3BC:
+ cmp r1, ip
+ ldmltia r0!, {r2, r3, r4, r5, r6, r7, r8, r9}
+ stmltia r1!, {r2, r3, r4, r5, r6, r7, r8, r9}
+ blt _037FB3BC
+_037FB3CC:
+ cmp r1, sl
+ ldmltia r0!, {r2}
+ stmltia r1!, {r2}
+ blt _037FB3CC
+ ldmia sp!, {r4, r5, r6, r7, r8, r9, sl}
+ bx lr
+
+ arm_func_start MI_CpuFill8
+MI_CpuFill8: ; 0x037FB3E4
+ cmp r2, #0
+ bxeq lr
+ tst r0, #1
+ beq _037FB410
+ ldrh ip, [r0, #-1]
+ and ip, ip, #255 ; 0xff
+ orr r3, ip, r1, lsl #8
+ strh r3, [r0, #-1]
+ add r0, r0, #1
+ subs r2, r2, #1
+ bxeq lr
+_037FB410:
+ cmp r2, #2
+ bcc _037FB458
+ orr r1, r1, r1, lsl #8
+ tst r0, #2
+ beq _037FB430
+ strh r1, [r0], #2
+ subs r2, r2, #2
+ bxeq lr
+_037FB430:
+ orr r1, r1, r1, lsl #16
+ bics r3, r2, #3
+ beq _037FB450
+ sub r2, r2, r3
+ add ip, r3, r0
+_037FB444:
+ str r1, [r0], #4
+ cmp r0, ip
+ bcc _037FB444
+_037FB450:
+ tst r2, #2
+ strneh r1, [r0], #2
+_037FB458:
+ tst r2, #1
+ bxeq lr
+ ldrh r3, [r0]
+ and r3, r3, #65280 ; 0xff00
+ and r1, r1, #255 ; 0xff
+ orr r1, r1, r3
+ strh r1, [r0]
+ bx lr
+
+ arm_func_start MI_CpuCopy8
+MI_CpuCopy8: ; 0x037FB478
+ cmp r2, #0
+ bxeq lr
+ tst r1, #1
+ beq _037FB4B8
+ ldrh ip, [r1, #-1]
+ and ip, ip, #255 ; 0xff
+ tst r0, #1
+ ldrneh r3, [r0, #-1]
+ movne r3, r3, lsr #8
+ ldreqh r3, [r0]
+ orr r3, ip, r3, lsl #8
+ strh r3, [r1, #-1]
+ add r0, r0, #1
+ add r1, r1, #1
+ subs r2, r2, #1
+ bxeq lr
+_037FB4B8:
+ eor ip, r1, r0
+ tst ip, #1
+ beq _037FB50C
+ bic r0, r0, #1
+ ldrh ip, [r0], #2
+ mov r3, ip, lsr #8
+ subs r2, r2, #2
+ bcc _037FB4F0
+_037FB4D8:
+ ldrh ip, [r0], #2
+ orr ip, r3, ip, lsl #8
+ strh ip, [r1], #2
+ mov r3, ip, lsr #16
+ subs r2, r2, #2
+ bcs _037FB4D8
+_037FB4F0:
+ tst r2, #1
+ bxeq lr
+ ldrh ip, [r1]
+ and ip, ip, #65280 ; 0xff00
+ orr ip, ip, r3
+ strh ip, [r1]
+ bx lr
+_037FB50C:
+ tst ip, #2
+ beq _037FB538
+ bics r3, r2, #1
+ beq _037FB584
+ sub r2, r2, r3
+ add ip, r3, r1
+_037FB524:
+ ldrh r3, [r0], #2
+ strh r3, [r1], #2
+ cmp r1, ip
+ bcc _037FB524
+ b _037FB584
+_037FB538:
+ cmp r2, #2
+ bcc _037FB584
+ tst r1, #2
+ beq _037FB558
+ ldrh r3, [r0], #2
+ strh r3, [r1], #2
+ subs r2, r2, #2
+ bxeq lr
+_037FB558:
+ bics r3, r2, #3
+ beq _037FB578
+ sub r2, r2, r3
+ add ip, r3, r1
+_037FB568:
+ ldr r3, [r0], #4
+ str r3, [r1], #4
+ cmp r1, ip
+ bcc _037FB568
+_037FB578:
+ tst r2, #2
+ ldrneh r3, [r0], #2
+ strneh r3, [r1], #2
+_037FB584:
+ tst r2, #1
+ bxeq lr
+ ldrh r2, [r1]
+ ldrh r0, [r0]
+ and r2, r2, #65280 ; 0xff00
+ and r0, r0, #255 ; 0xff
+ orr r0, r2, r0
+ strh r0, [r1]
+ bx lr
diff --git a/arm7/asm/MI_swap.s b/arm7/asm/MI_swap.s
new file mode 100644
index 00000000..a5f08796
--- /dev/null
+++ b/arm7/asm/MI_swap.s
@@ -0,0 +1,9 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+
+ .text
+
+ arm_func_start MI_SwapWord
+MI_SwapWord: ; 0x037FB5A8
+ swp r0, r0, [r1]
+ bx lr
diff --git a/arm7/asm/OS_alarm.s b/arm7/asm/OS_alarm.s
index 762c5372..fe55ccb2 100644
--- a/arm7/asm/OS_alarm.s
+++ b/arm7/asm/OS_alarm.s
@@ -1,7 +1,17 @@
.include "asm/macros.inc"
.include "global.inc"
- .text
+ .section .bss
+
+ .global _03807930
+_03807930: ;0x03807930
+ .space 0x03807934 - 0x03807930
+
+ .global _03807934
+_03807934: ;0x03807934
+ .space 0x0380793C - 0x03807934
+
+ .section .text
arm_func_start OSi_AlarmHandler
OSi_AlarmHandler: ; 0x037FA540
diff --git a/arm7/asm/OS_alloc.s b/arm7/asm/OS_alloc.s
index 43372371..1c174548 100644
--- a/arm7/asm/OS_alloc.s
+++ b/arm7/asm/OS_alloc.s
@@ -1,7 +1,13 @@
.include "asm/macros.inc"
.include "global.inc"
- .text
+ .section .bss
+
+ .global OSiHeapInfo
+OSiHeapInfo: ;0x038078F8
+ .space 0x0380791C - 0x038078F8
+
+ .section .text
arm_func_start OS_CheckHeap
OS_CheckHeap: ; 0x037F9D88
diff --git a/arm7/asm/OS_arena.s b/arm7/asm/OS_arena.s
deleted file mode 100644
index 3b444cdd..00000000
--- a/arm7/asm/OS_arena.s
+++ /dev/null
@@ -1,149 +0,0 @@
- .include "asm/macros.inc"
- .include "global.inc"
-
- .text
-
- arm_func_start OS_SetArenaLo
-OS_SetArenaLo: ; 0x037F9BBC
- mov r0, r0, lsl #2
- add r0, r0, #40894464 ; 0x2700000
- add r0, r0, #1044480 ; 0xff000
- str r1, [r0, #3488] ; 0xda0
- bx lr
-
- arm_func_start OS_SetArenaHi
-OS_SetArenaHi: ; 0x037F9BD0
- mov r0, r0, lsl #2
- add r0, r0, #40894464 ; 0x2700000
- add r0, r0, #1044480 ; 0xff000
- str r1, [r0, #3524] ; 0xdc4
- bx lr
-
- arm_func_start OS_GetInitArenaLo
-OS_GetInitArenaLo: ; 0x037F9BE4
- cmp r0, #1
- beq _037F9C00
- cmp r0, #7
- beq _037F9C08
- cmp r0, #8
- beq _037F9C18
- b _037F9C2C
-_037F9C00:
- ldr r0, _037F9C34 ; =0x027FAFCC
- bx lr
-_037F9C08:
- ldr r0, _037F9C38 ; =0x0380B92C
- cmp r0, #58720256 ; 0x03800000
- movhi r0, #58720256 ; 0x03800000
- bx lr
-_037F9C18:
- mov r0, #58720256 ; 0x03800000
- ldr r1, _037F9C38 ; =0x0380B92C
- cmp r1, #58720256 ; 0x03800000
- movhi r0, r1
- bx lr
-_037F9C2C:
- mov r0, #0
- bx lr
-_037F9C34: .word 0x027FAFCC
-_037F9C38: .word 0x0380B92C
-
- arm_func_start OS_GetInitArenaHi
-OS_GetInitArenaHi: ; 0x037F9C3C
- cmp r0, #1
- beq _037F9C58
- cmp r0, #7
- beq _037F9C60
- cmp r0, #8
- beq _037F9C68
- b _037F9CA0
-_037F9C58:
- ldr r0, _037F9CA8 ; =0x027FF000
- bx lr
-_037F9C60:
- mov r0, #58720256 ; 0x03800000
- bx lr
-_037F9C68:
- ldr r1, _037F9CAC ; =0x00000400
- ldr r0, _037F9CB0 ; =0x0380FF80
- sub r2, r0, r1
- mov r0, #58720256 ; 0x03800000
- ldr r1, _037F9CB4 ; =0x0380B92C
- cmp r1, #58720256 ; 0x03800000
- movhi r0, r1
- ldr r1, _037F9CB8 ; =0x00000400
- cmp r1, #0
- bxeq lr
- cmp r1, #0
- sublt r0, r0, r1
- subge r0, r2, r1
- bx lr
-_037F9CA0:
- mov r0, #0
- bx lr
-_037F9CA8: .word 0x027FF000
-_037F9CAC: .word 0x00000400
-_037F9CB0: .word 0x0380FF80
-_037F9CB4: .word 0x0380B92C
-_037F9CB8: .word 0x00000400
-
- arm_func_start OS_GetArenaLo
-OS_GetArenaLo: ; 0x037F9CBC
- mov r0, r0, lsl #2
- add r0, r0, #40894464 ; 0x2700000
- add r0, r0, #1044480 ; 0xff000
- ldr r0, [r0, #3488] ; 0xda0
- bx lr
-
- arm_func_start OS_GetArenaHi
-OS_GetArenaHi: ; 0x037F9CD0
- mov r0, r0, lsl #2
- add r0, r0, #40894464 ; 0x2700000
- add r0, r0, #1044480 ; 0xff000
- ldr r0, [r0, #3524] ; 0xdc4
- bx lr
-
- arm_func_start OS_InitArena
-OS_InitArena: ; 0x037F9CE4
- stmfd sp!, {lr}
- sub sp, sp, #4
- ldr r1, _037F9D84 ; =_038078F4
- ldr r0, [r1]
- cmp r0, #0
- bne _037F9D78
- mov r0, #1
- str r0, [r1]
- bl OS_GetInitArenaHi
- mov r1, r0
- mov r0, #1
- bl OS_SetArenaHi
- mov r0, #1
- bl OS_GetInitArenaLo
- mov r1, r0
- mov r0, #1
- bl OS_SetArenaLo
- mov r0, #7
- bl OS_GetInitArenaHi
- mov r1, r0
- mov r0, #7
- bl OS_SetArenaHi
- mov r0, #7
- bl OS_GetInitArenaLo
- mov r1, r0
- mov r0, #7
- bl OS_SetArenaLo
- mov r0, #8
- bl OS_GetInitArenaHi
- mov r1, r0
- mov r0, #8
- bl OS_SetArenaHi
- mov r0, #8
- bl OS_GetInitArenaLo
- mov r1, r0
- mov r0, #8
- bl OS_SetArenaLo
-_037F9D78:
- add sp, sp, #4
- ldmia sp!, {lr}
- bx lr
-_037F9D84: .word _038078F4
diff --git a/arm7/asm/OS_interrupt.s b/arm7/asm/OS_interrupt.s
index 48fc9d1b..0a999637 100644
--- a/arm7/asm/OS_interrupt.s
+++ b/arm7/asm/OS_interrupt.s
@@ -1,7 +1,25 @@
.include "asm/macros.inc"
.include "global.inc"
- .text
+ .section .bss
+
+ .global _03807744
+_03807744: ;0x03807744
+ .space 0x03807748 - 0x03807744
+
+ .global _03807748
+_03807748: ;0x03807748
+ .space 0x0380774C - 0x03807748
+
+ .global _0380774C
+_0380774C: ;0x0380774C
+ .space 0x03807774 - 0x0380774C
+
+ .global _03807774
+_03807774: ;0x03807774
+ .space 0x03807780 - 0x03807774
+
+ .section .text
arm_func_start OS_ResetRequestIrqMask
OS_ResetRequestIrqMask: ; 0x037F8824
diff --git a/arm7/asm/OS_irqTable.s b/arm7/asm/OS_irqTable.s
index 56eea302..a61e448f 100644
--- a/arm7/asm/OS_irqTable.s
+++ b/arm7/asm/OS_irqTable.s
@@ -1,7 +1,25 @@
.include "asm/macros.inc"
.include "global.inc"
- .text
+ .section .bss
+
+ .global OSi_IrqThreadQueue
+OSi_IrqThreadQueue: ;0x0380770C
+ .space 0x03807714 - 0x0380770C
+
+ .global OSi_IrqCallbackInfo
+OSi_IrqCallbackInfo: ;0x03807714
+ .space 0x03807718 - 0x03807714
+
+ .global _03807718
+_03807718: ;0x03807718
+ .space 0x0380771C - 0x03807718
+
+ .global _0380771C
+_0380771C: ;0x0380771C
+ .space 0x03807744 - 0x0380771C
+
+ .section .text
arm_func_start OSi_IrqVBlank
OSi_IrqVBlank: ; 0x037F86B4
diff --git a/arm7/asm/OS_reset.s b/arm7/asm/OS_reset.s
index 100514c0..b2a8ffe6 100644
--- a/arm7/asm/OS_reset.s
+++ b/arm7/asm/OS_reset.s
@@ -1,7 +1,17 @@
.include "asm/macros.inc"
.include "global.inc"
- .text
+ .section .bss
+
+ .global _03807950
+_03807950: ;0x03807950
+ .space 0x03807954 - 0x03807950
+
+ .global _03807954
+_03807954: ;0x03807954
+ .space 0x03807958 - 0x03807954
+
+ .section .text
arm_func_start OS_ResetSystem
OS_ResetSystem: ; 0x037FB0E0
diff --git a/arm7/asm/OS_spinLock.s b/arm7/asm/OS_spinLock.s
index 04f4683b..bb15916e 100644
--- a/arm7/asm/OS_spinLock.s
+++ b/arm7/asm/OS_spinLock.s
@@ -1,7 +1,13 @@
.include "asm/macros.inc"
.include "global.inc"
- .text
+ .section .bss
+
+ .global _03807780
+_03807780: ;0x03807780
+ .space 0x03807784 - 0x03807780
+
+ .section .text
arm_func_start OS_UnLockCartridge
OS_UnLockCartridge: ; 0x037F8A18
diff --git a/arm7/asm/OS_thread.s b/arm7/asm/OS_thread.s
index 64aebb04..027b2130 100644
--- a/arm7/asm/OS_thread.s
+++ b/arm7/asm/OS_thread.s
@@ -1,7 +1,49 @@
.include "asm/macros.inc"
.include "global.inc"
- .text
+ .section .bss
+
+ .global OSi_StackForDestructor
+OSi_StackForDestructor: ;0x03807784
+ .space 0x03807788 - 0x03807784
+
+ .global OSi_RescheduleCount
+OSi_RescheduleCount: ;0x03807788
+ .space 0x0380778C - 0x03807788
+
+ .global _0380778C
+_0380778C: ;0x0380778C
+ .space 0x03807790 - 0x0380778C
+
+ .global OSi_SystemCallbackInSwitchThread
+OSi_SystemCallbackInSwitchThread: ;0x03807790
+ .space 0x03807794 - 0x03807790
+
+ .global OSi_CurrentThreadPtr
+OSi_CurrentThreadPtr: ;0x03807794
+ .space 0x03807798 - 0x03807794
+
+ .global OSi_IsThreadInitialized
+OSi_IsThreadInitialized: ;0x03807798
+ .space 0x0380779C - 0x03807798
+
+ .global OSi_ThreadInfo
+OSi_ThreadInfo: ;0x0380779C
+ .space 0x038077A0 - 0x0380779C
+
+ .global _038077A0
+_038077A0: ;0x038077A0
+ .space 0x038077AC - 0x038077A0
+
+ .global OSi_IdleThread
+OSi_IdleThread: ;0x038077AC
+ .space 0x03807850 - 0x038077AC
+
+ .global OSi_LauncherThread
+OSi_LauncherThread: ;0x03807850
+ .space 0x038078F4 - 0x03807850
+
+ .section .text
arm_func_start OS_SetThreadDestructor
OS_SetThreadDestructor: ; 0x037F8D48
diff --git a/arm7/asm/OS_tick.s b/arm7/asm/OS_tick.s
index 40589867..f9688b9e 100644
--- a/arm7/asm/OS_tick.s
+++ b/arm7/asm/OS_tick.s
@@ -1,7 +1,21 @@
.include "asm/macros.inc"
.include "global.inc"
- .text
+ .section .bss
+
+ .global _03807920
+_03807920: ;0x03807920
+ .space 0x03807924 - 0x03807920
+
+ .global OSi_NeedResetTimer
+OSi_NeedResetTimer: ;0x03807924
+ .space 0x03807928 - 0x03807924
+
+ .global OSi_TickCounter
+OSi_TickCounter: ;0x03807928
+ .space 0x03807930 - 0x03807928
+
+ .section .text
arm_func_start OS_GetTick
OS_GetTick: ; 0x037FA364
diff --git a/arm7/asm/OS_timer.s b/arm7/asm/OS_timer.s
index 5794046e..434be17a 100644
--- a/arm7/asm/OS_timer.s
+++ b/arm7/asm/OS_timer.s
@@ -1,7 +1,13 @@
.include "asm/macros.inc"
.include "global.inc"
- .text
+ .section .bss
+
+ .global _0380791C
+_0380791C: ;0x0380791C
+ .space 0x03807920 - 0x0380791C
+
+ .section .text
arm_func_start OSi_SetTimerReserved
OSi_SetTimerReserved: ; 0x037FA348
diff --git a/arm7/asm/OS_valarm.s b/arm7/asm/OS_valarm.s
index 07e22fc5..bfd681df 100644
--- a/arm7/asm/OS_valarm.s
+++ b/arm7/asm/OS_valarm.s
@@ -1,7 +1,25 @@
.include "asm/macros.inc"
.include "global.inc"
- .text
+ .section .bss
+
+ .global _0380793C
+_0380793C: ;0x0380793C
+ .space 0x03807940 - 0x0380793C
+
+ .global _03807940
+_03807940: ;0x03807940
+ .space 0x03807944 - 0x03807940
+
+ .global _03807944
+_03807944: ;0x03807944
+ .space 0x03807948 - 0x03807944
+
+ .global _03807948
+_03807948: ;0x03807948
+ .space 0x03807950 - 0x03807948
+
+ .section .text
arm_func_start OSi_GetVFrame
OSi_GetVFrame: ; 0x037FAA0C
diff --git a/arm7/asm/PAD_xyButton.s b/arm7/asm/PAD_xyButton.s
new file mode 100644
index 00000000..66dc0a61
--- /dev/null
+++ b/arm7/asm/PAD_xyButton.s
@@ -0,0 +1,60 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+
+ .section .bss
+
+ .global PADi_XYButtonAvailable
+PADi_XYButtonAvailable: ;0x038079DC
+ .space 0x038079E0 - 0x038079DC
+
+ .global _038079E0
+_038079E0: ;0x038079E0
+ .space 0x03807A0C - 0x038079E0
+
+ .section .text
+
+ arm_func_start PAD_InitXYButton
+PAD_InitXYButton: ; 0x037FB96C
+ stmfd sp!, {lr}
+ sub sp, sp, #12
+ bl OS_IsTickAvailable
+ cmp r0, #0
+ beq _037FB98C
+ bl OS_IsAlarmAvailable
+ cmp r0, #0
+ bne _037FB994
+_037FB98C:
+ mov r0, #0
+ b _037FB9F0
+_037FB994:
+ ldr r0, _037FB9FC ; =PADi_XYButtonAvailable
+ ldr r0, [r0]
+ cmp r0, #0
+ movne r0, #0
+ bne _037FB9F0
+ ldr r0, _037FBA00 ; =_038079E0
+ bl OS_CreateAlarm
+ bl OS_GetTick
+ mov r2, r0
+ ldr r0, _037FBA04 ; =FUN_037FB92C
+ str r0, [sp, #4]
+ mov r0, #0
+ str r0, [sp, #8]
+ ldr r3, _037FBA08 ; =0x0000082E
+ str r0, [sp]
+ ldr r0, _037FBA00 ; =_038079E0
+ adds ip, r2, r3
+ adc r2, r1, #0
+ mov r1, ip
+ bl OS_SetPeriodicAlarm
+ mov r0, #1
+ ldr r1, _037FB9FC ; =PADi_XYButtonAvailable
+ str r0, [r1]
+_037FB9F0:
+ add sp, sp, #12
+ ldmia sp!, {lr}
+ bx lr
+_037FB9FC: .word PADi_XYButtonAvailable
+_037FBA00: .word _038079E0
+_037FBA04: .word FUN_037FB92C
+_037FBA08: .word 0x0000082E
diff --git a/arm7/asm/PXI_fifo.s b/arm7/asm/PXI_fifo.s
new file mode 100644
index 00000000..a6e60692
--- /dev/null
+++ b/arm7/asm/PXI_fifo.s
@@ -0,0 +1,248 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+
+ .section .bss
+
+ .global _03807958
+_03807958: ;0x03807958
+ .space 0x0380795C - 0x03807958
+
+ .global _0380795C
+_0380795C: ;0x0380795C
+ .space 0x038079DC - 0x0380795C
+
+ .section .text
+
+ arm_func_start PXIi_HandlerRecvFifoNotEmpty
+PXIi_HandlerRecvFifoNotEmpty: ; 0x037FB5BC
+ stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, lr}
+ sub sp, sp, #8
+ ldr sl, _037FB6D0 ; =0x04000184
+ ldr r5, _037FB6D4 ; =_0380795C
+ mov r7, #68157440 ; 0x4100000
+ mov r6, #0
+ mvn r8, #3
+ mvn r9, #2
+ ldr r4, _037FB6D8 ; =0x04000188
+_037FB5E0:
+ ldrh r0, [sl]
+ ands r0, r0, #16384 ; 0x4000
+ ldrneh r0, [sl]
+ orrne r0, r0, #49152 ; 0xc000
+ strneh r0, [sl]
+ movne r1, r9
+ bne _037FB628
+ bl OS_DisableInterrupts
+ ldrh r1, [sl]
+ ands r1, r1, #256 ; 0x100
+ beq _037FB618
+ bl OS_RestoreInterrupts
+ mov r1, r8
+ b _037FB628
+_037FB618:
+ ldr r1, [r7]
+ str r1, [sp]
+ bl OS_RestoreInterrupts
+ mov r1, r6
+_037FB628:
+ cmp r1, r8
+ beq _037FB6C4
+ mvn r0, #2
+ cmp r1, r0
+ beq _037FB5E0
+ ldr r2, [sp]
+ mov r0, r2, lsl #27
+ movs r0, r0, lsr #27
+ beq _037FB5E0
+ ldr r3, [r5, r0, lsl #2]
+ cmp r3, #0
+ beq _037FB670
+ mov r1, r2, lsr #6
+ mov r2, r2, lsl #26
+ mov r2, r2, lsr #31
+ mov lr, pc
+ bx r3
+ b _037FB5E0
+_037FB670:
+ mov r0, r2, lsl #26
+ movs r0, r0, lsr #31
+ bne _037FB5E0
+ orr r0, r2, #32
+ str r0, [sp]
+ ldrh r0, [sl]
+ ands r0, r0, #16384 ; 0x4000
+ ldrneh r0, [sl]
+ orrne r0, r0, #49152 ; 0xc000
+ strneh r0, [sl]
+ bne _037FB5E0
+ bl OS_DisableInterrupts
+ ldrh r1, [sl]
+ ands r1, r1, #2
+ beq _037FB6B4
+ bl OS_RestoreInterrupts
+ b _037FB5E0
+_037FB6B4:
+ ldr r1, [sp]
+ str r1, [r4]
+ bl OS_RestoreInterrupts
+ b _037FB5E0
+_037FB6C4:
+ add sp, sp, #8
+ ldmia sp!, {r4, r5, r6, r7, r8, r9, sl, lr}
+ bx lr
+_037FB6D0: .word 0x04000184
+_037FB6D4: .word _0380795C
+_037FB6D8: .word 0x04000188
+
+ arm_func_start PXI_SendWordByFifo
+PXI_SendWordByFifo: ; 0x037FB6DC
+ stmfd sp!, {lr}
+ sub sp, sp, #4
+ ldr r3, [sp]
+ bic r3, r3, #31
+ and r0, r0, #31
+ orr r0, r3, r0
+ str r0, [sp]
+ bic r3, r0, #32
+ and r0, r2, #1
+ orr r0, r3, r0, lsl #5
+ str r0, [sp]
+ and r2, r0, #63 ; 0x3f
+ bic r0, r1, #-67108864 ; 0xfc000000
+ orr r0, r2, r0, lsl #6
+ str r0, [sp]
+ ldr r1, _037FB778 ; =0x04000184
+ ldrh r0, [r1]
+ ands r0, r0, #16384 ; 0x4000
+ ldrneh r0, [r1]
+ orrne r0, r0, #49152 ; 0xc000
+ strneh r0, [r1]
+ mvnne r0, #0
+ bne _037FB76C
+ bl OS_DisableInterrupts
+ ldr r1, _037FB778 ; =0x04000184
+ ldrh r1, [r1]
+ ands r1, r1, #2
+ beq _037FB758
+ bl OS_RestoreInterrupts
+ mvn r0, #1
+ b _037FB76C
+_037FB758:
+ ldr r2, [sp]
+ ldr r1, _037FB77C ; =0x04000188
+ str r2, [r1]
+ bl OS_RestoreInterrupts
+ mov r0, #0
+_037FB76C:
+ add sp, sp, #4
+ ldmia sp!, {lr}
+ bx lr
+_037FB778: .word 0x04000184
+_037FB77C: .word 0x04000188
+
+ arm_func_start PXI_IsCallbackReady
+PXI_IsCallbackReady: ; 0x037FB780
+ mov r3, #1
+ mov r2, r3, lsl r0
+ ldr r0, _037FB7A4 ; =0x027FFC00
+ add r0, r0, r1, lsl #2
+ ldr r0, [r0, #904] ; 0x388
+ ands r0, r2, r0
+ moveq r3, #0
+ mov r0, r3
+ bx lr
+_037FB7A4: .word 0x027FFC00
+
+ arm_func_start PXI_SetFifoRecvCallback
+PXI_SetFifoRecvCallback: ; 0x037FB7A8
+ stmdb sp!, {r4, r5, lr}
+ sub sp, sp, #4
+ mov r4, r0
+ mov r5, r1
+ bl OS_DisableInterrupts
+ ldr r1, _037FB80C ; =_0380795C
+ str r5, [r1, r4, lsl #2]
+ cmp r5, #0
+ beq _037FB7E4
+ ldr r3, _037FB810 ; =0x027FFC00
+ ldr r2, [r3, #908] ; 0x38c
+ mov r1, #1
+ orr r1, r2, r1, lsl r4
+ str r1, [r3, #908] ; 0x38c
+ b _037FB7FC
+_037FB7E4:
+ ldr r3, _037FB810 ; =0x027FFC00
+ ldr r2, [r3, #908] ; 0x38c
+ mov r1, #1
+ mvn r1, r1, lsl r4
+ and r1, r2, r1
+ str r1, [r3, #908] ; 0x38c
+_037FB7FC:
+ bl OS_RestoreInterrupts
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, lr}
+ bx lr
+_037FB80C: .word _0380795C
+_037FB810: .word 0x027FFC00
+
+ arm_func_start PXI_InitFifo
+PXI_InitFifo: ; 0x037FB814
+ stmdb sp!, {r4, r5, r6, r7, r8, lr}
+ bl OS_DisableInterrupts
+ mov r5, r0
+ ldr r0, _037FB8D4 ; =_03807958
+ ldrh r1, [r0]
+ cmp r1, #0
+ bne _037FB8C4
+ mov r1, #1
+ strh r1, [r0]
+ mov r2, #0
+ ldr r0, _037FB8D8 ; =0x027FFC00
+ str r2, [r0, #908] ; 0x38c
+ mov r1, r2
+ ldr r0, _037FB8DC ; =_0380795C
+_037FB84C:
+ str r1, [r0, r2, lsl #2]
+ add r2, r2, #1
+ cmp r2, #32
+ blt _037FB84C
+ ldr r1, _037FB8E0 ; =0x0000C408
+ ldr r0, _037FB8E4 ; =0x04000184
+ strh r1, [r0]
+ mov r0, #262144 ; 0x40000
+ bl OS_ResetRequestIrqMask
+ mov r0, #262144 ; 0x40000
+ ldr r1, _037FB8E8 ; =PXIi_HandlerRecvFifoNotEmpty
+ bl OS_SetIrqFunction
+ mov r0, #262144 ; 0x40000
+ bl OS_EnableIrqMask
+ mov r4, #8
+ mov r6, r4
+ ldr r8, _037FB8EC ; =0x04000180
+ mov r7, #1000 ; 0x3e8
+ b _037FB8BC
+_037FB898:
+ mov r0, r4, lsl #8
+ strh r0, [r8]
+ mov r0, r7
+ bl OS_SpinWait
+ ldrh r0, [r8]
+ and r0, r0, #15
+ cmp r0, r4
+ movne r4, r6
+ sub r4, r4, #1
+_037FB8BC:
+ cmp r4, #0
+ bge _037FB898
+_037FB8C4:
+ mov r0, r5
+ bl OS_RestoreInterrupts
+ ldmia sp!, {r4, r5, r6, r7, r8, lr}
+ bx lr
+_037FB8D4: .word _03807958
+_037FB8D8: .word 0x027FFC00
+_037FB8DC: .word _0380795C
+_037FB8E0: .word 0x0000C408
+_037FB8E4: .word 0x04000184
+_037FB8E8: .word PXIi_HandlerRecvFifoNotEmpty
+_037FB8EC: .word 0x04000180
diff --git a/arm7/asm/PXI_init.s b/arm7/asm/PXI_init.s
new file mode 100644
index 00000000..b5a60d6e
--- /dev/null
+++ b/arm7/asm/PXI_init.s
@@ -0,0 +1,10 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+
+ .text
+
+ arm_func_start PXI_Init
+PXI_Init: ; 0x037FB5B0
+ ldr ip, _037FB5B8 ; =PXI_InitFifo
+ bx ip
+_037FB5B8: .word PXI_InitFifo
diff --git a/arm7/asm/SND.s b/arm7/asm/SND.s
new file mode 100644
index 00000000..43e137e1
--- /dev/null
+++ b/arm7/asm/SND.s
@@ -0,0 +1,498 @@
+#todo split further
+
+ .include "asm/macros.inc"
+ .include "global.inc"
+
+ .section .bss
+
+ .global sSurroundDecay
+sSurroundDecay: ;0x03807A0C
+ .space 0x03807A10 - 0x03807A0C
+
+ .global sOrgPan
+sOrgPan: ;0x03807A10
+ .space 0x03807A20 - 0x03807A10
+
+ .global sOrgVolume
+sOrgVolume: ;0x03807A20
+ .space 0x03807A30 - 0x03807A20
+
+ .section .text
+
+ arm_func_start SND_SetOutputSelector
+SND_SetOutputSelector: ; 0x037FBA0C
+ ldr ip, _037FBA40 ; =0x04000501
+ ldrb ip, [ip]
+ ands ip, ip, #128 ; 0x80
+ movne ip, #1
+ moveq ip, #0
+ mov ip, ip, lsl #7
+ orr r3, ip, r3, lsl #5
+ orr r2, r3, r2, lsl #4
+ orr r1, r2, r1, lsl #2
+ orr r1, r0, r1
+ ldr r0, _037FBA40 ; =0x04000501
+ strb r1, [r0]
+ bx lr
+_037FBA40: .word 0x04000501
+
+ arm_func_start SND_SetMasterVolume
+SND_SetMasterVolume: ; 0x037FBA44
+ ldr r1, _037FBA50 ; =0x04000500
+ strb r0, [r1]
+ bx lr
+_037FBA50: .word 0x04000500
+
+ arm_func_start SND_EndSleep
+SND_EndSleep: ; 0x037FBA54
+ stmfd sp!, {lr}
+ sub sp, sp, #4
+ ldr r1, _037FBA94 ; =0x04000304
+ ldrh r0, [r1]
+ orr r0, r0, #1
+ strh r0, [r1]
+ mov r0, #1
+ bl PMi_SetControl
+ mov r0, #256 ; 0x100
+ bl FUN_037FBA9C
+ ldr r0, _037FBA98 ; =0x0007AB80
+ bl OS_SpinWait
+ bl SND_Enable
+ add sp, sp, #4
+ ldmia sp!, {lr}
+ bx lr
+_037FBA94: .word 0x04000304
+_037FBA98: .word 0x0007AB80
+
+ arm_func_start FUN_037FBA9C
+FUN_037FBA9C: ; 0x037FBA9C
+ ldr ip, _037FBAA4 ; =SVC_SoundBiasSet
+ bx ip
+_037FBAA4: .word SVC_SoundBiasSet
+
+ arm_func_start SND_BeginSleep
+SND_BeginSleep: ; 0x037FBAA8
+ stmfd sp!, {lr}
+ sub sp, sp, #4
+ bl SND_Disable
+ mov r0, #128 ; 0x80
+ bl FUN_037FBAEC
+ mov r0, #262144 ; 0x40000
+ bl OS_SpinWait
+ mov r0, #1
+ bl PMi_ResetControl
+ ldr r1, _037FBAE8 ; =0x04000304
+ ldrh r0, [r1]
+ bic r0, r0, #1
+ strh r0, [r1]
+ add sp, sp, #4
+ ldmia sp!, {lr}
+ bx lr
+_037FBAE8: .word 0x04000304
+
+ arm_func_start FUN_037FBAEC
+FUN_037FBAEC: ; 0x037FBAEC
+ ldr ip, _037FBAF4 ; =SVC_SoundBiasReset
+ bx ip
+_037FBAF4: .word SVC_SoundBiasReset
+
+ arm_func_start SND_Shutdown
+SND_Shutdown: ; 0x037FBAF8
+ stmdb sp!, {r4, r5, lr}
+ sub sp, sp, #4
+ bl SND_Disable
+ mov r5, #0
+ mov r4, #1
+_037FBB0C:
+ mov r0, r5
+ mov r1, r4
+ bl SND_StopChannel
+ add r5, r5, #1
+ cmp r5, #16
+ blt _037FBB0C
+ mov r1, #0
+ ldr r0, _037FBB44 ; =0x04000508
+ strb r1, [r0]
+ ldr r0, _037FBB48 ; =0x04000509
+ strb r1, [r0]
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, lr}
+ bx lr
+_037FBB44: .word 0x04000508
+_037FBB48: .word 0x04000509
+
+ arm_func_start SND_Disable
+SND_Disable: ; 0x037FBB4C
+ ldr r1, _037FBB60 ; =0x04000501
+ ldrb r0, [r1]
+ bic r0, r0, #128 ; 0x80
+ strb r0, [r1]
+ bx lr
+_037FBB60: .word 0x04000501
+
+ arm_func_start SND_Enable
+SND_Enable: ; 0x037FBB64
+ ldr r1, _037FBB78 ; =0x04000501
+ ldrb r0, [r1]
+ orr r0, r0, #128 ; 0x80
+ strb r0, [r1]
+ bx lr
+_037FBB78: .word 0x04000501
+
+ arm_func_start CalcSurroundDecay
+CalcSurroundDecay: ; 0x037FBB7C
+ cmp r1, #24
+ bge _037FBBAC
+ ldr r2, _037FBBE0 ; =sSurroundDecay
+ ldr r3, [r2]
+ ldr r2, _037FBBE4 ; =0x00007FFF
+ sub r2, r2, r3
+ add r1, r1, #40 ; 0x28
+ mul r1, r3, r1
+ add r1, r1, r2, lsl #6
+ mul r1, r0, r1
+ mov r0, r1, asr #21
+ bx lr
+_037FBBAC:
+ cmp r1, #104 ; 0x68
+ bxle lr
+ ldr r2, _037FBBE0 ; =sSurroundDecay
+ ldr ip, [r2]
+ ldr r2, _037FBBE4 ; =0x00007FFF
+ add r3, ip, r2
+ rsb r2, ip, #0
+ sub r1, r1, #40 ; 0x28
+ mul r1, r2, r1
+ add r1, r1, r3, lsl #6
+ mul r1, r0, r1
+ mov r0, r1, asr #21
+ bx lr
+_037FBBE0: .word sSurroundDecay
+_037FBBE4: .word 0x00007FFF
+
+ arm_func_start SNDi_SetSurroundDecay
+SNDi_SetSurroundDecay: ; 0x037FBBE8
+ stmdb sp!, {r4, r5, r6, r7, r8, lr}
+ ldr r1, _037FBC40 ; =sSurroundDecay
+ str r0, [r1]
+ mov r4, #0
+ ldr r6, _037FBC44 ; =sOrgVolume
+ mov r7, #1
+ ldr r5, _037FBC48 ; =0x0000FFF5
+_037FBC04:
+ mov r0, r7, lsl r4
+ ands r0, r0, r5
+ beq _037FBC2C
+ mov r8, r4, lsl #4
+ add r0, r8, #67108864 ; 0x4000000
+ ldrb r1, [r0, #1026] ; 0x402
+ ldrb r0, [r6, r4]
+ bl CalcSurroundDecay
+ add r1, r8, #67108864 ; 0x4000000
+ strb r0, [r1, #1024] ; 0x400
+_037FBC2C:
+ add r4, r4, #1
+ cmp r4, #16
+ blt _037FBC04
+ ldmia sp!, {r4, r5, r6, r7, r8, lr}
+ bx lr
+_037FBC40: .word sSurroundDecay
+_037FBC44: .word sOrgVolume
+_037FBC48: .word 0x0000FFF5
+
+ arm_func_start SND_GetChannelControl
+SND_GetChannelControl: ; 0x037FBC4C
+ mov r0, r0, lsl #4
+ add r0, r0, #67108864 ; 0x4000000
+ ldr r0, [r0, #1024] ; 0x400
+ bx lr
+
+ arm_func_start SND_SetMasterPan
+SND_SetMasterPan: ; 0x037FBC5C
+ ldr r1, _037FBCB8 ; =sMasterPan
+ str r0, [r1]
+ cmp r0, #0
+ blt _037FBC90
+ mov r2, #0
+ and r1, r0, #255 ; 0xff
+_037FBC74:
+ mov r0, r2, lsl #4
+ add r0, r0, #67108864 ; 0x4000000
+ strb r1, [r0, #1026] ; 0x402
+ add r2, r2, #1
+ cmp r2, #16
+ blt _037FBC74
+ bx lr
+_037FBC90:
+ mov r3, #0
+ ldr r2, _037FBCBC ; =sOrgPan
+_037FBC98:
+ ldrb r1, [r2, r3]
+ mov r0, r3, lsl #4
+ add r0, r0, #67108864 ; 0x4000000
+ strb r1, [r0, #1026] ; 0x402
+ add r3, r3, #1
+ cmp r3, #16
+ blt _037FBC98
+ bx lr
+_037FBCB8: .word sMasterPan
+_037FBCBC: .word sOrgPan
+
+ arm_func_start SND_IsChannelActive
+SND_IsChannelActive: ; 0x037FBCC0
+ mov r0, r0, lsl #4
+ add r0, r0, #67108864 ; 0x4000000
+ ldrb r0, [r0, #1027] ; 0x403
+ ands r0, r0, #128 ; 0x80
+ movne r0, #1
+ moveq r0, #0
+ bx lr
+
+ arm_func_start SND_SetChannelPan
+SND_SetChannelPan: ; 0x037FBCDC
+ stmdb sp!, {r4, lr}
+ ldr r2, _037FBD44 ; =sOrgPan
+ strb r1, [r2, r0]
+ ldr r2, _037FBD48 ; =sMasterPan
+ ldr r2, [r2]
+ cmp r2, #0
+ movge r1, r2
+ mov r4, r0, lsl #4
+ add r2, r4, #67108864 ; 0x4000000
+ strb r1, [r2, #1026] ; 0x402
+ ldr r2, _037FBD4C ; =sSurroundDecay
+ ldr r2, [r2]
+ cmp r2, #0
+ ble _037FBD3C
+ mov r2, #1
+ mov r3, r2, lsl r0
+ ldr r2, _037FBD50 ; =0x0000FFF5
+ ands r2, r3, r2
+ beq _037FBD3C
+ ldr r2, _037FBD54 ; =sOrgVolume
+ ldrb r0, [r2, r0]
+ bl CalcSurroundDecay
+ add r1, r4, #67108864 ; 0x4000000
+ strb r0, [r1, #1024] ; 0x400
+_037FBD3C:
+ ldmia sp!, {r4, lr}
+ bx lr
+_037FBD44: .word sOrgPan
+_037FBD48: .word sMasterPan
+_037FBD4C: .word sSurroundDecay
+_037FBD50: .word 0x0000FFF5
+_037FBD54: .word sOrgVolume
+
+ arm_func_start SND_SetChannelTimer
+SND_SetChannelTimer: ; 0x037FBD58
+ rsb r1, r1, #65536 ; 0x10000
+ mov r0, r0, lsl #4
+ add r0, r0, #67108864 ; 0x4000000
+ add r0, r0, #1024 ; 0x400
+ strh r1, [r0, #8]
+ bx lr
+
+ arm_func_start SND_SetChannelVolume
+SND_SetChannelVolume: ; 0x037FBD70
+ stmdb sp!, {r4, r5, lr}
+ sub sp, sp, #4
+ mov r5, r0
+ mov r4, r2
+ ldr r0, _037FBDE8 ; =sOrgVolume
+ strb r1, [r0, r5]
+ ldr r0, _037FBDEC ; =sSurroundDecay
+ ldr r0, [r0]
+ cmp r0, #0
+ ble _037FBDC8
+ mov r0, #1
+ mov r2, r0, lsl r5
+ ldr r0, _037FBDF0 ; =0x0000FFF5
+ ands r0, r2, r0
+ beq _037FBDC8
+ mov r0, r5, lsl #4
+ add r0, r0, #67108864 ; 0x4000000
+ ldrb r2, [r0, #1026] ; 0x402
+ mov r0, r1
+ mov r1, r2
+ bl CalcSurroundDecay
+ mov r1, r0
+_037FBDC8:
+ orr r1, r1, r4, lsl #8
+ mov r0, r5, lsl #4
+ add r0, r0, #67108864 ; 0x4000000
+ add r0, r0, #1024 ; 0x400
+ strh r1, [r0]
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, lr}
+ bx lr
+_037FBDE8: .word sOrgVolume
+_037FBDEC: .word sSurroundDecay
+_037FBDF0: .word 0x0000FFF5
+
+ arm_func_start SND_StopChannel
+SND_StopChannel: ; 0x037FBDF4
+ mov r3, r0, lsl #4
+ ldr r2, _037FBE1C ; =0x04000400
+ add ip, r2, r0, lsl #4
+ add r0, r3, #67108864 ; 0x4000000
+ ldr r0, [r0, #1024] ; 0x400
+ bic r2, r0, #-2147483648 ; 0x80000000
+ ands r0, r1, #1
+ orrne r2, r2, #32768 ; 0x8000
+ str r2, [ip]
+ bx lr
+_037FBE1C: .word 0x04000400
+
+ arm_func_start SND_SetupChannelNoise
+SND_SetupChannelNoise: ; 0x037FBE20
+ stmdb sp!, {r4, r5, r6, r7, lr}
+ sub sp, sp, #4
+ mov r7, r2
+ mov r6, r3
+ ldr r5, [sp, #24]
+ mov r4, r0, lsl #4
+ ldr r2, _037FBEBC ; =sOrgPan
+ strb r5, [r2, r0]
+ ldr r2, _037FBEC0 ; =sMasterPan
+ ldr r2, [r2]
+ cmp r2, #0
+ movge r5, r2
+ ldr r2, _037FBEC4 ; =sOrgVolume
+ strb r1, [r2, r0]
+ ldr r2, _037FBEC8 ; =sSurroundDecay
+ ldr r2, [r2]
+ cmp r2, #0
+ ble _037FBE8C
+ mov r2, #1
+ mov r2, r2, lsl r0
+ ldr r0, _037FBECC ; =0x0000FFF5
+ ands r0, r2, r0
+ beq _037FBE8C
+ mov r0, r1
+ mov r1, r5
+ bl CalcSurroundDecay
+ mov r1, r0
+_037FBE8C:
+ mov r0, r5, lsl #16
+ orr r0, r0, #1610612736 ; 0x60000000
+ orr r0, r0, r7, lsl #8
+ orr r1, r1, r0
+ add r0, r4, #67108864 ; 0x4000000
+ str r1, [r0, #1024] ; 0x400
+ rsb r1, r6, #65536 ; 0x10000
+ add r0, r0, #1024 ; 0x400
+ strh r1, [r0, #8]
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, r6, r7, lr}
+ bx lr
+_037FBEBC: .word sOrgPan
+_037FBEC0: .word sMasterPan
+_037FBEC4: .word sOrgVolume
+_037FBEC8: .word sSurroundDecay
+_037FBECC: .word 0x0000FFF5
+
+ arm_func_start SND_SetupChannelPsg
+SND_SetupChannelPsg: ; 0x037FBED0
+ stmdb sp!, {r4, r5, r6, r7, lr}
+ sub sp, sp, #4
+ mov r7, r1
+ mov r6, r3
+ ldr r5, [sp, #28]
+ mov r4, r0, lsl #4
+ ldr r1, _037FBF74 ; =sOrgPan
+ strb r5, [r1, r0]
+ ldr r1, _037FBF78 ; =sMasterPan
+ ldr r1, [r1]
+ cmp r1, #0
+ movge r5, r1
+ ldr r1, _037FBF7C ; =sOrgVolume
+ strb r2, [r1, r0]
+ ldr r1, _037FBF80 ; =sSurroundDecay
+ ldr r1, [r1]
+ cmp r1, #0
+ ble _037FBF3C
+ mov r1, #1
+ mov r1, r1, lsl r0
+ ldr r0, _037FBF84 ; =0x0000FFF5
+ ands r0, r1, r0
+ beq _037FBF3C
+ mov r0, r2
+ mov r1, r5
+ bl CalcSurroundDecay
+ mov r2, r0
+_037FBF3C:
+ mov r0, r7, lsl #24
+ orr r0, r0, #1610612736 ; 0x60000000
+ orr r0, r0, r5, lsl #16
+ orr r0, r0, r6, lsl #8
+ orr r1, r2, r0
+ add r0, r4, #67108864 ; 0x4000000
+ str r1, [r0, #1024] ; 0x400
+ ldr r1, [sp, #24]
+ rsb r1, r1, #65536 ; 0x10000
+ add r0, r0, #1024 ; 0x400
+ strh r1, [r0, #8]
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, r6, r7, lr}
+ bx lr
+_037FBF74: .word sOrgPan
+_037FBF78: .word sMasterPan
+_037FBF7C: .word sOrgVolume
+_037FBF80: .word sSurroundDecay
+_037FBF84: .word 0x0000FFF5
+
+ arm_func_start SND_SetupChannelPcm
+SND_SetupChannelPcm: ; 0x037FBF88
+ stmdb sp!, {r4, r5, r6, r7, r8, lr}
+ mov r8, r1
+ mov r7, r2
+ mov r6, r3
+ ldr r1, [sp, #32]
+ ldr r5, [sp, #44] ; 0x2c
+ mov r4, r0, lsl #4
+ ldr r2, _037FC044 ; =sOrgPan
+ strb r5, [r2, r0]
+ ldr r2, _037FC048 ; =sMasterPan
+ ldr r2, [r2]
+ cmp r2, #0
+ movge r5, r2
+ ldr r2, _037FC04C ; =sOrgVolume
+ strb r1, [r2, r0]
+ ldr r2, _037FC050 ; =sSurroundDecay
+ ldr r2, [r2]
+ cmp r2, #0
+ ble _037FBFF8
+ mov r2, #1
+ mov r2, r2, lsl r0
+ ldr r0, _037FC054 ; =0x0000FFF5
+ ands r0, r2, r0
+ beq _037FBFF8
+ mov r0, r1
+ mov r1, r5
+ bl CalcSurroundDecay
+ mov r1, r0
+_037FBFF8:
+ ldr r2, [sp, #36] ; 0x24
+ mov r0, r7, lsl #29
+ orr r0, r0, r6, lsl #27
+ orr r0, r0, r5, lsl #16
+ orr r0, r0, r2, lsl #8
+ orr r0, r1, r0
+ add r1, r4, #67108864 ; 0x4000000
+ str r0, [r1, #1024] ; 0x400
+ ldr r0, [sp, #40] ; 0x28
+ rsb r2, r0, #65536 ; 0x10000
+ add r0, r1, #1024 ; 0x400
+ strh r2, [r0, #8]
+ ldr r2, [sp, #24]
+ strh r2, [r0, #10]
+ ldr r0, [sp, #28]
+ str r0, [r1, #1036] ; 0x40c
+ str r8, [r1, #1028] ; 0x404
+ ldmia sp!, {r4, r5, r6, r7, r8, lr}
+ bx lr
+_037FC044: .word sOrgPan
+_037FC048: .word sMasterPan
+_037FC04C: .word sOrgVolume
+_037FC050: .word sSurroundDecay
+_037FC054: .word 0x0000FFF5
diff --git a/arm7/asm/SND_alarm.s b/arm7/asm/SND_alarm.s
new file mode 100644
index 00000000..68740d65
--- /dev/null
+++ b/arm7/asm/SND_alarm.s
@@ -0,0 +1,144 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+
+ .section .bss
+
+ .global _03808EEC
+_03808EEC: ;0x03808EEC
+ .space 0x038090EC - 0x03808EEC
+
+ .section .text
+
+ arm_func_start AlarmHandler
+AlarmHandler: ; 0x037FF524
+ stmdb sp!, {r4, r5, r6, lr}
+ mov r6, r0
+ mov r5, #7
+ mov r4, #0
+_037FF534:
+ mov r0, r5
+ mov r1, r6
+ mov r2, r4
+ bl PXI_SendWordByFifo
+ cmp r0, #0
+ blt _037FF534
+ ldmia sp!, {r4, r5, r6, lr}
+ bx lr
+
+ arm_func_start SND_StopAlarm
+SND_StopAlarm: ; 0x037FF554
+ stmdb sp!, {r4, lr}
+ ldr r1, _037FF590 ; =_03808EEC
+ add r4, r1, r0, lsl #6
+ ldrb r0, [r1, r0, lsl #6]
+ cmp r0, #0
+ beq _037FF588
+ add r0, r4, #20
+ bl OS_CancelAlarm
+ ldrb r0, [r4, #1]
+ add r0, r0, #1
+ strb r0, [r4, #1]
+ mov r0, #0
+ strb r0, [r4]
+_037FF588:
+ ldmia sp!, {r4, lr}
+ bx lr
+_037FF590: .word _03808EEC
+
+ arm_func_start SND_StartAlarm
+SND_StartAlarm: ; 0x037FF594
+ stmdb sp!, {r4, r5, r6, r7, r8, r9, lr}
+ sub sp, sp, #12
+ mov r4, r0
+ ldr r0, _037FF654 ; =_03808EEC
+ add r5, r0, r4, lsl #6
+ ldrb r0, [r0, r4, lsl #6]
+ cmp r0, #0
+ beq _037FF5C4
+ add r0, r5, #20
+ bl OS_CancelAlarm
+ mov r0, #0
+ strb r0, [r5]
+_037FF5C4:
+ ldr r9, [r5, #4]
+ ldr r8, [r5, #8]
+ ldr r7, [r5, #12]
+ ldr r6, [r5, #16]
+ ldrb r0, [r5, #1]
+ orr r4, r4, r0, lsl #8
+ add r0, r5, #20
+ bl OS_CreateAlarm
+ mov r0, #0
+ cmp r6, r0
+ cmpeq r7, r0
+ bne _037FF610
+ str r4, [sp]
+ add r0, r5, #20
+ mov r1, r9
+ mov r2, r8
+ ldr r3, _037FF658 ; =AlarmHandler
+ bl OS_SetAlarm
+ b _037FF640
+_037FF610:
+ bl OS_GetTick
+ mov r2, r0
+ ldr r0, _037FF658 ; =AlarmHandler
+ str r0, [sp, #4]
+ str r4, [sp, #8]
+ mov r3, r7
+ str r6, [sp]
+ add r0, r5, #20
+ adds r4, r9, r2
+ adc r2, r8, r1
+ mov r1, r4
+ bl OS_SetPeriodicAlarm
+_037FF640:
+ mov r0, #1
+ strb r0, [r5]
+ add sp, sp, #12
+ ldmia sp!, {r4, r5, r6, r7, r8, r9, lr}
+ bx lr
+_037FF654: .word _03808EEC
+_037FF658: .word AlarmHandler
+
+ arm_func_start SND_SetupAlarm
+SND_SetupAlarm: ; 0x037FF65C
+ stmdb sp!, {r4, r5, r6, r7, r8, lr}
+ mov r8, r1
+ mov r7, r2
+ mov r6, r3
+ ldr r5, [sp, #24]
+ ldr r1, _037FF6B4 ; =_03808EEC
+ add r4, r1, r0, lsl #6
+ ldrb r0, [r1, r0, lsl #6]
+ cmp r0, #0
+ beq _037FF694
+ add r0, r4, #20
+ bl OS_CancelAlarm
+ mov r0, #0
+ strb r0, [r4]
+_037FF694:
+ str r8, [r4, #4]
+ str r7, [r4, #8]
+ str r6, [r4, #12]
+ str r5, [r4, #16]
+ ldr r0, [sp, #28]
+ strb r0, [r4, #1]
+ ldmia sp!, {r4, r5, r6, r7, r8, lr}
+ bx lr
+_037FF6B4: .word _03808EEC
+
+ arm_func_start SND_AlarmInit
+SND_AlarmInit: ; 0x037FF6B8
+ mov r3, #0
+ mov r2, r3
+ ldr r1, _037FF6E0 ; =SNDi_Work
+_037FF6C4:
+ add r0, r1, r3, lsl #6
+ strb r2, [r0, #3968] ; 0xf80
+ strb r2, [r0, #3969] ; 0xf81
+ add r3, r3, #1
+ cmp r3, #8
+ blt _037FF6C4
+ bx lr
+_037FF6E0: .word SNDi_Work
diff --git a/arm7/asm/SND_bank.s b/arm7/asm/SND_bank.s
new file mode 100644
index 00000000..acf1ac44
--- /dev/null
+++ b/arm7/asm/SND_bank.s
@@ -0,0 +1,245 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+
+ .text
+
+ arm_func_start GetWaveData
+GetWaveData: ; 0x037FF114
+ stmfd sp!, {lr}
+ sub sp, sp, #4
+ add r0, r0, r1, lsl #3
+ ldr r0, [r0, #24]
+ cmp r0, #0
+ moveq r0, #0
+ beq _037FF148
+ ldr r1, [r0, #56] ; 0x38
+ cmp r2, r1
+ movcs r0, #0
+ bcs _037FF148
+ mov r1, r2
+ bl SND_GetWaveDataAddress
+_037FF148:
+ add sp, sp, #4
+ ldmia sp!, {lr}
+ bx lr
+
+ arm_func_start SND_NoteOn
+SND_NoteOn: ; 0x037FF154
+ stmdb sp!, {r4, r5, r6, r7, r8, r9, lr}
+ sub sp, sp, #4
+ mov r9, r0
+ mov r8, r1
+ mov r7, r2
+ mov r6, r3
+ ldr r5, [sp, #36] ; 0x24
+ ldrb r4, [r5, #10]
+ cmp r4, #255 ; 0xff
+ mvneq r6, #0
+ moveq r4, #0
+ ldrb r0, [r5]
+ cmp r0, #4
+ addls pc, pc, r0, lsl #2
+ b _037FF210
+ b _037FF210
+ b _037FF1A4
+ b _037FF1EC
+ b _037FF200
+ b _037FF1A4
+_037FF1A4:
+ cmp r0, #1
+ ldrneh r1, [r5, #4]
+ ldrneh r0, [r5, #2]
+ orrne r1, r0, r1, lsl #16
+ bne _037FF1CC
+ ldr r0, [sp, #32]
+ ldrh r1, [r5, #4]
+ ldrh r2, [r5, #2]
+ bl GetWaveData
+ mov r1, r0
+_037FF1CC:
+ cmp r1, #0
+ moveq r0, #0
+ beq _037FF214
+ mov r0, r9
+ add r2, r1, #12
+ mov r3, r6
+ bl SND_StartExChannelPcm
+ b _037FF214
+_037FF1EC:
+ mov r0, r9
+ ldrh r1, [r5, #2]
+ mov r2, r6
+ bl SND_StartExChannelPsg
+ b _037FF214
+_037FF200:
+ mov r0, r9
+ mov r1, r6
+ bl SND_StartExChannelNoise
+ b _037FF214
+_037FF210:
+ mov r0, #0
+_037FF214:
+ cmp r0, #0
+ moveq r0, #0
+ beq _037FF270
+ strb r8, [r9, #8]
+ ldrb r0, [r5, #6]
+ strb r0, [r9, #5]
+ strb r7, [r9, #9]
+ mov r0, r9
+ ldrb r1, [r5, #7]
+ bl SND_SetExChannelAttack
+ mov r0, r9
+ ldrb r1, [r5, #8]
+ bl SND_SetExChannelDecay
+ mov r0, r9
+ ldrb r1, [r5, #9]
+ bl SND_SetExChannelSustain
+ mov r0, r9
+ mov r1, r4
+ bl SND_SetExChannelRelease
+ ldrb r0, [r5, #11]
+ sub r0, r0, #64 ; 0x40
+ strb r0, [r9, #10]
+ mov r0, #1
+_037FF270:
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, r6, r7, r8, r9, lr}
+ bx lr
+
+ arm_func_start SND_GetWaveDataAddress
+SND_GetWaveDataAddress: ; 0x037FF27C
+ stmdb sp!, {r4, r5, lr}
+ sub sp, sp, #4
+ mov r5, r0
+ mov r4, r1
+ bl SNDi_LockMutex
+ add r0, r5, r4, lsl #2
+ ldr r4, [r0, #60] ; 0x3c
+ cmp r4, #0
+ beq _037FF2AC
+ cmp r4, #33554432 ; 0x2000000
+ addcc r4, r5, r4
+ b _037FF2B0
+_037FF2AC:
+ mov r4, #0
+_037FF2B0:
+ bl SNDi_UnlockMutex
+ mov r0, r4
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, lr}
+ bx lr
+
+ arm_func_start SND_ReadInstData
+SND_ReadInstData: ; 0x037FF2C4
+ stmdb sp!, {r4, r5, r6, r7, lr}
+ sub sp, sp, #4
+ mov r6, r0
+ movs r7, r1
+ mov r5, r2
+ mov r4, r3
+ movmi r0, #0
+ bmi _037FF43C
+ bl SNDi_LockMutex
+ ldr r0, [r6, #56] ; 0x38
+ cmp r7, r0
+ bcc _037FF300
+ bl SNDi_UnlockMutex
+ mov r0, #0
+ b _037FF43C
+_037FF300:
+ add r0, r6, r7, lsl #2
+ ldr r3, [r0, #60] ; 0x3c
+ strb r3, [r4]
+ ldrb r0, [r4]
+ cmp r0, #17
+ addls pc, pc, r0, lsl #2
+ b _037FF428
+ b _037FF428
+ b _037FF364
+ b _037FF364
+ b _037FF364
+ b _037FF364
+ b _037FF364
+ b _037FF428
+ b _037FF428
+ b _037FF428
+ b _037FF428
+ b _037FF428
+ b _037FF428
+ b _037FF428
+ b _037FF428
+ b _037FF428
+ b _037FF428
+ b _037FF384
+ b _037FF3D4
+_037FF364:
+ add r3, r6, r3, lsr #8
+ add r2, r4, #2
+ mov r1, #5
+_037FF370:
+ ldrh r0, [r3], #2
+ strh r0, [r2], #2
+ subs r1, r1, #1
+ bne _037FF370
+ b _037FF434
+_037FF384:
+ add r2, r6, r3, lsr #8
+ ldrb r1, [r2, #1]
+ ldrb r0, [r6, r3, lsr #8]
+ cmp r5, r0
+ blt _037FF3A0
+ cmp r5, r1
+ ble _037FF3AC
+_037FF3A0:
+ bl SNDi_UnlockMutex
+ mov r0, #0
+ b _037FF43C
+_037FF3AC:
+ sub r1, r5, r0
+ mov r0, #12
+ mla r0, r1, r0, r2
+ add r2, r0, #2
+ mov r1, #6
+_037FF3C0:
+ ldrh r0, [r2], #2
+ strh r0, [r4], #2
+ subs r1, r1, #1
+ bne _037FF3C0
+ b _037FF434
+_037FF3D4:
+ mov r2, #0
+ add r1, r6, r3, lsr #8
+ b _037FF3F8
+_037FF3E0:
+ add r2, r2, #1
+ cmp r2, #8
+ blt _037FF3F8
+ bl SNDi_UnlockMutex
+ mov r0, #0
+ b _037FF43C
+_037FF3F8:
+ ldrb r0, [r1, r2]
+ cmp r5, r0
+ bgt _037FF3E0
+ mov r0, #12
+ mla r0, r2, r0, r1
+ add r2, r0, #8
+ mov r1, #6
+_037FF414:
+ ldrh r0, [r2], #2
+ strh r0, [r4], #2
+ subs r1, r1, #1
+ bne _037FF414
+ b _037FF434
+_037FF428:
+ bl SNDi_UnlockMutex
+ mov r0, #0
+ b _037FF43C
+_037FF434:
+ bl SNDi_UnlockMutex
+ mov r0, #1
+_037FF43C:
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, r6, r7, lr}
+ bx lr
diff --git a/arm7/asm/SND_capture.s b/arm7/asm/SND_capture.s
new file mode 100644
index 00000000..d40e792e
--- /dev/null
+++ b/arm7/asm/SND_capture.s
@@ -0,0 +1,38 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+
+ .text
+
+ arm_func_start SND_IsCaptureActive
+SND_IsCaptureActive: ; 0x037FC4C0
+ add r0, r0, #67108864 ; 0x4000000
+ ldrb r0, [r0, #1288] ; 0x508
+ ands r0, r0, #128 ; 0x80
+ movne r0, #1
+ moveq r0, #0
+ bx lr
+
+ arm_func_start SND_SetupCapture
+SND_SetupCapture: ; 0x037FC4D8
+ stmdb sp!, {r4, r5, lr}
+ sub sp, sp, #4
+ mov r4, r0, lsl #3
+ ldr ip, [sp, #16]
+ cmp ip, #0
+ movne r5, #0
+ moveq r5, #1
+ ldr lr, [sp, #24]
+ ldr ip, [sp, #20]
+ mov r1, r1, lsl #3
+ orr r1, r1, r5, lsl #2
+ orr r1, r1, ip, lsl #1
+ orr r1, lr, r1
+ add r0, r0, #67108864 ; 0x4000000
+ strb r1, [r0, #1288] ; 0x508
+ add r0, r4, #67108864 ; 0x4000000
+ str r2, [r0, #1296] ; 0x510
+ add r0, r0, #1280 ; 0x500
+ strh r3, [r0, #20]
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, lr}
+ bx lr
diff --git a/arm7/asm/SND_channel.s b/arm7/asm/SND_channel.s
new file mode 100644
index 00000000..850c06f3
--- /dev/null
+++ b/arm7/asm/SND_channel.s
@@ -0,0 +1,208 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+
+ .text
+
+ arm_func_start FUN_037FC530
+FUN_037FC530: ; 0x037FC530
+ stmdb sp!, {r4, r5, r6, lr}
+ mov r6, r0
+ mov r5, r1
+ add r0, r6, #40 ; 0x28
+ bl SND_GetLfoValue
+ mov r4, r0
+ mov ip, r0, asr #31
+ mov r3, #0
+ cmp ip, r3
+ cmpeq r0, r3
+ beq _037FC5B0
+ ldrb r1, [r6, #40] ; 0x28
+ cmp r1, #0
+ beq _037FC59C
+ cmp r1, #1
+ beq _037FC584
+ cmp r1, #2
+ moveq ip, ip, lsl #6
+ orreq ip, ip, r0, lsr #26
+ moveq r4, r0, lsl #6
+ b _037FC5A8
+_037FC584:
+ mov r2, #60 ; 0x3c
+ umull r4, r1, r0, r2
+ mla r1, r0, r3, r1
+ mla r1, ip, r2, r1
+ mov ip, r1
+ b _037FC5A8
+_037FC59C:
+ mov ip, ip, lsl #6
+ orr ip, ip, r0, lsr #26
+ mov r4, r0, lsl #6
+_037FC5A8:
+ mov r4, r4, lsr #14
+ orr r4, r4, ip, lsl #18
+_037FC5B0:
+ cmp r5, #0
+ beq _037FC5C0
+ add r0, r6, #40 ; 0x28
+ bl SND_UpdateLfo
+_037FC5C0:
+ mov r0, r4
+ ldmia sp!, {r4, r5, r6, lr}
+ bx lr
+
+ arm_func_start FUN_037FC5CC
+FUN_037FC5CC: ; 0x037FC5CC
+ stmdb sp!, {r4, r5, lr}
+ sub sp, sp, #4
+ mov r4, r0
+ mov r5, r1
+ ldrsh r3, [r4, #50] ; 0x32
+ cmp r3, #0
+ moveq r0, #0
+ beq _037FC630
+ ldr r0, [r4, #20]
+ ldr r2, [r4, #24]
+ cmp r0, r2
+ movge r0, #0
+ bge _037FC630
+ sub r0, r2, r0
+ smull r0, r1, r3, r0
+ mov r3, r2, asr #31
+ bl _ll_sdiv
+ cmp r5, #0
+ beq _037FC630
+ ldrb r1, [r4, #3]
+ mov r1, r1, lsl #29
+ movs r1, r1, lsr #31
+ ldrne r1, [r4, #20]
+ addne r1, r1, #1
+ strne r1, [r4, #20]
+_037FC630:
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, lr}
+ bx lr
+
+ arm_func_start FUN_037FC63C
+FUN_037FC63C: ; 0x037FC63C
+ stmfd sp!, {lr}
+ sub sp, sp, #4
+ ldrh lr, [r0, #36] ; 0x24
+ and r2, lr, #255 ; 0xff
+ ldrh ip, [r1, #36] ; 0x24
+ and r0, ip, #255 ; 0xff
+ mov r2, r2, lsl #4
+ mov r3, r0, lsl #4
+ ldr r1, _037FC698 ; =_03807294
+ ldrb r0, [r1, lr, asr #8]
+ mov r2, r2, asr r0
+ ldrb r0, [r1, ip, asr #8]
+ mov r0, r3, asr r0
+ cmp r2, r0
+ beq _037FC688
+ cmp r2, r0
+ movlt r0, #1
+ mvnge r0, #0
+ b _037FC68C
+_037FC688:
+ mov r0, #0
+_037FC68C:
+ add sp, sp, #4
+ ldmia sp!, {lr}
+ bx lr
+_037FC698: .word _03807294
+
+ arm_func_start FUN_037FC69C
+FUN_037FC69C: ; 0x037FC69C
+ stmdb sp!, {r4, lr}
+ mov r4, r0
+ ldr r0, _037FC6E4 ; =0xFFFE9680
+ str r0, [r4, #16]
+ mov r0, #0
+ strb r0, [r4, #2]
+ str r1, [r4, #52] ; 0x34
+ add r0, r4, #40 ; 0x28
+ bl SND_StartLfo
+ ldrb r0, [r4, #3]
+ orr r0, r0, #2
+ strb r0, [r4, #3]
+ ldrb r0, [r4, #3]
+ bic r0, r0, #1
+ orr r0, r0, #1
+ strb r0, [r4, #3]
+ ldmia sp!, {r4, lr}
+ bx lr
+_037FC6E4: .word 0xFFFE9680
+
+ arm_func_start FUN_037FC6E8
+FUN_037FC6E8: ; 0x037FC6E8
+ stmdb sp!, {r4, lr}
+ mov r4, r0
+ mov ip, #0
+ str ip, [r4, #80] ; 0x50
+ str r1, [r4, #72] ; 0x48
+ str r2, [r4, #76] ; 0x4c
+ str ip, [r4, #52] ; 0x34
+ strb r3, [r4, #34] ; 0x22
+ mov r1, #127 ; 0x7f
+ strh r1, [r4, #36] ; 0x24
+ ldrb r2, [r4, #3]
+ bic r2, r2, #2
+ strb r2, [r4, #3]
+ ldrb r2, [r4, #3]
+ orr r2, r2, #4
+ strb r2, [r4, #3]
+ mov r2, #60 ; 0x3c
+ strb r2, [r4, #8]
+ strb r2, [r4, #5]
+ strb r1, [r4, #9]
+ strb ip, [r4, #10]
+ strh ip, [r4, #12]
+ strh ip, [r4, #6]
+ strh ip, [r4, #14]
+ strb ip, [r4, #11]
+ strb r1, [r4, #4]
+ strh ip, [r4, #50] ; 0x32
+ str ip, [r4, #24]
+ str ip, [r4, #20]
+ bl SND_SetExChannelAttack
+ mov r0, r4
+ mov r1, #127 ; 0x7f
+ bl SND_SetExChannelDecay
+ mov r0, r4
+ mov r1, #127 ; 0x7f
+ bl SND_SetExChannelSustain
+ mov r0, r4
+ mov r1, #127 ; 0x7f
+ bl SND_SetExChannelRelease
+ add r0, r4, #40 ; 0x28
+ bl SND_InitLfoParam
+ ldmia sp!, {r4, lr}
+ bx lr
+
+ arm_func_start FUN_037FC794
+FUN_037FC794: ; 0x037FC794
+ stmfd sp!, {lr}
+ sub sp, sp, #4
+ mov r1, r0
+ cmp r1, #127 ; 0x7f
+ ldreq r0, _037FC7F0 ; =0x0000FFFF
+ beq _037FC7E4
+ cmp r1, #126 ; 0x7e
+ moveq r0, #15360 ; 0x3c00
+ beq _037FC7E4
+ cmp r1, #50 ; 0x32
+ movlt r0, r1, lsl #1
+ addlt r0, r0, #1
+ movlt r0, r0, lsl #16
+ movlt r0, r0, lsr #16
+ blt _037FC7E4
+ mov r0, #7680 ; 0x1e00
+ rsb r1, r1, #126 ; 0x7e
+ bl _s32_div_f
+ mov r0, r0, lsl #16
+ mov r0, r0, lsr #16
+_037FC7E4:
+ add sp, sp, #4
+ ldmia sp!, {lr}
+ bx lr
+_037FC7F0: .word 0x0000FFFF
diff --git a/arm7/asm/SND_command.s b/arm7/asm/SND_command.s
new file mode 100644
index 00000000..ec1a5014
--- /dev/null
+++ b/arm7/asm/SND_command.s
@@ -0,0 +1,639 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+
+ .section .bss
+
+ .global _038090EC
+_038090EC: ;0x038090EC
+ .space 0x0380910C - 0x038090EC
+
+ .global _0380910C
+_0380910C: ;0x0380910C
+ .space 0x0380912C - 0x0380910C
+
+ .section .text
+
+ arm_func_start ReadDriverInfo
+ReadDriverInfo: ; 0x037FF6E4
+ stmdb sp!, {r4, r5, lr}
+ sub sp, sp, #4
+ mov r5, r0
+ ldr r0, _037FF74C ; =SNDi_Work
+ mov r1, r5
+ mov r2, #4480 ; 0x1180
+ bl MIi_CpuCopy32
+ ldr r1, _037FF74C ; =SNDi_Work
+ add r0, r5, #4096 ; 0x1000
+ str r1, [r0, #448] ; 0x1c0
+ mov r4, #0
+_037FF710:
+ mov r0, r4
+ bl SND_GetChannelControl
+ add r1, r5, r4, lsl #2
+ add r1, r1, #4096 ; 0x1000
+ str r0, [r1, #384] ; 0x180
+ add r4, r4, #1
+ cmp r4, #16
+ blt _037FF710
+ mov r0, #0
+ bl SND_GetLockedChannel
+ add r1, r5, #4096 ; 0x1000
+ str r0, [r1, #452] ; 0x1c4
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, lr}
+ bx lr
+_037FF74C: .word SNDi_Work
+
+ arm_func_start StopTimer
+StopTimer: ; 0x037FF750
+ stmdb sp!, {r4, r5, r6, r7, r8, r9, lr}
+ sub sp, sp, #4
+ mov r7, r0
+ mov r6, r1
+ mov r9, r2
+ mov r5, r3
+ bl OS_DisableInterrupts
+ mov r4, r0
+ mov r8, #0
+ b _037FF790
+_037FF778:
+ ands r0, r9, #1
+ beq _037FF788
+ mov r0, r8
+ bl SND_StopAlarm
+_037FF788:
+ add r8, r8, #1
+ mov r9, r9, lsr #1
+_037FF790:
+ cmp r8, #8
+ bge _037FF7A0
+ cmp r9, #0
+ bne _037FF778
+_037FF7A0:
+ mov r8, #0
+ b _037FF7C4
+_037FF7A8:
+ ands r0, r7, #1
+ beq _037FF7BC
+ mov r0, r8
+ mov r1, r5
+ bl SND_StopChannel
+_037FF7BC:
+ add r8, r8, #1
+ mov r7, r7, lsr #1
+_037FF7C4:
+ cmp r8, #16
+ bge _037FF7D4
+ cmp r7, #0
+ bne _037FF7A8
+_037FF7D4:
+ ands r0, r6, #1
+ movne r1, #0
+ ldrne r0, _037FF80C ; =0x04000508
+ strneb r1, [r0]
+ ands r0, r6, #2
+ movne r1, #0
+ ldrne r0, _037FF810 ; =0x04000509
+ strneb r1, [r0]
+ mov r0, r4
+ bl OS_RestoreInterrupts
+ bl SND_UpdateSharedWork
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, r6, r7, r8, r9, lr}
+ bx lr
+_037FF80C: .word 0x04000508
+_037FF810: .word 0x04000509
+
+ arm_func_start StartTimer
+StartTimer: ; 0x037FF814
+ stmdb sp!, {r4, r5, r6, r7, lr}
+ sub sp, sp, #4
+ mov r7, r0
+ mov r6, r1
+ mov r5, r2
+ bl OS_DisableInterrupts
+ mov r4, r0
+ mov r2, #0
+ b _037FF858
+_037FF838:
+ ands r0, r7, #1
+ movne r0, r2, lsl #4
+ addne r0, r0, #67108864 ; 0x4000000
+ ldrneb r1, [r0, #1027] ; 0x403
+ orrne r1, r1, #128 ; 0x80
+ strneb r1, [r0, #1027] ; 0x403
+ add r2, r2, #1
+ mov r7, r7, lsr #1
+_037FF858:
+ cmp r2, #16
+ bge _037FF868
+ cmp r7, #0
+ bne _037FF838
+_037FF868:
+ ands r0, r6, #1
+ beq _037FF8A0
+ ands r0, r6, #2
+ ldreq r1, _037FF8FC ; =0x04000508
+ ldreqb r0, [r1]
+ orreq r0, r0, #128 ; 0x80
+ streqb r0, [r1]
+ beq _037FF8B4
+ ldr r2, _037FF8FC ; =0x04000508
+ ldrh r1, [r2]
+ ldr r0, _037FF900 ; =0x00008080
+ orr r0, r1, r0
+ strh r0, [r2]
+ b _037FF8B4
+_037FF8A0:
+ ands r0, r6, #2
+ ldrne r1, _037FF904 ; =0x04000509
+ ldrneb r0, [r1]
+ orrne r0, r0, #128 ; 0x80
+ strneb r0, [r1]
+_037FF8B4:
+ mov r6, #0
+ b _037FF8D4
+_037FF8BC:
+ ands r0, r5, #1
+ beq _037FF8CC
+ mov r0, r6
+ bl SND_StartAlarm
+_037FF8CC:
+ add r6, r6, #1
+ mov r5, r5, lsr #1
+_037FF8D4:
+ cmp r6, #8
+ bge _037FF8E4
+ cmp r5, #0
+ bne _037FF8BC
+_037FF8E4:
+ mov r0, r4
+ bl OS_RestoreInterrupts
+ bl SND_UpdateSharedWork
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, r6, r7, lr}
+ bx lr
+_037FF8FC: .word 0x04000508
+_037FF900: .word 0x00008080
+_037FF904: .word 0x04000509
+
+ arm_func_start SetChannelPan
+SetChannelPan: ; 0x037FF908
+ stmdb sp!, {r4, r5, r6, lr}
+ mov r6, r0
+ mov r5, r1
+ mov r4, #0
+ b _037FF938
+_037FF91C:
+ ands r0, r6, #1
+ beq _037FF930
+ mov r0, r4
+ mov r1, r5
+ bl SND_SetChannelPan
+_037FF930:
+ add r4, r4, #1
+ mov r6, r6, lsr #1
+_037FF938:
+ cmp r4, #16
+ bge _037FF948
+ cmp r6, #0
+ bne _037FF91C
+_037FF948:
+ ldmia sp!, {r4, r5, r6, lr}
+ bx lr
+
+ arm_func_start SetChannelVolume
+SetChannelVolume: ; 0x037FF950
+ stmdb sp!, {r4, r5, r6, r7, lr}
+ sub sp, sp, #4
+ mov r7, r0
+ mov r6, r1
+ mov r5, r2
+ mov r4, #0
+ b _037FF98C
+_037FF96C:
+ ands r0, r7, #1
+ beq _037FF984
+ mov r0, r4
+ mov r1, r6
+ mov r2, r5
+ bl SND_SetChannelVolume
+_037FF984:
+ add r4, r4, #1
+ mov r7, r7, lsr #1
+_037FF98C:
+ cmp r4, #16
+ bge _037FF99C
+ cmp r7, #0
+ bne _037FF96C
+_037FF99C:
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, r6, r7, lr}
+ bx lr
+
+ arm_func_start SetChannelTimer
+SetChannelTimer: ; 0x037FF9A8
+ stmdb sp!, {r4, r5, r6, lr}
+ mov r6, r0
+ mov r5, r1
+ mov r4, #0
+ b _037FF9D8
+_037FF9BC:
+ ands r0, r6, #1
+ beq _037FF9D0
+ mov r0, r4
+ mov r1, r5
+ bl SND_SetChannelTimer
+_037FF9D0:
+ add r4, r4, #1
+ mov r6, r6, lsr #1
+_037FF9D8:
+ cmp r4, #16
+ bge _037FF9E8
+ cmp r6, #0
+ bne _037FF9BC
+_037FF9E8:
+ ldmia sp!, {r4, r5, r6, lr}
+ bx lr
+
+ arm_func_start InitPXI
+InitPXI: ; 0x037FF9F0
+ mov r0, #7
+ ldr r1, _037FFA00 ; =PxiFifoCallback
+ ldr ip, _037FFA04 ; =PXI_SetFifoRecvCallback
+ bx ip
+_037FFA00: .word PxiFifoCallback
+_037FFA04: .word PXI_SetFifoRecvCallback
+
+ arm_func_start PxiFifoCallback
+PxiFifoCallback: ; 0x037FFA08
+ stmdb sp!, {r4, r5, lr}
+ sub sp, sp, #4
+ mov r5, r1
+ bl OS_DisableInterrupts
+ mov r4, r0
+ cmp r5, #33554432 ; 0x2000000
+ bcc _037FFA38
+ ldr r0, _037FFA58 ; =_038090EC
+ mov r1, r5
+ mov r2, #0
+ bl OS_SendMessage
+ b _037FFA44
+_037FFA38:
+ cmp r5, #0
+ bne _037FFA44
+ bl SND_SendWakeupMessage
+_037FFA44:
+ mov r0, r4
+ bl OS_RestoreInterrupts
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, lr}
+ bx lr
+_037FFA58: .word _038090EC
+
+ arm_func_start SND_CommandProc
+SND_CommandProc: ; 0x037FFA5C
+ stmdb sp!, {r4, r5, r6, r7, r8, r9, lr}
+ sub sp, sp, #52 ; 0x34
+ ldr r7, _037FFEC4 ; =SNDi_SharedWork
+ ldr r9, _037FFEC8 ; =_038090EC
+ add r8, sp, #24
+ mov r4, #0
+ ldr r6, _037FFECC ; =0x0000FFFF
+ ldr r5, _037FFED0 ; =0x003FFFFF
+ b _037FFEA0
+_037FFA80:
+ ldr lr, [sp, #24]
+ b _037FFE88
+_037FFA88:
+ add ip, sp, #28
+ ldmia lr!, {r0, r1, r2, r3}
+ stmia ip!, {r0, r1, r2, r3}
+ ldmia lr, {r0, r1}
+ stmia ip, {r0, r1}
+ ldr r0, [sp, #32]
+ cmp r0, #33 ; 0x21
+ addls pc, pc, r0, lsl #2
+ b _037FFE84
+ b _037FFB34
+ b _037FFB4C
+ b _037FFB58
+ b _037FFB70
+ b _037FFB7C
+ b _037FFB8C
+ b _037FFB9C
+ b _037FFBB4
+ b _037FFBDC
+ b _037FFBF0
+ b _037FFC04
+ b _037FFC20
+ b _037FFC38
+ b _037FFC50
+ b _037FFD08
+ b _037FFD74
+ b _037FFDA8
+ b _037FFC68
+ b _037FFCB0
+ b _037FFCD4
+ b _037FFCE4
+ b _037FFCF8
+ b _037FFDD4
+ b _037FFDE0
+ b _037FFDEC
+ b _037FFDF8
+ b _037FFE10
+ b _037FFE20
+ b _037FFE30
+ b _037FFE70
+ b _037FFE40
+ b _037FFE50
+ b _037FFE60
+ b _037FFE7C
+_037FFB34:
+ ldr r0, [sp, #36] ; 0x24
+ ldr r1, [sp, #40] ; 0x28
+ ldr r2, [sp, #44] ; 0x2c
+ ldr r3, [sp, #48] ; 0x30
+ bl SND_StartSeq
+ b _037FFE84
+_037FFB4C:
+ ldr r0, [sp, #36] ; 0x24
+ bl SND_StopSeq
+ b _037FFE84
+_037FFB58:
+ ldr r0, [sp, #36] ; 0x24
+ ldr r1, [sp, #40] ; 0x28
+ ldr r2, [sp, #44] ; 0x2c
+ ldr r3, [sp, #48] ; 0x30
+ bl SND_PrepareSeq
+ b _037FFE84
+_037FFB70:
+ ldr r0, [sp, #36] ; 0x24
+ bl SND_StartPreparedSeq
+ b _037FFE84
+_037FFB7C:
+ ldr r0, [sp, #36] ; 0x24
+ ldr r1, [sp, #40] ; 0x28
+ bl SND_PauseSeq
+ b _037FFE84
+_037FFB8C:
+ ldr r0, [sp, #36] ; 0x24
+ ldr r1, [sp, #40] ; 0x28
+ bl SND_SkipSeq
+ b _037FFE84
+_037FFB9C:
+ ldr r0, [sp, #36] ; 0x24
+ ldr r1, [sp, #40] ; 0x28
+ ldr r2, [sp, #44] ; 0x2c
+ ldr r3, [sp, #48] ; 0x30
+ bl SNDi_SetPlayerParam
+ b _037FFE84
+_037FFBB4:
+ ldr r1, [sp, #36] ; 0x24
+ mov r0, r1, lsr #24
+ and r0, r0, #255 ; 0xff
+ str r0, [sp]
+ bic r0, r1, #-16777216 ; 0xff000000
+ ldr r1, [sp, #40] ; 0x28
+ ldr r2, [sp, #44] ; 0x2c
+ ldr r3, [sp, #48] ; 0x30
+ bl SNDi_SetTrackParam
+ b _037FFE84
+_037FFBDC:
+ ldr r0, [sp, #36] ; 0x24
+ ldr r1, [sp, #40] ; 0x28
+ ldr r2, [sp, #44] ; 0x2c
+ bl SND_SetTrackMute
+ b _037FFE84
+_037FFBF0:
+ ldr r0, [sp, #36] ; 0x24
+ ldr r1, [sp, #40] ; 0x28
+ ldr r2, [sp, #44] ; 0x2c
+ bl SND_SetTrackAllocatableChannel
+ b _037FFE84
+_037FFC04:
+ ldr r0, [sp, #36] ; 0x24
+ ldr r1, [sp, #40] ; 0x28
+ ldr r2, [sp, #44] ; 0x2c
+ mov r2, r2, lsl #16
+ mov r2, r2, asr #16
+ bl SND_SetPlayerLocalVariable
+ b _037FFE84
+_037FFC20:
+ ldr r0, [sp, #36] ; 0x24
+ ldr r1, [sp, #40] ; 0x28
+ mov r1, r1, lsl #16
+ mov r1, r1, asr #16
+ bl SND_SetPlayerGlobalVariable
+ b _037FFE84
+_037FFC38:
+ ldr r0, [sp, #36] ; 0x24
+ ldr r1, [sp, #40] ; 0x28
+ ldr r2, [sp, #44] ; 0x2c
+ ldr r3, [sp, #48] ; 0x30
+ bl StartTimer
+ b _037FFE84
+_037FFC50:
+ ldr r0, [sp, #36] ; 0x24
+ ldr r1, [sp, #40] ; 0x28
+ ldr r2, [sp, #44] ; 0x2c
+ ldr r3, [sp, #48] ; 0x30
+ bl StopTimer
+ b _037FFE84
+_037FFC68:
+ ldr r1, [sp, #44] ; 0x2c
+ mov r0, r1, lsr #29
+ and r0, r0, #1
+ str r0, [sp]
+ mov r0, r1, lsr #28
+ and r0, r0, #1
+ str r0, [sp, #4]
+ mov r0, r1, lsr #27
+ and r0, r0, #1
+ str r0, [sp, #8]
+ mov r0, r1, lsr #31
+ and r0, r0, #1
+ mov r1, r1, lsr #30
+ and r1, r1, #1
+ ldr r2, [sp, #36] ; 0x24
+ ldr r3, [sp, #40] ; 0x28
+ bl SND_SetupCapture
+ b _037FFE84
+_037FFCB0:
+ ldr r0, [sp, #48] ; 0x30
+ str r0, [sp, #4]
+ ldr r3, [sp, #44] ; 0x2c
+ str r4, [sp]
+ ldr r0, [sp, #36] ; 0x24
+ ldr r1, [sp, #40] ; 0x28
+ mov r2, #0
+ bl SND_SetupAlarm
+ b _037FFE84
+_037FFCD4:
+ ldr r0, [sp, #36] ; 0x24
+ ldr r1, [sp, #40] ; 0x28
+ bl SetChannelTimer
+ b _037FFE84
+_037FFCE4:
+ ldr r0, [sp, #36] ; 0x24
+ ldr r1, [sp, #40] ; 0x28
+ ldr r2, [sp, #44] ; 0x2c
+ bl SetChannelVolume
+ b _037FFE84
+_037FFCF8:
+ ldr r0, [sp, #36] ; 0x24
+ ldr r1, [sp, #40] ; 0x28
+ bl SetChannelPan
+ b _037FFE84
+_037FFD08:
+ ldr r3, [sp, #48] ; 0x30
+ ldr r1, [sp, #36] ; 0x24
+ ldr r0, [sp, #44] ; 0x2c
+ and r2, r3, r6
+ str r2, [sp]
+ and r2, r0, r5
+ str r2, [sp, #4]
+ mov r2, r0, lsr #24
+ and r2, r2, #127 ; 0x7f
+ str r2, [sp, #8]
+ mov r0, r0, lsr #22
+ and r0, r0, #3
+ str r0, [sp, #12]
+ and r0, r6, r1, lsr #16
+ str r0, [sp, #16]
+ mov r0, r3, lsr #16
+ and r0, r0, #127 ; 0x7f
+ str r0, [sp, #20]
+ and r0, r1, r6
+ ldr r1, [sp, #40] ; 0x28
+ bic r1, r1, #-134217728 ; 0xf8000000
+ mov r2, r3, lsr #24
+ and r2, r2, #3
+ mov r3, r3, lsr #26
+ and r3, r3, #3
+ bl SND_SetupChannelPcm
+ b _037FFE84
+_037FFD74:
+ ldr r1, [sp, #44] ; 0x2c
+ ldr r3, [sp, #40] ; 0x28
+ and r0, r6, r1, lsr #8
+ str r0, [sp]
+ and r0, r1, #127 ; 0x7f
+ str r0, [sp, #4]
+ ldr r0, [sp, #36] ; 0x24
+ ldr r1, [sp, #48] ; 0x30
+ and r2, r3, #127 ; 0x7f
+ mov r3, r3, lsr #8
+ and r3, r3, #3
+ bl SND_SetupChannelPsg
+ b _037FFE84
+_037FFDA8:
+ ldr r3, [sp, #44] ; 0x2c
+ ldr r2, [sp, #40] ; 0x28
+ and r0, r3, #127 ; 0x7f
+ str r0, [sp]
+ ldr r0, [sp, #36] ; 0x24
+ and r1, r2, #127 ; 0x7f
+ mov r2, r2, lsr #8
+ and r2, r2, #3
+ and r3, r6, r3, lsr #8
+ bl SND_SetupChannelNoise
+ b _037FFE84
+_037FFDD4:
+ ldr r0, [sp, #36] ; 0x24
+ bl SNDi_SetSurroundDecay
+ b _037FFE84
+_037FFDE0:
+ ldr r0, [sp, #36] ; 0x24
+ bl SND_SetMasterVolume
+ b _037FFE84
+_037FFDEC:
+ ldr r0, [sp, #36] ; 0x24
+ bl SND_SetMasterPan
+ b _037FFE84
+_037FFDF8:
+ ldr r0, [sp, #36] ; 0x24
+ ldr r1, [sp, #40] ; 0x28
+ ldr r2, [sp, #44] ; 0x2c
+ ldr r3, [sp, #48] ; 0x30
+ bl SND_SetOutputSelector
+ b _037FFE84
+_037FFE10:
+ ldr r0, [sp, #36] ; 0x24
+ ldr r1, [sp, #40] ; 0x28
+ bl SND_LockChannel
+ b _037FFE84
+_037FFE20:
+ ldr r0, [sp, #36] ; 0x24
+ ldr r1, [sp, #40] ; 0x28
+ bl SND_UnlockChannel
+ b _037FFE84
+_037FFE30:
+ ldr r0, [sp, #36] ; 0x24
+ ldr r1, [sp, #40] ; 0x28
+ bl SND_StopUnlockedChannel
+ b _037FFE84
+_037FFE40:
+ ldr r0, [sp, #36] ; 0x24
+ ldr r1, [sp, #40] ; 0x28
+ bl SND_InvalidateSeq
+ b _037FFE84
+_037FFE50:
+ ldr r0, [sp, #36] ; 0x24
+ ldr r1, [sp, #40] ; 0x28
+ bl SND_InvalidateBank
+ b _037FFE84
+_037FFE60:
+ ldr r0, [sp, #36] ; 0x24
+ ldr r1, [sp, #40] ; 0x28
+ bl SND_InvalidateWave
+ b _037FFE84
+_037FFE70:
+ ldr r0, [sp, #36] ; 0x24
+ str r0, [r7]
+ b _037FFE84
+_037FFE7C:
+ ldr r0, [sp, #36] ; 0x24
+ bl ReadDriverInfo
+_037FFE84:
+ ldr lr, [sp, #28]
+_037FFE88:
+ cmp lr, #0
+ bne _037FFA88
+ ldr r1, [r7]
+ ldr r0, [r1]
+ add r0, r0, #1
+ str r0, [r1]
+_037FFEA0:
+ mov r0, r9
+ mov r1, r8
+ mov r2, r4
+ bl OS_ReceiveMessage
+ cmp r0, #0
+ bne _037FFA80
+ add sp, sp, #52 ; 0x34
+ ldmia sp!, {r4, r5, r6, r7, r8, r9, lr}
+ bx lr
+_037FFEC4: .word SNDi_SharedWork
+_037FFEC8: .word _038090EC
+_037FFECC: .word 0x0000FFFF
+_037FFED0: .word 0x003FFFFF
+
+ arm_func_start SND_CommandInit
+SND_CommandInit: ; 0x037FFED4
+ stmfd sp!, {lr}
+ sub sp, sp, #4
+ ldr r0, _037FFF08 ; =_038090EC
+ ldr r1, _037FFF0C ; =_0380910C
+ mov r2, #8
+ bl OS_InitMessageQueue
+ bl InitPXI
+ mov r1, #0
+ ldr r0, _037FFF10 ; =SNDi_SharedWork
+ str r1, [r0]
+ add sp, sp, #4
+ ldmia sp!, {lr}
+ bx lr
+_037FFF08: .word _038090EC
+_037FFF0C: .word _0380910C
+_037FFF10: .word SNDi_SharedWork
diff --git a/arm7/asm/SND_exChannel.s b/arm7/asm/SND_exChannel.s
new file mode 100644
index 00000000..b1ac819b
--- /dev/null
+++ b/arm7/asm/SND_exChannel.s
@@ -0,0 +1,645 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+
+ .text
+
+ arm_func_start SND_FreeExChannel
+SND_FreeExChannel: ; 0x037FCB80
+ cmp r0, #0
+ movne r1, #0
+ strne r1, [r0, #72] ; 0x48
+ strne r1, [r0, #76] ; 0x4c
+ bx lr
+
+ arm_func_start SND_AllocExChannel
+SND_AllocExChannel: ; 0x037FCB94
+ stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr}
+ sub sp, sp, #4
+ mov sl, r0
+ mov r9, r1
+ mov fp, r3
+ ldr r0, _037FCCBC ; =_03807F48
+ ldr r0, [r0]
+ mvn r0, r0
+ and sl, sl, r0
+ cmp r2, #0
+ ldreq r0, _037FCCC0 ; =_03807F44
+ ldreq r0, [r0]
+ mvneq r0, r0
+ andeq sl, sl, r0
+ mov r8, #0
+ mov r7, r8
+ mov r5, #1
+ mov r4, #84 ; 0x54
+_037FCBDC:
+ ldr r0, _037FCCC4 ; =_03807298
+ ldrb r1, [r0, r7]
+ mov r0, r5, lsl r1
+ ands r0, sl, r0
+ beq _037FCC34
+ ldr r0, _037FCCC8 ; =SNDi_Work
+ mla r6, r1, r4, r0
+ cmp r8, #0
+ moveq r8, r6
+ beq _037FCC34
+ ldrb r1, [r8, #34] ; 0x22
+ ldrb r0, [r6, #34] ; 0x22
+ cmp r0, r1
+ bhi _037FCC34
+ cmp r0, r1
+ bne _037FCC30
+ mov r0, r8
+ mov r1, r6
+ bl FUN_037FC63C
+ cmp r0, #0
+ bge _037FCC34
+_037FCC30:
+ mov r8, r6
+_037FCC34:
+ add r7, r7, #1
+ cmp r7, #16
+ blt _037FCBDC
+ cmp r8, #0
+ moveq r0, #0
+ beq _037FCCB0
+ ldrb r0, [r8, #34] ; 0x22
+ cmp r9, r0
+ movlt r0, #0
+ blt _037FCCB0
+ ldr r3, [r8, #72] ; 0x48
+ cmp r3, #0
+ beq _037FCC7C
+ mov r0, r8
+ mov r1, #0
+ ldr r2, [r8, #76] ; 0x4c
+ mov lr, pc
+ bx r3
+_037FCC7C:
+ ldrb r0, [r8, #3]
+ bic r0, r0, #248 ; 0xf8
+ orr r0, r0, #16
+ strb r0, [r8, #3]
+ ldrb r0, [r8, #3]
+ bic r0, r0, #1
+ strb r0, [r8, #3]
+ mov r0, r8
+ mov r1, fp
+ ldr r2, [sp, #40] ; 0x28
+ mov r3, r9
+ bl FUN_037FC6E8
+ mov r0, r8
+_037FCCB0:
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr}
+ bx lr
+_037FCCBC: .word _03807F48
+_037FCCC0: .word _03807F44
+_037FCCC4: .word _03807298
+_037FCCC8: .word SNDi_Work
+
+ arm_func_start SND_IsExChannelActive
+SND_IsExChannelActive: ; 0x037FCCCC
+ ldrb r0, [r0, #3]
+ mov r0, r0, lsl #31
+ mov r0, r0, lsr #31
+ bx lr
+
+ arm_func_start SND_ReleaseExChannel
+SND_ReleaseExChannel: ; 0x037FCCDC
+ mov r1, #3
+ strb r1, [r0, #2]
+ bx lr
+
+ arm_func_start SND_SetExChannelRelease
+SND_SetExChannelRelease: ; 0x037FCCE8
+ stmdb sp!, {r4, lr}
+ mov r4, r0
+ mov r0, r1
+ bl FUN_037FC794
+ strh r0, [r4, #32]
+ ldmia sp!, {r4, lr}
+ bx lr
+
+ arm_func_start SND_SetExChannelSustain
+SND_SetExChannelSustain: ; 0x037FCD04
+ strb r1, [r0, #29]
+ bx lr
+
+ arm_func_start SND_SetExChannelDecay
+SND_SetExChannelDecay: ; 0x037FCD0C
+ stmdb sp!, {r4, lr}
+ mov r4, r0
+ mov r0, r1
+ bl FUN_037FC794
+ strh r0, [r4, #30]
+ ldmia sp!, {r4, lr}
+ bx lr
+
+ arm_func_start SND_SetExChannelAttack
+SND_SetExChannelAttack: ; 0x037FCD28
+ cmp r1, #109 ; 0x6d
+ rsblt r1, r1, #255 ; 0xff
+ strltb r1, [r0, #28]
+ rsbge r2, r1, #127 ; 0x7f
+ ldrge r1, _037FCD48 ; =_038072A8
+ ldrgeb r1, [r1, r2]
+ strgeb r1, [r0, #28]
+ bx lr
+_037FCD48: .word _038072A8
+
+ arm_func_start SND_UpdateExChannelEnvelope
+SND_UpdateExChannelEnvelope: ; 0x037FCD4C
+ cmp r1, #0
+ beq _037FCDF0
+ ldrb r1, [r0, #2]
+ cmp r1, #3
+ addls pc, pc, r1, lsl #2
+ b _037FCDF0
+ b _037FCD74
+ b _037FCDA4
+ b _037FCDF0
+ b _037FCDE0
+_037FCD74:
+ ldr r1, [r0, #16]
+ rsb r2, r1, #0
+ ldrb r1, [r0, #28]
+ mul r1, r2, r1
+ mov r1, r1, asr #8
+ rsb r1, r1, #0
+ str r1, [r0, #16]
+ ldr r1, [r0, #16]
+ cmp r1, #0
+ moveq r1, #1
+ streqb r1, [r0, #2]
+ b _037FCDF0
+_037FCDA4:
+ ldrb r1, [r0, #29]
+ mov r2, r1, lsl #1
+ ldr r1, _037FCDFC ; =SNDi_DecibelSquareTable
+ ldrsh r1, [r1, r2]
+ mov r3, r1, lsl #7
+ ldr r2, [r0, #16]
+ ldrh r1, [r0, #30]
+ sub r1, r2, r1
+ str r1, [r0, #16]
+ ldr r1, [r0, #16]
+ cmp r1, r3
+ strle r3, [r0, #16]
+ movle r1, #2
+ strleb r1, [r0, #2]
+ b _037FCDF0
+_037FCDE0:
+ ldr r2, [r0, #16]
+ ldrh r1, [r0, #32]
+ sub r1, r2, r1
+ str r1, [r0, #16]
+_037FCDF0:
+ ldr r0, [r0, #16]
+ mov r0, r0, asr #7
+ bx lr
+_037FCDFC: .word SNDi_DecibelSquareTable
+
+ arm_func_start SND_StartExChannelNoise
+SND_StartExChannelNoise: ; 0x037FCE00
+ stmfd sp!, {lr}
+ sub sp, sp, #4
+ ldrb r2, [r0]
+ cmp r2, #14
+ movcc r0, #0
+ bcc _037FCE3C
+ cmp r2, #15
+ movhi r0, #0
+ bhi _037FCE3C
+ mov r2, #2
+ strb r2, [r0, #1]
+ ldr r2, _037FCE48 ; =0x00001F46
+ strh r2, [r0, #60] ; 0x3c
+ bl FUN_037FC69C
+ mov r0, #1
+_037FCE3C:
+ add sp, sp, #4
+ ldmia sp!, {lr}
+ bx lr
+_037FCE48: .word 0x00001F46
+
+ arm_func_start SND_StartExChannelPsg
+SND_StartExChannelPsg: ; 0x037FCE4C
+ stmfd sp!, {lr}
+ sub sp, sp, #4
+ ldrb r3, [r0]
+ cmp r3, #8
+ movcc r0, #0
+ bcc _037FCE90
+ cmp r3, #13
+ movhi r0, #0
+ bhi _037FCE90
+ mov r3, #1
+ strb r3, [r0, #1]
+ str r1, [r0, #68] ; 0x44
+ ldr r1, _037FCE9C ; =0x00001F46
+ strh r1, [r0, #60] ; 0x3c
+ mov r1, r2
+ bl FUN_037FC69C
+ mov r0, #1
+_037FCE90:
+ add sp, sp, #4
+ ldmia sp!, {lr}
+ bx lr
+_037FCE9C: .word 0x00001F46
+
+ arm_func_start SND_StartExChannelPcm
+SND_StartExChannelPcm: ; 0x037FCEA0
+ stmdb sp!, {r4, lr}
+ mov r4, r0
+ mov lr, r2
+ mov r0, #0
+ strb r0, [r4, #1]
+ add ip, r4, #56 ; 0x38
+ ldmia r1, {r0, r1, r2}
+ stmia ip, {r0, r1, r2}
+ str lr, [r4, #68] ; 0x44
+ mov r0, r4
+ mov r1, r3
+ bl FUN_037FC69C
+ mov r0, #1
+ ldmia sp!, {r4, lr}
+ bx lr
+
+ arm_func_start SND_ExChannelMain
+SND_ExChannelMain: ; 0x037FCEDC
+ stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr}
+ sub sp, sp, #28
+ mov r6, r0
+ mov r4, #0
+ mov fp, r4
+ mov r7, #1
+ str r4, [sp, #8]
+ mov r0, #127 ; 0x7f
+ str r0, [sp, #20]
+ str r4, [sp, #16]
+ str r4, [sp, #12]
+ str r4, [sp, #4]
+ str r4, [sp]
+_037FCF10:
+ ldr r8, [sp]
+ mov sl, r8
+ mov r9, r8
+ mov r1, #84 ; 0x54
+ ldr r0, _037FD1E4 ; =SNDi_Work
+ mla r5, r4, r1, r0
+ ldrb r1, [r5, #3]
+ mov r0, r1, lsl #31
+ movs r0, r0, lsr #31
+ beq _037FD1CC
+ mov r0, r1, lsl #30
+ movs r0, r0, lsr #31
+ beq _037FCF74
+ bic r0, r1, #248 ; 0xf8
+ mov r1, r1, lsl #24
+ mov r1, r1, lsr #27
+ orr r1, r1, #1
+ and r1, r1, #255 ; 0xff
+ and r1, r1, #31
+ orr r0, r0, r1, lsl #3
+ strb r0, [r5, #3]
+ ldrb r0, [r5, #3]
+ bic r0, r0, #2
+ strb r0, [r5, #3]
+ b _037FCFC0
+_037FCF74:
+ mov r0, r4
+ bl SND_IsChannelActive
+ cmp r0, #0
+ bne _037FCFC0
+ ldr r3, [r5, #72] ; 0x48
+ cmp r3, #0
+ streqb fp, [r5, #34] ; 0x22
+ beq _037FCFA8
+ mov r0, r5
+ mov r1, r7
+ ldr r2, [r5, #76] ; 0x4c
+ mov lr, pc
+ bx r3
+_037FCFA8:
+ ldr r0, [sp, #4]
+ strh r0, [r5, #36] ; 0x24
+ ldrb r0, [r5, #3]
+ bic r0, r0, #1
+ strb r0, [r5, #3]
+ b _037FD1CC
+_037FCFC0:
+ ldrb r0, [r5, #9]
+ mov r1, r0, lsl #1
+ ldr r0, _037FD1E8 ; =SNDi_DecibelSquareTable
+ ldrsh r0, [r0, r1]
+ add r8, r8, r0
+ ldrb r1, [r5, #8]
+ ldrb r0, [r5, #5]
+ sub r0, r1, r0
+ add sl, sl, r0, lsl #6
+ mov r0, r5
+ mov r1, r6
+ bl SND_UpdateExChannelEnvelope
+ add r8, r8, r0
+ mov r0, r5
+ mov r1, r6
+ bl FUN_037FC5CC
+ add r2, sl, r0
+ ldrsh r0, [r5, #12]
+ add r1, r8, r0
+ ldrsh r0, [r5, #6]
+ add r8, r1, r0
+ ldrsh r0, [r5, #14]
+ add sl, r2, r0
+ mov r0, r5
+ mov r1, r6
+ bl FUN_037FC530
+ ldrb r1, [r5, #40] ; 0x28
+ cmp r1, #0
+ beq _037FD05C
+ cmp r1, #1
+ beq _037FD048
+ cmp r1, #2
+ addeq r9, r9, r0
+ b _037FD060
+_037FD048:
+ mov r1, #32768 ; 0x8000
+ rsb r1, r1, #0
+ cmp r8, r1
+ addgt r8, r8, r0
+ b _037FD060
+_037FD05C:
+ add sl, sl, r0
+_037FD060:
+ ldrsb r0, [r5, #10]
+ add r9, r9, r0
+ ldrb r0, [r5, #4]
+ cmp r0, #127 ; 0x7f
+ mulne r0, r9, r0
+ addne r0, r0, #64 ; 0x40
+ movne r9, r0, asr #7
+ ldrsb r0, [r5, #11]
+ add r9, r9, r0
+ ldrb r0, [r5, #2]
+ cmp r0, #3
+ bne _037FD0EC
+ ldr r0, _037FD1EC ; =0xFFFFFD2D
+ cmp r8, r0
+ bgt _037FD0EC
+ ldrb r0, [r5, #3]
+ bic r0, r0, #248 ; 0xf8
+ orr r0, r0, #16
+ strb r0, [r5, #3]
+ ldr r3, [r5, #72] ; 0x48
+ cmp r3, #0
+ ldreq r0, [sp, #8]
+ streqb r0, [r5, #34] ; 0x22
+ beq _037FD0D4
+ mov r0, r5
+ mov r1, r7
+ ldr r2, [r5, #76] ; 0x4c
+ mov lr, pc
+ bx r3
+_037FD0D4:
+ ldr r0, [sp, #12]
+ strh r0, [r5, #36] ; 0x24
+ ldrb r0, [r5, #3]
+ bic r0, r0, #1
+ strb r0, [r5, #3]
+ b _037FD1CC
+_037FD0EC:
+ mov r0, r8
+ bl SND_CalcChannelVolume
+ mov r8, r0
+ ldrh r0, [r5, #60] ; 0x3c
+ mov r1, sl
+ bl SND_CalcTimer
+ ldrb r1, [r5, #1]
+ cmp r1, #1
+ ldreq r1, _037FD1F0 ; =0x0000FFFC
+ andeq r0, r0, r1
+ moveq r0, r0, lsl #16
+ moveq r0, r0, lsr #16
+ adds r9, r9, #64 ; 0x40
+ ldrmi r9, [sp, #16]
+ bmi _037FD130
+ cmp r9, #127 ; 0x7f
+ ldrgt r9, [sp, #20]
+_037FD130:
+ ldrh r1, [r5, #36] ; 0x24
+ cmp r8, r1
+ beq _037FD164
+ strh r8, [r5, #36] ; 0x24
+ ldrb r2, [r5, #3]
+ bic r1, r2, #248 ; 0xf8
+ mov r2, r2, lsl #24
+ mov r2, r2, lsr #27
+ orr r2, r2, #8
+ and r2, r2, #255 ; 0xff
+ and r2, r2, #31
+ orr r1, r1, r2, lsl #3
+ strb r1, [r5, #3]
+_037FD164:
+ ldrh r1, [r5, #38] ; 0x26
+ cmp r0, r1
+ beq _037FD198
+ strh r0, [r5, #38] ; 0x26
+ ldrb r0, [r5, #3]
+ bic r1, r0, #248 ; 0xf8
+ mov r0, r0, lsl #24
+ mov r0, r0, lsr #27
+ orr r0, r0, #4
+ and r0, r0, #255 ; 0xff
+ and r0, r0, #31
+ orr r0, r1, r0, lsl #3
+ strb r0, [r5, #3]
+_037FD198:
+ ldrb r0, [r5, #35] ; 0x23
+ cmp r9, r0
+ beq _037FD1CC
+ strb r9, [r5, #35] ; 0x23
+ ldrb r0, [r5, #3]
+ bic r1, r0, #248 ; 0xf8
+ mov r0, r0, lsl #24
+ mov r0, r0, lsr #27
+ orr r0, r0, #16
+ and r0, r0, #255 ; 0xff
+ and r0, r0, #31
+ orr r0, r1, r0, lsl #3
+ strb r0, [r5, #3]
+_037FD1CC:
+ add r4, r4, #1
+ cmp r4, #16
+ blt _037FCF10
+ add sp, sp, #28
+ ldmia sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr}
+ bx lr
+_037FD1E4: .word SNDi_Work
+_037FD1E8: .word SNDi_DecibelSquareTable
+_037FD1EC: .word 0xFFFFFD2D
+_037FD1F0: .word 0x0000FFFC
+
+ arm_func_start SND_UpdateExChannel
+SND_UpdateExChannel: ; 0x037FD1F4
+ stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, lr}
+ sub sp, sp, #24
+ mov r8, #0
+ mov r4, #2
+ mov r5, #1
+ mov r6, r8
+ ldr r7, _037FD3DC ; =SNDi_Work
+ mov sl, #84 ; 0x54
+_037FD214:
+ mla r9, r8, sl, r7
+ ldrb r0, [r9, #3]
+ mov r0, r0, lsl #24
+ movs r0, r0, lsr #27
+ beq _037FD374
+ ands r0, r0, #2
+ beq _037FD23C
+ mov r0, r8
+ mov r1, r6
+ bl SND_StopChannel
+_037FD23C:
+ ldrb r0, [r9, #3]
+ mov r0, r0, lsl #24
+ mov r1, r0, lsr #27
+ ands r0, r1, #1
+ beq _037FD318
+ ldrb r0, [r9, #1]
+ cmp r0, #0
+ beq _037FD270
+ cmp r0, #1
+ beq _037FD2C8
+ cmp r0, #2
+ beq _037FD2F4
+ b _037FD374
+_037FD270:
+ ldrb r0, [r9, #57] ; 0x39
+ cmp r0, #0
+ movne r3, r5
+ moveq r3, r4
+ ldrh r1, [r9, #36] ; 0x24
+ ldrh r0, [r9, #62] ; 0x3e
+ str r0, [sp]
+ ldr r0, [r9, #64] ; 0x40
+ str r0, [sp, #4]
+ and r0, r1, #255 ; 0xff
+ str r0, [sp, #8]
+ mov r0, r1, asr #8
+ str r0, [sp, #12]
+ ldrh r0, [r9, #38] ; 0x26
+ str r0, [sp, #16]
+ ldrb r0, [r9, #35] ; 0x23
+ str r0, [sp, #20]
+ mov r0, r8
+ ldr r1, [r9, #68] ; 0x44
+ ldrb r2, [r9, #56] ; 0x38
+ bl SND_SetupChannelPcm
+ b _037FD374
+_037FD2C8:
+ ldrh r3, [r9, #36] ; 0x24
+ ldrh r0, [r9, #38] ; 0x26
+ str r0, [sp]
+ ldrb r0, [r9, #35] ; 0x23
+ str r0, [sp, #4]
+ mov r0, r8
+ ldr r1, [r9, #68] ; 0x44
+ and r2, r3, #255 ; 0xff
+ mov r3, r3, asr #8
+ bl SND_SetupChannelPsg
+ b _037FD374
+_037FD2F4:
+ ldrh r2, [r9, #36] ; 0x24
+ ldrb r0, [r9, #35] ; 0x23
+ str r0, [sp]
+ mov r0, r8
+ and r1, r2, #255 ; 0xff
+ mov r2, r2, asr #8
+ ldrh r3, [r9, #38] ; 0x26
+ bl SND_SetupChannelNoise
+ b _037FD374
+_037FD318:
+ ands r0, r1, #4
+ beq _037FD32C
+ mov r0, r8
+ ldrh r1, [r9, #38] ; 0x26
+ bl SND_SetChannelTimer
+_037FD32C:
+ ldrb r0, [r9, #3]
+ mov r0, r0, lsl #24
+ mov r0, r0, lsr #27
+ ands r0, r0, #8
+ beq _037FD354
+ ldrh r2, [r9, #36] ; 0x24
+ mov r0, r8
+ and r1, r2, #255 ; 0xff
+ mov r2, r2, asr #8
+ bl SND_SetChannelVolume
+_037FD354:
+ ldrb r0, [r9, #3]
+ mov r0, r0, lsl #24
+ mov r0, r0, lsr #27
+ ands r0, r0, #16
+ beq _037FD374
+ mov r0, r8
+ ldrb r1, [r9, #35] ; 0x23
+ bl SND_SetChannelPan
+_037FD374:
+ add r8, r8, #1
+ cmp r8, #16
+ blt _037FD214
+ mov r5, #0
+ ldr r3, _037FD3DC ; =SNDi_Work
+ mov r1, #84 ; 0x54
+_037FD38C:
+ mla r4, r5, r1, r3
+ ldrb r0, [r4, #3]
+ mov r0, r0, lsl #24
+ movs r0, r0, lsr #27
+ beq _037FD3C4
+ ands r0, r0, #1
+ movne r0, r5, lsl #4
+ addne r0, r0, #67108864 ; 0x4000000
+ ldrneb r2, [r0, #1027] ; 0x403
+ orrne r2, r2, #128 ; 0x80
+ strneb r2, [r0, #1027] ; 0x403
+ ldrb r0, [r4, #3]
+ bic r0, r0, #248 ; 0xf8
+ strb r0, [r4, #3]
+_037FD3C4:
+ add r5, r5, #1
+ cmp r5, #16
+ blt _037FD38C
+ add sp, sp, #24
+ ldmia sp!, {r4, r5, r6, r7, r8, r9, sl, lr}
+ bx lr
+_037FD3DC: .word SNDi_Work
+
+ arm_func_start SND_ExChannelInit
+SND_ExChannelInit: ; 0x037FD3E0
+ mov ip, #0
+ ldr r2, _037FD434 ; =SNDi_Work
+ mov r0, #84 ; 0x54
+_037FD3EC:
+ mul r1, ip, r0
+ add r3, r2, r1
+ strb ip, [r2, r1]
+ ldrb r1, [r3, #3]
+ bic r1, r1, #248 ; 0xf8
+ strb r1, [r3, #3]
+ ldrb r1, [r3, #3]
+ bic r1, r1, #1
+ strb r1, [r3, #3]
+ add ip, ip, #1
+ cmp ip, #16
+ blt _037FD3EC
+ mov r1, #0
+ ldr r0, _037FD438 ; =_03807F48
+ str r1, [r0]
+ ldr r0, _037FD43C ; =_03807F44
+ str r1, [r0]
+ bx lr
+_037FD434: .word SNDi_Work
+_037FD438: .word _03807F48
+_037FD43C: .word _03807F44
diff --git a/arm7/asm/SND_lfo.s b/arm7/asm/SND_lfo.s
new file mode 100644
index 00000000..cca10305
--- /dev/null
+++ b/arm7/asm/SND_lfo.s
@@ -0,0 +1,77 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+
+ .text
+
+ arm_func_start SND_GetLfoValue
+SND_GetLfoValue: ; 0x037FC7F4
+ stmdb sp!, {r4, lr}
+ mov r4, r0
+ ldrb r0, [r4, #2]
+ cmp r0, #0
+ moveq r0, #0
+ beq _037FC83C
+ ldrh r1, [r4, #6]
+ ldrh r0, [r4, #4]
+ cmp r1, r0
+ movcc r0, #0
+ bcc _037FC83C
+ ldrh r0, [r4, #8]
+ mov r0, r0, lsr #8
+ bl SND_SinIdx
+ ldrb r2, [r4, #3]
+ ldrb r1, [r4, #2]
+ mul r0, r1, r0
+ mul r0, r2, r0
+_037FC83C:
+ ldmia sp!, {r4, lr}
+ bx lr
+
+ arm_func_start SND_UpdateLfo
+SND_UpdateLfo: ; 0x037FC844
+ ldrh r2, [r0, #6]
+ ldrh r1, [r0, #4]
+ cmp r2, r1
+ addcc r1, r2, #1
+ strcch r1, [r0, #6]
+ bxcc lr
+ ldrh r2, [r0, #8]
+ ldrb r1, [r0, #1]
+ mov r3, r1, lsl #6
+ add r1, r2, r1, lsl #6
+ mov r2, r1, lsr #8
+ b _037FC878
+_037FC874:
+ sub r2, r2, #128 ; 0x80
+_037FC878:
+ cmp r2, #128 ; 0x80
+ bcs _037FC874
+ ldrh r1, [r0, #8]
+ add r1, r1, r3
+ strh r1, [r0, #8]
+ ldrh r1, [r0, #8]
+ and r1, r1, #255 ; 0xff
+ strh r1, [r0, #8]
+ ldrh r1, [r0, #8]
+ orr r1, r1, r2, lsl #8
+ strh r1, [r0, #8]
+ bx lr
+
+ arm_func_start SND_StartLfo
+SND_StartLfo: ; 0x037FC8A8
+ mov r1, #0
+ strh r1, [r0, #8]
+ strh r1, [r0, #6]
+ bx lr
+
+ arm_func_start SND_InitLfoParam
+SND_InitLfoParam: ; 0x037FC8B8
+ mov r2, #0
+ strb r2, [r0]
+ strb r2, [r0, #2]
+ mov r1, #1
+ strb r1, [r0, #3]
+ mov r1, #16
+ strb r1, [r0, #1]
+ strh r2, [r0, #4]
+ bx lr
diff --git a/arm7/asm/SND_lockChannel.s b/arm7/asm/SND_lockChannel.s
new file mode 100644
index 00000000..b525e0d1
--- /dev/null
+++ b/arm7/asm/SND_lockChannel.s
@@ -0,0 +1,167 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+
+ .section .bss
+
+ .global _03807F48
+_03807F48: ;0x03807F48
+ .space 0x03807F4C - 0x03807F48
+
+ .section .text
+
+ arm_func_start SND_GetLockedChannel
+SND_GetLockedChannel: ; 0x037FC964
+ ands r0, r0, #1
+ ldrne r0, _037FC97C ; =_03807F44
+ ldrne r0, [r0]
+ ldreq r0, _037FC980 ; =_03807F48
+ ldreq r0, [r0]
+ bx lr
+_037FC97C: .word _03807F44
+_037FC980: .word _03807F48
+
+ arm_func_start SND_UnlockChannel
+SND_UnlockChannel: ; 0x037FC984
+ ands r1, r1, #1
+ ldreq r1, _037FC9B8 ; =_03807F48
+ ldreq r2, [r1]
+ mvneq r0, r0
+ andeq r0, r2, r0
+ streq r0, [r1]
+ bxeq lr
+ ldr r1, _037FC9BC ; =_03807F44
+ ldr r2, [r1]
+ mvn r0, r0
+ and r0, r2, r0
+ str r0, [r1]
+ bx lr
+_037FC9B8: .word _03807F48
+_037FC9BC: .word _03807F44
+
+ arm_func_start SND_LockChannel
+SND_LockChannel: ; 0x037FC9C0
+ stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr}
+ sub sp, sp, #4
+ mov sl, r0
+ mov r9, r1
+ mov r7, sl
+ mov r6, #0
+ mov fp, r6
+ str r6, [sp]
+ mov r4, r6
+ mov r5, #1
+ b _037FCA6C
+_037FC9EC:
+ ands r0, r7, #1
+ beq _037FCA64
+ mov r1, #84 ; 0x54
+ ldr r0, _037FCAAC ; =SNDi_Work
+ mla r8, r6, r1, r0
+ ldr r0, _037FCAB0 ; =_03807F48
+ ldr r1, [r0]
+ mov r0, r5, lsl r6
+ ands r0, r1, r0
+ bne _037FCA64
+ ldr r3, [r8, #72] ; 0x48
+ cmp r3, #0
+ beq _037FCA34
+ mov r0, r8
+ mov r1, fp
+ ldr r2, [r8, #76] ; 0x4c
+ mov lr, pc
+ bx r3
+_037FCA34:
+ mov r0, r6
+ ldr r1, [sp]
+ bl SND_StopChannel
+ strb r4, [r8, #34] ; 0x22
+ mov r0, r8
+ bl SND_FreeExChannel
+ ldrb r0, [r8, #3]
+ bic r0, r0, #248 ; 0xf8
+ strb r0, [r8, #3]
+ ldrb r0, [r8, #3]
+ bic r0, r0, #1
+ strb r0, [r8, #3]
+_037FCA64:
+ add r6, r6, #1
+ mov r7, r7, lsr #1
+_037FCA6C:
+ cmp r6, #16
+ bge _037FCA7C
+ cmp r7, #0
+ bne _037FC9EC
+_037FCA7C:
+ ands r0, r9, #1
+ ldrne r0, _037FCAB4 ; =_03807F44
+ ldrne r1, [r0]
+ orrne r1, r1, sl
+ strne r1, [r0]
+ ldreq r0, _037FCAB0 ; =_03807F48
+ ldreq r1, [r0]
+ orreq r1, r1, sl
+ streq r1, [r0]
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr}
+ bx lr
+_037FCAAC: .word SNDi_Work
+_037FCAB0: .word _03807F48
+_037FCAB4: .word _03807F44
+
+ arm_func_start SND_StopUnlockedChannel
+SND_StopUnlockedChannel: ; 0x037FCAB8
+ stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr}
+ sub sp, sp, #4
+ mov sl, r0
+ mov r8, #0
+ mov r6, r8
+ mov r5, r8
+ mov r4, r8
+ ldr fp, _037FCB78 ; =SNDi_Work
+ mov r7, #1
+ b _037FCB5C
+_037FCAE0:
+ ands r0, sl, #1
+ beq _037FCB54
+ mov r0, #84 ; 0x54
+ mla r9, r8, r0, fp
+ ldr r0, _037FCB7C ; =_03807F48
+ ldr r1, [r0]
+ mov r0, r7, lsl r8
+ ands r0, r1, r0
+ bne _037FCB54
+ ldr r3, [r9, #72] ; 0x48
+ cmp r3, #0
+ beq _037FCB24
+ mov r0, r9
+ mov r1, r6
+ ldr r2, [r9, #76] ; 0x4c
+ mov lr, pc
+ bx r3
+_037FCB24:
+ mov r0, r8
+ mov r1, r5
+ bl SND_StopChannel
+ strb r4, [r9, #34] ; 0x22
+ mov r0, r9
+ bl SND_FreeExChannel
+ ldrb r0, [r9, #3]
+ bic r0, r0, #248 ; 0xf8
+ strb r0, [r9, #3]
+ ldrb r0, [r9, #3]
+ bic r0, r0, #1
+ strb r0, [r9, #3]
+_037FCB54:
+ add r8, r8, #1
+ mov sl, sl, lsr #1
+_037FCB5C:
+ cmp r8, #16
+ bge _037FCB6C
+ cmp sl, #0
+ bne _037FCAE0
+_037FCB6C:
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr}
+ bx lr
+_037FCB78: .word SNDi_Work
+_037FCB7C: .word _03807F48
diff --git a/arm7/asm/SND_main.s b/arm7/asm/SND_main.s
new file mode 100644
index 00000000..2353d2c2
--- /dev/null
+++ b/arm7/asm/SND_main.s
@@ -0,0 +1,197 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+
+ .section .bss
+
+ .global _03807A30
+_03807A30: ;0x03807A30
+ .space 0x03807A34 - 0x03807A30
+
+ .global _03807A34
+_03807A34: ;0x03807A34
+ .space 0x03807A54 - 0x03807A34
+
+ .global _03807A54
+_03807A54: ;0x03807A54
+ .space 0x03807A74 - 0x03807A54
+
+ .global _03807A74
+_03807A74: ;0x03807A74
+ .space 0x03807AA0 - 0x03807A74
+
+ .global _03807AA0
+_03807AA0: ;0x03807AA0
+ .space 0x03807F44 - 0x03807AA0
+
+ .global _03807F44
+_03807F44: ;0x03807F44
+ .space 0x03807F48 - 0x03807F44
+
+ .section .text
+
+ arm_func_start SndThread
+SndThread: ; 0x037FC2B0
+ stmdb sp!, {r4, r5, r6, lr}
+ bl SND_InitIntervalTimer
+ bl SND_ExChannelInit
+ bl SND_SeqInit
+ bl SND_AlarmInit
+ bl SND_Enable
+ mov r0, #0
+ mov r1, r0
+ mov r2, r0
+ mov r3, r0
+ bl SND_SetOutputSelector
+ mov r0, #127 ; 0x7f
+ bl SND_SetMasterVolume
+ bl SND_StartIntervalTimer
+ mov r4, #1
+ mov r5, #0
+_037FC2F0:
+ mov r6, r5
+ bl SND_WaitForIntervalTimer
+ cmp r0, #1
+ beq _037FC308
+ cmp r0, #2
+ b _037FC30C
+_037FC308:
+ mov r6, r4
+_037FC30C:
+ bl SND_UpdateExChannel
+ bl SND_CommandProc
+ mov r0, r6
+ bl SND_SeqMain
+ mov r0, r6
+ bl SND_ExChannelMain
+ bl SND_UpdateSharedWork
+ bl SND_CalcRandom
+ b _037FC2F0
+_037FC330:
+ ldr r0, _037FC344 ; =_03807A54
+ mov r1, #1
+ mov r2, #0
+ ldr ip, _037FC348 ; =OS_SendMessage
+ bx ip
+_037FC344: .word _03807A54
+_037FC348: .word OS_SendMessage
+
+ arm_func_start SNDi_UnlockMutex
+SNDi_UnlockMutex: ; 0x037FC34C
+ bx lr
+
+ arm_func_start SNDi_LockMutex
+SNDi_LockMutex: ; 0x037FC350
+ bx lr
+
+ arm_func_start SND_SendWakeupMessage
+SND_SendWakeupMessage: ; 0x037FC354
+ ldr r0, _037FC368 ; =_03807A54
+ mov r1, #2
+ mov r2, #0
+ ldr ip, _037FC36C ; =OS_SendMessage
+ bx ip
+_037FC368: .word _03807A54
+_037FC36C: .word OS_SendMessage
+
+ arm_func_start SND_WaitForIntervalTimer
+SND_WaitForIntervalTimer: ; 0x037FC370
+ stmfd sp!, {lr}
+ sub sp, sp, #4
+ ldr r0, _037FC398 ; =_03807A54
+ add r1, sp, #0
+ mov r2, #1
+ bl OS_ReceiveMessage
+ ldr r0, [sp]
+ add sp, sp, #4
+ ldmia sp!, {lr}
+ bx lr
+_037FC398: .word _03807A54
+
+ arm_func_start SND_StopIntervalTimer
+SND_StopIntervalTimer: ; 0x037FC39C
+ ldr r0, _037FC3A8 ; =_03807A74
+ ldr ip, _037FC3AC ; =OS_CancelAlarm
+ bx ip
+_037FC3A8: .word _03807A74
+_037FC3AC: .word OS_CancelAlarm
+
+ arm_func_start SND_StartIntervalTimer
+SND_StartIntervalTimer: ; 0x037FC3B0
+ stmfd sp!, {lr}
+ sub sp, sp, #12
+ bl OS_GetTick
+ mov ip, r0
+ ldr r0, _037FC3FC ; =_037FC330
+ str r0, [sp, #4]
+ mov r0, #0
+ str r0, [sp, #8]
+ ldr r3, _037FC400 ; =0x00000AA8
+ str r0, [sp]
+ ldr r0, _037FC404 ; =_03807A74
+ mov r2, #65536 ; 0x10000
+ adds ip, ip, r2
+ adc r2, r1, #0
+ mov r1, ip
+ bl OS_SetPeriodicAlarm
+ add sp, sp, #12
+ ldmia sp!, {lr}
+ bx lr
+_037FC3FC: .word _037FC330
+_037FC400: .word 0x00000AA8
+_037FC404: .word _03807A74
+
+ arm_func_start SND_InitIntervalTimer
+SND_InitIntervalTimer: ; 0x037FC408
+ stmfd sp!, {lr}
+ sub sp, sp, #4
+ ldr r0, _037FC434 ; =_03807A54
+ ldr r1, _037FC438 ; =_03807A34
+ mov r2, #8
+ bl OS_InitMessageQueue
+ ldr r0, _037FC43C ; =_03807A74
+ bl OS_CreateAlarm
+ add sp, sp, #4
+ ldmia sp!, {lr}
+ bx lr
+_037FC434: .word _03807A54
+_037FC438: .word _03807A34
+_037FC43C: .word _03807A74
+
+ arm_func_start SND_CreateThread
+SND_CreateThread: ; 0x037FC440
+ stmfd sp!, {lr}
+ sub sp, sp, #12
+ mov r1, #1024 ; 0x400
+ str r1, [sp]
+ str r0, [sp, #4]
+ ldr r0, _037FC47C ; =_03807AA0
+ ldr r1, _037FC480 ; =SndThread
+ mov r2, #0
+ ldr r3, _037FC484 ; =_03807F44
+ bl OS_CreateThread
+ ldr r0, _037FC47C ; =_03807AA0
+ bl OS_WakeupThreadDirect
+ add sp, sp, #12
+ ldmia sp!, {lr}
+ bx lr
+_037FC47C: .word _03807AA0
+_037FC480: .word SndThread
+_037FC484: .word _03807F44
+
+ arm_func_start SND_Init
+SND_Init: ; 0x037FC488
+ stmdb sp!, {r4, lr}
+ mov r4, r0
+ ldr r0, _037FC4BC ; =_03807A30
+ ldr r1, [r0]
+ cmp r1, #0
+ bne _037FC4B4
+ mov r1, #1
+ str r1, [r0]
+ bl SND_CommandInit
+ mov r0, r4
+ bl SND_CreateThread
+_037FC4B4:
+ ldmia sp!, {r4, lr}
+ bx lr
+_037FC4BC: .word _03807A30
diff --git a/arm7/asm/SND_seq.s b/arm7/asm/SND_seq.s
new file mode 100644
index 00000000..cbf98551
--- /dev/null
+++ b/arm7/asm/SND_seq.s
@@ -0,0 +1,549 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+
+ .text
+
+ arm_func_start SNDi_SetTrackParam
+SNDi_SetTrackParam: ; 0x037FE9F4
+ stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr}
+ sub sp, sp, #4
+ mov sl, r1
+ mov r9, r2
+ mov r8, r3
+ ldr r7, [sp, #40] ; 0x28
+ ldr r2, _037FEA94 ; =_038084AC
+ mov r1, #36 ; 0x24
+ mla fp, r0, r1, r2
+ mov r6, #0
+ mov r0, r8, lsl #16
+ mov r4, r0, lsr #16
+ and r5, r8, #255 ; 0xff
+ b _037FEA78
+_037FEA2C:
+ ands r0, sl, #1
+ beq _037FEA70
+ mov r0, fp
+ mov r1, r6
+ bl FUN_037FE460
+ cmp r0, #0
+ beq _037FEA70
+ cmp r7, #1
+ beq _037FEA64
+ cmp r7, #2
+ beq _037FEA6C
+ cmp r7, #4
+ streq r8, [r0, r9]
+ b _037FEA70
+_037FEA64:
+ strb r5, [r0, r9]
+ b _037FEA70
+_037FEA6C:
+ strh r4, [r0, r9]
+_037FEA70:
+ add r6, r6, #1
+ mov sl, sl, lsr #1
+_037FEA78:
+ cmp r6, #16
+ bge _037FEA88
+ cmp sl, #0
+ bne _037FEA2C
+_037FEA88:
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr}
+ bx lr
+_037FEA94: .word _038084AC
+
+ arm_func_start SNDi_SetPlayerParam
+SNDi_SetPlayerParam: ; 0x037FEA98
+ stmfd sp!, {lr}
+ sub sp, sp, #4
+ ldr lr, _037FEAE0 ; =_038084AC
+ mov ip, #36 ; 0x24
+ mla ip, r0, ip, lr
+ cmp r3, #1
+ beq _037FEAC8
+ cmp r3, #2
+ beq _037FEAD0
+ cmp r3, #4
+ streq r2, [ip, r1]
+ b _037FEAD4
+_037FEAC8:
+ strb r2, [ip, r1]
+ b _037FEAD4
+_037FEAD0:
+ strh r2, [ip, r1]
+_037FEAD4:
+ add sp, sp, #4
+ ldmia sp!, {lr}
+ bx lr
+_037FEAE0: .word _038084AC
+
+ arm_func_start SND_InvalidateBank
+SND_InvalidateBank: ; 0x037FEAE4
+ stmdb sp!, {r4, r5, r6, r7, r8, lr}
+ mov r7, r0
+ mov r6, r1
+ mov r5, #0
+ ldr r4, _037FEB40 ; =_038084AC
+ mov r8, #36 ; 0x24
+_037FEAFC:
+ mul r1, r5, r8
+ add r0, r4, r1
+ ldrb r1, [r4, r1]
+ mov r1, r1, lsl #31
+ movs r1, r1, lsr #31
+ beq _037FEB2C
+ ldr r1, [r0, #32]
+ cmp r7, r1
+ bhi _037FEB2C
+ cmp r1, r6
+ bhi _037FEB2C
+ bl FUN_037FE3AC
+_037FEB2C:
+ add r5, r5, #1
+ cmp r5, #16
+ blt _037FEAFC
+ ldmia sp!, {r4, r5, r6, r7, r8, lr}
+ bx lr
+_037FEB40: .word _038084AC
+
+ arm_func_start SND_InvalidateSeq
+SND_InvalidateSeq: ; 0x037FEB44
+ stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr}
+ sub sp, sp, #4
+ mov sl, r0
+ mov r9, r1
+ mov r7, #0
+ mov r5, r7
+ ldr fp, _037FEBDC ; =_038084AC
+ mov r4, #36 ; 0x24
+_037FEB64:
+ mul r0, r7, r4
+ add r8, fp, r0
+ ldrb r0, [fp, r0]
+ mov r0, r0, lsl #31
+ movs r0, r0, lsr #31
+ beq _037FEBC4
+ mov r6, r5
+ b _037FEBBC
+_037FEB84:
+ mov r0, r8
+ mov r1, r6
+ bl FUN_037FE460
+ cmp r0, #0
+ beq _037FEBB8
+ ldr r0, [r0, #40] ; 0x28
+ cmp sl, r0
+ bhi _037FEBB8
+ cmp r0, r9
+ bhi _037FEBB8
+ mov r0, r8
+ bl FUN_037FE3AC
+ b _037FEBC4
+_037FEBB8:
+ add r6, r6, #1
+_037FEBBC:
+ cmp r6, #16
+ blt _037FEB84
+_037FEBC4:
+ add r7, r7, #1
+ cmp r7, #16
+ blt _037FEB64
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr}
+ bx lr
+_037FEBDC: .word _038084AC
+
+ arm_func_start SND_SetTrackAllocatableChannel
+SND_SetTrackAllocatableChannel: ; 0x037FEBE0
+ stmdb sp!, {r4, r5, r6, r7, lr}
+ sub sp, sp, #4
+ mov r6, r1
+ ldr r3, _037FEC54 ; =_038084AC
+ mov r1, #36 ; 0x24
+ mla r5, r0, r1, r3
+ mov r4, #0
+ mov r0, r2, lsl #16
+ mov r7, r0, lsr #16
+ b _037FEC38
+_037FEC08:
+ ands r0, r6, #1
+ beq _037FEC30
+ mov r0, r5
+ mov r1, r4
+ bl FUN_037FE460
+ cmp r0, #0
+ strneh r7, [r0, #30]
+ ldrneb r1, [r0]
+ orrne r1, r1, #128 ; 0x80
+ strneb r1, [r0]
+_037FEC30:
+ add r4, r4, #1
+ mov r6, r6, lsr #1
+_037FEC38:
+ cmp r4, #16
+ bge _037FEC48
+ cmp r6, #0
+ bne _037FEC08
+_037FEC48:
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, r6, r7, lr}
+ bx lr
+_037FEC54: .word _038084AC
+
+ arm_func_start SND_SetTrackMute
+SND_SetTrackMute: ; 0x037FEC58
+ stmdb sp!, {r4, r5, r6, r7, lr}
+ sub sp, sp, #4
+ mov r7, r1
+ mov r6, r2
+ ldr r2, _037FECC8 ; =_038084AC
+ mov r1, #36 ; 0x24
+ mla r5, r0, r1, r2
+ mov r4, #0
+ b _037FECAC
+_037FEC7C:
+ ands r0, r7, #1
+ beq _037FECA4
+ mov r0, r5
+ mov r1, r4
+ bl FUN_037FE460
+ cmp r0, #0
+ beq _037FECA4
+ mov r1, r5
+ mov r2, r6
+ bl FUN_037FD440
+_037FECA4:
+ add r4, r4, #1
+ mov r7, r7, lsr #1
+_037FECAC:
+ cmp r4, #16
+ bge _037FECBC
+ cmp r7, #0
+ bne _037FEC7C
+_037FECBC:
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, r6, r7, lr}
+ bx lr
+_037FECC8: .word _038084AC
+
+ arm_func_start SND_SkipSeq
+SND_SkipSeq: ; 0x037FECCC
+ stmdb sp!, {r4, r5, r6, r7, r8, lr}
+ mov r6, r1
+ ldr r2, _037FED90 ; =_038084AC
+ mov r1, #36 ; 0x24
+ mla r5, r0, r1, r2
+ mov r8, #0
+ mov r4, #127 ; 0x7f
+_037FECE8:
+ mov r0, r5
+ mov r1, r8
+ bl FUN_037FE460
+ movs r7, r0
+ beq _037FED10
+ mov r1, r5
+ mov r2, r4
+ bl FUN_037FE588
+ mov r0, r7
+ bl FUN_037FE54C
+_037FED10:
+ add r8, r8, #1
+ cmp r8, #16
+ blt _037FECE8
+ bl SND_StopIntervalTimer
+ mov r4, #0
+ mov r7, r4
+ b _037FED50
+_037FED2C:
+ mov r0, r5
+ mov r1, r7
+ bl FUN_037FD548
+ cmp r0, #0
+ beq _037FED4C
+ mov r0, r5
+ bl FUN_037FE3AC
+ b _037FED58
+_037FED4C:
+ add r4, r4, #1
+_037FED50:
+ cmp r4, r6
+ bcc _037FED2C
+_037FED58:
+ bl SND_StartIntervalTimer
+ ldr r0, _037FED94 ; =SNDi_SharedWork
+ ldr r0, [r0]
+ cmp r0, #0
+ beq _037FED88
+ add r3, r0, #64 ; 0x40
+ ldrb r1, [r5, #1]
+ mov r0, #36 ; 0x24
+ mul r2, r1, r0
+ ldr r0, [r3, r2]
+ add r0, r0, r4
+ str r0, [r3, r2]
+_037FED88:
+ ldmia sp!, {r4, r5, r6, r7, r8, lr}
+ bx lr
+_037FED90: .word _038084AC
+_037FED94: .word SNDi_SharedWork
+
+ arm_func_start SND_PauseSeq
+SND_PauseSeq: ; 0x037FED98
+ stmdb sp!, {r4, r5, r6, r7, lr}
+ sub sp, sp, #4
+ ldr r5, _037FEE18 ; =_038084AC
+ mov r2, #36 ; 0x24
+ mul r3, r0, r2
+ add r4, r5, r3
+ ldrb r0, [r5, r3]
+ bic r2, r0, #4
+ and r0, r1, #255 ; 0xff
+ and r0, r0, #1
+ orr r0, r2, r0, lsl #2
+ strb r0, [r5, r3]
+ cmp r1, #0
+ beq _037FEE0C
+ mov r7, #0
+ mov r5, #127 ; 0x7f
+_037FEDD8:
+ mov r0, r4
+ mov r1, r7
+ bl FUN_037FE460
+ movs r6, r0
+ beq _037FEE00
+ mov r1, r4
+ mov r2, r5
+ bl FUN_037FE588
+ mov r0, r6
+ bl FUN_037FE54C
+_037FEE00:
+ add r7, r7, #1
+ cmp r7, #16
+ blt _037FEDD8
+_037FEE0C:
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, r6, r7, lr}
+ bx lr
+_037FEE18: .word _038084AC
+
+ arm_func_start SND_StopSeq
+SND_StopSeq: ; 0x037FEE1C
+ stmdb sp!, {r4, lr}
+ mov r4, r0
+ ldr r2, _037FEE70 ; =_038084AC
+ mov r0, #36 ; 0x24
+ mul r1, r4, r0
+ add r0, r2, r1
+ ldrb r1, [r2, r1]
+ mov r1, r1, lsl #31
+ movs r1, r1, lsr #31
+ beq _037FEE68
+ bl FUN_037FE3AC
+ ldr r0, _037FEE74 ; =SNDi_SharedWork
+ ldr r2, [r0]
+ cmp r2, #0
+ ldrne r1, [r2, #4]
+ movne r0, #1
+ mvnne r0, r0, lsl r4
+ andne r0, r1, r0
+ strne r0, [r2, #4]
+_037FEE68:
+ ldmia sp!, {r4, lr}
+ bx lr
+_037FEE70: .word _038084AC
+_037FEE74: .word SNDi_SharedWork
+
+ arm_func_start SND_StartSeq
+SND_StartSeq: ; 0x037FEE78
+ stmdb sp!, {r4, lr}
+ mov r4, r0
+ bl SND_PrepareSeq
+ mov r0, r4
+ bl SND_StartPreparedSeq
+ ldmia sp!, {r4, lr}
+ bx lr
+
+ arm_func_start SND_StartPreparedSeq
+SND_StartPreparedSeq: ; 0x037FEE94
+ ldr r2, _037FEEB0 ; =_038084AC
+ mov r1, #36 ; 0x24
+ mul r1, r0, r1
+ ldrb r0, [r2, r1]
+ orr r0, r0, #2
+ strb r0, [r2, r1]
+ bx lr
+_037FEEB0: .word _038084AC
+
+ arm_func_start SND_PrepareSeq
+SND_PrepareSeq: ; 0x037FEEB4
+ stmdb sp!, {r4, r5, r6, r7, r8, r9, lr}
+ sub sp, sp, #4
+ mov r4, r0
+ mov r8, r1
+ mov r6, r2
+ mov r5, r3
+ ldr r1, _037FEFFC ; =_038084AC
+ mov r0, #36 ; 0x24
+ mul r0, r4, r0
+ add r7, r1, r0
+ ldrb r0, [r1, r0]
+ mov r0, r0, lsl #31
+ movs r0, r0, lsr #31
+ beq _037FEEF4
+ mov r0, r7
+ bl FUN_037FE3AC
+_037FEEF4:
+ mov r0, r7
+ mov r1, r5
+ bl FUN_037FE5F8
+ bl FUN_037FD4C0
+ movs r9, r0
+ bmi _037FEFF0
+ ldr r0, _037FF000 ; =_038086EC
+ add r5, r0, r9, lsl #6
+ mov r0, r5
+ bl FUN_037FE6BC
+ mov r0, r5
+ mov r1, r8
+ mov r2, r6
+ bl FUN_037FE6A8
+ strb r9, [r7, #8]
+ ldr r0, [r5, #40] ; 0x28
+ bl FUN_037FE9B8
+ ldr r0, [r5, #40] ; 0x28
+ bl FUN_037FE968
+ add r2, r5, #40 ; 0x28
+ ldr r1, [r5, #40] ; 0x28
+ add r1, r1, #1
+ str r1, [r5, #40] ; 0x28
+ cmp r0, #254 ; 0xfe
+ ldrne r0, [r2]
+ subne r0, r0, #1
+ strne r0, [r2]
+ bne _037FEFB8
+ mov r0, r5
+ bl FUN_037FE918
+ mov r0, r0, lsl #15
+ mov r5, r0, lsr #16
+ mov r6, #1
+ ldr r8, _037FF000 ; =_038086EC
+ b _037FEFB0
+_037FEF80:
+ ands r0, r5, #1
+ beq _037FEFA4
+ bl FUN_037FD4C0
+ movs r9, r0
+ bmi _037FEFB8
+ add r0, r8, r9, lsl #6
+ bl FUN_037FE6BC
+ add r0, r7, r6
+ strb r9, [r0, #8]
+_037FEFA4:
+ add r6, r6, #1
+ mov r0, r5, lsl #15
+ mov r5, r0, lsr #16
+_037FEFB0:
+ cmp r5, #0
+ bne _037FEF80
+_037FEFB8:
+ ldrb r0, [r7]
+ bic r0, r0, #1
+ orr r0, r0, #1
+ strb r0, [r7]
+ ldrb r0, [r7]
+ bic r0, r0, #2
+ strb r0, [r7]
+ ldr r0, _037FF004 ; =SNDi_SharedWork
+ ldr r2, [r0]
+ cmp r2, #0
+ ldrne r1, [r2, #4]
+ movne r0, #1
+ orrne r0, r1, r0, lsl r4
+ strne r0, [r2, #4]
+_037FEFF0:
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, r6, r7, r8, r9, lr}
+ bx lr
+_037FEFFC: .word _038084AC
+_037FF000: .word _038086EC
+_037FF004: .word SNDi_SharedWork
+
+ arm_func_start SND_SeqMain
+SND_SeqMain: ; 0x037FF008
+ stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, lr}
+ mov r8, r0
+ mov r5, #0
+ mov r6, r5
+ mov sl, #1
+ ldr r4, _037FF0A0 ; =_038084AC
+ mov r9, #36 ; 0x24
+_037FF024:
+ mul r0, r6, r9
+ add r7, r4, r0
+ ldrb r1, [r4, r0]
+ mov r0, r1, lsl #31
+ movs r0, r0, lsr #31
+ beq _037FF07C
+ mov r0, r1, lsl #30
+ movs r0, r0, lsr #31
+ beq _037FF06C
+ cmp r8, #0
+ beq _037FF064
+ mov r0, r1, lsl #29
+ movs r0, r0, lsr #31
+ bne _037FF064
+ mov r0, r7
+ bl FUN_037FE48C
+_037FF064:
+ mov r0, r7
+ bl FUN_037FE1A0
+_037FF06C:
+ ldrb r0, [r7]
+ mov r0, r0, lsl #31
+ movs r0, r0, lsr #31
+ orrne r5, r5, sl, lsl r6
+_037FF07C:
+ add r6, r6, #1
+ cmp r6, #16
+ blt _037FF024
+ ldr r0, _037FF0A4 ; =SNDi_SharedWork
+ ldr r0, [r0]
+ cmp r0, #0
+ strne r5, [r0, #4]
+ ldmia sp!, {r4, r5, r6, r7, r8, r9, sl, lr}
+ bx lr
+_037FF0A0: .word _038084AC
+_037FF0A4: .word SNDi_SharedWork
+
+ arm_func_start SND_SeqInit
+SND_SeqInit: ; 0x037FF0A8
+ stmfd sp!, {lr}
+ sub sp, sp, #4
+ mov lr, #0
+ ldr r3, _037FF10C ; =_038084AC
+ mov r0, #36 ; 0x24
+_037FF0BC:
+ mul r2, lr, r0
+ add ip, r3, r2
+ ldrb r1, [r3, r2]
+ bic r1, r1, #1
+ strb r1, [r3, r2]
+ strb lr, [ip, #1]
+ add lr, lr, #1
+ cmp lr, #16
+ blt _037FF0BC
+ mov r2, #0
+ ldr r1, _037FF110 ; =_038086EC
+_037FF0E8:
+ ldrb r0, [r1, r2, lsl #6]
+ bic r0, r0, #1
+ strb r0, [r1, r2, lsl #6]
+ add r2, r2, #1
+ cmp r2, #32
+ blt _037FF0E8
+ add sp, sp, #4
+ ldmia sp!, {lr}
+ bx lr
+_037FF10C: .word _038084AC
+_037FF110: .word _038086EC
diff --git a/arm7/asm/SND_unk_037FD440.s b/arm7/asm/SND_unk_037FD440.s
new file mode 100644
index 00000000..14e4bda9
--- /dev/null
+++ b/arm7/asm/SND_unk_037FD440.s
@@ -0,0 +1,1621 @@
+#todo identify and split
+ .include "asm/macros.inc"
+ .include "global.inc"
+
+ .section .bss
+
+ .global _03807F4C
+_03807F4C: ;0x03807F4C
+ .space 0x03807F50 - 0x03807F4C
+
+ .global _03807F50
+_03807F50: ;0x03807F50
+ .space 0x03807F58 - 0x03807F50
+
+ .global _03807F58
+_03807F58: ;0x03807F58
+ .space 0x03807F68 - 0x03807F58
+
+ .global SNDi_SharedWork
+SNDi_SharedWork: ;0x03807F68
+ .space 0x03807F6C - 0x03807F68
+
+ .section .text
+
+ arm_func_start FUN_037FD440
+FUN_037FD440: ; 0x037FD440
+ stmdb sp!, {r4, lr}
+ mov r4, r0
+ cmp r2, #3
+ addls pc, pc, r2, lsl #2
+ b _037FD4B8
+ b _037FD464
+ b _037FD474
+ b _037FD484
+ b _037FD49C
+_037FD464:
+ ldrb r0, [r4]
+ bic r0, r0, #4
+ strb r0, [r4]
+ b _037FD4B8
+_037FD474:
+ ldrb r0, [r4]
+ orr r0, r0, #4
+ strb r0, [r4]
+ b _037FD4B8
+_037FD484:
+ ldrb r2, [r4]
+ orr r2, r2, #4
+ strb r2, [r4]
+ mvn r2, #0
+ bl FUN_037FE588
+ b _037FD4B8
+_037FD49C:
+ ldrb r2, [r4]
+ orr r2, r2, #4
+ strb r2, [r4]
+ mov r2, #127 ; 0x7f
+ bl FUN_037FE588
+ mov r0, r4
+ bl FUN_037FE54C
+_037FD4B8:
+ ldmia sp!, {r4, lr}
+ bx lr
+
+ arm_func_start FUN_037FD4C0
+FUN_037FD4C0: ; 0x037FD4C0
+ mov r0, #0
+ ldr r3, _037FD500 ; =_038086EC
+ b _037FD4F0
+_037FD4CC:
+ add ip, r3, r0, lsl #6
+ ldrb r1, [r3, r0, lsl #6]
+ mov r2, r1, lsl #31
+ movs r2, r2, lsr #31
+ biceq r1, r1, #1
+ orreq r1, r1, #1
+ streqb r1, [ip]
+ bxeq lr
+ add r0, r0, #1
+_037FD4F0:
+ cmp r0, #32
+ blt _037FD4CC
+ mvn r0, #0
+ bx lr
+_037FD500: .word _038086EC
+
+ arm_func_start FUN_037FD504
+FUN_037FD504: ; 0x037FD504
+ ldr r2, _037FD544 ; =SNDi_SharedWork
+ ldr r2, [r2]
+ cmp r2, #0
+ moveq r0, #0
+ bxeq lr
+ cmp r1, #16
+ addge r2, r2, #608 ; 0x260
+ subge r0, r1, #16
+ addge r0, r2, r0, lsl #1
+ bxge lr
+ add r3, r2, #32
+ ldrb r2, [r0, #1]
+ mov r0, #36 ; 0x24
+ mla r0, r2, r0, r3
+ add r0, r0, r1, lsl #1
+ bx lr
+_037FD544: .word SNDi_SharedWork
+
+ arm_func_start FUN_037FD548
+FUN_037FD548: ; 0x037FD548
+ stmdb sp!, {r4, r5, r6, r7, r8, lr}
+ mov r8, r0
+ mov r7, r1
+ mov r6, #0
+ mov r5, r6
+ mov r4, #1
+_037FD560:
+ mov r0, r8
+ mov r1, r5
+ bl FUN_037FE460
+ cmp r0, #0
+ beq _037FD5A8
+ ldr r1, [r0, #40] ; 0x28
+ cmp r1, #0
+ beq _037FD5A8
+ mov r1, r8
+ mov r2, r5
+ mov r3, r7
+ bl FUN_037FD5C8
+ cmp r0, #0
+ moveq r6, r4
+ beq _037FD5A8
+ mov r0, r8
+ mov r1, r5
+ bl FUN_037FE3EC
+_037FD5A8:
+ add r5, r5, #1
+ cmp r5, #16
+ blt _037FD560
+ cmp r6, #0
+ moveq r0, #1
+ movne r0, #0
+ ldmia sp!, {r4, r5, r6, r7, r8, lr}
+ bx lr
+
+ arm_func_start FUN_037FD5C8
+FUN_037FD5C8: ; 0x037FD5C8
+ stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr}
+ sub sp, sp, #52 ; 0x34
+ mov r9, r0
+ mov r8, r1
+ str r3, [sp, #4]
+ ldr r2, [r9, #60] ; 0x3c
+ b _037FD61C
+_037FD5E4:
+ ldr r0, [r2, #52] ; 0x34
+ cmp r0, #0
+ subgt r0, r0, #1
+ strgt r0, [r2, #52] ; 0x34
+ ldrb r0, [r2, #3]
+ mov r0, r0, lsl #29
+ movs r0, r0, lsr #31
+ bne _037FD618
+ ldr r1, [r2, #20]
+ ldr r0, [r2, #24]
+ cmp r1, r0
+ addlt r0, r1, #1
+ strlt r0, [r2, #20]
+_037FD618:
+ ldr r2, [r2, #80] ; 0x50
+_037FD61C:
+ cmp r2, #0
+ bne _037FD5E4
+ ldrb r1, [r9]
+ mov r0, r1, lsl #27
+ movs r0, r0, lsr #31
+ beq _037FD64C
+ ldr r0, [r9, #60] ; 0x3c
+ cmp r0, #0
+ movne r0, #0
+ bne _037FDF84
+ bic r0, r1, #16
+ strb r0, [r9]
+_037FD64C:
+ ldr r0, [r9, #32]
+ cmp r0, #0
+ ble _037FD670
+ sub r0, r0, #1
+ str r0, [r9, #32]
+ ldr r0, [r9, #32]
+ cmp r0, #0
+ movgt r0, #0
+ bgt _037FDF84
+_037FD670:
+ ldr r0, [r9, #40] ; 0x28
+ bl FUN_037FE9B8
+ add r0, r9, #40 ; 0x28
+ str r0, [sp, #28]
+ mov r0, #2
+ str r0, [sp, #32]
+ mov r0, #127 ; 0x7f
+ str r0, [sp, #36] ; 0x24
+ mov fp, #0
+ mvn r0, #0
+ str r0, [sp, #40] ; 0x28
+ mov sl, #1
+ mov r0, #3
+ str r0, [sp, #20]
+ mov r0, #4
+ str r0, [sp, #24]
+ b _037FDF64
+_037FD6B4:
+ mov r4, fp
+ mov r6, sl
+ ldr r0, [r9, #40] ; 0x28
+ bl FUN_037FE968
+ mov r7, r0
+ ldr r0, [r9, #40] ; 0x28
+ add r0, r0, #1
+ str r0, [r9, #40] ; 0x28
+ cmp r7, #162 ; 0xa2
+ bne _037FD700
+ ldr r0, [r9, #40] ; 0x28
+ bl FUN_037FE968
+ mov r7, r0
+ ldr r0, [r9, #40] ; 0x28
+ add r0, r0, #1
+ str r0, [r9, #40] ; 0x28
+ ldrb r0, [r9]
+ mov r0, r0, lsl #25
+ mov r6, r0, lsr #31
+_037FD700:
+ cmp r7, #160 ; 0xa0
+ bne _037FD72C
+ ldr r0, [r9, #40] ; 0x28
+ bl FUN_037FE968
+ mov r7, r0
+ ldr r0, [r9, #40] ; 0x28
+ add r0, r0, #1
+ str r0, [r9, #40] ; 0x28
+ ldr r0, [sp, #20]
+ str r0, [sp, #8]
+ mov r4, sl
+_037FD72C:
+ cmp r7, #161 ; 0xa1
+ bne _037FD758
+ ldr r0, [r9, #40] ; 0x28
+ bl FUN_037FE968
+ mov r7, r0
+ ldr r0, [r9, #40] ; 0x28
+ add r0, r0, #1
+ str r0, [r9, #40] ; 0x28
+ ldr r0, [sp, #24]
+ str r0, [sp, #8]
+ mov r4, sl
+_037FD758:
+ ands r0, r7, #128 ; 0x80
+ bne _037FD82C
+ ldr r0, [r9, #40] ; 0x28
+ bl FUN_037FE968
+ str r0, [sp, #12]
+ ldr r0, [sp, #28]
+ ldr r0, [r0]
+ add r1, r0, #1
+ ldr r0, [sp, #28]
+ str r1, [r0]
+ cmp r4, #0
+ ldrne r2, [sp, #8]
+ ldreq r2, [sp, #32]
+ mov r0, r9
+ mov r1, r8
+ bl FUN_037FE7B0
+ mov r5, r0
+ ldrsb r0, [r9, #19]
+ add r4, r7, r0
+ cmp r6, #0
+ beq _037FDF64
+ cmp r4, #0
+ movlt r4, fp
+ blt _037FD7C0
+ cmp r4, #127 ; 0x7f
+ ldrgt r4, [sp, #36] ; 0x24
+_037FD7C0:
+ ldrb r0, [r9]
+ mov r0, r0, lsl #29
+ movs r0, r0, lsr #31
+ bne _037FD800
+ ldr r0, [sp, #4]
+ cmp r0, #0
+ beq _037FD800
+ cmp r5, #0
+ movgt r0, r5
+ ldrle r0, [sp, #40] ; 0x28
+ str r0, [sp]
+ mov r0, r9
+ mov r1, r8
+ mov r2, r4
+ ldr r3, [sp, #12]
+ bl FUN_037FDF94
+_037FD800:
+ strb r4, [r9, #20]
+ ldrb r0, [r9]
+ mov r0, r0, lsl #30
+ movs r0, r0, lsr #31
+ beq _037FDF64
+ str r5, [r9, #32]
+ cmp r5, #0
+ ldreqb r0, [r9]
+ orreq r0, r0, #16
+ streqb r0, [r9]
+ b _037FDF64
+_037FD82C:
+ and r0, r7, #240 ; 0xf0
+ cmp r0, #192 ; 0xc0
+ bgt _037FD868
+ cmp r0, #192 ; 0xc0
+ bge _037FD9B8
+ cmp r0, #144 ; 0x90
+ bgt _037FD85C
+ cmp r0, #144 ; 0x90
+ bge _037FD8D8
+ cmp r0, #128 ; 0x80
+ beq _037FD890
+ b _037FDF64
+_037FD85C:
+ cmp r0, #176 ; 0xb0
+ beq _037FDC68
+ b _037FDF64
+_037FD868:
+ cmp r0, #224 ; 0xe0
+ bgt _037FD884
+ cmp r0, #224 ; 0xe0
+ bge _037FDC14
+ cmp r0, #208 ; 0xd0
+ beq _037FD9B8
+ b _037FDF64
+_037FD884:
+ cmp r0, #240 ; 0xf0
+ beq _037FDEC0
+ b _037FDF64
+_037FD890:
+ cmp r4, #0
+ ldrne r2, [sp, #8]
+ ldreq r2, [sp, #32]
+ mov r0, r9
+ mov r1, r8
+ bl FUN_037FE7B0
+ cmp r6, #0
+ beq _037FDF64
+ cmp r7, #128 ; 0x80
+ beq _037FD8C4
+ cmp r7, #129 ; 0x81
+ beq _037FD8CC
+ b _037FDF64
+_037FD8C4:
+ str r0, [r9, #32]
+ b _037FDF64
+_037FD8CC:
+ cmp r0, #65536 ; 0x10000
+ strlth r0, [r9, #2]
+ b _037FDF64
+_037FD8D8:
+ cmp r7, #147 ; 0x93
+ beq _037FD8F4
+ cmp r7, #148 ; 0x94
+ beq _037FD958
+ cmp r7, #149 ; 0x95
+ beq _037FD974
+ b _037FDF64
+_037FD8F4:
+ ldr r0, [r9, #40] ; 0x28
+ bl FUN_037FE968
+ mov r4, r0
+ ldr r0, [r9, #40] ; 0x28
+ add r0, r0, #1
+ str r0, [r9, #40] ; 0x28
+ mov r0, r9
+ bl FUN_037FE8B8
+ mov r5, r0
+ cmp r6, #0
+ beq _037FDF64
+ mov r0, r8
+ mov r1, r4
+ bl FUN_037FE460
+ movs r4, r0
+ beq _037FDF64
+ cmp r4, r9
+ beq _037FDF64
+ mov r1, r8
+ bl FUN_037FE440
+ mov r0, r4
+ ldr r1, [r9, #36] ; 0x24
+ mov r2, r5
+ bl FUN_037FE6A8
+ b _037FDF64
+_037FD958:
+ mov r0, r9
+ bl FUN_037FE8B8
+ cmp r6, #0
+ ldrne r1, [r9, #36] ; 0x24
+ addne r0, r1, r0
+ strne r0, [r9, #40] ; 0x28
+ b _037FDF64
+_037FD974:
+ mov r0, r9
+ bl FUN_037FE8B8
+ cmp r6, #0
+ beq _037FDF64
+ ldrb r1, [r9, #59] ; 0x3b
+ cmp r1, #3
+ bcs _037FDF64
+ ldr r2, [r9, #40] ; 0x28
+ add r1, r9, r1, lsl #2
+ str r2, [r1, #44] ; 0x2c
+ ldrb r1, [r9, #59] ; 0x3b
+ add r1, r1, #1
+ strb r1, [r9, #59] ; 0x3b
+ ldr r1, [r9, #36] ; 0x24
+ add r0, r1, r0
+ str r0, [r9, #40] ; 0x28
+ b _037FDF64
+_037FD9B8:
+ cmp r4, #0
+ ldrne r2, [sp, #8]
+ moveq r2, fp
+ mov r0, r9
+ mov r1, r8
+ bl FUN_037FE7B0
+ strb r0, [sp, #44] ; 0x2c
+ cmp r6, #0
+ beq _037FDF64
+ sub r0, r7, #192 ; 0xc0
+ cmp r0, #23
+ addls pc, pc, r0, lsl #2
+ b _037FDF64
+ b _037FDBE4
+ b _037FDA4C
+ b _037FDA64
+ b _037FDBCC
+ b _037FDBD8
+ b _037FDA70
+ b _037FDA7C
+ b _037FDA88
+ b _037FDB48
+ b _037FDB90
+ b _037FDAB0
+ b _037FDABC
+ b _037FDAC8
+ b _037FDAD4
+ b _037FDBB0
+ b _037FDAA4
+ b _037FDAE0
+ b _037FDAEC
+ b _037FDAF8
+ b _037FDB04
+ b _037FDB10
+ b _037FDA58
+ b _037FDBF4
+ b _037FDB7C
+_037FDA4C:
+ ldrb r0, [sp, #44] ; 0x2c
+ strb r0, [r9, #4]
+ b _037FDF64
+_037FDA58:
+ ldrb r0, [sp, #44] ; 0x2c
+ strb r0, [r9, #5]
+ b _037FDF64
+_037FDA64:
+ ldrb r0, [sp, #44] ; 0x2c
+ strb r0, [r8, #5]
+ b _037FDF64
+_037FDA70:
+ ldrb r0, [sp, #44] ; 0x2c
+ strb r0, [r9, #7]
+ b _037FDF64
+_037FDA7C:
+ ldrb r0, [sp, #44] ; 0x2c
+ strb r0, [r9, #18]
+ b _037FDF64
+_037FDA88:
+ ldrb r0, [r9]
+ bic r1, r0, #2
+ ldrb r0, [sp, #44] ; 0x2c
+ and r0, r0, #1
+ orr r0, r1, r0, lsl #1
+ strb r0, [r9]
+ b _037FDF64
+_037FDAA4:
+ ldrb r0, [sp, #44] ; 0x2c
+ strb r0, [r9, #21]
+ b _037FDF64
+_037FDAB0:
+ ldrb r0, [sp, #44] ; 0x2c
+ strb r0, [r9, #26]
+ b _037FDF64
+_037FDABC:
+ ldrb r0, [sp, #44] ; 0x2c
+ strb r0, [r9, #25]
+ b _037FDF64
+_037FDAC8:
+ ldrb r0, [sp, #44] ; 0x2c
+ strb r0, [r9, #24]
+ b _037FDF64
+_037FDAD4:
+ ldrb r0, [sp, #44] ; 0x2c
+ strb r0, [r9, #27]
+ b _037FDF64
+_037FDAE0:
+ ldrb r0, [sp, #44] ; 0x2c
+ strb r0, [r9, #14]
+ b _037FDF64
+_037FDAEC:
+ ldrb r0, [sp, #44] ; 0x2c
+ strb r0, [r9, #15]
+ b _037FDF64
+_037FDAF8:
+ ldrb r0, [sp, #44] ; 0x2c
+ strb r0, [r9, #16]
+ b _037FDF64
+_037FDB04:
+ ldrb r0, [sp, #44] ; 0x2c
+ strb r0, [r9, #17]
+ b _037FDF64
+_037FDB10:
+ ldrb r0, [r9, #59] ; 0x3b
+ cmp r0, #3
+ bcs _037FDF64
+ ldr r1, [r9, #40] ; 0x28
+ add r0, r9, r0, lsl #2
+ str r1, [r0, #44] ; 0x2c
+ ldrb r1, [sp, #44] ; 0x2c
+ ldrb r0, [r9, #59] ; 0x3b
+ add r0, r9, r0
+ strb r1, [r0, #56] ; 0x38
+ ldrb r0, [r9, #59] ; 0x3b
+ add r0, r0, #1
+ strb r0, [r9, #59] ; 0x3b
+ b _037FDF64
+_037FDB48:
+ ldrb r0, [r9]
+ bic r1, r0, #8
+ ldrb r0, [sp, #44] ; 0x2c
+ and r0, r0, #1
+ orr r0, r1, r0, lsl #3
+ strb r0, [r9]
+ mov r0, r9
+ mov r1, r8
+ ldr r2, [sp, #40] ; 0x28
+ bl FUN_037FE588
+ mov r0, r9
+ bl FUN_037FE54C
+ b _037FDF64
+_037FDB7C:
+ mov r0, r9
+ mov r1, r8
+ ldrb r2, [sp, #44] ; 0x2c
+ bl FUN_037FD440
+ b _037FDF64
+_037FDB90:
+ ldrb r1, [sp, #44] ; 0x2c
+ ldrsb r0, [r9, #19]
+ add r0, r1, r0
+ strb r0, [r9, #20]
+ ldrb r0, [r9]
+ orr r0, r0, #32
+ strb r0, [r9]
+ b _037FDF64
+_037FDBB0:
+ ldrb r0, [r9]
+ bic r1, r0, #32
+ ldrb r0, [sp, #44] ; 0x2c
+ and r0, r0, #1
+ orr r0, r1, r0, lsl #5
+ strb r0, [r9]
+ b _037FDF64
+_037FDBCC:
+ ldrsb r0, [sp, #44] ; 0x2c
+ strb r0, [r9, #19]
+ b _037FDF64
+_037FDBD8:
+ ldrsb r0, [sp, #44] ; 0x2c
+ strb r0, [r9, #6]
+ b _037FDF64
+_037FDBE4:
+ ldrb r0, [sp, #44] ; 0x2c
+ sub r0, r0, #64 ; 0x40
+ strb r0, [r9, #8]
+ b _037FDF64
+_037FDBF4:
+ ldr r0, _037FDF90 ; =_03807F4C
+ ldr r0, [r0]
+ cmp r0, #0
+ beq _037FDF64
+ mov r0, r8
+ ldrb r1, [sp, #44] ; 0x2c
+ bl FUN_037FD504
+ b _037FDF64
+_037FDC14:
+ cmp r4, #0
+ ldrne r2, [sp, #8]
+ moveq r2, sl
+ mov r0, r9
+ mov r1, r8
+ bl FUN_037FE7B0
+ mov r0, r0, lsl #16
+ mov r0, r0, asr #16
+ cmp r6, #0
+ beq _037FDF64
+ cmp r7, #224 ; 0xe0
+ beq _037FDC60
+ cmp r7, #225 ; 0xe1
+ beq _037FDC58
+ cmp r7, #227 ; 0xe3
+ streqh r0, [r9, #22]
+ b _037FDF64
+_037FDC58:
+ strh r0, [r8, #24]
+ b _037FDF64
+_037FDC60:
+ strh r0, [r9, #28]
+ b _037FDF64
+_037FDC68:
+ ldr r0, [r9, #40] ; 0x28
+ bl FUN_037FE968
+ str r0, [sp, #16]
+ ldr r0, [r9, #40] ; 0x28
+ add r0, r0, #1
+ str r0, [r9, #40] ; 0x28
+ cmp r4, #0
+ ldrne r2, [sp, #8]
+ moveq r2, sl
+ mov r0, r9
+ mov r1, r8
+ bl FUN_037FE7B0
+ mov r0, r0, lsl #16
+ mov r5, r0, asr #16
+ mov r0, r8
+ ldr r1, [sp, #16]
+ bl FUN_037FD504
+ mov r4, r0
+ cmp r6, #0
+ beq _037FDF64
+ cmp r4, #0
+ beq _037FDF64
+ sub r0, r7, #176 ; 0xb0
+ cmp r0, #13
+ addls pc, pc, r0, lsl #2
+ b _037FDF64
+ b _037FDD08
+ b _037FDD10
+ b _037FDD20
+ b _037FDD30
+ b _037FDD40
+ b _037FDD5C
+ b _037FDD80
+ b _037FDF64
+ b _037FDDB8
+ b _037FDDE4
+ b _037FDE10
+ b _037FDE3C
+ b _037FDE68
+ b _037FDE94
+_037FDD08:
+ strh r5, [r4]
+ b _037FDF64
+_037FDD10:
+ ldrsh r0, [r4]
+ add r0, r0, r5
+ strh r0, [r4]
+ b _037FDF64
+_037FDD20:
+ ldrsh r0, [r4]
+ sub r0, r0, r5
+ strh r0, [r4]
+ b _037FDF64
+_037FDD30:
+ ldrsh r0, [r4]
+ mul r1, r0, r5
+ strh r1, [r4]
+ b _037FDF64
+_037FDD40:
+ cmp r5, #0
+ beq _037FDF64
+ ldrsh r0, [r4]
+ mov r1, r5
+ bl _s32_div_f
+ strh r0, [r4]
+ b _037FDF64
+_037FDD5C:
+ cmp r5, #0
+ ldrgesh r0, [r4]
+ movge r0, r0, lsl r5
+ strgeh r0, [r4]
+ ldrltsh r1, [r4]
+ rsblt r0, r5, #0
+ movlt r0, r1, asr r0
+ strlth r0, [r4]
+ b _037FDF64
+_037FDD80:
+ mov r6, fp
+ cmp r5, #0
+ movlt r6, sl
+ rsblt r0, r5, #0
+ movlt r0, r0, lsl #16
+ movlt r5, r0, asr #16
+ bl SND_CalcRandom
+ add r1, r5, #1
+ mul r1, r0, r1
+ mov r0, r1, asr #16
+ cmp r6, #0
+ rsbne r0, r0, #0
+ strh r0, [r4]
+ b _037FDF64
+_037FDDB8:
+ ldrsh r0, [r4]
+ cmp r0, r5
+ moveq r2, sl
+ movne r2, fp
+ ldrb r0, [r9]
+ bic r1, r0, #64 ; 0x40
+ and r0, r2, #255 ; 0xff
+ and r0, r0, #1
+ orr r0, r1, r0, lsl #6
+ strb r0, [r9]
+ b _037FDF64
+_037FDDE4:
+ ldrsh r0, [r4]
+ cmp r0, r5
+ movge r2, sl
+ movlt r2, fp
+ ldrb r0, [r9]
+ bic r1, r0, #64 ; 0x40
+ and r0, r2, #255 ; 0xff
+ and r0, r0, #1
+ orr r0, r1, r0, lsl #6
+ strb r0, [r9]
+ b _037FDF64
+_037FDE10:
+ ldrsh r0, [r4]
+ cmp r0, r5
+ movgt r2, sl
+ movle r2, fp
+ ldrb r0, [r9]
+ bic r1, r0, #64 ; 0x40
+ and r0, r2, #255 ; 0xff
+ and r0, r0, #1
+ orr r0, r1, r0, lsl #6
+ strb r0, [r9]
+ b _037FDF64
+_037FDE3C:
+ ldrsh r0, [r4]
+ cmp r0, r5
+ movle r2, sl
+ movgt r2, fp
+ ldrb r0, [r9]
+ bic r1, r0, #64 ; 0x40
+ and r0, r2, #255 ; 0xff
+ and r0, r0, #1
+ orr r0, r1, r0, lsl #6
+ strb r0, [r9]
+ b _037FDF64
+_037FDE68:
+ ldrsh r0, [r4]
+ cmp r0, r5
+ movlt r2, sl
+ movge r2, fp
+ ldrb r0, [r9]
+ bic r1, r0, #64 ; 0x40
+ and r0, r2, #255 ; 0xff
+ and r0, r0, #1
+ orr r0, r1, r0, lsl #6
+ strb r0, [r9]
+ b _037FDF64
+_037FDE94:
+ ldrsh r0, [r4]
+ cmp r0, r5
+ movne r2, sl
+ moveq r2, fp
+ ldrb r0, [r9]
+ bic r1, r0, #64 ; 0x40
+ and r0, r2, #255 ; 0xff
+ and r0, r0, #1
+ orr r0, r1, r0, lsl #6
+ strb r0, [r9]
+ b _037FDF64
+_037FDEC0:
+ cmp r6, #0
+ beq _037FDF64
+ sub r0, r7, #252 ; 0xfc
+ cmp r0, #3
+ addls pc, pc, r0, lsl #2
+ b _037FDF64
+ b _037FDF10
+ b _037FDEE8
+ b _037FDF64
+ b _037FDF5C
+_037FDEE8:
+ ldrb r0, [r9, #59] ; 0x3b
+ cmp r0, #0
+ beq _037FDF64
+ sub r0, r0, #1
+ strb r0, [r9, #59] ; 0x3b
+ ldrb r0, [r9, #59] ; 0x3b
+ add r0, r9, r0, lsl #2
+ ldr r0, [r0, #44] ; 0x2c
+ str r0, [r9, #40] ; 0x28
+ b _037FDF64
+_037FDF10:
+ ldrb r0, [r9, #59] ; 0x3b
+ cmp r0, #0
+ beq _037FDF64
+ sub r1, r0, #1
+ add r2, r9, r1
+ ldrb r0, [r2, #56] ; 0x38
+ cmp r0, #0
+ beq _037FDF40
+ sub r0, r0, #1
+ ands r0, r0, #255 ; 0xff
+ streqb r1, [r9, #59] ; 0x3b
+ beq _037FDF64
+_037FDF40:
+ strb r0, [r2, #56] ; 0x38
+ ldrb r0, [r9, #59] ; 0x3b
+ sub r0, r0, #1
+ add r0, r9, r0, lsl #2
+ ldr r0, [r0, #44] ; 0x2c
+ str r0, [r9, #40] ; 0x28
+ b _037FDF64
+_037FDF5C:
+ mvn r0, #0
+ b _037FDF84
+_037FDF64:
+ ldr r0, [r9, #32]
+ cmp r0, #0
+ bne _037FDF80
+ ldrb r0, [r9]
+ mov r0, r0, lsl #27
+ movs r0, r0, lsr #31
+ beq _037FD6B4
+_037FDF80:
+ mov r0, #0
+_037FDF84:
+ add sp, sp, #52 ; 0x34
+ ldmia sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr}
+ bx lr
+_037FDF90: .word _03807F4C
+
+ arm_func_start FUN_037FDF94
+FUN_037FDF94: ; 0x037FDF94
+ stmdb sp!, {r4, r5, r6, r7, r8, lr}
+ sub sp, sp, #24
+ mov r8, r0
+ mov r7, r1
+ mov r6, r2
+ mov r5, r3
+ mov r4, #0
+ ldrb r0, [r8]
+ mov r0, r0, lsl #28
+ movs r0, r0, lsr #31
+ beq _037FDFD0
+ ldr r4, [r8, #60] ; 0x3c
+ cmp r4, #0
+ strneb r6, [r4, #8]
+ strneb r5, [r4, #9]
+_037FDFD0:
+ cmp r4, #0
+ bne _037FE0C4
+ ldr r0, [r7, #32]
+ ldrh r1, [r8, #2]
+ mov r2, r6
+ add r3, sp, #8
+ bl SND_ReadInstData
+ cmp r0, #0
+ beq _037FE18C
+ ldrb r0, [sp, #8]
+ cmp r0, #4
+ addls pc, pc, r0, lsl #2
+ b _037FE030
+ b _037FE030
+ b _037FE018
+ b _037FE020
+ b _037FE028
+ b _037FE018
+_037FE018:
+ ldr r1, _037FE198 ; =0x0000FFFF
+ b _037FE034
+_037FE020:
+ mov r1, #16128 ; 0x3f00
+ b _037FE034
+_037FE028:
+ mov r1, #49152 ; 0xc000
+ b _037FE034
+_037FE030:
+ b _037FE18C
+_037FE034:
+ ldrh r0, [r8, #30]
+ and r0, r1, r0
+ str r8, [sp]
+ ldrb r2, [r7, #4]
+ ldrb r1, [r8, #18]
+ add r1, r2, r1
+ ldrb r2, [r8]
+ mov r2, r2, lsl #24
+ mov r2, r2, lsr #31
+ ldr r3, _037FE19C ; =FUN_037FE344
+ bl SND_AllocExChannel
+ movs r4, r0
+ beq _037FE18C
+ ldrb r0, [r8]
+ mov r0, r0, lsl #28
+ movs r0, r0, lsr #31
+ mvnne r3, #0
+ ldreq r3, [sp, #48] ; 0x30
+ ldr r0, [r7, #32]
+ str r0, [sp]
+ add r0, sp, #8
+ str r0, [sp, #4]
+ mov r0, r4
+ mov r1, r6
+ mov r2, r5
+ bl SND_NoteOn
+ cmp r0, #0
+ bne _037FE0B8
+ mov r0, #0
+ strb r0, [r4, #34] ; 0x22
+ mov r0, r4
+ bl SND_FreeExChannel
+ b _037FE18C
+_037FE0B8:
+ ldr r0, [r8, #60] ; 0x3c
+ str r0, [r4, #80] ; 0x50
+ str r4, [r8, #60] ; 0x3c
+_037FE0C4:
+ ldrb r1, [r8, #14]
+ cmp r1, #255 ; 0xff
+ beq _037FE0D8
+ mov r0, r4
+ bl SND_SetExChannelAttack
+_037FE0D8:
+ ldrb r1, [r8, #15]
+ cmp r1, #255 ; 0xff
+ beq _037FE0EC
+ mov r0, r4
+ bl SND_SetExChannelDecay
+_037FE0EC:
+ ldrb r1, [r8, #16]
+ cmp r1, #255 ; 0xff
+ beq _037FE100
+ mov r0, r4
+ bl SND_SetExChannelSustain
+_037FE100:
+ ldrb r1, [r8, #17]
+ cmp r1, #255 ; 0xff
+ beq _037FE114
+ mov r0, r4
+ bl SND_SetExChannelRelease
+_037FE114:
+ ldrsh r0, [r8, #22]
+ strh r0, [r4, #50] ; 0x32
+ ldrb r0, [r8]
+ mov r0, r0, lsl #26
+ movs r0, r0, lsr #31
+ beq _037FE144
+ ldrsh r1, [r4, #50] ; 0x32
+ ldrb r0, [r8, #20]
+ sub r0, r0, r6
+ mov r0, r0, lsl #22
+ add r0, r1, r0, asr #16
+ strh r0, [r4, #50] ; 0x32
+_037FE144:
+ ldrb r0, [r8, #21]
+ cmp r0, #0
+ bne _037FE168
+ ldr r0, [sp, #48] ; 0x30
+ str r0, [r4, #24]
+ ldrb r0, [r4, #3]
+ bic r0, r0, #4
+ strb r0, [r4, #3]
+ b _037FE184
+_037FE168:
+ mul r1, r0, r0
+ ldrsh r0, [r4, #50] ; 0x32
+ cmp r0, #0
+ rsblt r0, r0, #0
+ mul r0, r1, r0
+ mov r0, r0, asr #11
+ str r0, [r4, #24]
+_037FE184:
+ mov r0, #0
+ str r0, [r4, #20]
+_037FE18C:
+ add sp, sp, #24
+ ldmia sp!, {r4, r5, r6, r7, r8, lr}
+ bx lr
+_037FE198: .word 0x0000FFFF
+_037FE19C: .word FUN_037FE344
+
+ arm_func_start FUN_037FE1A0
+FUN_037FE1A0: ; 0x037FE1A0
+ stmdb sp!, {r4, r5, r6, lr}
+ mov r6, r0
+ mov r5, #0
+ mov r4, #1
+_037FE1B0:
+ mov r0, r6
+ mov r1, r5
+ bl FUN_037FE460
+ cmp r0, #0
+ beq _037FE1D0
+ mov r1, r6
+ mov r2, r4
+ bl FUN_037FE1E4
+_037FE1D0:
+ add r5, r5, #1
+ cmp r5, #16
+ blt _037FE1B0
+ ldmia sp!, {r4, r5, r6, lr}
+ bx lr
+
+ arm_func_start FUN_037FE1E4
+FUN_037FE1E4: ; 0x037FE1E4
+ stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr}
+ sub sp, sp, #4
+ mov sl, r0
+ mov fp, r2
+ ldrb r0, [r1, #5]
+ mov r0, r0, lsl #1
+ ldr r4, _037FE340 ; =SNDi_DecibelSquareTable
+ ldrsh r3, [r4, r0]
+ ldrb r0, [sl, #4]
+ mov r0, r0, lsl #1
+ ldrsh r2, [r4, r0]
+ ldrb r0, [sl, #5]
+ mov r0, r0, lsl #1
+ ldrsh r0, [r4, r0]
+ add r0, r2, r0
+ add r3, r3, r0
+ ldrsh r2, [sl, #10]
+ ldrsh r0, [r1, #6]
+ add r2, r2, r0
+ ldrsb r4, [sl, #6]
+ ldrb r0, [sl, #7]
+ mov r0, r0, lsl #6
+ mul r1, r4, r0
+ ldrsh r0, [sl, #12]
+ add r0, r0, r1, asr #7
+ ldrsb r1, [sl, #8]
+ ldrb r4, [sl, #1]
+ cmp r4, #127 ; 0x7f
+ mulne r4, r1, r4
+ addne r1, r4, #64 ; 0x40
+ movne r1, r1, asr #7
+ ldrsb r4, [sl, #9]
+ add r1, r1, r4
+ mov r4, #32768 ; 0x8000
+ rsb r4, r4, #0
+ cmp r3, r4
+ movlt r3, r4
+ mov r4, #32768 ; 0x8000
+ rsb r4, r4, #0
+ cmp r2, r4
+ movlt r2, r4
+ mvn r4, #127 ; 0x7f
+ cmp r1, r4
+ movlt r1, r4
+ blt _037FE2A0
+ cmp r1, #127 ; 0x7f
+ movgt r1, #127 ; 0x7f
+_037FE2A0:
+ ldr r9, [sl, #60] ; 0x3c
+ mov r4, #1
+ mov r3, r3, lsl #16
+ mov r7, r3, asr #16
+ mov r0, r0, lsl #16
+ mov r6, r0, asr #16
+ mov r0, r1, lsl #24
+ mov r5, r0, asr #24
+ mov r0, r2, lsl #16
+ mov r8, r0, asr #16
+ b _037FE32C
+_037FE2CC:
+ strh r8, [r9, #6]
+ ldrb r0, [r9, #2]
+ cmp r0, #3
+ beq _037FE328
+ strh r7, [r9, #12]
+ strh r6, [r9, #14]
+ strb r5, [r9, #11]
+ ldrb r0, [sl, #1]
+ strb r0, [r9, #4]
+ ldrh r0, [sl, #24]
+ strh r0, [r9, #40] ; 0x28
+ ldrh r0, [sl, #26]
+ strh r0, [r9, #42] ; 0x2a
+ ldrh r0, [sl, #28]
+ strh r0, [r9, #44] ; 0x2c
+ ldr r0, [r9, #52] ; 0x34
+ cmp r0, #0
+ bne _037FE328
+ cmp fp, #0
+ beq _037FE328
+ strb r4, [r9, #34] ; 0x22
+ mov r0, r9
+ bl SND_ReleaseExChannel
+_037FE328:
+ ldr r9, [r9, #80] ; 0x50
+_037FE32C:
+ cmp r9, #0
+ bne _037FE2CC
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr}
+ bx lr
+_037FE340: .word SNDi_DecibelSquareTable
+
+ arm_func_start FUN_037FE344
+FUN_037FE344: ; 0x037FE344
+ stmdb sp!, {r4, r5, lr}
+ sub sp, sp, #4
+ mov r5, r0
+ mov r4, r2
+ cmp r1, #1
+ bne _037FE368
+ mov r1, #0
+ strb r1, [r5, #34] ; 0x22
+ bl SND_FreeExChannel
+_037FE368:
+ ldr r1, [r4, #60] ; 0x3c
+ cmp r1, r5
+ ldreq r0, [r5, #80] ; 0x50
+ streq r0, [r4, #60] ; 0x3c
+ beq _037FE3A0
+ b _037FE394
+_037FE380:
+ cmp r0, r5
+ ldreq r0, [r5, #80] ; 0x50
+ streq r0, [r1, #80] ; 0x50
+ beq _037FE3A0
+ mov r1, r0
+_037FE394:
+ ldr r0, [r1, #80] ; 0x50
+ cmp r0, #0
+ bne _037FE380
+_037FE3A0:
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, lr}
+ bx lr
+
+ arm_func_start FUN_037FE3AC
+FUN_037FE3AC: ; 0x037FE3AC
+ stmdb sp!, {r4, r5, lr}
+ sub sp, sp, #4
+ mov r5, r0
+ mov r4, #0
+_037FE3BC:
+ mov r0, r5
+ mov r1, r4
+ bl FUN_037FE3EC
+ add r4, r4, #1
+ cmp r4, #16
+ blt _037FE3BC
+ ldrb r0, [r5]
+ bic r0, r0, #1
+ strb r0, [r5]
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, lr}
+ bx lr
+
+ arm_func_start FUN_037FE3EC
+FUN_037FE3EC: ; 0x037FE3EC
+ stmdb sp!, {r4, r5, lr}
+ sub sp, sp, #4
+ mov r5, r0
+ mov r4, r1
+ bl FUN_037FE460
+ cmp r0, #0
+ beq _037FE430
+ mov r1, r5
+ bl FUN_037FE440
+ add r3, r5, #8
+ ldr r2, _037FE43C ; =_038086EC
+ ldrb r1, [r3, r4]
+ ldrb r0, [r2, r1, lsl #6]
+ bic r0, r0, #1
+ strb r0, [r2, r1, lsl #6]
+ mov r0, #255 ; 0xff
+ strb r0, [r3, r4]
+_037FE430:
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, lr}
+ bx lr
+_037FE43C: .word _038086EC
+
+ arm_func_start FUN_037FE440
+FUN_037FE440: ; 0x037FE440
+ stmdb sp!, {r4, lr}
+ mov r4, r0
+ mvn r2, #0
+ bl FUN_037FE588
+ mov r0, r4
+ bl FUN_037FE54C
+ ldmia sp!, {r4, lr}
+ bx lr
+
+ arm_func_start FUN_037FE460
+FUN_037FE460: ; 0x037FE460
+ cmp r1, #15
+ movgt r0, #0
+ bxgt lr
+ add r0, r0, r1
+ ldrb r1, [r0, #8]
+ cmp r1, #255 ; 0xff
+ moveq r0, #0
+ ldrne r0, _037FE488 ; =_038086EC
+ addne r0, r0, r1, lsl #6
+ bx lr
+_037FE488: .word _038086EC
+
+ arm_func_start FUN_037FE48C
+FUN_037FE48C: ; 0x037FE48C
+ stmdb sp!, {r4, r5, r6, r7, lr}
+ sub sp, sp, #4
+ mov r6, r0
+ mov r5, #0
+ add r1, r6, #28
+ b _037FE4B4
+_037FE4A4:
+ ldrh r0, [r1]
+ sub r0, r0, #240 ; 0xf0
+ strh r0, [r1]
+ add r5, r5, #1
+_037FE4B4:
+ ldrh r0, [r6, #28]
+ cmp r0, #240 ; 0xf0
+ bcs _037FE4A4
+ mov r4, #0
+ mov r7, #1
+ b _037FE4F0
+_037FE4CC:
+ mov r0, r6
+ mov r1, r7
+ bl FUN_037FD548
+ cmp r0, #0
+ beq _037FE4EC
+ mov r0, r6
+ bl FUN_037FE3AC
+ b _037FE4F8
+_037FE4EC:
+ add r4, r4, #1
+_037FE4F0:
+ cmp r4, r5
+ blt _037FE4CC
+_037FE4F8:
+ ldr r0, _037FE548 ; =SNDi_SharedWork
+ ldr r0, [r0]
+ cmp r0, #0
+ beq _037FE524
+ add r3, r0, #64 ; 0x40
+ ldrb r1, [r6, #1]
+ mov r0, #36 ; 0x24
+ mul r2, r1, r0
+ ldr r0, [r3, r2]
+ add r0, r0, r4
+ str r0, [r3, r2]
+_037FE524:
+ ldrh r2, [r6, #24]
+ ldrh r0, [r6, #26]
+ mul r1, r2, r0
+ ldrh r0, [r6, #28]
+ add r0, r0, r1, asr #8
+ strh r0, [r6, #28]
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, r6, r7, lr}
+ bx lr
+_037FE548: .word SNDi_SharedWork
+
+ arm_func_start FUN_037FE54C
+FUN_037FE54C: ; 0x037FE54C
+ stmdb sp!, {r4, r5, lr}
+ sub sp, sp, #4
+ mov r5, r0
+ ldr r4, [r5, #60] ; 0x3c
+ b _037FE56C
+_037FE560:
+ mov r0, r4
+ bl SND_FreeExChannel
+ ldr r4, [r4, #80] ; 0x50
+_037FE56C:
+ cmp r4, #0
+ bne _037FE560
+ mov r0, #0
+ str r0, [r5, #60] ; 0x3c
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, lr}
+ bx lr
+
+ arm_func_start FUN_037FE588
+FUN_037FE588: ; 0x037FE588
+ stmdb sp!, {r4, r5, r6, r7, lr}
+ sub sp, sp, #4
+ mov r4, r0
+ mov r7, r2
+ mov r2, #0
+ bl FUN_037FE1E4
+ ldr r6, [r4, #60] ; 0x3c
+ and r5, r7, #255 ; 0xff
+ mov r4, #1
+ b _037FE5E4
+_037FE5B0:
+ mov r0, r6
+ bl SND_IsExChannelActive
+ cmp r0, #0
+ beq _037FE5E0
+ cmp r7, #0
+ blt _037FE5D4
+ mov r0, r6
+ mov r1, r5
+ bl SND_SetExChannelRelease
+_037FE5D4:
+ strb r4, [r6, #34] ; 0x22
+ mov r0, r6
+ bl SND_ReleaseExChannel
+_037FE5E0:
+ ldr r6, [r6, #80] ; 0x50
+_037FE5E4:
+ cmp r6, #0
+ bne _037FE5B0
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, r6, r7, lr}
+ bx lr
+
+ arm_func_start FUN_037FE5F8
+FUN_037FE5F8: ; 0x037FE5F8
+ stmdb sp!, {r4, lr}
+ ldrb r2, [r0]
+ bic r2, r2, #4
+ strb r2, [r0]
+ str r1, [r0, #32]
+ mov r1, #120 ; 0x78
+ strh r1, [r0, #24]
+ mov r1, #256 ; 0x100
+ strh r1, [r0, #26]
+ mov r1, #240 ; 0xf0
+ strh r1, [r0, #28]
+ mov r1, #127 ; 0x7f
+ strb r1, [r0, #5]
+ mov r3, #0
+ strh r3, [r0, #6]
+ mov r1, #64 ; 0x40
+ strb r1, [r0, #4]
+ mov r2, #255 ; 0xff
+_037FE640:
+ add r1, r0, r3
+ strb r2, [r1, #8]
+ add r3, r3, #1
+ cmp r3, #16
+ blt _037FE640
+ ldr r2, _037FE6A4 ; =SNDi_SharedWork
+ ldr r3, [r2]
+ cmp r3, #0
+ beq _037FE69C
+ mov r4, #0
+ ldrb ip, [r0, #1]
+ mov r1, #36 ; 0x24
+ mla r3, ip, r1, r3
+ str r4, [r3, #64] ; 0x40
+ mvn lr, #0
+_037FE67C:
+ ldr r3, [r2]
+ ldrb ip, [r0, #1]
+ mla r3, ip, r1, r3
+ add r3, r3, r4, lsl #1
+ strh lr, [r3, #32]
+ add r4, r4, #1
+ cmp r4, #16
+ blt _037FE67C
+_037FE69C:
+ ldmia sp!, {r4, lr}
+ bx lr
+_037FE6A4: .word SNDi_SharedWork
+
+ arm_func_start FUN_037FE6A8
+FUN_037FE6A8: ; 0x037FE6A8
+ str r1, [r0, #36] ; 0x24
+ ldr r1, [r0, #36] ; 0x24
+ add r1, r1, r2
+ str r1, [r0, #40] ; 0x28
+ bx lr
+
+ arm_func_start FUN_037FE6BC
+FUN_037FE6BC: ; 0x037FE6BC
+ stmdb sp!, {r4, lr}
+ mov r4, r0
+ mov r0, #0
+ str r0, [r4, #36] ; 0x24
+ str r0, [r4, #40] ; 0x28
+ ldrb r1, [r4]
+ orr r1, r1, #2
+ strb r1, [r4]
+ ldrb r1, [r4]
+ bic r1, r1, #4
+ strb r1, [r4]
+ ldrb r1, [r4]
+ bic r1, r1, #8
+ strb r1, [r4]
+ ldrb r1, [r4]
+ bic r1, r1, #16
+ strb r1, [r4]
+ ldrb r1, [r4]
+ bic r1, r1, #32
+ strb r1, [r4]
+ ldrb r1, [r4]
+ orr r1, r1, #64 ; 0x40
+ strb r1, [r4]
+ ldrb r1, [r4]
+ bic r1, r1, #128 ; 0x80
+ strb r1, [r4]
+ strb r0, [r4, #59] ; 0x3b
+ strh r0, [r4, #2]
+ mov r1, #64 ; 0x40
+ strb r1, [r4, #18]
+ mov r2, #127 ; 0x7f
+ strb r2, [r4, #4]
+ strb r2, [r4, #5]
+ strh r0, [r4, #10]
+ strb r0, [r4, #8]
+ strb r0, [r4, #9]
+ strb r0, [r4, #6]
+ strh r0, [r4, #12]
+ mov r1, #255 ; 0xff
+ strb r1, [r4, #14]
+ strb r1, [r4, #15]
+ strb r1, [r4, #16]
+ strb r1, [r4, #17]
+ strb r2, [r4, #1]
+ mov r1, #2
+ strb r1, [r4, #7]
+ mov r1, #60 ; 0x3c
+ strb r1, [r4, #20]
+ strb r0, [r4, #21]
+ strh r0, [r4, #22]
+ strb r0, [r4, #19]
+ ldr r0, _037FE7AC ; =0x0000FFFF
+ strh r0, [r4, #30]
+ add r0, r4, #24
+ bl SND_InitLfoParam
+ mov r0, #0
+ str r0, [r4, #32]
+ str r0, [r4, #60] ; 0x3c
+ ldmia sp!, {r4, lr}
+ bx lr
+_037FE7AC: .word 0x0000FFFF
+
+ arm_func_start FUN_037FE7B0
+FUN_037FE7B0: ; 0x037FE7B0
+ stmdb sp!, {r4, r5, r6, lr}
+ mov r4, r0
+ mov r6, r1
+ cmp r2, #4
+ addls pc, pc, r2, lsl #2
+ b _037FE86C
+ b _037FE7DC
+ b _037FE7F8
+ b _037FE804
+ b _037FE83C
+ b _037FE810
+_037FE7DC:
+ ldr r0, [r4, #40] ; 0x28
+ bl FUN_037FE968
+ mov r5, r0
+ ldr r0, [r4, #40] ; 0x28
+ add r0, r0, #1
+ str r0, [r4, #40] ; 0x28
+ b _037FE86C
+_037FE7F8:
+ bl FUN_037FE918
+ mov r5, r0
+ b _037FE86C
+_037FE804:
+ bl FUN_037FE878
+ mov r5, r0
+ b _037FE86C
+_037FE810:
+ ldr r0, [r4, #40] ; 0x28
+ bl FUN_037FE968
+ mov r1, r0
+ ldr r0, [r4, #40] ; 0x28
+ add r0, r0, #1
+ str r0, [r4, #40] ; 0x28
+ mov r0, r6
+ bl FUN_037FD504
+ cmp r0, #0
+ ldrnesh r5, [r0]
+ b _037FE86C
+_037FE83C:
+ bl FUN_037FE918
+ mov r5, r0, lsl #16
+ mov r0, r4
+ bl FUN_037FE918
+ mov r0, r0, lsl #16
+ mov r4, r0, asr #16
+ bl SND_CalcRandom
+ sub r1, r4, r5, asr #16
+ add r1, r1, #1
+ mul r1, r0, r1
+ mov r0, r1, asr #16
+ add r5, r0, r5, asr #16
+_037FE86C:
+ mov r0, r5
+ ldmia sp!, {r4, r5, r6, lr}
+ bx lr
+
+ arm_func_start FUN_037FE878
+FUN_037FE878: ; 0x037FE878
+ stmdb sp!, {r4, r5, r6, lr}
+ mov r6, r0
+ mov r5, #0
+ add r4, r6, #40 ; 0x28
+_037FE888:
+ ldr r0, [r6, #40] ; 0x28
+ bl FUN_037FE968
+ ldr r1, [r4]
+ add r1, r1, #1
+ str r1, [r4]
+ and r1, r0, #127 ; 0x7f
+ orr r5, r1, r5, lsl #7
+ ands r0, r0, #128 ; 0x80
+ bne _037FE888
+ mov r0, r5
+ ldmia sp!, {r4, r5, r6, lr}
+ bx lr
+
+ arm_func_start FUN_037FE8B8
+FUN_037FE8B8: ; 0x037FE8B8
+ stmdb sp!, {r4, r5, lr}
+ sub sp, sp, #4
+ mov r4, r0
+ ldr r0, [r4, #40] ; 0x28
+ bl FUN_037FE968
+ mov r5, r0
+ ldr r0, [r4, #40] ; 0x28
+ add r0, r0, #1
+ str r0, [r4, #40] ; 0x28
+ ldr r0, [r4, #40] ; 0x28
+ bl FUN_037FE968
+ ldr r1, [r4, #40] ; 0x28
+ add r1, r1, #1
+ str r1, [r4, #40] ; 0x28
+ orr r5, r5, r0, lsl #8
+ ldr r0, [r4, #40] ; 0x28
+ bl FUN_037FE968
+ ldr r1, [r4, #40] ; 0x28
+ add r1, r1, #1
+ str r1, [r4, #40] ; 0x28
+ orr r0, r5, r0, lsl #16
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, lr}
+ bx lr
+
+ arm_func_start FUN_037FE918
+FUN_037FE918: ; 0x037FE918
+ stmdb sp!, {r4, r5, lr}
+ sub sp, sp, #4
+ mov r5, r0
+ ldr r0, [r5, #40] ; 0x28
+ bl FUN_037FE968
+ mov r4, r0
+ ldr r0, [r5, #40] ; 0x28
+ add r0, r0, #1
+ str r0, [r5, #40] ; 0x28
+ ldr r0, [r5, #40] ; 0x28
+ bl FUN_037FE968
+ ldr r1, [r5, #40] ; 0x28
+ add r1, r1, #1
+ str r1, [r5, #40] ; 0x28
+ orr r0, r4, r0, lsl #8
+ mov r0, r0, lsl #16
+ mov r0, r0, lsr #16
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, lr}
+ bx lr
+
+ arm_func_start FUN_037FE968
+FUN_037FE968: ; 0x037FE968
+ stmdb sp!, {r4, lr}
+ mov r4, r0
+ ldr r0, _037FE9B0 ; =_03807F50
+ ldr r1, [r0]
+ cmp r4, r1
+ bcc _037FE98C
+ ldr r0, [r0, #4]
+ cmp r4, r0
+ bcc _037FE994
+_037FE98C:
+ mov r0, r4
+ bl FUN_037FE9B8
+_037FE994:
+ ldr r0, _037FE9B0 ; =_03807F50
+ ldr r0, [r0]
+ sub r1, r4, r0
+ ldr r0, _037FE9B4 ; =_03807F58
+ ldrb r0, [r0, r1]
+ ldmia sp!, {r4, lr}
+ bx lr
+_037FE9B0: .word _03807F50
+_037FE9B4: .word _03807F58
+
+ arm_func_start FUN_037FE9B8
+FUN_037FE9B8: ; 0x037FE9B8
+ bic r2, r0, #3
+ ldr r0, _037FE9F0 ; =_03807F50
+ str r2, [r0]
+ add r1, r2, #16
+ str r1, [r0, #4]
+ ldr r1, [r2]
+ str r1, [r0, #8]
+ ldr r1, [r2, #4]
+ str r1, [r0, #12]
+ ldr r1, [r2, #8]
+ str r1, [r0, #16]
+ ldr r1, [r2, #12]
+ str r1, [r0, #20]
+ bx lr
+_037FE9F0: .word _03807F50
diff --git a/arm7/asm/SND_util.s b/arm7/asm/SND_util.s
new file mode 100644
index 00000000..256f5f41
--- /dev/null
+++ b/arm7/asm/SND_util.s
@@ -0,0 +1,184 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+
+ .text
+
+ arm_func_start SND_CalcRandom
+SND_CalcRandom: ; 0x037FC058
+ ldr r2, _037FC080 ; =_03807660
+ ldr r3, [r2]
+ ldr r0, _037FC084 ; =0x0019660D
+ ldr r1, _037FC088 ; =0x3C6EF35F
+ mla r0, r3, r0, r1
+ str r0, [r2]
+ mov r0, r0, lsr #16
+ mov r0, r0, lsl #16
+ mov r0, r0, lsr #16
+ bx lr
+_037FC080: .word _03807660
+_037FC084: .word 0x0019660D
+_037FC088: .word 0x3C6EF35F
+
+ arm_func_start SND_SinIdx
+SND_SinIdx: ; 0x037FC08C
+ cmp r0, #32
+ ldrlt r1, _037FC0F4 ; =_03807170
+ ldrltsb r0, [r1, r0]
+ bxlt lr
+ cmp r0, #64 ; 0x40
+ rsblt r1, r0, #64 ; 0x40
+ ldrlt r0, _037FC0F4 ; =_03807170
+ ldrltsb r0, [r0, r1]
+ bxlt lr
+ cmp r0, #96 ; 0x60
+ bge _037FC0D4
+ sub r1, r0, #64 ; 0x40
+ ldr r0, _037FC0F4 ; =_03807170
+ ldrsb r0, [r0, r1]
+ rsb r0, r0, #0
+ mov r0, r0, lsl #24
+ mov r0, r0, asr #24
+ bx lr
+_037FC0D4:
+ sub r0, r0, #96 ; 0x60
+ rsb r1, r0, #32
+ ldr r0, _037FC0F4 ; =_03807170
+ ldrsb r0, [r0, r1]
+ rsb r0, r0, #0
+ mov r0, r0, lsl #24
+ mov r0, r0, asr #24
+ bx lr
+_037FC0F4: .word _03807170
+
+ arm_func_start SND_CalcChannelVolume
+SND_CalcChannelVolume: ; 0x037FC0F8
+ stmdb sp!, {r4, lr}
+ mov r4, r0
+ ldr r0, _037FC168 ; =0xFFFFFD2D
+ cmp r4, r0
+ movlt r4, r0
+ blt _037FC118
+ cmp r4, #0
+ movgt r4, #0
+_037FC118:
+ ldr r0, _037FC16C ; =0x000002D3
+ add r0, r4, r0
+ bl FUN_037FC170
+ mvn r1, #239 ; 0xef
+ cmp r4, r1
+ movlt r1, #3
+ blt _037FC154
+ mvn r1, #119 ; 0x77
+ cmp r4, r1
+ movlt r1, #2
+ blt _037FC154
+ mvn r1, #59 ; 0x3b
+ cmp r4, r1
+ movlt r1, #1
+ movge r1, #0
+_037FC154:
+ orr r0, r0, r1, lsl #8
+ mov r0, r0, lsl #16
+ mov r0, r0, lsr #16
+ ldmia sp!, {r4, lr}
+ bx lr
+_037FC168: .word 0xFFFFFD2D
+_037FC16C: .word 0x000002D3
+
+ arm_func_start FUN_037FC170
+FUN_037FC170: ; 0x037FC170
+ ldr ip, _037FC178 ; =SVC_GetVolumeTable
+ bx ip
+_037FC178: .word SVC_GetVolumeTable
+
+ arm_func_start SND_CalcTimer
+SND_CalcTimer: ; 0x037FC17C
+ stmdb sp!, {r4, r5, lr}
+ sub sp, sp, #4
+ mov r5, r0
+ mov r4, #0
+ rsb r0, r1, #0
+ b _037FC19C
+_037FC194:
+ sub r4, r4, #1
+ add r0, r0, #768 ; 0x300
+_037FC19C:
+ cmp r0, #0
+ blt _037FC194
+ b _037FC1B0
+_037FC1A8:
+ add r4, r4, #1
+ sub r0, r0, #768 ; 0x300
+_037FC1B0:
+ cmp r0, #768 ; 0x300
+ bge _037FC1A8
+ bl FUN_037FC2A4
+ mov r2, #0
+ mov r1, #65536 ; 0x10000
+ adds lr, r0, r1
+ adc ip, r2, #0
+ mov r3, r5, asr #31
+ umull r1, r0, lr, r5
+ mla r0, lr, r3, r0
+ mla r0, ip, r5, r0
+ sub lr, r4, #16
+ cmp lr, #0
+ bgt _037FC208
+ rsb r2, lr, #0
+ mov r3, r0, lsr r2
+ mov r5, r1, lsr r2
+ rsb r1, r2, #32
+ orr r5, r5, r0, lsl r1
+ sub r1, r2, #32
+ orr r5, r5, r0, lsr r1
+ b _037FC264
+_037FC208:
+ cmp lr, #32
+ bge _037FC25C
+ mvn r5, #0
+ rsb r4, lr, #32
+ mov ip, r5, lsl r4
+ rsb r3, r4, #32
+ orr ip, ip, r5, lsr r3
+ sub r3, r4, #32
+ orr ip, ip, r5, lsl r3
+ and r3, r0, ip
+ and r5, r1, r5, lsl r4
+ cmp r3, r2
+ cmpeq r5, r2
+ ldrne r0, _037FC2A0 ; =0x0000FFFF
+ bne _037FC294
+ mov r5, r1, lsl lr
+ mov r3, r0, lsl lr
+ orr r3, r3, r1, lsr r4
+ sub r0, lr, #32
+ orr r3, r3, r1, lsl r0
+ b _037FC264
+_037FC25C:
+ ldr r0, _037FC2A0 ; =0x0000FFFF
+ b _037FC294
+_037FC264:
+ mov r1, #0
+ mov r0, #16
+ cmp r3, r1
+ cmpeq r5, r0
+ movcc r5, r0
+ bcc _037FC28C
+ ldr r0, _037FC2A0 ; =0x0000FFFF
+ cmp r3, r1
+ cmpeq r5, r0
+ movhi r5, r0
+_037FC28C:
+ mov r0, r5, lsl #16
+ mov r0, r0, lsr #16
+_037FC294:
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, lr}
+ bx lr
+_037FC2A0: .word 0x0000FFFF
+
+ arm_func_start FUN_037FC2A4
+FUN_037FC2A4: ; 0x037FC2A4
+ ldr ip, _037FC2AC ; =SVC_GetPitchTable
+ bx ip
+_037FC2AC: .word SVC_GetPitchTable
diff --git a/arm7/asm/SND_wave.s b/arm7/asm/SND_wave.s
new file mode 100644
index 00000000..e18acc43
--- /dev/null
+++ b/arm7/asm/SND_wave.s
@@ -0,0 +1,43 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+
+ .text
+
+ arm_func_start SND_InvalidateWave
+SND_InvalidateWave: ; 0x037FC8DC
+ stmdb sp!, {r4, r5, r6, r7, r8, r9, lr}
+ sub sp, sp, #4
+ mov r7, r0
+ mov r6, r1
+ mov r5, #0
+ mov r9, r5
+ ldr r4, _037FC960 ; =SNDi_Work
+ mov r8, #84 ; 0x54
+_037FC8FC:
+ mla r2, r5, r8, r4
+ ldrb r1, [r2, #3]
+ mov r0, r1, lsl #31
+ movs r0, r0, lsr #31
+ beq _037FC944
+ ldrb r0, [r2, #1]
+ cmp r0, #0
+ bne _037FC944
+ ldr r0, [r2, #68] ; 0x44
+ cmp r7, r0
+ bhi _037FC944
+ cmp r0, r6
+ bhi _037FC944
+ bic r0, r1, #2
+ strb r0, [r2, #3]
+ mov r0, r5
+ mov r1, r9
+ bl SND_StopChannel
+_037FC944:
+ add r0, r5, #1
+ and r5, r0, #255 ; 0xff
+ cmp r5, #16
+ bcc _037FC8FC
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, r6, r7, r8, r9, lr}
+ bx lr
+_037FC960: .word SNDi_Work
diff --git a/arm7/asm/SND_work.s b/arm7/asm/SND_work.s
new file mode 100644
index 00000000..fb7f51e9
--- /dev/null
+++ b/arm7/asm/SND_work.s
@@ -0,0 +1,84 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+
+ .section .bss
+
+ .global SNDi_Work
+SNDi_Work: ;0x03807F6C
+ .space 0x038084AC - 0x03807F6C
+#todo unsure if these two belong here
+ .global _038084AC
+_038084AC: ;0x038084AC
+ .space 0x038086EC - 0x038084AC
+
+ .global _038086EC
+_038086EC: ;0x038086EC
+ .space 0x03808EEC - 0x038086EC
+
+ .section .text
+
+ arm_func_start SND_UpdateSharedWork
+SND_UpdateSharedWork: ; 0x037FF448
+ stmdb sp!, {r4, r5, r6, r7, lr}
+ sub sp, sp, #4
+ mov r5, #0
+ mov r4, r5
+ ldr r0, _037FF4E4 ; =SNDi_SharedWork
+ ldr r0, [r0]
+ cmp r0, #0
+ beq _037FF4D8
+ mov r7, r5
+ mov r6, #1
+_037FF470:
+ mov r0, r7
+ bl SND_IsChannelActive
+ cmp r0, #0
+ orrne r0, r5, r6, lsl r7
+ movne r0, r0, lsl #16
+ movne r5, r0, lsr #16
+ add r7, r7, #1
+ cmp r7, #16
+ blt _037FF470
+ mov r0, #0
+ bl SND_IsCaptureActive
+ cmp r0, #0
+ orrne r0, r4, #1
+ movne r0, r0, lsl #16
+ movne r4, r0, lsr #16
+ mov r0, #1
+ bl SND_IsCaptureActive
+ cmp r0, #0
+ orrne r0, r4, #2
+ movne r0, r0, lsl #16
+ movne r4, r0, lsr #16
+ ldr r0, _037FF4E4 ; =SNDi_SharedWork
+ ldr r1, [r0]
+ strh r5, [r1, #8]
+ ldr r0, [r0]
+ strh r4, [r0, #10]
+_037FF4D8:
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, r6, r7, lr}
+ bx lr
+_037FF4E4: .word SNDi_SharedWork
+
+ arm_func_start SND_SetPlayerGlobalVariable
+SND_SetPlayerGlobalVariable: ; 0x037FF4E8
+ ldr r2, _037FF500 ; =SNDi_SharedWork
+ ldr r2, [r2]
+ add r0, r2, r0, lsl #1
+ add r0, r0, #512 ; 0x200
+ strh r1, [r0, #96] ; 0x60
+ bx lr
+_037FF500: .word SNDi_SharedWork
+
+ arm_func_start SND_SetPlayerLocalVariable
+SND_SetPlayerLocalVariable: ; 0x037FF504
+ ldr r3, _037FF520 ; =SNDi_SharedWork
+ ldr ip, [r3]
+ mov r3, #36 ; 0x24
+ mla r3, r0, r3, ip
+ add r0, r3, r1, lsl #1
+ strh r2, [r0, #32]
+ bx lr
+_037FF520: .word SNDi_SharedWork
diff --git a/arm7/asm/dtcm.s b/arm7/asm/dtcm.s
index f02a5a49..454742e5 100644
--- a/arm7/asm/dtcm.s
+++ b/arm7/asm/dtcm.s
@@ -2,5806 +2,6 @@
.include "global.inc"
.section .text
- arm_func_start MI_StopDma
-MI_StopDma: ; 0x037FB20C
- stmdb sp!, {r4, lr}
- mov r4, r0
- bl OS_DisableInterrupts
- mov r1, #6
- mul r1, r4, r1
- add r1, r1, #5
- mov r1, r1, lsl #1
- add r1, r1, #67108864 ; 0x4000000
- ldrh r2, [r1, #176] ; 0xb0
- bic r2, r2, #12800 ; 0x3200
- strh r2, [r1, #176] ; 0xb0
- ldrh r2, [r1, #176] ; 0xb0
- bic r2, r2, #32768 ; 0x8000
- strh r2, [r1, #176] ; 0xb0
- ldrh r2, [r1, #176] ; 0xb0
- ldrh r1, [r1, #176] ; 0xb0
- cmp r4, #0
- bne _037FB27C
- mov r1, #12
- mul r3, r4, r1
- ldr r1, _037FB288 ; =0x040000B0
- add r4, r3, r1
- mov r2, #0
- add r1, r3, #67108864 ; 0x4000000
- str r2, [r1, #176] ; 0xb0
- str r2, [r4, #4]
- ldr r1, _037FB28C ; =0x81400001
- str r1, [r4, #8]
-_037FB27C:
- bl OS_RestoreInterrupts
- ldmia sp!, {r4, lr}
- bx lr
-_037FB288: .word 0x040000B0
-_037FB28C: .word 0x81400001
-
- arm_func_start MI_WaitDma
-MI_WaitDma: ; 0x037FB290
- stmdb sp!, {r4, lr}
- mov r4, r0
- bl OS_DisableInterrupts
- mov r1, #3
- mul r1, r4, r1
- add r2, r1, #2
- ldr r1, _037FB2F8 ; =0x040000B0
- add r2, r1, r2, lsl #2
-_037FB2B0:
- ldr r1, [r2]
- ands r1, r1, #-2147483648 ; 0x80000000
- bne _037FB2B0
- cmp r4, #0
- bne _037FB2EC
- mov r1, #12
- mul r3, r4, r1
- ldr r1, _037FB2F8 ; =0x040000B0
- add r4, r3, r1
- mov r2, #0
- add r1, r3, #67108864 ; 0x4000000
- str r2, [r1, #176] ; 0xb0
- str r2, [r4, #4]
- ldr r1, _037FB2FC ; =0x81400001
- str r1, [r4, #8]
-_037FB2EC:
- bl OS_RestoreInterrupts
- ldmia sp!, {r4, lr}
- bx lr
-_037FB2F8: .word 0x040000B0
-_037FB2FC: .word 0x81400001
-
- arm_func_start MIi_CpuClear16
-MIi_CpuClear16: ; 0x037FB300
- mov r3, #0
-_037FB304:
- cmp r3, r2
- strlth r0, [r1, r3]
- addlt r3, r3, #2
- blt _037FB304
- bx lr
-
- arm_func_start MIi_CpuCopy16
-MIi_CpuCopy16: ; 0x037FB318
- mov ip, #0
-_037FB31C:
- cmp ip, r2
- ldrlth r3, [r0, ip]
- strlth r3, [r1, ip]
- addlt ip, ip, #2
- blt _037FB31C
- bx lr
-
- arm_func_start MIi_CpuClear32
-MIi_CpuClear32: ; 0x037FB334
- add ip, r1, r2
-_037FB338:
- cmp r1, ip
- stmltia r1!, {r0}
- blt _037FB338
- bx lr
-
- arm_func_start MIi_CpuCopy32
-MIi_CpuCopy32: ; 0x037FB348
- add ip, r1, r2
-_037FB34C:
- cmp r1, ip
- ldmltia r0!, {r2}
- stmltia r1!, {r2}
- blt _037FB34C
- bx lr
-
- arm_func_start MIi_CpuClearFast
-MIi_CpuClearFast: ; 0x037FB360
- stmdb sp!, {r4, r5, r6, r7, r8, r9}
- add r9, r1, r2
- mov ip, r2, lsr #5
- add ip, r1, ip, lsl #5
- mov r2, r0
- mov r3, r2
- mov r4, r2
- mov r5, r2
- mov r6, r2
- mov r7, r2
- mov r8, r2
-_037FB38C:
- cmp r1, ip
- stmltia r1!, {r0, r2, r3, r4, r5, r6, r7, r8}
- blt _037FB38C
-_037FB398:
- cmp r1, r9
- stmltia r1!, {r0}
- blt _037FB398
- ldmia sp!, {r4, r5, r6, r7, r8, r9}
- bx lr
-
- arm_func_start MIi_CpuCopyFast
-MIi_CpuCopyFast: ; 0x037FB3AC
- stmdb sp!, {r4, r5, r6, r7, r8, r9, sl}
- add sl, r1, r2
- mov ip, r2, lsr #5
- add ip, r1, ip, lsl #5
-_037FB3BC:
- cmp r1, ip
- ldmltia r0!, {r2, r3, r4, r5, r6, r7, r8, r9}
- stmltia r1!, {r2, r3, r4, r5, r6, r7, r8, r9}
- blt _037FB3BC
-_037FB3CC:
- cmp r1, sl
- ldmltia r0!, {r2}
- stmltia r1!, {r2}
- blt _037FB3CC
- ldmia sp!, {r4, r5, r6, r7, r8, r9, sl}
- bx lr
-
- arm_func_start MI_CpuFill8
-MI_CpuFill8: ; 0x037FB3E4
- cmp r2, #0
- bxeq lr
- tst r0, #1
- beq _037FB410
- ldrh ip, [r0, #-1]
- and ip, ip, #255 ; 0xff
- orr r3, ip, r1, lsl #8
- strh r3, [r0, #-1]
- add r0, r0, #1
- subs r2, r2, #1
- bxeq lr
-_037FB410:
- cmp r2, #2
- bcc _037FB458
- orr r1, r1, r1, lsl #8
- tst r0, #2
- beq _037FB430
- strh r1, [r0], #2
- subs r2, r2, #2
- bxeq lr
-_037FB430:
- orr r1, r1, r1, lsl #16
- bics r3, r2, #3
- beq _037FB450
- sub r2, r2, r3
- add ip, r3, r0
-_037FB444:
- str r1, [r0], #4
- cmp r0, ip
- bcc _037FB444
-_037FB450:
- tst r2, #2
- strneh r1, [r0], #2
-_037FB458:
- tst r2, #1
- bxeq lr
- ldrh r3, [r0]
- and r3, r3, #65280 ; 0xff00
- and r1, r1, #255 ; 0xff
- orr r1, r1, r3
- strh r1, [r0]
- bx lr
-
- arm_func_start MI_CpuCopy8
-MI_CpuCopy8: ; 0x037FB478
- cmp r2, #0
- bxeq lr
- tst r1, #1
- beq _037FB4B8
- ldrh ip, [r1, #-1]
- and ip, ip, #255 ; 0xff
- tst r0, #1
- ldrneh r3, [r0, #-1]
- movne r3, r3, lsr #8
- ldreqh r3, [r0]
- orr r3, ip, r3, lsl #8
- strh r3, [r1, #-1]
- add r0, r0, #1
- add r1, r1, #1
- subs r2, r2, #1
- bxeq lr
-_037FB4B8:
- eor ip, r1, r0
- tst ip, #1
- beq _037FB50C
- bic r0, r0, #1
- ldrh ip, [r0], #2
- mov r3, ip, lsr #8
- subs r2, r2, #2
- bcc _037FB4F0
-_037FB4D8:
- ldrh ip, [r0], #2
- orr ip, r3, ip, lsl #8
- strh ip, [r1], #2
- mov r3, ip, lsr #16
- subs r2, r2, #2
- bcs _037FB4D8
-_037FB4F0:
- tst r2, #1
- bxeq lr
- ldrh ip, [r1]
- and ip, ip, #65280 ; 0xff00
- orr ip, ip, r3
- strh ip, [r1]
- bx lr
-_037FB50C:
- tst ip, #2
- beq _037FB538
- bics r3, r2, #1
- beq _037FB584
- sub r2, r2, r3
- add ip, r3, r1
-_037FB524:
- ldrh r3, [r0], #2
- strh r3, [r1], #2
- cmp r1, ip
- bcc _037FB524
- b _037FB584
-_037FB538:
- cmp r2, #2
- bcc _037FB584
- tst r1, #2
- beq _037FB558
- ldrh r3, [r0], #2
- strh r3, [r1], #2
- subs r2, r2, #2
- bxeq lr
-_037FB558:
- bics r3, r2, #3
- beq _037FB578
- sub r2, r2, r3
- add ip, r3, r1
-_037FB568:
- ldr r3, [r0], #4
- str r3, [r1], #4
- cmp r1, ip
- bcc _037FB568
-_037FB578:
- tst r2, #2
- ldrneh r3, [r0], #2
- strneh r3, [r1], #2
-_037FB584:
- tst r2, #1
- bxeq lr
- ldrh r2, [r1]
- ldrh r0, [r0]
- and r2, r2, #65280 ; 0xff00
- and r0, r0, #255 ; 0xff
- orr r0, r2, r0
- strh r0, [r1]
- bx lr
-
- arm_func_start MI_SwapWord
-MI_SwapWord: ; 0x037FB5A8
- swp r0, r0, [r1]
- bx lr
-
- arm_func_start PXI_Init
-PXI_Init: ; 0x037FB5B0
- ldr ip, _037FB5B8 ; =PXI_InitFifo
- bx ip
-_037FB5B8: .word PXI_InitFifo
-
- arm_func_start PXIi_HandlerRecvFifoNotEmpty
-PXIi_HandlerRecvFifoNotEmpty: ; 0x037FB5BC
- stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, lr}
- sub sp, sp, #8
- ldr sl, _037FB6D0 ; =0x04000184
- ldr r5, _037FB6D4 ; =_0380795C
- mov r7, #68157440 ; 0x4100000
- mov r6, #0
- mvn r8, #3
- mvn r9, #2
- ldr r4, _037FB6D8 ; =0x04000188
-_037FB5E0:
- ldrh r0, [sl]
- ands r0, r0, #16384 ; 0x4000
- ldrneh r0, [sl]
- orrne r0, r0, #49152 ; 0xc000
- strneh r0, [sl]
- movne r1, r9
- bne _037FB628
- bl OS_DisableInterrupts
- ldrh r1, [sl]
- ands r1, r1, #256 ; 0x100
- beq _037FB618
- bl OS_RestoreInterrupts
- mov r1, r8
- b _037FB628
-_037FB618:
- ldr r1, [r7]
- str r1, [sp]
- bl OS_RestoreInterrupts
- mov r1, r6
-_037FB628:
- cmp r1, r8
- beq _037FB6C4
- mvn r0, #2
- cmp r1, r0
- beq _037FB5E0
- ldr r2, [sp]
- mov r0, r2, lsl #27
- movs r0, r0, lsr #27
- beq _037FB5E0
- ldr r3, [r5, r0, lsl #2]
- cmp r3, #0
- beq _037FB670
- mov r1, r2, lsr #6
- mov r2, r2, lsl #26
- mov r2, r2, lsr #31
- mov lr, pc
- bx r3
- b _037FB5E0
-_037FB670:
- mov r0, r2, lsl #26
- movs r0, r0, lsr #31
- bne _037FB5E0
- orr r0, r2, #32
- str r0, [sp]
- ldrh r0, [sl]
- ands r0, r0, #16384 ; 0x4000
- ldrneh r0, [sl]
- orrne r0, r0, #49152 ; 0xc000
- strneh r0, [sl]
- bne _037FB5E0
- bl OS_DisableInterrupts
- ldrh r1, [sl]
- ands r1, r1, #2
- beq _037FB6B4
- bl OS_RestoreInterrupts
- b _037FB5E0
-_037FB6B4:
- ldr r1, [sp]
- str r1, [r4]
- bl OS_RestoreInterrupts
- b _037FB5E0
-_037FB6C4:
- add sp, sp, #8
- ldmia sp!, {r4, r5, r6, r7, r8, r9, sl, lr}
- bx lr
-_037FB6D0: .word 0x04000184
-_037FB6D4: .word _0380795C
-_037FB6D8: .word 0x04000188
-
- arm_func_start PXI_SendWordByFifo
-PXI_SendWordByFifo: ; 0x037FB6DC
- stmfd sp!, {lr}
- sub sp, sp, #4
- ldr r3, [sp]
- bic r3, r3, #31
- and r0, r0, #31
- orr r0, r3, r0
- str r0, [sp]
- bic r3, r0, #32
- and r0, r2, #1
- orr r0, r3, r0, lsl #5
- str r0, [sp]
- and r2, r0, #63 ; 0x3f
- bic r0, r1, #-67108864 ; 0xfc000000
- orr r0, r2, r0, lsl #6
- str r0, [sp]
- ldr r1, _037FB778 ; =0x04000184
- ldrh r0, [r1]
- ands r0, r0, #16384 ; 0x4000
- ldrneh r0, [r1]
- orrne r0, r0, #49152 ; 0xc000
- strneh r0, [r1]
- mvnne r0, #0
- bne _037FB76C
- bl OS_DisableInterrupts
- ldr r1, _037FB778 ; =0x04000184
- ldrh r1, [r1]
- ands r1, r1, #2
- beq _037FB758
- bl OS_RestoreInterrupts
- mvn r0, #1
- b _037FB76C
-_037FB758:
- ldr r2, [sp]
- ldr r1, _037FB77C ; =0x04000188
- str r2, [r1]
- bl OS_RestoreInterrupts
- mov r0, #0
-_037FB76C:
- add sp, sp, #4
- ldmia sp!, {lr}
- bx lr
-_037FB778: .word 0x04000184
-_037FB77C: .word 0x04000188
-
- arm_func_start PXI_IsCallbackReady
-PXI_IsCallbackReady: ; 0x037FB780
- mov r3, #1
- mov r2, r3, lsl r0
- ldr r0, _037FB7A4 ; =0x027FFC00
- add r0, r0, r1, lsl #2
- ldr r0, [r0, #904] ; 0x388
- ands r0, r2, r0
- moveq r3, #0
- mov r0, r3
- bx lr
-_037FB7A4: .word 0x027FFC00
-
- arm_func_start PXI_SetFifoRecvCallback
-PXI_SetFifoRecvCallback: ; 0x037FB7A8
- stmdb sp!, {r4, r5, lr}
- sub sp, sp, #4
- mov r4, r0
- mov r5, r1
- bl OS_DisableInterrupts
- ldr r1, _037FB80C ; =_0380795C
- str r5, [r1, r4, lsl #2]
- cmp r5, #0
- beq _037FB7E4
- ldr r3, _037FB810 ; =0x027FFC00
- ldr r2, [r3, #908] ; 0x38c
- mov r1, #1
- orr r1, r2, r1, lsl r4
- str r1, [r3, #908] ; 0x38c
- b _037FB7FC
-_037FB7E4:
- ldr r3, _037FB810 ; =0x027FFC00
- ldr r2, [r3, #908] ; 0x38c
- mov r1, #1
- mvn r1, r1, lsl r4
- and r1, r2, r1
- str r1, [r3, #908] ; 0x38c
-_037FB7FC:
- bl OS_RestoreInterrupts
- add sp, sp, #4
- ldmia sp!, {r4, r5, lr}
- bx lr
-_037FB80C: .word _0380795C
-_037FB810: .word 0x027FFC00
-
- arm_func_start PXI_InitFifo
-PXI_InitFifo: ; 0x037FB814
- stmdb sp!, {r4, r5, r6, r7, r8, lr}
- bl OS_DisableInterrupts
- mov r5, r0
- ldr r0, _037FB8D4 ; =_03807958
- ldrh r1, [r0]
- cmp r1, #0
- bne _037FB8C4
- mov r1, #1
- strh r1, [r0]
- mov r2, #0
- ldr r0, _037FB8D8 ; =0x027FFC00
- str r2, [r0, #908] ; 0x38c
- mov r1, r2
- ldr r0, _037FB8DC ; =_0380795C
-_037FB84C:
- str r1, [r0, r2, lsl #2]
- add r2, r2, #1
- cmp r2, #32
- blt _037FB84C
- ldr r1, _037FB8E0 ; =0x0000C408
- ldr r0, _037FB8E4 ; =0x04000184
- strh r1, [r0]
- mov r0, #262144 ; 0x40000
- bl OS_ResetRequestIrqMask
- mov r0, #262144 ; 0x40000
- ldr r1, _037FB8E8 ; =PXIi_HandlerRecvFifoNotEmpty
- bl OS_SetIrqFunction
- mov r0, #262144 ; 0x40000
- bl OS_EnableIrqMask
- mov r4, #8
- mov r6, r4
- ldr r8, _037FB8EC ; =0x04000180
- mov r7, #1000 ; 0x3e8
- b _037FB8BC
-_037FB898:
- mov r0, r4, lsl #8
- strh r0, [r8]
- mov r0, r7
- bl OS_SpinWait
- ldrh r0, [r8]
- and r0, r0, #15
- cmp r0, r4
- movne r4, r6
- sub r4, r4, #1
-_037FB8BC:
- cmp r4, #0
- bge _037FB898
-_037FB8C4:
- mov r0, r5
- bl OS_RestoreInterrupts
- ldmia sp!, {r4, r5, r6, r7, r8, lr}
- bx lr
-_037FB8D4: .word _03807958
-_037FB8D8: .word 0x027FFC00
-_037FB8DC: .word _0380795C
-_037FB8E0: .word 0x0000C408
-_037FB8E4: .word 0x04000184
-_037FB8E8: .word PXIi_HandlerRecvFifoNotEmpty
-_037FB8EC: .word 0x04000180
-
- arm_func_start EXIi_SelectRcnt
-EXIi_SelectRcnt: ; 0x037FB8F0
- mov r1, r0
- mov r0, #49152 ; 0xc000
- mov r1, r1, lsl #16
- mov r1, r1, lsr #16
- ldr ip, _037FB908 ; =EXIi_SetBitRcnt0L
- bx ip
-_037FB908: .word EXIi_SetBitRcnt0L
-
- arm_func_start EXIi_SetBitRcnt0L
-EXIi_SetBitRcnt0L: ; 0x037FB90C
- mvn r3, r0
- ldr r2, _037FB928 ; =0x04000134
- ldrh r0, [r2]
- and r0, r3, r0
- orr r0, r1, r0
- strh r0, [r2]
- bx lr
-_037FB928: .word 0x04000134
-
- arm_func_start FUN_037FB92C
-FUN_037FB92C: ; 0x037FB92C
- stmdb sp!, {r4, lr}
- mov r4, #0
- mov r0, #32768 ; 0x8000
- bl EXIi_SelectRcnt
- ldr r0, _037FB964 ; =0x04000136
- ldrh r1, [r0]
- ands r0, r1, #128 ; 0x80
- movne r4, #32768 ; 0x8000
- and r0, r1, #11
- orr r1, r4, r0, lsl #10
- ldr r0, _037FB968 ; =0x027FFFA8
- strh r1, [r0]
- ldmia sp!, {r4, lr}
- bx lr
-_037FB964: .word 0x04000136
-_037FB968: .word 0x027FFFA8
-
- arm_func_start PAD_InitXYButton
-PAD_InitXYButton: ; 0x037FB96C
- stmfd sp!, {lr}
- sub sp, sp, #12
- bl OS_IsTickAvailable
- cmp r0, #0
- beq _037FB98C
- bl OS_IsAlarmAvailable
- cmp r0, #0
- bne _037FB994
-_037FB98C:
- mov r0, #0
- b _037FB9F0
-_037FB994:
- ldr r0, _037FB9FC ; =PADi_XYButtonAvailable
- ldr r0, [r0]
- cmp r0, #0
- movne r0, #0
- bne _037FB9F0
- ldr r0, _037FBA00 ; =_038079E0
- bl OS_CreateAlarm
- bl OS_GetTick
- mov r2, r0
- ldr r0, _037FBA04 ; =FUN_037FB92C
- str r0, [sp, #4]
- mov r0, #0
- str r0, [sp, #8]
- ldr r3, _037FBA08 ; =0x0000082E
- str r0, [sp]
- ldr r0, _037FBA00 ; =_038079E0
- adds ip, r2, r3
- adc r2, r1, #0
- mov r1, ip
- bl OS_SetPeriodicAlarm
- mov r0, #1
- ldr r1, _037FB9FC ; =PADi_XYButtonAvailable
- str r0, [r1]
-_037FB9F0:
- add sp, sp, #12
- ldmia sp!, {lr}
- bx lr
-_037FB9FC: .word PADi_XYButtonAvailable
-_037FBA00: .word _038079E0
-_037FBA04: .word FUN_037FB92C
-_037FBA08: .word 0x0000082E
-
- arm_func_start SND_SetOutputSelector
-SND_SetOutputSelector: ; 0x037FBA0C
- ldr ip, _037FBA40 ; =0x04000501
- ldrb ip, [ip]
- ands ip, ip, #128 ; 0x80
- movne ip, #1
- moveq ip, #0
- mov ip, ip, lsl #7
- orr r3, ip, r3, lsl #5
- orr r2, r3, r2, lsl #4
- orr r1, r2, r1, lsl #2
- orr r1, r0, r1
- ldr r0, _037FBA40 ; =0x04000501
- strb r1, [r0]
- bx lr
-_037FBA40: .word 0x04000501
-
- arm_func_start SND_SetMasterVolume
-SND_SetMasterVolume: ; 0x037FBA44
- ldr r1, _037FBA50 ; =0x04000500
- strb r0, [r1]
- bx lr
-_037FBA50: .word 0x04000500
-
- arm_func_start SND_EndSleep
-SND_EndSleep: ; 0x037FBA54
- stmfd sp!, {lr}
- sub sp, sp, #4
- ldr r1, _037FBA94 ; =0x04000304
- ldrh r0, [r1]
- orr r0, r0, #1
- strh r0, [r1]
- mov r0, #1
- bl PMi_SetControl
- mov r0, #256 ; 0x100
- bl FUN_037FBA9C
- ldr r0, _037FBA98 ; =0x0007AB80
- bl OS_SpinWait
- bl SND_Enable
- add sp, sp, #4
- ldmia sp!, {lr}
- bx lr
-_037FBA94: .word 0x04000304
-_037FBA98: .word 0x0007AB80
-
- arm_func_start FUN_037FBA9C
-FUN_037FBA9C: ; 0x037FBA9C
- ldr ip, _037FBAA4 ; =SVC_SoundBiasSet
- bx ip
-_037FBAA4: .word SVC_SoundBiasSet
-
- arm_func_start SND_BeginSleep
-SND_BeginSleep: ; 0x037FBAA8
- stmfd sp!, {lr}
- sub sp, sp, #4
- bl SND_Disable
- mov r0, #128 ; 0x80
- bl FUN_037FBAEC
- mov r0, #262144 ; 0x40000
- bl OS_SpinWait
- mov r0, #1
- bl PMi_ResetControl
- ldr r1, _037FBAE8 ; =0x04000304
- ldrh r0, [r1]
- bic r0, r0, #1
- strh r0, [r1]
- add sp, sp, #4
- ldmia sp!, {lr}
- bx lr
-_037FBAE8: .word 0x04000304
-
- arm_func_start FUN_037FBAEC
-FUN_037FBAEC: ; 0x037FBAEC
- ldr ip, _037FBAF4 ; =SVC_SoundBiasReset
- bx ip
-_037FBAF4: .word SVC_SoundBiasReset
-
- arm_func_start SND_Shutdown
-SND_Shutdown: ; 0x037FBAF8
- stmdb sp!, {r4, r5, lr}
- sub sp, sp, #4
- bl SND_Disable
- mov r5, #0
- mov r4, #1
-_037FBB0C:
- mov r0, r5
- mov r1, r4
- bl SND_StopChannel
- add r5, r5, #1
- cmp r5, #16
- blt _037FBB0C
- mov r1, #0
- ldr r0, _037FBB44 ; =0x04000508
- strb r1, [r0]
- ldr r0, _037FBB48 ; =0x04000509
- strb r1, [r0]
- add sp, sp, #4
- ldmia sp!, {r4, r5, lr}
- bx lr
-_037FBB44: .word 0x04000508
-_037FBB48: .word 0x04000509
-
- arm_func_start SND_Disable
-SND_Disable: ; 0x037FBB4C
- ldr r1, _037FBB60 ; =0x04000501
- ldrb r0, [r1]
- bic r0, r0, #128 ; 0x80
- strb r0, [r1]
- bx lr
-_037FBB60: .word 0x04000501
-
- arm_func_start SND_Enable
-SND_Enable: ; 0x037FBB64
- ldr r1, _037FBB78 ; =0x04000501
- ldrb r0, [r1]
- orr r0, r0, #128 ; 0x80
- strb r0, [r1]
- bx lr
-_037FBB78: .word 0x04000501
-
- arm_func_start CalcSurroundDecay
-CalcSurroundDecay: ; 0x037FBB7C
- cmp r1, #24
- bge _037FBBAC
- ldr r2, _037FBBE0 ; =sSurroundDecay
- ldr r3, [r2]
- ldr r2, _037FBBE4 ; =0x00007FFF
- sub r2, r2, r3
- add r1, r1, #40 ; 0x28
- mul r1, r3, r1
- add r1, r1, r2, lsl #6
- mul r1, r0, r1
- mov r0, r1, asr #21
- bx lr
-_037FBBAC:
- cmp r1, #104 ; 0x68
- bxle lr
- ldr r2, _037FBBE0 ; =sSurroundDecay
- ldr ip, [r2]
- ldr r2, _037FBBE4 ; =0x00007FFF
- add r3, ip, r2
- rsb r2, ip, #0
- sub r1, r1, #40 ; 0x28
- mul r1, r2, r1
- add r1, r1, r3, lsl #6
- mul r1, r0, r1
- mov r0, r1, asr #21
- bx lr
-_037FBBE0: .word sSurroundDecay
-_037FBBE4: .word 0x00007FFF
-
- arm_func_start SNDi_SetSurroundDecay
-SNDi_SetSurroundDecay: ; 0x037FBBE8
- stmdb sp!, {r4, r5, r6, r7, r8, lr}
- ldr r1, _037FBC40 ; =sSurroundDecay
- str r0, [r1]
- mov r4, #0
- ldr r6, _037FBC44 ; =sOrgVolume
- mov r7, #1
- ldr r5, _037FBC48 ; =0x0000FFF5
-_037FBC04:
- mov r0, r7, lsl r4
- ands r0, r0, r5
- beq _037FBC2C
- mov r8, r4, lsl #4
- add r0, r8, #67108864 ; 0x4000000
- ldrb r1, [r0, #1026] ; 0x402
- ldrb r0, [r6, r4]
- bl CalcSurroundDecay
- add r1, r8, #67108864 ; 0x4000000
- strb r0, [r1, #1024] ; 0x400
-_037FBC2C:
- add r4, r4, #1
- cmp r4, #16
- blt _037FBC04
- ldmia sp!, {r4, r5, r6, r7, r8, lr}
- bx lr
-_037FBC40: .word sSurroundDecay
-_037FBC44: .word sOrgVolume
-_037FBC48: .word 0x0000FFF5
-
- arm_func_start SND_GetChannelControl
-SND_GetChannelControl: ; 0x037FBC4C
- mov r0, r0, lsl #4
- add r0, r0, #67108864 ; 0x4000000
- ldr r0, [r0, #1024] ; 0x400
- bx lr
-
- arm_func_start SND_SetMasterPan
-SND_SetMasterPan: ; 0x037FBC5C
- ldr r1, _037FBCB8 ; =sMasterPan
- str r0, [r1]
- cmp r0, #0
- blt _037FBC90
- mov r2, #0
- and r1, r0, #255 ; 0xff
-_037FBC74:
- mov r0, r2, lsl #4
- add r0, r0, #67108864 ; 0x4000000
- strb r1, [r0, #1026] ; 0x402
- add r2, r2, #1
- cmp r2, #16
- blt _037FBC74
- bx lr
-_037FBC90:
- mov r3, #0
- ldr r2, _037FBCBC ; =sOrgPan
-_037FBC98:
- ldrb r1, [r2, r3]
- mov r0, r3, lsl #4
- add r0, r0, #67108864 ; 0x4000000
- strb r1, [r0, #1026] ; 0x402
- add r3, r3, #1
- cmp r3, #16
- blt _037FBC98
- bx lr
-_037FBCB8: .word sMasterPan
-_037FBCBC: .word sOrgPan
-
- arm_func_start SND_IsChannelActive
-SND_IsChannelActive: ; 0x037FBCC0
- mov r0, r0, lsl #4
- add r0, r0, #67108864 ; 0x4000000
- ldrb r0, [r0, #1027] ; 0x403
- ands r0, r0, #128 ; 0x80
- movne r0, #1
- moveq r0, #0
- bx lr
-
- arm_func_start SND_SetChannelPan
-SND_SetChannelPan: ; 0x037FBCDC
- stmdb sp!, {r4, lr}
- ldr r2, _037FBD44 ; =sOrgPan
- strb r1, [r2, r0]
- ldr r2, _037FBD48 ; =sMasterPan
- ldr r2, [r2]
- cmp r2, #0
- movge r1, r2
- mov r4, r0, lsl #4
- add r2, r4, #67108864 ; 0x4000000
- strb r1, [r2, #1026] ; 0x402
- ldr r2, _037FBD4C ; =sSurroundDecay
- ldr r2, [r2]
- cmp r2, #0
- ble _037FBD3C
- mov r2, #1
- mov r3, r2, lsl r0
- ldr r2, _037FBD50 ; =0x0000FFF5
- ands r2, r3, r2
- beq _037FBD3C
- ldr r2, _037FBD54 ; =sOrgVolume
- ldrb r0, [r2, r0]
- bl CalcSurroundDecay
- add r1, r4, #67108864 ; 0x4000000
- strb r0, [r1, #1024] ; 0x400
-_037FBD3C:
- ldmia sp!, {r4, lr}
- bx lr
-_037FBD44: .word sOrgPan
-_037FBD48: .word sMasterPan
-_037FBD4C: .word sSurroundDecay
-_037FBD50: .word 0x0000FFF5
-_037FBD54: .word sOrgVolume
-
- arm_func_start SND_SetChannelTimer
-SND_SetChannelTimer: ; 0x037FBD58
- rsb r1, r1, #65536 ; 0x10000
- mov r0, r0, lsl #4
- add r0, r0, #67108864 ; 0x4000000
- add r0, r0, #1024 ; 0x400
- strh r1, [r0, #8]
- bx lr
-
- arm_func_start SND_SetChannelVolume
-SND_SetChannelVolume: ; 0x037FBD70
- stmdb sp!, {r4, r5, lr}
- sub sp, sp, #4
- mov r5, r0
- mov r4, r2
- ldr r0, _037FBDE8 ; =sOrgVolume
- strb r1, [r0, r5]
- ldr r0, _037FBDEC ; =sSurroundDecay
- ldr r0, [r0]
- cmp r0, #0
- ble _037FBDC8
- mov r0, #1
- mov r2, r0, lsl r5
- ldr r0, _037FBDF0 ; =0x0000FFF5
- ands r0, r2, r0
- beq _037FBDC8
- mov r0, r5, lsl #4
- add r0, r0, #67108864 ; 0x4000000
- ldrb r2, [r0, #1026] ; 0x402
- mov r0, r1
- mov r1, r2
- bl CalcSurroundDecay
- mov r1, r0
-_037FBDC8:
- orr r1, r1, r4, lsl #8
- mov r0, r5, lsl #4
- add r0, r0, #67108864 ; 0x4000000
- add r0, r0, #1024 ; 0x400
- strh r1, [r0]
- add sp, sp, #4
- ldmia sp!, {r4, r5, lr}
- bx lr
-_037FBDE8: .word sOrgVolume
-_037FBDEC: .word sSurroundDecay
-_037FBDF0: .word 0x0000FFF5
-
- arm_func_start SND_StopChannel
-SND_StopChannel: ; 0x037FBDF4
- mov r3, r0, lsl #4
- ldr r2, _037FBE1C ; =0x04000400
- add ip, r2, r0, lsl #4
- add r0, r3, #67108864 ; 0x4000000
- ldr r0, [r0, #1024] ; 0x400
- bic r2, r0, #-2147483648 ; 0x80000000
- ands r0, r1, #1
- orrne r2, r2, #32768 ; 0x8000
- str r2, [ip]
- bx lr
-_037FBE1C: .word 0x04000400
-
- arm_func_start SND_SetupChannelNoise
-SND_SetupChannelNoise: ; 0x037FBE20
- stmdb sp!, {r4, r5, r6, r7, lr}
- sub sp, sp, #4
- mov r7, r2
- mov r6, r3
- ldr r5, [sp, #24]
- mov r4, r0, lsl #4
- ldr r2, _037FBEBC ; =sOrgPan
- strb r5, [r2, r0]
- ldr r2, _037FBEC0 ; =sMasterPan
- ldr r2, [r2]
- cmp r2, #0
- movge r5, r2
- ldr r2, _037FBEC4 ; =sOrgVolume
- strb r1, [r2, r0]
- ldr r2, _037FBEC8 ; =sSurroundDecay
- ldr r2, [r2]
- cmp r2, #0
- ble _037FBE8C
- mov r2, #1
- mov r2, r2, lsl r0
- ldr r0, _037FBECC ; =0x0000FFF5
- ands r0, r2, r0
- beq _037FBE8C
- mov r0, r1
- mov r1, r5
- bl CalcSurroundDecay
- mov r1, r0
-_037FBE8C:
- mov r0, r5, lsl #16
- orr r0, r0, #1610612736 ; 0x60000000
- orr r0, r0, r7, lsl #8
- orr r1, r1, r0
- add r0, r4, #67108864 ; 0x4000000
- str r1, [r0, #1024] ; 0x400
- rsb r1, r6, #65536 ; 0x10000
- add r0, r0, #1024 ; 0x400
- strh r1, [r0, #8]
- add sp, sp, #4
- ldmia sp!, {r4, r5, r6, r7, lr}
- bx lr
-_037FBEBC: .word sOrgPan
-_037FBEC0: .word sMasterPan
-_037FBEC4: .word sOrgVolume
-_037FBEC8: .word sSurroundDecay
-_037FBECC: .word 0x0000FFF5
-
- arm_func_start SND_SetupChannelPsg
-SND_SetupChannelPsg: ; 0x037FBED0
- stmdb sp!, {r4, r5, r6, r7, lr}
- sub sp, sp, #4
- mov r7, r1
- mov r6, r3
- ldr r5, [sp, #28]
- mov r4, r0, lsl #4
- ldr r1, _037FBF74 ; =sOrgPan
- strb r5, [r1, r0]
- ldr r1, _037FBF78 ; =sMasterPan
- ldr r1, [r1]
- cmp r1, #0
- movge r5, r1
- ldr r1, _037FBF7C ; =sOrgVolume
- strb r2, [r1, r0]
- ldr r1, _037FBF80 ; =sSurroundDecay
- ldr r1, [r1]
- cmp r1, #0
- ble _037FBF3C
- mov r1, #1
- mov r1, r1, lsl r0
- ldr r0, _037FBF84 ; =0x0000FFF5
- ands r0, r1, r0
- beq _037FBF3C
- mov r0, r2
- mov r1, r5
- bl CalcSurroundDecay
- mov r2, r0
-_037FBF3C:
- mov r0, r7, lsl #24
- orr r0, r0, #1610612736 ; 0x60000000
- orr r0, r0, r5, lsl #16
- orr r0, r0, r6, lsl #8
- orr r1, r2, r0
- add r0, r4, #67108864 ; 0x4000000
- str r1, [r0, #1024] ; 0x400
- ldr r1, [sp, #24]
- rsb r1, r1, #65536 ; 0x10000
- add r0, r0, #1024 ; 0x400
- strh r1, [r0, #8]
- add sp, sp, #4
- ldmia sp!, {r4, r5, r6, r7, lr}
- bx lr
-_037FBF74: .word sOrgPan
-_037FBF78: .word sMasterPan
-_037FBF7C: .word sOrgVolume
-_037FBF80: .word sSurroundDecay
-_037FBF84: .word 0x0000FFF5
-
- arm_func_start SND_SetupChannelPcm
-SND_SetupChannelPcm: ; 0x037FBF88
- stmdb sp!, {r4, r5, r6, r7, r8, lr}
- mov r8, r1
- mov r7, r2
- mov r6, r3
- ldr r1, [sp, #32]
- ldr r5, [sp, #44] ; 0x2c
- mov r4, r0, lsl #4
- ldr r2, _037FC044 ; =sOrgPan
- strb r5, [r2, r0]
- ldr r2, _037FC048 ; =sMasterPan
- ldr r2, [r2]
- cmp r2, #0
- movge r5, r2
- ldr r2, _037FC04C ; =sOrgVolume
- strb r1, [r2, r0]
- ldr r2, _037FC050 ; =sSurroundDecay
- ldr r2, [r2]
- cmp r2, #0
- ble _037FBFF8
- mov r2, #1
- mov r2, r2, lsl r0
- ldr r0, _037FC054 ; =0x0000FFF5
- ands r0, r2, r0
- beq _037FBFF8
- mov r0, r1
- mov r1, r5
- bl CalcSurroundDecay
- mov r1, r0
-_037FBFF8:
- ldr r2, [sp, #36] ; 0x24
- mov r0, r7, lsl #29
- orr r0, r0, r6, lsl #27
- orr r0, r0, r5, lsl #16
- orr r0, r0, r2, lsl #8
- orr r0, r1, r0
- add r1, r4, #67108864 ; 0x4000000
- str r0, [r1, #1024] ; 0x400
- ldr r0, [sp, #40] ; 0x28
- rsb r2, r0, #65536 ; 0x10000
- add r0, r1, #1024 ; 0x400
- strh r2, [r0, #8]
- ldr r2, [sp, #24]
- strh r2, [r0, #10]
- ldr r0, [sp, #28]
- str r0, [r1, #1036] ; 0x40c
- str r8, [r1, #1028] ; 0x404
- ldmia sp!, {r4, r5, r6, r7, r8, lr}
- bx lr
-_037FC044: .word sOrgPan
-_037FC048: .word sMasterPan
-_037FC04C: .word sOrgVolume
-_037FC050: .word sSurroundDecay
-_037FC054: .word 0x0000FFF5
-
- arm_func_start SND_CalcRandom
-SND_CalcRandom: ; 0x037FC058
- ldr r2, _037FC080 ; =_03807660
- ldr r3, [r2]
- ldr r0, _037FC084 ; =0x0019660D
- ldr r1, _037FC088 ; =0x3C6EF35F
- mla r0, r3, r0, r1
- str r0, [r2]
- mov r0, r0, lsr #16
- mov r0, r0, lsl #16
- mov r0, r0, lsr #16
- bx lr
-_037FC080: .word _03807660
-_037FC084: .word 0x0019660D
-_037FC088: .word 0x3C6EF35F
-
- arm_func_start SND_SinIdx
-SND_SinIdx: ; 0x037FC08C
- cmp r0, #32
- ldrlt r1, _037FC0F4 ; =_03807170
- ldrltsb r0, [r1, r0]
- bxlt lr
- cmp r0, #64 ; 0x40
- rsblt r1, r0, #64 ; 0x40
- ldrlt r0, _037FC0F4 ; =_03807170
- ldrltsb r0, [r0, r1]
- bxlt lr
- cmp r0, #96 ; 0x60
- bge _037FC0D4
- sub r1, r0, #64 ; 0x40
- ldr r0, _037FC0F4 ; =_03807170
- ldrsb r0, [r0, r1]
- rsb r0, r0, #0
- mov r0, r0, lsl #24
- mov r0, r0, asr #24
- bx lr
-_037FC0D4:
- sub r0, r0, #96 ; 0x60
- rsb r1, r0, #32
- ldr r0, _037FC0F4 ; =_03807170
- ldrsb r0, [r0, r1]
- rsb r0, r0, #0
- mov r0, r0, lsl #24
- mov r0, r0, asr #24
- bx lr
-_037FC0F4: .word _03807170
-
- arm_func_start SND_CalcChannelVolume
-SND_CalcChannelVolume: ; 0x037FC0F8
- stmdb sp!, {r4, lr}
- mov r4, r0
- ldr r0, _037FC168 ; =0xFFFFFD2D
- cmp r4, r0
- movlt r4, r0
- blt _037FC118
- cmp r4, #0
- movgt r4, #0
-_037FC118:
- ldr r0, _037FC16C ; =0x000002D3
- add r0, r4, r0
- bl FUN_037FC170
- mvn r1, #239 ; 0xef
- cmp r4, r1
- movlt r1, #3
- blt _037FC154
- mvn r1, #119 ; 0x77
- cmp r4, r1
- movlt r1, #2
- blt _037FC154
- mvn r1, #59 ; 0x3b
- cmp r4, r1
- movlt r1, #1
- movge r1, #0
-_037FC154:
- orr r0, r0, r1, lsl #8
- mov r0, r0, lsl #16
- mov r0, r0, lsr #16
- ldmia sp!, {r4, lr}
- bx lr
-_037FC168: .word 0xFFFFFD2D
-_037FC16C: .word 0x000002D3
-
- arm_func_start FUN_037FC170
-FUN_037FC170: ; 0x037FC170
- ldr ip, _037FC178 ; =SVC_GetVolumeTable
- bx ip
-_037FC178: .word SVC_GetVolumeTable
-
- arm_func_start SND_CalcTimer
-SND_CalcTimer: ; 0x037FC17C
- stmdb sp!, {r4, r5, lr}
- sub sp, sp, #4
- mov r5, r0
- mov r4, #0
- rsb r0, r1, #0
- b _037FC19C
-_037FC194:
- sub r4, r4, #1
- add r0, r0, #768 ; 0x300
-_037FC19C:
- cmp r0, #0
- blt _037FC194
- b _037FC1B0
-_037FC1A8:
- add r4, r4, #1
- sub r0, r0, #768 ; 0x300
-_037FC1B0:
- cmp r0, #768 ; 0x300
- bge _037FC1A8
- bl FUN_037FC2A4
- mov r2, #0
- mov r1, #65536 ; 0x10000
- adds lr, r0, r1
- adc ip, r2, #0
- mov r3, r5, asr #31
- umull r1, r0, lr, r5
- mla r0, lr, r3, r0
- mla r0, ip, r5, r0
- sub lr, r4, #16
- cmp lr, #0
- bgt _037FC208
- rsb r2, lr, #0
- mov r3, r0, lsr r2
- mov r5, r1, lsr r2
- rsb r1, r2, #32
- orr r5, r5, r0, lsl r1
- sub r1, r2, #32
- orr r5, r5, r0, lsr r1
- b _037FC264
-_037FC208:
- cmp lr, #32
- bge _037FC25C
- mvn r5, #0
- rsb r4, lr, #32
- mov ip, r5, lsl r4
- rsb r3, r4, #32
- orr ip, ip, r5, lsr r3
- sub r3, r4, #32
- orr ip, ip, r5, lsl r3
- and r3, r0, ip
- and r5, r1, r5, lsl r4
- cmp r3, r2
- cmpeq r5, r2
- ldrne r0, _037FC2A0 ; =0x0000FFFF
- bne _037FC294
- mov r5, r1, lsl lr
- mov r3, r0, lsl lr
- orr r3, r3, r1, lsr r4
- sub r0, lr, #32
- orr r3, r3, r1, lsl r0
- b _037FC264
-_037FC25C:
- ldr r0, _037FC2A0 ; =0x0000FFFF
- b _037FC294
-_037FC264:
- mov r1, #0
- mov r0, #16
- cmp r3, r1
- cmpeq r5, r0
- movcc r5, r0
- bcc _037FC28C
- ldr r0, _037FC2A0 ; =0x0000FFFF
- cmp r3, r1
- cmpeq r5, r0
- movhi r5, r0
-_037FC28C:
- mov r0, r5, lsl #16
- mov r0, r0, lsr #16
-_037FC294:
- add sp, sp, #4
- ldmia sp!, {r4, r5, lr}
- bx lr
-_037FC2A0: .word 0x0000FFFF
-
- arm_func_start FUN_037FC2A4
-FUN_037FC2A4: ; 0x037FC2A4
- ldr ip, _037FC2AC ; =SVC_GetPitchTable
- bx ip
-_037FC2AC: .word SVC_GetPitchTable
-
- arm_func_start FUN_037FC2B0
-FUN_037FC2B0: ; 0x037FC2B0
- stmdb sp!, {r4, r5, r6, lr}
- bl SND_InitIntervalTimer
- bl SND_ExChannelInit
- bl SND_SeqInit
- bl SND_AlarmInit
- bl SND_Enable
- mov r0, #0
- mov r1, r0
- mov r2, r0
- mov r3, r0
- bl SND_SetOutputSelector
- mov r0, #127 ; 0x7f
- bl SND_SetMasterVolume
- bl SND_StartIntervalTimer
- mov r4, #1
- mov r5, #0
-_037FC2F0:
- mov r6, r5
- bl SND_WaitForIntervalTimer
- cmp r0, #1
- beq _037FC308
- cmp r0, #2
- b _037FC30C
-_037FC308:
- mov r6, r4
-_037FC30C:
- bl SND_UpdateExChannel
- bl SND_CommandProc
- mov r0, r6
- bl SND_SeqMain
- mov r0, r6
- bl SND_ExChannelMain
- bl SND_UpdateSharedWork
- bl SND_CalcRandom
- b _037FC2F0
-_037FC330:
- ldr r0, _037FC344 ; =_03807A54
- mov r1, #1
- mov r2, #0
- ldr ip, _037FC348 ; =OS_SendMessage
- bx ip
-_037FC344: .word _03807A54
-_037FC348: .word OS_SendMessage
-
- arm_func_start SNDi_UnlockMutex
-SNDi_UnlockMutex: ; 0x037FC34C
- bx lr
-
- arm_func_start SNDi_LockMutex
-SNDi_LockMutex: ; 0x037FC350
- bx lr
-
- arm_func_start SND_SendWakeupMessage
-SND_SendWakeupMessage: ; 0x037FC354
- ldr r0, _037FC368 ; =_03807A54
- mov r1, #2
- mov r2, #0
- ldr ip, _037FC36C ; =OS_SendMessage
- bx ip
-_037FC368: .word _03807A54
-_037FC36C: .word OS_SendMessage
-
- arm_func_start SND_WaitForIntervalTimer
-SND_WaitForIntervalTimer: ; 0x037FC370
- stmfd sp!, {lr}
- sub sp, sp, #4
- ldr r0, _037FC398 ; =_03807A54
- add r1, sp, #0
- mov r2, #1
- bl OS_ReceiveMessage
- ldr r0, [sp]
- add sp, sp, #4
- ldmia sp!, {lr}
- bx lr
-_037FC398: .word _03807A54
-
- arm_func_start SND_StopIntervalTimer
-SND_StopIntervalTimer: ; 0x037FC39C
- ldr r0, _037FC3A8 ; =_03807A74
- ldr ip, _037FC3AC ; =OS_CancelAlarm
- bx ip
-_037FC3A8: .word _03807A74
-_037FC3AC: .word OS_CancelAlarm
-
- arm_func_start SND_StartIntervalTimer
-SND_StartIntervalTimer: ; 0x037FC3B0
- stmfd sp!, {lr}
- sub sp, sp, #12
- bl OS_GetTick
- mov ip, r0
- ldr r0, _037FC3FC ; =_037FC330
- str r0, [sp, #4]
- mov r0, #0
- str r0, [sp, #8]
- ldr r3, _037FC400 ; =0x00000AA8
- str r0, [sp]
- ldr r0, _037FC404 ; =_03807A74
- mov r2, #65536 ; 0x10000
- adds ip, ip, r2
- adc r2, r1, #0
- mov r1, ip
- bl OS_SetPeriodicAlarm
- add sp, sp, #12
- ldmia sp!, {lr}
- bx lr
-_037FC3FC: .word _037FC330
-_037FC400: .word 0x00000AA8
-_037FC404: .word _03807A74
-
- arm_func_start SND_InitIntervalTimer
-SND_InitIntervalTimer: ; 0x037FC408
- stmfd sp!, {lr}
- sub sp, sp, #4
- ldr r0, _037FC434 ; =_03807A54
- ldr r1, _037FC438 ; =_03807A34
- mov r2, #8
- bl OS_InitMessageQueue
- ldr r0, _037FC43C ; =_03807A74
- bl OS_CreateAlarm
- add sp, sp, #4
- ldmia sp!, {lr}
- bx lr
-_037FC434: .word _03807A54
-_037FC438: .word _03807A34
-_037FC43C: .word _03807A74
-
- arm_func_start SND_CreateThread
-SND_CreateThread: ; 0x037FC440
- stmfd sp!, {lr}
- sub sp, sp, #12
- mov r1, #1024 ; 0x400
- str r1, [sp]
- str r0, [sp, #4]
- ldr r0, _037FC47C ; =_03807AA0
- ldr r1, _037FC480 ; =FUN_037FC2B0
- mov r2, #0
- ldr r3, _037FC484 ; =_03807F44
- bl OS_CreateThread
- ldr r0, _037FC47C ; =_03807AA0
- bl OS_WakeupThreadDirect
- add sp, sp, #12
- ldmia sp!, {lr}
- bx lr
-_037FC47C: .word _03807AA0
-_037FC480: .word FUN_037FC2B0
-_037FC484: .word _03807F44
-
- arm_func_start SND_Init
-SND_Init: ; 0x037FC488
- stmdb sp!, {r4, lr}
- mov r4, r0
- ldr r0, _037FC4BC ; =_03807A30
- ldr r1, [r0]
- cmp r1, #0
- bne _037FC4B4
- mov r1, #1
- str r1, [r0]
- bl SND_CommandInit
- mov r0, r4
- bl SND_CreateThread
-_037FC4B4:
- ldmia sp!, {r4, lr}
- bx lr
-_037FC4BC: .word _03807A30
-
- arm_func_start SND_IsCaptureActive
-SND_IsCaptureActive: ; 0x037FC4C0
- add r0, r0, #67108864 ; 0x4000000
- ldrb r0, [r0, #1288] ; 0x508
- ands r0, r0, #128 ; 0x80
- movne r0, #1
- moveq r0, #0
- bx lr
-
- arm_func_start SND_SetupCapture
-SND_SetupCapture: ; 0x037FC4D8
- stmdb sp!, {r4, r5, lr}
- sub sp, sp, #4
- mov r4, r0, lsl #3
- ldr ip, [sp, #16]
- cmp ip, #0
- movne r5, #0
- moveq r5, #1
- ldr lr, [sp, #24]
- ldr ip, [sp, #20]
- mov r1, r1, lsl #3
- orr r1, r1, r5, lsl #2
- orr r1, r1, ip, lsl #1
- orr r1, lr, r1
- add r0, r0, #67108864 ; 0x4000000
- strb r1, [r0, #1288] ; 0x508
- add r0, r4, #67108864 ; 0x4000000
- str r2, [r0, #1296] ; 0x510
- add r0, r0, #1280 ; 0x500
- strh r3, [r0, #20]
- add sp, sp, #4
- ldmia sp!, {r4, r5, lr}
- bx lr
-
- arm_func_start FUN_037FC530
-FUN_037FC530: ; 0x037FC530
- stmdb sp!, {r4, r5, r6, lr}
- mov r6, r0
- mov r5, r1
- add r0, r6, #40 ; 0x28
- bl SND_GetLfoValue
- mov r4, r0
- mov ip, r0, asr #31
- mov r3, #0
- cmp ip, r3
- cmpeq r0, r3
- beq _037FC5B0
- ldrb r1, [r6, #40] ; 0x28
- cmp r1, #0
- beq _037FC59C
- cmp r1, #1
- beq _037FC584
- cmp r1, #2
- moveq ip, ip, lsl #6
- orreq ip, ip, r0, lsr #26
- moveq r4, r0, lsl #6
- b _037FC5A8
-_037FC584:
- mov r2, #60 ; 0x3c
- umull r4, r1, r0, r2
- mla r1, r0, r3, r1
- mla r1, ip, r2, r1
- mov ip, r1
- b _037FC5A8
-_037FC59C:
- mov ip, ip, lsl #6
- orr ip, ip, r0, lsr #26
- mov r4, r0, lsl #6
-_037FC5A8:
- mov r4, r4, lsr #14
- orr r4, r4, ip, lsl #18
-_037FC5B0:
- cmp r5, #0
- beq _037FC5C0
- add r0, r6, #40 ; 0x28
- bl SND_UpdateLfo
-_037FC5C0:
- mov r0, r4
- ldmia sp!, {r4, r5, r6, lr}
- bx lr
-
- arm_func_start FUN_037FC5CC
-FUN_037FC5CC: ; 0x037FC5CC
- stmdb sp!, {r4, r5, lr}
- sub sp, sp, #4
- mov r4, r0
- mov r5, r1
- ldrsh r3, [r4, #50] ; 0x32
- cmp r3, #0
- moveq r0, #0
- beq _037FC630
- ldr r0, [r4, #20]
- ldr r2, [r4, #24]
- cmp r0, r2
- movge r0, #0
- bge _037FC630
- sub r0, r2, r0
- smull r0, r1, r3, r0
- mov r3, r2, asr #31
- bl _ll_sdiv
- cmp r5, #0
- beq _037FC630
- ldrb r1, [r4, #3]
- mov r1, r1, lsl #29
- movs r1, r1, lsr #31
- ldrne r1, [r4, #20]
- addne r1, r1, #1
- strne r1, [r4, #20]
-_037FC630:
- add sp, sp, #4
- ldmia sp!, {r4, r5, lr}
- bx lr
-
- arm_func_start FUN_037FC63C
-FUN_037FC63C: ; 0x037FC63C
- stmfd sp!, {lr}
- sub sp, sp, #4
- ldrh lr, [r0, #36] ; 0x24
- and r2, lr, #255 ; 0xff
- ldrh ip, [r1, #36] ; 0x24
- and r0, ip, #255 ; 0xff
- mov r2, r2, lsl #4
- mov r3, r0, lsl #4
- ldr r1, _037FC698 ; =_03807294
- ldrb r0, [r1, lr, asr #8]
- mov r2, r2, asr r0
- ldrb r0, [r1, ip, asr #8]
- mov r0, r3, asr r0
- cmp r2, r0
- beq _037FC688
- cmp r2, r0
- movlt r0, #1
- mvnge r0, #0
- b _037FC68C
-_037FC688:
- mov r0, #0
-_037FC68C:
- add sp, sp, #4
- ldmia sp!, {lr}
- bx lr
-_037FC698: .word _03807294
-
- arm_func_start FUN_037FC69C
-FUN_037FC69C: ; 0x037FC69C
- stmdb sp!, {r4, lr}
- mov r4, r0
- ldr r0, _037FC6E4 ; =0xFFFE9680
- str r0, [r4, #16]
- mov r0, #0
- strb r0, [r4, #2]
- str r1, [r4, #52] ; 0x34
- add r0, r4, #40 ; 0x28
- bl SND_StartLfo
- ldrb r0, [r4, #3]
- orr r0, r0, #2
- strb r0, [r4, #3]
- ldrb r0, [r4, #3]
- bic r0, r0, #1
- orr r0, r0, #1
- strb r0, [r4, #3]
- ldmia sp!, {r4, lr}
- bx lr
-_037FC6E4: .word 0xFFFE9680
-
- arm_func_start FUN_037FC6E8
-FUN_037FC6E8: ; 0x037FC6E8
- stmdb sp!, {r4, lr}
- mov r4, r0
- mov ip, #0
- str ip, [r4, #80] ; 0x50
- str r1, [r4, #72] ; 0x48
- str r2, [r4, #76] ; 0x4c
- str ip, [r4, #52] ; 0x34
- strb r3, [r4, #34] ; 0x22
- mov r1, #127 ; 0x7f
- strh r1, [r4, #36] ; 0x24
- ldrb r2, [r4, #3]
- bic r2, r2, #2
- strb r2, [r4, #3]
- ldrb r2, [r4, #3]
- orr r2, r2, #4
- strb r2, [r4, #3]
- mov r2, #60 ; 0x3c
- strb r2, [r4, #8]
- strb r2, [r4, #5]
- strb r1, [r4, #9]
- strb ip, [r4, #10]
- strh ip, [r4, #12]
- strh ip, [r4, #6]
- strh ip, [r4, #14]
- strb ip, [r4, #11]
- strb r1, [r4, #4]
- strh ip, [r4, #50] ; 0x32
- str ip, [r4, #24]
- str ip, [r4, #20]
- bl SND_SetExChannelAttack
- mov r0, r4
- mov r1, #127 ; 0x7f
- bl SND_SetExChannelDecay
- mov r0, r4
- mov r1, #127 ; 0x7f
- bl SND_SetExChannelSustain
- mov r0, r4
- mov r1, #127 ; 0x7f
- bl SND_SetExChannelRelease
- add r0, r4, #40 ; 0x28
- bl SND_InitLfoParam
- ldmia sp!, {r4, lr}
- bx lr
-
- arm_func_start FUN_037FC794
-FUN_037FC794: ; 0x037FC794
- stmfd sp!, {lr}
- sub sp, sp, #4
- mov r1, r0
- cmp r1, #127 ; 0x7f
- ldreq r0, _037FC7F0 ; =0x0000FFFF
- beq _037FC7E4
- cmp r1, #126 ; 0x7e
- moveq r0, #15360 ; 0x3c00
- beq _037FC7E4
- cmp r1, #50 ; 0x32
- movlt r0, r1, lsl #1
- addlt r0, r0, #1
- movlt r0, r0, lsl #16
- movlt r0, r0, lsr #16
- blt _037FC7E4
- mov r0, #7680 ; 0x1e00
- rsb r1, r1, #126 ; 0x7e
- bl _s32_div_f
- mov r0, r0, lsl #16
- mov r0, r0, lsr #16
-_037FC7E4:
- add sp, sp, #4
- ldmia sp!, {lr}
- bx lr
-_037FC7F0: .word 0x0000FFFF
-
- arm_func_start SND_GetLfoValue
-SND_GetLfoValue: ; 0x037FC7F4
- stmdb sp!, {r4, lr}
- mov r4, r0
- ldrb r0, [r4, #2]
- cmp r0, #0
- moveq r0, #0
- beq _037FC83C
- ldrh r1, [r4, #6]
- ldrh r0, [r4, #4]
- cmp r1, r0
- movcc r0, #0
- bcc _037FC83C
- ldrh r0, [r4, #8]
- mov r0, r0, lsr #8
- bl SND_SinIdx
- ldrb r2, [r4, #3]
- ldrb r1, [r4, #2]
- mul r0, r1, r0
- mul r0, r2, r0
-_037FC83C:
- ldmia sp!, {r4, lr}
- bx lr
-
- arm_func_start SND_UpdateLfo
-SND_UpdateLfo: ; 0x037FC844
- ldrh r2, [r0, #6]
- ldrh r1, [r0, #4]
- cmp r2, r1
- addcc r1, r2, #1
- strcch r1, [r0, #6]
- bxcc lr
- ldrh r2, [r0, #8]
- ldrb r1, [r0, #1]
- mov r3, r1, lsl #6
- add r1, r2, r1, lsl #6
- mov r2, r1, lsr #8
- b _037FC878
-_037FC874:
- sub r2, r2, #128 ; 0x80
-_037FC878:
- cmp r2, #128 ; 0x80
- bcs _037FC874
- ldrh r1, [r0, #8]
- add r1, r1, r3
- strh r1, [r0, #8]
- ldrh r1, [r0, #8]
- and r1, r1, #255 ; 0xff
- strh r1, [r0, #8]
- ldrh r1, [r0, #8]
- orr r1, r1, r2, lsl #8
- strh r1, [r0, #8]
- bx lr
-
- arm_func_start SND_StartLfo
-SND_StartLfo: ; 0x037FC8A8
- mov r1, #0
- strh r1, [r0, #8]
- strh r1, [r0, #6]
- bx lr
-
- arm_func_start SND_InitLfoParam
-SND_InitLfoParam: ; 0x037FC8B8
- mov r2, #0
- strb r2, [r0]
- strb r2, [r0, #2]
- mov r1, #1
- strb r1, [r0, #3]
- mov r1, #16
- strb r1, [r0, #1]
- strh r2, [r0, #4]
- bx lr
-
- arm_func_start SND_InvalidateWave
-SND_InvalidateWave: ; 0x037FC8DC
- stmdb sp!, {r4, r5, r6, r7, r8, r9, lr}
- sub sp, sp, #4
- mov r7, r0
- mov r6, r1
- mov r5, #0
- mov r9, r5
- ldr r4, _037FC960 ; =SNDi_Work
- mov r8, #84 ; 0x54
-_037FC8FC:
- mla r2, r5, r8, r4
- ldrb r1, [r2, #3]
- mov r0, r1, lsl #31
- movs r0, r0, lsr #31
- beq _037FC944
- ldrb r0, [r2, #1]
- cmp r0, #0
- bne _037FC944
- ldr r0, [r2, #68] ; 0x44
- cmp r7, r0
- bhi _037FC944
- cmp r0, r6
- bhi _037FC944
- bic r0, r1, #2
- strb r0, [r2, #3]
- mov r0, r5
- mov r1, r9
- bl SND_StopChannel
-_037FC944:
- add r0, r5, #1
- and r5, r0, #255 ; 0xff
- cmp r5, #16
- bcc _037FC8FC
- add sp, sp, #4
- ldmia sp!, {r4, r5, r6, r7, r8, r9, lr}
- bx lr
-_037FC960: .word SNDi_Work
-
- arm_func_start SND_GetLockedChannel
-SND_GetLockedChannel: ; 0x037FC964
- ands r0, r0, #1
- ldrne r0, _037FC97C ; =_03807F44
- ldrne r0, [r0]
- ldreq r0, _037FC980 ; =_03807F48
- ldreq r0, [r0]
- bx lr
-_037FC97C: .word _03807F44
-_037FC980: .word _03807F48
-
- arm_func_start SND_UnlockChannel
-SND_UnlockChannel: ; 0x037FC984
- ands r1, r1, #1
- ldreq r1, _037FC9B8 ; =_03807F48
- ldreq r2, [r1]
- mvneq r0, r0
- andeq r0, r2, r0
- streq r0, [r1]
- bxeq lr
- ldr r1, _037FC9BC ; =_03807F44
- ldr r2, [r1]
- mvn r0, r0
- and r0, r2, r0
- str r0, [r1]
- bx lr
-_037FC9B8: .word _03807F48
-_037FC9BC: .word _03807F44
-
- arm_func_start SND_LockChannel
-SND_LockChannel: ; 0x037FC9C0
- stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr}
- sub sp, sp, #4
- mov sl, r0
- mov r9, r1
- mov r7, sl
- mov r6, #0
- mov fp, r6
- str r6, [sp]
- mov r4, r6
- mov r5, #1
- b _037FCA6C
-_037FC9EC:
- ands r0, r7, #1
- beq _037FCA64
- mov r1, #84 ; 0x54
- ldr r0, _037FCAAC ; =SNDi_Work
- mla r8, r6, r1, r0
- ldr r0, _037FCAB0 ; =_03807F48
- ldr r1, [r0]
- mov r0, r5, lsl r6
- ands r0, r1, r0
- bne _037FCA64
- ldr r3, [r8, #72] ; 0x48
- cmp r3, #0
- beq _037FCA34
- mov r0, r8
- mov r1, fp
- ldr r2, [r8, #76] ; 0x4c
- mov lr, pc
- bx r3
-_037FCA34:
- mov r0, r6
- ldr r1, [sp]
- bl SND_StopChannel
- strb r4, [r8, #34] ; 0x22
- mov r0, r8
- bl SND_FreeExChannel
- ldrb r0, [r8, #3]
- bic r0, r0, #248 ; 0xf8
- strb r0, [r8, #3]
- ldrb r0, [r8, #3]
- bic r0, r0, #1
- strb r0, [r8, #3]
-_037FCA64:
- add r6, r6, #1
- mov r7, r7, lsr #1
-_037FCA6C:
- cmp r6, #16
- bge _037FCA7C
- cmp r7, #0
- bne _037FC9EC
-_037FCA7C:
- ands r0, r9, #1
- ldrne r0, _037FCAB4 ; =_03807F44
- ldrne r1, [r0]
- orrne r1, r1, sl
- strne r1, [r0]
- ldreq r0, _037FCAB0 ; =_03807F48
- ldreq r1, [r0]
- orreq r1, r1, sl
- streq r1, [r0]
- add sp, sp, #4
- ldmia sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr}
- bx lr
-_037FCAAC: .word SNDi_Work
-_037FCAB0: .word _03807F48
-_037FCAB4: .word _03807F44
-
- arm_func_start SND_StopUnlockedChannel
-SND_StopUnlockedChannel: ; 0x037FCAB8
- stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr}
- sub sp, sp, #4
- mov sl, r0
- mov r8, #0
- mov r6, r8
- mov r5, r8
- mov r4, r8
- ldr fp, _037FCB78 ; =SNDi_Work
- mov r7, #1
- b _037FCB5C
-_037FCAE0:
- ands r0, sl, #1
- beq _037FCB54
- mov r0, #84 ; 0x54
- mla r9, r8, r0, fp
- ldr r0, _037FCB7C ; =_03807F48
- ldr r1, [r0]
- mov r0, r7, lsl r8
- ands r0, r1, r0
- bne _037FCB54
- ldr r3, [r9, #72] ; 0x48
- cmp r3, #0
- beq _037FCB24
- mov r0, r9
- mov r1, r6
- ldr r2, [r9, #76] ; 0x4c
- mov lr, pc
- bx r3
-_037FCB24:
- mov r0, r8
- mov r1, r5
- bl SND_StopChannel
- strb r4, [r9, #34] ; 0x22
- mov r0, r9
- bl SND_FreeExChannel
- ldrb r0, [r9, #3]
- bic r0, r0, #248 ; 0xf8
- strb r0, [r9, #3]
- ldrb r0, [r9, #3]
- bic r0, r0, #1
- strb r0, [r9, #3]
-_037FCB54:
- add r8, r8, #1
- mov sl, sl, lsr #1
-_037FCB5C:
- cmp r8, #16
- bge _037FCB6C
- cmp sl, #0
- bne _037FCAE0
-_037FCB6C:
- add sp, sp, #4
- ldmia sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr}
- bx lr
-_037FCB78: .word SNDi_Work
-_037FCB7C: .word _03807F48
-
- arm_func_start SND_FreeExChannel
-SND_FreeExChannel: ; 0x037FCB80
- cmp r0, #0
- movne r1, #0
- strne r1, [r0, #72] ; 0x48
- strne r1, [r0, #76] ; 0x4c
- bx lr
-
- arm_func_start SND_AllocExChannel
-SND_AllocExChannel: ; 0x037FCB94
- stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr}
- sub sp, sp, #4
- mov sl, r0
- mov r9, r1
- mov fp, r3
- ldr r0, _037FCCBC ; =_03807F48
- ldr r0, [r0]
- mvn r0, r0
- and sl, sl, r0
- cmp r2, #0
- ldreq r0, _037FCCC0 ; =_03807F44
- ldreq r0, [r0]
- mvneq r0, r0
- andeq sl, sl, r0
- mov r8, #0
- mov r7, r8
- mov r5, #1
- mov r4, #84 ; 0x54
-_037FCBDC:
- ldr r0, _037FCCC4 ; =_03807298
- ldrb r1, [r0, r7]
- mov r0, r5, lsl r1
- ands r0, sl, r0
- beq _037FCC34
- ldr r0, _037FCCC8 ; =SNDi_Work
- mla r6, r1, r4, r0
- cmp r8, #0
- moveq r8, r6
- beq _037FCC34
- ldrb r1, [r8, #34] ; 0x22
- ldrb r0, [r6, #34] ; 0x22
- cmp r0, r1
- bhi _037FCC34
- cmp r0, r1
- bne _037FCC30
- mov r0, r8
- mov r1, r6
- bl FUN_037FC63C
- cmp r0, #0
- bge _037FCC34
-_037FCC30:
- mov r8, r6
-_037FCC34:
- add r7, r7, #1
- cmp r7, #16
- blt _037FCBDC
- cmp r8, #0
- moveq r0, #0
- beq _037FCCB0
- ldrb r0, [r8, #34] ; 0x22
- cmp r9, r0
- movlt r0, #0
- blt _037FCCB0
- ldr r3, [r8, #72] ; 0x48
- cmp r3, #0
- beq _037FCC7C
- mov r0, r8
- mov r1, #0
- ldr r2, [r8, #76] ; 0x4c
- mov lr, pc
- bx r3
-_037FCC7C:
- ldrb r0, [r8, #3]
- bic r0, r0, #248 ; 0xf8
- orr r0, r0, #16
- strb r0, [r8, #3]
- ldrb r0, [r8, #3]
- bic r0, r0, #1
- strb r0, [r8, #3]
- mov r0, r8
- mov r1, fp
- ldr r2, [sp, #40] ; 0x28
- mov r3, r9
- bl FUN_037FC6E8
- mov r0, r8
-_037FCCB0:
- add sp, sp, #4
- ldmia sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr}
- bx lr
-_037FCCBC: .word _03807F48
-_037FCCC0: .word _03807F44
-_037FCCC4: .word _03807298
-_037FCCC8: .word SNDi_Work
-
- arm_func_start SND_IsExChannelActive
-SND_IsExChannelActive: ; 0x037FCCCC
- ldrb r0, [r0, #3]
- mov r0, r0, lsl #31
- mov r0, r0, lsr #31
- bx lr
-
- arm_func_start SND_ReleaseExChannel
-SND_ReleaseExChannel: ; 0x037FCCDC
- mov r1, #3
- strb r1, [r0, #2]
- bx lr
-
- arm_func_start SND_SetExChannelRelease
-SND_SetExChannelRelease: ; 0x037FCCE8
- stmdb sp!, {r4, lr}
- mov r4, r0
- mov r0, r1
- bl FUN_037FC794
- strh r0, [r4, #32]
- ldmia sp!, {r4, lr}
- bx lr
-
- arm_func_start SND_SetExChannelSustain
-SND_SetExChannelSustain: ; 0x037FCD04
- strb r1, [r0, #29]
- bx lr
-
- arm_func_start SND_SetExChannelDecay
-SND_SetExChannelDecay: ; 0x037FCD0C
- stmdb sp!, {r4, lr}
- mov r4, r0
- mov r0, r1
- bl FUN_037FC794
- strh r0, [r4, #30]
- ldmia sp!, {r4, lr}
- bx lr
-
- arm_func_start SND_SetExChannelAttack
-SND_SetExChannelAttack: ; 0x037FCD28
- cmp r1, #109 ; 0x6d
- rsblt r1, r1, #255 ; 0xff
- strltb r1, [r0, #28]
- rsbge r2, r1, #127 ; 0x7f
- ldrge r1, _037FCD48 ; =_038072A8
- ldrgeb r1, [r1, r2]
- strgeb r1, [r0, #28]
- bx lr
-_037FCD48: .word _038072A8
-
- arm_func_start SND_UpdateExChannelEnvelope
-SND_UpdateExChannelEnvelope: ; 0x037FCD4C
- cmp r1, #0
- beq _037FCDF0
- ldrb r1, [r0, #2]
- cmp r1, #3
- addls pc, pc, r1, lsl #2
- b _037FCDF0
- b _037FCD74
- b _037FCDA4
- b _037FCDF0
- b _037FCDE0
-_037FCD74:
- ldr r1, [r0, #16]
- rsb r2, r1, #0
- ldrb r1, [r0, #28]
- mul r1, r2, r1
- mov r1, r1, asr #8
- rsb r1, r1, #0
- str r1, [r0, #16]
- ldr r1, [r0, #16]
- cmp r1, #0
- moveq r1, #1
- streqb r1, [r0, #2]
- b _037FCDF0
-_037FCDA4:
- ldrb r1, [r0, #29]
- mov r2, r1, lsl #1
- ldr r1, _037FCDFC ; =SNDi_DecibelSquareTable
- ldrsh r1, [r1, r2]
- mov r3, r1, lsl #7
- ldr r2, [r0, #16]
- ldrh r1, [r0, #30]
- sub r1, r2, r1
- str r1, [r0, #16]
- ldr r1, [r0, #16]
- cmp r1, r3
- strle r3, [r0, #16]
- movle r1, #2
- strleb r1, [r0, #2]
- b _037FCDF0
-_037FCDE0:
- ldr r2, [r0, #16]
- ldrh r1, [r0, #32]
- sub r1, r2, r1
- str r1, [r0, #16]
-_037FCDF0:
- ldr r0, [r0, #16]
- mov r0, r0, asr #7
- bx lr
-_037FCDFC: .word SNDi_DecibelSquareTable
-
- arm_func_start SND_StartExChannelNoise
-SND_StartExChannelNoise: ; 0x037FCE00
- stmfd sp!, {lr}
- sub sp, sp, #4
- ldrb r2, [r0]
- cmp r2, #14
- movcc r0, #0
- bcc _037FCE3C
- cmp r2, #15
- movhi r0, #0
- bhi _037FCE3C
- mov r2, #2
- strb r2, [r0, #1]
- ldr r2, _037FCE48 ; =0x00001F46
- strh r2, [r0, #60] ; 0x3c
- bl FUN_037FC69C
- mov r0, #1
-_037FCE3C:
- add sp, sp, #4
- ldmia sp!, {lr}
- bx lr
-_037FCE48: .word 0x00001F46
-
- arm_func_start SND_StartExChannelPsg
-SND_StartExChannelPsg: ; 0x037FCE4C
- stmfd sp!, {lr}
- sub sp, sp, #4
- ldrb r3, [r0]
- cmp r3, #8
- movcc r0, #0
- bcc _037FCE90
- cmp r3, #13
- movhi r0, #0
- bhi _037FCE90
- mov r3, #1
- strb r3, [r0, #1]
- str r1, [r0, #68] ; 0x44
- ldr r1, _037FCE9C ; =0x00001F46
- strh r1, [r0, #60] ; 0x3c
- mov r1, r2
- bl FUN_037FC69C
- mov r0, #1
-_037FCE90:
- add sp, sp, #4
- ldmia sp!, {lr}
- bx lr
-_037FCE9C: .word 0x00001F46
-
- arm_func_start SND_StartExChannelPcm
-SND_StartExChannelPcm: ; 0x037FCEA0
- stmdb sp!, {r4, lr}
- mov r4, r0
- mov lr, r2
- mov r0, #0
- strb r0, [r4, #1]
- add ip, r4, #56 ; 0x38
- ldmia r1, {r0, r1, r2}
- stmia ip, {r0, r1, r2}
- str lr, [r4, #68] ; 0x44
- mov r0, r4
- mov r1, r3
- bl FUN_037FC69C
- mov r0, #1
- ldmia sp!, {r4, lr}
- bx lr
-
- arm_func_start SND_ExChannelMain
-SND_ExChannelMain: ; 0x037FCEDC
- stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr}
- sub sp, sp, #28
- mov r6, r0
- mov r4, #0
- mov fp, r4
- mov r7, #1
- str r4, [sp, #8]
- mov r0, #127 ; 0x7f
- str r0, [sp, #20]
- str r4, [sp, #16]
- str r4, [sp, #12]
- str r4, [sp, #4]
- str r4, [sp]
-_037FCF10:
- ldr r8, [sp]
- mov sl, r8
- mov r9, r8
- mov r1, #84 ; 0x54
- ldr r0, _037FD1E4 ; =SNDi_Work
- mla r5, r4, r1, r0
- ldrb r1, [r5, #3]
- mov r0, r1, lsl #31
- movs r0, r0, lsr #31
- beq _037FD1CC
- mov r0, r1, lsl #30
- movs r0, r0, lsr #31
- beq _037FCF74
- bic r0, r1, #248 ; 0xf8
- mov r1, r1, lsl #24
- mov r1, r1, lsr #27
- orr r1, r1, #1
- and r1, r1, #255 ; 0xff
- and r1, r1, #31
- orr r0, r0, r1, lsl #3
- strb r0, [r5, #3]
- ldrb r0, [r5, #3]
- bic r0, r0, #2
- strb r0, [r5, #3]
- b _037FCFC0
-_037FCF74:
- mov r0, r4
- bl SND_IsChannelActive
- cmp r0, #0
- bne _037FCFC0
- ldr r3, [r5, #72] ; 0x48
- cmp r3, #0
- streqb fp, [r5, #34] ; 0x22
- beq _037FCFA8
- mov r0, r5
- mov r1, r7
- ldr r2, [r5, #76] ; 0x4c
- mov lr, pc
- bx r3
-_037FCFA8:
- ldr r0, [sp, #4]
- strh r0, [r5, #36] ; 0x24
- ldrb r0, [r5, #3]
- bic r0, r0, #1
- strb r0, [r5, #3]
- b _037FD1CC
-_037FCFC0:
- ldrb r0, [r5, #9]
- mov r1, r0, lsl #1
- ldr r0, _037FD1E8 ; =SNDi_DecibelSquareTable
- ldrsh r0, [r0, r1]
- add r8, r8, r0
- ldrb r1, [r5, #8]
- ldrb r0, [r5, #5]
- sub r0, r1, r0
- add sl, sl, r0, lsl #6
- mov r0, r5
- mov r1, r6
- bl SND_UpdateExChannelEnvelope
- add r8, r8, r0
- mov r0, r5
- mov r1, r6
- bl FUN_037FC5CC
- add r2, sl, r0
- ldrsh r0, [r5, #12]
- add r1, r8, r0
- ldrsh r0, [r5, #6]
- add r8, r1, r0
- ldrsh r0, [r5, #14]
- add sl, r2, r0
- mov r0, r5
- mov r1, r6
- bl FUN_037FC530
- ldrb r1, [r5, #40] ; 0x28
- cmp r1, #0
- beq _037FD05C
- cmp r1, #1
- beq _037FD048
- cmp r1, #2
- addeq r9, r9, r0
- b _037FD060
-_037FD048:
- mov r1, #32768 ; 0x8000
- rsb r1, r1, #0
- cmp r8, r1
- addgt r8, r8, r0
- b _037FD060
-_037FD05C:
- add sl, sl, r0
-_037FD060:
- ldrsb r0, [r5, #10]
- add r9, r9, r0
- ldrb r0, [r5, #4]
- cmp r0, #127 ; 0x7f
- mulne r0, r9, r0
- addne r0, r0, #64 ; 0x40
- movne r9, r0, asr #7
- ldrsb r0, [r5, #11]
- add r9, r9, r0
- ldrb r0, [r5, #2]
- cmp r0, #3
- bne _037FD0EC
- ldr r0, _037FD1EC ; =0xFFFFFD2D
- cmp r8, r0
- bgt _037FD0EC
- ldrb r0, [r5, #3]
- bic r0, r0, #248 ; 0xf8
- orr r0, r0, #16
- strb r0, [r5, #3]
- ldr r3, [r5, #72] ; 0x48
- cmp r3, #0
- ldreq r0, [sp, #8]
- streqb r0, [r5, #34] ; 0x22
- beq _037FD0D4
- mov r0, r5
- mov r1, r7
- ldr r2, [r5, #76] ; 0x4c
- mov lr, pc
- bx r3
-_037FD0D4:
- ldr r0, [sp, #12]
- strh r0, [r5, #36] ; 0x24
- ldrb r0, [r5, #3]
- bic r0, r0, #1
- strb r0, [r5, #3]
- b _037FD1CC
-_037FD0EC:
- mov r0, r8
- bl SND_CalcChannelVolume
- mov r8, r0
- ldrh r0, [r5, #60] ; 0x3c
- mov r1, sl
- bl SND_CalcTimer
- ldrb r1, [r5, #1]
- cmp r1, #1
- ldreq r1, _037FD1F0 ; =0x0000FFFC
- andeq r0, r0, r1
- moveq r0, r0, lsl #16
- moveq r0, r0, lsr #16
- adds r9, r9, #64 ; 0x40
- ldrmi r9, [sp, #16]
- bmi _037FD130
- cmp r9, #127 ; 0x7f
- ldrgt r9, [sp, #20]
-_037FD130:
- ldrh r1, [r5, #36] ; 0x24
- cmp r8, r1
- beq _037FD164
- strh r8, [r5, #36] ; 0x24
- ldrb r2, [r5, #3]
- bic r1, r2, #248 ; 0xf8
- mov r2, r2, lsl #24
- mov r2, r2, lsr #27
- orr r2, r2, #8
- and r2, r2, #255 ; 0xff
- and r2, r2, #31
- orr r1, r1, r2, lsl #3
- strb r1, [r5, #3]
-_037FD164:
- ldrh r1, [r5, #38] ; 0x26
- cmp r0, r1
- beq _037FD198
- strh r0, [r5, #38] ; 0x26
- ldrb r0, [r5, #3]
- bic r1, r0, #248 ; 0xf8
- mov r0, r0, lsl #24
- mov r0, r0, lsr #27
- orr r0, r0, #4
- and r0, r0, #255 ; 0xff
- and r0, r0, #31
- orr r0, r1, r0, lsl #3
- strb r0, [r5, #3]
-_037FD198:
- ldrb r0, [r5, #35] ; 0x23
- cmp r9, r0
- beq _037FD1CC
- strb r9, [r5, #35] ; 0x23
- ldrb r0, [r5, #3]
- bic r1, r0, #248 ; 0xf8
- mov r0, r0, lsl #24
- mov r0, r0, lsr #27
- orr r0, r0, #16
- and r0, r0, #255 ; 0xff
- and r0, r0, #31
- orr r0, r1, r0, lsl #3
- strb r0, [r5, #3]
-_037FD1CC:
- add r4, r4, #1
- cmp r4, #16
- blt _037FCF10
- add sp, sp, #28
- ldmia sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr}
- bx lr
-_037FD1E4: .word SNDi_Work
-_037FD1E8: .word SNDi_DecibelSquareTable
-_037FD1EC: .word 0xFFFFFD2D
-_037FD1F0: .word 0x0000FFFC
-
- arm_func_start SND_UpdateExChannel
-SND_UpdateExChannel: ; 0x037FD1F4
- stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, lr}
- sub sp, sp, #24
- mov r8, #0
- mov r4, #2
- mov r5, #1
- mov r6, r8
- ldr r7, _037FD3DC ; =SNDi_Work
- mov sl, #84 ; 0x54
-_037FD214:
- mla r9, r8, sl, r7
- ldrb r0, [r9, #3]
- mov r0, r0, lsl #24
- movs r0, r0, lsr #27
- beq _037FD374
- ands r0, r0, #2
- beq _037FD23C
- mov r0, r8
- mov r1, r6
- bl SND_StopChannel
-_037FD23C:
- ldrb r0, [r9, #3]
- mov r0, r0, lsl #24
- mov r1, r0, lsr #27
- ands r0, r1, #1
- beq _037FD318
- ldrb r0, [r9, #1]
- cmp r0, #0
- beq _037FD270
- cmp r0, #1
- beq _037FD2C8
- cmp r0, #2
- beq _037FD2F4
- b _037FD374
-_037FD270:
- ldrb r0, [r9, #57] ; 0x39
- cmp r0, #0
- movne r3, r5
- moveq r3, r4
- ldrh r1, [r9, #36] ; 0x24
- ldrh r0, [r9, #62] ; 0x3e
- str r0, [sp]
- ldr r0, [r9, #64] ; 0x40
- str r0, [sp, #4]
- and r0, r1, #255 ; 0xff
- str r0, [sp, #8]
- mov r0, r1, asr #8
- str r0, [sp, #12]
- ldrh r0, [r9, #38] ; 0x26
- str r0, [sp, #16]
- ldrb r0, [r9, #35] ; 0x23
- str r0, [sp, #20]
- mov r0, r8
- ldr r1, [r9, #68] ; 0x44
- ldrb r2, [r9, #56] ; 0x38
- bl SND_SetupChannelPcm
- b _037FD374
-_037FD2C8:
- ldrh r3, [r9, #36] ; 0x24
- ldrh r0, [r9, #38] ; 0x26
- str r0, [sp]
- ldrb r0, [r9, #35] ; 0x23
- str r0, [sp, #4]
- mov r0, r8
- ldr r1, [r9, #68] ; 0x44
- and r2, r3, #255 ; 0xff
- mov r3, r3, asr #8
- bl SND_SetupChannelPsg
- b _037FD374
-_037FD2F4:
- ldrh r2, [r9, #36] ; 0x24
- ldrb r0, [r9, #35] ; 0x23
- str r0, [sp]
- mov r0, r8
- and r1, r2, #255 ; 0xff
- mov r2, r2, asr #8
- ldrh r3, [r9, #38] ; 0x26
- bl SND_SetupChannelNoise
- b _037FD374
-_037FD318:
- ands r0, r1, #4
- beq _037FD32C
- mov r0, r8
- ldrh r1, [r9, #38] ; 0x26
- bl SND_SetChannelTimer
-_037FD32C:
- ldrb r0, [r9, #3]
- mov r0, r0, lsl #24
- mov r0, r0, lsr #27
- ands r0, r0, #8
- beq _037FD354
- ldrh r2, [r9, #36] ; 0x24
- mov r0, r8
- and r1, r2, #255 ; 0xff
- mov r2, r2, asr #8
- bl SND_SetChannelVolume
-_037FD354:
- ldrb r0, [r9, #3]
- mov r0, r0, lsl #24
- mov r0, r0, lsr #27
- ands r0, r0, #16
- beq _037FD374
- mov r0, r8
- ldrb r1, [r9, #35] ; 0x23
- bl SND_SetChannelPan
-_037FD374:
- add r8, r8, #1
- cmp r8, #16
- blt _037FD214
- mov r5, #0
- ldr r3, _037FD3DC ; =SNDi_Work
- mov r1, #84 ; 0x54
-_037FD38C:
- mla r4, r5, r1, r3
- ldrb r0, [r4, #3]
- mov r0, r0, lsl #24
- movs r0, r0, lsr #27
- beq _037FD3C4
- ands r0, r0, #1
- movne r0, r5, lsl #4
- addne r0, r0, #67108864 ; 0x4000000
- ldrneb r2, [r0, #1027] ; 0x403
- orrne r2, r2, #128 ; 0x80
- strneb r2, [r0, #1027] ; 0x403
- ldrb r0, [r4, #3]
- bic r0, r0, #248 ; 0xf8
- strb r0, [r4, #3]
-_037FD3C4:
- add r5, r5, #1
- cmp r5, #16
- blt _037FD38C
- add sp, sp, #24
- ldmia sp!, {r4, r5, r6, r7, r8, r9, sl, lr}
- bx lr
-_037FD3DC: .word SNDi_Work
-
- arm_func_start SND_ExChannelInit
-SND_ExChannelInit: ; 0x037FD3E0
- mov ip, #0
- ldr r2, _037FD434 ; =SNDi_Work
- mov r0, #84 ; 0x54
-_037FD3EC:
- mul r1, ip, r0
- add r3, r2, r1
- strb ip, [r2, r1]
- ldrb r1, [r3, #3]
- bic r1, r1, #248 ; 0xf8
- strb r1, [r3, #3]
- ldrb r1, [r3, #3]
- bic r1, r1, #1
- strb r1, [r3, #3]
- add ip, ip, #1
- cmp ip, #16
- blt _037FD3EC
- mov r1, #0
- ldr r0, _037FD438 ; =_03807F48
- str r1, [r0]
- ldr r0, _037FD43C ; =_03807F44
- str r1, [r0]
- bx lr
-_037FD434: .word SNDi_Work
-_037FD438: .word _03807F48
-_037FD43C: .word _03807F44
-
- arm_func_start FUN_037FD440
-FUN_037FD440: ; 0x037FD440
- stmdb sp!, {r4, lr}
- mov r4, r0
- cmp r2, #3
- addls pc, pc, r2, lsl #2
- b _037FD4B8
- b _037FD464
- b _037FD474
- b _037FD484
- b _037FD49C
-_037FD464:
- ldrb r0, [r4]
- bic r0, r0, #4
- strb r0, [r4]
- b _037FD4B8
-_037FD474:
- ldrb r0, [r4]
- orr r0, r0, #4
- strb r0, [r4]
- b _037FD4B8
-_037FD484:
- ldrb r2, [r4]
- orr r2, r2, #4
- strb r2, [r4]
- mvn r2, #0
- bl FUN_037FE588
- b _037FD4B8
-_037FD49C:
- ldrb r2, [r4]
- orr r2, r2, #4
- strb r2, [r4]
- mov r2, #127 ; 0x7f
- bl FUN_037FE588
- mov r0, r4
- bl FUN_037FE54C
-_037FD4B8:
- ldmia sp!, {r4, lr}
- bx lr
-
- arm_func_start FUN_037FD4C0
-FUN_037FD4C0: ; 0x037FD4C0
- mov r0, #0
- ldr r3, _037FD500 ; =_038086EC
- b _037FD4F0
-_037FD4CC:
- add ip, r3, r0, lsl #6
- ldrb r1, [r3, r0, lsl #6]
- mov r2, r1, lsl #31
- movs r2, r2, lsr #31
- biceq r1, r1, #1
- orreq r1, r1, #1
- streqb r1, [ip]
- bxeq lr
- add r0, r0, #1
-_037FD4F0:
- cmp r0, #32
- blt _037FD4CC
- mvn r0, #0
- bx lr
-_037FD500: .word _038086EC
-
- arm_func_start FUN_037FD504
-FUN_037FD504: ; 0x037FD504
- ldr r2, _037FD544 ; =SNDi_SharedWork
- ldr r2, [r2]
- cmp r2, #0
- moveq r0, #0
- bxeq lr
- cmp r1, #16
- addge r2, r2, #608 ; 0x260
- subge r0, r1, #16
- addge r0, r2, r0, lsl #1
- bxge lr
- add r3, r2, #32
- ldrb r2, [r0, #1]
- mov r0, #36 ; 0x24
- mla r0, r2, r0, r3
- add r0, r0, r1, lsl #1
- bx lr
-_037FD544: .word SNDi_SharedWork
-
- arm_func_start FUN_037FD548
-FUN_037FD548: ; 0x037FD548
- stmdb sp!, {r4, r5, r6, r7, r8, lr}
- mov r8, r0
- mov r7, r1
- mov r6, #0
- mov r5, r6
- mov r4, #1
-_037FD560:
- mov r0, r8
- mov r1, r5
- bl FUN_037FE460
- cmp r0, #0
- beq _037FD5A8
- ldr r1, [r0, #40] ; 0x28
- cmp r1, #0
- beq _037FD5A8
- mov r1, r8
- mov r2, r5
- mov r3, r7
- bl FUN_037FD5C8
- cmp r0, #0
- moveq r6, r4
- beq _037FD5A8
- mov r0, r8
- mov r1, r5
- bl FUN_037FE3EC
-_037FD5A8:
- add r5, r5, #1
- cmp r5, #16
- blt _037FD560
- cmp r6, #0
- moveq r0, #1
- movne r0, #0
- ldmia sp!, {r4, r5, r6, r7, r8, lr}
- bx lr
-
- arm_func_start FUN_037FD5C8
-FUN_037FD5C8: ; 0x037FD5C8
- stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr}
- sub sp, sp, #52 ; 0x34
- mov r9, r0
- mov r8, r1
- str r3, [sp, #4]
- ldr r2, [r9, #60] ; 0x3c
- b _037FD61C
-_037FD5E4:
- ldr r0, [r2, #52] ; 0x34
- cmp r0, #0
- subgt r0, r0, #1
- strgt r0, [r2, #52] ; 0x34
- ldrb r0, [r2, #3]
- mov r0, r0, lsl #29
- movs r0, r0, lsr #31
- bne _037FD618
- ldr r1, [r2, #20]
- ldr r0, [r2, #24]
- cmp r1, r0
- addlt r0, r1, #1
- strlt r0, [r2, #20]
-_037FD618:
- ldr r2, [r2, #80] ; 0x50
-_037FD61C:
- cmp r2, #0
- bne _037FD5E4
- ldrb r1, [r9]
- mov r0, r1, lsl #27
- movs r0, r0, lsr #31
- beq _037FD64C
- ldr r0, [r9, #60] ; 0x3c
- cmp r0, #0
- movne r0, #0
- bne _037FDF84
- bic r0, r1, #16
- strb r0, [r9]
-_037FD64C:
- ldr r0, [r9, #32]
- cmp r0, #0
- ble _037FD670
- sub r0, r0, #1
- str r0, [r9, #32]
- ldr r0, [r9, #32]
- cmp r0, #0
- movgt r0, #0
- bgt _037FDF84
-_037FD670:
- ldr r0, [r9, #40] ; 0x28
- bl FUN_037FE9B8
- add r0, r9, #40 ; 0x28
- str r0, [sp, #28]
- mov r0, #2
- str r0, [sp, #32]
- mov r0, #127 ; 0x7f
- str r0, [sp, #36] ; 0x24
- mov fp, #0
- mvn r0, #0
- str r0, [sp, #40] ; 0x28
- mov sl, #1
- mov r0, #3
- str r0, [sp, #20]
- mov r0, #4
- str r0, [sp, #24]
- b _037FDF64
-_037FD6B4:
- mov r4, fp
- mov r6, sl
- ldr r0, [r9, #40] ; 0x28
- bl FUN_037FE968
- mov r7, r0
- ldr r0, [r9, #40] ; 0x28
- add r0, r0, #1
- str r0, [r9, #40] ; 0x28
- cmp r7, #162 ; 0xa2
- bne _037FD700
- ldr r0, [r9, #40] ; 0x28
- bl FUN_037FE968
- mov r7, r0
- ldr r0, [r9, #40] ; 0x28
- add r0, r0, #1
- str r0, [r9, #40] ; 0x28
- ldrb r0, [r9]
- mov r0, r0, lsl #25
- mov r6, r0, lsr #31
-_037FD700:
- cmp r7, #160 ; 0xa0
- bne _037FD72C
- ldr r0, [r9, #40] ; 0x28
- bl FUN_037FE968
- mov r7, r0
- ldr r0, [r9, #40] ; 0x28
- add r0, r0, #1
- str r0, [r9, #40] ; 0x28
- ldr r0, [sp, #20]
- str r0, [sp, #8]
- mov r4, sl
-_037FD72C:
- cmp r7, #161 ; 0xa1
- bne _037FD758
- ldr r0, [r9, #40] ; 0x28
- bl FUN_037FE968
- mov r7, r0
- ldr r0, [r9, #40] ; 0x28
- add r0, r0, #1
- str r0, [r9, #40] ; 0x28
- ldr r0, [sp, #24]
- str r0, [sp, #8]
- mov r4, sl
-_037FD758:
- ands r0, r7, #128 ; 0x80
- bne _037FD82C
- ldr r0, [r9, #40] ; 0x28
- bl FUN_037FE968
- str r0, [sp, #12]
- ldr r0, [sp, #28]
- ldr r0, [r0]
- add r1, r0, #1
- ldr r0, [sp, #28]
- str r1, [r0]
- cmp r4, #0
- ldrne r2, [sp, #8]
- ldreq r2, [sp, #32]
- mov r0, r9
- mov r1, r8
- bl FUN_037FE7B0
- mov r5, r0
- ldrsb r0, [r9, #19]
- add r4, r7, r0
- cmp r6, #0
- beq _037FDF64
- cmp r4, #0
- movlt r4, fp
- blt _037FD7C0
- cmp r4, #127 ; 0x7f
- ldrgt r4, [sp, #36] ; 0x24
-_037FD7C0:
- ldrb r0, [r9]
- mov r0, r0, lsl #29
- movs r0, r0, lsr #31
- bne _037FD800
- ldr r0, [sp, #4]
- cmp r0, #0
- beq _037FD800
- cmp r5, #0
- movgt r0, r5
- ldrle r0, [sp, #40] ; 0x28
- str r0, [sp]
- mov r0, r9
- mov r1, r8
- mov r2, r4
- ldr r3, [sp, #12]
- bl FUN_037FDF94
-_037FD800:
- strb r4, [r9, #20]
- ldrb r0, [r9]
- mov r0, r0, lsl #30
- movs r0, r0, lsr #31
- beq _037FDF64
- str r5, [r9, #32]
- cmp r5, #0
- ldreqb r0, [r9]
- orreq r0, r0, #16
- streqb r0, [r9]
- b _037FDF64
-_037FD82C:
- and r0, r7, #240 ; 0xf0
- cmp r0, #192 ; 0xc0
- bgt _037FD868
- cmp r0, #192 ; 0xc0
- bge _037FD9B8
- cmp r0, #144 ; 0x90
- bgt _037FD85C
- cmp r0, #144 ; 0x90
- bge _037FD8D8
- cmp r0, #128 ; 0x80
- beq _037FD890
- b _037FDF64
-_037FD85C:
- cmp r0, #176 ; 0xb0
- beq _037FDC68
- b _037FDF64
-_037FD868:
- cmp r0, #224 ; 0xe0
- bgt _037FD884
- cmp r0, #224 ; 0xe0
- bge _037FDC14
- cmp r0, #208 ; 0xd0
- beq _037FD9B8
- b _037FDF64
-_037FD884:
- cmp r0, #240 ; 0xf0
- beq _037FDEC0
- b _037FDF64
-_037FD890:
- cmp r4, #0
- ldrne r2, [sp, #8]
- ldreq r2, [sp, #32]
- mov r0, r9
- mov r1, r8
- bl FUN_037FE7B0
- cmp r6, #0
- beq _037FDF64
- cmp r7, #128 ; 0x80
- beq _037FD8C4
- cmp r7, #129 ; 0x81
- beq _037FD8CC
- b _037FDF64
-_037FD8C4:
- str r0, [r9, #32]
- b _037FDF64
-_037FD8CC:
- cmp r0, #65536 ; 0x10000
- strlth r0, [r9, #2]
- b _037FDF64
-_037FD8D8:
- cmp r7, #147 ; 0x93
- beq _037FD8F4
- cmp r7, #148 ; 0x94
- beq _037FD958
- cmp r7, #149 ; 0x95
- beq _037FD974
- b _037FDF64
-_037FD8F4:
- ldr r0, [r9, #40] ; 0x28
- bl FUN_037FE968
- mov r4, r0
- ldr r0, [r9, #40] ; 0x28
- add r0, r0, #1
- str r0, [r9, #40] ; 0x28
- mov r0, r9
- bl FUN_037FE8B8
- mov r5, r0
- cmp r6, #0
- beq _037FDF64
- mov r0, r8
- mov r1, r4
- bl FUN_037FE460
- movs r4, r0
- beq _037FDF64
- cmp r4, r9
- beq _037FDF64
- mov r1, r8
- bl FUN_037FE440
- mov r0, r4
- ldr r1, [r9, #36] ; 0x24
- mov r2, r5
- bl FUN_037FE6A8
- b _037FDF64
-_037FD958:
- mov r0, r9
- bl FUN_037FE8B8
- cmp r6, #0
- ldrne r1, [r9, #36] ; 0x24
- addne r0, r1, r0
- strne r0, [r9, #40] ; 0x28
- b _037FDF64
-_037FD974:
- mov r0, r9
- bl FUN_037FE8B8
- cmp r6, #0
- beq _037FDF64
- ldrb r1, [r9, #59] ; 0x3b
- cmp r1, #3
- bcs _037FDF64
- ldr r2, [r9, #40] ; 0x28
- add r1, r9, r1, lsl #2
- str r2, [r1, #44] ; 0x2c
- ldrb r1, [r9, #59] ; 0x3b
- add r1, r1, #1
- strb r1, [r9, #59] ; 0x3b
- ldr r1, [r9, #36] ; 0x24
- add r0, r1, r0
- str r0, [r9, #40] ; 0x28
- b _037FDF64
-_037FD9B8:
- cmp r4, #0
- ldrne r2, [sp, #8]
- moveq r2, fp
- mov r0, r9
- mov r1, r8
- bl FUN_037FE7B0
- strb r0, [sp, #44] ; 0x2c
- cmp r6, #0
- beq _037FDF64
- sub r0, r7, #192 ; 0xc0
- cmp r0, #23
- addls pc, pc, r0, lsl #2
- b _037FDF64
- b _037FDBE4
- b _037FDA4C
- b _037FDA64
- b _037FDBCC
- b _037FDBD8
- b _037FDA70
- b _037FDA7C
- b _037FDA88
- b _037FDB48
- b _037FDB90
- b _037FDAB0
- b _037FDABC
- b _037FDAC8
- b _037FDAD4
- b _037FDBB0
- b _037FDAA4
- b _037FDAE0
- b _037FDAEC
- b _037FDAF8
- b _037FDB04
- b _037FDB10
- b _037FDA58
- b _037FDBF4
- b _037FDB7C
-_037FDA4C:
- ldrb r0, [sp, #44] ; 0x2c
- strb r0, [r9, #4]
- b _037FDF64
-_037FDA58:
- ldrb r0, [sp, #44] ; 0x2c
- strb r0, [r9, #5]
- b _037FDF64
-_037FDA64:
- ldrb r0, [sp, #44] ; 0x2c
- strb r0, [r8, #5]
- b _037FDF64
-_037FDA70:
- ldrb r0, [sp, #44] ; 0x2c
- strb r0, [r9, #7]
- b _037FDF64
-_037FDA7C:
- ldrb r0, [sp, #44] ; 0x2c
- strb r0, [r9, #18]
- b _037FDF64
-_037FDA88:
- ldrb r0, [r9]
- bic r1, r0, #2
- ldrb r0, [sp, #44] ; 0x2c
- and r0, r0, #1
- orr r0, r1, r0, lsl #1
- strb r0, [r9]
- b _037FDF64
-_037FDAA4:
- ldrb r0, [sp, #44] ; 0x2c
- strb r0, [r9, #21]
- b _037FDF64
-_037FDAB0:
- ldrb r0, [sp, #44] ; 0x2c
- strb r0, [r9, #26]
- b _037FDF64
-_037FDABC:
- ldrb r0, [sp, #44] ; 0x2c
- strb r0, [r9, #25]
- b _037FDF64
-_037FDAC8:
- ldrb r0, [sp, #44] ; 0x2c
- strb r0, [r9, #24]
- b _037FDF64
-_037FDAD4:
- ldrb r0, [sp, #44] ; 0x2c
- strb r0, [r9, #27]
- b _037FDF64
-_037FDAE0:
- ldrb r0, [sp, #44] ; 0x2c
- strb r0, [r9, #14]
- b _037FDF64
-_037FDAEC:
- ldrb r0, [sp, #44] ; 0x2c
- strb r0, [r9, #15]
- b _037FDF64
-_037FDAF8:
- ldrb r0, [sp, #44] ; 0x2c
- strb r0, [r9, #16]
- b _037FDF64
-_037FDB04:
- ldrb r0, [sp, #44] ; 0x2c
- strb r0, [r9, #17]
- b _037FDF64
-_037FDB10:
- ldrb r0, [r9, #59] ; 0x3b
- cmp r0, #3
- bcs _037FDF64
- ldr r1, [r9, #40] ; 0x28
- add r0, r9, r0, lsl #2
- str r1, [r0, #44] ; 0x2c
- ldrb r1, [sp, #44] ; 0x2c
- ldrb r0, [r9, #59] ; 0x3b
- add r0, r9, r0
- strb r1, [r0, #56] ; 0x38
- ldrb r0, [r9, #59] ; 0x3b
- add r0, r0, #1
- strb r0, [r9, #59] ; 0x3b
- b _037FDF64
-_037FDB48:
- ldrb r0, [r9]
- bic r1, r0, #8
- ldrb r0, [sp, #44] ; 0x2c
- and r0, r0, #1
- orr r0, r1, r0, lsl #3
- strb r0, [r9]
- mov r0, r9
- mov r1, r8
- ldr r2, [sp, #40] ; 0x28
- bl FUN_037FE588
- mov r0, r9
- bl FUN_037FE54C
- b _037FDF64
-_037FDB7C:
- mov r0, r9
- mov r1, r8
- ldrb r2, [sp, #44] ; 0x2c
- bl FUN_037FD440
- b _037FDF64
-_037FDB90:
- ldrb r1, [sp, #44] ; 0x2c
- ldrsb r0, [r9, #19]
- add r0, r1, r0
- strb r0, [r9, #20]
- ldrb r0, [r9]
- orr r0, r0, #32
- strb r0, [r9]
- b _037FDF64
-_037FDBB0:
- ldrb r0, [r9]
- bic r1, r0, #32
- ldrb r0, [sp, #44] ; 0x2c
- and r0, r0, #1
- orr r0, r1, r0, lsl #5
- strb r0, [r9]
- b _037FDF64
-_037FDBCC:
- ldrsb r0, [sp, #44] ; 0x2c
- strb r0, [r9, #19]
- b _037FDF64
-_037FDBD8:
- ldrsb r0, [sp, #44] ; 0x2c
- strb r0, [r9, #6]
- b _037FDF64
-_037FDBE4:
- ldrb r0, [sp, #44] ; 0x2c
- sub r0, r0, #64 ; 0x40
- strb r0, [r9, #8]
- b _037FDF64
-_037FDBF4:
- ldr r0, _037FDF90 ; =_03807F4C
- ldr r0, [r0]
- cmp r0, #0
- beq _037FDF64
- mov r0, r8
- ldrb r1, [sp, #44] ; 0x2c
- bl FUN_037FD504
- b _037FDF64
-_037FDC14:
- cmp r4, #0
- ldrne r2, [sp, #8]
- moveq r2, sl
- mov r0, r9
- mov r1, r8
- bl FUN_037FE7B0
- mov r0, r0, lsl #16
- mov r0, r0, asr #16
- cmp r6, #0
- beq _037FDF64
- cmp r7, #224 ; 0xe0
- beq _037FDC60
- cmp r7, #225 ; 0xe1
- beq _037FDC58
- cmp r7, #227 ; 0xe3
- streqh r0, [r9, #22]
- b _037FDF64
-_037FDC58:
- strh r0, [r8, #24]
- b _037FDF64
-_037FDC60:
- strh r0, [r9, #28]
- b _037FDF64
-_037FDC68:
- ldr r0, [r9, #40] ; 0x28
- bl FUN_037FE968
- str r0, [sp, #16]
- ldr r0, [r9, #40] ; 0x28
- add r0, r0, #1
- str r0, [r9, #40] ; 0x28
- cmp r4, #0
- ldrne r2, [sp, #8]
- moveq r2, sl
- mov r0, r9
- mov r1, r8
- bl FUN_037FE7B0
- mov r0, r0, lsl #16
- mov r5, r0, asr #16
- mov r0, r8
- ldr r1, [sp, #16]
- bl FUN_037FD504
- mov r4, r0
- cmp r6, #0
- beq _037FDF64
- cmp r4, #0
- beq _037FDF64
- sub r0, r7, #176 ; 0xb0
- cmp r0, #13
- addls pc, pc, r0, lsl #2
- b _037FDF64
- b _037FDD08
- b _037FDD10
- b _037FDD20
- b _037FDD30
- b _037FDD40
- b _037FDD5C
- b _037FDD80
- b _037FDF64
- b _037FDDB8
- b _037FDDE4
- b _037FDE10
- b _037FDE3C
- b _037FDE68
- b _037FDE94
-_037FDD08:
- strh r5, [r4]
- b _037FDF64
-_037FDD10:
- ldrsh r0, [r4]
- add r0, r0, r5
- strh r0, [r4]
- b _037FDF64
-_037FDD20:
- ldrsh r0, [r4]
- sub r0, r0, r5
- strh r0, [r4]
- b _037FDF64
-_037FDD30:
- ldrsh r0, [r4]
- mul r1, r0, r5
- strh r1, [r4]
- b _037FDF64
-_037FDD40:
- cmp r5, #0
- beq _037FDF64
- ldrsh r0, [r4]
- mov r1, r5
- bl _s32_div_f
- strh r0, [r4]
- b _037FDF64
-_037FDD5C:
- cmp r5, #0
- ldrgesh r0, [r4]
- movge r0, r0, lsl r5
- strgeh r0, [r4]
- ldrltsh r1, [r4]
- rsblt r0, r5, #0
- movlt r0, r1, asr r0
- strlth r0, [r4]
- b _037FDF64
-_037FDD80:
- mov r6, fp
- cmp r5, #0
- movlt r6, sl
- rsblt r0, r5, #0
- movlt r0, r0, lsl #16
- movlt r5, r0, asr #16
- bl SND_CalcRandom
- add r1, r5, #1
- mul r1, r0, r1
- mov r0, r1, asr #16
- cmp r6, #0
- rsbne r0, r0, #0
- strh r0, [r4]
- b _037FDF64
-_037FDDB8:
- ldrsh r0, [r4]
- cmp r0, r5
- moveq r2, sl
- movne r2, fp
- ldrb r0, [r9]
- bic r1, r0, #64 ; 0x40
- and r0, r2, #255 ; 0xff
- and r0, r0, #1
- orr r0, r1, r0, lsl #6
- strb r0, [r9]
- b _037FDF64
-_037FDDE4:
- ldrsh r0, [r4]
- cmp r0, r5
- movge r2, sl
- movlt r2, fp
- ldrb r0, [r9]
- bic r1, r0, #64 ; 0x40
- and r0, r2, #255 ; 0xff
- and r0, r0, #1
- orr r0, r1, r0, lsl #6
- strb r0, [r9]
- b _037FDF64
-_037FDE10:
- ldrsh r0, [r4]
- cmp r0, r5
- movgt r2, sl
- movle r2, fp
- ldrb r0, [r9]
- bic r1, r0, #64 ; 0x40
- and r0, r2, #255 ; 0xff
- and r0, r0, #1
- orr r0, r1, r0, lsl #6
- strb r0, [r9]
- b _037FDF64
-_037FDE3C:
- ldrsh r0, [r4]
- cmp r0, r5
- movle r2, sl
- movgt r2, fp
- ldrb r0, [r9]
- bic r1, r0, #64 ; 0x40
- and r0, r2, #255 ; 0xff
- and r0, r0, #1
- orr r0, r1, r0, lsl #6
- strb r0, [r9]
- b _037FDF64
-_037FDE68:
- ldrsh r0, [r4]
- cmp r0, r5
- movlt r2, sl
- movge r2, fp
- ldrb r0, [r9]
- bic r1, r0, #64 ; 0x40
- and r0, r2, #255 ; 0xff
- and r0, r0, #1
- orr r0, r1, r0, lsl #6
- strb r0, [r9]
- b _037FDF64
-_037FDE94:
- ldrsh r0, [r4]
- cmp r0, r5
- movne r2, sl
- moveq r2, fp
- ldrb r0, [r9]
- bic r1, r0, #64 ; 0x40
- and r0, r2, #255 ; 0xff
- and r0, r0, #1
- orr r0, r1, r0, lsl #6
- strb r0, [r9]
- b _037FDF64
-_037FDEC0:
- cmp r6, #0
- beq _037FDF64
- sub r0, r7, #252 ; 0xfc
- cmp r0, #3
- addls pc, pc, r0, lsl #2
- b _037FDF64
- b _037FDF10
- b _037FDEE8
- b _037FDF64
- b _037FDF5C
-_037FDEE8:
- ldrb r0, [r9, #59] ; 0x3b
- cmp r0, #0
- beq _037FDF64
- sub r0, r0, #1
- strb r0, [r9, #59] ; 0x3b
- ldrb r0, [r9, #59] ; 0x3b
- add r0, r9, r0, lsl #2
- ldr r0, [r0, #44] ; 0x2c
- str r0, [r9, #40] ; 0x28
- b _037FDF64
-_037FDF10:
- ldrb r0, [r9, #59] ; 0x3b
- cmp r0, #0
- beq _037FDF64
- sub r1, r0, #1
- add r2, r9, r1
- ldrb r0, [r2, #56] ; 0x38
- cmp r0, #0
- beq _037FDF40
- sub r0, r0, #1
- ands r0, r0, #255 ; 0xff
- streqb r1, [r9, #59] ; 0x3b
- beq _037FDF64
-_037FDF40:
- strb r0, [r2, #56] ; 0x38
- ldrb r0, [r9, #59] ; 0x3b
- sub r0, r0, #1
- add r0, r9, r0, lsl #2
- ldr r0, [r0, #44] ; 0x2c
- str r0, [r9, #40] ; 0x28
- b _037FDF64
-_037FDF5C:
- mvn r0, #0
- b _037FDF84
-_037FDF64:
- ldr r0, [r9, #32]
- cmp r0, #0
- bne _037FDF80
- ldrb r0, [r9]
- mov r0, r0, lsl #27
- movs r0, r0, lsr #31
- beq _037FD6B4
-_037FDF80:
- mov r0, #0
-_037FDF84:
- add sp, sp, #52 ; 0x34
- ldmia sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr}
- bx lr
-_037FDF90: .word _03807F4C
-
- arm_func_start FUN_037FDF94
-FUN_037FDF94: ; 0x037FDF94
- stmdb sp!, {r4, r5, r6, r7, r8, lr}
- sub sp, sp, #24
- mov r8, r0
- mov r7, r1
- mov r6, r2
- mov r5, r3
- mov r4, #0
- ldrb r0, [r8]
- mov r0, r0, lsl #28
- movs r0, r0, lsr #31
- beq _037FDFD0
- ldr r4, [r8, #60] ; 0x3c
- cmp r4, #0
- strneb r6, [r4, #8]
- strneb r5, [r4, #9]
-_037FDFD0:
- cmp r4, #0
- bne _037FE0C4
- ldr r0, [r7, #32]
- ldrh r1, [r8, #2]
- mov r2, r6
- add r3, sp, #8
- bl SND_ReadInstData
- cmp r0, #0
- beq _037FE18C
- ldrb r0, [sp, #8]
- cmp r0, #4
- addls pc, pc, r0, lsl #2
- b _037FE030
- b _037FE030
- b _037FE018
- b _037FE020
- b _037FE028
- b _037FE018
-_037FE018:
- ldr r1, _037FE198 ; =0x0000FFFF
- b _037FE034
-_037FE020:
- mov r1, #16128 ; 0x3f00
- b _037FE034
-_037FE028:
- mov r1, #49152 ; 0xc000
- b _037FE034
-_037FE030:
- b _037FE18C
-_037FE034:
- ldrh r0, [r8, #30]
- and r0, r1, r0
- str r8, [sp]
- ldrb r2, [r7, #4]
- ldrb r1, [r8, #18]
- add r1, r2, r1
- ldrb r2, [r8]
- mov r2, r2, lsl #24
- mov r2, r2, lsr #31
- ldr r3, _037FE19C ; =FUN_037FE344
- bl SND_AllocExChannel
- movs r4, r0
- beq _037FE18C
- ldrb r0, [r8]
- mov r0, r0, lsl #28
- movs r0, r0, lsr #31
- mvnne r3, #0
- ldreq r3, [sp, #48] ; 0x30
- ldr r0, [r7, #32]
- str r0, [sp]
- add r0, sp, #8
- str r0, [sp, #4]
- mov r0, r4
- mov r1, r6
- mov r2, r5
- bl SND_NoteOn
- cmp r0, #0
- bne _037FE0B8
- mov r0, #0
- strb r0, [r4, #34] ; 0x22
- mov r0, r4
- bl SND_FreeExChannel
- b _037FE18C
-_037FE0B8:
- ldr r0, [r8, #60] ; 0x3c
- str r0, [r4, #80] ; 0x50
- str r4, [r8, #60] ; 0x3c
-_037FE0C4:
- ldrb r1, [r8, #14]
- cmp r1, #255 ; 0xff
- beq _037FE0D8
- mov r0, r4
- bl SND_SetExChannelAttack
-_037FE0D8:
- ldrb r1, [r8, #15]
- cmp r1, #255 ; 0xff
- beq _037FE0EC
- mov r0, r4
- bl SND_SetExChannelDecay
-_037FE0EC:
- ldrb r1, [r8, #16]
- cmp r1, #255 ; 0xff
- beq _037FE100
- mov r0, r4
- bl SND_SetExChannelSustain
-_037FE100:
- ldrb r1, [r8, #17]
- cmp r1, #255 ; 0xff
- beq _037FE114
- mov r0, r4
- bl SND_SetExChannelRelease
-_037FE114:
- ldrsh r0, [r8, #22]
- strh r0, [r4, #50] ; 0x32
- ldrb r0, [r8]
- mov r0, r0, lsl #26
- movs r0, r0, lsr #31
- beq _037FE144
- ldrsh r1, [r4, #50] ; 0x32
- ldrb r0, [r8, #20]
- sub r0, r0, r6
- mov r0, r0, lsl #22
- add r0, r1, r0, asr #16
- strh r0, [r4, #50] ; 0x32
-_037FE144:
- ldrb r0, [r8, #21]
- cmp r0, #0
- bne _037FE168
- ldr r0, [sp, #48] ; 0x30
- str r0, [r4, #24]
- ldrb r0, [r4, #3]
- bic r0, r0, #4
- strb r0, [r4, #3]
- b _037FE184
-_037FE168:
- mul r1, r0, r0
- ldrsh r0, [r4, #50] ; 0x32
- cmp r0, #0
- rsblt r0, r0, #0
- mul r0, r1, r0
- mov r0, r0, asr #11
- str r0, [r4, #24]
-_037FE184:
- mov r0, #0
- str r0, [r4, #20]
-_037FE18C:
- add sp, sp, #24
- ldmia sp!, {r4, r5, r6, r7, r8, lr}
- bx lr
-_037FE198: .word 0x0000FFFF
-_037FE19C: .word FUN_037FE344
-
- arm_func_start FUN_037FE1A0
-FUN_037FE1A0: ; 0x037FE1A0
- stmdb sp!, {r4, r5, r6, lr}
- mov r6, r0
- mov r5, #0
- mov r4, #1
-_037FE1B0:
- mov r0, r6
- mov r1, r5
- bl FUN_037FE460
- cmp r0, #0
- beq _037FE1D0
- mov r1, r6
- mov r2, r4
- bl FUN_037FE1E4
-_037FE1D0:
- add r5, r5, #1
- cmp r5, #16
- blt _037FE1B0
- ldmia sp!, {r4, r5, r6, lr}
- bx lr
-
- arm_func_start FUN_037FE1E4
-FUN_037FE1E4: ; 0x037FE1E4
- stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr}
- sub sp, sp, #4
- mov sl, r0
- mov fp, r2
- ldrb r0, [r1, #5]
- mov r0, r0, lsl #1
- ldr r4, _037FE340 ; =SNDi_DecibelSquareTable
- ldrsh r3, [r4, r0]
- ldrb r0, [sl, #4]
- mov r0, r0, lsl #1
- ldrsh r2, [r4, r0]
- ldrb r0, [sl, #5]
- mov r0, r0, lsl #1
- ldrsh r0, [r4, r0]
- add r0, r2, r0
- add r3, r3, r0
- ldrsh r2, [sl, #10]
- ldrsh r0, [r1, #6]
- add r2, r2, r0
- ldrsb r4, [sl, #6]
- ldrb r0, [sl, #7]
- mov r0, r0, lsl #6
- mul r1, r4, r0
- ldrsh r0, [sl, #12]
- add r0, r0, r1, asr #7
- ldrsb r1, [sl, #8]
- ldrb r4, [sl, #1]
- cmp r4, #127 ; 0x7f
- mulne r4, r1, r4
- addne r1, r4, #64 ; 0x40
- movne r1, r1, asr #7
- ldrsb r4, [sl, #9]
- add r1, r1, r4
- mov r4, #32768 ; 0x8000
- rsb r4, r4, #0
- cmp r3, r4
- movlt r3, r4
- mov r4, #32768 ; 0x8000
- rsb r4, r4, #0
- cmp r2, r4
- movlt r2, r4
- mvn r4, #127 ; 0x7f
- cmp r1, r4
- movlt r1, r4
- blt _037FE2A0
- cmp r1, #127 ; 0x7f
- movgt r1, #127 ; 0x7f
-_037FE2A0:
- ldr r9, [sl, #60] ; 0x3c
- mov r4, #1
- mov r3, r3, lsl #16
- mov r7, r3, asr #16
- mov r0, r0, lsl #16
- mov r6, r0, asr #16
- mov r0, r1, lsl #24
- mov r5, r0, asr #24
- mov r0, r2, lsl #16
- mov r8, r0, asr #16
- b _037FE32C
-_037FE2CC:
- strh r8, [r9, #6]
- ldrb r0, [r9, #2]
- cmp r0, #3
- beq _037FE328
- strh r7, [r9, #12]
- strh r6, [r9, #14]
- strb r5, [r9, #11]
- ldrb r0, [sl, #1]
- strb r0, [r9, #4]
- ldrh r0, [sl, #24]
- strh r0, [r9, #40] ; 0x28
- ldrh r0, [sl, #26]
- strh r0, [r9, #42] ; 0x2a
- ldrh r0, [sl, #28]
- strh r0, [r9, #44] ; 0x2c
- ldr r0, [r9, #52] ; 0x34
- cmp r0, #0
- bne _037FE328
- cmp fp, #0
- beq _037FE328
- strb r4, [r9, #34] ; 0x22
- mov r0, r9
- bl SND_ReleaseExChannel
-_037FE328:
- ldr r9, [r9, #80] ; 0x50
-_037FE32C:
- cmp r9, #0
- bne _037FE2CC
- add sp, sp, #4
- ldmia sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr}
- bx lr
-_037FE340: .word SNDi_DecibelSquareTable
-
- arm_func_start FUN_037FE344
-FUN_037FE344: ; 0x037FE344
- stmdb sp!, {r4, r5, lr}
- sub sp, sp, #4
- mov r5, r0
- mov r4, r2
- cmp r1, #1
- bne _037FE368
- mov r1, #0
- strb r1, [r5, #34] ; 0x22
- bl SND_FreeExChannel
-_037FE368:
- ldr r1, [r4, #60] ; 0x3c
- cmp r1, r5
- ldreq r0, [r5, #80] ; 0x50
- streq r0, [r4, #60] ; 0x3c
- beq _037FE3A0
- b _037FE394
-_037FE380:
- cmp r0, r5
- ldreq r0, [r5, #80] ; 0x50
- streq r0, [r1, #80] ; 0x50
- beq _037FE3A0
- mov r1, r0
-_037FE394:
- ldr r0, [r1, #80] ; 0x50
- cmp r0, #0
- bne _037FE380
-_037FE3A0:
- add sp, sp, #4
- ldmia sp!, {r4, r5, lr}
- bx lr
-
- arm_func_start FUN_037FE3AC
-FUN_037FE3AC: ; 0x037FE3AC
- stmdb sp!, {r4, r5, lr}
- sub sp, sp, #4
- mov r5, r0
- mov r4, #0
-_037FE3BC:
- mov r0, r5
- mov r1, r4
- bl FUN_037FE3EC
- add r4, r4, #1
- cmp r4, #16
- blt _037FE3BC
- ldrb r0, [r5]
- bic r0, r0, #1
- strb r0, [r5]
- add sp, sp, #4
- ldmia sp!, {r4, r5, lr}
- bx lr
-
- arm_func_start FUN_037FE3EC
-FUN_037FE3EC: ; 0x037FE3EC
- stmdb sp!, {r4, r5, lr}
- sub sp, sp, #4
- mov r5, r0
- mov r4, r1
- bl FUN_037FE460
- cmp r0, #0
- beq _037FE430
- mov r1, r5
- bl FUN_037FE440
- add r3, r5, #8
- ldr r2, _037FE43C ; =_038086EC
- ldrb r1, [r3, r4]
- ldrb r0, [r2, r1, lsl #6]
- bic r0, r0, #1
- strb r0, [r2, r1, lsl #6]
- mov r0, #255 ; 0xff
- strb r0, [r3, r4]
-_037FE430:
- add sp, sp, #4
- ldmia sp!, {r4, r5, lr}
- bx lr
-_037FE43C: .word _038086EC
-
- arm_func_start FUN_037FE440
-FUN_037FE440: ; 0x037FE440
- stmdb sp!, {r4, lr}
- mov r4, r0
- mvn r2, #0
- bl FUN_037FE588
- mov r0, r4
- bl FUN_037FE54C
- ldmia sp!, {r4, lr}
- bx lr
-
- arm_func_start FUN_037FE460
-FUN_037FE460: ; 0x037FE460
- cmp r1, #15
- movgt r0, #0
- bxgt lr
- add r0, r0, r1
- ldrb r1, [r0, #8]
- cmp r1, #255 ; 0xff
- moveq r0, #0
- ldrne r0, _037FE488 ; =_038086EC
- addne r0, r0, r1, lsl #6
- bx lr
-_037FE488: .word _038086EC
-
- arm_func_start FUN_037FE48C
-FUN_037FE48C: ; 0x037FE48C
- stmdb sp!, {r4, r5, r6, r7, lr}
- sub sp, sp, #4
- mov r6, r0
- mov r5, #0
- add r1, r6, #28
- b _037FE4B4
-_037FE4A4:
- ldrh r0, [r1]
- sub r0, r0, #240 ; 0xf0
- strh r0, [r1]
- add r5, r5, #1
-_037FE4B4:
- ldrh r0, [r6, #28]
- cmp r0, #240 ; 0xf0
- bcs _037FE4A4
- mov r4, #0
- mov r7, #1
- b _037FE4F0
-_037FE4CC:
- mov r0, r6
- mov r1, r7
- bl FUN_037FD548
- cmp r0, #0
- beq _037FE4EC
- mov r0, r6
- bl FUN_037FE3AC
- b _037FE4F8
-_037FE4EC:
- add r4, r4, #1
-_037FE4F0:
- cmp r4, r5
- blt _037FE4CC
-_037FE4F8:
- ldr r0, _037FE548 ; =SNDi_SharedWork
- ldr r0, [r0]
- cmp r0, #0
- beq _037FE524
- add r3, r0, #64 ; 0x40
- ldrb r1, [r6, #1]
- mov r0, #36 ; 0x24
- mul r2, r1, r0
- ldr r0, [r3, r2]
- add r0, r0, r4
- str r0, [r3, r2]
-_037FE524:
- ldrh r2, [r6, #24]
- ldrh r0, [r6, #26]
- mul r1, r2, r0
- ldrh r0, [r6, #28]
- add r0, r0, r1, asr #8
- strh r0, [r6, #28]
- add sp, sp, #4
- ldmia sp!, {r4, r5, r6, r7, lr}
- bx lr
-_037FE548: .word SNDi_SharedWork
-
- arm_func_start FUN_037FE54C
-FUN_037FE54C: ; 0x037FE54C
- stmdb sp!, {r4, r5, lr}
- sub sp, sp, #4
- mov r5, r0
- ldr r4, [r5, #60] ; 0x3c
- b _037FE56C
-_037FE560:
- mov r0, r4
- bl SND_FreeExChannel
- ldr r4, [r4, #80] ; 0x50
-_037FE56C:
- cmp r4, #0
- bne _037FE560
- mov r0, #0
- str r0, [r5, #60] ; 0x3c
- add sp, sp, #4
- ldmia sp!, {r4, r5, lr}
- bx lr
-
- arm_func_start FUN_037FE588
-FUN_037FE588: ; 0x037FE588
- stmdb sp!, {r4, r5, r6, r7, lr}
- sub sp, sp, #4
- mov r4, r0
- mov r7, r2
- mov r2, #0
- bl FUN_037FE1E4
- ldr r6, [r4, #60] ; 0x3c
- and r5, r7, #255 ; 0xff
- mov r4, #1
- b _037FE5E4
-_037FE5B0:
- mov r0, r6
- bl SND_IsExChannelActive
- cmp r0, #0
- beq _037FE5E0
- cmp r7, #0
- blt _037FE5D4
- mov r0, r6
- mov r1, r5
- bl SND_SetExChannelRelease
-_037FE5D4:
- strb r4, [r6, #34] ; 0x22
- mov r0, r6
- bl SND_ReleaseExChannel
-_037FE5E0:
- ldr r6, [r6, #80] ; 0x50
-_037FE5E4:
- cmp r6, #0
- bne _037FE5B0
- add sp, sp, #4
- ldmia sp!, {r4, r5, r6, r7, lr}
- bx lr
-
- arm_func_start FUN_037FE5F8
-FUN_037FE5F8: ; 0x037FE5F8
- stmdb sp!, {r4, lr}
- ldrb r2, [r0]
- bic r2, r2, #4
- strb r2, [r0]
- str r1, [r0, #32]
- mov r1, #120 ; 0x78
- strh r1, [r0, #24]
- mov r1, #256 ; 0x100
- strh r1, [r0, #26]
- mov r1, #240 ; 0xf0
- strh r1, [r0, #28]
- mov r1, #127 ; 0x7f
- strb r1, [r0, #5]
- mov r3, #0
- strh r3, [r0, #6]
- mov r1, #64 ; 0x40
- strb r1, [r0, #4]
- mov r2, #255 ; 0xff
-_037FE640:
- add r1, r0, r3
- strb r2, [r1, #8]
- add r3, r3, #1
- cmp r3, #16
- blt _037FE640
- ldr r2, _037FE6A4 ; =SNDi_SharedWork
- ldr r3, [r2]
- cmp r3, #0
- beq _037FE69C
- mov r4, #0
- ldrb ip, [r0, #1]
- mov r1, #36 ; 0x24
- mla r3, ip, r1, r3
- str r4, [r3, #64] ; 0x40
- mvn lr, #0
-_037FE67C:
- ldr r3, [r2]
- ldrb ip, [r0, #1]
- mla r3, ip, r1, r3
- add r3, r3, r4, lsl #1
- strh lr, [r3, #32]
- add r4, r4, #1
- cmp r4, #16
- blt _037FE67C
-_037FE69C:
- ldmia sp!, {r4, lr}
- bx lr
-_037FE6A4: .word SNDi_SharedWork
-
- arm_func_start FUN_037FE6A8
-FUN_037FE6A8: ; 0x037FE6A8
- str r1, [r0, #36] ; 0x24
- ldr r1, [r0, #36] ; 0x24
- add r1, r1, r2
- str r1, [r0, #40] ; 0x28
- bx lr
-
- arm_func_start FUN_037FE6BC
-FUN_037FE6BC: ; 0x037FE6BC
- stmdb sp!, {r4, lr}
- mov r4, r0
- mov r0, #0
- str r0, [r4, #36] ; 0x24
- str r0, [r4, #40] ; 0x28
- ldrb r1, [r4]
- orr r1, r1, #2
- strb r1, [r4]
- ldrb r1, [r4]
- bic r1, r1, #4
- strb r1, [r4]
- ldrb r1, [r4]
- bic r1, r1, #8
- strb r1, [r4]
- ldrb r1, [r4]
- bic r1, r1, #16
- strb r1, [r4]
- ldrb r1, [r4]
- bic r1, r1, #32
- strb r1, [r4]
- ldrb r1, [r4]
- orr r1, r1, #64 ; 0x40
- strb r1, [r4]
- ldrb r1, [r4]
- bic r1, r1, #128 ; 0x80
- strb r1, [r4]
- strb r0, [r4, #59] ; 0x3b
- strh r0, [r4, #2]
- mov r1, #64 ; 0x40
- strb r1, [r4, #18]
- mov r2, #127 ; 0x7f
- strb r2, [r4, #4]
- strb r2, [r4, #5]
- strh r0, [r4, #10]
- strb r0, [r4, #8]
- strb r0, [r4, #9]
- strb r0, [r4, #6]
- strh r0, [r4, #12]
- mov r1, #255 ; 0xff
- strb r1, [r4, #14]
- strb r1, [r4, #15]
- strb r1, [r4, #16]
- strb r1, [r4, #17]
- strb r2, [r4, #1]
- mov r1, #2
- strb r1, [r4, #7]
- mov r1, #60 ; 0x3c
- strb r1, [r4, #20]
- strb r0, [r4, #21]
- strh r0, [r4, #22]
- strb r0, [r4, #19]
- ldr r0, _037FE7AC ; =0x0000FFFF
- strh r0, [r4, #30]
- add r0, r4, #24
- bl SND_InitLfoParam
- mov r0, #0
- str r0, [r4, #32]
- str r0, [r4, #60] ; 0x3c
- ldmia sp!, {r4, lr}
- bx lr
-_037FE7AC: .word 0x0000FFFF
-
- arm_func_start FUN_037FE7B0
-FUN_037FE7B0: ; 0x037FE7B0
- stmdb sp!, {r4, r5, r6, lr}
- mov r4, r0
- mov r6, r1
- cmp r2, #4
- addls pc, pc, r2, lsl #2
- b _037FE86C
- b _037FE7DC
- b _037FE7F8
- b _037FE804
- b _037FE83C
- b _037FE810
-_037FE7DC:
- ldr r0, [r4, #40] ; 0x28
- bl FUN_037FE968
- mov r5, r0
- ldr r0, [r4, #40] ; 0x28
- add r0, r0, #1
- str r0, [r4, #40] ; 0x28
- b _037FE86C
-_037FE7F8:
- bl FUN_037FE918
- mov r5, r0
- b _037FE86C
-_037FE804:
- bl FUN_037FE878
- mov r5, r0
- b _037FE86C
-_037FE810:
- ldr r0, [r4, #40] ; 0x28
- bl FUN_037FE968
- mov r1, r0
- ldr r0, [r4, #40] ; 0x28
- add r0, r0, #1
- str r0, [r4, #40] ; 0x28
- mov r0, r6
- bl FUN_037FD504
- cmp r0, #0
- ldrnesh r5, [r0]
- b _037FE86C
-_037FE83C:
- bl FUN_037FE918
- mov r5, r0, lsl #16
- mov r0, r4
- bl FUN_037FE918
- mov r0, r0, lsl #16
- mov r4, r0, asr #16
- bl SND_CalcRandom
- sub r1, r4, r5, asr #16
- add r1, r1, #1
- mul r1, r0, r1
- mov r0, r1, asr #16
- add r5, r0, r5, asr #16
-_037FE86C:
- mov r0, r5
- ldmia sp!, {r4, r5, r6, lr}
- bx lr
-
- arm_func_start FUN_037FE878
-FUN_037FE878: ; 0x037FE878
- stmdb sp!, {r4, r5, r6, lr}
- mov r6, r0
- mov r5, #0
- add r4, r6, #40 ; 0x28
-_037FE888:
- ldr r0, [r6, #40] ; 0x28
- bl FUN_037FE968
- ldr r1, [r4]
- add r1, r1, #1
- str r1, [r4]
- and r1, r0, #127 ; 0x7f
- orr r5, r1, r5, lsl #7
- ands r0, r0, #128 ; 0x80
- bne _037FE888
- mov r0, r5
- ldmia sp!, {r4, r5, r6, lr}
- bx lr
-
- arm_func_start FUN_037FE8B8
-FUN_037FE8B8: ; 0x037FE8B8
- stmdb sp!, {r4, r5, lr}
- sub sp, sp, #4
- mov r4, r0
- ldr r0, [r4, #40] ; 0x28
- bl FUN_037FE968
- mov r5, r0
- ldr r0, [r4, #40] ; 0x28
- add r0, r0, #1
- str r0, [r4, #40] ; 0x28
- ldr r0, [r4, #40] ; 0x28
- bl FUN_037FE968
- ldr r1, [r4, #40] ; 0x28
- add r1, r1, #1
- str r1, [r4, #40] ; 0x28
- orr r5, r5, r0, lsl #8
- ldr r0, [r4, #40] ; 0x28
- bl FUN_037FE968
- ldr r1, [r4, #40] ; 0x28
- add r1, r1, #1
- str r1, [r4, #40] ; 0x28
- orr r0, r5, r0, lsl #16
- add sp, sp, #4
- ldmia sp!, {r4, r5, lr}
- bx lr
-
- arm_func_start FUN_037FE918
-FUN_037FE918: ; 0x037FE918
- stmdb sp!, {r4, r5, lr}
- sub sp, sp, #4
- mov r5, r0
- ldr r0, [r5, #40] ; 0x28
- bl FUN_037FE968
- mov r4, r0
- ldr r0, [r5, #40] ; 0x28
- add r0, r0, #1
- str r0, [r5, #40] ; 0x28
- ldr r0, [r5, #40] ; 0x28
- bl FUN_037FE968
- ldr r1, [r5, #40] ; 0x28
- add r1, r1, #1
- str r1, [r5, #40] ; 0x28
- orr r0, r4, r0, lsl #8
- mov r0, r0, lsl #16
- mov r0, r0, lsr #16
- add sp, sp, #4
- ldmia sp!, {r4, r5, lr}
- bx lr
-
- arm_func_start FUN_037FE968
-FUN_037FE968: ; 0x037FE968
- stmdb sp!, {r4, lr}
- mov r4, r0
- ldr r0, _037FE9B0 ; =_03807F50
- ldr r1, [r0]
- cmp r4, r1
- bcc _037FE98C
- ldr r0, [r0, #4]
- cmp r4, r0
- bcc _037FE994
-_037FE98C:
- mov r0, r4
- bl FUN_037FE9B8
-_037FE994:
- ldr r0, _037FE9B0 ; =_03807F50
- ldr r0, [r0]
- sub r1, r4, r0
- ldr r0, _037FE9B4 ; =_03807F58
- ldrb r0, [r0, r1]
- ldmia sp!, {r4, lr}
- bx lr
-_037FE9B0: .word _03807F50
-_037FE9B4: .word _03807F58
-
- arm_func_start FUN_037FE9B8
-FUN_037FE9B8: ; 0x037FE9B8
- bic r2, r0, #3
- ldr r0, _037FE9F0 ; =_03807F50
- str r2, [r0]
- add r1, r2, #16
- str r1, [r0, #4]
- ldr r1, [r2]
- str r1, [r0, #8]
- ldr r1, [r2, #4]
- str r1, [r0, #12]
- ldr r1, [r2, #8]
- str r1, [r0, #16]
- ldr r1, [r2, #12]
- str r1, [r0, #20]
- bx lr
-_037FE9F0: .word _03807F50
-
- arm_func_start SNDi_SetTrackParam
-SNDi_SetTrackParam: ; 0x037FE9F4
- stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr}
- sub sp, sp, #4
- mov sl, r1
- mov r9, r2
- mov r8, r3
- ldr r7, [sp, #40] ; 0x28
- ldr r2, _037FEA94 ; =_038084AC
- mov r1, #36 ; 0x24
- mla fp, r0, r1, r2
- mov r6, #0
- mov r0, r8, lsl #16
- mov r4, r0, lsr #16
- and r5, r8, #255 ; 0xff
- b _037FEA78
-_037FEA2C:
- ands r0, sl, #1
- beq _037FEA70
- mov r0, fp
- mov r1, r6
- bl FUN_037FE460
- cmp r0, #0
- beq _037FEA70
- cmp r7, #1
- beq _037FEA64
- cmp r7, #2
- beq _037FEA6C
- cmp r7, #4
- streq r8, [r0, r9]
- b _037FEA70
-_037FEA64:
- strb r5, [r0, r9]
- b _037FEA70
-_037FEA6C:
- strh r4, [r0, r9]
-_037FEA70:
- add r6, r6, #1
- mov sl, sl, lsr #1
-_037FEA78:
- cmp r6, #16
- bge _037FEA88
- cmp sl, #0
- bne _037FEA2C
-_037FEA88:
- add sp, sp, #4
- ldmia sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr}
- bx lr
-_037FEA94: .word _038084AC
-
- arm_func_start SNDi_SetPlayerParam
-SNDi_SetPlayerParam: ; 0x037FEA98
- stmfd sp!, {lr}
- sub sp, sp, #4
- ldr lr, _037FEAE0 ; =_038084AC
- mov ip, #36 ; 0x24
- mla ip, r0, ip, lr
- cmp r3, #1
- beq _037FEAC8
- cmp r3, #2
- beq _037FEAD0
- cmp r3, #4
- streq r2, [ip, r1]
- b _037FEAD4
-_037FEAC8:
- strb r2, [ip, r1]
- b _037FEAD4
-_037FEAD0:
- strh r2, [ip, r1]
-_037FEAD4:
- add sp, sp, #4
- ldmia sp!, {lr}
- bx lr
-_037FEAE0: .word _038084AC
-
- arm_func_start SND_InvalidateBank
-SND_InvalidateBank: ; 0x037FEAE4
- stmdb sp!, {r4, r5, r6, r7, r8, lr}
- mov r7, r0
- mov r6, r1
- mov r5, #0
- ldr r4, _037FEB40 ; =_038084AC
- mov r8, #36 ; 0x24
-_037FEAFC:
- mul r1, r5, r8
- add r0, r4, r1
- ldrb r1, [r4, r1]
- mov r1, r1, lsl #31
- movs r1, r1, lsr #31
- beq _037FEB2C
- ldr r1, [r0, #32]
- cmp r7, r1
- bhi _037FEB2C
- cmp r1, r6
- bhi _037FEB2C
- bl FUN_037FE3AC
-_037FEB2C:
- add r5, r5, #1
- cmp r5, #16
- blt _037FEAFC
- ldmia sp!, {r4, r5, r6, r7, r8, lr}
- bx lr
-_037FEB40: .word _038084AC
-
- arm_func_start SND_InvalidateSeq
-SND_InvalidateSeq: ; 0x037FEB44
- stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr}
- sub sp, sp, #4
- mov sl, r0
- mov r9, r1
- mov r7, #0
- mov r5, r7
- ldr fp, _037FEBDC ; =_038084AC
- mov r4, #36 ; 0x24
-_037FEB64:
- mul r0, r7, r4
- add r8, fp, r0
- ldrb r0, [fp, r0]
- mov r0, r0, lsl #31
- movs r0, r0, lsr #31
- beq _037FEBC4
- mov r6, r5
- b _037FEBBC
-_037FEB84:
- mov r0, r8
- mov r1, r6
- bl FUN_037FE460
- cmp r0, #0
- beq _037FEBB8
- ldr r0, [r0, #40] ; 0x28
- cmp sl, r0
- bhi _037FEBB8
- cmp r0, r9
- bhi _037FEBB8
- mov r0, r8
- bl FUN_037FE3AC
- b _037FEBC4
-_037FEBB8:
- add r6, r6, #1
-_037FEBBC:
- cmp r6, #16
- blt _037FEB84
-_037FEBC4:
- add r7, r7, #1
- cmp r7, #16
- blt _037FEB64
- add sp, sp, #4
- ldmia sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr}
- bx lr
-_037FEBDC: .word _038084AC
-
- arm_func_start SND_SetTrackAllocatableChannel
-SND_SetTrackAllocatableChannel: ; 0x037FEBE0
- stmdb sp!, {r4, r5, r6, r7, lr}
- sub sp, sp, #4
- mov r6, r1
- ldr r3, _037FEC54 ; =_038084AC
- mov r1, #36 ; 0x24
- mla r5, r0, r1, r3
- mov r4, #0
- mov r0, r2, lsl #16
- mov r7, r0, lsr #16
- b _037FEC38
-_037FEC08:
- ands r0, r6, #1
- beq _037FEC30
- mov r0, r5
- mov r1, r4
- bl FUN_037FE460
- cmp r0, #0
- strneh r7, [r0, #30]
- ldrneb r1, [r0]
- orrne r1, r1, #128 ; 0x80
- strneb r1, [r0]
-_037FEC30:
- add r4, r4, #1
- mov r6, r6, lsr #1
-_037FEC38:
- cmp r4, #16
- bge _037FEC48
- cmp r6, #0
- bne _037FEC08
-_037FEC48:
- add sp, sp, #4
- ldmia sp!, {r4, r5, r6, r7, lr}
- bx lr
-_037FEC54: .word _038084AC
-
- arm_func_start SND_SetTrackMute
-SND_SetTrackMute: ; 0x037FEC58
- stmdb sp!, {r4, r5, r6, r7, lr}
- sub sp, sp, #4
- mov r7, r1
- mov r6, r2
- ldr r2, _037FECC8 ; =_038084AC
- mov r1, #36 ; 0x24
- mla r5, r0, r1, r2
- mov r4, #0
- b _037FECAC
-_037FEC7C:
- ands r0, r7, #1
- beq _037FECA4
- mov r0, r5
- mov r1, r4
- bl FUN_037FE460
- cmp r0, #0
- beq _037FECA4
- mov r1, r5
- mov r2, r6
- bl FUN_037FD440
-_037FECA4:
- add r4, r4, #1
- mov r7, r7, lsr #1
-_037FECAC:
- cmp r4, #16
- bge _037FECBC
- cmp r7, #0
- bne _037FEC7C
-_037FECBC:
- add sp, sp, #4
- ldmia sp!, {r4, r5, r6, r7, lr}
- bx lr
-_037FECC8: .word _038084AC
-
- arm_func_start SND_SkipSeq
-SND_SkipSeq: ; 0x037FECCC
- stmdb sp!, {r4, r5, r6, r7, r8, lr}
- mov r6, r1
- ldr r2, _037FED90 ; =_038084AC
- mov r1, #36 ; 0x24
- mla r5, r0, r1, r2
- mov r8, #0
- mov r4, #127 ; 0x7f
-_037FECE8:
- mov r0, r5
- mov r1, r8
- bl FUN_037FE460
- movs r7, r0
- beq _037FED10
- mov r1, r5
- mov r2, r4
- bl FUN_037FE588
- mov r0, r7
- bl FUN_037FE54C
-_037FED10:
- add r8, r8, #1
- cmp r8, #16
- blt _037FECE8
- bl SND_StopIntervalTimer
- mov r4, #0
- mov r7, r4
- b _037FED50
-_037FED2C:
- mov r0, r5
- mov r1, r7
- bl FUN_037FD548
- cmp r0, #0
- beq _037FED4C
- mov r0, r5
- bl FUN_037FE3AC
- b _037FED58
-_037FED4C:
- add r4, r4, #1
-_037FED50:
- cmp r4, r6
- bcc _037FED2C
-_037FED58:
- bl SND_StartIntervalTimer
- ldr r0, _037FED94 ; =SNDi_SharedWork
- ldr r0, [r0]
- cmp r0, #0
- beq _037FED88
- add r3, r0, #64 ; 0x40
- ldrb r1, [r5, #1]
- mov r0, #36 ; 0x24
- mul r2, r1, r0
- ldr r0, [r3, r2]
- add r0, r0, r4
- str r0, [r3, r2]
-_037FED88:
- ldmia sp!, {r4, r5, r6, r7, r8, lr}
- bx lr
-_037FED90: .word _038084AC
-_037FED94: .word SNDi_SharedWork
-
- arm_func_start SND_PauseSeq
-SND_PauseSeq: ; 0x037FED98
- stmdb sp!, {r4, r5, r6, r7, lr}
- sub sp, sp, #4
- ldr r5, _037FEE18 ; =_038084AC
- mov r2, #36 ; 0x24
- mul r3, r0, r2
- add r4, r5, r3
- ldrb r0, [r5, r3]
- bic r2, r0, #4
- and r0, r1, #255 ; 0xff
- and r0, r0, #1
- orr r0, r2, r0, lsl #2
- strb r0, [r5, r3]
- cmp r1, #0
- beq _037FEE0C
- mov r7, #0
- mov r5, #127 ; 0x7f
-_037FEDD8:
- mov r0, r4
- mov r1, r7
- bl FUN_037FE460
- movs r6, r0
- beq _037FEE00
- mov r1, r4
- mov r2, r5
- bl FUN_037FE588
- mov r0, r6
- bl FUN_037FE54C
-_037FEE00:
- add r7, r7, #1
- cmp r7, #16
- blt _037FEDD8
-_037FEE0C:
- add sp, sp, #4
- ldmia sp!, {r4, r5, r6, r7, lr}
- bx lr
-_037FEE18: .word _038084AC
-
- arm_func_start SND_StopSeq
-SND_StopSeq: ; 0x037FEE1C
- stmdb sp!, {r4, lr}
- mov r4, r0
- ldr r2, _037FEE70 ; =_038084AC
- mov r0, #36 ; 0x24
- mul r1, r4, r0
- add r0, r2, r1
- ldrb r1, [r2, r1]
- mov r1, r1, lsl #31
- movs r1, r1, lsr #31
- beq _037FEE68
- bl FUN_037FE3AC
- ldr r0, _037FEE74 ; =SNDi_SharedWork
- ldr r2, [r0]
- cmp r2, #0
- ldrne r1, [r2, #4]
- movne r0, #1
- mvnne r0, r0, lsl r4
- andne r0, r1, r0
- strne r0, [r2, #4]
-_037FEE68:
- ldmia sp!, {r4, lr}
- bx lr
-_037FEE70: .word _038084AC
-_037FEE74: .word SNDi_SharedWork
-
- arm_func_start SND_StartSeq
-SND_StartSeq: ; 0x037FEE78
- stmdb sp!, {r4, lr}
- mov r4, r0
- bl SND_PrepareSeq
- mov r0, r4
- bl SND_StartPreparedSeq
- ldmia sp!, {r4, lr}
- bx lr
-
- arm_func_start SND_StartPreparedSeq
-SND_StartPreparedSeq: ; 0x037FEE94
- ldr r2, _037FEEB0 ; =_038084AC
- mov r1, #36 ; 0x24
- mul r1, r0, r1
- ldrb r0, [r2, r1]
- orr r0, r0, #2
- strb r0, [r2, r1]
- bx lr
-_037FEEB0: .word _038084AC
-
- arm_func_start SND_PrepareSeq
-SND_PrepareSeq: ; 0x037FEEB4
- stmdb sp!, {r4, r5, r6, r7, r8, r9, lr}
- sub sp, sp, #4
- mov r4, r0
- mov r8, r1
- mov r6, r2
- mov r5, r3
- ldr r1, _037FEFFC ; =_038084AC
- mov r0, #36 ; 0x24
- mul r0, r4, r0
- add r7, r1, r0
- ldrb r0, [r1, r0]
- mov r0, r0, lsl #31
- movs r0, r0, lsr #31
- beq _037FEEF4
- mov r0, r7
- bl FUN_037FE3AC
-_037FEEF4:
- mov r0, r7
- mov r1, r5
- bl FUN_037FE5F8
- bl FUN_037FD4C0
- movs r9, r0
- bmi _037FEFF0
- ldr r0, _037FF000 ; =_038086EC
- add r5, r0, r9, lsl #6
- mov r0, r5
- bl FUN_037FE6BC
- mov r0, r5
- mov r1, r8
- mov r2, r6
- bl FUN_037FE6A8
- strb r9, [r7, #8]
- ldr r0, [r5, #40] ; 0x28
- bl FUN_037FE9B8
- ldr r0, [r5, #40] ; 0x28
- bl FUN_037FE968
- add r2, r5, #40 ; 0x28
- ldr r1, [r5, #40] ; 0x28
- add r1, r1, #1
- str r1, [r5, #40] ; 0x28
- cmp r0, #254 ; 0xfe
- ldrne r0, [r2]
- subne r0, r0, #1
- strne r0, [r2]
- bne _037FEFB8
- mov r0, r5
- bl FUN_037FE918
- mov r0, r0, lsl #15
- mov r5, r0, lsr #16
- mov r6, #1
- ldr r8, _037FF000 ; =_038086EC
- b _037FEFB0
-_037FEF80:
- ands r0, r5, #1
- beq _037FEFA4
- bl FUN_037FD4C0
- movs r9, r0
- bmi _037FEFB8
- add r0, r8, r9, lsl #6
- bl FUN_037FE6BC
- add r0, r7, r6
- strb r9, [r0, #8]
-_037FEFA4:
- add r6, r6, #1
- mov r0, r5, lsl #15
- mov r5, r0, lsr #16
-_037FEFB0:
- cmp r5, #0
- bne _037FEF80
-_037FEFB8:
- ldrb r0, [r7]
- bic r0, r0, #1
- orr r0, r0, #1
- strb r0, [r7]
- ldrb r0, [r7]
- bic r0, r0, #2
- strb r0, [r7]
- ldr r0, _037FF004 ; =SNDi_SharedWork
- ldr r2, [r0]
- cmp r2, #0
- ldrne r1, [r2, #4]
- movne r0, #1
- orrne r0, r1, r0, lsl r4
- strne r0, [r2, #4]
-_037FEFF0:
- add sp, sp, #4
- ldmia sp!, {r4, r5, r6, r7, r8, r9, lr}
- bx lr
-_037FEFFC: .word _038084AC
-_037FF000: .word _038086EC
-_037FF004: .word SNDi_SharedWork
-
- arm_func_start SND_SeqMain
-SND_SeqMain: ; 0x037FF008
- stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, lr}
- mov r8, r0
- mov r5, #0
- mov r6, r5
- mov sl, #1
- ldr r4, _037FF0A0 ; =_038084AC
- mov r9, #36 ; 0x24
-_037FF024:
- mul r0, r6, r9
- add r7, r4, r0
- ldrb r1, [r4, r0]
- mov r0, r1, lsl #31
- movs r0, r0, lsr #31
- beq _037FF07C
- mov r0, r1, lsl #30
- movs r0, r0, lsr #31
- beq _037FF06C
- cmp r8, #0
- beq _037FF064
- mov r0, r1, lsl #29
- movs r0, r0, lsr #31
- bne _037FF064
- mov r0, r7
- bl FUN_037FE48C
-_037FF064:
- mov r0, r7
- bl FUN_037FE1A0
-_037FF06C:
- ldrb r0, [r7]
- mov r0, r0, lsl #31
- movs r0, r0, lsr #31
- orrne r5, r5, sl, lsl r6
-_037FF07C:
- add r6, r6, #1
- cmp r6, #16
- blt _037FF024
- ldr r0, _037FF0A4 ; =SNDi_SharedWork
- ldr r0, [r0]
- cmp r0, #0
- strne r5, [r0, #4]
- ldmia sp!, {r4, r5, r6, r7, r8, r9, sl, lr}
- bx lr
-_037FF0A0: .word _038084AC
-_037FF0A4: .word SNDi_SharedWork
-
- arm_func_start SND_SeqInit
-SND_SeqInit: ; 0x037FF0A8
- stmfd sp!, {lr}
- sub sp, sp, #4
- mov lr, #0
- ldr r3, _037FF10C ; =_038084AC
- mov r0, #36 ; 0x24
-_037FF0BC:
- mul r2, lr, r0
- add ip, r3, r2
- ldrb r1, [r3, r2]
- bic r1, r1, #1
- strb r1, [r3, r2]
- strb lr, [ip, #1]
- add lr, lr, #1
- cmp lr, #16
- blt _037FF0BC
- mov r2, #0
- ldr r1, _037FF110 ; =_038086EC
-_037FF0E8:
- ldrb r0, [r1, r2, lsl #6]
- bic r0, r0, #1
- strb r0, [r1, r2, lsl #6]
- add r2, r2, #1
- cmp r2, #32
- blt _037FF0E8
- add sp, sp, #4
- ldmia sp!, {lr}
- bx lr
-_037FF10C: .word _038084AC
-_037FF110: .word _038086EC
-
- arm_func_start FUN_037FF114
-FUN_037FF114: ; 0x037FF114
- stmfd sp!, {lr}
- sub sp, sp, #4
- add r0, r0, r1, lsl #3
- ldr r0, [r0, #24]
- cmp r0, #0
- moveq r0, #0
- beq _037FF148
- ldr r1, [r0, #56] ; 0x38
- cmp r2, r1
- movcs r0, #0
- bcs _037FF148
- mov r1, r2
- bl SND_GetWaveDataAddress
-_037FF148:
- add sp, sp, #4
- ldmia sp!, {lr}
- bx lr
-
- arm_func_start SND_NoteOn
-SND_NoteOn: ; 0x037FF154
- stmdb sp!, {r4, r5, r6, r7, r8, r9, lr}
- sub sp, sp, #4
- mov r9, r0
- mov r8, r1
- mov r7, r2
- mov r6, r3
- ldr r5, [sp, #36] ; 0x24
- ldrb r4, [r5, #10]
- cmp r4, #255 ; 0xff
- mvneq r6, #0
- moveq r4, #0
- ldrb r0, [r5]
- cmp r0, #4
- addls pc, pc, r0, lsl #2
- b _037FF210
- b _037FF210
- b _037FF1A4
- b _037FF1EC
- b _037FF200
- b _037FF1A4
-_037FF1A4:
- cmp r0, #1
- ldrneh r1, [r5, #4]
- ldrneh r0, [r5, #2]
- orrne r1, r0, r1, lsl #16
- bne _037FF1CC
- ldr r0, [sp, #32]
- ldrh r1, [r5, #4]
- ldrh r2, [r5, #2]
- bl FUN_037FF114
- mov r1, r0
-_037FF1CC:
- cmp r1, #0
- moveq r0, #0
- beq _037FF214
- mov r0, r9
- add r2, r1, #12
- mov r3, r6
- bl SND_StartExChannelPcm
- b _037FF214
-_037FF1EC:
- mov r0, r9
- ldrh r1, [r5, #2]
- mov r2, r6
- bl SND_StartExChannelPsg
- b _037FF214
-_037FF200:
- mov r0, r9
- mov r1, r6
- bl SND_StartExChannelNoise
- b _037FF214
-_037FF210:
- mov r0, #0
-_037FF214:
- cmp r0, #0
- moveq r0, #0
- beq _037FF270
- strb r8, [r9, #8]
- ldrb r0, [r5, #6]
- strb r0, [r9, #5]
- strb r7, [r9, #9]
- mov r0, r9
- ldrb r1, [r5, #7]
- bl SND_SetExChannelAttack
- mov r0, r9
- ldrb r1, [r5, #8]
- bl SND_SetExChannelDecay
- mov r0, r9
- ldrb r1, [r5, #9]
- bl SND_SetExChannelSustain
- mov r0, r9
- mov r1, r4
- bl SND_SetExChannelRelease
- ldrb r0, [r5, #11]
- sub r0, r0, #64 ; 0x40
- strb r0, [r9, #10]
- mov r0, #1
-_037FF270:
- add sp, sp, #4
- ldmia sp!, {r4, r5, r6, r7, r8, r9, lr}
- bx lr
-
- arm_func_start SND_GetWaveDataAddress
-SND_GetWaveDataAddress: ; 0x037FF27C
- stmdb sp!, {r4, r5, lr}
- sub sp, sp, #4
- mov r5, r0
- mov r4, r1
- bl SNDi_LockMutex
- add r0, r5, r4, lsl #2
- ldr r4, [r0, #60] ; 0x3c
- cmp r4, #0
- beq _037FF2AC
- cmp r4, #33554432 ; 0x2000000
- addcc r4, r5, r4
- b _037FF2B0
-_037FF2AC:
- mov r4, #0
-_037FF2B0:
- bl SNDi_UnlockMutex
- mov r0, r4
- add sp, sp, #4
- ldmia sp!, {r4, r5, lr}
- bx lr
-
- arm_func_start SND_ReadInstData
-SND_ReadInstData: ; 0x037FF2C4
- stmdb sp!, {r4, r5, r6, r7, lr}
- sub sp, sp, #4
- mov r6, r0
- movs r7, r1
- mov r5, r2
- mov r4, r3
- movmi r0, #0
- bmi _037FF43C
- bl SNDi_LockMutex
- ldr r0, [r6, #56] ; 0x38
- cmp r7, r0
- bcc _037FF300
- bl SNDi_UnlockMutex
- mov r0, #0
- b _037FF43C
-_037FF300:
- add r0, r6, r7, lsl #2
- ldr r3, [r0, #60] ; 0x3c
- strb r3, [r4]
- ldrb r0, [r4]
- cmp r0, #17
- addls pc, pc, r0, lsl #2
- b _037FF428
- b _037FF428
- b _037FF364
- b _037FF364
- b _037FF364
- b _037FF364
- b _037FF364
- b _037FF428
- b _037FF428
- b _037FF428
- b _037FF428
- b _037FF428
- b _037FF428
- b _037FF428
- b _037FF428
- b _037FF428
- b _037FF428
- b _037FF384
- b _037FF3D4
-_037FF364:
- add r3, r6, r3, lsr #8
- add r2, r4, #2
- mov r1, #5
-_037FF370:
- ldrh r0, [r3], #2
- strh r0, [r2], #2
- subs r1, r1, #1
- bne _037FF370
- b _037FF434
-_037FF384:
- add r2, r6, r3, lsr #8
- ldrb r1, [r2, #1]
- ldrb r0, [r6, r3, lsr #8]
- cmp r5, r0
- blt _037FF3A0
- cmp r5, r1
- ble _037FF3AC
-_037FF3A0:
- bl SNDi_UnlockMutex
- mov r0, #0
- b _037FF43C
-_037FF3AC:
- sub r1, r5, r0
- mov r0, #12
- mla r0, r1, r0, r2
- add r2, r0, #2
- mov r1, #6
-_037FF3C0:
- ldrh r0, [r2], #2
- strh r0, [r4], #2
- subs r1, r1, #1
- bne _037FF3C0
- b _037FF434
-_037FF3D4:
- mov r2, #0
- add r1, r6, r3, lsr #8
- b _037FF3F8
-_037FF3E0:
- add r2, r2, #1
- cmp r2, #8
- blt _037FF3F8
- bl SNDi_UnlockMutex
- mov r0, #0
- b _037FF43C
-_037FF3F8:
- ldrb r0, [r1, r2]
- cmp r5, r0
- bgt _037FF3E0
- mov r0, #12
- mla r0, r2, r0, r1
- add r2, r0, #8
- mov r1, #6
-_037FF414:
- ldrh r0, [r2], #2
- strh r0, [r4], #2
- subs r1, r1, #1
- bne _037FF414
- b _037FF434
-_037FF428:
- bl SNDi_UnlockMutex
- mov r0, #0
- b _037FF43C
-_037FF434:
- bl SNDi_UnlockMutex
- mov r0, #1
-_037FF43C:
- add sp, sp, #4
- ldmia sp!, {r4, r5, r6, r7, lr}
- bx lr
-
- arm_func_start SND_UpdateSharedWork
-SND_UpdateSharedWork: ; 0x037FF448
- stmdb sp!, {r4, r5, r6, r7, lr}
- sub sp, sp, #4
- mov r5, #0
- mov r4, r5
- ldr r0, _037FF4E4 ; =SNDi_SharedWork
- ldr r0, [r0]
- cmp r0, #0
- beq _037FF4D8
- mov r7, r5
- mov r6, #1
-_037FF470:
- mov r0, r7
- bl SND_IsChannelActive
- cmp r0, #0
- orrne r0, r5, r6, lsl r7
- movne r0, r0, lsl #16
- movne r5, r0, lsr #16
- add r7, r7, #1
- cmp r7, #16
- blt _037FF470
- mov r0, #0
- bl SND_IsCaptureActive
- cmp r0, #0
- orrne r0, r4, #1
- movne r0, r0, lsl #16
- movne r4, r0, lsr #16
- mov r0, #1
- bl SND_IsCaptureActive
- cmp r0, #0
- orrne r0, r4, #2
- movne r0, r0, lsl #16
- movne r4, r0, lsr #16
- ldr r0, _037FF4E4 ; =SNDi_SharedWork
- ldr r1, [r0]
- strh r5, [r1, #8]
- ldr r0, [r0]
- strh r4, [r0, #10]
-_037FF4D8:
- add sp, sp, #4
- ldmia sp!, {r4, r5, r6, r7, lr}
- bx lr
-_037FF4E4: .word SNDi_SharedWork
-
- arm_func_start SND_SetPlayerGlobalVariable
-SND_SetPlayerGlobalVariable: ; 0x037FF4E8
- ldr r2, _037FF500 ; =SNDi_SharedWork
- ldr r2, [r2]
- add r0, r2, r0, lsl #1
- add r0, r0, #512 ; 0x200
- strh r1, [r0, #96] ; 0x60
- bx lr
-_037FF500: .word SNDi_SharedWork
-
- arm_func_start SND_SetPlayerLocalVariable
-SND_SetPlayerLocalVariable: ; 0x037FF504
- ldr r3, _037FF520 ; =SNDi_SharedWork
- ldr ip, [r3]
- mov r3, #36 ; 0x24
- mla r3, r0, r3, ip
- add r0, r3, r1, lsl #1
- strh r2, [r0, #32]
- bx lr
-_037FF520: .word SNDi_SharedWork
-
- arm_func_start FUN_037FF524
-FUN_037FF524: ; 0x037FF524
- stmdb sp!, {r4, r5, r6, lr}
- mov r6, r0
- mov r5, #7
- mov r4, #0
-_037FF534:
- mov r0, r5
- mov r1, r6
- mov r2, r4
- bl PXI_SendWordByFifo
- cmp r0, #0
- blt _037FF534
- ldmia sp!, {r4, r5, r6, lr}
- bx lr
-
- arm_func_start SND_StopAlarm
-SND_StopAlarm: ; 0x037FF554
- stmdb sp!, {r4, lr}
- ldr r1, _037FF590 ; =_03808EEC
- add r4, r1, r0, lsl #6
- ldrb r0, [r1, r0, lsl #6]
- cmp r0, #0
- beq _037FF588
- add r0, r4, #20
- bl OS_CancelAlarm
- ldrb r0, [r4, #1]
- add r0, r0, #1
- strb r0, [r4, #1]
- mov r0, #0
- strb r0, [r4]
-_037FF588:
- ldmia sp!, {r4, lr}
- bx lr
-_037FF590: .word _03808EEC
-
- arm_func_start SND_StartAlarm
-SND_StartAlarm: ; 0x037FF594
- stmdb sp!, {r4, r5, r6, r7, r8, r9, lr}
- sub sp, sp, #12
- mov r4, r0
- ldr r0, _037FF654 ; =_03808EEC
- add r5, r0, r4, lsl #6
- ldrb r0, [r0, r4, lsl #6]
- cmp r0, #0
- beq _037FF5C4
- add r0, r5, #20
- bl OS_CancelAlarm
- mov r0, #0
- strb r0, [r5]
-_037FF5C4:
- ldr r9, [r5, #4]
- ldr r8, [r5, #8]
- ldr r7, [r5, #12]
- ldr r6, [r5, #16]
- ldrb r0, [r5, #1]
- orr r4, r4, r0, lsl #8
- add r0, r5, #20
- bl OS_CreateAlarm
- mov r0, #0
- cmp r6, r0
- cmpeq r7, r0
- bne _037FF610
- str r4, [sp]
- add r0, r5, #20
- mov r1, r9
- mov r2, r8
- ldr r3, _037FF658 ; =FUN_037FF524
- bl OS_SetAlarm
- b _037FF640
-_037FF610:
- bl OS_GetTick
- mov r2, r0
- ldr r0, _037FF658 ; =FUN_037FF524
- str r0, [sp, #4]
- str r4, [sp, #8]
- mov r3, r7
- str r6, [sp]
- add r0, r5, #20
- adds r4, r9, r2
- adc r2, r8, r1
- mov r1, r4
- bl OS_SetPeriodicAlarm
-_037FF640:
- mov r0, #1
- strb r0, [r5]
- add sp, sp, #12
- ldmia sp!, {r4, r5, r6, r7, r8, r9, lr}
- bx lr
-_037FF654: .word _03808EEC
-_037FF658: .word FUN_037FF524
-
- arm_func_start SND_SetupAlarm
-SND_SetupAlarm: ; 0x037FF65C
- stmdb sp!, {r4, r5, r6, r7, r8, lr}
- mov r8, r1
- mov r7, r2
- mov r6, r3
- ldr r5, [sp, #24]
- ldr r1, _037FF6B4 ; =_03808EEC
- add r4, r1, r0, lsl #6
- ldrb r0, [r1, r0, lsl #6]
- cmp r0, #0
- beq _037FF694
- add r0, r4, #20
- bl OS_CancelAlarm
- mov r0, #0
- strb r0, [r4]
-_037FF694:
- str r8, [r4, #4]
- str r7, [r4, #8]
- str r6, [r4, #12]
- str r5, [r4, #16]
- ldr r0, [sp, #28]
- strb r0, [r4, #1]
- ldmia sp!, {r4, r5, r6, r7, r8, lr}
- bx lr
-_037FF6B4: .word _03808EEC
-
- arm_func_start SND_AlarmInit
-SND_AlarmInit: ; 0x037FF6B8
- mov r3, #0
- mov r2, r3
- ldr r1, _037FF6E0 ; =SNDi_Work
-_037FF6C4:
- add r0, r1, r3, lsl #6
- strb r2, [r0, #3968] ; 0xf80
- strb r2, [r0, #3969] ; 0xf81
- add r3, r3, #1
- cmp r3, #8
- blt _037FF6C4
- bx lr
-_037FF6E0: .word SNDi_Work
-
- arm_func_start FUN_037FF6E4
-FUN_037FF6E4: ; 0x037FF6E4
- stmdb sp!, {r4, r5, lr}
- sub sp, sp, #4
- mov r5, r0
- ldr r0, _037FF74C ; =SNDi_Work
- mov r1, r5
- mov r2, #4480 ; 0x1180
- bl MIi_CpuCopy32
- ldr r1, _037FF74C ; =SNDi_Work
- add r0, r5, #4096 ; 0x1000
- str r1, [r0, #448] ; 0x1c0
- mov r4, #0
-_037FF710:
- mov r0, r4
- bl SND_GetChannelControl
- add r1, r5, r4, lsl #2
- add r1, r1, #4096 ; 0x1000
- str r0, [r1, #384] ; 0x180
- add r4, r4, #1
- cmp r4, #16
- blt _037FF710
- mov r0, #0
- bl SND_GetLockedChannel
- add r1, r5, #4096 ; 0x1000
- str r0, [r1, #452] ; 0x1c4
- add sp, sp, #4
- ldmia sp!, {r4, r5, lr}
- bx lr
-_037FF74C: .word SNDi_Work
-
- arm_func_start FUN_037FF750
-FUN_037FF750: ; 0x037FF750
- stmdb sp!, {r4, r5, r6, r7, r8, r9, lr}
- sub sp, sp, #4
- mov r7, r0
- mov r6, r1
- mov r9, r2
- mov r5, r3
- bl OS_DisableInterrupts
- mov r4, r0
- mov r8, #0
- b _037FF790
-_037FF778:
- ands r0, r9, #1
- beq _037FF788
- mov r0, r8
- bl SND_StopAlarm
-_037FF788:
- add r8, r8, #1
- mov r9, r9, lsr #1
-_037FF790:
- cmp r8, #8
- bge _037FF7A0
- cmp r9, #0
- bne _037FF778
-_037FF7A0:
- mov r8, #0
- b _037FF7C4
-_037FF7A8:
- ands r0, r7, #1
- beq _037FF7BC
- mov r0, r8
- mov r1, r5
- bl SND_StopChannel
-_037FF7BC:
- add r8, r8, #1
- mov r7, r7, lsr #1
-_037FF7C4:
- cmp r8, #16
- bge _037FF7D4
- cmp r7, #0
- bne _037FF7A8
-_037FF7D4:
- ands r0, r6, #1
- movne r1, #0
- ldrne r0, _037FF80C ; =0x04000508
- strneb r1, [r0]
- ands r0, r6, #2
- movne r1, #0
- ldrne r0, _037FF810 ; =0x04000509
- strneb r1, [r0]
- mov r0, r4
- bl OS_RestoreInterrupts
- bl SND_UpdateSharedWork
- add sp, sp, #4
- ldmia sp!, {r4, r5, r6, r7, r8, r9, lr}
- bx lr
-_037FF80C: .word 0x04000508
-_037FF810: .word 0x04000509
-
- arm_func_start FUN_037FF814
-FUN_037FF814: ; 0x037FF814
- stmdb sp!, {r4, r5, r6, r7, lr}
- sub sp, sp, #4
- mov r7, r0
- mov r6, r1
- mov r5, r2
- bl OS_DisableInterrupts
- mov r4, r0
- mov r2, #0
- b _037FF858
-_037FF838:
- ands r0, r7, #1
- movne r0, r2, lsl #4
- addne r0, r0, #67108864 ; 0x4000000
- ldrneb r1, [r0, #1027] ; 0x403
- orrne r1, r1, #128 ; 0x80
- strneb r1, [r0, #1027] ; 0x403
- add r2, r2, #1
- mov r7, r7, lsr #1
-_037FF858:
- cmp r2, #16
- bge _037FF868
- cmp r7, #0
- bne _037FF838
-_037FF868:
- ands r0, r6, #1
- beq _037FF8A0
- ands r0, r6, #2
- ldreq r1, _037FF8FC ; =0x04000508
- ldreqb r0, [r1]
- orreq r0, r0, #128 ; 0x80
- streqb r0, [r1]
- beq _037FF8B4
- ldr r2, _037FF8FC ; =0x04000508
- ldrh r1, [r2]
- ldr r0, _037FF900 ; =0x00008080
- orr r0, r1, r0
- strh r0, [r2]
- b _037FF8B4
-_037FF8A0:
- ands r0, r6, #2
- ldrne r1, _037FF904 ; =0x04000509
- ldrneb r0, [r1]
- orrne r0, r0, #128 ; 0x80
- strneb r0, [r1]
-_037FF8B4:
- mov r6, #0
- b _037FF8D4
-_037FF8BC:
- ands r0, r5, #1
- beq _037FF8CC
- mov r0, r6
- bl SND_StartAlarm
-_037FF8CC:
- add r6, r6, #1
- mov r5, r5, lsr #1
-_037FF8D4:
- cmp r6, #8
- bge _037FF8E4
- cmp r5, #0
- bne _037FF8BC
-_037FF8E4:
- mov r0, r4
- bl OS_RestoreInterrupts
- bl SND_UpdateSharedWork
- add sp, sp, #4
- ldmia sp!, {r4, r5, r6, r7, lr}
- bx lr
-_037FF8FC: .word 0x04000508
-_037FF900: .word 0x00008080
-_037FF904: .word 0x04000509
-
- arm_func_start FUN_037FF908
-FUN_037FF908: ; 0x037FF908
- stmdb sp!, {r4, r5, r6, lr}
- mov r6, r0
- mov r5, r1
- mov r4, #0
- b _037FF938
-_037FF91C:
- ands r0, r6, #1
- beq _037FF930
- mov r0, r4
- mov r1, r5
- bl SND_SetChannelPan
-_037FF930:
- add r4, r4, #1
- mov r6, r6, lsr #1
-_037FF938:
- cmp r4, #16
- bge _037FF948
- cmp r6, #0
- bne _037FF91C
-_037FF948:
- ldmia sp!, {r4, r5, r6, lr}
- bx lr
-
- arm_func_start FUN_037FF950
-FUN_037FF950: ; 0x037FF950
- stmdb sp!, {r4, r5, r6, r7, lr}
- sub sp, sp, #4
- mov r7, r0
- mov r6, r1
- mov r5, r2
- mov r4, #0
- b _037FF98C
-_037FF96C:
- ands r0, r7, #1
- beq _037FF984
- mov r0, r4
- mov r1, r6
- mov r2, r5
- bl SND_SetChannelVolume
-_037FF984:
- add r4, r4, #1
- mov r7, r7, lsr #1
-_037FF98C:
- cmp r4, #16
- bge _037FF99C
- cmp r7, #0
- bne _037FF96C
-_037FF99C:
- add sp, sp, #4
- ldmia sp!, {r4, r5, r6, r7, lr}
- bx lr
-
- arm_func_start FUN_037FF9A8
-FUN_037FF9A8: ; 0x037FF9A8
- stmdb sp!, {r4, r5, r6, lr}
- mov r6, r0
- mov r5, r1
- mov r4, #0
- b _037FF9D8
-_037FF9BC:
- ands r0, r6, #1
- beq _037FF9D0
- mov r0, r4
- mov r1, r5
- bl SND_SetChannelTimer
-_037FF9D0:
- add r4, r4, #1
- mov r6, r6, lsr #1
-_037FF9D8:
- cmp r4, #16
- bge _037FF9E8
- cmp r6, #0
- bne _037FF9BC
-_037FF9E8:
- ldmia sp!, {r4, r5, r6, lr}
- bx lr
-
- arm_func_start FUN_037FF9F0
-FUN_037FF9F0: ; 0x037FF9F0
- mov r0, #7
- ldr r1, _037FFA00 ; =FUN_037FFA08
- ldr ip, _037FFA04 ; =PXI_SetFifoRecvCallback
- bx ip
-_037FFA00: .word FUN_037FFA08
-_037FFA04: .word PXI_SetFifoRecvCallback
-
- arm_func_start FUN_037FFA08
-FUN_037FFA08: ; 0x037FFA08
- stmdb sp!, {r4, r5, lr}
- sub sp, sp, #4
- mov r5, r1
- bl OS_DisableInterrupts
- mov r4, r0
- cmp r5, #33554432 ; 0x2000000
- bcc _037FFA38
- ldr r0, _037FFA58 ; =_038090EC
- mov r1, r5
- mov r2, #0
- bl OS_SendMessage
- b _037FFA44
-_037FFA38:
- cmp r5, #0
- bne _037FFA44
- bl SND_SendWakeupMessage
-_037FFA44:
- mov r0, r4
- bl OS_RestoreInterrupts
- add sp, sp, #4
- ldmia sp!, {r4, r5, lr}
- bx lr
-_037FFA58: .word _038090EC
-
- arm_func_start SND_CommandProc
-SND_CommandProc: ; 0x037FFA5C
- stmdb sp!, {r4, r5, r6, r7, r8, r9, lr}
- sub sp, sp, #52 ; 0x34
- ldr r7, _037FFEC4 ; =SNDi_SharedWork
- ldr r9, _037FFEC8 ; =_038090EC
- add r8, sp, #24
- mov r4, #0
- ldr r6, _037FFECC ; =0x0000FFFF
- ldr r5, _037FFED0 ; =0x003FFFFF
- b _037FFEA0
-_037FFA80:
- ldr lr, [sp, #24]
- b _037FFE88
-_037FFA88:
- add ip, sp, #28
- ldmia lr!, {r0, r1, r2, r3}
- stmia ip!, {r0, r1, r2, r3}
- ldmia lr, {r0, r1}
- stmia ip, {r0, r1}
- ldr r0, [sp, #32]
- cmp r0, #33 ; 0x21
- addls pc, pc, r0, lsl #2
- b _037FFE84
- b _037FFB34
- b _037FFB4C
- b _037FFB58
- b _037FFB70
- b _037FFB7C
- b _037FFB8C
- b _037FFB9C
- b _037FFBB4
- b _037FFBDC
- b _037FFBF0
- b _037FFC04
- b _037FFC20
- b _037FFC38
- b _037FFC50
- b _037FFD08
- b _037FFD74
- b _037FFDA8
- b _037FFC68
- b _037FFCB0
- b _037FFCD4
- b _037FFCE4
- b _037FFCF8
- b _037FFDD4
- b _037FFDE0
- b _037FFDEC
- b _037FFDF8
- b _037FFE10
- b _037FFE20
- b _037FFE30
- b _037FFE70
- b _037FFE40
- b _037FFE50
- b _037FFE60
- b _037FFE7C
-_037FFB34:
- ldr r0, [sp, #36] ; 0x24
- ldr r1, [sp, #40] ; 0x28
- ldr r2, [sp, #44] ; 0x2c
- ldr r3, [sp, #48] ; 0x30
- bl SND_StartSeq
- b _037FFE84
-_037FFB4C:
- ldr r0, [sp, #36] ; 0x24
- bl SND_StopSeq
- b _037FFE84
-_037FFB58:
- ldr r0, [sp, #36] ; 0x24
- ldr r1, [sp, #40] ; 0x28
- ldr r2, [sp, #44] ; 0x2c
- ldr r3, [sp, #48] ; 0x30
- bl SND_PrepareSeq
- b _037FFE84
-_037FFB70:
- ldr r0, [sp, #36] ; 0x24
- bl SND_StartPreparedSeq
- b _037FFE84
-_037FFB7C:
- ldr r0, [sp, #36] ; 0x24
- ldr r1, [sp, #40] ; 0x28
- bl SND_PauseSeq
- b _037FFE84
-_037FFB8C:
- ldr r0, [sp, #36] ; 0x24
- ldr r1, [sp, #40] ; 0x28
- bl SND_SkipSeq
- b _037FFE84
-_037FFB9C:
- ldr r0, [sp, #36] ; 0x24
- ldr r1, [sp, #40] ; 0x28
- ldr r2, [sp, #44] ; 0x2c
- ldr r3, [sp, #48] ; 0x30
- bl SNDi_SetPlayerParam
- b _037FFE84
-_037FFBB4:
- ldr r1, [sp, #36] ; 0x24
- mov r0, r1, lsr #24
- and r0, r0, #255 ; 0xff
- str r0, [sp]
- bic r0, r1, #-16777216 ; 0xff000000
- ldr r1, [sp, #40] ; 0x28
- ldr r2, [sp, #44] ; 0x2c
- ldr r3, [sp, #48] ; 0x30
- bl SNDi_SetTrackParam
- b _037FFE84
-_037FFBDC:
- ldr r0, [sp, #36] ; 0x24
- ldr r1, [sp, #40] ; 0x28
- ldr r2, [sp, #44] ; 0x2c
- bl SND_SetTrackMute
- b _037FFE84
-_037FFBF0:
- ldr r0, [sp, #36] ; 0x24
- ldr r1, [sp, #40] ; 0x28
- ldr r2, [sp, #44] ; 0x2c
- bl SND_SetTrackAllocatableChannel
- b _037FFE84
-_037FFC04:
- ldr r0, [sp, #36] ; 0x24
- ldr r1, [sp, #40] ; 0x28
- ldr r2, [sp, #44] ; 0x2c
- mov r2, r2, lsl #16
- mov r2, r2, asr #16
- bl SND_SetPlayerLocalVariable
- b _037FFE84
-_037FFC20:
- ldr r0, [sp, #36] ; 0x24
- ldr r1, [sp, #40] ; 0x28
- mov r1, r1, lsl #16
- mov r1, r1, asr #16
- bl SND_SetPlayerGlobalVariable
- b _037FFE84
-_037FFC38:
- ldr r0, [sp, #36] ; 0x24
- ldr r1, [sp, #40] ; 0x28
- ldr r2, [sp, #44] ; 0x2c
- ldr r3, [sp, #48] ; 0x30
- bl FUN_037FF814
- b _037FFE84
-_037FFC50:
- ldr r0, [sp, #36] ; 0x24
- ldr r1, [sp, #40] ; 0x28
- ldr r2, [sp, #44] ; 0x2c
- ldr r3, [sp, #48] ; 0x30
- bl FUN_037FF750
- b _037FFE84
-_037FFC68:
- ldr r1, [sp, #44] ; 0x2c
- mov r0, r1, lsr #29
- and r0, r0, #1
- str r0, [sp]
- mov r0, r1, lsr #28
- and r0, r0, #1
- str r0, [sp, #4]
- mov r0, r1, lsr #27
- and r0, r0, #1
- str r0, [sp, #8]
- mov r0, r1, lsr #31
- and r0, r0, #1
- mov r1, r1, lsr #30
- and r1, r1, #1
- ldr r2, [sp, #36] ; 0x24
- ldr r3, [sp, #40] ; 0x28
- bl SND_SetupCapture
- b _037FFE84
-_037FFCB0:
- ldr r0, [sp, #48] ; 0x30
- str r0, [sp, #4]
- ldr r3, [sp, #44] ; 0x2c
- str r4, [sp]
- ldr r0, [sp, #36] ; 0x24
- ldr r1, [sp, #40] ; 0x28
- mov r2, #0
- bl SND_SetupAlarm
- b _037FFE84
-_037FFCD4:
- ldr r0, [sp, #36] ; 0x24
- ldr r1, [sp, #40] ; 0x28
- bl FUN_037FF9A8
- b _037FFE84
-_037FFCE4:
- ldr r0, [sp, #36] ; 0x24
- ldr r1, [sp, #40] ; 0x28
- ldr r2, [sp, #44] ; 0x2c
- bl FUN_037FF950
- b _037FFE84
-_037FFCF8:
- ldr r0, [sp, #36] ; 0x24
- ldr r1, [sp, #40] ; 0x28
- bl FUN_037FF908
- b _037FFE84
-_037FFD08:
- ldr r3, [sp, #48] ; 0x30
- ldr r1, [sp, #36] ; 0x24
- ldr r0, [sp, #44] ; 0x2c
- and r2, r3, r6
- str r2, [sp]
- and r2, r0, r5
- str r2, [sp, #4]
- mov r2, r0, lsr #24
- and r2, r2, #127 ; 0x7f
- str r2, [sp, #8]
- mov r0, r0, lsr #22
- and r0, r0, #3
- str r0, [sp, #12]
- and r0, r6, r1, lsr #16
- str r0, [sp, #16]
- mov r0, r3, lsr #16
- and r0, r0, #127 ; 0x7f
- str r0, [sp, #20]
- and r0, r1, r6
- ldr r1, [sp, #40] ; 0x28
- bic r1, r1, #-134217728 ; 0xf8000000
- mov r2, r3, lsr #24
- and r2, r2, #3
- mov r3, r3, lsr #26
- and r3, r3, #3
- bl SND_SetupChannelPcm
- b _037FFE84
-_037FFD74:
- ldr r1, [sp, #44] ; 0x2c
- ldr r3, [sp, #40] ; 0x28
- and r0, r6, r1, lsr #8
- str r0, [sp]
- and r0, r1, #127 ; 0x7f
- str r0, [sp, #4]
- ldr r0, [sp, #36] ; 0x24
- ldr r1, [sp, #48] ; 0x30
- and r2, r3, #127 ; 0x7f
- mov r3, r3, lsr #8
- and r3, r3, #3
- bl SND_SetupChannelPsg
- b _037FFE84
-_037FFDA8:
- ldr r3, [sp, #44] ; 0x2c
- ldr r2, [sp, #40] ; 0x28
- and r0, r3, #127 ; 0x7f
- str r0, [sp]
- ldr r0, [sp, #36] ; 0x24
- and r1, r2, #127 ; 0x7f
- mov r2, r2, lsr #8
- and r2, r2, #3
- and r3, r6, r3, lsr #8
- bl SND_SetupChannelNoise
- b _037FFE84
-_037FFDD4:
- ldr r0, [sp, #36] ; 0x24
- bl SNDi_SetSurroundDecay
- b _037FFE84
-_037FFDE0:
- ldr r0, [sp, #36] ; 0x24
- bl SND_SetMasterVolume
- b _037FFE84
-_037FFDEC:
- ldr r0, [sp, #36] ; 0x24
- bl SND_SetMasterPan
- b _037FFE84
-_037FFDF8:
- ldr r0, [sp, #36] ; 0x24
- ldr r1, [sp, #40] ; 0x28
- ldr r2, [sp, #44] ; 0x2c
- ldr r3, [sp, #48] ; 0x30
- bl SND_SetOutputSelector
- b _037FFE84
-_037FFE10:
- ldr r0, [sp, #36] ; 0x24
- ldr r1, [sp, #40] ; 0x28
- bl SND_LockChannel
- b _037FFE84
-_037FFE20:
- ldr r0, [sp, #36] ; 0x24
- ldr r1, [sp, #40] ; 0x28
- bl SND_UnlockChannel
- b _037FFE84
-_037FFE30:
- ldr r0, [sp, #36] ; 0x24
- ldr r1, [sp, #40] ; 0x28
- bl SND_StopUnlockedChannel
- b _037FFE84
-_037FFE40:
- ldr r0, [sp, #36] ; 0x24
- ldr r1, [sp, #40] ; 0x28
- bl SND_InvalidateSeq
- b _037FFE84
-_037FFE50:
- ldr r0, [sp, #36] ; 0x24
- ldr r1, [sp, #40] ; 0x28
- bl SND_InvalidateBank
- b _037FFE84
-_037FFE60:
- ldr r0, [sp, #36] ; 0x24
- ldr r1, [sp, #40] ; 0x28
- bl SND_InvalidateWave
- b _037FFE84
-_037FFE70:
- ldr r0, [sp, #36] ; 0x24
- str r0, [r7]
- b _037FFE84
-_037FFE7C:
- ldr r0, [sp, #36] ; 0x24
- bl FUN_037FF6E4
-_037FFE84:
- ldr lr, [sp, #28]
-_037FFE88:
- cmp lr, #0
- bne _037FFA88
- ldr r1, [r7]
- ldr r0, [r1]
- add r0, r0, #1
- str r0, [r1]
-_037FFEA0:
- mov r0, r9
- mov r1, r8
- mov r2, r4
- bl OS_ReceiveMessage
- cmp r0, #0
- bne _037FFA80
- add sp, sp, #52 ; 0x34
- ldmia sp!, {r4, r5, r6, r7, r8, r9, lr}
- bx lr
-_037FFEC4: .word SNDi_SharedWork
-_037FFEC8: .word _038090EC
-_037FFECC: .word 0x0000FFFF
-_037FFED0: .word 0x003FFFFF
-
- arm_func_start SND_CommandInit
-SND_CommandInit: ; 0x037FFED4
- stmfd sp!, {lr}
- sub sp, sp, #4
- ldr r0, _037FFF08 ; =_038090EC
- ldr r1, _037FFF0C ; =_0380910C
- mov r2, #8
- bl OS_InitMessageQueue
- bl FUN_037FF9F0
- mov r1, #0
- ldr r0, _037FFF10 ; =SNDi_SharedWork
- str r1, [r0]
- add sp, sp, #4
- ldmia sp!, {lr}
- bx lr
-_037FFF08: .word _038090EC
-_037FFF0C: .word _0380910C
-_037FFF10: .word SNDi_SharedWork
-
arm_func_start FS_Init
FS_Init: ; 0x037FFF14
ldr ip, _037FFF1C ; =CARD_Init
diff --git a/arm7/asm/dtcm_bss.s b/arm7/asm/dtcm_bss.s
index 6ef48112..e485943f 100644
--- a/arm7/asm/dtcm_bss.s
+++ b/arm7/asm/dtcm_bss.s
@@ -1,233 +1,6 @@
.include "asm/macros.inc"
.include "global.inc"
.section .bss
- .global OSi_IrqThreadQueue
-OSi_IrqThreadQueue: ;0x0380770C
- .space 0x03807714 - 0x0380770C
-
- .global OSi_IrqCallbackInfo
-OSi_IrqCallbackInfo: ;0x03807714
- .space 0x03807718 - 0x03807714
-
- .global _03807718
-_03807718: ;0x03807718
- .space 0x0380771C - 0x03807718
-
- .global _0380771C
-_0380771C: ;0x0380771C
- .space 0x03807744 - 0x0380771C
-
- .global _03807744
-_03807744: ;0x03807744
- .space 0x03807748 - 0x03807744
-
- .global _03807748
-_03807748: ;0x03807748
- .space 0x0380774C - 0x03807748
-
- .global _0380774C
-_0380774C: ;0x0380774C
- .space 0x03807774 - 0x0380774C
-
- .global _03807774
-_03807774: ;0x03807774
- .space 0x03807780 - 0x03807774
-
- .global _03807780
-_03807780: ;0x03807780
- .space 0x03807784 - 0x03807780
-
- .global OSi_StackForDestructor
-OSi_StackForDestructor: ;0x03807784
- .space 0x03807788 - 0x03807784
-
- .global OSi_RescheduleCount
-OSi_RescheduleCount: ;0x03807788
- .space 0x0380778C - 0x03807788
-
- .global _0380778C
-_0380778C: ;0x0380778C
- .space 0x03807790 - 0x0380778C
-
- .global OSi_SystemCallbackInSwitchThread
-OSi_SystemCallbackInSwitchThread: ;0x03807790
- .space 0x03807794 - 0x03807790
-
- .global OSi_CurrentThreadPtr
-OSi_CurrentThreadPtr: ;0x03807794
- .space 0x03807798 - 0x03807794
-
- .global OSi_IsThreadInitialized
-OSi_IsThreadInitialized: ;0x03807798
- .space 0x0380779C - 0x03807798
-
- .global OSi_ThreadInfo
-OSi_ThreadInfo: ;0x0380779C
- .space 0x038077A0 - 0x0380779C
-
- .global _038077A0
-_038077A0: ;0x038077A0
- .space 0x038077AC - 0x038077A0
-
- .global OSi_IdleThread
-OSi_IdleThread: ;0x038077AC
- .space 0x03807850 - 0x038077AC
-
- .global OSi_LauncherThread
-OSi_LauncherThread: ;0x03807850
- .space 0x038078F4 - 0x03807850
-
- .global _038078F4
-_038078F4: ;0x038078F4
- .space 0x038078F8 - 0x038078F4
-
- .global OSiHeapInfo
-OSiHeapInfo: ;0x038078F8
- .space 0x0380791C - 0x038078F8
-
- .global _0380791C
-_0380791C: ;0x0380791C
- .space 0x03807920 - 0x0380791C
-
- .global _03807920
-_03807920: ;0x03807920
- .space 0x03807924 - 0x03807920
-
- .global OSi_NeedResetTimer
-OSi_NeedResetTimer: ;0x03807924
- .space 0x03807928 - 0x03807924
-
- .global OSi_TickCounter
-OSi_TickCounter: ;0x03807928
- .space 0x03807930 - 0x03807928
-
- .global _03807930
-_03807930: ;0x03807930
- .space 0x03807934 - 0x03807930
-
- .global _03807934
-_03807934: ;0x03807934
- .space 0x0380793C - 0x03807934
-
- .global _0380793C
-_0380793C: ;0x0380793C
- .space 0x03807940 - 0x0380793C
-
- .global _03807940
-_03807940: ;0x03807940
- .space 0x03807944 - 0x03807940
-
- .global _03807944
-_03807944: ;0x03807944
- .space 0x03807948 - 0x03807944
-
- .global _03807948
-_03807948: ;0x03807948
- .space 0x03807950 - 0x03807948
-
- .global _03807950
-_03807950: ;0x03807950
- .space 0x03807954 - 0x03807950
-
- .global _03807954
-_03807954: ;0x03807954
- .space 0x03807958 - 0x03807954
-
- .global _03807958
-_03807958: ;0x03807958
- .space 0x0380795C - 0x03807958
-
- .global _0380795C
-_0380795C: ;0x0380795C
- .space 0x038079DC - 0x0380795C
-
- .global PADi_XYButtonAvailable
-PADi_XYButtonAvailable: ;0x038079DC
- .space 0x038079E0 - 0x038079DC
-
- .global _038079E0
-_038079E0: ;0x038079E0
- .space 0x03807A0C - 0x038079E0
-
- .global sSurroundDecay
-sSurroundDecay: ;0x03807A0C
- .space 0x03807A10 - 0x03807A0C
-
- .global sOrgPan
-sOrgPan: ;0x03807A10
- .space 0x03807A20 - 0x03807A10
-
- .global sOrgVolume
-sOrgVolume: ;0x03807A20
- .space 0x03807A30 - 0x03807A20
-
- .global _03807A30
-_03807A30: ;0x03807A30
- .space 0x03807A34 - 0x03807A30
-
- .global _03807A34
-_03807A34: ;0x03807A34
- .space 0x03807A54 - 0x03807A34
-
- .global _03807A54
-_03807A54: ;0x03807A54
- .space 0x03807A74 - 0x03807A54
-
- .global _03807A74
-_03807A74: ;0x03807A74
- .space 0x03807AA0 - 0x03807A74
-
- .global _03807AA0
-_03807AA0: ;0x03807AA0
- .space 0x03807F44 - 0x03807AA0
-
- .global _03807F44
-_03807F44: ;0x03807F44
- .space 0x03807F48 - 0x03807F44
-
- .global _03807F48
-_03807F48: ;0x03807F48
- .space 0x03807F4C - 0x03807F48
-
- .global _03807F4C
-_03807F4C: ;0x03807F4C
- .space 0x03807F50 - 0x03807F4C
-
- .global _03807F50
-_03807F50: ;0x03807F50
- .space 0x03807F58 - 0x03807F50
-
- .global _03807F58
-_03807F58: ;0x03807F58
- .space 0x03807F68 - 0x03807F58
-
- .global SNDi_SharedWork
-SNDi_SharedWork: ;0x03807F68
- .space 0x03807F6C - 0x03807F68
-
- .global SNDi_Work
-SNDi_Work: ;0x03807F6C
- .space 0x038084AC - 0x03807F6C
-
- .global _038084AC
-_038084AC: ;0x038084AC
- .space 0x038086EC - 0x038084AC
-
- .global _038086EC
-_038086EC: ;0x038086EC
- .space 0x03808EEC - 0x038086EC
-
- .global _03808EEC
-_03808EEC: ;0x03808EEC
- .space 0x038090EC - 0x03808EEC
-
- .global _038090EC
-_038090EC: ;0x038090EC
- .space 0x0380910C - 0x038090EC
-
- .global _0380910C
-_0380910C: ;0x0380910C
- .space 0x0380912C - 0x0380910C
.global _0380912C
_0380912C: ;0x0380912C
diff --git a/arm7/global.inc b/arm7/global.inc
index 1fafbbb6..c3bad2c7 100644
--- a/arm7/global.inc
+++ b/arm7/global.inc
@@ -101,14 +101,111 @@
.extern MI_CpuFill8
.extern MI_SwapWord
.extern PXI_Init
+.extern PXI_InitFifo
+.extern PXI_IsCallbackReady
.extern PXI_SendWordByFifo
.extern PXI_SetFifoRecvCallback
.extern EXIi_SelectRcnt
.extern EXIi_SetBitRcnt0L
+.extern FUN_037FB92C
+.extern SNDi_LockMutex
+.extern SNDi_SetPlayerParam
+.extern SNDi_SetSurroundDecay
+.extern SNDi_SetTrackParam
+.extern SNDi_UnlockMutex
+.extern SND_AlarmInit
+.extern SND_AllocExChannel
.extern SND_BeginSleep
+.extern SND_CalcChannelVolume
+.extern SND_CalcRandom
+.extern SND_CalcTimer
+.extern SND_CommandInit
+.extern SND_CommandProc
+.extern SND_Enable
.extern SND_EndSleep
+.extern SND_ExChannelInit
+.extern SND_ExChannelMain
+.extern SND_FreeExChannel
+.extern SND_GetChannelControl
+.extern SND_GetLfoValue
+.extern SND_GetLockedChannel
.extern SND_Init
+.extern SND_InitLfoParam
+.extern SND_InvalidateBank
+.extern SND_InvalidateSeq
+.extern SND_InvalidateWave
+.extern SND_IsCaptureActive
+.extern SND_IsChannelActive
+.extern SND_IsExChannelActive
+.extern SND_LockChannel
+.extern SND_NoteOn
+.extern SND_PauseSeq
+.extern SND_PrepareSeq
+.extern SND_ReadInstData
+.extern SND_ReleaseExChannel
+.extern SND_SendWakeupMessage
+.extern SND_SetChannelPan
+.extern SND_SetChannelTimer
+.extern SND_SetChannelVolume
+.extern SND_SetExChannelAttack
+.extern SND_SetExChannelDecay
+.extern SND_SetExChannelRelease
+.extern SND_SetExChannelSustain
+.extern SND_SetMasterPan
+.extern SND_SetMasterVolume
+.extern SND_SetOutputSelector
+.extern SND_SetPlayerGlobalVariable
+.extern SND_SetPlayerLocalVariable
+.extern SND_SetTrackAllocatableChannel
+.extern SND_SetTrackMute
+.extern SND_SetupAlarm
+.extern SND_SetupCapture
+.extern SND_SetupChannelNoise
+.extern SND_SetupChannelPcm
+.extern SND_SetupChannelPsg
+.extern SND_SeqInit
+.extern SND_SeqMain
.extern SND_Shutdown
+.extern SND_SinIdx
+.extern SND_SkipSeq
+.extern SND_StartAlarm
+.extern SND_StartExChannelNoise
+.extern SND_StartExChannelPcm
+.extern SND_StartExChannelPsg
+.extern SND_StartIntervalTimer
+.extern SND_StartLfo
+.extern SND_StartPreparedSeq
+.extern SND_StartSeq
+.extern SND_StopAlarm
+.extern SND_StopChannel
+.extern SND_StopIntervalTimer
+.extern SND_StopSeq
+.extern SND_StopUnlockedChannel
+.extern SND_UnlockChannel
+.extern SND_UpdateExChannel
+.extern SND_UpdateLfo
+.extern SND_UpdateSharedWork
+.extern FUN_037FC530
+.extern FUN_037FC5CC
+.extern FUN_037FC63C
+.extern FUN_037FC69C
+.extern FUN_037FC6E8
+.extern FUN_037FC794
+.extern FUN_037FD440
+.extern FUN_037FD4C0
+.extern FUN_037FD548
+.extern FUN_037FE1A0
+.extern FUN_037FE3AC
+.extern FUN_037FE460
+.extern FUN_037FE48C
+.extern FUN_037FE54C
+.extern FUN_037FE588
+.extern FUN_037FE5F8
+.extern FUN_037FE6A8
+.extern FUN_037FE6BC
+.extern FUN_037FE918
+.extern FUN_037FE968
+.extern FUN_037FE9B8
.extern SPI_Init
.extern PMi_ResetControl
.extern PMi_SetControl
diff --git a/arm7/lib/include/OS_arena.h b/arm7/lib/include/OS_arena.h
new file mode 100644
index 00000000..9227e539
--- /dev/null
+++ b/arm7/lib/include/OS_arena.h
@@ -0,0 +1,14 @@
+#ifndef POKEDIAMOND_ARM7_OS_ARENA_H
+#define POKEDIAMOND_ARM7_OS_ARENA_H
+
+#include "nitro/OS_arena_shared.h"
+
+void OS_InitArena(void);
+void* OS_GetArenaHi(OSArenaId id);
+void* OS_GetArenaLo(OSArenaId id);
+void* OS_GetInitArenaHi(OSArenaId id);
+void* OS_GetInitArenaLo(OSArenaId id);
+void OS_SetArenaHi(OSArenaId id, void* newHi);
+void OS_SetArenaLo(OSArenaId id, void* newLo);
+
+#endif //POKEDIAMOND_ARM7_OS_ARENA_H
diff --git a/arm7/lib/include/OS_init.h b/arm7/lib/include/OS_init.h
index 50d5e3c4..9c9b1f93 100644
--- a/arm7/lib/include/OS_init.h
+++ b/arm7/lib/include/OS_init.h
@@ -3,6 +3,7 @@
#include "nitro/types.h"
#include "OS_system.h"
+#include "OS_arena.h"
void OS_Init(void);
diff --git a/arm7/lib/include/consts.h b/arm7/lib/include/consts.h
index aaf8e429..dd297402 100644
--- a/arm7/lib/include/consts.h
+++ b/arm7/lib/include/consts.h
@@ -2,5 +2,6 @@
#define POKEDIAMOND_ARM7_CONSTS_H
#include "nitro/consts_shared.h"
+#include "mmap.h"
#endif //POKEDIAMOND_ARM7_CONSTS_H
diff --git a/arm7/lib/include/mmap.h b/arm7/lib/include/mmap.h
new file mode 100644
index 00000000..24d15ad7
--- /dev/null
+++ b/arm7/lib/include/mmap.h
@@ -0,0 +1,26 @@
+#ifndef POKEDIAMOND_ARM7_MMAP_H
+#define POKEDIAMOND_ARM7_MMAP_H
+
+#include "nitro/mmap_shared.h"
+
+#define HW_WRAM_END 0x03800000
+#define HW_PRV_WRAM 0x03800000
+#define HW_PRV_WRAM_END 0x03810000
+
+#define HW_PRV_WRAM_SIZE (HW_PRV_WRAM_END-HW_PRV_WRAM)
+
+#define HW_SVC_STACK_SIZE 0x40
+#define HW_PRV_WRAM_SYSRV_SIZE 0x40
+
+#define HW_MAIN_MEM_SUB_SIZE (HW_MAIN_MEM_SIZE - HW_MAIN_MEM_MAIN_SIZE - HW_MAIN_MEM_SHARED_SIZE)
+
+#define HW_MAIN_MEM_SUB (HW_MAIN_MEM_MAIN_END + 0x400000)
+#define HW_MAIN_MEM_SUB_END (HW_MAIN_MEM_SUB + HW_MAIN_MEM_SUB_SIZE)
+
+#define HW_PRV_WRAM_IRQ_STACK_END (HW_PRV_WRAM_SVC_STACK)
+#define HW_PRV_WRAM_SVC_STACK (HW_PRV_WRAM_SVC_STACK_END - HW_SVC_STACK_SIZE)
+#define HW_PRV_WRAM_SVC_STACK_END (HW_PRV_WRAM_SYSRV)
+
+#define HW_PRV_WRAM_SYSRV (HW_PRV_WRAM + HW_PRV_WRAM_SIZE - HW_PRV_WRAM_SYSRV_SIZE)
+
+#endif //POKEDIAMOND_ARM7_MMAP_H
diff --git a/arm7/lib/src/OS_arena.c b/arm7/lib/src/OS_arena.c
new file mode 100644
index 00000000..516fc10b
--- /dev/null
+++ b/arm7/lib/src/OS_arena.c
@@ -0,0 +1,110 @@
+#include "function_target.h"
+#include "consts.h"
+#include "OS_arena.h"
+
+static BOOL OSi_Initialized = FALSE;
+
+extern void SDK_SUBPRIV_ARENA_LO(void);
+extern void SDK_WRAM_ARENA_LO(void);
+extern void SDK_IRQ_STACKSIZE(void);
+extern void SDK_SYS_STACKSIZE(void);
+
+ARM_FUNC void OS_InitArena(void)
+{
+ if (OSi_Initialized)
+ {
+ return;
+ }
+ OSi_Initialized = TRUE;
+
+ OS_SetArenaHi(OS_ARENA_MAIN_SUBPRIV, OS_GetInitArenaHi(OS_ARENA_MAIN_SUBPRIV));
+ OS_SetArenaLo(OS_ARENA_MAIN_SUBPRIV, OS_GetInitArenaLo(OS_ARENA_MAIN_SUBPRIV));
+
+ OS_SetArenaHi(OS_ARENA_WRAM_SUB, OS_GetInitArenaHi(OS_ARENA_WRAM_SUB));
+ OS_SetArenaLo(OS_ARENA_WRAM_SUB, OS_GetInitArenaLo(OS_ARENA_WRAM_SUB));
+
+ OS_SetArenaHi(OS_ARENA_WRAM_SUBPRIV, OS_GetInitArenaHi(OS_ARENA_WRAM_SUBPRIV));
+ OS_SetArenaLo(OS_ARENA_WRAM_SUBPRIV, OS_GetInitArenaLo(OS_ARENA_WRAM_SUBPRIV));
+}
+
+ARM_FUNC void* OS_GetArenaHi(OSArenaId id)
+{
+ return OSi_GetArenaInfo().hi[id];
+}
+
+ARM_FUNC void* OS_GetArenaLo(OSArenaId id)
+{
+ return OSi_GetArenaInfo().lo[id];
+}
+
+ARM_FUNC void* OS_GetInitArenaHi(OSArenaId id)
+{
+ switch (id) {
+ case OS_ARENA_MAIN_SUBPRIV:
+ return (void *)HW_MAIN_MEM_SUB_END;
+ case OS_ARENA_WRAM_SUB:
+ return (void *)HW_WRAM_END;
+ case OS_ARENA_WRAM_SUBPRIV:
+ {
+ u32 irqStackLo = (u32)HW_PRV_WRAM_IRQ_STACK_END - (s32)SDK_IRQ_STACKSIZE;
+ u32 sysStackLo = (u32)HW_PRV_WRAM;
+
+ if ((u32)SDK_WRAM_ARENA_LO > (u32)HW_PRV_WRAM)
+ {
+ sysStackLo = (u32)SDK_WRAM_ARENA_LO;
+ }
+
+ if (!(s32)SDK_SYS_STACKSIZE)
+ {
+ return (void *)sysStackLo;
+ }
+ else if ((s32)SDK_SYS_STACKSIZE < 0)
+ {
+ sysStackLo -= (s32)SDK_SYS_STACKSIZE;
+ }
+ else
+ {
+ sysStackLo = irqStackLo - (s32)SDK_SYS_STACKSIZE;
+ }
+
+ return (void *)sysStackLo;
+ }
+ default:
+ return NULL;
+ }
+}
+
+ARM_FUNC void* OS_GetInitArenaLo(OSArenaId id) {
+ switch (id) {
+ case OS_ARENA_MAIN_SUBPRIV:
+ return (void *)((u32)0x027fafcc); //todo SDK_SUBPRIV_ARENA_LO
+ case OS_ARENA_WRAM_SUB:
+ {
+ u32 wramSubLo = ((u32)SDK_WRAM_ARENA_LO);
+ if ((u32)HW_WRAM_END < (u32)wramSubLo)
+ {
+ wramSubLo = (u32)HW_WRAM_END;
+ }
+ return (void *)wramSubLo;
+ }
+ case OS_ARENA_WRAM_SUBPRIV:
+ {
+ u32 privWramLo = HW_PRV_WRAM;
+ if ((u32)SDK_WRAM_ARENA_LO > (u32)privWramLo)
+ {
+ privWramLo = (u32)SDK_WRAM_ARENA_LO;
+ }
+ return (void *)privWramLo;
+ }
+ default:
+ return NULL;
+ }
+}
+
+ARM_FUNC void OS_SetArenaHi(OSArenaId id, void* newHi) {
+ OSi_GetArenaInfo().hi[id] = newHi;
+}
+
+ARM_FUNC void OS_SetArenaLo(OSArenaId id, void* newLo) {
+ OSi_GetArenaInfo().lo[id] = newLo;
+}
diff --git a/arm7/lib/src/OS_init.c b/arm7/lib/src/OS_init.c
index 082b3e70..f4972638 100644
--- a/arm7/lib/src/OS_init.c
+++ b/arm7/lib/src/OS_init.c
@@ -1,7 +1,6 @@
#include "function_target.h"
#include "OS_init.h"
-extern void OS_InitArena(void);
extern void PXI_Init(void);
extern void OS_InitLock(void);
extern void OS_InitIrqTable(void);
diff --git a/arm7/lib/src/OS_system.c b/arm7/lib/src/OS_system.c
index 120eddbf..11417e91 100644
--- a/arm7/lib/src/OS_system.c
+++ b/arm7/lib/src/OS_system.c
@@ -1,8 +1,6 @@
#include "function_target.h"
#include "OS_system.h"
-#pragma optimize_for_size on
-
extern void FUN_037F8CB4(s32 count);
ARM_FUNC asm OSIntrMode OS_EnableInterrupts(void)
diff --git a/arm9/Makefile b/arm9/Makefile
index 0b880bd3..25999e21 100644
--- a/arm9/Makefile
+++ b/arm9/Makefile
@@ -183,7 +183,7 @@ OBJDUMP := $(CROSS)objdump
OBJCOPY := $(CROSS)objcopy
# ./tools/mwccarm/2.0/base/mwasmarm.exe -proc arm5te asm/arm9_thumb.s -o arm9.o
-ASFLAGS = -proc arm5te -i ..
+ASFLAGS = -proc arm5te -i ../include -i ..
CFLAGS = -O4,p -proc arm946e -fp soft -lang c99 -Cpp_exceptions off -i ../include -ir ../include-mw -ir lib/include -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 -i ../include -ir ../include-mw -ir lib/include -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
diff --git a/arm9/asm/OS_thread.s b/arm9/asm/OS_thread.s
deleted file mode 100644
index 05c0f5bc..00000000
--- a/arm9/asm/OS_thread.s
+++ /dev/null
@@ -1,985 +0,0 @@
- .include "asm/macros.inc"
- .include "global.inc"
-
- .section .bss
-
- .global OSi_StackForDestructor
-OSi_StackForDestructor: ; 0x021D3480
- .space 0x4
-
- .global OSi_RescheduleCount
-OSi_RescheduleCount: ; 0x021D3484
- .space 0x4
-
- .global OSi_ThreadIdCount
-OSi_ThreadIdCount: ; 0x021D3488
- .space 0x4
-
- .global OSi_SystemCallbackInSwitchThread
-OSi_SystemCallbackInSwitchThread: ; 0x021D348C
- .space 0x4
-
- .global OSi_CurrentThreadPtr
-OSi_CurrentThreadPtr: ; 0x021D3490
- .space 0x4
-
- .global OSi_IsThreadInitialized
-OSi_IsThreadInitialized: ; 0x021D3494
- .space 0x4
-
- .global OSi_ThreadInfo
-OSi_ThreadInfo: ; 0x021D3498
- .space 0x4
-
- .global UNK_021D349C
-UNK_021D349C: ; 0x021D349C
- .space 0xc
-
- .global OSi_IdleThread
-OSi_IdleThread: ; 0x021D34A8
- .space 0xc0
-
- .global OSi_LauncherThread
-OSi_LauncherThread: ; 0x021D3568
- .space 0xC0
-
- .global OSi_IdleThreadStack
-OSi_IdleThreadStack: ; 0x021D3628
- .space 0xC8
-
- .text
-
- arm_func_start OS_IsThreadAvailable
-OS_IsThreadAvailable: ; 0x020CAED0
- ldr r0, _020CAEDC ; =OSi_IsThreadInitialized
- ldr r0, [r0, #0x0]
- bx lr
- .balign 4
-_020CAEDC: .word OSi_IsThreadInitialized
-
- arm_func_start OS_SetThreadDestructor
-OS_SetThreadDestructor:
- str r1, [r0, #0xb4]
- bx lr
-
- arm_func_start OS_EnableScheduler
-OS_EnableScheduler: ; 0x020CAEE8
- stmdb sp!, {r4,lr}
- bl OS_DisableInterrupts
- ldr r1, _020CAF1C ; =OSi_RescheduleCount
- mov r4, #0x0
- ldr r3, [r1, #0x0]
- cmp r3, #0x0
- subne r2, r3, #0x1
- movne r4, r3
- strne r2, [r1, #0x0]
- bl OS_RestoreInterrupts
- mov r0, r4
- ldmia sp!, {r4,lr}
- bx lr
- .balign 4
-_020CAF1C: .word OSi_RescheduleCount
-
- arm_func_start OS_DisableScheduler
-OS_DisableScheduler: ; 0x020CAF20
- stmdb sp!, {r4,lr}
- bl OS_DisableInterrupts
- ldr r2, _020CAF54 ; =OSi_RescheduleCount
- mvn r1, #0x0
- ldr r3, [r2, #0x0]
- cmp r3, r1
- addcc r1, r3, #0x1
- movcc r4, r3
- strcc r1, [r2, #0x0]
- bl OS_RestoreInterrupts
- mov r0, r4
- ldmia sp!, {r4,lr}
- bx lr
- .balign 4
-_020CAF54: .word OSi_RescheduleCount
-
- arm_func_start OSi_IdleThreadProc
-OSi_IdleThreadProc: ; 0x020CAF58
- stmdb sp!, {lr}
- sub sp, sp, #0x4
- bl OS_EnableInterrupts
-_020CAF64:
- bl OS_Halt
- b _020CAF64
-
- arm_func_start OS_SetSwitchThreadCallback
-OS_SetSwitchThreadCallback: ; 0x020CAF6C
- stmdb sp!, {r4-r5,lr}
- sub sp, sp, #0x4
- mov r5, r0
- bl OS_DisableInterrupts
- ldr r1, _020CAF9C ; =OSi_ThreadInfo
- ldr r4, [r1, #0xc]
- str r5, [r1, #0xc]
- bl OS_RestoreInterrupts
- mov r0, r4
- add sp, sp, #0x4
- ldmia sp!, {r4-r5,lr}
- bx lr
- .balign 4
-_020CAF9C: .word OSi_ThreadInfo
-
- arm_func_start OSi_SleepAlarmCallback
-OSi_SleepAlarmCallback: ; 0x020CAFA0
- ldr r2, [r0, #0x0]
- mov r1, #0x0
- str r1, [r0, #0x0]
- ldr ip, _020CAFBC ; =OS_WakeupThreadDirect
- mov r0, r2
- str r1, [r2, #0xb0]
- bx r12
- .balign 4
-_020CAFBC: .word OS_WakeupThreadDirect
-
- arm_func_start OS_Sleep
-OS_Sleep: ; 0x020CAFC0
- stmdb sp!, {r4-r5,lr}
- sub sp, sp, #0x34
- mov r4, r0
- add r0, sp, #0x8
- bl OS_CreateAlarm
- ldr r0, _020CB060 ; =OSi_CurrentThreadPtr
- ldr r0, [r0, #0x0]
- ldr r0, [r0, #0x0]
- str r0, [sp, #0x4]
- bl OS_DisableInterrupts
- ldr r1, _020CB064 ; =0x000082EA
- mov r2, #0x0
- umull r5, r3, r4, r1
- mla r3, r4, r2, r3
- mla r3, r2, r1, r3
- mov r1, r5, lsr #0x6
- mov r4, r0
- ldr r5, [sp, #0x4]
- add r0, sp, #0x8
- add r2, sp, #0x4
- str r0, [r5, #0xb0]
- str r2, [sp, #0x0]
- mov r2, r3, lsr #0x6
- orr r1, r1, r3, lsl #0x1a
- ldr r3, _020CB068 ; =OSi_SleepAlarmCallback
- bl OS_SetAlarm
- ldr r0, [sp, #0x4]
- cmp r0, #0x0
- beq _020CB04C
- mov r5, #0x0
-_020CB038:
- mov r0, r5
- bl OS_SleepThread
- ldr r0, [sp, #0x4]
- cmp r0, #0x0
- bne _020CB038
-_020CB04C:
- mov r0, r4
- bl OS_RestoreInterrupts
- add sp, sp, #0x34
- ldmia sp!, {r4-r5,lr}
- bx lr
- .balign 4
-_020CB060: .word OSi_CurrentThreadPtr
-_020CB064: .word 0x000082EA
-_020CB068: .word OSi_SleepAlarmCallback
-
- arm_func_start OS_GetThreadPriority
-OS_GetThreadPriority: ; 0x020CB06C
- ldr r0, [r0, #0x70]
- bx lr
-
- arm_func_start OS_SetThreadPriority
-OS_SetThreadPriority: ; 0x020CB074
- stmdb sp!, {r4-r8,lr}
- ldr r2, _020CB120 ; =OSi_ThreadInfo
- mov r6, r0
- mov r5, r1
- ldr r8, [r2, #0x8]
- mov r7, #0x0
- bl OS_DisableInterrupts
- mov r4, r0
- b _020CB0A0
-_020CB098:
- mov r7, r8
- ldr r8, [r8, #0x68]
-_020CB0A0:
- cmp r8, #0x0
- beq _020CB0B0
- cmp r8, r6
- bne _020CB098
-_020CB0B0:
- cmp r8, #0x0
- beq _020CB0C4
- ldr r0, _020CB124 ; =OSi_IdleThread
- cmp r8, r0
- bne _020CB0D8
-_020CB0C4:
- mov r0, r4
- bl OS_RestoreInterrupts
-_020CB0CC:
- mov r0, #0x0
- ldmia sp!, {r4-r8,lr}
- bx lr
-_020CB0D8:
- ldr r0, [r8, #0x70]
- cmp r0, r5
- beq _020CB10C
- cmp r7, #0x0
- ldreq r1, [r6, #0x68]
- ldreq r0, _020CB120 ; =OSi_ThreadInfo
- streq r1, [r0, #0x8]
- ldrne r0, [r6, #0x68]
- strne r0, [r7, #0x68]
- mov r0, r6
- str r5, [r6, #0x70]
- bl OSi_InsertThreadToList
- bl OSi_RescheduleThread
-_020CB10C:
- mov r0, r4
- bl OS_RestoreInterrupts
- mov r0, #0x1
- ldmia sp!, {r4-r8,lr}
- bx lr
- .balign 4
-_020CB120: .word OSi_ThreadInfo
-_020CB124: .word OSi_IdleThread
-
- arm_func_start OS_YieldThread
-OS_YieldThread: ; 0x020CB128
- stmdb sp!, {r4-r8,lr}
- ldr r0, _020CB1E0 ; =OSi_ThreadInfo
- mov r7, #0x0
- mov r6, r7
- mov r5, r7
- ldr r8, [r0, #0x4]
- bl OS_DisableInterrupts
- ldr r1, _020CB1E0 ; =OSi_ThreadInfo
- mov r4, r0
- ldr r2, [r1, #0x8]
- mov r0, r7
- cmp r2, #0x0
- beq _020CB188
- ldr r1, [r8, #0x70]
-_020CB160:
- cmp r2, r8
- moveq r7, r0
- ldr r0, [r2, #0x70]
- cmp r1, r0
- moveq r6, r2
- mov r0, r2
- ldr r2, [r2, #0x68]
- addeq r5, r5, #0x1
- cmp r2, #0x0
- bne _020CB160
-_020CB188:
- cmp r5, #0x1
- ble _020CB198
- cmp r6, r8
- bne _020CB1A8
-_020CB198:
- mov r0, r4
- bl OS_RestoreInterrupts
- ldmia sp!, {r4-r8,lr}
- bx lr
-_020CB1A8:
- cmp r7, #0x0
- ldreq r1, [r8, #0x68]
- ldreq r0, _020CB1E0 ; =OSi_ThreadInfo
- streq r1, [r0, #0x8]
- ldrne r0, [r8, #0x68]
- strne r0, [r7, #0x68]
- ldr r0, [r6, #0x68]
- str r0, [r8, #0x68]
- str r8, [r6, #0x68]
- bl OSi_RescheduleThread
- mov r0, r4
- bl OS_RestoreInterrupts
- ldmia sp!, {r4-r8,lr}
- bx lr
- .balign 4
-_020CB1E0: .word OSi_ThreadInfo
-
- arm_func_start OS_RescheduleThread
-OS_RescheduleThread: ; 0x020CB1E4
- stmdb sp!, {r4,lr}
- bl OS_DisableInterrupts
- mov r4, r0
- bl OSi_RescheduleThread
- mov r0, r4
- bl OS_RestoreInterrupts
- ldmia sp!, {r4,lr}
- bx lr
-
- arm_func_start OS_SelectThread
-OS_SelectThread: ; 0x020CB204
- ldr r0, _020CB22C ; =OSi_ThreadInfo
- ldr r0, [r0, #0x8]
- b _020CB214
-_020CB210:
- ldr r0, [r0, #0x68]
-_020CB214:
- cmp r0, #0x0
- bxeq lr
- ldr r1, [r0, #0x64]
- cmp r1, #0x1
- bne _020CB210
- bx lr
- .balign 4
-_020CB22C: .word OSi_ThreadInfo
-
- arm_func_start OS_WakeupThreadDirect
-OS_WakeupThreadDirect: ; 0x020CB230
- stmdb sp!, {r4-r5,lr}
- sub sp, sp, #0x4
- mov r5, r0
- bl OS_DisableInterrupts
- mov r1, #0x1
- mov r4, r0
- str r1, [r5, #0x64]
- bl OSi_RescheduleThread
- mov r0, r4
- bl OS_RestoreInterrupts
- add sp, sp, #0x4
- ldmia sp!, {r4-r5,lr}
- bx lr
-
- arm_func_start OS_WakeupThread
-OS_WakeupThread: ; 0x020CB264
- stmdb sp!, {r4-r7,lr}
- sub sp, sp, #0x4
- mov r5, r0
- bl OS_DisableInterrupts
- ldr r1, [r5, #0x0]
- mov r4, r0
- cmp r1, #0x0
- beq _020CB2D0
- cmp r1, #0x0
- beq _020CB2BC
- mov r7, #0x1
- mov r6, #0x0
-_020CB294:
- mov r0, r5
- bl OSi_RemoveLinkFromQueue
- str r7, [r0, #0x64]
- str r6, [r0, #0x78]
- str r6, [r0, #0x80]
- ldr r1, [r0, #0x80]
- str r1, [r0, #0x7c]
- ldr r0, [r5, #0x0]
- cmp r0, #0x0
- bne _020CB294
-_020CB2BC:
- mov r0, #0x0
- str r0, [r5, #0x4]
- ldr r0, [r5, #0x4]
- str r0, [r5, #0x0]
- bl OSi_RescheduleThread
-_020CB2D0:
- mov r0, r4
- bl OS_RestoreInterrupts
- add sp, sp, #0x4
- ldmia sp!, {r4-r7,lr}
- bx lr
-
- arm_func_start OS_SleepThread
-OS_SleepThread:
- stmdb sp!, {r4-r6,lr}
- mov r6, r0
- bl OS_DisableInterrupts
- ldr r1, _020CB334 ; =OSi_CurrentThreadPtr
- mov r5, r0
- ldr r0, [r1, #0x0]
- cmp r6, #0x0
- ldr r4, [r0, #0x0]
- beq _020CB318
- mov r0, r6
- mov r1, r4
- str r6, [r4, #0x78]
- bl OSi_InsertLinkToQueue
-_020CB318:
- mov r0, #0x0
- str r0, [r4, #0x64]
- bl OSi_RescheduleThread
- mov r0, r5
- bl OS_RestoreInterrupts
- ldmia sp!, {r4-r6,lr}
- bx lr
- .balign 4
-_020CB334: .word OSi_CurrentThreadPtr
-
- arm_func_start OS_IsThreadTerminated
-OS_IsThreadTerminated: ; 0x020CB338
- ldr r0, [r0, #0x64]
- cmp r0, #0x2
- moveq r0, #0x1
- movne r0, #0x0
- bx lr
-
- arm_func_start OS_JoinThread
-OS_JoinThread: ; 0x020CB34C
- stmdb sp!, {r4-r5,lr}
- sub sp, sp, #0x4
- mov r5, r0
- bl OS_DisableInterrupts
- ldr r1, [r5, #0x64]
- mov r4, r0
- cmp r1, #0x2
- beq _020CB374
- add r0, r5, #0x9c
- bl OS_SleepThread
-_020CB374:
- mov r0, r4
- bl OS_RestoreInterrupts
- add sp, sp, #0x4
- ldmia sp!, {r4-r5,lr}
- bx lr
-
- arm_func_start OSi_CancelThreadAlarmForSleep
-OSi_CancelThreadAlarmForSleep: ; 0x020CB388
- stmdb sp!, {lr}
- sub sp, sp, #0x4
- ldr r0, [r0, #0xb0]
- cmp r0, #0x0
- addeq sp, sp, #0x4
- ldmeqia sp!, {lr}
- bxeq lr
- bl OS_CancelAlarm
- add sp, sp, #0x4
- ldmia sp!, {lr}
- bx lr
-
- arm_func_start OS_DestroyThread
-OS_DestroyThread: ; 0x020CB3B4
- stmdb sp!, {r4-r5,lr}
- sub sp, sp, #0x4
- mov r5, r0
- bl OS_DisableInterrupts
- ldr r1, _020CB438 ; =OSi_ThreadInfo
- mov r4, r0
- ldr r0, [r1, #0x4]
- cmp r0, r5
- bne _020CB3DC
- bl OSi_ExitThread_Destroy
-_020CB3DC:
- bl OS_DisableScheduler
- mov r0, r5
- bl OSi_UnlockAllMutex
- mov r0, r5
- bl OSi_CancelThreadAlarmForSleep
- ldr r0, [r5, #0x78]
- cmp r0, #0x0
- beq _020CB404
- mov r1, r5
- bl OSi_RemoveSpecifiedLinkFromQueue
-_020CB404:
- mov r0, r5
- bl OSi_RemoveThreadFromList
- mov r1, #0x2
- add r0, r5, #0x9c
- str r1, [r5, #0x64]
- bl OS_WakeupThread
- bl OS_EnableScheduler
- mov r0, r4
- bl OS_RestoreInterrupts
- bl OS_RescheduleThread
- add sp, sp, #0x4
- ldmia sp!, {r4-r5,lr}
- bx lr
- .balign 4
-_020CB438: .word OSi_ThreadInfo
-
- arm_func_start OSi_ExitThread_Destroy
-OSi_ExitThread_Destroy: ; 0x020CB43C
- stmdb sp!, {r4,lr}
- ldr r0, _020CB498 ; =OSi_CurrentThreadPtr
- ldr r0, [r0, #0x0]
- ldr r4, [r0, #0x0]
- bl OS_DisableScheduler
- mov r0, r4
- bl OSi_UnlockAllMutex
- ldr r0, [r4, #0x78]
- cmp r0, #0x0
- beq _020CB46C
- mov r1, r4
- bl OSi_RemoveSpecifiedLinkFromQueue
-_020CB46C:
- mov r0, r4
- bl OSi_RemoveThreadFromList
- mov r1, #0x2
- add r0, r4, #0x9c
- str r1, [r4, #0x64]
- bl OS_WakeupThread
- bl OS_EnableScheduler
- bl OS_RescheduleThread
- bl OS_Terminate
- ldmia sp!, {r4,lr}
- bx lr
- .balign 4
-_020CB498: .word OSi_CurrentThreadPtr
-
- arm_func_start OSi_ExitThread_Destroy2
-OSi_ExitThread_Destroy2: ; 0x020CB49C
- stmdb sp!, {lr}
- sub sp, sp, #0x4
- ldr r1, _020CB4DC ; =OSi_CurrentThreadPtr
- ldr r1, [r1, #0x0]
- ldr r3, [r1, #0x0]
- ldr r2, [r3, #0xb4]
- cmp r2, #0x0
- beq _020CB4CC
- mov r1, #0x0
- str r1, [r3, #0xb4]
- blx r2
- bl OS_DisableInterrupts
-_020CB4CC:
- bl OSi_ExitThread_Destroy
- add sp, sp, #0x4
- ldmia sp!, {lr}
- bx lr
- .balign 4
-_020CB4DC: .word OSi_CurrentThreadPtr
-
- arm_func_start OSi_ExitThread_ArgSpecified
-OSi_ExitThread_ArgSpecified: ; 0x020CB4E0
- stmdb sp!, {r4-r5,lr}
- sub sp, sp, #0x4
- ldr r2, _020CB548 ; =OSi_StackForDestructor
- mov r5, r0
- ldr r2, [r2, #0x0]
- mov r4, r1
- cmp r2, #0x0
- beq _020CB534
- ldr r1, _020CB54C ; =OSi_ExitThread_Destroy2
- bl OS_InitContext
- str r4, [r5, #0x4]
- ldr r1, [r5, #0x0]
- mov r0, r5
- orr r1, r1, #0x80
- str r1, [r5, #0x0]
- mov r1, #0x1
- str r1, [r5, #0x64]
- bl OS_LoadContext
- add sp, sp, #0x4
- ldmia sp!, {r4-r5,lr}
- bx lr
-_020CB534:
- mov r0, r4
- bl OSi_ExitThread_Destroy2
- add sp, sp, #0x4
- ldmia sp!, {r4-r5,lr}
- bx lr
- .balign 4
-_020CB548: .word OSi_StackForDestructor
-_020CB54C: .word OSi_ExitThread_Destroy2
-
- arm_func_start OS_ExitThread
-OS_ExitThread: ; 0x020CB550
- stmdb sp!, {lr}
- sub sp, sp, #0x4
- bl OS_DisableInterrupts
- ldr r0, _020CB578 ; =OSi_ThreadInfo
- mov r1, #0x0
- ldr r0, [r0, #0x4]
- bl OSi_ExitThread_ArgSpecified
- add sp, sp, #0x4
- ldmia sp!, {lr}
- bx lr
- .balign 4
-_020CB578: .word OSi_ThreadInfo
-
- arm_func_start OS_CreateThread
-OS_CreateThread: ; 0x020CB57C
- stmdb sp!, {r4-r8,lr}
- mov r8, r0
- mov r5, r1
- mov r7, r2
- mov r6, r3
- bl OS_DisableInterrupts
- mov r4, r0
- bl OSi_GetUnusedThreadId
- ldr r2, [sp, #0x1c]
- mov r1, #0x0
- str r2, [r8, #0x70]
- str r0, [r8, #0x6c]
- str r1, [r8, #0x64]
- str r1, [r8, #0x74]
- mov r0, r8
- bl OSi_InsertThreadToList
- mov r1, r5
- str r6, [r8, #0x94]
- ldr r0, [sp, #0x18]
- mov r12, #0x0
- sub r5, r6, r0
- sub r2, r6, #0x4
- str r5, [r8, #0x90]
- str r12, [r8, #0x98]
- ldr r3, _020CB678 ; =0xFDDB597D
- ldr r0, [r8, #0x94]
- ldr r6, _020CB67C ; =0x7BF9DD5B
- str r3, [r0, #-0x4]
- ldr r3, [r8, #0x90]
- mov r0, r8
- str r6, [r3, #0x0]
- str r12, [r8, #0xa0]
- ldr r3, [r8, #0xa0]
- str r3, [r8, #0x9c]
- bl OS_InitContext
- str r7, [r8, #0x4]
- add r1, r5, #0x4
- ldr r2, _020CB680 ; =OS_ExitThread
- mov r0, #0x0
- str r2, [r8, #0x3c]
- ldr r2, [sp, #0x18]
- sub r2, r2, #0x8
- bl MIi_CpuClear32
- mov r1, #0x0
- str r1, [r8, #0x84]
- str r1, [r8, #0x88]
- str r1, [r8, #0x8c]
- mov r0, r8
- bl OS_SetThreadDestructor
-_020CB640:
- mov r0, #0x0
- str r0, [r8, #0x78]
- str r0, [r8, #0x80]
- ldr r2, [r8, #0x80]
- add r1, r8, #0xA4
- str r2, [r8, #0x7C]
- mov r2, #0xC
- bl MIi_CpuClear32
- mov r0, r4
- mov r1, #0x0
- str r1, [r8, #0xB0]
- bl OS_RestoreInterrupts
- ldmia sp!, {r4-r8, lr}
- bx lr
-_020CB678: .word 0xFDDB597D
-_020CB67C: .word 0x7BF9DD5B
-_020CB680: .word OS_ExitThread
-
- arm_func_start OS_InitThread
-OS_InitThread: ; 0x020CB684
- stmdb sp!, {r4-r6,lr}
- sub sp, sp, #0x8
- ldr r3, _020CB7A4 ; =OSi_IsThreadInitialized
- ldr r0, [r3, #0x0]
- cmp r0, #0x0
- addne sp, sp, #0x8
- ldmneia sp!, {r4-r6,lr}
- bxne lr
- ldr ip, _020CB7A8 ; =0x00000000
- ldr r1, _020CB7AC ; =OSi_LauncherThread
- mov lr, #0x0
- ldr r0, _020CB7B0 ; =OSi_ThreadInfo
- mov r6, #0x1
- mov r4, #0x10
- str r1, [r0, #0x8]
- str r1, [r0, #0x4]
- cmp r12, #0x0
- ldrle r0, _020CB7B4 ; =0x027E0080
- str r4, [r1, #0x70]
- suble r4, r0, r12
- str lr, [r1, #0x6c]
- str r6, [r1, #0x64]
- str lr, [r1, #0x68]
- str lr, [r1, #0x74]
- ldrgt r1, _020CB7B8 ; =0x027E0000
- ldrgt r0, _020CB7BC ; =0x00000400
- addgt r1, r1, #0x3f80
- subgt r0, r1, r0
- subgt r4, r0, r12
- ldr r1, _020CB7B8 ; =0x027E0000
- ldr r5, _020CB7C0 ; =UNK_021D349C
- ldr r2, _020CB7C4 ; =OSi_CurrentThreadPtr
- ldr r0, _020CB7BC ; =0x00000400
- str r5, [r2, #0x0]
- ldr r2, _020CB7AC ; =OSi_LauncherThread
- add r1, r1, #0x3f80
- str r6, [r3, #0x0]
- sub r3, r1, r0
- mov r0, #0x0
- ldr r1, _020CB7C8 ; =0xFDDB597D
- str r3, [r2, #0x94]
- str r4, [r2, #0x90]
- str r0, [r2, #0x98]
- str r1, [r3, #-0x4]
- ldr r3, [r2, #0x90]
- ldr ip, _020CB7CC ; =0x7BF9DD5B
- ldr r1, _020CB7B0 ; =OSi_ThreadInfo
- str r12, [r3, #0x0]
- ldr r3, _020CB7D0 ; =0x027FFFA0
- str r0, [r2, #0xa0]
- str r0, [r2, #0x9c]
- strh r0, [r1, #0x0]
- strh r0, [r1, #0x2]
- str r1, [r3, #0x0]
- bl OS_SetSwitchThreadCallback
- mov r2, #0xc8
- str r2, [sp, #0x0]
- mov r12, #0x1f
- ldr r0, _020CB7D4 ; =OSi_IdleThread
- ldr r1, _020CB7D8 ; =OSi_IdleThreadProc
- ldr r3, _020CB7DC ; =OSi_Initialized
- mov r2, #0x0
- str r12, [sp, #0x4]
- bl OS_CreateThread
- ldr r0, _020CB7D4 ; =OSi_IdleThread
- mov r2, #0x20
- mov r1, #0x1
- str r2, [r0, #0x70]
- str r1, [r0, #0x64]
- add sp, sp, #0x8
- ldmia sp!, {r4-r6,lr}
- bx lr
- .balign 4
-_020CB7A4: .word OSi_IsThreadInitialized
-_020CB7A8: .word SDK_SYS_STACKSIZE
-_020CB7AC: .word OSi_LauncherThread
-_020CB7B0: .word OSi_ThreadInfo
-_020CB7B4: .word SDK_SECTION_ARENA_DTCM_START
-_020CB7B8: .word SDK_AUTOLOAD_DTCM_START
-_020CB7BC: .word SDK_IRQ_STACKSIZE
-_020CB7C0: .word OSi_ThreadInfo+4
-_020CB7C4: .word OSi_CurrentThreadPtr
-_020CB7C8: .word 0xFDDB597D
-_020CB7CC: .word 0x7BF9DD5B
-_020CB7D0: .word 0x027FFFA0
-_020CB7D4: .word OSi_IdleThread
-_020CB7D8: .word OSi_IdleThreadProc
-_020CB7DC: .word OSi_IdleThreadStack+0xc8
-
- arm_func_start OSi_RescheduleThread
-OSi_RescheduleThread: ; 0x020CB7E0
- stmdb sp!, {r4-r6,lr}
- ldr r0, _020CB8BC ; =OSi_RescheduleCount
- ldr r0, [r0, #0x0]
- cmp r0, #0x0
- ldmneia sp!, {r4-r6,lr}
- bxne lr
- ldr r4, _020CB8C0 ; =OSi_ThreadInfo
- ldrh r0, [r4, #0x2]
- cmp r0, #0x0
- bne _020CB814
- bl OS_GetProcMode
- cmp r0, #0x12
- bne _020CB824
-_020CB814:
- mov r0, #0x1
- strh r0, [r4, #0x0]
- ldmia sp!, {r4-r6,lr}
- bx lr
-_020CB824:
- ldr r0, _020CB8C4 ; =OSi_CurrentThreadPtr
- ldr r0, [r0, #0x0]
- ldr r6, [r0, #0x0]
- bl OS_SelectThread
- mov r5, r0
- cmp r6, r5
- ldmeqia sp!, {r4-r6,lr}
- bxeq lr
- cmp r5, #0x0
- ldmeqia sp!, {r4-r6,lr}
- bxeq lr
- ldr r0, [r6, #0x64]
- cmp r0, #0x2
- beq _020CB870
- mov r0, r6
- bl OS_SaveContext
-_020CB864:
- cmp r0, #0x0
- ldmneia sp!, {r4-r6,lr}
- bxne lr
-_020CB870:
- ldr r0, _020CB8C8 ; =OSi_SystemCallbackInSwitchThread
- ldr r2, [r0, #0x0]
- cmp r2, #0x0
- beq _020CB88C
- mov r0, r6
- mov r1, r5
- blx r2
-_020CB88C:
- ldr r2, [r4, #0xc]
- cmp r2, #0x0
- beq _020CB8A4
- mov r0, r6
- mov r1, r5
- blx r2
-_020CB8A4:
- ldr r1, _020CB8C0 ; =OSi_ThreadInfo
- mov r0, r5
- str r5, [r1, #0x4]
- bl OS_LoadContext
- ldmia sp!, {r4-r6,lr}
- bx lr
- .balign 4
-_020CB8BC: .word OSi_RescheduleCount
-_020CB8C0: .word OSi_ThreadInfo
-_020CB8C4: .word OSi_CurrentThreadPtr
-_020CB8C8: .word OSi_SystemCallbackInSwitchThread
-
- arm_func_start OSi_RemoveThreadFromList
-OSi_RemoveThreadFromList: ; 0x020CB8CC
- ldr r1, _020CB910 ; =OSi_ThreadInfo
- mov r2, #0x0
- ldr r1, [r1, #0x8]
- b _020CB8E4
-_020CB8DC:
- mov r2, r1
- ldr r1, [r1, #0x68]
-_020CB8E4:
- cmp r1, #0x0
- beq _020CB8F4
- cmp r1, r0
- bne _020CB8DC
-_020CB8F4:
- cmp r2, #0x0
- ldreq r1, [r0, #0x68]
- ldreq r0, _020CB910 ; =OSi_ThreadInfo
- streq r1, [r0, #0x8]
- ldrne r0, [r0, #0x68]
- strne r0, [r2, #0x68]
- bx lr
- .balign 4
-_020CB910: .word OSi_ThreadInfo
-
- arm_func_start OSi_InsertThreadToList
-OSi_InsertThreadToList: ; 0x020CB914
- stmdb sp!, {lr}
- sub sp, sp, #0x4
- ldr r1, _020CB978 ; =OSi_ThreadInfo
- mov r12, #0x0
- ldr r3, [r1, #0x8]
- mov lr, r3
- b _020CB938
-_020CB930:
- mov r12, lr
- ldr lr, [lr, #0x68]
-_020CB938:
- cmp lr, #0x0
- beq _020CB950
- ldr r2, [lr, #0x70]
- ldr r1, [r0, #0x70]
- cmp r2, r1
- blo _020CB930
-_020CB950:
- cmp r12, #0x0
- ldreq r1, _020CB978 ; =OSi_ThreadInfo
- streq r3, [r0, #0x68]
- streq r0, [r1, #0x8]
- ldrne r1, [r12, #0x68]
- strne r1, [r0, #0x68]
- strne r0, [r12, #0x68]
- add sp, sp, #0x4
- ldmia sp!, {lr}
- bx lr
- .balign 4
-_020CB978: .word OSi_ThreadInfo
-
- arm_func_start OSi_RemoveMutexLinkFromQueue
-OSi_RemoveMutexLinkFromQueue: ; 0x020CB97C
- ldr r2, [r0, #0x0]
- cmp r2, #0x0
- beq _020CB9A4
- ldr r1, [r2, #0x10]
- str r1, [r0, #0x0]
- cmp r1, #0x0
- movne r0, #0x0
- strne r0, [r1, #0x14]
- moveq r1, #0x0
- streq r1, [r0, #0x4]
-_020CB9A4:
- mov r0, r2
- bx lr
-
- arm_func_start OSi_RemoveSpecifiedLinkFromQueue
-OSi_RemoveSpecifiedLinkFromQueue: ; 0x020CB9AC
- ldr r2, [r0, #0x0]
- mov r12, r2
- cmp r2, #0x0
- beq _020CB9F8
-_020CB9BC:
- cmp r12, r1
- ldr r3, [r12, #0x80]
- bne _020CB9EC
- cmp r2, r12
- ldr r2, [r12, #0x7c]
- streq r3, [r0, #0x0]
- strne r3, [r2, #0x80]
- ldr r1, [r0, #0x4]
- cmp r1, r12
- streq r2, [r0, #0x4]
- strne r2, [r3, #0x7c]
- b _020CB9F8
-_020CB9EC:
- mov r12, r3
- cmp r3, #0x0
- bne _020CB9BC
-_020CB9F8:
- mov r0, r12
- bx lr
-
- arm_func_start OSi_RemoveLinkFromQueue
-OSi_RemoveLinkFromQueue: ; 0x020CBA00
- ldr r2, [r0, #0x0]
- cmp r2, #0x0
- beq _020CBA2C
- ldr r1, [r2, #0x80]
- str r1, [r0, #0x0]
- cmp r1, #0x0
- movne r0, #0x0
- strne r0, [r1, #0x7c]
- moveq r1, #0x0
- streq r1, [r0, #0x4]
- streq r1, [r2, #0x78]
-_020CBA2C:
- mov r0, r2
- bx lr
-
- arm_func_start OSi_InsertLinkToQueue
-OSi_InsertLinkToQueue:
- ldr r12, [r0, #0x0]
- b _020CBA48
-_020CBA3C:
- cmp r12, r1
- bxeq lr
- ldr r12, [r12, #0x80]
-_020CBA48:
- cmp r12, #0x0
- beq _020CBA60
- ldr r3, [r12, #0x70]
- ldr r2, [r1, #0x70]
- cmp r3, r2
- bls _020CBA3C
-_020CBA60:
- cmp r12, #0x0
- bne _020CBA8C
- ldr r2, [r0, #0x4]
- cmp r2, #0x0
- streq r1, [r0, #0x0]
- strne r1, [r2, #0x80]
- str r2, [r1, #0x7c]
- mov r2, #0x0
- str r2, [r1, #0x80]
- str r1, [r0, #0x4]
- bx lr
-_020CBA8C:
- ldr r2, [r12, #0x7c]
- cmp r2, #0x0
- streq r1, [r0, #0x0]
- strne r1, [r2, #0x80]
- str r2, [r1, #0x7c]
- str r12, [r1, #0x80]
- str r1, [r12, #0x7c]
- bx lr
-
- arm_func_start OSi_GetUnusedThreadId
-OSi_GetUnusedThreadId: ; 0x020CBAAC
- ldr r1, _020CBAC0 ; =OSi_ThreadIdCount
- ldr r0, [r1, #0x0]
- add r0, r0, #0x1
- str r0, [r1, #0x0]
- bx lr
- .balign 4
-_020CBAC0: .word OSi_ThreadIdCount
diff --git a/arm9/asm/arm9_itcm.s b/arm9/asm/arm9_itcm.s
index 13f0ad5c..5c3dc240 100644
--- a/arm9/asm/arm9_itcm.s
+++ b/arm9/asm/arm9_itcm.s
@@ -2,27 +2,6 @@
.include "global.inc"
.section .text
- ; OS
- arm_func_start OSi_DoResetSystem ;OS_reset.c
-OSi_DoResetSystem: ; 0x01FF84A4
- stmfd sp!, {lr}
- sub sp, sp, #4
- ldr r0, _01FF84DC
-_01FF84B0:
- ldrh r1, [r0]
- cmp r1, #0
- beq _01FF84B0
- ldr r0, _01FF84E0
- mov r1, #0
- strh r1, [r0]
- bl OSi_ReloadRomData
- bl OSi_DoBoot
- add sp, sp, #4
- ldmfd sp!, {lr}
- bx lr
-_01FF84DC: .word OSi_IsResetOccurred
-_01FF84E0: .word 0x04000208
-
; MI
arm_func_start MIi_DmaSetParams_wait_noInt
MIi_DmaSetParams_wait_noInt: ; 0x01FF84E4
diff --git a/arm9/asm/pokemon.s b/arm9/asm/pokemon.s
index 3b50e07b..f58ad635 100644
--- a/arm9/asm/pokemon.s
+++ b/arm9/asm/pokemon.s
@@ -1,5 +1,6 @@
.include "asm/macros.inc"
.include "global.inc"
+ .include "constants/species.h"
.extern gGameLanguage
.extern gGameVersion
@@ -26,24 +27,24 @@ UNK_020F7ED4: ; 0x020F7ED4
.global sLegendaryMonsList
sLegendaryMonsList: ; 0x020F7EF2
- .short 0x0096 ; MEWTWO
- .short 0x0097 ; MEW
- .short 0x00FA ; LUGIA
- .short 0x00F9 ; HO-OH
- .short 0x00FB ; CELEBI
- .short 0x017E ; KYOGRE
- .short 0x017F ; GROUDON
- .short 0x0180 ; RAYQUAZA
- .short 0x0181 ; JIRACHI
- .short 0x0182 ; DEOXYS
- .short 0x01E3 ; DIALGA
- .short 0x01E4 ; PALKIA
- .short 0x01E7 ; GIRATINA
- .short 0x01E9 ; PHIONE
- .short 0x01EA ; MANAPHY
- .short 0x01EB ; DARKRAI
- .short 0x01EC ; SHAYMIN
- .short 0x01ED ; ARCEUS
+ .short SPECIES_MEWTWO
+ .short SPECIES_MEW
+ .short SPECIES_HO_OH
+ .short SPECIES_LUGIA
+ .short SPECIES_CELEBI
+ .short SPECIES_KYOGRE
+ .short SPECIES_GROUDON
+ .short SPECIES_RAYQUAZA
+ .short SPECIES_JIRACHI
+ .short SPECIES_DEOXYS
+ .short SPECIES_DIALGA
+ .short SPECIES_PALKIA
+ .short SPECIES_GIRATINA
+ .short SPECIES_PHIONE
+ .short SPECIES_MANAPHY
+ .short SPECIES_DARKRAI
+ .short SPECIES_SHAYMIN
+ .short SPECIES_ARCEUS
.global UNK_020F7F16
UNK_020F7F16: ; 0x020F7F16
@@ -127,12 +128,12 @@ ZeroMonData: ; 0x02066978
ldrh r2, [r4, #0x6]
add r0, #0x8
mov r1, #0x80
- bl FUN_0206A3A4
+ bl EncryptMon
add r0, r4, #0x0
ldr r2, [r4, #0x0]
add r0, #0x88
mov r1, #0x64
- bl FUN_0206A3A4
+ bl EncryptMon
pop {r4, pc}
thumb_func_start FUN_020669A0
@@ -147,7 +148,7 @@ FUN_020669A0: ; 0x020669A0
ldrh r2, [r4, #0x6]
add r0, #0x8
mov r1, #0x80
- bl FUN_0206A3A4
+ bl EncryptMon
pop {r4, pc}
thumb_func_start FUN_020669BC
@@ -195,12 +196,12 @@ _020669EE:
ldr r2, [r5, #0x0]
add r0, #0x88
mov r1, #0x64
- bl FUN_0206A3D0
+ bl DecryptMon
add r0, r5, #0x0
ldrh r2, [r5, #0x6]
add r0, #0x8
mov r1, #0x80
- bl FUN_0206A3D0
+ bl DecryptMon
_02066A1A:
add r0, r4, #0x0
pop {r3-r5, pc}
@@ -230,7 +231,7 @@ FUN_02066A20: ; 0x02066A20
ldr r2, [r5, #0x0]
add r0, #0x88
mov r1, #0x64
- bl FUN_0206A3A4
+ bl EncryptMon
add r0, r5, #0x0
add r0, #0x8
mov r1, #0x80
@@ -240,7 +241,7 @@ FUN_02066A20: ; 0x02066A20
ldrh r2, [r5, #0x6]
add r0, #0x8
mov r1, #0x80
- bl FUN_0206A3A4
+ bl EncryptMon
_02066A68:
add r0, r4, #0x0
pop {r3-r5, pc}
@@ -262,7 +263,7 @@ FUN_02066A6C: ; 0x02066A6C
add r0, #0x8
mov r1, #0x80
mov r4, #0x1
- bl FUN_0206A3D0
+ bl DecryptMon
_02066A8E:
add r0, r4, #0x0
pop {r4, pc}
@@ -293,7 +294,7 @@ FUN_02066A94: ; 0x02066A94
ldrh r2, [r5, #0x6]
add r0, #0x8
mov r1, #0x80
- bl FUN_0206A3A4
+ bl EncryptMon
_02066AC8:
add r0, r4, #0x0
pop {r3-r5, pc}
@@ -324,23 +325,23 @@ CreateMon: ; 0x02066ACC
add r0, #0x88
mov r1, #0x64
mov r2, #0x0
- bl FUN_0206A3A4
+ bl EncryptMon
add r0, r5, #0x0
ldr r2, [r5, #0x0]
add r0, #0x88
mov r1, #0x64
- bl FUN_0206A3A4
+ bl EncryptMon
add r0, r5, #0x0
mov r1, #0xa0
add r2, sp, #0x48
- bl FUN_02067830
+ bl SetBoxMonDataEncrypted
mov r0, #0x0
bl FUN_020256BC
add r4, r0, #0x0
add r0, r5, #0x0
mov r1, #0xa9
add r2, r4, #0x0
- bl FUN_02067830
+ bl SetBoxMonDataEncrypted
add r0, r4, #0x0
bl FreeToHeap
mov r0, #0x0
@@ -348,7 +349,7 @@ CreateMon: ; 0x02066ACC
add r0, r5, #0x0
mov r1, #0xa1
add r2, sp, #0x10
- bl FUN_02067830
+ bl SetBoxMonDataEncrypted
mov r0, #0x0
add r1, sp, #0x14
mov r2, #0x18
@@ -356,7 +357,7 @@ CreateMon: ; 0x02066ACC
add r0, r5, #0x0
mov r1, #0xaa
add r2, sp, #0x14
- bl FUN_02067830
+ bl SetBoxMonDataEncrypted
add r0, r5, #0x0
bl FUN_02066ED8
add sp, #0x2c
@@ -443,7 +444,7 @@ _02066BDE:
bl FUN_02067960
ldr r0, [sp, #0x24]
ldr r1, [sp, #0x28]
- bl FUN_02068758
+ bl GetMonExpByLevel
str r0, [sp, #0x8]
add r0, r5, #0x0
mov r1, #0x8
@@ -451,7 +452,7 @@ _02066BDE:
bl FUN_02067960
ldr r0, [sp, #0x24]
mov r1, #0x14
- bl FUN_02068678
+ bl GetMonBaseStat
str r0, [sp, #0x8]
add r0, r5, #0x0
mov r1, #0x9
@@ -561,11 +562,11 @@ _02066C94:
_02066D18:
ldr r0, [sp, #0x24]
mov r1, #0x18
- bl FUN_02068678
+ bl GetMonBaseStat
str r0, [sp, #0x8]
ldr r0, [sp, #0x24]
mov r1, #0x19
- bl FUN_02068678
+ bl GetMonBaseStat
str r0, [sp, #0x4]
cmp r0, #0x0
beq _02066D50
@@ -731,7 +732,7 @@ FUN_02066E74: ; 0x02066E74
add r5, r1, #0x0
mov r1, #0x12
add r4, r2, #0x0
- bl FUN_02068678
+ bl GetMonBaseStat
lsl r0, r0, #0x18
lsr r0, r0, #0x18
beq _02066EA0
@@ -768,7 +769,7 @@ FUN_02066EA4: ; 0x02066EA4
add r0, r4, #0x0
mov r1, #0xae
add r2, sp, #0x24
- bl FUN_02067830
+ bl SetBoxMonDataEncrypted
add r0, r4, #0x0
bl FUN_02066ED8
add sp, #0x10
@@ -789,7 +790,7 @@ FUN_02066ED8: ; 0x02066ED8
add r0, r5, #0x0
mov r1, #0xa0
add r2, sp, #0x0
- bl FUN_02067830
+ bl SetBoxMonDataEncrypted
add r0, r5, #0x0
bl FUN_02066F04
add r0, r5, #0x0
@@ -807,87 +808,87 @@ FUN_02066F04: ; 0x02066F04
add r0, r5, #0x0
mov r1, #0xa0
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
add r4, r0, #0x0
add r0, r5, #0x0
mov r1, #0xa3
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
str r0, [sp, #0x2c]
add r0, r5, #0x0
mov r1, #0xa2
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
str r0, [sp, #0x54]
add r0, r5, #0x0
mov r1, #0x46
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
str r0, [sp, #0x30]
add r0, r5, #0x0
mov r1, #0xd
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
str r0, [sp, #0x34]
add r0, r5, #0x0
mov r1, #0x47
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
str r0, [sp, #0x28]
add r0, r5, #0x0
mov r1, #0xe
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
str r0, [sp, #0x14]
add r0, r5, #0x0
mov r1, #0x48
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
str r0, [sp, #0x24]
add r0, r5, #0x0
mov r1, #0xf
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
str r0, [sp, #0x10]
add r0, r5, #0x0
mov r1, #0x49
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
str r0, [sp, #0x20]
add r0, r5, #0x0
mov r1, #0x10
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
str r0, [sp, #0xc]
add r0, r5, #0x0
mov r1, #0x4a
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
str r0, [sp, #0x1c]
add r0, r5, #0x0
mov r1, #0x11
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
str r0, [sp, #0x8]
add r0, r5, #0x0
mov r1, #0x4b
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
str r0, [sp, #0x18]
add r0, r5, #0x0
mov r1, #0x12
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
str r0, [sp, #0x4]
add r0, r5, #0x0
mov r1, #0x70
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
str r0, [sp, #0x38]
add r0, r5, #0x0
mov r1, #0x5
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
add r7, r0, #0x0
mov r0, #0x0
mov r1, #0x2c
@@ -896,7 +897,7 @@ FUN_02066F04: ; 0x02066F04
ldr r1, [sp, #0x38]
add r0, r7, #0x0
add r2, r6, #0x0
- bl FUN_0206A380
+ bl LoadMonBaseStats_HandleUnownOrArceus
mov r0, #0x49
lsl r0, r0, #0x2
cmp r7, r0
@@ -925,7 +926,7 @@ _0206701E:
add r0, r5, #0x0
mov r1, #0xa3
add r2, sp, #0x50
- bl FUN_02067830
+ bl SetBoxMonDataEncrypted
ldr r0, [sp, #0x14]
asr r0, r0, #0x1
lsr r1, r0, #0x1e
@@ -953,7 +954,7 @@ _0206701E:
add r0, r5, #0x0
mov r1, #0xa4
add r2, sp, #0x4c
- bl FUN_02067830
+ bl SetBoxMonDataEncrypted
ldr r0, [sp, #0x10]
asr r0, r0, #0x1
lsr r1, r0, #0x1e
@@ -981,7 +982,7 @@ _0206701E:
add r0, r5, #0x0
mov r1, #0xa5
add r2, sp, #0x48
- bl FUN_02067830
+ bl SetBoxMonDataEncrypted
ldr r0, [sp, #0xc]
asr r0, r0, #0x1
lsr r1, r0, #0x1e
@@ -1009,7 +1010,7 @@ _0206701E:
add r0, r5, #0x0
mov r1, #0xa6
add r2, sp, #0x44
- bl FUN_02067830
+ bl SetBoxMonDataEncrypted
ldr r0, [sp, #0x8]
asr r0, r0, #0x1
lsr r1, r0, #0x1e
@@ -1037,7 +1038,7 @@ _0206701E:
add r0, r5, #0x0
mov r1, #0xa7
add r2, sp, #0x40
- bl FUN_02067830
+ bl SetBoxMonDataEncrypted
ldr r0, [sp, #0x4]
asr r0, r0, #0x1
lsr r1, r0, #0x1e
@@ -1065,7 +1066,7 @@ _0206701E:
add r0, r5, #0x0
mov r1, #0xa8
add r2, sp, #0x3c
- bl FUN_02067830
+ bl SetBoxMonDataEncrypted
add r0, r6, #0x0
bl FreeToHeap
ldr r1, [sp, #0x54]
@@ -1102,7 +1103,7 @@ _020671A0:
add r0, r5, #0x0
mov r1, #0xa2
add r2, sp, #0x54
- bl FUN_02067830
+ bl SetBoxMonDataEncrypted
_020671B0:
ldr r1, [sp, #0x0]
add r0, r5, #0x0
@@ -1110,8 +1111,8 @@ _020671B0:
add sp, #0x58
pop {r3-r7, pc}
- thumb_func_start FUN_020671BC
-FUN_020671BC: ; 0x020671BC
+ thumb_func_start GetMonDataEncrypted
+GetMonDataEncrypted: ; 0x020671BC
push {r4-r6, lr}
add r5, r0, #0x0
ldrh r0, [r5, #0x4]
@@ -1124,12 +1125,12 @@ FUN_020671BC: ; 0x020671BC
ldr r2, [r5, #0x0]
add r0, #0x88
mov r1, #0x64
- bl FUN_0206A3D0
+ bl DecryptMon
add r0, r5, #0x0
ldrh r2, [r5, #0x6]
add r0, #0x8
mov r1, #0x80
- bl FUN_0206A3D0
+ bl DecryptMon
add r0, r5, #0x0
add r0, #0x8
mov r1, #0x80
@@ -1159,12 +1160,12 @@ _02067204:
ldr r2, [r5, #0x0]
add r0, #0x88
mov r1, #0x64
- bl FUN_0206A3A4
+ bl EncryptMon
add r0, r5, #0x0
ldrh r2, [r5, #0x6]
add r0, #0x8
mov r1, #0x80
- bl FUN_0206A3A4
+ bl EncryptMon
_02067230:
add r0, r4, #0x0
pop {r4-r6, pc}
@@ -1265,7 +1266,7 @@ FUN_020672BC: ; 0x020672BC
add r0, r5, #0x0
add r0, #0x8
mov r1, #0x80
- bl FUN_0206A3D0
+ bl DecryptMon
add r0, r5, #0x0
add r0, #0x8
mov r1, #0x80
@@ -1295,7 +1296,7 @@ _020672F8:
add r0, r5, #0x0
add r0, #0x8
mov r1, #0x80
- bl FUN_0206A3A4
+ bl EncryptMon
_02067318:
add r0, r4, #0x0
pop {r4-r6, pc}
@@ -1583,12 +1584,12 @@ _02067522:
_0206753A:
b _0206781A
_0206753C:
- ldr r4, _02067820 ; =0x000001EE
+ ldr r4, _02067820 ; =SPECIES_EGG
b _0206781A
_02067540:
ldrh r0, [r5, #0x0]
ldr r1, [r5, #0x8]
- bl FUN_02068800
+ bl CalcMonLevel
add r4, r0, #0x0
b _0206781A
_0206754C:
@@ -1597,7 +1598,7 @@ _0206754C:
lsl r0, r0, #0x1d
lsr r0, r0, #0x1f
beq _0206755A
- ldr r4, _02067820 ; =0x000001EE
+ ldr r4, _02067820 ; =SPECIES_EGG
b _0206781A
_0206755A:
ldrh r4, [r5, #0x0]
@@ -1804,7 +1805,7 @@ _0206769C:
lsl r0, r0, #0x1d
lsr r0, r0, #0x1f
beq _020676B2
- ldr r0, _02067824 ; =0x000001EF
+ ldr r0, _02067824 ; =SPECIES_MANAPHY_EGG
ldr r2, [sp, #0x8]
add r1, r4, #0x0
bl FUN_0200A99C
@@ -1833,7 +1834,7 @@ _020676D0:
lsl r0, r0, #0x1d
lsr r0, r0, #0x1f
beq _020676F4
- ldr r0, _02067824 ; =0x000001EF
+ ldr r0, _02067824 ; =SPECIES_MANAPHY_EGG
mov r1, #0x0
bl FUN_0200AA50
add r5, r0, #0x0
@@ -1981,7 +1982,7 @@ _020677D4:
b _0206781A
_020677D8:
ldrh r0, [r5, #0x0]
- ldr r1, _0206782C ; =0x000001ED
+ ldr r1, _0206782C ; =SPECIES_ARCEUS
cmp r0, r1
bne _020677FC
ldrb r1, [r5, #0xd]
@@ -2003,7 +2004,7 @@ _020677FC:
sub r2, #0xaa
lsr r1, r1, #0x1b
str r2, [sp, #0x4]
- bl FUN_02068654
+ bl GetMonBaseStat_HandleFormeConversion
add r4, r0, #0x0
b _0206781A
_02067810:
@@ -2016,13 +2017,13 @@ _0206781A:
add sp, #0xc
pop {r4-r7, pc}
.balign 4
-_02067820: .word 0x000001EE
-_02067824: .word 0x000001EF
+_02067820: .word SPECIES_EGG
+_02067824: .word SPECIES_MANAPHY_EGG
_02067828: .word 0x0000FFFF
-_0206782C: .word 0x000001ED
+_0206782C: .word SPECIES_ARCEUS
- thumb_func_start FUN_02067830
-FUN_02067830: ; 0x02067830
+ thumb_func_start SetBoxMonDataEncrypted
+SetBoxMonDataEncrypted: ; 0x02067830
push {r4-r6, lr}
add r5, r0, #0x0
ldrh r0, [r5, #0x4]
@@ -2035,12 +2036,12 @@ FUN_02067830: ; 0x02067830
ldr r2, [r5, #0x0]
add r0, #0x88
mov r1, #0x64
- bl FUN_0206A3D0
+ bl DecryptMon
add r0, r5, #0x0
ldrh r2, [r5, #0x6]
add r0, #0x8
mov r1, #0x80
- bl FUN_0206A3D0
+ bl DecryptMon
add r0, r5, #0x0
add r0, #0x8
mov r1, #0x80
@@ -2060,7 +2061,7 @@ _02067870:
add r0, r5, #0x0
add r0, #0x8
mov r1, #0x80
- bl FUN_0206A3A4
+ bl EncryptMon
pop {r4-r6, pc}
_02067886:
add r0, r5, #0x0
@@ -2075,7 +2076,7 @@ _02067886:
ldr r2, [r5, #0x0]
add r0, #0x88
mov r1, #0x64
- bl FUN_0206A3A4
+ bl EncryptMon
add r0, r5, #0x0
add r0, #0x8
mov r1, #0x80
@@ -2085,7 +2086,7 @@ _02067886:
ldrh r2, [r5, #0x6]
add r0, #0x8
mov r1, #0x80
- bl FUN_0206A3A4
+ bl EncryptMon
_020678BC:
pop {r4-r6, pc}
.balign 4
@@ -2198,7 +2199,7 @@ FUN_02067960: ; 0x02067960
add r0, r5, #0x0
add r0, #0x8
mov r1, #0x80
- bl FUN_0206A3D0
+ bl DecryptMon
add r0, r5, #0x0
add r0, #0x8
mov r1, #0x80
@@ -2218,7 +2219,7 @@ _02067994:
add r0, r5, #0x0
add r0, #0x8
mov r1, #0x80
- bl FUN_0206A3A4
+ bl EncryptMon
pop {r4-r6, pc}
_020679AA:
add r0, r5, #0x0
@@ -2238,7 +2239,7 @@ _020679AA:
ldrh r2, [r5, #0x6]
add r0, #0x8
mov r1, #0x80
- bl FUN_0206A3A4
+ bl EncryptMon
_020679D4:
pop {r4-r6, pc}
.balign 4
@@ -3110,12 +3111,12 @@ FUN_02068018: ; 0x02068018
ldr r2, [r5, #0x0]
add r0, #0x88
mov r1, #0x64
- bl FUN_0206A3D0
+ bl DecryptMon
add r0, r5, #0x0
ldrh r2, [r5, #0x6]
add r0, #0x8
mov r1, #0x80
- bl FUN_0206A3D0
+ bl DecryptMon
add r0, r5, #0x0
add r0, #0x8
mov r1, #0x80
@@ -3131,7 +3132,7 @@ _02068058:
add r0, r5, #0x0
add r0, #0x8
mov r1, #0x80
- bl FUN_0206A3A4
+ bl EncryptMon
pop {r4-r6, pc}
_02068066:
add r0, r5, #0x0
@@ -3146,7 +3147,7 @@ _02068066:
ldr r2, [r5, #0x0]
add r0, #0x88
mov r1, #0x64
- bl FUN_0206A3A4
+ bl EncryptMon
add r0, r5, #0x0
add r0, #0x8
mov r1, #0x80
@@ -3156,7 +3157,7 @@ _02068066:
ldrh r2, [r5, #0x6]
add r0, #0x8
mov r1, #0x80
- bl FUN_0206A3A4
+ bl EncryptMon
_0206809C:
pop {r4-r6, pc}
.balign 4
@@ -3436,14 +3437,14 @@ _0206814E: ; jump table (using 16-bit offset)
_020682B4:
ldrh r0, [r4, #0x0]
mov r1, #0x64
- bl FUN_02068758
+ bl GetMonExpByLevel
ldr r1, [r4, #0x8]
add r1, r1, r6
cmp r1, r0
bls _020682D2
ldrh r0, [r4, #0x0]
mov r1, #0x64
- bl FUN_02068758
+ bl GetMonExpByLevel
add sp, #0xc
str r0, [r4, #0x8]
pop {r4-r7, pc}
@@ -3773,8 +3774,8 @@ _02068510: .word 0xFFF07FFF
_02068514: .word 0xFE0FFFFF
_02068518: .word 0xC1FFFFFF
- thumb_func_start FUN_0206851C
-FUN_0206851C: ; 0x0206851C
+ thumb_func_start AllocAndLoadMonPersonal
+AllocAndLoadMonPersonal: ; 0x0206851C
push {r3-r5, lr}
add r5, r0, #0x0
add r0, r1, #0x0
@@ -3788,8 +3789,8 @@ FUN_0206851C: ; 0x0206851C
pop {r3-r5, pc}
.balign 4
- thumb_func_start FUN_02068538
-FUN_02068538: ; 0x02068538
+ thumb_func_start GetPersonalAttr
+GetPersonalAttr: ; 0x02068538
push {r4-r6, lr}
add r4, r0, #0x0
add r6, r1, #0x0
@@ -3958,8 +3959,8 @@ _0206863A:
pop {r4-r6, pc}
.balign 4
- thumb_func_start FUN_02068640
-FUN_02068640: ; 0x02068640
+ thumb_func_start FreeMonPersonal
+FreeMonPersonal: ; 0x02068640
push {r4, lr}
add r4, r0, #0x0
bne _0206864A
@@ -3970,35 +3971,35 @@ _0206864A:
pop {r4, pc}
.balign 4
- thumb_func_start FUN_02068654
-FUN_02068654: ; 0x02068654
+ thumb_func_start GetMonBaseStat_HandleFormeConversion
+GetMonBaseStat_HandleFormeConversion: ; 0x02068654
push {r3-r5, lr}
add r4, r2, #0x0
- bl ConvertUnownOrArceusSpecies
+ bl ResolveMonForme
mov r1, #0x0
- bl FUN_0206851C
+ bl AllocAndLoadMonPersonal
add r5, r0, #0x0
add r1, r4, #0x0
- bl FUN_02068538
+ bl GetPersonalAttr
add r4, r0, #0x0
add r0, r5, #0x0
- bl FUN_02068640
+ bl FreeMonPersonal
add r0, r4, #0x0
pop {r3-r5, pc}
.balign 4
- thumb_func_start FUN_02068678
-FUN_02068678: ; 0x02068678
+ thumb_func_start GetMonBaseStat
+GetMonBaseStat: ; 0x02068678
push {r3-r5, lr}
add r4, r1, #0x0
mov r1, #0x0
- bl FUN_0206851C
+ bl AllocAndLoadMonPersonal
add r5, r0, #0x0
add r1, r4, #0x0
- bl FUN_02068538
+ bl GetPersonalAttr
add r4, r0, #0x0
add r0, r5, #0x0
- bl FUN_02068640
+ bl FreeMonPersonal
add r0, r4, #0x0
pop {r3-r5, pc}
.balign 4
@@ -4012,27 +4013,27 @@ FUN_02068698: ; 0x02068698
add r0, r5, #0x0
mov r1, #0x5
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
lsl r0, r0, #0x10
lsr r6, r0, #0x10
add r0, r5, #0x0
mov r1, #0xa0
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
lsl r0, r0, #0x18
lsr r7, r0, #0x18
add r0, r6, #0x0
add r1, r7, #0x0
- bl FUN_02068758
+ bl GetMonExpByLevel
add r4, r0, #0x0
add r0, r6, #0x0
add r1, r7, #0x1
- bl FUN_02068758
+ bl GetMonExpByLevel
add r6, r0, #0x0
add r0, r5, #0x0
mov r1, #0x8
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
add r7, r0, #0x0
ldr r1, [sp, #0x0]
add r0, r5, #0x0
@@ -4074,7 +4075,7 @@ FUN_02068700: ; 0x02068700
add r4, r0, #0x0
add r0, r6, #0x0
add r1, r5, #0x0
- bl FUN_02068758
+ bl GetMonExpByLevel
sub r0, r0, r4
pop {r4-r6, pc}
@@ -4084,24 +4085,24 @@ FUN_02068734: ; 0x02068734
add r5, r0, #0x0
mov r1, #0x5
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
add r4, r0, #0x0
add r0, r5, #0x0
mov r1, #0xa0
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
add r1, r0, #0x0
add r0, r4, #0x0
- bl FUN_02068758
+ bl GetMonExpByLevel
pop {r3-r5, pc}
.balign 4
- thumb_func_start FUN_02068758
-FUN_02068758: ; 0x02068758
+ thumb_func_start GetMonExpByLevel
+GetMonExpByLevel: ; 0x02068758
push {r4, lr}
add r4, r1, #0x0
mov r1, #0x15
- bl FUN_02068678
+ bl GetMonBaseStat
add r1, r4, #0x0
bl GetExpByGrowthRateAndLevel
pop {r4, pc}
@@ -4180,34 +4181,34 @@ FUN_020687C8: ; 0x020687C8
lsl r0, r4, #0x10
lsr r0, r0, #0x10
add r1, r7, #0x0
- bl FUN_02068800
+ bl CalcMonLevel
pop {r3-r7, pc}
.balign 4
- thumb_func_start FUN_02068800
-FUN_02068800: ; 0x02068800
+ thumb_func_start CalcMonLevel
+CalcMonLevel: ; 0x02068800
push {r4-r6, lr}
add r4, r1, #0x0
add r5, r0, #0x0
mov r1, #0x0
- bl FUN_0206851C
+ bl AllocAndLoadMonPersonal
add r6, r0, #0x0
add r1, r5, #0x0
add r2, r4, #0x0
- bl FUN_02068824
+ bl CalcMonLevelInternal
add r4, r0, #0x0
add r0, r6, #0x0
- bl FUN_02068640
+ bl FreeMonPersonal
add r0, r4, #0x0
pop {r4-r6, pc}
.balign 4
- thumb_func_start FUN_02068824
-FUN_02068824: ; 0x02068824
+ thumb_func_start CalcMonLevelInternal
+CalcMonLevelInternal: ; 0x02068824
push {r4, lr}
mov r1, #0x15
add r4, r2, #0x0
- bl FUN_02068538
+ bl GetPersonalAttr
ldr r1, _0206884C ; =UNK_021C5AC0
bl LoadGrowthTable
ldr r2, _02068850 ; =UNK_021C5AC0 + 4
@@ -4327,17 +4328,17 @@ _02068900:
add r0, r5, #0x0
mov r1, #0xad
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
lsl r0, r0, #0x10
lsr r1, r0, #0x10
beq _020689D4
- ldr r0, _020689D8 ; =0x000001EE
+ ldr r0, _020689D8 ; =SPECIES_EGG
cmp r1, r0
beq _020689D4
add r0, r5, #0x0
mov r1, #0x6
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
lsl r0, r0, #0x10
lsr r0, r0, #0x10
mov r1, #0x1
@@ -4349,7 +4350,7 @@ _02068900:
add r0, r5, #0x0
mov r1, #0x9
add r2, r4, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
add r1, sp, #0x4
strh r0, [r1, #0x0]
add r0, r4, #0x0
@@ -4376,7 +4377,7 @@ _02068958:
add r0, r5, #0x0
mov r1, #0x9a
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
cmp r0, #0xb
bne _0206897A
add r0, r4, #0x1
@@ -4388,7 +4389,7 @@ _0206897A:
add r0, r5, #0x0
mov r1, #0x97
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
ldr r1, [sp, #0x0]
cmp r1, r0
bne _02068994
@@ -4428,12 +4429,12 @@ _020689CA:
add r0, r5, #0x0
mov r1, #0x9
add r2, sp, #0x4
- bl FUN_02067830
+ bl SetBoxMonDataEncrypted
_020689D4:
add sp, #0x8
pop {r3-r7, pc}
.balign 4
-_020689D8: .word 0x000001EE
+_020689D8: .word SPECIES_EGG
_020689DC: .word UNK_020F7ED4
thumb_func_start FUN_020689E0
@@ -4475,14 +4476,14 @@ FUN_02068A20: ; 0x02068A20
add r4, r1, #0x0
add r5, r0, #0x0
mov r1, #0x0
- bl FUN_0206851C
+ bl AllocAndLoadMonPersonal
add r6, r0, #0x0
add r1, r5, #0x0
add r2, r4, #0x0
bl FUN_02068A44
add r4, r0, #0x0
add r0, r6, #0x0
- bl FUN_02068640
+ bl FreeMonPersonal
add r0, r4, #0x0
pop {r4-r6, pc}
.balign 4
@@ -4492,7 +4493,7 @@ FUN_02068A44: ; 0x02068A44
push {r4, lr}
mov r1, #0x12
add r4, r2, #0x0
- bl FUN_02068538
+ bl GetPersonalAttr
lsl r0, r0, #0x18
lsr r1, r0, #0x18
beq _02068A5E
@@ -4680,7 +4681,7 @@ FUN_02068B70: ; 0x02068B70
add r2, r1, #0x0
bl FUN_020672BC
add r6, r0, #0x0
- ldr r0, _02068BF8 ; =0x000001EE
+ ldr r0, _02068BF8 ; =SPECIES_EGG
cmp r4, r0
bne _02068BCA
add r0, r5, #0x0
@@ -4717,7 +4718,7 @@ _02068BD8:
add sp, #0x1c
pop {r4-r7, pc}
nop
-_02068BF8: .word 0x000001EE
+_02068BF8: .word SPECIES_EGG
_02068BFC: .word 0x000001EA
thumb_func_start FUN_02068C00
@@ -5050,7 +5051,7 @@ FUN_02068E1C: ; 0x02068E1C
add r2, r1, #0x0
bl FUN_020672BC
add r6, r0, #0x0
- ldr r0, _02068E80 ; =0x000001EE
+ ldr r0, _02068E80 ; =SPECIES_EGG
cmp r4, r0
bne _02068E62
add r0, r5, #0x0
@@ -5081,7 +5082,7 @@ _02068E70:
add sp, #0x8
pop {r3-r7, pc}
.balign 4
-_02068E80: .word 0x000001EE
+_02068E80: .word SPECIES_EGG
_02068E84: .word 0x000001EA
thumb_func_start FUN_02068E88
@@ -5450,24 +5451,24 @@ FUN_020690E8: ; 0x020690E8
mov r1, #0x5
mov r2, #0x0
add r4, r0, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
lsl r0, r0, #0x10
lsr r5, r0, #0x10
add r0, r4, #0x0
mov r1, #0xa0
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
add r1, r0, #0x1
add r0, sp, #0x0
strb r1, [r0, #0x0]
add r0, r4, #0x0
mov r1, #0x8
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
str r0, [sp, #0x4]
add r0, r5, #0x0
mov r1, #0x15
- bl FUN_02068678
+ bl GetMonBaseStat
mov r1, #0x64
add r5, r0, #0x0
bl GetExpByGrowthRateAndLevel
@@ -5478,7 +5479,7 @@ FUN_020690E8: ; 0x020690E8
add r0, r4, #0x0
mov r1, #0x8
add r2, sp, #0x4
- bl FUN_02067830
+ bl SetBoxMonDataEncrypted
_02069138:
add r0, sp, #0x0
ldrb r1, [r0, #0x0]
@@ -5496,7 +5497,7 @@ _02069146:
add r0, r4, #0x0
mov r1, #0xa0
add r2, sp, #0x0
- bl FUN_02067830
+ bl SetBoxMonDataEncrypted
add sp, #0x8
mov r0, #0x1
pop {r3-r5, pc}
@@ -5518,26 +5519,26 @@ FUN_02069168: ; 0x02069168
add r2, r6, #0x0
str r3, [sp, #0x4]
ldr r5, [sp, #0x58]
- bl FUN_020671BC
+ bl GetMonDataEncrypted
lsl r0, r0, #0x10
lsr r0, r0, #0x10
str r0, [sp, #0x2c]
add r0, r7, #0x0
mov r1, #0x6
add r2, r6, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
lsl r0, r0, #0x10
lsr r0, r0, #0x10
add r1, r6, #0x0
str r0, [sp, #0x28]
add r0, r7, #0x0
add r2, r1, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
str r0, [sp, #0x30]
add r0, r7, #0x0
mov r1, #0x14
add r2, r6, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
lsl r0, r0, #0x18
lsr r0, r0, #0x18
str r0, [sp, #0x10]
@@ -5575,7 +5576,7 @@ _020691EA:
str r0, [sp, #0x18]
ldr r0, [sp, #0x2c]
ldr r1, [sp, #0x18]
- bl FUN_0206A394
+ bl LoadMonEvolutionTable
cmp r4, #0x3
bls _02069202
b _0206954A
@@ -5595,14 +5596,14 @@ _02069216:
add r0, r7, #0x0
mov r1, #0xa0
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
lsl r0, r0, #0x18
lsr r0, r0, #0x18
str r0, [sp, #0x14]
add r0, r7, #0x0
mov r1, #0x9
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
lsl r0, r0, #0x10
lsr r0, r0, #0x10
str r0, [sp, #0x20]
@@ -5700,12 +5701,12 @@ _020692DA:
add r0, r7, #0x0
mov r1, #0xa4
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
str r0, [sp, #0x34]
add r0, r7, #0x0
mov r1, #0xa5
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
ldr r1, [sp, #0x34]
cmp r1, r0
bls _0206936C
@@ -5721,12 +5722,12 @@ _02069306:
add r0, r7, #0x0
mov r1, #0xa4
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
str r0, [sp, #0x38]
add r0, r7, #0x0
mov r1, #0xa5
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
ldr r1, [sp, #0x38]
cmp r1, r0
bne _0206936C
@@ -5742,12 +5743,12 @@ _02069332:
add r0, r7, #0x0
mov r1, #0xa4
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
str r0, [sp, #0x3c]
add r0, r7, #0x0
mov r1, #0xa5
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
ldr r1, [sp, #0x3c]
cmp r1, r0
bhs _0206936C
@@ -5854,7 +5855,7 @@ _0206940E:
add r0, r7, #0x0
mov r1, #0x6f
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
cmp r0, #0x0
bne _02069472
ldrh r1, [r4, #0x2]
@@ -5869,7 +5870,7 @@ _0206942C:
add r0, r7, #0x0
mov r1, #0x6f
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
cmp r0, #0x1
bne _02069472
ldrh r1, [r4, #0x2]
@@ -5975,7 +5976,7 @@ _020694E4:
add r0, r7, #0x0
mov r1, #0x6f
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
cmp r0, #0x0
bne _02069510
ldrh r1, [r4, #0x2]
@@ -5998,7 +5999,7 @@ _02069510:
add r0, r7, #0x0
mov r1, #0x6f
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
cmp r0, #0x1
bne _0206953E
ldrh r1, [r4, #0x2]
@@ -6029,15 +6030,15 @@ _0206954A:
pop {r4-r7, pc}
.balign 4
- thumb_func_start FUN_02069558
-FUN_02069558: ; 0x02069558
+ thumb_func_start ReadFromPersonalPmsNarc
+ReadFromPersonalPmsNarc: ; 0x02069558
push {r3-r4, lr}
sub sp, #0x4c
add r4, r0, #0x0
mov r1, #0x0
add r0, sp, #0x0
strh r1, [r0, #0x0]
- ldr r0, _020695A0 ; =0x000001EE
+ ldr r0, _020695A0 ; =SPECIES_EGG
cmp r4, r0
blo _0206956E
bl ErrorHandling
@@ -6062,54 +6063,54 @@ _0206956E:
add sp, #0x4c
pop {r3-r4, pc}
nop
-_020695A0: .word 0x000001EE
+_020695A0: .word SPECIES_EGG
_020695A4: .word UNK_02105FC8
- thumb_func_start FUN_020695A8
-FUN_020695A8: ; 0x020695A8
+ thumb_func_start GetEggSpecies
+GetEggSpecies: ; 0x020695A8
push {r3, lr}
- cmp r0, #0xb9
+ cmp r0, #SPECIES_SUDOWOODO
bgt _020695CC
- cmp r0, #0xb7
+ cmp r0, #SPECIES_MARILL
blt _020695BA
beq _020695EC
- cmp r0, #0xb9
+ cmp r0, #SPECIES_SUDOWOODO
beq _020695EC
b _020695E8
_020695BA:
- cmp r0, #0x7a
+ cmp r0, #SPECIES_MR_MIME
bgt _020695C6
bge _020695EC
- cmp r0, #0x71
+ cmp r0, #SPECIES_CHANSEY
beq _020695EC
b _020695E8
_020695C6:
- cmp r0, #0x8f
+ cmp r0, #SPECIES_SNORLAX
beq _020695EC
b _020695E8
_020695CC:
- cmp r0, #0xe2
+ cmp r0, #SPECIES_MANTINE
bgt _020695D8
bge _020695EC
- cmp r0, #0xca
+ cmp r0, #SPECIES_WOBBUFFET
beq _020695EC
b _020695E8
_020695D8:
- ldr r1, _020695F0 ; =0x0000013B
+ ldr r1, _020695F0 ; =SPECIES_ROSELIA
cmp r0, r1
bgt _020695E2
beq _020695EC
b _020695E8
_020695E2:
- add r1, #0x2b
+ add r1, #SPECIES_CHIMECHO-SPECIES_ROSELIA
cmp r0, r1
beq _020695EC
_020695E8:
- bl FUN_02069558
+ bl ReadFromPersonalPmsNarc
_020695EC:
pop {r3, pc}
nop
-_020695F0: .word 0x0000013B
+_020695F0: .word SPECIES_ROSELIA
thumb_func_start FUN_020695F4
FUN_020695F4: ; 0x020695F4
@@ -6395,19 +6396,19 @@ FUN_02069818: ; 0x02069818
add r0, r7, #0x0
mov r1, #0x5
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
lsl r0, r0, #0x10
lsr r0, r0, #0x10
str r0, [sp, #0x4]
add r0, r7, #0x0
mov r1, #0x70
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
str r0, [sp, #0xc]
add r0, r7, #0x0
mov r1, #0xa0
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
lsl r0, r0, #0x18
lsr r6, r0, #0x18
ldr r0, [sp, #0x4]
@@ -6584,37 +6585,37 @@ _020699B2:
add r0, r5, #0x0
add r1, #0x37
add r2, r7, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
add r1, r4, #0x0
strh r0, [r6, #0x2]
add r0, r5, #0x0
add r1, #0x3b
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
add r1, r4, #0x0
strb r0, [r6, #0x1]
add r0, r5, #0x0
add r1, #0x3f
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
add r1, r4, #0x0
add r2, sp, #0x0
strb r0, [r6, #0x0]
add r0, r5, #0x0
add r1, #0x36
add r2, #0x2
- bl FUN_02067830
+ bl SetBoxMonDataEncrypted
add r1, r4, #0x0
add r2, sp, #0x0
add r0, r5, #0x0
add r1, #0x3a
add r2, #0x1
- bl FUN_02067830
+ bl SetBoxMonDataEncrypted
add r1, r4, #0x0
add r0, r5, #0x0
add r1, #0x3e
add r2, sp, #0x0
- bl FUN_02067830
+ bl SetBoxMonDataEncrypted
add r4, r4, #0x1
cmp r4, #0x3
blo _020699B2
@@ -6628,16 +6629,16 @@ _02069A0A:
add r0, r5, #0x0
mov r1, #0x39
add r2, #0x2
- bl FUN_02067830
+ bl SetBoxMonDataEncrypted
add r2, sp, #0x0
add r0, r5, #0x0
mov r1, #0x3d
add r2, #0x1
- bl FUN_02067830
+ bl SetBoxMonDataEncrypted
add r0, r5, #0x0
mov r1, #0x41
add r2, sp, #0x0
- bl FUN_02067830
+ bl SetBoxMonDataEncrypted
pop {r3-r7, pc}
thumb_func_start FUN_02069A38
@@ -6652,7 +6653,7 @@ _02069A42:
add r0, r6, #0x0
add r1, #0x36
add r2, r7, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
cmp r5, r0
beq _02069A58
add r4, r4, #0x1
@@ -6695,28 +6696,28 @@ _02069A8E:
add r0, r4, #0x0
mov r1, #0x9f
add r2, sp, #0x0
- bl FUN_02067830
+ bl SetBoxMonDataEncrypted
add r0, r4, #0x0
mov r1, #0xa2
add r2, sp, #0x0
- bl FUN_02067830
+ bl SetBoxMonDataEncrypted
add r0, r4, #0x0
mov r1, #0xa3
add r2, sp, #0x0
- bl FUN_02067830
+ bl SetBoxMonDataEncrypted
mov r0, #0x0
bl FUN_020256BC
add r5, r0, #0x0
add r0, r4, #0x0
mov r1, #0xa9
add r2, r5, #0x0
- bl FUN_02067830
+ bl SetBoxMonDataEncrypted
add r0, r5, #0x0
bl FreeToHeap
add r0, r4, #0x0
mov r1, #0xa1
add r2, sp, #0x0
- bl FUN_02067830
+ bl SetBoxMonDataEncrypted
mov r0, #0x0
add r1, sp, #0x4
mov r2, #0x18
@@ -6724,7 +6725,7 @@ _02069A8E:
add r0, r4, #0x0
mov r1, #0xaa
add r2, sp, #0x4
- bl FUN_02067830
+ bl SetBoxMonDataEncrypted
add r0, r4, #0x0
bl FUN_02066ED8
add sp, #0x1c
@@ -6747,19 +6748,19 @@ _02069AFE:
mov r1, #0x5
mov r2, #0x0
add r4, r0, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
cmp r0, #0x0
beq _02069B36
add r0, r4, #0x0
mov r1, #0x4c
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
cmp r0, #0x0
bne _02069B36
add r0, r4, #0x0
mov r1, #0xa0
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
lsl r0, r0, #0x18
lsr r0, r0, #0x18
cmp r0, r6
@@ -6959,13 +6960,13 @@ _02069C70:
mov r1, #0x5
mov r2, #0x0
add r4, r0, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
cmp r0, #0x0
beq _02069C70
add r0, r4, #0x0
mov r1, #0x4c
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
cmp r0, #0x0
bne _02069C70
add r0, r7, #0x0
@@ -7007,7 +7008,7 @@ _02069CD0:
strb r0, [r1, #0x0]
add r0, r4, #0x0
mov r1, #0x99
- bl FUN_02067830
+ bl SetBoxMonDataEncrypted
_02069CF2:
pop {r3-r7, pc}
@@ -7030,7 +7031,7 @@ _02069D04:
bl FUN_0206B9B0
mov r1, #0x99
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
cmp r0, #0x0
beq _02069D26
add r0, r7, #0x0
@@ -7049,7 +7050,7 @@ _02069D32:
bl FUN_0206B9B0
mov r1, #0x99
add r2, r6, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
cmp r0, #0x0
beq _02069D4A
add r0, r7, #0x1
@@ -7079,13 +7080,13 @@ _02069D66:
mov r1, #0x5
mov r2, #0x0
add r7, r0, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
cmp r0, #0x0
beq _02069DBA
add r0, r7, #0x0
mov r1, #0x99
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
strb r0, [r4, #0x0]
ldrb r1, [r4, #0x0]
mov r0, #0xf
@@ -7114,7 +7115,7 @@ _02069DB0:
add r0, r7, #0x0
mov r1, #0x99
add r2, sp, #0x8
- bl FUN_02067830
+ bl SetBoxMonDataEncrypted
_02069DBA:
ldr r0, [sp, #0x4]
add r6, r6, #0x1
@@ -7149,13 +7150,13 @@ _02069DEC:
mov r1, #0x5
mov r2, #0x0
add r6, r0, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
cmp r0, #0x0
beq _02069E6A
add r0, r6, #0x0
mov r1, #0x99
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
add r1, sp, #0x4
strb r0, [r1, #0x0]
add r0, r1, #0x0
@@ -7171,14 +7172,14 @@ _02069DEC:
mov r1, #0x99
mov r2, #0x0
add r6, r0, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
mov r1, #0xf0
tst r0, r1
bne _02069E40
add r0, r6, #0x0
mov r1, #0x99
add r2, sp, #0x4
- bl FUN_02067830
+ bl SetBoxMonDataEncrypted
_02069E40:
ldr r0, [sp, #0x0]
cmp r4, r0
@@ -7189,14 +7190,14 @@ _02069E40:
mov r1, #0x99
mov r2, #0x0
add r6, r0, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
mov r1, #0xf0
tst r0, r1
bne _02069E6A
add r0, r6, #0x0
mov r1, #0x99
add r2, sp, #0x4
- bl FUN_02067830
+ bl SetBoxMonDataEncrypted
add r4, r4, #0x1
_02069E6A:
add r4, r4, #0x1
@@ -7284,7 +7285,7 @@ FUN_02069ECC: ; 0x02069ECC
mov r1, #0x6
mov r2, #0x0
bl FUN_020672BC
- ldr r1, _02069F20 ; =0x000001ED
+ ldr r1, _02069F20 ; =SPECIES_ARCEUS
cmp r4, r1
bne _02069F1C
cmp r6, #0x79
@@ -7306,7 +7307,7 @@ _02069F1C:
add sp, #0x4
pop {r3-r6, pc}
.balign 4
-_02069F20: .word 0x000001ED
+_02069F20: .word SPECIES_ARCEUS
thumb_func_start GetArceusTypeByPlate
GetArceusTypeByPlate: ; 0x02069F24
@@ -7393,7 +7394,7 @@ _02069F96:
FUN_02069F9C: ; 0x02069F9C
push {r4, lr}
add r4, r2, #0x0
- bl ConvertUnownOrArceusSpecies
+ bl ResolveMonForme
add r2, r0, #0x0
add r0, r4, #0x0
mov r1, #0x21 ; NARC_POKETOOL_PERSONAL_WOTBL
@@ -7465,18 +7466,18 @@ FUN_0206A014: ; 0x0206A014
add r0, r5, #0x0
mov r1, #0xa3
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
str r0, [sp, #0x8]
add r0, r5, #0x0
mov r1, #0xa2
add r2, sp, #0x8
- bl FUN_02067830
+ bl SetBoxMonDataEncrypted
mov r0, #0x0
str r0, [sp, #0x8]
add r0, r5, #0x0
mov r1, #0x9f
add r2, sp, #0x8
- bl FUN_02067830
+ bl SetBoxMonDataEncrypted
_0206A050:
add sp, #0xc
pop {r3-r6, pc}
@@ -7527,26 +7528,26 @@ FUN_0206A094: ; 0x0206A094
add r0, r5, #0x0
mov r1, #0x5
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
lsl r0, r0, #0x10
lsr r6, r0, #0x10
add r0, r5, #0x0
mov r1, #0x70
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
lsl r0, r0, #0x10
lsr r0, r0, #0x10
str r0, [sp, #0x0]
ldr r1, [sp, #0x0]
add r0, r6, #0x0
mov r2, #0x10
- bl FUN_02068654
+ bl GetMonBaseStat_HandleFormeConversion
add r1, sp, #0x4
strh r0, [r1, #0x2]
ldr r1, [sp, #0x0]
add r0, r6, #0x0
mov r2, #0x11
- bl FUN_02068654
+ bl GetMonBaseStat_HandleFormeConversion
add r1, sp, #0x4
strh r0, [r1, #0x0]
ldrh r2, [r1, #0x2]
@@ -7559,7 +7560,7 @@ FUN_0206A094: ; 0x0206A094
add r0, r5, #0x0
mov r1, #0x6
add r2, #0x2
- bl FUN_02067830
+ bl SetBoxMonDataEncrypted
add sp, #0x8
pop {r3-r7, pc}
_0206A104:
@@ -7576,13 +7577,13 @@ _0206A104:
add r0, r5, #0x0
mov r1, #0x6
add r2, #0x2
- bl FUN_02067830
+ bl SetBoxMonDataEncrypted
add sp, #0x8
pop {r3-r7, pc}
_0206A126:
add r0, r5, #0x0
mov r1, #0x6
- bl FUN_02067830
+ bl SetBoxMonDataEncrypted
_0206A12E:
add sp, #0x8
pop {r3-r7, pc}
@@ -7620,7 +7621,7 @@ FUN_0206A144: ; 0x0206A144
thumb_func_start FUN_0206A16C
FUN_0206A16C: ; 0x0206A16C
push {r4, lr}
- ldr r3, _0206A1C0 ; =0x000001EE
+ ldr r3, _0206A1C0 ; =SPECIES_EGG
cmp r0, r3
bne _0206A178
mov r0, #0x0
@@ -7658,7 +7659,7 @@ _0206A1A6:
lsl r4, r2
mov r2, #0x20
_0206A1B0:
- bl FUN_02068654
+ bl GetMonBaseStat_HandleFormeConversion
tst r0, r4
beq _0206A1BC
mov r0, #0x1
@@ -7667,7 +7668,7 @@ _0206A1BC:
mov r0, #0x0
pop {r4, pc}
.balign 4
-_0206A1C0: .word 0x000001EE
+_0206A1C0: .word SPECIES_EGG
thumb_func_start FUN_0206A1C4
FUN_0206A1C4: ; 0x0206A1C4
@@ -7695,11 +7696,11 @@ FUN_0206A1CC: ; 0x0206A1CC
add r6, r0, #0x0
add r0, r4, #0x0
mov r1, #0x18
- bl FUN_02068678
+ bl GetMonBaseStat
str r0, [sp, #0x4]
add r0, r4, #0x0
mov r1, #0x19
- bl FUN_02068678
+ bl GetMonBaseStat
str r0, [sp, #0x0]
cmp r0, #0x0
beq _0206A226
@@ -7786,17 +7787,17 @@ FUN_0206A23C: ; 0x0206A23C
ldrh r2, [r2, #0x6]
add r0, #0x8
mov r1, #0x80
- bl FUN_0206A3D0
+ bl DecryptMon
add r0, r5, #0x0
ldr r2, [r5, #0x0]
add r0, #0x88
mov r1, #0x64
- bl FUN_0206A3D0
+ bl DecryptMon
add r0, r5, #0x0
ldrh r2, [r5, #0x6]
add r0, #0x8
mov r1, #0x80
- bl FUN_0206A3D0
+ bl DecryptMon
ldr r0, [sp, #0x0]
str r0, [r5, #0x0]
ldr r2, [sp, #0xc]
@@ -7859,12 +7860,12 @@ _0206A32E:
ldrh r2, [r5, #0x6]
add r0, #0x8
mov r1, #0x80
- bl FUN_0206A3A4
+ bl EncryptMon
add r0, r5, #0x0
ldr r2, [r5, #0x0]
add r0, #0x88
mov r1, #0x64
- bl FUN_0206A3A4
+ bl EncryptMon
ldr r0, [sp, #0x4]
bl FreeToHeap
add sp, #0x1c
@@ -7880,19 +7881,19 @@ FUN_0206A370: ; 0x0206A370
nop
_0206A37C: .word ReadWholeNarcMemberByIdPair
- thumb_func_start FUN_0206A380
-FUN_0206A380: ; 0x0206A380
+ thumb_func_start LoadMonBaseStats_HandleUnownOrArceus
+LoadMonBaseStats_HandleUnownOrArceus: ; 0x0206A380
push {r4, lr}
add r4, r2, #0x0
- bl ConvertUnownOrArceusSpecies
+ bl ResolveMonForme
add r2, r0, #0x0
add r0, r4, #0x0
mov r1, #0x2 ; NARC_POKETOOL_PERSONAL_PERSONAL
bl ReadWholeNarcMemberByIdPair
pop {r4, pc}
- thumb_func_start FUN_0206A394
-FUN_0206A394: ; 0x0206A394
+ thumb_func_start LoadMonEvolutionTable
+LoadMonEvolutionTable: ; 0x0206A394
ldr r3, _0206A3A0 ; =ReadWholeNarcMemberByIdPair
add r2, r0, #0x0
add r0, r1, #0x0
@@ -7901,8 +7902,8 @@ FUN_0206A394: ; 0x0206A394
nop
_0206A3A0: .word ReadWholeNarcMemberByIdPair
- thumb_func_start FUN_0206A3A4
-FUN_0206A3A4: ; 0x0206A3A4
+ thumb_func_start EncryptMon
+EncryptMon: ; 0x0206A3A4
push {r0-r3}
push {r3-r7, lr}
add r5, r0, #0x0
@@ -7912,7 +7913,7 @@ FUN_0206A3A4: ; 0x0206A3A4
add r7, sp, #0x20
_0206A3B2:
add r0, r7, #0x0
- bl FUN_0206A3D8
+ bl MonEncryptionLCRNG
ldrh r1, [r5, #0x0]
add r4, r4, #0x1
eor r0, r1
@@ -7927,15 +7928,15 @@ _0206A3C6:
bx r3
.balign 4
- thumb_func_start FUN_0206A3D0
-FUN_0206A3D0: ; 0x0206A3D0
- ldr r3, _0206A3D4 ; =FUN_0206A3A4
+ thumb_func_start DecryptMon
+DecryptMon: ; 0x0206A3D0
+ ldr r3, _0206A3D4 ; =EncryptMon
bx r3
.balign 4
-_0206A3D4: .word FUN_0206A3A4
+_0206A3D4: .word EncryptMon
- thumb_func_start FUN_0206A3D8
-FUN_0206A3D8: ; 0x0206A3D8
+ thumb_func_start MonEncryptionLCRNG
+MonEncryptionLCRNG: ; 0x0206A3D8
ldr r2, [r0, #0x0]
ldr r1, _0206A3F0 ; =0x41C64E6D
add r3, r2, #0x0
@@ -8755,13 +8756,13 @@ _0206A8F8:
add r0, r1, #0x0
pop {r3, pc}
- thumb_func_start ConvertUnownOrArceusSpecies
-ConvertUnownOrArceusSpecies: ; 0x0206A8FC
- ldr r3, _0206A928 ; =0x00000182
+ thumb_func_start ResolveMonForme
+ResolveMonForme: ; 0x0206A8FC
+ ldr r3, _0206A928 ; =SPECIES_DEOXYS
cmp r0, r3
beq _0206A90C
add r2, r3, #0x0
- add r2, #0x1b
+ add r2, #SPECIES_WORMADAM-SPECIES_DEOXYS
cmp r0, r2
beq _0206A91A
bx lr
@@ -8770,7 +8771,7 @@ _0206A90C:
beq _0206A926
cmp r1, #0x3
bgt _0206A926
- add r3, #0x6d
+ add r3, #SPECIES_DEOXYS_ATK-SPECIES_DEOXYS-1
add r0, r1, r3
bx lr
_0206A91A:
@@ -8778,12 +8779,12 @@ _0206A91A:
beq _0206A926
cmp r1, #0x2
bgt _0206A926
- add r3, #0x70
+ add r3, #SPECIES_WORMADAM_SANDY-SPECIES_DEOXYS-1
add r0, r1, r3
_0206A926:
bx lr
.balign 4
-_0206A928: .word 0x00000182
+_0206A928: .word SPECIES_DEOXYS
thumb_func_start MaskOfFlagNo
MaskOfFlagNo: ; 0x0206A92C
@@ -8861,7 +8862,7 @@ FUN_0206A998: ; 0x0206A998
push {r3, lr}
mov r1, #0x5
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
lsl r0, r0, #0x10
lsr r0, r0, #0x10
bl IsPokemonLegendaryOrMythical
@@ -8994,12 +8995,12 @@ FUN_0206AA84: ; 0x0206AA84
add r0, r4, #0x0
mov r1, #0xa1
add r2, sp, #0x0
- bl FUN_02067830
+ bl SetBoxMonDataEncrypted
add r2, sp, #0x0
add r0, r4, #0x0
mov r1, #0xaa
add r2, #0x1
- bl FUN_02067830
+ bl SetBoxMonDataEncrypted
add sp, #0x1c
pop {r3-r4, pc}
diff --git a/arm9/asm/scrcmd.s b/arm9/asm/scrcmd.s
index ec67407a..f3f565d9 100644
--- a/arm9/asm/scrcmd.s
+++ b/arm9/asm/scrcmd.s
@@ -4635,7 +4635,7 @@ FUN_0203BDB8: ; 0x0203BDB8
add r0, r4, #0x0
mov r1, #0x5
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
add r1, r0, #0x0
add r5, #0x80
lsl r1, r1, #0x10
@@ -5530,7 +5530,7 @@ FUN_0203C520: ; 0x0203C520
mov r1, #0x74
add r2, sp, #0xc
add r7, r0, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
add r0, r5, #0x0
bl ScriptReadHalfword
add r1, r0, #0x0
@@ -5542,7 +5542,7 @@ FUN_0203C520: ; 0x0203C520
add r0, r7, #0x0
mov r1, #0x5
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
add r2, r0, #0x0
str r6, [sp, #0x0]
add r0, sp, #0xc
@@ -10085,32 +10085,32 @@ FUN_0203E9CC: ; 0x0203E9CC
add r5, r0, #0x0
mov r1, #0xd
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
add r4, r0, #0x0
add r0, r5, #0x0
mov r1, #0xe
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
add r6, r0, #0x0
add r0, r5, #0x0
mov r1, #0xf
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
add r7, r0, #0x0
add r0, r5, #0x0
mov r1, #0x10
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
str r0, [sp, #0x4]
add r0, r5, #0x0
mov r1, #0x11
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
str r0, [sp, #0x8]
add r0, r5, #0x0
mov r1, #0x12
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
add r1, r4, r6
add r2, r7, r1
ldr r1, [sp, #0x4]
@@ -10196,7 +10196,7 @@ FUN_0203EAB0: ; 0x0203EAB0
bl FUN_0206B9B0
mov r1, #0x5
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
lsl r0, r0, #0x10
lsr r5, r0, #0x10
add r0, r5, #0x0
@@ -10720,14 +10720,14 @@ _0203EF18:
mov r1, #0x5
mov r2, #0x0
add r4, r0, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
ldr r1, _0203EF54 ; =0x00000182
cmp r0, r1
bne _0203EF48
add r0, r4, #0x0
mov r1, #0x70
add r2, sp, #0x4
- bl FUN_02067830
+ bl SetBoxMonDataEncrypted
add r0, r4, #0x0
bl FUN_02066ED8
add r0, r7, #0x0
@@ -10786,12 +10786,12 @@ _0203EFA2:
add r6, r0, #0x0
mov r1, #0x5
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
str r0, [sp, #0x10]
add r0, r6, #0x0
mov r1, #0x70
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
add r3, r0, #0x0
mov r0, #0x67
ldr r1, [sp, #0x10]
diff --git a/arm9/asm/scrcmd_12.s b/arm9/asm/scrcmd_12.s
index 57aec5f4..308f2afa 100644
--- a/arm9/asm/scrcmd_12.s
+++ b/arm9/asm/scrcmd_12.s
@@ -349,17 +349,17 @@ FUN_02042F6C: ; 0x02042F6C
mov r1, #0x97
add r2, r7, #0x0
add r5, #0xf0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
add r1, r7, #0x0
str r0, [sp, #0x8]
add r0, r4, #0x0
add r2, r1, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
str r0, [sp, #0x14]
add r0, r4, #0x0
mov r1, #0x7
add r2, r7, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
add r6, r0, #0x0
bl OS_GetTick
bl rand_ALT
@@ -396,36 +396,36 @@ _02042FE8:
add r0, r4, #0x0
mov r1, #0x6f
add r2, sp, #0x30
- bl FUN_02067830
+ bl SetBoxMonDataEncrypted
add r0, r4, #0x0
mov r1, #0x4b
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
str r0, [sp, #0x18]
add r0, r4, #0x0
mov r1, #0x4a
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
str r0, [sp, #0x1c]
add r0, r4, #0x0
mov r1, #0x49
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
str r0, [sp, #0x20]
add r0, r4, #0x0
mov r1, #0x48
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
str r0, [sp, #0x24]
add r0, r4, #0x0
mov r1, #0x46
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
add r6, r0, #0x0
add r0, r4, #0x0
mov r1, #0x47
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
add r1, r6, r0
ldr r0, [sp, #0x24]
add r1, r0, r1
@@ -445,7 +445,7 @@ _02042FE8:
add r0, r4, #0x0
mov r1, #0x46
add r2, sp, #0x34
- bl FUN_02067830
+ bl SetBoxMonDataEncrypted
mov r0, #0x3e
lsl r0, r0, #0x4
and r0, r6
@@ -454,7 +454,7 @@ _02042FE8:
add r0, r4, #0x0
mov r1, #0x47
add r2, sp, #0x34
- bl FUN_02067830
+ bl SetBoxMonDataEncrypted
mov r0, #0x1f
lsl r0, r0, #0xa
and r0, r6
@@ -463,7 +463,7 @@ _02042FE8:
add r0, r4, #0x0
mov r1, #0x48
add r2, sp, #0x34
- bl FUN_02067830
+ bl SetBoxMonDataEncrypted
bl rand_LC
add r6, r0, #0x0
mov r0, #0x1f
@@ -472,7 +472,7 @@ _02042FE8:
add r0, r4, #0x0
mov r1, #0x49
add r2, sp, #0x34
- bl FUN_02067830
+ bl SetBoxMonDataEncrypted
mov r0, #0x3e
lsl r0, r0, #0x4
and r0, r6
@@ -481,7 +481,7 @@ _02042FE8:
add r0, r4, #0x0
mov r1, #0x4a
add r2, sp, #0x34
- bl FUN_02067830
+ bl SetBoxMonDataEncrypted
mov r0, #0x1f
lsl r0, r0, #0xa
and r0, r6
@@ -490,7 +490,7 @@ _02042FE8:
add r0, r4, #0x0
mov r1, #0x4b
add r2, sp, #0x34
- bl FUN_02067830
+ bl SetBoxMonDataEncrypted
_020430DA:
ldr r0, [sp, #0x4]
ldr r0, [r0, #0xc]
@@ -499,7 +499,7 @@ _020430DA:
add r0, r4, #0x0
mov r1, #0x2e
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
cmp r0, #0x0
beq _020430FC
mov r0, #0x49
@@ -510,7 +510,7 @@ _020430FC:
add r0, r4, #0x0
mov r1, #0x2f
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
cmp r0, #0x0
beq _02043114
mov r0, #0x4a
@@ -521,7 +521,7 @@ _02043114:
add r0, r4, #0x0
mov r1, #0x30
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
cmp r0, #0x0
beq _0204312C
mov r0, #0x4b
@@ -532,7 +532,7 @@ _0204312C:
add r0, r4, #0x0
mov r1, #0x31
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
cmp r0, #0x0
beq _02043144
mov r0, #0x4c
@@ -543,7 +543,7 @@ _02043144:
add r0, r4, #0x0
mov r1, #0x32
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
cmp r0, #0x0
beq _0204315C
mov r0, #0x4d
@@ -554,7 +554,7 @@ _0204315C:
add r0, r4, #0x0
mov r1, #0x33
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
cmp r0, #0x0
beq _02043174
mov r0, #0x4e
@@ -565,7 +565,7 @@ _02043174:
add r0, r4, #0x0
mov r1, #0x34
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
cmp r0, #0x0
beq _0204318C
mov r0, #0x4f
@@ -576,7 +576,7 @@ _0204318C:
add r0, r4, #0x0
mov r1, #0x67
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
cmp r0, #0x0
beq _020431A4
mov r0, #0x19
@@ -587,7 +587,7 @@ _020431A4:
add r0, r4, #0x0
mov r1, #0x68
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
cmp r0, #0x0
beq _020431BC
mov r0, #0x1a
@@ -598,7 +598,7 @@ _020431BC:
add r0, r4, #0x0
mov r1, #0x69
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
cmp r0, #0x0
beq _020431D4
mov r0, #0x1b
@@ -629,15 +629,15 @@ _020431D4:
add r0, r7, #0x0
mov r1, #0x90
add r2, r5, #0x0
- bl FUN_02067830
+ bl SetBoxMonDataEncrypted
add r0, r7, #0x0
mov r1, #0x7
add r2, sp, #0x2c
- bl FUN_02067830
+ bl SetBoxMonDataEncrypted
add r0, r7, #0x0
mov r1, #0x9c
add r2, sp, #0x28
- bl FUN_02067830
+ bl SetBoxMonDataEncrypted
add r0, r5, #0x0
add r4, r7, #0x0
bl FUN_02021A20
diff --git a/arm9/asm/scrcmd_18.s b/arm9/asm/scrcmd_18.s
index 5b96a589..13d8bece 100644
--- a/arm9/asm/scrcmd_18.s
+++ b/arm9/asm/scrcmd_18.s
@@ -95,13 +95,13 @@ FUN_0204434C: ; 0x0204434C
mov r1, #0x4c
mov r2, #0x0
add r5, r0, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
cmp r0, #0x0
bne _020443A0
add r0, r5, #0x0
mov r1, #0x5
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
b _020443A2
_020443A0:
mov r0, #0x0
@@ -141,7 +141,7 @@ FUN_020443A8: ; 0x020443A8
bl FUN_0206B9B0
mov r1, #0x7
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
lsl r0, r0, #0x10
lsr r5, r0, #0x10
add r0, r7, #0x0
@@ -294,7 +294,7 @@ FUN_020444F4: ; 0x020444F4
mov r1, #0x4c
add r4, r0, #0x0
strh r2, [r6, #0x0]
- bl FUN_020671BC
+ bl GetMonDataEncrypted
cmp r0, #0x0
beq _02044556
mov r0, #0x0
@@ -303,25 +303,25 @@ _02044556:
add r0, r4, #0x0
mov r1, #0x36
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
cmp r5, r0
beq _0204458E
add r0, r4, #0x0
mov r1, #0x37
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
cmp r5, r0
beq _0204458E
add r0, r4, #0x0
mov r1, #0x38
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
cmp r5, r0
beq _0204458E
add r0, r4, #0x0
mov r1, #0x39
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
cmp r5, r0
bne _02044592
_0204458E:
@@ -375,31 +375,31 @@ _020445E4:
mov r1, #0x4c
mov r2, #0x0
add r4, r0, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
cmp r0, #0x0
bne _0204463E
add r0, r4, #0x0
mov r1, #0x36
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
cmp r5, r0
beq _02044638
add r0, r4, #0x0
mov r1, #0x37
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
cmp r5, r0
beq _02044638
add r0, r4, #0x0
mov r1, #0x38
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
cmp r5, r0
beq _02044638
add r0, r4, #0x0
mov r1, #0x39
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
cmp r5, r0
bne _0204463E
_02044638:
@@ -493,13 +493,13 @@ _020446EA:
mov r1, #0x4c
mov r2, #0x0
add r6, r0, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
cmp r0, #0x0
bne _0204471A
add r0, r6, #0x0
mov r1, #0xa0
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
ldr r1, [sp, #0x0]
cmp r0, r1
bhi _0204471A
@@ -549,13 +549,13 @@ FUN_02044730: ; 0x02044730
mov r1, #0x4c
add r5, r0, #0x0
strh r2, [r4, #0x0]
- bl FUN_020671BC
+ bl GetMonDataEncrypted
cmp r0, #0x0
bne _02044786
add r0, r5, #0x0
mov r1, #0xa0
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
strh r0, [r4, #0x0]
_02044786:
mov r0, #0x0
@@ -601,7 +601,7 @@ _020447D2:
mov r1, #0x4c
mov r2, #0x0
add r5, r0, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
cmp r0, #0x0
beq _020447F2
mov r0, #0x0
@@ -655,7 +655,7 @@ _02044848:
mov r1, #0x4c
mov r2, #0x0
add r4, r0, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
cmp r0, #0x0
bne _02044874
add r0, r4, #0x0
@@ -707,7 +707,7 @@ FUN_0204488C: ; 0x0204488C
bl FUN_0206B9B0
mov r1, #0x9
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
strh r0, [r6, #0x0]
mov r0, #0x0
pop {r4-r6, pc}
@@ -748,7 +748,7 @@ FUN_020448D4: ; 0x020448D4
mov r1, #0x9
mov r2, #0x0
add r5, r0, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
add r1, sp, #0x4
strh r0, [r1, #0x0]
cmp r4, #0x0
@@ -756,7 +756,7 @@ FUN_020448D4: ; 0x020448D4
add r0, r5, #0x0
mov r1, #0x6
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
lsl r0, r0, #0x10
lsr r0, r0, #0x10
mov r1, #0x1
@@ -774,7 +774,7 @@ _0204495A:
add r0, r5, #0x0
mov r1, #0x9a
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
cmp r0, #0xb
bne _0204496E
add r0, r4, #0x1
@@ -784,7 +784,7 @@ _0204496E:
add r0, r5, #0x0
mov r1, #0x97
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
cmp r7, r0
bne _02044982
add r0, r4, #0x1
@@ -804,7 +804,7 @@ _02044994:
add r0, r5, #0x0
mov r1, #0x9
add r2, sp, #0x4
- bl FUN_02067830
+ bl SetBoxMonDataEncrypted
mov r0, #0x0
add sp, #0x8
pop {r3-r7, pc}
@@ -838,7 +838,7 @@ FUN_020449A4: ; 0x020449A4
mov r1, #0x9
mov r2, #0x0
add r5, r0, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
add r1, sp, #0x0
strh r0, [r1, #0x0]
ldrh r0, [r1, #0x0]
@@ -853,7 +853,7 @@ _020449FA:
add r0, r5, #0x0
mov r1, #0x9
add r2, sp, #0x0
- bl FUN_02067830
+ bl SetBoxMonDataEncrypted
mov r0, #0x0
add sp, #0x4
pop {r3-r6, pc}
@@ -894,7 +894,7 @@ FUN_02044A0C: ; 0x02044A0C
add r4, #0x13
add r1, r4, #0x0
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
strh r0, [r6, #0x0]
mov r0, #0x0
pop {r3-r7, pc}
@@ -956,12 +956,12 @@ FUN_02044A94: ; 0x02044A94
add r4, r0, #0x0
mov r1, #0xb0
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
strh r0, [r6, #0x0]
add r0, r4, #0x0
mov r1, #0xb1
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
strh r0, [r7, #0x0]
mov r0, #0x0
pop {r3-r7, pc}
@@ -1016,7 +1016,7 @@ _02044B5A:
bl FUN_0206B9B0
mov r1, #0x4c
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
cmp r0, #0x0
bne _02044B74
add r4, r4, #0x1
@@ -1072,13 +1072,13 @@ _02044BC8:
mov r1, #0x4c
mov r2, #0x0
add r6, r0, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
cmp r0, #0x0
bne _02044BF8
add r0, r6, #0x0
mov r1, #0xa2
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
cmp r0, #0x0
beq _02044BF8
add r4, r4, #0x1
@@ -1128,13 +1128,13 @@ _02044C44:
mov r1, #0x4c
mov r2, #0x0
add r6, r0, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
cmp r0, #0x0
bne _02044C6E
add r0, r6, #0x0
mov r1, #0xa2
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
cmp r0, #0x0
beq _02044C6E
add r4, r4, #0x1
@@ -1181,7 +1181,7 @@ _02044CB6:
bl FUN_0206B9B0
mov r1, #0x4c
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
cmp r0, #0x0
beq _02044CD0
add r4, r4, #0x1
@@ -1226,7 +1226,7 @@ _02044D12:
bl FUN_0206B9B0
add r1, r7, #0x0
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
cmp r0, #0x0
beq _02044D32
ldr r0, [sp, #0x0]
@@ -1272,7 +1272,7 @@ FUN_02044D44: ; 0x02044D44
bl FUN_0206B9B0
mov r1, #0x6f
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
strh r0, [r4, #0x0]
mov r0, #0x0
pop {r4-r6, pc}
@@ -1305,7 +1305,7 @@ FUN_02044D8C: ; 0x02044D8C
mov r1, #0x4c
mov r2, #0x0
add r6, r0, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
cmp r0, #0x0
beq _02044DDA
mov r0, #0x0
@@ -1316,7 +1316,7 @@ _02044DDA:
add r0, r6, #0x0
mov r1, #0x36
add r2, r4, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
cmp r0, #0x0
beq _02044DF0
add r0, r4, #0x1
@@ -1326,7 +1326,7 @@ _02044DF0:
add r0, r6, #0x0
mov r1, #0x37
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
cmp r0, #0x0
beq _02044E04
add r0, r4, #0x1
@@ -1336,7 +1336,7 @@ _02044E04:
add r0, r6, #0x0
mov r1, #0x38
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
cmp r0, #0x0
beq _02044E18
add r0, r4, #0x1
@@ -1346,7 +1346,7 @@ _02044E18:
add r0, r6, #0x0
mov r1, #0x39
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
cmp r0, #0x0
beq _02044E2C
add r0, r4, #0x1
@@ -1424,7 +1424,7 @@ FUN_02044E78: ; 0x02044E78
add r4, #0x36
add r1, r4, #0x0
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
strh r0, [r6, #0x0]
mov r0, #0x0
pop {r3-r7, pc}
@@ -1457,7 +1457,7 @@ FUN_02044ED8: ; 0x02044ED8
bl FUN_0206B9B0
mov r1, #0x6
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
strh r0, [r6, #0x0]
mov r0, #0x0
pop {r4-r6, pc}
@@ -1484,7 +1484,7 @@ FUN_02044F20: ; 0x02044F20
strh r2, [r1, #0x0]
mov r1, #0x6
add r2, sp, #0x0
- bl FUN_02067830
+ bl SetBoxMonDataEncrypted
mov r0, #0x0
pop {r3-r5, pc}
@@ -1527,13 +1527,13 @@ _02044F9E:
mov r1, #0x4c
mov r2, #0x0
add r4, r0, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
cmp r0, #0x0
bne _02044FD4
add r0, r4, #0x0
mov r1, #0x5
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
lsl r0, r0, #0x10
lsr r1, r0, #0x10
ldr r0, [sp, #0x0]
@@ -1593,7 +1593,7 @@ _0204502A:
add r1, r0, #0x0
add r0, r6, #0x0
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
cmp r0, #0x0
beq _02045048
add r0, r5, #0x1
@@ -1653,7 +1653,7 @@ _020450A6:
mov r1, #0x4c
mov r2, #0x0
add r4, r0, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
cmp r0, #0x0
bne _020450E8
add r0, r7, #0x0
@@ -1662,7 +1662,7 @@ _020450A6:
add r1, r0, #0x0
add r0, r4, #0x0
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
cmp r0, #0x0
beq _020450DE
ldr r0, [sp, #0x4]
@@ -1734,7 +1734,7 @@ FUN_02045104: ; 0x02045104
add r1, r0, #0x0
add r0, r5, #0x0
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
strh r0, [r4, #0x0]
mov r0, #0x0
pop {r3-r7, pc}
@@ -1777,7 +1777,7 @@ FUN_02045170: ; 0x02045170
add r1, r0, #0x0
add r0, r5, #0x0
add r2, sp, #0x0
- bl FUN_02067830
+ bl SetBoxMonDataEncrypted
mov r0, #0x0
add sp, #0x4
pop {r3-r6, pc}
@@ -1821,13 +1821,13 @@ _02045212:
mov r1, #0x4c
mov r2, #0x0
add r4, r0, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
cmp r0, #0x0
beq _02045242
add r0, r4, #0x0
mov r1, #0x3
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
cmp r0, #0x0
beq _02045242
ldr r0, [sp, #0x0]
diff --git a/arm9/asm/scrcmd_4.s b/arm9/asm/scrcmd_4.s
index 9179c025..0d477bf0 100644
--- a/arm9/asm/scrcmd_4.s
+++ b/arm9/asm/scrcmd_4.s
@@ -947,7 +947,7 @@ FUN_02040E4C: ; 0x02040E4C
add r4, #0x36
add r1, r4, #0x0
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
lsl r0, r0, #0x10
lsr r2, r0, #0x10
ldr r0, [r7, #0x0]
diff --git a/arm9/asm/scrcmd_5.s b/arm9/asm/scrcmd_5.s
index 96f58ea5..b449fd86 100644
--- a/arm9/asm/scrcmd_5.s
+++ b/arm9/asm/scrcmd_5.s
@@ -91,13 +91,13 @@ _0204123C:
mov r1, #0x4c
mov r2, #0x0
add r4, r0, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
cmp r0, #0x0
bne _0204127C
add r0, r4, #0x0
mov r1, #0x7
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
lsl r0, r0, #0x10
lsr r1, r0, #0x10
lsl r1, r1, #0x10
diff --git a/arm9/asm/unk_02023C40.s b/arm9/asm/unk_02023C40.s
index 9ab8cab3..04275173 100644
--- a/arm9/asm/unk_02023C40.s
+++ b/arm9/asm/unk_02023C40.s
@@ -785,7 +785,7 @@ FUN_0202415C: ; 0x0202415C
add r0, r2, #0x0
mov r1, #0x70
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
lsl r0, r0, #0x18
lsr r4, r0, #0x18
ldr r0, _02024198 ; =0x00000182
@@ -884,7 +884,7 @@ _02024210:
add r0, r2, #0x0
mov r1, #0x70
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
add r2, r0, #0x0
add r0, r5, #0x0
add r1, r4, #0x0
@@ -897,7 +897,7 @@ _0202422E:
add r0, r2, #0x0
mov r1, #0x70
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
add r2, r0, #0x0
add r0, r5, #0x0
add r1, r4, #0x0
@@ -911,7 +911,7 @@ _0202424A:
add r0, r2, #0x0
mov r1, #0x70
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
add r2, r0, #0x0
add r0, r5, #0x0
add r1, r4, #0x0
@@ -925,7 +925,7 @@ _02024268:
add r0, r2, #0x0
mov r1, #0x70
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
add r2, r0, #0x0
add r0, r5, #0x0
add r1, r4, #0x0
@@ -975,7 +975,7 @@ FUN_020242C8: ; 0x020242C8
add r0, r6, #0x0
mov r1, #0x12
add r4, r2, #0x0
- bl FUN_02068678
+ bl GetMonBaseStat
cmp r0, #0xff
bne _020242EA
cmp r4, #0x0
@@ -1916,14 +1916,14 @@ FUN_0202498C: ; 0x0202498C
add r0, r1, #0x0
mov r1, #0x5
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
lsl r0, r0, #0x10
lsr r0, r0, #0x10
str r0, [sp, #0x4]
mov r1, #0x0
ldr r0, [sp, #0x0]
add r2, r1, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
add r7, r0, #0x0
ldr r0, [sp, #0x0]
bl FUN_020689E0
@@ -2099,18 +2099,18 @@ FUN_02024AF0: ; 0x02024AF0
add r0, r1, #0x0
mov r1, #0x5
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
lsl r0, r0, #0x10
lsr r6, r0, #0x10
ldr r0, [sp, #0x0]
mov r1, #0xc
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
str r0, [sp, #0x8]
mov r1, #0x0
ldr r0, [sp, #0x0]
add r2, r1, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
str r0, [sp, #0x4]
ldr r0, [sp, #0x0]
bl FUN_020689E0
diff --git a/arm9/asm/unk_02025658.s b/arm9/asm/unk_02025658.s
index 8670750d..f5837edd 100644
--- a/arm9/asm/unk_02025658.s
+++ b/arm9/asm/unk_02025658.s
@@ -120,19 +120,19 @@ _0202572A:
mov r1, #0x5
mov r2, #0x0
add r7, r0, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
lsl r0, r0, #0x10
lsr r0, r0, #0x10
str r0, [sp, #0x4]
add r0, r7, #0x0
mov r1, #0x4c
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
str r0, [sp, #0x8]
add r0, r7, #0x0
mov r1, #0x70
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
str r0, [sp, #0xc]
add r0, r7, #0x0
bl FUN_0206B6C8
diff --git a/arm9/asm/unk_02026CD0.s b/arm9/asm/unk_02026CD0.s
index cae28930..dd0001ea 100644
--- a/arm9/asm/unk_02026CD0.s
+++ b/arm9/asm/unk_02026CD0.s
@@ -15,27 +15,27 @@ FUN_02026CD0: ; 0x02026CD0
mov r1, #0x5
mov r2, #0x0
add r7, r3, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
add r2, r5, #0x0
strh r0, [r5, #0x8]
add r0, r4, #0x0
mov r1, #0x74
add r2, #0xa
- bl FUN_020671BC
+ bl GetMonDataEncrypted
mov r1, #0x0
add r0, r4, #0x0
add r2, r1, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
str r0, [r5, #0x0]
add r0, r4, #0x0
mov r1, #0x7
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
str r0, [r5, #0x4]
add r0, r4, #0x0
mov r1, #0x70
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
add r1, r5, #0x0
add r1, #0x33
strb r0, [r1, #0x0]
@@ -2125,12 +2125,12 @@ _02027B9C:
add r0, r4, #0x0
mov r1, #0x74
add r2, #0x12
- bl FUN_02067830
+ bl SetBoxMonDataEncrypted
add r5, #0x3b
add r0, r4, #0x0
mov r1, #0x70
add r2, r5, #0x0
- bl FUN_02067830
+ bl SetBoxMonDataEncrypted
add sp, #0x10
pop {r3-r5, pc}
nop
@@ -2300,12 +2300,12 @@ FUN_02027CB8: ; 0x02027CB8
add r0, r4, #0x0
mov r1, #0x74
add r2, #0xa
- bl FUN_02067830
+ bl SetBoxMonDataEncrypted
add r5, #0x33
add r0, r4, #0x0
mov r1, #0x70
add r2, r5, #0x0
- bl FUN_02067830
+ bl SetBoxMonDataEncrypted
add sp, #0x10
pop {r3-r5, pc}
.balign 4
diff --git a/arm9/asm/unk_0202B034.s b/arm9/asm/unk_0202B034.s
index 5df7d3d0..88a0df53 100644
--- a/arm9/asm/unk_0202B034.s
+++ b/arm9/asm/unk_0202B034.s
@@ -84,60 +84,60 @@ _0202B0BA:
add r0, r4, #0x0
mov r1, #0x4c
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
cmp r0, #0x0
bne _0202B17E
add r0, r4, #0x0
mov r1, #0x5
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
strh r0, [r5, #0x0]
add r0, r4, #0x0
mov r1, #0xa0
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
strb r0, [r5, #0x2]
add r0, r4, #0x0
mov r1, #0x70
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
mov r1, #0x0
strb r0, [r5, #0x3]
add r0, r4, #0x0
add r2, r1, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
str r0, [r5, #0x4]
add r0, r4, #0x0
mov r1, #0x7
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
str r0, [r5, #0x8]
add r0, r4, #0x0
mov r1, #0x36
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
strh r0, [r5, #0x32]
add r0, r4, #0x0
mov r1, #0x37
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
strh r0, [r5, #0x34]
add r0, r4, #0x0
mov r1, #0x38
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
strh r0, [r5, #0x36]
add r0, r4, #0x0
mov r1, #0x39
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
strh r0, [r5, #0x38]
cmp r6, #0x0
beq _0202B176
add r0, r4, #0x0
mov r1, #0x76
add r2, r6, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
add r1, r5, #0x0
add r0, r6, #0x0
add r1, #0xc
@@ -146,7 +146,7 @@ _0202B0BA:
add r0, r4, #0x0
mov r1, #0x90
add r2, r6, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
add r1, r5, #0x0
add r0, r6, #0x0
add r1, #0x22
diff --git a/arm9/asm/unk_0202BE98.s b/arm9/asm/unk_0202BE98.s
index 818023a8..edec1ae4 100644
--- a/arm9/asm/unk_0202BE98.s
+++ b/arm9/asm/unk_0202BE98.s
@@ -27,7 +27,7 @@ _0202BEB4:
add r0, r5, #0x0
add r1, r6, #0x0
add r2, r7, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
cmp r0, #0x0
beq _0202BECC
bl ErrorHandling
@@ -57,7 +57,7 @@ _0202BEF0:
add r0, r5, #0x0
add r1, r6, #0x0
add r2, r7, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
cmp r0, #0x0
beq _0202BF08
bl ErrorHandling
@@ -205,7 +205,7 @@ _0202C00A:
add r0, r5, #0x0
add r1, r7, #0x0
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
cmp r0, #0x0
beq _0202C01A
add r4, r4, #0x1
diff --git a/arm9/asm/unk_0202C144.s b/arm9/asm/unk_0202C144.s
index 5bf7d92b..50c7240b 100644
--- a/arm9/asm/unk_0202C144.s
+++ b/arm9/asm/unk_0202C144.s
@@ -11,7 +11,7 @@ FUN_0202C144: ; 0x0202C144
add r0, r4, #0x0
mov r1, #0x4c
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
cmp r0, #0x0
bne _0202C194
add r0, r5, #0x0
@@ -23,7 +23,7 @@ FUN_0202C144: ; 0x0202C144
add r0, r4, #0x0
mov r1, #0x5
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
add r2, r0, #0x0
lsl r2, r2, #0x10
add r0, r7, #0x0
diff --git a/arm9/asm/unk_02035068.s b/arm9/asm/unk_02035068.s
index 5b78d799..639703a5 100644
--- a/arm9/asm/unk_02035068.s
+++ b/arm9/asm/unk_02035068.s
@@ -2457,7 +2457,7 @@ _020363F6:
ldr r0, [sp, #0xc]
mov r1, #0x6
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
cmp r0, #0x0
bne _02036474
add r0, r5, #0x0
diff --git a/arm9/asm/unk_020377F0.s b/arm9/asm/unk_020377F0.s
index 15e631e1..5c30449f 100644
--- a/arm9/asm/unk_020377F0.s
+++ b/arm9/asm/unk_020377F0.s
@@ -1585,7 +1585,7 @@ _020382F6:
ldr r0, [r4, #0x44]
mov r1, #0x6
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
add r3, r0, #0x0
add r0, sp, #0x30
str r0, [sp, #0x0]
@@ -1910,7 +1910,7 @@ _02038590:
ldr r2, [r4, #0xc]
mov r1, #0x75
add r2, #0x1c
- bl FUN_02067830
+ bl SetBoxMonDataEncrypted
pop {r3-r5, pc}
_020385A8:
ldr r0, [r5, #0xc]
@@ -1977,13 +1977,13 @@ _02038620:
mov r1, #0x6f
mov r2, #0x0
add r6, r0, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
ldr r1, [r4, #0xc]
mov r2, #0x0
str r0, [r1, #0x10]
add r0, r6, #0x0
mov r1, #0x70
- bl FUN_020671BC
+ bl GetMonDataEncrypted
ldr r1, [r4, #0xc]
cmp r5, #0x0
str r0, [r1, #0x8]
diff --git a/arm9/asm/unk_0204653C.s b/arm9/asm/unk_0204653C.s
index 5a561e2e..bbe445d7 100644
--- a/arm9/asm/unk_0204653C.s
+++ b/arm9/asm/unk_0204653C.s
@@ -1714,7 +1714,7 @@ _0204732A:
bl FUN_0206B9B0
mov r1, #0x5
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
add r1, r0, #0x0
mov r0, #0x0
bl FUN_0206BB48
@@ -1761,7 +1761,7 @@ _02047390:
bl FUN_0206B9B0
mov r1, #0x5
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
add r1, r0, #0x0
mov r0, #0x0
bl FUN_0206BB48
@@ -1835,12 +1835,12 @@ _02047400:
add r0, r6, #0x0
mov r1, #0x5
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
add r7, r0, #0x0
add r0, r6, #0x0
mov r1, #0x6f
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
add r2, r0, #0x0
mov r3, #0xb
str r3, [sp, #0x0]
@@ -1879,12 +1879,12 @@ _02047470:
add r0, r6, #0x0
mov r1, #0x5
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
add r7, r0, #0x0
add r0, r6, #0x0
mov r1, #0x6f
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
add r2, r0, #0x0
mov r3, #0xb
str r3, [sp, #0x0]
diff --git a/arm9/asm/unk_02047500.s b/arm9/asm/unk_02047500.s
index 3925c2c6..8668643a 100644
--- a/arm9/asm/unk_02047500.s
+++ b/arm9/asm/unk_02047500.s
@@ -242,7 +242,7 @@ FUN_02047668: ; 0x02047668
bl FUN_0204A1D8
mov r1, #0x5
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
ldr r1, _020476C8 ; =0x000001DF
sub r0, r0, r1
cmp r0, #0xe
diff --git a/arm9/asm/unk_020476CC.s b/arm9/asm/unk_020476CC.s
index 887e4151..073183fe 100644
--- a/arm9/asm/unk_020476CC.s
+++ b/arm9/asm/unk_020476CC.s
@@ -667,7 +667,7 @@ _02047C40:
add r0, r5, #0x0
mov r1, #0xa0
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
cmp r7, r0
beq _02047C82
cmp r7, #0x0
@@ -675,14 +675,14 @@ _02047C40:
add r0, r5, #0x0
mov r1, #0x5
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
add r1, r7, #0x0
- bl FUN_02068758
+ bl GetMonExpByLevel
str r0, [sp, #0x18]
add r0, r5, #0x0
mov r1, #0x8
add r2, sp, #0x18
- bl FUN_02067830
+ bl SetBoxMonDataEncrypted
add r0, r5, #0x0
bl FUN_02066ED8
_02047C82:
diff --git a/arm9/asm/unk_0204A01C.s b/arm9/asm/unk_0204A01C.s
index 633c56f0..f9bf1b3c 100644
--- a/arm9/asm/unk_0204A01C.s
+++ b/arm9/asm/unk_0204A01C.s
@@ -9,7 +9,7 @@ FUN_0204A01C: ; 0x0204A01C
mov r1, #0xa2
mov r2, #0x0
add r4, r0, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
cmp r0, #0x0
bne _0204A030
mov r0, #0x0
@@ -18,7 +18,7 @@ _0204A030:
add r0, r4, #0x0
mov r1, #0x4c
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
cmp r0, #0x0
bne _0204A042
mov r0, #0x1
@@ -70,7 +70,7 @@ FUN_0204A048: ; 0x0204A048
add r2, sp, #0x1c
str r0, [sp, #0x1c]
add r0, r4, #0x0
- bl FUN_02067830
+ bl SetBoxMonDataEncrypted
ldr r0, [sp, #0x18]
add r1, r4, #0x0
bl FUN_0206B900
@@ -155,31 +155,31 @@ _0204A14A:
mov r1, #0x4c
mov r2, #0x0
add r4, r0, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
cmp r0, #0x0
bne _0204A19C
add r0, r4, #0x0
mov r1, #0x36
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
cmp r5, r0
beq _0204A198
add r0, r4, #0x0
mov r1, #0x37
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
cmp r5, r0
beq _0204A198
add r0, r4, #0x0
mov r1, #0x38
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
cmp r5, r0
beq _0204A198
add r0, r4, #0x0
mov r1, #0x39
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
cmp r5, r0
bne _0204A19C
_0204A198:
@@ -265,7 +265,7 @@ _0204A21C:
mov r1, #0x4c
mov r2, #0x0
add r7, r0, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
cmp r0, #0x0
bne _0204A236
add r0, r7, #0x0
@@ -314,13 +314,13 @@ _0204A272:
mov r1, #0x4c
mov r2, #0x0
add r4, r0, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
cmp r0, #0x0
bne _0204A292
add r0, r4, #0x0
mov r1, #0x19
add r2, sp, #0x0
- bl FUN_02067830
+ bl SetBoxMonDataEncrypted
_0204A292:
add r5, r5, #0x1
cmp r5, r6
@@ -353,14 +353,14 @@ _0204A2B4:
add r0, r5, #0x0
mov r1, #0x9f
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
mov r1, #0x88
tst r0, r1
beq _0204A308
add r0, r5, #0x0
mov r1, #0xa2
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
str r0, [sp, #0xc]
cmp r0, #0x1
bls _0204A2EA
@@ -370,7 +370,7 @@ _0204A2EA:
add r0, r5, #0x0
mov r1, #0xa2
add r2, sp, #0xc
- bl FUN_02067830
+ bl SetBoxMonDataEncrypted
ldr r0, [sp, #0xc]
cmp r0, #0x1
bne _0204A306
@@ -411,14 +411,14 @@ FUN_0204A32C: ; 0x0204A32C
mov r1, #0x9f
mov r2, #0x0
add r4, r0, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
mov r1, #0x88
tst r0, r1
beq _0204A362
add r0, r4, #0x0
mov r1, #0xa2
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
cmp r0, #0x1
bne _0204A362
mov r0, #0x0
@@ -426,7 +426,7 @@ FUN_0204A32C: ; 0x0204A32C
add r0, r4, #0x0
mov r1, #0x9f
add r2, sp, #0x0
- bl FUN_02067830
+ bl SetBoxMonDataEncrypted
add sp, #0x4
mov r0, #0x1
pop {r3-r4, pc}
diff --git a/arm9/asm/unk_0204B9EC.s b/arm9/asm/unk_0204B9EC.s
index 9c90b25f..5889e176 100644
--- a/arm9/asm/unk_0204B9EC.s
+++ b/arm9/asm/unk_0204B9EC.s
@@ -198,7 +198,7 @@ _0204BB3C:
add r0, r4, #0x0
mov r1, #0x5
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
lsl r0, r0, #0x10
lsr r0, r0, #0x10
strh r0, [r5, #0x0]
@@ -220,12 +220,12 @@ _0204BB72:
ldrb r0, [r7, #0x2]
strh r0, [r5, #0x4]
add r0, r4, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
strb r0, [r5, #0x6]
add r0, r4, #0x0
mov r1, #0xb1
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
strb r0, [r5, #0x7]
add r6, r6, #0x1
add r5, #0x8
diff --git a/arm9/asm/unk_02050E48.s b/arm9/asm/unk_02050E48.s
index 00281e8b..037d98fd 100644
--- a/arm9/asm/unk_02050E48.s
+++ b/arm9/asm/unk_02050E48.s
@@ -1720,7 +1720,7 @@ _02051BD6:
mov r1, #0x5
add r0, r0, r6
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
add r1, r0, #0x0
ldr r0, [sp, #0x18]
ldr r2, [r5, #0xc]
diff --git a/arm9/asm/unk_02054C14.s b/arm9/asm/unk_02054C14.s
index 5d88393f..46c1432a 100644
--- a/arm9/asm/unk_02054C14.s
+++ b/arm9/asm/unk_02054C14.s
@@ -302,7 +302,7 @@ _02054E02:
bl FUN_0206B9B0
add r1, r7, #0x0
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
cmp r0, #0x0
bne _02054E1E
add r0, r4, #0x0
@@ -338,7 +338,7 @@ _02054E4A:
bl FUN_0206B9B0
mov r1, #0x5
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
strh r0, [r5, #0x0]
add r6, r6, #0x1
add r5, r5, #0x2
diff --git a/arm9/asm/unk_020603B0.s b/arm9/asm/unk_020603B0.s
index 14461752..b644f6b3 100644
--- a/arm9/asm/unk_020603B0.s
+++ b/arm9/asm/unk_020603B0.s
@@ -242,7 +242,7 @@ _020604D0:
ldr r0, [sp, #0x1c]
mov r1, #0xae
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
add r2, r0, #0x0
add r0, r4, #0x0
mov r1, #0x2
@@ -250,7 +250,7 @@ _020604D0:
mov r1, #0x0
ldr r0, [sp, #0x1c]
add r2, r1, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
add r2, r0, #0x0
add r0, r4, #0x0
mov r1, #0x3
@@ -258,7 +258,7 @@ _020604D0:
ldr r0, [sp, #0x1c]
mov r1, #0xa3
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
add r2, r0, #0x0
add r0, r4, #0x0
mov r1, #0x5
diff --git a/arm9/asm/unk_02060CCC.s b/arm9/asm/unk_02060CCC.s
index a3cdf7b3..f655ecb9 100644
--- a/arm9/asm/unk_02060CCC.s
+++ b/arm9/asm/unk_02060CCC.s
@@ -323,7 +323,7 @@ FUN_02060E04: ; 0x02060E04
add r0, r6, #0x0
mov r1, #0x76
add r2, r4, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
add r0, r4, #0x0
add r1, r5, #0x0
mov r2, #0xb
@@ -342,22 +342,22 @@ FUN_02060E34: ; 0x02060E34
mov r1, #0x5
mov r2, #0x0
add r7, r3, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
strh r0, [r4, #0x0]
add r0, r5, #0x0
mov r1, #0x6f
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
strb r0, [r6, #0x0]
add r0, r5, #0x0
mov r1, #0xc
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
strb r0, [r7, #0x0]
add r0, r5, #0x0
mov r1, #0x79
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
ldr r1, [sp, #0x18]
strb r0, [r1, #0x0]
pop {r3-r7, pc}
@@ -420,7 +420,7 @@ FUN_02060ECC: ; 0x02060ECC
mov r1, #0x4d
mov r2, #0x0
add r7, r3, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
strb r0, [r4, #0x0]
ldrb r0, [r4, #0x0]
cmp r0, #0x0
@@ -432,7 +432,7 @@ FUN_02060ECC: ; 0x02060ECC
add r0, r5, #0x0
mov r1, #0x76
add r2, r4, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
add r0, r4, #0x0
add r1, r7, #0x0
mov r2, #0xb
@@ -491,7 +491,7 @@ FUN_02060F3C: ; 0x02060F3C
add r0, r5, #0x0
mov r1, #0x4d
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
strb r0, [r4, #0x7]
add r2, r4, #0x7
add r4, #0x8
@@ -624,7 +624,7 @@ FUN_02061028: ; 0x02061028
add r0, r4, #0x0
mov r1, #0x9a
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
strh r0, [r5, #0x22]
ldrh r0, [r5, #0x22]
cmp r0, #0x0
diff --git a/arm9/asm/unk_0206ABC4.s b/arm9/asm/unk_0206ABC4.s
index cd3d180b..456b97f6 100644
--- a/arm9/asm/unk_0206ABC4.s
+++ b/arm9/asm/unk_0206ABC4.s
@@ -622,7 +622,7 @@ _0206B030:
ldr r0, [sp, #0x40]
mov r1, #0x6
add r2, r7, #0x6
- bl FUN_02067830
+ bl SetBoxMonDataEncrypted
ldr r0, [sp, #0x34]
ldr r1, [sp, #0x40]
ldr r0, [r0, #0x4]
@@ -709,7 +709,7 @@ _0206B0DA:
ldr r0, [sp, #0x40]
mov r1, #0x6
add r2, r2, #0x6
- bl FUN_02067830
+ bl SetBoxMonDataEncrypted
ldr r7, [sp, #0x3c]
mov r6, #0x0
_0206B120:
diff --git a/arm9/asm/unk_0206B8A4.s b/arm9/asm/unk_0206B8A4.s
index 4bf6e391..6938e252 100644
--- a/arm9/asm/unk_0206B8A4.s
+++ b/arm9/asm/unk_0206B8A4.s
@@ -211,12 +211,12 @@ _0206BA00:
add r0, r4, #0x0
mov r1, #0xab
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
add r7, r0, #0x0
add r0, r6, #0x0
mov r1, #0xab
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
sub r2, r7, r0
mov r3, #0x1d
_0206BA24:
@@ -340,7 +340,7 @@ _0206BAF6:
add r0, r5, #0x0
mov r1, #0x5
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
cmp r7, r0
beq _0206BB0E
ldr r0, [r6, #0x4]
diff --git a/arm9/asm/unk_0206BB5C.s b/arm9/asm/unk_0206BB5C.s
index 974b2f9c..70465dd6 100644
--- a/arm9/asm/unk_0206BB5C.s
+++ b/arm9/asm/unk_0206BB5C.s
@@ -34,7 +34,7 @@ FUN_0206BB84: ; 0x0206BB84
add r0, r7, #0x0
mov r1, #0x5
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
lsl r0, r0, #0x10
lsr r6, r0, #0x10
cmp r4, #0x0
@@ -49,7 +49,7 @@ _0206BBA2:
add r0, r7, #0x0
mov r1, #0xa0
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
cmp r0, r5
bls _0206BBBE
mov r0, #0x0
@@ -58,7 +58,7 @@ _0206BBBE:
add r0, r7, #0x0
mov r1, #0x4c
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
cmp r0, #0x0
beq _0206BBD0
mov r0, #0x0
@@ -70,7 +70,7 @@ _0206BBD0:
cmp r0, #0x0
bne _0206BBEA
add r0, r6, #0x0
- bl FUN_020695A8
+ bl GetEggSpecies
cmp r6, r0
beq _0206BBEA
mov r0, #0x0
@@ -208,17 +208,17 @@ _0206BCE2:
add r0, r4, #0x0
mov r1, #0x5
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
strh r0, [r7, #0x0]
add r0, r4, #0x0
mov r1, #0x6
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
strh r0, [r6, #0x0]
add r0, r4, #0x0
mov r1, #0xa0
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
ldr r1, [sp, #0x10]
add r0, r1, r0
str r0, [sp, #0x10]
@@ -427,12 +427,12 @@ _0206BE72:
str r0, [sp, #0x24]
mov r1, #0x5
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
strh r0, [r4, #0x0]
ldr r0, [sp, #0x24]
mov r1, #0xa0
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
strh r0, [r5, #0x0]
ldr r0, [sp, #0xc]
ldr r1, [sp, #0x24]
diff --git a/arm9/asm/unk_0206C700.s b/arm9/asm/unk_0206C700.s
index 2158d937..31ad48cb 100644
--- a/arm9/asm/unk_0206C700.s
+++ b/arm9/asm/unk_0206C700.s
@@ -76,7 +76,7 @@ FUN_0206C700: ; 0x0206C700
mov r1, #0x5
mov r2, #0x0
str r0, [r4, #0x28]
- bl FUN_020671BC
+ bl GetMonDataEncrypted
add r1, r4, #0x0
add r1, #0x60
strh r0, [r1, #0x0]
@@ -1040,7 +1040,7 @@ _0206CF7E:
ldr r0, [r4, #0x28]
mov r1, #0x5
add r2, #0x62
- bl FUN_02067830
+ bl SetBoxMonDataEncrypted
ldr r0, [r4, #0x28]
bl FUN_0206A1C4
ldr r0, [r4, #0x28]
@@ -1111,13 +1111,13 @@ _0206CFFA:
ldr r0, [r4, #0x28]
mov r1, #0x4d
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
cmp r0, #0x0
bne _0206D05E
ldr r0, [r4, #0x28]
mov r1, #0xb2
mov r2, #0x0
- bl FUN_02067830
+ bl SetBoxMonDataEncrypted
_0206D05E:
add r0, r4, #0x0
add r0, #0x64
@@ -1652,7 +1652,7 @@ _0206D4A6:
ldr r0, [r4, #0x28]
mov r2, #0x0
add r1, #0x36
- bl FUN_020671BC
+ bl GetMonDataEncrypted
add r2, r0, #0x0
ldr r0, [r4, #0xc]
mov r1, #0x1
@@ -1736,7 +1736,7 @@ _0206D560:
ldr r0, [r4, #0x28]
add r2, #0x66
add r1, #0x3e
- bl FUN_02067830
+ bl SetBoxMonDataEncrypted
add r1, r4, #0x0
add r2, r4, #0x0
add r1, #0x6c
@@ -2103,30 +2103,30 @@ _0206D86E:
add r0, r5, #0x0
mov r1, #0x5
add r2, sp, #0x0
- bl FUN_02067830
+ bl SetBoxMonDataEncrypted
mov r0, #0x4
str r0, [sp, #0x0]
add r0, r5, #0x0
mov r1, #0x9a
add r2, sp, #0x0
- bl FUN_02067830
+ bl SetBoxMonDataEncrypted
mov r0, #0x0
str r0, [sp, #0x0]
add r0, r5, #0x0
mov r1, #0x6
add r2, sp, #0x0
- bl FUN_02067830
+ bl SetBoxMonDataEncrypted
add r0, r5, #0x0
mov r1, #0xb
add r2, sp, #0x0
- bl FUN_02067830
+ bl SetBoxMonDataEncrypted
mov r1, #0x19
str r1, [sp, #0x4]
add r6, sp, #0x0
_0206D8BA:
add r0, r5, #0x0
add r2, r6, #0x0
- bl FUN_02067830
+ bl SetBoxMonDataEncrypted
ldr r0, [sp, #0x4]
add r1, r0, #0x1
str r1, [sp, #0x4]
@@ -2138,7 +2138,7 @@ _0206D8BA:
_0206D8D2:
add r0, r5, #0x0
add r2, r6, #0x0
- bl FUN_02067830
+ bl SetBoxMonDataEncrypted
ldr r0, [sp, #0x4]
add r1, r0, #0x1
str r1, [sp, #0x4]
@@ -2150,7 +2150,7 @@ _0206D8D2:
_0206D8EA:
add r0, r5, #0x0
add r2, r6, #0x0
- bl FUN_02067830
+ bl SetBoxMonDataEncrypted
ldr r0, [sp, #0x4]
add r1, r0, #0x1
str r1, [sp, #0x4]
@@ -2159,28 +2159,28 @@ _0206D8EA:
add r0, r5, #0x0
mov r1, #0xb2
mov r2, #0x0
- bl FUN_02067830
+ bl SetBoxMonDataEncrypted
add r0, r5, #0x0
mov r1, #0x4d
add r2, sp, #0x0
- bl FUN_02067830
+ bl SetBoxMonDataEncrypted
add r0, r5, #0x0
mov r1, #0x9f
add r2, sp, #0x0
- bl FUN_02067830
+ bl SetBoxMonDataEncrypted
ldr r0, [r4, #0x5c]
bl FUN_020256BC
add r6, r0, #0x0
add r0, r5, #0x0
mov r1, #0xa9
add r2, r6, #0x0
- bl FUN_02067830
+ bl SetBoxMonDataEncrypted
add r0, r6, #0x0
bl FreeToHeap
add r0, r5, #0x0
mov r1, #0xa1
add r2, sp, #0x0
- bl FUN_02067830
+ bl SetBoxMonDataEncrypted
mov r0, #0x0
add r1, sp, #0x8
mov r2, #0x18
@@ -2188,7 +2188,7 @@ _0206D8EA:
add r0, r5, #0x0
mov r1, #0xaa
add r2, sp, #0x8
- bl FUN_02067830
+ bl SetBoxMonDataEncrypted
add r0, r5, #0x0
bl FUN_0206A1C4
add r0, r5, #0x0
@@ -2225,7 +2225,7 @@ _0206D9A0:
ldr r0, [r4, #0x28]
mov r1, #0x6
add r2, sp, #0x4
- bl FUN_02067830
+ bl SetBoxMonDataEncrypted
_0206D9AE:
add sp, #0x20
pop {r4-r6, pc}
@@ -2581,7 +2581,7 @@ FUN_0206DC80: ; 0x0206DC80
add r0, r5, #0x0
mov r1, #0x5
add r2, #0x62
- bl FUN_02067830
+ bl SetBoxMonDataEncrypted
add r0, r5, #0x0
bl FUN_02066ED8
add r0, sp, #0x10
diff --git a/arm9/asm/unk_0206F3FC.s b/arm9/asm/unk_0206F3FC.s
index 21ef4169..7f255340 100644
--- a/arm9/asm/unk_0206F3FC.s
+++ b/arm9/asm/unk_0206F3FC.s
@@ -1681,7 +1681,7 @@ _020700BC:
mov r1, #0x5
mov r2, #0x0
add r7, r0, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
lsl r0, r0, #0x10
lsr r0, r0, #0x10
str r0, [sp, #0x4]
@@ -1705,42 +1705,42 @@ _020700DE:
add r0, r7, #0x0
mov r1, #0xa2
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
ldr r1, _020701E4 ; =0x00000706
add r2, r5, r6
strh r0, [r2, r1]
add r0, r7, #0x0
mov r1, #0xa3
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
ldr r1, _020701E8 ; =0x00000708
add r2, r5, r6
strh r0, [r2, r1]
add r0, r7, #0x0
mov r1, #0xa0
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
ldr r1, _020701EC ; =0x0000070A
add r2, r5, r6
strh r0, [r2, r1]
add r0, r7, #0x0
mov r1, #0x6
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
ldr r1, _020701F0 ; =0x0000070C
add r2, r5, r6
strh r0, [r2, r1]
add r0, r7, #0x0
mov r1, #0xa1
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
ldr r1, _020701F4 ; =0x00000712
add r2, r5, r6
strh r0, [r2, r1]
add r0, r7, #0x0
mov r1, #0x4c
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
mov r1, #0x71
add r2, r5, r6
lsl r1, r1, #0x4
@@ -1748,14 +1748,14 @@ _020700DE:
add r0, r7, #0x0
mov r1, #0x70
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
ldr r1, _020701F8 ; =0x00000711
add r2, r5, r6
strb r0, [r2, r1]
add r0, r7, #0x0
mov r1, #0xaf
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
cmp r0, #0x1
ldr r0, _020701FC ; =0x0000070E
bne _02070184
@@ -1864,7 +1864,7 @@ _02070256:
add r0, r5, #0x0
add r1, #0x36
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
cmp r0, #0x0
beq _0207026C
add r4, r4, #0x1
@@ -1925,106 +1925,106 @@ _020702BE: ; jump table (using 16-bit offset)
_020702C8:
mov r1, #0x7a
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
add r4, r0, #0x0
add r0, r5, #0x0
mov r1, #0x7b
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
add r4, r4, r0
add r0, r5, #0x0
mov r1, #0x7c
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
add r4, r4, r0
add r0, r5, #0x0
mov r1, #0x7d
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
add r4, r4, r0
b _020703B6
_020702F8:
mov r1, #0x7e
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
add r4, r0, #0x0
add r0, r5, #0x0
mov r1, #0x7f
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
add r4, r4, r0
add r0, r5, #0x0
mov r1, #0x80
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
add r4, r4, r0
add r0, r5, #0x0
mov r1, #0x81
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
add r4, r4, r0
b _020703B6
_02070328:
mov r1, #0x82
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
add r4, r0, #0x0
add r0, r5, #0x0
mov r1, #0x83
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
add r4, r4, r0
add r0, r5, #0x0
mov r1, #0x84
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
add r4, r4, r0
add r0, r5, #0x0
mov r1, #0x85
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
add r4, r4, r0
b _020703B6
_02070358:
mov r1, #0x86
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
add r4, r0, #0x0
add r0, r5, #0x0
mov r1, #0x87
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
add r4, r4, r0
add r0, r5, #0x0
mov r1, #0x88
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
add r4, r4, r0
add r0, r5, #0x0
mov r1, #0x89
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
add r4, r4, r0
b _020703B6
_02070388:
mov r1, #0x8a
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
add r4, r0, #0x0
add r0, r5, #0x0
mov r1, #0x8b
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
add r4, r4, r0
add r0, r5, #0x0
mov r1, #0x8c
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
add r4, r4, r0
add r0, r5, #0x0
mov r1, #0x8d
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
add r4, r4, r0
_020703B6:
add r0, r4, #0x0
@@ -2839,7 +2839,7 @@ _02070A38:
_02070A3A:
mov r1, #0xa2
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
cmp r0, #0x0
bne _02070A4E
add r0, r4, #0x2
@@ -3790,7 +3790,7 @@ _020711D0:
ldr r0, [sp, #0x8]
add r1, #0x36
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
lsl r0, r0, #0x10
lsr r7, r0, #0x10
beq _02071210
@@ -5249,7 +5249,7 @@ _02071D14:
add r2, sp, #0x0
str r1, [sp, #0x0]
mov r1, #0xa2
- bl FUN_02067830
+ bl SetBoxMonDataEncrypted
mov r0, #0x1
pop {r3-r7, pc}
_02071D30:
@@ -5670,7 +5670,7 @@ FUN_02072080: ; 0x02072080
add r0, r5, #0x0
mov r1, #0x6
add r2, sp, #0x0
- bl FUN_02067830
+ bl SetBoxMonDataEncrypted
add r0, r5, #0x0
bl FUN_02069EC4
ldr r1, _020720D8 ; =0x00000B25
@@ -5713,7 +5713,7 @@ FUN_020720E0: ; 0x020720E0
add r0, r5, #0x0
mov r1, #0x6
add r2, sp, #0x1c
- bl FUN_02067830
+ bl SetBoxMonDataEncrypted
add r0, r5, #0x0
bl FUN_02069EC4
ldr r1, _02072138 ; =0x00000B25
diff --git a/arm9/asm/unk_02072548.s b/arm9/asm/unk_02072548.s
index 66dbe6b0..8c630d8e 100644
--- a/arm9/asm/unk_02072548.s
+++ b/arm9/asm/unk_02072548.s
@@ -1987,37 +1987,37 @@ FUN_020734C0: ; 0x020734C0
mov r1, #0xa3
mov r2, #0x0
add r4, r0, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
add r1, sp, #0x20
strh r0, [r1, #0x0]
add r0, r4, #0x0
mov r1, #0xa4
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
add r1, sp, #0x20
strh r0, [r1, #0x2]
add r0, r4, #0x0
mov r1, #0xa5
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
add r1, sp, #0x20
strh r0, [r1, #0x4]
add r0, r4, #0x0
mov r1, #0xa7
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
add r1, sp, #0x20
strh r0, [r1, #0x6]
add r0, r4, #0x0
mov r1, #0xa8
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
add r1, sp, #0x20
strh r0, [r1, #0x8]
add r0, r4, #0x0
mov r1, #0xa6
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
add r1, sp, #0x20
strh r0, [r1, #0xa]
mov r3, #0x1
diff --git a/arm9/asm/unk_02073710.s b/arm9/asm/unk_02073710.s
index cc8df412..7a217fbe 100644
--- a/arm9/asm/unk_02073710.s
+++ b/arm9/asm/unk_02073710.s
@@ -248,7 +248,7 @@ FUN_020737D0: ; 0x020737D0
ldr r0, [sp, #0x10]
mov r1, #0x4c
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
add r2, r0, #0x0
str r7, [sp, #0x14]
add r0, sp, #0x14
diff --git a/arm9/asm/unk_02073DA8.s b/arm9/asm/unk_02073DA8.s
index a3406825..ef8b86b1 100644
--- a/arm9/asm/unk_02073DA8.s
+++ b/arm9/asm/unk_02073DA8.s
@@ -244,7 +244,7 @@ _02073F66:
add r6, r0, #0x0
mov r1, #0x6
add r2, sp, #0x0
- bl FUN_02067830
+ bl SetBoxMonDataEncrypted
add r0, r6, #0x0
bl FUN_02069EC4
ldr r2, _02074058 ; =0x0000069C
@@ -631,7 +631,7 @@ FUN_020742A8: ; 0x020742A8
add r5, r0, #0x0
mov r1, #0x6
add r2, sp, #0x0
- bl FUN_02067830
+ bl SetBoxMonDataEncrypted
add r0, r5, #0x0
bl FUN_02069EC4
ldr r1, _02074330 ; =0x00000B25
@@ -2386,7 +2386,7 @@ FUN_02075118: ; 0x02075118
bl FUN_0206B9B0
mov r1, #0xa1
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
cmp r0, #0x0
ldr r2, _02075198 ; =0x0000069C
bne _0207515C
diff --git a/arm9/asm/unk_0207550C.s b/arm9/asm/unk_0207550C.s
index cccec733..a69191eb 100644
--- a/arm9/asm/unk_0207550C.s
+++ b/arm9/asm/unk_0207550C.s
@@ -1049,49 +1049,49 @@ FUN_02075DC0: ; 0x02075DC0
mov r1, #0xd
mov r2, #0x0
add r4, r0, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
lsl r0, r0, #0x18
lsr r0, r0, #0x18
str r0, [sp, #0x1c]
add r0, r4, #0x0
mov r1, #0xe
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
lsl r0, r0, #0x18
lsr r0, r0, #0x18
str r0, [sp, #0x18]
add r0, r4, #0x0
mov r1, #0xf
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
lsl r0, r0, #0x18
lsr r0, r0, #0x18
str r0, [sp, #0x14]
add r0, r4, #0x0
mov r1, #0x10
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
lsl r0, r0, #0x18
lsr r0, r0, #0x18
str r0, [sp, #0x10]
add r0, r4, #0x0
mov r1, #0x11
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
lsl r0, r0, #0x18
lsr r0, r0, #0x18
str r0, [sp, #0xc]
add r0, r4, #0x0
mov r1, #0x12
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
lsl r0, r0, #0x18
lsr r0, r0, #0x18
str r0, [sp, #0x8]
add r0, r4, #0x0
mov r1, #0x9
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
lsl r0, r0, #0x18
lsr r7, r0, #0x18
ldr r0, _02075F4C ; =0x000005A4
@@ -1135,42 +1135,42 @@ FUN_02075DC0: ; 0x02075DC0
add r0, r4, #0x0
mov r1, #0xd
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
ldr r1, [sp, #0x1c]
cmp r1, r0
bne _02075EFA
add r0, r4, #0x0
mov r1, #0xe
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
ldr r1, [sp, #0x18]
cmp r1, r0
bne _02075EFA
add r0, r4, #0x0
mov r1, #0xf
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
ldr r1, [sp, #0x14]
cmp r1, r0
bne _02075EFA
add r0, r4, #0x0
mov r1, #0x10
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
ldr r1, [sp, #0x10]
cmp r1, r0
bne _02075EFA
add r0, r4, #0x0
mov r1, #0x11
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
ldr r1, [sp, #0xc]
cmp r1, r0
bne _02075EFA
add r0, r4, #0x0
mov r1, #0x12
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
ldr r1, [sp, #0x8]
cmp r1, r0
beq _02075F26
@@ -1178,7 +1178,7 @@ _02075EFA:
add r0, r4, #0x0
mov r1, #0x9
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
cmp r7, r0
ldr r1, _02075F4C ; =0x000005A4
beq _02075F18
@@ -1247,7 +1247,7 @@ FUN_02075F60: ; 0x02075F60
mov r1, #0xa2
mov r2, #0x0
str r0, [sp, #0x8]
- bl FUN_020671BC
+ bl GetMonDataEncrypted
add r4, r0, #0x0
ldr r0, _02076084 ; =0x00000B25
ldrb r1, [r5, r0]
@@ -1375,7 +1375,7 @@ FUN_020760A0: ; 0x020760A0
bl FUN_0206B9B0
mov r1, #0xa2
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
ldr r1, _02076134 ; =0x00000B25
add r4, r0, #0x0
ldrb r2, [r5, r1]
@@ -1574,7 +1574,7 @@ _02076212:
add r0, r5, #0x0
mov r1, #0xa2
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
ldr r0, _020763E4 ; =0x0000069C
mov r1, #0x46
ldr r0, [r4, r0]
@@ -1649,7 +1649,7 @@ _020762DC:
bl FUN_0206B9B0
mov r1, #0xa2
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
ldr r2, _020763E0 ; =0x00000B25
add r5, r0, #0x0
ldr r0, _02076400 ; =0x00000706
@@ -1786,38 +1786,38 @@ FUN_0207640C: ; 0x0207640C
mov r1, #0xa3
mov r2, #0x0
add r4, r0, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
ldr r1, _020765B8 ; =0x00000B28
mov r2, #0x0
strh r0, [r5, r1]
add r0, r4, #0x0
mov r1, #0xa4
- bl FUN_020671BC
+ bl GetMonDataEncrypted
ldr r1, _020765BC ; =0x00000B2A
mov r2, #0x0
strh r0, [r5, r1]
add r0, r4, #0x0
mov r1, #0xa5
- bl FUN_020671BC
+ bl GetMonDataEncrypted
ldr r1, _020765C0 ; =0x00000B2C
mov r2, #0x0
strh r0, [r5, r1]
add r0, r4, #0x0
mov r1, #0xa7
- bl FUN_020671BC
+ bl GetMonDataEncrypted
ldr r1, _020765C4 ; =0x00000B2E
mov r2, #0x0
strh r0, [r5, r1]
add r0, r4, #0x0
mov r1, #0xa8
- bl FUN_020671BC
+ bl GetMonDataEncrypted
mov r1, #0xb3
lsl r1, r1, #0x4
strh r0, [r5, r1]
add r0, r4, #0x0
mov r1, #0xa6
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
ldr r1, _020765C8 ; =0x00000B32
strh r0, [r5, r1]
ldr r0, _020765B0 ; =0x000005A4
@@ -1836,7 +1836,7 @@ FUN_0207640C: ; 0x0207640C
add r0, r4, #0x0
mov r1, #0xa0
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
ldr r1, _020765B4 ; =0x00000B25
ldrb r2, [r5, r1]
mov r1, #0x2c
@@ -1847,7 +1847,7 @@ FUN_0207640C: ; 0x0207640C
add r0, r4, #0x0
mov r1, #0xa2
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
ldr r1, _020765B4 ; =0x00000B25
ldrb r2, [r5, r1]
mov r1, #0x2c
@@ -1858,7 +1858,7 @@ FUN_0207640C: ; 0x0207640C
add r0, r4, #0x0
mov r1, #0xa3
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
ldr r1, _020765B4 ; =0x00000B25
ldrb r2, [r5, r1]
mov r1, #0x2c
@@ -2335,7 +2335,7 @@ _020768E6:
add r0, r5, #0x0
add r1, #0x36
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
add r2, r0, #0x0
mov r0, #0x6a
lsl r0, r0, #0x4
@@ -2540,7 +2540,7 @@ _02076AAA:
add r0, r6, #0x0
add r1, #0x36
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
lsl r0, r0, #0x10
lsr r2, r0, #0x10
ldr r0, [r5, r7]
@@ -2803,7 +2803,7 @@ _02076CDC:
add r0, r5, #0x0
add r1, #0x36
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
add r2, r0, #0x0
mov r0, #0x6a
lsl r0, r0, #0x4
@@ -3080,14 +3080,14 @@ FUN_02076F2C: ; 0x02076F2C
str r0, [sp, #0x0]
add r0, r4, #0x0
add r2, sp, #0x0
- bl FUN_02067830
+ bl SetBoxMonDataEncrypted
mov r0, #0x0
add r1, r6, #0x0
str r0, [sp, #0x0]
add r0, r4, #0x0
add r1, #0x3e
add r2, sp, #0x0
- bl FUN_02067830
+ bl SetBoxMonDataEncrypted
ldr r0, _02076FAC ; =0x000005A4
mov r1, #0x0
ldr r0, [r5, r0]
@@ -3098,7 +3098,7 @@ FUN_02076F2C: ; 0x02076F2C
add r0, r4, #0x0
add r1, r6, #0x0
add r2, sp, #0x0
- bl FUN_02067830
+ bl SetBoxMonDataEncrypted
ldr r0, _02076FAC ; =0x000005A4
ldr r1, [r5, r0]
ldrh r0, [r1, #0x24]
@@ -3142,7 +3142,7 @@ FUN_02076FB0: ; 0x02076FB0
add r1, r6, #0x0
add r1, #0x36
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
lsl r0, r0, #0x10
lsr r4, r0, #0x10
ldr r0, _02077034 ; =0x0000069C
@@ -3379,7 +3379,7 @@ _0207716A:
add r4, #0x36
add r1, r4, #0x0
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
ldr r1, _02077234 ; =0x000005A4
add r2, r0, #0x0
ldr r1, [r5, r1]
diff --git a/arm9/asm/unk_02079C70.s b/arm9/asm/unk_02079C70.s
index ad625101..3175f5f9 100644
--- a/arm9/asm/unk_02079C70.s
+++ b/arm9/asm/unk_02079C70.s
@@ -1555,7 +1555,7 @@ _0207A8C0:
mov r1, #0x13
ldrb r6, [r5, r0]
add r0, r4, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
ldr r1, _0207AA08 ; =0x00000295
strb r0, [r5, r1]
ldrb r0, [r5, r1]
@@ -1572,7 +1572,7 @@ _0207A8F4:
ldrb r6, [r5, r0]
add r0, r4, #0x0
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
ldr r1, _0207AA0C ; =0x00000296
strb r0, [r5, r1]
ldrb r0, [r5, r1]
@@ -1589,7 +1589,7 @@ _0207A916:
ldrb r6, [r5, r0]
add r0, r4, #0x0
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
ldr r1, _0207AA10 ; =0x00000297
strb r0, [r5, r1]
ldrb r0, [r5, r1]
@@ -1607,7 +1607,7 @@ _0207A938:
add r0, r4, #0x0
mov r1, #0x16
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
mov r1, #0xa6
lsl r1, r1, #0x2
strb r0, [r5, r1]
@@ -1625,7 +1625,7 @@ _0207A95E:
ldrb r6, [r5, r0]
add r0, r4, #0x0
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
ldr r1, _0207AA14 ; =0x00000299
strb r0, [r5, r1]
ldrb r0, [r5, r1]
@@ -1640,7 +1640,7 @@ _0207A980:
add r0, r4, #0x0
mov r1, #0x18
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
ldr r1, _0207AA18 ; =0x0000029A
strb r0, [r5, r1]
sub r1, #0x4e
@@ -1848,7 +1848,7 @@ FUN_0207AB0C: ; 0x0207AB0C
add r0, r6, #0x0
mov r1, #0x5
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
strh r0, [r5, #0xc]
add r0, r6, #0x0
bl FUN_020690E4
@@ -1913,12 +1913,12 @@ FUN_0207AB0C: ; 0x0207AB0C
add r0, r6, #0x0
mov r1, #0x6
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
strh r0, [r5, #0xe]
add r0, r6, #0x0
mov r1, #0xa0
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
ldrb r1, [r5, #0x12]
mov r2, #0x7f
lsl r0, r0, #0x18
@@ -1931,7 +1931,7 @@ FUN_0207AB0C: ; 0x0207AB0C
add r0, r6, #0x0
mov r1, #0x4c
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
lsl r0, r0, #0x1f
ldr r2, [r5, #0x50]
ldr r1, _0207AEB4 ; =0xEFFFFFFF
@@ -1942,7 +1942,7 @@ FUN_0207AB0C: ; 0x0207AB0C
add r0, r6, #0x0
mov r1, #0xaf
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
cmp r0, #0x1
bne _0207AC16
ldr r0, [r5, #0x50]
@@ -1972,7 +1972,7 @@ _0207AC1E:
add r0, r6, #0x0
mov r1, #0x9a
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
lsl r0, r0, #0x18
lsr r0, r0, #0x18
lsl r0, r0, #0x1a
@@ -1985,27 +1985,27 @@ _0207AC1E:
add r0, r6, #0x0
mov r1, #0xb0
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
strb r0, [r5, #0x10]
add r0, r6, #0x0
mov r1, #0xb1
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
strb r0, [r5, #0x11]
add r0, r6, #0x0
mov r1, #0x7
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
str r0, [r5, #0x14]
add r0, r6, #0x0
mov r1, #0x8
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
str r0, [r5, #0x18]
add r0, r6, #0x0
mov r1, #0x9c
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
add r1, r5, #0x0
add r1, #0x44
strb r0, [r1, #0x0]
@@ -2013,7 +2013,7 @@ _0207AC1E:
ldrh r0, [r5, #0xc]
lsl r1, r1, #0x19
lsr r1, r1, #0x19
- bl FUN_02068758
+ bl GetMonExpByLevel
str r0, [r5, #0x1c]
ldrb r0, [r5, #0x12]
lsl r0, r0, #0x19
@@ -2025,48 +2025,48 @@ _0207AC1E:
_0207ACAA:
ldrh r0, [r5, #0xc]
add r1, r1, #0x1
- bl FUN_02068758
+ bl GetMonExpByLevel
_0207ACB2:
str r0, [r5, #0x20]
add r0, r6, #0x0
mov r1, #0xa2
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
strh r0, [r5, #0x24]
add r0, r6, #0x0
mov r1, #0xa3
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
strh r0, [r5, #0x26]
add r0, r6, #0x0
mov r1, #0xa4
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
strh r0, [r5, #0x28]
add r0, r6, #0x0
mov r1, #0xa5
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
strh r0, [r5, #0x2a]
add r0, r6, #0x0
mov r1, #0xa7
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
strh r0, [r5, #0x2c]
add r0, r6, #0x0
mov r1, #0xa8
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
strh r0, [r5, #0x2e]
add r0, r6, #0x0
mov r1, #0xa6
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
strh r0, [r5, #0x30]
add r0, r6, #0x0
mov r1, #0xa
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
add r1, r5, #0x0
add r1, #0x32
strb r0, [r1, #0x0]
@@ -2084,14 +2084,14 @@ _0207AD26:
add r0, r6, #0x0
add r1, #0x36
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
ldr r1, [sp, #0x0]
mov r2, #0x0
strh r0, [r1, #0x34]
add r1, r4, #0x0
add r0, r6, #0x0
add r1, #0x3a
- bl FUN_020671BC
+ bl GetMonDataEncrypted
add r1, r5, r4
add r1, #0x3c
strb r0, [r1, #0x0]
@@ -2099,7 +2099,7 @@ _0207AD26:
add r0, r6, #0x0
add r1, #0x3e
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
lsl r0, r0, #0x18
lsr r1, r0, #0x18
ldr r0, [sp, #0x0]
@@ -2116,42 +2116,42 @@ _0207AD26:
add r0, r6, #0x0
mov r1, #0x13
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
add r1, r5, #0x0
add r1, #0x45
strb r0, [r1, #0x0]
add r0, r6, #0x0
mov r1, #0x14
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
add r1, r5, #0x0
add r1, #0x46
strb r0, [r1, #0x0]
add r0, r6, #0x0
mov r1, #0x15
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
add r1, r5, #0x0
add r1, #0x47
strb r0, [r1, #0x0]
add r0, r6, #0x0
mov r1, #0x16
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
add r1, r5, #0x0
add r1, #0x48
strb r0, [r1, #0x0]
add r0, r6, #0x0
mov r1, #0x17
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
add r1, r5, #0x0
add r1, #0x49
strb r0, [r1, #0x0]
add r0, r6, #0x0
mov r1, #0x18
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
add r1, r5, #0x0
add r1, #0x4a
strb r0, [r1, #0x0]
@@ -2180,14 +2180,14 @@ _0207ADFE:
add r0, r6, #0x0
mov r1, #0xb
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
add r1, r5, #0x0
add r1, #0x4c
strh r0, [r1, #0x0]
add r0, r6, #0x0
mov r1, #0x70
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
add r1, r5, #0x0
add r1, #0x4e
strh r0, [r1, #0x0]
@@ -2281,7 +2281,7 @@ _0207AECC:
add r1, r0, #0x0
add r0, r6, #0x0
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
cmp r0, #0x0
beq _0207AF04
lsr r0, r4, #0x5
@@ -3123,13 +3123,13 @@ _0207B528:
add r0, r6, r7
mov r1, #0x5
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
cmp r0, #0x0
beq _0207B50C
add r0, r6, r7
mov r1, #0x4c
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
cmp r0, #0x0
beq _0207B55E
add r0, r5, #0x0
@@ -3173,13 +3173,13 @@ _0207B58E:
mov r1, #0x5
mov r2, #0x0
add r6, r0, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
cmp r0, #0x0
beq _0207B574
add r0, r6, #0x0
mov r1, #0x4c
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
cmp r0, #0x0
beq _0207B5BC
add r0, r5, #0x0
@@ -4814,12 +4814,12 @@ FUN_0207C2D4: ; 0x0207C2D4
add r5, r0, #0x0
mov r1, #0x9f
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
add r4, r0, #0x0
add r0, r5, #0x0
mov r1, #0xa2
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
cmp r0, #0x0
bne _0207C2F4
mov r0, #0x6
diff --git a/arm9/asm/unk_0207C328.s b/arm9/asm/unk_0207C328.s
index d3f7377a..5c518aa4 100644
--- a/arm9/asm/unk_0207C328.s
+++ b/arm9/asm/unk_0207C328.s
@@ -1893,7 +1893,7 @@ _0207D00C:
lsl r0, r0, #0x2
ldrh r0, [r4, r0]
mov r1, #0x1c
- bl FUN_02068678
+ bl GetMonBaseStat
add r2, r0, #0x0
ldr r0, _0207D068 ; =0x00000454
mov r1, #0x1
diff --git a/arm9/asm/unk_0207EF6C.s b/arm9/asm/unk_0207EF6C.s
index 6ad1e7e8..7050dea9 100644
--- a/arm9/asm/unk_0207EF6C.s
+++ b/arm9/asm/unk_0207EF6C.s
@@ -1169,7 +1169,7 @@ _0207F876:
lsl r0, r0, #0x2
ldrh r0, [r4, r0]
mov r1, #0x1c
- bl FUN_02068678
+ bl GetMonBaseStat
mov r1, #0x1
eor r0, r1
mov r1, #0xb6
diff --git a/arm9/asm/unk_0207FD00.s b/arm9/asm/unk_0207FD00.s
index 839a9c0f..1baeda16 100644
--- a/arm9/asm/unk_0207FD00.s
+++ b/arm9/asm/unk_0207FD00.s
@@ -511,7 +511,7 @@ FUN_02080108: ; 0x02080108
ldr r0, [r5, #0xc]
mov r1, #0x94
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
mov r3, #0x2
add r2, r0, #0x0
str r3, [sp, #0x0]
@@ -523,7 +523,7 @@ FUN_02080108: ; 0x02080108
ldr r0, [r5, #0xc]
mov r1, #0x95
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
add r2, r0, #0x0
ldr r0, [r5, #0x8]
mov r1, #0x1
@@ -531,7 +531,7 @@ FUN_02080108: ; 0x02080108
ldr r0, [r5, #0xc]
mov r1, #0x96
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
add r2, r0, #0x0
mov r0, #0x0
str r0, [sp, #0x0]
@@ -544,7 +544,7 @@ FUN_02080108: ; 0x02080108
ldr r0, [r5, #0xc]
mov r1, #0x9b
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
add r2, r0, #0x0
mov r0, #0x0
str r0, [sp, #0x0]
@@ -557,7 +557,7 @@ FUN_02080108: ; 0x02080108
ldr r0, [r5, #0xc]
mov r1, #0x98
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
add r2, r0, #0x0
ldr r0, [r5, #0x8]
mov r1, #0x4
@@ -565,7 +565,7 @@ FUN_02080108: ; 0x02080108
ldr r0, [r5, #0xc]
mov r1, #0x91
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
mov r3, #0x2
add r2, r0, #0x0
str r3, [sp, #0x0]
@@ -577,7 +577,7 @@ FUN_02080108: ; 0x02080108
ldr r0, [r5, #0xc]
mov r1, #0x92
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
add r2, r0, #0x0
ldr r0, [r5, #0x8]
mov r1, #0x6
@@ -585,7 +585,7 @@ FUN_02080108: ; 0x02080108
ldr r0, [r5, #0xc]
mov r1, #0x93
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
add r2, r0, #0x0
mov r0, #0x0
str r0, [sp, #0x0]
@@ -598,7 +598,7 @@ FUN_02080108: ; 0x02080108
ldr r0, [r5, #0xc]
mov r1, #0x97
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
add r2, r0, #0x0
ldr r0, [r5, #0x8]
mov r1, #0x8
@@ -635,7 +635,7 @@ FUN_02080228: ; 0x02080228
ldr r0, [r4, #0xc]
mov r1, #0x94
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
mov r3, #0x2
add r2, r0, #0x0
str r3, [sp, #0x0]
@@ -647,7 +647,7 @@ FUN_02080228: ; 0x02080228
ldr r0, [r4, #0xc]
mov r1, #0x95
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
add r2, r0, #0x0
ldr r0, [r4, #0x8]
mov r1, #0x1
@@ -655,7 +655,7 @@ FUN_02080228: ; 0x02080228
ldr r0, [r4, #0xc]
mov r1, #0x96
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
add r2, r0, #0x0
mov r0, #0x0
str r0, [sp, #0x0]
@@ -668,7 +668,7 @@ FUN_02080228: ; 0x02080228
ldr r0, [r4, #0xc]
mov r1, #0x9b
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
add r2, r0, #0x0
mov r0, #0x0
str r0, [sp, #0x0]
@@ -681,7 +681,7 @@ FUN_02080228: ; 0x02080228
ldr r0, [r4, #0xc]
mov r1, #0x79
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
cmp r0, #0xf
bhi _020802F8
add r0, r0, r0
@@ -797,7 +797,7 @@ FUN_02080384: ; 0x02080384
bne _02080418
mov r1, #0x91
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
mov r3, #0x2
add r2, r0, #0x0
str r3, [sp, #0x0]
@@ -809,7 +809,7 @@ FUN_02080384: ; 0x02080384
ldr r0, [r5, #0xc]
mov r1, #0x92
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
add r2, r0, #0x0
ldr r0, [r5, #0x8]
mov r1, #0x6
@@ -817,7 +817,7 @@ FUN_02080384: ; 0x02080384
ldr r0, [r5, #0xc]
mov r1, #0x93
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
add r2, r0, #0x0
mov r0, #0x0
str r0, [sp, #0x0]
@@ -830,7 +830,7 @@ FUN_02080384: ; 0x02080384
ldr r0, [r5, #0xc]
mov r1, #0x97
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
add r2, r0, #0x0
ldr r0, [r5, #0x8]
mov r1, #0x8
@@ -839,7 +839,7 @@ FUN_02080384: ; 0x02080384
_02080418:
mov r1, #0x94
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
mov r3, #0x2
add r2, r0, #0x0
str r3, [sp, #0x0]
@@ -851,7 +851,7 @@ _02080418:
ldr r0, [r5, #0xc]
mov r1, #0x95
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
add r2, r0, #0x0
ldr r0, [r5, #0x8]
mov r1, #0x6
@@ -859,7 +859,7 @@ _02080418:
ldr r0, [r5, #0xc]
mov r1, #0x96
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
add r2, r0, #0x0
mov r0, #0x0
str r0, [sp, #0x0]
@@ -872,7 +872,7 @@ _02080418:
ldr r0, [r5, #0xc]
mov r1, #0x98
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
add r2, r0, #0x0
ldr r0, [r5, #0x8]
mov r1, #0x8
@@ -899,37 +899,37 @@ FUN_0208048C: ; 0x0208048C
ldr r0, [r4, #0xc]
mov r1, #0x46
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
str r0, [sp, #0xc]
ldr r0, [r4, #0xc]
mov r1, #0x47
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
str r0, [sp, #0x8]
ldr r0, [r4, #0xc]
mov r1, #0x48
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
str r0, [sp, #0x4]
ldr r0, [r4, #0xc]
mov r1, #0x49
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
str r0, [sp, #0x0]
ldr r0, [r4, #0xc]
mov r1, #0x4a
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
add r7, r0, #0x0
ldr r0, [r4, #0xc]
mov r1, #0x4b
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
add r6, r0, #0x0
mov r1, #0x0
ldr r0, [r4, #0xc]
add r2, r1, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
mov r1, #0x6
bl _u32_div_f
cmp r1, #0x5
@@ -1196,7 +1196,7 @@ FUN_020806B4: ; 0x020806B4
ldr r0, [r5, #0xc]
mov r1, #0x9
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
add r4, r0, #0x0
mov r0, #0x12
ldr r1, [r5, #0x0]
@@ -1232,7 +1232,7 @@ FUN_020806F4: ; 0x020806F4
mov r1, #0x4c
mov r2, #0x0
add r5, r0, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
cmp r0, #0x0
beq _02080708
b _0208084E
@@ -1240,13 +1240,13 @@ _02080708:
add r0, r5, #0x0
mov r1, #0x97
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
cmp r0, #0x0
bne _02080774
add r0, r5, #0x0
mov r1, #0x98
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
add r6, r0, #0x0
mov r0, #0x0
mov r1, #0x37
@@ -1259,7 +1259,7 @@ _02080732:
add r0, r5, #0x0
mov r1, #0x6e
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
cmp r0, #0x1
bne _0208074C
cmp r4, #0x1
@@ -1273,7 +1273,7 @@ _0208074C:
add r0, r5, #0x0
mov r1, #0x98
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
add r5, r0, #0x0
mov r0, #0x1
add r1, r0, #0x0
@@ -1294,13 +1294,13 @@ _02080774:
add r0, r5, #0x0
mov r1, #0x6e
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
cmp r0, #0x1
bne _020807D6
add r0, r5, #0x0
mov r1, #0x97
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
add r6, r0, #0x0
mov r0, #0x1
mov r1, #0x2
@@ -1318,7 +1318,7 @@ _020807A6:
add r0, r5, #0x0
mov r1, #0x97
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
add r5, r0, #0x0
mov r0, #0x2
mov r1, #0x1
@@ -1344,7 +1344,7 @@ _020807D6:
add r0, r5, #0x0
mov r1, #0x97
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
add r6, r0, #0x0
mov r0, #0x1
add r1, r0, #0x0
@@ -1354,7 +1354,7 @@ _020807D6:
add r0, r5, #0x0
mov r1, #0x97
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
add r6, r0, #0x0
mov r0, #0x1
mov r1, #0x0
@@ -1364,7 +1364,7 @@ _020807D6:
add r0, r5, #0x0
mov r1, #0x97
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
add r6, r0, #0x0
mov r0, #0x1
mov r1, #0x9
@@ -1374,7 +1374,7 @@ _020807D6:
add r0, r5, #0x0
mov r1, #0x97
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
add r5, r0, #0x0
mov r0, #0x1
mov r1, #0xa
@@ -1403,13 +1403,13 @@ _0208084E:
add r0, r5, #0x0
mov r1, #0x6e
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
cmp r0, #0x1
bne _02080880
add r0, r5, #0x0
mov r1, #0x97
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
add r4, r0, #0x0
mov r0, #0x2
mov r1, #0x1
@@ -1428,7 +1428,7 @@ _02080884:
add r0, r5, #0x0
mov r1, #0x6e
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
cmp r0, #0x1
bne _02080896
mov r0, #0x13
diff --git a/arm9/asm/unk_02080C38.s b/arm9/asm/unk_02080C38.s
index 260609d5..1cce712f 100644
--- a/arm9/asm/unk_02080C38.s
+++ b/arm9/asm/unk_02080C38.s
@@ -1083,7 +1083,7 @@ _02081454:
ldr r0, [r4, #0x0]
ldr r2, [r2, #0x0]
mov r1, #0x90
- bl FUN_020671BC
+ bl GetMonDataEncrypted
add r6, r6, #0x1
add r4, r4, #0x4
cmp r6, #0x4
@@ -1223,7 +1223,7 @@ _02081566:
add r0, r5, #0x0
add r1, #0x7a
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
add r6, r0, #0x0
b _020815BA
_02081576:
@@ -1231,7 +1231,7 @@ _02081576:
add r0, r5, #0x0
add r1, #0x7e
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
add r6, r0, #0x0
b _020815BA
_02081586:
@@ -1239,7 +1239,7 @@ _02081586:
add r0, r5, #0x0
add r1, #0x82
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
add r6, r0, #0x0
b _020815BA
_02081596:
@@ -1247,7 +1247,7 @@ _02081596:
add r0, r5, #0x0
add r1, #0x86
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
add r6, r0, #0x0
b _020815BA
_020815A6:
@@ -1255,7 +1255,7 @@ _020815A6:
add r0, r5, #0x0
add r1, #0x8a
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
add r6, r0, #0x0
b _020815BA
_020815B6:
@@ -2973,7 +2973,7 @@ FUN_02082254: ; 0x02082254
ldr r0, _02082280 ; =0x00001990
mov r2, #0x0
ldr r0, [r4, r0]
- bl FUN_020671BC
+ bl GetMonDataEncrypted
cmp r0, #0x0
beq _0208227A
mov r0, #0x1
@@ -3590,7 +3590,7 @@ _020826AC:
add r1, r6, #0x0
ldr r0, [r4, r0]
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
cmp r0, #0x0
bne _020826DE
mov r5, #0x1
@@ -3599,7 +3599,7 @@ _020826DE:
add r1, r6, #0x0
ldr r0, [r4, r0]
add r2, sp, #0x8
- bl FUN_02067830
+ bl SetBoxMonDataEncrypted
_020826EA:
ldr r0, _02082848 ; =0x0000198C
ldr r0, [r4, r0]
diff --git a/arm9/asm/unk_020828BC.s b/arm9/asm/unk_020828BC.s
index c54093d9..591b7226 100644
--- a/arm9/asm/unk_020828BC.s
+++ b/arm9/asm/unk_020828BC.s
@@ -789,7 +789,7 @@ _02082D9A:
add r0, r6, #0x0
add r1, #0x36
add r2, #0x2
- bl FUN_02067830
+ bl SetBoxMonDataEncrypted
add r4, r4, #0x1
add r5, r5, #0x2
cmp r4, #0x4
@@ -810,11 +810,11 @@ _02082D9A:
add r0, r6, #0x0
mov r1, #0x76
add r2, r5, #0x0
- bl FUN_02067830
+ bl SetBoxMonDataEncrypted
ldr r2, [sp, #0x14]
add r0, r6, #0x0
mov r1, #0x90
- bl FUN_02067830
+ bl SetBoxMonDataEncrypted
add r0, r5, #0x0
bl FUN_02021A20
ldr r0, [sp, #0x14]
@@ -838,30 +838,30 @@ _02082D9A:
strb r1, [r0, #0x0]
add r0, r6, #0x0
mov r1, #0x13
- bl FUN_02067830
+ bl SetBoxMonDataEncrypted
add r0, r6, #0x0
mov r1, #0x14
add r2, sp, #0x1c
- bl FUN_02067830
+ bl SetBoxMonDataEncrypted
add r2, sp, #0x18
add r0, r6, #0x0
mov r1, #0x15
add r2, #0x3
- bl FUN_02067830
+ bl SetBoxMonDataEncrypted
add r2, sp, #0x18
add r0, r6, #0x0
mov r1, #0x16
add r2, #0x2
- bl FUN_02067830
+ bl SetBoxMonDataEncrypted
add r2, sp, #0x18
add r0, r6, #0x0
mov r1, #0x17
add r2, #0x1
- bl FUN_02067830
+ bl SetBoxMonDataEncrypted
add r0, r6, #0x0
mov r1, #0x18
add r2, sp, #0x18
- bl FUN_02067830
+ bl SetBoxMonDataEncrypted
add sp, #0x20
pop {r3-r7, pc}
nop
diff --git a/arm9/asm/unk_020842DC.s b/arm9/asm/unk_020842DC.s
index 543d051a..659f3a36 100644
--- a/arm9/asm/unk_020842DC.s
+++ b/arm9/asm/unk_020842DC.s
@@ -28,7 +28,7 @@ _02084308:
add r0, r6, #0x0
mov r1, #0x9f
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
add r5, r0, #0x0
add r0, r4, #0x0
mov r1, #0xf
@@ -103,7 +103,7 @@ _020843AA:
add r0, r6, #0x0
mov r1, #0xa2
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
add r5, r0, #0x0
add r0, r4, #0x0
mov r1, #0x17
@@ -139,7 +139,7 @@ _020843EA:
add r0, r6, #0x0
mov r1, #0xa3
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
cmp r5, r0
bhs _02084414
add r0, r4, #0x0
@@ -156,7 +156,7 @@ _02084414:
add r0, r6, #0x0
mov r1, #0xa0
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
cmp r0, #0x64
bhs _0208443A
add r0, r4, #0x0
@@ -199,14 +199,14 @@ _0208447C:
add r0, r6, #0x0
add r1, #0x3e
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
cmp r0, #0x3
bhs _020844B2
add r1, r7, #0x0
add r0, r6, #0x0
add r1, #0x36
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
lsl r0, r0, #0x10
lsr r0, r0, #0x10
mov r1, #0x0
@@ -260,37 +260,37 @@ _02084502:
add r0, r6, #0x0
mov r1, #0xd
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
add r5, r0, #0x0
add r0, r6, #0x0
mov r1, #0xe
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
str r0, [sp, #0x14]
add r0, r6, #0x0
mov r1, #0xf
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
str r0, [sp, #0x10]
add r0, r6, #0x0
mov r1, #0x10
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
str r0, [sp, #0xc]
add r0, r6, #0x0
mov r1, #0x11
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
str r0, [sp, #0x8]
add r0, r6, #0x0
mov r1, #0x12
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
add r7, r0, #0x0
add r0, r6, #0x0
mov r1, #0x5
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
mov r1, #0x49
lsl r1, r1, #0x2
cmp r0, r1
@@ -652,7 +652,7 @@ _02084840:
mov r1, #0x9f
add r2, r6, #0x0
add r7, r6, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
str r0, [sp, #0x50]
str r0, [sp, #0x54]
add r0, r4, #0x0
@@ -717,18 +717,18 @@ _020848C0:
add r0, r5, #0x0
mov r1, #0x9f
add r2, sp, #0x54
- bl FUN_02067830
+ bl SetBoxMonDataEncrypted
mov r6, #0x1
_020848D4:
add r0, r5, #0x0
mov r1, #0xa2
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
str r0, [sp, #0x50]
add r0, r5, #0x0
mov r1, #0xa3
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
str r0, [sp, #0x54]
add r0, r4, #0x0
mov r1, #0x17
@@ -786,7 +786,7 @@ _0208495C:
add r0, r5, #0x0
mov r1, #0xa0
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
str r0, [sp, #0x58]
add r0, r4, #0x0
mov r1, #0x19
@@ -810,7 +810,7 @@ _0208495C:
add r0, r5, #0x0
mov r1, #0xa3
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
add r2, r0, #0x0
ldr r3, [sp, #0x54]
ldr r1, [sp, #0x50]
@@ -915,37 +915,37 @@ _02084A66:
add r0, r5, #0x0
mov r1, #0xd
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
str r0, [sp, #0x50]
add r0, r5, #0x0
mov r1, #0xe
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
str r0, [sp, #0x54]
add r0, r5, #0x0
mov r1, #0xf
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
str r0, [sp, #0x58]
add r0, r5, #0x0
mov r1, #0x10
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
str r0, [sp, #0x5c]
add r0, r5, #0x0
mov r1, #0x11
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
str r0, [sp, #0x60]
add r0, r5, #0x0
mov r1, #0x12
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
str r0, [sp, #0x64]
add r0, r5, #0x0
mov r1, #0x5
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
mov r1, #0x49
lsl r1, r1, #0x2
cmp r0, r1
@@ -985,7 +985,7 @@ _02084A66:
add r0, r5, #0x0
mov r1, #0xd
add r2, sp, #0x50
- bl FUN_02067830
+ bl SetBoxMonDataEncrypted
add r0, r5, #0x0
bl FUN_02066ED8
mov r6, #0x1
@@ -1030,7 +1030,7 @@ _02084B20:
add r0, r5, #0x0
mov r1, #0xe
add r2, sp, #0x54
- bl FUN_02067830
+ bl SetBoxMonDataEncrypted
add r0, r5, #0x0
bl FUN_02066ED8
mov r6, #0x1
@@ -1075,7 +1075,7 @@ _02084B80:
add r0, r5, #0x0
mov r1, #0xf
add r2, sp, #0x58
- bl FUN_02067830
+ bl SetBoxMonDataEncrypted
add r0, r5, #0x0
bl FUN_02066ED8
mov r6, #0x1
@@ -1120,7 +1120,7 @@ _02084BE0:
add r0, r5, #0x0
mov r1, #0x10
add r2, sp, #0x5c
- bl FUN_02067830
+ bl SetBoxMonDataEncrypted
add r0, r5, #0x0
bl FUN_02066ED8
mov r6, #0x1
@@ -1165,7 +1165,7 @@ _02084C40:
add r0, r5, #0x0
mov r1, #0x11
add r2, sp, #0x60
- bl FUN_02067830
+ bl SetBoxMonDataEncrypted
add r0, r5, #0x0
bl FUN_02066ED8
mov r6, #0x1
@@ -1210,7 +1210,7 @@ _02084CA0:
add r0, r5, #0x0
mov r1, #0x12
add r2, sp, #0x64
- bl FUN_02067830
+ bl SetBoxMonDataEncrypted
add r0, r5, #0x0
bl FUN_02066ED8
mov r6, #0x1
@@ -1233,7 +1233,7 @@ _02084D14:
add r0, r5, #0x0
mov r1, #0x9
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
str r0, [sp, #0x50]
cmp r0, #0x64
bge _02084D54
@@ -1338,7 +1338,7 @@ FUN_02084DF0: ; 0x02084DF0
add r1, #0x36
mov r2, #0x0
add r5, r0, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
lsl r0, r0, #0x10
lsr r7, r0, #0x10
bne _02084E08
@@ -1349,14 +1349,14 @@ _02084E08:
add r0, r5, #0x0
add r1, #0x3a
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
lsl r0, r0, #0x18
add r6, #0x3e
lsr r4, r0, #0x18
add r0, r5, #0x0
add r1, r6, #0x0
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
lsl r0, r0, #0x18
lsr r1, r0, #0x18
add r0, r7, #0x0
@@ -1382,7 +1382,7 @@ FUN_02084E40: ; 0x02084E40
add r1, #0x36
mov r2, #0x0
add r6, r0, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
lsl r0, r0, #0x10
lsr r7, r0, #0x10
bne _02084E5E
@@ -1397,14 +1397,14 @@ _02084E5E:
ldr r1, [sp, #0x0]
add r0, r6, #0x0
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
add r1, sp, #0x4
strb r0, [r1, #0x0]
add r5, #0x3e
add r0, r6, #0x0
add r1, r5, #0x0
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
add r1, r0, #0x0
lsl r1, r1, #0x18
add r0, r7, #0x0
@@ -1429,7 +1429,7 @@ _02084EA8:
ldr r1, [sp, #0x0]
add r0, r6, #0x0
add r2, sp, #0x4
- bl FUN_02067830
+ bl SetBoxMonDataEncrypted
add sp, #0x8
mov r0, #0x1
pop {r3-r7, pc}
@@ -1450,7 +1450,7 @@ FUN_02084EC0: ; 0x02084EC0
mov r2, #0x0
add r5, r0, #0x0
str r1, [sp, #0x0]
- bl FUN_020671BC
+ bl GetMonDataEncrypted
add r1, sp, #0x8
strb r0, [r1, #0x0]
ldrb r0, [r1, #0x0]
@@ -1464,7 +1464,7 @@ _02084EE6:
add r0, r5, #0x0
add r1, #0x36
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
lsl r0, r0, #0x10
lsr r0, r0, #0x10
mov r1, #0x0
@@ -1480,7 +1480,7 @@ _02084F08:
add r0, r5, #0x0
add r1, r4, #0x0
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
add r1, sp, #0x8
strb r0, [r1, #0x1]
ldrb r1, [r1, #0x0]
@@ -1511,12 +1511,12 @@ _02084F34:
ldr r1, [sp, #0x0]
add r0, r5, #0x0
add r2, sp, #0x8
- bl FUN_02067830
+ bl SetBoxMonDataEncrypted
add r2, sp, #0x8
add r0, r5, #0x0
add r1, r4, #0x0
add r2, #0x1
- bl FUN_02067830
+ bl SetBoxMonDataEncrypted
mov r0, #0x1
add sp, #0xc
pop {r4-r7, pc}
@@ -1556,7 +1556,7 @@ _02084F96:
_02084F98:
mov r1, #0xa2
add r2, sp, #0xc
- bl FUN_02067830
+ bl SetBoxMonDataEncrypted
pop {r3}
pop {r3}
add sp, #0x10
@@ -1621,7 +1621,7 @@ FUN_02085000: ; 0x02085000
add r4, r1, #0x0
mov r1, #0x9
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
cmp r0, #0xff
blt _02085014
mov r0, #0x0
@@ -1723,7 +1723,7 @@ _020850BE:
add r0, r5, #0x0
mov r1, #0x6
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
lsl r0, r0, #0x10
ldr r2, [sp, #0x20]
lsr r0, r0, #0x10
@@ -1741,7 +1741,7 @@ _020850EC:
add r0, r5, #0x0
mov r1, #0x9a
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
cmp r0, #0xb
bne _02085100
ldr r0, [sp, #0x18]
@@ -1751,7 +1751,7 @@ _02085100:
add r0, r5, #0x0
mov r1, #0x97
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
cmp r6, r0
bne _02085114
ldr r0, [sp, #0x18]
@@ -1775,7 +1775,7 @@ _0208512C:
add r0, r5, #0x0
mov r1, #0x9
add r2, sp, #0x18
- bl FUN_02067830
+ bl SetBoxMonDataEncrypted
mov r0, #0x1
pop {r4-r6}
pop {r3}
@@ -1800,24 +1800,24 @@ _02085154:
mov r1, #0xab
mov r2, #0x0
add r5, r0, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
cmp r0, #0x0
beq _020851AC
add r0, r5, #0x0
mov r1, #0xa3
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
str r0, [sp, #0x8]
add r0, r5, #0x0
mov r1, #0xa2
add r2, sp, #0x8
- bl FUN_02067830
+ bl SetBoxMonDataEncrypted
mov r0, #0x0
str r0, [sp, #0x8]
add r0, r5, #0x0
mov r1, #0x9f
add r2, sp, #0x8
- bl FUN_02067830
+ bl SetBoxMonDataEncrypted
mov r4, #0x0
_02085190:
add r0, r5, #0x0
diff --git a/arm9/asm/unk_020854E0.s b/arm9/asm/unk_020854E0.s
index f23b2327..76d5564d 100644
--- a/arm9/asm/unk_020854E0.s
+++ b/arm9/asm/unk_020854E0.s
@@ -111,7 +111,7 @@ FUN_02085578: ; 0x02085578
ldr r2, [r4, #0x14]
add r0, r6, #0x0
mov r1, #0xa9
- bl FUN_020671BC
+ bl GetMonDataEncrypted
add r0, r4, #0x0
pop {r3-r7, pc}
.balign 4
@@ -180,7 +180,7 @@ _0208561E:
ldr r2, [r5, #0x14]
add r0, r4, #0x0
mov r1, #0xa9
- bl FUN_02067830
+ bl SetBoxMonDataEncrypted
mov r0, #0x1
pop {r3-r5, pc}
@@ -218,7 +218,7 @@ FUN_02085644: ; 0x02085644
add r0, r5, #0x0
mov r1, #0xa9
add r2, r4, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
add r0, r7, #0x0
mov r1, #0x0
add r2, r6, #0x0
@@ -229,11 +229,11 @@ FUN_02085644: ; 0x02085644
add r0, r5, #0x0
mov r1, #0xa9
add r2, r4, #0x0
- bl FUN_02067830
+ bl SetBoxMonDataEncrypted
add r0, r5, #0x0
mov r1, #0x6
add r2, sp, #0x0
- bl FUN_02067830
+ bl SetBoxMonDataEncrypted
add r0, r4, #0x0
bl FreeToHeap
add r0, r6, #0x0
@@ -262,11 +262,11 @@ _020856BC:
add r0, r4, #0x0
mov r1, #0xa9
add r2, r6, #0x0
- bl FUN_02067830
+ bl SetBoxMonDataEncrypted
add r0, r4, #0x0
mov r1, #0x6
add r2, sp, #0x0
- bl FUN_02067830
+ bl SetBoxMonDataEncrypted
add r0, r7, #0x0
mov r1, #0x0
add r2, r5, #0x0
diff --git a/arm9/asm/unk_020859C0.s b/arm9/asm/unk_020859C0.s
index 68edc27c..1a2050fe 100644
--- a/arm9/asm/unk_020859C0.s
+++ b/arm9/asm/unk_020859C0.s
@@ -178,7 +178,7 @@ _02085A7C:
beq _02085A9A
add r1, r7, #0x0
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
cmp r0, #0x0
beq _02085A9A
lsl r0, r0, #0x3
@@ -675,7 +675,7 @@ _02085EA6:
mov r1, #0xa1
add r2, sp, #0x8
add r5, r0, #0x0
- bl FUN_02067830
+ bl SetBoxMonDataEncrypted
ldr r1, [sp, #0x8]
ldr r0, [r7, #0x20]
sub r1, r1, #0x1
@@ -683,7 +683,7 @@ _02085EA6:
add r2, r0, #0x0
add r0, r5, #0x0
mov r1, #0xaa
- bl FUN_02067830
+ bl SetBoxMonDataEncrypted
ldr r1, [sp, #0x8]
ldr r0, [r7, #0x20]
sub r1, r1, #0x1
diff --git a/arm9/asm/unk_02086084.s b/arm9/asm/unk_02086084.s
index 2afe74b0..51a7378c 100644
--- a/arm9/asm/unk_02086084.s
+++ b/arm9/asm/unk_02086084.s
@@ -125,7 +125,7 @@ _0208618C:
mov r1, #0x5
ldr r0, [r0, #0xc]
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
ldr r1, _020861D8 ; =0x000001EA
cmp r0, r1
bne _020861A4
@@ -286,7 +286,7 @@ _020862D6:
add r0, r5, #0x0
mov r1, #0x4c
add r2, sp, #0x8
- bl FUN_02067830
+ bl SetBoxMonDataEncrypted
mov r0, #0xb
str r0, [sp, #0x0]
ldr r3, [sp, #0x4]
@@ -297,7 +297,7 @@ _020862D6:
add r0, r5, #0x0
mov r1, #0xb2
mov r2, #0x0
- bl FUN_02067830
+ bl SetBoxMonDataEncrypted
add r0, r6, #0x0
bl FUN_020377AC
ldr r1, [r4, #0xc]
@@ -319,7 +319,7 @@ _0208633A:
ldr r0, [r4, #0xc]
mov r1, #0x5
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
add r7, r0, #0x0
add r0, r6, #0x0
bl FUN_020377AC
@@ -334,13 +334,13 @@ _0208633A:
ldr r0, [r4, #0xc]
mov r1, #0x6f
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
ldr r1, [r4, #0x8]
mov r2, #0x0
str r0, [r1, #0x10]
ldr r0, [r4, #0xc]
mov r1, #0x70
- bl FUN_020671BC
+ bl GetMonDataEncrypted
ldr r1, [r4, #0x8]
str r0, [r1, #0x8]
ldr r1, _020863D8 ; =UNK_020FA5FC
@@ -359,7 +359,7 @@ _02086396:
ldr r0, [r4, #0xc]
ldr r2, [r2, #0x18]
mov r1, #0x77
- bl FUN_02067830
+ bl SetBoxMonDataEncrypted
_020863A8:
ldr r0, [r4, #0x8]
bl FUN_02077AC4
diff --git a/arm9/asm/unk_02086414.s b/arm9/asm/unk_02086414.s
index 1c060f0a..73ff0ee5 100644
--- a/arm9/asm/unk_02086414.s
+++ b/arm9/asm/unk_02086414.s
@@ -1441,7 +1441,7 @@ FUN_02086EE8: ; 0x02086EE8
ldr r4, [r0, #0xc]
mov r2, #0x0
add r0, r4, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
add r6, r0, #0x0
add r0, r4, #0x0
mov r1, #0x2
@@ -1452,7 +1452,7 @@ FUN_02086EE8: ; 0x02086EE8
add r0, r4, #0x0
mov r1, #0x4c
add r2, sp, #0x10
- bl FUN_02067830
+ bl SetBoxMonDataEncrypted
add r0, sp, #0x28
add r1, r4, #0x0
mov r2, #0x2
@@ -1487,7 +1487,7 @@ FUN_02086F4C: ; 0x02086F4C
mov r1, #0x5
ldr r0, [r0, #0xc]
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
add r4, r0, #0x0
ldr r0, [r5, #0x0]
ldr r0, [r0, #0xc]
diff --git a/arm9/asm/unk_02086FA8.s b/arm9/asm/unk_02086FA8.s
index 3c022997..f27865fe 100644
--- a/arm9/asm/unk_02086FA8.s
+++ b/arm9/asm/unk_02086FA8.s
@@ -164,7 +164,7 @@ _020870D2:
mov r1, #0x5
ldr r0, [r0, #0xc]
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
lsl r0, r0, #0x10
lsr r0, r0, #0x10
bl FUN_02005578
@@ -447,7 +447,7 @@ _02087322:
mov r1, #0x5
ldr r0, [r0, #0xc]
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
lsl r0, r0, #0x10
lsr r0, r0, #0x10
bl FUN_02005578
diff --git a/arm9/asm/unk_02087D00.s b/arm9/asm/unk_02087D00.s
index 1f2ef5e9..a5a9b7c9 100644
--- a/arm9/asm/unk_02087D00.s
+++ b/arm9/asm/unk_02087D00.s
@@ -723,7 +723,7 @@ _02088246:
add r0, r6, #0x0
add r1, #0x13
add r2, r7, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
lsl r1, r4, #0x2
str r0, [r5, r1]
add r0, r4, #0x1
@@ -791,7 +791,7 @@ _020882D4:
add r0, r6, #0x0
add r1, #0x13
add r2, r4, r2
- bl FUN_02067830
+ bl SetBoxMonDataEncrypted
add r0, r5, #0x1
lsl r0, r0, #0x18
lsr r5, r0, #0x18
@@ -800,7 +800,7 @@ _020882D4:
add r0, r6, #0x0
mov r1, #0x9
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
add r1, sp, #0x8
strb r0, [r1, #0x0]
ldrb r0, [r1, #0x0]
@@ -811,7 +811,7 @@ _020882D4:
add r0, r6, #0x0
mov r1, #0x9
add r2, sp, #0x8
- bl FUN_02067830
+ bl SetBoxMonDataEncrypted
_0208830C:
add sp, #0x30
pop {r3-r7, pc}
diff --git a/arm9/asm/unk_02088DD8.s b/arm9/asm/unk_02088DD8.s
index 19d246ac..0bb527c8 100644
--- a/arm9/asm/unk_02088DD8.s
+++ b/arm9/asm/unk_02088DD8.s
@@ -33,21 +33,21 @@ FUN_02088DF8: ; 0x02088DF8
mov r1, #0x5
mov r2, #0x0
add r5, r0, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
lsl r0, r0, #0x10
lsr r0, r0, #0x10
str r0, [sp, #0xc]
add r0, r5, #0x0
mov r1, #0x70
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
lsl r0, r0, #0x18
lsr r0, r0, #0x18
str r0, [sp, #0x8]
add r0, r5, #0x0
mov r1, #0xa0
mov r2, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
lsl r0, r0, #0x18
lsr r0, r0, #0x18
mov r4, #0x0
@@ -59,7 +59,7 @@ _02088E34:
add r0, r5, #0x0
add r1, #0x36
add r2, r7, #0x0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
lsl r1, r4, #0x1
strh r0, [r6, r1]
add r0, r4, #0x1
diff --git a/arm9/global.inc b/arm9/global.inc
index 590dce1f..b1937f13 100644
--- a/arm9/global.inc
+++ b/arm9/global.inc
@@ -4719,24 +4719,24 @@
.extern FUN_02066EA4
.extern FUN_02066ED8
.extern FUN_02066F04
-.extern FUN_020671BC
+.extern GetMonDataEncrypted
.extern FUN_020672BC
-.extern FUN_02067830
+.extern SetBoxMonDataEncrypted
.extern FUN_02067960
.extern FUN_02068018
-.extern FUN_0206851C
-.extern FUN_02068538
-.extern FUN_02068640
-.extern FUN_02068654
-.extern FUN_02068678
+.extern AllocAndLoadMonPersonal
+.extern GetPersonalAttr
+.extern FreeMonPersonal
+.extern GetMonBaseStat_HandleFormeConversion
+.extern GetMonBaseStat
.extern FUN_02068698
.extern FUN_020686F8
.extern FUN_02068734
-.extern FUN_02068758
+.extern GetMonExpByLevel
.extern FUN_020687C0
.extern FUN_020687C8
-.extern FUN_02068800
-.extern FUN_02068824
+.extern CalcMonLevel
+.extern CalcMonLevelInternal
.extern FUN_02068854
.extern FUN_0206885C
.extern GetNatureFromPersonality
@@ -4765,8 +4765,8 @@
.extern FUN_020690E4
.extern FUN_020690E8
.extern FUN_02069168
-.extern FUN_02069558
-.extern FUN_020695A8
+.extern ReadFromPersonalPmsNarc
+.extern GetEggSpecies
.extern FUN_02069698
.extern FUN_02069708
.extern FUN_020697CC
diff --git a/arm9/lib/.gitignore b/arm9/lib/.gitignore
new file mode 100644
index 00000000..f64bee72
--- /dev/null
+++ b/arm9/lib/.gitignore
@@ -0,0 +1,3 @@
+libsyscall.a
+
+syscall/*.o
diff --git a/arm9/lib/include/MI_memory.h b/arm9/lib/include/MI_memory.h
index 0ebb3560..bf6c0ca5 100644
--- a/arm9/lib/include/MI_memory.h
+++ b/arm9/lib/include/MI_memory.h
@@ -1,6 +1,8 @@
#ifndef NITRO_MI_MEMORY_H_
#define NITRO_MI_MEMORY_H_
+#include "nitro/types.h"
+
void MI_CpuFill8(void *dest, u8 data, u32 size);
void MI_CpuCopy8(void const *src, void *dest, u32 size);
static inline void MI_CpuClear8(void *dest, u32 size) {
@@ -8,4 +10,16 @@ static inline void MI_CpuClear8(void *dest, u32 size) {
}
void MIi_CpuCopy16(const void *src, void *dst, u32 size);
+void MIi_CpuClear32(u32 data, void *destp, u32 size);
+
+static inline void MI_CpuFill32(void *dest, u32 data, u32 size)
+{
+ MIi_CpuClear32(data, dest, size);
+}
+
+static inline void MI_CpuClear32(void *dest, u32 size)
+{
+ MI_CpuFill32(dest, 0, size);
+}
+
#endif //NITRO_MI_MEMORY_H_
diff --git a/arm9/lib/include/OS_alarm.h b/arm9/lib/include/OS_alarm.h
index d6b0c210..a9734d1b 100644
--- a/arm9/lib/include/OS_alarm.h
+++ b/arm9/lib/include/OS_alarm.h
@@ -3,6 +3,7 @@
#include "nitro/types.h"
#include "OS_thread.h"
+#include "OS_tick.h"
typedef void (*OSAlarmHandler) (void *);
@@ -20,4 +21,8 @@ struct OSiAlarm
OSTick start;
};
+void OS_CancelAlarm(OSAlarm *alarm);
+void OS_CreateAlarm(OSAlarm *alarm);
+void OS_SetAlarm(OSAlarm *alarm, OSTick tick, OSAlarmHandler handler, void *arg);
+
#endif //POKEDIAMOND_OS_ALARM_H
diff --git a/arm9/lib/include/OS_arena.h b/arm9/lib/include/OS_arena.h
index 7608835a..a26cf3bd 100644
--- a/arm9/lib/include/OS_arena.h
+++ b/arm9/lib/include/OS_arena.h
@@ -1,27 +1,8 @@
-#ifndef POKEDIAMOND_OS_ARENA_H
-#define POKEDIAMOND_OS_ARENA_H
+#ifndef POKEDIAMOND_ARM9_OS_ARENA_H
+#define POKEDIAMOND_ARM9_OS_ARENA_H
#include "nitro/types.h"
-
-typedef enum {
- OS_ARENA_MAIN = 0,
- OS_ARENA_MAIN_SUBPRIV = 1,
- OS_ARENA_MAINEX = 2,
- OS_ARENA_ITCM = 3,
- OS_ARENA_DTCM = 4,
- OS_ARENA_SHARED = 5,
- OS_ARENA_WRAM_MAIN = 6,
- OS_ARENA_WRAM_SUB = 7,
- OS_ARENA_WRAM_SUBPRIV = 8,
- OS_ARENA_MAX = 9
-} OSArenaId;
-
-typedef struct {
- void* lo[OS_ARENA_MAX];
- void* hi[OS_ARENA_MAX];
- u16 initialized;
- u8 padding[2];
-} OSArenaInfo;
+#include "nitro/OS_arena_shared.h"
void OS_InitArena(void);
void OS_InitArenaEx(void);
@@ -34,4 +15,4 @@ void OS_SetArenaLo(OSArenaId id, void *newLo);
void* OS_AllocFromArenaLo(OSArenaId id, u32 size, u32 align);
void* OS_AllocFromArenaHi(OSArenaId id, u32 size, u32 align);
-#endif //POKEDIAMOND_OS_ARENA_H
+#endif //POKEDIAMOND_ARM9_OS_ARENA_H
diff --git a/arm9/lib/include/OS_context.h b/arm9/lib/include/OS_context.h
index cded1acb..7a58a2b1 100644
--- a/arm9/lib/include/OS_context.h
+++ b/arm9/lib/include/OS_context.h
@@ -15,4 +15,8 @@ typedef struct OSContext
CPContext cp_context;
} OSContext;
+extern u32 OS_SaveContext(OSContext *context);
+extern void OS_LoadContext(OSContext *context);
+extern void OS_InitContext(OSContext *context, u32 func, u32 stack);
+
#endif //POKEDIAMOND_OS_CONTEXT_H
diff --git a/arm9/lib/include/OS_mutex.h b/arm9/lib/include/OS_mutex.h
index a2cdff23..0fc261a4 100644
--- a/arm9/lib/include/OS_mutex.h
+++ b/arm9/lib/include/OS_mutex.h
@@ -11,4 +11,6 @@ struct OSMutex {
OSMutexLink link;
};
+void OSi_UnlockAllMutex(OSThread * thread);
+
#endif //POKEDIAMOND_OS_MUTEX_H
diff --git a/arm9/lib/include/OS_reset.h b/arm9/lib/include/OS_reset.h
index fd918370..cb7680d1 100644
--- a/arm9/lib/include/OS_reset.h
+++ b/arm9/lib/include/OS_reset.h
@@ -16,10 +16,11 @@ void OS_InitReset(void);
static void OSi_CommonCallback(PXIFifoTag tag, u32 data, BOOL err);
static void OSi_SendToPxi(u16 data);
void OS_ResetSystem(u32 parameter);
+static void OSi_DoResetSystem(void);
void OSi_DoBoot(void);
static void OSi_CpuClear32(register u32 data, register void *destp, register u32 size);
-void OSi_ReloadRomData(void);
-void OSi_ReadCardRom32(u32 src, void *dst, s32 len);
+static void OSi_ReloadRomData(void);
+static void OSi_ReadCardRom32(u32 src, void *dst, s32 len);
static inline u32 OS_GetResetParameter(void)
{
diff --git a/arm9/lib/include/OS_thread.h b/arm9/lib/include/OS_thread.h
index bf62e66b..a80a3b96 100644
--- a/arm9/lib/include/OS_thread.h
+++ b/arm9/lib/include/OS_thread.h
@@ -52,6 +52,8 @@ typedef enum {
OS_THREAD_STATE_TERMINATED = 2
} OSThreadState;
+typedef void (*OSSwitchThreadCallback) (OSThread *from, OSThread *to);
+
typedef void (*OSThreadDestructor) (void *);
struct _OSThread
@@ -83,14 +85,67 @@ struct _OSThread
u32 systemErrno;
};
+static s32 OSi_GetUnusedThreadId(void);
+static void OSi_InsertLinkToQueue(OSThreadQueue *queue, OSThread *thread);
+static OSThread *OSi_RemoveLinkFromQueue(OSThreadQueue *queue);
+static OSThread *OSi_RemoveSpecifiedLinkFromQueue(OSThreadQueue *queue, OSThread *thread);
+OSMutex *OSi_RemoveMutexLinkFromQueue(OSMutexQueue *queue);
+static void OSi_InsertThreadToList(OSThread *thread);
+static void OSi_RemoveThreadFromList(OSThread *thread);
+void OS_InitThread(void);
+BOOL OS_IsThreadAvailable(void);
+void OS_CreateThread(OSThread *thread, void (*func) (void *), void *arg, void *stack, u32 stackSize, u32 prio);
+void OS_ExitThread(void);
+static void OSi_ExitThread_ArgSpecified(OSThread *thread, void *arg);
+static void OSi_ExitThread(void *arg);
+static void OSi_ExitThread_Destroy(void);
+void OS_DestroyThread(OSThread *thread);
+static void OSi_CancelThreadAlarmForSleep(OSThread *thread);
+void OS_JoinThread(OSThread *thread);
+BOOL OS_IsThreadTerminated(const OSThread *thread);
+void OS_SleepThread(OSThreadQueue *queue);
+void OS_WakeupThread(OSThreadQueue *queue);
+void OS_WakeupThreadDirect(OSThread *thread);
+OSThread *OS_SelectThread(void);
+void OS_RescheduleThread(void);
+void OS_YieldThread(void);
+BOOL OS_SetThreadPriority(OSThread *thread, u32 prio);
+u32 OS_GetThreadPriority(const OSThread *thread);
+void OS_Sleep(u32 msec);
+static void OSi_SleepAlarmCallback(void *arg);
+OSSwitchThreadCallback OS_SetSwitchThreadCallback(OSSwitchThreadCallback callback);
+static void OSi_IdleThreadProc(void *);
+u32 OS_DisableScheduler(void);
+u32 OS_EnableScheduler(void);
+void OS_SetThreadDestructor(OSThread *thread, OSThreadDestructor dtor);
+
extern OSThreadInfo OSi_ThreadInfo;
-void OS_SleepThread(OSThreadQueue * queue);
-void OS_WakeupThread(OSThreadQueue * queue);
+static inline OSThreadInfo *OS_GetThreadInfo(void)
+{
+ return &OSi_ThreadInfo;
+}
+
+static inline BOOL OS_IsThreadRunnable(const OSThread *thread)
+{
+ return thread->state == OS_THREAD_STATE_READY;
+}
static inline void OS_InitThreadQueue(OSThreadQueue * queue)
{
queue->head = queue->tail = NULL;
}
+static inline OSThread *OS_GetCurrentThread(void)
+{
+ return OS_GetThreadInfo()->current;
+}
+
+static inline void OS_SetCurrentThread(OSThread *thread)
+{
+ OS_GetThreadInfo()->current = thread;
+}
+
+#define OSi_GetCurrentThread() (*OSi_CurrentThreadPtr)
+
#endif //POKEDIAMOND_OS_THREAD_H
diff --git a/arm9/lib/include/OS_tick.h b/arm9/lib/include/OS_tick.h
index fb4ce7e6..f1c7145d 100644
--- a/arm9/lib/include/OS_tick.h
+++ b/arm9/lib/include/OS_tick.h
@@ -1,8 +1,12 @@
#ifndef POKEDIAMOND_OS_TICK_H
#define POKEDIAMOND_OS_TICK_H
-#include "nitro/types.h"
+#include "consts.h"
typedef u64 OSTick;
+#define OS_SYSTEM_CLOCK HW_SYSTEM_CLOCK
+
+#define OS_MilliSecondsToTicks(msec) ((OSTick)(((OS_SYSTEM_CLOCK/1000) * (u64)(msec)) / 64))
+
#endif //POKEDIAMOND_OS_TICK_H
diff --git a/arm9/lib/include/consts.h b/arm9/lib/include/consts.h
index 6c83bce8..c09e8cd9 100644
--- a/arm9/lib/include/consts.h
+++ b/arm9/lib/include/consts.h
@@ -27,6 +27,8 @@
#define HW_C6_PR_2GB 0x3c
#define HW_C6_PR_4GB 0x3e
+#define HW_SYSTEM_CLOCK 33514000
+
#define PXI_PROC_ARM7 0x01
#define OSi_CONSOLE_NOT_DETECT 0xffffffff
@@ -36,9 +38,14 @@
#define OS_CONSOLE_SIZE_MASK 0x00000003
#define OS_CONSOLE_SIZE_4MB 0x00000001
+#define OS_THREAD_LAUNCHER_PRIORITY 0x10
+#define OS_THREAD_PRIORITY_MIN 0x00
+#define OS_THREAD_PRIORITY_MAX 0x1F
+
+#define OS_THREAD_SPECIFIC_MAX 0x03
+
#define OSi_TCM_REGION_BASE_MASK 0xfffff000
-#define OSi_GetArenaInfo() (*(OSArenaInfo*)HW_ARENA_INFO_BUF)
#define OSi_TRUNC(n, a) (((u32) (n)) & ~((a) - 1))
#define OSi_ROUND(n, a) (((u32) (n) + (a) - 1) & ~((a) - 1))
diff --git a/arm9/lib/include/mmap.h b/arm9/lib/include/mmap.h
index 8f9d8dcd..d0e73aec 100644
--- a/arm9/lib/include/mmap.h
+++ b/arm9/lib/include/mmap.h
@@ -1,15 +1,12 @@
-#ifndef NITRO_MMAP_H
-#define NITRO_MMAP_H
+#ifndef POKEDIAMOND_ARM9_MMAP_H
+#define POKEDIAMOND_ARM9_MMAP_H
#include "nitro/types.h"
+#include "nitro/mmap_shared.h"
extern u32 SDK_AUTOLOAD_DTCM_START[];
-#define HW_MAIN_MEM 0x02000000
-#define HW_MAIN_MEM_SIZE 0x00400000
#define HW_MAIN_MEM_EX_SIZE 0x00800000
-#define HW_MAIN_MEM_MAIN_SIZE 0x003E0000
-#define HW_MAIN_MEM_SHARED_SIZE 0x00001000
#define HW_MAIN_MEM_DEBUGGER_OFFSET 0x00700000
#define HW_ITCM_IMAGE 0x01000000
@@ -31,11 +28,9 @@ extern u32 SDK_AUTOLOAD_DTCM_START[];
#define HW_RESET_PARAMETER_BUF (HW_MAIN_MEM + 0x007ffc20)
#define HW_ROM_BASE_OFFSET_BUF (HW_MAIN_MEM + 0x007ffc2c)
#define HW_WM_BOOT_BUF (HW_MAIN_MEM + 0x007ffc40)
-#define HW_ARENA_INFO_BUF (HW_MAIN_MEM + 0x007ffda0) // Arena data structure
#define HW_ROM_HEADER_BUF (HW_MAIN_MEM + 0x007ffe00) // ROM registration area data buffer
#define HW_RED_RESERVED (HW_MAIN_MEM + 0x007ff800) // Some kind of reserved data for shared memory
#define HW_MAIN_MEM_SYSTEM (HW_MAIN_MEM + 0x007ffc00)
-#define HW_MAIN_MEM_MAIN_END (HW_MAIN_MEM + HW_MAIN_MEM_MAIN_SIZE)
#define HW_MAIN_MEM_EX_END (HW_MAIN_MEM + HW_MAIN_MEM_EX_SIZE)
#define HW_MAIN_MEM_SHARED (HW_MAIN_MEM_EX_END - HW_MAIN_MEM_SHARED_SIZE)
#define HW_DTCM_SVC_STACK_END (HW_DTCM + 0x00003fc0)
@@ -115,4 +110,4 @@ typedef struct {
#define OS_GetSystemWork() ((OSSystemWork *)HW_MAIN_MEM_SYSTEM)
-#endif \ No newline at end of file
+#endif //POKEDIAMOND_ARM9_MMAP_H \ No newline at end of file
diff --git a/arm9/lib/src/OS_init.c b/arm9/lib/src/OS_init.c
index e1c7e63a..f919f521 100644
--- a/arm9/lib/src/OS_init.c
+++ b/arm9/lib/src/OS_init.c
@@ -10,7 +10,6 @@ extern void OS_InitException(void);
extern void MI_Init(void);
extern void OS_InitVAlarm(void);
extern void OSi_InitVramExclusive(void);
-extern void OS_InitThread(void);
extern void CTRDG_Init(void);
extern void CARD_Init(void);
extern void PM_Init(void);
diff --git a/arm9/lib/src/OS_reset.c b/arm9/lib/src/OS_reset.c
index b7bf5f0b..0857bf0b 100644
--- a/arm9/lib/src/OS_reset.c
+++ b/arm9/lib/src/OS_reset.c
@@ -23,7 +23,6 @@ extern void DC_StoreAll(void);
extern void DC_InvalidateAll(void);
extern void IC_InvalidateAll(void);
extern void DC_WaitWriteBufferEmpty(void);
-extern void OSi_DoResetSystem(void); //in itcm, should technically be in this file
ARM_FUNC void OS_InitReset(void) {
if (OSi_IsInitReset) {
@@ -64,10 +63,19 @@ ARM_FUNC void OS_ResetSystem(u32 parameter) {
(void)OS_ResetRequestIrqMask((u32)~0);
*(u32 *)HW_RESET_PARAMETER_BUF = parameter;
OSi_SendToPxi(OS_PXI_COMMAND_RESET);
- OSi_DoResetSystem(); //oh boy this is in itcm, that's gonna be fun to deal with Kappa
+ OSi_DoResetSystem();
}
#pragma section ITCM begin
+ARM_FUNC static void OSi_DoResetSystem(void)
+{
+ while (!OSi_IsResetOccurred) { }
+
+ reg_OS_IME = 0;
+ OSi_ReloadRomData();
+ OSi_DoBoot();
+}
+
ARM_FUNC asm void OSi_DoBoot(void)
{
mov ip, #0x04000000
@@ -127,22 +135,7 @@ _01FF8284:
bx lr
}
-enum
-{
- CARD_MASTER_SELECT_ROM = 0x0,
- CARD_MASTER_ENABLE = 0x80,
- CARD_CMD_READ_PAGE = 0xb7,
- CARD_CTRL_CMD_MASK = 0x07000000,
- CARD_CTRL_CMD_PAGE = 0x01000000,
- CARD_CTRL_READ = 0x00000000,
- CARD_CTRL_RESET_HI = 0x20000000,
- CARD_CTRL_START = 0x80000000,
- CARD_CTRL_READY = 0x00800000,
- CARD_ENUM_END
-};
-
-
-ARM_FUNC void OSi_ReloadRomData(void)
+ARM_FUNC static void OSi_ReloadRomData(void)
{
u32 header = (u32)HW_ROM_HEADER_BUF;
const u32 rom_base = *(u32 *)HW_ROM_BASE_OFFSET_BUF;
@@ -182,7 +175,21 @@ ARM_FUNC void OSi_ReloadRomData(void)
OSi_ReadCardRom32(src_arm7, (void *)dst_arm7, (s32)len_arm7);
}
-ARM_FUNC void OSi_ReadCardRom32(u32 src, void *dst, s32 len) //should be static, can't mark as such
+enum
+{
+ CARD_MASTER_SELECT_ROM = 0x0,
+ CARD_MASTER_ENABLE = 0x80,
+ CARD_CMD_READ_PAGE = 0xb7,
+ CARD_CTRL_CMD_MASK = 0x07000000,
+ CARD_CTRL_CMD_PAGE = 0x01000000,
+ CARD_CTRL_READ = 0x00000000,
+ CARD_CTRL_RESET_HI = 0x20000000,
+ CARD_CTRL_START = 0x80000000,
+ CARD_CTRL_READY = 0x00800000,
+ CARD_ENUM_END
+};
+
+ARM_FUNC static void OSi_ReadCardRom32(u32 src, void *dst, s32 len)
{
vu32 *const hdr_GAME_BUF = (vu32 *)(HW_ROM_HEADER_BUF + 0x60);
diff --git a/arm9/lib/src/OS_thread.c b/arm9/lib/src/OS_thread.c
new file mode 100644
index 00000000..2ecde69a
--- /dev/null
+++ b/arm9/lib/src/OS_thread.c
@@ -0,0 +1,720 @@
+#include "function_target.h"
+#include "MI_memory.h"
+#include "OS_thread.h"
+#include "OS_mutex.h"
+#include "OS_alarm.h"
+#include "OS_system.h"
+#include "OS_context.h"
+#include "OS_terminate_proc.h"
+#include "consts.h"
+
+extern void SDK_SYS_STACKSIZE(void);
+extern void SDK_IRQ_STACKSIZE(void);
+
+extern void SDK_SECTION_ARENA_DTCM_START(void);
+
+static s32 OSi_ThreadIdCount = 0;
+
+u32 OSi_RescheduleCount = 0;
+
+void *OSi_StackForDestructor = NULL;
+
+BOOL OSi_IsThreadInitialized = FALSE;
+
+OSThreadInfo OSi_ThreadInfo;
+
+OSThread **OSi_CurrentThreadPtr = NULL;
+
+void *OSi_SystemCallbackInSwitchThread = NULL;
+
+OSThread OSi_LauncherThread;
+OSThread OSi_IdleThread;
+
+u32 OSi_IdleThreadStack[50];
+
+ARM_FUNC static s32 OSi_GetUnusedThreadId(void)
+{
+ return ++OSi_ThreadIdCount;
+}
+
+ARM_FUNC static void OSi_InsertLinkToQueue(OSThreadQueue *queue, OSThread *thread)
+{
+ OSThread *next = queue->head;
+
+ while (next && next->priority <= thread->priority)
+ {
+ if (next == thread)
+ return;
+ next = next->link.next;
+ }
+
+ if (!next)
+ {
+ OSThread *prev = queue->tail;
+
+ if (!prev)
+ {
+ queue->head = thread;
+ }
+ else
+ {
+ prev->link.next = thread;
+ }
+
+ thread->link.prev = prev;
+ thread->link.next = NULL;
+ queue->tail = thread;
+ }
+ else
+ {
+ OSThread *prev = next->link.prev;
+
+ if (!prev)
+ {
+ queue->head = thread;
+ }
+ else
+ {
+ prev->link.next = thread;
+ }
+
+ thread->link.prev = prev;
+ thread->link.next = next;
+ next->link.prev = thread;
+ }
+}
+
+ARM_FUNC static OSThread *OSi_RemoveLinkFromQueue(OSThreadQueue *queue)
+{
+ OSThread *thread = queue->head;
+
+ if (thread)
+ {
+ OSThread *next = thread->link.next;
+
+ queue->head = next;
+
+ if (next)
+ {
+ next->link.prev = NULL;
+ }
+ else
+ {
+ queue->tail = NULL;
+ thread->queue = NULL;
+ }
+ }
+
+ return thread;
+}
+
+ARM_FUNC static OSThread *OSi_RemoveSpecifiedLinkFromQueue(OSThreadQueue *queue, OSThread *thread)
+{
+ OSThread *queueHead = queue->head;
+
+ while (queueHead)
+ {
+ OSThread *next = queueHead->link.next;
+
+ if (queueHead == thread)
+ {
+ OSThread *prev = queueHead->link.prev;
+
+ if (queue->head == queueHead)
+ {
+ queue->head = next;
+ }
+ else
+ {
+ prev->link.next = next;
+ }
+
+ if (queue->tail == queueHead)
+ {
+ queue->tail = prev;
+ }
+ else
+ {
+ next->link.prev = prev;
+ }
+
+ break;
+ }
+
+ queueHead = next;
+ }
+
+ return queueHead;
+}
+
+ARM_FUNC OSMutex *OSi_RemoveMutexLinkFromQueue(OSMutexQueue *queue)
+{
+ OSMutex *mutexHead = queue->head;
+
+ if (mutexHead)
+ {
+ OSMutex *next = mutexHead->link.next;
+
+ queue->head = next;
+
+ if (next)
+ {
+ next->link.prev = NULL;
+ }
+ else
+ {
+ queue->tail = NULL;
+ }
+ }
+
+ return mutexHead;
+}
+
+ARM_FUNC static void OSi_InsertThreadToList(OSThread *thread)
+{
+ OSThread *t = OSi_ThreadInfo.list;
+ OSThread *pre = NULL;
+
+ while(t && t->priority < thread->priority)
+ {
+ pre = t;
+ t = t->next;
+ }
+
+ if (!pre)
+ {
+ thread->next = OSi_ThreadInfo.list;
+ OSi_ThreadInfo.list = thread;
+ }
+ else
+ {
+ thread->next = pre->next;
+ pre->next = thread;
+ }
+}
+
+ARM_FUNC static void OSi_RemoveThreadFromList(OSThread *thread)
+{
+ OSThread *t = OSi_ThreadInfo.list;
+ OSThread *pre = NULL;
+
+ while (t && t != thread)
+ {
+ pre = t;
+ t = t-> next;
+ }
+
+ if (!pre)
+ {
+ OSi_ThreadInfo.list = thread->next;
+ }
+ else
+ {
+ pre->next = thread->next;
+ }
+}
+
+ARM_FUNC static void OSi_RescheduleThread(void)
+{
+ if (OSi_RescheduleCount <= 0)
+ {
+ OSThreadInfo *info = &OSi_ThreadInfo;
+ if (info->irqDepth > 0 || OS_GetProcMode() == OS_PROCMODE_IRQ)
+ {
+ info->isNeedRescheduling = TRUE;
+ }
+ else
+ {
+ OSThread *currentThread = OSi_GetCurrentThread();
+ OSThread *nextThread = OS_SelectThread();
+
+ if (currentThread == nextThread || !nextThread)
+ return;
+
+ if (currentThread->state != OS_THREAD_STATE_TERMINATED
+ && OS_SaveContext(&currentThread->context))
+ return;
+
+ if (OSi_SystemCallbackInSwitchThread)
+ {
+ ((OSSwitchThreadCallback)OSi_SystemCallbackInSwitchThread) (currentThread, nextThread);
+ }
+
+ if (info->switchCallback)
+ {
+ ((OSSwitchThreadCallback)info->switchCallback) (currentThread, nextThread);
+ }
+
+ OS_SetCurrentThread(nextThread);
+
+ OS_LoadContext(&nextThread->context);
+ }
+ }
+}
+
+ARM_FUNC void OS_InitThread(void)
+{
+ if (OSi_IsThreadInitialized)
+ return;
+ OSi_IsThreadInitialized = TRUE;
+
+ OSi_CurrentThreadPtr = &(OSi_ThreadInfo.current);
+
+ OSi_LauncherThread.priority = OS_THREAD_LAUNCHER_PRIORITY;
+ OSi_LauncherThread.id = 0;
+ OSi_LauncherThread.state = OS_THREAD_STATE_READY;
+ OSi_LauncherThread.next = NULL;
+
+ OSi_LauncherThread.profiler = NULL;
+
+ OSi_ThreadInfo.list = &OSi_LauncherThread;
+
+ OS_SetCurrentThread(&OSi_LauncherThread);
+
+ void *stackLo = (((s32)SDK_SYS_STACKSIZE) <= 0) ?
+ (void *)((u32)SDK_SECTION_ARENA_DTCM_START - (s32)SDK_SYS_STACKSIZE) :
+ (void *)((u32)(HW_DTCM_SVC_STACK - (s32)SDK_IRQ_STACKSIZE) - (s32)SDK_SYS_STACKSIZE);
+
+ OSi_LauncherThread.stackBottom = (u32)(HW_DTCM_SVC_STACK - (s32)SDK_IRQ_STACKSIZE);
+ OSi_LauncherThread.stackTop = (u32)stackLo;
+ OSi_LauncherThread.stackWarningOffset = 0;
+
+ //checksums
+ *(u32 *)(OSi_LauncherThread.stackBottom - sizeof(u32)) = 0xfddb597dUL;
+ *(u32 *)OSi_LauncherThread.stackTop = 0x7bf9dd5bUL;
+
+ OS_InitThreadQueue(&OSi_LauncherThread.joinQueue);
+
+ OSi_ThreadInfo.isNeedRescheduling = FALSE;
+ OSi_ThreadInfo.irqDepth = 0;
+
+ OS_GetSystemWork()->threadinfo_mainp = &OSi_ThreadInfo;
+
+ (void)OS_SetSwitchThreadCallback(NULL);
+
+ OS_CreateThread(&OSi_IdleThread, OSi_IdleThreadProc, NULL,
+ OSi_IdleThreadStack + 50, 200, OS_THREAD_PRIORITY_MAX);
+
+ OSi_IdleThread.priority = OS_THREAD_PRIORITY_MAX + 1;
+ OSi_IdleThread.state = OS_THREAD_STATE_READY;
+}
+
+ARM_FUNC asm BOOL OS_IsThreadAvailable(void)
+{
+ ldr r0, =OSi_IsThreadInitialized
+ ldr r0, [r0, #0]
+ bx lr
+}
+
+ARM_FUNC void OS_CreateThread(OSThread *thread, void (*func) (void *), void *arg, void *stack, u32 stackSize, u32 prio)
+{
+ OSIntrMode enable = OS_DisableInterrupts();
+
+ s32 index = OSi_GetUnusedThreadId();
+
+ thread->priority = prio;
+ thread->id = (u32)index;
+ thread->state = OS_THREAD_STATE_WAITING;
+
+ thread->profiler = NULL;
+
+ OSi_InsertThreadToList(thread);
+
+ thread->stackBottom = (u32)stack;
+ thread->stackTop = (u32)stack - stackSize;
+ thread->stackWarningOffset = 0;
+
+ *(u32 *)(thread->stackBottom - sizeof(u32)) = 0xfddb597dUL;
+ *(u32 *)thread->stackTop = 0x7bf9dd5bUL;
+
+ OS_InitThreadQueue(&thread->joinQueue);
+
+ OS_InitContext(&thread->context, (u32)func, (u32)stack - 4);
+
+ thread->context.r[0] = (u32)arg;
+ thread->context.lr = (u32)OS_ExitThread;
+
+ MI_CpuClear32((void *)((u32)stack - stackSize + 4), stackSize - 8);
+
+ thread->mutex = NULL;
+ thread->mutexQueue.head = NULL;
+ thread->mutexQueue.tail = NULL;
+
+ OS_SetThreadDestructor(thread, NULL);
+
+ thread->queue = NULL;
+ thread->link.prev = thread->link.next = NULL;
+
+ MI_CpuClear32(&thread->specific[0], sizeof(void *) * OS_THREAD_SPECIFIC_MAX);
+
+ thread->alarmForSleep = NULL;
+
+ (void)OS_RestoreInterrupts(enable);
+}
+
+ARM_FUNC void OS_ExitThread(void)
+{
+ (void)OS_DisableInterrupts();
+ OSi_ExitThread_ArgSpecified(OS_GetCurrentThread(), 0);
+}
+
+ARM_FUNC static void OSi_ExitThread_ArgSpecified(OSThread *thread, void *arg)
+{
+ if (OSi_StackForDestructor)
+ {
+ OS_InitContext(&thread->context, (u32)OSi_ExitThread, (u32)OSi_StackForDestructor);
+ thread->context.r[0] = (u32)arg;
+ thread->context.cpsr |= HW_PSR_DISABLE_IRQ;
+ thread->state = OS_THREAD_STATE_READY;
+ OS_LoadContext(&thread->context);
+ }
+ else
+ {
+ OSi_ExitThread(arg);
+ }
+}
+
+ARM_FUNC static void OSi_ExitThread(void *arg)
+{
+ OSThread *currentThread = OSi_GetCurrentThread();
+ OSThreadDestructor destructor = currentThread->destructor;
+
+ if (destructor)
+ {
+ currentThread->destructor = NULL;
+ destructor(arg);
+ (void)OS_DisableInterrupts();
+ }
+
+ OSi_ExitThread_Destroy();
+}
+
+ARM_FUNC static void OSi_ExitThread_Destroy(void)
+{
+ OSThread *currentThread = OSi_GetCurrentThread();
+ (void)OS_DisableScheduler();
+
+ OSi_UnlockAllMutex(currentThread);
+
+ if (currentThread->queue)
+ {
+ (void)OSi_RemoveSpecifiedLinkFromQueue(currentThread->queue, currentThread);
+ }
+
+ OSi_RemoveThreadFromList(currentThread);
+
+ currentThread->state = OS_THREAD_STATE_TERMINATED;
+
+ OS_WakeupThread(&currentThread->joinQueue);
+
+ (void)OS_EnableScheduler();
+
+ OS_RescheduleThread();
+
+ OS_Terminate();
+}
+
+ARM_FUNC void OS_DestroyThread(OSThread *thread)
+{
+ OSIntrMode enabled = OS_DisableInterrupts();
+
+ if (OS_GetCurrentThread() == thread)
+ {
+ OSi_ExitThread_Destroy();
+ }
+
+ (void)OS_DisableScheduler();
+
+ OSi_UnlockAllMutex(thread);
+
+ OSi_CancelThreadAlarmForSleep(thread);
+
+ if (thread->queue)
+ {
+ (void)OSi_RemoveSpecifiedLinkFromQueue(thread->queue, thread);
+ }
+
+ OSi_RemoveThreadFromList(thread);
+
+ thread->state = OS_THREAD_STATE_TERMINATED;
+
+ OS_WakeupThread(&thread->joinQueue);
+
+ (void)OS_EnableScheduler();
+ (void)OS_RestoreInterrupts(enabled);
+
+ OS_RescheduleThread();
+}
+
+ARM_FUNC static void OSi_CancelThreadAlarmForSleep(OSThread *thread)
+{
+ OSAlarm *alarm = thread->alarmForSleep;
+
+ if (alarm)
+ {
+ OS_CancelAlarm(alarm);
+ }
+}
+
+ARM_FUNC void OS_JoinThread(OSThread *thread)
+{
+ OSIntrMode enabled = OS_DisableInterrupts();
+
+ if (thread->state != OS_THREAD_STATE_TERMINATED)
+ {
+ OS_SleepThread(&thread->joinQueue);
+ }
+
+ (void)OS_RestoreInterrupts(enabled);
+}
+
+ARM_FUNC BOOL OS_IsThreadTerminated(const OSThread *thread)
+{
+ return (thread->state == OS_THREAD_STATE_TERMINATED) ? TRUE : FALSE;
+}
+
+ARM_FUNC void OS_SleepThread(OSThreadQueue *queue)
+{
+ OSIntrMode enabled = OS_DisableInterrupts();
+ OSThread *currentThread = OSi_GetCurrentThread();
+
+ if (queue)
+ {
+ currentThread->queue = queue;
+ OSi_InsertLinkToQueue(queue, currentThread);
+ }
+
+ currentThread->state = OS_THREAD_STATE_WAITING;
+ OSi_RescheduleThread();
+
+ (void)OS_RestoreInterrupts(enabled);
+}
+
+ARM_FUNC void OS_WakeupThread(OSThreadQueue *queue)
+{
+ OSIntrMode enabled = OS_DisableInterrupts();
+
+ if (queue->head)
+ {
+ while (queue->head)
+ {
+ OSThread *thread = OSi_RemoveLinkFromQueue(queue);
+
+ thread->state = OS_THREAD_STATE_READY;
+ thread->queue = NULL;
+ thread->link.prev = thread->link.next = NULL;
+ }
+
+ OS_InitThreadQueue(queue);
+ OSi_RescheduleThread();
+ }
+
+ (void)OS_RestoreInterrupts(enabled);
+}
+
+ARM_FUNC void OS_WakeupThreadDirect(OSThread *thread)
+{
+ OSIntrMode enabled = OS_DisableInterrupts();
+
+ thread->state = OS_THREAD_STATE_READY;
+ OSi_RescheduleThread();
+
+ (void)OS_RestoreInterrupts(enabled);
+}
+
+ARM_FUNC OSThread *OS_SelectThread(void)
+{
+ OSThread *thread = OSi_ThreadInfo.list;
+
+ while (thread && !OS_IsThreadRunnable(thread))
+ {
+ thread = thread->next;
+ }
+
+ return thread;
+}
+
+ARM_FUNC void OS_RescheduleThread(void)
+{
+ OSIntrMode enabled = OS_DisableInterrupts();
+ OSi_RescheduleThread();
+ (void)OS_RestoreInterrupts(enabled);
+}
+
+ARM_FUNC void OS_YieldThread(void)
+{
+ OSThread *current = OS_GetCurrentThread();
+ OSThread *pre = NULL;
+ OSThread *lastThread = NULL;
+ s32 samePriorityThread = 0;
+ OSIntrMode enabled = OS_DisableInterrupts();
+
+ OSThread *t = OSi_ThreadInfo.list;
+ OSThread *tPre = NULL;
+
+ while (t)
+ {
+ if (t == current)
+ {
+ pre = tPre;
+ }
+
+ if (current->priority == t->priority)
+ {
+ lastThread = t;
+ samePriorityThread++;
+ }
+
+ tPre = t;
+ t = t->next;
+ }
+
+ if (samePriorityThread <= 1 || lastThread == current)
+ {
+ (void)OS_RestoreInterrupts(enabled);
+ return;
+ }
+
+ if (!pre)
+ {
+ OSi_ThreadInfo.list = current->next;
+ }
+ else
+ {
+ pre->next = current->next;
+ }
+
+ current->next = lastThread->next;
+ lastThread->next = current;
+
+ OSi_RescheduleThread();
+
+ (void)OS_RestoreInterrupts(enabled);
+}
+
+ARM_FUNC BOOL OS_SetThreadPriority(OSThread *thread, u32 prio)
+{
+ OSThread *t = OSi_ThreadInfo.list;
+ OSThread *pre = NULL;
+ OSIntrMode enabled = OS_DisableInterrupts();
+
+ while (t && t != thread)
+ {
+ pre = t;
+ t = t->next;
+ }
+
+ if (!t || t == &OSi_IdleThread)
+ {
+ (void)OS_RestoreInterrupts(enabled);
+ return FALSE;
+ }
+
+ if (t->priority != prio)
+ {
+ if (!pre)
+ {
+ OSi_ThreadInfo.list = thread->next;
+ }
+ else
+ {
+ pre->next = thread->next;
+ }
+
+ thread->priority = prio;
+ OSi_InsertThreadToList(thread);
+
+ OSi_RescheduleThread();
+ }
+
+ (void)OS_RestoreInterrupts(enabled);
+
+ return TRUE;
+}
+
+ARM_FUNC u32 OS_GetThreadPriority(const OSThread *thread)
+{
+ return thread->priority;
+}
+
+ARM_FUNC void OS_Sleep(u32 msec)
+{
+ OSAlarm alarm;
+
+ OS_CreateAlarm(&alarm);
+ OSThread *volatile p_thread = OSi_GetCurrentThread();
+ OSIntrMode enabled = OS_DisableInterrupts();
+
+ p_thread->alarmForSleep = &alarm;
+
+ OS_SetAlarm(&alarm, OS_MilliSecondsToTicks(msec), &OSi_SleepAlarmCallback,
+ (void*)&p_thread);
+ while (p_thread != NULL)
+ {
+ OS_SleepThread(NULL);
+ }
+ (void)OS_RestoreInterrupts(enabled);
+}
+
+ARM_FUNC static void OSi_SleepAlarmCallback(void *arg)
+{
+ OSThread **pp_thread = (OSThread **)arg;
+ OSThread *p_thread = *pp_thread;
+ *pp_thread = NULL;
+
+ p_thread->alarmForSleep = NULL;
+
+ OS_WakeupThreadDirect(p_thread);
+}
+
+ARM_FUNC OSSwitchThreadCallback OS_SetSwitchThreadCallback(OSSwitchThreadCallback callback)
+{
+ OSIntrMode enabled = OS_DisableInterrupts();
+ OSSwitchThreadCallback prev = OSi_ThreadInfo.switchCallback;
+ OSi_ThreadInfo.switchCallback = callback;
+
+ (void)OS_RestoreInterrupts(enabled);
+ return prev;
+}
+
+ARM_FUNC static void OSi_IdleThreadProc(void *)
+{
+ (void)OS_EnableInterrupts();
+ while (1)
+ {
+ OS_Halt();
+ }
+}
+
+ARM_FUNC u32 OS_DisableScheduler(void)
+{
+ OSIntrMode enabled = OS_DisableInterrupts();
+ u32 count;
+
+ if (OSi_RescheduleCount < (u32)-1)
+ {
+ count = OSi_RescheduleCount++;
+ }
+ (void)OS_RestoreInterrupts(enabled);
+
+ return count;
+}
+
+ARM_FUNC u32 OS_EnableScheduler(void)
+{
+ OSIntrMode enabled = OS_DisableInterrupts();
+ u32 count = 0;
+
+ if (OSi_RescheduleCount > 0)
+ {
+ count = OSi_RescheduleCount--;
+ }
+ (void)OS_RestoreInterrupts(enabled);
+
+ return count;
+}
+
+ARM_FUNC void OS_SetThreadDestructor(OSThread *thread, OSThreadDestructor dtor)
+{
+ thread->destructor = dtor;
+}
diff --git a/arm9/modules/05/asm/module_05.s b/arm9/modules/05/asm/module_05.s
index b6c8c3b5..7a16d48c 100644
--- a/arm9/modules/05/asm/module_05.s
+++ b/arm9/modules/05/asm/module_05.s
@@ -27440,12 +27440,12 @@ _021E4980:
add r0, r7, #0
mov r1, #0xa0
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
add r7, r0, #0
ldr r0, [sp]
mov r1, #0xa0
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
mov r1, #0x55
lsl r1, r1, #2
ldr r1, [r5, r1]
@@ -43131,7 +43131,7 @@ MOD05_021EC4F0: ; 0x021EC4F0
add r0, r4, #0
mov r1, #0x74
add r2, sp, #0xc
- bl FUN_020671BC
+ bl GetMonDataEncrypted
add r0, r4, #0
bl FUN_020690E4
bl MOD05_021EC4DC
@@ -43142,7 +43142,7 @@ MOD05_021EC4F0: ; 0x021EC4F0
add r2, r0, #0
add r0, r4, #0
mov r1, #0xa9
- bl FUN_020671BC
+ bl GetMonDataEncrypted
_021EC544:
ldr r1, [sp, #4]
add r0, r4, #0
@@ -43313,13 +43313,13 @@ MOD05_021EC668: ; 0x021EC668
add r0, r4, #0
mov r1, #0xa0
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
cmp r0, #0x64
beq _021EC6E0
add r0, r4, #0
mov r1, #8
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
str r0, [sp, #8]
add r0, r6, #0
bl FUN_02023C84
@@ -43329,7 +43329,7 @@ MOD05_021EC668: ; 0x021EC668
str r0, [sp, #8]
add r0, r4, #0
mov r1, #8
- bl FUN_02067830
+ bl SetBoxMonDataEncrypted
add r0, r4, #0
bl MOD05_021EC604
_021EC6E0:
@@ -43342,7 +43342,7 @@ _021EC6E0:
add r2, r0, #0
add r0, r4, #0
mov r1, #0xa9
- bl FUN_02067830
+ bl SetBoxMonDataEncrypted
_021EC6FA:
ldr r0, [sp]
add r1, r4, #0
@@ -43796,7 +43796,7 @@ _021ECA6C:
add r0, r4, #0
mov r1, #0x46
add r2, r7, #0
- bl FUN_02067830
+ bl SetBoxMonDataEncrypted
b _021ECAEE
_021ECA82:
mov r1, #0x47
@@ -43806,7 +43806,7 @@ _021ECA82:
add r0, r4, #0
mov r1, #0x47
add r2, r7, #0
- bl FUN_02067830
+ bl SetBoxMonDataEncrypted
b _021ECAEE
_021ECA98:
mov r1, #0x48
@@ -43816,7 +43816,7 @@ _021ECA98:
add r0, r4, #0
mov r1, #0x48
add r2, r7, #0
- bl FUN_02067830
+ bl SetBoxMonDataEncrypted
b _021ECAEE
_021ECAAE:
mov r1, #0x49
@@ -43826,7 +43826,7 @@ _021ECAAE:
add r0, r4, #0
mov r1, #0x49
add r2, r7, #0
- bl FUN_02067830
+ bl SetBoxMonDataEncrypted
b _021ECAEE
_021ECAC4:
mov r1, #0x4a
@@ -43836,7 +43836,7 @@ _021ECAC4:
add r0, r4, #0
mov r1, #0x4a
add r2, r7, #0
- bl FUN_02067830
+ bl SetBoxMonDataEncrypted
b _021ECAEE
_021ECADA:
mov r1, #0x4b
@@ -43846,7 +43846,7 @@ _021ECADA:
add r0, r4, #0
mov r1, #0x4b
add r2, r7, #0
- bl FUN_02067830
+ bl SetBoxMonDataEncrypted
_021ECAEE:
add r0, r5, #1
lsl r0, r0, #0x18
@@ -43864,7 +43864,7 @@ MOD05_021ECAFC: ; 0x021ECAFC
mov r1, #5
add r2, r4, #0
add r6, r4, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
lsl r0, r0, #0x10
lsr r2, r0, #0x10
ldr r0, _021ECB60 ; =0x00004E20
@@ -43935,14 +43935,14 @@ MOD05_021ECB6C: ; 0x021ECB6C
add r0, r7, #0
mov r1, #5
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
lsl r0, r0, #0x10
lsr r0, r0, #0x10
str r0, [sp, #0x18]
add r0, r7, #0
mov r1, #0x70
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
lsl r0, r0, #0x10
lsr r0, r0, #0x10
str r0, [sp, #0xc]
@@ -44333,7 +44333,7 @@ _021ECE8C:
lsl r1, r0, #1
add r0, sp, #0xc
ldrh r0, [r0, r1]
- bl FUN_02069558
+ bl ReadFromPersonalPmsNarc
add r4, r0, #0
cmp r4, #0x1d
bne _021ECEBC
@@ -44403,7 +44403,7 @@ MOD05_021ECF14: ; 0x021ECF14
add r0, r6, #0
mov r1, #0x13
add r4, r3, #0
- bl FUN_02068678
+ bl GetMonBaseStat
add r1, sp, #0x10
strb r0, [r1]
mov r0, #0
@@ -44424,16 +44424,16 @@ MOD05_021ECF14: ; 0x021ECF14
add r0, r5, #0
mov r1, #0x9a
add r2, sp, #0x14
- bl FUN_02067830
+ bl SetBoxMonDataEncrypted
add r0, r5, #0
mov r1, #9
add r2, sp, #0x10
- bl FUN_02067830
+ bl SetBoxMonDataEncrypted
add r2, sp, #0x10
add r0, r5, #0
mov r1, #0x9b
add r2, #2
- bl FUN_02067830
+ bl SetBoxMonDataEncrypted
add r0, sp, #0x30
ldrb r0, [r0, #8]
cmp r0, #0
@@ -44441,7 +44441,7 @@ MOD05_021ECF14: ; 0x021ECF14
add r0, r5, #0
mov r1, #0x97
add r2, sp, #0x38
- bl FUN_02067830
+ bl SetBoxMonDataEncrypted
_021ECF7E:
add r2, sp, #0x10
mov r1, #1
@@ -44450,7 +44450,7 @@ _021ECF7E:
add r0, r5, #0
mov r1, #0x4c
add r2, #1
- bl FUN_02067830
+ bl SetBoxMonDataEncrypted
ldr r0, _021ED008 ; =0x000001EE
mov r1, #4
bl FUN_0200AA50
@@ -44458,7 +44458,7 @@ _021ECF7E:
add r0, r5, #0
mov r1, #0x76
add r2, r6, #0
- bl FUN_02067830
+ bl SetBoxMonDataEncrypted
add r0, r6, #0
bl FUN_02021A20
ldr r0, [sp, #0x40]
@@ -44477,15 +44477,15 @@ _021ECF7E:
add r0, r5, #0
mov r1, #0x90
add r2, r6, #0
- bl FUN_02067830
+ bl SetBoxMonDataEncrypted
add r0, r5, #0
mov r1, #7
add r2, sp, #0x1c
- bl FUN_02067830
+ bl SetBoxMonDataEncrypted
add r0, r5, #0
mov r1, #0x9c
add r2, sp, #0x18
- bl FUN_02067830
+ bl SetBoxMonDataEncrypted
add r0, r6, #0
bl FUN_02021A20
_021ECFEE:
@@ -44514,7 +44514,7 @@ MOD05_021ED00C: ; 0x021ED00C
mov r1, #0x13
add r5, r2, #0
add r6, r3, #0
- bl FUN_02068678
+ bl GetMonBaseStat
add r1, sp, #0x14
strb r0, [r1]
add r0, r5, #0
@@ -44562,20 +44562,20 @@ _021ED05E:
add r0, r7, #0
mov r1, #0x9a
add r2, #2
- bl FUN_02067830
+ bl SetBoxMonDataEncrypted
add r0, r7, #0
mov r1, #9
add r2, sp, #0x14
- bl FUN_02067830
+ bl SetBoxMonDataEncrypted
add r2, sp, #0x14
add r0, r7, #0
mov r1, #0x9b
add r2, #1
- bl FUN_02067830
+ bl SetBoxMonDataEncrypted
add r0, r7, #0
mov r1, #0x70
add r2, sp, #0x30
- bl FUN_02067830
+ bl SetBoxMonDataEncrypted
ldr r0, _021ED0C8 ; =0x000001EE
mov r1, #4
bl FUN_0200AA50
@@ -44583,7 +44583,7 @@ _021ED05E:
add r0, r7, #0
mov r1, #0x76
add r2, r4, #0
- bl FUN_02067830
+ bl SetBoxMonDataEncrypted
add r0, r4, #0
bl FUN_02021A20
add sp, #0x18
@@ -44664,7 +44664,7 @@ _021ED168:
add r0, r4, #0
mov r1, #0x4c
add r2, sp, #0x10
- bl FUN_02067830
+ bl SetBoxMonDataEncrypted
ldr r0, [sp, #4]
add r1, r4, #0
bl FUN_0206B900
@@ -44691,7 +44691,7 @@ _021ED1A2:
bl FUN_0206B9B0
add r1, r7, #0
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
cmp r0, #0
bne _021ED1D6
add r0, r5, #0
@@ -44699,7 +44699,7 @@ _021ED1A2:
bl FUN_0206B9B0
mov r1, #0xa
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
lsl r0, r0, #0x18
lsr r0, r0, #0x18
cmp r0, #0x28
@@ -44783,11 +44783,11 @@ _021ED228:
stmia r7!, {r0}
ldrh r0, [r4]
mov r1, #0x16
- bl FUN_02068678
+ bl GetMonBaseStat
strh r0, [r6]
ldrh r0, [r4]
mov r1, #0x17
- bl FUN_02068678
+ bl GetMonBaseStat
strh r0, [r6, #2]
ldr r0, [sp]
add r5, r5, #4
@@ -45027,19 +45027,19 @@ _021ED430:
mov r1, #0x4c
mov r2, #0
add r4, r0, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
cmp r0, #0
beq _021ED484
add r0, r4, #0
mov r1, #3
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
cmp r0, #0
bne _021ED484
add r0, r4, #0
mov r1, #9
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
str r0, [sp, #0x10]
cmp r0, #0
beq _021ED47E
@@ -45055,7 +45055,7 @@ _021ED472:
add r0, r4, #0
mov r1, #9
add r2, sp, #0x10
- bl FUN_02067830
+ bl SetBoxMonDataEncrypted
b _021ED484
_021ED47E:
add sp, #0x14
@@ -45090,13 +45090,13 @@ _021ED4AC:
mov r1, #0x4c
mov r2, #0
add r4, r0, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
cmp r0, #0
beq _021ED4D4
add r0, r4, #0
mov r1, #9
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
cmp r0, #0
bne _021ED4D4
add r0, r4, #0
@@ -45232,7 +45232,7 @@ MOD05_021ED5C4: ; 0x021ED5C4
add r0, r4, #0
mov r1, #5
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
lsl r0, r0, #0x10
lsr r0, r0, #0x10
pop {r3, r4, r5, pc}
@@ -45316,7 +45316,7 @@ MOD05_021ED650: ; 0x021ED650
add r0, r4, #0
mov r1, #5
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
lsl r0, r0, #0x10
lsr r0, r0, #0x10
str r0, [sp, #0x14]
@@ -45327,14 +45327,14 @@ _021ED67C:
add r0, r4, #0
add r1, #0x36
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
lsl r1, r5, #1
strh r0, [r7, r1]
add r1, r5, #0
add r0, r4, #0
add r1, #0x3a
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
add r1, sp, #0x30
strb r0, [r1, r5]
add r0, r5, #1
@@ -45345,7 +45345,7 @@ _021ED67C:
mov r1, #0
add r0, r4, #0
add r2, r1, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
add r7, r0, #0
mov r5, #0
_021ED6B4:
@@ -45353,7 +45353,7 @@ _021ED6B4:
add r0, r4, #0
add r1, #0x46
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
add r1, sp, #0x24
add r1, #2
strb r0, [r1, r5]
@@ -45365,52 +45365,52 @@ _021ED6B4:
add r0, r4, #0
mov r1, #0xc
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
add r1, sp, #0x18
strb r0, [r1, #9]
add r0, r4, #0
mov r1, #0x79
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
add r1, sp, #0x18
strb r0, [r1, #8]
add r0, r4, #0
mov r1, #0xb
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
add r1, sp, #0x18
strb r0, [r1, #7]
add r0, r4, #0
mov r1, #0x99
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
add r1, sp, #0x18
strb r0, [r1, #0xa]
add r0, r4, #0
mov r1, #0x6e
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
add r1, sp, #0x18
strb r0, [r1, #5]
ldr r2, [sp, #0x10]
add r0, r4, #0
mov r1, #0x90
- bl FUN_020671BC
+ bl GetMonDataEncrypted
add r0, r4, #0
mov r1, #0x9c
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
add r1, sp, #0x18
strb r0, [r1, #3]
add r0, r4, #0
mov r1, #7
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
str r0, [sp, #0x2c]
add r0, r4, #0
mov r1, #0x70
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
add r1, sp, #0x18
strb r0, [r1, #4]
ldr r1, _021ED93C ; =0x000001EA
@@ -45420,7 +45420,7 @@ _021ED6B4:
add r0, r4, #0
mov r1, #0x97
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
add r5, r0, #0
mov r0, #2
mov r1, #1
@@ -45460,13 +45460,13 @@ _021ED7A2:
add r0, r6, #0
add r1, #0x36
add r2, r7, r2
- bl FUN_02067830
+ bl SetBoxMonDataEncrypted
add r1, r5, #0
add r2, sp, #0x30
add r0, r6, #0
add r1, #0x3a
add r2, r2, r5
- bl FUN_02067830
+ bl SetBoxMonDataEncrypted
add r0, r5, #1
lsl r0, r0, #0x18
lsr r5, r0, #0x18
@@ -45480,7 +45480,7 @@ _021ED7CE:
add r0, r6, #0
add r1, #0x46
add r2, r7, r5
- bl FUN_02067830
+ bl SetBoxMonDataEncrypted
add r0, r5, #1
lsl r0, r0, #0x18
lsr r5, r0, #0x18
@@ -45490,16 +45490,16 @@ _021ED7CE:
add r0, r6, #0
mov r1, #0xc
add r2, #1
- bl FUN_02067830
+ bl SetBoxMonDataEncrypted
add r0, r6, #0
mov r1, #0x79
add r2, sp, #0x20
- bl FUN_02067830
+ bl SetBoxMonDataEncrypted
add r2, sp, #0x1c
add r0, r6, #0
mov r1, #0xb
add r2, #3
- bl FUN_02067830
+ bl SetBoxMonDataEncrypted
add r2, sp, #0x1c
mov r1, #0x78
add r0, sp, #0x18
@@ -45507,118 +45507,118 @@ _021ED7CE:
add r0, r6, #0
mov r1, #9
add r2, #2
- bl FUN_02067830
+ bl SetBoxMonDataEncrypted
add r2, sp, #0x20
add r0, r6, #0
mov r1, #0x99
add r2, #2
- bl FUN_02067830
+ bl SetBoxMonDataEncrypted
add r2, sp, #0x1c
add r0, r6, #0
mov r1, #0x6e
add r2, #1
- bl FUN_02067830
+ bl SetBoxMonDataEncrypted
ldr r2, [sp, #0x10]
add r0, r6, #0
mov r1, #0x90
- bl FUN_02067830
+ bl SetBoxMonDataEncrypted
add r2, sp, #0x18
add r0, r6, #0
mov r1, #0x9c
add r2, #3
- bl FUN_02067830
+ bl SetBoxMonDataEncrypted
add r0, r6, #0
mov r1, #7
add r2, sp, #0x2c
- bl FUN_02067830
+ bl SetBoxMonDataEncrypted
add r0, r6, #0
mov r1, #0x70
add r2, sp, #0x1c
- bl FUN_02067830
+ bl SetBoxMonDataEncrypted
add r0, r4, #0
mov r1, #0x97
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
add r1, sp, #0x18
strh r0, [r1, #0xc]
add r0, r4, #0
mov r1, #0x91
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
add r1, sp, #0x18
strb r0, [r1, #2]
add r0, r4, #0
mov r1, #0x92
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
add r1, sp, #0x18
strb r0, [r1, #1]
add r0, r4, #0
mov r1, #0x93
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
add r1, sp, #0x18
strb r0, [r1]
add r0, r6, #0
mov r1, #0x97
add r2, sp, #0x24
- bl FUN_02067830
+ bl SetBoxMonDataEncrypted
add r2, sp, #0x18
add r0, r6, #0
mov r1, #0x91
add r2, #2
- bl FUN_02067830
+ bl SetBoxMonDataEncrypted
add r2, sp, #0x18
add r0, r6, #0
mov r1, #0x92
add r2, #1
- bl FUN_02067830
+ bl SetBoxMonDataEncrypted
add r0, r6, #0
mov r1, #0x93
add r2, sp, #0x18
- bl FUN_02067830
+ bl SetBoxMonDataEncrypted
add r0, r4, #0
mov r1, #0x98
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
add r1, sp, #0x18
strh r0, [r1, #0xc]
add r0, r4, #0
mov r1, #0x94
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
add r1, sp, #0x18
strb r0, [r1, #2]
add r0, r4, #0
mov r1, #0x95
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
add r1, sp, #0x18
strb r0, [r1, #1]
add r0, r4, #0
mov r1, #0x96
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
add r1, sp, #0x18
strb r0, [r1]
add r0, r6, #0
mov r1, #0x98
add r2, sp, #0x24
- bl FUN_02067830
+ bl SetBoxMonDataEncrypted
add r2, sp, #0x18
add r0, r6, #0
mov r1, #0x94
add r2, #2
- bl FUN_02067830
+ bl SetBoxMonDataEncrypted
add r2, sp, #0x18
add r0, r6, #0
mov r1, #0x95
add r2, #1
- bl FUN_02067830
+ bl SetBoxMonDataEncrypted
add r0, r6, #0
mov r1, #0x96
add r2, sp, #0x18
- bl FUN_02067830
+ bl SetBoxMonDataEncrypted
add r0, r6, #0
add r1, r4, #0
bl FUN_02069B88
@@ -45649,11 +45649,11 @@ MOD05_021ED940: ; 0x021ED940
add r0, r4, #0
mov r1, #0x4c
add r2, #3
- bl FUN_02067830
+ bl SetBoxMonDataEncrypted
add r0, r4, #0
mov r1, #5
add r2, r5, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
lsl r0, r0, #0x10
lsr r0, r0, #0x10
add r1, r5, #0
@@ -45662,21 +45662,21 @@ MOD05_021ED940: ; 0x021ED940
add r0, r4, #0
mov r1, #0x74
add r2, sp, #4
- bl FUN_02067830
+ bl SetBoxMonDataEncrypted
add r2, sp, #0
add r0, r4, #0
mov r1, #0x4d
add r2, #2
- bl FUN_02067830
+ bl SetBoxMonDataEncrypted
add r2, sp, #0
add r0, r4, #0
mov r1, #0x9a
add r2, #1
- bl FUN_02067830
+ bl SetBoxMonDataEncrypted
add r0, r4, #0
mov r1, #0x9b
add r2, sp, #0
- bl FUN_02067830
+ bl SetBoxMonDataEncrypted
add r0, r4, #0
bl FUN_02066ED8
add sp, #0x1c
@@ -58115,13 +58115,13 @@ MOD05_021F38CC: ; 0x021F38CC
mov r1, #0
add r2, r1, #0
add r5, r0, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
lsl r0, r0, #0x10
lsr r4, r0, #0x10
add r0, r5, #0
mov r1, #0x46
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
mov r1, #0xf
and r0, r1
lsl r0, r0, #0x10
@@ -58130,7 +58130,7 @@ MOD05_021F38CC: ; 0x021F38CC
add r0, r5, #0
mov r1, #0x47
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
mov r1, #0xf
and r0, r1
lsl r0, r0, #0x10
@@ -58139,7 +58139,7 @@ MOD05_021F38CC: ; 0x021F38CC
add r0, r5, #0
mov r1, #0x48
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
mov r1, #0xf
and r0, r1
lsl r0, r0, #0x10
@@ -58148,7 +58148,7 @@ MOD05_021F38CC: ; 0x021F38CC
add r0, r5, #0
mov r1, #0x49
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
mov r1, #0xf
and r0, r1
lsl r0, r0, #0x10
@@ -58156,7 +58156,7 @@ MOD05_021F38CC: ; 0x021F38CC
add r0, r5, #0
mov r1, #0x4a
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
mov r1, #0xf
and r0, r1
lsl r0, r0, #0x10
@@ -58164,7 +58164,7 @@ MOD05_021F38CC: ; 0x021F38CC
add r0, r5, #0
mov r1, #0x4b
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
mov r1, #0xf
and r0, r1
lsl r0, r0, #0x10
@@ -58279,7 +58279,7 @@ MOD05_021F3A18: ; 0x021F3A18
mov r1, #5
mov r2, #0
str r0, [sp]
- bl FUN_020671BC
+ bl GetMonDataEncrypted
lsl r0, r0, #0x10
lsr r5, r0, #0x10
ldr r0, [sp]
@@ -58444,7 +58444,7 @@ MOD05_021F3B7C: ; 0x021F3B7C
mov r1, #5
mov r2, #0
add r6, r0, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
lsl r0, r0, #0x10
lsr r4, r0, #0x10
add r0, r6, #0
diff --git a/arm9/modules/06/asm/module_06.s b/arm9/modules/06/asm/module_06.s
index 0656aec0..529aeb97 100644
--- a/arm9/modules/06/asm/module_06.s
+++ b/arm9/modules/06/asm/module_06.s
@@ -4804,7 +4804,7 @@ _0223BA42:
str r1, [sp, #0x34]
mov r1, #0xa0
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
add r1, sp, #0x24
strb r0, [r1, #0x18]
_0223BA8C:
@@ -5586,7 +5586,7 @@ _0223C0CE:
str r1, [sp, #0x2c]
mov r1, #0xa0
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
add r1, sp, #0x20
strb r0, [r1, #0x14]
_0223C118:
@@ -6400,7 +6400,7 @@ MOD06_0223C738: ; 0x0223C738
add r4, r1, #0
mov r1, #6
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
lsl r0, r0, #0x10
lsr r1, r0, #0x10
cmp r1, #0xe0
@@ -6464,7 +6464,7 @@ _0223C7AC:
mov r1, #0
add r0, r4, #0
add r2, r1, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
mov r1, #0x19
bl _u32_div_f
lsl r0, r1, #0x18
@@ -6567,7 +6567,7 @@ MOD06_0223C854: ; 0x0223C854
bne _0223C8BE
ldr r0, [sp, #0x10]
mov r1, #0x12
- bl FUN_02068678
+ bl GetMonBaseStat
cmp r0, #0
beq _0223C8E0
cmp r0, #0xfe
@@ -6588,7 +6588,7 @@ _0223C8A6:
ldr r0, [sp, #0x44]
mov r1, #0x6f
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
lsl r0, r0, #0x18
lsr r0, r0, #0x18
str r0, [sp, #0x24]
@@ -6690,7 +6690,7 @@ MOD06_0223C968: ; 0x0223C968
add r0, r7, #0
mov r1, #0x12
mov r6, #1
- bl FUN_02068678
+ bl GetMonBaseStat
cmp r0, #0
beq _0223C996
cmp r0, #0xfe
@@ -6722,7 +6722,7 @@ _0223C9BE:
ldr r0, [sp, #0x28]
mov r1, #0x6f
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
lsl r0, r0, #0x18
lsr r6, r0, #0x18
cmp r6, #1
@@ -6752,7 +6752,7 @@ _0223C9E4:
add r0, r4, #0
mov r1, #7
add r2, r5, #0
- bl FUN_02067830
+ bl SetBoxMonDataEncrypted
ldr r0, [sp, #0x10]
ldr r3, [sp, #0x2c]
add r1, r5, #0
@@ -6779,7 +6779,7 @@ _0223CA28:
add r0, r4, #0
mov r1, #7
add r2, r5, #0
- bl FUN_02067830
+ bl SetBoxMonDataEncrypted
ldr r0, [sp, #0x10]
ldr r3, [sp, #0x2c]
add r1, r5, #0
@@ -7320,14 +7320,14 @@ _0223CE6A:
str r0, [sp, #0xc]
ldr r0, [r6, r0]
mov r1, #6
- bl FUN_02068678
+ bl GetMonBaseStat
lsl r0, r0, #0x18
lsr r0, r0, #0x18
str r0, [sp, #8]
ldr r0, [sp, #0xc]
mov r1, #7
ldr r0, [r6, r0]
- bl FUN_02068678
+ bl GetMonBaseStat
lsl r0, r0, #0x18
lsr r1, r0, #0x18
ldr r0, [sp, #8]
@@ -7488,7 +7488,7 @@ _0223CF96:
add r0, r1, #0
mov r1, #0xa0
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
lsl r0, r0, #0x18
lsr r0, r0, #0x18
cmp r0, #5
@@ -7626,15 +7626,15 @@ MOD06_0223D044: ; 0x0223D044
add r0, r4, #0
mov r1, #7
add r2, sp, #0x30
- bl FUN_02067830
+ bl SetBoxMonDataEncrypted
add r0, r4, #0
mov r1, #0x9f
add r2, sp, #0x14
- bl FUN_02067830
+ bl SetBoxMonDataEncrypted
add r0, r4, #0
mov r1, #0xa2
add r2, sp, #0x10
- bl FUN_02067830
+ bl SetBoxMonDataEncrypted
ldr r0, [r6, #8]
add r1, r4, #0
bl FUN_0206B900
@@ -7782,7 +7782,7 @@ _0223D1DA:
add r0, r6, #0
mov r1, #5
add r2, r4, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
ldr r1, _0223D270 ; =0x000001A6
cmp r0, r1
bne _0223D208
@@ -7839,7 +7839,7 @@ _0223D24E:
add r0, r6, #0
mov r1, #0x70
add r2, sp, #8
- bl FUN_02067830
+ bl SetBoxMonDataEncrypted
_0223D25C:
ldr r0, [sp]
add r1, r6, #0
@@ -7919,14 +7919,14 @@ MOD06_0223D2DC: ; 0x0223D2DC
mov r1, #0x4c
mov r2, #0
add r4, r3, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
cmp r0, #0
bne _0223D302
mov r2, #0
add r0, r7, #0
mov r1, #0xa
strb r2, [r4, #0xd]
- bl FUN_020671BC
+ bl GetMonDataEncrypted
b _0223D308
_0223D302:
mov r0, #1
@@ -19758,19 +19758,19 @@ _02243312:
mov r1, #5
mov r2, #0
str r0, [sp, #0xc]
- bl FUN_020671BC
+ bl GetMonDataEncrypted
lsl r0, r0, #0x10
lsr r5, r0, #0x10
ldr r0, [sp, #0xc]
mov r1, #6
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
lsl r0, r0, #0x10
lsr r6, r0, #0x10
ldr r0, [sp, #0xc]
mov r1, #0x4c
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
cmp r0, #0
bne _0224336E
add r0, r5, #0
@@ -20287,12 +20287,12 @@ _02243726:
add r7, r0, #0
mov r1, #5
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
strh r0, [r6, #0x2e]
add r0, r7, #0
mov r1, #6
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
strh r0, [r6, #0x36]
add r0, r4, #1
lsl r0, r0, #0x10
@@ -20338,12 +20338,12 @@ _0224379C:
lsl r6, r5, #1
mov r1, #5
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
strh r0, [r4, r6]
ldr r0, [sp, #8]
mov r1, #6
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
strh r0, [r7, r6]
cmp r5, #0
beq _022437FA
@@ -21457,13 +21457,13 @@ _02243FFA:
add r1, r6, #0
mov r2, #0
str r0, [sp, #4]
- bl FUN_020671BC
+ bl GetMonDataEncrypted
cmp r0, #0
bne _02244024
ldr r0, [sp, #4]
add r1, r6, #0
add r2, sp, #8
- bl FUN_02067830
+ bl SetBoxMonDataEncrypted
add r0, r7, #1
lsl r0, r0, #0x18
lsr r7, r0, #0x18
@@ -21522,7 +21522,7 @@ MOD06_0224406C: ; 0x0224406C
add r0, r5, #0
mov r1, #5
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
ldr r1, [sp]
lsl r0, r0, #0x10
ldrh r1, [r1]
@@ -21537,7 +21537,7 @@ MOD06_0224406C: ; 0x0224406C
strh r1, [r0]
add r0, r5, #0
mov r1, #0x70
- bl FUN_020671BC
+ bl GetMonDataEncrypted
ldr r1, [sp]
lsl r0, r0, #0x10
ldrh r2, [r1]
@@ -21552,7 +21552,7 @@ MOD06_0224406C: ; 0x0224406C
strh r1, [r0]
add r0, r5, #0
mov r1, #6
- bl FUN_020671BC
+ bl GetMonDataEncrypted
ldr r1, [sp]
mov r4, #0
strh r0, [r1, #2]
@@ -21567,13 +21567,13 @@ _022440D0:
add r0, r5, #0
add r1, #0x36
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
add r1, r4, #0
strh r0, [r6, #4]
add r0, r5, #0
add r1, #0x3e
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
ldr r1, [sp, #4]
lsl r0, r7
ldrb r1, [r1]
@@ -21588,25 +21588,25 @@ _022440D0:
add r0, r5, #0
mov r1, #0xc
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
ldr r1, [sp]
mov r2, #0
strb r0, [r1, #0x1f]
add r0, r5, #0
mov r1, #7
- bl FUN_020671BC
+ bl GetMonDataEncrypted
ldr r1, [sp]
str r0, [r1, #0xc]
mov r1, #0
add r0, r5, #0
add r2, r1, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
ldr r1, [sp]
mov r2, #0
str r0, [r1, #0x10]
add r0, r5, #0
mov r1, #0xae
- bl FUN_020671BC
+ bl GetMonDataEncrypted
ldr r1, [sp]
mov r4, #0
str r0, [r1, #0x14]
@@ -21616,7 +21616,7 @@ _0224413C:
add r0, r5, #0
add r1, #0xd
add r2, r6, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
ldr r1, [sp]
add r1, r1, r4
add r4, r4, #1
@@ -21626,14 +21626,14 @@ _0224413C:
add r0, r5, #0
mov r1, #0xa
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
ldr r1, [sp]
mov r2, #0
add r1, #0x20
strb r0, [r1]
add r0, r5, #0
mov r1, #9
- bl FUN_020671BC
+ bl GetMonDataEncrypted
ldr r1, [sp]
ldr r2, [sp]
add r1, #0x21
@@ -21642,7 +21642,7 @@ _0224413C:
add r0, r5, #0
mov r1, #0x74
str r2, [sp]
- bl FUN_020671BC
+ bl GetMonDataEncrypted
add sp, #8
pop {r3, r4, r5, r6, r7, pc}
nop
@@ -21919,11 +21919,11 @@ MOD06_02244388: ; 0x02244388
strb r1, [r0, #1]
add r0, r5, #0
mov r1, #0x70
- bl FUN_02067830
+ bl SetBoxMonDataEncrypted
add r0, r5, #0
mov r1, #6
add r2, r6, #2
- bl FUN_02067830
+ bl SetBoxMonDataEncrypted
mov r4, #0
str r6, [sp, #4]
add r7, r4, #0
@@ -21937,7 +21937,7 @@ _022443D4:
add r1, r4, #0
add r0, r5, #0
add r1, #0x36
- bl FUN_02067830
+ bl SetBoxMonDataEncrypted
ldrb r0, [r6, #0x1e]
add r2, sp, #8
add r2, #1
@@ -21950,19 +21950,19 @@ _022443D4:
add r1, r4, #0
add r0, r5, #0
add r1, #0x3e
- bl FUN_02067830
+ bl SetBoxMonDataEncrypted
add r1, r4, #0
add r0, r5, #0
add r1, #0x42
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
add r1, sp, #8
strb r0, [r1]
add r1, r4, #0
add r0, r5, #0
add r1, #0x3a
add r2, sp, #8
- bl FUN_02067830
+ bl SetBoxMonDataEncrypted
ldr r0, [sp, #4]
add r4, r4, #1
add r0, r0, #2
@@ -21975,7 +21975,7 @@ _022443D4:
str r0, [sp, #0xc]
add r0, r5, #0
add r2, sp, #0xc
- bl FUN_02067830
+ bl SetBoxMonDataEncrypted
add r2, sp, #8
ldrb r1, [r6, #0x18]
add r0, sp, #8
@@ -21983,7 +21983,7 @@ _022443D4:
strb r1, [r0, #1]
add r0, r5, #0
mov r1, #0xd
- bl FUN_02067830
+ bl SetBoxMonDataEncrypted
add r2, sp, #8
ldrb r1, [r6, #0x19]
add r0, sp, #8
@@ -21991,7 +21991,7 @@ _022443D4:
strb r1, [r0, #1]
add r0, r5, #0
mov r1, #0xe
- bl FUN_02067830
+ bl SetBoxMonDataEncrypted
add r2, sp, #8
ldrb r1, [r6, #0x1a]
add r0, sp, #8
@@ -21999,7 +21999,7 @@ _022443D4:
strb r1, [r0, #1]
add r0, r5, #0
mov r1, #0xf
- bl FUN_02067830
+ bl SetBoxMonDataEncrypted
add r2, sp, #8
ldrb r1, [r6, #0x1b]
add r0, sp, #8
@@ -22007,7 +22007,7 @@ _022443D4:
strb r1, [r0, #1]
add r0, r5, #0
mov r1, #0x10
- bl FUN_02067830
+ bl SetBoxMonDataEncrypted
add r2, sp, #8
ldrb r1, [r6, #0x1c]
add r0, sp, #8
@@ -22015,7 +22015,7 @@ _022443D4:
strb r1, [r0, #1]
add r0, r5, #0
mov r1, #0x11
- bl FUN_02067830
+ bl SetBoxMonDataEncrypted
add r2, sp, #8
ldrb r1, [r6, #0x1d]
add r0, sp, #8
@@ -22023,17 +22023,17 @@ _022443D4:
strb r1, [r0, #1]
add r0, r5, #0
mov r1, #0x12
- bl FUN_02067830
+ bl SetBoxMonDataEncrypted
add r2, r6, #0
add r0, r5, #0
mov r1, #0xa
add r2, #0x20
- bl FUN_02067830
+ bl SetBoxMonDataEncrypted
add r2, r6, #0
add r0, r5, #0
mov r1, #9
add r2, #0x21
- bl FUN_02067830
+ bl SetBoxMonDataEncrypted
ldr r0, [r6, #0x14]
lsl r0, r0, #1
lsr r0, r0, #0x1f
@@ -22052,7 +22052,7 @@ _022443D4:
add r0, r5, #0
mov r1, #0x76
add r2, r7, #0
- bl FUN_02067830
+ bl SetBoxMonDataEncrypted
add r0, r7, #0
bl FUN_02021A20
add r0, r4, #0
@@ -22063,13 +22063,13 @@ _022444FC:
add r0, r5, #0
mov r1, #0x74
add r2, #0x22
- bl FUN_02067830
+ bl SetBoxMonDataEncrypted
_02244508:
add r6, #0x1f
add r0, r5, #0
mov r1, #0xc
add r2, r6, #0
- bl FUN_02067830
+ bl SetBoxMonDataEncrypted
add r0, r5, #0
bl FUN_02066ED8
add sp, #0x10
@@ -22157,20 +22157,20 @@ _022445A6:
add r0, r4, #0
mov r1, #0xa0
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
cmp r0, #0x32
bls _022445E8
add r0, r4, #0
mov r1, #5
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
mov r1, #0x32
- bl FUN_02068758
+ bl GetMonExpByLevel
str r0, [sp, #8]
add r0, r4, #0
mov r1, #8
add r2, sp, #8
- bl FUN_02067830
+ bl SetBoxMonDataEncrypted
add r0, r4, #0
bl FUN_02066ED8
_022445E8:
@@ -22348,7 +22348,7 @@ _0224471C:
bl FUN_0206B9B0
mov r1, #5
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
mov r1, #0x21
lsl r1, r1, #6
strh r0, [r5, r1]
@@ -22672,7 +22672,7 @@ _0224499C:
ldrh r0, [r5]
lsl r0, r0, #0x15
lsr r0, r0, #0x15
- bl FUN_02068678
+ bl GetMonBaseStat
cmp r0, #0
beq _022449E0
ldr r2, [r5, #0x10]
@@ -22688,7 +22688,7 @@ _022449CC:
mov r1, #0x18
lsl r0, r0, #0x15
lsr r0, r0, #0x15
- bl FUN_02068678
+ bl GetMonBaseStat
add r1, r5, #0
add r1, #0x20
strb r0, [r1]
@@ -22698,7 +22698,7 @@ _022449E0:
mov r1, #0x18
lsl r0, r0, #0x15
lsr r0, r0, #0x15
- bl FUN_02068678
+ bl GetMonBaseStat
add r1, r5, #0
add r1, #0x20
strb r0, [r1]
@@ -23233,7 +23233,7 @@ MOD06_02244DC4: ; 0x02244DC4
str r1, [r7, r0]
add r0, r4, #0
mov r1, #0x12
- bl FUN_02068678
+ bl GetMonBaseStat
lsl r0, r0, #0x18
lsr r0, r0, #0x18
beq _02244DEC
@@ -26833,7 +26833,7 @@ MOD06_0224690C: ; 0x0224690C
str r0, [r4]
ldr r0, [r4, #0x5c]
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
lsl r0, r0, #0x10
lsr r0, r0, #0x10
bl FUN_02005578
@@ -28745,7 +28745,7 @@ _022477A8:
mov r1, #0
add r0, r6, #0
add r2, r1, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
str r0, [sp]
mov r0, #0
str r0, [sp, #4]
@@ -30769,7 +30769,7 @@ MOD06_02248724: ; 0x02248724
add r0, r6, #0
mov r1, #5
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
add r1, r0, #0
add r0, r7, #0
bl MOD06_02248810
@@ -30779,13 +30779,13 @@ MOD06_02248724: ; 0x02248724
add r0, r6, #0
mov r1, #0xa2
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
lsl r0, r0, #0x10
lsr r4, r0, #0x10
add r0, r6, #0
mov r1, #0x9f
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
lsl r0, r0, #0x18
lsr r6, r0, #0x18
ldr r0, [sp]
@@ -31018,7 +31018,7 @@ MOD06_0224891C: ; 0x0224891C
mov r1, #0xa0
mov r2, #0
add r7, r0, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
add r2, r0, #0
ldr r0, [r5, #0x10]
str r0, [sp]
@@ -31114,7 +31114,7 @@ MOD06_022489D4: ; 0x022489D4
add r0, r5, #0
mov r1, #0x76
add r2, r7, #0
- bl FUN_02067830
+ bl SetBoxMonDataEncrypted
add r0, r7, #0
bl FUN_02021A20
mov r1, #1
@@ -31123,66 +31123,66 @@ MOD06_022489D4: ; 0x022489D4
add r0, r5, #0
mov r1, #0x4d
add r2, sp, #0x10
- bl FUN_02067830
+ bl SetBoxMonDataEncrypted
add r0, r5, #0
mov r1, #0x46
add r2, r4, #4
- bl FUN_02067830
+ bl SetBoxMonDataEncrypted
add r2, r4, #0
add r0, r5, #0
mov r1, #0x47
add r2, #8
- bl FUN_02067830
+ bl SetBoxMonDataEncrypted
add r2, r4, #0
add r0, r5, #0
mov r1, #0x48
add r2, #0xc
- bl FUN_02067830
+ bl SetBoxMonDataEncrypted
add r2, r4, #0
add r0, r5, #0
mov r1, #0x49
add r2, #0x10
- bl FUN_02067830
+ bl SetBoxMonDataEncrypted
add r2, r4, #0
add r0, r5, #0
mov r1, #0x4a
add r2, #0x14
- bl FUN_02067830
+ bl SetBoxMonDataEncrypted
add r2, r4, #0
add r0, r5, #0
mov r1, #0x4b
add r2, #0x18
- bl FUN_02067830
+ bl SetBoxMonDataEncrypted
add r2, r4, #0
add r0, r5, #0
mov r1, #0x13
add r2, #0x24
- bl FUN_02067830
+ bl SetBoxMonDataEncrypted
add r2, r4, #0
add r0, r5, #0
mov r1, #0x14
add r2, #0x28
- bl FUN_02067830
+ bl SetBoxMonDataEncrypted
add r2, r4, #0
add r0, r5, #0
mov r1, #0x15
add r2, #0x2c
- bl FUN_02067830
+ bl SetBoxMonDataEncrypted
add r2, r4, #0
add r0, r5, #0
mov r1, #0x16
add r2, #0x30
- bl FUN_02067830
+ bl SetBoxMonDataEncrypted
add r2, r4, #0
add r0, r5, #0
mov r1, #0x17
add r2, #0x34
- bl FUN_02067830
+ bl SetBoxMonDataEncrypted
add r2, r4, #0
add r0, r5, #0
mov r1, #6
add r2, #0x3c
- bl FUN_02067830
+ bl SetBoxMonDataEncrypted
ldr r0, [sp, #0x28]
add r1, r6, #4
bl MOD06_022489AC
@@ -31190,19 +31190,19 @@ MOD06_022489D4: ; 0x022489D4
add r0, r5, #0
mov r1, #0x90
add r2, r6, #0
- bl FUN_02067830
+ bl SetBoxMonDataEncrypted
add r0, r6, #0
bl FUN_02021A20
add r2, r4, #0
add r0, r5, #0
mov r1, #0x9c
add r2, #0x40
- bl FUN_02067830
+ bl SetBoxMonDataEncrypted
add r4, #0x48
add r0, r5, #0
mov r1, #0xc
add r2, r4, #0
- bl FUN_02067830
+ bl SetBoxMonDataEncrypted
ldr r0, [sp, #0x2c]
bl FUN_02034824
add r3, r0, #0
diff --git a/arm9/modules/07/asm/module_07.s b/arm9/modules/07/asm/module_07.s
index 8cccb236..7fbc2c22 100644
--- a/arm9/modules/07/asm/module_07.s
+++ b/arm9/modules/07/asm/module_07.s
@@ -2333,13 +2333,13 @@ _0221312A:
mov r1, #5
mov r2, #0
add r7, r0, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
cmp r0, #0
beq _022131B0
add r0, r7, #0
mov r1, #0x4c
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
cmp r0, #0
bne _022131B0
add r0, r7, #0
@@ -3686,7 +3686,7 @@ _02213C2E:
add r0, r4, #0
mov r1, #5
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
mov r1, #0x86
lsl r1, r1, #2
strh r0, [r7, r1]
@@ -3702,52 +3702,52 @@ _02213C2E:
add r5, r0, r1
add r0, r4, #0
mov r1, #0x4c
- bl FUN_020671BC
+ bl GetMonDataEncrypted
ldr r1, _02213D18 ; =0x00000223
mov r2, #0
strb r0, [r5, r1]
add r0, r4, #0
mov r1, #0xa2
- bl FUN_020671BC
+ bl GetMonDataEncrypted
ldr r1, _02213D1C ; =0x0000021A
mov r2, #0
strh r0, [r5, r1]
add r0, r4, #0
mov r1, #0xa3
- bl FUN_020671BC
+ bl GetMonDataEncrypted
mov r1, #0x87
lsl r1, r1, #2
strh r0, [r5, r1]
add r0, r4, #0
mov r1, #0xa0
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
mov r1, #0x22
lsl r1, r1, #4
strb r0, [r5, r1]
add r0, r4, #0
mov r1, #6
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
ldr r1, _02213D20 ; =0x0000021E
mov r2, #0
strh r0, [r5, r1]
add r0, r4, #0
mov r1, #0xa1
- bl FUN_020671BC
+ bl GetMonDataEncrypted
mov r1, #0x89
lsl r1, r1, #2
strb r0, [r5, r1]
add r0, r4, #0
mov r1, #0x70
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
ldr r1, _02213D24 ; =0x00000225
mov r2, #0
strb r0, [r5, r1]
add r0, r4, #0
mov r1, #0xaf
- bl FUN_020671BC
+ bl GetMonDataEncrypted
cmp r0, #1
bne _02213CE8
mov r1, #0
diff --git a/arm9/modules/08/asm/module_08.s b/arm9/modules/08/asm/module_08.s
index 9a66c27d..6c672cb0 100644
--- a/arm9/modules/08/asm/module_08.s
+++ b/arm9/modules/08/asm/module_08.s
@@ -45038,7 +45038,7 @@ MOD08_02228244: ; 0x02228244
str r0, [r2]
ldr r0, [r4, #0xc]
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
add r1, r4, #0
add r1, #0x9c
str r0, [r1]
@@ -45067,7 +45067,7 @@ _02228272:
_02228290:
ldr r0, [r4, #0xc]
mov r1, #0x9a
- bl FUN_020671BC
+ bl GetMonDataEncrypted
add r4, #0x98
str r0, [r4]
pop {r4, pc}
@@ -45080,7 +45080,7 @@ _0222829E:
add r4, #0xa0
mov r1, #0xaa
add r2, r4, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
pop {r4, pc}
thumb_func_start MOD08_022282B4
diff --git a/arm9/modules/09/asm/module_09.s b/arm9/modules/09/asm/module_09.s
index 7c980707..a5b5560b 100644
--- a/arm9/modules/09/asm/module_09.s
+++ b/arm9/modules/09/asm/module_09.s
@@ -576,7 +576,7 @@ _022122BA:
add r0, r5, r1
ldr r0, [r0, #4]
mov r1, #0xa2
- bl FUN_020671BC
+ bl GetMonDataEncrypted
strh r0, [r4, #0x20]
ldrb r1, [r4, #0x11]
mov r0, #0x50
@@ -1630,7 +1630,7 @@ _02212B0A:
ldr r0, [r0, #4]
add r1, #0x3a
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
add r1, r7, #4
strh r0, [r4, r1]
mov r2, #2
@@ -1686,7 +1686,7 @@ _02212BAA:
add r0, r4, r0
ldr r0, [r0, #4]
mov r1, #0xa2
- bl FUN_020671BC
+ bl GetMonDataEncrypted
ldr r1, _02212C84 ; =0x0000207E
mov r2, #4
strh r0, [r4, r1]
@@ -1841,7 +1841,7 @@ _02212CD0:
add r1, r7, #0
add r1, #0x3a
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
mov r1, #0x82
lsl r1, r1, #6
strh r0, [r4, r1]
@@ -2441,7 +2441,7 @@ _022131E2:
str r0, [r4, #4]
mov r1, #5
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
strh r0, [r4, #8]
ldrh r0, [r4, #8]
cmp r0, #0
@@ -2457,54 +2457,54 @@ _0221320C:
add r4, r0, r5
ldr r0, [r4, #4]
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
strh r0, [r4, #0xa]
ldr r0, [r4, #4]
mov r1, #0xa5
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
strh r0, [r4, #0xc]
ldr r0, [r4, #4]
mov r1, #0xa6
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
strh r0, [r4, #0xe]
ldr r0, [r4, #4]
mov r1, #0xa7
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
strh r0, [r4, #0x10]
ldr r0, [r4, #4]
mov r1, #0xa8
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
strh r0, [r4, #0x12]
ldr r0, [r4, #4]
mov r1, #0xa2
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
strh r0, [r4, #0x14]
ldr r0, [r4, #4]
mov r1, #0xa3
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
strh r0, [r4, #0x16]
ldr r0, [r4, #4]
mov r1, #0xb0
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
strb r0, [r4, #0x18]
ldr r0, [r4, #4]
mov r1, #0xb1
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
ldr r6, [sp]
strb r0, [r4, #0x19]
ldr r0, [r4, #4]
add r6, #0x1a
mov r1, #0xa0
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
ldrb r1, [r6, r5]
mov r2, #0x7f
lsl r0, r0, #0x18
@@ -2517,7 +2517,7 @@ _0221320C:
ldr r0, [r4, #4]
mov r1, #0xaf
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
cmp r0, #1
ldrb r1, [r6, r5]
bne _022132BC
@@ -2557,7 +2557,7 @@ _022132C2:
ldr r0, [r4, #4]
mov r1, #0x4c
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
lsl r0, r0, #0x18
lsr r0, r0, #0x18
lsl r0, r0, #0x1f
@@ -2570,17 +2570,17 @@ _022132C2:
ldr r0, [r4, #4]
mov r1, #0xa
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
strh r0, [r4, #0x1c]
ldr r0, [r4, #4]
mov r1, #6
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
strh r0, [r4, #0x1e]
ldr r0, [r4, #4]
mov r1, #8
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
ldr r6, [sp]
str r0, [r4, #0x20]
add r6, #0x1a
@@ -2588,7 +2588,7 @@ _022132C2:
ldrh r0, [r4, #8]
lsl r1, r1, #0x19
lsr r1, r1, #0x19
- bl FUN_02068758
+ bl GetMonExpByLevel
str r0, [r4, #0x24]
ldrb r0, [r6, r5]
lsl r0, r0, #0x19
@@ -2604,55 +2604,55 @@ _0221335A:
add r1, r1, #1
add r4, r0, r5
ldrh r0, [r4, #8]
- bl FUN_02068758
+ bl GetMonExpByLevel
_02213366:
str r0, [r4, #0x28]
ldr r0, [r4, #4]
mov r1, #0x13
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
add r1, r4, #0
add r1, #0x2c
strb r0, [r1]
ldr r0, [r4, #4]
mov r1, #0x14
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
add r1, r4, #0
add r1, #0x2d
strb r0, [r1]
ldr r0, [r4, #4]
mov r1, #0x15
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
add r1, r4, #0
add r1, #0x2e
strb r0, [r1]
ldr r0, [r4, #4]
mov r1, #0x16
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
add r1, r4, #0
add r1, #0x2f
strb r0, [r1]
ldr r0, [r4, #4]
mov r1, #0x17
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
add r1, r4, #0
add r1, #0x30
strb r0, [r1]
ldr r0, [r4, #4]
mov r1, #0xa1
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
add r1, r4, #0
add r1, #0x31
strb r0, [r1]
ldr r0, [r4, #4]
mov r1, #0x70
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
add r4, #0x32
strb r0, [r4]
ldr r1, [sp]
@@ -2670,7 +2670,7 @@ _022133E4:
ldr r0, [r6, #4]
add r1, #0x36
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
ldr r1, [sp, #0xc]
strh r0, [r7, r1]
add r0, r1, #0
@@ -2681,13 +2681,13 @@ _022133E4:
ldr r0, [r6, #4]
add r1, #0x3a
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
strb r0, [r5, #2]
add r1, r4, #0
ldr r0, [r6, #4]
add r1, #0x3e
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
strb r0, [r5, #3]
ldrh r0, [r5]
ldrb r1, [r5, #3]
@@ -8336,7 +8336,7 @@ MOD09_02216378: ; 0x02216378
mov r1, #0xa2
mov r2, #0
add r7, r0, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
lsl r0, r0, #0x10
lsr r0, r0, #0x10
str r0, [sp, #8]
diff --git a/arm9/modules/11/asm/module_11.s b/arm9/modules/11/asm/module_11.s
index 466a8905..55c064d7 100644
--- a/arm9/modules/11/asm/module_11.s
+++ b/arm9/modules/11/asm/module_11.s
@@ -1685,7 +1685,7 @@ _0222E4AC:
bl MOD11_02230014
mov r1, #0x9a
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
add r2, r0, #0
ldr r1, [r6, #0x34]
add r0, r5, #0
@@ -2024,19 +2024,19 @@ _0222E76C:
mov r1, #5
mov r2, #0
add r6, r0, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
cmp r0, #0
beq _0222E79E
add r0, r6, #0
mov r1, #0x4c
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
cmp r0, #0
bne _0222E79E
add r0, r6, #0
mov r1, #0xa2
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
cmp r0, #0
bne _0222E7AA
_0222E79E:
@@ -2129,19 +2129,19 @@ _0222E848:
mov r1, #5
mov r2, #0
add r6, r0, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
cmp r0, #0
beq _0222E87A
add r0, r6, #0
mov r1, #0x4c
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
cmp r0, #0
bne _0222E87A
add r0, r6, #0
mov r1, #0xa2
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
cmp r0, #0
bne _0222E886
_0222E87A:
@@ -2255,38 +2255,38 @@ _0222E938:
add r0, r5, #0
mov r1, #5
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
cmp r0, #0
beq _0222E9AC
add r0, r5, #0
mov r1, #0x4c
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
cmp r0, #0
bne _0222E9AC
add r0, r5, #0
mov r1, #0xa2
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
cmp r0, #0
bne _0222E9B8
b _0222E9AC
_0222E984:
mov r1, #5
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
cmp r0, #0
beq _0222E9AC
add r0, r5, #0
mov r1, #0x4c
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
cmp r0, #0
bne _0222E9AC
add r0, r5, #0
mov r1, #0xa2
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
cmp r0, #0
bne _0222E9B8
_0222E9AC:
@@ -2355,19 +2355,19 @@ _0222EA22:
mov r1, #5
mov r2, #0
add r6, r0, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
cmp r0, #0
beq _0222EA54
add r0, r6, #0
mov r1, #0x4c
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
cmp r0, #0
bne _0222EA54
add r0, r6, #0
mov r1, #0xa2
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
cmp r0, #0
bne _0222EA60
_0222EA54:
@@ -2457,19 +2457,19 @@ _0222EAEE:
bne _0222EB2E
mov r1, #5
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
cmp r0, #0
beq _0222EB56
add r0, r6, #0
mov r1, #0x4c
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
cmp r0, #0
bne _0222EB56
add r0, r6, #0
mov r1, #0xa2
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
cmp r0, #0
beq _0222EB56
ldr r0, [sp, #0x38]
@@ -2479,19 +2479,19 @@ _0222EAEE:
_0222EB2E:
mov r1, #5
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
cmp r0, #0
beq _0222EB56
add r0, r6, #0
mov r1, #0x4c
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
cmp r0, #0
bne _0222EB56
add r0, r6, #0
mov r1, #0xa2
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
cmp r0, #0
bne _0222EB64
_0222EB56:
@@ -2582,19 +2582,19 @@ _0222EBF6:
mov r1, #5
mov r2, #0
add r6, r0, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
cmp r0, #0
beq _0222EC28
add r0, r6, #0
mov r1, #0x4c
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
cmp r0, #0
bne _0222EC28
add r0, r6, #0
mov r1, #0xa2
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
cmp r0, #0
bne _0222EC34
_0222EC28:
@@ -2707,38 +2707,38 @@ _0222ECE0:
add r0, r5, #0
mov r1, #5
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
cmp r0, #0
beq _0222ED54
add r0, r5, #0
mov r1, #0x4c
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
cmp r0, #0
bne _0222ED54
add r0, r5, #0
mov r1, #0xa2
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
cmp r0, #0
bne _0222ED60
b _0222ED54
_0222ED2C:
mov r1, #5
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
cmp r0, #0
beq _0222ED54
add r0, r5, #0
mov r1, #0x4c
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
cmp r0, #0
bne _0222ED54
add r0, r5, #0
mov r1, #0xa2
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
cmp r0, #0
bne _0222ED60
_0222ED54:
@@ -2810,19 +2810,19 @@ _0222EDD2:
mov r1, #5
mov r2, #0
add r6, r0, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
cmp r0, #0
beq _0222EE04
add r0, r6, #0
mov r1, #0x4c
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
cmp r0, #0
bne _0222EE04
add r0, r6, #0
mov r1, #0xa2
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
cmp r0, #0
bne _0222EE10
_0222EE04:
@@ -2865,7 +2865,7 @@ _0222EE3E:
add r2, r4, #0
mov r1, #0x8f
add r2, #0xf4
- bl FUN_020671BC
+ bl GetMonDataEncrypted
_0222EE5A:
ldr r1, [r4, #0x2c]
mov r0, #1
@@ -5703,7 +5703,7 @@ _022303E4:
ldr r0, [sp, #0x18]
mov r1, #0x9f
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
mov r1, #7
str r0, [sp, #0x20]
tst r1, r0
@@ -5714,7 +5714,7 @@ _022303E4:
ldr r0, [sp, #0x18]
mov r1, #0x9f
add r2, sp, #0x20
- bl FUN_02067830
+ bl SetBoxMonDataEncrypted
ldr r0, [sp, #0x10]
cmp r0, r5
beq _02230434
@@ -5765,7 +5765,7 @@ _02230478:
ldr r0, [sp, #0x18]
mov r1, #0x9f
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
ldr r1, _0223068C ; =0x00000F88
str r0, [sp, #0x20]
tst r1, r0
@@ -5776,7 +5776,7 @@ _02230478:
str r0, [sp, #0x20]
ldr r0, [sp, #0x18]
mov r1, #0x9f
- bl FUN_02067830
+ bl SetBoxMonDataEncrypted
ldr r0, [sp, #0x10]
cmp r0, r5
beq _022304B8
@@ -5813,7 +5813,7 @@ _022304DC:
ldr r0, [sp, #0x18]
mov r1, #0x9f
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
mov r1, #0x10
str r0, [sp, #0x20]
tst r1, r0
@@ -5824,7 +5824,7 @@ _022304DC:
ldr r0, [sp, #0x18]
mov r1, #0x9f
add r2, sp, #0x20
- bl FUN_02067830
+ bl SetBoxMonDataEncrypted
ldr r0, [sp, #0x10]
cmp r0, r5
beq _0223051C
@@ -5861,7 +5861,7 @@ _02230540:
ldr r0, [sp, #0x18]
mov r1, #0x9f
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
mov r1, #0x20
str r0, [sp, #0x20]
tst r1, r0
@@ -5872,7 +5872,7 @@ _02230540:
ldr r0, [sp, #0x18]
mov r1, #0x9f
add r2, sp, #0x20
- bl FUN_02067830
+ bl SetBoxMonDataEncrypted
ldr r0, [sp, #0x10]
cmp r0, r5
beq _02230580
@@ -5909,7 +5909,7 @@ _022305A4:
ldr r0, [sp, #0x18]
mov r1, #0x9f
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
mov r1, #0x40
str r0, [sp, #0x20]
tst r1, r0
@@ -5920,7 +5920,7 @@ _022305A4:
ldr r0, [sp, #0x18]
mov r1, #0x9f
add r2, sp, #0x20
- bl FUN_02067830
+ bl SetBoxMonDataEncrypted
ldr r0, [sp, #0x10]
cmp r0, r5
beq _022305E4
@@ -6300,13 +6300,13 @@ _022308C4:
ldr r0, [sp, #0x18]
add r1, #0x3a
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
add r7, r0, #0
add r1, r4, #0
ldr r0, [sp, #0x18]
add r1, #0x42
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
cmp r7, r0
beq _0223095A
add r1, r4, #0
@@ -6371,13 +6371,13 @@ _0223097E:
ldr r0, [sp, #0x18]
add r1, #0x3a
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
add r7, r0, #0
add r1, r4, #0
ldr r0, [sp, #0x18]
add r1, #0x42
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
cmp r7, r0
beq _022309F2
add r1, r4, #0
@@ -6448,7 +6448,7 @@ _02230A0C:
ldr r0, [sp, #0x18]
mov r1, #0xa2
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
cmp r0, #0
bne _02230A42
mov r0, #1
@@ -6458,7 +6458,7 @@ _02230A36:
ldr r0, [sp, #0x18]
mov r1, #0xa2
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
str r0, [sp, #0x20]
_02230A42:
ldr r0, [sp, #0x20]
@@ -6467,12 +6467,12 @@ _02230A42:
ldr r0, [sp, #0x18]
mov r1, #0xa2
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
add r4, r0, #0
ldr r0, [sp, #0x18]
mov r1, #0xa3
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
cmp r4, r0
beq _02230B14
ldr r0, [sp, #0x38]
@@ -6491,14 +6491,14 @@ _02230A42:
ldr r0, [sp, #0x18]
mov r1, #0xa3
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
str r0, [sp, #0x20]
b _02230AC2
_02230A8C:
ldr r0, [sp, #0x18]
mov r1, #0xa3
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
lsr r0, r0, #1
str r0, [sp, #0x20]
bne _02230AC2
@@ -6509,7 +6509,7 @@ _02230AA2:
ldr r0, [sp, #0x18]
mov r1, #0xa3
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
mov r1, #0x19
mul r1, r0
add r0, r1, #0
@@ -6572,7 +6572,7 @@ _02230B14:
ldr r0, [sp, #0x18]
mov r1, #9
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
cmp r0, #0x64
bhs _02230B4A
ldr r0, [sp, #0x14]
@@ -6597,13 +6597,13 @@ _02230B4A:
ldr r0, [sp, #0x18]
mov r1, #9
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
cmp r0, #0x64
blo _02230B8E
ldr r0, [sp, #0x18]
mov r1, #9
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
cmp r0, #0xc8
bhs _02230B8E
ldr r0, [sp, #0x14]
@@ -6628,7 +6628,7 @@ _02230B8E:
ldr r0, [sp, #0x18]
mov r1, #9
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
cmp r0, #0xc8
blo _02230BC4
ldr r0, [sp, #0x14]
@@ -6649,7 +6649,7 @@ _02230BC4:
ldr r0, [sp, #0x18]
mov r1, #0x9a
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
cmp r0, #0xb
bne _02230BE0
ldr r0, [sp, #8]
@@ -6659,7 +6659,7 @@ _02230BE0:
ldr r0, [sp, #0x18]
mov r1, #0x97
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
add r4, r0, #0
ldr r0, [sp, #4]
bl MOD11_022302B0
@@ -6672,7 +6672,7 @@ _02230BFC:
ldr r0, [sp, #0x18]
mov r1, #6
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
str r0, [sp, #0x20]
ldr r0, [sp, #0x38]
mov r1, #1
@@ -7102,7 +7102,7 @@ _02230EE4:
mov r1, #0xad
mov r2, #0
add r6, r0, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
lsl r0, r0, #0x10
lsr r1, r0, #0x10
mov r0, #0x67
@@ -7152,7 +7152,7 @@ _02230F4E:
add r0, r6, #0
mov r1, #0x70
add r2, sp, #0
- bl FUN_02067830
+ bl SetBoxMonDataEncrypted
_02230F58:
add r0, r5, #0
mov r1, #0
@@ -8141,7 +8141,7 @@ _02231606:
add r0, r6, #0
mov r1, #0xad
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
mov r1, #0x67
lsl r1, r1, #2
cmp r0, r1
@@ -12589,13 +12589,13 @@ _02233950:
mov r1, #5
mov r2, #0
add r6, r0, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
cmp r0, #0
beq _022339B4
add r0, r6, #0
mov r1, #0xa2
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
cmp r0, #0
beq _022339B4
add r0, r4, #0
@@ -12616,7 +12616,7 @@ _02233994:
add r0, r6, #0
mov r1, #6
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
lsl r0, r0, #0x10
lsr r1, r0, #0x10
add r0, r5, #0
@@ -12644,7 +12644,7 @@ _022339C6:
lsl r0, r0, #6
ldrh r0, [r1, r0]
mov r1, #9
- bl FUN_02068678
+ bl GetMonBaseStat
lsl r0, r0, #0x10
lsr r1, r0, #0x10
ldr r2, [r5, #0x74]
@@ -18484,19 +18484,19 @@ _02236794:
mov r1, #5
mov r2, #0
add r4, r0, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
cmp r0, #0
beq _022367C8
add r0, r4, #0
mov r1, #0x4c
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
cmp r0, #0
bne _022367C8
add r0, r4, #0
mov r1, #0xa2
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
cmp r0, #0
beq _022367C8
add r7, r7, #1
@@ -18537,19 +18537,19 @@ _022367EA:
add r1, r7, #0
mov r2, #0
add r4, r0, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
cmp r0, #0
beq _022367EA
add r0, r4, #0
mov r1, #0x4c
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
cmp r0, #1
beq _022367EA
add r0, r4, #0
mov r1, #0xa2
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
cmp r0, #0
beq _022367EA
ldr r0, [sp]
@@ -20636,26 +20636,26 @@ _022378A2:
beq _02237900
mov r1, #0xa2
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
cmp r0, #0
beq _022378F8
add r0, r4, #0
mov r1, #0xad
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
cmp r0, #0
beq _022378F8
add r0, r4, #0
mov r1, #0xad
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
ldr r1, _02237AAC ; =0x000001EE
cmp r0, r1
beq _022378F8
add r0, r4, #0
mov r1, #0x9f
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
cmp r0, #0
beq _02237900
_022378F8:
@@ -20672,22 +20672,22 @@ _02237900:
add r4, r0, #0
mov r1, #5
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
str r0, [sp, #4]
add r0, r4, #0
mov r1, #0x70
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
add r6, r0, #0
add r0, r4, #0
mov r1, #0xa0
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
add r4, r0, #0
ldr r0, [sp, #4]
add r1, r6, #0
mov r2, #1
- bl FUN_02068654
+ bl GetMonBaseStat_HandleFormeConversion
ldr r1, _02237AB0 ; =0x00002144
ldr r2, _02237AB4 ; =0x00003044
str r0, [r5, r1]
@@ -20719,7 +20719,7 @@ _02237900:
mov r2, #2
lsl r1, r1, #0x1b
lsr r1, r1, #0x1b
- bl FUN_02068654
+ bl GetMonBaseStat_HandleFormeConversion
add r1, r0, #0
ldr r0, _02237AB0 ; =0x00002144
ldr r0, [r5, r0]
@@ -20818,26 +20818,26 @@ _02237A2A:
beq _02237A9A
mov r1, #0xa2
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
cmp r0, #0
beq _02237A7C
add r0, r4, #0
mov r1, #0xad
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
cmp r0, #0
beq _02237A7C
add r0, r4, #0
mov r1, #0xad
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
ldr r1, _02237AAC ; =0x000001EE
cmp r0, r1
beq _02237A7C
add r0, r4, #0
mov r1, #0x9f
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
cmp r0, #0
beq _02237A9A
_02237A7C:
@@ -21174,13 +21174,13 @@ _02237D16:
mov r1, #0xad
mov r2, #0
str r0, [sp, #8]
- bl FUN_020671BC
+ bl GetMonDataEncrypted
cmp r0, #0
beq _02237D7E
ldr r0, [sp, #8]
mov r1, #0xad
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
ldr r1, _02237DBC ; =0x000001EE
cmp r0, r1
beq _02237D7E
@@ -21190,7 +21190,7 @@ _02237D4E:
ldr r0, [sp, #8]
add r1, #0x36
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
lsl r0, r0, #0x10
lsr r6, r0, #0x10
add r0, r6, #0
@@ -23876,20 +23876,20 @@ _02239222:
mov r1, #0xad
mov r2, #0
add r4, r0, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
lsl r0, r0, #0x10
lsr r6, r0, #0x10
add r0, r4, #0
mov r1, #6
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
lsl r0, r0, #0x10
lsr r0, r0, #0x10
str r0, [sp, #8]
add r0, r4, #0
mov r1, #0xa
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
lsl r0, r0, #0x18
lsr r0, r0, #0x18
str r0, [sp, #4]
@@ -23915,7 +23915,7 @@ _02239222:
add r0, r4, #0
mov r1, #0xa0
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
sub r0, r0, #1
mov r1, #0xa
bl _u32_div_f
@@ -23939,7 +23939,7 @@ _022392AA:
add r0, r4, #0
mov r1, #6
add r2, r5, r2
- bl FUN_02067830
+ bl SetBoxMonDataEncrypted
b _022392EC
_022392C4:
cmp r5, #0x62
@@ -23954,7 +23954,7 @@ _022392C4:
add r0, r4, #0
mov r1, #6
add r2, r2, r3
- bl FUN_02067830
+ bl SetBoxMonDataEncrypted
b _022392EC
_022392E2:
add r1, r1, #1
@@ -23979,7 +23979,7 @@ _022392EC:
mov r1, #0xa0
str r2, [sp, #0xc]
mov r5, #0xa
- bl FUN_020671BC
+ bl GetMonDataEncrypted
lsl r0, r0, #0x18
lsr r1, r0, #0x18
cmp r1, #0xa
@@ -24010,7 +24010,7 @@ _0223932E:
add r0, r4, #0
mov r1, #6
add r2, sp, #0xc
- bl FUN_02067830
+ bl SetBoxMonDataEncrypted
_02239350:
ldr r0, [sp]
mov r1, #0
@@ -25362,20 +25362,20 @@ _02239E2A:
mov r1, #0xad
mov r2, #0
add r6, r0, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
cmp r0, #0
beq _02239E5C
add r0, r6, #0
mov r1, #0xad
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
ldr r1, _02239F48 ; =0x000001EE
cmp r0, r1
beq _02239E5C
add r0, r6, #0
mov r1, #0xa2
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
add r5, r5, r0
_02239E5C:
add r0, r7, #0
@@ -25411,19 +25411,19 @@ _02239E90:
mov r1, #0xad
mov r2, #0
add r6, r0, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
cmp r0, #0
beq _02239EC0
add r0, r6, #0
mov r1, #0xad
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
cmp r0, r7
beq _02239EC0
add r0, r6, #0
mov r1, #0xa2
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
add r5, r5, r0
_02239EC0:
ldr r0, [sp, #8]
@@ -25458,20 +25458,20 @@ _02239EF8:
mov r1, #0xad
mov r2, #0
add r6, r0, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
cmp r0, #0
beq _02239F2A
add r0, r6, #0
mov r1, #0xad
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
ldr r1, _02239F48 ; =0x000001EE
cmp r0, r1
beq _02239F2A
add r0, r6, #0
mov r1, #0xa2
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
add r5, r5, r0
_02239F2A:
add r0, r7, #0
@@ -25807,12 +25807,12 @@ MOD11_0223A178: ; 0x0223A178
add r6, r0, #0
mov r1, #0xa
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
str r0, [sp]
add r0, r6, #0
mov r1, #0x9f
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
add r2, r0, #0
ldr r0, _0223A210 ; =0x00002D67
add r1, r5, r4
@@ -26642,7 +26642,7 @@ _0223A7D6:
mov r1, #6
mov r2, #0
add r6, r0, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
lsl r0, r0, #0x10
lsr r0, r0, #0x10
mov r1, #1
@@ -26746,7 +26746,7 @@ _0223A8B0:
add r0, r6, #0
mov r1, #6
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
lsl r0, r0, #0x10
lsr r0, r0, #0x10
mov r1, #1
@@ -26768,7 +26768,7 @@ _0223A8B0:
add r0, r6, #0
mov r1, #0xa2
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
cmp r0, #0
beq _0223A90E
ldr r1, [r4, #4]
@@ -26794,7 +26794,7 @@ _0223A90E:
ldr r2, [sp, #0x34]
add r0, r6, #0
mov r1, #0xa2
- bl FUN_020671BC
+ bl GetMonDataEncrypted
cmp r0, #0
bne _0223A928
b _0223AA34
@@ -26802,7 +26802,7 @@ _0223A928:
add r0, r6, #0
mov r1, #0xa0
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
cmp r0, #0x64
beq _0223AA34
ldr r0, [r4, #4]
@@ -26861,7 +26861,7 @@ _0223A994:
add r0, r6, #0
mov r1, #0xc
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
ldr r1, _0223ABAC ; =0x020ECAC4
ldrb r1, [r1]
cmp r1, r0
@@ -26888,7 +26888,7 @@ _0223A9D6:
add r0, r6, #0
mov r1, #8
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
str r0, [sp, #0x48]
add r0, r6, #0
bl FUN_02068734
@@ -26914,7 +26914,7 @@ _0223AA0C:
add r0, r6, #0
mov r1, #8
add r2, sp, #0x48
- bl FUN_02067830
+ bl SetBoxMonDataEncrypted
ldr r6, [r4, #4]
ldr r0, [r4]
add r1, r7, #0
@@ -27062,7 +27062,7 @@ _0223AB22:
add r0, r6, #0
mov r1, #0xa0
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
str r0, [sp, #0x30]
mov r0, #5
mov r1, #0x18
@@ -27082,7 +27082,7 @@ _0223AB58:
ldr r1, [r1, r2]
add r0, r6, #0
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
ldr r1, [sp, #0x4c]
lsl r2, r1, #2
ldr r1, [sp, #0x2c]
@@ -27324,7 +27324,7 @@ _0223AD30:
ldr r1, [r1, r2]
add r0, r6, #0
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
ldr r1, [sp, #0x28]
lsl r2, r5, #2
ldr r1, [r1, r2]
@@ -27390,7 +27390,7 @@ _0223ADEC:
strb r0, [r5, #1]
add r0, r6, #0
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
str r0, [sp, #0xb4]
mov r0, #3
str r0, [sp, #0xcc]
@@ -27838,7 +27838,7 @@ _0223B192:
add r0, r6, #0
add r1, #0x36
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
str r0, [sp, #0xb8]
ldr r0, [r4]
bl MOD11_02230E54
@@ -27897,7 +27897,7 @@ _0223B1F6:
add r0, r6, #0
add r1, #0x3e
add r2, sp, #0x4c
- bl FUN_02067830
+ bl SetBoxMonDataEncrypted
ldr r1, [r4, #0x40]
ldr r2, [r4, #0x44]
lsl r1, r1, #0x10
@@ -27984,7 +27984,7 @@ MOD11_0223B2DC: ; 0x0223B2DC
add r0, r2, #0
mov r1, #5
mov r4, #0
- bl FUN_0206851C
+ bl AllocAndLoadMonPersonal
add r7, r0, #0
ldr r0, [sp]
ldr r1, [sp, #4]
@@ -27992,7 +27992,7 @@ MOD11_0223B2DC: ; 0x0223B2DC
mov r1, #6
add r2, r4, #0
str r0, [sp, #0x14]
- bl FUN_020671BC
+ bl GetMonDataEncrypted
lsl r0, r0, #0x10
lsr r6, r0, #0x10
add r0, r6, #0
@@ -28015,7 +28015,7 @@ _0223B328:
ldr r0, [sp, #0x14]
add r1, #0xd
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
ldr r1, [sp, #0xc]
strb r0, [r1]
add r0, r1, #0
@@ -28063,7 +28063,7 @@ _0223B37A: ; jump table
_0223B386:
add r0, r7, #0
mov r1, #0xa
- bl FUN_02068538
+ bl GetPersonalAttr
lsl r0, r0, #0x10
asr r4, r0, #0x10
cmp r5, #0x79
@@ -28075,7 +28075,7 @@ _0223B386:
_0223B39E:
add r0, r7, #0
mov r1, #0xb
- bl FUN_02068538
+ bl GetPersonalAttr
lsl r0, r0, #0x10
asr r4, r0, #0x10
cmp r5, #0x74
@@ -28087,7 +28087,7 @@ _0223B39E:
_0223B3B6:
add r0, r7, #0
mov r1, #0xc
- bl FUN_02068538
+ bl GetPersonalAttr
lsl r0, r0, #0x10
asr r4, r0, #0x10
cmp r5, #0x75
@@ -28099,7 +28099,7 @@ _0223B3B6:
_0223B3CE:
add r0, r7, #0
mov r1, #0xd
- bl FUN_02068538
+ bl GetPersonalAttr
lsl r0, r0, #0x10
asr r4, r0, #0x10
cmp r5, #0x78
@@ -28111,7 +28111,7 @@ _0223B3CE:
_0223B3E6:
add r0, r7, #0
mov r1, #0xe
- bl FUN_02068538
+ bl GetPersonalAttr
lsl r0, r0, #0x10
asr r4, r0, #0x10
cmp r5, #0x76
@@ -28123,7 +28123,7 @@ _0223B3E6:
_0223B3FE:
add r0, r7, #0
mov r1, #0xf
- bl FUN_02068538
+ bl GetPersonalAttr
lsl r0, r0, #0x10
asr r4, r0, #0x10
cmp r5, #0x77
@@ -28183,7 +28183,7 @@ _0223B45A:
str r0, [sp, #0x18]
ldr r0, [sp, #0x14]
add r1, #0xd
- bl FUN_02067830
+ bl SetBoxMonDataEncrypted
ldr r0, [sp, #0x10]
add r0, r0, #1
str r0, [sp, #0x10]
@@ -28195,7 +28195,7 @@ _0223B45A:
b _0223B35E
_0223B48C:
add r0, r7, #0
- bl FUN_02068640
+ bl FreeMonPersonal
add sp, #0x28
pop {r3, r4, r5, r6, r7, pc}
nop
@@ -28638,7 +28638,7 @@ _0223B83C:
add r0, r6, #0
mov r1, #5
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
add r1, r0, #0
ldr r0, [r4]
bl MOD11_02231668
@@ -29020,7 +29020,7 @@ _0223BB76:
mov r1, #5
mov r2, #0
add r6, r0, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
add r5, r0, #0
ldr r0, [r4]
bl MOD11_02230E18
@@ -29058,7 +29058,7 @@ _0223BBEE:
add r0, r6, #0
mov r1, #0x70
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
str r0, [r5, #8]
ldr r0, [r4]
bl MOD11_02230290
@@ -29066,7 +29066,7 @@ _0223BBEE:
add r0, r6, #0
mov r1, #0x6f
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
str r0, [r5, #0x10]
ldr r0, _0223BF18 ; =0x020FA5FC
add r1, r5, #0
@@ -29102,7 +29102,7 @@ _0223BC38:
bne _0223BC62
ldr r2, [r5, #0x18]
mov r1, #0x77
- bl FUN_02067830
+ bl SetBoxMonDataEncrypted
_0223BC62:
add r0, r5, #0
bl FUN_02077AC4
@@ -29204,13 +29204,13 @@ _0223BD3E:
add r0, r6, #0
add r1, #0x42
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
add r1, r5, #0
str r0, [sp, #0x2c]
add r0, r6, #0
add r1, #0x3a
add r2, sp, #0x2c
- bl FUN_02067830
+ bl SetBoxMonDataEncrypted
add r5, r5, #1
cmp r5, #4
blt _0223BD3E
@@ -29533,7 +29533,7 @@ _0223BFEE:
lsl r0, r0, #6
ldrh r0, [r1, r0]
mov r1, #8
- bl FUN_02068678
+ bl GetMonBaseStat
ldr r1, _0223C200 ; =0x0000311C
ldr r2, _0223C204 ; =0x0225DCF0
ldrb r1, [r4, r1]
@@ -29554,7 +29554,7 @@ _0223C026:
lsl r0, r0, #6
ldrh r0, [r1, r0]
mov r1, #8
- bl FUN_02068678
+ bl GetMonBaseStat
str r0, [sp]
_0223C03A:
ldr r1, [r4, #0x6c]
@@ -31430,7 +31430,7 @@ MOD11_0223CDC4: ; 0x0223CDC4
ldr r0, [sp, #0x18]
mov r1, #0xaf
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
cmp r0, #0
bne _0223CF26
mov r0, #2
@@ -31439,7 +31439,7 @@ _0223CF26:
ldr r0, [sp, #0x18]
mov r1, #0x6f
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
_0223CF30:
cmp r0, #0
bne _0223CF42
@@ -31472,7 +31472,7 @@ _0223CF5C:
ldr r0, [sp, #0x18]
mov r1, #0xa0
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
add r2, r0, #0
mov r0, #0
str r0, [sp]
@@ -41623,20 +41623,20 @@ _02241DFE:
mov r1, #0xad
mov r2, #0
add r4, r0, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
cmp r0, #0
beq _02241E3E
add r0, r4, #0
mov r1, #0xad
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
ldr r1, _02241FCC ; =0x000001EE
cmp r0, r1
beq _02241E3E
add r0, r4, #0
mov r1, #0xa2
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
cmp r0, #0
beq _02241E3E
ldr r2, [sp, #8]
@@ -41710,20 +41710,20 @@ _02241EB4:
mov r1, #0xad
mov r2, #0
add r4, r0, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
cmp r0, #0
beq _02241EE6
add r0, r4, #0
mov r1, #0xad
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
ldr r1, _02241FCC ; =0x000001EE
cmp r0, r1
beq _02241EE6
add r0, r4, #0
mov r1, #0xa2
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
add r7, r7, r0
_02241EE6:
add r0, r6, #0
@@ -41915,20 +41915,20 @@ _02242056:
mov r1, #0xad
mov r2, #0
add r5, r0, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
cmp r0, #0
beq _02242088
add r0, r5, #0
mov r1, #0xad
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
ldr r1, _02242340 ; =0x000001EE
cmp r0, r1
beq _02242088
add r0, r5, #0
mov r1, #0xa2
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
add r7, r7, r0
_02242088:
add r0, r6, #0
@@ -41995,20 +41995,20 @@ _022420FE:
mov r1, #0xad
mov r2, #0
add r6, r0, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
cmp r0, #0
beq _02242130
add r0, r6, #0
mov r1, #0xad
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
ldr r1, _02242340 ; =0x000001EE
cmp r0, r1
beq _02242130
add r0, r6, #0
mov r1, #0xa2
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
add r5, r5, r0
_02242130:
add r0, r7, #0
@@ -42030,19 +42030,19 @@ _0224214A:
mov r1, #0xad
mov r2, #0
add r6, r0, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
cmp r0, #0
beq _0224217A
add r0, r6, #0
mov r1, #0xad
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
cmp r0, r7
beq _0224217A
add r0, r6, #0
mov r1, #0xa2
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
add r5, r5, r0
_0224217A:
ldr r0, [sp, #0x18]
@@ -42099,20 +42099,20 @@ _022421DC:
mov r1, #0xad
mov r2, #0
add r5, r0, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
cmp r0, #0
beq _0224220E
add r0, r5, #0
mov r1, #0xad
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
ldr r1, _02242340 ; =0x000001EE
cmp r0, r1
beq _0224220E
add r0, r5, #0
mov r1, #0xa2
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
add r7, r7, r0
_0224220E:
add r0, r6, #0
@@ -43364,41 +43364,41 @@ MOD11_02242B78: ; 0x02242B78
mov r1, #5
mov r2, #0
add r4, r0, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
ldr r1, [sp, #0x18]
mov r2, #0
strh r0, [r1, r5]
add r0, r4, #0
mov r1, #0xa4
- bl FUN_020671BC
+ bl GetMonDataEncrypted
ldr r1, _02242F4C ; =0x00002D42
add r2, r7, r5
strh r0, [r2, r1]
add r0, r4, #0
mov r1, #0xa5
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
ldr r1, _02242F50 ; =0x00002D44
add r2, r7, r5
strh r0, [r2, r1]
add r0, r4, #0
mov r1, #0xa6
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
ldr r1, _02242F54 ; =0x00002D46
add r2, r7, r5
strh r0, [r2, r1]
add r0, r4, #0
mov r1, #0xa7
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
ldr r1, _02242F58 ; =0x00002D48
add r2, r7, r5
strh r0, [r2, r1]
add r0, r4, #0
mov r1, #0xa8
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
add r1, r7, r5
ldr r2, _02242F5C ; =0x00002D4A
str r1, [sp, #0xc]
@@ -43412,7 +43412,7 @@ _02242C02:
add r0, r4, #0
add r1, #0x36
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
ldr r2, [sp, #0x14]
ldr r1, _02242F60 ; =0x00002D4C
strh r0, [r2, r1]
@@ -43420,7 +43420,7 @@ _02242C02:
add r0, r4, #0
add r1, #0x3a
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
ldr r2, [sp, #0x10]
ldr r1, _02242F64 ; =0x00002D6C
strb r0, [r2, r1]
@@ -43428,7 +43428,7 @@ _02242C02:
add r0, r4, #0
add r1, #0x3e
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
ldr r2, [sp, #0x10]
ldr r1, _02242F68 ; =0x00002D70
add r6, r6, #1
@@ -43447,7 +43447,7 @@ _02242C02:
add r0, r4, #0
mov r1, #0x46
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
ldr r1, [r6, r5]
mov r2, #0x1f
bic r1, r2
@@ -43458,7 +43458,7 @@ _02242C02:
add r0, r4, #0
mov r1, #0x47
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
lsl r0, r0, #0x1b
ldr r2, [r6, r5]
ldr r1, _02242F6C ; =0xFFFFFC1F
@@ -43469,7 +43469,7 @@ _02242C02:
add r0, r4, #0
mov r1, #0x48
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
lsl r0, r0, #0x1b
ldr r2, [r6, r5]
ldr r1, _02242F70 ; =0xFFFF83FF
@@ -43480,7 +43480,7 @@ _02242C02:
add r0, r4, #0
mov r1, #0x49
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
lsl r0, r0, #0x1b
ldr r2, [r6, r5]
ldr r1, _02242F74 ; =0xFFF07FFF
@@ -43491,7 +43491,7 @@ _02242C02:
add r0, r4, #0
mov r1, #0x4a
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
lsl r0, r0, #0x1b
ldr r2, [r6, r5]
ldr r1, _02242F78 ; =0xFE0FFFFF
@@ -43502,7 +43502,7 @@ _02242C02:
add r0, r4, #0
mov r1, #0x4b
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
lsl r0, r0, #0x1b
ldr r2, [r6, r5]
ldr r1, _02242F7C ; =0xC1FFFFFF
@@ -43513,7 +43513,7 @@ _02242C02:
add r0, r4, #0
mov r1, #0x4c
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
ldr r2, [r6, r5]
ldr r1, _02242F80 ; =0xBFFFFFFF
lsl r0, r0, #0x1f
@@ -43524,7 +43524,7 @@ _02242C02:
add r0, r4, #0
mov r1, #0x4d
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
ldr r2, [r6, r5]
ldr r1, _02242F84 ; =0x7FFFFFFF
lsl r0, r0, #0x1f
@@ -43598,14 +43598,14 @@ _02242D2E:
add r0, r4, #0
mov r1, #0xb0
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
ldr r1, _02242FA0 ; =0x00002D64
add r2, r7, r5
strb r0, [r2, r1]
add r0, r4, #0
mov r1, #0xb1
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
ldr r1, _02242FA4 ; =0x00002D65
add r2, r7, r5
strb r0, [r2, r1]
@@ -43637,7 +43637,7 @@ _02242D2E:
add r0, r4, #0
mov r1, #0x70
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
ldrb r1, [r6, r5]
mov r2, #0x1f
lsl r0, r0, #0x18
@@ -43670,14 +43670,14 @@ _02242E24:
add r0, r4, #0
mov r1, #0xa
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
ldr r1, _02242FAC ; =0x00002D67
add r2, r7, r5
strb r0, [r2, r1]
add r0, r4, #0
mov r1, #0x9f
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
ldr r1, _02242FB0 ; =0x00002DAC
add r2, r7, r5
str r0, [r2, r1]
@@ -43688,7 +43688,7 @@ _02242E24:
add r0, r4, #0
mov r1, #6
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
strh r0, [r6, r5]
_02242E58:
ldr r0, [sp, #4]
@@ -43698,56 +43698,56 @@ _02242E58:
add r0, r4, #0
mov r1, #0xa0
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
ldr r1, _02242FB4 ; =0x00002D74
add r2, r7, r6
strb r0, [r2, r1]
add r0, r4, #0
mov r1, #9
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
ldr r1, _02242FB8 ; =0x00002D75
add r2, r7, r6
strb r0, [r2, r1]
add r0, r4, #0
mov r1, #0xa2
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
ldr r1, _02242FBC ; =0x00002D8C
add r2, r7, r6
str r0, [r2, r1]
add r0, r4, #0
mov r1, #0xa3
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
ldr r1, _02242FC0 ; =0x00002D90
add r2, r7, r6
str r0, [r2, r1]
add r0, r4, #0
mov r1, #8
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
ldr r1, _02242FC4 ; =0x00002DA4
add r2, r7, r6
str r0, [r2, r1]
mov r1, #0
add r0, r4, #0
add r2, r1, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
ldr r1, _02242FC8 ; =0x00002DA8
add r2, r7, r6
str r0, [r2, r1]
add r0, r4, #0
mov r1, #7
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
ldr r1, _02242FCC ; =0x00002DB4
add r2, r7, r6
str r0, [r2, r1]
add r0, r4, #0
mov r1, #0x9c
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
ldr r1, [sp, #0x1c]
lsl r0, r0, #0x18
lsr r0, r0, #0x18
@@ -43762,7 +43762,7 @@ _02242E58:
strb r1, [r0, r5]
add r0, r4, #0
mov r1, #0x9a
- bl FUN_020671BC
+ bl GetMonDataEncrypted
ldr r1, _02242FD0 ; =0x00002DBF
add r2, r7, r6
strb r0, [r2, r1]
@@ -43788,13 +43788,13 @@ _02242E58:
add r2, r7, r2
mov r1, #0x74
add r2, r2, r6
- bl FUN_020671BC
+ bl GetMonDataEncrypted
ldr r2, _02242FDC ; =0x00002D94
add r0, r4, #0
add r2, r7, r2
mov r1, #0x8f
add r2, r2, r6
- bl FUN_020671BC
+ bl GetMonDataEncrypted
ldr r0, _02242FE0 ; =0x00002DBC
b _02242FE4
.align 2, 0
@@ -43906,7 +43906,7 @@ MOD11_02243054: ; 0x02243054
mov r1, #0xa4
mov r2, #0
add r6, r0, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
ldr r2, [sp]
ldr r1, [sp, #4]
add r2, r2, r1
@@ -43915,7 +43915,7 @@ MOD11_02243054: ; 0x02243054
add r0, r6, #0
mov r1, #0xa5
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
ldr r2, [sp]
ldr r1, [sp, #4]
add r2, r2, r1
@@ -43924,7 +43924,7 @@ MOD11_02243054: ; 0x02243054
add r0, r6, #0
mov r1, #0xa6
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
ldr r2, [sp]
ldr r1, [sp, #4]
add r2, r2, r1
@@ -43933,7 +43933,7 @@ MOD11_02243054: ; 0x02243054
add r0, r6, #0
mov r1, #0xa7
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
ldr r2, [sp]
ldr r1, [sp, #4]
add r2, r2, r1
@@ -43942,7 +43942,7 @@ MOD11_02243054: ; 0x02243054
add r0, r6, #0
mov r1, #0xa8
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
ldr r2, [sp]
ldr r1, [sp, #4]
add r2, r2, r1
@@ -43951,7 +43951,7 @@ MOD11_02243054: ; 0x02243054
add r0, r6, #0
mov r1, #0xa0
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
ldr r2, [sp]
ldr r1, [sp, #4]
add r2, r2, r1
@@ -43960,7 +43960,7 @@ MOD11_02243054: ; 0x02243054
add r0, r6, #0
mov r1, #9
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
ldr r2, [sp]
ldr r1, [sp, #4]
add r2, r2, r1
@@ -43969,7 +43969,7 @@ MOD11_02243054: ; 0x02243054
add r0, r6, #0
mov r1, #0xa2
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
ldr r2, [sp]
ldr r1, [sp, #4]
add r2, r2, r1
@@ -43978,7 +43978,7 @@ MOD11_02243054: ; 0x02243054
add r0, r6, #0
mov r1, #0xa3
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
ldr r2, [sp]
ldr r1, [sp, #4]
add r2, r2, r1
@@ -44016,21 +44016,21 @@ _02243142:
add r0, r6, #0
add r1, #0x36
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
ldr r1, _022431CC ; =0x00002D4C
mov r2, #0
strh r0, [r7, r1]
add r1, r4, #0
add r0, r6, #0
add r1, #0x3a
- bl FUN_020671BC
+ bl GetMonDataEncrypted
ldr r1, _022431D0 ; =0x00002D6C
mov r2, #0
strb r0, [r5, r1]
add r1, r4, #0
add r0, r6, #0
add r1, #0x3e
- bl FUN_020671BC
+ bl GetMonDataEncrypted
ldr r1, _022431D4 ; =0x00002D70
strb r0, [r5, r1]
_02243186:
@@ -44042,7 +44042,7 @@ _02243186:
add r0, r6, #0
mov r1, #8
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
ldr r2, [sp]
ldr r1, [sp, #4]
add r2, r2, r1
@@ -48649,7 +48649,7 @@ _022453A4:
bl FUN_0206B9B0
mov r1, #0xa2
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
cmp r0, #0
beq _022453BA
add r6, r6, #1
@@ -48706,7 +48706,7 @@ _02245418:
bl FUN_0206B9B0
mov r1, #0xa2
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
cmp r0, #0
beq _0224542E
add r6, r6, #1
@@ -52136,19 +52136,19 @@ _02246E76:
mov r1, #5
mov r2, #0
add r4, r0, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
cmp r0, #0
beq _02246EB6
add r0, r4, #0
mov r1, #0x4c
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
cmp r0, #0
bne _02246EB6
add r0, r4, #0
mov r1, #0xa2
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
cmp r0, #0
beq _02246EB6
ldr r0, [sp, #0xc]
@@ -60443,7 +60443,7 @@ MOD11_0224AD38: ; 0x0224AD38
add r0, r6, #0
mov r1, #0x9a
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
add r2, r0, #0
b _0224AD7A
_0224AD76:
@@ -60552,17 +60552,17 @@ MOD11_0224AE14: ; 0x0224AE14
add r0, r5, #0
mov r1, #0x8f
add r2, sp, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
add r0, r5, #0
mov r1, #7
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
cmp r6, r0
bne _0224AE72
add r0, r5, #0
mov r1, #0x9c
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
cmp r7, r0
bne _0224AE72
add r0, r4, #0
@@ -64908,13 +64908,13 @@ _0224CEE2:
add r0, r7, #0
add r1, #0x36
add r2, r5, #0
- bl FUN_02067830
+ bl SetBoxMonDataEncrypted
ldr r2, [sp, #8]
add r1, r4, #0
add r0, r7, #0
add r1, #0x3a
add r2, r2, r4
- bl FUN_02067830
+ bl SetBoxMonDataEncrypted
_0224CF0C:
add r4, r4, #1
add r5, r5, #2
@@ -64932,16 +64932,16 @@ _0224CF14:
add r0, r7, #0
mov r1, #6
add r2, #0xc
- bl FUN_02067830
+ bl SetBoxMonDataEncrypted
_0224CF30:
add r0, r7, #0
mov r1, #0xa2
add r2, r6, #2
- bl FUN_02067830
+ bl SetBoxMonDataEncrypted
add r0, r7, #0
mov r1, #0x9f
add r2, r6, #4
- bl FUN_02067830
+ bl SetBoxMonDataEncrypted
mov r2, #0x65
ldr r1, [sp, #4]
lsl r2, r2, #2
@@ -65054,7 +65054,7 @@ _0224D00A:
_0224D024:
mov r1, #0xa
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
_0224D02C:
ldrh r1, [r4, #2]
cmp r1, #0xd7
@@ -65066,7 +65066,7 @@ _0224D038:
add r0, r6, #0
mov r1, #0x9f
add r2, sp, #8
- bl FUN_02067830
+ bl SetBoxMonDataEncrypted
_0224D042:
ldr r0, [sp, #4]
add r5, r5, #1
@@ -65596,13 +65596,13 @@ _0224D466:
mov r1, #5
mov r2, #0
add r4, r0, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
cmp r0, #0
beq _0224D4B4
add r0, r4, #0
mov r1, #0x4c
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
cmp r0, #0
bne _0224D4B4
ldr r0, [sp]
@@ -65613,7 +65613,7 @@ _0224D466:
add r0, r4, #0
mov r1, #0xa2
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
ldr r1, [sp, #8]
add r0, r1, r0
str r0, [sp, #8]
@@ -65622,7 +65622,7 @@ _0224D4A8:
add r0, r4, #0
mov r1, #0xa2
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
add r7, r7, r0
_0224D4B4:
add r0, r6, #0
@@ -72923,7 +72923,7 @@ MOD11_02250F94: ; 0x02250F94
lsl r0, r0, #0x10
lsr r0, r0, #0x10
mov r1, #0x1a
- bl FUN_02068678
+ bl GetMonBaseStat
ldr r2, _0225100C ; =0x0225E830
lsl r1, r5, #1
ldrb r2, [r2, r1]
@@ -74596,7 +74596,7 @@ _02251CEC:
mov r1, #0xa2
mov r2, #0
add r6, r0, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
ldr r1, [r4, #8]
mov r2, #0
ldr r1, [r1, #4]
@@ -74605,7 +74605,7 @@ _02251CEC:
str r0, [r5, #0x28]
add r0, r6, #0
mov r1, #0xa3
- bl FUN_020671BC
+ bl GetMonDataEncrypted
str r0, [r5, #0x2c]
ldr r0, [r4, #8]
mov r1, #0x9f
@@ -74614,7 +74614,7 @@ _02251CEC:
ldrh r0, [r0, #0x20]
str r0, [r5, #0x30]
add r0, r6, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
cmp r0, #0
bne _02251D72
add r0, r5, #0
@@ -74735,7 +74735,7 @@ _02251E2E:
bl MOD11_02230014
mov r1, #0x9f
add r2, r5, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
cmp r0, #0
bne _02251E6A
ldr r0, [sp, #0x10]
@@ -75527,7 +75527,7 @@ _022524D0:
bl MOD11_02230014
mov r1, #0xa2
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
cmp r0, #0
beq _022524F2
ldrb r0, [r7, #0xc]
@@ -81046,12 +81046,12 @@ MOD11_02255034: ; 0x02255034
add r6, r0, #0
mov r1, #5
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
str r0, [sp, #0x10]
add r0, r6, #0
mov r1, #0xa0
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
str r0, [sp, #0xc]
mov r0, #0xc
add r2, sp, #0x14
@@ -81124,7 +81124,7 @@ _022550D0:
_022550EA:
ldr r0, [sp, #0x10]
ldr r1, [sp, #0xc]
- bl FUN_02068758
+ bl GetMonExpByLevel
mov r1, #0xc0
mul r1, r4
add r2, r5, r1
@@ -81135,11 +81135,11 @@ _022550EA:
str r0, [sp, #0x1c]
ldr r0, [sp, #0x10]
add r1, r1, #1
- bl FUN_02068758
+ bl GetMonExpByLevel
add r5, r0, #0
ldr r0, [sp, #0x10]
ldr r1, [sp, #0xc]
- bl FUN_02068758
+ bl GetMonExpByLevel
sub r0, r5, r0
str r0, [sp, #0x20]
ldrh r1, [r7, r6]
@@ -81287,7 +81287,7 @@ _0225523A:
mov r1, #0xad
mov r2, #0
add r4, r0, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
cmp r0, #0
beq _02255298
ldr r1, _02255500 ; =0x000001EE
@@ -81296,13 +81296,13 @@ _0225523A:
add r0, r4, #0
mov r1, #0xa2
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
cmp r0, #0
beq _02255280
add r0, r4, #0
mov r1, #0x9f
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
cmp r0, #0
beq _0225527A
mov r0, #3
@@ -81388,7 +81388,7 @@ _02255304:
mov r1, #0xad
mov r2, #0
add r7, r0, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
cmp r0, #0
beq _02255350
ldr r1, _02255500 ; =0x000001EE
@@ -81397,13 +81397,13 @@ _02255304:
add r0, r7, #0
mov r1, #0xa2
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
cmp r0, #0
beq _0225534A
add r0, r7, #0
mov r1, #0x9f
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
cmp r0, #0
beq _02255344
mov r0, #3
@@ -81464,7 +81464,7 @@ _022553A0:
mov r1, #0xad
mov r2, #0
add r7, r0, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
cmp r0, #0
beq _022553EC
ldr r1, _02255500 ; =0x000001EE
@@ -81473,13 +81473,13 @@ _022553A0:
add r0, r7, #0
mov r1, #0xa2
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
cmp r0, #0
beq _022553E6
add r0, r7, #0
mov r1, #0x9f
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
cmp r0, #0
beq _022553E0
mov r0, #3
@@ -81530,7 +81530,7 @@ _02255428:
mov r1, #0xad
mov r2, #0
add r7, r0, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
cmp r0, #0
beq _02255474
ldr r1, _02255500 ; =0x000001EE
@@ -81539,13 +81539,13 @@ _02255428:
add r0, r7, #0
mov r1, #0xa2
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
cmp r0, #0
beq _0225546E
add r0, r7, #0
mov r1, #0x9f
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
cmp r0, #0
beq _02255468
mov r0, #3
@@ -82376,12 +82376,12 @@ MOD11_02255A8C: ; 0x02255A8C
add r4, r0, #0
mov r1, #5
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
add r7, r0, #0
add r0, r4, #0
mov r1, #0xa0
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
add r6, r0, #0
mov r0, #0x18
add r2, sp, #0xc
@@ -82432,7 +82432,7 @@ _02255B04:
_02255B12:
add r0, r7, #0
add r1, r6, #0
- bl FUN_02068758
+ bl GetMonExpByLevel
ldr r1, _02255B64 ; =0x00002DA4
add r2, r5, r4
ldr r1, [r2, r1]
@@ -82440,11 +82440,11 @@ _02255B12:
str r0, [sp, #0x18]
add r0, r7, #0
add r1, r6, #1
- bl FUN_02068758
+ bl GetMonExpByLevel
add r4, r0, #0
add r0, r7, #0
add r1, r6, #0
- bl FUN_02068758
+ bl GetMonExpByLevel
sub r0, r4, r0
str r0, [sp, #0x1c]
mov r0, #0x14
@@ -82480,12 +82480,12 @@ MOD11_02255B68: ; 0x02255B68
add r6, r0, #0
mov r1, #5
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
add r7, r0, #0
add r0, r6, #0
mov r1, #0xa0
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
add r6, r0, #0
mov r1, #0x19
add r0, sp, #0xc
@@ -82494,7 +82494,7 @@ MOD11_02255B68: ; 0x02255B68
add r1, r6, #0
str r0, [sp, #0x10]
add r0, r7, #0
- bl FUN_02068758
+ bl GetMonExpByLevel
mov r1, #0xc0
mul r1, r4
add r2, r5, r1
@@ -82504,11 +82504,11 @@ MOD11_02255B68: ; 0x02255B68
str r0, [sp, #0x14]
add r0, r7, #0
add r1, r6, #1
- bl FUN_02068758
+ bl GetMonExpByLevel
add r5, r0, #0
add r0, r7, #0
add r1, r6, #0
- bl FUN_02068758
+ bl GetMonExpByLevel
sub r0, r5, r0
str r0, [sp, #0x18]
mov r0, #0x10
@@ -83105,12 +83105,12 @@ MOD11_02256020: ; 0x02256020
add r6, r0, #0
mov r1, #5
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
str r0, [sp, #0xc]
add r0, r6, #0
mov r1, #0xa0
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
str r0, [sp, #8]
mov r0, #0x26
add r2, sp, #0x10
@@ -83183,7 +83183,7 @@ _022560BA:
_022560D4:
ldr r0, [sp, #0xc]
ldr r1, [sp, #8]
- bl FUN_02068758
+ bl GetMonExpByLevel
mov r1, #0xc0
mul r1, r4
add r2, r5, r1
@@ -83194,11 +83194,11 @@ _022560D4:
str r0, [sp, #0x18]
ldr r0, [sp, #0xc]
add r1, r1, #1
- bl FUN_02068758
+ bl GetMonExpByLevel
add r5, r0, #0
ldr r0, [sp, #0xc]
ldr r1, [sp, #8]
- bl FUN_02068758
+ bl GetMonExpByLevel
sub r0, r5, r0
str r0, [sp, #0x1c]
ldrh r1, [r7, r6]
@@ -84470,7 +84470,7 @@ _02256A80:
mov r1, #0xad
mov r2, #0
str r0, [sp, #0x14]
- bl FUN_020671BC
+ bl GetMonDataEncrypted
cmp r0, #0
beq _02256AD2
ldr r1, _02256C04 ; =0x000001EE
@@ -84479,13 +84479,13 @@ _02256A80:
ldr r0, [sp, #0x14]
mov r1, #0xa2
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
cmp r0, #0
beq _02256ACA
ldr r0, [sp, #0x14]
mov r1, #0x9f
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
cmp r0, #0
beq _02256AC2
add r1, r5, r4
@@ -84535,7 +84535,7 @@ _02256B02:
mov r1, #0xad
mov r2, #0
str r0, [sp, #0x18]
- bl FUN_020671BC
+ bl GetMonDataEncrypted
cmp r0, #0
beq _02256B54
ldr r1, _02256C04 ; =0x000001EE
@@ -84544,13 +84544,13 @@ _02256B02:
ldr r0, [sp, #0x18]
mov r1, #0xa2
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
cmp r0, #0
beq _02256B4C
ldr r0, [sp, #0x18]
mov r1, #0x9f
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
cmp r0, #0
beq _02256B44
add r1, r5, r4
@@ -84611,7 +84611,7 @@ _02256B9A:
mov r1, #0xad
mov r2, #0
str r0, [sp, #0x1c]
- bl FUN_020671BC
+ bl GetMonDataEncrypted
cmp r0, #0
beq _02256BEC
ldr r1, _02256C04 ; =0x000001EE
@@ -84620,13 +84620,13 @@ _02256B9A:
ldr r0, [sp, #0x1c]
mov r1, #0xa2
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
cmp r0, #0
beq _02256BE4
ldr r0, [sp, #0x1c]
mov r1, #0x9f
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
cmp r0, #0
beq _02256BDC
add r1, r5, r4
diff --git a/arm9/modules/12/asm/module_12.s b/arm9/modules/12/asm/module_12.s
index 09561820..d77621d5 100644
--- a/arm9/modules/12/asm/module_12.s
+++ b/arm9/modules/12/asm/module_12.s
@@ -217,7 +217,7 @@ _0222D7BC:
ldr r0, [r1, r0]
add r1, r6, #0
add r1, #0x36
- bl FUN_020671BC
+ bl GetMonDataEncrypted
strh r0, [r5]
add r6, r6, #1
add r5, r5, #2
@@ -975,7 +975,7 @@ _0222DE9E:
ldr r0, [r1, r0]
add r1, r4, #0
add r1, #0x36
- bl FUN_020671BC
+ bl GetMonDataEncrypted
cmp r0, #0
beq _0222DEBE
mov r1, #0xb
@@ -5972,7 +5972,7 @@ _0223072E:
mov r1, #5
ldr r0, [r0, r6]
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
bl MOD12_0223EE70
add r1, r5, r4
add r4, r4, #1
@@ -7750,7 +7750,7 @@ _0223151C:
ldr r0, [r4]
mov r1, #6
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
mov r6, #0x64
add r5, r0, #0
add r0, r6, #0
@@ -7777,17 +7777,17 @@ _0223154E:
ldr r0, [r4]
mov r1, #0x13
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
str r0, [sp, #0xc]
ldr r0, [r4]
mov r1, #0x17
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
str r0, [sp, #8]
ldr r0, [r4]
mov r1, #0x14
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
add r7, r0, #0
add r0, r6, #0
add r0, #0xa0
@@ -7812,17 +7812,17 @@ _02231594:
ldr r0, [r4]
mov r1, #0x14
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
str r0, [sp, #0xc]
ldr r0, [r4]
mov r1, #0x13
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
str r0, [sp, #8]
ldr r0, [r4]
mov r1, #0x15
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
add r7, r0, #0
add r0, r6, #0
add r0, #0xa0
@@ -7847,17 +7847,17 @@ _022315DA:
ldr r0, [r4]
mov r1, #0x15
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
str r0, [sp, #0xc]
ldr r0, [r4]
mov r1, #0x14
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
str r0, [sp, #8]
ldr r0, [r4]
mov r1, #0x16
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
add r7, r0, #0
add r0, r6, #0
add r0, #0xa1
@@ -7882,17 +7882,17 @@ _02231620:
ldr r0, [r4]
mov r1, #0x16
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
str r0, [sp, #0xc]
ldr r0, [r4]
mov r1, #0x15
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
str r0, [sp, #8]
ldr r0, [r4]
mov r1, #0x17
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
add r7, r0, #0
add r0, r6, #0
add r0, #0xa2
@@ -7917,17 +7917,17 @@ _02231666:
ldr r0, [r4]
mov r1, #0x17
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
str r0, [sp, #0xc]
ldr r0, [r4]
mov r1, #0x16
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
str r0, [sp, #8]
ldr r0, [r4]
mov r1, #0x13
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
add r7, r0, #0
add r0, r6, #0
add r0, #0xa0
@@ -7954,7 +7954,7 @@ _022316B2:
ldr r0, [r4]
mov r1, #0x18
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
ldr r1, [sp, #8]
add r1, r1, r7
add r1, r0, r1
@@ -8951,7 +8951,7 @@ _02231E5E:
ldr r0, [r0, r1]
add r1, r4, #0
add r1, #0x36
- bl FUN_020671BC
+ bl GetMonDataEncrypted
lsl r1, r4, #1
add r2, sp, #0x3c
strh r0, [r2, r1]
@@ -9369,7 +9369,7 @@ _022321A6:
ldr r0, [r1, r0]
add r1, r5, #0
add r1, #0x36
- bl FUN_020671BC
+ bl GetMonDataEncrypted
cmp r0, #0
beq _022321C8
ldr r0, _0223220C ; =0x000002E1
@@ -10201,7 +10201,7 @@ _022327EC:
ldr r0, [r0, r1]
add r1, r6, #0
add r1, #0x36
- bl FUN_020671BC
+ bl GetMonDataEncrypted
strh r0, [r5]
add r6, r6, #1
add r5, r5, #2
@@ -11076,7 +11076,7 @@ _02232EB2:
ldr r0, [r0, r1]
add r1, r4, #0
add r1, #0x36
- bl FUN_020671BC
+ bl GetMonDataEncrypted
lsl r2, r4, #1
add r1, sp, #0x10
strh r0, [r1, r2]
@@ -12221,7 +12221,7 @@ _022336D4:
mov r1, #5
ldr r0, [r0, r4]
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
bl MOD08_0222A6C8
cmp r0, #1
bne _02233750
@@ -12296,7 +12296,7 @@ _0223377C:
ldr r0, [r0]
mov r2, #0
ldr r0, [r0, r4]
- bl FUN_020671BC
+ bl GetMonDataEncrypted
bl MOD08_0222A6C8
cmp r0, #1
bne _022337E6
@@ -15395,7 +15395,7 @@ MOD12_02235038: ; 0x02235038
ldr r0, [r1, r0]
ldr r2, [sp, #0x30]
mov r1, #0x76
- bl FUN_020671BC
+ bl GetMonDataEncrypted
ldr r1, [r5]
ldr r0, _022350E8 ; =0x00000123
ldrb r0, [r1, r0]
@@ -16862,12 +16862,12 @@ _02235B9C:
ldr r0, [r6, r5]
mov r1, #0xb0
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
add r7, r0, #0
ldr r0, [r6, r5]
mov r1, #0xb1
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
cmp r7, #7
beq _02235BBC
cmp r0, #7
@@ -18438,7 +18438,7 @@ _02236736:
lsl r0, r0, #2
ldr r0, [r1, r0]
mov r1, #5
- bl FUN_020671BC
+ bl GetMonDataEncrypted
add r6, r0, #0
ldr r0, [r4]
mov r2, #0
@@ -18447,7 +18447,7 @@ _02236736:
lsl r0, r0, #2
ldr r0, [r1, r0]
mov r1, #0x6f
- bl FUN_020671BC
+ bl GetMonDataEncrypted
add r7, r0, #0
ldr r0, [r4]
ldr r1, [r0, #0xc]
@@ -18463,7 +18463,7 @@ _02236736:
lsl r0, r0, #2
ldr r0, [r1, r0]
mov r1, #0x70
- bl FUN_020671BC
+ bl GetMonDataEncrypted
str r0, [sp, #0x1c]
ldr r0, [r4]
ldr r1, [r0, #0xc]
@@ -18472,7 +18472,7 @@ _02236736:
ldr r0, [r1, r0]
mov r1, #0
add r2, r1, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
str r0, [sp, #8]
ldr r0, [r4]
lsl r5, r5, #2
@@ -18480,14 +18480,14 @@ _02236736:
mov r1, #5
ldr r0, [r0, r5]
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
str r0, [sp, #0x18]
ldr r0, [r4]
mov r1, #0x6f
ldr r0, [r0, #0xc]
mov r2, #0
ldr r0, [r0, r5]
- bl FUN_020671BC
+ bl GetMonDataEncrypted
str r0, [sp, #0x14]
ldr r0, [r4]
ldr r0, [r0, #0xc]
@@ -18499,14 +18499,14 @@ _02236736:
ldr r0, [r0, #0xc]
mov r2, #0
ldr r0, [r0, r5]
- bl FUN_020671BC
+ bl GetMonDataEncrypted
str r0, [sp, #0xc]
ldr r0, [r4]
mov r1, #0
ldr r0, [r0, #0xc]
add r2, r1, #0
ldr r0, [r0, r5]
- bl FUN_020671BC
+ bl GetMonDataEncrypted
str r0, [sp, #4]
mov r2, #0x47
mov r0, #0
@@ -19010,7 +19010,7 @@ _02236BD0:
lsl r0, r0, #2
ldr r0, [r2, r0]
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
strh r0, [r4, #0x10]
ldr r0, _02236CF0 ; =0x000005DD
bl FUN_020054C8
@@ -23971,7 +23971,7 @@ _02239080:
ldr r0, [r0, r1]
add r1, r4, #0
add r1, #0x36
- bl FUN_020671BC
+ bl GetMonDataEncrypted
strh r0, [r5]
mov r0, #0x23
lsl r0, r0, #4
@@ -27801,7 +27801,7 @@ _0223AC68:
lsl r0, r0, #2
ldr r0, [r1, r0]
mov r1, #5
- bl FUN_020671BC
+ bl GetMonDataEncrypted
add r2, r0, #0
mov r0, #0x7f
str r0, [sp]
@@ -43888,7 +43888,7 @@ _022428E6:
str r0, [sp, #0x10]
ldr r0, [r1, r0]
mov r1, #0x76
- bl FUN_020671BC
+ bl GetMonDataEncrypted
add r0, r5, #1
lsl r0, r0, #4
str r0, [sp, #0x14]
@@ -47346,7 +47346,7 @@ _022443A4:
lsl r0, r0, #2
ldr r0, [r1, r0]
mov r1, #5
- bl FUN_020671BC
+ bl GetMonDataEncrypted
add r2, r0, #0
mov r0, #0x7f
str r0, [sp]
diff --git a/arm9/modules/14/asm/module_14.s b/arm9/modules/14/asm/module_14.s
index 22ebe973..c0d531a8 100644
--- a/arm9/modules/14/asm/module_14.s
+++ b/arm9/modules/14/asm/module_14.s
@@ -4718,13 +4718,13 @@ _021D9B9E:
add r0, r4, #0
mov r1, #0xac
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
cmp r0, #0
bne _021D9BD2
add r0, r4, #0
mov r1, #0xa2
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
cmp r0, #0
beq _021D9BD2
add r5, r5, #1
@@ -9216,7 +9216,7 @@ MOD14_021DBEAC: ; 0x021DBEAC
strb r0, [r4, #0xf]
ldrh r0, [r4, #4]
mov r1, #9
- bl FUN_0206851C
+ bl AllocAndLoadMonPersonal
add r7, r0, #0
add r0, r5, #0
mov r1, #8
@@ -9225,7 +9225,7 @@ MOD14_021DBEAC: ; 0x021DBEAC
add r2, r0, #0
ldrh r1, [r4, #4]
add r0, r7, #0
- bl FUN_02068824
+ bl CalcMonLevelInternal
strb r0, [r4, #0xa]
add r0, r5, #0
mov r1, #0xb
@@ -9320,7 +9320,7 @@ _021DBFB8:
ldr r2, [r4, #0x24]
bl FUN_0200A8E0
add r0, r7, #0
- bl FUN_02068640
+ bl FreeMonPersonal
ldr r1, [sp]
add r0, r5, #0
bl FUN_02066A94
@@ -9378,112 +9378,112 @@ _021DC034:
ldr r0, [r5, r0]
mov r1, #0xa3
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
strh r0, [r4, #0xa]
mov r0, #0x1a
lsl r0, r0, #4
ldr r0, [r5, r0]
mov r1, #0xa4
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
strh r0, [r4, #0xc]
mov r0, #0x1a
lsl r0, r0, #4
ldr r0, [r5, r0]
mov r1, #0xa5
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
strh r0, [r4, #0xe]
mov r0, #0x1a
lsl r0, r0, #4
ldr r0, [r5, r0]
mov r1, #0xa7
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
strh r0, [r4, #0x10]
mov r0, #0x1a
lsl r0, r0, #4
ldr r0, [r5, r0]
mov r1, #0xa8
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
strh r0, [r4, #0x12]
mov r0, #0x1a
lsl r0, r0, #4
ldr r0, [r5, r0]
mov r1, #0xa6
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
strh r0, [r4, #0x14]
mov r0, #0x1a
lsl r0, r0, #4
ldr r0, [r5, r0]
mov r1, #0x13
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
strh r0, [r4, #0x16]
mov r0, #0x1a
lsl r0, r0, #4
ldr r0, [r5, r0]
mov r1, #0x14
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
strh r0, [r4, #0x18]
mov r0, #0x1a
lsl r0, r0, #4
ldr r0, [r5, r0]
mov r1, #0x15
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
strh r0, [r4, #0x1a]
mov r0, #0x1a
lsl r0, r0, #4
ldr r0, [r5, r0]
mov r1, #0x16
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
strh r0, [r4, #0x1c]
mov r0, #0x1a
lsl r0, r0, #4
ldr r0, [r5, r0]
mov r1, #0x17
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
strh r0, [r4, #0x1e]
mov r0, #0x1a
lsl r0, r0, #4
ldr r0, [r5, r0]
mov r1, #0x36
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
strh r0, [r4, #0x20]
mov r0, #0x1a
lsl r0, r0, #4
ldr r0, [r5, r0]
mov r1, #0x37
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
strh r0, [r4, #0x22]
mov r0, #0x1a
lsl r0, r0, #4
ldr r0, [r5, r0]
mov r1, #0x38
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
strh r0, [r4, #0x24]
mov r0, #0x1a
lsl r0, r0, #4
ldr r0, [r5, r0]
mov r1, #0x39
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
strh r0, [r4, #0x26]
mov r0, #0x1a
lsl r0, r0, #4
ldr r0, [r5, r0]
mov r1, #0x70
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
strb r0, [r4, #7]
mov r0, #0x1a
lsl r0, r0, #4
@@ -10230,7 +10230,7 @@ _021DC5C4:
ldr r0, [r5, #0x4c]
add r1, r4, #0
add r2, r6, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
pop {r4, r5, r6, pc}
thumb_func_start MOD14_021DC5D0
@@ -10251,7 +10251,7 @@ _021DC5EC:
ldr r0, [r5, #8]
add r1, r4, #0
add r2, r6, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
pop {r4, r5, r6, pc}
thumb_func_start MOD14_021DC5F8
@@ -21843,7 +21843,7 @@ _021E204A:
lsr r1, r0, #0x10
add r0, r7, #0
mov r2, #0x1b
- bl FUN_02068654
+ bl GetMonBaseStat_HandleFormeConversion
lsl r0, r0, #0x18
lsr r1, r0, #0x18
b _021E20AA
diff --git a/arm9/modules/16/asm/module_16.s b/arm9/modules/16/asm/module_16.s
index ffd7eb1f..22511fc3 100644
--- a/arm9/modules/16/asm/module_16.s
+++ b/arm9/modules/16/asm/module_16.s
@@ -30379,12 +30379,12 @@ MOD16_021E5554: ; 0x021E5554
ldr r1, [sp, #0x30]
add r0, r7, #0
mov r2, #6
- bl FUN_02068654
+ bl GetMonBaseStat_HandleFormeConversion
add r6, r0, #0
ldr r1, [sp, #0x30]
add r0, r7, #0
mov r2, #7
- bl FUN_02068654
+ bl GetMonBaseStat_HandleFormeConversion
add r7, r0, #0
add r0, r6, #0
bl MOD16_021E563C
@@ -32759,7 +32759,7 @@ MOD16_021E66F4: ; 0x021E66F4
add r4, r1, #0
mov r1, #0x12
add r5, r0, #0
- bl FUN_02068678
+ bl GetMonBaseStat
cmp r0, #0
bne _021E6708
mov r0, #1
@@ -51043,7 +51043,7 @@ MOD16_021EEFA4: ; 0x021EEFA4
ldr r0, [r4, #0x10]
mov r1, #5
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
mov r1, #0x6f
lsl r1, r1, #2
str r0, [r5, r1]
@@ -51949,11 +51949,11 @@ MOD16_021EF6E0: ; 0x021EF6E0
mov r1, #6
str r2, [sp]
str r3, [sp, #4]
- bl FUN_02068678
+ bl GetMonBaseStat
add r4, r0, #0
ldr r0, [sp, #0x60]
mov r1, #7
- bl FUN_02068678
+ bl GetMonBaseStat
add r6, r0, #0
add r0, r4, #0
bl MOD16_021E563C
@@ -55028,19 +55028,19 @@ _021F0E68:
beq _021F0EB6
mov r1, #0xa2
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
cmp r0, #0
beq _021F0EB6
add r0, r6, #0
mov r1, #0xad
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
cmp r0, #0
beq _021F0EB6
add r0, r6, #0
mov r1, #0xad
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
ldr r1, _021F0ECC ; =0x000001EE
cmp r0, r1
beq _021F0EB6
@@ -55170,11 +55170,11 @@ _021F0F88:
add r7, r5, r3
ldrh r0, [r7, r6]
mov r1, #0x18
- bl FUN_02068678
+ bl GetMonBaseStat
add r4, r0, #0
ldrh r0, [r7, r6]
mov r1, #0x19
- bl FUN_02068678
+ bl GetMonBaseStat
add r6, r0, #0
cmp r4, #0
beq _021F0FC2
@@ -55281,12 +55281,12 @@ _021F1046:
ldrh r0, [r6, r1]
str r1, [sp]
mov r1, #0x18
- bl FUN_02068678
+ bl GetMonBaseStat
add r4, r0, #0
ldr r0, [sp]
mov r1, #0x19
ldrh r0, [r6, r0]
- bl FUN_02068678
+ bl GetMonBaseStat
cmp r4, #0
beq _021F108C
cmp r0, #0
@@ -55578,26 +55578,26 @@ _021F128E:
beq _021F12EA
mov r1, #0xa2
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
cmp r0, #0
beq _021F12EA
add r0, r4, #0
mov r1, #0xad
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
cmp r0, #0
beq _021F12EA
add r0, r4, #0
mov r1, #0xad
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
ldr r1, _021F1300 ; =0x000001EE
cmp r0, r1
beq _021F12EA
add r0, r4, #0
mov r1, #0x9f
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
ldr r1, [sp, #0x10]
tst r0, r1
beq _021F12EA
@@ -55693,26 +55693,26 @@ _021F1382:
beq _021F13DE
mov r1, #0xa2
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
cmp r0, #0
beq _021F13DE
add r0, r4, #0
mov r1, #0xad
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
cmp r0, #0
beq _021F13DE
add r0, r4, #0
mov r1, #0xad
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
ldr r1, _021F13F4 ; =0x000001EE
cmp r0, r1
beq _021F13DE
add r0, r4, #0
mov r1, #0x9f
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
ldr r1, [sp, #0x10]
tst r0, r1
bne _021F13DE
@@ -57075,12 +57075,12 @@ _021F1E2C:
beq _021F1E66
mov r1, #0xa2
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
add r7, r0, #0
ldr r0, [sp, #0xc]
mov r1, #0xa3
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
cmp r7, r0
beq _021F1E66
ldr r0, [sp]
@@ -57149,13 +57149,13 @@ _021F1ED6:
add r0, r5, #0
add r1, #0x3a
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
add r1, r4, #0
add r6, r0, #0
add r0, r5, #0
add r1, #0x42
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
cmp r6, r0
beq _021F1EFE
ldr r0, [sp, #4]
@@ -57555,19 +57555,19 @@ _021F21D8:
mov r1, #0xa2
mov r2, #0
add r6, r0, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
cmp r0, #0
beq _021F22A0
add r0, r6, #0
mov r1, #0xad
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
cmp r0, #0
beq _021F22A0
add r0, r6, #0
mov r1, #0xad
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
ldr r1, _021F22C0 ; =0x000001EE
cmp r0, r1
beq _021F22A0
@@ -57579,7 +57579,7 @@ _021F221E:
add r0, r6, #0
add r1, #0x36
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
strh r0, [r5]
add r4, r4, #1
add r5, r5, #2
@@ -57592,7 +57592,7 @@ _021F2238:
add r0, r6, #0
add r1, #0x46
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
strb r0, [r4]
add r5, r5, #1
add r4, r4, #1
@@ -57601,12 +57601,12 @@ _021F2238:
add r0, r6, #0
mov r1, #6
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
add r4, r0, #0
add r0, r6, #0
mov r1, #0xa
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
add r1, sp, #0x44
str r1, [sp]
lsl r1, r4, #0x10
@@ -60065,7 +60065,7 @@ _021F3486:
add r0, r4, #0
mov r1, #6
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
add r1, r0, #0
lsl r1, r1, #0x10
add r0, r6, #0
@@ -60078,7 +60078,7 @@ _021F34A2:
add r0, r4, #0
mov r1, #6
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
add r1, r0, #0
lsl r1, r1, #0x10
add r0, r6, #0
@@ -60166,32 +60166,32 @@ _021F3530:
add r0, r4, #0
mov r1, #0x4b
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
add r5, r0, #0
add r0, r4, #0
mov r1, #0x4a
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
add r6, r0, #0
add r0, r4, #0
mov r1, #0x49
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
add r7, r0, #0
add r0, r4, #0
mov r1, #0x48
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
str r0, [sp, #4]
add r0, r4, #0
mov r1, #0x46
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
str r0, [sp, #8]
add r0, r4, #0
mov r1, #0x47
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
add r1, r0, #0
lsl r2, r6, #0x1f
lsl r0, r5, #0x1f
@@ -60398,19 +60398,19 @@ _021F36EC:
mov r1, #0xa2
mov r2, #0
add r6, r0, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
cmp r0, #0
beq _021F37DE
add r0, r6, #0
mov r1, #0xad
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
cmp r0, #0
beq _021F37DE
add r0, r6, #0
mov r1, #0xad
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
ldr r1, _021F3804 ; =0x000001EE
cmp r0, r1
beq _021F37DE
@@ -60426,7 +60426,7 @@ _021F3730:
add r0, r6, #0
add r1, #0x36
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
lsl r0, r0, #0x10
lsr r0, r0, #0x10
str r0, [sp, #0x1c]
@@ -60444,7 +60444,7 @@ _021F3730:
add r0, r6, #0
mov r1, #0xa
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
str r0, [sp, #0x30]
add r0, r5, #0
add r1, r4, #0
@@ -60700,19 +60700,19 @@ _021F3956:
mov r1, #0xa2
mov r2, #0
str r0, [sp, #0x50]
- bl FUN_020671BC
+ bl GetMonDataEncrypted
cmp r0, #0
beq _021F39BC
ldr r0, [sp, #0x50]
mov r1, #0xad
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
cmp r0, #0
beq _021F39BC
ldr r0, [sp, #0x50]
mov r1, #0xad
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
ldr r1, _021F3B84 ; =0x000001EE
cmp r0, r1
beq _021F39BC
@@ -60750,7 +60750,7 @@ _021F39C2:
ldr r0, [sp, #0x50]
add r1, #0x36
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
lsl r0, r0, #0x10
lsr r7, r0, #0x10
ldr r0, [sp, #0x14]
@@ -60780,7 +60780,7 @@ _021F39F2:
ldr r0, [sp, #0x50]
mov r1, #0xa
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
str r0, [sp, #0x70]
add r0, r5, #0
add r1, r6, #0
@@ -60844,7 +60844,7 @@ _021F3A7E:
ldr r0, [sp, #0x50]
mov r1, #0xa
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
str r0, [sp, #0x80]
add r0, r5, #0
add r1, r4, #0
@@ -60934,19 +60934,19 @@ _021F3B3C:
mov r1, #0xa2
mov r2, #0
str r0, [sp, #0x20]
- bl FUN_020671BC
+ bl GetMonDataEncrypted
cmp r0, #0
beq _021F3BBE
ldr r0, [sp, #0x20]
mov r1, #0xad
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
cmp r0, #0
beq _021F3BBE
ldr r0, [sp, #0x20]
mov r1, #0xad
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
ldr r1, _021F3B84 ; =0x000001EE
cmp r0, r1
beq _021F3BBE
@@ -60993,7 +60993,7 @@ _021F3BC4:
ldr r0, [sp, #0x20]
add r1, #0x36
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
lsl r0, r0, #0x10
lsr r7, r0, #0x10
ldr r0, [sp, #0x14]
@@ -61023,7 +61023,7 @@ _021F3BF4:
ldr r0, [sp, #0x20]
mov r1, #0xa
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
str r0, [sp, #0x90]
add r0, r5, #0
add r1, r6, #0
@@ -61089,7 +61089,7 @@ _021F3C82:
ldr r0, [sp, #0x20]
mov r1, #0xa
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
str r0, [sp, #0xa0]
add r0, r5, #0
add r1, r4, #0
@@ -61455,19 +61455,19 @@ _021F3F62:
mov r1, #0xa2
mov r2, #0
add r4, r0, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
cmp r0, #0
beq _021F3FE6
add r0, r4, #0
mov r1, #0xad
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
cmp r0, #0
beq _021F3FE6
add r0, r4, #0
mov r1, #0xad
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
ldr r1, _021F3FFC ; =0x000001EE
cmp r0, r1
beq _021F3FE6
@@ -61490,7 +61490,7 @@ _021F3F62:
add r0, r4, #0
mov r1, #0xa
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
lsl r0, r0, #0x18
lsr r1, r0, #0x18
ldr r0, [sp, #0x10]
@@ -61608,19 +61608,19 @@ _021F4094:
mov r1, #0xa2
mov r2, #0
add r6, r0, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
cmp r0, #0
beq _021F40FA
add r0, r6, #0
mov r1, #0xad
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
cmp r0, #0
beq _021F40FA
add r0, r6, #0
mov r1, #0xad
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
ldr r1, _021F4254 ; =0x000001EE
cmp r0, r1
beq _021F40FA
@@ -61669,12 +61669,12 @@ _021F40FC:
add r0, r6, #0
mov r1, #0xa
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
str r0, [sp, #0x40]
add r0, r6, #0
mov r1, #6
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
add r1, r0, #0
lsl r1, r1, #0x10
add r0, r5, #0
@@ -61685,12 +61685,12 @@ _021F40FC:
add r0, r6, #0
mov r1, #0xb0
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
add r7, r0, #0
add r0, r6, #0
mov r1, #0xb1
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
ldr r1, [sp, #0x40]
ldr r2, [sp, #0x38]
str r1, [sp]
@@ -61715,7 +61715,7 @@ _021F4182:
add r0, r6, #0
add r1, #0x36
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
lsl r0, r0, #0x10
lsr r0, r0, #0x10
str r0, [sp, #0x20]
@@ -61733,7 +61733,7 @@ _021F4182:
add r0, r6, #0
mov r1, #0xa
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
ldr r1, _021F425C ; =0x0000306C
str r0, [sp, #0x4c]
ldrh r1, [r4, r1]
@@ -62080,19 +62080,19 @@ _021F445C:
mov r1, #0xa2
mov r2, #0
add r4, r0, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
cmp r0, #0
beq _021F44BA
add r0, r4, #0
mov r1, #0xad
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
cmp r0, #0
beq _021F44BA
add r0, r4, #0
mov r1, #0xad
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
ldr r1, _021F4598 ; =0x000001EE
cmp r0, r1
beq _021F44BA
@@ -62308,7 +62308,7 @@ _021F462E:
bl MOD11_02230014
mov r1, #0xa2
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
cmp r0, #0
beq _021F4664
ldr r0, _021F4694 ; =0x0000219C
@@ -62420,7 +62420,7 @@ _021F4704:
mov r1, #0xad
mov r2, #0
str r0, [sp, #0x68]
- bl FUN_020671BC
+ bl GetMonDataEncrypted
lsl r0, r0, #0x10
lsr r1, r0, #0x10
beq _021F47E0
@@ -62430,7 +62430,7 @@ _021F4704:
ldr r0, [sp, #0x68]
mov r1, #0xa2
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
cmp r0, #0
beq _021F47E0
add r0, r4, #0
@@ -62477,14 +62477,14 @@ _021F4704:
ldr r0, [sp, #0x68]
mov r1, #0xb0
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
lsl r0, r0, #0x18
lsr r0, r0, #0x18
str r0, [sp, #0x58]
ldr r0, [sp, #0x68]
mov r1, #0xb1
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
lsl r0, r0, #0x18
lsr r0, r0, #0x18
str r0, [sp, #0x54]
@@ -62542,7 +62542,7 @@ _021F480E:
add r0, r4, #0
add r1, #0x36
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
lsl r0, r0, #0x10
lsr r0, r0, #0x10
str r0, [sp, #0x3c]
@@ -62560,7 +62560,7 @@ _021F480E:
add r0, r4, #0
mov r1, #0xa
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
str r0, [sp, #0x70]
add r0, r5, #0
add r1, r6, #0
@@ -62648,7 +62648,7 @@ _021F48E0:
mov r1, #0xad
mov r2, #0
str r0, [sp, #0x1c]
- bl FUN_020671BC
+ bl GetMonDataEncrypted
lsl r0, r0, #0x10
lsr r1, r0, #0x10
beq _021F4900
@@ -62661,7 +62661,7 @@ _021F4902:
ldr r0, [sp, #0x1c]
mov r1, #0xa2
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
cmp r0, #0
beq _021F4A06
ldr r0, _021F4A20 ; =0x0000219C
@@ -62703,7 +62703,7 @@ _021F4954:
ldr r0, [sp, #0x1c]
add r1, #0x36
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
lsl r0, r0, #0x10
lsr r0, r0, #0x10
str r0, [sp, #0x8c]
@@ -62876,19 +62876,19 @@ _021F4AA8:
mov r1, #0xa2
mov r2, #0
add r6, r0, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
cmp r0, #0
beq _021F4AE6
add r0, r6, #0
mov r1, #0xad
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
cmp r0, #0
beq _021F4AE6
add r0, r6, #0
mov r1, #0xad
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
ldr r1, _021F4D70 ; =0x000001EE
cmp r0, r1
beq _021F4AE6
diff --git a/arm9/modules/17/asm/module_17.s b/arm9/modules/17/asm/module_17.s
index 633c2690..ab858387 100644
--- a/arm9/modules/17/asm/module_17.s
+++ b/arm9/modules/17/asm/module_17.s
@@ -8856,7 +8856,7 @@ MOD17_021DB700: ; 0x021DB700
add r0, r4, #0
mov r1, #5
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
add r0, r6, #0
add r1, r4, #0
mov r2, #2
diff --git a/arm9/modules/27/asm/module_27.s b/arm9/modules/27/asm/module_27.s
index 0a04d74a..6cfd48bd 100644
--- a/arm9/modules/27/asm/module_27.s
+++ b/arm9/modules/27/asm/module_27.s
@@ -313,27 +313,27 @@ _02254A62:
add r0, r4, #0
mov r1, #5
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
strh r0, [r5, #8]
add r0, r4, #0
mov r1, #0xa2
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
strh r0, [r5, #0xa]
add r0, r4, #0
mov r1, #0xa3
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
strh r0, [r5, #0xc]
add r0, r4, #0
mov r1, #6
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
strh r0, [r5, #0xe]
add r0, r4, #0
mov r1, #0x9f
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
cmp r0, #0
beq _02254ABC
mov r0, #1
@@ -345,12 +345,12 @@ _02254ABE:
add r0, r4, #0
mov r1, #0x4c
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
strb r0, [r5, #0x12]
add r0, r4, #0
mov r1, #0x70
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
strb r0, [r5, #0x13]
add r0, r4, #0
add r1, r7, #0
diff --git a/arm9/modules/28/asm/module_28.s b/arm9/modules/28/asm/module_28.s
index 8a9f5379..89222d17 100644
--- a/arm9/modules/28/asm/module_28.s
+++ b/arm9/modules/28/asm/module_28.s
@@ -86,18 +86,18 @@ _022548D6:
mov r1, #0x4c
mov r2, #0
add r5, r0, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
cmp r0, #0
bne _02254962
add r0, r5, #0
mov r1, #5
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
strh r0, [r4, #0xc]
add r0, r5, #0
mov r1, #0x70
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
strh r0, [r4, #0x10]
add r0, r5, #0
bl FUN_0206B688
@@ -105,7 +105,7 @@ _022548D6:
add r0, r5, #0
mov r1, #9
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
bl MOD28_0225498C
cmp r0, #6
bhi _02254944
@@ -760,7 +760,7 @@ _02254DDC:
_02254DE0:
ldrh r0, [r4, #8]
mov r1, #0x1c
- bl FUN_02068678
+ bl GetMonBaseStat
mov r1, #0x59
lsl r1, r1, #2
strb r0, [r5, r1]
diff --git a/arm9/modules/35/asm/module_35.s b/arm9/modules/35/asm/module_35.s
index 135c8922..727fced8 100644
--- a/arm9/modules/35/asm/module_35.s
+++ b/arm9/modules/35/asm/module_35.s
@@ -925,7 +925,7 @@ _02254F00:
beq _02254F36
ldrh r0, [r6, #0x1c]
mov r1, #0x1c
- bl FUN_02068678
+ bl GetMonBaseStat
cmp r0, #0
ldr r0, [r7, #0x24]
beq _02254F30
diff --git a/arm9/modules/39/asm/module_39.s b/arm9/modules/39/asm/module_39.s
index 29b974a0..0f1fecfb 100644
--- a/arm9/modules/39/asm/module_39.s
+++ b/arm9/modules/39/asm/module_39.s
@@ -85,12 +85,12 @@ _022548CC:
add r0, r7, #0
mov r1, #5
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
strh r0, [r5, #0x1c]
add r0, r7, #0
mov r1, #0x70
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
strh r0, [r5, #0x28]
ldr r0, [sp, #4]
str r7, [r4, #0x48]
@@ -1008,7 +1008,7 @@ MOD39_02254FA4: ; 0x02254FA4
_02254FBA:
add r0, r7, #0
mov r1, #0x1c
- bl FUN_02068678
+ bl GetMonBaseStat
cmp r0, #0
beq _02254FCA
mov r1, #4
diff --git a/arm9/modules/56/asm/module_56.s b/arm9/modules/56/asm/module_56.s
index 095e72dc..6b14026a 100644
--- a/arm9/modules/56/asm/module_56.s
+++ b/arm9/modules/56/asm/module_56.s
@@ -225,13 +225,13 @@ _02211FA2:
mov r1, #0xa2
mov r2, #0
add r6, r0, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
cmp r0, #0
beq _02211FC8
add r0, r6, #0
mov r1, #0x4c
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
cmp r0, #0
bne _02211FC8
add r5, r5, #1
@@ -2005,13 +2005,13 @@ _02212E52:
mov r1, #5
mov r2, #0
add r7, r0, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
ldr r1, [r5, #4]
mov r2, #0
strh r0, [r1, r4]
add r0, r7, #0
mov r1, #6
- bl FUN_020671BC
+ bl GetMonDataEncrypted
ldr r1, [r5, #4]
add r6, r6, #1
add r1, r1, r4
diff --git a/arm9/modules/62/asm/module_62.s b/arm9/modules/62/asm/module_62.s
index 44336f0b..33be95e4 100644
--- a/arm9/modules/62/asm/module_62.s
+++ b/arm9/modules/62/asm/module_62.s
@@ -2218,17 +2218,17 @@ _0222E5EC:
add r0, r7, #0
mov r1, #5
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
str r0, [sp, #0x10]
add r0, r7, #0
mov r1, #0x4c
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
str r0, [sp, #0x14]
add r0, r7, #0
mov r1, #0x70
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
add r1, r0, #0
ldr r0, [sp, #0x10]
ldr r2, [sp, #0x14]
@@ -3004,7 +3004,7 @@ MOD62_0222EC54: ; 0x0222EC54
ldr r0, [r0, #4]
mov r1, #0xa1
add r2, sp, #0xc
- bl FUN_02067830
+ bl SetBoxMonDataEncrypted
_0222EC80:
cmp r7, #0xff
beq _0222EC9A
@@ -3017,7 +3017,7 @@ _0222EC80:
add r0, r1, r0
ldr r0, [r0, #4]
mov r1, #0xa1
- bl FUN_02067830
+ bl SetBoxMonDataEncrypted
_0222EC9A:
add r2, r5, #4
ldr r1, [r2, r6]
@@ -4492,7 +4492,7 @@ _0222F83E:
mov r1, #0x4c
add r0, r7, #0
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
cmp r0, #0
bne _0222F85C
ldr r1, _0222F86C ; =0x00000428
@@ -5701,7 +5701,7 @@ MOD62_022301AC: ; 0x022301AC
mov r1, #5
ldr r0, [r5, r0]
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
add r4, r0, #0
ldr r0, _02230214 ; =0x00000428
mov r1, #2
@@ -5749,7 +5749,7 @@ MOD62_0223021C: ; 0x0223021C
mov r1, #5
ldr r0, [r5, r0]
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
add r4, r0, #0
ldr r0, _02230268 ; =0x00000428
ldr r0, [r5, r0]
@@ -6199,7 +6199,7 @@ _0223059A:
str r0, [sp, #0x9c]
ldr r0, _02230724 ; =0x00000428
ldr r0, [r4, r0]
- bl FUN_020671BC
+ bl GetMonDataEncrypted
str r0, [sp, #0x8c]
add r0, sp, #0x7c
bl MOD08_02229918
@@ -6235,12 +6235,12 @@ _022305E2:
mov r1, #0xa1
ldr r0, [r4, r0]
add r2, sp, #0x18
- bl FUN_02067830
+ bl SetBoxMonDataEncrypted
ldr r0, _02230724 ; =0x00000428
mov r1, #0xaa
ldr r0, [r4, r0]
add r2, sp, #0x64
- bl FUN_02067830
+ bl SetBoxMonDataEncrypted
mov r0, #0x35
add r1, sp, #0x58
bl MOD08_02228218
@@ -6396,7 +6396,7 @@ _0223072C:
str r0, [sp, #0x50]
ldr r0, [r4, r1]
mov r1, #0x9a
- bl FUN_020671BC
+ bl GetMonDataEncrypted
str r0, [sp, #0x40]
add r0, sp, #0x30
bl MOD08_02229918
@@ -6531,7 +6531,7 @@ _02230860:
add r2, r0, #0
add r0, r5, #0
mov r1, #0xaa
- bl FUN_02067830
+ bl SetBoxMonDataEncrypted
_022308A8:
mov r0, #0xf5
mov r1, #8
@@ -7091,7 +7091,7 @@ MOD62_02230D38: ; 0x02230D38
ldr r0, [r0, #4]
mov r1, #0xa1
add r2, sp, #0
- bl FUN_02067830
+ bl SetBoxMonDataEncrypted
_02230D5C:
mov r0, #0xff
str r0, [r4, r6]
diff --git a/arm9/modules/65/asm/module_65.s b/arm9/modules/65/asm/module_65.s
index 437fc4a6..22b307e2 100644
--- a/arm9/modules/65/asm/module_65.s
+++ b/arm9/modules/65/asm/module_65.s
@@ -3372,7 +3372,7 @@ MOD65_021D8F34: ; 0x021D8F34
str r0, [r4, #0x30]
ldr r0, [r4, #0x10]
ldr r0, [r0]
- bl FUN_020671BC
+ bl GetMonDataEncrypted
strh r0, [r4, #0x34]
ldr r0, [r4, #0x10]
ldr r0, [r0]
@@ -3388,7 +3388,7 @@ MOD65_021D8F34: ; 0x021D8F34
strb r0, [r1]
ldrh r0, [r4, #0x34]
mov r1, #0x1c
- bl FUN_02068678
+ bl GetMonBaseStat
mov r1, #1
eor r1, r0
add r0, r4, #0
@@ -3402,7 +3402,7 @@ MOD65_021D8F34: ; 0x021D8F34
ldr r2, [r4, #0x3c]
ldr r0, [r0]
mov r1, #0x76
- bl FUN_020671BC
+ bl GetMonDataEncrypted
add r1, r4, #0
ldr r0, [r4, #0x10]
add r1, #0x36
diff --git a/arm9/modules/69/asm/module_69.s b/arm9/modules/69/asm/module_69.s
index 5ab71cc1..f12e6191 100644
--- a/arm9/modules/69/asm/module_69.s
+++ b/arm9/modules/69/asm/module_69.s
@@ -64,7 +64,7 @@ _0222D63A:
bl FUN_0206B9B0
mov r1, #0x4c
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
cmp r0, #0
bne _0222D65E
ldr r0, [r4, #4]
@@ -1233,14 +1233,14 @@ _0222DF98:
ldr r0, [sp, #0x2c]
mov r1, #5
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
mov r1, #0x81
lsl r1, r1, #2
str r0, [r5, r1]
mov r1, #0
ldr r0, [sp, #0x2c]
add r2, r1, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
str r4, [sp]
str r0, [sp, #4]
mov r0, #1
@@ -1268,7 +1268,7 @@ _0222DF98:
mov r1, #0
ldr r0, [sp, #0x2c]
add r2, r1, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
str r4, [sp]
str r0, [sp, #4]
mov r0, #1
@@ -2418,7 +2418,7 @@ _0222E982:
ldr r0, [r5, #0x24]
mov r1, #0x98
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
add r2, r0, #0
ldr r0, [r5, #0x14]
mov r1, #0
@@ -2480,7 +2480,7 @@ _0222E9FC:
ldr r0, [r4, #0x24]
ldr r2, [r4, #0x1c]
mov r1, #0x76
- bl FUN_020671BC
+ bl GetMonDataEncrypted
add r0, r4, #0
mov r1, #0x48
bl MOD69_0222E89C
@@ -4042,7 +4042,7 @@ MOD69_0222F6C4: ; 0x0222F6C4
add r0, r4, #0
mov r1, #0x79
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
sub r1, r0, #1
cmp r1, #2
bhi _0222F6E8
@@ -4063,7 +4063,7 @@ _0222F6FA:
add r0, r4, #0
mov r1, #0x6e
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
cmp r0, #0
beq _0222F70C
mov r5, #6
@@ -4075,7 +4075,7 @@ _0222F70C:
add r0, r4, #0
mov r1, #7
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
cmp r7, r0
beq _0222F726
mov r5, #2
@@ -4089,7 +4089,7 @@ _0222F726:
add r0, r4, #0
ldr r2, [r5, r2]
mov r1, #0x90
- bl FUN_020671BC
+ bl GetMonDataEncrypted
ldr r1, _0222F788 ; =0x00001B54
ldr r0, [r5, r1]
add r1, r1, #4
@@ -4103,7 +4103,7 @@ _0222F750:
add r0, r4, #0
mov r1, #0x98
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
mov r1, #0x7d
lsl r1, r1, #4
cmp r0, r1
@@ -4114,7 +4114,7 @@ _0222F766:
add r0, r4, #0
mov r1, #0x92
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
cmp r0, #0
bne _0222F778
mov r5, #0
diff --git a/arm9/modules/70/asm/module_70.s b/arm9/modules/70/asm/module_70.s
index b27fc3c8..8138a765 100644
--- a/arm9/modules/70/asm/module_70.s
+++ b/arm9/modules/70/asm/module_70.s
@@ -1562,7 +1562,7 @@ _021D80F4:
ldr r0, [r7, r0]
ldr r2, [sp, #0x1c]
mov r1, #0x70
- bl FUN_02067830
+ bl SetBoxMonDataEncrypted
mov r1, #0x66
lsl r1, r1, #2
ldr r1, [r7, r1]
diff --git a/arm9/modules/71/asm/module_71.s b/arm9/modules/71/asm/module_71.s
index 8a04256d..aea60f8b 100644
--- a/arm9/modules/71/asm/module_71.s
+++ b/arm9/modules/71/asm/module_71.s
@@ -1348,37 +1348,37 @@ MOD71_0222E118: ; 0x0222E118
add r0, r5, #0
mov r1, #0x9a
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
strb r0, [r4, #4]
add r0, r5, #0
mov r1, #5
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
strh r0, [r4]
add r0, r5, #0
mov r1, #0x70
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
strb r0, [r4, #6]
add r0, r5, #0
mov r1, #0x4c
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
strb r0, [r4, #5]
add r0, r5, #0
mov r1, #0x6f
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
strh r0, [r4, #8]
add r0, r5, #0
mov r1, #0xa1
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
str r0, [r4, #0xc]
add r0, r5, #0
mov r1, #6
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
add r6, r0, #0
add r0, r5, #0
add r1, r7, #0
@@ -1387,7 +1387,7 @@ MOD71_0222E118: ; 0x0222E118
cmp r0, #0
beq _0222E18E
mov r1, #0x1c
- bl FUN_02068678
+ bl GetMonBaseStat
strh r0, [r4, #0xa]
_0222E18E:
cmp r6, #0
@@ -2647,12 +2647,12 @@ MOD71_0222EBFC: ; 0x0222EBFC
mov r1, #0
add r0, r6, #0
add r2, r1, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
add r7, r0, #0
add r0, r6, #0
mov r1, #5
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
mov r3, #0
str r3, [sp]
mov r1, #0xa
@@ -2697,7 +2697,7 @@ MOD71_0222EC5C: ; 0x0222EC5C
bl FUN_0206B9B0
mov r1, #0x76
add r2, r4, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
add r0, r5, #0
mov r1, #0
bl FUN_02019620
@@ -2731,7 +2731,7 @@ _0222ECB6:
bl FUN_0206B9B0
mov r1, #0x4d
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
cmp r0, #0
bne _0222ECCE
mov r0, #2
@@ -2932,7 +2932,7 @@ _0222EE14:
bl FUN_0206B9B0
mov r1, #0xa0
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
lsl r0, r0, #0x10
lsr r1, r0, #0x10
mov r0, #1
@@ -2978,7 +2978,7 @@ _0222EEA6:
bl FUN_0206B9B0
mov r1, #6
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
add r5, #0x20
lsl r0, r0, #0x10
lsl r4, r5, #4
@@ -6338,7 +6338,7 @@ MOD71_022309E8: ; 0x022309E8
add r0, r4, #0
mov r1, #0x4c
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
cmp r0, #0
bne _02230A40
mov r1, #0x46
@@ -6347,7 +6347,7 @@ MOD71_022309E8: ; 0x022309E8
add r0, r4, #0
mov r1, #9
add r2, sp, #0x10
- bl FUN_02067830
+ bl SetBoxMonDataEncrypted
_02230A40:
bl FUN_02031190
bl FUN_0202DFA4
@@ -6427,7 +6427,7 @@ MOD71_02230AE4: ; 0x02230AE4
add r0, r4, #0
mov r1, #0x74
add r2, sp, #4
- bl FUN_020671BC
+ bl GetMonDataEncrypted
add r0, r5, #0
bl FUN_0202398C
add r7, r0, #0
diff --git a/arm9/modules/76/asm/module_76.s b/arm9/modules/76/asm/module_76.s
index 45716ea0..ba2092da 100644
--- a/arm9/modules/76/asm/module_76.s
+++ b/arm9/modules/76/asm/module_76.s
@@ -801,7 +801,7 @@ MOD76_021D7B2C: ; 0x021D7B2C
ldr r0, [r1]
ldrb r1, [r1, #0x17]
add r1, #0x36
- bl FUN_02067830
+ bl SetBoxMonDataEncrypted
mov r0, #0
str r0, [sp]
ldr r1, [r4]
@@ -809,7 +809,7 @@ MOD76_021D7B2C: ; 0x021D7B2C
ldr r0, [r1]
ldrb r1, [r1, #0x17]
add r1, #0x3e
- bl FUN_02067830
+ bl SetBoxMonDataEncrypted
add r0, r4, #0
bl MOD76_021D8514
mov r1, #0
@@ -820,7 +820,7 @@ MOD76_021D7B2C: ; 0x021D7B2C
ldr r0, [r1]
ldrb r1, [r1, #0x17]
add r1, #0x3a
- bl FUN_02067830
+ bl SetBoxMonDataEncrypted
ldr r0, [r4]
mov r1, #0
strb r1, [r0, #0x16]
@@ -2028,7 +2028,7 @@ MOD76_021D8524: ; 0x021D8524
ldr r0, [r1]
ldrb r1, [r1, #0x17]
add r1, #0x36
- bl FUN_020671BC
+ bl GetMonDataEncrypted
lsl r0, r0, #0x10
lsr r0, r0, #0x10
pop {r3, pc}
@@ -2131,7 +2131,7 @@ _021D85EC:
ldr r0, [r0]
add r1, #0x36
add r2, r6, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
cmp r0, #0
beq _021D8608
add r0, r4, #1
diff --git a/arm9/modules/80/asm/module_80.s b/arm9/modules/80/asm/module_80.s
index c8b610a8..ba3c09fe 100644
--- a/arm9/modules/80/asm/module_80.s
+++ b/arm9/modules/80/asm/module_80.s
@@ -5058,12 +5058,12 @@ MOD80_0222FD88: ; 0x0222FD88
mov r1, #0
add r0, r5, #0
add r2, r1, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
add r6, r0, #0
add r0, r5, #0
mov r1, #5
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
mov r3, #0
str r3, [sp]
mov r1, #0xa
@@ -6811,7 +6811,7 @@ _02230BD4:
cmp r0, #0
beq _02230C04
mov r1, #0x12
- bl FUN_02068678
+ bl GetMonBaseStat
mov r1, #0xfe
lsl r1, r1, #4
ldr r2, [r4, r1]
@@ -7821,7 +7821,7 @@ _0223138C:
bl MOD80_02233EA4
add r0, r5, #0
mov r1, #0x12
- bl FUN_02068678
+ bl GetMonBaseStat
mov r1, #0xfe
lsl r1, r1, #4
ldr r2, [r4, r1]
@@ -9979,7 +9979,7 @@ _022325CE:
bl FUN_0206B9B0
mov r1, #0xa1
add r2, r4, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
cmp r0, #0
beq _022325FE
mov r0, #0xe
@@ -10219,7 +10219,7 @@ _022327CE:
bl FUN_0206B9B0
mov r1, #0xa1
add r2, r4, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
cmp r0, #0
beq _022327FE
mov r0, #0xb
@@ -11076,7 +11076,7 @@ _02232E4A:
ldr r0, [sp, #0x24]
mov r1, #0xa1
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
cmp r0, #0
ldr r0, _02232F90 ; =0x00000E54
beq _02232EB4
@@ -11524,7 +11524,7 @@ MOD80_022331F8: ; 0x022331F8
push {r3, lr}
mov r1, #6
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
lsl r0, r0, #0x10
lsr r0, r0, #0x10
bl FUN_0206EA98
@@ -12478,7 +12478,7 @@ _0223398C:
bl FUN_020054C8
add r0, r5, #0
mov r1, #0x12
- bl FUN_02068678
+ bl GetMonBaseStat
mov r1, #0xfe
lsl r1, r1, #4
ldr r2, [r4, r1]
@@ -16152,7 +16152,7 @@ MOD80_022355F0: ; 0x022355F0
mov r1, #6
mov r2, #0
add r6, r3, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
ldr r0, [r5]
add r1, r4, #0
ldr r0, [r0, #0x20]
@@ -16175,7 +16175,7 @@ _02235624:
add r0, r4, #0
mov r1, #9
add r2, sp, #0
- bl FUN_02067830
+ bl SetBoxMonDataEncrypted
ldr r0, [r5]
ldr r0, [r0]
bl MOD80_02235754
@@ -16258,7 +16258,7 @@ _022356D2:
add r0, r4, #0
mov r1, #9
add r2, sp, #0
- bl FUN_02067830
+ bl SetBoxMonDataEncrypted
ldr r0, [sp, #0x20]
cmp r0, #0x12
bne _02235706
@@ -16364,7 +16364,7 @@ MOD80_022357A0: ; 0x022357A0
add r0, r4, #0
mov r1, #0x74
add r2, sp, #4
- bl FUN_020671BC
+ bl GetMonDataEncrypted
add r0, r4, #0
bl FUN_020689E0
add r3, r0, #0
@@ -17434,7 +17434,7 @@ _02235FDE:
mov r1, #6
mov r2, #0
add r7, r0, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
add r3, r0, #0
add r0, sp, #0x30
lsl r3, r3, #0x10
@@ -17502,30 +17502,30 @@ _02236068:
add r0, r7, #0
mov r1, #5
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
add r5, r0, #0
ldr r0, [sp, #0x20]
mov r1, #5
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
cmp r5, r0
bne _022360B6
mov r1, #0
add r0, r7, #0
add r2, r1, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
add r5, r0, #0
mov r1, #0
ldr r0, [sp, #0x20]
add r2, r1, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
cmp r5, r0
beq _02236126
_022360B6:
add r0, r7, #0
mov r1, #6
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
add r3, r0, #0
add r0, sp, #0x2c
lsl r3, r3, #0x10
diff --git a/arm9/modules/81/asm/module_81.s b/arm9/modules/81/asm/module_81.s
index 2398e91b..f852db8d 100644
--- a/arm9/modules/81/asm/module_81.s
+++ b/arm9/modules/81/asm/module_81.s
@@ -199,7 +199,7 @@ MOD81_02237FE8: ; 0x02237FE8
mov r2, #0
bl FUN_020672BC
mov r1, #0x1c
- bl FUN_02068678
+ bl GetMonBaseStat
cmp r0, #0
bne _02238000
mov r0, #1
diff --git a/arm9/modules/83/asm/module_83.s b/arm9/modules/83/asm/module_83.s
index 411e6c20..e63eedb4 100644
--- a/arm9/modules/83/asm/module_83.s
+++ b/arm9/modules/83/asm/module_83.s
@@ -21798,7 +21798,7 @@ MOD83_02237EDC: ; 0x02237EDC
add r1, r0, #0
lsl r0, r4, #0x10
lsr r0, r0, #0x10
- bl FUN_02068800
+ bl CalcMonLevel
pop {r3, r4, r5, pc}
thumb_func_end MOD83_02237EDC
@@ -21819,7 +21819,7 @@ MOD83_02237F04: ; 0x02237F04
add r6, r0, #0
add r0, r5, #0
mov r1, #0x19
- bl FUN_02068678
+ bl GetMonBaseStat
cmp r0, #0
beq _02237F5E
ldr r2, _02237F68 ; =0x0223B4C0
@@ -21830,7 +21830,7 @@ _02237F32:
bne _02237F42
add r0, r5, #0
mov r1, #0x18
- bl FUN_02068678
+ bl GetMonBaseStat
b _02237F4A
_02237F42:
add r4, r4, #1
@@ -21845,12 +21845,12 @@ _02237F4A:
bne _02237F66
add r0, r5, #0
mov r1, #0x18
- bl FUN_02068678
+ bl GetMonBaseStat
pop {r4, r5, r6, pc}
_02237F5E:
add r0, r5, #0
mov r1, #0x18
- bl FUN_02068678
+ bl GetMonBaseStat
_02237F66:
pop {r4, r5, r6, pc}
.align 2, 0
@@ -23908,7 +23908,7 @@ MOD83_02238F94: ; 0x02238F94
mov r1, #0
ldr r0, [sp, #0x20]
add r2, r1, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
mov r3, #0
str r3, [sp]
mov r1, #0xa
@@ -24027,12 +24027,12 @@ _022390C2:
add r0, r4, #0
mov r1, #5
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
add r6, r0, #0
add r0, r4, #0
mov r1, #0x70
mov r2, #0
- bl FUN_020671BC
+ bl GetMonDataEncrypted
add r2, r0, #0
mov r0, #0xe9
lsl r0, r0, #4
diff --git a/files/.gitattributes b/files/.gitattributes
new file mode 100644
index 00000000..6129766f
--- /dev/null
+++ b/files/.gitattributes
@@ -0,0 +1,2 @@
+*.bin binary
+*.txt eol=crlf
diff --git a/files/FILE_339200_area00light.txt b/files/FILE_339200_area00light.txt
index 438ee9c5..f2d44594 100644
--- a/files/FILE_339200_area00light.txt
+++ b/files/FILE_339200_area00light.txt
@@ -1,151 +1,151 @@
-0,
-1,11,11,16,1897,-3600,-466,
-0,0,0,0,0,0,0,
-1,22,18,0,0,0,4096,
-1,31,31,31,0,0,4096,
-14,14,16,
-10,10,10,
-14,14,16,
-8,8,11,
-
-7200,
-1,11,11,16,1897,-3600,-466,
-0,0,0,0,0,0,0,
-1,0,0,8,0,0,4096,
-1,31,31,31,0,0,4096,
-14,14,16,
-10,10,10,
-14,14,16,
-8,8,11,
-
-8100,
-1,12,12,18,692,-3584,-680,
-0,0,0,0,0,0,0,
-1,0,4,8,0,0,4096,
-1,31,31,31,0,0,4096,
-10,10,14,
-13,13,13,
-8,8,14,
-10,10,12,
-
-9000,
-1,12,12,22,-513,-3568,-894,
-0,0,0,0,0,0,0,
-1,0,2,10,0,0,4096,
-1,31,31,31,0,0,4096,
-11,11,13,
-10,10,10,
-10,10,14,
-13,13,14,
-
-14400,
-1,15,15,22,-1718,-3551,-1108,
-0,0,0,0,0,0,0,
-1,0,0,10,0,0,4096,
-1,31,31,31,0,0,4096,
-12,12,12,
-8,8,8,
-12,12,14,
-14,14,18,
-
-20700,
-1,18,18,21,-1826,-3548,-702,
-0,0,0,0,0,0,0,
-1,1,1,11,0,0,4096,
-1,31,31,31,0,0,4096,
-13,13,13,
-9,9,9,
-14,14,15,
-14,14,16,
-
-21600,
-1,22,22,20,-1934,-3548,-296,
-0,0,0,0,0,0,0,
-1,2,2,12,0,0,4096,
-1,31,31,31,0,0,4096,
-15,15,15,
-9,11,11,
-16,16,16,
-14,14,14,
-
-27000,
-1,24,24,20,-2043,-3548,110,
-0,0,0,0,0,0,0,
-1,2,2,13,0,0,4096,
-1,31,31,31,0,0,4096,
-16,16,16,
-10,12,12,
-18,18,18,
-14,14,14,
-
-27900,
-1,22,22,18,-730,-3560,-82,
-0,0,0,0,0,0,0,
-1,4,4,10,0,0,4096,
-1,31,31,31,0,0,4096,
-15,15,15,
-11,12,12,
-17,17,17,
-13,13,13,
-
-30600,
-1,20,18,16,-730,-3560,-82,
-0,0,0,0,0,0,0,
-1,3,4,10,0,0,4096,
-1,31,31,31,0,0,4096,
-15,15,15,
-11,12,12,
-17,17,17,
-12,11,11,
-
-32400,
-1,19,16,12,583,-3580,274,
-0,0,0,0,0,0,0,
-1,3,5,8,0,0,4096,
-1,31,31,31,0,0,4096,
-15,15,15,
-11,12,12,
-17,17,17,
-8,8,7,
-
-33300,
-1,17,13,10,1897,-3600,-466,
-0,0,0,0,0,0,0,
-1,14,6,0,0,0,4096,
-1,31,31,31,0,0,4096,
-14,14,14,
-12,12,12,
-16,16,16,
-9,7,7,
-
-34200,
-1,16,13,10,1897,-3600,-466,
-0,0,0,0,0,0,0,
-1,10,4,0,0,0,4096,
-1,31,31,31,0,0,4096,
-14,14,14,
-12,12,12,
-14,14,16,
-9,8,7,
-
-36000,
-1,11,12,15,1897,-3600,-466,
-0,0,0,0,0,0,0,
-1,10,4,0,0,0,4096,
-1,31,31,31,0,0,4096,
-14,14,14,
-12,12,12,
-14,14,16,
-8,8,9,
-
-43200,
-1,11,11,16,1897,-3600,-466,
-0,0,0,0,0,0,0,
-1,22,18,0,0,0,4096,
-1,31,31,31,0,0,4096,
-14,14,16,
-10,10,10,
-14,14,16,
-8,8,11,
-
+0,
+1,11,11,16,1897,-3600,-466,
+0,0,0,0,0,0,0,
+1,22,18,0,0,0,4096,
+1,31,31,31,0,0,4096,
+14,14,16,
+10,10,10,
+14,14,16,
+8,8,11,
+
+7200,
+1,11,11,16,1897,-3600,-466,
+0,0,0,0,0,0,0,
+1,0,0,8,0,0,4096,
+1,31,31,31,0,0,4096,
+14,14,16,
+10,10,10,
+14,14,16,
+8,8,11,
+
+8100,
+1,12,12,18,692,-3584,-680,
+0,0,0,0,0,0,0,
+1,0,4,8,0,0,4096,
+1,31,31,31,0,0,4096,
+10,10,14,
+13,13,13,
+8,8,14,
+10,10,12,
+
+9000,
+1,12,12,22,-513,-3568,-894,
+0,0,0,0,0,0,0,
+1,0,2,10,0,0,4096,
+1,31,31,31,0,0,4096,
+11,11,13,
+10,10,10,
+10,10,14,
+13,13,14,
+
+14400,
+1,15,15,22,-1718,-3551,-1108,
+0,0,0,0,0,0,0,
+1,0,0,10,0,0,4096,
+1,31,31,31,0,0,4096,
+12,12,12,
+8,8,8,
+12,12,14,
+14,14,18,
+
+20700,
+1,18,18,21,-1826,-3548,-702,
+0,0,0,0,0,0,0,
+1,1,1,11,0,0,4096,
+1,31,31,31,0,0,4096,
+13,13,13,
+9,9,9,
+14,14,15,
+14,14,16,
+
+21600,
+1,22,22,20,-1934,-3548,-296,
+0,0,0,0,0,0,0,
+1,2,2,12,0,0,4096,
+1,31,31,31,0,0,4096,
+15,15,15,
+9,11,11,
+16,16,16,
+14,14,14,
+
+27000,
+1,24,24,20,-2043,-3548,110,
+0,0,0,0,0,0,0,
+1,2,2,13,0,0,4096,
+1,31,31,31,0,0,4096,
+16,16,16,
+10,12,12,
+18,18,18,
+14,14,14,
+
+27900,
+1,22,22,18,-730,-3560,-82,
+0,0,0,0,0,0,0,
+1,4,4,10,0,0,4096,
+1,31,31,31,0,0,4096,
+15,15,15,
+11,12,12,
+17,17,17,
+13,13,13,
+
+30600,
+1,20,18,16,-730,-3560,-82,
+0,0,0,0,0,0,0,
+1,3,4,10,0,0,4096,
+1,31,31,31,0,0,4096,
+15,15,15,
+11,12,12,
+17,17,17,
+12,11,11,
+
+32400,
+1,19,16,12,583,-3580,274,
+0,0,0,0,0,0,0,
+1,3,5,8,0,0,4096,
+1,31,31,31,0,0,4096,
+15,15,15,
+11,12,12,
+17,17,17,
+8,8,7,
+
+33300,
+1,17,13,10,1897,-3600,-466,
+0,0,0,0,0,0,0,
+1,14,6,0,0,0,4096,
+1,31,31,31,0,0,4096,
+14,14,14,
+12,12,12,
+16,16,16,
+9,7,7,
+
+34200,
+1,16,13,10,1897,-3600,-466,
+0,0,0,0,0,0,0,
+1,10,4,0,0,0,4096,
+1,31,31,31,0,0,4096,
+14,14,14,
+12,12,12,
+14,14,16,
+9,8,7,
+
+36000,
+1,11,12,15,1897,-3600,-466,
+0,0,0,0,0,0,0,
+1,10,4,0,0,0,4096,
+1,31,31,31,0,0,4096,
+14,14,14,
+12,12,12,
+14,14,16,
+8,8,9,
+
+43200,
+1,11,11,16,1897,-3600,-466,
+0,0,0,0,0,0,0,
+1,22,18,0,0,0,4096,
+1,31,31,31,0,0,4096,
+14,14,16,
+10,10,10,
+14,14,16,
+8,8,11,
+
EOF \ No newline at end of file
diff --git a/files/FILE_339C00_area01light.txt b/files/FILE_339C00_area01light.txt
index 8261dc97..55bc4f53 100644
--- a/files/FILE_339C00_area01light.txt
+++ b/files/FILE_339C00_area01light.txt
@@ -1,151 +1,151 @@
-900,
-1,23,23,25,-2043,-3548,110,
-0,0,0,0,0,0,0,
-1,4,4,16,0,0,4096,
-0,0,0,0,0,0,0,
-16,16,16,
-14,14,14,
-20,20,20,
-16,16,16,
-
-1800,
-1,23,23,25,-2043,-3548,110,
-0,0,0,0,0,0,0,
-1,4,4,16,0,0,4096,
-0,0,0,0,0,0,0,
-16,16,16,
-14,14,14,
-20,20,20,
-16,16,16,
-
-7200,
-1,23,23,25,-2043,-3548,110,
-0,0,0,0,0,0,0,
-1,4,4,16,0,0,4096,
-0,0,0,0,0,0,0,
-16,16,16,
-14,14,14,
-20,20,20,
-16,16,16,
-
-8100,
-1,23,23,25,-2043,-3548,110,
-0,0,0,0,0,0,0,
-1,4,4,16,0,0,4096,
-0,0,0,0,0,0,0,
-16,16,16,
-14,14,14,
-20,20,20,
-16,16,16,
-
-9000,
-1,23,23,25,-2043,-3548,110,
-0,0,0,0,0,0,0,
-1,4,4,16,0,0,4096,
-0,0,0,0,0,0,0,
-16,16,16,
-14,14,14,
-20,20,20,
-16,16,16,
-
-19800,
-1,23,23,25,-2043,-3548,110,
-0,0,0,0,0,0,0,
-1,4,4,16,0,0,4096,
-0,0,0,0,0,0,0,
-16,16,16,
-14,14,14,
-20,20,20,
-16,16,16,
-
-20700,
-1,23,23,25,-2043,-3548,110,
-0,0,0,0,0,0,0,
-1,4,4,16,0,0,4096,
-0,0,0,0,0,0,0,
-16,16,16,
-14,14,14,
-20,20,20,
-16,16,16,
-
-21600,
-1,23,23,25,-2043,-3548,110,
-0,0,0,0,0,0,0,
-1,4,4,16,0,0,4096,
-0,0,0,0,0,0,0,
-16,16,16,
-14,14,14,
-20,20,20,
-16,16,16,
-
-28800,
-1,23,23,25,-2043,-3548,110,
-0,0,0,0,0,0,0,
-1,4,4,16,0,0,4096,
-0,0,0,0,0,0,0,
-16,16,16,
-14,14,14,
-20,20,20,
-16,16,16,
-
-29700,
-1,23,23,25,-2043,-3548,110,
-0,0,0,0,0,0,0,
-1,4,4,16,0,0,4096,
-0,0,0,0,0,0,0,
-16,16,16,
-14,14,14,
-20,20,20,
-16,16,16,
-
-30600,
-1,23,23,25,-2043,-3548,110,
-0,0,0,0,0,0,0,
-1,4,4,16,0,0,4096,
-0,0,0,0,0,0,0,
-16,16,16,
-14,14,14,
-20,20,20,
-16,16,16,
-
-34200,
-1,23,23,25,-2043,-3548,110,
-0,0,0,0,0,0,0,
-1,4,4,16,0,0,4096,
-0,0,0,0,0,0,0,
-16,16,16,
-14,14,14,
-20,20,20,
-16,16,16,
-
-35100,
-1,23,23,25,-2043,-3548,110,
-0,0,0,0,0,0,0,
-1,4,4,16,0,0,4096,
-0,0,0,0,0,0,0,
-16,16,16,
-14,14,14,
-20,20,20,
-16,16,16,
-
-36000,
-1,23,23,25,-2043,-3548,110,
-0,0,0,0,0,0,0,
-1,4,4,16,0,0,4096,
-0,0,0,0,0,0,0,
-16,16,16,
-14,14,14,
-20,20,20,
-16,16,16,
-
-43200,
-1,23,23,25,-2043,-3548,110,
-0,0,0,0,0,0,0,
-1,4,4,16,0,0,4096,
-0,0,0,0,0,0,0,
-16,16,16,
-14,14,14,
-20,20,20,
-16,16,16,
-
-EOF
+900,
+1,23,23,25,-2043,-3548,110,
+0,0,0,0,0,0,0,
+1,4,4,16,0,0,4096,
+0,0,0,0,0,0,0,
+16,16,16,
+14,14,14,
+20,20,20,
+16,16,16,
+
+1800,
+1,23,23,25,-2043,-3548,110,
+0,0,0,0,0,0,0,
+1,4,4,16,0,0,4096,
+0,0,0,0,0,0,0,
+16,16,16,
+14,14,14,
+20,20,20,
+16,16,16,
+
+7200,
+1,23,23,25,-2043,-3548,110,
+0,0,0,0,0,0,0,
+1,4,4,16,0,0,4096,
+0,0,0,0,0,0,0,
+16,16,16,
+14,14,14,
+20,20,20,
+16,16,16,
+
+8100,
+1,23,23,25,-2043,-3548,110,
+0,0,0,0,0,0,0,
+1,4,4,16,0,0,4096,
+0,0,0,0,0,0,0,
+16,16,16,
+14,14,14,
+20,20,20,
+16,16,16,
+
+9000,
+1,23,23,25,-2043,-3548,110,
+0,0,0,0,0,0,0,
+1,4,4,16,0,0,4096,
+0,0,0,0,0,0,0,
+16,16,16,
+14,14,14,
+20,20,20,
+16,16,16,
+
+19800,
+1,23,23,25,-2043,-3548,110,
+0,0,0,0,0,0,0,
+1,4,4,16,0,0,4096,
+0,0,0,0,0,0,0,
+16,16,16,
+14,14,14,
+20,20,20,
+16,16,16,
+
+20700,
+1,23,23,25,-2043,-3548,110,
+0,0,0,0,0,0,0,
+1,4,4,16,0,0,4096,
+0,0,0,0,0,0,0,
+16,16,16,
+14,14,14,
+20,20,20,
+16,16,16,
+
+21600,
+1,23,23,25,-2043,-3548,110,
+0,0,0,0,0,0,0,
+1,4,4,16,0,0,4096,
+0,0,0,0,0,0,0,
+16,16,16,
+14,14,14,
+20,20,20,
+16,16,16,
+
+28800,
+1,23,23,25,-2043,-3548,110,
+0,0,0,0,0,0,0,
+1,4,4,16,0,0,4096,
+0,0,0,0,0,0,0,
+16,16,16,
+14,14,14,
+20,20,20,
+16,16,16,
+
+29700,
+1,23,23,25,-2043,-3548,110,
+0,0,0,0,0,0,0,
+1,4,4,16,0,0,4096,
+0,0,0,0,0,0,0,
+16,16,16,
+14,14,14,
+20,20,20,
+16,16,16,
+
+30600,
+1,23,23,25,-2043,-3548,110,
+0,0,0,0,0,0,0,
+1,4,4,16,0,0,4096,
+0,0,0,0,0,0,0,
+16,16,16,
+14,14,14,
+20,20,20,
+16,16,16,
+
+34200,
+1,23,23,25,-2043,-3548,110,
+0,0,0,0,0,0,0,
+1,4,4,16,0,0,4096,
+0,0,0,0,0,0,0,
+16,16,16,
+14,14,14,
+20,20,20,
+16,16,16,
+
+35100,
+1,23,23,25,-2043,-3548,110,
+0,0,0,0,0,0,0,
+1,4,4,16,0,0,4096,
+0,0,0,0,0,0,0,
+16,16,16,
+14,14,14,
+20,20,20,
+16,16,16,
+
+36000,
+1,23,23,25,-2043,-3548,110,
+0,0,0,0,0,0,0,
+1,4,4,16,0,0,4096,
+0,0,0,0,0,0,0,
+16,16,16,
+14,14,14,
+20,20,20,
+16,16,16,
+
+43200,
+1,23,23,25,-2043,-3548,110,
+0,0,0,0,0,0,0,
+1,4,4,16,0,0,4096,
+0,0,0,0,0,0,0,
+16,16,16,
+14,14,14,
+20,20,20,
+16,16,16,
+
+EOF
diff --git a/files/FILE_33A400_area02light.txt b/files/FILE_33A400_area02light.txt
index ecf534a2..9d055de3 100644
--- a/files/FILE_33A400_area02light.txt
+++ b/files/FILE_33A400_area02light.txt
@@ -1,151 +1,151 @@
-900,
-1,24,24,18,-2043,-3548,110,
-0,0,0,0,0,0,0,
-1,2,2,12,0,0,4096,
-1,31,31,31,0,0,4096,
-16,16,16,
-10,12,12,
-18,18,18,
-14,14,14,
-
-1800,
-1,24,24,18,-2043,-3548,110,
-0,0,0,0,0,0,0,
-1,2,2,12,0,0,4096,
-1,31,31,31,0,0,4096,
-16,16,16,
-10,12,12,
-18,18,18,
-14,14,14,
-
-7200,
-1,24,24,18,-2043,-3548,110,
-0,0,0,0,0,0,0,
-1,2,2,12,0,0,4096,
-1,31,31,31,0,0,4096,
-16,16,16,
-10,12,12,
-18,18,18,
-14,14,14,
-
-8100,
-1,24,24,18,-2043,-3548,110,
-0,0,0,0,0,0,0,
-1,2,2,12,0,0,4096,
-1,31,31,31,0,0,4096,
-16,16,16,
-10,12,12,
-18,18,18,
-14,14,14,
-
-9000,
-1,24,24,18,-2043,-3548,110,
-0,0,0,0,0,0,0,
-1,2,2,12,0,0,4096,
-1,31,31,31,0,0,4096,
-16,16,16,
-10,12,12,
-18,18,18,
-14,14,14,
-
-19800,
-1,24,24,18,-2043,-3548,110,
-0,0,0,0,0,0,0,
-1,2,2,12,0,0,4096,
-1,31,31,31,0,0,4096,
-16,16,16,
-10,12,12,
-18,18,18,
-14,14,14,
-
-20700,
-1,24,24,18,-2043,-3548,110,
-0,0,0,0,0,0,0,
-1,2,2,12,0,0,4096,
-1,31,31,31,0,0,4096,
-16,16,16,
-10,12,12,
-18,18,18,
-14,14,14,
-
-21600,
-1,24,24,18,-2043,-3548,110,
-0,0,0,0,0,0,0,
-1,2,2,12,0,0,4096,
-1,31,31,31,0,0,4096,
-16,16,16,
-10,12,12,
-18,18,18,
-14,14,14,
-
-28800,
-1,24,24,18,-2043,-3548,110,
-0,0,0,0,0,0,0,
-1,2,2,12,0,0,4096,
-1,31,31,31,0,0,4096,
-16,16,16,
-10,12,12,
-18,18,18,
-14,14,14,
-
-29700,
-1,24,24,18,-2043,-3548,110,
-0,0,0,0,0,0,0,
-1,2,2,12,0,0,4096,
-1,31,31,31,0,0,4096,
-16,16,16,
-10,12,12,
-18,18,18,
-14,14,14,
-
-30600,
-1,24,24,18,-2043,-3548,110,
-0,0,0,0,0,0,0,
-1,2,2,12,0,0,4096,
-1,31,31,31,0,0,4096,
-16,16,16,
-10,12,12,
-18,18,18,
-14,14,14,
-
-34200,
-1,24,24,18,-2043,-3548,110,
-0,0,0,0,0,0,0,
-1,2,2,12,0,0,4096,
-1,31,31,31,0,0,4096,
-16,16,16,
-10,12,12,
-18,18,18,
-14,14,14,
-
-35100,
-1,24,24,18,-2043,-3548,110,
-0,0,0,0,0,0,0,
-1,2,2,12,0,0,4096,
-1,31,31,31,0,0,4096,
-16,16,16,
-10,12,12,
-18,18,18,
-14,14,14,
-
-36000,
-1,24,24,18,-2043,-3548,110,
-0,0,0,0,0,0,0,
-1,2,2,12,0,0,4096,
-1,31,31,31,0,0,4096,
-16,16,16,
-10,12,12,
-18,18,18,
-14,14,14,
-
-43200,
-1,24,24,18,-2043,-3548,110,
-0,0,0,0,0,0,0,
-1,2,2,12,0,0,4096,
-1,31,31,31,0,0,4096,
-16,16,16,
-10,12,12,
-18,18,18,
-14,14,14,
-
-EOF
+900,
+1,24,24,18,-2043,-3548,110,
+0,0,0,0,0,0,0,
+1,2,2,12,0,0,4096,
+1,31,31,31,0,0,4096,
+16,16,16,
+10,12,12,
+18,18,18,
+14,14,14,
+
+1800,
+1,24,24,18,-2043,-3548,110,
+0,0,0,0,0,0,0,
+1,2,2,12,0,0,4096,
+1,31,31,31,0,0,4096,
+16,16,16,
+10,12,12,
+18,18,18,
+14,14,14,
+
+7200,
+1,24,24,18,-2043,-3548,110,
+0,0,0,0,0,0,0,
+1,2,2,12,0,0,4096,
+1,31,31,31,0,0,4096,
+16,16,16,
+10,12,12,
+18,18,18,
+14,14,14,
+
+8100,
+1,24,24,18,-2043,-3548,110,
+0,0,0,0,0,0,0,
+1,2,2,12,0,0,4096,
+1,31,31,31,0,0,4096,
+16,16,16,
+10,12,12,
+18,18,18,
+14,14,14,
+
+9000,
+1,24,24,18,-2043,-3548,110,
+0,0,0,0,0,0,0,
+1,2,2,12,0,0,4096,
+1,31,31,31,0,0,4096,
+16,16,16,
+10,12,12,
+18,18,18,
+14,14,14,
+
+19800,
+1,24,24,18,-2043,-3548,110,
+0,0,0,0,0,0,0,
+1,2,2,12,0,0,4096,
+1,31,31,31,0,0,4096,
+16,16,16,
+10,12,12,
+18,18,18,
+14,14,14,
+
+20700,
+1,24,24,18,-2043,-3548,110,
+0,0,0,0,0,0,0,
+1,2,2,12,0,0,4096,
+1,31,31,31,0,0,4096,
+16,16,16,
+10,12,12,
+18,18,18,
+14,14,14,
+
+21600,
+1,24,24,18,-2043,-3548,110,
+0,0,0,0,0,0,0,
+1,2,2,12,0,0,4096,
+1,31,31,31,0,0,4096,
+16,16,16,
+10,12,12,
+18,18,18,
+14,14,14,
+
+28800,
+1,24,24,18,-2043,-3548,110,
+0,0,0,0,0,0,0,
+1,2,2,12,0,0,4096,
+1,31,31,31,0,0,4096,
+16,16,16,
+10,12,12,
+18,18,18,
+14,14,14,
+
+29700,
+1,24,24,18,-2043,-3548,110,
+0,0,0,0,0,0,0,
+1,2,2,12,0,0,4096,
+1,31,31,31,0,0,4096,
+16,16,16,
+10,12,12,
+18,18,18,
+14,14,14,
+
+30600,
+1,24,24,18,-2043,-3548,110,
+0,0,0,0,0,0,0,
+1,2,2,12,0,0,4096,
+1,31,31,31,0,0,4096,
+16,16,16,
+10,12,12,
+18,18,18,
+14,14,14,
+
+34200,
+1,24,24,18,-2043,-3548,110,
+0,0,0,0,0,0,0,
+1,2,2,12,0,0,4096,
+1,31,31,31,0,0,4096,
+16,16,16,
+10,12,12,
+18,18,18,
+14,14,14,
+
+35100,
+1,24,24,18,-2043,-3548,110,
+0,0,0,0,0,0,0,
+1,2,2,12,0,0,4096,
+1,31,31,31,0,0,4096,
+16,16,16,
+10,12,12,
+18,18,18,
+14,14,14,
+
+36000,
+1,24,24,18,-2043,-3548,110,
+0,0,0,0,0,0,0,
+1,2,2,12,0,0,4096,
+1,31,31,31,0,0,4096,
+16,16,16,
+10,12,12,
+18,18,18,
+14,14,14,
+
+43200,
+1,24,24,18,-2043,-3548,110,
+0,0,0,0,0,0,0,
+1,2,2,12,0,0,4096,
+1,31,31,31,0,0,4096,
+16,16,16,
+10,12,12,
+18,18,18,
+14,14,14,
+
+EOF
diff --git a/files/FILE_3B3600_dt_test_celact.txt b/files/FILE_3B3600_dt_test_celact.txt
index 6802e0ed..d286d447 100644
--- a/files/FILE_3B3600_dt_test_celact.txt
+++ b/files/FILE_3B3600_dt_test_celact.txt
@@ -1,2 +1,2 @@
-0,0,0,0,n,n,0,0, Rg܂
-e,e,e,e,e,e,e,e,
+0,0,0,0,n,n,0,0, Rg܂
+e,e,e,e,e,e,e,e,
diff --git a/files/FILE_3B3800_dt_test_res_cell.txt b/files/FILE_3B3800_dt_test_res_cell.txt
index b23c8226..3871fd66 100644
--- a/files/FILE_3B3800_dt_test_res_cell.txt
+++ b/files/FILE_3B3800_dt_test_res_cell.txt
@@ -1,3 +1,3 @@
-2,0,
-data/ug_hero.NCER,0,
-e,e,e,e,
+2,0,
+data/ug_hero.NCER,0,
+e,e,e,e,
diff --git a/files/FILE_3B3A00_dt_test_res_cellanm.txt b/files/FILE_3B3A00_dt_test_res_cellanm.txt
index c80a0e2c..a882a909 100644
--- a/files/FILE_3B3A00_dt_test_res_cellanm.txt
+++ b/files/FILE_3B3A00_dt_test_res_cellanm.txt
@@ -1,3 +1,3 @@
-3,0,
-data/ug_hero.NANR,0,
-e,e,e,e,
+3,0,
+data/ug_hero.NANR,0,
+e,e,e,e,
diff --git a/files/FILE_3B3C00_dt_test_res_char.txt b/files/FILE_3B3C00_dt_test_res_char.txt
index 5af4589b..b1d86da1 100644
--- a/files/FILE_3B3C00_dt_test_res_char.txt
+++ b/files/FILE_3B3C00_dt_test_res_char.txt
@@ -1,3 +1,3 @@
-0,0,
-data/ug_boygirl.NCGR,0,3,
-e,e,e,e,
+0,0,
+data/ug_boygirl.NCGR,0,3,
+e,e,e,e,
diff --git a/files/FILE_3B3E00_dt_test_res_multi.txt b/files/FILE_3B3E00_dt_test_res_multi.txt
index 94493646..ea0e48e4 100644
--- a/files/FILE_3B3E00_dt_test_res_multi.txt
+++ b/files/FILE_3B3E00_dt_test_res_multi.txt
@@ -1,2 +1,2 @@
-4,0,
-e,e,e,e,
+4,0,
+e,e,e,e,
diff --git a/files/FILE_3B4000_dt_test_res_multianm.txt b/files/FILE_3B4000_dt_test_res_multianm.txt
index da4150b4..35262c6b 100644
--- a/files/FILE_3B4000_dt_test_res_multianm.txt
+++ b/files/FILE_3B4000_dt_test_res_multianm.txt
@@ -1,2 +1,2 @@
-5,0,
-e,e,e,e,
+5,0,
+e,e,e,e,
diff --git a/files/FILE_3B4200_dt_test_res_pltt.txt b/files/FILE_3B4200_dt_test_res_pltt.txt
index f7849d4a..745a88a1 100644
--- a/files/FILE_3B4200_dt_test_res_pltt.txt
+++ b/files/FILE_3B4200_dt_test_res_pltt.txt
@@ -1,3 +1,3 @@
-1,0,
-data/ug_boygirl.NCLR,0,3,1,
-e,e,e,e,
+1,0,
+data/ug_boygirl.NCLR,0,3,1,
+e,e,e,e,
diff --git a/files/FILE_441C00_tmapn_celact.txt b/files/FILE_441C00_tmapn_celact.txt
index a9c7d20a..3720efc6 100644
--- a/files/FILE_441C00_tmapn_celact.txt
+++ b/files/FILE_441C00_tmapn_celact.txt
@@ -1,8 +1,8 @@
-0,1,0,0,n,n,0,0, <-Tu{^Z
-1,0,1,1,n,n,0,2, <-CJ[\Z
-2,0,2,2,n,n,0,2, <-C@Z
-3,0,3,3,n,n,0,2, <-CՃZ
-4,0,4,4,n,n,0,2, <-CXZ
-e,e,e,e,e,e,e,e,
-
-charID,palID,celID,celAnmID,McelID,McelAnmID,vramTransferF,BGPriority
+0,1,0,0,n,n,0,0, <-Tu{^Z
+1,0,1,1,n,n,0,2, <-CJ[\Z
+2,0,2,2,n,n,0,2, <-C@Z
+3,0,3,3,n,n,0,2, <-CՃZ
+4,0,4,4,n,n,0,2, <-CXZ
+e,e,e,e,e,e,e,e,
+
+charID,palID,celID,celAnmID,McelID,McelAnmID,vramTransferF,BGPriority
diff --git a/files/FILE_442400_tmapn_res_canm.txt b/files/FILE_442400_tmapn_res_canm.txt
index 0f33864a..23fda8d2 100644
--- a/files/FILE_442400_tmapn_res_canm.txt
+++ b/files/FILE_442400_tmapn_res_canm.txt
@@ -1,9 +1,9 @@
-3,1,
-17,6,0,0, <-Tu{^
-17,9,0,1, <-CJ[\
-17,12,0,2, <-C@
-17,15,0,3, <-C
-17,18,0,4, <-CX
-e,e,e,e,
-
-arcFidx,arcDidx,cmpF,myID
+3,1,
+17,6,0,0, <-Tu{^
+17,9,0,1, <-CJ[\
+17,12,0,2, <-C@
+17,15,0,3, <-C
+17,18,0,4, <-CX
+e,e,e,e,
+
+arcFidx,arcDidx,cmpF,myID
diff --git a/files/FILE_442600_tmapn_res_cell.txt b/files/FILE_442600_tmapn_res_cell.txt
index 93f58403..fa7b70c6 100644
--- a/files/FILE_442600_tmapn_res_cell.txt
+++ b/files/FILE_442600_tmapn_res_cell.txt
@@ -1,10 +1,10 @@
-2,1,
-17,5,0,0, <-Tuʃ{^GtFNg
-17,8,0,1, <-CJ[\
-17,11,0,2, <-C@
-17,14,0,3, <-C
-17,17,0,4, <-CX
-e,e,e,e,
-
-arcFidx,arcDidx,cmpF,myID
-
+2,1,
+17,5,0,0, <-Tuʃ{^GtFNg
+17,8,0,1, <-CJ[\
+17,11,0,2, <-C@
+17,14,0,3, <-C
+17,17,0,4, <-CX
+e,e,e,e,
+
+arcFidx,arcDidx,cmpF,myID
+
diff --git a/files/FILE_442800_tmapn_res_chr.txt b/files/FILE_442800_tmapn_res_chr.txt
index 8489deb3..b7b27652 100644
--- a/files/FILE_442800_tmapn_res_chr.txt
+++ b/files/FILE_442800_tmapn_res_chr.txt
@@ -1,9 +1,9 @@
-0,1,
-17,4,0,0,2, <-Tu{^
-17,7,0,1,1, <-CJ[\
-17,10,0,2,1, <-C@
-17,13,0,3,1, <-C
-17,16,0,4,1, <-CXACR
-e,e,e,e,e,
-
-arcFidx,arcDidx,cmpF,myID,vramType(1:main,2:sub,3:both)
+0,1,
+17,4,0,0,2, <-Tu{^
+17,7,0,1,1, <-CJ[\
+17,10,0,2,1, <-C@
+17,13,0,3,1, <-C
+17,16,0,4,1, <-CXACR
+e,e,e,e,e,
+
+arcFidx,arcDidx,cmpF,myID,vramType(1:main,2:sub,3:both)
diff --git a/files/FILE_442A00_tmapn_res_pal.txt b/files/FILE_442A00_tmapn_res_pal.txt
index 531916c2..fbfaffb9 100644
--- a/files/FILE_442A00_tmapn_res_pal.txt
+++ b/files/FILE_442A00_tmapn_res_pal.txt
@@ -1,6 +1,6 @@
-1,1,
-17,2,0,0,1,16, <-Cpbg
-17,3,0,1,2,1, <-Tupbg
-e,e,e,e,e,e,
-
-arcFidx,ardDidx,cmpF,myID,vramType(1:main,2:sub,3:both),palNum
+1,1,
+17,2,0,0,1,16, <-Cpbg
+17,3,0,1,2,1, <-Tupbg
+e,e,e,e,e,e,
+
+arcFidx,ardDidx,cmpF,myID,vramType(1:main,2:sub,3:both),palNum
diff --git a/files/data/area00light.txt b/files/data/area00light.txt
index 438ee9c5..f2d44594 100644
--- a/files/data/area00light.txt
+++ b/files/data/area00light.txt
@@ -1,151 +1,151 @@
-0,
-1,11,11,16,1897,-3600,-466,
-0,0,0,0,0,0,0,
-1,22,18,0,0,0,4096,
-1,31,31,31,0,0,4096,
-14,14,16,
-10,10,10,
-14,14,16,
-8,8,11,
-
-7200,
-1,11,11,16,1897,-3600,-466,
-0,0,0,0,0,0,0,
-1,0,0,8,0,0,4096,
-1,31,31,31,0,0,4096,
-14,14,16,
-10,10,10,
-14,14,16,
-8,8,11,
-
-8100,
-1,12,12,18,692,-3584,-680,
-0,0,0,0,0,0,0,
-1,0,4,8,0,0,4096,
-1,31,31,31,0,0,4096,
-10,10,14,
-13,13,13,
-8,8,14,
-10,10,12,
-
-9000,
-1,12,12,22,-513,-3568,-894,
-0,0,0,0,0,0,0,
-1,0,2,10,0,0,4096,
-1,31,31,31,0,0,4096,
-11,11,13,
-10,10,10,
-10,10,14,
-13,13,14,
-
-14400,
-1,15,15,22,-1718,-3551,-1108,
-0,0,0,0,0,0,0,
-1,0,0,10,0,0,4096,
-1,31,31,31,0,0,4096,
-12,12,12,
-8,8,8,
-12,12,14,
-14,14,18,
-
-20700,
-1,18,18,21,-1826,-3548,-702,
-0,0,0,0,0,0,0,
-1,1,1,11,0,0,4096,
-1,31,31,31,0,0,4096,
-13,13,13,
-9,9,9,
-14,14,15,
-14,14,16,
-
-21600,
-1,22,22,20,-1934,-3548,-296,
-0,0,0,0,0,0,0,
-1,2,2,12,0,0,4096,
-1,31,31,31,0,0,4096,
-15,15,15,
-9,11,11,
-16,16,16,
-14,14,14,
-
-27000,
-1,24,24,20,-2043,-3548,110,
-0,0,0,0,0,0,0,
-1,2,2,13,0,0,4096,
-1,31,31,31,0,0,4096,
-16,16,16,
-10,12,12,
-18,18,18,
-14,14,14,
-
-27900,
-1,22,22,18,-730,-3560,-82,
-0,0,0,0,0,0,0,
-1,4,4,10,0,0,4096,
-1,31,31,31,0,0,4096,
-15,15,15,
-11,12,12,
-17,17,17,
-13,13,13,
-
-30600,
-1,20,18,16,-730,-3560,-82,
-0,0,0,0,0,0,0,
-1,3,4,10,0,0,4096,
-1,31,31,31,0,0,4096,
-15,15,15,
-11,12,12,
-17,17,17,
-12,11,11,
-
-32400,
-1,19,16,12,583,-3580,274,
-0,0,0,0,0,0,0,
-1,3,5,8,0,0,4096,
-1,31,31,31,0,0,4096,
-15,15,15,
-11,12,12,
-17,17,17,
-8,8,7,
-
-33300,
-1,17,13,10,1897,-3600,-466,
-0,0,0,0,0,0,0,
-1,14,6,0,0,0,4096,
-1,31,31,31,0,0,4096,
-14,14,14,
-12,12,12,
-16,16,16,
-9,7,7,
-
-34200,
-1,16,13,10,1897,-3600,-466,
-0,0,0,0,0,0,0,
-1,10,4,0,0,0,4096,
-1,31,31,31,0,0,4096,
-14,14,14,
-12,12,12,
-14,14,16,
-9,8,7,
-
-36000,
-1,11,12,15,1897,-3600,-466,
-0,0,0,0,0,0,0,
-1,10,4,0,0,0,4096,
-1,31,31,31,0,0,4096,
-14,14,14,
-12,12,12,
-14,14,16,
-8,8,9,
-
-43200,
-1,11,11,16,1897,-3600,-466,
-0,0,0,0,0,0,0,
-1,22,18,0,0,0,4096,
-1,31,31,31,0,0,4096,
-14,14,16,
-10,10,10,
-14,14,16,
-8,8,11,
-
+0,
+1,11,11,16,1897,-3600,-466,
+0,0,0,0,0,0,0,
+1,22,18,0,0,0,4096,
+1,31,31,31,0,0,4096,
+14,14,16,
+10,10,10,
+14,14,16,
+8,8,11,
+
+7200,
+1,11,11,16,1897,-3600,-466,
+0,0,0,0,0,0,0,
+1,0,0,8,0,0,4096,
+1,31,31,31,0,0,4096,
+14,14,16,
+10,10,10,
+14,14,16,
+8,8,11,
+
+8100,
+1,12,12,18,692,-3584,-680,
+0,0,0,0,0,0,0,
+1,0,4,8,0,0,4096,
+1,31,31,31,0,0,4096,
+10,10,14,
+13,13,13,
+8,8,14,
+10,10,12,
+
+9000,
+1,12,12,22,-513,-3568,-894,
+0,0,0,0,0,0,0,
+1,0,2,10,0,0,4096,
+1,31,31,31,0,0,4096,
+11,11,13,
+10,10,10,
+10,10,14,
+13,13,14,
+
+14400,
+1,15,15,22,-1718,-3551,-1108,
+0,0,0,0,0,0,0,
+1,0,0,10,0,0,4096,
+1,31,31,31,0,0,4096,
+12,12,12,
+8,8,8,
+12,12,14,
+14,14,18,
+
+20700,
+1,18,18,21,-1826,-3548,-702,
+0,0,0,0,0,0,0,
+1,1,1,11,0,0,4096,
+1,31,31,31,0,0,4096,
+13,13,13,
+9,9,9,
+14,14,15,
+14,14,16,
+
+21600,
+1,22,22,20,-1934,-3548,-296,
+0,0,0,0,0,0,0,
+1,2,2,12,0,0,4096,
+1,31,31,31,0,0,4096,
+15,15,15,
+9,11,11,
+16,16,16,
+14,14,14,
+
+27000,
+1,24,24,20,-2043,-3548,110,
+0,0,0,0,0,0,0,
+1,2,2,13,0,0,4096,
+1,31,31,31,0,0,4096,
+16,16,16,
+10,12,12,
+18,18,18,
+14,14,14,
+
+27900,
+1,22,22,18,-730,-3560,-82,
+0,0,0,0,0,0,0,
+1,4,4,10,0,0,4096,
+1,31,31,31,0,0,4096,
+15,15,15,
+11,12,12,
+17,17,17,
+13,13,13,
+
+30600,
+1,20,18,16,-730,-3560,-82,
+0,0,0,0,0,0,0,
+1,3,4,10,0,0,4096,
+1,31,31,31,0,0,4096,
+15,15,15,
+11,12,12,
+17,17,17,
+12,11,11,
+
+32400,
+1,19,16,12,583,-3580,274,
+0,0,0,0,0,0,0,
+1,3,5,8,0,0,4096,
+1,31,31,31,0,0,4096,
+15,15,15,
+11,12,12,
+17,17,17,
+8,8,7,
+
+33300,
+1,17,13,10,1897,-3600,-466,
+0,0,0,0,0,0,0,
+1,14,6,0,0,0,4096,
+1,31,31,31,0,0,4096,
+14,14,14,
+12,12,12,
+16,16,16,
+9,7,7,
+
+34200,
+1,16,13,10,1897,-3600,-466,
+0,0,0,0,0,0,0,
+1,10,4,0,0,0,4096,
+1,31,31,31,0,0,4096,
+14,14,14,
+12,12,12,
+14,14,16,
+9,8,7,
+
+36000,
+1,11,12,15,1897,-3600,-466,
+0,0,0,0,0,0,0,
+1,10,4,0,0,0,4096,
+1,31,31,31,0,0,4096,
+14,14,14,
+12,12,12,
+14,14,16,
+8,8,9,
+
+43200,
+1,11,11,16,1897,-3600,-466,
+0,0,0,0,0,0,0,
+1,22,18,0,0,0,4096,
+1,31,31,31,0,0,4096,
+14,14,16,
+10,10,10,
+14,14,16,
+8,8,11,
+
EOF \ No newline at end of file
diff --git a/files/data/area01light.txt b/files/data/area01light.txt
index 8261dc97..55bc4f53 100644
--- a/files/data/area01light.txt
+++ b/files/data/area01light.txt
@@ -1,151 +1,151 @@
-900,
-1,23,23,25,-2043,-3548,110,
-0,0,0,0,0,0,0,
-1,4,4,16,0,0,4096,
-0,0,0,0,0,0,0,
-16,16,16,
-14,14,14,
-20,20,20,
-16,16,16,
-
-1800,
-1,23,23,25,-2043,-3548,110,
-0,0,0,0,0,0,0,
-1,4,4,16,0,0,4096,
-0,0,0,0,0,0,0,
-16,16,16,
-14,14,14,
-20,20,20,
-16,16,16,
-
-7200,
-1,23,23,25,-2043,-3548,110,
-0,0,0,0,0,0,0,
-1,4,4,16,0,0,4096,
-0,0,0,0,0,0,0,
-16,16,16,
-14,14,14,
-20,20,20,
-16,16,16,
-
-8100,
-1,23,23,25,-2043,-3548,110,
-0,0,0,0,0,0,0,
-1,4,4,16,0,0,4096,
-0,0,0,0,0,0,0,
-16,16,16,
-14,14,14,
-20,20,20,
-16,16,16,
-
-9000,
-1,23,23,25,-2043,-3548,110,
-0,0,0,0,0,0,0,
-1,4,4,16,0,0,4096,
-0,0,0,0,0,0,0,
-16,16,16,
-14,14,14,
-20,20,20,
-16,16,16,
-
-19800,
-1,23,23,25,-2043,-3548,110,
-0,0,0,0,0,0,0,
-1,4,4,16,0,0,4096,
-0,0,0,0,0,0,0,
-16,16,16,
-14,14,14,
-20,20,20,
-16,16,16,
-
-20700,
-1,23,23,25,-2043,-3548,110,
-0,0,0,0,0,0,0,
-1,4,4,16,0,0,4096,
-0,0,0,0,0,0,0,
-16,16,16,
-14,14,14,
-20,20,20,
-16,16,16,
-
-21600,
-1,23,23,25,-2043,-3548,110,
-0,0,0,0,0,0,0,
-1,4,4,16,0,0,4096,
-0,0,0,0,0,0,0,
-16,16,16,
-14,14,14,
-20,20,20,
-16,16,16,
-
-28800,
-1,23,23,25,-2043,-3548,110,
-0,0,0,0,0,0,0,
-1,4,4,16,0,0,4096,
-0,0,0,0,0,0,0,
-16,16,16,
-14,14,14,
-20,20,20,
-16,16,16,
-
-29700,
-1,23,23,25,-2043,-3548,110,
-0,0,0,0,0,0,0,
-1,4,4,16,0,0,4096,
-0,0,0,0,0,0,0,
-16,16,16,
-14,14,14,
-20,20,20,
-16,16,16,
-
-30600,
-1,23,23,25,-2043,-3548,110,
-0,0,0,0,0,0,0,
-1,4,4,16,0,0,4096,
-0,0,0,0,0,0,0,
-16,16,16,
-14,14,14,
-20,20,20,
-16,16,16,
-
-34200,
-1,23,23,25,-2043,-3548,110,
-0,0,0,0,0,0,0,
-1,4,4,16,0,0,4096,
-0,0,0,0,0,0,0,
-16,16,16,
-14,14,14,
-20,20,20,
-16,16,16,
-
-35100,
-1,23,23,25,-2043,-3548,110,
-0,0,0,0,0,0,0,
-1,4,4,16,0,0,4096,
-0,0,0,0,0,0,0,
-16,16,16,
-14,14,14,
-20,20,20,
-16,16,16,
-
-36000,
-1,23,23,25,-2043,-3548,110,
-0,0,0,0,0,0,0,
-1,4,4,16,0,0,4096,
-0,0,0,0,0,0,0,
-16,16,16,
-14,14,14,
-20,20,20,
-16,16,16,
-
-43200,
-1,23,23,25,-2043,-3548,110,
-0,0,0,0,0,0,0,
-1,4,4,16,0,0,4096,
-0,0,0,0,0,0,0,
-16,16,16,
-14,14,14,
-20,20,20,
-16,16,16,
-
-EOF
+900,
+1,23,23,25,-2043,-3548,110,
+0,0,0,0,0,0,0,
+1,4,4,16,0,0,4096,
+0,0,0,0,0,0,0,
+16,16,16,
+14,14,14,
+20,20,20,
+16,16,16,
+
+1800,
+1,23,23,25,-2043,-3548,110,
+0,0,0,0,0,0,0,
+1,4,4,16,0,0,4096,
+0,0,0,0,0,0,0,
+16,16,16,
+14,14,14,
+20,20,20,
+16,16,16,
+
+7200,
+1,23,23,25,-2043,-3548,110,
+0,0,0,0,0,0,0,
+1,4,4,16,0,0,4096,
+0,0,0,0,0,0,0,
+16,16,16,
+14,14,14,
+20,20,20,
+16,16,16,
+
+8100,
+1,23,23,25,-2043,-3548,110,
+0,0,0,0,0,0,0,
+1,4,4,16,0,0,4096,
+0,0,0,0,0,0,0,
+16,16,16,
+14,14,14,
+20,20,20,
+16,16,16,
+
+9000,
+1,23,23,25,-2043,-3548,110,
+0,0,0,0,0,0,0,
+1,4,4,16,0,0,4096,
+0,0,0,0,0,0,0,
+16,16,16,
+14,14,14,
+20,20,20,
+16,16,16,
+
+19800,
+1,23,23,25,-2043,-3548,110,
+0,0,0,0,0,0,0,
+1,4,4,16,0,0,4096,
+0,0,0,0,0,0,0,
+16,16,16,
+14,14,14,
+20,20,20,
+16,16,16,
+
+20700,
+1,23,23,25,-2043,-3548,110,
+0,0,0,0,0,0,0,
+1,4,4,16,0,0,4096,
+0,0,0,0,0,0,0,
+16,16,16,
+14,14,14,
+20,20,20,
+16,16,16,
+
+21600,
+1,23,23,25,-2043,-3548,110,
+0,0,0,0,0,0,0,
+1,4,4,16,0,0,4096,
+0,0,0,0,0,0,0,
+16,16,16,
+14,14,14,
+20,20,20,
+16,16,16,
+
+28800,
+1,23,23,25,-2043,-3548,110,
+0,0,0,0,0,0,0,
+1,4,4,16,0,0,4096,
+0,0,0,0,0,0,0,
+16,16,16,
+14,14,14,
+20,20,20,
+16,16,16,
+
+29700,
+1,23,23,25,-2043,-3548,110,
+0,0,0,0,0,0,0,
+1,4,4,16,0,0,4096,
+0,0,0,0,0,0,0,
+16,16,16,
+14,14,14,
+20,20,20,
+16,16,16,
+
+30600,
+1,23,23,25,-2043,-3548,110,
+0,0,0,0,0,0,0,
+1,4,4,16,0,0,4096,
+0,0,0,0,0,0,0,
+16,16,16,
+14,14,14,
+20,20,20,
+16,16,16,
+
+34200,
+1,23,23,25,-2043,-3548,110,
+0,0,0,0,0,0,0,
+1,4,4,16,0,0,4096,
+0,0,0,0,0,0,0,
+16,16,16,
+14,14,14,
+20,20,20,
+16,16,16,
+
+35100,
+1,23,23,25,-2043,-3548,110,
+0,0,0,0,0,0,0,
+1,4,4,16,0,0,4096,
+0,0,0,0,0,0,0,
+16,16,16,
+14,14,14,
+20,20,20,
+16,16,16,
+
+36000,
+1,23,23,25,-2043,-3548,110,
+0,0,0,0,0,0,0,
+1,4,4,16,0,0,4096,
+0,0,0,0,0,0,0,
+16,16,16,
+14,14,14,
+20,20,20,
+16,16,16,
+
+43200,
+1,23,23,25,-2043,-3548,110,
+0,0,0,0,0,0,0,
+1,4,4,16,0,0,4096,
+0,0,0,0,0,0,0,
+16,16,16,
+14,14,14,
+20,20,20,
+16,16,16,
+
+EOF
diff --git a/files/data/area02light.txt b/files/data/area02light.txt
index ecf534a2..9d055de3 100644
--- a/files/data/area02light.txt
+++ b/files/data/area02light.txt
@@ -1,151 +1,151 @@
-900,
-1,24,24,18,-2043,-3548,110,
-0,0,0,0,0,0,0,
-1,2,2,12,0,0,4096,
-1,31,31,31,0,0,4096,
-16,16,16,
-10,12,12,
-18,18,18,
-14,14,14,
-
-1800,
-1,24,24,18,-2043,-3548,110,
-0,0,0,0,0,0,0,
-1,2,2,12,0,0,4096,
-1,31,31,31,0,0,4096,
-16,16,16,
-10,12,12,
-18,18,18,
-14,14,14,
-
-7200,
-1,24,24,18,-2043,-3548,110,
-0,0,0,0,0,0,0,
-1,2,2,12,0,0,4096,
-1,31,31,31,0,0,4096,
-16,16,16,
-10,12,12,
-18,18,18,
-14,14,14,
-
-8100,
-1,24,24,18,-2043,-3548,110,
-0,0,0,0,0,0,0,
-1,2,2,12,0,0,4096,
-1,31,31,31,0,0,4096,
-16,16,16,
-10,12,12,
-18,18,18,
-14,14,14,
-
-9000,
-1,24,24,18,-2043,-3548,110,
-0,0,0,0,0,0,0,
-1,2,2,12,0,0,4096,
-1,31,31,31,0,0,4096,
-16,16,16,
-10,12,12,
-18,18,18,
-14,14,14,
-
-19800,
-1,24,24,18,-2043,-3548,110,
-0,0,0,0,0,0,0,
-1,2,2,12,0,0,4096,
-1,31,31,31,0,0,4096,
-16,16,16,
-10,12,12,
-18,18,18,
-14,14,14,
-
-20700,
-1,24,24,18,-2043,-3548,110,
-0,0,0,0,0,0,0,
-1,2,2,12,0,0,4096,
-1,31,31,31,0,0,4096,
-16,16,16,
-10,12,12,
-18,18,18,
-14,14,14,
-
-21600,
-1,24,24,18,-2043,-3548,110,
-0,0,0,0,0,0,0,
-1,2,2,12,0,0,4096,
-1,31,31,31,0,0,4096,
-16,16,16,
-10,12,12,
-18,18,18,
-14,14,14,
-
-28800,
-1,24,24,18,-2043,-3548,110,
-0,0,0,0,0,0,0,
-1,2,2,12,0,0,4096,
-1,31,31,31,0,0,4096,
-16,16,16,
-10,12,12,
-18,18,18,
-14,14,14,
-
-29700,
-1,24,24,18,-2043,-3548,110,
-0,0,0,0,0,0,0,
-1,2,2,12,0,0,4096,
-1,31,31,31,0,0,4096,
-16,16,16,
-10,12,12,
-18,18,18,
-14,14,14,
-
-30600,
-1,24,24,18,-2043,-3548,110,
-0,0,0,0,0,0,0,
-1,2,2,12,0,0,4096,
-1,31,31,31,0,0,4096,
-16,16,16,
-10,12,12,
-18,18,18,
-14,14,14,
-
-34200,
-1,24,24,18,-2043,-3548,110,
-0,0,0,0,0,0,0,
-1,2,2,12,0,0,4096,
-1,31,31,31,0,0,4096,
-16,16,16,
-10,12,12,
-18,18,18,
-14,14,14,
-
-35100,
-1,24,24,18,-2043,-3548,110,
-0,0,0,0,0,0,0,
-1,2,2,12,0,0,4096,
-1,31,31,31,0,0,4096,
-16,16,16,
-10,12,12,
-18,18,18,
-14,14,14,
-
-36000,
-1,24,24,18,-2043,-3548,110,
-0,0,0,0,0,0,0,
-1,2,2,12,0,0,4096,
-1,31,31,31,0,0,4096,
-16,16,16,
-10,12,12,
-18,18,18,
-14,14,14,
-
-43200,
-1,24,24,18,-2043,-3548,110,
-0,0,0,0,0,0,0,
-1,2,2,12,0,0,4096,
-1,31,31,31,0,0,4096,
-16,16,16,
-10,12,12,
-18,18,18,
-14,14,14,
-
-EOF
+900,
+1,24,24,18,-2043,-3548,110,
+0,0,0,0,0,0,0,
+1,2,2,12,0,0,4096,
+1,31,31,31,0,0,4096,
+16,16,16,
+10,12,12,
+18,18,18,
+14,14,14,
+
+1800,
+1,24,24,18,-2043,-3548,110,
+0,0,0,0,0,0,0,
+1,2,2,12,0,0,4096,
+1,31,31,31,0,0,4096,
+16,16,16,
+10,12,12,
+18,18,18,
+14,14,14,
+
+7200,
+1,24,24,18,-2043,-3548,110,
+0,0,0,0,0,0,0,
+1,2,2,12,0,0,4096,
+1,31,31,31,0,0,4096,
+16,16,16,
+10,12,12,
+18,18,18,
+14,14,14,
+
+8100,
+1,24,24,18,-2043,-3548,110,
+0,0,0,0,0,0,0,
+1,2,2,12,0,0,4096,
+1,31,31,31,0,0,4096,
+16,16,16,
+10,12,12,
+18,18,18,
+14,14,14,
+
+9000,
+1,24,24,18,-2043,-3548,110,
+0,0,0,0,0,0,0,
+1,2,2,12,0,0,4096,
+1,31,31,31,0,0,4096,
+16,16,16,
+10,12,12,
+18,18,18,
+14,14,14,
+
+19800,
+1,24,24,18,-2043,-3548,110,
+0,0,0,0,0,0,0,
+1,2,2,12,0,0,4096,
+1,31,31,31,0,0,4096,
+16,16,16,
+10,12,12,
+18,18,18,
+14,14,14,
+
+20700,
+1,24,24,18,-2043,-3548,110,
+0,0,0,0,0,0,0,
+1,2,2,12,0,0,4096,
+1,31,31,31,0,0,4096,
+16,16,16,
+10,12,12,
+18,18,18,
+14,14,14,
+
+21600,
+1,24,24,18,-2043,-3548,110,
+0,0,0,0,0,0,0,
+1,2,2,12,0,0,4096,
+1,31,31,31,0,0,4096,
+16,16,16,
+10,12,12,
+18,18,18,
+14,14,14,
+
+28800,
+1,24,24,18,-2043,-3548,110,
+0,0,0,0,0,0,0,
+1,2,2,12,0,0,4096,
+1,31,31,31,0,0,4096,
+16,16,16,
+10,12,12,
+18,18,18,
+14,14,14,
+
+29700,
+1,24,24,18,-2043,-3548,110,
+0,0,0,0,0,0,0,
+1,2,2,12,0,0,4096,
+1,31,31,31,0,0,4096,
+16,16,16,
+10,12,12,
+18,18,18,
+14,14,14,
+
+30600,
+1,24,24,18,-2043,-3548,110,
+0,0,0,0,0,0,0,
+1,2,2,12,0,0,4096,
+1,31,31,31,0,0,4096,
+16,16,16,
+10,12,12,
+18,18,18,
+14,14,14,
+
+34200,
+1,24,24,18,-2043,-3548,110,
+0,0,0,0,0,0,0,
+1,2,2,12,0,0,4096,
+1,31,31,31,0,0,4096,
+16,16,16,
+10,12,12,
+18,18,18,
+14,14,14,
+
+35100,
+1,24,24,18,-2043,-3548,110,
+0,0,0,0,0,0,0,
+1,2,2,12,0,0,4096,
+1,31,31,31,0,0,4096,
+16,16,16,
+10,12,12,
+18,18,18,
+14,14,14,
+
+36000,
+1,24,24,18,-2043,-3548,110,
+0,0,0,0,0,0,0,
+1,2,2,12,0,0,4096,
+1,31,31,31,0,0,4096,
+16,16,16,
+10,12,12,
+18,18,18,
+14,14,14,
+
+43200,
+1,24,24,18,-2043,-3548,110,
+0,0,0,0,0,0,0,
+1,2,2,12,0,0,4096,
+1,31,31,31,0,0,4096,
+16,16,16,
+10,12,12,
+18,18,18,
+14,14,14,
+
+EOF
diff --git a/files/data/dt_test_celact.txt b/files/data/dt_test_celact.txt
index 6802e0ed..d286d447 100644
--- a/files/data/dt_test_celact.txt
+++ b/files/data/dt_test_celact.txt
@@ -1,2 +1,2 @@
-0,0,0,0,n,n,0,0, Rg܂
-e,e,e,e,e,e,e,e,
+0,0,0,0,n,n,0,0, Rg܂
+e,e,e,e,e,e,e,e,
diff --git a/files/data/dt_test_res_cell.txt b/files/data/dt_test_res_cell.txt
index b23c8226..3871fd66 100644
--- a/files/data/dt_test_res_cell.txt
+++ b/files/data/dt_test_res_cell.txt
@@ -1,3 +1,3 @@
-2,0,
-data/ug_hero.NCER,0,
-e,e,e,e,
+2,0,
+data/ug_hero.NCER,0,
+e,e,e,e,
diff --git a/files/data/dt_test_res_cellanm.txt b/files/data/dt_test_res_cellanm.txt
index c80a0e2c..a882a909 100644
--- a/files/data/dt_test_res_cellanm.txt
+++ b/files/data/dt_test_res_cellanm.txt
@@ -1,3 +1,3 @@
-3,0,
-data/ug_hero.NANR,0,
-e,e,e,e,
+3,0,
+data/ug_hero.NANR,0,
+e,e,e,e,
diff --git a/files/data/dt_test_res_char.txt b/files/data/dt_test_res_char.txt
index 5af4589b..b1d86da1 100644
--- a/files/data/dt_test_res_char.txt
+++ b/files/data/dt_test_res_char.txt
@@ -1,3 +1,3 @@
-0,0,
-data/ug_boygirl.NCGR,0,3,
-e,e,e,e,
+0,0,
+data/ug_boygirl.NCGR,0,3,
+e,e,e,e,
diff --git a/files/data/dt_test_res_multi.txt b/files/data/dt_test_res_multi.txt
index 94493646..ea0e48e4 100644
--- a/files/data/dt_test_res_multi.txt
+++ b/files/data/dt_test_res_multi.txt
@@ -1,2 +1,2 @@
-4,0,
-e,e,e,e,
+4,0,
+e,e,e,e,
diff --git a/files/data/dt_test_res_multianm.txt b/files/data/dt_test_res_multianm.txt
index da4150b4..35262c6b 100644
--- a/files/data/dt_test_res_multianm.txt
+++ b/files/data/dt_test_res_multianm.txt
@@ -1,2 +1,2 @@
-5,0,
-e,e,e,e,
+5,0,
+e,e,e,e,
diff --git a/files/data/dt_test_res_pltt.txt b/files/data/dt_test_res_pltt.txt
index f7849d4a..745a88a1 100644
--- a/files/data/dt_test_res_pltt.txt
+++ b/files/data/dt_test_res_pltt.txt
@@ -1,3 +1,3 @@
-1,0,
-data/ug_boygirl.NCLR,0,3,1,
-e,e,e,e,
+1,0,
+data/ug_boygirl.NCLR,0,3,1,
+e,e,e,e,
diff --git a/files/data/tmapn_celact.txt b/files/data/tmapn_celact.txt
index a9c7d20a..3720efc6 100644
--- a/files/data/tmapn_celact.txt
+++ b/files/data/tmapn_celact.txt
@@ -1,8 +1,8 @@
-0,1,0,0,n,n,0,0, <-Tu{^Z
-1,0,1,1,n,n,0,2, <-CJ[\Z
-2,0,2,2,n,n,0,2, <-C@Z
-3,0,3,3,n,n,0,2, <-CՃZ
-4,0,4,4,n,n,0,2, <-CXZ
-e,e,e,e,e,e,e,e,
-
-charID,palID,celID,celAnmID,McelID,McelAnmID,vramTransferF,BGPriority
+0,1,0,0,n,n,0,0, <-Tu{^Z
+1,0,1,1,n,n,0,2, <-CJ[\Z
+2,0,2,2,n,n,0,2, <-C@Z
+3,0,3,3,n,n,0,2, <-CՃZ
+4,0,4,4,n,n,0,2, <-CXZ
+e,e,e,e,e,e,e,e,
+
+charID,palID,celID,celAnmID,McelID,McelAnmID,vramTransferF,BGPriority
diff --git a/files/data/tmapn_res_canm.txt b/files/data/tmapn_res_canm.txt
index 0f33864a..23fda8d2 100644
--- a/files/data/tmapn_res_canm.txt
+++ b/files/data/tmapn_res_canm.txt
@@ -1,9 +1,9 @@
-3,1,
-17,6,0,0, <-Tu{^
-17,9,0,1, <-CJ[\
-17,12,0,2, <-C@
-17,15,0,3, <-C
-17,18,0,4, <-CX
-e,e,e,e,
-
-arcFidx,arcDidx,cmpF,myID
+3,1,
+17,6,0,0, <-Tu{^
+17,9,0,1, <-CJ[\
+17,12,0,2, <-C@
+17,15,0,3, <-C
+17,18,0,4, <-CX
+e,e,e,e,
+
+arcFidx,arcDidx,cmpF,myID
diff --git a/files/data/tmapn_res_cell.txt b/files/data/tmapn_res_cell.txt
index 93f58403..fa7b70c6 100644
--- a/files/data/tmapn_res_cell.txt
+++ b/files/data/tmapn_res_cell.txt
@@ -1,10 +1,10 @@
-2,1,
-17,5,0,0, <-Tuʃ{^GtFNg
-17,8,0,1, <-CJ[\
-17,11,0,2, <-C@
-17,14,0,3, <-C
-17,17,0,4, <-CX
-e,e,e,e,
-
-arcFidx,arcDidx,cmpF,myID
-
+2,1,
+17,5,0,0, <-Tuʃ{^GtFNg
+17,8,0,1, <-CJ[\
+17,11,0,2, <-C@
+17,14,0,3, <-C
+17,17,0,4, <-CX
+e,e,e,e,
+
+arcFidx,arcDidx,cmpF,myID
+
diff --git a/files/data/tmapn_res_chr.txt b/files/data/tmapn_res_chr.txt
index 8489deb3..b7b27652 100644
--- a/files/data/tmapn_res_chr.txt
+++ b/files/data/tmapn_res_chr.txt
@@ -1,9 +1,9 @@
-0,1,
-17,4,0,0,2, <-Tu{^
-17,7,0,1,1, <-CJ[\
-17,10,0,2,1, <-C@
-17,13,0,3,1, <-C
-17,16,0,4,1, <-CXACR
-e,e,e,e,e,
-
-arcFidx,arcDidx,cmpF,myID,vramType(1:main,2:sub,3:both)
+0,1,
+17,4,0,0,2, <-Tu{^
+17,7,0,1,1, <-CJ[\
+17,10,0,2,1, <-C@
+17,13,0,3,1, <-C
+17,16,0,4,1, <-CXACR
+e,e,e,e,e,
+
+arcFidx,arcDidx,cmpF,myID,vramType(1:main,2:sub,3:both)
diff --git a/files/data/tmapn_res_pal.txt b/files/data/tmapn_res_pal.txt
index 531916c2..fbfaffb9 100644
--- a/files/data/tmapn_res_pal.txt
+++ b/files/data/tmapn_res_pal.txt
@@ -1,6 +1,6 @@
-1,1,
-17,2,0,0,1,16, <-Cpbg
-17,3,0,1,2,1, <-Tupbg
-e,e,e,e,e,e,
-
-arcFidx,ardDidx,cmpF,myID,vramType(1:main,2:sub,3:both),palNum
+1,1,
+17,2,0,0,1,16, <-Cpbg
+17,3,0,1,2,1, <-Tupbg
+e,e,e,e,e,e,
+
+arcFidx,ardDidx,cmpF,myID,vramType(1:main,2:sub,3:both),palNum
diff --git a/files/poketool/personal/growtbl/grow2bin.c b/files/poketool/personal/growtbl/grow2bin.c
index f46c30cd..5c8b5111 100644
--- a/files/poketool/personal/growtbl/grow2bin.c
+++ b/files/poketool/personal/growtbl/grow2bin.c
@@ -2,26 +2,102 @@
#include <stdlib.h>
#include <string.h>
#include <stdint.h>
+#include <ctype.h>
+
+char * ReadWholeFile(char * filename) {
+ FILE * infile = fopen(filename, "rb");
+ if (infile == NULL) return NULL;
+ fseek(infile, 0, SEEK_END);
+ size_t fsize = ftell(infile);
+ fseek(infile, 0, SEEK_SET);
+ char * ret = malloc(fsize);
+ if (ret != NULL) {
+ if (fread(ret, 1, fsize, infile) != fsize) {
+ free(ret);
+ ret = NULL;
+ }
+ }
+ fclose(infile);
+ return ret;
+}
int main(int argc, char ** argv) {
- FILE * infile = fopen(argv[1], "r");
- char * infname_ext = strrchr(argv[1], '.');
- char * outfname = malloc(infname_ext - argv[1] + 5);
- char * outfname_ext = stpncpy(outfname, argv[1], infname_ext - argv[1]);
- strcpy(outfname_ext, ".bin");
- FILE * outfile = fopen(outfname, "wb");
+ int width = 4;
+ char * buffer = NULL;
+ char * endptr = NULL;
+ FILE * outfile = NULL;
+ char * infname = NULL;
+ for (int i = 1; i < argc; i++) {
+ if (strcmp(argv[i], "-w") == 0 || strcmp(argv[i], "--width") == 0) {
+ ++i;
+ width = strtol(argv[i], &endptr, 10);
+ if (width == 0) {
+ fprintf(stderr, "invalid integer value for %s: %s\n", argv[i - 1], argv[i]);
+ return EXIT_FAILURE;
+ }
+ } else if (strcmp(argv[i], "-o") == 0 || strcmp(argv[i], "--output") == 0) {
+ ++i;
+ outfile = fopen(argv[i], "wb");
+ if (outfile == NULL) {
+ fprintf(stderr, "unable to open file '%s' for writing\n", argv[i]);
+ return EXIT_FAILURE;
+ }
+ } else {
+ if (buffer == NULL)
+ {
+ buffer = ReadWholeFile(argv[i]);
+ }
+ if (buffer == NULL)
+ {
+ fprintf(stderr, "invalid argument: %s\n", argv[i]);
+ return EXIT_FAILURE;
+ }
+ infname = argv[i];
+ }
+ }
+ if (buffer == NULL) {
+ fprintf(stderr, "missing required argument: INFILE\n");
+ return EXIT_FAILURE;
+ }
+ if (outfile == NULL) {
+ char * infname_ext = strrchr(infname, '.');
+ char * outfname = malloc(infname_ext - infname + 5);
+ char * outfname_ext = stpncpy(outfname, argv[1], infname_ext - argv[1]);
+ strcpy(outfname_ext, ".bin");
+ outfile = fopen(outfname, "wb");
+ if (outfile == NULL) {
+ fprintf(stderr, "unable to open file '%s' for writing\n", outfname);
+ return EXIT_FAILURE;
+ }
+ free(outfname);
+ }
uint32_t value;
size_t size = 0;
- char * line = NULL;
+ char * ptr = buffer;
char * end = NULL;
- while (getline(&line, &size, infile) > 0) {
- value = strtoul(line, &end, 10);
- if (value == 0 && end == line) break;
- fwrite(&value, 1, 4, outfile);
+ int lineno = 1;
+ int colno = 1;
+ while (1) {
+ while (isspace(*ptr) || *ptr == ',') {
+ if (*ptr == 0) break;
+ if (*ptr == '\n')
+ { lineno++; colno = 1; }
+ if (*ptr == ',') colno++;
+ ptr++;
+ };
+ if (*ptr == 0) break;
+ value = strtoul(ptr, &end, 10);
+ if (value == 0 && ptr == end) {
+ fprintf(stderr, "syntax error: %d:%d\n", lineno, colno);
+ return EXIT_FAILURE;
+ }
+ if (fwrite(&value, 1, width, outfile) != width) {
+ fprintf(stderr, "write error\n");
+ return EXIT_FAILURE;
+ }
+ ptr = end;
}
- free(line);
- free(outfname);
fclose(outfile);
- fclose(infile);
- return 0;
+ free(buffer);
+ return EXIT_SUCCESS;
}
diff --git a/files/poketool/personal/growtbl/narc_0000.txt b/files/poketool/personal/growtbl/narc_0000.txt
index 04923607..24a29a0f 100644
--- a/files/poketool/personal/growtbl/narc_0000.txt
+++ b/files/poketool/personal/growtbl/narc_0000.txt
@@ -1,101 +1,101 @@
-0
-0
-8
-27
-64
-125
-216
-343
-512
-729
-1000
-1331
-1728
-2197
-2744
-3375
-4096
-4913
-5832
-6859
-8000
-9261
-10648
-12167
-13824
-15625
-17576
-19683
-21952
-24389
-27000
-29791
-32768
-35937
-39304
-42875
-46656
-50653
-54872
-59319
-64000
-68921
-74088
-79507
-85184
-91125
-97336
-103823
-110592
-117649
-125000
-132651
-140608
-148877
-157464
-166375
-175616
-185193
-195112
-205379
-216000
-226981
-238328
-250047
-262144
-274625
-287496
-300763
-314432
-328509
-343000
-357911
-373248
-389017
-405224
-421875
-438976
-456533
-474552
-493039
-512000
-531441
-551368
-571787
-592704
-614125
-636056
-658503
-681472
-704969
-729000
-753571
-778688
-804357
-830584
-857375
-884736
-912673
-941192
-970299
-1000000
+0
+0
+8
+27
+64
+125
+216
+343
+512
+729
+1000
+1331
+1728
+2197
+2744
+3375
+4096
+4913
+5832
+6859
+8000
+9261
+10648
+12167
+13824
+15625
+17576
+19683
+21952
+24389
+27000
+29791
+32768
+35937
+39304
+42875
+46656
+50653
+54872
+59319
+64000
+68921
+74088
+79507
+85184
+91125
+97336
+103823
+110592
+117649
+125000
+132651
+140608
+148877
+157464
+166375
+175616
+185193
+195112
+205379
+216000
+226981
+238328
+250047
+262144
+274625
+287496
+300763
+314432
+328509
+343000
+357911
+373248
+389017
+405224
+421875
+438976
+456533
+474552
+493039
+512000
+531441
+551368
+571787
+592704
+614125
+636056
+658503
+681472
+704969
+729000
+753571
+778688
+804357
+830584
+857375
+884736
+912673
+941192
+970299
+1000000
diff --git a/files/poketool/personal/growtbl/narc_0001.txt b/files/poketool/personal/growtbl/narc_0001.txt
index 5ddc38f2..b12ec561 100644
--- a/files/poketool/personal/growtbl/narc_0001.txt
+++ b/files/poketool/personal/growtbl/narc_0001.txt
@@ -1,101 +1,101 @@
-0
-0
-15
-52
-122
-237
-406
-637
-942
-1326
-1800
-2369
-3041
-3822
-4719
-5737
-6881
-8155
-9564
-11111
-12800
-14632
-16610
-18737
-21012
-23437
-26012
-28737
-31610
-34632
-37800
-41111
-44564
-48155
-51881
-55737
-59719
-63822
-68041
-72369
-76800
-81326
-85942
-90637
-95406
-100237
-105122
-110052
-115015
-120001
-125000
-131324
-137795
-144410
-151165
-158056
-165079
-172229
-179503
-186894
-194400
-202013
-209728
-217540
-225443
-233431
-241496
-249633
-257834
-267406
-276458
-286328
-296358
-305767
-316074
-326531
-336255
-346965
-357812
-367807
-378880
-390077
-400293
-411686
-423190
-433572
-445239
-457001
-467489
-479378
-491346
-501878
-513934
-526049
-536557
-548720
-560922
-571333
-583539
-591882
-600000
+0
+0
+15
+52
+122
+237
+406
+637
+942
+1326
+1800
+2369
+3041
+3822
+4719
+5737
+6881
+8155
+9564
+11111
+12800
+14632
+16610
+18737
+21012
+23437
+26012
+28737
+31610
+34632
+37800
+41111
+44564
+48155
+51881
+55737
+59719
+63822
+68041
+72369
+76800
+81326
+85942
+90637
+95406
+100237
+105122
+110052
+115015
+120001
+125000
+131324
+137795
+144410
+151165
+158056
+165079
+172229
+179503
+186894
+194400
+202013
+209728
+217540
+225443
+233431
+241496
+249633
+257834
+267406
+276458
+286328
+296358
+305767
+316074
+326531
+336255
+346965
+357812
+367807
+378880
+390077
+400293
+411686
+423190
+433572
+445239
+457001
+467489
+479378
+491346
+501878
+513934
+526049
+536557
+548720
+560922
+571333
+583539
+591882
+600000
diff --git a/files/poketool/personal/growtbl/narc_0002.txt b/files/poketool/personal/growtbl/narc_0002.txt
index d2f6f13a..be1dba64 100644
--- a/files/poketool/personal/growtbl/narc_0002.txt
+++ b/files/poketool/personal/growtbl/narc_0002.txt
@@ -1,101 +1,101 @@
-0
-0
-4
-13
-32
-65
-112
-178
-276
-393
-540
-745
-967
-1230
-1591
-1957
-2457
-3046
-3732
-4526
-5440
-6482
-7666
-9003
-10506
-12187
-14060
-16140
-18439
-20974
-23760
-26811
-30146
-33780
-37731
-42017
-46656
-50653
-55969
-60505
-66560
-71677
-78533
-84277
-91998
-98415
-107069
-114205
-123863
-131766
-142500
-151222
-163105
-172697
-185807
-196322
-210739
-222231
-238036
-250562
-267840
-281456
-300293
-315059
-335544
-351520
-373744
-390991
-415050
-433631
-459620
-479600
-507617
-529063
-559209
-582187
-614566
-639146
-673863
-700115
-737280
-765275
-804997
-834809
-877201
-908905
-954084
-987754
-1035837
-1071552
-1122660
-1160499
-1214753
-1254796
-1312322
-1354652
-1415577
-1460276
-1524731
-1571884
-1640000
+0
+0
+4
+13
+32
+65
+112
+178
+276
+393
+540
+745
+967
+1230
+1591
+1957
+2457
+3046
+3732
+4526
+5440
+6482
+7666
+9003
+10506
+12187
+14060
+16140
+18439
+20974
+23760
+26811
+30146
+33780
+37731
+42017
+46656
+50653
+55969
+60505
+66560
+71677
+78533
+84277
+91998
+98415
+107069
+114205
+123863
+131766
+142500
+151222
+163105
+172697
+185807
+196322
+210739
+222231
+238036
+250562
+267840
+281456
+300293
+315059
+335544
+351520
+373744
+390991
+415050
+433631
+459620
+479600
+507617
+529063
+559209
+582187
+614566
+639146
+673863
+700115
+737280
+765275
+804997
+834809
+877201
+908905
+954084
+987754
+1035837
+1071552
+1122660
+1160499
+1214753
+1254796
+1312322
+1354652
+1415577
+1460276
+1524731
+1571884
+1640000
diff --git a/files/poketool/personal/growtbl/narc_0003.txt b/files/poketool/personal/growtbl/narc_0003.txt
index 77c5640e..eff71429 100644
--- a/files/poketool/personal/growtbl/narc_0003.txt
+++ b/files/poketool/personal/growtbl/narc_0003.txt
@@ -1,101 +1,101 @@
-0
-0
-9
-57
-96
-135
-179
-236
-314
-419
-560
-742
-973
-1261
-1612
-2035
-2535
-3120
-3798
-4575
-5460
-6458
-7577
-8825
-10208
-11735
-13411
-15244
-17242
-19411
-21760
-24294
-27021
-29949
-33084
-36435
-40007
-43808
-47846
-52127
-56660
-61450
-66505
-71833
-77440
-83335
-89523
-96012
-102810
-109923
-117360
-125126
-133229
-141677
-150476
-159635
-169159
-179056
-189334
-199999
-211060
-222522
-234393
-246681
-259392
-272535
-286115
-300140
-314618
-329555
-344960
-360838
-377197
-394045
-411388
-429235
-447591
-466464
-485862
-505791
-526260
-547274
-568841
-590969
-613664
-636935
-660787
-685228
-710266
-735907
-762160
-789030
-816525
-844653
-873420
-902835
-932903
-963632
-995030
-1027103
-1059860
+0
+0
+9
+57
+96
+135
+179
+236
+314
+419
+560
+742
+973
+1261
+1612
+2035
+2535
+3120
+3798
+4575
+5460
+6458
+7577
+8825
+10208
+11735
+13411
+15244
+17242
+19411
+21760
+24294
+27021
+29949
+33084
+36435
+40007
+43808
+47846
+52127
+56660
+61450
+66505
+71833
+77440
+83335
+89523
+96012
+102810
+109923
+117360
+125126
+133229
+141677
+150476
+159635
+169159
+179056
+189334
+199999
+211060
+222522
+234393
+246681
+259392
+272535
+286115
+300140
+314618
+329555
+344960
+360838
+377197
+394045
+411388
+429235
+447591
+466464
+485862
+505791
+526260
+547274
+568841
+590969
+613664
+636935
+660787
+685228
+710266
+735907
+762160
+789030
+816525
+844653
+873420
+902835
+932903
+963632
+995030
+1027103
+1059860
diff --git a/files/poketool/personal/growtbl/narc_0004.txt b/files/poketool/personal/growtbl/narc_0004.txt
index c8ceec25..47bb6f6c 100644
--- a/files/poketool/personal/growtbl/narc_0004.txt
+++ b/files/poketool/personal/growtbl/narc_0004.txt
@@ -1,101 +1,101 @@
-0
-0
-6
-21
-51
-100
-172
-274
-409
-583
-800
-1064
-1382
-1757
-2195
-2700
-3276
-3930
-4665
-5487
-6400
-7408
-8518
-9733
-11059
-12500
-14060
-15746
-17561
-19511
-21600
-23832
-26214
-28749
-31443
-34300
-37324
-40522
-43897
-47455
-51200
-55136
-59270
-63605
-68147
-72900
-77868
-83058
-88473
-94119
-100000
-106120
-112486
-119101
-125971
-133100
-140492
-148154
-156089
-164303
-172800
-181584
-190662
-200037
-209715
-219700
-229996
-240610
-251545
-262807
-274400
-286328
-298598
-311213
-324179
-337500
-351180
-365226
-379641
-394431
-409600
-425152
-441094
-457429
-474163
-491300
-508844
-526802
-545177
-563975
-583200
-602856
-622950
-643485
-664467
-685900
-707788
-730138
-752953
-776239
-800000
+0
+0
+6
+21
+51
+100
+172
+274
+409
+583
+800
+1064
+1382
+1757
+2195
+2700
+3276
+3930
+4665
+5487
+6400
+7408
+8518
+9733
+11059
+12500
+14060
+15746
+17561
+19511
+21600
+23832
+26214
+28749
+31443
+34300
+37324
+40522
+43897
+47455
+51200
+55136
+59270
+63605
+68147
+72900
+77868
+83058
+88473
+94119
+100000
+106120
+112486
+119101
+125971
+133100
+140492
+148154
+156089
+164303
+172800
+181584
+190662
+200037
+209715
+219700
+229996
+240610
+251545
+262807
+274400
+286328
+298598
+311213
+324179
+337500
+351180
+365226
+379641
+394431
+409600
+425152
+441094
+457429
+474163
+491300
+508844
+526802
+545177
+563975
+583200
+602856
+622950
+643485
+664467
+685900
+707788
+730138
+752953
+776239
+800000
diff --git a/files/poketool/personal/growtbl/narc_0005.txt b/files/poketool/personal/growtbl/narc_0005.txt
index 8f8dca5b..0dc0f8f7 100644
--- a/files/poketool/personal/growtbl/narc_0005.txt
+++ b/files/poketool/personal/growtbl/narc_0005.txt
@@ -1,101 +1,101 @@
-0
-0
-10
-33
-80
-156
-270
-428
-640
-911
-1250
-1663
-2160
-2746
-3430
-4218
-5120
-6141
-7290
-8573
-10000
-11576
-13310
-15208
-17280
-19531
-21970
-24603
-27440
-30486
-33750
-37238
-40960
-44921
-49130
-53593
-58320
-63316
-68590
-74148
-80000
-86151
-92610
-99383
-106480
-113906
-121670
-129778
-138240
-147061
-156250
-165813
-175760
-186096
-196830
-207968
-219520
-231491
-243890
-256723
-270000
-283726
-297910
-312558
-327680
-343281
-359370
-375953
-393040
-410636
-428750
-447388
-466560
-486271
-506530
-527343
-548720
-570666
-593190
-616298
-640000
-664301
-689210
-714733
-740880
-767656
-795070
-823128
-851840
-881211
-911250
-941963
-973360
-1005446
-1038230
-1071718
-1105920
-1140841
-1176490
-1212873
-1250000
+0
+0
+10
+33
+80
+156
+270
+428
+640
+911
+1250
+1663
+2160
+2746
+3430
+4218
+5120
+6141
+7290
+8573
+10000
+11576
+13310
+15208
+17280
+19531
+21970
+24603
+27440
+30486
+33750
+37238
+40960
+44921
+49130
+53593
+58320
+63316
+68590
+74148
+80000
+86151
+92610
+99383
+106480
+113906
+121670
+129778
+138240
+147061
+156250
+165813
+175760
+186096
+196830
+207968
+219520
+231491
+243890
+256723
+270000
+283726
+297910
+312558
+327680
+343281
+359370
+375953
+393040
+410636
+428750
+447388
+466560
+486271
+506530
+527343
+548720
+570666
+593190
+616298
+640000
+664301
+689210
+714733
+740880
+767656
+795070
+823128
+851840
+881211
+911250
+941963
+973360
+1005446
+1038230
+1071718
+1105920
+1140841
+1176490
+1212873
+1250000
diff --git a/files/poketool/personal/growtbl/narc_0006.txt b/files/poketool/personal/growtbl/narc_0006.txt
index 04923607..24a29a0f 100644
--- a/files/poketool/personal/growtbl/narc_0006.txt
+++ b/files/poketool/personal/growtbl/narc_0006.txt
@@ -1,101 +1,101 @@
-0
-0
-8
-27
-64
-125
-216
-343
-512
-729
-1000
-1331
-1728
-2197
-2744
-3375
-4096
-4913
-5832
-6859
-8000
-9261
-10648
-12167
-13824
-15625
-17576
-19683
-21952
-24389
-27000
-29791
-32768
-35937
-39304
-42875
-46656
-50653
-54872
-59319
-64000
-68921
-74088
-79507
-85184
-91125
-97336
-103823
-110592
-117649
-125000
-132651
-140608
-148877
-157464
-166375
-175616
-185193
-195112
-205379
-216000
-226981
-238328
-250047
-262144
-274625
-287496
-300763
-314432
-328509
-343000
-357911
-373248
-389017
-405224
-421875
-438976
-456533
-474552
-493039
-512000
-531441
-551368
-571787
-592704
-614125
-636056
-658503
-681472
-704969
-729000
-753571
-778688
-804357
-830584
-857375
-884736
-912673
-941192
-970299
-1000000
+0
+0
+8
+27
+64
+125
+216
+343
+512
+729
+1000
+1331
+1728
+2197
+2744
+3375
+4096
+4913
+5832
+6859
+8000
+9261
+10648
+12167
+13824
+15625
+17576
+19683
+21952
+24389
+27000
+29791
+32768
+35937
+39304
+42875
+46656
+50653
+54872
+59319
+64000
+68921
+74088
+79507
+85184
+91125
+97336
+103823
+110592
+117649
+125000
+132651
+140608
+148877
+157464
+166375
+175616
+185193
+195112
+205379
+216000
+226981
+238328
+250047
+262144
+274625
+287496
+300763
+314432
+328509
+343000
+357911
+373248
+389017
+405224
+421875
+438976
+456533
+474552
+493039
+512000
+531441
+551368
+571787
+592704
+614125
+636056
+658503
+681472
+704969
+729000
+753571
+778688
+804357
+830584
+857375
+884736
+912673
+941192
+970299
+1000000
diff --git a/files/poketool/personal/growtbl/narc_0007.txt b/files/poketool/personal/growtbl/narc_0007.txt
index 04923607..24a29a0f 100644
--- a/files/poketool/personal/growtbl/narc_0007.txt
+++ b/files/poketool/personal/growtbl/narc_0007.txt
@@ -1,101 +1,101 @@
-0
-0
-8
-27
-64
-125
-216
-343
-512
-729
-1000
-1331
-1728
-2197
-2744
-3375
-4096
-4913
-5832
-6859
-8000
-9261
-10648
-12167
-13824
-15625
-17576
-19683
-21952
-24389
-27000
-29791
-32768
-35937
-39304
-42875
-46656
-50653
-54872
-59319
-64000
-68921
-74088
-79507
-85184
-91125
-97336
-103823
-110592
-117649
-125000
-132651
-140608
-148877
-157464
-166375
-175616
-185193
-195112
-205379
-216000
-226981
-238328
-250047
-262144
-274625
-287496
-300763
-314432
-328509
-343000
-357911
-373248
-389017
-405224
-421875
-438976
-456533
-474552
-493039
-512000
-531441
-551368
-571787
-592704
-614125
-636056
-658503
-681472
-704969
-729000
-753571
-778688
-804357
-830584
-857375
-884736
-912673
-941192
-970299
-1000000
+0
+0
+8
+27
+64
+125
+216
+343
+512
+729
+1000
+1331
+1728
+2197
+2744
+3375
+4096
+4913
+5832
+6859
+8000
+9261
+10648
+12167
+13824
+15625
+17576
+19683
+21952
+24389
+27000
+29791
+32768
+35937
+39304
+42875
+46656
+50653
+54872
+59319
+64000
+68921
+74088
+79507
+85184
+91125
+97336
+103823
+110592
+117649
+125000
+132651
+140608
+148877
+157464
+166375
+175616
+185193
+195112
+205379
+216000
+226981
+238328
+250047
+262144
+274625
+287496
+300763
+314432
+328509
+343000
+357911
+373248
+389017
+405224
+421875
+438976
+456533
+474552
+493039
+512000
+531441
+551368
+571787
+592704
+614125
+636056
+658503
+681472
+704969
+729000
+753571
+778688
+804357
+830584
+857375
+884736
+912673
+941192
+970299
+1000000
diff --git a/filesystem.mk b/filesystem.mk
index e5d2731d..b43877db 100644
--- a/filesystem.mk
+++ b/filesystem.mk
@@ -273,3 +273,15 @@ NITROFS_FILES = $(NITROFS_FILES:poketool/personal/personal.narc=poketool/persona
endif
HOSTFS_FILES = $(NITROFS_FILES:%=files/%)
+
+%.narc:
+ $(KNARC) -d $(basename $@)/ -p $@
+
+%.arc:
+ $(KNARC) -d $(basename $@)/ -p $@
+
+files/poketool/personal/pms.narc: ;
+
+files/poketool/personal/growtbl.narc: $(wildcard files/poketool/personal/growtbl/*.txt)
+ $(MAKE) -C $(<D)
+ $(NARCCOMP) -o $@ -p 255 $(^:%.txt=%.bin)
diff --git a/include/constants/species.h b/include/constants/species.h
new file mode 100644
index 00000000..fcb9b6b7
--- /dev/null
+++ b/include/constants/species.h
@@ -0,0 +1,520 @@
+#ifndef GUARD_CONSTANTS_SPECIES_H
+#define GUARD_CONSTANTS_SPECIES_H
+
+#define SPECIES_NONE 0
+#define SPECIES_BULBASAUR 1
+#define SPECIES_IVYSAUR 2
+#define SPECIES_VENUSAUR 3
+#define SPECIES_CHARMANDER 4
+#define SPECIES_CHARMELEON 5
+#define SPECIES_CHARIZARD 6
+#define SPECIES_SQUIRTLE 7
+#define SPECIES_WARTORTLE 8
+#define SPECIES_BLASTOISE 9
+#define SPECIES_CATERPIE 10
+#define SPECIES_METAPOD 11
+#define SPECIES_BUTTERFREE 12
+#define SPECIES_WEEDLE 13
+#define SPECIES_KAKUNA 14
+#define SPECIES_BEEDRILL 15
+#define SPECIES_PIDGEY 16
+#define SPECIES_PIDGEOTTO 17
+#define SPECIES_PIDGEOT 18
+#define SPECIES_RATTATA 19
+#define SPECIES_RATICATE 20
+#define SPECIES_SPEAROW 21
+#define SPECIES_FEAROW 22
+#define SPECIES_EKANS 23
+#define SPECIES_ARBOK 24
+#define SPECIES_PIKACHU 25
+#define SPECIES_RAICHU 26
+#define SPECIES_SANDSHREW 27
+#define SPECIES_SANDSLASH 28
+#define SPECIES_NIDORAN_F 29
+#define SPECIES_NIDORINA 30
+#define SPECIES_NIDOQUEEN 31
+#define SPECIES_NIDORAN_M 32
+#define SPECIES_NIDORINO 33
+#define SPECIES_NIDOKING 34
+#define SPECIES_CLEFAIRY 35
+#define SPECIES_CLEFABLE 36
+#define SPECIES_VULPIX 37
+#define SPECIES_NINETALES 38
+#define SPECIES_JIGGLYPUFF 39
+#define SPECIES_WIGGLYTUFF 40
+#define SPECIES_ZUBAT 41
+#define SPECIES_GOLBAT 42
+#define SPECIES_ODDISH 43
+#define SPECIES_GLOOM 44
+#define SPECIES_VILEPLUME 45
+#define SPECIES_PARAS 46
+#define SPECIES_PARASECT 47
+#define SPECIES_VENONAT 48
+#define SPECIES_VENOMOTH 49
+#define SPECIES_DIGLETT 50
+#define SPECIES_DUGTRIO 51
+#define SPECIES_MEOWTH 52
+#define SPECIES_PERSIAN 53
+#define SPECIES_PSYDUCK 54
+#define SPECIES_GOLDUCK 55
+#define SPECIES_MANKEY 56
+#define SPECIES_PRIMEAPE 57
+#define SPECIES_GROWLITHE 58
+#define SPECIES_ARCANINE 59
+#define SPECIES_POLIWAG 60
+#define SPECIES_POLIWHIRL 61
+#define SPECIES_POLIWRATH 62
+#define SPECIES_ABRA 63
+#define SPECIES_KADABRA 64
+#define SPECIES_ALAKAZAM 65
+#define SPECIES_MACHOP 66
+#define SPECIES_MACHOKE 67
+#define SPECIES_MACHAMP 68
+#define SPECIES_BELLSPROUT 69
+#define SPECIES_WEEPINBELL 70
+#define SPECIES_VICTREEBEL 71
+#define SPECIES_TENTACOOL 72
+#define SPECIES_TENTACRUEL 73
+#define SPECIES_GEODUDE 74
+#define SPECIES_GRAVELER 75
+#define SPECIES_GOLEM 76
+#define SPECIES_PONYTA 77
+#define SPECIES_RAPIDASH 78
+#define SPECIES_SLOWPOKE 79
+#define SPECIES_SLOWBRO 80
+#define SPECIES_MAGNEMITE 81
+#define SPECIES_MAGNETON 82
+#define SPECIES_FARFETCHD 83
+#define SPECIES_DODUO 84
+#define SPECIES_DODRIO 85
+#define SPECIES_SEEL 86
+#define SPECIES_DEWGONG 87
+#define SPECIES_GRIMER 88
+#define SPECIES_MUK 89
+#define SPECIES_SHELLDER 90
+#define SPECIES_CLOYSTER 91
+#define SPECIES_GASTLY 92
+#define SPECIES_HAUNTER 93
+#define SPECIES_GENGAR 94
+#define SPECIES_ONIX 95
+#define SPECIES_DROWZEE 96
+#define SPECIES_HYPNO 97
+#define SPECIES_KRABBY 98
+#define SPECIES_KINGLER 99
+#define SPECIES_VOLTORB 100
+#define SPECIES_ELECTRODE 101
+#define SPECIES_EXEGGCUTE 102
+#define SPECIES_EXEGGUTOR 103
+#define SPECIES_CUBONE 104
+#define SPECIES_MAROWAK 105
+#define SPECIES_HITMONLEE 106
+#define SPECIES_HITMONCHAN 107
+#define SPECIES_LICKITUNG 108
+#define SPECIES_KOFFING 109
+#define SPECIES_WEEZING 110
+#define SPECIES_RHYHORN 111
+#define SPECIES_RHYDON 112
+#define SPECIES_CHANSEY 113
+#define SPECIES_TANGELA 114
+#define SPECIES_KANGASKHAN 115
+#define SPECIES_HORSEA 116
+#define SPECIES_SEADRA 117
+#define SPECIES_GOLDEEN 118
+#define SPECIES_SEAKING 119
+#define SPECIES_STARYU 120
+#define SPECIES_STARMIE 121
+#define SPECIES_MR_MIME 122
+#define SPECIES_SCYTHER 123
+#define SPECIES_JYNX 124
+#define SPECIES_ELECTABUZZ 125
+#define SPECIES_MAGMAR 126
+#define SPECIES_PINSIR 127
+#define SPECIES_TAUROS 128
+#define SPECIES_MAGIKARP 129
+#define SPECIES_GYARADOS 130
+#define SPECIES_LAPRAS 131
+#define SPECIES_DITTO 132
+#define SPECIES_EEVEE 133
+#define SPECIES_VAPOREON 134
+#define SPECIES_JOLTEON 135
+#define SPECIES_FLAREON 136
+#define SPECIES_PORYGON 137
+#define SPECIES_OMANYTE 138
+#define SPECIES_OMASTAR 139
+#define SPECIES_KABUTO 140
+#define SPECIES_KABUTOPS 141
+#define SPECIES_AERODACTYL 142
+#define SPECIES_SNORLAX 143
+#define SPECIES_ARTICUNO 144
+#define SPECIES_ZAPDOS 145
+#define SPECIES_MOLTRES 146
+#define SPECIES_DRATINI 147
+#define SPECIES_DRAGONAIR 148
+#define SPECIES_DRAGONITE 149
+#define SPECIES_MEWTWO 150
+#define SPECIES_MEW 151
+
+#define KANTO_DEX_COUNT SPECIES_MEW
+
+#define SPECIES_CHIKORITA 152
+#define SPECIES_BAYLEEF 153
+#define SPECIES_MEGANIUM 154
+#define SPECIES_CYNDAQUIL 155
+#define SPECIES_QUILAVA 156
+#define SPECIES_TYPHLOSION 157
+#define SPECIES_TOTODILE 158
+#define SPECIES_CROCONAW 159
+#define SPECIES_FERALIGATR 160
+#define SPECIES_SENTRET 161
+#define SPECIES_FURRET 162
+#define SPECIES_HOOTHOOT 163
+#define SPECIES_NOCTOWL 164
+#define SPECIES_LEDYBA 165
+#define SPECIES_LEDIAN 166
+#define SPECIES_SPINARAK 167
+#define SPECIES_ARIADOS 168
+#define SPECIES_CROBAT 169
+#define SPECIES_CHINCHOU 170
+#define SPECIES_LANTURN 171
+#define SPECIES_PICHU 172
+#define SPECIES_CLEFFA 173
+#define SPECIES_IGGLYBUFF 174
+#define SPECIES_TOGEPI 175
+#define SPECIES_TOGETIC 176
+#define SPECIES_NATU 177
+#define SPECIES_XATU 178
+#define SPECIES_MAREEP 179
+#define SPECIES_FLAAFFY 180
+#define SPECIES_AMPHAROS 181
+#define SPECIES_BELLOSSOM 182
+#define SPECIES_MARILL 183
+#define SPECIES_AZUMARILL 184
+#define SPECIES_SUDOWOODO 185
+#define SPECIES_POLITOED 186
+#define SPECIES_HOPPIP 187
+#define SPECIES_SKIPLOOM 188
+#define SPECIES_JUMPLUFF 189
+#define SPECIES_AIPOM 190
+#define SPECIES_SUNKERN 191
+#define SPECIES_SUNFLORA 192
+#define SPECIES_YANMA 193
+#define SPECIES_WOOPER 194
+#define SPECIES_QUAGSIRE 195
+#define SPECIES_ESPEON 196
+#define SPECIES_UMBREON 197
+#define SPECIES_MURKROW 198
+#define SPECIES_SLOWKING 199
+#define SPECIES_MISDREAVUS 200
+#define SPECIES_UNOWN 201
+#define SPECIES_WOBBUFFET 202
+#define SPECIES_GIRAFARIG 203
+#define SPECIES_PINECO 204
+#define SPECIES_FORRETRESS 205
+#define SPECIES_DUNSPARCE 206
+#define SPECIES_GLIGAR 207
+#define SPECIES_STEELIX 208
+#define SPECIES_SNUBBULL 209
+#define SPECIES_GRANBULL 210
+#define SPECIES_QWILFISH 211
+#define SPECIES_SCIZOR 212
+#define SPECIES_SHUCKLE 213
+#define SPECIES_HERACROSS 214
+#define SPECIES_SNEASEL 215
+#define SPECIES_TEDDIURSA 216
+#define SPECIES_URSARING 217
+#define SPECIES_SLUGMA 218
+#define SPECIES_MAGCARGO 219
+#define SPECIES_SWINUB 220
+#define SPECIES_PILOSWINE 221
+#define SPECIES_CORSOLA 222
+#define SPECIES_REMORAID 223
+#define SPECIES_OCTILLERY 224
+#define SPECIES_DELIBIRD 225
+#define SPECIES_MANTINE 226
+#define SPECIES_SKARMORY 227
+#define SPECIES_HOUNDOUR 228
+#define SPECIES_HOUNDOOM 229
+#define SPECIES_KINGDRA 230
+#define SPECIES_PHANPY 231
+#define SPECIES_DONPHAN 232
+#define SPECIES_PORYGON2 233
+#define SPECIES_STANTLER 234
+#define SPECIES_SMEARGLE 235
+#define SPECIES_TYROGUE 236
+#define SPECIES_HITMONTOP 237
+#define SPECIES_SMOOCHUM 238
+#define SPECIES_ELEKID 239
+#define SPECIES_MAGBY 240
+#define SPECIES_MILTANK 241
+#define SPECIES_BLISSEY 242
+#define SPECIES_RAIKOU 243
+#define SPECIES_ENTEI 244
+#define SPECIES_SUICUNE 245
+#define SPECIES_LARVITAR 246
+#define SPECIES_PUPITAR 247
+#define SPECIES_TYRANITAR 248
+#define SPECIES_LUGIA 249
+#define SPECIES_HO_OH 250
+#define SPECIES_CELEBI 251
+
+#define JOHTO_DEX_COUNT SPECIES_CELEBI
+
+#define SPECIES_TREECKO 252
+#define SPECIES_GROVYLE 253
+#define SPECIES_SCEPTILE 254
+#define SPECIES_TORCHIC 255
+#define SPECIES_COMBUSKEN 256
+#define SPECIES_BLAZIKEN 257
+#define SPECIES_MUDKIP 258
+#define SPECIES_MARSHTOMP 259
+#define SPECIES_SWAMPERT 260
+#define SPECIES_POOCHYENA 261
+#define SPECIES_MIGHTYENA 262
+#define SPECIES_ZIGZAGOON 263
+#define SPECIES_LINOONE 264
+#define SPECIES_WURMPLE 265
+#define SPECIES_SILCOON 266
+#define SPECIES_BEAUTIFLY 267
+#define SPECIES_CASCOON 268
+#define SPECIES_DUSTOX 269
+#define SPECIES_LOTAD 270
+#define SPECIES_LOMBRE 271
+#define SPECIES_LUDICOLO 272
+#define SPECIES_SEEDOT 273
+#define SPECIES_NUZLEAF 274
+#define SPECIES_SHIFTRY 275
+#define SPECIES_TAILLOW 276
+#define SPECIES_SWELLOW 277
+#define SPECIES_WINGULL 278
+#define SPECIES_PELIPPER 279
+#define SPECIES_RALTS 280
+#define SPECIES_KIRLIA 281
+#define SPECIES_GARDEVOIR 282
+#define SPECIES_SURSKIT 283
+#define SPECIES_MASQUERAIN 284
+#define SPECIES_SHROOMISH 285
+#define SPECIES_BRELOOM 286
+#define SPECIES_SLAKOTH 287
+#define SPECIES_VIGOROTH 288
+#define SPECIES_SLAKING 289
+#define SPECIES_NINCADA 290
+#define SPECIES_NINJASK 291
+#define SPECIES_SHEDINJA 292
+#define SPECIES_WHISMUR 293
+#define SPECIES_LOUDRED 294
+#define SPECIES_EXPLOUD 295
+#define SPECIES_MAKUHITA 296
+#define SPECIES_HARIYAMA 297
+#define SPECIES_AZURILL 298
+#define SPECIES_NOSEPASS 299
+#define SPECIES_SKITTY 300
+#define SPECIES_DELCATTY 301
+#define SPECIES_SABLEYE 302
+#define SPECIES_MAWILE 303
+#define SPECIES_ARON 304
+#define SPECIES_LAIRON 305
+#define SPECIES_AGGRON 306
+#define SPECIES_MEDITITE 307
+#define SPECIES_MEDICHAM 308
+#define SPECIES_ELECTRIKE 309
+#define SPECIES_MANECTRIC 310
+#define SPECIES_PLUSLE 311
+#define SPECIES_MINUN 312
+#define SPECIES_VOLBEAT 313
+#define SPECIES_ILLUMISE 314
+#define SPECIES_ROSELIA 315
+#define SPECIES_GULPIN 316
+#define SPECIES_SWALOT 317
+#define SPECIES_CARVANHA 318
+#define SPECIES_SHARPEDO 319
+#define SPECIES_WAILMER 320
+#define SPECIES_WAILORD 321
+#define SPECIES_NUMEL 322
+#define SPECIES_CAMERUPT 323
+#define SPECIES_TORKOAL 324
+#define SPECIES_SPOINK 325
+#define SPECIES_GRUMPIG 326
+#define SPECIES_SPINDA 327
+#define SPECIES_TRAPINCH 328
+#define SPECIES_VIBRAVA 329
+#define SPECIES_FLYGON 330
+#define SPECIES_CACNEA 331
+#define SPECIES_CACTURNE 332
+#define SPECIES_SWABLU 333
+#define SPECIES_ALTARIA 334
+#define SPECIES_ZANGOOSE 335
+#define SPECIES_SEVIPER 336
+#define SPECIES_LUNATONE 337
+#define SPECIES_SOLROCK 338
+#define SPECIES_BARBOACH 339
+#define SPECIES_WHISCASH 340
+#define SPECIES_CORPHISH 341
+#define SPECIES_CRAWDAUNT 342
+#define SPECIES_BALTOY 343
+#define SPECIES_CLAYDOL 344
+#define SPECIES_LILEEP 345
+#define SPECIES_CRADILY 346
+#define SPECIES_ANORITH 347
+#define SPECIES_ARMALDO 348
+#define SPECIES_FEEBAS 349
+#define SPECIES_MILOTIC 350
+#define SPECIES_CASTFORM 351
+#define SPECIES_KECLEON 352
+#define SPECIES_SHUPPET 353
+#define SPECIES_BANETTE 354
+#define SPECIES_DUSKULL 355
+#define SPECIES_DUSCLOPS 356
+#define SPECIES_TROPIUS 357
+#define SPECIES_CHIMECHO 358
+#define SPECIES_ABSOL 359
+#define SPECIES_WYNAUT 360
+#define SPECIES_SNORUNT 361
+#define SPECIES_GLALIE 362
+#define SPECIES_SPHEAL 363
+#define SPECIES_SEALEO 364
+#define SPECIES_WALREIN 365
+#define SPECIES_CLAMPERL 366
+#define SPECIES_HUNTAIL 367
+#define SPECIES_GOREBYSS 368
+#define SPECIES_RELICANTH 369
+#define SPECIES_LUVDISC 370
+#define SPECIES_BAGON 371
+#define SPECIES_SHELGON 372
+#define SPECIES_SALAMENCE 373
+#define SPECIES_BELDUM 374
+#define SPECIES_METANG 375
+#define SPECIES_METAGROSS 376
+#define SPECIES_REGIROCK 377
+#define SPECIES_REGICE 378
+#define SPECIES_REGISTEEL 379
+#define SPECIES_LATIAS 380
+#define SPECIES_LATIOS 381
+#define SPECIES_KYOGRE 382
+#define SPECIES_GROUDON 383
+#define SPECIES_RAYQUAZA 384
+#define SPECIES_JIRACHI 385
+#define SPECIES_DEOXYS 386
+
+#define HOENN_DEX_COUNT SPECIES_DEOXYS
+
+#define SPECIES_TURTWIG 387
+#define SPECIES_GROTLE 388
+#define SPECIES_TORTERRA 389
+#define SPECIES_CHIMCHAR 390
+#define SPECIES_MONFERNO 391
+#define SPECIES_INFERNAPE 392
+#define SPECIES_PIPLUP 393
+#define SPECIES_PRINPLUP 394
+#define SPECIES_EMPOLEON 395
+#define SPECIES_STARLY 396
+#define SPECIES_STARAVIA 397
+#define SPECIES_STARAPTOR 398
+#define SPECIES_BIDOOF 399
+#define SPECIES_BIBAREL 400
+#define SPECIES_KRICKETOT 401
+#define SPECIES_KRICKETUNE 402
+#define SPECIES_SHINX 403
+#define SPECIES_LUXIO 404
+#define SPECIES_LUXRAY 405
+#define SPECIES_BUDEW 406
+#define SPECIES_ROSERADE 407
+#define SPECIES_CRANIDOS 408
+#define SPECIES_RAMPARDOS 409
+#define SPECIES_SHIELDON 410
+#define SPECIES_BASTIODON 411
+#define SPECIES_BURMY 412
+#define SPECIES_WORMADAM 413
+#define SPECIES_MOTHIM 414
+#define SPECIES_COMBEE 415
+#define SPECIES_VESPIQUEN 416
+#define SPECIES_PACHIRISU 417
+#define SPECIES_BUIZEL 418
+#define SPECIES_FLOATZEL 419
+#define SPECIES_CHERUBI 420
+#define SPECIES_CHERRIM 421
+#define SPECIES_SHELLOS 422
+#define SPECIES_GASTRODON 423
+#define SPECIES_AMBIPOM 424
+#define SPECIES_DRIFLOON 425
+#define SPECIES_DRIFBLIM 426
+#define SPECIES_BUNEARY 427
+#define SPECIES_LOPUNNY 428
+#define SPECIES_MISMAGIUS 429
+#define SPECIES_HONCHKROW 430
+#define SPECIES_GLAMEOW 431
+#define SPECIES_PURUGLY 432
+#define SPECIES_CHINGLING 433
+#define SPECIES_STUNKY 434
+#define SPECIES_SKUNTANK 435
+#define SPECIES_BRONZOR 436
+#define SPECIES_BRONZONG 437
+#define SPECIES_BONSLY 438
+#define SPECIES_MIME_JR 439
+#define SPECIES_HAPPINY 440
+#define SPECIES_CHATOT 441
+#define SPECIES_SPIRITOMB 442
+#define SPECIES_GIBLE 443
+#define SPECIES_GABITE 444
+#define SPECIES_GARCHOMP 445
+#define SPECIES_MUNCHLAX 446
+#define SPECIES_RIOLU 447
+#define SPECIES_LUCARIO 448
+#define SPECIES_HIPPOPOTAS 449
+#define SPECIES_HIPPOWDON 450
+#define SPECIES_SKORUPI 451
+#define SPECIES_DRAPION 452
+#define SPECIES_CROAGUNK 453
+#define SPECIES_TOXICROAK 454
+#define SPECIES_CARNIVINE 455
+#define SPECIES_FINNEON 456
+#define SPECIES_LUMINEON 457
+#define SPECIES_MANTYKE 458
+#define SPECIES_SNOVER 459
+#define SPECIES_ABOMASNOW 460
+#define SPECIES_WEAVILE 461
+#define SPECIES_MAGNEZONE 462
+#define SPECIES_LICKILICKY 463
+#define SPECIES_RHYPERIOR 464
+#define SPECIES_TANGROWTH 465
+#define SPECIES_ELECTIVIRE 466
+#define SPECIES_MAGMORTAR 467
+#define SPECIES_TOGEKISS 468
+#define SPECIES_YANMEGA 469
+#define SPECIES_LEAFEON 470
+#define SPECIES_GLACEON 471
+#define SPECIES_GLISCOR 472
+#define SPECIES_MAMOSWINE 473
+#define SPECIES_PORYGON_Z 474
+#define SPECIES_GALLADE 475
+#define SPECIES_PROBOPASS 476
+#define SPECIES_DUSKNOIR 477
+#define SPECIES_FROSLASS 478
+#define SPECIES_ROTOM 479
+#define SPECIES_UXIE 480
+#define SPECIES_MESPRIT 481
+#define SPECIES_AZELF 482
+#define SPECIES_DIALGA 483
+#define SPECIES_PALKIA 484
+#define SPECIES_HEATRAN 485
+#define SPECIES_REGIGIGAS 486
+#define SPECIES_GIRATINA 487
+#define SPECIES_CRESSELIA 488
+#define SPECIES_PHIONE 489
+#define SPECIES_MANAPHY 490
+#define SPECIES_DARKRAI 491
+#define SPECIES_SHAYMIN 492
+#define SPECIES_ARCEUS 493
+
+#define NATIONAL_DEX_COUNT SPECIES_ARCEUS
+
+#define SPECIES_EGG 494
+#define SPECIES_MANAPHY_EGG 495
+#define SPECIES_DEOXYS_ATK 496
+#define SPECIES_DEOXYS_DEF 497
+#define SPECIES_DEOXYS_SPD 498
+#define SPECIES_WORMADAM_SANDY 499
+#define SPECIES_WORMADAM_TRASH 500
+
+#define NUM_SPECIES SPECIES_WORMADAM_TRASH
+
+#endif //GUARD_CONSTANTS_SPECIES_H
diff --git a/include/nitro/OS_arena_shared.h b/include/nitro/OS_arena_shared.h
new file mode 100644
index 00000000..df6d526a
--- /dev/null
+++ b/include/nitro/OS_arena_shared.h
@@ -0,0 +1,38 @@
+/*
+ * NOTE:
+ * This file is shared between ARM9 and ARM7
+ * DO NOT PUT PROC SPECIFIC CODE IN HERE
+ * Thank You!
+ */
+
+/*
+ * DO NOT INCLUDE THIS FILE DIRECTLY
+ * Include OS_arena.h from the specific proc's lib
+ */
+
+#ifndef POKEDIAMOND_OS_ARENA_SHARED_H
+#define POKEDIAMOND_OS_ARENA_SHARED_H
+
+#include "nitro/types.h"
+
+typedef enum {
+ OS_ARENA_MAIN = 0,
+ OS_ARENA_MAIN_SUBPRIV = 1,
+ OS_ARENA_MAINEX = 2,
+ OS_ARENA_ITCM = 3,
+ OS_ARENA_DTCM = 4,
+ OS_ARENA_SHARED = 5,
+ OS_ARENA_WRAM_MAIN = 6,
+ OS_ARENA_WRAM_SUB = 7,
+ OS_ARENA_WRAM_SUBPRIV = 8,
+ OS_ARENA_MAX = 9
+} OSArenaId;
+
+typedef struct {
+ void* lo[OS_ARENA_MAX];
+ void* hi[OS_ARENA_MAX];
+ u16 initialized;
+ u8 padding[2];
+} OSArenaInfo;
+
+#endif //POKEDIAMOND_OS_ARENA_SHARED_H
diff --git a/include/nitro/consts_shared.h b/include/nitro/consts_shared.h
index e515831e..a7fd9dcf 100644
--- a/include/nitro/consts_shared.h
+++ b/include/nitro/consts_shared.h
@@ -14,6 +14,7 @@
#define POKEDIAMOND_CONSTS_SHARED_H
#include "nitro/types.h"
+#include "nitro/mmap_shared.h"
//Shared Consts
@@ -23,4 +24,6 @@
#define HW_PSR_DISABLE_IRQ 0x80 // Disable IRQ
#define HW_PSR_DISABLE_IRQ_FIQ 0xc0 // Disable FIQ and IRQ
+#define OSi_GetArenaInfo() (*(OSArenaInfo*)HW_ARENA_INFO_BUF)
+
#endif //POKEDIAMOND_CONSTS_SHARED_H
diff --git a/include/nitro/mmap_shared.h b/include/nitro/mmap_shared.h
new file mode 100644
index 00000000..ad97c912
--- /dev/null
+++ b/include/nitro/mmap_shared.h
@@ -0,0 +1,24 @@
+/*
+ * NOTE:
+ * This file is shared between ARM9 and ARM7
+ * DO NOT PUT PROC SPECIFIC CODE IN HERE
+ * Thank You!
+ */
+
+/*
+ * DO NOT INCLUDE THIS FILE DIRECTLY
+ * Include mmap.h from the specific proc's lib
+ */
+
+#ifndef POKEDIAMOND_MMAP_SHARED_H
+#define POKEDIAMOND_MMAP_SHARED_H
+
+#define HW_MAIN_MEM 0x02000000
+#define HW_MAIN_MEM_SIZE 0x00400000
+#define HW_MAIN_MEM_MAIN_SIZE 0x003E0000
+#define HW_MAIN_MEM_SHARED_SIZE 0x00001000
+
+#define HW_ARENA_INFO_BUF (HW_MAIN_MEM + 0x007ffda0)
+#define HW_MAIN_MEM_MAIN_END (HW_MAIN_MEM + HW_MAIN_MEM_MAIN_SIZE)
+
+#endif //POKEDIAMOND_MMAP_SHARED_H
diff --git a/include/pokemon.h b/include/pokemon.h
index a8584b27..3eb7cfdd 100644
--- a/include/pokemon.h
+++ b/include/pokemon.h
@@ -5,6 +5,70 @@
// Enums
+#include "constants/species.h"
+
+// TODO: Identify the rest of these
+enum BaseStat {
+ BASE_HP = 0,
+ BASE_ATK,
+ BASE_DEF,
+ BASE_SPEED,
+ BASE_SPATK,
+ BASE_SPDEF,
+ BASE_TYPE1,
+ BASE_TYPE2,
+ BASE_CATCH_RATE,
+ BASE_EXP_YIELD,
+ BASE_HP_YIELD,
+ BASE_ATK_YIELD,
+ BASE_DEF_YIELD,
+ BASE_SPEED_YIELD,
+ BASE_SPATK_YIELD,
+ BASE_SPDEF_YIELD,
+ BASE_GENDER_RATIO = 18,
+ BASE_FIRENDSHIP = 20,
+ BASE_GROWTH_RATE = 21,
+ BASE_ABILITY_1 = 24,
+ BASE_ABILITY_2,
+};
+
+struct BaseStats {
+ u8 hp;
+ u8 atk;
+ u8 def;
+ u8 speed;
+ u8 spatk;
+ u8 spdef;
+ u8 types[2];
+ u8 catchRate;
+ u8 expYield;
+ u16 hp_yield:2;
+ u16 atk_yield:2;
+ u16 def_yield:2;
+ u16 speed_yield:2;
+ u16 spatk_yield:2;
+ u16 spdef_yield:2;
+ u16 unkB_4:2;
+ u16 padding_B_6:2;
+ u16 unkC;
+ u16 unkE;
+ u8 genderRatio;
+ u8 unk11;
+ u8 friendship;
+ u8 growthRate;
+ u8 unk14;
+ u8 unk15;
+ u8 abilities[2];
+ u8 unk18;
+ u8 unk19_0:7;
+ u8 unk19_7:1;
+ u8 padding_1A[2];
+ u32 unk1C;
+ u32 unk20;
+ u32 unk24;
+ u32 unk28;
+};
+
typedef enum {
EGG = 0,
EVENT = 0,
@@ -186,7 +250,7 @@ typedef union {
PokemonDataBlockD blockD;
} PokemonDataBlock;
-struct PokemonData {
+struct BoxPokemon {
u32 personalityValue;
u16 Unused; // Might be used for validity checks
u16 checksum; // Stored checksum of pokemon
@@ -196,4 +260,22 @@ struct PokemonData {
PokemonDataBlock block4;
};
+struct Pokemon {
+ u16 boxMonKey;
+ u16 unused;
+ u16 decrypted:1;
+ u16 unkBitfield:15;
+ u16 ramMonKey;
+ struct BoxPokemon box;
+ // TODO: RAM struct attributes
+ u8 filler_88[100];
+};
+
+int GetMonBaseStat_HandleFormeConversion(int species, int form, int stat_id);
+int GetMonBaseStat(int species, int stat_id);
+int GetMonExpByLevel(int species, int level);
+void LoadGrowthTable(int species, int * table);
+int GetExpByGrowthRateAndLevel(int rate, int level);
+int CalcMonLevel(int species, int experience);
+
#endif //POKEDIAMOND_POKEMON_H
diff --git a/pokediamond.rsf b/pokediamond.rsf
index 8a0db36a..b3549147 100644
--- a/pokediamond.rsf
+++ b/pokediamond.rsf
@@ -29,5 +29,5 @@ RomSpec
{
Segment All
HostRoot files/
- File data/UTF16.dat data/area00light.txt data/area01light.txt data/area02light.txt data/battle_win.NSCR data/btower_canm.resdat data/btower_celact.cldat data/btower_cell.resdat data/btower_chr.resdat data/btower_pal.resdat data/cell0.NCGR data/cell0.NCLR data/clact_default.NANR data/crystal.nsbmd data/demo_climax.narc data/dp_areawindow.NCGR data/dp_areawindow.NCLR data/dt_test_celact.txt data/dt_test_res_cell.txt data/dt_test_res_cellanm.txt data/dt_test_res_char.txt data/dt_test_res_multi.txt data/dt_test_res_multianm.txt data/dt_test_res_pltt.txt data/dun_sea.nsbtx data/eoo.dat data/exdata.dat data/field_cutin.narc data/fld_anime0.bin data/fld_anime1.bin data/fld_anime10.bin data/fld_anime2.bin data/fld_anime3.bin data/fld_anime4.bin data/fld_anime5.bin data/fld_anime6.bin data/fld_anime7.bin data/fld_anime8.bin data/fld_anime9.bin data/fs_kanban.nsbca data/ground0.NCGR data/ground0.NCLR data/ground0.NSCR data/kemu_itpconv.dat data/lake_anim.nsbtx data/miniasahamabe.nsbtx data/miniasasea.nsbtx data/minihamabe.nsbtx data/minimum.nsbtx data/minirhana.nsbtx data/namein.narc data/nfont.NCGR data/nfont.NCLR data/pc.nsbca data/plist_canm.resdat data/plist_cell.resdat data/plist_chr.resdat data/plist_h.cldat data/plist_pal.resdat data/porucase_canm.resdat data/porucase_celact.cldat data/porucase_cell.resdat data/porucase_chr.resdat data/porucase_pal.resdat data/pst_canm.resdat data/pst_cell.resdat data/pst_chr.resdat data/pst_h.cldat data/pst_pal.resdat data/shop_canm.resdat data/shop_cell.resdat data/shop_chr.resdat data/shop_h.cldat data/shop_pal.resdat data/slot.narc data/smptm_koori.NANR data/smptm_koori.NCER data/smptm_koori.NCGR data/smptm_koori.NCLR data/smptm_nemuri.NANR data/smptm_nemuri.NCER data/smptm_nemuri.NCGR data/smptm_nemuri.NCLR data/t3_fl_b.nsbtx data/t3_fl_p.nsbtx data/t3_fl_r.nsbtx data/t3_fl_y.nsbtx data/test.atr data/tmap_block.dat data/tmap_flags.dat data/tmapn_canm.resdat data/tmapn_celact.cldat data/tmapn_celact.txt data/tmapn_cell.resdat data/tmapn_chr.resdat data/tmapn_pal.resdat data/tmapn_res_canm.txt data/tmapn_res_cell.txt data/tmapn_res_chr.txt data/tmapn_res_pal.txt data/tradelist.narc data/trapmark.narc data/ug_anim.narc data/ug_base_cur.nsbmd data/ug_boygirl.NCGR data/ug_boygirl.NCLR data/ug_fossil.narc data/ug_hero.NANR data/ug_hero.NCER data/ug_hole.NANR data/ug_hole.NCER data/ug_hole.NCGR data/ug_parts.narc data/ug_radar.narc data/ug_trap.narc data/ugeffect_obj_graphic.narc data/uground_cell.resdat data/uground_cellanm.resdat data/uground_char.resdat data/uground_char2.resdat data/uground_clact.cldat data/uground_pltt.resdat data/uground_pltt2.resdat data/underg_radar.narc data/utility.bin data/weather_sys.narc data/wifi.ncgr data/wifinote.narc data/wifip2pmatch.narc data/wm.ncgr data/wm.nclr data/sound/sound_data.sdat msgdata/msg.narc msgdata/scenario/scr_msg.narc poketool/pokegra/height.narc poketool/pokegra/height_o.narc poketool/pokegra/otherpoke.narc poketool/pokegra/poke_shadow.narc poketool/pokegra/poke_shadow_ofx.narc poketool/pokegra/poke_yofs.narc poketool/pokegra/pokegra.narc poketool/trgra/trbgra.narc poketool/trgra/trfgra.narc poketool/personal/personal.narc poketool/personal/evo.narc poketool/personal/growtbl.narc poketool/personal/pms.narc poketool/personal/wotbl.narc poketool/trainer/trdata.narc poketool/trainer/trpoke.narc poketool/trmsg/trtbl.narc poketool/trmsg/trtblofs.narc battle/graphic/b_bag_gra.narc battle/graphic/b_plist_gra.narc battle/graphic/batt_bg.narc battle/graphic/batt_obj.narc battle/graphic/vs_demo_gra.narc wazaeffect/we.arc wazaeffect/we_sub.narc battle/skill/be_seq.narc battle/skill/sub_seq.narc battle/skill/waza_seq.narc wazaeffect/effectclact/wecell.narc wazaeffect/effectclact/wecellanm.narc wazaeffect/effectclact/wechar.narc wazaeffect/effectclact/wepltt.narc poketool/waza/waza_tbl.narc fielddata/script/scr_seq_release.narc graphic/bag_gra.narc graphic/box.narc graphic/btower.narc graphic/config_gra.narc graphic/demo_trade.narc graphic/dendou_demo.narc graphic/dendou_pc.narc graphic/ending.narc graphic/ev_pokeselect.narc graphic/f_note_gra.narc graphic/field_board.narc graphic/field_encounteffect.narc graphic/fld_comact.narc graphic/font.narc graphic/fontoam.narc graphic/hiden_effect.narc graphic/imageclip.narc graphic/mail_gra.narc graphic/menu_gra.narc graphic/mysign.narc graphic/mystery.narc graphic/ntag_gra.narc graphic/nutmixer.narc graphic/oekaki.narc graphic/opening.narc graphic/plist_gra.narc graphic/pmsi.narc graphic/poketch.narc graphic/poru_gra.narc graphic/poruact.narc graphic/porudemo.narc graphic/pst_gra.narc graphic/ranking.narc graphic/record.narc graphic/shop_gra.narc graphic/tmap_gra.narc graphic/touch_subwindow.narc graphic/trainer_case.narc graphic/unionroom.narc graphic/waza_oshie_gra.narc graphic/winframe.narc graphic/worldtrade.narc itemtool/itemdata/item_data.narc itemtool/itemdata/item_icon.narc itemtool/itemdata/nuts_data.narc poketool/icongra/poke_icon.narc poketool/pokefoot/pokefoot.narc data/mmodel/mmodel.narc data/mmodel/fldeff.narc wazaeffect/effectdata/ball_particle.narc wazaeffect/effectdata/waza_particle.narc wazaeffect/pt_debug/debug_particle.narc fielddata/eventdata/zone_event_release.narc fielddata/encountdata/d_enc_data.narc fielddata/encountdata/p_enc_data.narc fielddata/build_model/build_model.narc fielddata/build_model/build_model_matshp.dat fielddata/mapmatrix/map_matrix.narc fielddata/areadata/area_data.narc fielddata/areadata/area_build_model/area_build.narc fielddata/areadata/area_build_model/areabm_texset.narc fielddata/areadata/area_map_tex/map_tex_set.narc fielddata/areadata/area_move_model/move_model_list.narc fielddata/land_data/land_data_release.narc contest/graphic/contest_bg.narc contest/graphic/contest_obj.narc contest/data/contest_data.narc particledata/particledata.narc application/zukanlist/zkn_data/zukan_data.narc application/wifi_earth/wifi_earth.narc application/wifi_earth/wifi_earth_place.narc demo/title/titledemo.narc application/custom_ball/data/cb_data.narc demo/egg/data/egg_data.narc demo/egg/data/particle/egg_demo_particle.narc fielddata/mm_list/move_model_list.narc pokeanime/poke_anm.narc battle/tr_ai/tr_ai_seq.narc arc/bm_anime.narc arc/bm_anime_list.narc arc/encdata_ex.narc arc/ppark.narc arc/ship_demo.narc arc/tv.narc fielddata/maptable/mapname.bin poketool/pokezukan.narc poketool/shinzukan.narc poketool/pokeanm/pokeanm.narc fielddata/pokemon_trade/fld_trade.narc demo/shinka/data/particle/shinka_demo_particle.narc demo/intro/intro.narc demo/intro/intro_tv.narc demo/title/op_demo.narc demo/syoujyou/syoujyou.narc battle/b_tower/btdpm.narc battle/b_tower/btdtr.narc application/zukanlist/zkn_data/zukan_enc_diamond.narc application/zukanlist/zkn_data/zukan_enc_pearl.narc resource/eng/trial/trial.narc resource/eng/zukan/zukan.narc dwc/utility.bin
+ File $(NITROFS_FILES)
}
diff --git a/tools/jsonproc/Makefile b/tools/jsonproc/Makefile
index 721da102..622f00ab 100644
--- a/tools/jsonproc/Makefile
+++ b/tools/jsonproc/Makefile
@@ -1,5 +1,3 @@
-CXX := g++
-
CXXFLAGS := -Wall -std=c++11 -O2
INCLUDES := -I .
diff --git a/tools/knarc/.gitignore b/tools/knarc/.gitignore
new file mode 100644
index 00000000..20bde9af
--- /dev/null
+++ b/tools/knarc/.gitignore
@@ -0,0 +1 @@
+knarc
diff --git a/tools/knarc/Makefile b/tools/knarc/Makefile
new file mode 100644
index 00000000..62af834f
--- /dev/null
+++ b/tools/knarc/Makefile
@@ -0,0 +1,15 @@
+CXXFLAGS := -std=c++17 -O2 -Wall -Wno-switch -lstdc++fs
+
+SRCS := Source.cpp Narc.cpp
+HEADERS := Narc.h
+
+.PHONY: all clean
+
+all: knarc
+ @:
+
+knarc: $(SRCS) $(HEADERS)
+ $(CXX) $(SRCS) -o $@ $(LDFLAGS) $(CXXFLAGS)
+
+clean:
+ $(RM) knarc knarc.exe
diff --git a/tools/knarc/Narc.cpp b/tools/knarc/Narc.cpp
new file mode 100644
index 00000000..506e050f
--- /dev/null
+++ b/tools/knarc/Narc.cpp
@@ -0,0 +1,543 @@
+#include "Narc.h"
+
+#include <algorithm>
+#include <cstddef>
+#include <cstdint>
+#include <fstream>
+#include <iomanip>
+#include <ios>
+#include <map>
+#include <memory>
+#include <regex>
+#include <sstream>
+#include <stack>
+#include <string>
+#include <vector>
+
+#if __GNUC__ <= 7
+#include <experimental/filesystem>
+namespace fs = std::experimental::filesystem;
+#else
+#include <filesystem>
+namespace fs = std::filesystem;
+#endif
+
+using namespace std;
+
+void Narc::AlignDword(ofstream& ofs, uint8_t paddingChar)
+{
+ if ((ofs.tellp() % 4) != 0)
+ {
+ for (int i = 4 - (ofs.tellp() % 4); i-- > 0; )
+ {
+ ofs.write(reinterpret_cast<char*>(&paddingChar), sizeof(uint8_t));
+ }
+ }
+}
+
+bool Narc::Cleanup(ifstream& ifs, const NarcError& e)
+{
+ ifs.close();
+
+ error = e;
+
+ return false;
+}
+
+bool Narc::Cleanup(ofstream& ofs, const NarcError& e)
+{
+ ofs.close();
+
+ error = e;
+
+ return false;
+}
+
+vector<fs::directory_entry> Narc::OrderedDirectoryIterator(const fs::path& path, bool recursive) const
+{
+ vector<fs::directory_entry> v;
+
+ for (const auto& de : fs::directory_iterator(path))
+ {
+ v.push_back(de);
+ }
+
+ sort(v.begin(), v.end(), [](const fs::directory_entry& a, const fs::directory_entry& b)
+ {
+ // I fucking hate C++
+ string aStr = a.path().filename().string();
+ string bStr = b.path().filename().string();
+
+ for (size_t i = 0; i < aStr.size(); ++i)
+ {
+ aStr[i] = tolower(aStr[i]);
+ }
+
+ for (size_t i = 0; i < bStr.size(); ++i)
+ {
+ bStr[i] = tolower(bStr[i]);
+ }
+
+ return aStr < bStr;
+ });
+
+ if (recursive)
+ {
+ size_t vSize = v.size();
+
+ for (size_t i = 0; i < vSize; ++i)
+ {
+ if (is_directory(v[i]))
+ {
+ vector<fs::directory_entry> temp = OrderedDirectoryIterator(v[i], true);
+
+ v.insert(v.end(), temp.begin(), temp.end());
+ }
+ }
+ }
+
+ return v;
+}
+
+NarcError Narc::GetError() const
+{
+ return error;
+}
+
+bool Narc::Pack(const fs::path& fileName, const fs::path& directory)
+{
+ ofstream ofs(fileName, ios::binary);
+
+ if (!ofs.good()) { return Cleanup(ofs, NarcError::InvalidOutputFile); }
+
+ vector<FileAllocationTableEntry> fatEntries;
+ uint16_t directoryCounter = 1;
+
+ for (const auto& de : OrderedDirectoryIterator(directory, true))
+ {
+ if (is_directory(de))
+ {
+ ++directoryCounter;
+ }
+ else
+ {
+ fatEntries.push_back(FileAllocationTableEntry
+ {
+ .Start = 0x0,
+ .End = 0x0
+ });
+
+ if (fatEntries.size() > 1)
+ {
+ fatEntries.back().Start = fatEntries.rbegin()[1].End;
+
+ if ((fatEntries.rbegin()[1].End % 4) != 0)
+ {
+ fatEntries.back().Start += 4 - (fatEntries.rbegin()[1].End % 4);
+ }
+ }
+
+ fatEntries.back().End = fatEntries.back().Start + static_cast<uint32_t>(file_size(de));
+ }
+ }
+
+ FileAllocationTable fat
+ {
+ .Id = 0x46415442,
+ .ChunkSize = sizeof(FileAllocationTable) + ((uint32_t)fatEntries.size() * sizeof(FileAllocationTableEntry)),
+ .FileCount = static_cast<uint16_t>(fatEntries.size()),
+ .Reserved = 0x0
+ };
+
+ map<fs::path, string> subTables;
+ vector<fs::path> paths;
+
+ directoryCounter = 0;
+
+ for (const auto& de : OrderedDirectoryIterator(directory, true))
+ {
+ if (!subTables.count(de.path().parent_path()))
+ {
+ subTables.insert({ de.path().parent_path(), "" });
+ paths.push_back(de.path().parent_path());
+ }
+
+ if (is_directory(de))
+ {
+ ++directoryCounter;
+
+ subTables[de.path().parent_path()] += static_cast<uint8_t>(0x80 + de.path().filename().string().size());
+ subTables[de.path().parent_path()] += de.path().filename().string();
+ subTables[de.path().parent_path()] += (0xF000 + directoryCounter) & 0xFF;
+ subTables[de.path().parent_path()] += (0xF000 + directoryCounter) >> 8;
+ }
+ else
+ {
+ subTables[de.path().parent_path()] += static_cast<uint8_t>(de.path().filename().string().size());
+ subTables[de.path().parent_path()] += de.path().filename().string();
+ }
+ }
+
+ for (auto& subTable : subTables)
+ {
+ subTable.second += '\0';
+ }
+
+ vector<FileNameTableEntry> fntEntries;
+
+ if (!regex_match(fs::directory_iterator(directory)->path().string(), regex(".*_\\d{4,8}\\.bin")))
+ {
+ fntEntries.push_back(
+ {
+ .Offset = (directoryCounter + 1) * sizeof(FileNameTableEntry),
+ .FirstFileId = 0x0,
+ .Utility = static_cast<uint16_t>(directoryCounter + 1)
+ });
+
+ for (uint16_t i = 0; i < directoryCounter; ++i)
+ {
+ fntEntries.push_back(
+ {
+ .Offset = fntEntries.back().Offset + subTables[paths[i]].size(),
+ .FirstFileId = fntEntries.back().FirstFileId,
+ .Utility = 0x0
+ });
+
+ for (size_t j = 0; j < (subTables[paths[i]].size() - 1); ++j)
+ {
+ if (static_cast<uint8_t>(subTables[paths[i]][j]) <= 0x7F)
+ {
+ j += static_cast<uint8_t>(subTables[paths[i]][j]);
+ ++fntEntries.back().FirstFileId;
+ }
+ else if (static_cast<uint8_t>(subTables[paths[i]][j]) <= 0xFF)
+ {
+ j += static_cast<uint8_t>(subTables[paths[i]][j]) - 0x80 + 0x2;
+ }
+ }
+
+ fntEntries.back().Utility = 0xF000 + (find(paths.begin(), paths.end(), paths[i + 1].parent_path()) - paths.begin());
+ }
+ }
+ else
+ {
+ fntEntries.push_back(
+ {
+ .Offset = 0x4,
+ .FirstFileId = 0x0,
+ .Utility = 0x1
+ });
+ }
+
+ FileNameTable fnt
+ {
+ .Id = 0x464E5442,
+ .ChunkSize = sizeof(FileNameTable) + (fntEntries.size() * sizeof(FileNameTableEntry))
+ };
+
+ if (!regex_match(fs::directory_iterator(directory)->path().string(), regex(".*_\\d{4,8}\\.bin")))
+ {
+ for (const auto& subTable : subTables)
+ {
+ fnt.ChunkSize += subTable.second.size();
+ }
+ }
+
+ if ((fnt.ChunkSize % 4) != 0)
+ {
+ fnt.ChunkSize += 4 - (fnt.ChunkSize % 4);
+ }
+
+ FileImages fi
+ {
+ .Id = 0x46494D47,
+ .ChunkSize = sizeof(FileImages) + fatEntries.back().End
+ };
+
+ if ((fi.ChunkSize % 4) != 0)
+ {
+ fi.ChunkSize += 4 - (fi.ChunkSize % 4);
+ }
+
+ Header header
+ {
+ .Id = 0x4352414E,
+ .ByteOrderMark = 0xFFFE,
+ .Version = 0x100,
+ .FileSize = sizeof(Header) + fat.ChunkSize + fnt.ChunkSize + fi.ChunkSize,
+ .ChunkSize = sizeof(Header),
+ .ChunkCount = 0x3
+ };
+
+ ofs.write(reinterpret_cast<char*>(&header), sizeof(Header));
+ ofs.write(reinterpret_cast<char*>(&fat), sizeof(FileAllocationTable));
+
+ for (auto& entry : fatEntries)
+ {
+ ofs.write(reinterpret_cast<char*>(&entry), sizeof(FileAllocationTableEntry));
+ }
+
+ ofs.write(reinterpret_cast<char*>(&fnt), sizeof(FileNameTable));
+
+ for (auto& entry : fntEntries)
+ {
+ ofs.write(reinterpret_cast<char*>(&entry), sizeof(FileNameTableEntry));
+ }
+
+ if (!regex_match(fs::directory_iterator(directory)->path().string(), regex(".*_\\d{4,8}\\.bin")))
+ {
+ for (const auto& path : paths)
+ {
+ ofs << subTables[path];
+ }
+ }
+
+ AlignDword(ofs, 0xFF);
+
+ ofs.write(reinterpret_cast<char*>(&fi), sizeof(FileImages));
+
+ for (const auto& de : OrderedDirectoryIterator(directory, true))
+ {
+ if (is_directory(de))
+ {
+ continue;
+ }
+
+ ifstream ifs(de.path(), ios::binary | ios::ate);
+
+ if (!ifs.good())
+ {
+ ifs.close();
+
+ return Cleanup(ofs, NarcError::InvalidInputFile);
+ }
+
+ streampos length = ifs.tellg();
+ unique_ptr<char[]> buffer = make_unique<char[]>(static_cast<unsigned int>(length));
+
+ ifs.seekg(0);
+ ifs.read(buffer.get(), length);
+ ifs.close();
+
+ ofs.write(buffer.get(), length);
+
+ AlignDword(ofs, 0xFF);
+ }
+
+ ofs.close();
+
+ return error == NarcError::None ? true : false;
+}
+
+bool Narc::Unpack(const fs::path& fileName, const fs::path& directory)
+{
+ ifstream ifs(fileName, ios::binary);
+
+ if (!ifs.good()) { return Cleanup(ifs, NarcError::InvalidInputFile); }
+
+ Header header;
+ ifs.read(reinterpret_cast<char*>(&header), sizeof(Header));
+
+ if (header.Id != 0x4352414E) { return Cleanup(ifs, NarcError::InvalidHeaderId); }
+ if (header.ByteOrderMark != 0xFFFE) { return Cleanup(ifs, NarcError::InvalidByteOrderMark); }
+ if ((header.Version != 0x0100) && (header.Version != 0x0000)) { return Cleanup(ifs, NarcError::InvalidVersion); }
+ if (header.ChunkSize != 0x10) { return Cleanup(ifs, NarcError::InvalidHeaderSize); }
+ if (header.ChunkCount != 0x3) { return Cleanup(ifs, NarcError::InvalidChunkCount); }
+
+ FileAllocationTable fat;
+ ifs.read(reinterpret_cast<char*>(&fat), sizeof(FileAllocationTable));
+
+ if (fat.Id != 0x46415442) { return Cleanup(ifs, NarcError::InvalidFileAllocationTableId); }
+ if (fat.Reserved != 0x0) { return Cleanup(ifs, NarcError::InvalidFileAllocationTableReserved); }
+
+ unique_ptr<FileAllocationTableEntry[]> fatEntries = make_unique<FileAllocationTableEntry[]>(fat.FileCount);
+
+ for (uint16_t i = 0; i < fat.FileCount; ++i)
+ {
+ ifs.read(reinterpret_cast<char*>(&fatEntries.get()[i]), sizeof(FileAllocationTableEntry));
+ }
+
+ FileNameTable fnt;
+ vector<FileNameTableEntry> FileNameTableEntries;
+ ifs.read(reinterpret_cast<char*>(&fnt), sizeof(FileNameTable));
+
+ if (fnt.Id != 0x464E5442) { return Cleanup(ifs, NarcError::InvalidFileNameTableId); }
+
+ vector<FileNameTableEntry> fntEntries;
+
+ do
+ {
+ fntEntries.push_back(FileNameTableEntry());
+
+ ifs.read(reinterpret_cast<char*>(&fntEntries.back().Offset), sizeof(uint32_t));
+ ifs.read(reinterpret_cast<char*>(&fntEntries.back().FirstFileId), sizeof(uint16_t));
+ ifs.read(reinterpret_cast<char*>(&fntEntries.back().Utility), sizeof(uint16_t));
+ } while (static_cast<uint32_t>(ifs.tellg()) < (header.ChunkSize + fat.ChunkSize + sizeof(FileNameTable) + fntEntries[0].Offset));
+
+ unique_ptr<string[]> fileNames = make_unique<string[]>(0xFFFF);
+
+ for (size_t i = 0; i < fntEntries.size(); ++i)
+ {
+ ifs.seekg(static_cast<uint64_t>(header.ChunkSize) + fat.ChunkSize + sizeof(FileNameTable) + fntEntries[i].Offset);
+
+ uint16_t fileId = 0x0000;
+
+ for (uint8_t length = 0x80; length != 0x00; ifs.read(reinterpret_cast<char*>(&length), sizeof(uint8_t)))
+ {
+ if (length <= 0x7F)
+ {
+ for (uint8_t j = 0; j < length; ++j)
+ {
+ uint8_t c;
+ ifs.read(reinterpret_cast<char*>(&c), sizeof(uint8_t));
+
+ fileNames.get()[fntEntries[i].FirstFileId + fileId] += c;
+ }
+
+ ++fileId;
+ }
+ else if (length == 0x80)
+ {
+ // Reserved
+ }
+ else if (length <= 0xFF)
+ {
+ length -= 0x80;
+ string directoryName;
+
+ for (uint8_t j = 0; j < length; ++j)
+ {
+ uint8_t c;
+ ifs.read(reinterpret_cast<char*>(&c), sizeof(uint8_t));
+
+ directoryName += c;
+ }
+
+ uint16_t directoryId;
+ ifs.read(reinterpret_cast<char*>(&directoryId), sizeof(uint16_t));
+
+ fileNames.get()[directoryId] = directoryName;
+ }
+ else
+ {
+ return Cleanup(ifs, NarcError::InvalidFileNameTableEntryId);
+ }
+ }
+ }
+
+ if ((ifs.tellg() % 4) != 0)
+ {
+ ifs.seekg(4 - (ifs.tellg() % 4), ios::cur);
+ }
+
+ FileImages fi;
+ ifs.read(reinterpret_cast<char*>(&fi), sizeof(FileImages));
+
+ if (fi.Id != 0x46494D47) { return Cleanup(ifs, NarcError::InvalidFileImagesId); }
+
+ fs::create_directory(directory);
+ fs::current_path(directory);
+
+ if (fnt.ChunkSize == 0x10)
+ {
+ for (uint16_t i = 0; i < fat.FileCount; ++i)
+ {
+ ifs.seekg(static_cast<uint64_t>(header.ChunkSize) + fat.ChunkSize + fnt.ChunkSize + 8 + fatEntries.get()[i].Start);
+
+ unique_ptr<char[]> buffer = make_unique<char[]>(fatEntries.get()[i].End - fatEntries.get()[i].Start);
+ ifs.read(buffer.get(), fatEntries.get()[i].End - fatEntries.get()[i].Start);
+
+ ostringstream oss;
+ oss << fileName.stem().string() << "_" << setfill('0') << setw(8) << i << ".bin";
+
+ ofstream ofs(oss.str(), ios::binary);
+
+ if (!ofs.good())
+ {
+ ofs.close();
+
+ return Cleanup(ifs, NarcError::InvalidOutputFile);
+ }
+
+ ofs.write(buffer.get(), fatEntries.get()[i].End - fatEntries.get()[i].Start);
+ ofs.close();
+ }
+ }
+ else
+ {
+ fs::path absolutePath = fs::absolute(fs::current_path());
+
+ for (size_t i = 0; i < fntEntries.size(); ++i)
+ {
+ fs::current_path(absolutePath);
+ stack<string> directories;
+
+ for (uint16_t j = fntEntries[i].Utility; j > 0xF000; j = fntEntries[j - 0xF000].Utility)
+ {
+ directories.push(fileNames.get()[j]);
+ }
+
+ for (; !directories.empty(); directories.pop())
+ {
+ fs::create_directory(directories.top());
+ fs::current_path(directories.top());
+ }
+
+ if (fntEntries[i].Utility >= 0xF000)
+ {
+ fs::create_directory(fileNames.get()[0xF000 + i]);
+ fs::current_path(fileNames.get()[0xF000 + i]);
+ }
+
+ ifs.seekg(static_cast<uint64_t>(header.ChunkSize) + fat.ChunkSize + sizeof(FileNameTable) + fntEntries[i].Offset);
+
+ uint16_t fileId = 0x0000;
+
+ for (uint8_t length = 0x80; length != 0x00; ifs.read(reinterpret_cast<char*>(&length), sizeof(uint8_t)))
+ {
+ if (length <= 0x7F)
+ {
+ streampos savedPosition = ifs.tellg();
+
+ ifs.seekg(static_cast<uint64_t>(header.ChunkSize) + fat.ChunkSize + fnt.ChunkSize + 8 + fatEntries.get()[fntEntries[i].FirstFileId + fileId].Start);
+
+ unique_ptr<char[]> buffer = make_unique<char[]>(fatEntries.get()[fntEntries[i].FirstFileId + fileId].End - fatEntries.get()[fntEntries[i].FirstFileId + fileId].Start);
+ ifs.read(buffer.get(), fatEntries.get()[fntEntries[i].FirstFileId + fileId].End - fatEntries.get()[fntEntries[i].FirstFileId + fileId].Start);
+
+ ofstream ofs(fileNames.get()[fntEntries[i].FirstFileId + fileId], ios::binary);
+
+ if (!ofs.good())
+ {
+ ofs.close();
+
+ return Cleanup(ifs, NarcError::InvalidOutputFile);
+ }
+
+ ofs.write(buffer.get(), fatEntries.get()[fntEntries[i].FirstFileId + fileId].End - fatEntries.get()[fntEntries[i].FirstFileId + fileId].Start);
+ ofs.close();
+
+ ifs.seekg(savedPosition);
+ ifs.seekg(length, ios::cur);
+
+ ++fileId;
+ }
+ else if (length == 0x80)
+ {
+ // Reserved
+ }
+ else if (length <= 0xFF)
+ {
+ ifs.seekg(static_cast<uint64_t>(length) - 0x80 + 0x2, ios::cur);
+ }
+ else
+ {
+ return Cleanup(ifs, NarcError::InvalidFileNameTableEntryId);
+ }
+ }
+ }
+ }
+
+ ifs.close();
+
+ return error == NarcError::None ? true : false;
+}
diff --git a/tools/knarc/Narc.h b/tools/knarc/Narc.h
new file mode 100644
index 00000000..4516d2d5
--- /dev/null
+++ b/tools/knarc/Narc.h
@@ -0,0 +1,93 @@
+#pragma once
+
+#include <cstdint>
+#include <fstream>
+#include <string>
+#include <vector>
+
+#if __GNUC__ <= 7
+#include <experimental/filesystem>
+namespace fs = std::experimental::filesystem;
+#else
+#include <filesystem>
+namespace fs = std::filesystem;
+#endif
+
+enum class NarcError
+{
+ None,
+ InvalidInputFile,
+ InvalidHeaderId,
+ InvalidByteOrderMark,
+ InvalidVersion,
+ InvalidHeaderSize,
+ InvalidChunkCount,
+ InvalidFileAllocationTableId,
+ InvalidFileAllocationTableReserved,
+ InvalidFileNameTableId,
+ InvalidFileNameTableEntryId,
+ InvalidFileImagesId,
+ InvalidOutputFile
+};
+
+struct Header
+{
+ uint32_t Id;
+ uint16_t ByteOrderMark;
+ uint16_t Version;
+ uint32_t FileSize;
+ uint16_t ChunkSize;
+ uint16_t ChunkCount;
+};
+
+struct FileAllocationTable
+{
+ uint32_t Id;
+ uint32_t ChunkSize;
+ uint16_t FileCount;
+ uint16_t Reserved;
+};
+
+struct FileAllocationTableEntry
+{
+ uint32_t Start;
+ uint32_t End;
+};
+
+struct FileNameTable
+{
+ uint32_t Id;
+ uint32_t ChunkSize;
+};
+
+struct FileNameTableEntry
+{
+ uint32_t Offset;
+ uint16_t FirstFileId;
+ uint16_t Utility;
+};
+
+struct FileImages
+{
+ uint32_t Id;
+ uint32_t ChunkSize;
+};
+
+class Narc
+{
+ public:
+ NarcError GetError() const;
+
+ bool Pack(const fs::path& fileName, const fs::path& directory);
+ bool Unpack(const fs::path& fileName, const fs::path& directory);
+
+ private:
+ NarcError error = NarcError::None;
+
+ void AlignDword(std::ofstream& ofs, uint8_t paddingChar);
+
+ bool Cleanup(std::ifstream& ifs, const NarcError& e);
+ bool Cleanup(std::ofstream& ofs, const NarcError& e);
+
+ std::vector<fs::directory_entry> OrderedDirectoryIterator(const fs::path& path, bool recursive) const;
+};
diff --git a/tools/knarc/Source.cpp b/tools/knarc/Source.cpp
new file mode 100644
index 00000000..51bb5320
--- /dev/null
+++ b/tools/knarc/Source.cpp
@@ -0,0 +1,108 @@
+#include <cstring>
+#include <iostream>
+#include <string>
+
+#include "Narc.h"
+
+using namespace std;
+
+void PrintError(NarcError error)
+{
+ switch (error)
+ {
+ case NarcError::None: cout << "ERROR: No error???" << endl; break;
+ case NarcError::InvalidInputFile: cout << "ERROR: Invalid input file" << endl; break;
+ case NarcError::InvalidHeaderId: cout << "ERROR: Invalid header ID" << endl; break;
+ case NarcError::InvalidByteOrderMark: cout << "ERROR: Invalid byte order mark" << endl; break;
+ case NarcError::InvalidVersion: cout << "ERROR: Invalid NARC version" << endl; break;
+ case NarcError::InvalidHeaderSize: cout << "ERROR: Invalid header size" << endl; break;
+ case NarcError::InvalidChunkCount: cout << "ERROR: Invalid chunk count" << endl; break;
+ case NarcError::InvalidFileAllocationTableId: cout << "ERROR: Invalid file allocation table ID" << endl; break;
+ case NarcError::InvalidFileAllocationTableReserved: cout << "ERROR: Invalid file allocation table reserved section" << endl; break;
+ case NarcError::InvalidFileNameTableId: cout << "ERROR: Invalid file name table ID" << endl; break;
+ case NarcError::InvalidFileNameTableEntryId: cout << "ERROR: Invalid file name table entry ID" << endl; break;
+ case NarcError::InvalidFileImagesId: cout << "ERROR: Invalid file images ID" << endl; break;
+ case NarcError::InvalidOutputFile: cout << "ERROR: Invalid output file" << endl; break;
+ default: cout << "ERROR: Unknown error???" << endl; break;
+ }
+}
+
+int main(int argc, char* argv[])
+{
+ if (argc != 5)
+ {
+ cout << "OVERVIEW: Knarc" << endl << endl;
+ cout << "USAGE: knarc [options] <inputs>" << endl << endl;
+ cout << "OPTIONS:" << endl;
+ cout << "\t-d\tDirectory to pack from/unpack to" << endl;
+ cout << "\t-p\tPack" << endl;
+ cout << "\t-u\tUnpack" << endl;
+
+ return 1;
+ }
+
+ string directory = "";
+ string fileName = "";
+ bool pack = false;
+
+ for (int i = 1; i < argc; ++i)
+ {
+ if (!strcmp(argv[i], "-d"))
+ {
+ if (i == (argc - 1))
+ {
+ cerr << "ERROR: No directory specified" << endl;
+
+ return 1;
+ }
+
+ directory = argv[++i];
+ }
+ else if (!strcmp(argv[i], "-p"))
+ {
+ if (i == (argc - 1))
+ {
+ cerr << "ERROR: No NARC specified to pack to" << endl;
+
+ return 1;
+ }
+
+ fileName = argv[++i];
+ pack = true;
+ }
+ else if (!strcmp(argv[i], "-u"))
+ {
+ if (i == (argc - 1))
+ {
+ cerr << "ERROR: No NARC specified to unpack from" << endl;
+
+ return 1;
+ }
+
+ fileName = argv[++i];
+ }
+ }
+
+ Narc narc;
+
+ if (pack)
+ {
+ if (!narc.Pack(fileName, directory))
+ {
+ PrintError(narc.GetError());
+
+ return 1;
+ }
+ }
+ else
+ {
+ if (!narc.Unpack(fileName, directory))
+ {
+ PrintError(narc.GetError());
+
+ return 1;
+ }
+ }
+
+ return 0;
+}
diff --git a/tools/narccomp/.gitignore b/tools/narccomp/.gitignore
new file mode 100644
index 00000000..e96a03a5
--- /dev/null
+++ b/tools/narccomp/.gitignore
@@ -0,0 +1 @@
+narccomp
diff --git a/tools/narccomp/Makefile b/tools/narccomp/Makefile
index b484e7a1..6b404f32 100644
--- a/tools/narccomp/Makefile
+++ b/tools/narccomp/Makefile
@@ -1,4 +1,3 @@
-CXX = g++
CXXFLAGS := -O3 -std=c++11
.PHONY: all clean
diff --git a/tools/nitrogfx/gfx.c b/tools/nitrogfx/gfx.c
index f927deed..ac156575 100644
--- a/tools/nitrogfx/gfx.c
+++ b/tools/nitrogfx/gfx.c
@@ -1,5 +1,6 @@
// Copyright (c) 2015 YamaArashi
+#include <string.h>
#include <stdio.h>
#include <stdlib.h>
#include <stdint.h>
@@ -322,6 +323,41 @@ void ReadGbaPalette(char *path, struct Palette *palette)
free(data);
}
+void ReadNtrPalette(char *path, struct Palette *palette)
+{
+ int fileSize;
+ unsigned char *data = ReadWholeFile(path, &fileSize);
+
+ if (memcmp(data, "RLCN", 4) != 0 && memcmp(data, "RPCN", 4) != 0) //NCLR / NCPR
+ {
+ FATAL_ERROR("Not a valid NCLR or NCPR palette file.\n");
+ }
+
+ unsigned char *paletteHeader = data + 0x10;
+
+ if (memcmp(paletteHeader, "TTLP", 4) != 0)
+ {
+ FATAL_ERROR("No valid PLTT file after NCLR header.\n");
+ }
+
+ if ((fileSize - 0x28) % 2 != 0)
+ FATAL_ERROR("The file size (%d) is not a multiple of 2.\n", fileSize);
+
+ palette->numColors = (fileSize - 0x28) / 2; //remove header and divide by 2
+
+ unsigned char *paletteData = paletteHeader + 0x18;
+
+ for (int i = 0; i < palette->numColors; i++)
+ {
+ uint16_t paletteEntry = (paletteData[i * 2 + 1] << 8) | paletteData[i * 2];
+ palette->colors[i].red = UPCONVERT_BIT_DEPTH(GET_GBA_PAL_RED(paletteEntry));
+ palette->colors[i].green = UPCONVERT_BIT_DEPTH(GET_GBA_PAL_GREEN(paletteEntry));
+ palette->colors[i].blue = UPCONVERT_BIT_DEPTH(GET_GBA_PAL_BLUE(paletteEntry));
+ }
+
+ free(data);
+}
+
void WriteGbaPalette(char *path, struct Palette *palette)
{
FILE *fp = fopen(path, "wb");
@@ -342,3 +378,58 @@ void WriteGbaPalette(char *path, struct Palette *palette)
fclose(fp);
}
+
+void WriteNtrPalette(char *path, struct Palette *palette, bool ncpr)
+{
+ FILE *fp = fopen(path, "wb");
+
+ if (fp == NULL)
+ FATAL_ERROR("Failed to open \"%s\" for writing.\n", path);
+
+ uint32_t size = palette->numColors * 2;
+ uint32_t extSize = size + (ncpr ? 0x10 : 0x18);
+
+ //NCLR header
+ WriteGenericNtrHeader(fp, (ncpr ? "RPCN" : "RLCN"), extSize, !ncpr);
+
+ unsigned char palHeader[0x18] =
+ {
+ 0x54, 0x54, 0x4C, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00
+ };
+
+ //section size
+ palHeader[4] = extSize & 0xFF;
+ palHeader[5] = (extSize >> 8) & 0xFF;
+ palHeader[6] = (extSize >> 16) & 0xFF;
+ palHeader[7] = (extSize >> 24) & 0xFF;
+
+ //bit depth
+ palHeader[8] = palette->bitDepth == 4 ? 0x03: 0x04;
+
+ //size
+ palHeader[16] = size & 0xFF;
+ palHeader[17] = (size >> 8) & 0xFF;
+ palHeader[18] = (size >> 16) & 0xFF;
+ palHeader[19] = (size >> 24) & 0xFF;
+
+ fwrite(palHeader, 1, 0x18, fp);
+
+ unsigned char colours[palette->numColors * 2];
+ //palette data
+ for (int i = 0; i < palette->numColors; i++)
+ {
+ unsigned char red = DOWNCONVERT_BIT_DEPTH(palette->colors[i].red);
+ unsigned char green = DOWNCONVERT_BIT_DEPTH(palette->colors[i].green);
+ unsigned char blue = DOWNCONVERT_BIT_DEPTH(palette->colors[i].blue);
+
+ uint16_t paletteEntry = SET_GBA_PAL(red, green, blue);
+
+ colours[i * 2] = paletteEntry & 0xFF;
+ colours[i * 2 + 1] = paletteEntry >> 8;
+ }
+
+ fwrite(colours, 1, palette->numColors * 2, fp);
+
+ fclose(fp);
+}
diff --git a/tools/nitrogfx/gfx.h b/tools/nitrogfx/gfx.h
index 5355ced8..fc57380e 100644
--- a/tools/nitrogfx/gfx.h
+++ b/tools/nitrogfx/gfx.h
@@ -15,6 +15,7 @@ struct Color {
struct Palette {
struct Color colors[256];
int numColors;
+ int bitDepth;
};
struct Image {
@@ -31,6 +32,8 @@ void ReadImage(char *path, int tilesWidth, int bitDepth, int metatileWidth, int
void WriteImage(char *path, int numTiles, int bitDepth, int metatileWidth, int metatileHeight, struct Image *image, bool invertColors);
void FreeImage(struct Image *image);
void ReadGbaPalette(char *path, struct Palette *palette);
+void ReadNtrPalette(char *path, struct Palette *palette);
void WriteGbaPalette(char *path, struct Palette *palette);
+void WriteNtrPalette(char *path, struct Palette *palette, bool ncpr);
#endif // GFX_H
diff --git a/tools/nitrogfx/jasc_pal.c b/tools/nitrogfx/jasc_pal.c
index e5ba9c3c..4f80f5d9 100644
--- a/tools/nitrogfx/jasc_pal.c
+++ b/tools/nitrogfx/jasc_pal.c
@@ -91,6 +91,8 @@ void ReadJascPalette(char *path, struct Palette *palette)
if (palette->numColors < 1 || palette->numColors > 256)
FATAL_ERROR("%d is an invalid number of colors. The number of colors must be in the range [1, 256].\n", palette->numColors);
+ palette->bitDepth = 4;
+
for (int i = 0; i < palette->numColors; i++)
{
ReadJascPaletteLine(fp, line);
@@ -146,6 +148,11 @@ void ReadJascPalette(char *path, struct Palette *palette)
palette->colors[i].red = red;
palette->colors[i].green = green;
palette->colors[i].blue = blue;
+ if (i >= 16)
+ {
+ if (red || green || blue)
+ palette->bitDepth = 8;
+ }
}
if (fgetc(fp) != EOF)
diff --git a/tools/nitrogfx/main.c b/tools/nitrogfx/main.c
index b9f4272c..7365cf39 100644
--- a/tools/nitrogfx/main.c
+++ b/tools/nitrogfx/main.c
@@ -214,6 +214,14 @@ void HandleGbaToJascPaletteCommand(char *inputPath, char *outputPath, int argc U
WriteJascPalette(outputPath, &palette);
}
+void HandleNtrToJascPaletteCommand(char *inputPath, char *outputPath, int argc UNUSED, char **argv UNUSED)
+{
+ struct Palette palette;
+
+ ReadNtrPalette(inputPath, &palette);
+ WriteJascPalette(outputPath, &palette);
+}
+
void HandleJascToGbaPaletteCommand(char *inputPath, char *outputPath, int argc, char **argv)
{
int numColors = 0;
@@ -251,6 +259,48 @@ void HandleJascToGbaPaletteCommand(char *inputPath, char *outputPath, int argc,
WriteGbaPalette(outputPath, &palette);
}
+void HandleJascToNtrPaletteCommand(char *inputPath, char *outputPath, int argc, char **argv)
+{
+ int numColors = 0;
+ bool ncpr = false;
+
+ for (int i = 3; i < argc; i++)
+ {
+ char *option = argv[i];
+
+ if (strcmp(option, "-num_colors") == 0)
+ {
+ if (i + 1 >= argc)
+ FATAL_ERROR("No number of colors following \"-num_colors\".\n");
+
+ i++;
+
+ if (!ParseNumber(argv[i], NULL, 10, &numColors))
+ FATAL_ERROR("Failed to parse number of colors.\n");
+
+ if (numColors < 1)
+ FATAL_ERROR("Number of colors must be positive.\n");
+ }
+ else if (strcmp(option, "-ncpr") == 0)
+ {
+ ncpr = true;
+ }
+ else
+ {
+ FATAL_ERROR("Unrecognized option \"%s\".\n", option);
+ }
+ }
+
+ struct Palette palette;
+
+ ReadJascPalette(inputPath, &palette);
+
+ if (numColors != 0)
+ palette.numColors = numColors;
+
+ WriteNtrPalette(outputPath, &palette, ncpr);
+}
+
void HandleLatinFontToPngCommand(char *inputPath, char *outputPath, int argc UNUSED, char **argv UNUSED)
{
struct Image image;
@@ -496,7 +546,10 @@ int main(int argc, char **argv)
{ "png", "8bpp", HandlePngToGbaCommand },
{ "png", "gbapal", HandlePngToGbaPaletteCommand },
{ "gbapal", "pal", HandleGbaToJascPaletteCommand },
+ { "NCLR", "pal", HandleNtrToJascPaletteCommand },
+ { "NCPR", "pal", HandleNtrToJascPaletteCommand },
{ "pal", "gbapal", HandleJascToGbaPaletteCommand },
+ { "pal", "NCLR", HandleJascToNtrPaletteCommand },
{ "latfont", "png", HandleLatinFontToPngCommand },
{ "png", "latfont", HandlePngToLatinFontCommand },
{ "hwjpnfont", "png", HandleHalfwidthJapaneseFontToPngCommand },
diff --git a/tools/nitrogfx/util.c b/tools/nitrogfx/util.c
index 87abeb31..73a128a1 100644
--- a/tools/nitrogfx/util.c
+++ b/tools/nitrogfx/util.c
@@ -4,6 +4,7 @@
#include <stdlib.h>
#include <string.h>
#include <stdbool.h>
+#include <stdint.h>
#include <errno.h>
#include <limits.h>
#include "global.h"
@@ -122,3 +123,26 @@ void WriteWholeFile(char *path, void *buffer, int bufferSize)
fclose(fp);
}
+
+void WriteGenericNtrHeader(FILE* fp, const char* magicNumber, uint32_t size, bool byteorder)
+{
+ unsigned char header[0x10] =
+ { 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFE, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x01, 0x00 };
+ //magic number
+ memcpy(header, magicNumber, 4);
+
+ //byte order
+ if (!byteorder)
+ {
+ memset(header + 4, 0, 2);
+ }
+
+ //size
+ size += 0x10; //add header size
+ header[8] = size & 0xFF;
+ header[9] = (size >> 8) & 0xFF;
+ header[10] = (size >> 16) & 0xFF;
+ header[11] = (size >> 24) & 0xFF;
+
+ fwrite(header, 1, 0x10, fp);
+}
diff --git a/tools/nitrogfx/util.h b/tools/nitrogfx/util.h
index 6d7a9c21..f181b66e 100644
--- a/tools/nitrogfx/util.h
+++ b/tools/nitrogfx/util.h
@@ -4,11 +4,13 @@
#define UTIL_H
#include <stdbool.h>
+#include <stdint.h>
bool ParseNumber(char *s, char **end, int radix, int *intValue);
char *GetFileExtension(char *path);
unsigned char *ReadWholeFile(char *path, int *size);
unsigned char *ReadWholeFileZeroPadded(char *path, int *size, int padAmount);
void WriteWholeFile(char *path, void *buffer, int bufferSize);
+void WriteGenericNtrHeader(FILE* fp, const char* magicNumber, uint32_t size, bool byteorder);
#endif // UTIL_H
diff --git a/tools/scaninc/Makefile b/tools/scaninc/Makefile
index 1516f159..6168acd6 100644
--- a/tools/scaninc/Makefile
+++ b/tools/scaninc/Makefile
@@ -1,5 +1,3 @@
-CXX = g++
-
CXXFLAGS = -Wall -Werror -std=c++11 -O2
SRCS = scaninc.cpp c_file.cpp asm_file.cpp source_file.cpp