diff options
197 files changed, 12423 insertions, 10699 deletions
@@ -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 @@ -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(¤tThread->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(¤tThread->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 |