summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--INSTALL.md8
-rwxr-xr-xMakefile174
-rw-r--r--README.md8
-rw-r--r--asm/bg_palette_buffer.s133
-rw-r--r--asm/code.s4
-rw-r--r--asm/code_800B540.s100
-rw-r--r--asm/code_800D090.s4
-rw-r--r--asm/code_8012A18.s272
-rw-r--r--asm/input.s94
-rw-r--r--asm/m4a.s4625
-rw-r--r--asm/m4a_1.s1647
-rw-r--r--asm/m4a_2.s70
-rw-r--r--asm/m4a_3.s574
-rw-r--r--asm/memory.s323
-rw-r--r--asm/rom_header.inc33
-rw-r--r--asm/save.s160
-rw-r--r--asm/sprite.s33
-rw-r--r--asmdiff.sh7
-rw-r--r--constants/m4a_constants.inc199
-rw-r--r--data/data_80B9BB8.s39
-rw-r--r--data/sound_data.s11
-rw-r--r--include/gba/defines.h4
-rw-r--r--include/global.h14
-rw-r--r--include/macros/m4a.inc13
-rw-r--r--include/memory.h56
-rw-r--r--ld_script.sed14
-rwxr-xr-xld_script.txt39
-rw-r--r--red.sha11
-rw-r--r--rom.md51
-rw-r--r--sound/music_player_table.inc11
-rw-r--r--sound/song_table.inc943
-rw-r--r--src/bg_palette_buffer.c105
-rw-r--r--src/file_system.c34
-rw-r--r--src/flash.c3
-rw-r--r--src/m4a_2.c834
-rw-r--r--src/m4a_4.c384
-rw-r--r--src/m4a_tables.c223
-rw-r--r--src/memory.c145
-rw-r--r--src/save.c64
-rw-r--r--src/save1.c13
-rw-r--r--src/sprite.c10
-rw-r--r--src/text.c15
-rw-r--r--sym_ewram.txt1407
-rw-r--r--sym_ewram2.txt871
-rw-r--r--sym_iwram.txt102
45 files changed, 6956 insertions, 6868 deletions
diff --git a/INSTALL.md b/INSTALL.md
index b2440d2..de8142d 100644
--- a/INSTALL.md
+++ b/INSTALL.md
@@ -1,3 +1,5 @@
+First, you must put a Pokémon Mystery Dungeon Red Rescue Team 1.0 (US) ROM in the root directory of the repository and name it `baserom.gba`. It should have a SHA1 checksum of `9f4cfc5b5f4859d17169a485462e977c7aac2b89`. Then, follow the OS-specific instructions below.
+
# Linux
Install [**devkitARM**](http://devkitpro.org/wiki/Getting_Started/devkitARM).
@@ -10,7 +12,7 @@ Then get the compiler from https://github.com/pret/agbcc and run the following c
install.sh PATH_OF_PMD-RED_DIRECTORY
${DEVKITARM}/bin/arm-none-eabi/ranlib PATH_OF_PMD-RED_DIRECTORY/tools/agbcc/lib/libgcc.a lib/libc.a
-Then in the pokeruby directory, build the tools.
+Then in the pmd-red directory, build the tools.
build_tools.sh
@@ -22,6 +24,6 @@ Finally, build the rom.
Install [**devkitARM**](http://devkitpro.org/wiki/Getting_Started/devkitARM).
-Then get the compiled tools from https://github.com/pret/pokeruby-tools. Copy the `tools/` folder over the `tools/` folder in your pokeruby directory.
+Then get the compiled tools from https://github.com/pret/pokeruby-tools. Copy the `tools/` folder over the `tools/` folder in your pmd-red directory.
-You can then build pokeruby using `make` in the MSYS environment provided with devkitARM.
+You can then build pmd-red using `make` in the MSYS environment provided with devkitARM.
diff --git a/Makefile b/Makefile
index 6d5d120..10c7dee 100755
--- a/Makefile
+++ b/Makefile
@@ -1,99 +1,133 @@
-AS := $(DEVKITARM)/bin/arm-none-eabi-as
-ASFLAGS := -mcpu=arm7tdmi
+include $(DEVKITARM)/base_tools
+
+ifeq ($(OS),Windows_NT)
+EXE := .exe
+else
+EXE :=
+endif
+
+TITLE := POKE DUNGEON
+GAME_CODE := B24E
+MAKER_CODE := 01
+REVISION := 0
+
+#### Tools ####
+
+SHELL := /bin/bash -o pipefail
+AS := $(PREFIX)as
+CC1 := tools/agbcc/bin/agbcc
+CPP := $(PREFIX)cpp
+LD := $(PREFIX)ld
+OBJCOPY := $(PREFIX)objcopy
+SHA1SUM := sha1sum -c
+GBAGFX := tools/gbagfx/gbagfx
+GBAFIX := tools/gbafix/gbafix
+AIF2PCM := tools/aif2pcm/aif2pcm
+MID2AGB := tools/mid2agb/mid2agb
+PREPROC := tools/preproc/preproc
+SCANINC := tools/scaninc/scaninc
+RAMSCRGEN := tools/ramscrgen/ramscrgen
-CC1 := tools/agbcc/bin/agbcc
-override CFLAGS += -mthumb-interwork -Wimplicit -Wparentheses -Wunused -Werror -O2 -fhex-asm
+ASFLAGS := -mcpu=arm7tdmi
+override CC1FLAGS += -mthumb-interwork -Wimplicit -Wparentheses -Wunused -Werror -O2 -fhex-asm
+CPPFLAGS := -I tools/agbcc/include -iquote include -nostdinc -undef
-CPP := $(DEVKITARM)/bin/arm-none-eabi-cpp
-CPPFLAGS := -I tools/agbcc/include -iquote include -nostdinc -undef
+#### Files ####
-LD := $(DEVKITARM)/bin/arm-none-eabi-ld
+BUILD_NAME = red
-OBJCOPY := $(DEVKITARM)/bin/arm-none-eabi-objcopy
+ROM := pmd_$(BUILD_NAME).gba
+MAP := $(ROM:%.gba=%.map)
-LIBGCC := tools/agbcc/lib/libgcc.a
-LIBC := tools/agbcc/lib/libc.a
+BUILD_DIR := build/pmd_$(BUILD_NAME)
-MD5 := md5sum -c
+C_SOURCES := $(wildcard src/*.c)
+ASM_SOURCES := $(wildcard asm/*.s data/*.s)
-GFX := tools/gbagfx/gbagfx
-AIF := tools/aif2pcm/aif2pcm
-MID := tools/mid2agb/mid2agb
-SCANINC := tools/scaninc/scaninc
-PREPROC := tools/preproc/preproc
-RAMSCRGEN := tools/ramscrgen/ramscrgen
+C_OBJECTS := $(addprefix $(BUILD_DIR)/, $(C_SOURCES:%.c=%.o))
+ASM_OBJECTS := $(addprefix $(BUILD_DIR)/, $(ASM_SOURCES:%.s=%.o))
+ALL_OBJECTS := $(C_OBJECTS) $(ASM_OBJECTS)
-# Clear the default suffixes.
-.SUFFIXES:
-
-# Secondary expansion is required for dependency variables in object rules.
-.SECONDEXPANSION:
+SUBDIRS := $(sort $(dir $(ALL_OBJECTS)))
-.PRECIOUS: %.1bpp %.4bpp %.8bpp %.gbapal %.lz %.rl %.pcm %.bin
+ifeq ($(OS),Windows_NT)
+LIB := ../../tools/agbcc/lib/libc.a ../../tools/agbcc/lib/libgcc.a
+else
+LIB := -L ../../tools/agbcc/lib -lc -lgcc
+endif
-.PHONY: all clean tidy
+LD_SCRIPT := $(BUILD_DIR)/ld_script.ld
-C_SRCS := $(wildcard src/*.c)
-C_OBJS := $(C_SRCS:%.c=%.o)
+# Special configurations required for lib files
+$(BUILD_DIR)/src/agb_flash.o : CC1FLAGS := -O -mthumb-interwork
+$(BUILD_DIR)/src/agb_flash_1m.o: CC1FLAGS := -O -mthumb-interwork
+$(BUILD_DIR)/src/agb_flash_mx.o: CC1FLAGS := -O -mthumb-interwork
-ASM_SRCS := $(wildcard asm/*.s)
-ASM_OBJS := $(ASM_SRCS:%.s=%.o)
+$(BUILD_DIR)/src/m4a_2.o: CC1 := tools/agbcc/bin/old_agbcc
+$(BUILD_DIR)/src/m4a_4.o: CC1 := tools/agbcc/bin/old_agbcc
-DATA_ASM_SRCS := $(wildcard data/*.s)
-DATA_ASM_OBJS := $(DATA_ASM_SRCS:%.s=%.o)
+#### Main Rules ####
-OBJS := $(C_OBJS) $(ASM_OBJS) $(DATA_ASM_OBJS)
+# Disable dependency scanning when NODEP is used for quick building
+ifeq ($(NODEP),)
+$(BUILD_DIR)/src/%.o: C_DEP = $(shell $(SCANINC) -I include src/$(*F).c)
+$(BUILD_DIR)/asm/%.o: ASM_DEP = $(shell $(SCANINC) asm/$(*F).s)
+$(BUILD_DIR)/data/%.o: ASM_DEP = $(shell $(SCANINC) data/$(*F).s)
+endif
-all: pmd_red.gba
+ALL_BUILDS := red
-# For contributors to make sure a change didn't affect the contents of the ROM.
+# Available targets
+.PHONY: all clean tidy
-compare: all
- @$(MD5) rom.md5
+MAKEFLAGS += --no-print-directory
+# Secondary expansion is required for dependency variables in object rules.
+.SECONDEXPANSION:
+# Clear the default suffixes
+.SUFFIXES:
+# Don't delete intermediate files
+.SECONDARY:
+# Delete files that weren't built properly
+.DELETE_ON_ERROR:
-clean: tidy
+.PRECIOUS: %.1bpp %.4bpp %.8bpp %.gbapal %.lz %.rl %.pcm %.bin
-tidy:
- rm -f pmd_red.gba pmd_red.elf pmd_red.map
- rm -f $(ASM_OBJS)
- rm -f $(DATA_ASM_OBJS)
- rm -f $(C_OBJS)
- rm -f $(ASM_OBJS)
- rm -f $(DATA_ASM_OBJS)
- rm -f $(C_SRCS:%.c=%.i)
- rm -f $(C_SRCS:%.c=%.s)
- rm -f *.ld
-src/agb_flash.o: CFLAGS := -O -mthumb-interwork
-src/agb_flash_1m.o: CFLAGS := -O -mthumb-interwork
-src/agb_flash_mx.o: CFLAGS := -O -mthumb-interwork
+# Create build subdirectories
-$(C_OBJS): %.o : %.c
- @$(CPP) $(CPPFLAGS) $< -o $*.i
- @$(CC1) $(CFLAGS) $*.i -o $*.s
- @printf ".text\n\t.align\t2, 0\n" >> $*.s
- $(AS) $(ASFLAGS) -o $@ $*.s
+$(shell mkdir -p $(SUBDIRS))
-$(ASM_OBJS): %.o: %.s
- $(AS) $(ASFLAGS) -o $@ $<
+all: $(ROM)
+ifeq ($(COMPARE),1)
+ @$(SHA1SUM) $(BUILD_NAME).sha1
+endif
-$(DATA_ASM_OBJS): %.o: %.s
- $(AS) $(ASFLAGS) -o $@ $<
+clean: tidy
+ $(RM) $(ALL_OBJECTS)
+tidy:
+ $(RM) $(ALL_BUILDS:%=pmd_%{.gba,.elf,.map})
+ $(RM) -r build
-sym_ewram.ld: sym_ewram.txt
- $(RAMSCRGEN) ewram_data sym_ewram.txt ENGLISH >$@
+$(ROM): %.gba: %.elf
+ $(OBJCOPY) -O binary --gap-fill 0xFF --pad-to 0xA000000 $< $@
+ $(GBAFIX) $@ -p -t"$(TITLE)" -c$(GAME_CODE) -m$(MAKER_CODE) -r$(REVISION) --silent
-sym_ewram2.ld: sym_ewram2.txt
- $(RAMSCRGEN) ewram_data sym_ewram2.txt ENGLISH >$@
+%.elf: $(LD_SCRIPT) $(ALL_OBJECTS) $(LIBC)
+ cd $(BUILD_DIR) && $(LD) -T ld_script.ld -Map ../../$(MAP) -o ../../$@ $(LIB)
-sym_iwram.ld: sym_iwram.txt
- $(RAMSCRGEN) iwram_data sym_iwram.txt ENGLISH >$@
+$(LD_SCRIPT): ld_script.txt $(BUILD_DIR)/sym_ewram.ld $(BUILD_DIR)/sym_ewram2.ld $(BUILD_DIR)/sym_iwram.ld
+ cd $(BUILD_DIR) && sed -e "s#tools/#../../tools/#g" ../../ld_script.txt >ld_script.ld
+$(BUILD_DIR)/sym_%.ld: sym_%.txt
+ $(CPP) -P $(CPPFLAGS) $< | sed -e "s#tools/#../../tools/#g" > $@
-ld_script.ld: ld_script.txt sym_ewram.ld sym_ewram2.ld sym_iwram.ld
- sed -f ld_script.sed ld_script.txt >ld_script.ld
+$(C_OBJECTS): $(BUILD_DIR)/%.o: %.c $$(C_DEP)
+ @$(CPP) $(CPPFLAGS) $< -o $(BUILD_DIR)/$*.i
+ @$(CC1) $(CC1FLAGS) $(BUILD_DIR)/$*.i -o $(BUILD_DIR)/$*.s
+ @printf ".text\n\t.align\t2, 0\n" >> $(BUILD_DIR)/$*.s
+ $(AS) $(ASFLAGS) -o $@ $(BUILD_DIR)/$*.s
-pmd_red.elf: ld_script.ld $(OBJS) $(LIBC)
- $(LD) -T ld_script.ld -Map pmd_red.map -o $@ $(OBJS) $(LIBC) $(LIBGCC)
+$(BUILD_DIR)/data/%.o: data/%.s $$(ASM_DEP)
+ $(AS) $(ASFLAGS) $< -o $@
-pmd_red.gba: pmd_red.elf
- $(OBJCOPY) -O binary --gap-fill 0xFF --pad-to 0xA000000 $< $@
+$(BUILD_DIR)/%.o: %.s $$(ASM_DEP)
+ $(AS) $(ASFLAGS) $< -o $@ \ No newline at end of file
diff --git a/README.md b/README.md
index 424b53d..070612d 100644
--- a/README.md
+++ b/README.md
@@ -1,10 +1,10 @@
-# Pokémon Mystery Dungeon: Red Rescue Team [![Build Status][travis-badge]][travis]
+# Pokémon Mystery Dungeon: Red Rescue Team
This is a disassembly of Pokémon Mystery Dungeon: Red Rescue Team.
It builds the following rom:
-* pmd_red.gba `md5: 2100cf6f17e12cd34f1513647dfa506b`
+* pmd_red.gba `sha1: 9f4cfc5b5f4859d17169a485462e977c7aac2b89`
To set up the repository, see [INSTALL.md](INSTALL.md).
@@ -31,7 +31,5 @@ To set up the repository, see [INSTALL.md](INSTALL.md).
[pokefirered]: https://github.com/pret/pokefirered
[pokeruby]: https://github.com/pret/pokeruby
[pokeemerald]: https://github.com/pret/pokeemerald
-[Discord]: https://discord.gg/cJxDDVP
+[Discord]: https://discord.gg/6EuWgX9
[irc]: https://kiwiirc.com/client/irc.freenode.net/?#pret
-[travis]: https://travis-ci.org/pret/pokeruby
-[travis-badge]: https://travis-ci.org/pret/pokeruby.svg?branch=master
diff --git a/asm/bg_palette_buffer.s b/asm/bg_palette_buffer.s
index 9b42ee5..9cafb43 100644
--- a/asm/bg_palette_buffer.s
+++ b/asm/bg_palette_buffer.s
@@ -9,7 +9,7 @@
InitBGPaletteBuffer:
push {lr}
movs r2, 0
- ldr r1, _0800465C
+ ldr r1, =gBGPaletteBuffer
movs r0, 0x80
lsls r0, 2
_0800463E:
@@ -18,7 +18,7 @@ _0800463E:
subs r0, 0x1
cmp r0, 0
bne _0800463E
- ldr r1, _08004660
+ ldr r1, =gBGPaletteUsed
movs r2, 0x1
adds r0, r1, 0
adds r0, 0x1F
@@ -30,8 +30,7 @@ _08004650:
pop {r0}
bx r0
.align 2, 0
-_0800465C: .4byte gUnknown_20251F0
-_08004660: .4byte gUnknown_20251D0
+ .pool
thumb_func_end InitBGPaletteBuffer
thumb_func_start SetBGPaletteBufferColorRGB
@@ -47,7 +46,7 @@ _08004670:
ble _08004676
movs r2, 0x1F
_08004676:
- ldr r1, _080046CC
+ ldr r1, =gBGPaletteUsed
adds r0, r4, 0
cmp r4, 0
bge _08004680
@@ -59,7 +58,7 @@ _08004680:
strb r1, [r0]
cmp r3, 0
bne _080046D4
- ldr r0, _080046D0
+ ldr r0, =gBGPaletteBuffer
lsls r1, r4, 1
adds r6, r1, r0
ldrb r0, [r5, 0x2]
@@ -94,10 +93,9 @@ _080046C0:
strh r1, [r6]
b _08004722
.align 2, 0
-_080046CC: .4byte gUnknown_20251D0
-_080046D0: .4byte gUnknown_20251F0
+ .pool
_080046D4:
- ldr r1, _08004728
+ ldr r1, =gBGPaletteBuffer
lsls r0, r4, 1
adds r7, r0, r1
ldrb r0, [r5, 0x2]
@@ -144,120 +142,7 @@ _08004722:
pop {r0}
bx r0
.align 2, 0
-_08004728: .4byte gUnknown_20251F0
+ .pool
thumb_func_end SetBGPaletteBufferColorRGB
- thumb_func_start SetBGPaletteBufferColorArray
-SetBGPaletteBufferColorArray:
- push {lr}
- adds r2, r0, 0
- adds r3, r1, 0
- ldr r1, _08004764
- cmp r2, 0
- bge _0800473A
- adds r0, 0xF
-_0800473A:
- asrs r0, 4
- adds r0, r1
- movs r1, 0x1
- strb r1, [r0]
- ldr r0, _08004768
- lsls r2, 1
- adds r2, r0
- ldrb r1, [r3, 0x2]
- lsrs r1, 3
- lsls r1, 10
- ldrb r0, [r3, 0x1]
- lsrs r0, 3
- lsls r0, 5
- orrs r1, r0
- ldrb r0, [r3]
- lsrs r0, 3
- orrs r0, r1
- strh r0, [r2]
- pop {r0}
- bx r0
- .align 2, 0
-_08004764: .4byte gUnknown_20251D0
-_08004768: .4byte gUnknown_20251F0
- thumb_func_end SetBGPaletteBufferColorArray
-
- thumb_func_start SetBGPaletteBufferColor
-SetBGPaletteBufferColor:
- push {lr}
- adds r2, r0, 0
- adds r3, r1, 0
- ldr r1, _08004790
- cmp r2, 0
- bge _0800477A
- adds r0, 0xF
-_0800477A:
- asrs r0, 4
- adds r0, r1
- movs r1, 0x1
- strb r1, [r0]
- ldr r1, _08004794
- lsls r0, r2, 1
- adds r0, r1
- ldrh r1, [r3]
- strh r1, [r0]
- pop {r0}
- bx r0
- .align 2, 0
-_08004790: .4byte gUnknown_20251D0
-_08004794: .4byte gUnknown_20251F0
- thumb_func_end SetBGPaletteBufferColor
-
- thumb_func_start nullsub_4
-nullsub_4:
- bx lr
- thumb_func_end nullsub_4
-
- thumb_func_start nullsub_5
-nullsub_5:
- bx lr
- thumb_func_end nullsub_5
-
- thumb_func_start nullsub_143
-nullsub_143:
- bx lr
- thumb_func_end nullsub_143
-
- thumb_func_start TransferBGPaletteBuffer
-TransferBGPaletteBuffer:
- push {r4-r6,lr}
- movs r6, 0
- movs r4, 0
- movs r5, 0xA0
- lsls r5, 19
-_080047AE:
- ldr r0, _080047DC
- adds r1, r6, r0
- ldrb r0, [r1]
- cmp r0, 0
- beq _080047CA
- movs r0, 0
- strb r0, [r1]
- lsls r1, r4, 1
- ldr r0, _080047E0
- adds r1, r0
- adds r0, r5, 0
- movs r2, 0x20
- bl CpuCopy
-_080047CA:
- adds r6, 0x1
- adds r5, 0x20
- adds r4, 0x10
- ldr r0, _080047E4
- cmp r4, r0
- ble _080047AE
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080047DC: .4byte gUnknown_20251D0
-_080047E0: .4byte gUnknown_20251F0
-_080047E4: .4byte 0x000001ff
- thumb_func_end TransferBGPaletteBuffer
-
- .align 2, 0 @ Don't pad with nop.
+.align 2, 0 @ Don't pad with nop. \ No newline at end of file
diff --git a/asm/code.s b/asm/code.s
index ba969d1..8a85646 100644
--- a/asm/code.s
+++ b/asm/code.s
@@ -198,7 +198,7 @@ _08000406:
movs r0, 0x2
bl sub_800A8F8
movs r0, 0x1
- bl sub_8004D8C
+ bl ResetSprites
movs r0, 0
bl xxx_update_some_bg_tiles
bl sub_80097B0
@@ -431,7 +431,7 @@ xxx_update_stuff:
bl sub_8009908
bl xxx_call_update_bg_sound_input
movs r0, 0
- bl sub_8004D8C
+ bl ResetSprites
pop {r0}
bx r0
.align 2, 0
diff --git a/asm/code_800B540.s b/asm/code_800B540.s
index 1f7afbc..85105f7 100644
--- a/asm/code_800B540.s
+++ b/asm/code_800B540.s
@@ -1062,7 +1062,7 @@ sub_800BD08:
ands r3, r1
strh r3, [r0, 0xA]
ldrh r0, [r0, 0xA]
- bl sub_80AEF24
+ bl m4aSoundInit
ldr r0, _0800BDB8
movs r2, 0
strh r2, [r0]
@@ -1184,7 +1184,7 @@ _0800BE4C:
movs r0, 0x1
strh r0, [r1]
adds r0, r6, 0
- bl sub_80AEFA8
+ bl m4aSongNumStart
_0800BE70:
cmp r4, 0
beq _0800BE78
@@ -1258,19 +1258,19 @@ _0800BEE0:
movs r1, 0x1
strh r1, [r0]
adds r0, r6, 0
- bl sub_80AEFA8
+ bl m4aSongNumStart
ldr r4, _0800BF44
adds r0, r4, 0
- bl sub_80AF198
+ bl m4aMPlayImmInit
adds r0, r4, 0
movs r1, 0xFF
movs r2, 0
- bl sub_80AFF50
+ bl m4aMPlayVolumeControl
adds r0, r6, 0
- bl sub_80AF074
+ bl m4aSongNumStop
adds r0, r4, 0
adds r1, r5, 0
- bl sub_80AF170
+ bl m4aMPlayFadeIn
_0800BF26:
cmp r7, 0
beq _0800BF2E
@@ -1333,7 +1333,7 @@ sub_800BF80:
cmp r1, r0
beq _0800BFA2
ldr r0, _0800BFC8
- bl sub_80AF7C0
+ bl m4aMPlayStop
_0800BFA2:
ldr r0, _0800BFC0
ldr r2, _0800BFC4
@@ -1392,7 +1392,7 @@ _0800BFE8:
strh r0, [r1]
ldr r0, _0800C028
adds r1, r4, 0
- bl sub_80AF140
+ bl m4aMPlayFadeOut
b _0800C044
.align 2, 0
_0800C018: .4byte gUnknown_202D690
@@ -1403,7 +1403,7 @@ _0800C028: .4byte gUnknown_20008F0
_0800C02C:
strh r2, [r3]
ldr r0, _0800C038
- bl sub_80AF7C0
+ bl m4aMPlayStop
b _0800C044
.align 2, 0
_0800C038: .4byte gUnknown_20008F0
@@ -1506,7 +1506,7 @@ _0800C0B4:
strb r2, [r0]
ldr r0, _0800C11C
movs r1, 0x1
- bl sub_80AF150
+ bl m4aMPlayFadeOutTemporarily
b _0800C15E
.align 2, 0
_0800C0FC: .4byte 0x000003e5
@@ -1529,9 +1529,9 @@ _0800C12C:
movs r0, 0x3
strh r0, [r4]
ldr r0, _0800C140
- bl sub_80AF7C0
+ bl m4aMPlayStop
ldrh r0, [r6]
- bl sub_80AEFA8
+ bl m4aSongNumStart
b _0800C15E
.align 2, 0
_0800C140: .4byte gUnknown_20008F0
@@ -1542,9 +1542,9 @@ _0800C144:
cmp r0, 0x1
bls _0800C15E
ldr r0, _0800C17C
- bl sub_80AF7C0
+ bl m4aMPlayStop
ldrh r0, [r6]
- bl sub_80AEFA8
+ bl m4aSongNumStart
movs r0, 0x3
_0800C15C:
strh r0, [r4]
@@ -1618,7 +1618,7 @@ _0800C1DC:
lsls r0, 24
lsrs r5, r0, 24
mov r0, r8
- bl sub_80AEFA8
+ bl m4aSongNumStart
movs r0, 0x1
strh r0, [r4]
mov r0, r8
@@ -1693,7 +1693,7 @@ _0800C22C:
mov r0, r8
movs r1, 0xF
adds r2, r7, 0
- bl sub_80AFF50
+ bl m4aMPlayVolumeControl
_0800C27E:
cmp r6, 0
beq _0800C286
@@ -1705,7 +1705,7 @@ _0800C286:
pop {r0}
bx r0
.align 2, 0
-_0800C290: .4byte gUnknown_9E8665C
+_0800C290: .4byte gMPlayTable
_0800C294: .4byte gUnknown_3000FD8
thumb_func_end sub_800C214
@@ -1736,7 +1736,7 @@ sub_800C298:
movs r5, 0x4
_0800C2C8:
ldr r0, [r6]
- bl sub_80AF7C0
+ bl m4aMPlayStop
strh r7, [r4]
mov r2, r8
strh r2, [r4, 0x2]
@@ -1756,7 +1756,7 @@ _0800C2C8:
.align 2, 0
_0800C2F0: .4byte 0x000003e5
_0800C2F4: .4byte gUnknown_3000FE8
-_0800C2F8: .4byte gUnknown_9E8665C
+_0800C2F8: .4byte gMPlayTable
_0800C2FC:
adds r0, r5, 0
bl sub_800CAAC
@@ -1782,7 +1782,7 @@ _0800C2FC:
bl nullsub_21
b _0800C3DE
.align 2, 0
-_0800C330: .4byte gUnknown_9E8665C
+_0800C330: .4byte gMPlayTable
_0800C334: .4byte gUnknown_3000FD8
_0800C338:
bl sub_800B620
@@ -1792,7 +1792,7 @@ _0800C338:
cmp r0, r5
bne _0800C35A
adds r0, r7, 0
- bl sub_80AF7C0
+ bl m4aMPlayStop
movs r1, 0
movs r0, 0
strh r0, [r4]
@@ -1823,7 +1823,7 @@ _0800C364:
mov r0, r8
strh r0, [r1]
ldr r0, _0800C3A4
- bl sub_80AF7C0
+ bl m4aMPlayStop
_0800C38C:
cmp r4, 0
beq _0800C3DE
@@ -1854,7 +1854,7 @@ _0800C3A8:
mov r2, r8
strh r2, [r1]
ldr r0, _0800C3F4
- bl sub_80AF7C0
+ bl m4aMPlayStop
_0800C3D6:
cmp r4, 0
beq _0800C3DE
@@ -1924,15 +1924,15 @@ _0800C43E:
beq _0800C46C
ldr r0, [r6]
mov r1, r9
- bl sub_80AF140
+ bl m4aMPlayFadeOut
b _0800C47E
.align 2, 0
_0800C460: .4byte 0x000003e5
_0800C464: .4byte gUnknown_3000FE8
-_0800C468: .4byte gUnknown_9E8665C
+_0800C468: .4byte gMPlayTable
_0800C46C:
ldr r0, [r6]
- bl sub_80AF7C0
+ bl m4aMPlayStop
strh r4, [r5]
mov r1, r8
strh r1, [r5, 0x2]
@@ -1985,14 +1985,14 @@ _0800C496:
beq _0800C4EC
adds r0, r6, 0
mov r1, r9
- bl sub_80AF140
+ bl m4aMPlayFadeOut
b _0800C4FE
.align 2, 0
_0800C4E4: .4byte gUnknown_3000FD8
-_0800C4E8: .4byte gUnknown_9E8665C
+_0800C4E8: .4byte gMPlayTable
_0800C4EC:
adds r0, r6, 0
- bl sub_80AF7C0
+ bl m4aMPlayStop
movs r0, 0
strh r4, [r5]
mov r1, r8
@@ -2026,7 +2026,7 @@ _0800C508:
beq _0800C54C
ldr r0, _0800C548
mov r1, r9
- bl sub_80AF140
+ bl m4aMPlayFadeOut
b _0800C556
.align 2, 0
_0800C53C: .4byte 0x000003e6
@@ -2035,7 +2035,7 @@ _0800C544: .4byte gUnknown_202D68E
_0800C548: .4byte gUnknown_2000970
_0800C54C:
ldr r0, _0800C560
- bl sub_80AF7C0
+ bl m4aMPlayStop
mov r0, r8
strh r0, [r4]
_0800C556:
@@ -2069,7 +2069,7 @@ _0800C564:
beq _0800C5AC
ldr r0, _0800C5A8
mov r1, r9
- bl sub_80AF140
+ bl m4aMPlayFadeOut
b _0800C5B6
.align 2, 0
_0800C5A0: .4byte gUnknown_202D690
@@ -2077,7 +2077,7 @@ _0800C5A4: .4byte gUnknown_202D68E
_0800C5A8: .4byte gUnknown_2000970
_0800C5AC:
ldr r0, _0800C5CC
- bl sub_80AF7C0
+ bl m4aMPlayStop
mov r1, r8
strh r1, [r5]
_0800C5B6:
@@ -2246,7 +2246,7 @@ _0800C6D8:
beq _0800C718
ldrh r0, [r2]
_0800C6E4:
- bl sub_80AEFA8
+ bl m4aSongNumStart
movs r0, 0x3
strh r0, [r4]
b _0800C8A2
@@ -2297,7 +2297,7 @@ _0800C74C: .4byte gUnknown_202D68E
_0800C750: .4byte 0x000003e5
_0800C754:
ldr r0, _0800C76C
- bl sub_80AF7C0
+ bl m4aMPlayStop
_0800C75A:
ldr r1, _0800C770
ldrh r0, [r1]
@@ -2324,7 +2324,7 @@ _0800C774:
cmp r0, 0
beq _0800C7A4
ldrh r0, [r3]
- bl sub_80AEFA8
+ bl m4aSongNumStart
b _0800C7BE
.align 2, 0
_0800C794: .4byte gUnknown_202D68A
@@ -2334,7 +2334,7 @@ _0800C7A0: .4byte gUnknown_202D694
_0800C7A4:
ldr r0, _0800C7B0
movs r1, 0x4
- bl sub_80AF170
+ bl m4aMPlayFadeIn
b _0800C7BE
.align 2, 0
_0800C7B0: .4byte gUnknown_20008F0
@@ -2342,7 +2342,7 @@ _0800C7B4:
ldr r0, _0800C7CC
strh r2, [r0]
ldr r0, _0800C7D0
- bl sub_80AF7C0
+ bl m4aMPlayStop
_0800C7BE:
ldr r1, _0800C7D4
movs r0, 0
@@ -2402,7 +2402,7 @@ _0800C834: .4byte gUnknown_202D68A
_0800C838: .4byte 0x000003e7
_0800C83C:
ldr r0, _0800C854
- bl sub_80AF7C0
+ bl m4aMPlayStop
_0800C842:
ldr r1, _0800C858
movs r0, 0
@@ -2436,7 +2436,7 @@ _0800C864:
ldr r0, _0800C898
strh r2, [r0]
adds r0, r1, 0
- bl sub_80AEFA8
+ bl m4aSongNumStart
strh r4, [r6]
b _0800C8A2
.align 2, 0
@@ -2503,10 +2503,10 @@ _0800C8F0:
ldr r0, [r0]
ldrh r2, [r4, 0x4]
movs r1, 0xFF
- bl sub_80AFF50
+ bl m4aMPlayVolumeControl
b _0800C926
.align 2, 0
-_0800C918: .4byte gUnknown_9E8665C
+_0800C918: .4byte gMPlayTable
_0800C91C:
strh r0, [r4]
mov r1, r8
@@ -2579,8 +2579,8 @@ _0800C9A8:
strh r0, [r4]
_0800C9AC:
ldr r0, _0800C9C8
- bl sub_80AF7C0
- bl sub_80AF5AC
+ bl m4aMPlayStop
+ bl m4aSoundVSyncOff
cmp r5, 0
beq _0800C9BE
bl sub_800B5F0
@@ -2599,7 +2599,7 @@ sub_800C9CC:
bl sub_800B620
lsls r0, 24
lsrs r4, r0, 24
- bl sub_80AF628
+ bl m4aSoundVSyncOn
ldr r0, _0800CA08
ldrh r0, [r0]
cmp r0, 0
@@ -2620,7 +2620,7 @@ sub_800C9CC:
cmp r0, 0
beq _0800CA1C
ldrh r0, [r2]
- bl sub_80AEFA8
+ bl m4aSongNumStart
b _0800CA22
.align 2, 0
_0800CA08: .4byte gUnknown_202D690
@@ -2630,7 +2630,7 @@ _0800CA14: .4byte gUnknown_202D688
_0800CA18: .4byte gUnknown_202D694
_0800CA1C:
ldr r0, _0800CA30
- bl sub_80AF108
+ bl m4aMPlayContinue
_0800CA22:
cmp r4, 0
beq _0800CA2A
@@ -2762,7 +2762,7 @@ sub_800CAE0:
ldrh r0, [r0, 0x4]
bx lr
.align 2, 0
-_0800CAEC: .4byte gUnknown_9E866BC
+_0800CAEC: .4byte gSongTable
thumb_func_end sub_800CAE0
thumb_func_start sub_800CAF0
@@ -2782,7 +2782,7 @@ sub_800CAF0:
movs r0, 0x1
b _0800CB12
.align 2, 0
-_0800CB0C: .4byte gUnknown_9E8665C
+_0800CB0C: .4byte gMPlayTable
_0800CB10:
movs r0, 0
_0800CB12:
diff --git a/asm/code_800D090.s b/asm/code_800D090.s
index 583fe83..4f43b66 100644
--- a/asm/code_800D090.s
+++ b/asm/code_800D090.s
@@ -7661,7 +7661,7 @@ sub_8010960:
bl xxx_call_update_bg_sound_input
bl sub_8011860
movs r0, 0
- bl sub_8004D8C
+ bl ResetSprites
pop {r4-r6}
pop {r0}
bx r0
@@ -9290,7 +9290,7 @@ sub_801169C:
bl xxx_call_update_bg_sound_input
bl sub_8011860
movs r0, 0
- bl sub_8004D8C
+ bl ResetSprites
add sp, 0x8
pop {r4-r6}
pop {r0}
diff --git a/asm/code_8012A18.s b/asm/code_8012A18.s
index bf8e220..e462a67 100644
--- a/asm/code_8012A18.s
+++ b/asm/code_8012A18.s
@@ -25,7 +25,7 @@ sub_8012A18:
bl sub_8009908
bl xxx_call_update_bg_sound_input
movs r0, 0
- bl sub_8004D8C
+ bl ResetSprites
pop {r0}
bx r0
.align 2, 0
@@ -4698,7 +4698,7 @@ _08014E10:
adds r4, r1, r0
b _08014F0C
.align 2, 0
-_08014E20: .4byte gUnknown_202D3B8
+_08014E20: .4byte gFileCache + 0x110
_08014E24:
adds r5, 0x1
movs r0, 0
@@ -17484,7 +17484,7 @@ sub_801B3C0:
push {r4,r5,lr}
adds r5, r0, 0
movs r0, 0x1
- bl sub_8004D8C
+ bl ResetSprites
ldr r4, _0801B40C
movs r0, 0x94
movs r1, 0x8
@@ -19806,7 +19806,7 @@ sub_801C620:
lsls r4, 24
lsrs r4, 24
movs r0, 0x1
- bl sub_8004D8C
+ bl ResetSprites
ldr r5, _0801C670
movs r0, 0x94
movs r1, 0x8
@@ -26163,7 +26163,7 @@ sub_801F808:
push {r4,r5,lr}
adds r4, r0, 0
movs r0, 0x1
- bl sub_8004D8C
+ bl ResetSprites
ldr r5, _0801F88C
movs r0, 0xD4
movs r1, 0x8
@@ -41273,7 +41273,7 @@ _0802706E:
sub_8027074:
push {r4,lr}
movs r0, 0
- bl sub_8004D8C
+ bl ResetSprites
ldr r4, _080270A0
movs r0, 0xF0
lsls r0, 1
@@ -73146,7 +73146,7 @@ sub_8036FDC:
movs r2, 0x1
bl sub_800641C
movs r0, 0
- bl sub_8004D8C
+ bl ResetSprites
ldr r5, _080370C0
ldr r0, [r5]
cmp r0, 0
@@ -73610,7 +73610,7 @@ sub_80373C4:
bl sub_8009908
bl xxx_call_update_bg_sound_input
movs r0, 0
- bl sub_8004D8C
+ bl ResetSprites
pop {r0}
bx r0
thumb_func_end sub_80373C4
@@ -76245,7 +76245,7 @@ sub_8038830:
add r0, r12
str r5, [r0]
movs r0, 0
- bl sub_8004D8C
+ bl ResetSprites
pop {r4,r5}
pop {r0}
bx r0
@@ -86812,10 +86812,10 @@ _0803DB54:
.align 2, 0
_0803DB84: .4byte gUnknown_80F60F8
_0803DB88: .4byte gUnknown_83B0000
-_0803DB8C: .4byte gUnknown_202EC88
+_0803DB8C: .4byte gDungeonNameBannerPalette
_0803DB90: .4byte gUnknown_80F6100
-_0803DB94: .4byte gUnknown_202EC8C
-_0803DB98: .4byte gUnknown_202EC90
+_0803DB94: .4byte gDungeonNameBannerFontFile
+_0803DB98: .4byte gDungeonNameBannerFont
_0803DB9C: .4byte 0x06000140
_0803DBA0: .4byte gUnknown_203B418
_0803DBA4: .4byte 0x00000645
@@ -86862,7 +86862,7 @@ _0803DBEA:
.align 2, 0
_0803DC08: .4byte gUnknown_80F6118
_0803DC0C: .4byte gUnknown_20274A5
-_0803DC10: .4byte gUnknown_202EC8C
+_0803DC10: .4byte gDungeonNameBannerFontFile
thumb_func_end ShowDungeonNameBanner
thumb_func_start sub_803DC14
@@ -87273,7 +87273,7 @@ sub_803DEC8:
adds r1, r5, r0
b _0803DF56
.align 2, 0
-_0803DEFC: .4byte gUnknown_202EC8C
+_0803DEFC: .4byte gDungeonNameBannerFontFile
_0803DF00: .4byte 0xffff0800
_0803DF04: .4byte 0x000007fe
_0803DF08:
@@ -87287,7 +87287,7 @@ _0803DF08:
adds r0, r2, r0
b _0803DF3A
.align 2, 0
-_0803DF1C: .4byte gUnknown_202EC90
+_0803DF1C: .4byte gDungeonNameBannerFont
_0803DF20:
lsls r0, r1, 3
adds r0, r5
@@ -88114,7 +88114,7 @@ _0803E5A2:
bl sub_8011860
bl sub_8040B60
movs r0, 0
- bl sub_8004D8C
+ bl ResetSprites
movs r0, 0
bl nullsub_10
ldr r1, _0803E664
@@ -88186,7 +88186,7 @@ sub_803E668:
strb r1, [r0]
bl sub_8011860
movs r0, 0
- bl sub_8004D8C
+ bl ResetSprites
movs r0, 0
bl nullsub_10
ldr r0, [r4]
@@ -88555,7 +88555,7 @@ _0803E9B4: .4byte 0x00018215
_0803E9B8: .4byte 0x0001c06c
_0803E9BC: .4byte gUnknown_202EE8C
_0803E9C0: .4byte gUnknown_202ECA4
-_0803E9C4: .4byte gUnknown_202EC88
+_0803E9C4: .4byte gDungeonNameBannerPalette
_0803E9C8: .4byte gUnknown_202D058
_0803E9CC: .4byte 0x000181e4
thumb_func_end sub_803E874
@@ -99078,7 +99078,7 @@ _08043984: .4byte 0xff00ffff
_08043988: .4byte gUnknown_202EDC8
_0804398C: .4byte gUnknown_81006A4
_08043990: .4byte 0x00000222
-_08043994: .4byte gUnknown_202EC88
+_08043994: .4byte gDungeonNameBannerPalette
_08043998: .4byte gUnknown_203B40C
_0804399C: .4byte gUnknown_203B41C
_080439A0:
@@ -104471,7 +104471,7 @@ sub_8046298:
ldrb r0, [r0, 0xD]
bx lr
.align 2, 0
-_080462A8: .4byte gUnknown_20389A4
+_080462A8: .4byte gItemParametersFile + 4
thumb_func_end sub_8046298
thumb_func_start sub_80462AC
@@ -245668,8 +245668,8 @@ _0808CDE4: .4byte gUnknown_203B45C
_0808CDE8: .4byte gUnknown_202F400
_0808CDEC: .4byte gUnknown_81075F4
_0808CDF0: .4byte gUnknown_8300500
-_0808CDF4: .4byte gUnknown_202F3E4
-_0808CDF8: .4byte gUnknown_202F3E0
+_0808CDF4: .4byte gMonsterParametersFile
+_0808CDF8: .4byte gMonsterParameters
_0808CDFC: .4byte gUnknown_20384E8
thumb_func_end LoadMonsterParameters
@@ -245907,7 +245907,7 @@ _0808CFB8:
pop {r0}
bx r0
.align 2, 0
-_0808CFC8: .4byte gUnknown_202F3E0
+_0808CFC8: .4byte gMonsterParameters
_0808CFCC: .4byte gUnknown_203B45C
thumb_func_end sub_808CE74
@@ -246197,7 +246197,7 @@ sub_808D1DC:
bne _0808D238
b _0808D268
.align 2, 0
-_0808D204: .4byte gUnknown_202F3E0
+_0808D204: .4byte gMonsterParameters
_0808D208: .4byte gUnknown_203B468
_0808D20C:
ldr r0, [r7]
@@ -246278,7 +246278,7 @@ sub_808D278:
bne _0808D2AA
b _0808D2DA
.align 2, 0
-_0808D29C: .4byte gUnknown_202F3E0
+_0808D29C: .4byte gMonsterParameters
_0808D2A0: .4byte gUnknown_203B468
_0808D2A4:
ldr r0, [r7]
@@ -247194,7 +247194,7 @@ sub_808D8BC:
pop {r0}
bx r0
.align 2, 0
-_0808D8DC: .4byte gUnknown_202F3E0
+_0808D8DC: .4byte gMonsterParameters
thumb_func_end sub_808D8BC
thumb_func_start sub_808D8E0
@@ -247216,7 +247216,7 @@ sub_808D8E0:
bx r0
.align 2, 0
_0808D900: .4byte gUnknown_8107600
-_0808D904: .4byte gUnknown_202F3E0
+_0808D904: .4byte gMonsterParameters
thumb_func_end sub_808D8E0
thumb_func_start sub_808D908
@@ -247238,7 +247238,7 @@ sub_808D908:
bx r0
.align 2, 0
_0808D928: .4byte gUnknown_8107608
-_0808D92C: .4byte gUnknown_202F3E0
+_0808D92C: .4byte gMonsterParameters
thumb_func_end sub_808D908
thumb_func_start sub_808D930
@@ -247287,7 +247287,7 @@ _0808D986:
bx r0
.align 2, 0
_0808D98C: .4byte gUnknown_8107638
-_0808D990: .4byte gUnknown_202F3E0
+_0808D990: .4byte gMonsterParameters
thumb_func_end sub_808D930
thumb_func_start sub_808D994
@@ -247303,7 +247303,7 @@ sub_808D994:
ldr r0, [r1]
bx lr
.align 2, 0
-_0808D9A8: .4byte gUnknown_202F3E0
+_0808D9A8: .4byte gMonsterParameters
thumb_func_end sub_808D994
thumb_func_start sub_808D9AC
@@ -247468,7 +247468,7 @@ sub_808DAB4:
ldr r0, [r1, 0x4]
bx lr
.align 2, 0
-_0808DAC8: .4byte gUnknown_202F3E0
+_0808DAC8: .4byte gMonsterParameters
thumb_func_end sub_808DAB4
thumb_func_start sub_808DACC
@@ -247484,7 +247484,7 @@ sub_808DACC:
ldrb r0, [r1, 0x9]
bx lr
.align 2, 0
-_0808DAE0: .4byte gUnknown_202F3E0
+_0808DAE0: .4byte gMonsterParameters
thumb_func_end sub_808DACC
thumb_func_start sub_808DAE4
@@ -247500,7 +247500,7 @@ sub_808DAE4:
ldrb r0, [r1, 0x19]
bx lr
.align 2, 0
-_0808DAF8: .4byte gUnknown_202F3E0
+_0808DAF8: .4byte gMonsterParameters
thumb_func_end sub_808DAE4
thumb_func_start sub_808DAFC
@@ -247516,7 +247516,7 @@ sub_808DAFC:
ldr r0, [r1, 0xC]
bx lr
.align 2, 0
-_0808DB10: .4byte gUnknown_202F3E0
+_0808DB10: .4byte gMonsterParameters
thumb_func_end sub_808DAFC
thumb_func_start sub_808DB14
@@ -247532,7 +247532,7 @@ sub_808DB14:
ldrb r0, [r1, 0x15]
bx lr
.align 2, 0
-_0808DB28: .4byte gUnknown_202F3E0
+_0808DB28: .4byte gMonsterParameters
thumb_func_end sub_808DB14
thumb_func_start sub_808DB2C
@@ -247550,7 +247550,7 @@ sub_808DB2C:
lsrs r0, 24
bx lr
.align 2, 0
-_0808DB44: .4byte gUnknown_202F3E0
+_0808DB44: .4byte gMonsterParameters
thumb_func_end sub_808DB2C
thumb_func_start sub_808DB48
@@ -247566,7 +247566,7 @@ sub_808DB48:
ldrb r0, [r1, 0x1C]
bx lr
.align 2, 0
-_0808DB5C: .4byte gUnknown_202F3E0
+_0808DB5C: .4byte gMonsterParameters
thumb_func_end sub_808DB48
thumb_func_start sub_808DB60
@@ -247582,7 +247582,7 @@ sub_808DB60:
ldrb r0, [r1, 0x1D]
bx lr
.align 2, 0
-_0808DB74: .4byte gUnknown_202F3E0
+_0808DB74: .4byte gMonsterParameters
thumb_func_end sub_808DB60
thumb_func_start sub_808DB78
@@ -247598,7 +247598,7 @@ sub_808DB78:
ldrh r0, [r1, 0x2C]
bx lr
.align 2, 0
-_0808DB8C: .4byte gUnknown_202F3E0
+_0808DB8C: .4byte gMonsterParameters
thumb_func_end sub_808DB78
thumb_func_start sub_808DB90
@@ -247614,7 +247614,7 @@ sub_808DB90:
ldrh r0, [r1, 0x2E]
bx lr
.align 2, 0
-_0808DBA4: .4byte gUnknown_202F3E0
+_0808DBA4: .4byte gMonsterParameters
thumb_func_end sub_808DB90
thumb_func_start sub_808DBA8
@@ -247630,7 +247630,7 @@ sub_808DBA8:
ldrb r0, [r1, 0x16]
bx lr
.align 2, 0
-_0808DBBC: .4byte gUnknown_202F3E0
+_0808DBBC: .4byte gMonsterParameters
thumb_func_end sub_808DBA8
thumb_func_start sub_808DBC0
@@ -247646,7 +247646,7 @@ sub_808DBC0:
ldrh r0, [r1, 0x1E]
bx lr
.align 2, 0
-_0808DBD4: .4byte gUnknown_202F3E0
+_0808DBD4: .4byte gMonsterParameters
thumb_func_end sub_808DBC0
thumb_func_start sub_808DBD8
@@ -247663,7 +247663,7 @@ sub_808DBD8:
ldrb r0, [r1]
bx lr
.align 2, 0
-_0808DBF0: .4byte gUnknown_202F3E0
+_0808DBF0: .4byte gMonsterParameters
thumb_func_end sub_808DBD8
thumb_func_start sub_808DBF4
@@ -247679,7 +247679,7 @@ sub_808DBF4:
ldrb r0, [r1, 0x12]
bx lr
.align 2, 0
-_0808DC08: .4byte gUnknown_202F3E0
+_0808DC08: .4byte gMonsterParameters
thumb_func_end sub_808DBF4
thumb_func_start sub_808DC0C
@@ -247696,7 +247696,7 @@ sub_808DC0C:
ldrsh r0, [r1, r2]
bx lr
.align 2, 0
-_0808DC24: .4byte gUnknown_202F3E0
+_0808DC24: .4byte gMonsterParameters
thumb_func_end sub_808DC0C
thumb_func_start sub_808DC28
@@ -247715,7 +247715,7 @@ sub_808DC28:
ldrh r0, [r2]
bx lr
.align 2, 0
-_0808DC44: .4byte gUnknown_202F3E0
+_0808DC44: .4byte gMonsterParameters
thumb_func_end sub_808DC28
thumb_func_start sub_808DC48
@@ -247734,7 +247734,7 @@ sub_808DC48:
ldrh r0, [r2]
bx lr
.align 2, 0
-_0808DC64: .4byte gUnknown_202F3E0
+_0808DC64: .4byte gMonsterParameters
thumb_func_end sub_808DC48
thumb_func_start sub_808DC68
@@ -247752,7 +247752,7 @@ sub_808DC68:
ldrb r0, [r2]
bx lr
.align 2, 0
-_0808DC80: .4byte gUnknown_202F3E0
+_0808DC80: .4byte gMonsterParameters
thumb_func_end sub_808DC68
thumb_func_start sub_808DC84
@@ -247770,7 +247770,7 @@ sub_808DC84:
ldrb r0, [r2]
bx lr
.align 2, 0
-_0808DC9C: .4byte gUnknown_202F3E0
+_0808DC9C: .4byte gMonsterParameters
thumb_func_end sub_808DC84
thumb_func_start sub_808DCA0
@@ -247790,7 +247790,7 @@ sub_808DCA0:
ldrsh r0, [r2, r1]
bx lr
.align 2, 0
-_0808DCBC: .4byte gUnknown_202F3E0
+_0808DCBC: .4byte gMonsterParameters
thumb_func_end sub_808DCA0
thumb_func_start sub_808DCC0
@@ -247808,7 +247808,7 @@ sub_808DCC0:
ldrsh r0, [r1, r2]
bx lr
.align 2, 0
-_0808DCD8: .4byte gUnknown_202F3E0
+_0808DCD8: .4byte gMonsterParameters
thumb_func_end sub_808DCC0
thumb_func_start sub_808DCDC
@@ -247828,7 +247828,7 @@ sub_808DCDC:
ldrsh r0, [r2, r1]
bx lr
.align 2, 0
-_0808DCF8: .4byte gUnknown_202F3E0
+_0808DCF8: .4byte gMonsterParameters
thumb_func_end sub_808DCDC
thumb_func_start sub_808DCFC
@@ -247845,7 +247845,7 @@ sub_808DCFC:
ldrsh r0, [r1, r2]
bx lr
.align 2, 0
-_0808DD14: .4byte gUnknown_202F3E0
+_0808DD14: .4byte gMonsterParameters
thumb_func_end sub_808DCFC
thumb_func_start sub_808DD18
@@ -247871,7 +247871,7 @@ sub_808DD18:
pop {r1}
bx r1
.align 2, 0
-_0808DD44: .4byte gUnknown_202F3E0
+_0808DD44: .4byte gMonsterParameters
thumb_func_end sub_808DD18
thumb_func_start sub_808DD48
@@ -247890,7 +247890,7 @@ sub_808DD48:
str r3, [r1, 0x4]
bx lr
.align 2, 0
-_0808DD64: .4byte gUnknown_202F3E0
+_0808DD64: .4byte gMonsterParameters
thumb_func_end sub_808DD48
thumb_func_start sub_808DD68
@@ -247909,7 +247909,7 @@ sub_808DD68:
ldrb r0, [r0, 0x8]
b _0808DD8A
.align 2, 0
-_0808DD84: .4byte gUnknown_202F3E0
+_0808DD84: .4byte gMonsterParameters
_0808DD88:
movs r0, 0xA
_0808DD8A:
@@ -247940,7 +247940,7 @@ sub_808DD90:
bl OpenFile
b _0808DDCA
.align 2, 0
-_0808DDBC: .4byte gUnknown_202F3E0
+_0808DDBC: .4byte gMonsterParameters
_0808DDC0: .4byte gUnknown_8107684
_0808DDC4: .4byte gUnknown_8510000
_0808DDC8:
@@ -247974,7 +247974,7 @@ sub_808DDD0:
bl OpenFileAndGetFileDataPtr
b _0808DE0A
.align 2, 0
-_0808DDFC: .4byte gUnknown_202F3E0
+_0808DDFC: .4byte gMonsterParameters
_0808DE00: .4byte gUnknown_8107684
_0808DE04: .4byte gUnknown_8510000
_0808DE08:
@@ -248001,7 +248001,7 @@ sub_808DE10:
ands r0, r1
bx lr
.align 2, 0
-_0808DE2C: .4byte gUnknown_202F3E0
+_0808DE2C: .4byte gMonsterParameters
thumb_func_end sub_808DE10
thumb_func_start sub_808DE30
@@ -253777,8 +253777,8 @@ _080909B8: .4byte gUnknown_203B460
_080909BC: .4byte gUnknown_20389A8
_080909C0: .4byte gUnknown_8109764
_080909C4: .4byte gUnknown_8300500
-_080909C8: .4byte gUnknown_20389A0
-_080909CC: .4byte gUnknown_20389A4
+_080909C8: .4byte gItemParametersFile
+_080909CC: .4byte gItemParametersFile + 4
thumb_func_end sub_8090998
thumb_func_start sub_80909D0
@@ -254085,7 +254085,7 @@ sub_8090BD0:
ldrb r0, [r0, 0xC]
bx lr
.align 2, 0
-_08090BE0: .4byte gUnknown_20389A4
+_08090BE0: .4byte gItemParametersFile + 4
thumb_func_end sub_8090BD0
thumb_func_start sub_8090BE4
@@ -254112,7 +254112,7 @@ _08090BF6:
ldr r0, [r0, 0x4]
b _08090C24
.align 2, 0
-_08090C10: .4byte gUnknown_20389A4
+_08090C10: .4byte gItemParametersFile + 4
_08090C14:
ldrb r0, [r4, 0x2]
ldr r1, _08090C2C
@@ -254127,7 +254127,7 @@ _08090C24:
pop {r1}
bx r1
.align 2, 0
-_08090C2C: .4byte gUnknown_20389A4
+_08090C2C: .4byte gItemParametersFile + 4
thumb_func_end sub_8090BE4
thumb_func_start sub_8090C30
@@ -254154,7 +254154,7 @@ _08090C42:
ldr r0, [r0, 0x8]
b _08090C70
.align 2, 0
-_08090C5C: .4byte gUnknown_20389A4
+_08090C5C: .4byte gItemParametersFile + 4
_08090C60:
ldrb r0, [r4, 0x2]
ldr r1, _08090C78
@@ -254169,7 +254169,7 @@ _08090C70:
pop {r1}
bx r1
.align 2, 0
-_08090C78: .4byte gUnknown_20389A4
+_08090C78: .4byte gItemParametersFile + 4
thumb_func_end sub_8090C30
thumb_func_start sub_8090C7C
@@ -254197,7 +254197,7 @@ _08090C90:
ldr r0, [r0, 0x4]
b _08090CC0
.align 2, 0
-_08090CAC: .4byte gUnknown_20389A4
+_08090CAC: .4byte gItemParametersFile + 4
_08090CB0:
ldrb r0, [r4, 0x2]
ldr r1, _08090CC8
@@ -254212,7 +254212,7 @@ _08090CC0:
pop {r1}
bx r1
.align 2, 0
-_08090CC8: .4byte gUnknown_20389A4
+_08090CC8: .4byte gItemParametersFile + 4
thumb_func_end sub_8090C7C
thumb_func_start sub_8090CCC
@@ -254240,7 +254240,7 @@ _08090CE0:
ldr r0, [r0, 0x8]
b _08090D10
.align 2, 0
-_08090CFC: .4byte gUnknown_20389A4
+_08090CFC: .4byte gItemParametersFile + 4
_08090D00:
ldrb r0, [r4, 0x2]
ldr r1, _08090D18
@@ -254255,7 +254255,7 @@ _08090D10:
pop {r1}
bx r1
.align 2, 0
-_08090D18: .4byte gUnknown_20389A4
+_08090D18: .4byte gItemParametersFile + 4
thumb_func_end sub_8090CCC
thumb_func_start sub_8090D1C
@@ -254268,7 +254268,7 @@ sub_8090D1C:
ldr r0, [r0, 0x4]
bx lr
.align 2, 0
-_08090D2C: .4byte gUnknown_20389A4
+_08090D2C: .4byte gItemParametersFile + 4
thumb_func_end sub_8090D1C
thumb_func_start sub_8090D30
@@ -254281,7 +254281,7 @@ sub_8090D30:
ldr r0, [r0, 0x8]
bx lr
.align 2, 0
-_08090D40: .4byte gUnknown_20389A4
+_08090D40: .4byte gItemParametersFile + 4
thumb_func_end sub_8090D30
thumb_func_start sub_8090D44
@@ -254294,7 +254294,7 @@ sub_8090D44:
ldrb r0, [r0, 0x1A]
bx lr
.align 2, 0
-_08090D54: .4byte gUnknown_20389A4
+_08090D54: .4byte gItemParametersFile + 4
thumb_func_end sub_8090D44
thumb_func_start sub_8090D58
@@ -254307,7 +254307,7 @@ sub_8090D58:
ldrb r0, [r0, 0x1D]
bx lr
.align 2, 0
-_08090D68: .4byte gUnknown_20389A4
+_08090D68: .4byte gItemParametersFile + 4
thumb_func_end sub_8090D58
thumb_func_start sub_8090D6C
@@ -254320,7 +254320,7 @@ sub_8090D6C:
ldrb r0, [r0, 0x1E]
bx lr
.align 2, 0
-_08090D7C: .4byte gUnknown_20389A4
+_08090D7C: .4byte gItemParametersFile + 4
thumb_func_end sub_8090D6C
thumb_func_start sub_8090D80
@@ -254335,7 +254335,7 @@ sub_8090D80:
ldrb r0, [r0]
bx lr
.align 2, 0
-_08090D94: .4byte gUnknown_20389A4
+_08090D94: .4byte gItemParametersFile + 4
thumb_func_end sub_8090D80
thumb_func_start sub_8090D98
@@ -254348,7 +254348,7 @@ sub_8090D98:
ldr r0, [r0, 0x10]
bx lr
.align 2, 0
-_08090DA8: .4byte gUnknown_20389A4
+_08090DA8: .4byte gItemParametersFile + 4
thumb_func_end sub_8090D98
thumb_func_start sub_8090DAC
@@ -254363,7 +254363,7 @@ sub_8090DAC:
ldrb r0, [r0]
bx lr
.align 2, 0
-_08090DC0: .4byte gUnknown_20389A4
+_08090DC0: .4byte gItemParametersFile + 4
thumb_func_end sub_8090DAC
thumb_func_start sub_8090DC4
@@ -254404,7 +254404,7 @@ sub_8090DC4:
pop {r0}
bx r0
.align 2, 0
-_08090E10: .4byte gUnknown_20389A4
+_08090E10: .4byte gItemParametersFile + 4
thumb_func_end sub_8090DC4
thumb_func_start sub_8090E14
@@ -254453,7 +254453,7 @@ _08090E50:
b _08090EC4
.align 2, 0
_08090E68: .4byte gUnknown_8109770
-_08090E6C: .4byte gUnknown_20389A4
+_08090E6C: .4byte gItemParametersFile + 4
_08090E70:
ldr r1, _08090E88
ldrb r0, [r5, 0x2]
@@ -254467,7 +254467,7 @@ _08090E70:
b _08090EC4
.align 2, 0
_08090E88: .4byte gUnknown_8109778
-_08090E8C: .4byte gUnknown_20389A4
+_08090E8C: .4byte gItemParametersFile + 4
_08090E90:
ldrb r0, [r5, 0x2]
cmp r0, 0x69
@@ -254544,7 +254544,7 @@ _08090F14:
bl sub_8090F58
b _08090F50
.align 2, 0
-_08090F2C: .4byte gUnknown_20389A4
+_08090F2C: .4byte gItemParametersFile + 4
_08090F30: .4byte gUnknown_8109784
_08090F34: .4byte gUnknown_810978C
_08090F38:
@@ -255209,7 +255209,7 @@ sub_80913CC:
ldrh r0, [r0, 0x18]
bx lr
.align 2, 0
-_080913DC: .4byte gUnknown_20389A4
+_080913DC: .4byte gItemParametersFile + 4
thumb_func_end sub_80913CC
thumb_func_start sub_80913E0
@@ -258154,7 +258154,7 @@ LoadWazaParameters:
.align 2, 0
_08092868: .4byte gUnknown_81098D0
_0809286C: .4byte gUnknown_8300500
-_08092870: .4byte gUnknown_2038C64
+_08092870: .4byte gWazaParametersFile
_08092874: .4byte gUnknown_2038C68
_08092878: .4byte gUnknown_2038C6C
thumb_func_end LoadWazaParameters
@@ -271490,7 +271490,7 @@ _080988F8:
bl GroundEffect_Action
bl nullsub_105
bl sub_809B474
- bl sub_80A2380
+ bl GroundScript_Unlock
bl sub_809D25C
bl sub_80A59DC
bl sub_809B614
@@ -271783,7 +271783,7 @@ _08098BD2:
sub_8098BDC:
push {lr}
bl sub_809B57C
- bl sub_80A2380
+ bl GroundScript_Unlock
bl sub_809D25C
bl sub_80A59DC
bl sub_809B614
@@ -273046,7 +273046,7 @@ _080995AE:
_08099604:
bl xxx_call_update_bg_sound_input
movs r0, 0
- bl sub_8004D8C
+ bl ResetSprites
mov r2, r9
cmp r2, 0
beq _08099524
@@ -279959,7 +279959,7 @@ sub_809CBBC:
b _0809CC4A
.align 2, 0
_0809CC0C: .4byte gUnknown_81163E4
-_0809CC10: .4byte gUnknown_20389A4
+_0809CC10: .4byte gItemParametersFile + 4
_0809CC14: .4byte gUnknown_203B460
_0809CC18: .4byte 0x0001869f
_0809CC1C:
@@ -284745,28 +284745,28 @@ _0809F3DC: .4byte gUnknown_2039A32
_0809F3E0:
adds r0, r6, 0
adds r1, r5, 0
- bl sub_80A7988
+ bl GroundLives_Cancel
adds r0, r6, 0
adds r1, r5, 0
- bl sub_80ABC5C
+ bl GroundObject_Cancel
adds r0, r6, 0
adds r1, r5, 0
- bl sub_80ACC98
+ bl GroundEffect_Cancel
b _0809F41E
_0809F3FA:
adds r0, r6, 0
adds r1, r5, 0
- bl sub_80A7988
+ bl GroundLives_Cancel
bl _0809EAE0
_0809F406:
adds r0, r6, 0
adds r1, r5, 0
- bl sub_80ABC5C
+ bl GroundObject_Cancel
bl _0809EAE0
_0809F412:
adds r0, r6, 0
adds r1, r5, 0
- bl sub_80ACC98
+ bl GroundEffect_Cancel
bl _0809EAE0
_0809F41E:
adds r0, r6, 0
@@ -284777,10 +284777,10 @@ _0809F42A:
bl sub_80A79FC
bl _0809EAE0
_0809F432:
- bl sub_80ABCCC
+ bl GroundObject_CancelBlank
bl _0809EAE0
_0809F43A:
- bl sub_80ACD08
+ bl GroundEffect_CancelBlank
bl _0809EAE0
_0809F442:
mov r2, r9
@@ -290448,7 +290448,7 @@ _080A233A:
b _080A236A
_080A2346:
movs r0, 0
- bl sub_80A6C88
+ bl GroundSprite_ExtendPaletteDelete
b _080A236A
_080A234E:
movs r0, 0
@@ -290478,8 +290478,8 @@ _080A236C:
bx r1
thumb_func_end sub_80A14E8
- thumb_func_start sub_80A2380
-sub_80A2380:
+ thumb_func_start GroundScript_Unlock
+GroundScript_Unlock:
push {r4-r7,lr}
ldr r1, _080A241C
ldrb r0, [r1]
@@ -290557,7 +290557,7 @@ _080A241C: .4byte gUnknown_2039A36
_080A2420: .4byte gUnknown_2039A38
_080A2424: .4byte gUnknown_8116848
_080A2428: .4byte gUnknown_2039AC0
- thumb_func_end sub_80A2380
+ thumb_func_end GroundScript_Unlock
thumb_func_start sub_80A242C
sub_80A242C:
@@ -299178,7 +299178,7 @@ _080A6434:
_080A6444:
strh r0, [r5, 0xA]
movs r0, 0x1
- bl sub_8004D8C
+ bl ResetSprites
movs r0, 0x1
bl nullsub_10
pop {r3,r4}
@@ -299342,7 +299342,7 @@ sub_80A658C:
push {r4,lr}
bl sub_800DB7C
movs r0, 0
- bl sub_8004D8C
+ bl ResetSprites
movs r0, 0
bl nullsub_10
bl sub_8005180
@@ -299986,7 +299986,7 @@ sub_80A69FC:
cmp r4, 0
blt _080A6A7A
adds r0, r6, 0
- bl sub_80A6C88
+ bl GroundSprite_ExtendPaletteDelete
movs r0, 0
str r0, [r5, 0x8]
str r0, [r5]
@@ -300303,8 +300303,8 @@ _080A6C78:
bx r0
thumb_func_end GroundSprite_ExtendPaletteAdd
- thumb_func_start sub_80A6C88
-sub_80A6C88:
+ thumb_func_start GroundSprite_ExtendPaletteDelete
+GroundSprite_ExtendPaletteDelete:
push {r4-r6,lr}
adds r2, r0, 0
cmp r2, 0
@@ -300360,7 +300360,7 @@ _080A6CE6:
.align 2, 0
_080A6CEC: .4byte gUnknown_3001B7C
_080A6CF0: .4byte gUnknown_81178C0
- thumb_func_end sub_80A6C88
+ thumb_func_end GroundSprite_ExtendPaletteDelete
thumb_func_start sub_80A6CF4
sub_80A6CF4:
@@ -300572,7 +300572,7 @@ _080A6E56:
sub_80A6E68:
push {lr}
movs r0, 0
- bl sub_8004D8C
+ bl ResetSprites
movs r0, 0
bl nullsub_10
bl sub_800E970
@@ -301931,7 +301931,7 @@ _080A787C:
cmp r0, r6
beq _080A788A
adds r0, r1, 0
- bl sub_80A8684
+ bl GroundLives_Delete
_080A788A:
adds r0, r5, 0
movs r1, 0x80
@@ -302062,8 +302062,8 @@ _080A7980: .4byte gUnknown_811808C
_080A7984: .4byte gUnknown_8118098
thumb_func_end GroundLives_Select
- thumb_func_start sub_80A7988
-sub_80A7988:
+ thumb_func_start GroundLives_Cancel
+GroundLives_Cancel:
push {r4-r7,lr}
mov r7, r8
push {r7}
@@ -302101,7 +302101,7 @@ _080A79B2:
bne _080A79D4
_080A79CE:
adds r0, r1, 0
- bl sub_80A8684
+ bl GroundLives_Delete
_080A79D4:
adds r0, r6, 0
movs r1, 0x80
@@ -302121,7 +302121,7 @@ _080A79D4:
.align 2, 0
_080A79F4: .4byte gUnknown_81180BC
_080A79F8: .4byte gUnknown_3001B84
- thumb_func_end sub_80A7988
+ thumb_func_end GroundLives_Cancel
thumb_func_start sub_80A79FC
sub_80A79FC:
@@ -302164,7 +302164,7 @@ _080A7A20:
cmp r0, 0
bne _080A7A50
adds r0, r6, 0
- bl sub_80A8684
+ bl GroundLives_Delete
_080A7A50:
adds r0, r6, 0x1
lsls r0, 16
@@ -303749,8 +303749,8 @@ _080A8674:
bx r1
thumb_func_end GroundLives_Add
- thumb_func_start sub_80A8684
-sub_80A8684:
+ thumb_func_start GroundLives_Delete
+GroundLives_Delete:
push {r4,lr}
adds r2, r0, 0
lsls r2, 16
@@ -303780,7 +303780,7 @@ sub_80A8684:
_080A86BC: .4byte gUnknown_3001B84
_080A86C0: .4byte gUnknown_8118194
_080A86C4: .4byte 0x0000ffff
- thumb_func_end sub_80A8684
+ thumb_func_end GroundLives_Delete
thumb_func_start sub_80A86C8
sub_80A86C8:
@@ -309318,7 +309318,7 @@ _080AB278:
b _080AB44C
_080AB292:
mov r0, r9
- bl sub_80A8684
+ bl GroundLives_Delete
b _080AB47C
.align 2, 0
_080AB29C: .4byte gUnknown_3001B84
@@ -310631,8 +310631,8 @@ _080ABC54: .4byte gUnknown_81183E4
_080ABC58: .4byte gUnknown_81183F0
thumb_func_end GroundObject_Select
- thumb_func_start sub_80ABC5C
-sub_80ABC5C:
+ thumb_func_start GroundObject_Cancel
+GroundObject_Cancel:
push {r4-r7,lr}
mov r7, r8
push {r7}
@@ -310689,10 +310689,10 @@ _080ABCA6:
.align 2, 0
_080ABCC4: .4byte gUnknown_8118414
_080ABCC8: .4byte gUnknown_3001B88
- thumb_func_end sub_80ABC5C
+ thumb_func_end GroundObject_Cancel
- thumb_func_start sub_80ABCCC
-sub_80ABCCC:
+ thumb_func_start GroundObject_CancelBlank
+GroundObject_CancelBlank:
push {r4-r7,lr}
mov r7, r8
push {r7}
@@ -310752,7 +310752,7 @@ _080ABD20:
.align 2, 0
_080ABD40: .4byte gUnknown_811842C
_080ABD44: .4byte gUnknown_3001B88
- thumb_func_end sub_80ABCCC
+ thumb_func_end GroundObject_CancelBlank
thumb_func_start sub_80ABD48
sub_80ABD48:
@@ -312792,7 +312792,7 @@ _080ACBE4:
cmp r0, r6
beq _080ACBF2
adds r0, r1, 0
- bl sub_80AD080
+ bl GroundEffect_Delete
_080ACBF2:
adds r0, r5, 0
movs r1, 0x80
@@ -312882,8 +312882,8 @@ _080ACC90: .4byte gUnknown_8118610
_080ACC94: .4byte gUnknown_811861C
thumb_func_end GroundEffect_Select
- thumb_func_start sub_80ACC98
-sub_80ACC98:
+ thumb_func_start GroundEffect_Cancel
+GroundEffect_Cancel:
push {r4-r7,lr}
mov r7, r8
push {r7}
@@ -312920,7 +312920,7 @@ _080ACCC0:
bne _080ACCE2
_080ACCDC:
adds r0, r1, 0
- bl sub_80AD080
+ bl GroundEffect_Delete
_080ACCE2:
adds r0, r6, 0
movs r1, 0x80
@@ -312940,10 +312940,10 @@ _080ACCE2:
.align 2, 0
_080ACD00: .4byte gUnknown_8118640
_080ACD04: .4byte gUnknown_3001B8C
- thumb_func_end sub_80ACC98
+ thumb_func_end GroundEffect_Cancel
- thumb_func_start sub_80ACD08
-sub_80ACD08:
+ thumb_func_start GroundEffect_CancelBlank
+GroundEffect_CancelBlank:
push {r4-r7,lr}
mov r7, r8
push {r7}
@@ -312983,7 +312983,7 @@ _080ACD2C:
cmp r0, 0
bne _080ACD5C
adds r0, r6, 0
- bl sub_80AD080
+ bl GroundEffect_Delete
_080ACD5C:
adds r0, r6, 0x1
lsls r0, 16
@@ -313003,7 +313003,7 @@ _080ACD5C:
.align 2, 0
_080ACD7C: .4byte gUnknown_8118658
_080ACD80: .4byte gUnknown_3001B8C
- thumb_func_end sub_80ACD08
+ thumb_func_end GroundEffect_CancelBlank
thumb_func_start sub_80ACD84
sub_80ACD84:
@@ -313399,8 +313399,8 @@ _080AD078: .4byte gUnknown_812F1F8
_080AD07C: .4byte gUnknown_81186CC
thumb_func_end GroundEffect_Add
- thumb_func_start sub_80AD080
-sub_80AD080:
+ thumb_func_start GroundEffect_Delete
+GroundEffect_Delete:
push {r4,lr}
adds r2, r0, 0
lsls r2, 16
@@ -313432,7 +313432,7 @@ sub_80AD080:
_080AD0BC: .4byte gUnknown_3001B8C
_080AD0C0: .4byte gUnknown_81186D8
_080AD0C4: .4byte 0x0000ffff
- thumb_func_end sub_80AD080
+ thumb_func_end GroundEffect_Delete
thumb_func_start sub_80AD0C8
sub_80AD0C8:
@@ -314398,7 +314398,7 @@ _080AD72C:
cmp r0, 0x4
bne _080AD768
adds r0, r7, 0
- bl sub_80AD080
+ bl GroundEffect_Delete
b _080AD78A
.align 2, 0
_080AD754: .4byte gUnknown_3001B8C
diff --git a/asm/input.s b/asm/input.s
index 7516a30..d439867 100644
--- a/asm/input.s
+++ b/asm/input.s
@@ -7,24 +7,24 @@
thumb_func_start InitInput
InitInput:
- ldr r0, _08004840
+ ldr r0, =gUnknown_20255F0
movs r3, 0
movs r2, 0
strh r2, [r0]
strh r2, [r0, 0x2]
strh r2, [r0, 0x4]
strh r2, [r0, 0x6]
- ldr r0, _08004844
+ ldr r0, =gUnknown_2025638
strh r2, [r0]
strh r2, [r0, 0x2]
strh r2, [r0, 0x4]
strh r2, [r0, 0x6]
- ldr r1, _08004848
- ldr r0, _0800484C
+ ldr r1, =gUnknown_202562C
+ ldr r0, =0x4a14c1
str r0, [r1]
- ldr r0, _08004850
+ ldr r0, =gUnknown_2025600
str r2, [r0, 0x20]
- ldr r1, _08004854
+ ldr r1, =0xffff
strh r1, [r0]
movs r1, 0x1
negs r1, r1
@@ -46,25 +46,19 @@ InitInput:
strb r3, [r1]
adds r0, 0x29
strb r3, [r0]
- ldr r0, _08004858
+ ldr r0, =gUnknown_2025668
strh r2, [r0]
strh r2, [r0, 0x2]
bx lr
.align 2, 0
-_08004840: .4byte gUnknown_20255F0
-_08004844: .4byte gUnknown_2025638
-_08004848: .4byte gUnknown_202562C
-_0800484C: .4byte 0x004a14c1
-_08004850: .4byte gUnknown_2025600
-_08004854: .4byte 0x0000ffff
-_08004858: .4byte gUnknown_2025668
+ .pool
thumb_func_end InitInput
thumb_func_start sub_800485C
sub_800485C:
push {r4,r5,lr}
- ldr r2, _080048A8
- ldr r1, _080048AC
+ ldr r2, =gUnknown_2025638
+ ldr r1, =gUnknown_20255F0
adds r0, r2, 0
ldm r0!, {r3-r5}
stm r1!, {r3-r5}
@@ -76,8 +70,8 @@ sub_800485C:
strh r0, [r2, 0x2]
strh r0, [r2, 0x4]
strh r0, [r2, 0x6]
- ldr r0, _080048B0
- ldr r1, _080048B4
+ ldr r0, =gUnknown_2025600
+ ldr r1, =0xffff
strh r1, [r0]
movs r1, 0x1
negs r1, r1
@@ -101,10 +95,7 @@ sub_800485C:
pop {r0}
bx r0
.align 2, 0
-_080048A8: .4byte gUnknown_2025638
-_080048AC: .4byte gUnknown_20255F0
-_080048B0: .4byte gUnknown_2025600
-_080048B4: .4byte 0x0000ffff
+ .pool
thumb_func_end sub_800485C
thumb_func_start sub_80048B8
@@ -145,49 +136,44 @@ sub_80048CC:
thumb_func_start sub_80048D0
sub_80048D0:
- ldr r1, _080048E8
+ ldr r1, =gUnknown_20255F0
movs r0, 0
strh r0, [r1, 0x4]
- ldr r1, _080048EC
+ ldr r1, =gUnknown_2025648
str r0, [r1, 0xC]
strh r0, [r1, 0x8]
- ldr r1, _080048F0
- ldr r0, _080048F4
+ ldr r1, =gUnknown_2025668
+ ldr r0, =0x3e7
strh r0, [r1]
strh r0, [r1, 0x2]
bx lr
.align 2, 0
-_080048E8: .4byte gUnknown_20255F0
-_080048EC: .4byte gUnknown_2025648
-_080048F0: .4byte gUnknown_2025668
-_080048F4: .4byte 0x000003e7
+ .pool
thumb_func_end sub_80048D0
thumb_func_start sub_80048F8
sub_80048F8:
- ldr r0, _08004908
+ ldr r0, =gUnknown_20255F0
movs r1, 0
strh r1, [r0, 0x2]
- ldr r0, _0800490C
+ ldr r0, =gUnknown_2025638
strh r1, [r0, 0x2]
- ldr r0, _08004910
+ ldr r0, =gUnknown_2025648
strh r1, [r0, 0x2]
bx lr
.align 2, 0
-_08004908: .4byte gUnknown_20255F0
-_0800490C: .4byte gUnknown_2025638
-_08004910: .4byte gUnknown_2025648
+ .pool
thumb_func_end sub_80048F8
thumb_func_start sub_8004914
sub_8004914:
- ldr r0, _0800494C
+ ldr r0, =gUnknown_2025600
movs r1, 0x5
str r1, [r0, 0x20]
movs r2, 0
movs r1, 0
strh r1, [r0, 0x24]
- ldr r1, _08004950
+ ldr r1, =0xffff
strh r1, [r0]
movs r1, 0x1
negs r1, r1
@@ -209,15 +195,14 @@ sub_8004914:
strb r2, [r0]
bx lr
.align 2, 0
-_0800494C: .4byte gUnknown_2025600
-_08004950: .4byte 0x0000ffff
+ .pool
thumb_func_end sub_8004914
thumb_func_start UpdateInput
UpdateInput:
push {r4-r6,lr}
- ldr r4, _08004998
- ldr r5, _0800499C
+ ldr r4, =gUnknown_2025658
+ ldr r5, =gUnknown_2025648
adds r1, r4, 0
adds r0, r5, 0
ldm r0!, {r2,r3,r6}
@@ -249,8 +234,7 @@ UpdateInput:
str r0, [r5, 0xC]
b _080049AC
.align 2, 0
-_08004998: .4byte gUnknown_2025658
-_0800499C: .4byte gUnknown_2025648
+ .pool
_080049A0:
strh r2, [r5, 0x8]
movs r0, 0x1
@@ -260,7 +244,7 @@ _080049A8:
str r0, [r5, 0xC]
strh r0, [r5, 0x8]
_080049AC:
- ldr r0, _080049C4
+ ldr r0, =gUnknown_2025648
ldr r2, [r0, 0xC]
adds r3, r0, 0
cmp r2, 0x1
@@ -273,7 +257,7 @@ _080049AC:
strh r1, [r3, 0x4]
b _080049E0
.align 2, 0
-_080049C4: .4byte gUnknown_2025648
+ .pool
_080049C8:
cmp r2, 0x30
bne _080049DC
@@ -300,7 +284,7 @@ _080049E0:
lsrs r2, r0, 16
cmp r2, 0
beq _08004A0C
- ldr r0, _08004A08
+ ldr r0, =gUnknown_2025668
ldrh r2, [r0]
movs r4, 0
ldrsh r1, [r0, r4]
@@ -311,9 +295,9 @@ _080049E0:
strh r0, [r4]
b _08004A20
.align 2, 0
-_08004A08: .4byte gUnknown_2025668
+ .pool
_08004A0C:
- ldr r1, _08004A44
+ ldr r1, =gUnknown_2025668
ldrh r0, [r1]
subs r0, 0x2
lsls r0, 16
@@ -343,7 +327,7 @@ _08004A20:
strh r0, [r4, 0x2]
b _08004A5E
.align 2, 0
-_08004A44: .4byte gUnknown_2025668
+ .pool
_08004A48:
ldrh r0, [r4, 0x2]
subs r0, 0x2
@@ -358,7 +342,7 @@ _08004A48:
_08004A5C:
strh r2, [r4, 0x2]
_08004A5E:
- ldr r2, _08004A94
+ ldr r2, =gUnknown_2025638
ldrh r0, [r2]
ldrh r1, [r3]
orrs r0, r1
@@ -375,9 +359,9 @@ _08004A5E:
ldrh r1, [r3, 0x6]
orrs r0, r1
strh r0, [r2, 0x6]
- ldr r2, _08004A98
+ ldr r2, =gUnknown_202562C
ldrh r0, [r3]
- ldr r1, _08004A9C
+ ldr r1, =0x054a1c41
orrs r0, r1
ldr r1, [r2]
muls r0, r1
@@ -386,9 +370,7 @@ _08004A5E:
pop {r0}
bx r0
.align 2, 0
-_08004A94: .4byte gUnknown_2025638
-_08004A98: .4byte gUnknown_202562C
-_08004A9C: .4byte 0x054a1c41
+ .pool
thumb_func_end UpdateInput
.align 2, 0 @ Don't pad with nop.
diff --git a/asm/m4a.s b/asm/m4a.s
deleted file mode 100644
index 7133670..0000000
--- a/asm/m4a.s
+++ /dev/null
@@ -1,4625 +0,0 @@
- .include "constants/gba_constants.inc"
- .include "asm/macros.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start umul3232H32
-umul3232H32:
- adr r2, _080AE268
- bx r2
- .arm
-_080AE268:
- umull r2, r3, r0, r1
- add r0, r3, 0
- bx lr
- thumb_func_end umul3232H32
-
- thumb_func_start SoundMain
-SoundMain:
- ldr r0, _080AE2E0
- ldr r0, [r0]
- ldr r2, _080AE2E4
- ldr r3, [r0]
- cmp r2, r3
- beq _080AE282
- bx lr
-_080AE282:
- adds r3, 0x1
- str r3, [r0]
- push {r4-r7,lr}
- mov r1, r8
- mov r2, r9
- mov r3, r10
- mov r4, r11
- push {r0-r4}
- sub sp, 0x18
- ldrb r1, [r0, 0xC]
- cmp r1, 0
- beq _080AE2A6
- ldr r2, _080AE2EC
- ldrb r2, [r2]
- cmp r2, 0xA0
- bcs _080AE2A4
- adds r2, 0xE4
-_080AE2A4:
- adds r1, r2
-_080AE2A6:
- str r1, [sp, 0x14]
- ldr r3, [r0, 0x20]
- cmp r3, 0
- beq _080AE2B6
- ldr r0, [r0, 0x24]
- bl call_r3
- ldr r0, [sp, 0x18]
-_080AE2B6:
- ldr r3, [r0, 0x28]
- bl call_r3
- ldr r0, [sp, 0x18]
- ldr r3, [r0, 0x10]
- mov r8, r3
- ldr r5, _080AE2F0
- adds r5, r0
- ldrb r4, [r0, 0x4]
- subs r7, r4, 0x1
- bls _080AE2D6
- ldrb r1, [r0, 0xB]
- subs r1, r7
- mov r2, r8
- muls r2, r1
- adds r5, r2
-_080AE2D6:
- str r5, [sp, 0x8]
- ldr r6, _080AE2F4
- ldr r3, _080AE2E8
- bx r3
- .align 2, 0
-_080AE2E0: .4byte SOUND_INFO_PTR
-_080AE2E4: .4byte 0x68736d53
-_080AE2E8: .4byte SoundMainRAM_Buffer + 1
-_080AE2EC: .4byte 0x04000006
-_080AE2F0: .4byte 0x00000350
-_080AE2F4: .4byte 0x00000630
- thumb_func_end SoundMain
-
- thumb_func_start sub_80AE2F8
-sub_80AE2F8:
- ldrb r3, [r0, 0x5]
- cmp r3, 0
- beq _080AE358
- adr r1, _080AE304
- bx r1
- .arm
-_080AE304:
- cmp r4, 0x2
- addeq r7, r0, 0x350
- addne r7, r5, r8
- mov r4, r8
-_080AE314:
- ldrsb r0, [r5, r6]
- ldrsb r1, [r5]
- add r0, r0, r1
- ldrsb r1, [r7, r6]
- add r0, r0, r1
- ldrsb r1, [r7], 0x1
- add r0, r0, r1
- mul r1, r0, r3
- mov r0, r1, asr 9
- tst r0, 0x80
- addne r0, r0, 0x1
- strb r0, [r5, r6]
- strb r0, [r5], 0x1
- subs r4, r4, 0x1
- bgt _080AE314
- add r0, pc, 0x2F
- bx r0
- .thumb
-_080AE358:
- movs r0, 0
- mov r1, r8
- adds r6, r5
- lsrs r1, 3
- bcc _080AE366
- stm r5!, {r0}
- stm r6!, {r0}
-_080AE366:
- lsrs r1, 1
- bcc _080AE372
- stm r5!, {r0}
- stm r6!, {r0}
- stm r5!, {r0}
- stm r6!, {r0}
-_080AE372:
- stm r5!, {r0}
- stm r6!, {r0}
- stm r5!, {r0}
- stm r6!, {r0}
- stm r5!, {r0}
- stm r6!, {r0}
- stm r5!, {r0}
- stm r6!, {r0}
- subs r1, 0x1
- bgt _080AE372
- ldr r4, [sp, 0x18]
- ldr r0, [r4, 0x18]
- mov r12, r0
- ldrb r0, [r4, 0x6]
- adds r4, 0x50
-_080AE390:
- str r0, [sp, 0x4]
- ldr r3, [r4, 0x24]
- ldr r0, [sp, 0x14]
- cmp r0, 0
- beq _080AE3B0
- ldr r1, _080AE3AC
- ldrb r1, [r1]
- cmp r1, 0xA0
- bcs _080AE3A4
- adds r1, 0xE4
-_080AE3A4:
- cmp r1, r0
- bcc _080AE3B0
- b _080AE682
- .align 2, 0
-_080AE3AC: .4byte 0x04000006
-_080AE3B0:
- ldrb r6, [r4]
- movs r0, 0xC7
- tst r0, r6
- bne _080AE3BA
- b _080AE678
-_080AE3BA:
- movs r0, 0x80
- tst r0, r6
- beq _080AE3EA
- movs r0, 0x40
- tst r0, r6
- bne _080AE3FA
- movs r6, 0x3
- strb r6, [r4]
- adds r0, r3, 0
- adds r0, 0x10
- str r0, [r4, 0x28]
- ldr r0, [r3, 0xC]
- str r0, [r4, 0x18]
- movs r5, 0
- strb r5, [r4, 0x9]
- str r5, [r4, 0x1C]
- ldrb r2, [r3, 0x3]
- movs r0, 0xC0
- tst r0, r2
- beq _080AE442
- movs r0, 0x10
- orrs r6, r0
- strb r6, [r4]
- b _080AE442
-_080AE3EA:
- ldrb r5, [r4, 0x9]
- movs r0, 0x4
- tst r0, r6
- beq _080AE400
- ldrb r0, [r4, 0xD]
- subs r0, 0x1
- strb r0, [r4, 0xD]
- bhi _080AE450
-_080AE3FA:
- movs r0, 0
- strb r0, [r4]
- b _080AE678
-_080AE400:
- movs r0, 0x40
- tst r0, r6
- beq _080AE420
- ldrb r0, [r4, 0x7]
- muls r5, r0
- lsrs r5, 8
- ldrb r0, [r4, 0xC]
- cmp r5, r0
- bhi _080AE450
-_080AE412:
- ldrb r5, [r4, 0xC]
- cmp r5, 0
- beq _080AE3FA
- movs r0, 0x4
- orrs r6, r0
- strb r6, [r4]
- b _080AE450
-_080AE420:
- movs r2, 0x3
- ands r2, r6
- cmp r2, 0x2
- bne _080AE43E
- ldrb r0, [r4, 0x5]
- muls r5, r0
- lsrs r5, 8
- ldrb r0, [r4, 0x6]
- cmp r5, r0
- bhi _080AE450
- adds r5, r0, 0
- beq _080AE412
- subs r6, 0x1
- strb r6, [r4]
- b _080AE450
-_080AE43E:
- cmp r2, 0x3
- bne _080AE450
-_080AE442:
- ldrb r0, [r4, 0x4]
- adds r5, r0
- cmp r5, 0xFF
- bcc _080AE450
- movs r5, 0xFF
- subs r6, 0x1
- strb r6, [r4]
-_080AE450:
- strb r5, [r4, 0x9]
- ldr r0, [sp, 0x18]
- ldrb r0, [r0, 0x7]
- adds r0, 0x1
- muls r0, r5
- lsrs r5, r0, 4
- ldrb r0, [r4, 0x2]
- muls r0, r5
- lsrs r0, 8
- strb r0, [r4, 0xA]
- ldrb r0, [r4, 0x3]
- muls r0, r5
- lsrs r0, 8
- strb r0, [r4, 0xB]
- movs r0, 0x10
- ands r0, r6
- str r0, [sp, 0x10]
- beq _080AE484
- adds r0, r3, 0
- adds r0, 0x10
- ldr r1, [r3, 0x8]
- adds r0, r1
- str r0, [sp, 0xC]
- ldr r0, [r3, 0xC]
- subs r0, r1
- str r0, [sp, 0x10]
-_080AE484:
- ldr r5, [sp, 0x8]
- ldr r2, [r4, 0x18]
- ldr r3, [r4, 0x28]
- adr r0, _080AE490
- bx r0
- .arm
-_080AE490:
- str r8, [sp]
- ldrb r10, [r4, 0xA]
- ldrb r11, [r4, 0xB]
- mov r10, r10, lsl 16
- mov r11, r11, lsl 16
- ldrb r0, [r4, 0x1]
- tst r0, 0x8
- beq _080AE5D0
-_080AE4B0:
- cmp r2, 0x4
- ble _080AE520
- subs r2, r2, r8
- movgt lr, 0
- bgt _080AE4DC
- mov lr, r8
- add r2, r2, r8
- sub r8, r2, 0x4
- sub lr, lr, r8
- ands r2, r2, 0x3
- moveq r2, 0x4
-_080AE4DC:
- ldr r6, [r5]
- ldr r7, [r5, 0x630]
-_080AE4E4:
- ldrsb r0, [r3], 0x1
- mul r1, r10, r0
- bic r1, r1, 0xFF0000
- add r6, r1, r6, ror 8
- mul r1, r11, r0
- bic r1, r1, 0xFF0000
- add r7, r1, r7, ror 8
- adds r5, r5, 0x40000000
- bcc _080AE4E4
- str r7, [r5, 0x630]
- str r6, [r5], 0x4
- subs r8, r8, 0x4
- bgt _080AE4DC
- adds r8, r8, lr
- beq _080AE664
-_080AE520:
- ldr r6, [r5]
- ldr r7, [r5, 0x630]
-_080AE528:
- ldrsb r0, [r3], 0x1
- mul r1, r10, r0
- bic r1, r1, 0xFF0000
- add r6, r1, r6, ror 8
- mul r1, r11, r0
- bic r1, r1, 0xFF0000
- add r7, r1, r7, ror 8
- subs r2, r2, 0x1
- beq _080AE598
-_080AE54C:
- adds r5, r5, 0x40000000
- bcc _080AE528
- str r7, [r5, 0x630]
- str r6, [r5], 0x4
- subs r8, r8, 0x4
- bgt _080AE4B0
- b _080AE664
-_080AE568:
- ldr r0, [sp, 0x18]
- cmp r0, 0
- beq _080AE58C
- ldr r3, [sp, 0x14]
- rsb r9, r2, 0
-_080AE57C:
- adds r2, r0, r2
- bgt _080AE634
- sub r9, r9, r0
- b _080AE57C
-_080AE58C:
- ldmia sp!, {r4,r12}
- mov r2, 0
- b _080AE5A8
-_080AE598:
- ldr r2, [sp, 0x10]
- cmp r2, 0
- ldrne r3, [sp, 0xC]
- bne _080AE54C
-_080AE5A8:
- strb r2, [r4]
- mov r0, r5, lsr 30
- bic r5, r5, 0xC0000000
- rsb r0, r0, 0x3
- mov r0, r0, lsl 3
- mov r6, r6, ror r0
- mov r7, r7, ror r0
- str r7, [r5, 0x630]
- str r6, [r5], 0x4
- b _080AE66C
-_080AE5D0:
- stmdb sp!, {r4,r12}
- ldr lr, [r4, 0x1C]
- ldr r1, [r4, 0x20]
- mul r4, r12, r1
- ldrsb r0, [r3]
- ldrsb r1, [r3, 0x1]!
- sub r1, r1, r0
-_080AE5EC:
- ldr r6, [r5]
- ldr r7, [r5, 0x630]
-_080AE5F4:
- mul r9, lr, r1
- add r9, r0, r9, asr 23
- mul r12, r10, r9
- bic r12, r12, 0xFF0000
- add r6, r12, r6, ror 8
- mul r12, r11, r9
- bic r12, r12, 0xFF0000
- add r7, r12, r7, ror 8
- add lr, lr, r4
- movs r9, lr, lsr 23
- beq _080AE640
- bic lr, lr, 0x3F800000
- subs r2, r2, r9
- ble _080AE568
- subs r9, r9, 0x1
- addeq r0, r0, r1
-_080AE634:
- ldrsbne r0, [r3, r9]!
- ldrsb r1, [r3, 0x1]!
- sub r1, r1, r0
-_080AE640:
- adds r5, r5, 0x40000000
- bcc _080AE5F4
- str r7, [r5, 0x630]
- str r6, [r5], 0x4
- subs r8, r8, 0x4
- bgt _080AE5EC
- sub r3, r3, 0x1
- ldmia sp!, {r4,r12}
- str lr, [r4, 0x1C]
-_080AE664:
- str r2, [r4, 0x18]
- str r3, [r4, 0x28]
-_080AE66C:
- ldr r8, [sp]
- add r0, pc, 0x1
- bx r0
- .thumb
-_080AE678:
- ldr r0, [sp, 0x4]
- subs r0, 0x1
- ble _080AE682
- adds r4, 0x40
- b _080AE390
-_080AE682:
- ldr r0, [sp, 0x18]
- ldr r3, _080AE698
- str r3, [r0]
- add sp, 0x1C
- pop {r0-r7}
- mov r8, r0
- mov r9, r1
- mov r10, r2
- mov r11, r3
- pop {r3}
-
-call_r3:
- bx r3
-
- .align 2, 0
-_080AE698: .4byte 0x68736D53
- thumb_func_end sub_80AE2F8
-
- thumb_func_start sub_80AE69C
-sub_80AE69C:
- mov r12, r4
- movs r1, 0
- movs r2, 0
- movs r3, 0
- movs r4, 0
- stm r0!, {r1-r4}
- stm r0!, {r1-r4}
- stm r0!, {r1-r4}
- stm r0!, {r1-r4}
- mov r4, r12
- bx lr
- thumb_func_end sub_80AE69C
-
- thumb_func_start sub_80AE6B4
-sub_80AE6B4:
- ldr r3, [r0, 0x2C]
- cmp r3, 0
- beq _080AE6D2
- ldr r1, [r0, 0x34]
- ldr r2, [r0, 0x30]
- cmp r2, 0
- beq _080AE6C6
- str r1, [r2, 0x34]
- b _080AE6C8
-_080AE6C6:
- str r1, [r3, 0x20]
-_080AE6C8:
- cmp r1, 0
- beq _080AE6CE
- str r2, [r1, 0x30]
-_080AE6CE:
- movs r1, 0
- str r1, [r0, 0x2C]
-_080AE6D2:
- bx lr
- thumb_func_end sub_80AE6B4
-
- thumb_func_start sub_80AE6D4
-sub_80AE6D4:
- push {r4,r5,lr}
- adds r5, r1, 0
- ldr r4, [r5, 0x20]
- cmp r4, 0
- beq _080AE6F8
-_080AE6DE:
- ldrb r1, [r4]
- movs r0, 0xC7
- tst r0, r1
- beq _080AE6EC
- movs r0, 0x40
- orrs r1, r0
- strb r1, [r4]
-_080AE6EC:
- adds r0, r4, 0
- bl sub_80AE6B4
- ldr r4, [r4, 0x34]
- cmp r4, 0
- bne _080AE6DE
-_080AE6F8:
- movs r0, 0
- strb r0, [r5]
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_80AE6D4
-
- thumb_func_start sub_80AE704
-sub_80AE704:
- mov r12, lr
- movs r1, 0x24
- ldr r2, _080AE734
-_080AE70A:
- ldr r3, [r2]
- bl _080AE71E
- stm r0!, {r3}
- adds r2, 0x4
- subs r1, 0x1
- bgt _080AE70A
- bx r12
- thumb_func_end sub_80AE704
-
- .align 2, 0
- .thumb_func
-_080AE71C:
- ldrb r3, [r2]
-
- .thumb_func
-_080AE71E:
- push {r0}
- lsrs r0, r2, 25
- bne _080AE730
- ldr r0, _080AE734
- cmp r2, r0
- bcc _080AE72E
- lsrs r0, r2, 14
- beq _080AE730
-_080AE72E:
- movs r3, 0
-_080AE730:
- pop {r0}
- bx lr
- .align 2, 0
-_080AE734: .4byte gUnknown_826F98C
-
- thumb_func_start sub_80AE738
-sub_80AE738:
- ldr r2, [r1, 0x40]
-_080AE73A:
- adds r3, r2, 0x1
- str r3, [r1, 0x40]
- ldrb r3, [r2]
- b _080AE71E
- thumb_func_end sub_80AE738
-
- thumb_func_start sub_80AE744
-sub_80AE744:
- push {lr}
-_080AE746:
- ldr r2, [r1, 0x40]
- ldrb r0, [r2, 0x3]
- lsls r0, 8
- ldrb r3, [r2, 0x2]
- orrs r0, r3
- lsls r0, 8
- ldrb r3, [r2, 0x1]
- orrs r0, r3
- lsls r0, 8
- bl _080AE71C
- orrs r0, r3
- str r0, [r1, 0x40]
- pop {r0}
- bx r0
- thumb_func_end sub_80AE744
-
- thumb_func_start sub_80AE764
-sub_80AE764:
- ldrb r2, [r1, 0x2]
- cmp r2, 0x3
- bcs _080AE77C
- lsls r2, 2
- adds r3, r1, r2
- ldr r2, [r1, 0x40]
- adds r2, 0x4
- str r2, [r3, 0x44]
- ldrb r2, [r1, 0x2]
- adds r2, 0x1
- strb r2, [r1, 0x2]
- b sub_80AE744
-_080AE77C:
- b sub_80AE6D4
- thumb_func_end sub_80AE764
-
- thumb_func_start sub_80AE780
-sub_80AE780:
- ldrb r2, [r1, 0x2]
- cmp r2, 0
- beq _080AE792
- subs r2, 0x1
- strb r2, [r1, 0x2]
- lsls r2, 2
- adds r3, r1, r2
- ldr r2, [r3, 0x44]
- str r2, [r1, 0x40]
-_080AE792:
- bx lr
- thumb_func_end sub_80AE780
-
- thumb_func_start sub_80AE794
-sub_80AE794:
- push {lr}
- ldr r2, [r1, 0x40]
- ldrb r3, [r2]
- cmp r3, 0
- bne _080AE7A4
- adds r2, 0x1
- str r2, [r1, 0x40]
- b _080AE746
-_080AE7A4:
- ldrb r3, [r1, 0x3]
- adds r3, 0x1
- strb r3, [r1, 0x3]
- mov r12, r3
- bl sub_80AE738
- cmp r12, r3
- bcs _080AE7B6
- b _080AE746
-_080AE7B6:
- movs r3, 0
- strb r3, [r1, 0x3]
- adds r2, 0x5
- str r2, [r1, 0x40]
- pop {r0}
- bx r0
- thumb_func_end sub_80AE794
-
- thumb_func_start sub_80AE7C4
-sub_80AE7C4:
- mov r12, lr
- bl sub_80AE738
- strb r3, [r1, 0x1D]
- bx r12
- thumb_func_end sub_80AE7C4
-
- thumb_func_start sub_80AE7D0
-sub_80AE7D0:
- mov r12, lr
- bl sub_80AE738
- lsls r3, 1
- strh r3, [r0, 0x1C]
- ldrh r2, [r0, 0x1E]
- muls r3, r2
- lsrs r3, 8
- strh r3, [r0, 0x20]
- bx r12
- thumb_func_end sub_80AE7D0
-
- thumb_func_start sub_80AE7E4
-sub_80AE7E4:
- mov r12, lr
- bl sub_80AE738
- strb r3, [r1, 0xA]
- ldrb r3, [r1]
- movs r2, 0xC
- orrs r3, r2
- strb r3, [r1]
- bx r12
- thumb_func_end sub_80AE7E4
-
- thumb_func_start sub_80AE7F8
-sub_80AE7F8:
- mov r12, lr
- ldr r2, [r1, 0x40]
- ldrb r3, [r2]
- adds r2, 0x1
- str r2, [r1, 0x40]
- lsls r2, r3, 1
- adds r2, r3
- lsls r2, 2
- ldr r3, [r0, 0x30]
- adds r2, r3
- ldr r3, [r2]
- bl _080AE71E
- str r3, [r1, 0x24]
- ldr r3, [r2, 0x4]
- bl _080AE71E
- str r3, [r1, 0x28]
- ldr r3, [r2, 0x8]
- bl _080AE71E
- str r3, [r1, 0x2C]
- bx r12
- thumb_func_end sub_80AE7F8
-
- thumb_func_start sub_80AE828
-sub_80AE828:
- mov r12, lr
- bl sub_80AE738
- strb r3, [r1, 0x12]
- ldrb r3, [r1]
- movs r2, 0x3
- orrs r3, r2
- strb r3, [r1]
- bx r12
- thumb_func_end sub_80AE828
-
- thumb_func_start sub_80AE83C
-sub_80AE83C:
- mov r12, lr
- bl sub_80AE738
- subs r3, 0x40
- strb r3, [r1, 0x14]
- ldrb r3, [r1]
- movs r2, 0x3
- orrs r3, r2
- strb r3, [r1]
- bx r12
- thumb_func_end sub_80AE83C
-
- thumb_func_start sub_80AE850
-sub_80AE850:
- mov r12, lr
- bl sub_80AE738
- subs r3, 0x40
- strb r3, [r1, 0xE]
- ldrb r3, [r1]
- movs r2, 0xC
- orrs r3, r2
- strb r3, [r1]
- bx r12
- thumb_func_end sub_80AE850
-
- thumb_func_start sub_80AE864
-sub_80AE864:
- mov r12, lr
- bl sub_80AE738
- strb r3, [r1, 0xF]
- ldrb r3, [r1]
- movs r2, 0xC
- orrs r3, r2
- strb r3, [r1]
- bx r12
- thumb_func_end sub_80AE864
-
- thumb_func_start sub_80AE878
-sub_80AE878:
- mov r12, lr
- bl sub_80AE738
- strb r3, [r1, 0x1B]
- bx r12
- thumb_func_end sub_80AE878
-
- thumb_func_start sub_80AE884
-sub_80AE884:
- mov r12, lr
- bl sub_80AE738
- ldrb r0, [r1, 0x18]
- cmp r0, r3
- beq _080AE89A
- strb r3, [r1, 0x18]
- ldrb r3, [r1]
- movs r2, 0xF
- orrs r3, r2
- strb r3, [r1]
-_080AE89A:
- bx r12
- thumb_func_end sub_80AE884
-
- thumb_func_start sub_80AE89C
-sub_80AE89C:
- mov r12, lr
- bl sub_80AE738
- subs r3, 0x40
- strb r3, [r1, 0xC]
- ldrb r3, [r1]
- movs r2, 0xC
- orrs r3, r2
- strb r3, [r1]
- bx r12
- thumb_func_end sub_80AE89C
-
- thumb_func_start sub_80AE8B0
-sub_80AE8B0:
- mov r12, lr
- ldr r2, [r1, 0x40]
- ldrb r3, [r2]
- adds r2, 0x1
- ldr r0, _080AE8C4
- adds r0, r3
- bl _080AE73A
- strb r3, [r0]
- bx r12
- .align 2, 0
-_080AE8C4: .4byte 0x04000060
- thumb_func_end sub_80AE8B0
-
- thumb_func_start m4aSoundVSync
-m4aSoundVSync:
- ldr r0, _080AEB74
- ldr r0, [r0]
- ldr r2, _080AEB78
- ldr r3, [r0]
- subs r3, r2
- cmp r3, 0x1
- bhi _080AE908
- ldrb r1, [r0, 0x4]
- subs r1, 0x1
- strb r1, [r0, 0x4]
- bgt _080AE908
- ldrb r1, [r0, 0xB]
- strb r1, [r0, 0x4]
- ldr r2, _080AE90C
- ldr r1, [r2, 0x8]
- lsls r1, 7
- bcc _080AE8EE
- ldr r1, _080AE910
- str r1, [r2, 0x8]
-_080AE8EE:
- ldr r1, [r2, 0x14]
- lsls r1, 7
- bcc _080AE8F8
- ldr r1, _080AE910
- str r1, [r2, 0x14]
-_080AE8F8:
- movs r1, 0x4
- lsls r1, 8
- strh r1, [r2, 0xA]
- strh r1, [r2, 0x16]
- movs r1, 0xB6
- lsls r1, 8
- strh r1, [r2, 0xA]
- strh r1, [r2, 0x16]
-_080AE908:
- bx lr
- .align 2, 0
-_080AE90C: .4byte 0x040000bc
-_080AE910: .4byte 0x84400004
- thumb_func_end m4aSoundVSync
-
- thumb_func_start sub_80AE914
-sub_80AE914:
- ldr r2, _080AEB78
- ldr r3, [r0, 0x34]
- cmp r2, r3
- beq _080AE91E
- bx lr
-_080AE91E:
- adds r3, 0x1
- str r3, [r0, 0x34]
- push {r0,lr}
- ldr r3, [r0, 0x38]
- cmp r3, 0
- beq _080AE930
- ldr r0, [r0, 0x3C]
- bl _080AEB6C
-_080AE930:
- pop {r0}
- push {r4-r7}
- mov r4, r8
- mov r5, r9
- mov r6, r10
- mov r7, r11
- push {r4-r7}
- adds r7, r0, 0
- ldr r0, [r7, 0x4]
- cmp r0, 0
- bge _080AE948
- b _080AEB5C
-_080AE948:
- ldr r0, _080AEB74
- ldr r0, [r0]
- mov r8, r0
- adds r0, r7, 0
- bl sub_80AF800
- ldr r0, [r7, 0x4]
- cmp r0, 0
- bge _080AE95C
- b _080AEB5C
-_080AE95C:
- ldrh r0, [r7, 0x22]
- ldrh r1, [r7, 0x20]
- adds r0, r1
- b _080AEAAC
-_080AE964:
- ldrb r6, [r7, 0x8]
- ldr r5, [r7, 0x2C]
- movs r3, 0x1
- movs r4, 0
-_080AE96C:
- ldrb r0, [r5]
- movs r1, 0x80
- tst r1, r0
- bne _080AE976
- b _080AEA88
-_080AE976:
- mov r10, r3
- orrs r4, r3
- mov r11, r4
- ldr r4, [r5, 0x20]
- cmp r4, 0
- beq _080AE9AA
-_080AE982:
- ldrb r1, [r4]
- movs r0, 0xC7
- tst r0, r1
- beq _080AE99E
- ldrb r0, [r4, 0x10]
- cmp r0, 0
- beq _080AE9A4
- subs r0, 0x1
- strb r0, [r4, 0x10]
- bne _080AE9A4
- movs r0, 0x40
- orrs r1, r0
- strb r1, [r4]
- b _080AE9A4
-_080AE99E:
- adds r0, r4, 0
- bl sub_80AF2FC
-_080AE9A4:
- ldr r4, [r4, 0x34]
- cmp r4, 0
- bne _080AE982
-_080AE9AA:
- ldrb r3, [r5]
- movs r0, 0x40
- tst r0, r3
- beq _080AEA28
- adds r0, r5, 0
- bl sub_80AF310
- movs r0, 0x80
- strb r0, [r5]
- movs r0, 0x2
- strb r0, [r5, 0xF]
- movs r0, 0x40
- strb r0, [r5, 0x13]
- movs r0, 0x16
- strb r0, [r5, 0x19]
- movs r0, 0x1
- adds r1, r5, 0x6
- strb r0, [r1, 0x1E]
- b _080AEA28
-_080AE9D0:
- ldr r2, [r5, 0x40]
- ldrb r1, [r2]
- cmp r1, 0x80
- bcs _080AE9DC
- ldrb r1, [r5, 0x7]
- b _080AE9E6
-_080AE9DC:
- adds r2, 0x1
- str r2, [r5, 0x40]
- cmp r1, 0xBD
- bcc _080AE9E6
- strb r1, [r5, 0x7]
-_080AE9E6:
- cmp r1, 0xCF
- bcc _080AE9FC
- mov r0, r8
- ldr r3, [r0, 0x38]
- adds r0, r1, 0
- subs r0, 0xCF
- adds r1, r7, 0
- adds r2, r5, 0
- bl _080AEB6C
- b _080AEA28
-_080AE9FC:
- cmp r1, 0xB0
- bls _080AEA1E
- adds r0, r1, 0
- subs r0, 0xB1
- strb r0, [r7, 0xA]
- mov r3, r8
- ldr r3, [r3, 0x34]
- lsls r0, 2
- ldr r3, [r3, r0]
- adds r0, r7, 0
- adds r1, r5, 0
- bl _080AEB6C
- ldrb r0, [r5]
- cmp r0, 0
- beq _080AEA84
- b _080AEA28
-_080AEA1E:
- ldr r0, _080AEB70
- subs r1, 0x80
- adds r1, r0
- ldrb r0, [r1]
- strb r0, [r5, 0x1]
-_080AEA28:
- ldrb r0, [r5, 0x1]
- cmp r0, 0
- beq _080AE9D0
- subs r0, 0x1
- strb r0, [r5, 0x1]
- ldrb r1, [r5, 0x19]
- cmp r1, 0
- beq _080AEA84
- ldrb r0, [r5, 0x17]
- cmp r0, 0
- beq _080AEA84
- ldrb r0, [r5, 0x1C]
- cmp r0, 0
- beq _080AEA4A
- subs r0, 0x1
- strb r0, [r5, 0x1C]
- b _080AEA84
-_080AEA4A:
- ldrb r0, [r5, 0x1A]
- adds r0, r1
- strb r0, [r5, 0x1A]
- adds r1, r0, 0
- subs r0, 0x40
- lsls r0, 24
- bpl _080AEA5E
- lsls r2, r1, 24
- asrs r2, 24
- b _080AEA62
-_080AEA5E:
- movs r0, 0x80
- subs r2, r0, r1
-_080AEA62:
- ldrb r0, [r5, 0x17]
- muls r0, r2
- asrs r2, r0, 6
- ldrb r0, [r5, 0x16]
- eors r0, r2
- lsls r0, 24
- beq _080AEA84
- strb r2, [r5, 0x16]
- ldrb r0, [r5]
- ldrb r1, [r5, 0x18]
- cmp r1, 0
- bne _080AEA7E
- movs r1, 0xC
- b _080AEA80
-_080AEA7E:
- movs r1, 0x3
-_080AEA80:
- orrs r0, r1
- strb r0, [r5]
-_080AEA84:
- mov r3, r10
- mov r4, r11
-_080AEA88:
- subs r6, 0x1
- ble _080AEA94
- movs r0, 0x50
- adds r5, r0
- lsls r3, 1
- b _080AE96C
-_080AEA94:
- ldr r0, [r7, 0xC]
- adds r0, 0x1
- str r0, [r7, 0xC]
- cmp r4, 0
- bne _080AEAA6
- movs r0, 0x80
- lsls r0, 24
- str r0, [r7, 0x4]
- b _080AEB5C
-_080AEAA6:
- str r4, [r7, 0x4]
- ldrh r0, [r7, 0x22]
- subs r0, 0x96
-_080AEAAC:
- strh r0, [r7, 0x22]
- cmp r0, 0x96
- bcc _080AEAB4
- b _080AE964
-_080AEAB4:
- ldrb r2, [r7, 0x8]
- ldr r5, [r7, 0x2C]
-_080AEAB8:
- ldrb r0, [r5]
- movs r1, 0x80
- tst r1, r0
- beq _080AEB52
- movs r1, 0xF
- tst r1, r0
- beq _080AEB52
- mov r9, r2
- adds r0, r7, 0
- adds r1, r5, 0
- bl sub_80AF8C8
- ldr r4, [r5, 0x20]
- cmp r4, 0
- beq _080AEB48
-_080AEAD6:
- ldrb r1, [r4]
- movs r0, 0xC7
- tst r0, r1
- bne _080AEAE6
- adds r0, r4, 0
- bl sub_80AF2FC
- b _080AEB42
-_080AEAE6:
- ldrb r0, [r4, 0x1]
- movs r6, 0x7
- ands r6, r0
- ldrb r3, [r5]
- movs r0, 0x3
- tst r0, r3
- beq _080AEB04
- bl sub_80AEBC0
- cmp r6, 0
- beq _080AEB04
- ldrb r0, [r4, 0x1D]
- movs r1, 0x1
- orrs r0, r1
- strb r0, [r4, 0x1D]
-_080AEB04:
- ldrb r3, [r5]
- movs r0, 0xC
- tst r0, r3
- beq _080AEB42
- ldrb r1, [r4, 0x8]
- movs r0, 0x8
- ldrsb r0, [r5, r0]
- adds r2, r1, r0
- bpl _080AEB18
- movs r2, 0
-_080AEB18:
- cmp r6, 0
- beq _080AEB36
- mov r0, r8
- ldr r3, [r0, 0x30]
- adds r1, r2, 0
- ldrb r2, [r5, 0x9]
- adds r0, r6, 0
- bl _080AEB6C
- str r0, [r4, 0x20]
- ldrb r0, [r4, 0x1D]
- movs r1, 0x2
- orrs r0, r1
- strb r0, [r4, 0x1D]
- b _080AEB42
-_080AEB36:
- adds r1, r2, 0
- ldrb r2, [r5, 0x9]
- ldr r0, [r4, 0x24]
- bl sub_80AEE80
- str r0, [r4, 0x20]
-_080AEB42:
- ldr r4, [r4, 0x34]
- cmp r4, 0
- bne _080AEAD6
-_080AEB48:
- ldrb r0, [r5]
- movs r1, 0xF0
- ands r0, r1
- strb r0, [r5]
- mov r2, r9
-_080AEB52:
- subs r2, 0x1
- ble _080AEB5C
- movs r0, 0x50
- adds r5, r0
- bgt _080AEAB8
-_080AEB5C:
- ldr r0, _080AEB78
- str r0, [r7, 0x34]
- pop {r0-r7}
- mov r8, r0
- mov r9, r1
- mov r10, r2
- mov r11, r3
- pop {r3}
-_080AEB6C:
- bx r3
- .align 2, 0
-_080AEB70: .4byte gUnknown_826FC00
-_080AEB74: .4byte SOUND_INFO_PTR
-_080AEB78: .4byte 0x68736d53
- thumb_func_end sub_80AE914
-
- thumb_func_start sub_80AEB7C
-sub_80AEB7C:
- push {r4-r6,lr}
- adds r5, r1, 0
- ldrb r1, [r5]
- movs r0, 0x80
- tst r0, r1
- beq _080AEBB4
- ldr r4, [r5, 0x20]
- cmp r4, 0
- beq _080AEBB2
- movs r6, 0
-_080AEB90:
- ldrb r0, [r4]
- cmp r0, 0
- beq _080AEBAA
- ldrb r0, [r4, 0x1]
- movs r3, 0x7
- ands r0, r3
- beq _080AEBA8
- ldr r3, _080AEBBC
- ldr r3, [r3]
- ldr r3, [r3, 0x2C]
- bl _080AEB6C
-_080AEBA8:
- strb r6, [r4]
-_080AEBAA:
- str r6, [r4, 0x2C]
- ldr r4, [r4, 0x34]
- cmp r4, 0
- bne _080AEB90
-_080AEBB2:
- str r4, [r5, 0x20]
-_080AEBB4:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080AEBBC: .4byte SOUND_INFO_PTR
- thumb_func_end sub_80AEB7C
-
- thumb_func_start sub_80AEBC0
-sub_80AEBC0:
- ldrb r1, [r4, 0x12]
- movs r0, 0x14
- ldrsb r2, [r4, r0]
- movs r3, 0x80
- adds r3, r2
- muls r3, r1
- ldrb r0, [r5, 0x10]
- muls r0, r3
- asrs r0, 14
- cmp r0, 0xFF
- bls _080AEBD8
- movs r0, 0xFF
-_080AEBD8:
- strb r0, [r4, 0x2]
- movs r3, 0x7F
- subs r3, r2
- muls r3, r1
- ldrb r0, [r5, 0x11]
- muls r0, r3
- asrs r0, 14
- cmp r0, 0xFF
- bls _080AEBEC
- movs r0, 0xFF
-_080AEBEC:
- strb r0, [r4, 0x3]
- bx lr
- thumb_func_end sub_80AEBC0
-
- thumb_func_start sub_80AEBF0
-sub_80AEBF0:
- push {r4-r7,lr}
- mov r4, r8
- mov r5, r9
- mov r6, r10
- mov r7, r11
- push {r4-r7}
- sub sp, 0x18
- str r1, [sp]
- adds r5, r2, 0
- ldr r1, _080AEDE8
- ldr r1, [r1]
- str r1, [sp, 0x4]
- ldr r1, _080AEDEC
- adds r0, r1
- ldrb r0, [r0]
- strb r0, [r5, 0x4]
- ldr r3, [r5, 0x40]
- ldrb r0, [r3]
- cmp r0, 0x80
- bcs _080AEC36
- strb r0, [r5, 0x5]
- adds r3, 0x1
- ldrb r0, [r3]
- cmp r0, 0x80
- bcs _080AEC34
- strb r0, [r5, 0x6]
- adds r3, 0x1
- ldrb r0, [r3]
- cmp r0, 0x80
- bcs _080AEC34
- ldrb r1, [r5, 0x4]
- adds r1, r0
- strb r1, [r5, 0x4]
- adds r3, 0x1
-_080AEC34:
- str r3, [r5, 0x40]
-_080AEC36:
- movs r0, 0
- str r0, [sp, 0x14]
- adds r4, r5, 0
- adds r4, 0x24
- ldrb r2, [r4]
- movs r0, 0xC0
- tst r0, r2
- beq _080AEC88
- ldrb r3, [r5, 0x5]
- movs r0, 0x40
- tst r0, r2
- beq _080AEC56
- ldr r1, [r5, 0x2C]
- adds r1, r3
- ldrb r0, [r1]
- b _080AEC58
-_080AEC56:
- adds r0, r3, 0
-_080AEC58:
- lsls r1, r0, 1
- adds r1, r0
- lsls r1, 2
- ldr r0, [r5, 0x28]
- adds r1, r0
- mov r9, r1
- mov r6, r9
- ldrb r1, [r6]
- movs r0, 0xC0
- tst r0, r1
- beq _080AEC70
- b _080AEDD6
-_080AEC70:
- movs r0, 0x80
- tst r0, r2
- beq _080AEC8C
- ldrb r1, [r6, 0x3]
- movs r0, 0x80
- tst r0, r1
- beq _080AEC84
- subs r1, 0xC0
- lsls r1, 1
- str r1, [sp, 0x14]
-_080AEC84:
- ldrb r3, [r6, 0x1]
- b _080AEC8C
-_080AEC88:
- mov r9, r4
- ldrb r3, [r5, 0x5]
-_080AEC8C:
- str r3, [sp, 0x8]
- ldr r6, [sp]
- ldrb r1, [r6, 0x9]
- ldrb r0, [r5, 0x1D]
- adds r0, r1
- cmp r0, 0xFF
- bls _080AEC9C
- movs r0, 0xFF
-_080AEC9C:
- str r0, [sp, 0x10]
- mov r6, r9
- ldrb r0, [r6]
- movs r6, 0x7
- ands r6, r0
- str r6, [sp, 0xC]
- beq _080AECDC
- ldr r0, [sp, 0x4]
- ldr r4, [r0, 0x1C]
- cmp r4, 0
- bne _080AECB4
- b _080AEDD6
-_080AECB4:
- subs r6, 0x1
- lsls r0, r6, 6
- adds r4, r0
- ldrb r1, [r4]
- movs r0, 0xC7
- tst r0, r1
- beq _080AED30
- movs r0, 0x40
- tst r0, r1
- bne _080AED30
- ldrb r1, [r4, 0x13]
- ldr r0, [sp, 0x10]
- cmp r1, r0
- bcc _080AED30
- beq _080AECD4
- b _080AEDD6
-_080AECD4:
- ldr r0, [r4, 0x2C]
- cmp r0, r5
- bcs _080AED30
- b _080AEDD6
-_080AECDC:
- ldr r6, [sp, 0x10]
- adds r7, r5, 0
- movs r2, 0
- mov r8, r2
- ldr r4, [sp, 0x4]
- ldrb r3, [r4, 0x6]
- adds r4, 0x50
-_080AECEA:
- ldrb r1, [r4]
- movs r0, 0xC7
- tst r0, r1
- beq _080AED30
- movs r0, 0x40
- tst r0, r1
- beq _080AED04
- cmp r2, 0
- bne _080AED08
- adds r2, 0x1
- ldrb r6, [r4, 0x13]
- ldr r7, [r4, 0x2C]
- b _080AED22
-_080AED04:
- cmp r2, 0
- bne _080AED24
-_080AED08:
- ldrb r0, [r4, 0x13]
- cmp r0, r6
- bcs _080AED14
- adds r6, r0, 0
- ldr r7, [r4, 0x2C]
- b _080AED22
-_080AED14:
- bhi _080AED24
- ldr r0, [r4, 0x2C]
- cmp r0, r7
- bls _080AED20
- adds r7, r0, 0
- b _080AED22
-_080AED20:
- bcc _080AED24
-_080AED22:
- mov r8, r4
-_080AED24:
- adds r4, 0x40
- subs r3, 0x1
- bgt _080AECEA
- mov r4, r8
- cmp r4, 0
- beq _080AEDD6
-_080AED30:
- adds r0, r4, 0
- bl sub_80AF2FC
- movs r1, 0
- str r1, [r4, 0x30]
- ldr r3, [r5, 0x20]
- str r3, [r4, 0x34]
- cmp r3, 0
- beq _080AED44
- str r4, [r3, 0x30]
-_080AED44:
- str r4, [r5, 0x20]
- str r5, [r4, 0x2C]
- ldrb r0, [r5, 0x1B]
- strb r0, [r5, 0x1C]
- cmp r0, r1
- beq _080AED56
- adds r1, r5, 0
- bl sub_80AEE30
-_080AED56:
- ldr r0, [sp]
- adds r1, r5, 0
- bl sub_80AF8C8
- ldr r0, [r5, 0x4]
- str r0, [r4, 0x10]
- ldr r0, [sp, 0x10]
- strb r0, [r4, 0x13]
- ldr r0, [sp, 0x8]
- strb r0, [r4, 0x8]
- ldr r0, [sp, 0x14]
- strb r0, [r4, 0x14]
- mov r6, r9
- ldrb r0, [r6]
- strb r0, [r4, 0x1]
- ldr r7, [r6, 0x4]
- str r7, [r4, 0x24]
- ldr r0, [r6, 0x8]
- str r0, [r4, 0x4]
- ldrh r0, [r5, 0x1E]
- strh r0, [r4, 0xC]
- bl sub_80AEBC0
- ldrb r1, [r4, 0x8]
- movs r0, 0x8
- ldrsb r0, [r5, r0]
- adds r3, r1, r0
- bpl _080AED90
- movs r3, 0
-_080AED90:
- ldr r6, [sp, 0xC]
- cmp r6, 0
- beq _080AEDBE
- mov r6, r9
- ldrb r0, [r6, 0x2]
- strb r0, [r4, 0x1E]
- ldrb r1, [r6, 0x3]
- movs r0, 0x80
- tst r0, r1
- bne _080AEDAA
- movs r0, 0x70
- tst r0, r1
- bne _080AEDAC
-_080AEDAA:
- movs r1, 0x8
-_080AEDAC:
- strb r1, [r4, 0x1F]
- ldrb r2, [r5, 0x9]
- adds r1, r3, 0
- ldr r0, [sp, 0xC]
- ldr r3, [sp, 0x4]
- ldr r3, [r3, 0x30]
- bl _080AEB6C
- b _080AEDC8
-_080AEDBE:
- ldrb r2, [r5, 0x9]
- adds r1, r3, 0
- adds r0, r7, 0
- bl sub_80AEE80
-_080AEDC8:
- str r0, [r4, 0x20]
- movs r0, 0x80
- strb r0, [r4]
- ldrb r1, [r5]
- movs r0, 0xF0
- ands r0, r1
- strb r0, [r5]
-_080AEDD6:
- add sp, 0x18
- pop {r0-r7}
- mov r8, r0
- mov r9, r1
- mov r10, r2
- mov r11, r3
- pop {r0}
- bx r0
- .align 2, 0
-_080AEDE8: .4byte SOUND_INFO_PTR
-_080AEDEC: .4byte gUnknown_826FC00
- thumb_func_end sub_80AEBF0
-
- thumb_func_start sub_80AEDF0
-sub_80AEDF0:
- push {r4,r5}
- ldr r2, [r1, 0x40]
- ldrb r3, [r2]
- cmp r3, 0x80
- bcs _080AEE02
- strb r3, [r1, 0x5]
- adds r2, 0x1
- str r2, [r1, 0x40]
- b _080AEE04
-_080AEE02:
- ldrb r3, [r1, 0x5]
-_080AEE04:
- ldr r1, [r1, 0x20]
- cmp r1, 0
- beq _080AEE2C
- movs r4, 0x83
- movs r5, 0x40
-_080AEE0E:
- ldrb r2, [r1]
- tst r2, r4
- beq _080AEE26
- tst r2, r5
- bne _080AEE26
- ldrb r0, [r1, 0x11]
- cmp r0, r3
- bne _080AEE26
- movs r0, 0x40
- orrs r2, r0
- strb r2, [r1]
- b _080AEE2C
-_080AEE26:
- ldr r1, [r1, 0x34]
- cmp r1, 0
- bne _080AEE0E
-_080AEE2C:
- pop {r4,r5}
- bx lr
- thumb_func_end sub_80AEDF0
-
- thumb_func_start sub_80AEE30
-sub_80AEE30:
- movs r2, 0
- strb r2, [r1, 0x16]
- strb r2, [r1, 0x1A]
- ldrb r2, [r1, 0x18]
- cmp r2, 0
- bne _080AEE40
- movs r2, 0xC
- b _080AEE42
-_080AEE40:
- movs r2, 0x3
-_080AEE42:
- ldrb r3, [r1]
- orrs r3, r2
- strb r3, [r1]
- bx lr
- thumb_func_end sub_80AEE30
-
- thumb_func_start sub_80AEE4C
-sub_80AEE4C:
- ldr r2, [r1, 0x40]
- adds r3, r2, 0x1
- str r3, [r1, 0x40]
- ldrb r3, [r2]
- bx lr
- thumb_func_end sub_80AEE4C
-
- thumb_func_start sub_80AEE58
-sub_80AEE58:
- mov r12, lr
- bl sub_80AEE4C
- strb r3, [r1, 0x19]
- cmp r3, 0
- bne _080AEE68
- bl sub_80AEE30
-_080AEE68:
- bx r12
- thumb_func_end sub_80AEE58
-
- thumb_func_start sub_80AEE6C
-sub_80AEE6C:
- mov r12, lr
- bl sub_80AEE4C
- strb r3, [r1, 0x17]
- cmp r3, 0
- bne _080AEE7C
- bl sub_80AEE30
-_080AEE7C:
- bx r12
- thumb_func_end sub_80AEE6C
-
- thumb_func_start sub_80AEE80
-sub_80AEE80:
- push {r4-r7,lr}
- mov r12, r0
- lsls r1, 24
- lsrs r6, r1, 24
- lsls r7, r2, 24
- cmp r6, 0xB2
- bls _080AEE94
- movs r6, 0xB2
- movs r7, 0xFF
- lsls r7, 24
-_080AEE94:
- ldr r3, _080AEEDC
- adds r0, r6, r3
- ldrb r5, [r0]
- ldr r4, _080AEEE0
- movs r2, 0xF
- adds r0, r5, 0
- ands r0, r2
- lsls r0, 2
- adds r0, r4
- lsrs r1, r5, 4
- ldr r5, [r0]
- lsrs r5, r1
- adds r0, r6, 0x1
- adds r0, r3
- ldrb r1, [r0]
- adds r0, r1, 0
- ands r0, r2
- lsls r0, 2
- adds r0, r4
- lsrs r1, 4
- ldr r0, [r0]
- lsrs r0, r1
- mov r1, r12
- ldr r4, [r1, 0x4]
- subs r0, r5
- adds r1, r7, 0
- bl umul3232H32
- adds r1, r0, 0
- adds r1, r5, r1
- adds r0, r4, 0
- bl umul3232H32
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_080AEEDC: .4byte gUnknown_826FA1C
-_080AEEE0: .4byte gUnknown_826FAD0
- thumb_func_end sub_80AEE80
-
- thumb_func_start nullsub_212
-nullsub_212:
- bx lr
- thumb_func_end nullsub_212
-
- thumb_func_start sub_80AEEE8
-sub_80AEEE8:
- adds r2, r0, 0
- ldr r3, [r2, 0x34]
- ldr r0, _080AEEFC
- cmp r3, r0
- bne _080AEEFA
- ldr r0, [r2, 0x4]
- ldr r1, _080AEF00
- ands r0, r1
- str r0, [r2, 0x4]
-_080AEEFA:
- bx lr
- .align 2, 0
-_080AEEFC: .4byte 0x68736d53
-_080AEF00: .4byte 0x7fffffff
- thumb_func_end sub_80AEEE8
-
- thumb_func_start sub_80AEF04
-sub_80AEF04:
- adds r2, r0, 0
- lsls r1, 16
- lsrs r1, 16
- ldr r3, [r2, 0x34]
- ldr r0, _080AEF20
- cmp r3, r0
- bne _080AEF1C
- strh r1, [r2, 0x26]
- strh r1, [r2, 0x24]
- movs r0, 0x80
- lsls r0, 1
- strh r0, [r2, 0x28]
-_080AEF1C:
- bx lr
- .align 2, 0
-_080AEF20: .4byte 0x68736d53
- thumb_func_end sub_80AEF04
-
- thumb_func_start sub_80AEF24
-sub_80AEF24:
- push {r4-r6,lr}
- ldr r0, _080AEF78
- movs r1, 0x2
- negs r1, r1
- ands r0, r1
- ldr r1, _080AEF7C
- ldr r2, _080AEF80
- bl CpuSet
- ldr r0, _080AEF84
- bl sub_80AF324
- ldr r0, _080AEF88
- bl sub_80AF1E0
- ldr r0, _080AEF8C
- bl sub_80AF4C0
- ldr r0, _080AEF90
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0
- beq _080AEF72
- ldr r5, _080AEF94
- adds r6, r0, 0
-_080AEF56:
- ldr r4, [r5]
- ldr r1, [r5, 0x4]
- ldrb r2, [r5, 0x8]
- adds r0, r4, 0
- bl sub_80AF664
- ldrh r0, [r5, 0xA]
- strb r0, [r4, 0xB]
- ldr r0, _080AEF98
- str r0, [r4, 0x18]
- adds r5, 0xC
- subs r6, 0x1
- cmp r6, 0
- bne _080AEF56
-_080AEF72:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080AEF78: .4byte sub_80AE2F8
-_080AEF7C: .4byte SoundMainRAM_Buffer
-_080AEF80: .4byte 0x04000100
-_080AEF84: .4byte gUnknown_2039ED0
-_080AEF88: .4byte gUnknown_203AF10
-_080AEF8C: .4byte 0x0096e500
-_080AEF90: .4byte 0x00000008
-_080AEF94: .4byte 0x09e8665c
-_080AEF98: .4byte gUnknown_2000A30
- thumb_func_end sub_80AEF24
-
- thumb_func_start m4aSoundMain
-m4aSoundMain:
- push {lr}
- bl SoundMain
- pop {r0}
- bx r0
- thumb_func_end m4aSoundMain
-
- thumb_func_start sub_80AEFA8
-sub_80AEFA8:
- push {lr}
- lsls r0, 16
- ldr r2, _080AEFCC
- ldr r1, _080AEFD0
- lsrs r0, 13
- adds r0, r1
- ldrh r3, [r0, 0x4]
- lsls r1, r3, 1
- adds r1, r3
- lsls r1, 2
- adds r1, r2
- ldr r2, [r1]
- ldr r1, [r0]
- adds r0, r2, 0
- bl sub_80AF6DC
- pop {r0}
- bx r0
- .align 2, 0
-_080AEFCC: .4byte 0x09e8665c
-_080AEFD0: .4byte 0x09e866bc
- thumb_func_end sub_80AEFA8
-
- thumb_func_start sub_80AEFD4
-sub_80AEFD4:
- push {lr}
- lsls r0, 16
- ldr r2, _080AF000
- ldr r1, _080AF004
- lsrs r0, 13
- adds r0, r1
- ldrh r3, [r0, 0x4]
- lsls r1, r3, 1
- adds r1, r3
- lsls r1, 2
- adds r1, r2
- ldr r1, [r1]
- ldr r3, [r1]
- ldr r2, [r0]
- cmp r3, r2
- beq _080AF008
- adds r0, r1, 0
- adds r1, r2, 0
- bl sub_80AF6DC
- b _080AF01C
- .align 2, 0
-_080AF000: .4byte 0x09e8665c
-_080AF004: .4byte 0x09e866bc
-_080AF008:
- ldr r2, [r1, 0x4]
- ldrh r0, [r1, 0x4]
- cmp r0, 0
- beq _080AF014
- cmp r2, 0
- bge _080AF01C
-_080AF014:
- adds r0, r1, 0
- adds r1, r3, 0
- bl sub_80AF6DC
-_080AF01C:
- pop {r0}
- bx r0
- thumb_func_end sub_80AEFD4
-
- thumb_func_start sub_80AF020
-sub_80AF020:
- push {lr}
- lsls r0, 16
- ldr r2, _080AF04C
- ldr r1, _080AF050
- lsrs r0, 13
- adds r0, r1
- ldrh r3, [r0, 0x4]
- lsls r1, r3, 1
- adds r1, r3
- lsls r1, 2
- adds r1, r2
- ldr r1, [r1]
- ldr r3, [r1]
- ldr r2, [r0]
- cmp r3, r2
- beq _080AF054
- adds r0, r1, 0
- adds r1, r2, 0
- bl sub_80AF6DC
- b _080AF070
- .align 2, 0
-_080AF04C: .4byte 0x09e8665c
-_080AF050: .4byte 0x09e866bc
-_080AF054:
- ldr r2, [r1, 0x4]
- ldrh r0, [r1, 0x4]
- cmp r0, 0
- bne _080AF066
- adds r0, r1, 0
- adds r1, r3, 0
- bl sub_80AF6DC
- b _080AF070
-_080AF066:
- cmp r2, 0
- bge _080AF070
- adds r0, r1, 0
- bl sub_80AEEE8
-_080AF070:
- pop {r0}
- bx r0
- thumb_func_end sub_80AF020
-
- thumb_func_start sub_80AF074
-sub_80AF074:
- push {lr}
- lsls r0, 16
- ldr r2, _080AF0A0
- ldr r1, _080AF0A4
- lsrs r0, 13
- adds r0, r1
- ldrh r3, [r0, 0x4]
- lsls r1, r3, 1
- adds r1, r3
- lsls r1, 2
- adds r1, r2
- ldr r2, [r1]
- ldr r1, [r2]
- ldr r0, [r0]
- cmp r1, r0
- bne _080AF09A
- adds r0, r2, 0
- bl sub_80AF7C0
-_080AF09A:
- pop {r0}
- bx r0
- .align 2, 0
-_080AF0A0: .4byte 0x09e8665c
-_080AF0A4: .4byte 0x09e866bc
- thumb_func_end sub_80AF074
-
- thumb_func_start sub_80AF0A8
-sub_80AF0A8:
- push {lr}
- lsls r0, 16
- ldr r2, _080AF0D4
- ldr r1, _080AF0D8
- lsrs r0, 13
- adds r0, r1
- ldrh r3, [r0, 0x4]
- lsls r1, r3, 1
- adds r1, r3
- lsls r1, 2
- adds r1, r2
- ldr r2, [r1]
- ldr r1, [r2]
- ldr r0, [r0]
- cmp r1, r0
- bne _080AF0CE
- adds r0, r2, 0
- bl sub_80AEEE8
-_080AF0CE:
- pop {r0}
- bx r0
- .align 2, 0
-_080AF0D4: .4byte 0x09e8665c
-_080AF0D8: .4byte 0x09e866bc
- thumb_func_end sub_80AF0A8
-
- thumb_func_start sub_80AF0DC
-sub_80AF0DC:
- push {r4,r5,lr}
- ldr r0, _080AF100
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0
- beq _080AF0FA
- ldr r5, _080AF104
- adds r4, r0, 0
-_080AF0EC:
- ldr r0, [r5]
- bl sub_80AF7C0
- adds r5, 0xC
- subs r4, 0x1
- cmp r4, 0
- bne _080AF0EC
-_080AF0FA:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080AF100: .4byte 0x00000008
-_080AF104: .4byte 0x09e8665c
- thumb_func_end sub_80AF0DC
-
- thumb_func_start sub_80AF108
-sub_80AF108:
- push {lr}
- bl sub_80AEEE8
- pop {r0}
- bx r0
- thumb_func_end sub_80AF108
-
- thumb_func_start sub_80AF114
-sub_80AF114:
- push {r4,r5,lr}
- ldr r0, _080AF138
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0
- beq _080AF132
- ldr r5, _080AF13C
- adds r4, r0, 0
-_080AF124:
- ldr r0, [r5]
- bl sub_80AEEE8
- adds r5, 0xC
- subs r4, 0x1
- cmp r4, 0
- bne _080AF124
-_080AF132:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080AF138: .4byte 0x00000008
-_080AF13C: .4byte 0x09e8665c
- thumb_func_end sub_80AF114
-
- thumb_func_start sub_80AF140
-sub_80AF140:
- push {lr}
- lsls r1, 16
- lsrs r1, 16
- bl sub_80AEF04
- pop {r0}
- bx r0
- thumb_func_end sub_80AF140
-
- thumb_func_start sub_80AF150
-sub_80AF150:
- adds r2, r0, 0
- lsls r1, 16
- lsrs r1, 16
- ldr r3, [r2, 0x34]
- ldr r0, _080AF168
- cmp r3, r0
- bne _080AF166
- strh r1, [r2, 0x26]
- strh r1, [r2, 0x24]
- ldr r0, _080AF16C
- strh r0, [r2, 0x28]
-_080AF166:
- bx lr
- .align 2, 0
-_080AF168: .4byte 0x68736d53
-_080AF16C: .4byte 0x00000101
- thumb_func_end sub_80AF150
-
- thumb_func_start sub_80AF170
-sub_80AF170:
- adds r2, r0, 0
- lsls r1, 16
- lsrs r1, 16
- ldr r3, [r2, 0x34]
- ldr r0, _080AF190
- cmp r3, r0
- bne _080AF18E
- strh r1, [r2, 0x26]
- strh r1, [r2, 0x24]
- movs r0, 0x2
- strh r0, [r2, 0x28]
- ldr r0, [r2, 0x4]
- ldr r1, _080AF194
- ands r0, r1
- str r0, [r2, 0x4]
-_080AF18E:
- bx lr
- .align 2, 0
-_080AF190: .4byte 0x68736d53
-_080AF194: .4byte 0x7fffffff
- thumb_func_end sub_80AF170
-
- thumb_func_start sub_80AF198
-sub_80AF198:
- push {r4-r7,lr}
- ldrb r5, [r0, 0x8]
- ldr r4, [r0, 0x2C]
- cmp r5, 0
- ble _080AF1DA
- movs r7, 0x80
-_080AF1A4:
- ldrb r1, [r4]
- adds r0, r7, 0
- ands r0, r1
- cmp r0, 0
- beq _080AF1D2
- movs r6, 0x40
- adds r0, r6, 0
- ands r0, r1
- cmp r0, 0
- beq _080AF1D2
- adds r0, r4, 0
- bl sub_80AF310
- strb r7, [r4]
- movs r0, 0x2
- strb r0, [r4, 0xF]
- strb r6, [r4, 0x13]
- movs r0, 0x16
- strb r0, [r4, 0x19]
- adds r1, r4, 0
- adds r1, 0x24
- movs r0, 0x1
- strb r0, [r1]
-_080AF1D2:
- subs r5, 0x1
- adds r4, 0x50
- cmp r5, 0
- bgt _080AF1A4
-_080AF1DA:
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_80AF198
-
- thumb_func_start sub_80AF1E0
-sub_80AF1E0:
- push {r4-r6,lr}
- sub sp, 0x4
- adds r5, r0, 0
- ldr r1, _080AF2A8
- movs r0, 0x8F
- strh r0, [r1]
- ldr r3, _080AF2AC
- movs r2, 0
- strh r2, [r3]
- ldr r0, _080AF2B0
- movs r1, 0x8
- strb r1, [r0]
- adds r0, 0x6
- strb r1, [r0]
- adds r0, 0x10
- strb r1, [r0]
- subs r0, 0x14
- movs r1, 0x80
- strb r1, [r0]
- adds r0, 0x8
- strb r1, [r0]
- adds r0, 0x10
- strb r1, [r0]
- subs r0, 0xD
- strb r2, [r0]
- movs r0, 0x77
- strb r0, [r3]
- ldr r0, _080AF2B4
- ldr r4, [r0]
- ldr r6, [r4]
- ldr r0, _080AF2B8
- cmp r6, r0
- bne _080AF2A0
- adds r0, r6, 0x1
- str r0, [r4]
- ldr r1, _080AF2BC
- ldr r0, _080AF2C0
- str r0, [r1, 0x20]
- ldr r0, _080AF2C4
- str r0, [r1, 0x44]
- ldr r0, _080AF2C8
- str r0, [r1, 0x4C]
- ldr r0, _080AF2CC
- str r0, [r1, 0x70]
- ldr r0, _080AF2D0
- str r0, [r1, 0x74]
- ldr r0, _080AF2D4
- str r0, [r1, 0x78]
- ldr r0, _080AF2D8
- str r0, [r1, 0x7C]
- adds r2, r1, 0
- adds r2, 0x80
- ldr r0, _080AF2DC
- str r0, [r2]
- adds r1, 0x84
- ldr r0, _080AF2E0
- str r0, [r1]
- str r5, [r4, 0x1C]
- ldr r0, _080AF2E4
- str r0, [r4, 0x28]
- ldr r0, _080AF2E8
- str r0, [r4, 0x2C]
- ldr r0, _080AF2EC
- str r0, [r4, 0x30]
- ldr r0, _080AF2F0
- movs r1, 0
- strb r0, [r4, 0xC]
- str r1, [sp]
- ldr r2, _080AF2F4
- mov r0, sp
- adds r1, r5, 0
- bl CpuSet
- movs r0, 0x1
- strb r0, [r5, 0x1]
- movs r0, 0x11
- strb r0, [r5, 0x1C]
- adds r1, r5, 0
- adds r1, 0x41
- movs r0, 0x2
- strb r0, [r1]
- adds r1, 0x1B
- movs r0, 0x22
- strb r0, [r1]
- adds r1, 0x25
- movs r0, 0x3
- strb r0, [r1]
- adds r1, 0x1B
- movs r0, 0x44
- strb r0, [r1]
- adds r1, 0x24
- movs r0, 0x4
- strb r0, [r1, 0x1]
- movs r0, 0x88
- strb r0, [r1, 0x1C]
- str r6, [r4]
-_080AF2A0:
- add sp, 0x4
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080AF2A8: .4byte 0x04000084
-_080AF2AC: .4byte 0x04000080
-_080AF2B0: .4byte 0x04000063
-_080AF2B4: .4byte SOUND_INFO_PTR
-_080AF2B8: .4byte 0x68736d53
-_080AF2BC: .4byte gUnknown_203AE80
-_080AF2C0: .4byte sub_80B019C
-_080AF2C4: .4byte sub_80AEE58
-_080AF2C8: .4byte sub_80AEE6C
-_080AF2CC: .4byte sub_80B02F4
-_080AF2D0: .4byte sub_80AEDF0
-_080AF2D4: .4byte sub_80AF41C
-_080AF2D8: .4byte sub_80AEB7C
-_080AF2DC: .4byte sub_80AF800
-_080AF2E0: .4byte sub_80AF8C8
-_080AF2E4: .4byte sub_80AFADC
-_080AF2E8: .4byte sub_80AFA24
-_080AF2EC: .4byte sub_80AF97C
-_080AF2F0: .4byte 0x00000000
-_080AF2F4: .4byte 0x05000040
- thumb_func_end sub_80AF1E0
-
- thumb_func_start sub_80AF2F8
-sub_80AF2F8:
- swi 0x2A
- bx lr
- thumb_func_end sub_80AF2F8
-
- thumb_func_start sub_80AF2FC
-sub_80AF2FC:
- push {lr}
- ldr r1, _080AF30C
- ldr r1, [r1]
- bl _call_via_r1
- pop {r0}
- bx r0
- .align 2, 0
-_080AF30C: .4byte gUnknown_203AF08
- thumb_func_end sub_80AF2FC
-
- thumb_func_start sub_80AF310
-sub_80AF310:
- push {lr}
- ldr r1, _080AF320
- ldr r1, [r1]
- bl _call_via_r1
- pop {r0}
- bx r0
- .align 2, 0
-_080AF320: .4byte gUnknown_203AF0C
- thumb_func_end sub_80AF310
-
- thumb_func_start sub_80AF324
-sub_80AF324:
- push {r4,r5,lr}
- sub sp, 0x4
- adds r5, r0, 0
- movs r3, 0
- str r3, [r5]
- ldr r1, _080AF3DC
- ldr r0, [r1]
- movs r2, 0x80
- lsls r2, 18
- ands r0, r2
- cmp r0, 0
- beq _080AF340
- ldr r0, _080AF3E0
- str r0, [r1]
-_080AF340:
- ldr r1, _080AF3E4
- ldr r0, [r1]
- ands r0, r2
- cmp r0, 0
- beq _080AF34E
- ldr r0, _080AF3E0
- str r0, [r1]
-_080AF34E:
- ldr r0, _080AF3E8
- movs r2, 0x80
- lsls r2, 3
- adds r1, r2, 0
- strh r1, [r0]
- adds r0, 0xC
- strh r1, [r0]
- ldr r1, _080AF3EC
- movs r0, 0x8F
- strh r0, [r1]
- subs r1, 0x2
- ldr r2, _080AF3F0
- adds r0, r2, 0
- strh r0, [r1]
- ldr r2, _080AF3F4
- ldrb r1, [r2]
- movs r0, 0x3F
- ands r0, r1
- movs r1, 0x40
- orrs r0, r1
- strb r0, [r2]
- ldr r1, _080AF3F8
- movs r2, 0xD4
- lsls r2, 2
- adds r0, r5, r2
- str r0, [r1]
- adds r1, 0x4
- ldr r0, _080AF3FC
- str r0, [r1]
- adds r1, 0x8
- movs r2, 0x98
- lsls r2, 4
- adds r0, r5, r2
- str r0, [r1]
- adds r1, 0x4
- ldr r0, _080AF400
- str r0, [r1]
- ldr r0, _080AF404
- str r5, [r0]
- str r3, [sp]
- ldr r2, _080AF408
- mov r0, sp
- adds r1, r5, 0
- bl CpuSet
- movs r0, 0x8
- strb r0, [r5, 0x6]
- movs r0, 0xF
- strb r0, [r5, 0x7]
- ldr r0, _080AF40C
- str r0, [r5, 0x38]
- ldr r0, _080AF410
- str r0, [r5, 0x28]
- str r0, [r5, 0x2C]
- str r0, [r5, 0x30]
- str r0, [r5, 0x3C]
- ldr r4, _080AF414
- adds r0, r4, 0
- bl sub_80AE704
- str r4, [r5, 0x34]
- movs r0, 0x80
- lsls r0, 11
- bl sub_80AF41C
- ldr r0, _080AF418
- str r0, [r5]
- add sp, 0x4
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080AF3DC: .4byte 0x040000c4
-_080AF3E0: .4byte 0x84400004
-_080AF3E4: .4byte 0x040000d0
-_080AF3E8: .4byte 0x040000c6
-_080AF3EC: .4byte 0x04000084
-_080AF3F0: .4byte 0x0000a90e
-_080AF3F4: .4byte 0x04000089
-_080AF3F8: .4byte 0x040000bc
-_080AF3FC: .4byte 0x040000a0
-_080AF400: .4byte 0x040000a4
-_080AF404: .4byte SOUND_INFO_PTR
-_080AF408: .4byte 0x050003ec
-_080AF40C: .4byte sub_80AEBF0
-_080AF410: .4byte nullsub_139
-_080AF414: .4byte gUnknown_203AE80
-_080AF418: .4byte 0x68736d53
- thumb_func_end sub_80AF324
-
- thumb_func_start sub_80AF41C
-sub_80AF41C:
- push {r4-r6,lr}
- adds r2, r0, 0
- ldr r0, _080AF49C
- ldr r4, [r0]
- movs r0, 0xF0
- lsls r0, 12
- ands r0, r2
- lsrs r2, r0, 16
- movs r6, 0
- strb r2, [r4, 0x8]
- ldr r1, _080AF4A0
- subs r0, r2, 0x1
- lsls r0, 1
- adds r0, r1
- ldrh r5, [r0]
- str r5, [r4, 0x10]
- movs r0, 0xC6
- lsls r0, 3
- adds r1, r5, 0
- bl __divsi3
- strb r0, [r4, 0xB]
- ldr r0, _080AF4A4
- muls r0, r5
- ldr r1, _080AF4A8
- adds r0, r1
- ldr r1, _080AF4AC
- bl __divsi3
- adds r1, r0, 0
- str r1, [r4, 0x14]
- movs r0, 0x80
- lsls r0, 17
- bl __divsi3
- adds r0, 0x1
- asrs r0, 1
- str r0, [r4, 0x18]
- ldr r0, _080AF4B0
- strh r6, [r0]
- ldr r4, _080AF4B4
- ldr r0, _080AF4B8
- adds r1, r5, 0
- bl __divsi3
- negs r0, r0
- strh r0, [r4]
- bl sub_80AF628
- ldr r1, _080AF4BC
-_080AF480:
- ldrb r0, [r1]
- cmp r0, 0x9F
- beq _080AF480
- ldr r1, _080AF4BC
-_080AF488:
- ldrb r0, [r1]
- cmp r0, 0x9F
- bne _080AF488
- ldr r1, _080AF4B0
- movs r0, 0x80
- strh r0, [r1]
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080AF49C: .4byte SOUND_INFO_PTR
-_080AF4A0: .4byte gUnknown_826FB00
-_080AF4A4: .4byte 0x00091d1b
-_080AF4A8: .4byte 0x00001388
-_080AF4AC: .4byte 0x00002710
-_080AF4B0: .4byte 0x04000102
-_080AF4B4: .4byte 0x04000100
-_080AF4B8: .4byte 0x00044940
-_080AF4BC: .4byte 0x04000006
- thumb_func_end sub_80AF41C
-
- thumb_func_start sub_80AF4C0
-sub_80AF4C0:
- push {r4,r5,lr}
- adds r3, r0, 0
- ldr r0, _080AF54C
- ldr r5, [r0]
- ldr r1, [r5]
- ldr r0, _080AF550
- cmp r1, r0
- bne _080AF546
- adds r0, r1, 0x1
- str r0, [r5]
- movs r4, 0xFF
- ands r4, r3
- cmp r4, 0
- beq _080AF4E2
- movs r0, 0x7F
- ands r4, r0
- strb r4, [r5, 0x5]
-_080AF4E2:
- movs r4, 0xF0
- lsls r4, 4
- ands r4, r3
- cmp r4, 0
- beq _080AF502
- lsrs r0, r4, 8
- strb r0, [r5, 0x6]
- movs r4, 0xC
- adds r0, r5, 0
- adds r0, 0x50
- movs r1, 0
-_080AF4F8:
- strb r1, [r0]
- subs r4, 0x1
- adds r0, 0x40
- cmp r4, 0
- bne _080AF4F8
-_080AF502:
- movs r4, 0xF0
- lsls r4, 8
- ands r4, r3
- cmp r4, 0
- beq _080AF510
- lsrs r0, r4, 12
- strb r0, [r5, 0x7]
-_080AF510:
- movs r4, 0xB0
- lsls r4, 16
- ands r4, r3
- cmp r4, 0
- beq _080AF52E
- movs r0, 0xC0
- lsls r0, 14
- ands r0, r4
- lsrs r4, r0, 14
- ldr r2, _080AF554
- ldrb r1, [r2]
- movs r0, 0x3F
- ands r0, r1
- orrs r0, r4
- strb r0, [r2]
-_080AF52E:
- movs r4, 0xF0
- lsls r4, 12
- ands r4, r3
- cmp r4, 0
- beq _080AF542
- bl sub_80AF5AC
- adds r0, r4, 0
- bl sub_80AF41C
-_080AF542:
- ldr r0, _080AF550
- str r0, [r5]
-_080AF546:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080AF54C: .4byte SOUND_INFO_PTR
-_080AF550: .4byte 0x68736d53
-_080AF554: .4byte 0x04000089
- thumb_func_end sub_80AF4C0
-
- thumb_func_start sub_80AF558
-sub_80AF558:
- push {r4-r7,lr}
- ldr r0, _080AF5A4
- ldr r6, [r0]
- ldr r1, [r6]
- ldr r0, _080AF5A8
- cmp r1, r0
- bne _080AF59E
- adds r0, r1, 0x1
- str r0, [r6]
- movs r5, 0xC
- adds r4, r6, 0
- adds r4, 0x50
- movs r0, 0
-_080AF572:
- strb r0, [r4]
- subs r5, 0x1
- adds r4, 0x40
- cmp r5, 0
- bgt _080AF572
- ldr r4, [r6, 0x1C]
- cmp r4, 0
- beq _080AF59A
- movs r5, 0x1
- movs r7, 0
-_080AF586:
- lsls r0, r5, 24
- lsrs r0, 24
- ldr r1, [r6, 0x2C]
- bl _call_via_r1
- strb r7, [r4]
- adds r5, 0x1
- adds r4, 0x40
- cmp r5, 0x4
- ble _080AF586
-_080AF59A:
- ldr r0, _080AF5A8
- str r0, [r6]
-_080AF59E:
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080AF5A4: .4byte SOUND_INFO_PTR
-_080AF5A8: .4byte 0x68736d53
- thumb_func_end sub_80AF558
-
- thumb_func_start sub_80AF5AC
-sub_80AF5AC:
- push {lr}
- sub sp, 0x4
- ldr r0, _080AF60C
- ldr r2, [r0]
- ldr r1, [r2]
- ldr r3, _080AF610
- adds r0, r1, r3
- cmp r0, 0x1
- bhi _080AF604
- adds r0, r1, 0
- adds r0, 0xA
- str r0, [r2]
- ldr r1, _080AF614
- ldr r0, [r1]
- movs r3, 0x80
- lsls r3, 18
- ands r0, r3
- cmp r0, 0
- beq _080AF5D6
- ldr r0, _080AF618
- str r0, [r1]
-_080AF5D6:
- ldr r1, _080AF61C
- ldr r0, [r1]
- ands r0, r3
- cmp r0, 0
- beq _080AF5E4
- ldr r0, _080AF618
- str r0, [r1]
-_080AF5E4:
- ldr r0, _080AF620
- movs r3, 0x80
- lsls r3, 3
- adds r1, r3, 0
- strh r1, [r0]
- adds r0, 0xC
- strh r1, [r0]
- movs r0, 0
- str r0, [sp]
- movs r0, 0xD4
- lsls r0, 2
- adds r1, r2, r0
- ldr r2, _080AF624
- mov r0, sp
- bl CpuSet
-_080AF604:
- add sp, 0x4
- pop {r0}
- bx r0
- .align 2, 0
-_080AF60C: .4byte SOUND_INFO_PTR
-_080AF610: .4byte 0x978c92ad
-_080AF614: .4byte 0x040000c4
-_080AF618: .4byte 0x84400004
-_080AF61C: .4byte 0x040000d0
-_080AF620: .4byte 0x040000c6
-_080AF624: .4byte 0x05000318
- thumb_func_end sub_80AF5AC
-
- thumb_func_start sub_80AF628
-sub_80AF628:
- push {r4,lr}
- ldr r0, _080AF658
- ldr r2, [r0]
- ldr r3, [r2]
- ldr r0, _080AF65C
- cmp r3, r0
- beq _080AF650
- ldr r0, _080AF660
- movs r4, 0xB6
- lsls r4, 8
- adds r1, r4, 0
- strh r1, [r0]
- adds r0, 0xC
- strh r1, [r0]
- ldrb r0, [r2, 0x4]
- movs r0, 0
- strb r0, [r2, 0x4]
- adds r0, r3, 0
- subs r0, 0xA
- str r0, [r2]
-_080AF650:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080AF658: .4byte SOUND_INFO_PTR
-_080AF65C: .4byte 0x68736d53
-_080AF660: .4byte 0x040000c6
- thumb_func_end sub_80AF628
-
- thumb_func_start sub_80AF664
-sub_80AF664:
- push {r4-r7,lr}
- adds r7, r0, 0
- adds r6, r1, 0
- lsls r2, 24
- lsrs r4, r2, 24
- cmp r4, 0
- beq _080AF6C8
- cmp r4, 0x10
- bls _080AF678
- movs r4, 0x10
-_080AF678:
- ldr r0, _080AF6D0
- ldr r5, [r0]
- ldr r1, [r5]
- ldr r0, _080AF6D4
- cmp r1, r0
- bne _080AF6C8
- adds r0, r1, 0x1
- str r0, [r5]
- adds r0, r7, 0
- bl sub_80AF310
- str r6, [r7, 0x2C]
- strb r4, [r7, 0x8]
- movs r0, 0x80
- lsls r0, 24
- str r0, [r7, 0x4]
- cmp r4, 0
- beq _080AF6AC
- movs r1, 0
-_080AF69E:
- strb r1, [r6]
- subs r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- adds r6, 0x50
- cmp r4, 0
- bne _080AF69E
-_080AF6AC:
- ldr r0, [r5, 0x20]
- cmp r0, 0
- beq _080AF6BC
- str r0, [r7, 0x38]
- ldr r0, [r5, 0x24]
- str r0, [r7, 0x3C]
- movs r0, 0
- str r0, [r5, 0x20]
-_080AF6BC:
- str r7, [r5, 0x24]
- ldr r0, _080AF6D8
- str r0, [r5, 0x20]
- ldr r0, _080AF6D4
- str r0, [r5]
- str r0, [r7, 0x34]
-_080AF6C8:
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080AF6D0: .4byte SOUND_INFO_PTR
-_080AF6D4: .4byte 0x68736d53
-_080AF6D8: .4byte sub_80AE914
- thumb_func_end sub_80AF664
-
- thumb_func_start sub_80AF6DC
-sub_80AF6DC:
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- adds r5, r0, 0
- adds r7, r1, 0
- ldr r1, [r5, 0x34]
- ldr r0, _080AF7BC
- cmp r1, r0
- bne _080AF7B2
- ldrb r0, [r5, 0xB]
- ldrb r2, [r7, 0x2]
- cmp r0, 0
- beq _080AF71E
- ldr r0, [r5]
- cmp r0, 0
- beq _080AF708
- ldr r1, [r5, 0x2C]
- movs r0, 0x40
- ldrb r1, [r1]
- ands r0, r1
- cmp r0, 0
- bne _080AF714
-_080AF708:
- ldr r1, [r5, 0x4]
- ldrh r0, [r5, 0x4]
- cmp r0, 0
- beq _080AF71E
- cmp r1, 0
- blt _080AF71E
-_080AF714:
- ldrb r0, [r7, 0x2]
- adds r2, r0, 0
- ldrb r0, [r5, 0x9]
- cmp r0, r2
- bhi _080AF7B2
-_080AF71E:
- ldr r0, [r5, 0x34]
- adds r0, 0x1
- str r0, [r5, 0x34]
- movs r1, 0
- str r1, [r5, 0x4]
- str r7, [r5]
- ldr r0, [r7, 0x4]
- str r0, [r5, 0x30]
- strb r2, [r5, 0x9]
- str r1, [r5, 0xC]
- movs r0, 0x96
- strh r0, [r5, 0x1C]
- strh r0, [r5, 0x20]
- adds r0, 0x6A
- strh r0, [r5, 0x1E]
- strh r1, [r5, 0x22]
- strh r1, [r5, 0x24]
- movs r6, 0
- ldr r4, [r5, 0x2C]
- ldrb r1, [r7]
- cmp r6, r1
- bge _080AF77E
- ldrb r0, [r5, 0x8]
- cmp r6, r0
- bge _080AF79E
- mov r8, r6
-_080AF752:
- adds r0, r5, 0
- adds r1, r4, 0
- bl sub_80AEB7C
- movs r0, 0xC0
- strb r0, [r4]
- mov r1, r8
- str r1, [r4, 0x20]
- lsls r1, r6, 2
- adds r0, r7, 0
- adds r0, 0x8
- adds r0, r1
- ldr r0, [r0]
- str r0, [r4, 0x40]
- adds r6, 0x1
- adds r4, 0x50
- ldrb r0, [r7]
- cmp r6, r0
- bge _080AF77E
- ldrb r1, [r5, 0x8]
- cmp r6, r1
- blt _080AF752
-_080AF77E:
- ldrb r0, [r5, 0x8]
- cmp r6, r0
- bge _080AF79E
- movs r1, 0
- mov r8, r1
-_080AF788:
- adds r0, r5, 0
- adds r1, r4, 0
- bl sub_80AEB7C
- mov r0, r8
- strb r0, [r4]
- adds r6, 0x1
- adds r4, 0x50
- ldrb r1, [r5, 0x8]
- cmp r6, r1
- blt _080AF788
-_080AF79E:
- movs r0, 0x80
- ldrb r1, [r7, 0x3]
- ands r0, r1
- cmp r0, 0
- beq _080AF7AE
- ldrb r0, [r7, 0x3]
- bl sub_80AF4C0
-_080AF7AE:
- ldr r0, _080AF7BC
- str r0, [r5, 0x34]
-_080AF7B2:
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080AF7BC: .4byte 0x68736d53
- thumb_func_end sub_80AF6DC
-
- thumb_func_start sub_80AF7C0
-sub_80AF7C0:
- push {r4-r6,lr}
- adds r6, r0, 0
- ldr r1, [r6, 0x34]
- ldr r0, _080AF7FC
- cmp r1, r0
- bne _080AF7F6
- adds r0, r1, 0x1
- str r0, [r6, 0x34]
- ldr r0, [r6, 0x4]
- movs r1, 0x80
- lsls r1, 24
- orrs r0, r1
- str r0, [r6, 0x4]
- ldrb r4, [r6, 0x8]
- ldr r5, [r6, 0x2C]
- cmp r4, 0
- ble _080AF7F2
-_080AF7E2:
- adds r0, r6, 0
- adds r1, r5, 0
- bl sub_80AEB7C
- subs r4, 0x1
- adds r5, 0x50
- cmp r4, 0
- bgt _080AF7E2
-_080AF7F2:
- ldr r0, _080AF7FC
- str r0, [r6, 0x34]
-_080AF7F6:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080AF7FC: .4byte 0x68736d53
- thumb_func_end sub_80AF7C0
-
- thumb_func_start sub_80AF800
-sub_80AF800:
- push {r4-r7,lr}
- adds r6, r0, 0
- ldrh r1, [r6, 0x24]
- cmp r1, 0
- beq _080AF8C2
- ldrh r0, [r6, 0x26]
- subs r0, 0x1
- strh r0, [r6, 0x26]
- ldr r3, _080AF840
- adds r2, r3, 0
- lsls r0, 16
- lsrs r3, r0, 16
- cmp r3, 0
- bne _080AF8C2
- strh r1, [r6, 0x26]
- ldrh r1, [r6, 0x28]
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _080AF844
- adds r0, r1, 0
- adds r0, 0x10
- strh r0, [r6, 0x28]
- ands r0, r2
- cmp r0, 0xFF
- bls _080AF896
- movs r0, 0x80
- lsls r0, 1
- strh r0, [r6, 0x28]
- strh r3, [r6, 0x24]
- b _080AF896
- .align 2, 0
-_080AF840: .4byte 0x0000ffff
-_080AF844:
- adds r0, r1, 0
- subs r0, 0x10
- strh r0, [r6, 0x28]
- ands r0, r2
- lsls r0, 16
- cmp r0, 0
- bgt _080AF896
- ldrb r5, [r6, 0x8]
- ldr r4, [r6, 0x2C]
- cmp r5, 0
- ble _080AF876
-_080AF85A:
- adds r0, r6, 0
- adds r1, r4, 0
- bl sub_80AEB7C
- movs r0, 0x1
- ldrh r7, [r6, 0x28]
- ands r0, r7
- cmp r0, 0
- bne _080AF86E
- strb r0, [r4]
-_080AF86E:
- subs r5, 0x1
- adds r4, 0x50
- cmp r5, 0
- bgt _080AF85A
-_080AF876:
- movs r0, 0x1
- ldrh r1, [r6, 0x28]
- ands r0, r1
- cmp r0, 0
- beq _080AF88A
- ldr r0, [r6, 0x4]
- movs r1, 0x80
- lsls r1, 24
- orrs r0, r1
- b _080AF88E
-_080AF88A:
- movs r0, 0x80
- lsls r0, 24
-_080AF88E:
- str r0, [r6, 0x4]
- movs r0, 0
- strh r0, [r6, 0x24]
- b _080AF8C2
-_080AF896:
- ldrb r5, [r6, 0x8]
- ldr r4, [r6, 0x2C]
- cmp r5, 0
- ble _080AF8C2
- movs r3, 0x80
- movs r7, 0
- movs r2, 0x3
-_080AF8A4:
- ldrb r1, [r4]
- adds r0, r3, 0
- ands r0, r1
- cmp r0, 0
- beq _080AF8BA
- ldrh r7, [r6, 0x28]
- lsrs r0, r7, 2
- strb r0, [r4, 0x13]
- adds r0, r1, 0
- orrs r0, r2
- strb r0, [r4]
-_080AF8BA:
- subs r5, 0x1
- adds r4, 0x50
- cmp r5, 0
- bgt _080AF8A4
-_080AF8C2:
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_80AF800
-
- thumb_func_start sub_80AF8C8
-sub_80AF8C8:
- push {r4,lr}
- adds r2, r1, 0
- movs r0, 0x1
- ldrb r1, [r2]
- ands r0, r1
- cmp r0, 0
- beq _080AF92C
- ldrb r3, [r2, 0x13]
- ldrb r1, [r2, 0x12]
- adds r0, r3, 0
- muls r0, r1
- lsrs r3, r0, 5
- ldrb r4, [r2, 0x18]
- cmp r4, 0x1
- bne _080AF8F0
- movs r0, 0x16
- ldrsb r0, [r2, r0]
- adds r0, 0x80
- muls r0, r3
- lsrs r3, r0, 7
-_080AF8F0:
- movs r0, 0x14
- ldrsb r0, [r2, r0]
- lsls r0, 1
- movs r1, 0x15
- ldrsb r1, [r2, r1]
- adds r1, r0, r1
- cmp r4, 0x2
- bne _080AF906
- movs r0, 0x16
- ldrsb r0, [r2, r0]
- adds r1, r0
-_080AF906:
- movs r0, 0x80
- negs r0, r0
- cmp r1, r0
- bge _080AF912
- adds r1, r0, 0
- b _080AF918
-_080AF912:
- cmp r1, 0x7F
- ble _080AF918
- movs r1, 0x7F
-_080AF918:
- adds r0, r1, 0
- adds r0, 0x80
- muls r0, r3
- lsrs r0, 8
- strb r0, [r2, 0x10]
- movs r0, 0x7F
- subs r0, r1
- muls r0, r3
- lsrs r0, 8
- strb r0, [r2, 0x11]
-_080AF92C:
- ldrb r1, [r2]
- movs r0, 0x4
- ands r0, r1
- adds r3, r1, 0
- cmp r0, 0
- beq _080AF970
- movs r0, 0xE
- ldrsb r0, [r2, r0]
- ldrb r1, [r2, 0xF]
- muls r0, r1
- movs r1, 0xC
- ldrsb r1, [r2, r1]
- adds r1, r0
- lsls r1, 2
- movs r0, 0xA
- ldrsb r0, [r2, r0]
- lsls r0, 8
- adds r1, r0
- movs r0, 0xB
- ldrsb r0, [r2, r0]
- lsls r0, 8
- adds r1, r0
- ldrb r0, [r2, 0xD]
- adds r1, r0, r1
- ldrb r0, [r2, 0x18]
- cmp r0, 0
- bne _080AF96A
- movs r0, 0x16
- ldrsb r0, [r2, r0]
- lsls r0, 4
- adds r1, r0
-_080AF96A:
- asrs r0, r1, 8
- strb r0, [r2, 0x8]
- strb r1, [r2, 0x9]
-_080AF970:
- movs r0, 0xFA
- ands r0, r3
- strb r0, [r2]
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_80AF8C8
-
- thumb_func_start sub_80AF97C
-sub_80AF97C:
- push {r4-r7,lr}
- lsls r0, 24
- lsrs r0, 24
- lsls r1, 24
- lsrs r5, r1, 24
- lsls r2, 24
- lsrs r2, 24
- mov r12, r2
- cmp r0, 0x4
- bne _080AF9B4
- cmp r5, 0x14
- bhi _080AF998
- movs r5, 0
- b _080AF9A6
-_080AF998:
- adds r0, r5, 0
- subs r0, 0x15
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0x3B
- bls _080AF9A6
- movs r5, 0x3B
-_080AF9A6:
- ldr r0, _080AF9B0
- adds r0, r5, r0
- ldrb r0, [r0]
- b _080AFA16
- .align 2, 0
-_080AF9B0: .4byte gUnknown_826FBB4
-_080AF9B4:
- cmp r5, 0x23
- bhi _080AF9C0
- movs r0, 0
- mov r12, r0
- movs r5, 0
- b _080AF9D2
-_080AF9C0:
- adds r0, r5, 0
- subs r0, 0x24
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0x82
- bls _080AF9D2
- movs r5, 0x82
- movs r1, 0xFF
- mov r12, r1
-_080AF9D2:
- ldr r3, _080AFA1C
- adds r0, r5, r3
- ldrb r6, [r0]
- ldr r4, _080AFA20
- movs r2, 0xF
- adds r0, r6, 0
- ands r0, r2
- lsls r0, 1
- adds r0, r4
- movs r7, 0
- ldrsh r1, [r0, r7]
- asrs r0, r6, 4
- adds r6, r1, 0
- asrs r6, r0
- adds r0, r5, 0x1
- adds r0, r3
- ldrb r1, [r0]
- adds r0, r1, 0
- ands r0, r2
- lsls r0, 1
- adds r0, r4
- movs r2, 0
- ldrsh r0, [r0, r2]
- asrs r1, 4
- asrs r0, r1
- subs r0, r6
- mov r7, r12
- muls r7, r0
- adds r0, r7, 0
- asrs r0, 8
- adds r0, r6, r0
- movs r1, 0x80
- lsls r1, 4
- adds r0, r1
-_080AFA16:
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_080AFA1C: .4byte gUnknown_826FB18
-_080AFA20: .4byte gUnknown_826FB9C
- thumb_func_end sub_80AF97C
-
- thumb_func_start sub_80AFA24
-sub_80AFA24:
- lsls r0, 24
- lsrs r0, 24
- adds r1, r0, 0
- cmp r0, 0x2
- beq _080AFA4C
- cmp r0, 0x2
- bgt _080AFA38
- cmp r0, 0x1
- beq _080AFA3E
- b _080AFA60
-_080AFA38:
- cmp r1, 0x3
- beq _080AFA54
- b _080AFA60
-_080AFA3E:
- ldr r1, _080AFA48
- movs r0, 0x8
- strb r0, [r1]
- adds r1, 0x2
- b _080AFA68
- .align 2, 0
-_080AFA48: .4byte 0x04000063
-_080AFA4C:
- ldr r1, _080AFA50
- b _080AFA62
- .align 2, 0
-_080AFA50: .4byte 0x04000069
-_080AFA54:
- ldr r1, _080AFA5C
- movs r0, 0
- b _080AFA6A
- .align 2, 0
-_080AFA5C: .4byte 0x04000070
-_080AFA60:
- ldr r1, _080AFA70
-_080AFA62:
- movs r0, 0x8
- strb r0, [r1]
- adds r1, 0x4
-_080AFA68:
- movs r0, 0x80
-_080AFA6A:
- strb r0, [r1]
- bx lr
- .align 2, 0
-_080AFA70: .4byte 0x04000079
- thumb_func_end sub_80AFA24
-
- thumb_func_start sub_80AFA74
-sub_80AFA74:
- push {r4,lr}
- adds r1, r0, 0
- ldrb r0, [r1, 0x2]
- lsls r2, r0, 24
- lsrs r4, r2, 24
- ldrb r3, [r1, 0x3]
- lsls r0, r3, 24
- lsrs r3, r0, 24
- cmp r4, r3
- bcc _080AFA94
- lsrs r0, r2, 25
- cmp r0, r3
- bcc _080AFAA0
- movs r0, 0xF
- strb r0, [r1, 0x1B]
- b _080AFAAE
-_080AFA94:
- lsrs r0, 25
- cmp r0, r4
- bcc _080AFAA0
- movs r0, 0xF0
- strb r0, [r1, 0x1B]
- b _080AFAAE
-_080AFAA0:
- movs r0, 0xFF
- strb r0, [r1, 0x1B]
- ldrb r2, [r1, 0x3]
- ldrb r3, [r1, 0x2]
- adds r0, r2, r3
- lsrs r0, 4
- b _080AFABE
-_080AFAAE:
- ldrb r2, [r1, 0x3]
- ldrb r3, [r1, 0x2]
- adds r0, r2, r3
- lsrs r0, 4
- strb r0, [r1, 0xA]
- cmp r0, 0xF
- bls _080AFAC0
- movs r0, 0xF
-_080AFABE:
- strb r0, [r1, 0xA]
-_080AFAC0:
- ldrb r2, [r1, 0x6]
- ldrb r3, [r1, 0xA]
- adds r0, r2, 0
- muls r0, r3
- adds r0, 0xF
- asrs r0, 4
- strb r0, [r1, 0x19]
- ldrb r0, [r1, 0x1C]
- ldrb r2, [r1, 0x1B]
- ands r0, r2
- strb r0, [r1, 0x1B]
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_80AFA74
-
- thumb_func_start sub_80AFADC
-sub_80AFADC:
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x1C
- ldr r0, _080AFAFC
- ldr r0, [r0]
- str r0, [sp, 0x4]
- ldrb r0, [r0, 0xA]
- cmp r0, 0
- beq _080AFB00
- subs r0, 0x1
- ldr r1, [sp, 0x4]
- strb r0, [r1, 0xA]
- b _080AFB06
- .align 2, 0
-_080AFAFC: .4byte SOUND_INFO_PTR
-_080AFB00:
- movs r0, 0xE
- ldr r2, [sp, 0x4]
- strb r0, [r2, 0xA]
-_080AFB06:
- movs r6, 0x1
- ldr r0, [sp, 0x4]
- ldr r4, [r0, 0x1C]
-_080AFB0C:
- ldrb r1, [r4]
- movs r0, 0xC7
- ands r0, r1
- adds r2, r6, 0x1
- mov r10, r2
- movs r2, 0x40
- adds r2, r4
- mov r9, r2
- cmp r0, 0
- bne _080AFB22
- b _080AFF0C
-_080AFB22:
- cmp r6, 0x2
- beq _080AFB54
- cmp r6, 0x2
- bgt _080AFB30
- cmp r6, 0x1
- beq _080AFB36
- b _080AFB8C
-_080AFB30:
- cmp r6, 0x3
- beq _080AFB6C
- b _080AFB8C
-_080AFB36:
- ldr r0, _080AFB48
- str r0, [sp, 0x8]
- ldr r7, _080AFB4C
- ldr r2, _080AFB50
- str r2, [sp, 0xC]
- adds r0, 0x4
- str r0, [sp, 0x10]
- adds r2, 0x2
- b _080AFB9C
- .align 2, 0
-_080AFB48: .4byte 0x04000060
-_080AFB4C: .4byte 0x04000062
-_080AFB50: .4byte 0x04000063
-_080AFB54:
- ldr r0, _080AFB60
- str r0, [sp, 0x8]
- ldr r7, _080AFB64
- ldr r2, _080AFB68
- b _080AFB94
- .align 2, 0
-_080AFB60: .4byte 0x04000061
-_080AFB64: .4byte 0x04000068
-_080AFB68: .4byte 0x04000069
-_080AFB6C:
- ldr r0, _080AFB80
- str r0, [sp, 0x8]
- ldr r7, _080AFB84
- ldr r2, _080AFB88
- str r2, [sp, 0xC]
- adds r0, 0x4
- str r0, [sp, 0x10]
- adds r2, 0x2
- b _080AFB9C
- .align 2, 0
-_080AFB80: .4byte 0x04000070
-_080AFB84: .4byte 0x04000072
-_080AFB88: .4byte 0x04000073
-_080AFB8C:
- ldr r0, _080AFBEC
- str r0, [sp, 0x8]
- ldr r7, _080AFBF0
- ldr r2, _080AFBF4
-_080AFB94:
- str r2, [sp, 0xC]
- adds r0, 0xB
- str r0, [sp, 0x10]
- adds r2, 0x4
-_080AFB9C:
- str r2, [sp, 0x14]
- ldr r0, [sp, 0x4]
- ldrb r0, [r0, 0xA]
- str r0, [sp]
- ldr r2, [sp, 0xC]
- ldrb r0, [r2]
- mov r8, r0
- adds r2, r1, 0
- movs r0, 0x80
- ands r0, r2
- cmp r0, 0
- beq _080AFC92
- movs r3, 0x40
- adds r0, r3, 0
- ands r0, r2
- lsls r0, 24
- lsrs r5, r0, 24
- adds r0, r6, 0x1
- mov r10, r0
- movs r1, 0x40
- adds r1, r4
- mov r9, r1
- cmp r5, 0
- bne _080AFCB6
- movs r0, 0x3
- strb r0, [r4]
- strb r0, [r4, 0x1D]
- adds r0, r4, 0
- str r3, [sp, 0x18]
- bl sub_80AFA74
- ldr r3, [sp, 0x18]
- cmp r6, 0x2
- beq _080AFC04
- cmp r6, 0x2
- bgt _080AFBF8
- cmp r6, 0x1
- beq _080AFBFE
- b _080AFC58
- .align 2, 0
-_080AFBEC: .4byte 0x04000071
-_080AFBF0: .4byte 0x04000078
-_080AFBF4: .4byte 0x04000079
-_080AFBF8:
- cmp r6, 0x3
- beq _080AFC10
- b _080AFC58
-_080AFBFE:
- ldrb r0, [r4, 0x1F]
- ldr r2, [sp, 0x8]
- strb r0, [r2]
-_080AFC04:
- ldr r0, [r4, 0x24]
- lsls r0, 6
- ldrb r1, [r4, 0x1E]
- adds r0, r1, r0
- strb r0, [r7]
- b _080AFC64
-_080AFC10:
- ldr r1, [r4, 0x24]
- ldr r0, [r4, 0x28]
- cmp r1, r0
- beq _080AFC38
- ldr r2, [sp, 0x8]
- strb r3, [r2]
- ldr r1, _080AFC4C
- ldr r2, [r4, 0x24]
- ldr r0, [r2]
- str r0, [r1]
- adds r1, 0x4
- ldr r0, [r2, 0x4]
- str r0, [r1]
- adds r1, 0x4
- ldr r0, [r2, 0x8]
- str r0, [r1]
- adds r1, 0x4
- ldr r0, [r2, 0xC]
- str r0, [r1]
- str r2, [r4, 0x28]
-_080AFC38:
- ldr r0, [sp, 0x8]
- strb r5, [r0]
- ldrb r0, [r4, 0x1E]
- strb r0, [r7]
- ldrb r0, [r4, 0x1E]
- cmp r0, 0
- beq _080AFC50
- movs r0, 0xC0
- b _080AFC72
- .align 2, 0
-_080AFC4C: .4byte 0x04000090
-_080AFC50:
- movs r1, 0x80
- negs r1, r1
- strb r1, [r4, 0x1A]
- b _080AFC74
-_080AFC58:
- ldrb r0, [r4, 0x1E]
- strb r0, [r7]
- ldr r0, [r4, 0x24]
- lsls r0, 3
- ldr r2, [sp, 0x10]
- strb r0, [r2]
-_080AFC64:
- ldrb r0, [r4, 0x4]
- adds r0, 0x8
- mov r8, r0
- ldrb r0, [r4, 0x1E]
- cmp r0, 0
- beq _080AFC72
- movs r0, 0x40
-_080AFC72:
- strb r0, [r4, 0x1A]
-_080AFC74:
- ldrb r1, [r4, 0x4]
- movs r2, 0
- strb r1, [r4, 0xB]
- movs r0, 0xFF
- ands r0, r1
- adds r1, r6, 0x1
- mov r10, r1
- movs r1, 0x40
- adds r1, r4
- mov r9, r1
- cmp r0, 0
- bne _080AFC8E
- b _080AFDCA
-_080AFC8E:
- strb r2, [r4, 0x9]
- b _080AFDF8
-_080AFC92:
- movs r0, 0x4
- ands r0, r2
- cmp r0, 0
- beq _080AFCC4
- ldrb r0, [r4, 0xD]
- subs r0, 0x1
- strb r0, [r4, 0xD]
- movs r2, 0xFF
- ands r0, r2
- lsls r0, 24
- adds r1, r6, 0x1
- mov r10, r1
- movs r2, 0x40
- adds r2, r4
- mov r9, r2
- cmp r0, 0
- ble _080AFCB6
- b _080AFE0A
-_080AFCB6:
- lsls r0, r6, 24
- lsrs r0, 24
- bl sub_80AFA24
- movs r0, 0
- strb r0, [r4]
- b _080AFF08
-_080AFCC4:
- movs r0, 0x40
- ands r0, r1
- adds r2, r6, 0x1
- mov r10, r2
- movs r2, 0x40
- adds r2, r4
- mov r9, r2
- cmp r0, 0
- beq _080AFD04
- movs r0, 0x3
- ands r0, r1
- cmp r0, 0
- beq _080AFD04
- movs r0, 0xFC
- ands r0, r1
- movs r2, 0
- strb r0, [r4]
- ldrb r1, [r4, 0x7]
- strb r1, [r4, 0xB]
- movs r0, 0xFF
- ands r0, r1
- cmp r0, 0
- beq _080AFD36
- movs r0, 0x1
- ldrb r1, [r4, 0x1D]
- orrs r0, r1
- strb r0, [r4, 0x1D]
- cmp r6, 0x3
- beq _080AFDF8
- ldrb r2, [r4, 0x7]
- mov r8, r2
- b _080AFDF8
-_080AFD04:
- ldrb r0, [r4, 0xB]
- cmp r0, 0
- bne _080AFDF8
- cmp r6, 0x3
- bne _080AFD16
- movs r0, 0x1
- ldrb r1, [r4, 0x1D]
- orrs r0, r1
- strb r0, [r4, 0x1D]
-_080AFD16:
- adds r0, r4, 0
- bl sub_80AFA74
- movs r0, 0x3
- ldrb r2, [r4]
- ands r0, r2
- cmp r0, 0
- bne _080AFD6A
- ldrb r0, [r4, 0x9]
- subs r0, 0x1
- strb r0, [r4, 0x9]
- movs r1, 0xFF
- ands r0, r1
- lsls r0, 24
- cmp r0, 0
- bgt _080AFD66
-_080AFD36:
- ldrb r2, [r4, 0xC]
- ldrb r1, [r4, 0xA]
- adds r0, r2, 0
- muls r0, r1
- adds r0, 0xFF
- asrs r0, 8
- movs r1, 0
- strb r0, [r4, 0x9]
- lsls r0, 24
- cmp r0, 0
- beq _080AFCB6
- movs r0, 0x4
- ldrb r2, [r4]
- orrs r0, r2
- strb r0, [r4]
- movs r0, 0x1
- ldrb r1, [r4, 0x1D]
- orrs r0, r1
- strb r0, [r4, 0x1D]
- cmp r6, 0x3
- beq _080AFE0A
- movs r2, 0x8
- mov r8, r2
- b _080AFE0A
-_080AFD66:
- ldrb r0, [r4, 0x7]
- b _080AFDF6
-_080AFD6A:
- cmp r0, 0x1
- bne _080AFD76
-_080AFD6E:
- ldrb r0, [r4, 0x19]
- strb r0, [r4, 0x9]
- movs r0, 0x7
- b _080AFDF6
-_080AFD76:
- cmp r0, 0x2
- bne _080AFDBA
- ldrb r0, [r4, 0x9]
- subs r0, 0x1
- strb r0, [r4, 0x9]
- movs r1, 0xFF
- ands r0, r1
- lsls r0, 24
- ldrb r2, [r4, 0x19]
- lsls r1, r2, 24
- cmp r0, r1
- bgt _080AFDB6
-_080AFD8E:
- ldrb r0, [r4, 0x6]
- cmp r0, 0
- bne _080AFD9E
- movs r0, 0xFC
- ldrb r1, [r4]
- ands r0, r1
- strb r0, [r4]
- b _080AFD36
-_080AFD9E:
- ldrb r0, [r4]
- subs r0, 0x1
- strb r0, [r4]
- movs r0, 0x1
- ldrb r2, [r4, 0x1D]
- orrs r0, r2
- strb r0, [r4, 0x1D]
- cmp r6, 0x3
- beq _080AFD6E
- movs r0, 0x8
- mov r8, r0
- b _080AFD6E
-_080AFDB6:
- ldrb r0, [r4, 0x5]
- b _080AFDF6
-_080AFDBA:
- ldrb r0, [r4, 0x9]
- adds r0, 0x1
- strb r0, [r4, 0x9]
- movs r1, 0xFF
- ands r0, r1
- ldrb r2, [r4, 0xA]
- cmp r0, r2
- bcc _080AFDF4
-_080AFDCA:
- ldrb r0, [r4]
- subs r0, 0x1
- movs r2, 0
- strb r0, [r4]
- ldrb r1, [r4, 0x5]
- strb r1, [r4, 0xB]
- movs r0, 0xFF
- ands r0, r1
- cmp r0, 0
- beq _080AFD8E
- movs r0, 0x1
- ldrb r1, [r4, 0x1D]
- orrs r0, r1
- strb r0, [r4, 0x1D]
- ldrb r0, [r4, 0xA]
- strb r0, [r4, 0x9]
- cmp r6, 0x3
- beq _080AFDF8
- ldrb r2, [r4, 0x5]
- mov r8, r2
- b _080AFDF8
-_080AFDF4:
- ldrb r0, [r4, 0x4]
-_080AFDF6:
- strb r0, [r4, 0xB]
-_080AFDF8:
- ldrb r0, [r4, 0xB]
- subs r0, 0x1
- strb r0, [r4, 0xB]
- ldr r0, [sp]
- cmp r0, 0
- bne _080AFE0A
- subs r0, 0x1
- str r0, [sp]
- b _080AFD04
-_080AFE0A:
- movs r0, 0x2
- ldrb r1, [r4, 0x1D]
- ands r0, r1
- cmp r0, 0
- beq _080AFE82
- cmp r6, 0x3
- bgt _080AFE4A
- movs r0, 0x8
- ldrb r2, [r4, 0x1]
- ands r0, r2
- cmp r0, 0
- beq _080AFE4A
- ldr r0, _080AFE34
- ldrb r0, [r0]
- cmp r0, 0x3F
- bgt _080AFE3C
- ldr r0, [r4, 0x20]
- adds r0, 0x2
- ldr r1, _080AFE38
- b _080AFE46
- .align 2, 0
-_080AFE34: .4byte 0x04000089
-_080AFE38: .4byte 0x000007fc
-_080AFE3C:
- cmp r0, 0x7F
- bgt _080AFE4A
- ldr r0, [r4, 0x20]
- adds r0, 0x1
- ldr r1, _080AFE58
-_080AFE46:
- ands r0, r1
- str r0, [r4, 0x20]
-_080AFE4A:
- cmp r6, 0x4
- beq _080AFE5C
- ldr r0, [r4, 0x20]
- ldr r1, [sp, 0x10]
- strb r0, [r1]
- b _080AFE6A
- .align 2, 0
-_080AFE58: .4byte 0x000007fe
-_080AFE5C:
- ldr r2, [sp, 0x10]
- ldrb r0, [r2]
- movs r1, 0x8
- ands r1, r0
- ldr r0, [r4, 0x20]
- orrs r0, r1
- strb r0, [r2]
-_080AFE6A:
- movs r0, 0xC0
- ldrb r1, [r4, 0x1A]
- ands r0, r1
- adds r1, r4, 0
- adds r1, 0x21
- ldrb r1, [r1]
- adds r0, r1, r0
- strb r0, [r4, 0x1A]
- movs r2, 0xFF
- ands r0, r2
- ldr r1, [sp, 0x14]
- strb r0, [r1]
-_080AFE82:
- movs r0, 0x1
- ldrb r2, [r4, 0x1D]
- ands r0, r2
- cmp r0, 0
- beq _080AFF08
- ldr r1, _080AFECC
- ldrb r0, [r1]
- ldrb r2, [r4, 0x1C]
- bics r0, r2
- ldrb r2, [r4, 0x1B]
- orrs r0, r2
- strb r0, [r1]
- cmp r6, 0x3
- bne _080AFED4
- ldr r0, _080AFED0
- ldrb r1, [r4, 0x9]
- adds r0, r1, r0
- ldrb r0, [r0]
- ldr r2, [sp, 0xC]
- strb r0, [r2]
- movs r1, 0x80
- adds r0, r1, 0
- ldrb r2, [r4, 0x1A]
- ands r0, r2
- cmp r0, 0
- beq _080AFF08
- ldr r0, [sp, 0x8]
- strb r1, [r0]
- ldrb r0, [r4, 0x1A]
- ldr r1, [sp, 0x14]
- strb r0, [r1]
- movs r0, 0x7F
- ldrb r2, [r4, 0x1A]
- ands r0, r2
- strb r0, [r4, 0x1A]
- b _080AFF08
- .align 2, 0
-_080AFECC: .4byte 0x04000081
-_080AFED0: .4byte gUnknown_826FBF0
-_080AFED4:
- movs r0, 0xF
- mov r1, r8
- ands r1, r0
- mov r8, r1
- ldrb r2, [r4, 0x9]
- lsls r0, r2, 4
- add r0, r8
- ldr r1, [sp, 0xC]
- strb r0, [r1]
- movs r2, 0x80
- ldrb r0, [r4, 0x1A]
- orrs r0, r2
- ldr r1, [sp, 0x14]
- strb r0, [r1]
- cmp r6, 0x1
- bne _080AFF08
- ldr r0, [sp, 0x8]
- ldrb r1, [r0]
- movs r0, 0x8
- ands r0, r1
- cmp r0, 0
- bne _080AFF08
- ldrb r0, [r4, 0x1A]
- orrs r0, r2
- ldr r1, [sp, 0x14]
- strb r0, [r1]
-_080AFF08:
- movs r0, 0
- strb r0, [r4, 0x1D]
-_080AFF0C:
- mov r6, r10
- mov r4, r9
- cmp r6, 0x4
- bgt _080AFF16
- b _080AFB0C
-_080AFF16:
- add sp, 0x1C
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_80AFADC
-
- thumb_func_start sub_80AFF28
-sub_80AFF28:
- push {r4,lr}
- adds r2, r0, 0
- lsls r1, 16
- lsrs r1, 16
- ldr r3, [r2, 0x34]
- ldr r0, _080AFF4C
- cmp r3, r0
- bne _080AFF44
- strh r1, [r2, 0x1E]
- ldrh r4, [r2, 0x1C]
- adds r0, r1, 0
- muls r0, r4
- asrs r0, 8
- strh r0, [r2, 0x20]
-_080AFF44:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080AFF4C: .4byte 0x68736d53
- thumb_func_end sub_80AFF28
-
- thumb_func_start sub_80AFF50
-sub_80AFF50:
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- adds r4, r0, 0
- lsls r1, 16
- lsrs r7, r1, 16
- lsls r6, r2, 16
- ldr r3, [r4, 0x34]
- ldr r0, _080AFFB4
- cmp r3, r0
- bne _080AFFA8
- adds r0, r3, 0x1
- str r0, [r4, 0x34]
- ldrb r2, [r4, 0x8]
- ldr r1, [r4, 0x2C]
- movs r5, 0x1
- cmp r2, 0
- ble _080AFFA4
- movs r0, 0x80
- mov r8, r0
- lsrs r6, 18
- movs r0, 0x3
- mov r12, r0
-_080AFF80:
- adds r0, r7, 0
- ands r0, r5
- cmp r0, 0
- beq _080AFF9A
- ldrb r3, [r1]
- mov r0, r8
- ands r0, r3
- cmp r0, 0
- beq _080AFF9A
- strb r6, [r1, 0x13]
- mov r0, r12
- orrs r0, r3
- strb r0, [r1]
-_080AFF9A:
- subs r2, 0x1
- adds r1, 0x50
- lsls r5, 1
- cmp r2, 0
- bgt _080AFF80
-_080AFFA4:
- ldr r0, _080AFFB4
- str r0, [r4, 0x34]
-_080AFFA8:
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080AFFB4: .4byte 0x68736d53
- thumb_func_end sub_80AFF50
-
- thumb_func_start sub_80AFFB8
-sub_80AFFB8:
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- adds r4, r0, 0
- lsls r1, 16
- lsrs r1, 16
- mov r12, r1
- lsls r2, 16
- lsrs r6, r2, 16
- ldr r3, [r4, 0x34]
- ldr r0, _080B0028
- cmp r3, r0
- bne _080B001A
- adds r0, r3, 0x1
- str r0, [r4, 0x34]
- ldrb r2, [r4, 0x8]
- ldr r3, [r4, 0x2C]
- movs r5, 0x1
- cmp r2, 0
- ble _080B0016
- movs r0, 0x80
- mov r9, r0
- lsls r0, r6, 16
- asrs r7, r0, 24
- movs r0, 0xC
- mov r8, r0
-_080AFFF0:
- mov r0, r12
- ands r0, r5
- cmp r0, 0
- beq _080B000C
- ldrb r1, [r3]
- mov r0, r9
- ands r0, r1
- cmp r0, 0
- beq _080B000C
- strb r7, [r3, 0xB]
- strb r6, [r3, 0xD]
- mov r0, r8
- orrs r0, r1
- strb r0, [r3]
-_080B000C:
- subs r2, 0x1
- adds r3, 0x50
- lsls r5, 1
- cmp r2, 0
- bgt _080AFFF0
-_080B0016:
- ldr r0, _080B0028
- str r0, [r4, 0x34]
-_080B001A:
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080B0028: .4byte 0x68736d53
- thumb_func_end sub_80AFFB8
-
- thumb_func_start sub_80B002C
-sub_80B002C:
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- adds r4, r0, 0
- lsls r1, 16
- lsrs r7, r1, 16
- lsls r2, 24
- lsrs r6, r2, 24
- ldr r3, [r4, 0x34]
- ldr r0, _080B0090
- cmp r3, r0
- bne _080B0084
- adds r0, r3, 0x1
- str r0, [r4, 0x34]
- ldrb r2, [r4, 0x8]
- ldr r1, [r4, 0x2C]
- movs r5, 0x1
- cmp r2, 0
- ble _080B0080
- movs r0, 0x80
- mov r8, r0
- movs r0, 0x3
- mov r12, r0
-_080B005C:
- adds r0, r7, 0
- ands r0, r5
- cmp r0, 0
- beq _080B0076
- ldrb r3, [r1]
- mov r0, r8
- ands r0, r3
- cmp r0, 0
- beq _080B0076
- strb r6, [r1, 0x15]
- mov r0, r12
- orrs r0, r3
- strb r0, [r1]
-_080B0076:
- subs r2, 0x1
- adds r1, 0x50
- lsls r5, 1
- cmp r2, 0
- bgt _080B005C
-_080B0080:
- ldr r0, _080B0090
- str r0, [r4, 0x34]
-_080B0084:
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080B0090: .4byte 0x68736d53
- thumb_func_end sub_80B002C
-
- thumb_func_start sub_80B0094
-sub_80B0094:
- adds r1, r0, 0
- movs r2, 0
- movs r0, 0
- strb r0, [r1, 0x1A]
- strb r0, [r1, 0x16]
- ldrb r0, [r1, 0x18]
- cmp r0, 0
- bne _080B00A8
- movs r0, 0xC
- b _080B00AA
-_080B00A8:
- movs r0, 0x3
-_080B00AA:
- ldrb r2, [r1]
- orrs r0, r2
- strb r0, [r1]
- bx lr
- thumb_func_end sub_80B0094
-
- thumb_func_start sub_80B00B4
-sub_80B00B4:
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- adds r6, r0, 0
- lsls r1, 16
- lsrs r1, 16
- mov r10, r1
- lsls r2, 24
- lsrs r2, 24
- mov r8, r2
- ldr r1, [r6, 0x34]
- ldr r0, _080B0124
- cmp r1, r0
- bne _080B0114
- adds r0, r1, 0x1
- str r0, [r6, 0x34]
- ldrb r5, [r6, 0x8]
- ldr r4, [r6, 0x2C]
- movs r7, 0x1
- cmp r5, 0
- ble _080B0110
- mov r9, r8
-_080B00E4:
- mov r0, r10
- ands r0, r7
- cmp r0, 0
- beq _080B0106
- movs r0, 0x80
- ldrb r1, [r4]
- ands r0, r1
- cmp r0, 0
- beq _080B0106
- mov r0, r8
- strb r0, [r4, 0x17]
- mov r1, r9
- cmp r1, 0
- bne _080B0106
- adds r0, r4, 0
- bl sub_80B0094
-_080B0106:
- subs r5, 0x1
- adds r4, 0x50
- lsls r7, 1
- cmp r5, 0
- bgt _080B00E4
-_080B0110:
- ldr r0, _080B0124
- str r0, [r6, 0x34]
-_080B0114:
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080B0124: .4byte 0x68736d53
- thumb_func_end sub_80B00B4
-
- thumb_func_start sub_80B0128
-sub_80B0128:
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- adds r6, r0, 0
- lsls r1, 16
- lsrs r1, 16
- mov r10, r1
- lsls r2, 24
- lsrs r2, 24
- mov r8, r2
- ldr r1, [r6, 0x34]
- ldr r0, _080B0198
- cmp r1, r0
- bne _080B0188
- adds r0, r1, 0x1
- str r0, [r6, 0x34]
- ldrb r5, [r6, 0x8]
- ldr r4, [r6, 0x2C]
- movs r7, 0x1
- cmp r5, 0
- ble _080B0184
- mov r9, r8
-_080B0158:
- mov r0, r10
- ands r0, r7
- cmp r0, 0
- beq _080B017A
- movs r0, 0x80
- ldrb r1, [r4]
- ands r0, r1
- cmp r0, 0
- beq _080B017A
- mov r0, r8
- strb r0, [r4, 0x19]
- mov r1, r9
- cmp r1, 0
- bne _080B017A
- adds r0, r4, 0
- bl sub_80B0094
-_080B017A:
- subs r5, 0x1
- adds r4, 0x50
- lsls r7, 1
- cmp r5, 0
- bgt _080B0158
-_080B0184:
- ldr r0, _080B0198
- str r0, [r6, 0x34]
-_080B0188:
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080B0198: .4byte 0x68736d53
- thumb_func_end sub_80B0128
-
- thumb_func_start sub_80B019C
-sub_80B019C:
- push {r4-r6,lr}
- adds r4, r0, 0
- adds r6, r1, 0
- ldr r1, [r6, 0x40]
- ldrb r5, [r1]
- adds r2, r1, 0x1
- str r2, [r6, 0x40]
- ldr r0, [r4, 0x18]
- ldrb r1, [r1, 0x1]
- adds r3, r1, r0
- adds r0, r2, 0x1
- str r0, [r6, 0x40]
- ldrb r2, [r2, 0x1]
- adds r0, 0x1
- str r0, [r6, 0x40]
- cmp r5, 0x11
- bls _080B01C0
- b _080B02EE
-_080B01C0:
- lsls r0, r5, 2
- ldr r1, _080B01CC
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_080B01CC: .4byte _080B01D0
- .align 2, 0
-_080B01D0:
- .4byte _080B0218
- .4byte _080B021C
- .4byte _080B0224
- .4byte _080B022C
- .4byte _080B0236
- .4byte _080B0244
- .4byte _080B0252
- .4byte _080B025A
- .4byte _080B0262
- .4byte _080B026A
- .4byte _080B0272
- .4byte _080B027A
- .4byte _080B0282
- .4byte _080B0290
- .4byte _080B029E
- .4byte _080B02AC
- .4byte _080B02BA
- .4byte _080B02C8
-_080B0218:
- strb r2, [r3]
- b _080B02EE
-_080B021C:
- ldrb r1, [r3]
- adds r0, r1, r2
- strb r0, [r3]
- b _080B02EE
-_080B0224:
- ldrb r1, [r3]
- subs r0, r1, r2
- strb r0, [r3]
- b _080B02EE
-_080B022C:
- ldr r0, [r4, 0x18]
- adds r0, r2
- ldrb r0, [r0]
- strb r0, [r3]
- b _080B02EE
-_080B0236:
- ldr r0, [r4, 0x18]
- adds r0, r2
- ldrb r1, [r3]
- ldrb r0, [r0]
- adds r0, r1, r0
- strb r0, [r3]
- b _080B02EE
-_080B0244:
- ldr r0, [r4, 0x18]
- adds r0, r2
- ldrb r1, [r3]
- ldrb r0, [r0]
- subs r0, r1, r0
- strb r0, [r3]
- b _080B02EE
-_080B0252:
- ldrb r3, [r3]
- cmp r3, r2
- beq _080B02D4
- b _080B02E8
-_080B025A:
- ldrb r3, [r3]
- cmp r3, r2
- bne _080B02D4
- b _080B02E8
-_080B0262:
- ldrb r3, [r3]
- cmp r3, r2
- bhi _080B02D4
- b _080B02E8
-_080B026A:
- ldrb r3, [r3]
- cmp r3, r2
- bcs _080B02D4
- b _080B02E8
-_080B0272:
- ldrb r3, [r3]
- cmp r3, r2
- bls _080B02D4
- b _080B02E8
-_080B027A:
- ldrb r3, [r3]
- cmp r3, r2
- bcc _080B02D4
- b _080B02E8
-_080B0282:
- ldr r0, [r4, 0x18]
- adds r0, r2
- ldrb r3, [r3]
- ldrb r0, [r0]
- cmp r3, r0
- beq _080B02D4
- b _080B02E8
-_080B0290:
- ldr r0, [r4, 0x18]
- adds r0, r2
- ldrb r3, [r3]
- ldrb r0, [r0]
- cmp r3, r0
- bne _080B02D4
- b _080B02E8
-_080B029E:
- ldr r0, [r4, 0x18]
- adds r0, r2
- ldrb r3, [r3]
- ldrb r0, [r0]
- cmp r3, r0
- bhi _080B02D4
- b _080B02E8
-_080B02AC:
- ldr r0, [r4, 0x18]
- adds r0, r2
- ldrb r3, [r3]
- ldrb r0, [r0]
- cmp r3, r0
- bcs _080B02D4
- b _080B02E8
-_080B02BA:
- ldr r0, [r4, 0x18]
- adds r0, r2
- ldrb r3, [r3]
- ldrb r0, [r0]
- cmp r3, r0
- bls _080B02D4
- b _080B02E8
-_080B02C8:
- ldr r0, [r4, 0x18]
- adds r0, r2
- ldrb r3, [r3]
- ldrb r0, [r0]
- cmp r3, r0
- bcs _080B02E8
-_080B02D4:
- ldr r0, _080B02E4
- ldr r2, [r0]
- adds r0, r4, 0
- adds r1, r6, 0
- bl _call_via_r2
- b _080B02EE
- .align 2, 0
-_080B02E4: .4byte gUnknown_203AE84
-_080B02E8:
- ldr r0, [r6, 0x40]
- adds r0, 0x4
- str r0, [r6, 0x40]
-_080B02EE:
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end sub_80B019C
-
- thumb_func_start sub_80B02F4
-sub_80B02F4:
- push {lr}
- ldr r2, [r1, 0x40]
- ldrb r3, [r2]
- adds r2, 0x1
- str r2, [r1, 0x40]
- ldr r2, _080B0310
- lsls r3, 2
- adds r3, r2
- ldr r2, [r3]
- bl _call_via_r2
- pop {r0}
- bx r0
- .align 2, 0
-_080B0310: .4byte gUnknown_826FC34
- thumb_func_end sub_80B02F4
-
- thumb_func_start sub_80B0314
-sub_80B0314:
- push {lr}
- ldr r2, _080B0324
- ldr r2, [r2]
- bl _call_via_r2
- pop {r0}
- bx r0
- .align 2, 0
-_080B0324: .4byte gUnknown_203AE80
- thumb_func_end sub_80B0314
-
- thumb_func_start sub_80B0328
-sub_80B0328:
- push {r4,lr}
- ldr r2, [r1, 0x40]
- ldr r0, _080B0360
- ands r4, r0
- ldrb r0, [r2]
- orrs r4, r0
- ldrb r0, [r2, 0x1]
- lsls r3, r0, 8
- ldr r0, _080B0364
- ands r4, r0
- orrs r4, r3
- ldrb r0, [r2, 0x2]
- lsls r3, r0, 16
- ldr r0, _080B0368
- ands r4, r0
- orrs r4, r3
- ldrb r0, [r2, 0x3]
- lsls r3, r0, 24
- ldr r0, _080B036C
- ands r4, r0
- orrs r4, r3
- str r4, [r1, 0x28]
- adds r2, 0x4
- str r2, [r1, 0x40]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080B0360: .4byte 0xffffff00
-_080B0364: .4byte 0xffff00ff
-_080B0368: .4byte 0xff00ffff
-_080B036C: .4byte 0x00ffffff
- thumb_func_end sub_80B0328
-
- thumb_func_start sub_80B0370
-sub_80B0370:
- ldr r0, [r1, 0x40]
- ldrb r2, [r0]
- adds r0, r1, 0
- adds r0, 0x24
- strb r2, [r0]
- ldr r0, [r1, 0x40]
- adds r0, 0x1
- str r0, [r1, 0x40]
- bx lr
- thumb_func_end sub_80B0370
-
- thumb_func_start sub_80B0384
-sub_80B0384:
- ldr r0, [r1, 0x40]
- ldrb r2, [r0]
- adds r0, r1, 0
- adds r0, 0x2C
- strb r2, [r0]
- ldr r0, [r1, 0x40]
- adds r0, 0x1
- str r0, [r1, 0x40]
- bx lr
- thumb_func_end sub_80B0384
-
- thumb_func_start sub_80B0398
-sub_80B0398:
- ldr r0, [r1, 0x40]
- ldrb r0, [r0]
- adds r2, r1, 0
- adds r2, 0x2D
- strb r0, [r2]
- ldr r0, [r1, 0x40]
- adds r0, 0x1
- str r0, [r1, 0x40]
- bx lr
- thumb_func_end sub_80B0398
-
- thumb_func_start sub_80B03AC
-sub_80B03AC:
- ldr r0, [r1, 0x40]
- ldrb r0, [r0]
- adds r2, r1, 0
- adds r2, 0x2E
- strb r0, [r2]
- ldr r0, [r1, 0x40]
- adds r0, 0x1
- str r0, [r1, 0x40]
- bx lr
- thumb_func_end sub_80B03AC
-
- thumb_func_start sub_80B03C0
-sub_80B03C0:
- ldr r0, [r1, 0x40]
- ldrb r0, [r0]
- adds r2, r1, 0
- adds r2, 0x2F
- strb r0, [r2]
- ldr r0, [r1, 0x40]
- adds r0, 0x1
- str r0, [r1, 0x40]
- bx lr
- thumb_func_end sub_80B03C0
-
- thumb_func_start sub_80B03D4
-sub_80B03D4:
- ldr r0, [r1, 0x40]
- ldrb r2, [r0]
- strb r2, [r1, 0x1E]
- adds r0, 0x1
- str r0, [r1, 0x40]
- bx lr
- thumb_func_end sub_80B03D4
-
- thumb_func_start sub_80B03E0
-sub_80B03E0:
- ldr r0, [r1, 0x40]
- ldrb r2, [r0]
- strb r2, [r1, 0x1F]
- adds r0, 0x1
- str r0, [r1, 0x40]
- bx lr
- thumb_func_end sub_80B03E0
-
- thumb_func_start sub_80B03EC
-sub_80B03EC:
- ldr r0, [r1, 0x40]
- ldrb r0, [r0]
- adds r2, r1, 0
- adds r2, 0x26
- strb r0, [r2]
- ldr r0, [r1, 0x40]
- adds r0, 0x1
- str r0, [r1, 0x40]
- bx lr
- thumb_func_end sub_80B03EC
-
- thumb_func_start ply_xswee
-ply_xswee:
- ldr r0, [r1, 0x40]
- ldrb r0, [r0]
- adds r2, r1, 0
- adds r2, 0x27
- strb r0, [r2]
- ldr r0, [r1, 0x40]
- adds r0, 0x1
- str r0, [r1, 0x40]
- bx lr
- thumb_func_end ply_xswee
-
- thumb_func_start nullsub_139
-nullsub_139:
- bx lr
- thumb_func_end nullsub_139
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/m4a_1.s b/asm/m4a_1.s
new file mode 100644
index 0000000..8c1d78a
--- /dev/null
+++ b/asm/m4a_1.s
@@ -0,0 +1,1647 @@
+ .include "asm/macros.inc"
+ .include "constants/gba_constants.inc"
+ .include "constants/m4a_constants.inc"
+
+ .syntax unified
+
+ .text
+
+ thumb_func_start umul3232H32
+umul3232H32:
+ adr r2, __umul3232H32
+ bx r2
+ .arm
+__umul3232H32:
+ umull r2, r3, r0, r1
+ add r0, r3, 0
+ bx lr
+ thumb_func_end umul3232H32
+
+ thumb_func_start SoundMain
+SoundMain:
+ ldr r0, lt_SOUND_INFO_PTR
+ ldr r0, [r0]
+ ldr r2, lt_ID_NUMBER
+ ldr r3, [r0, o_SoundInfo_ident]
+ cmp r2, r3
+ beq SoundMain_1
+ bx lr @ Exit the function if ident doesn't match ID_NUMBER.
+SoundMain_1:
+ adds r3, 1
+ str r3, [r0, o_SoundInfo_ident]
+ push {r4-r7,lr}
+ mov r1, r8
+ mov r2, r9
+ mov r3, r10
+ mov r4, r11
+ push {r0-r4}
+ sub sp, 0x18
+ ldrb r1, [r0, o_SoundInfo_maxLines]
+ cmp r1, 0 @ if maxLines is 0, there is no maximum
+ beq SoundMain_3
+ ldr r2, lt_REG_VCOUNT
+ ldrb r2, [r2]
+ cmp r2, VCOUNT_VBLANK
+ bhs SoundMain_2
+ adds r2, TOTAL_SCANLINES
+SoundMain_2:
+ adds r1, r2
+SoundMain_3:
+ str r1, [sp, 0x14]
+ ldr r3, [r0, o_SoundInfo_func]
+ cmp r3, 0
+ beq SoundMain_4
+ ldr r0, [r0, o_SoundInfo_intp]
+ bl call_r3
+ ldr r0, [sp, 0x18]
+SoundMain_4:
+ ldr r3, [r0, o_SoundInfo_CgbSound]
+ bl call_r3
+ ldr r0, [sp, 0x18]
+ ldr r3, [r0, o_SoundInfo_pcmSamplesPerVBlank]
+ mov r8, r3
+ ldr r5, lt_o_SoundInfo_pcmBuffer
+ adds r5, r0
+ ldrb r4, [r0, o_SoundInfo_pcmDmaCounter]
+ subs r7, r4, 1
+ bls SoundMain_5
+ ldrb r1, [r0, o_SoundInfo_pcmDmaPeriod]
+ subs r1, r7
+ mov r2, r8
+ muls r2, r1
+ adds r5, r2
+SoundMain_5:
+ str r5, [sp, 0x8]
+ ldr r6, lt_PCM_DMA_BUF_SIZE
+ ldr r3, lt_SoundMainRAM_Buffer
+ bx r3
+
+ .align 2, 0
+lt_SOUND_INFO_PTR: .word SOUND_INFO_PTR
+lt_ID_NUMBER: .word ID_NUMBER
+lt_SoundMainRAM_Buffer: .word SoundMainRAM_Buffer + 1
+lt_REG_VCOUNT: .word REG_VCOUNT
+lt_o_SoundInfo_pcmBuffer: .word o_SoundInfo_pcmBuffer
+lt_PCM_DMA_BUF_SIZE: .word PCM_DMA_BUF_SIZE
+ thumb_func_end SoundMain
+
+ thumb_func_start SoundMainRAM
+SoundMainRAM:
+ ldrb r3, [r0, o_SoundInfo_reverb]
+ cmp r3, 0
+ beq SoundMainRAM_NoReverb
+ adr r1, SoundMainRAM_Reverb
+ bx r1
+ .arm
+SoundMainRAM_Reverb:
+ cmp r4, 0x2
+ addeq r7, r0, o_SoundInfo_pcmBuffer
+ addne r7, r5, r8
+ mov r4, r8
+_080AE314:
+ ldrsb r0, [r5, r6]
+ ldrsb r1, [r5]
+ add r0, r0, r1
+ ldrsb r1, [r7, r6]
+ add r0, r0, r1
+ ldrsb r1, [r7], 0x1
+ add r0, r0, r1
+ mul r1, r0, r3
+ mov r0, r1, asr 9
+ tst r0, 0x80
+ addne r0, r0, 0x1
+ strb r0, [r5, r6]
+ strb r0, [r5], 0x1
+ subs r4, r4, 0x1
+ bgt _080AE314
+ add r0, pc, 0x2F
+ bx r0
+ .thumb
+SoundMainRAM_NoReverb:
+ movs r0, 0
+ mov r1, r8
+ adds r6, r5
+ lsrs r1, 3
+ bcc SoundMainRAM_NoReverb_Ok
+ stm r5!, {r0}
+ stm r6!, {r0}
+SoundMainRAM_NoReverb_Ok:
+ lsrs r1, 1
+ bcc SoundMainRAM_NoReverb_Loop
+ stm r5!, {r0}
+ stm r6!, {r0}
+ stm r5!, {r0}
+ stm r6!, {r0}
+SoundMainRAM_NoReverb_Loop:
+ stm r5!, {r0}
+ stm r6!, {r0}
+ stm r5!, {r0}
+ stm r6!, {r0}
+ stm r5!, {r0}
+ stm r6!, {r0}
+ stm r5!, {r0}
+ stm r6!, {r0}
+ subs r1, 0x1
+ bgt SoundMainRAM_NoReverb_Loop
+_080AE386:
+ ldr r4, [sp, 0x18]
+ ldr r0, [r4, o_SoundInfo_divFreq]
+ mov r12, r0
+ ldrb r0, [r4, o_SoundInfo_maxChans]
+ adds r4, o_SoundInfo_chans
+SoundMainRAM_ChanLoop:
+ str r0, [sp, 0x4]
+ ldr r3, [r4, o_SoundChannel_wav]
+ ldr r0, [sp, 0x14]
+ cmp r0, 0
+ beq _080AE3B0
+ ldr r1, =REG_VCOUNT
+ ldrb r1, [r1]
+ cmp r1, VCOUNT_VBLANK
+ bhs _080AE3A4
+ adds r1, TOTAL_SCANLINES
+_080AE3A4:
+ cmp r1, r0
+ bcc _080AE3B0
+ b _080AE682
+
+ .pool
+
+_080AE3B0:
+ ldrb r6, [r4, o_SoundChannel_status]
+ movs r0, 0xC7
+ tst r0, r6
+ bne _080AE3BA
+ b _080AE678
+_080AE3BA:
+ movs r0, 0x80
+ tst r0, r6
+ beq _080AE3EA
+ movs r0, 0x40
+ tst r0, r6
+ bne _080AE3FA
+ movs r6, 0x3
+ strb r6, [r4, o_SoundChannel_status]
+ adds r0, r3, 0
+ adds r0, 0x10
+ str r0, [r4, o_SoundChannel_cp]
+ ldr r0, [r3, 0xC]
+ str r0, [r4, o_SoundChannel_ct]
+ movs r5, 0
+ strb r5, [r4, o_SoundChannel_ev]
+ str r5, [r4, o_SoundChannel_fw]
+ ldrb r2, [r3, 0x3]
+ movs r0, 0xC0
+ tst r0, r2
+ beq _080AE442
+ movs r0, 0x10
+ orrs r6, r0
+ strb r6, [r4, o_SoundChannel_status]
+ b _080AE442
+_080AE3EA:
+ ldrb r5, [r4, o_SoundChannel_ev]
+ movs r0, 0x4
+ tst r0, r6
+ beq _080AE400
+ ldrb r0, [r4, o_SoundChannel_iel]
+ subs r0, 0x1
+ strb r0, [r4, o_SoundChannel_iel]
+ bhi _080AE450
+_080AE3FA:
+ movs r0, 0
+ strb r0, [r4, o_SoundChannel_status]
+ b _080AE678
+_080AE400:
+ movs r0, 0x40
+ tst r0, r6
+ beq _080AE420
+ ldrb r0, [r4, o_SoundChannel_release]
+ muls r5, r0
+ lsrs r5, 8
+ ldrb r0, [r4, o_SoundChannel_iev]
+ cmp r5, r0
+ bhi _080AE450
+_080AE412:
+ ldrb r5, [r4, o_SoundChannel_iev]
+ cmp r5, 0
+ beq _080AE3FA
+ movs r0, 0x4
+ orrs r6, r0
+ strb r6, [r4, o_SoundChannel_status]
+ b _080AE450
+_080AE420:
+ movs r2, 0x3
+ ands r2, r6
+ cmp r2, 0x2
+ bne _080AE43E
+ ldrb r0, [r4, o_SoundChannel_decay]
+ muls r5, r0
+ lsrs r5, 8
+ ldrb r0, [r4, o_SoundChannel_sustain]
+ cmp r5, r0
+ bhi _080AE450
+ adds r5, r0, 0
+ beq _080AE412
+ subs r6, 0x1
+ strb r6, [r4, o_SoundChannel_status]
+ b _080AE450
+_080AE43E:
+ cmp r2, 0x3
+ bne _080AE450
+_080AE442:
+ ldrb r0, [r4, o_SoundChannel_attack]
+ adds r5, r0
+ cmp r5, 0xFF
+ bcc _080AE450
+ movs r5, 0xFF
+ subs r6, 0x1
+ strb r6, [r4, o_SoundChannel_status]
+_080AE450:
+ strb r5, [r4, o_SoundChannel_ev]
+ ldr r0, [sp, 0x18]
+ ldrb r0, [r0, o_SoundChannel_release]
+ adds r0, 0x1
+ muls r0, r5
+ lsrs r5, r0, 4
+ ldrb r0, [r4, o_SoundChannel_rightVolume]
+ muls r0, r5
+ lsrs r0, 8
+ strb r0, [r4, o_SoundChannel_er]
+ ldrb r0, [r4, o_SoundChannel_leftVolume]
+ muls r0, r5
+ lsrs r0, 8
+ strb r0, [r4, o_SoundChannel_el]
+ movs r0, 0x10
+ ands r0, r6
+ str r0, [sp, 0x10]
+ beq _080AE484
+ adds r0, r3, 0
+ adds r0, 0x10
+ ldr r1, [r3, 0x8]
+ adds r0, r1
+ str r0, [sp, 0xC]
+ ldr r0, [r3, 0xC]
+ subs r0, r1
+ str r0, [sp, 0x10]
+_080AE484:
+ ldr r5, [sp, 0x8]
+ ldr r2, [r4, o_SoundChannel_ct]
+ ldr r3, [r4, o_SoundChannel_cp]
+ adr r0, _080AE490
+ bx r0
+ .arm
+_080AE490:
+ str r8, [sp]
+ ldrb r10, [r4, o_SoundChannel_er]
+ ldrb r11, [r4, o_SoundChannel_el]
+ mov r10, r10, lsl 16
+ mov r11, r11, lsl 16
+ ldrb r0, [r4, o_SoundChannel_type]
+ tst r0, 0x8
+ beq _080AE5D0
+_080AE4B0:
+ cmp r2, 0x4
+ ble _080AE520
+ subs r2, r2, r8
+ movgt lr, 0
+ bgt _080AE4DC
+ mov lr, r8
+ add r2, r2, r8
+ sub r8, r2, 0x4
+ sub lr, lr, r8
+ ands r2, r2, 0x3
+ moveq r2, 0x4
+_080AE4DC:
+ ldr r6, [r5]
+ ldr r7, [r5, 0x630]
+_080AE4E4:
+ ldrsb r0, [r3], 0x1
+ mul r1, r10, r0
+ bic r1, r1, 0xFF0000
+ add r6, r1, r6, ror 8
+ mul r1, r11, r0
+ bic r1, r1, 0xFF0000
+ add r7, r1, r7, ror 8
+ adds r5, r5, 0x40000000
+ bcc _080AE4E4
+ str r7, [r5, 0x630]
+ str r6, [r5], 0x4
+ subs r8, r8, 0x4
+ bgt _080AE4DC
+ adds r8, r8, lr
+ beq _080AE664
+_080AE520:
+ ldr r6, [r5]
+ ldr r7, [r5, 0x630]
+_080AE528:
+ ldrsb r0, [r3], 0x1
+ mul r1, r10, r0
+ bic r1, r1, 0xFF0000
+ add r6, r1, r6, ror 8
+ mul r1, r11, r0
+ bic r1, r1, 0xFF0000
+ add r7, r1, r7, ror 8
+ subs r2, r2, 0x1
+ beq _080AE598
+_080AE54C:
+ adds r5, r5, 0x40000000
+ bcc _080AE528
+ str r7, [r5, 0x630]
+ str r6, [r5], 0x4
+ subs r8, r8, 0x4
+ bgt _080AE4B0
+ b _080AE664
+_080AE568:
+ ldr r0, [sp, 0x18]
+ cmp r0, 0
+ beq _080AE58C
+ ldr r3, [sp, 0x14]
+ rsb r9, r2, 0
+_080AE57C:
+ adds r2, r0, r2
+ bgt _080AE634
+ sub r9, r9, r0
+ b _080AE57C
+_080AE58C:
+ ldmia sp!, {r4,r12}
+ mov r2, 0
+ b _080AE5A8
+_080AE598:
+ ldr r2, [sp, 0x10]
+ cmp r2, 0
+ ldrne r3, [sp, 0xC]
+ bne _080AE54C
+_080AE5A8:
+ strb r2, [r4, o_SoundChannel_status]
+ mov r0, r5, lsr 30
+ bic r5, r5, 0xC0000000
+ rsb r0, r0, 0x3
+ mov r0, r0, lsl 3
+ mov r6, r6, ror r0
+ mov r7, r7, ror r0
+ str r7, [r5, 0x630]
+ str r6, [r5], 0x4
+ b _080AE66C
+_080AE5D0:
+ stmdb sp!, {r4,r12}
+ ldr lr, [r4, o_SoundChannel_fw]
+ ldr r1, [r4, o_SoundChannel_freq]
+ mul r4, r12, r1
+ ldrsb r0, [r3]
+ ldrsb r1, [r3, 0x1]!
+ sub r1, r1, r0
+_080AE5EC:
+ ldr r6, [r5]
+ ldr r7, [r5, 0x630]
+_080AE5F4:
+ mul r9, lr, r1
+ add r9, r0, r9, asr 23
+ mul r12, r10, r9
+ bic r12, r12, 0xFF0000
+ add r6, r12, r6, ror 8
+ mul r12, r11, r9
+ bic r12, r12, 0xFF0000
+ add r7, r12, r7, ror 8
+ add lr, lr, r4
+ movs r9, lr, lsr 23
+ beq _080AE640
+ bic lr, lr, 0x3F800000
+ subs r2, r2, r9
+ ble _080AE568
+ subs r9, r9, 0x1
+ addeq r0, r0, r1
+_080AE634:
+ ldrsbne r0, [r3, r9]!
+ ldrsb r1, [r3, 0x1]!
+ sub r1, r1, r0
+_080AE640:
+ adds r5, r5, 0x40000000
+ bcc _080AE5F4
+ str r7, [r5, 0x630]
+ str r6, [r5], 0x4
+ subs r8, r8, 0x4
+ bgt _080AE5EC
+ sub r3, r3, 0x1
+ ldmia sp!, {r4,r12}
+ str lr, [r4, o_SoundChannel_fw]
+_080AE664:
+ str r2, [r4, o_SoundChannel_ct]
+ str r3, [r4, o_SoundChannel_cp]
+_080AE66C:
+ ldr r8, [sp]
+ add r0, pc, 0x1
+ bx r0
+ .thumb
+_080AE678:
+ ldr r0, [sp, 0x4]
+ subs r0, 0x1
+ ble _080AE682
+ adds r4, SoundChannel_size
+ b SoundMainRAM_ChanLoop
+_080AE682:
+ ldr r0, [sp, 0x18]
+ ldr r3, =ID_NUMBER
+ str r3, [r0]
+ add sp, 0x1C
+ pop {r0-r7}
+ mov r8, r0
+ mov r9, r1
+ mov r10, r2
+ mov r11, r3
+ pop {r3}
+
+call_r3:
+ bx r3
+ .pool
+ thumb_func_end SoundMainRAM
+
+ thumb_func_start SoundMainBTM
+SoundMainBTM:
+ mov r12, r4
+ movs r1, 0
+ movs r2, 0
+ movs r3, 0
+ movs r4, 0
+ stm r0!, {r1-r4}
+ stm r0!, {r1-r4}
+ stm r0!, {r1-r4}
+ stm r0!, {r1-r4}
+ mov r4, r12
+ bx lr
+ thumb_func_end SoundMainBTM
+
+ thumb_func_start RealClearChain
+RealClearChain:
+ ldr r3, [r0, 0x2C]
+ cmp r3, 0
+ beq _080AE6D2
+ ldr r1, [r0, 0x34]
+ ldr r2, [r0, 0x30]
+ cmp r2, 0
+ beq _080AE6C6
+ str r1, [r2, 0x34]
+ b _080AE6C8
+_080AE6C6:
+ str r1, [r3, 0x20]
+_080AE6C8:
+ cmp r1, 0
+ beq _080AE6CE
+ str r2, [r1, 0x30]
+_080AE6CE:
+ movs r1, 0
+ str r1, [r0, 0x2C]
+_080AE6D2:
+ bx lr
+ thumb_func_end RealClearChain
+
+ thumb_func_start ply_fine
+ply_fine:
+ push {r4,r5,lr}
+ adds r5, r1, 0
+ ldr r4, [r5, o_MusicPlayerTrack_chan]
+ cmp r4, 0
+ beq ply_fine_done
+ply_fine_loop:
+ ldrb r1, [r4]
+ movs r0, 0xC7
+ tst r0, r1
+ beq ply_fine_ok
+ movs r0, 0x40
+ orrs r1, r0
+ strb r1, [r4]
+ply_fine_ok:
+ adds r0, r4, 0
+ bl RealClearChain
+ ldr r4, [r4, 0x34]
+ cmp r4, 0
+ bne ply_fine_loop
+ply_fine_done:
+ movs r0, 0
+ strb r0, [r5]
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ thumb_func_end ply_fine
+
+ thumb_func_start MPlayJumpTableCopy
+MPlayJumpTableCopy:
+ mov r12, lr
+ movs r1, 0x24
+ ldr r2, lt_MPlayJumpTableTemplate
+MPlayJumpTableCopy_Loop:
+ ldr r3, [r2]
+ bl chk_adr_r2
+ stm r0!, {r3}
+ adds r2, 0x4
+ subs r1, 0x1
+ bgt MPlayJumpTableCopy_Loop
+ bx r12
+ thumb_func_end MPlayJumpTableCopy
+
+ .align 2, 0
+ .thumb_func
+ldrb_r3_r2:
+ ldrb r3, [r2]
+
+ .thumb_func
+chk_adr_r2:
+ push {r0}
+ lsrs r0, r2, 25
+ bne chk_adr_r2_done
+ ldr r0, lt_MPlayJumpTableTemplate
+ cmp r2, r0
+ bcc chk_adr_r2_reject
+ lsrs r0, r2, 14
+ beq chk_adr_r2_done
+chk_adr_r2_reject:
+ movs r3, 0
+chk_adr_r2_done:
+ pop {r0}
+ bx lr
+ .align 2, 0
+lt_MPlayJumpTableTemplate: .word gMPlayJumpTableTemplate
+
+ thumb_func_start ld_r3_tp_adr_i
+ld_r3_tp_adr_i:
+ ldr r2, [r1, 0x40]
+_080AE73A:
+ adds r3, r2, 0x1
+ str r3, [r1, 0x40]
+ ldrb r3, [r2]
+ b chk_adr_r2
+ thumb_func_end ld_r3_tp_adr_i
+
+ thumb_func_start ply_goto
+ply_goto:
+ push {lr}
+ply_goto_1:
+ ldr r2, [r1, o_MusicPlayerTrack_cmdPtr]
+ ldrb r0, [r2, 0x3]
+ lsls r0, 8
+ ldrb r3, [r2, 0x2]
+ orrs r0, r3
+ lsls r0, 8
+ ldrb r3, [r2, 0x1]
+ orrs r0, r3
+ lsls r0, 8
+ bl ldrb_r3_r2
+ orrs r0, r3
+ str r0, [r1, o_MusicPlayerTrack_cmdPtr]
+ pop {r0}
+ bx r0
+ thumb_func_end ply_goto
+
+ thumb_func_start ply_patt
+ply_patt:
+ ldrb r2, [r1, o_MusicPlayerTrack_patternLevel]
+ cmp r2, 0x3
+ bcs _080AE77C
+ lsls r2, 2
+ adds r3, r1, r2
+ ldr r2, [r1, o_MusicPlayerTrack_cmdPtr]
+ adds r2, 0x4
+ str r2, [r3, o_MusicPlayerTrack_patternStack]
+ ldrb r2, [r1, o_MusicPlayerTrack_patternLevel]
+ adds r2, 0x1
+ strb r2, [r1, o_MusicPlayerTrack_patternLevel]
+ b ply_goto
+_080AE77C:
+ b ply_fine
+ thumb_func_end ply_patt
+
+ thumb_func_start ply_pend
+ply_pend:
+ ldrb r2, [r1, o_MusicPlayerTrack_patternLevel]
+ cmp r2, 0
+ beq ply_pend_done
+ subs r2, 1
+ strb r2, [r1, o_MusicPlayerTrack_patternLevel]
+ lsls r2, 2
+ adds r3, r1, r2
+ ldr r2, [r3, o_MusicPlayerTrack_patternStack]
+ str r2, [r1, o_MusicPlayerTrack_cmdPtr]
+ply_pend_done:
+ bx lr
+ thumb_func_end ply_pend
+
+ thumb_func_start ply_rept
+ply_rept:
+ push {lr}
+ ldr r2, [r1, o_MusicPlayerTrack_cmdPtr]
+ ldrb r3, [r2]
+ cmp r3, 0
+ bne ply_rept_1
+ adds r2, 1
+ str r2, [r1, o_MusicPlayerTrack_cmdPtr]
+ b ply_goto_1
+ply_rept_1:
+ ldrb r3, [r1, o_MusicPlayerTrack_repN]
+ adds r3, 1
+ strb r3, [r1, o_MusicPlayerTrack_repN]
+ mov r12, r3
+ bl ld_r3_tp_adr_i
+ cmp r12, r3
+ bhs ply_rept_2
+ b ply_goto_1
+ply_rept_2:
+ movs r3, 0
+ strb r3, [r1, o_MusicPlayerTrack_repN]
+ adds r2, 5
+ str r2, [r1, o_MusicPlayerTrack_cmdPtr]
+ pop {r0}
+ bx r0
+ thumb_func_end ply_rept
+
+ thumb_func_start ply_prio
+ply_prio:
+ mov r12, lr
+ bl ld_r3_tp_adr_i
+ strb r3, [r1, o_MusicPlayerTrack_priority]
+ bx r12
+ thumb_func_end ply_prio
+
+ thumb_func_start ply_tempo
+ply_tempo:
+ mov r12, lr
+ bl ld_r3_tp_adr_i
+ lsls r3, 1
+ strh r3, [r0, o_MusicPlayerInfo_tempoD]
+ ldrh r2, [r0, o_MusicPlayerInfo_tempoU]
+ muls r3, r2
+ lsrs r3, 8
+ strh r3, [r0, o_MusicPlayerInfo_tempoI]
+ bx r12
+ thumb_func_end ply_tempo
+
+ thumb_func_start ply_keysh
+ply_keysh:
+ mov r12, lr
+ bl ld_r3_tp_adr_i
+ strb r3, [r1, o_MusicPlayerTrack_keyShift]
+ ldrb r3, [r1, o_MusicPlayerTrack_flags]
+ movs r2, 0xC
+ orrs r3, r2
+ strb r3, [r1, o_MusicPlayerTrack_flags]
+ bx r12
+ thumb_func_end ply_keysh
+
+ thumb_func_start ply_voice
+ply_voice:
+ mov r12, lr
+ ldr r2, [r1, o_MusicPlayerTrack_cmdPtr]
+ ldrb r3, [r2]
+ adds r2, 1
+ str r2, [r1, o_MusicPlayerTrack_cmdPtr]
+ lsls r2, r3, 1
+ adds r2, r3
+ lsls r2, 2
+ ldr r3, [r0, o_MusicPlayerInfo_tone]
+ adds r2, r3
+ ldr r3, [r2]
+ bl chk_adr_r2
+ str r3, [r1, o_MusicPlayerTrack_ToneData_type]
+ ldr r3, [r2, 0x4]
+ bl chk_adr_r2
+ str r3, [r1, o_MusicPlayerTrack_ToneData_wav]
+ ldr r3, [r2, 0x8]
+ bl chk_adr_r2
+ str r3, [r1, o_MusicPlayerTrack_ToneData_attack]
+ bx r12
+ thumb_func_end ply_voice
+
+ thumb_func_start ply_vol
+ply_vol:
+ mov r12, lr
+ bl ld_r3_tp_adr_i
+ strb r3, [r1, o_MusicPlayerTrack_vol]
+ ldrb r3, [r1, o_MusicPlayerTrack_flags]
+ movs r2, 0x3
+ orrs r3, r2
+ strb r3, [r1, o_MusicPlayerTrack_flags]
+ bx r12
+ thumb_func_end ply_vol
+
+ thumb_func_start ply_pan
+ply_pan:
+ mov r12, lr
+ bl ld_r3_tp_adr_i
+ subs r3, 0x40
+ strb r3, [r1, o_MusicPlayerTrack_pan]
+ ldrb r3, [r1, o_MusicPlayerTrack_flags]
+ movs r2, 0x3
+ orrs r3, r2
+ strb r3, [r1, o_MusicPlayerTrack_flags]
+ bx r12
+ thumb_func_end ply_pan
+
+ thumb_func_start ply_bend
+ply_bend:
+ mov r12, lr
+ bl ld_r3_tp_adr_i
+ subs r3, 0x40
+ strb r3, [r1, o_MusicPlayerTrack_bend]
+ ldrb r3, [r1, o_MusicPlayerTrack_flags]
+ movs r2, 0xC
+ orrs r3, r2
+ strb r3, [r1, o_MusicPlayerTrack_flags]
+ bx r12
+ thumb_func_end ply_bend
+
+ thumb_func_start ply_bendr
+ply_bendr:
+ mov r12, lr
+ bl ld_r3_tp_adr_i
+ strb r3, [r1, o_MusicPlayerTrack_bendRange]
+ ldrb r3, [r1, o_MusicPlayerTrack_flags]
+ movs r2, 0xC
+ orrs r3, r2
+ strb r3, [r1, o_MusicPlayerTrack_flags]
+ bx r12
+ thumb_func_end ply_bendr
+
+ thumb_func_start ply_lfodl
+ply_lfodl:
+ mov r12, lr
+ bl ld_r3_tp_adr_i
+ strb r3, [r1, o_MusicPlayerTrack_lfoDelay]
+ bx r12
+ thumb_func_end ply_lfodl
+
+ thumb_func_start ply_modt
+ply_modt:
+ mov r12, lr
+ bl ld_r3_tp_adr_i
+ ldrb r0, [r1, o_MusicPlayerTrack_modT]
+ cmp r0, r3
+ beq _080AE89A
+ strb r3, [r1, o_MusicPlayerTrack_modT]
+ ldrb r3, [r1, o_MusicPlayerTrack_flags]
+ movs r2, 0xF
+ orrs r3, r2
+ strb r3, [r1, o_MusicPlayerTrack_flags]
+_080AE89A:
+ bx r12
+ thumb_func_end ply_modt
+
+ thumb_func_start ply_tune
+ply_tune:
+ mov r12, lr
+ bl ld_r3_tp_adr_i
+ subs r3, 0x40
+ strb r3, [r1, o_MusicPlayerTrack_tune]
+ ldrb r3, [r1, o_MusicPlayerTrack_flags]
+ movs r2, 0xC
+ orrs r3, r2
+ strb r3, [r1, o_MusicPlayerTrack_flags]
+ bx r12
+ thumb_func_end ply_tune
+
+ thumb_func_start ply_port
+ply_port:
+ mov r12, lr
+ ldr r2, [r1, o_MusicPlayerTrack_cmdPtr]
+ ldrb r3, [r2]
+ adds r2, 0x1
+ ldr r0, =REG_SOUND1CNT_L @ sound register base address
+ adds r0, r3
+ bl _080AE73A
+ strb r3, [r0]
+ bx r12
+ .pool
+ thumb_func_end ply_port
+
+ thumb_func_start m4aSoundVSync
+m4aSoundVSync:
+ ldr r0, lt2_SOUND_INFO_PTR
+ ldr r0, [r0]
+
+ @ Exit the function if ident is not ID_NUMBER or ID_NUMBER+1.
+ ldr r2, lt2_ID_NUMBER
+ ldr r3, [r0, o_SoundInfo_ident]
+ subs r3, r2
+ cmp r3, 0x1
+ bhi m4aSoundVSync_Done
+
+ @ Decrement the PCM DMA counter. If it reaches 0, we need to do a DMA.
+ ldrb r1, [r0, o_SoundInfo_pcmDmaCounter]
+ subs r1, 0x1
+ strb r1, [r0, o_SoundInfo_pcmDmaCounter]
+ bgt m4aSoundVSync_Done
+
+ @ Reload the PCM DMA counter.
+ ldrb r1, [r0, o_SoundInfo_pcmDmaPeriod]
+ strb r1, [r0, o_SoundInfo_pcmDmaCounter]
+
+ ldr r2, =REG_DMA1
+
+ ldr r1, [r2, 0x8] @ DMA1CNT
+ lsls r1, 7
+ bcc m4aSoundVSync_SkipDMA1
+
+ ldr r1, =((DMA_ENABLE | DMA_START_NOW | DMA_32BIT | DMA_SRC_INC | DMA_DEST_FIXED) << 16) | 4
+ str r1, [r2, 0x8] @ DMA1CNT
+
+m4aSoundVSync_SkipDMA1:
+ ldr r1, [r2, 0xC + 0x8] @ DMA2CNT
+ lsls r1, 7
+ bcc m4aSoundVSync_SkipDMA2
+ ldr r1, =((DMA_ENABLE | DMA_START_NOW | DMA_32BIT | DMA_SRC_INC | DMA_DEST_FIXED) << 16) | 4
+ str r1, [r2, 0xC + 0x8] @ DMA2CNT
+
+m4aSoundVSync_SkipDMA2:
+ movs r1, DMA_32BIT >> 8
+ lsls r1, 8
+ strh r1, [r2, 0xA] @ DMA1CNT_H
+ strh r1, [r2, 0xC + 0xA] @ DMA2CNT_H
+
+ movs r1, (DMA_ENABLE | DMA_START_SPECIAL | DMA_32BIT | DMA_REPEAT) >> 8
+ lsls r1, 8 @ LSB is 0, so DMA_SRC_INC is used (destination is always fixed in FIFO mode)
+ strh r1, [r2, 0xA] @ DMA1CNT_H
+ strh r1, [r2, 0xC + 0xA] @ DMA2CNT_H
+
+m4aSoundVSync_Done:
+ bx lr
+
+ .pool
+ thumb_func_end m4aSoundVSync
+
+ thumb_func_start MPlayMain
+MPlayMain:
+ ldr r2, lt2_ID_NUMBER
+ ldr r3, [r0, o_MusicPlayerInfo_ident]
+ cmp r2, r3
+ beq _080AE91E
+ bx lr
+_080AE91E:
+ adds r3, 0x1
+ str r3, [r0, o_MusicPlayerInfo_ident]
+ push {r0,lr}
+ ldr r3, [r0, o_MusicPlayerInfo_func]
+ cmp r3, 0
+ beq _080AE930
+ ldr r0, [r0, o_MusicPlayerInfo_intp]
+ bl call_r3_2
+_080AE930:
+ pop {r0}
+ push {r4-r7}
+ mov r4, r8
+ mov r5, r9
+ mov r6, r10
+ mov r7, r11
+ push {r4-r7}
+ adds r7, r0, 0
+ ldr r0, [r7, o_MusicPlayerInfo_status]
+ cmp r0, 0
+ bge _080AE948
+ b _080AEB5C
+_080AE948:
+ ldr r0, lt2_SOUND_INFO_PTR
+ ldr r0, [r0]
+ mov r8, r0
+ adds r0, r7, 0
+ bl FadeOutBody
+ ldr r0, [r7, o_MusicPlayerInfo_status]
+ cmp r0, 0
+ bge _080AE95C
+ b _080AEB5C
+_080AE95C:
+ ldrh r0, [r7, o_MusicPlayerInfo_tempoC]
+ ldrh r1, [r7, o_MusicPlayerInfo_tempoI]
+ adds r0, r1
+ b _080AEAAC
+_080AE964:
+ ldrb r6, [r7, o_MusicPlayerInfo_trackCount]
+ ldr r5, [r7, o_MusicPlayerInfo_tracks]
+ movs r3, 0x1
+ movs r4, 0
+_080AE96C:
+ ldrb r0, [r5]
+ movs r1, 0x80
+ tst r1, r0
+ bne _080AE976
+ b _080AEA88
+_080AE976:
+ mov r10, r3
+ orrs r4, r3
+ mov r11, r4
+ ldr r4, [r5, o_MusicPlayerTrack_chan]
+ cmp r4, 0
+ beq _080AE9AA
+_080AE982:
+ ldrb r1, [r4]
+ movs r0, 0xC7
+ tst r0, r1
+ beq _080AE99E
+ ldrb r0, [r4, 0x10]
+ cmp r0, 0
+ beq _080AE9A4
+ subs r0, 0x1
+ strb r0, [r4, 0x10]
+ bne _080AE9A4
+ movs r0, 0x40
+ orrs r1, r0
+ strb r1, [r4]
+ b _080AE9A4
+_080AE99E:
+ adds r0, r4, 0
+ bl ClearChain
+_080AE9A4:
+ ldr r4, [r4, 0x34]
+ cmp r4, 0
+ bne _080AE982
+_080AE9AA:
+ ldrb r3, [r5, o_MusicPlayerTrack_flags]
+ movs r0, 0x40
+ tst r0, r3
+ beq _080AEA28
+ adds r0, r5, 0
+ bl Clear64byte
+ movs r0, 0x80
+ strb r0, [r5]
+ movs r0, 0x2
+ strb r0, [r5, o_MusicPlayerTrack_bendRange]
+ movs r0, 0x40
+ strb r0, [r5, o_MusicPlayerTrack_volX]
+ movs r0, 0x16
+ strb r0, [r5, o_MusicPlayerTrack_lfoSpeed]
+ movs r0, 0x1
+ adds r1, r5, 0x6
+ strb r0, [r1, o_MusicPlayerTrack_ToneData_type - 0x6]
+ b _080AEA28
+_080AE9D0:
+ ldr r2, [r5, o_MusicPlayerTrack_cmdPtr]
+ ldrb r1, [r2]
+ cmp r1, 0x80
+ bcs _080AE9DC
+ ldrb r1, [r5, o_MusicPlayerTrack_runningStatus]
+ b _080AE9E6
+_080AE9DC:
+ adds r2, 0x1
+ str r2, [r5, o_MusicPlayerTrack_cmdPtr]
+ cmp r1, 0xBD
+ bcc _080AE9E6
+ strb r1, [r5, o_MusicPlayerTrack_runningStatus]
+_080AE9E6:
+ cmp r1, 0xCF
+ bcc _080AE9FC
+ mov r0, r8
+ ldr r3, [r0, o_SoundInfo_plynote]
+ adds r0, r1, 0
+ subs r0, 0xCF
+ adds r1, r7, 0
+ adds r2, r5, 0
+ bl call_r3_2
+ b _080AEA28
+_080AE9FC:
+ cmp r1, 0xB0
+ bls _080AEA1E
+ adds r0, r1, 0
+ subs r0, 0xB1
+ strb r0, [r7, o_MusicPlayerInfo_cmd]
+ mov r3, r8
+ ldr r3, [r3, o_SoundInfo_MPlayJumpTable]
+ lsls r0, 2
+ ldr r3, [r3, r0]
+ adds r0, r7, 0
+ adds r1, r5, 0
+ bl call_r3_2
+ ldrb r0, [r5, o_MusicPlayerTrack_flags]
+ cmp r0, 0
+ beq _080AEA84
+ b _080AEA28
+_080AEA1E:
+ ldr r0, lt_gClockTable
+ subs r1, 0x80
+ adds r1, r0
+ ldrb r0, [r1]
+ strb r0, [r5, o_MusicPlayerTrack_wait]
+_080AEA28:
+ ldrb r0, [r5, o_MusicPlayerTrack_wait]
+ cmp r0, 0
+ beq _080AE9D0
+ subs r0, 0x1
+ strb r0, [r5, o_MusicPlayerTrack_wait]
+ ldrb r1, [r5, o_MusicPlayerTrack_lfoSpeed]
+ cmp r1, 0
+ beq _080AEA84
+ ldrb r0, [r5, o_MusicPlayerTrack_mod]
+ cmp r0, 0
+ beq _080AEA84
+ ldrb r0, [r5, o_MusicPlayerTrack_lfoDelayC]
+ cmp r0, 0
+ beq _080AEA4A
+ subs r0, 0x1
+ strb r0, [r5, o_MusicPlayerTrack_lfoDelayC]
+ b _080AEA84
+_080AEA4A:
+ ldrb r0, [r5, o_MusicPlayerTrack_lfoSpeedC]
+ adds r0, r1
+ strb r0, [r5, o_MusicPlayerTrack_lfoSpeedC]
+ adds r1, r0, 0
+ subs r0, 0x40
+ lsls r0, 24
+ bpl _080AEA5E
+ lsls r2, r1, 24
+ asrs r2, 24
+ b _080AEA62
+_080AEA5E:
+ movs r0, 0x80
+ subs r2, r0, r1
+_080AEA62:
+ ldrb r0, [r5, o_MusicPlayerTrack_mod]
+ muls r0, r2
+ asrs r2, r0, 6
+ ldrb r0, [r5, o_MusicPlayerTrack_modM]
+ eors r0, r2
+ lsls r0, 24
+ beq _080AEA84
+ strb r2, [r5, o_MusicPlayerTrack_modM]
+ ldrb r0, [r5]
+ ldrb r1, [r5, o_MusicPlayerTrack_modT]
+ cmp r1, 0
+ bne _080AEA7E
+ movs r1, 0xC
+ b _080AEA80
+_080AEA7E:
+ movs r1, 0x3
+_080AEA80:
+ orrs r0, r1
+ strb r0, [r5, o_MusicPlayerTrack_flags]
+_080AEA84:
+ mov r3, r10
+ mov r4, r11
+_080AEA88:
+ subs r6, 0x1
+ ble _080AEA94
+ movs r0, 0x50
+ adds r5, r0
+ lsls r3, 1
+ b _080AE96C
+_080AEA94:
+ ldr r0, [r7, o_MusicPlayerInfo_clock]
+ adds r0, 0x1
+ str r0, [r7, o_MusicPlayerInfo_clock]
+ cmp r4, 0
+ bne _080AEAA6
+ movs r0, 0x80
+ lsls r0, 24
+ str r0, [r7, o_MusicPlayerInfo_status]
+ b _080AEB5C
+_080AEAA6:
+ str r4, [r7, o_MusicPlayerInfo_status]
+ ldrh r0, [r7, o_MusicPlayerInfo_tempoC]
+ subs r0, 0x96
+_080AEAAC:
+ strh r0, [r7, o_MusicPlayerInfo_tempoC]
+ cmp r0, 0x96
+ bcc _080AEAB4
+ b _080AE964
+_080AEAB4:
+ ldrb r2, [r7, o_MusicPlayerInfo_trackCount]
+ ldr r5, [r7, o_MusicPlayerInfo_tracks]
+_080AEAB8:
+ ldrb r0, [r5, o_MusicPlayerTrack_flags]
+ movs r1, 0x80
+ tst r1, r0
+ beq _080AEB52
+ movs r1, 0xF
+ tst r1, r0
+ beq _080AEB52
+ mov r9, r2
+ adds r0, r7, 0
+ adds r1, r5, 0
+ bl TrkVolPitSet
+ ldr r4, [r5, o_MusicPlayerTrack_chan]
+ cmp r4, 0
+ beq _080AEB48
+_080AEAD6:
+ ldrb r1, [r4, o_SoundChannel_status]
+ movs r0, 0xC7
+ tst r0, r1
+ bne _080AEAE6
+ adds r0, r4, 0
+ bl ClearChain
+ b _080AEB42
+_080AEAE6:
+ ldrb r0, [r4, o_SoundChannel_type]
+ movs r6, 0x7
+ ands r6, r0
+ ldrb r3, [r5, o_MusicPlayerTrack_flags]
+ movs r0, 0x3
+ tst r0, r3
+ beq _080AEB04
+ bl ChnVolSetAsm
+ cmp r6, 0
+ beq _080AEB04
+ ldrb r0, [r4, o_CgbChannel_mo]
+ movs r1, 0x1
+ orrs r0, r1
+ strb r0, [r4, o_CgbChannel_mo]
+_080AEB04:
+ ldrb r3, [r5, o_MusicPlayerTrack_flags]
+ movs r0, 0xC
+ tst r0, r3
+ beq _080AEB42
+ ldrb r1, [r4, o_SoundChannel_ky]
+ movs r0, 0x8
+ ldrsb r0, [r5, r0]
+ adds r2, r1, r0
+ bpl _080AEB18
+ movs r2, 0
+_080AEB18:
+ cmp r6, 0
+ beq _080AEB36
+ mov r0, r8
+ ldr r3, [r0, o_SoundInfo_MidiKeyToCgbFreq]
+ adds r1, r2, 0
+ ldrb r2, [r5, o_MusicPlayerTrack_pitM]
+ adds r0, r6, 0
+ bl call_r3_2
+ str r0, [r4, o_CgbChannel_fr]
+ ldrb r0, [r4, o_CgbChannel_mo]
+ movs r1, 0x2
+ orrs r0, r1
+ strb r0, [r4, o_CgbChannel_mo]
+ b _080AEB42
+_080AEB36:
+ adds r1, r2, 0
+ ldrb r2, [r5, o_MusicPlayerTrack_pitM]
+ ldr r0, [r4, o_SoundChannel_wav]
+ bl MidiKeyToFreq
+ str r0, [r4, o_SoundChannel_freq]
+_080AEB42:
+ ldr r4, [r4, o_SoundChannel_np]
+ cmp r4, 0
+ bne _080AEAD6
+_080AEB48:
+ ldrb r0, [r5, o_MusicPlayerTrack_flags]
+ movs r1, 0xF0
+ ands r0, r1
+ strb r0, [r5, o_MusicPlayerTrack_flags]
+ mov r2, r9
+_080AEB52:
+ subs r2, 0x1
+ ble _080AEB5C
+ movs r0, 0x50
+ adds r5, r0
+ bgt _080AEAB8
+_080AEB5C:
+ ldr r0, lt2_ID_NUMBER
+ str r0, [r7, o_MusicPlayerInfo_ident]
+ pop {r0-r7}
+ mov r8, r0
+ mov r9, r1
+ mov r10, r2
+ mov r11, r3
+ pop {r3}
+call_r3_2:
+ bx r3
+ .align 2, 0
+
+lt_gClockTable: .word gClockTable
+lt2_SOUND_INFO_PTR: .word SOUND_INFO_PTR
+lt2_ID_NUMBER: .word ID_NUMBER
+ thumb_func_end MPlayMain
+
+ thumb_func_start TrackStop
+TrackStop:
+ push {r4-r6,lr}
+ adds r5, r1, 0
+ ldrb r1, [r5, o_MusicPlayerTrack_flags]
+ movs r0, 0x80
+ tst r0, r1
+ beq TrackStop_Done
+ ldr r4, [r5, o_MusicPlayerTrack_chan]
+ cmp r4, 0
+ beq TrackStop_3
+ movs r6, 0
+TrackStop_Loop:
+ ldrb r0, [r4, o_SoundChannel_status]
+ cmp r0, 0
+ beq TrackStop_2
+ ldrb r0, [r4, o_SoundChannel_type]
+ movs r3, 0x7
+ ands r0, r3
+ beq TrackStop_1
+ ldr r3, =SOUND_INFO_PTR
+ ldr r3, [r3]
+ ldr r3, [r3, o_SoundInfo_CgbOscOff]
+ bl call_r3_2
+TrackStop_1:
+ strb r6, [r4, o_SoundChannel_status]
+TrackStop_2:
+ str r6, [r4, o_SoundChannel_track]
+ ldr r4, [r4, o_SoundChannel_np]
+ cmp r4, 0
+ bne TrackStop_Loop
+TrackStop_3:
+ str r4, [r5, o_MusicPlayerTrack_chan]
+TrackStop_Done:
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end TrackStop
+
+ thumb_func_start ChnVolSetAsm
+ChnVolSetAsm:
+ ldrb r1, [r4, 0x12]
+ movs r0, 0x14
+ ldrsb r2, [r4, r0]
+ movs r3, 0x80
+ adds r3, r2
+ muls r3, r1
+ ldrb r0, [r5, 0x10]
+ muls r0, r3
+ asrs r0, 14
+ cmp r0, 0xFF
+ bls _080AEBD8
+ movs r0, 0xFF
+_080AEBD8:
+ strb r0, [r4, 0x2]
+ movs r3, 0x7F
+ subs r3, r2
+ muls r3, r1
+ ldrb r0, [r5, 0x11]
+ muls r0, r3
+ asrs r0, 14
+ cmp r0, 0xFF
+ bls _080AEBEC
+ movs r0, 0xFF
+_080AEBEC:
+ strb r0, [r4, 0x3]
+ bx lr
+ thumb_func_end ChnVolSetAsm
+
+ thumb_func_start ply_note
+ply_note:
+ push {r4-r7,lr}
+ mov r4, r8
+ mov r5, r9
+ mov r6, r10
+ mov r7, r11
+ push {r4-r7}
+ sub sp, 0x18
+ str r1, [sp]
+ adds r5, r2, 0
+ ldr r1, =SOUND_INFO_PTR
+ ldr r1, [r1]
+ str r1, [sp, 0x4]
+ ldr r1, =gClockTable
+ adds r0, r1
+ ldrb r0, [r0]
+ strb r0, [r5, o_MusicPlayerTrack_gateTime]
+ ldr r3, [r5, o_MusicPlayerTrack_cmdPtr]
+ ldrb r0, [r3]
+ cmp r0, 0x80
+ bcs _080AEC36
+ strb r0, [r5, o_MusicPlayerTrack_key]
+ adds r3, 0x1
+ ldrb r0, [r3]
+ cmp r0, 0x80
+ bcs _080AEC34
+ strb r0, [r5, o_MusicPlayerTrack_velocity]
+ adds r3, 0x1
+ ldrb r0, [r3]
+ cmp r0, 0x80
+ bcs _080AEC34
+ ldrb r1, [r5, o_MusicPlayerTrack_gateTime]
+ adds r1, r0
+ strb r1, [r5, o_MusicPlayerTrack_gateTime]
+ adds r3, 0x1
+_080AEC34:
+ str r3, [r5, o_MusicPlayerTrack_cmdPtr]
+_080AEC36:
+ movs r0, 0
+ str r0, [sp, 0x14]
+ adds r4, r5, 0
+ adds r4, o_MusicPlayerTrack_ToneData_type
+ ldrb r2, [r4]
+ movs r0, TONEDATA_TYPE_RHY | TONEDATA_TYPE_SPL
+ tst r0, r2
+ beq _080AEC88
+ ldrb r3, [r5, o_MusicPlayerTrack_key]
+ movs r0, TONEDATA_TYPE_SPL
+ tst r0, r2
+ beq _080AEC56
+ ldr r1, [r5, o_MusicPlayerTrack_ToneData_keySplitTable]
+ adds r1, r3
+ ldrb r0, [r1]
+ b _080AEC58
+_080AEC56:
+ adds r0, r3, 0
+_080AEC58:
+ lsls r1, r0, 1
+ adds r1, r0
+ lsls r1, 2
+ ldr r0, [r5, o_MusicPlayerTrack_ToneData_wav]
+ adds r1, r0
+ mov r9, r1
+ mov r6, r9
+ ldrb r1, [r6]
+ movs r0, 0xC0
+ tst r0, r1
+ beq _080AEC70
+ b _080AEDD6
+_080AEC70:
+ movs r0, 0x80
+ tst r0, r2
+ beq _080AEC8C
+ ldrb r1, [r6, 0x3]
+ movs r0, 0x80
+ tst r0, r1
+ beq _080AEC84
+ subs r1, 0xC0
+ lsls r1, 1
+ str r1, [sp, 0x14]
+_080AEC84:
+ ldrb r3, [r6, 0x1]
+ b _080AEC8C
+_080AEC88:
+ mov r9, r4
+ ldrb r3, [r5, 0x5]
+_080AEC8C:
+ str r3, [sp, 0x8]
+ ldr r6, [sp]
+ ldrb r1, [r6, 0x9]
+ ldrb r0, [r5, 0x1D]
+ adds r0, r1
+ cmp r0, 0xFF
+ bls _080AEC9C
+ movs r0, 0xFF
+_080AEC9C:
+ str r0, [sp, 0x10]
+ mov r6, r9
+ ldrb r0, [r6]
+ movs r6, 0x7
+ ands r6, r0
+ str r6, [sp, 0xC]
+ beq _080AECDC
+ ldr r0, [sp, 0x4]
+ ldr r4, [r0, 0x1C]
+ cmp r4, 0
+ bne _080AECB4
+ b _080AEDD6
+_080AECB4:
+ subs r6, 0x1
+ lsls r0, r6, 6
+ adds r4, r0
+ ldrb r1, [r4]
+ movs r0, 0xC7
+ tst r0, r1
+ beq _080AED30
+ movs r0, 0x40
+ tst r0, r1
+ bne _080AED30
+ ldrb r1, [r4, 0x13]
+ ldr r0, [sp, 0x10]
+ cmp r1, r0
+ bcc _080AED30
+ beq _080AECD4
+ b _080AEDD6
+_080AECD4:
+ ldr r0, [r4, 0x2C]
+ cmp r0, r5
+ bcs _080AED30
+ b _080AEDD6
+_080AECDC:
+ ldr r6, [sp, 0x10]
+ adds r7, r5, 0
+ movs r2, 0
+ mov r8, r2
+ ldr r4, [sp, 0x4]
+ ldrb r3, [r4, 0x6]
+ adds r4, 0x50
+_080AECEA:
+ ldrb r1, [r4]
+ movs r0, 0xC7
+ tst r0, r1
+ beq _080AED30
+ movs r0, 0x40
+ tst r0, r1
+ beq _080AED04
+ cmp r2, 0
+ bne _080AED08
+ adds r2, 0x1
+ ldrb r6, [r4, 0x13]
+ ldr r7, [r4, 0x2C]
+ b _080AED22
+_080AED04:
+ cmp r2, 0
+ bne _080AED24
+_080AED08:
+ ldrb r0, [r4, 0x13]
+ cmp r0, r6
+ bcs _080AED14
+ adds r6, r0, 0
+ ldr r7, [r4, 0x2C]
+ b _080AED22
+_080AED14:
+ bhi _080AED24
+ ldr r0, [r4, 0x2C]
+ cmp r0, r7
+ bls _080AED20
+ adds r7, r0, 0
+ b _080AED22
+_080AED20:
+ bcc _080AED24
+_080AED22:
+ mov r8, r4
+_080AED24:
+ adds r4, 0x40
+ subs r3, 0x1
+ bgt _080AECEA
+ mov r4, r8
+ cmp r4, 0
+ beq _080AEDD6
+_080AED30:
+ adds r0, r4, 0
+ bl ClearChain
+ movs r1, 0
+ str r1, [r4, 0x30]
+ ldr r3, [r5, 0x20]
+ str r3, [r4, 0x34]
+ cmp r3, 0
+ beq _080AED44
+ str r4, [r3, 0x30]
+_080AED44:
+ str r4, [r5, 0x20]
+ str r5, [r4, 0x2C]
+ ldrb r0, [r5, 0x1B]
+ strb r0, [r5, 0x1C]
+ cmp r0, r1
+ beq _080AED56
+ adds r1, r5, 0
+ bl clear_modM
+_080AED56:
+ ldr r0, [sp]
+ adds r1, r5, 0
+ bl TrkVolPitSet
+ ldr r0, [r5, 0x4]
+ str r0, [r4, 0x10]
+ ldr r0, [sp, 0x10]
+ strb r0, [r4, 0x13]
+ ldr r0, [sp, 0x8]
+ strb r0, [r4, 0x8]
+ ldr r0, [sp, 0x14]
+ strb r0, [r4, 0x14]
+ mov r6, r9
+ ldrb r0, [r6]
+ strb r0, [r4, 0x1]
+ ldr r7, [r6, 0x4]
+ str r7, [r4, 0x24]
+ ldr r0, [r6, 0x8]
+ str r0, [r4, 0x4]
+ ldrh r0, [r5, 0x1E]
+ strh r0, [r4, 0xC]
+ bl ChnVolSetAsm
+ ldrb r1, [r4, 0x8]
+ movs r0, 0x8
+ ldrsb r0, [r5, r0]
+ adds r3, r1, r0
+ bpl _080AED90
+ movs r3, 0
+_080AED90:
+ ldr r6, [sp, 0xC]
+ cmp r6, 0
+ beq _080AEDBE
+ mov r6, r9
+ ldrb r0, [r6, 0x2]
+ strb r0, [r4, 0x1E]
+ ldrb r1, [r6, 0x3]
+ movs r0, 0x80
+ tst r0, r1
+ bne _080AEDAA
+ movs r0, 0x70
+ tst r0, r1
+ bne _080AEDAC
+_080AEDAA:
+ movs r1, 0x8
+_080AEDAC:
+ strb r1, [r4, 0x1F]
+ ldrb r2, [r5, 0x9]
+ adds r1, r3, 0
+ ldr r0, [sp, 0xC]
+ ldr r3, [sp, 0x4]
+ ldr r3, [r3, 0x30]
+ bl call_r3_2
+ b _080AEDC8
+_080AEDBE:
+ ldrb r2, [r5, 0x9]
+ adds r1, r3, 0
+ adds r0, r7, 0
+ bl MidiKeyToFreq
+_080AEDC8:
+ str r0, [r4, 0x20]
+ movs r0, 0x80
+ strb r0, [r4]
+ ldrb r1, [r5]
+ movs r0, 0xF0
+ ands r0, r1
+ strb r0, [r5]
+_080AEDD6:
+ add sp, 0x18
+ pop {r0-r7}
+ mov r8, r0
+ mov r9, r1
+ mov r10, r2
+ mov r11, r3
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end ply_note
+
+ thumb_func_start ply_endtie
+ply_endtie:
+ push {r4,r5}
+ ldr r2, [r1, o_MusicPlayerTrack_cmdPtr]
+ ldrb r3, [r2]
+ cmp r3, 0x80
+ bcs _080AEE02
+ strb r3, [r1, o_MusicPlayerTrack_key]
+ adds r2, 0x1
+ str r2, [r1, o_MusicPlayerTrack_cmdPtr]
+ b _080AEE04
+_080AEE02:
+ ldrb r3, [r1, o_MusicPlayerTrack_key]
+_080AEE04:
+ ldr r1, [r1, o_MusicPlayerTrack_chan]
+ cmp r1, 0
+ beq _080AEE2C
+ movs r4, 0x83
+ movs r5, 0x40
+_080AEE0E:
+ ldrb r2, [r1, o_SoundChannel_status]
+ tst r2, r4
+ beq _080AEE26
+ tst r2, r5
+ bne _080AEE26
+ ldrb r0, [r1, o_SoundChannel_mk]
+ cmp r0, r3
+ bne _080AEE26
+ movs r0, 0x40
+ orrs r2, r0
+ strb r2, [r1, o_SoundChannel_status]
+ b _080AEE2C
+_080AEE26:
+ ldr r1, [r1, o_SoundChannel_np]
+ cmp r1, 0
+ bne _080AEE0E
+_080AEE2C:
+ pop {r4,r5}
+ bx lr
+ thumb_func_end ply_endtie
+
+ thumb_func_start clear_modM
+clear_modM:
+ movs r2, 0
+ strb r2, [r1, o_MusicPlayerTrack_modM]
+ strb r2, [r1, o_MusicPlayerTrack_lfoSpeedC]
+ ldrb r2, [r1, o_MusicPlayerTrack_modT]
+ cmp r2, 0
+ bne _080AEE40
+ movs r2, 0xC
+ b _080AEE42
+_080AEE40:
+ movs r2, 0x3
+_080AEE42:
+ ldrb r3, [r1, o_MusicPlayerTrack_flags]
+ orrs r3, r2
+ strb r3, [r1, o_MusicPlayerTrack_flags]
+ bx lr
+ thumb_func_end clear_modM
+
+ thumb_func_start ld_r3_tp_adr_i_unchecked
+ld_r3_tp_adr_i_unchecked:
+ ldr r2, [r1, 0x40]
+ adds r3, r2, 0x1
+ str r3, [r1, 0x40]
+ ldrb r3, [r2]
+ bx lr
+ thumb_func_end ld_r3_tp_adr_i_unchecked
+
+ thumb_func_start ply_lfos
+ply_lfos:
+ mov r12, lr
+ bl ld_r3_tp_adr_i_unchecked
+ strb r3, [r1, o_MusicPlayerTrack_lfoSpeed]
+ cmp r3, 0
+ bne _080AEE68
+ bl clear_modM
+_080AEE68:
+ bx r12
+ thumb_func_end ply_lfos
+
+ thumb_func_start ply_mod
+ply_mod:
+ mov r12, lr
+ bl ld_r3_tp_adr_i_unchecked
+ strb r3, [r1, o_MusicPlayerTrack_mod]
+ cmp r3, 0
+ bne _080AEE7C
+ bl clear_modM
+_080AEE7C:
+ bx r12
+ thumb_func_end ply_mod
+
+ .align 2, 0 @ Don't pad with nop.
diff --git a/asm/m4a_2.s b/asm/m4a_2.s
new file mode 100644
index 0000000..eb525ce
--- /dev/null
+++ b/asm/m4a_2.s
@@ -0,0 +1,70 @@
+ .include "asm/macros.inc"
+ .include "constants/gba_constants.inc"
+ .include "constants/m4a_constants.inc"
+
+ .syntax unified
+
+ .text
+
+ thumb_func_start CgbModVol
+CgbModVol:
+ push {r4,lr}
+ adds r1, r0, 0
+ ldrb r0, [r1, 0x2]
+ lsls r2, r0, 24
+ lsrs r4, r2, 24
+ ldrb r3, [r1, 0x3]
+ lsls r0, r3, 24
+ lsrs r3, r0, 24
+ cmp r4, r3
+ bcc _080AFA94
+ lsrs r0, r2, 25
+ cmp r0, r3
+ bcc _080AFAA0
+ movs r0, 0xF
+ strb r0, [r1, 0x1B]
+ b _080AFAAE
+_080AFA94:
+ lsrs r0, 25
+ cmp r0, r4
+ bcc _080AFAA0
+ movs r0, 0xF0
+ strb r0, [r1, 0x1B]
+ b _080AFAAE
+_080AFAA0:
+ movs r0, 0xFF
+ strb r0, [r1, 0x1B]
+ ldrb r2, [r1, 0x3]
+ ldrb r3, [r1, 0x2]
+ adds r0, r2, r3
+ lsrs r0, 4
+ b _080AFABE
+_080AFAAE:
+ ldrb r2, [r1, 0x3]
+ ldrb r3, [r1, 0x2]
+ adds r0, r2, r3
+ lsrs r0, 4
+ strb r0, [r1, 0xA]
+ cmp r0, 0xF
+ bls _080AFAC0
+ movs r0, 0xF
+_080AFABE:
+ strb r0, [r1, 0xA]
+_080AFAC0:
+ ldrb r2, [r1, 0x6]
+ ldrb r3, [r1, 0xA]
+ adds r0, r2, 0
+ muls r0, r3
+ adds r0, 0xF
+ asrs r0, 4
+ strb r0, [r1, 0x19]
+ ldrb r0, [r1, 0x1C]
+ ldrb r2, [r1, 0x1B]
+ ands r0, r2
+ strb r0, [r1, 0x1B]
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end CgbModVol
+
+ .align 2, 0 @ Don't pad with nop.
diff --git a/asm/m4a_3.s b/asm/m4a_3.s
new file mode 100644
index 0000000..4747b3f
--- /dev/null
+++ b/asm/m4a_3.s
@@ -0,0 +1,574 @@
+ .include "asm/macros.inc"
+ .include "constants/gba_constants.inc"
+ .include "constants/m4a_constants.inc"
+
+ .syntax unified
+
+ .text
+
+ thumb_func_start CgbSound
+CgbSound:
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ sub sp, 0x1C
+ ldr r0, =SOUND_INFO_PTR
+ ldr r0, [r0]
+ str r0, [sp, 0x4]
+ ldrb r0, [r0, 0xA]
+ cmp r0, 0
+ beq _080AFB00
+ subs r0, 0x1
+ ldr r1, [sp, 0x4]
+ strb r0, [r1, 0xA]
+ b _080AFB06
+ .pool
+_080AFB00:
+ movs r0, 0xE
+ ldr r2, [sp, 0x4]
+ strb r0, [r2, 0xA]
+_080AFB06:
+ movs r6, 0x1
+ ldr r0, [sp, 0x4]
+ ldr r4, [r0, 0x1C]
+_080AFB0C:
+ ldrb r1, [r4]
+ movs r0, 0xC7
+ ands r0, r1
+ adds r2, r6, 0x1
+ mov r10, r2
+ movs r2, 0x40
+ adds r2, r4
+ mov r9, r2
+ cmp r0, 0
+ bne _080AFB22
+ b _080AFF0C
+_080AFB22:
+ cmp r6, 0x2
+ beq _080AFB54
+ cmp r6, 0x2
+ bgt _080AFB30
+ cmp r6, 0x1
+ beq _080AFB36
+ b _080AFB8C
+_080AFB30:
+ cmp r6, 0x3
+ beq _080AFB6C
+ b _080AFB8C
+_080AFB36:
+ ldr r0, =REG_NR10
+ str r0, [sp, 0x8]
+ ldr r7, =REG_NR11
+ ldr r2, =REG_NR12
+ str r2, [sp, 0xC]
+ adds r0, 0x4
+ str r0, [sp, 0x10]
+ adds r2, 0x2
+ b _080AFB9C
+ .pool
+_080AFB54:
+ ldr r0, =REG_NR10 + 1
+ str r0, [sp, 0x8]
+ ldr r7, =REG_NR21
+ ldr r2, =REG_NR22
+ b _080AFB94
+ .pool
+_080AFB6C:
+ ldr r0, =REG_NR30
+ str r0, [sp, 0x8]
+ ldr r7, =REG_NR31
+ ldr r2, =REG_NR32
+ str r2, [sp, 0xC]
+ adds r0, 0x4
+ str r0, [sp, 0x10]
+ adds r2, 0x2
+ b _080AFB9C
+ .pool
+_080AFB8C:
+ ldr r0, =REG_NR30 + 1
+ str r0, [sp, 0x8]
+ ldr r7, =REG_NR41
+ ldr r2, =REG_NR42
+_080AFB94:
+ str r2, [sp, 0xC]
+ adds r0, 0xB
+ str r0, [sp, 0x10]
+ adds r2, 0x4
+_080AFB9C:
+ str r2, [sp, 0x14]
+ ldr r0, [sp, 0x4]
+ ldrb r0, [r0, 0xA]
+ str r0, [sp]
+ ldr r2, [sp, 0xC]
+ ldrb r0, [r2]
+ mov r8, r0
+ adds r2, r1, 0
+ movs r0, 0x80
+ ands r0, r2
+ cmp r0, 0
+ beq _080AFC92
+ movs r3, 0x40
+ adds r0, r3, 0
+ ands r0, r2
+ lsls r0, 24
+ lsrs r5, r0, 24
+ adds r0, r6, 0x1
+ mov r10, r0
+ movs r1, 0x40
+ adds r1, r4
+ mov r9, r1
+ cmp r5, 0
+ bne _080AFCB6
+ movs r0, 0x3
+ strb r0, [r4]
+ strb r0, [r4, 0x1D]
+ adds r0, r4, 0
+ str r3, [sp, 0x18]
+ bl CgbModVol
+ ldr r3, [sp, 0x18]
+ cmp r6, 0x2
+ beq _080AFC04
+ cmp r6, 0x2
+ bgt _080AFBF8
+ cmp r6, 0x1
+ beq _080AFBFE
+ b _080AFC58
+ .pool
+_080AFBF8:
+ cmp r6, 0x3
+ beq _080AFC10
+ b _080AFC58
+_080AFBFE:
+ ldrb r0, [r4, 0x1F]
+ ldr r2, [sp, 0x8]
+ strb r0, [r2]
+_080AFC04:
+ ldr r0, [r4, 0x24]
+ lsls r0, 6
+ ldrb r1, [r4, 0x1E]
+ adds r0, r1, r0
+ strb r0, [r7]
+ b _080AFC64
+_080AFC10:
+ ldr r1, [r4, 0x24]
+ ldr r0, [r4, 0x28]
+ cmp r1, r0
+ beq _080AFC38
+ ldr r2, [sp, 0x8]
+ strb r3, [r2]
+ ldr r1, =REG_WAVE_RAM
+ ldr r2, [r4, 0x24]
+ ldr r0, [r2]
+ str r0, [r1]
+ adds r1, 0x4
+ ldr r0, [r2, 0x4]
+ str r0, [r1]
+ adds r1, 0x4
+ ldr r0, [r2, 0x8]
+ str r0, [r1]
+ adds r1, 0x4
+ ldr r0, [r2, 0xC]
+ str r0, [r1]
+ str r2, [r4, 0x28]
+_080AFC38:
+ ldr r0, [sp, 0x8]
+ strb r5, [r0]
+ ldrb r0, [r4, 0x1E]
+ strb r0, [r7]
+ ldrb r0, [r4, 0x1E]
+ cmp r0, 0
+ beq _080AFC50
+ movs r0, 0xC0
+ b _080AFC72
+ .pool
+_080AFC50:
+ movs r1, 0x80
+ negs r1, r1
+ strb r1, [r4, 0x1A]
+ b _080AFC74
+_080AFC58:
+ ldrb r0, [r4, 0x1E]
+ strb r0, [r7]
+ ldr r0, [r4, 0x24]
+ lsls r0, 3
+ ldr r2, [sp, 0x10]
+ strb r0, [r2]
+_080AFC64:
+ ldrb r0, [r4, 0x4]
+ adds r0, 0x8
+ mov r8, r0
+ ldrb r0, [r4, 0x1E]
+ cmp r0, 0
+ beq _080AFC72
+ movs r0, 0x40
+_080AFC72:
+ strb r0, [r4, 0x1A]
+_080AFC74:
+ ldrb r1, [r4, 0x4]
+ movs r2, 0
+ strb r1, [r4, 0xB]
+ movs r0, 0xFF
+ ands r0, r1
+ adds r1, r6, 0x1
+ mov r10, r1
+ movs r1, 0x40
+ adds r1, r4
+ mov r9, r1
+ cmp r0, 0
+ bne _080AFC8E
+ b _080AFDCA
+_080AFC8E:
+ strb r2, [r4, 0x9]
+ b _080AFDF8
+_080AFC92:
+ movs r0, 0x4
+ ands r0, r2
+ cmp r0, 0
+ beq _080AFCC4
+ ldrb r0, [r4, 0xD]
+ subs r0, 0x1
+ strb r0, [r4, 0xD]
+ movs r2, 0xFF
+ ands r0, r2
+ lsls r0, 24
+ adds r1, r6, 0x1
+ mov r10, r1
+ movs r2, 0x40
+ adds r2, r4
+ mov r9, r2
+ cmp r0, 0
+ ble _080AFCB6
+ b _080AFE0A
+_080AFCB6:
+ lsls r0, r6, 24
+ lsrs r0, 24
+ bl CgbOscOff
+ movs r0, 0
+ strb r0, [r4]
+ b _080AFF08
+_080AFCC4:
+ movs r0, 0x40
+ ands r0, r1
+ adds r2, r6, 0x1
+ mov r10, r2
+ movs r2, 0x40
+ adds r2, r4
+ mov r9, r2
+ cmp r0, 0
+ beq _080AFD04
+ movs r0, 0x3
+ ands r0, r1
+ cmp r0, 0
+ beq _080AFD04
+ movs r0, 0xFC
+ ands r0, r1
+ movs r2, 0
+ strb r0, [r4]
+ ldrb r1, [r4, 0x7]
+ strb r1, [r4, 0xB]
+ movs r0, 0xFF
+ ands r0, r1
+ cmp r0, 0
+ beq _080AFD36
+ movs r0, 0x1
+ ldrb r1, [r4, 0x1D]
+ orrs r0, r1
+ strb r0, [r4, 0x1D]
+ cmp r6, 0x3
+ beq _080AFDF8
+ ldrb r2, [r4, 0x7]
+ mov r8, r2
+ b _080AFDF8
+_080AFD04:
+ ldrb r0, [r4, 0xB]
+ cmp r0, 0
+ bne _080AFDF8
+ cmp r6, 0x3
+ bne _080AFD16
+ movs r0, 0x1
+ ldrb r1, [r4, 0x1D]
+ orrs r0, r1
+ strb r0, [r4, 0x1D]
+_080AFD16:
+ adds r0, r4, 0
+ bl CgbModVol
+ movs r0, 0x3
+ ldrb r2, [r4]
+ ands r0, r2
+ cmp r0, 0
+ bne _080AFD6A
+ ldrb r0, [r4, 0x9]
+ subs r0, 0x1
+ strb r0, [r4, 0x9]
+ movs r1, 0xFF
+ ands r0, r1
+ lsls r0, 24
+ cmp r0, 0
+ bgt _080AFD66
+_080AFD36:
+ ldrb r2, [r4, 0xC]
+ ldrb r1, [r4, 0xA]
+ adds r0, r2, 0
+ muls r0, r1
+ adds r0, 0xFF
+ asrs r0, 8
+ movs r1, 0
+ strb r0, [r4, 0x9]
+ lsls r0, 24
+ cmp r0, 0
+ beq _080AFCB6
+ movs r0, 0x4
+ ldrb r2, [r4]
+ orrs r0, r2
+ strb r0, [r4]
+ movs r0, 0x1
+ ldrb r1, [r4, 0x1D]
+ orrs r0, r1
+ strb r0, [r4, 0x1D]
+ cmp r6, 0x3
+ beq _080AFE0A
+ movs r2, 0x8
+ mov r8, r2
+ b _080AFE0A
+_080AFD66:
+ ldrb r0, [r4, 0x7]
+ b _080AFDF6
+_080AFD6A:
+ cmp r0, 0x1
+ bne _080AFD76
+_080AFD6E:
+ ldrb r0, [r4, 0x19]
+ strb r0, [r4, 0x9]
+ movs r0, 0x7
+ b _080AFDF6
+_080AFD76:
+ cmp r0, 0x2
+ bne _080AFDBA
+ ldrb r0, [r4, 0x9]
+ subs r0, 0x1
+ strb r0, [r4, 0x9]
+ movs r1, 0xFF
+ ands r0, r1
+ lsls r0, 24
+ ldrb r2, [r4, 0x19]
+ lsls r1, r2, 24
+ cmp r0, r1
+ bgt _080AFDB6
+_080AFD8E:
+ ldrb r0, [r4, 0x6]
+ cmp r0, 0
+ bne _080AFD9E
+ movs r0, 0xFC
+ ldrb r1, [r4]
+ ands r0, r1
+ strb r0, [r4]
+ b _080AFD36
+_080AFD9E:
+ ldrb r0, [r4]
+ subs r0, 0x1
+ strb r0, [r4]
+ movs r0, 0x1
+ ldrb r2, [r4, 0x1D]
+ orrs r0, r2
+ strb r0, [r4, 0x1D]
+ cmp r6, 0x3
+ beq _080AFD6E
+ movs r0, 0x8
+ mov r8, r0
+ b _080AFD6E
+_080AFDB6:
+ ldrb r0, [r4, 0x5]
+ b _080AFDF6
+_080AFDBA:
+ ldrb r0, [r4, 0x9]
+ adds r0, 0x1
+ strb r0, [r4, 0x9]
+ movs r1, 0xFF
+ ands r0, r1
+ ldrb r2, [r4, 0xA]
+ cmp r0, r2
+ bcc _080AFDF4
+_080AFDCA:
+ ldrb r0, [r4]
+ subs r0, 0x1
+ movs r2, 0
+ strb r0, [r4]
+ ldrb r1, [r4, 0x5]
+ strb r1, [r4, 0xB]
+ movs r0, 0xFF
+ ands r0, r1
+ cmp r0, 0
+ beq _080AFD8E
+ movs r0, 0x1
+ ldrb r1, [r4, 0x1D]
+ orrs r0, r1
+ strb r0, [r4, 0x1D]
+ ldrb r0, [r4, 0xA]
+ strb r0, [r4, 0x9]
+ cmp r6, 0x3
+ beq _080AFDF8
+ ldrb r2, [r4, 0x5]
+ mov r8, r2
+ b _080AFDF8
+_080AFDF4:
+ ldrb r0, [r4, 0x4]
+_080AFDF6:
+ strb r0, [r4, 0xB]
+_080AFDF8:
+ ldrb r0, [r4, 0xB]
+ subs r0, 0x1
+ strb r0, [r4, 0xB]
+ ldr r0, [sp]
+ cmp r0, 0
+ bne _080AFE0A
+ subs r0, 0x1
+ str r0, [sp]
+ b _080AFD04
+_080AFE0A:
+ movs r0, 0x2
+ ldrb r1, [r4, 0x1D]
+ ands r0, r1
+ cmp r0, 0
+ beq _080AFE82
+ cmp r6, 0x3
+ bgt _080AFE4A
+ movs r0, 0x8
+ ldrb r2, [r4, 0x1]
+ ands r0, r2
+ cmp r0, 0
+ beq _080AFE4A
+ ldr r0, =REG_SOUNDBIAS + 1
+ ldrb r0, [r0]
+ cmp r0, 0x3F
+ bgt _080AFE3C
+ ldr r0, [r4, 0x20]
+ adds r0, 0x2
+ ldr r1, =0x000007fc
+ b _080AFE46
+ .pool
+_080AFE3C:
+ cmp r0, 0x7F
+ bgt _080AFE4A
+ ldr r0, [r4, 0x20]
+ adds r0, 0x1
+ ldr r1, =0x000007fe
+_080AFE46:
+ ands r0, r1
+ str r0, [r4, 0x20]
+_080AFE4A:
+ cmp r6, 0x4
+ beq _080AFE5C
+ ldr r0, [r4, 0x20]
+ ldr r1, [sp, 0x10]
+ strb r0, [r1]
+ b _080AFE6A
+ .pool
+_080AFE5C:
+ ldr r2, [sp, 0x10]
+ ldrb r0, [r2]
+ movs r1, 0x8
+ ands r1, r0
+ ldr r0, [r4, 0x20]
+ orrs r0, r1
+ strb r0, [r2]
+_080AFE6A:
+ movs r0, 0xC0
+ ldrb r1, [r4, 0x1A]
+ ands r0, r1
+ adds r1, r4, 0
+ adds r1, 0x21
+ ldrb r1, [r1]
+ adds r0, r1, r0
+ strb r0, [r4, 0x1A]
+ movs r2, 0xFF
+ ands r0, r2
+ ldr r1, [sp, 0x14]
+ strb r0, [r1]
+_080AFE82:
+ movs r0, 0x1
+ ldrb r2, [r4, 0x1D]
+ ands r0, r2
+ cmp r0, 0
+ beq _080AFF08
+ ldr r1, =REG_NR51
+ ldrb r0, [r1]
+ ldrb r2, [r4, 0x1C]
+ bics r0, r2
+ ldrb r2, [r4, 0x1B]
+ orrs r0, r2
+ strb r0, [r1]
+ cmp r6, 0x3
+ bne _080AFED4
+ ldr r0, =gCgb3Vol
+ ldrb r1, [r4, 0x9]
+ adds r0, r1, r0
+ ldrb r0, [r0]
+ ldr r2, [sp, 0xC]
+ strb r0, [r2]
+ movs r1, 0x80
+ adds r0, r1, 0
+ ldrb r2, [r4, 0x1A]
+ ands r0, r2
+ cmp r0, 0
+ beq _080AFF08
+ ldr r0, [sp, 0x8]
+ strb r1, [r0]
+ ldrb r0, [r4, 0x1A]
+ ldr r1, [sp, 0x14]
+ strb r0, [r1]
+ movs r0, 0x7F
+ ldrb r2, [r4, 0x1A]
+ ands r0, r2
+ strb r0, [r4, 0x1A]
+ b _080AFF08
+ .pool
+_080AFED4:
+ movs r0, 0xF
+ mov r1, r8
+ ands r1, r0
+ mov r8, r1
+ ldrb r2, [r4, 0x9]
+ lsls r0, r2, 4
+ add r0, r8
+ ldr r1, [sp, 0xC]
+ strb r0, [r1]
+ movs r2, 0x80
+ ldrb r0, [r4, 0x1A]
+ orrs r0, r2
+ ldr r1, [sp, 0x14]
+ strb r0, [r1]
+ cmp r6, 0x1
+ bne _080AFF08
+ ldr r0, [sp, 0x8]
+ ldrb r1, [r0]
+ movs r0, 0x8
+ ands r0, r1
+ cmp r0, 0
+ bne _080AFF08
+ ldrb r0, [r4, 0x1A]
+ orrs r0, r2
+ ldr r1, [sp, 0x14]
+ strb r0, [r1]
+_080AFF08:
+ movs r0, 0
+ strb r0, [r4, 0x1D]
+_080AFF0C:
+ mov r6, r10
+ mov r4, r9
+ cmp r6, 0x4
+ bgt _080AFF16
+ b _080AFB0C
+_080AFF16:
+ add sp, 0x1C
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ thumb_func_end CgbSound
+
+ .align 2, 0 @ Don't pad with nop.
diff --git a/asm/memory.s b/asm/memory.s
index e364f1b..1b9d36e 100644
--- a/asm/memory.s
+++ b/asm/memory.s
@@ -4,268 +4,7 @@
.syntax unified
.text
-
- thumb_func_start InitHeap
-InitHeap:
- push {lr}
- bl InitHeapInternal
- pop {r0}
- bx r0
- thumb_func_end InitHeap
-
- thumb_func_start MemoryClear8
-MemoryClear8:
- push {lr}
- cmp r1, 0
- ble _08002EAA
- movs r2, 0
-_08002EA0:
- subs r1, 0x1
- strb r2, [r0]
- adds r0, 0x1
- cmp r1, 0
- bgt _08002EA0
-_08002EAA:
- pop {r0}
- bx r0
- thumb_func_end MemoryClear8
-
- thumb_func_start MemoryClear16
-MemoryClear16:
- push {lr}
- cmp r1, 0
- ble _08002EC2
- movs r2, 0
-_08002EB8:
- subs r1, 0x2
- strh r2, [r0]
- adds r0, 0x2
- cmp r1, 0
- bgt _08002EB8
-_08002EC2:
- pop {r0}
- bx r0
- thumb_func_end MemoryClear16
-
- thumb_func_start MemoryClear32
-MemoryClear32:
- push {lr}
- bl CpuClear
- pop {r0}
- bx r0
- thumb_func_end MemoryClear32
-
- thumb_func_start MemoryFill8
-MemoryFill8:
- push {lr}
- lsls r1, 24
- lsrs r1, 24
- cmp r2, 0
- ble _08002EE8
-_08002EDE:
- subs r2, 0x1
- strb r1, [r0]
- adds r0, 0x1
- cmp r2, 0
- bgt _08002EDE
-_08002EE8:
- pop {r0}
- bx r0
- thumb_func_end MemoryFill8
-
- thumb_func_start MemoryFill16
-MemoryFill16:
- push {lr}
- lsls r1, 16
- lsrs r1, 16
- cmp r2, 0
- ble _08002F00
-_08002EF6:
- subs r2, 0x2
- strh r1, [r0]
- adds r0, 0x2
- cmp r2, 0
- bgt _08002EF6
-_08002F00:
- pop {r0}
- bx r0
- thumb_func_end MemoryFill16
-
- thumb_func_start MemoryFill32
-MemoryFill32:
- push {lr}
- cmp r2, 0
- ble _08002F12
-_08002F0A:
- subs r2, 0x4
- stm r0!, {r1}
- cmp r2, 0
- bgt _08002F0A
-_08002F12:
- pop {r0}
- bx r0
- thumb_func_end MemoryFill32
-
- thumb_func_start MemoryCopy8
-MemoryCopy8:
- push {lr}
- adds r3, r0, 0
- cmp r2, 0
- ble _08002F2E
-_08002F20:
- subs r2, 0x1
- ldrb r0, [r1]
- strb r0, [r3]
- adds r1, 0x1
- adds r3, 0x1
- cmp r2, 0
- bgt _08002F20
-_08002F2E:
- pop {r0}
- bx r0
- thumb_func_end MemoryCopy8
-
- thumb_func_start MemoryCopy16
-MemoryCopy16:
- push {lr}
- adds r3, r0, 0
- cmp r2, 0
- ble _08002F4A
-_08002F3C:
- subs r2, 0x2
- ldrh r0, [r1]
- strh r0, [r3]
- adds r1, 0x2
- adds r3, 0x2
- cmp r2, 0
- bgt _08002F3C
-_08002F4A:
- pop {r0}
- bx r0
- thumb_func_end MemoryCopy16
-
- thumb_func_start MemoryCopy32
-MemoryCopy32:
- push {lr}
- adds r3, r0, 0
- cmp r2, 0
- ble _08002F62
-_08002F58:
- subs r2, 0x4
- ldm r1!, {r0}
- stm r3!, {r0}
- cmp r2, 0
- bgt _08002F58
-_08002F62:
- pop {r0}
- bx r0
- thumb_func_end MemoryCopy32
-
- thumb_func_start InitHeapInternal
-InitHeapInternal:
- push {lr}
- sub sp, 0x8
- ldr r0, _08002F90
- str r0, [sp]
- movs r0, 0x90
- lsls r0, 10
- str r0, [sp, 0x4]
- ldr r1, _08002F94
- movs r0, 0
- str r0, [r1]
- ldr r0, _08002F98
- ldr r2, _08002F9C
- mov r1, sp
- movs r3, 0x20
- bl DoInitHeap
- add sp, 0x8
- pop {r0}
- bx r0
- .align 2, 0
-_08002F90: .4byte gUnknown_20011D0
-_08002F94: .4byte gUnknown_2000EA8
-_08002F98: .4byte gUnknown_2000EB0
-_08002F9C: .4byte gUnknown_2000ED0
- thumb_func_end InitHeapInternal
-
- thumb_func_start DoInitHeap
-DoInitHeap:
- push {r4-r6,lr}
- mov r6, r9
- mov r5, r8
- push {r5,r6}
- ldr r4, [r1, 0x4]
- mov r9, r4
- movs r4, 0x4
- negs r4, r4
- mov r5, r9
- ands r5, r4
- mov r9, r5
- ldr r6, _08002FFC
- ldr r4, _08003000
- mov r8, r4
- ldr r5, [r4]
- lsls r4, r5, 2
- adds r4, r6
- str r0, [r4]
- adds r5, 0x1
- mov r4, r8
- str r5, [r4]
- ldr r5, [r1]
- str r5, [r0, 0x14]
- mov r1, r9
- str r1, [r0, 0x18]
- movs r1, 0x2
- str r1, [r0]
- movs r4, 0
- str r4, [r0, 0x4]
- str r2, [r0, 0x8]
- movs r1, 0x1
- str r1, [r0, 0xC]
- str r3, [r0, 0x10]
- str r4, [r2]
- str r4, [r2, 0x4]
- str r5, [r2, 0xC]
- mov r5, r9
- str r5, [r2, 0x10]
- str r4, [r2, 0x14]
- str r4, [r2, 0x8]
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_08002FFC: .4byte gUnknown_2000E88
-_08003000: .4byte gUnknown_2000EA8
- thumb_func_end DoInitHeap
-
- thumb_func_start InitSubHeap
-InitSubHeap:
- push {r4,r5,lr}
- sub sp, 0x8
- adds r3, r2, 0
- lsls r4, r3, 1
- adds r4, r3
- movs r2, 0x4
- negs r2, r2
- lsls r4, 3
- ldr r5, [r1, 0x4]
- subs r5, r4
- ands r5, r2
- ldr r2, [r1]
- adds r4, r2, r4
- str r4, [sp]
- str r5, [sp, 0x4]
- mov r1, sp
- bl DoInitHeap
- add sp, 0x8
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end InitSubHeap
-
+
thumb_func_start xxx_memory_attr_related
xxx_memory_attr_related:
push {lr}
@@ -454,7 +193,7 @@ _0800315E:
_08003168:
movs r7, 0x1
negs r7, r7
- ldr r6, _080031A4
+ ldr r6, =0x24001
ldr r0, [r4, 0xC]
subs r3, r0, 0x1
lsls r0, r3, 1
@@ -486,7 +225,7 @@ _080031A0:
adds r0, r7, 0
b _080031AC
.align 2, 0
-_080031A4: .4byte 0x00024001
+ .pool
_080031A8:
movs r0, 0x1
negs r0, r0
@@ -561,13 +300,12 @@ _08003222:
str r2, [r1, 0xC]
cmp r2, r8
ble _08003240
- ldr r0, _08003238
- ldr r1, _0800323C
+ ldr r0, =gUnknown_80B7EB8
+ ldr r1, =gUnknown_80B7EC4
mov r3, r8
bl FatalError
.align 2, 0
-_08003238: .4byte gUnknown_80B7EB8
-_0800323C: .4byte gUnknown_80B7EC4
+ .pool
_08003240:
ldr r0, [sp, 0xC]
add r0, r9
@@ -671,13 +409,12 @@ _080032F6:
str r2, [r7, 0xC]
cmp r2, r8
ble _08003314
- ldr r0, _0800330C
- ldr r1, _08003310
+ ldr r0, =gUnknown_80B7EFC
+ ldr r1, =gUnknown_80B7EC4
mov r3, r8
bl FatalError
.align 2, 0
-_0800330C: .4byte gUnknown_80B7EFC
-_08003310: .4byte gUnknown_80B7EC4
+ .pool
_08003314:
ldr r0, [r4, 0x10]
ldr r1, [sp, 0x10]
@@ -717,7 +454,7 @@ _LocateSet:
adds r6, r2, 0
cmp r5, 0
bne _0800335C
- ldr r5, _08003390
+ ldr r5, =gMainHeapDescriptor
_0800335C:
asrs r4, r6, 8
movs r0, 0x1
@@ -743,7 +480,7 @@ _0800335C:
ldr r0, [r0, 0xC]
b _080033CC
.align 2, 0
-_08003390: .4byte gUnknown_2000EB0
+ .pool
_08003394:
adds r0, r5, 0
adds r1, r4, 0
@@ -760,16 +497,15 @@ _08003394:
ldr r0, [r0, 0xC]
b _080033CC
_080033B4:
- ldr r0, _080033C4
- ldr r1, _080033C8
+ ldr r0, =gUnknown_80B7F14
+ ldr r1, =gUnknown_80B7F20
str r4, [sp]
str r6, [sp, 0x4]
adds r2, r5, 0
adds r3, r7, 0
bl FatalError
.align 2, 0
-_080033C4: .4byte gUnknown_80B7F14
-_080033C8: .4byte gUnknown_80B7F20
+ .pool
_080033CC:
add sp, 0x8
pop {r4-r7}
@@ -782,25 +518,25 @@ MemoryAlloc:
push {lr}
adds r3, r0, 0
adds r2, r1, 0
- ldr r0, _080033E8
+ ldr r0, =gMainHeapDescriptor
adds r1, r3, 0
bl DoAlloc
pop {r1}
bx r1
.align 2, 0
-_080033E8: .4byte gUnknown_2000EB0
+ .pool
thumb_func_end MemoryAlloc
thumb_func_start MemoryFree
MemoryFree:
push {lr}
adds r1, r0, 0
- ldr r0, _080033FC
+ ldr r0, =gMainHeapDescriptor
bl DoFree
pop {r0}
bx r0
.align 2, 0
-_080033FC: .4byte gUnknown_2000EB0
+ .pool
thumb_func_end MemoryFree
thumb_func_start MemoryLocate_LocalCreate
@@ -813,7 +549,7 @@ MemoryLocate_LocalCreate:
adds r6, r3, 0
cmp r4, 0
bne _08003412
- ldr r4, _0800342C
+ ldr r4, =gMainHeapDescriptor
_08003412:
adds r0, r4, 0
movs r1, 0x9
@@ -822,14 +558,12 @@ _08003412:
adds r1, r0, 0
cmp r1, 0
bge _08003438
- ldr r0, _08003430
- ldr r1, _08003434
+ ldr r0, =gUnknown_80B7F88
+ ldr r1, =gUnknown_80B7F94
adds r2, r5, 0
bl FatalError
.align 2, 0
-_0800342C: .4byte gUnknown_2000EB0
-_08003430: .4byte gUnknown_80B7F88
-_08003434: .4byte gUnknown_80B7F94
+ .pool
_08003438:
str r6, [sp]
adds r0, r4, 0
@@ -893,11 +627,11 @@ _080034A2:
movs r0, 0
mov r12, r0
movs r3, 0
- ldr r6, _080034E0
+ ldr r6, =gHeapCount
ldr r0, [r6]
cmp r12, r0
bge _080034F2
- ldr r5, _080034E4
+ ldr r5, =gHeapDescriptorList
adds r1, r6, 0
adds r7, r5, 0
movs r2, 0
@@ -911,7 +645,7 @@ _080034BC:
str r0, [r1]
cmp r3, r0
bge _080034F8
- ldr r1, _080034E0
+ ldr r1, =gHeapCount
adds r2, r7
_080034D2:
ldr r0, [r2, 0x4]
@@ -922,8 +656,7 @@ _080034D2:
blt _080034D2
b _080034F8
.align 2, 0
-_080034E0: .4byte gUnknown_2000EA8
-_080034E4: .4byte gUnknown_2000E88
+ .pool
_080034E8:
adds r2, 0x4
adds r3, 0x1
@@ -966,7 +699,7 @@ DoFree:
adds r4, r0, 0
cmp r4, 0
bne _0800352E
- ldr r4, _080035D4
+ ldr r4, =gMainHeapDescriptor
_0800352E:
cmp r1, 0
beq _080035E4
@@ -1056,7 +789,7 @@ _080035BA:
blt _080035BA
b _080035E4
.align 2, 0
-_080035D4: .4byte gUnknown_2000EB0
+ .pool
_080035D8:
movs r0, 0x1
add r8, r0
diff --git a/asm/rom_header.inc b/asm/rom_header.inc
index 09b95ec..6730efa 100644
--- a/asm/rom_header.inc
+++ b/asm/rom_header.inc
@@ -1,37 +1,19 @@
.global RomHeaderNintendoLogo
RomHeaderNintendoLogo:
- .byte 0x24,0xff,0xae,0x51,0x69,0x9a,0xa2,0x21
- .byte 0x3d,0x84,0x82,0x0a,0x84,0xe4,0x09,0xad
- .byte 0x11,0x24,0x8b,0x98,0xc0,0x81,0x7f,0x21
- .byte 0xa3,0x52,0xbe,0x19,0x93,0x09,0xce,0x20
- .byte 0x10,0x46,0x4a,0x4a,0xf8,0x27,0x31,0xec
- .byte 0x58,0xc7,0xe8,0x33,0x82,0xe3,0xce,0xbf
- .byte 0x85,0xf4,0xdf,0x94,0xce,0x4b,0x09,0xc1
- .byte 0x94,0x56,0x8a,0xc0,0x13,0x72,0xa7,0xfc
- .byte 0x9f,0x84,0x4d,0x73,0xa3,0xca,0x9a,0x61
- .byte 0x58,0x97,0xa3,0x27,0xfc,0x03,0x98,0x76
- .byte 0x23,0x1d,0xc7,0x61,0x03,0x04,0xae,0x56
- .byte 0xbf,0x38,0x84,0x00,0x40,0xa7,0x0e,0xfd
- .byte 0xff,0x52,0xfe,0x03,0x6f,0x95,0x30,0xf1
- .byte 0x97,0xfb,0xc0,0x85,0x60,0xd6,0x80,0x25
- .byte 0xa9,0x63,0xbe,0x03,0x01,0x4e,0x38,0xe2
- .byte 0xf9,0xa2,0x34,0xff,0xbb,0x3e,0x03,0x44
- .byte 0x78,0x00,0x90,0xcb,0x88,0x11,0x3a,0x94
- .byte 0x65,0xc0,0x7c,0x63,0x87,0xf0,0x3c,0xaf
- .byte 0xd6,0x25,0xe4,0x8b,0x38,0x0a,0xac,0x72
- .byte 0x21,0xd4,0xf8,0x07
+ .space 156
RomHeaderGameTitle:
- .ascii "POKE DUNGEON"
+ .space 12
+ .global RomHeaderGameCode
RomHeaderGameCode:
- .ascii "B24E"
+ .space 4
RomHeaderMakerCode:
- .ascii "01"
+ .space 2
RomHeaderMagic:
- .byte 0x96
+ .byte 0
RomHeaderMainUnitCode:
.byte 0
@@ -42,11 +24,12 @@ RomHeaderDeviceType:
RomHeaderReserved1:
.space 7
+ .global RomHeaderSoftwareVersion
RomHeaderSoftwareVersion:
.byte 0
RomHeaderChecksum:
- .byte 0xA4
+ .byte 0
RomHeaderReserved2:
.space 2
diff --git a/asm/save.s b/asm/save.s
index f88c219..2ebaaa4 100644
--- a/asm/save.s
+++ b/asm/save.s
@@ -5,116 +5,18 @@
.text
- thumb_func_start sub_8011C1C
-sub_8011C1C:
- ldr r0, _08011C24
- ldr r0, [r0]
- bx lr
- .align 2, 0
-_08011C24: .4byte gUnknown_203B17C
- thumb_func_end sub_8011C1C
-
- thumb_func_start sub_8011C28
-sub_8011C28:
- ldr r1, _08011C30
- str r0, [r1]
- bx lr
- .align 2, 0
-_08011C30: .4byte gUnknown_203B17C
- thumb_func_end sub_8011C28
-
- thumb_func_start sub_8011C34
-sub_8011C34:
- ldr r0, _08011C3C
- ldr r0, [r0]
- bx lr
- .align 2, 0
-_08011C3C: .4byte gUnknown_202DE28
- thumb_func_end sub_8011C34
-
- thumb_func_start sub_8011C40
-sub_8011C40:
- ldr r1, _08011C48
- str r0, [r1]
- bx lr
- .align 2, 0
-_08011C48: .4byte gUnknown_202DE28
- thumb_func_end sub_8011C40
-
- thumb_func_start sub_8011C4C
-sub_8011C4C:
- ldr r0, _08011C54
- ldr r0, [r0]
- bx lr
- .align 2, 0
-_08011C54: .4byte gUnknown_203B180
- thumb_func_end sub_8011C4C
-
- thumb_func_start sub_8011C58
-sub_8011C58:
- push {r4,lr}
- adds r4, r0, 0
- movs r2, 0
- lsrs r1, 2
- cmp r1, 0x1
- ble _08011C72
- adds r3, r4, 0x4
- subs r1, 0x1
-_08011C68:
- ldm r3!, {r0}
- adds r2, r0
- subs r1, 0x1
- cmp r1, 0
- bne _08011C68
-_08011C72:
- str r2, [r4]
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_8011C58
-
- thumb_func_start sub_8011C7C
-sub_8011C7C:
- push {r4,lr}
- adds r4, r0, 0
- movs r2, 0
- lsrs r1, 2
- cmp r1, 0x1
- ble _08011C96
- adds r3, r4, 0x4
- subs r1, 0x1
-_08011C8C:
- ldm r3!, {r0}
- adds r2, r0
- subs r1, 0x1
- cmp r1, 0
- bne _08011C8C
-_08011C96:
- ldr r0, [r4]
- cmp r0, r2
- bne _08011CA0
- movs r0, 0
- b _08011CA2
-_08011CA0:
- movs r0, 0x1
-_08011CA2:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_8011C7C
-
thumb_func_start sub_8011CA8
sub_8011CA8:
push {lr}
adds r3, r0, 0
adds r2, r1, 0
- ldr r0, _08011CCC
+ ldr r0, =gUnknown_203B184
ldr r0, [r0]
- ldr r0, _08011CD0
+ ldr r0, =0xfff
adds r1, r2, r0
cmp r1, 0
bge _08011CBE
- ldr r0, _08011CD4
+ ldr r0, =0x1ffe
adds r1, r2, r0
_08011CBE:
asrs r1, 12
@@ -124,13 +26,11 @@ _08011CBE:
pop {r0}
bx r0
.align 2, 0
-_08011CCC: .4byte gUnknown_203B184
-_08011CD0: .4byte 0x00000fff
-_08011CD4: .4byte 0x00001ffe
+ .pool
thumb_func_end sub_8011CA8
- thumb_func_start sub_8011CD8
-sub_8011CD8:
+ thumb_func_start WriteSaveSector
+WriteSaveSector:
push {r4-r6,lr}
adds r5, r1, 0
adds r4, r2, 0
@@ -139,7 +39,7 @@ sub_8011CD8:
bl sub_8011CA8
adds r0, r5, 0
adds r1, r4, 0
- bl sub_8011C58
+ bl CalculateChecksum
ldr r0, _08011D04
ldr r0, [r0]
cmp r0, 0
@@ -183,10 +83,10 @@ _08011D3A:
pop {r4-r6}
pop {r1}
bx r1
- thumb_func_end sub_8011CD8
+ thumb_func_end WriteSaveSector
- thumb_func_start sub_8011D40
-sub_8011D40:
+ thumb_func_start ReadSaveSector
+ReadSaveSector:
push {r4-r6,lr}
adds r5, r1, 0
adds r4, r2, 0
@@ -228,7 +128,7 @@ _08011D8A:
_08011D8E:
adds r0, r5, 0
adds r1, r4, 0
- bl sub_8011C7C
+ bl ValidateChecksum
lsls r0, 24
cmp r0, 0
bne _08011DA0
@@ -240,7 +140,7 @@ _08011DA2:
pop {r4-r6}
pop {r1}
bx r1
- thumb_func_end sub_8011D40
+ thumb_func_end ReadSaveSector
thumb_func_start sub_8011DA8
sub_8011DA8:
@@ -265,14 +165,14 @@ sub_8011DAC:
adds r0, r6, 0
adds r1, r5, 0
mov r2, r8
- bl sub_8011D40
+ bl ReadSaveSector
adds r7, r0, 0
cmp r7, 0
beq _08011DE8
adds r0, r6, 0
adds r1, r5, 0
mov r2, r8
- bl sub_8011D40
+ bl ReadSaveSector
adds r7, r0, 0
b _08011DF0
.align 2, 0
@@ -491,7 +391,7 @@ _08011F98: .4byte 0x00000444
thumb_func_start sub_8011F9C
sub_8011F9C:
push {lr}
- bl sub_8011D40
+ bl ReadSaveSector
pop {r1}
bx r1
thumb_func_end sub_8011F9C
@@ -511,7 +411,7 @@ sub_8011FA8:
mov r0, sp
adds r1, r5, 0
adds r2, r4, 0
- bl sub_8011D40
+ bl ReadSaveSector
adds r2, r0, 0
cmp r2, 0
bne _08011FD8
@@ -554,7 +454,7 @@ sub_8011FF8:
mov r0, sp
adds r1, r5, 0
adds r2, r4, 0
- bl sub_8011D40
+ bl ReadSaveSector
cmp r0, 0
bne _08012028
ldr r1, [r5, 0x14]
@@ -722,12 +622,12 @@ _080120E8:
adds r0, r7, 0
adds r1, r6, 0
adds r2, r4, 0
- bl sub_8011CD8
+ bl WriteSaveSector
adds r5, r0, 0
adds r0, r7, 0
adds r1, r6, 0
adds r2, r4, 0
- bl sub_8011CD8
+ bl WriteSaveSector
adds r4, r0, 0
adds r0, r6, 0
bl MemoryFree
@@ -760,7 +660,7 @@ _080121CE:
thumb_func_start sub_80121D4
sub_80121D4:
push {lr}
- bl sub_8011CD8
+ bl WriteSaveSector
pop {r1}
bx r1
thumb_func_end sub_80121D4
@@ -796,7 +696,7 @@ sub_80121E0:
mov r0, sp
adds r1, r4, 0
adds r2, r6, 0
- bl sub_8011CD8
+ bl WriteSaveSector
adds r5, r0, 0
adds r0, r4, 0
bl MemoryFree
@@ -1792,22 +1692,4 @@ _080129F2:
bx r1
thumb_func_end sub_80128B0
- thumb_func_start sub_80129FC
-sub_80129FC:
- push {r4,lr}
- ldr r4, _08012A14
- ldr r0, [r4]
- cmp r0, 0
- beq _08012A0E
- bl MemoryFree
- movs r0, 0
- str r0, [r4]
-_08012A0E:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08012A14: .4byte gUnknown_203B194
- thumb_func_end sub_80129FC
-
.align 2, 0 @ Don't pad with nop.
diff --git a/asm/sprite.s b/asm/sprite.s
index 5081f37..284526c 100644
--- a/asm/sprite.s
+++ b/asm/sprite.s
@@ -5,19 +5,8 @@
.text
- thumb_func_start InitSprites
-InitSprites:
- push {lr}
- movs r0, 0x1
- bl sub_8004D8C
- movs r0, 0
- bl SetSavingIconCoords
- pop {r0}
- bx r0
- thumb_func_end InitSprites
-
- thumb_func_start sub_8004D8C
-sub_8004D8C:
+ thumb_func_start ResetSprites
+ResetSprites:
push {r4,r5,lr}
lsls r0, 24
lsrs r4, r0, 24
@@ -131,8 +120,8 @@ _08004E50:
pop {r0}
bx r0
.align 2, 0
-_08004E68: .4byte gUnknown_20266A8
-_08004E6C: .4byte gUnknown_2026E30
+_08004E68: .4byte gSpriteCount
+_08004E6C: .4byte gCharMemCursor
_08004E70: .4byte 0x06010000
_08004E74: .4byte gUnknown_203B074
_08004E78: .4byte gUnknown_20266B0
@@ -140,7 +129,7 @@ _08004E7C: .4byte gUnknown_20256A0
_08004E80: .4byte gUnknown_20262A8
_08004E84: .4byte gUnknown_2025EA8
_08004E88: .4byte 0x00000804
- thumb_func_end sub_8004D8C
+ thumb_func_end ResetSprites
thumb_func_start sub_8004E8C
sub_8004E8C:
@@ -241,7 +230,7 @@ _08004F20:
strh r0, [r1, 0x2]
b _08004F86
.align 2, 0
-_08004F40: .4byte gUnknown_20266A8
+_08004F40: .4byte gSpriteCount
_08004F44: .4byte 0x0000fcff
_08004F48: .4byte 0x0000f1ff
_08004F4C: .4byte 0x000003ff
@@ -459,7 +448,7 @@ _080050D8:
strh r0, [r2, 0x2]
b _08005128
.align 2, 0
-_080050F4: .4byte gUnknown_20266A8
+_080050F4: .4byte gSpriteCount
_080050F8: .4byte gUnknown_20262A8
_080050FC:
ldrh r1, [r6]
@@ -524,7 +513,7 @@ _08005168:
bx r0
.align 2, 0
_08005174: .4byte gUnknown_2025EA8
-_08005178: .4byte gUnknown_20266A8
+_08005178: .4byte gSpriteCount
_0800517C: .4byte gUnknown_20256A0
thumb_func_end AddSprite
@@ -739,8 +728,8 @@ _080052F2:
bx r0
.align 2, 0
_080052F8: .4byte gUnknown_203B074
-_080052FC: .4byte gUnknown_2026E30
-_08005300: .4byte gUnknown_2026E30
+_080052FC: .4byte gCharMemCursor
+_08005300: .4byte gCharMemCursor
thumb_func_end sub_80052BC
thumb_func_start sub_8005304
@@ -801,7 +790,7 @@ sub_800533C:
str r0, [r1]
b _0800538E
.align 2, 0
-_08005368: .4byte gUnknown_2026E30
+_08005368: .4byte gCharMemCursor
_0800536C: .4byte 0x06010000
_08005370:
cmp r6, 0
diff --git a/asmdiff.sh b/asmdiff.sh
new file mode 100644
index 0000000..a4afe79
--- /dev/null
+++ b/asmdiff.sh
@@ -0,0 +1,7 @@
+#!/bin/bash
+
+OBJDUMP="$DEVKITARM/bin/arm-none-eabi-objdump -D -bbinary -marmv4t -Mforce-thumb"
+OPTIONS="--start-address=$(($1)) --stop-address=$(($1 + $2))"
+$OBJDUMP $OPTIONS baserom.gba > baserom.dump
+$OBJDUMP $OPTIONS pmd_red.gba > pmd_red.dump
+diff -u baserom.dump pmd_red.dump | less \ No newline at end of file
diff --git a/constants/m4a_constants.inc b/constants/m4a_constants.inc
new file mode 100644
index 0000000..62ca5bb
--- /dev/null
+++ b/constants/m4a_constants.inc
@@ -0,0 +1,199 @@
+ .equiv ID_NUMBER, 0x68736d53
+
+ .equiv PCM_DMA_BUF_SIZE, 1584
+
+ .equiv TONEDATA_TYPE_CGB, 0x07
+ .equiv TONEDATA_TYPE_FIX, 0x08
+ .equiv TONEDATA_TYPE_SPL, 0x40 @ key split
+ .equiv TONEDATA_TYPE_RHY, 0x80 @ rhythm
+
+ .macro struct_begin
+ .struct 0
+ .endm
+
+ .macro struct_field name, size
+\name:
+ .struct \name + \size
+ .endm
+
+ struct_begin
+ struct_field o_SoundInfo_ident, 4
+ struct_field o_SoundInfo_pcmDmaCounter, 1
+ struct_field o_SoundInfo_reverb, 1
+ struct_field o_SoundInfo_maxChans, 1
+ struct_field o_SoundInfo_masterVolume, 1
+ struct_field o_SoundInfo_freq, 1
+ struct_field o_SoundInfo_mode, 1
+ struct_field o_SoundInfo_c15, 1
+ struct_field o_SoundInfo_pcmDmaPeriod, 1
+ struct_field o_SoundInfo_maxLines, 1
+ struct_field o_SoundInfo_gap, 3
+ struct_field o_SoundInfo_pcmSamplesPerVBlank, 4
+ struct_field o_SoundInfo_pcmFreq, 4
+ struct_field o_SoundInfo_divFreq, 4
+ struct_field o_SoundInfo_cgbChans, 4
+ struct_field o_SoundInfo_func, 4
+ struct_field o_SoundInfo_intp, 4
+ struct_field o_SoundInfo_CgbSound, 4
+ struct_field o_SoundInfo_CgbOscOff, 4
+ struct_field o_SoundInfo_MidiKeyToCgbFreq, 4
+ struct_field o_SoundInfo_MPlayJumpTable, 4
+ struct_field o_SoundInfo_plynote, 4
+ struct_field o_SoundInfo_ExtVolPit, 4
+ struct_field o_SoundInfo_gap2, 16
+ struct_field o_SoundInfo_chans, 768
+ struct_field o_SoundInfo_pcmBuffer, PCM_DMA_BUF_SIZE * 2
+ struct_field SoundInfo_size, 0
+
+ struct_begin
+ struct_field o_SoundChannel_status, 1
+ struct_field o_SoundChannel_type, 1
+ struct_field o_SoundChannel_rightVolume, 1
+ struct_field o_SoundChannel_leftVolume, 1
+ struct_field o_SoundChannel_attack, 1
+ struct_field o_SoundChannel_decay, 1
+ struct_field o_SoundChannel_sustain, 1
+ struct_field o_SoundChannel_release, 1
+ struct_field o_SoundChannel_ky, 1
+ struct_field o_SoundChannel_ev, 1
+ struct_field o_SoundChannel_er, 1
+ struct_field o_SoundChannel_el, 1
+ struct_field o_SoundChannel_iev, 1
+ struct_field o_SoundChannel_iel, 1
+ struct_field o_SoundChannel_d1, 1
+ struct_field o_SoundChannel_d2, 1
+ struct_field o_SoundChannel_gt, 1
+ struct_field o_SoundChannel_mk, 1
+ struct_field o_SoundChannel_ve, 1
+ struct_field o_SoundChannel_pr, 1
+ struct_field o_SoundChannel_rp, 1
+ struct_field o_SoundChannel_d3, 3
+ struct_field o_SoundChannel_ct, 4
+ struct_field o_SoundChannel_fw, 4
+ struct_field o_SoundChannel_freq, 4
+ struct_field o_SoundChannel_wav, 4
+ struct_field o_SoundChannel_cp, 4
+ struct_field o_SoundChannel_track, 4
+ struct_field o_SoundChannel_pp, 4
+ struct_field o_SoundChannel_np, 4
+ struct_field o_SoundChannel_d4, 4
+ struct_field o_SoundChannel_xpi, 2
+ struct_field o_SoundChannel_xpc, 2
+ struct_field SoundChannel_size, 0
+
+ struct_begin
+ struct_field o_MusicPlayerTrack_flags, 1
+ struct_field o_MusicPlayerTrack_wait, 1
+ struct_field o_MusicPlayerTrack_patternLevel, 1
+ struct_field o_MusicPlayerTrack_repN, 1
+ struct_field o_MusicPlayerTrack_gateTime, 1
+ struct_field o_MusicPlayerTrack_key, 1
+ struct_field o_MusicPlayerTrack_velocity, 1
+ struct_field o_MusicPlayerTrack_runningStatus, 1
+ struct_field o_MusicPlayerTrack_keyM, 1
+ struct_field o_MusicPlayerTrack_pitM, 1
+ struct_field o_MusicPlayerTrack_keyShift, 1
+ struct_field o_MusicPlayerTrack_keyShiftX, 1
+ struct_field o_MusicPlayerTrack_tune, 1
+ struct_field o_MusicPlayerTrack_pitX, 1
+ struct_field o_MusicPlayerTrack_bend, 1
+ struct_field o_MusicPlayerTrack_bendRange, 1
+ struct_field o_MusicPlayerTrack_volMR, 1
+ struct_field o_MusicPlayerTrack_volML, 1
+ struct_field o_MusicPlayerTrack_vol, 1
+ struct_field o_MusicPlayerTrack_volX, 1
+ struct_field o_MusicPlayerTrack_pan, 1
+ struct_field o_MusicPlayerTrack_panX, 1
+ struct_field o_MusicPlayerTrack_modM, 1
+ struct_field o_MusicPlayerTrack_mod, 1
+ struct_field o_MusicPlayerTrack_modT, 1
+ struct_field o_MusicPlayerTrack_lfoSpeed, 1
+ struct_field o_MusicPlayerTrack_lfoSpeedC, 1
+ struct_field o_MusicPlayerTrack_lfoDelay, 1
+ struct_field o_MusicPlayerTrack_lfoDelayC, 1
+ struct_field o_MusicPlayerTrack_priority, 1
+ struct_field o_MusicPlayerTrack_echoVolume, 1
+ struct_field o_MusicPlayerTrack_echoLength, 1
+ struct_field o_MusicPlayerTrack_chan, 4
+ struct_field o_MusicPlayerTrack_ToneData_type, 1
+ struct_field o_MusicPlayerTrack_ToneData_key, 1
+ struct_field o_MusicPlayerTrack_ToneData_length, 1
+ struct_field o_MusicPlayerTrack_ToneData_pan_sweep, 1
+ struct_field o_MusicPlayerTrack_ToneData_wav, 4
+ struct_field o_MusicPlayerTrack_ToneData_attack, 1
+ struct_field o_MusicPlayerTrack_ToneData_decay, 1
+ struct_field o_MusicPlayerTrack_ToneData_sustain, 1
+ struct_field o_MusicPlayerTrack_ToneData_release, 1
+ struct_field o_MusicPlayerTrack_gap, 10
+ struct_field o_MusicPlayerTrack_unk_3A, 2
+ struct_field o_MusicPlayerTrack_unk_3C, 4
+ struct_field o_MusicPlayerTrack_cmdPtr, 4
+ struct_field o_MusicPlayerTrack_patternStack, 12
+ struct_field MusicPlayerTrack_size, 0
+
+ .equiv o_MusicPlayerTrack_ToneData_keySplitTable, o_MusicPlayerTrack_ToneData_attack
+
+ struct_begin
+ struct_field o_MusicPlayerInfo_songHeader, 4
+ struct_field o_MusicPlayerInfo_status, 4
+ struct_field o_MusicPlayerInfo_trackCount, 1
+ struct_field o_MusicPlayerInfo_priority, 1
+ struct_field o_MusicPlayerInfo_cmd, 1
+ struct_field o_MusicPlayerInfo_unk_B, 1
+ struct_field o_MusicPlayerInfo_clock, 4
+ struct_field o_MusicPlayerInfo_gap, 8
+ struct_field o_MusicPlayerInfo_memAccArea, 4
+ struct_field o_MusicPlayerInfo_tempoD, 2
+ struct_field o_MusicPlayerInfo_tempoU, 2
+ struct_field o_MusicPlayerInfo_tempoI, 2
+ struct_field o_MusicPlayerInfo_tempoC, 2
+ struct_field o_MusicPlayerInfo_fadeOI, 2
+ struct_field o_MusicPlayerInfo_fadeOC, 2
+ struct_field o_MusicPlayerInfo_fadeOV, 2
+ struct_field o_MusicPlayerInfo_padding, 2
+ struct_field o_MusicPlayerInfo_tracks, 4
+ struct_field o_MusicPlayerInfo_tone, 4
+ struct_field o_MusicPlayerInfo_ident, 4
+ struct_field o_MusicPlayerInfo_func, 4
+ struct_field o_MusicPlayerInfo_intp, 4
+ struct_field MusicPlayerInfo_size, 0
+
+ struct_begin
+ struct_field o_CgbChannel_sf, 1
+ struct_field o_CgbChannel_ty, 1
+ struct_field o_CgbChannel_rightVolume, 1
+ struct_field o_CgbChannel_leftVolume, 1
+ struct_field o_CgbChannel_at, 1
+ struct_field o_CgbChannel_de, 1
+ struct_field o_CgbChannel_su, 1
+ struct_field o_CgbChannel_re, 1
+ struct_field o_CgbChannel_ky, 1
+ struct_field o_CgbChannel_ev, 1
+ struct_field o_CgbChannel_eg, 1
+ struct_field o_CgbChannel_ec, 1
+ struct_field o_CgbChannel_echoVolume, 1
+ struct_field o_CgbChannel_echoLength, 1
+ struct_field o_CgbChannel_d1, 1
+ struct_field o_CgbChannel_d2, 1
+ struct_field o_CgbChannel_gt, 1
+ struct_field o_CgbChannel_mk, 1
+ struct_field o_CgbChannel_ve, 1
+ struct_field o_CgbChannel_pr, 1
+ struct_field o_CgbChannel_rp, 1
+ struct_field o_CgbChannel_d3, 3
+ struct_field o_CgbChannel_d5, 1
+ struct_field o_CgbChannel_sg, 1
+ struct_field o_CgbChannel_n4, 1
+ struct_field o_CgbChannel_pan, 1
+ struct_field o_CgbChannel_panMask, 1
+ struct_field o_CgbChannel_mo, 1
+ struct_field o_CgbChannel_le, 1
+ struct_field o_CgbChannel_sw, 1
+ struct_field o_CgbChannel_fr, 4
+ struct_field o_CgbChannel_wp, 4
+ struct_field o_CgbChannel_cp, 4
+ struct_field o_CgbChannel_tp, 4
+ struct_field o_CgbChannel_pp, 4
+ struct_field o_CgbChannel_np, 4
+ struct_field o_CgbChannel_d4, 8
+ struct_field CgbChannel_size, 0
diff --git a/data/data_80B9BB8.s b/data/data_80B9BB8.s
index 3b51eba..6c98e87 100644
--- a/data/data_80B9BB8.s
+++ b/data/data_80B9BB8.s
@@ -11966,42 +11966,3 @@ gUnknown_812F1F8: @ 812F1F8
gUnknown_813237C: @ 813237C
.incbin "baserom.gba", 0x13237C, 0x13D610
- .global gUnknown_826F98C
-gUnknown_826F98C: @ 826F98C
- .incbin "baserom.gba", 0x26F98C, 0x90
-
- .global gUnknown_826FA1C
-gUnknown_826FA1C: @ 826FA1C
- .incbin "baserom.gba", 0x26FA1C, 0xB4
-
- .global gUnknown_826FAD0
-gUnknown_826FAD0: @ 826FAD0
- .incbin "baserom.gba", 0x26FAD0, 0x30
-
- .global gUnknown_826FB00
-gUnknown_826FB00: @ 826FB00
- .incbin "baserom.gba", 0x26FB00, 0x18
-
- .global gUnknown_826FB18
-gUnknown_826FB18: @ 826FB18
- .incbin "baserom.gba", 0x26FB18, 0x84
-
- .global gUnknown_826FB9C
-gUnknown_826FB9C: @ 826FB9C
- .incbin "baserom.gba", 0x26FB9C, 0x18
-
- .global gUnknown_826FBB4
-gUnknown_826FBB4: @ 826FBB4
- .incbin "baserom.gba", 0x26FBB4, 0x3C
-
- .global gUnknown_826FBF0
-gUnknown_826FBF0: @ 826FBF0
- .incbin "baserom.gba", 0x26FBF0, 0x10
-
- .global gUnknown_826FC00
-gUnknown_826FC00: @ 826FC00
- .incbin "baserom.gba", 0x26FC00, 0x34
-
- .global gUnknown_826FC34
-gUnknown_826FC34: @ 826FC34
- .incbin "baserom.gba", 0x26FC34, 0x30
diff --git a/data/sound_data.s b/data/sound_data.s
index 043b59a..8ac86f7 100644
--- a/data/sound_data.s
+++ b/data/sound_data.s
@@ -1,9 +1,8 @@
.section .rodata
- .global gUnknown_9E8665C
-gUnknown_9E8665C: @ 9E8665C
- .incbin "baserom.gba", 0x1E8665C, 0x60
+ .include "include/macros/m4a.inc"
- .global gUnknown_9E866BC
-gUnknown_9E866BC: @ 9E866BC
- .incbin "baserom.gba", 0x1E866BC
+ .include "sound/music_player_table.inc"
+ .include "sound/song_table.inc"
+
+ .incbin "baserom.gba", 0x1E8841C
diff --git a/include/gba/defines.h b/include/gba/defines.h
index 7fd429d..5f0123a 100644
--- a/include/gba/defines.h
+++ b/include/gba/defines.h
@@ -8,6 +8,8 @@
#define IWRAM_DATA __attribute__((section("iwram_data")))
#define EWRAM_DATA __attribute__((section("ewram_data")))
+#define UNUSED __attribute__((unused))
+#define NAKED __attribute__((naked))
#define ALIGNED(n) __attribute__((aligned(n)))
@@ -59,4 +61,4 @@
#define WIN_RANGE(a, b) (((a) << 8) | (b))
-#endif // GUARD_GBA_DEFINES
+#endif // GUARD_GBA_DEFINES \ No newline at end of file
diff --git a/include/global.h b/include/global.h
index 75592d5..66c1b6d 100644
--- a/include/global.h
+++ b/include/global.h
@@ -1,10 +1,11 @@
#ifndef GUARD_GLOBAL_H
#define GUARD_GLOBAL_H
+#include <string.h>
#include "gba/gba.h"
// IDE support
-#ifdef __APPLE__
+#if defined(__APPLE__) || defined(__CYGWIN__)
#define _(x) x
#define __(x) x
#define INCBIN_U8 {0}
@@ -13,9 +14,6 @@
#define INCBIN_S8 {0}
#define INCBIN_S16 {0}
#define INCBIN_S32 {0}
-void * memcpy (void *, const void *, size_t);
-void * memset (void *, int, size_t);
-int strcmp (const char *, const char *);
#endif
// Prevent cross-jump optimization.
@@ -26,14 +24,6 @@ int strcmp (const char *, const char *);
#define asm_unified(x) asm(".syntax unified\n" x "\n.syntax divided\n")
-#define nonmatching(fndec, x) {\
-__attribute__((naked))\
-fndec\
-{\
- asm_unified(x);\
-}\
-}
-
#define ARRAY_COUNT(array) (sizeof(array) / sizeof((array)[0]))
#endif // GUARD_GLOBAL_H
diff --git a/include/macros/m4a.inc b/include/macros/m4a.inc
new file mode 100644
index 0000000..6c5abc0
--- /dev/null
+++ b/include/macros/m4a.inc
@@ -0,0 +1,13 @@
+ .macro song label, music_player, unknown
+ .4byte \label
+ .2byte \music_player
+ .2byte \unknown
+ .endm
+
+ .macro music_player info_struct, track_struct, unknown_1, unknown_2
+ .4byte \info_struct
+ .4byte \track_struct
+ .byte \unknown_1
+ .space 1
+ .2byte \unknown_2
+ .endm
diff --git a/include/memory.h b/include/memory.h
new file mode 100644
index 0000000..4b1e587
--- /dev/null
+++ b/include/memory.h
@@ -0,0 +1,56 @@
+#ifndef GUARD_MEMORY_H
+#define GUARD_MEMORY_H
+
+#define HEAP_SIZE 0x24000
+
+struct HeapSettings
+{
+ u8 *start;
+ u32 size;
+};
+
+struct HeapMemoryBlock {
+ u8 *start;
+ s32 size;
+ s32 allocatedSize;
+};
+
+struct HeapFreeListElement
+{
+ u32 unk_atb;
+ u32 atb;
+ u32 grp;
+ struct HeapMemoryBlock block;
+};
+
+struct HeapDescriptor
+{
+ u32 unk0;
+ struct HeapDescriptor *parentHeap;
+ struct HeapFreeListElement *freeList;
+ s32 freeCount;
+ u32 freeListLength;
+ u8 *start;
+ u32 size;
+};
+
+void InitHeap(void);
+
+void MemoryClear8(u8 *dest, s32 size);
+void MemoryClear16(u16 *dest, s32 size);
+void MemoryClear32(u32 *dest, s32 size);
+void MemoryFill8(u8 *dest, u8 value, s32 size);
+void MemoryFill16(u16 *dest, u16 value, s32 size);
+void MemoryFill32(u32 *dest, u32 value, s32 size);
+void MemoryCopy8(u8 *dest, u8 *src, s32 size);
+void MemoryCopy16(u16 *dest, u16 *src, s32 size);
+void MemoryCopy32(u32 *dest, u32 *src, s32 size);
+void MemoryCopy8(u8 *dest, u8 *src, s32 size);
+void MemoryCopy16(u16 *dest, u16 *src, s32 size);
+void MemoryCopy32(u32 *dest, u32 *src, s32 size);
+
+void InitHeapInternal(void);
+void DoInitHeap(struct HeapDescriptor *, struct HeapSettings *, struct HeapFreeListElement *, u32);
+void InitSubHeap(struct HeapDescriptor *, struct HeapMemoryBlock *, u32);
+
+#endif // GUARD_MEMORY_H
diff --git a/ld_script.sed b/ld_script.sed
deleted file mode 100644
index 65e2610..0000000
--- a/ld_script.sed
+++ /dev/null
@@ -1,14 +0,0 @@
-/<EWRAM>/ {
- r sym_ewram.ld
- d
-}
-
-/<EWRAM2>/ {
- r sym_ewram2.ld
- d
-}
-
-/<IWRAM>/ {
- r sym_iwram.ld
- d
-}
diff --git a/ld_script.txt b/ld_script.txt
index f3ecc12..4fbe903 100755
--- a/ld_script.txt
+++ b/ld_script.txt
@@ -1,5 +1,8 @@
ENTRY(Start)
+gNumMusicPlayers = 8;
+gMaxLines = 0;
+
SECTIONS {
. = 0x2000000;
@@ -7,24 +10,16 @@ SECTIONS {
ALIGN(4)
{
ewram_start = .;
- <EWRAM>
- . = ALIGN(4);
+ INCLUDE "sym_ewram.ld"
src/agb_flash.o(.bss);
- . = ALIGN(4);
tools/agbcc/lib/libgcc.a:fp-bit.o(.bss);
- . = ALIGN(4);
tools/agbcc/lib/libgcc.a:dp-bit.o(.bss);
- . = ALIGN(4);
tools/agbcc/lib/libc.a:syscalls.o(.bss);
. = ALIGN(16);
- <EWRAM2>
- . = ALIGN(4);
+ INCLUDE "sym_ewram2.ld"
tools/agbcc/lib/libc.a:impure.o(.data);
- . = ALIGN(4);
tools/agbcc/lib/libc.a:locale.o(.data);
- . = ALIGN(4);
tools/agbcc/lib/libc.a:mallocr.o(.data);
- . = ALIGN(4);
gUnknown_203BC04 = .;
. = 0x40000;
}
@@ -35,7 +30,7 @@ SECTIONS {
ALIGN(4)
{
iwram_start = .;
- <IWRAM>
+ INCLUDE "sym_iwram.ld"
. = 0x8000;
}
@@ -48,13 +43,16 @@ SECTIONS {
asm/code.o(.text);
asm/event_flag.o(.text);
asm/code_8002774.o(.text);
+ src/memory.o(.text);
asm/memory.o(.text);
asm/code_80035F0.o(.text);
src/other_random.o(.text);
src/util.o(.text);
asm/bg_palette_buffer.o(.text);
+ src/bg_palette_buffer.o(.text);
asm/input.o(.text);
asm/code_8004AA0.o(.text);
+ src/sprite.o(.text);
asm/sprite.o(.text);
asm/code_800558C.o(.text);
src/random.o(.text);
@@ -67,9 +65,15 @@ SECTIONS {
asm/code_800B540.o(.text);
src/flash.o(.text);
asm/code_800D090.o(.text);
+ src/save.o(.text);
asm/save.o(.text);
+ src/save1.o(.text);
asm/code_8012A18.o(.text);
- asm/m4a.o(.text);
+ asm/m4a_1.o(.text);
+ src/m4a_2.o(.text);
+ asm/m4a_2.o(.text);
+ asm/m4a_3.o(.text);
+ src/m4a_4.o(.text);
asm/syscall.o(.text);
src/agb_flash.o(.text);
src/agb_flash_1m.o(.text);
@@ -134,23 +138,17 @@ SECTIONS {
data/data.o(.rodata);
src/file_system.o(.rodata);
data/data_80B9BB8.o(.rodata);
+ src/m4a_tables.o(.rodata);
src/agb_flash.o(.rodata);
src/agb_flash_1m.o(.rodata);
src/agb_flash_mx.o(.rodata);
src/agb_flash_le.o(.rodata);
- . = ALIGN(4);
tools/agbcc/lib/libc.a:sprintf.o(.rodata);
- . = ALIGN(4);
tools/agbcc/lib/libc.a:vfprintf.o(.rodata);
- . = ALIGN(4);
tools/agbcc/lib/libc.a:dtoa.o(.rodata);
- . = ALIGN(4);
tools/agbcc/lib/libc.a:impure.o(.rodata);
- . = ALIGN(4);
tools/agbcc/lib/libc.a:locale.o(.rodata);
- . = ALIGN(4);
tools/agbcc/lib/libc.a:mprec.o(.rodata);
- . = ALIGN(4);
tools/agbcc/lib/libc.a:syscalls.o(.rodata);
. = ALIGN(4);
data/data_8270000.o(.rodata);
@@ -165,7 +163,8 @@ SECTIONS {
unk_code_end = .;
}
- unk_code_ram_end = unk_code_ram + (unk_code_end - unk_code);
+ unk_code_section_size = (unk_code_end - unk_code);
+ unk_code_ram_end = unk_code_ram + unk_code_section_size;
end = unk_code_ram_end;
. = 0x8300000;
diff --git a/red.sha1 b/red.sha1
new file mode 100644
index 0000000..aefd29a
--- /dev/null
+++ b/red.sha1
@@ -0,0 +1 @@
+9f4cfc5b5f4859d17169a485462e977c7aac2b89 pmd_red.gba \ No newline at end of file
diff --git a/rom.md5 b/rom.md5
deleted file mode 100644
index f228854..0000000
--- a/rom.md5
+++ /dev/null
@@ -1 +0,0 @@
-2100cf6f17e12cd34f1513647dfa506b pmd_red.gba
diff --git a/sound/music_player_table.inc b/sound/music_player_table.inc
new file mode 100644
index 0000000..f21c434
--- /dev/null
+++ b/sound/music_player_table.inc
@@ -0,0 +1,11 @@
+ .align 2
+ .global gMPlayTable
+gMPlayTable: @ 9E8665C
+ music_player 0x20008F0, 0x2000000, 12, 0
+ music_player 0x2000970, 0x20003C0, 6, 0
+ music_player 0x20009B0, 0x20005A0, 1, 0
+ music_player 0x2000A40, 0x20005F0, 1, 0
+ music_player 0x20009F0, 0x2000640, 2, 0
+ music_player 0x2000870, 0x20006E0, 2, 0
+ music_player 0x20008B0, 0x2000780, 2, 0
+ music_player 0x2000930, 0x2000820, 1, 0
diff --git a/sound/song_table.inc b/sound/song_table.inc
new file mode 100644
index 0000000..86488a3
--- /dev/null
+++ b/sound/song_table.inc
@@ -0,0 +1,943 @@
+ .align 2
+ .global gSongTable
+gSongTable: @ 9E866BC
+ song 0x9F5185C, 0, 0
+ song 0x9F5218C, 0, 0
+ song 0x9F52D24, 0, 0
+ song 0x9F53728, 0, 0
+ song 0x9F53B10, 0, 0
+ song 0x9F54734, 0, 0
+ song 0x9F5506C, 0, 0
+ song 0x9F56720, 0, 0
+ song 0x9F56B8C, 0, 0
+ song 0x9F57254, 0, 0
+ song 0x9F57C58, 0, 0
+ song 0x9F588BC, 0, 0
+ song 0x9F59210, 0, 0
+ song 0x9F59F68, 0, 0
+ song 0x9F5B598, 0, 0
+ song 0x9F5CF8C, 0, 0
+ song 0x9F5DE00, 0, 0
+ song 0x9F5E8E0, 0, 0
+ song 0x9F5F9C8, 0, 0
+ song 0x9F60510, 0, 0
+ song 0x9F61EA8, 0, 0
+ song 0x9F63224, 0, 0
+ song 0x9F666B8, 0, 0
+ song 0x9F678E8, 0, 0
+ song 0x9F698F0, 0, 0
+ song 0x9F6AED8, 0, 0
+ song 0x9F6CDDC, 0, 0
+ song 0x9F6FBF8, 0, 0
+ song 0x9F71EC8, 0, 0
+ song 0x9F73E7C, 0, 0
+ song 0x9F75DD0, 0, 0
+ song 0x9F77848, 0, 0
+ song 0x9F79C08, 0, 0
+ song 0x9F7A6EC, 0, 0
+ song 0x9F7B9BC, 0, 0
+ song 0x9F7D470, 0, 0
+ song 0x9F7DD20, 0, 0
+ song 0x9F7FA74, 0, 0
+ song 0x9F7FC3C, 0, 0
+ song 0x9F81164, 0, 0
+ song 0x9F8192C, 0, 0
+ song 0x9F82150, 0, 0
+ song 0x9F832D4, 0, 0
+ song 0x9F83A88, 0, 0
+ song 0x9F86808, 0, 0
+ song 0x9F871BC, 0, 0
+ song 0x9F87678, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9F876AC, 0, 0
+ song 0x9F877DC, 0, 0
+ song 0x9F878FC, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9F88B90, 0, 0
+ song 0x9F89B38, 0, 0
+ song 0x9F8AE6C, 0, 0
+ song 0x9F8C1A0, 0, 0
+ song 0x9F8DCFC, 0, 0
+ song 0x9F8F384, 0, 0
+ song 0x9F8FD4C, 0, 0
+ song 0x9F90F70, 0, 0
+ song 0x9F93C60, 0, 0
+ song 0x9F94FBC, 0, 0
+ song 0x9F96190, 0, 0
+ song 0x9F976A0, 0, 0
+ song 0x9F97C6C, 0, 0
+ song 0x9F992BC, 0, 0
+ song 0x9F9961C, 0, 0
+ song 0x9F9B188, 0, 0
+ song 0x9F9BA2C, 0, 0
+ song 0x9F9CC24, 0, 0
+ song 0x9F9DDA0, 0, 0
+ song 0x9F9ECF4, 0, 0
+ song 0x9FA06B0, 0, 0
+ song 0x9FA0F50, 0, 0
+ song 0x9FA3AA0, 0, 0
+ song 0x9FA5254, 0, 0
+ song 0x9FA79C8, 0, 0
+ song 0x9FA8760, 0, 0
+ song 0x9FA9C7C, 0, 0
+ song 0x9FAB3D0, 0, 0
+ song 0x9FAC714, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9FAC838, 1, 1
+ song 0x9FAC944, 1, 1
+ song 0x9FAC9C4, 1, 1
+ song 0x9FACA5C, 1, 1
+ song 0x9FACB10, 1, 1
+ song 0x9FACC04, 1, 1
+ song 0x9FACCBC, 1, 1
+ song 0x9FACD28, 1, 1
+ song 0x9FACE3C, 1, 1
+ song 0x9E8841C, 0, 0
+ song 0x9FACF88, 1, 1
+ song 0x9FAD054, 1, 1
+ song 0x9FAD140, 1, 1
+ song 0x9FAD1DC, 1, 1
+ song 0x9FAD270, 1, 1
+ song 0x9FAD394, 1, 1
+ song 0x9FAD494, 1, 1
+ song 0x9FAD694, 1, 1
+ song 0x9FAD784, 1, 1
+ song 0x9FAD91C, 1, 1
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9FAD938, 2, 2
+ song 0x9FAD95C, 2, 2
+ song 0x9FAD984, 2, 2
+ song 0x9FAD9A0, 2, 2
+ song 0x9FAD9C0, 4, 4
+ song 0x9FAD9E4, 2, 2
+ song 0x9FADA08, 2, 2
+ song 0x9FADA3C, 2, 2
+ song 0x9FADA6C, 2, 2
+ song 0x9FADA9C, 2, 2
+ song 0x9FADAC0, 2, 2
+ song 0x9FADB14, 6, 6
+ song 0x9FADB20, 6, 6
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9FADB58, 2, 2
+ song 0x9FADB94, 2, 2
+ song 0x9FADBB4, 5, 5
+ song 0x9FADBDC, 3, 3
+ song 0x9E8841C, 0, 0
+ song 0x9FADBE8, 3, 3
+ song 0x9FADC30, 3, 3
+ song 0x9FADCB8, 2, 2
+ song 0x9FADD38, 2, 2
+ song 0x9FADD8C, 2, 2
+ song 0x9FADDB4, 5, 5
+ song 0x9FADDDC, 5, 5
+ song 0x9FADE20, 2, 2
+ song 0x9FADE64, 2, 2
+ song 0x9FADE88, 5, 5
+ song 0x9FADF14, 3, 3
+ song 0x9FADF34, 3, 3
+ song 0x9FADF60, 3, 3
+ song 0x9FADF80, 3, 3
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9FADFD8, 2, 2
+ song 0x9FAE038, 4, 4
+ song 0x9FAE184, 3, 3
+ song 0x9FAE1C4, 2, 2
+ song 0x9FAE250, 3, 3
+ song 0x9FAE2A4, 2, 2
+ song 0x9FAE2C8, 3, 3
+ song 0x9FAE2FC, 2, 2
+ song 0x9FAE328, 3, 3
+ song 0x9FAE358, 3, 3
+ song 0x9FAE380, 3, 3
+ song 0x9FAE3A8, 2, 2
+ song 0x9FAE3D4, 3, 3
+ song 0x9FAE3E0, 2, 2
+ song 0x9FAE408, 3, 3
+ song 0x9FAE43C, 3, 3
+ song 0x9FAE468, 3, 3
+ song 0x9FAE49C, 2, 2
+ song 0x9FAE4C4, 3, 3
+ song 0x9FAE4EC, 4, 4
+ song 0x9FAE968, 5, 5
+ song 0x9FAEA48, 5, 5
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9FAEA78, 5, 5
+ song 0x9FAEB64, 5, 5
+ song 0x9FAEB8C, 5, 5
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9FAEBB8, 3, 3
+ song 0x9FAEBEC, 6, 6
+ song 0x9FAEC40, 5, 5
+ song 0x9FAECCC, 5, 5
+ song 0x9FAED10, 2, 2
+ song 0x9FAEDBC, 2, 2
+ song 0x9FAEDF8, 6, 6
+ song 0x9FAEE64, 6, 6
+ song 0x9FAEE84, 6, 6
+ song 0x9FAEEAC, 3, 3
+ song 0x9FAEED4, 3, 3
+ song 0x9FAEEE0, 6, 6
+ song 0x9FAEF34, 6, 6
+ song 0x9FAEF58, 6, 6
+ song 0x9FAEF90, 6, 6
+ song 0x9FAF004, 6, 6
+ song 0x9FAF044, 6, 6
+ song 0x9FAF0E0, 6, 6
+ song 0x9FAF16C, 6, 6
+ song 0x9FAF1F4, 2, 2
+ song 0x9FAF224, 3, 3
+ song 0x9FAF308, 5, 5
+ song 0x9FAF33C, 5, 5
+ song 0x9FAF3F0, 5, 5
+ song 0x9FAF3FC, 5, 5
+ song 0x9FAF4C4, 5, 5
+ song 0x9FAF654, 5, 5
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9FAF6A0, 3, 3
+ song 0x9FAF6E8, 3, 3
+ song 0x9FAF750, 3, 3
+ song 0x9FAF784, 3, 3
+ song 0x9FAF844, 4, 4
+ song 0x9FAF88C, 2, 2
+ song 0x9FAF904, 5, 5
+ song 0x9FAF95C, 2, 2
+ song 0x9FAF998, 2, 2
+ song 0x9FAF9F8, 5, 5
+ song 0x9FAFAD4, 3, 3
+ song 0x9FAFB08, 5, 5
+ song 0x9FAFB3C, 5, 5
+ song 0x9FAFB70, 2, 2
+ song 0x9FAFBAC, 5, 5
+ song 0x9FAFBE4, 2, 2
+ song 0x9FAFC20, 5, 5
+ song 0x9FAFC7C, 5, 5
+ song 0x9FAFCB0, 2, 2
+ song 0x9FAFD08, 2, 2
+ song 0x9FAFD74, 2, 2
+ song 0x9FAFDE8, 2, 2
+ song 0x9FAFE38, 2, 2
+ song 0x9FAFE84, 5, 5
+ song 0x9FAFF88, 5, 5
+ song 0x9FAFFB4, 5, 5
+ song 0x9FAFFE0, 5, 5
+ song 0x9FB006C, 5, 5
+ song 0x9FB0148, 5, 5
+ song 0x9FB019C, 5, 5
+ song 0x9FB0200, 5, 5
+ song 0x9FB0254, 5, 5
+ song 0x9FB02CC, 5, 5
+ song 0x9FB035C, 5, 5
+ song 0x9FB043C, 5, 5
+ song 0x9FB04D8, 5, 5
+ song 0x9FB05A8, 4, 4
+ song 0x9FB062C, 5, 5
+ song 0x9FB06C0, 5, 5
+ song 0x9FB08C4, 5, 5
+ song 0x9FB097C, 5, 5
+ song 0x9FB09E0, 5, 5
+ song 0x9FB0B9C, 5, 5
+ song 0x9FB0C20, 5, 5
+ song 0x9FB0CD0, 5, 5
+ song 0x9FB0D40, 5, 5
+ song 0x9E8841C, 0, 0
+ song 0x9FB0D9C, 3, 3
+ song 0x9FB0DC8, 3, 3
+ song 0x9FB0F4C, 5, 5
+ song 0x9FB11EC, 5, 5
+ song 0x9FB120C, 5, 5
+ song 0x9FB1254, 5, 5
+ song 0x9FB12CC, 5, 5
+ song 0x9FB1358, 5, 5
+ song 0x9FB13E0, 5, 5
+ song 0x9FB14F0, 5, 5
+ song 0x9FB1718, 5, 5
+ song 0x9FB17E4, 5, 5
+ song 0x9FB1874, 5, 5
+ song 0x9FB18A4, 2, 2
+ song 0x9FB1960, 5, 5
+ song 0x9FB198C, 3, 3
+ song 0x9FB1FC4, 5, 5
+ song 0x9FB2020, 5, 5
+ song 0x9FB2090, 3, 3
+ song 0x9FB20D8, 5, 5
+ song 0x9FB2284, 5, 5
+ song 0x9FB23C0, 5, 5
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9E8841C, 0, 0
+ song 0x9FB2438, 5, 5
+ song 0x9FB24F0, 5, 5
+ song 0x9FB254C, 5, 5
+ song 0x9FB257C, 5, 5
+ song 0x9FB25D0, 5, 5
+ song 0x9FB2644, 5, 5
+ song 0x9FB2690, 5, 5
+ song 0x9FB26D0, 3, 3
+ song 0x9FB2708, 3, 3
+ song 0x9FB2748, 3, 3
+ song 0x9FB279C, 3, 3
+ song 0x9FB2808, 5, 5
+ song 0x9FB286C, 2, 2
+ song 0x9FB28D0, 2, 2
+ song 0x9FB291C, 5, 5
+ song 0x9FB29A4, 5, 5
+ song 0x9FB29E0, 5, 5
+ song 0x9FB2A30, 5, 5
+ song 0x9FB2A80, 5, 5
+ song 0x9FB2AC8, 5, 5
+ song 0x9FB2AF8, 5, 5
+ song 0x9FB2B1C, 5, 5
+ song 0x9FB2BB0, 5, 5
+ song 0x9FB2C04, 5, 5
+ song 0x9FB2C8C, 5, 5
+ song 0x9FB2CDC, 5, 5
+ song 0x9FB2D08, 5, 5
+ song 0x9FB2D54, 5, 5
+ song 0x9FB2D7C, 5, 5
+ song 0x9FB2E28, 5, 5
+ song 0x9FB2E80, 5, 5
+ song 0x9FB2EB4, 5, 5
+ song 0x9FB2F20, 5, 5
+ song 0x9FB2F2C, 5, 5
+ song 0x9FB2F34, 5, 5
+ song 0x9FB2F3C, 5, 5
+ song 0x9FB2F68, 5, 5
+ song 0x9FB2F74, 5, 5
+ song 0x9FB2FE4, 5, 5
+ song 0x9FB3008, 5, 5
+ song 0x9FB3074, 5, 5
+ song 0x9FB30F0, 5, 5
+ song 0x9FB314C, 5, 5
+ song 0x9FB31B0, 5, 5
+ song 0x9FB3228, 5, 5
+ song 0x9FB327C, 5, 5
+ song 0x9FB32EC, 5, 5
+ song 0x9FB3334, 5, 5
+ song 0x9FB3378, 5, 5
+ song 0x9FB33F8, 5, 5
+ song 0x9FB3474, 5, 5
+ song 0x9FB34EC, 5, 5
+ song 0x9FB3530, 5, 5
+ song 0x9FB35A4, 5, 5
+ song 0x9FB3618, 5, 5
+ song 0x9FB3698, 5, 5
+ song 0x9FB371C, 5, 5
+ song 0x9FB37D0, 5, 5
+ song 0x9FB37FC, 5, 5
+ song 0x9FB384C, 5, 5
+ song 0x9FB39C0, 5, 5
+ song 0x9FB3A3C, 5, 5
+ song 0x9FB3A9C, 5, 5
+ song 0x9FB3AF4, 5, 5
+ song 0x9FB3C08, 5, 5
+ song 0x9FB3CB0, 5, 5
+ song 0x9FB3D0C, 5, 5
+ song 0x9FB3D5C, 5, 5
+ song 0x9FB3DB0, 5, 5
+ song 0x9FB3E24, 5, 5
+ song 0x9FB3F60, 5, 5
+ song 0x9FB400C, 5, 5
+ song 0x9FB4094, 5, 5
+ song 0x9FB411C, 5, 5
+ song 0x9FB4230, 5, 5
+ song 0x9FB4324, 5, 5
+ song 0x9FB4350, 5, 5
+ song 0x9FB43D0, 5, 5
+ song 0x9FB44E0, 5, 5
+ song 0x9FB4554, 5, 5
+ song 0x9FB45B0, 5, 5
+ song 0x9FB4658, 5, 5
+ song 0x9FB46D4, 5, 5
+ song 0x9FB4750, 5, 5
+ song 0x9FB47C4, 5, 5
+ song 0x9FB4820, 5, 5
+ song 0x9FB4874, 5, 5
+ song 0x9FB48B8, 5, 5
+ song 0x9FB4910, 5, 5
+ song 0x9FB497C, 5, 5
+ song 0x9FB49E4, 5, 5
+ song 0x9FB4A4C, 5, 5
+ song 0x9FB4AF0, 5, 5
+ song 0x9FB4B84, 5, 5
+ song 0x9FB4BE8, 5, 5
+ song 0x9FB4C58, 5, 5
+ song 0x9FB4D44, 5, 5
+ song 0x9FB4E88, 5, 5
+ song 0x9FB4EDC, 5, 5
+ song 0x9FB4F94, 5, 5
+ song 0x9FB508C, 5, 5
+ song 0x9FB5140, 5, 5
+ song 0x9FB51A8, 5, 5
+ song 0x9FB5208, 5, 5
+ song 0x9FB5294, 5, 5
+ song 0x9FB534C, 5, 5
+ song 0x9FB53B0, 5, 5
+ song 0x9FB54DC, 5, 5
+ song 0x9FB55B0, 5, 5
+ song 0x9FB5688, 5, 5
+ song 0x9FB56DC, 5, 5
+ song 0x9FB5730, 5, 5
+ song 0x9FB57B8, 5, 5
+ song 0x9FB57EC, 5, 5
+ song 0x9FB5864, 5, 5
+ song 0x9FB5898, 5, 5
+ song 0x9FB58FC, 5, 5
+ song 0x9FB59DC, 5, 5
+ song 0x9FB5A64, 5, 5
+ song 0x9FB5AB0, 5, 5
+ song 0x9FB5B10, 5, 5
+ song 0x9FB5B98, 5, 5
+ song 0x9FB5CBC, 5, 5
+ song 0x9FB5D24, 5, 5
+ song 0x9FB5DD0, 5, 5
+ song 0x9FB5E88, 5, 5
+ song 0x9FB5ED4, 5, 5
+ song 0x9FB5EFC, 5, 5
+ song 0x9FB5F6C, 2, 2
+ song 0x9FB5FD4, 5, 5
+ song 0x9FB60A8, 5, 5
+ song 0x9FB617C, 5, 5
+ song 0x9FB6210, 5, 5
+ song 0x9FB62A4, 5, 5
+ song 0x9FB62EC, 5, 5
+ song 0x9FB63C4, 5, 5
+ song 0x9FB6440, 5, 5
+ song 0x9FB6484, 5, 5
+ song 0x9FB663C, 5, 5
+ song 0x9FB6740, 5, 5
+ song 0x9FB67C0, 5, 5
+ song 0x9FB6830, 5, 5
+ song 0x9FB68D8, 5, 5
+ song 0x9FB696C, 5, 5
+ song 0x9FB69D4, 5, 5
+ song 0x9FB6A58, 5, 5
+ song 0x9FB6AF8, 5, 5
+ song 0x9FB6B28, 5, 5
+ song 0x9FB6B70, 5, 5
+ song 0x9FB6C30, 5, 5
+ song 0x9FB6C94, 5, 5
+ song 0x9FB6D40, 5, 5
+ song 0x9FB6DB0, 5, 5
+ song 0x9FB6E88, 5, 5
+ song 0x9FB703C, 5, 5
+ song 0x9FB71F0, 5, 5
+ song 0x9FB73A8, 5, 5
+ song 0x9FB7464, 5, 5
+ song 0x9FB74D8, 5, 5
+ song 0x9FB7534, 5, 5
+ song 0x9FB7658, 5, 5
+ song 0x9FB7688, 5, 5
+ song 0x9FB7708, 5, 5
+ song 0x9FB7798, 5, 5
+ song 0x9FB77D8, 5, 5
+ song 0x9FB78F0, 5, 5
+ song 0x9FB792C, 5, 5
+ song 0x9FB79F0, 5, 5
+ song 0x9FB7AA8, 5, 5
+ song 0x9FB7B88, 2, 2
+ song 0x9FB7CDC, 5, 5
+ song 0x9FB7DA0, 5, 5
+ song 0x9FB7E28, 5, 5
+ song 0x9FB7EC4, 5, 5
+ song 0x9FB7F5C, 5, 5
+ song 0x9FB8074, 5, 5
+ song 0x9FB8150, 5, 5
+ song 0x9FB82B8, 5, 5
+ song 0x9FB834C, 5, 5
+ song 0x9FB85C0, 5, 5
+ song 0x9FB8670, 5, 5
+ song 0x9FB86C8, 5, 5
+ song 0x9FB87C4, 5, 5
+ song 0x9FB880C, 5, 5
+ song 0x9FB8884, 5, 5
+ song 0x9FB893C, 5, 5
+ song 0x9FB8B48, 5, 5
+ song 0x9FB8C5C, 5, 5
+ song 0x9FB8D14, 5, 5
+ song 0x9FB8D54, 5, 5
+ song 0x9FB8DF0, 5, 5
+ song 0x9FB8E40, 5, 5
+ song 0x9FB8F18, 5, 5
+ song 0x9FB8F68, 5, 5
+ song 0x9FB9000, 5, 5
+ song 0x9FB9070, 5, 5
+ song 0x9FB90E0, 5, 5
+ song 0x9FB9150, 5, 5
+ song 0x9FB9244, 5, 5
+ song 0x9FB9388, 5, 5
+ song 0x9FB93B4, 5, 5
+ song 0x9FB943C, 5, 5
+ song 0x9FB9528, 5, 5
+ song 0x9FB955C, 5, 5
+ song 0x9FB9568, 5, 5
+ song 0x9FB961C, 5, 5
+ song 0x9E8841C, 0, 0
+ song 0x9FB965C, 5, 5
+ song 0x9FB96B4, 5, 5
+ song 0x9FB9764, 5, 5
+ song 0x9FB97B8, 5, 5
+ song 0x9FB97F8, 5, 5
+ song 0x9FB9854, 5, 5
+ song 0x9FB988C, 5, 5
+ song 0x9FB9984, 5, 5
+ song 0x9FB9A68, 5, 5
+ song 0x9FB9AB0, 5, 5
+ song 0x9FB9AF8, 5, 5
+ song 0x9FB9BD0, 5, 5
+ song 0x9FB9C54, 5, 5
+ song 0x9FB9D58, 5, 5
+ song 0x9FB9D9C, 5, 5
+ song 0x9FB9DFC, 5, 5
+ song 0x9FB9E60, 5, 5
+ song 0x9FB9EBC, 5, 5
+ song 0x9FB9F34, 5, 5
+ song 0x9FBA014, 5, 5
+ song 0x9FBA07C, 5, 5
+ song 0x9FBA110, 5, 5
+ song 0x9FBA178, 5, 5
+ song 0x9FBA270, 5, 5
+ song 0x9FBA31C, 5, 5
+ song 0x9FBA3C8, 5, 5
+ song 0x9FBA4B0, 5, 5
+ song 0x9FBA508, 5, 5
+ song 0x9FBA54C, 5, 5
+ song 0x9FBA5C0, 5, 5
+ song 0x9FBA638, 5, 5
+ song 0x9FBA728, 5, 5
+ song 0x9FBA7A4, 5, 5
+ song 0x9FBA868, 5, 5
+ song 0x9FBA928, 5, 5
+ song 0x9FBA9A0, 5, 5
+ song 0x9FBAA34, 5, 5
+ song 0x9FBAA78, 5, 5
+ song 0x9FBAAD4, 5, 5
+ song 0x9FBAB48, 5, 5
+ song 0x9FBAC60, 5, 5
+ song 0x9FBACB0, 5, 5
+ song 0x9FBAD68, 5, 5
+ song 0x9FBADDC, 5, 5
+ song 0x9FBAE50, 5, 5
+ song 0x9FBAEC8, 5, 5
+ song 0x9FBAF40, 5, 5
+ song 0x9FBAF80, 5, 5
+ song 0x9FBAFDC, 5, 5
+ song 0x9FBB0B4, 5, 5
+ song 0x9FBB110, 5, 5
+ song 0x9FBB364, 5, 5
+ song 0x9FBB454, 5, 5
+ song 0x9FBB56C, 5, 5
+ song 0x9FBB660, 5, 5
+ song 0x9FBB754, 5, 5
+ song 0x9FBB7FC, 5, 5
+ song 0x9FBB848, 5, 5
+ song 0x9FBB894, 5, 5
+ song 0x9FBB90C, 5, 5
+ song 0x9FBB9DC, 5, 5
+ song 0x9FBBA20, 5, 5
+ song 0x9FBBA58, 5, 5
+ song 0x9FBBAC8, 5, 5
+ song 0x9FBBB38, 5, 5
+ song 0x9FBBB74, 5, 5
+ song 0x9FBBC20, 5, 5
+ song 0x9FBBC58, 5, 5
+ song 0x9FBBD08, 5, 5
+ song 0x9FBBD54, 5, 5
+ song 0x9FBBEB4, 5, 5
+ song 0x9FBBF44, 5, 5
+ song 0x9FBBF80, 5, 5
+ song 0x9FBBFC8, 5, 5
+ song 0x9FBC080, 5, 5
+ song 0x9FBC0C8, 5, 5
+ song 0x9FBC0F4, 5, 5
+ song 0x9FBC140, 2, 2
+ song 0x9FBC178, 5, 5
+ song 0x9FBC1B0, 5, 5
+ song 0x9FBC1EC, 5, 5
+ song 0x9FBC25C, 5, 5
+ song 0x9FBC340, 5, 5
+ song 0x9FBC37C, 5, 5
+ song 0x9FBC3AC, 5, 5
+ song 0x9FBC464, 5, 5
+ song 0x9FBC538, 5, 5
+ song 0x9FBC59C, 5, 5
+ song 0x9FBC674, 5, 5
+ song 0x9FBC6D8, 5, 5
+ song 0x9FBC890, 5, 5
+ song 0x9FBC8F4, 5, 5
+ song 0x9FBC990, 5, 5
+ song 0x9FBC9E0, 5, 5
+ song 0x9FBCA38, 2, 2
+ song 0x9FBCA94, 2, 2
+ song 0x9FBCAD4, 2, 2
+ song 0x9FBCB10, 2, 2
+ song 0x9FBCB50, 2, 2
+ song 0x9FBCB8C, 2, 2
+ song 0x9FBCBC4, 3, 3
+ song 0x9FBCBF4, 3, 3
+ song 0x9FBCC30, 2, 2
+ song 0x9FBCC6C, 2, 2
+ song 0x9FBCCB4, 2, 2
+ song 0x9FBCD0C, 5, 5
+ song 0x9FBCD68, 5, 5
+ song 0x9FBCDDC, 5, 5
+ song 0x9FBCE38, 5, 5
+ song 0x9FBCE44, 5, 5
+ song 0x9FBCE4C, 5, 5
+ song 0x9FBCE7C, 5, 5
+ song 0x9FBCEB0, 5, 5
+ song 0x9FBCEDC, 3, 3
+ song 0x9FBCF18, 3, 3
+ song 0x9FBCFA8, 5, 5
+ song 0x9FBCFB4, 3, 3
+ song 0x9FBCFD8, 3, 3
+ song 0x9FBD0E0, 5, 5
+ song 0x9FBD174, 5, 5
+ song 0x9FBD1E4, 6, 6
+ song 0x9FBD218, 6, 6
+ song 0x9FBD268, 2, 2
+ song 0x9FBD2D0, 2, 2
+ song 0x9FBD310, 2, 2
+ song 0x9FBD380, 5, 5
+ song 0x9FBD3B8, 6, 6
+ song 0x9FBD404, 2, 2
+ song 0x9FBD430, 3, 3
+ song 0x9FBD488, 2, 2
+ song 0x9FBD4B4, 2, 2
+ song 0x9FBD4EC, 6, 6
+ song 0x9FBD5C4, 6, 6
diff --git a/src/bg_palette_buffer.c b/src/bg_palette_buffer.c
new file mode 100644
index 0000000..e36176d
--- /dev/null
+++ b/src/bg_palette_buffer.c
@@ -0,0 +1,105 @@
+#include "global.h"
+
+#define BG_PALETTE_BUFFER_SIZE 512
+#define BG_PALETTE_BUFFER_CHUNK_SIZE 16
+
+extern u16 gBGPaletteBuffer[BG_PALETTE_BUFFER_SIZE];
+extern bool8 gBGPaletteUsed[BG_PALETTE_BUFFER_SIZE / BG_PALETTE_BUFFER_CHUNK_SIZE];
+
+extern void CpuCopy(void* src, void* dest, u32 size);
+
+/*
+void InitBGPaletteBuffer(void)
+{
+ u16 color = 0;
+ u16* ptr;
+ u32 i;
+ bool8 paletteUsed;
+
+ u8* p;
+
+ ptr = gBGPaletteBuffer;
+
+ i = 0x80;
+ i <<= 2;
+
+ do {
+ *ptr++ = color;
+ i--;
+ } while (i);
+
+ paletteUsed = TRUE;
+
+ p = gBGPaletteUsed;
+ p += 31;
+
+ do
+ *p-- = paletteUsed;
+ while ((s32) p >= (s32) &gBGPaletteUsed);
+}
+void SetBGPaletteBufferColorRGB(s32 index, u8 *RGBArray, s32 a3, u8 *a4)
+{
+ if (a3 < 0) {
+ a3 = 0;
+ }
+ if (a3 > 31) {
+ a3 = 31;
+ }
+ gBGPaletteUsed[index / 16] = 1;
+ if (!a4) {
+ gBGPaletteBuffer[index] = ((RGBArray[2] * a3 / 256 & 0x1F) << 10) | ((RGBArray[1] * a3 / 256 & 0x1F) << 5) | (RGBArray[0] * a3 / 256 & 0x1F);
+ }
+ else
+ {
+ gBGPaletteBuffer[index] = ((a4[4 * RGBArray[2] + 2] * a3 / 256 & 0x1F) << 10) | ((a4[4 * RGBArray[1] + 1] * a3 / 256 & 0x1F) << 5) | (a4[4 * RGBArray[0]] * a3 / 256 & 0x1F);
+ }
+}
+*/
+
+void SetBGPaletteBufferColorArray(s32 index, u8 *colorArray)
+{
+ gBGPaletteUsed[index / BG_PALETTE_BUFFER_CHUNK_SIZE] = TRUE;
+ gBGPaletteBuffer[index] = (colorArray[2] >> 3) << 10 | (colorArray[1] >> 3) << 5 | colorArray[0] >> 3;
+}
+
+void SetBGPaletteBufferColor(s32 index, u16 *color)
+{
+ gBGPaletteUsed[index / BG_PALETTE_BUFFER_CHUNK_SIZE] = TRUE;
+ gBGPaletteBuffer[index] = *color;
+}
+
+void nullsub_4()
+{
+
+}
+void nullsub_5(void)
+{
+
+}
+void nullsub_143(void)
+{
+
+}
+
+void TransferBGPaletteBuffer(void)
+{
+ u32 i;
+ s32 paletteBufferIndex;
+ u16 *dest;
+
+ i = 0;
+ paletteBufferIndex = 0;
+ dest = (u16 *)PLTT;
+ do
+ {
+ if (gBGPaletteUsed[i])
+ {
+ gBGPaletteUsed[i] = 0;
+ CpuCopy(dest, &gBGPaletteBuffer[paletteBufferIndex], sizeof(u16) * 16);
+ }
+ ++i;
+ dest += 16;
+ paletteBufferIndex += 16;
+ }
+ while ( paletteBufferIndex < BG_PALETTE_BUFFER_SIZE );
+}
diff --git a/src/file_system.c b/src/file_system.c
index 0d8de10..61d9ec4 100644
--- a/src/file_system.c
+++ b/src/file_system.c
@@ -1,9 +1,9 @@
#include "global.h"
#include "file_system.h"
-extern struct OpenedFile gUnknown_202D2A8[];
+extern struct OpenedFile gFileCache[64];
-extern u32 gUnknown_203B094;
+extern u32 gFileCacheCursorPosition;
extern u32 gUnknown_202D2A4;
extern int sprintf(char *, const char *, ...);
@@ -17,11 +17,11 @@ void InitFileSystem(void)
for (i = 0; i < 64; i++)
{
- gUnknown_202D2A8[i].file = NULL;
- gUnknown_202D2A8[i].data = NULL;
+ gFileCache[i].file = NULL;
+ gFileCache[i].data = NULL;
}
- gUnknown_203B094 = 0;
+ gFileCacheCursorPosition = 0;
gUnknown_202D2A4 = 1;
}
@@ -38,8 +38,8 @@ struct OpenedFile *OpenFile(const char *filename, const struct FileArchive *arc)
s32 left, right;
s32 cursor;
s32 i;
- s32 magic = 0;
- s32 magicFound;
+ u32 magic = 0;
+ bool32 magicFound;
struct File *entries;
struct File *file;
@@ -47,7 +47,7 @@ struct OpenedFile *OpenFile(const char *filename, const struct FileArchive *arc)
magicFound = 0;
- if (!(u8)magic)
+ if (!(bool8)magic)
magicFound = 1;
if (!magicFound)
@@ -84,18 +84,18 @@ struct OpenedFile *OpenFile(const char *filename, const struct FileArchive *arc)
return NULL;
}
- cursor = gUnknown_203B094;
+ cursor = gFileCacheCursorPosition;
for (i = 0; i < 64; i++)
{
cursor++;
if (cursor > 63)
cursor = 0;
- if (!gUnknown_202D2A8[cursor].file)
+ if (!gFileCache[cursor].file)
{
- gUnknown_202D2A8[cursor].file = file;
- gUnknown_202D2A8[cursor].data = NULL;
- return &gUnknown_202D2A8[cursor];
+ gFileCache[cursor].file = file;
+ gFileCache[cursor].data = NULL;
+ return &gFileCache[cursor];
}
}
@@ -133,11 +133,11 @@ void CloseFile(struct OpenedFile *openedFile)
for (i = 0; i < 64; i++)
{
- if (&gUnknown_202D2A8[i] == openedFile)
+ if (&gFileCache[i] == openedFile)
{
- gUnknown_202D2A8[i].file = NULL;
- gUnknown_202D2A8[i].data = NULL;
- gUnknown_203B094 = i;
+ gFileCache[i].file = NULL;
+ gFileCache[i].data = NULL;
+ gFileCacheCursorPosition = i;
return;
}
}
diff --git a/src/flash.c b/src/flash.c
index b9ccf40..11520b4 100644
--- a/src/flash.c
+++ b/src/flash.c
@@ -1,12 +1,11 @@
#include "global.h"
#include "gba/flash.h"
#include "flash.h"
+#include "memory.h"
extern u8 gFlashEnabled;
extern FlashIntrFunc *sub_800B6E8(s32);
-extern void MemoryFill8(void *, u8, s32);
-extern void MemoryCopy8(void *, void *, s32);
static u8 TryProgramSector(s32, u8 *);
diff --git a/src/m4a_2.c b/src/m4a_2.c
new file mode 100644
index 0000000..176910e
--- /dev/null
+++ b/src/m4a_2.c
@@ -0,0 +1,834 @@
+#include "gba/m4a_internal.h"
+
+extern char SoundMainRAM_Buffer[0x400];
+
+extern struct SoundInfo gSoundInfo;
+
+
+u32 MidiKeyToFreq(struct WaveData *wav, u8 key, u8 fineAdjust)
+{
+ u32 val1;
+ u32 val2;
+ u32 fineAdjustShifted = fineAdjust << 24;
+
+ if (key > 178)
+ {
+ key = 178;
+ fineAdjustShifted = 255 << 24;
+ }
+
+ val1 = gScaleTable[key];
+ val1 = gFreqTable[val1 & 0xF] >> (val1 >> 4);
+
+ val2 = gScaleTable[key + 1];
+ val2 = gFreqTable[val2 & 0xF] >> (val2 >> 4);
+
+ return umul3232H32(wav->freq, val1 + umul3232H32(val2 - val1, fineAdjustShifted));
+}
+
+void UnusedDummyFunc()
+{
+}
+
+void MPlayContinue(struct MusicPlayerInfo *mplayInfo)
+{
+ if (mplayInfo->ident == ID_NUMBER)
+ {
+ mplayInfo->ident++;
+ mplayInfo->status &= ~MUSICPLAYER_STATUS_PAUSE;
+ mplayInfo->ident = ID_NUMBER;
+ }
+}
+
+void MPlayFadeOut(struct MusicPlayerInfo *mplayInfo, u16 speed)
+{
+ if (mplayInfo->ident == ID_NUMBER)
+ {
+ mplayInfo->ident++;
+ mplayInfo->fadeOC = speed;
+ mplayInfo->fadeOI = speed;
+ mplayInfo->fadeOV = (64 << FADE_VOL_SHIFT);
+ mplayInfo->ident = ID_NUMBER;
+ }
+}
+
+void m4aSoundInit(void)
+{
+ s32 i;
+
+ CpuCopy32((void *)((s32)SoundMainRAM & ~1), SoundMainRAM_Buffer, sizeof(SoundMainRAM_Buffer));
+
+ SoundInit(&gSoundInfo);
+ MPlayExtender(gCgbChans);
+ m4aSoundMode(SOUND_MODE_DA_BIT_8
+ | SOUND_MODE_FREQ_18157
+ | (14 << SOUND_MODE_MASVOL_SHIFT)
+ | (5 << SOUND_MODE_MAXCHN_SHIFT));
+
+ for (i = 0; i < NUM_MUSIC_PLAYERS; i++)
+ {
+ struct MusicPlayerInfo *mplayInfo = gMPlayTable[i].info;
+ MPlayOpen(mplayInfo, gMPlayTable[i].track, gMPlayTable[i].unk_8);
+ mplayInfo->unk_B = gMPlayTable[i].unk_A;
+ mplayInfo->memAccArea = gMPlayMemAccArea;
+ }
+}
+
+void m4aSoundMain(void)
+{
+ SoundMain();
+}
+
+void m4aSongNumStart(u16 n)
+{
+ const struct MusicPlayer *mplayTable = gMPlayTable;
+ const struct Song *songTable = gSongTable;
+ const struct Song *song = &songTable[n];
+ const struct MusicPlayer *mplay = &mplayTable[song->ms];
+
+ MPlayStart(mplay->info, song->header);
+}
+
+void m4aSongNumStartOrChange(u16 n)
+{
+ const struct MusicPlayer *mplayTable = gMPlayTable;
+ const struct Song *songTable = gSongTable;
+ const struct Song *song = &songTable[n];
+ const struct MusicPlayer *mplay = &mplayTable[song->ms];
+
+ if (mplay->info->songHeader != song->header)
+ {
+ MPlayStart(mplay->info, song->header);
+ }
+ else
+ {
+ if ((mplay->info->status & MUSICPLAYER_STATUS_TRACK) == 0
+ || (mplay->info->status & MUSICPLAYER_STATUS_PAUSE))
+ {
+ MPlayStart(mplay->info, song->header);
+ }
+ }
+}
+
+void m4aSongNumStartOrContinue(u16 n)
+{
+ const struct MusicPlayer *mplayTable = gMPlayTable;
+ const struct Song *songTable = gSongTable;
+ const struct Song *song = &songTable[n];
+ const struct MusicPlayer *mplay = &mplayTable[song->ms];
+
+ if (mplay->info->songHeader != song->header)
+ MPlayStart(mplay->info, song->header);
+ else if ((mplay->info->status & MUSICPLAYER_STATUS_TRACK) == 0)
+ MPlayStart(mplay->info, song->header);
+ else if (mplay->info->status & MUSICPLAYER_STATUS_PAUSE)
+ MPlayContinue(mplay->info);
+}
+
+
+void m4aSongNumStop(u16 n)
+{
+ const struct MusicPlayer *mplayTable = gMPlayTable;
+ const struct Song *songTable = gSongTable;
+ const struct Song *song = &songTable[n];
+ const struct MusicPlayer *mplay = &mplayTable[song->ms];
+
+ if (mplay->info->songHeader == song->header)
+ m4aMPlayStop(mplay->info);
+}
+
+void m4aSongNumContinue(u16 n)
+{
+ const struct MusicPlayer *mplayTable = gMPlayTable;
+ const struct Song *songTable = gSongTable;
+ const struct Song *song = &songTable[n];
+ const struct MusicPlayer *mplay = &mplayTable[song->ms];
+
+ if (mplay->info->songHeader == song->header)
+ MPlayContinue(mplay->info);
+}
+
+void m4aMPlayAllStop(void)
+{
+ s32 i;
+
+ for (i = 0; i < NUM_MUSIC_PLAYERS; i++)
+ m4aMPlayStop(gMPlayTable[i].info);
+}
+
+void m4aMPlayContinue(struct MusicPlayerInfo *mplayInfo)
+{
+ MPlayContinue(mplayInfo);
+}
+
+void m4aMPlayAllContinue(void)
+{
+ s32 i;
+
+ for (i = 0; i < NUM_MUSIC_PLAYERS; i++)
+ MPlayContinue(gMPlayTable[i].info);
+}
+
+void m4aMPlayFadeOut(struct MusicPlayerInfo *mplayInfo, u16 speed)
+{
+ MPlayFadeOut(mplayInfo, speed);
+}
+
+void m4aMPlayFadeOutTemporarily(struct MusicPlayerInfo *mplayInfo, u16 speed)
+{
+ if (mplayInfo->ident == ID_NUMBER)
+ {
+ mplayInfo->ident++;
+ mplayInfo->fadeOC = speed;
+ mplayInfo->fadeOI = speed;
+ mplayInfo->fadeOV = (64 << FADE_VOL_SHIFT) | TEMPORARY_FADE;
+ mplayInfo->ident = ID_NUMBER;
+ }
+}
+void m4aMPlayFadeIn(struct MusicPlayerInfo *mplayInfo, u16 speed)
+{
+ if (mplayInfo->ident == ID_NUMBER)
+ {
+ mplayInfo->ident++;
+ mplayInfo->fadeOC = speed;
+ mplayInfo->fadeOI = speed;
+ mplayInfo->fadeOV = (0 << FADE_VOL_SHIFT) | FADE_IN;
+ mplayInfo->status &= ~MUSICPLAYER_STATUS_PAUSE;
+ mplayInfo->ident = ID_NUMBER;
+ }
+}
+
+void m4aMPlayImmInit(struct MusicPlayerInfo *mplayInfo)
+{
+ s32 trackCount = mplayInfo->trackCount;
+ struct MusicPlayerTrack *track = mplayInfo->tracks;
+
+ while (trackCount > 0)
+ {
+ if (track->flags & MPT_FLG_EXIST)
+ {
+ if (track->flags & MPT_FLG_START)
+ {
+ Clear64byte(track);
+ track->flags = MPT_FLG_EXIST;
+ track->bendRange = 2;
+ track->volX = 64;
+ track->lfoSpeed = 22;
+ track->tone.type = 1;
+ }
+ }
+
+ trackCount--;
+ track++;
+ }
+}
+
+void MPlayExtender(struct CgbChannel *cgbChans)
+{
+ struct SoundInfo *soundInfo;
+ u32 ident;
+
+ REG_SOUNDCNT_X = SOUND_MASTER_ENABLE
+ | SOUND_4_ON
+ | SOUND_3_ON
+ | SOUND_2_ON
+ | SOUND_1_ON;
+ REG_SOUNDCNT_L = 0; // set master volume to zero
+ REG_NR12 = 0x8;
+ REG_NR22 = 0x8;
+ REG_NR42 = 0x8;
+ REG_NR14 = 0x80;
+ REG_NR24 = 0x80;
+ REG_NR44 = 0x80;
+ REG_NR30 = 0;
+ REG_NR50 = 0x77;
+
+ soundInfo = SOUND_INFO_PTR;
+
+ ident = soundInfo->ident;
+
+ if (ident != ID_NUMBER)
+ return;
+
+ soundInfo->ident++;
+
+ gMPlayJumpTable[8] = ply_memacc;
+ gMPlayJumpTable[17] = ply_lfos;
+ gMPlayJumpTable[19] = ply_mod;
+ gMPlayJumpTable[28] = ply_xcmd;
+ gMPlayJumpTable[29] = ply_endtie;
+ gMPlayJumpTable[30] = SampleFreqSet;
+ gMPlayJumpTable[31] = TrackStop;
+ gMPlayJumpTable[32] = FadeOutBody;
+ gMPlayJumpTable[33] = TrkVolPitSet;
+
+ soundInfo->cgbChans = (struct CgbChannel *)cgbChans;
+ soundInfo->CgbSound = CgbSound;
+ soundInfo->CgbOscOff = CgbOscOff;
+ soundInfo->MidiKeyToCgbFreq = MidiKeyToCgbFreq;
+ soundInfo->maxLines = MAX_LINES;
+
+ CpuFill32(0, cgbChans, sizeof(struct CgbChannel) * 4);
+
+ cgbChans[0].ty = 1;
+ cgbChans[0].panMask = 0x11;
+ cgbChans[1].ty = 2;
+ cgbChans[1].panMask = 0x22;
+ cgbChans[2].ty = 3;
+ cgbChans[2].panMask = 0x44;
+ cgbChans[3].ty = 4;
+ cgbChans[3].panMask = 0x88;
+
+ soundInfo->ident = ident;
+}
+
+void MusicPlayerJumpTableCopy(void)
+{
+ asm("swi 0x2A");
+}
+
+void ClearChain(void *x)
+{
+ void (*func)(void *) = *(&gMPlayJumpTable[34]);
+ func(x);
+}
+
+void Clear64byte(void *x)
+{
+ void (*func)(void *) = *(&gMPlayJumpTable[35]);
+ func(x);
+}
+
+void SoundInit(struct SoundInfo *soundInfo)
+{
+ soundInfo->ident = 0;
+
+ if (REG_DMA1CNT & (DMA_REPEAT << 16))
+ REG_DMA1CNT = ((DMA_ENABLE | DMA_START_NOW | DMA_32BIT | DMA_SRC_INC | DMA_DEST_FIXED) << 16) | 4;
+
+ if (REG_DMA2CNT & (DMA_REPEAT << 16))
+ REG_DMA2CNT = ((DMA_ENABLE | DMA_START_NOW | DMA_32BIT | DMA_SRC_INC | DMA_DEST_FIXED) << 16) | 4;
+
+ REG_DMA1CNT_H = DMA_32BIT;
+ REG_DMA2CNT_H = DMA_32BIT;
+ REG_SOUNDCNT_X = SOUND_MASTER_ENABLE
+ | SOUND_4_ON
+ | SOUND_3_ON
+ | SOUND_2_ON
+ | SOUND_1_ON;
+ REG_SOUNDCNT_H = SOUND_B_FIFO_RESET | SOUND_B_TIMER_0 | SOUND_B_LEFT_OUTPUT
+ | SOUND_A_FIFO_RESET | SOUND_A_TIMER_0 | SOUND_A_RIGHT_OUTPUT
+ | SOUND_ALL_MIX_FULL;
+ REG_SOUNDBIAS_H = (REG_SOUNDBIAS_H & 0x3F) | 0x40;
+
+ REG_DMA1SAD = (s32)soundInfo->pcmBuffer;
+ REG_DMA1DAD = (s32)&REG_FIFO_A;
+ REG_DMA2SAD = (s32)soundInfo->pcmBuffer + PCM_DMA_BUF_SIZE;
+ REG_DMA2DAD = (s32)&REG_FIFO_B;
+
+ SOUND_INFO_PTR = soundInfo;
+ CpuFill32(0, soundInfo, sizeof(struct SoundInfo));
+
+ soundInfo->maxChans = 8;
+ soundInfo->masterVolume = 15;
+ soundInfo->plynote = (u32)ply_note;
+ soundInfo->CgbSound = DummyFunc;
+ soundInfo->CgbOscOff = (void (*)(u8))DummyFunc;
+ soundInfo->MidiKeyToCgbFreq = (u32 (*)(u8, u8, u8))DummyFunc;
+ soundInfo->ExtVolPit = (u32)DummyFunc;
+
+ MPlayJumpTableCopy(gMPlayJumpTable);
+
+ soundInfo->MPlayJumpTable = (u32)gMPlayJumpTable;
+
+ SampleFreqSet(SOUND_MODE_FREQ_13379);
+
+ soundInfo->ident = ID_NUMBER;
+}
+
+void SampleFreqSet(u32 freq)
+{
+ struct SoundInfo *soundInfo = SOUND_INFO_PTR;
+
+ freq = (freq & 0xF0000) >> 16;
+ soundInfo->freq = freq;
+ soundInfo->pcmSamplesPerVBlank = gPcmSamplesPerVBlankTable[freq - 1];
+ soundInfo->pcmDmaPeriod = PCM_DMA_BUF_SIZE / soundInfo->pcmSamplesPerVBlank;
+
+ // LCD refresh rate 59.7275Hz
+ soundInfo->pcmFreq = (597275 * soundInfo->pcmSamplesPerVBlank + 5000) / 10000;
+
+ // CPU frequency 16.78Mhz
+ soundInfo->divFreq = (16777216 / soundInfo->pcmFreq + 1) >> 1;
+
+ // Turn off timer 0.
+ REG_TM0CNT_H = 0;
+
+ // cycles per LCD fresh 280896
+ REG_TM0CNT_L = -(280896 / soundInfo->pcmSamplesPerVBlank);
+
+ m4aSoundVSyncOn();
+
+ while (*(vu8 *)REG_ADDR_VCOUNT == 159)
+ ;
+
+ while (*(vu8 *)REG_ADDR_VCOUNT != 159)
+ ;
+
+ REG_TM0CNT_H = TIMER_ENABLE | TIMER_1CLK;
+}
+
+void m4aSoundMode(u32 mode)
+{
+ struct SoundInfo *soundInfo = SOUND_INFO_PTR;
+ u32 temp;
+
+ if (soundInfo->ident != ID_NUMBER)
+ return;
+
+ soundInfo->ident++;
+
+ temp = mode & (SOUND_MODE_REVERB_SET | SOUND_MODE_REVERB_VAL);
+
+ if (temp)
+ soundInfo->reverb = temp & SOUND_MODE_REVERB_VAL;
+
+ temp = mode & SOUND_MODE_MAXCHN;
+
+ if (temp)
+ {
+ struct SoundChannel *chan;
+
+ soundInfo->maxChans = temp >> SOUND_MODE_MAXCHN_SHIFT;
+
+ temp = MAX_DIRECTSOUND_CHANNELS;
+ chan = &soundInfo->chans[0];
+
+ while (temp != 0)
+ {
+ chan->status = 0;
+ temp--;
+ chan++;
+ }
+ }
+
+ temp = mode & SOUND_MODE_MASVOL;
+
+ if (temp)
+ soundInfo->masterVolume = temp >> SOUND_MODE_MASVOL_SHIFT;
+
+ temp = mode & SOUND_MODE_DA_BIT;
+
+ if (temp)
+ {
+ temp = (temp & 0x300000) >> 14;
+ REG_SOUNDBIAS_H = (REG_SOUNDBIAS_H & 0x3F) | temp;
+ }
+
+ temp = mode & SOUND_MODE_FREQ;
+
+ if (temp)
+ {
+ m4aSoundVSyncOff();
+ SampleFreqSet(temp);
+ }
+
+ soundInfo->ident = ID_NUMBER;
+}
+
+void SoundClear(void)
+{
+ struct SoundInfo *soundInfo = SOUND_INFO_PTR;
+ s32 i;
+ void *chan;
+
+ if (soundInfo->ident != ID_NUMBER)
+ return;
+
+ soundInfo->ident++;
+
+ i = MAX_DIRECTSOUND_CHANNELS;
+ chan = &soundInfo->chans[0];
+
+ while (i > 0)
+ {
+ ((struct SoundChannel *)chan)->status = 0;
+ i--;
+ chan = (void *)((s32)chan + sizeof(struct SoundChannel));
+ }
+
+ chan = soundInfo->cgbChans;
+
+ if (chan)
+ {
+ i = 1;
+
+ while (i <= 4)
+ {
+ soundInfo->CgbOscOff(i);
+ ((struct CgbChannel *)chan)->sf = 0;
+ i++;
+ chan = (void *)((s32)chan + sizeof(struct CgbChannel));
+ }
+ }
+
+ soundInfo->ident = ID_NUMBER;
+}
+
+void m4aSoundVSyncOff(void)
+{
+ struct SoundInfo *soundInfo = SOUND_INFO_PTR;
+
+ if (soundInfo->ident >= ID_NUMBER && soundInfo->ident <= ID_NUMBER + 1)
+ {
+ soundInfo->ident += 10;
+
+ if (REG_DMA1CNT & (DMA_REPEAT << 16))
+ REG_DMA1CNT = ((DMA_ENABLE | DMA_START_NOW | DMA_32BIT | DMA_SRC_INC | DMA_DEST_FIXED) << 16) | 4;
+
+ if (REG_DMA2CNT & (DMA_REPEAT << 16))
+ REG_DMA2CNT = ((DMA_ENABLE | DMA_START_NOW | DMA_32BIT | DMA_SRC_INC | DMA_DEST_FIXED) << 16) | 4;
+
+ REG_DMA1CNT_H = DMA_32BIT;
+ REG_DMA2CNT_H = DMA_32BIT;
+
+ CpuFill32(0, soundInfo->pcmBuffer, sizeof(soundInfo->pcmBuffer));
+ }
+}
+
+void m4aSoundVSyncOn(void)
+{
+ struct SoundInfo *soundInfo = SOUND_INFO_PTR;
+ u32 ident = soundInfo->ident;
+
+ if (ident == ID_NUMBER)
+ return;
+
+ REG_DMA1CNT_H = DMA_ENABLE | DMA_START_SPECIAL | DMA_32BIT | DMA_REPEAT;
+ REG_DMA2CNT_H = DMA_ENABLE | DMA_START_SPECIAL | DMA_32BIT | DMA_REPEAT;
+
+ soundInfo->pcmDmaCounter = 0;
+ soundInfo->ident = ident - 10;
+}
+
+void MPlayOpen(struct MusicPlayerInfo *mplayInfo, struct MusicPlayerTrack *tracks, u8 trackCount)
+{
+ struct SoundInfo *soundInfo;
+
+ if (trackCount == 0)
+ return;
+
+ if (trackCount > MAX_MUSICPLAYER_TRACKS)
+ trackCount = MAX_MUSICPLAYER_TRACKS;
+
+ soundInfo = SOUND_INFO_PTR;
+
+ if (soundInfo->ident != ID_NUMBER)
+ return;
+
+ soundInfo->ident++;
+
+ Clear64byte(mplayInfo);
+
+ mplayInfo->tracks = tracks;
+ mplayInfo->trackCount = trackCount;
+ mplayInfo->status = MUSICPLAYER_STATUS_PAUSE;
+
+ while (trackCount != 0)
+ {
+ tracks->flags = 0;
+ trackCount--;
+ tracks++;
+ }
+
+ if (soundInfo->func != 0)
+ {
+ mplayInfo->func = soundInfo->func;
+ mplayInfo->intp = soundInfo->intp;
+ soundInfo->func = 0;
+ }
+
+ soundInfo->intp = (u32)mplayInfo;
+ soundInfo->func = (u32)MPlayMain;
+ soundInfo->ident = ID_NUMBER;
+ mplayInfo->ident = ID_NUMBER;
+}
+
+void MPlayStart(struct MusicPlayerInfo *mplayInfo, struct SongHeader *songHeader)
+{
+ s32 i;
+ u8 unk_B;
+ struct MusicPlayerTrack *track;
+
+ if (mplayInfo->ident != ID_NUMBER)
+ return;
+
+ unk_B = mplayInfo->unk_B;
+
+ if (!unk_B
+ || ((!mplayInfo->songHeader || !(mplayInfo->tracks[0].flags & MPT_FLG_START))
+ && ((mplayInfo->status & MUSICPLAYER_STATUS_TRACK) == 0
+ || (mplayInfo->status & MUSICPLAYER_STATUS_PAUSE)))
+ || (mplayInfo->priority <= songHeader->priority))
+ {
+ mplayInfo->ident++;
+ mplayInfo->status = 0;
+ mplayInfo->songHeader = songHeader;
+ mplayInfo->tone = songHeader->tone;
+ mplayInfo->priority = songHeader->priority;
+ mplayInfo->clock = 0;
+ mplayInfo->tempoD = 150;
+ mplayInfo->tempoI = 150;
+ mplayInfo->tempoU = 0x100;
+ mplayInfo->tempoC = 0;
+ mplayInfo->fadeOI = 0;
+
+ i = 0;
+ track = mplayInfo->tracks;
+
+ while (i < songHeader->trackCount && i < mplayInfo->trackCount)
+ {
+ TrackStop(mplayInfo, track);
+ track->flags = MPT_FLG_EXIST | MPT_FLG_START;
+ track->chan = 0;
+ track->cmdPtr = songHeader->part[i];
+ i++;
+ track++;
+ }
+
+ while (i < mplayInfo->trackCount)
+ {
+ TrackStop(mplayInfo, track);
+ track->flags = 0;
+ i++;
+ track++;
+ }
+
+ if (songHeader->reverb & 0x80)
+ m4aSoundMode(songHeader->reverb);
+
+ mplayInfo->ident = ID_NUMBER;
+ }
+}
+
+void m4aMPlayStop(struct MusicPlayerInfo *mplayInfo)
+{
+ s32 i;
+ struct MusicPlayerTrack *track;
+
+ if (mplayInfo->ident != ID_NUMBER)
+ return;
+
+ mplayInfo->ident++;
+ mplayInfo->status |= MUSICPLAYER_STATUS_PAUSE;
+
+ i = mplayInfo->trackCount;
+ track = mplayInfo->tracks;
+
+ while (i > 0)
+ {
+ TrackStop(mplayInfo, track);
+ i--;
+ track++;
+ }
+
+ mplayInfo->ident = ID_NUMBER;
+}
+
+void FadeOutBody(struct MusicPlayerInfo *mplayInfo)
+{
+ s32 i;
+ struct MusicPlayerTrack *track;
+ u16 fadeOI = mplayInfo->fadeOI;
+ register u32 temp asm("r3");
+ register u16 mask asm("r2");
+
+ if (fadeOI == 0)
+ return;
+
+ mplayInfo->fadeOC--;
+
+ temp = 0xFFFF;
+ mask = temp;
+
+ if (mplayInfo->fadeOC != 0)
+ return;
+
+ mplayInfo->fadeOC = fadeOI;
+
+ if (mplayInfo->fadeOV & FADE_IN)
+ {
+ mplayInfo->fadeOV += (4 << FADE_VOL_SHIFT);
+
+ if ((u16)(mplayInfo->fadeOV & mask) >= (64 << FADE_VOL_SHIFT))
+ {
+ mplayInfo->fadeOV = (64 << FADE_VOL_SHIFT);
+ mplayInfo->fadeOI = 0;
+ }
+ }
+ else
+ {
+ mplayInfo->fadeOV -= (4 << FADE_VOL_SHIFT);
+
+ if ((s16)(mplayInfo->fadeOV & mask) <= 0)
+ {
+ i = mplayInfo->trackCount;
+ track = mplayInfo->tracks;
+
+ while (i > 0)
+ {
+ register u32 fadeOV asm("r7");
+ u32 val;
+
+ TrackStop(mplayInfo, track);
+
+ val = TEMPORARY_FADE;
+ fadeOV = mplayInfo->fadeOV;
+ val &= fadeOV;
+
+ if (!val)
+ track->flags = 0;
+
+ i--;
+ track++;
+ }
+
+ if (mplayInfo->fadeOV & TEMPORARY_FADE)
+ mplayInfo->status |= MUSICPLAYER_STATUS_PAUSE;
+ else
+ mplayInfo->status = MUSICPLAYER_STATUS_PAUSE;
+
+ mplayInfo->fadeOI = 0;
+ return;
+ }
+ }
+
+ i = mplayInfo->trackCount;
+ track = mplayInfo->tracks;
+
+ while (i > 0)
+ {
+ if (track->flags & MPT_FLG_EXIST)
+ {
+ track->volX = (mplayInfo->fadeOV >> FADE_VOL_SHIFT);
+ track->flags |= MPT_FLG_VOLCHG;
+ }
+
+ i--;
+ track++;
+ }
+}
+
+void TrkVolPitSet(struct MusicPlayerInfo *mplayInfo, struct MusicPlayerTrack *track)
+{
+ if (track->flags & MPT_FLG_VOLSET)
+ {
+ s32 x;
+ s32 y;
+
+ x = (u32)(track->vol * track->volX) >> 5;
+
+ if (track->modT == 1)
+ x = (u32)(x * (track->modM + 128)) >> 7;
+
+ y = 2 * track->pan + track->panX;
+
+ if (track->modT == 2)
+ y += track->modM;
+
+ if (y < -128)
+ y = -128;
+ else if (y > 127)
+ y = 127;
+
+ track->volMR = (u32)((y + 128) * x) >> 8;
+ track->volML = (u32)((127 - y) * x) >> 8;
+ }
+
+ if (track->flags & MPT_FLG_PITSET)
+ {
+ s32 bend = track->bend * track->bendRange;
+ register s32 x asm("r1") = track->tune;
+ x += bend;
+ x *= 4;
+ x += (track->keyShift << 8);
+ x += (track->keyShiftX << 8);
+ x += track->pitX;
+
+ if (track->modT == 0)
+ x += 16 * track->modM;
+
+ track->keyM = x >> 8;
+ track->pitM = x;
+ }
+
+ track->flags &= ~(MPT_FLG_PITSET | MPT_FLG_VOLSET);
+}
+
+u32 MidiKeyToCgbFreq(u8 chanNum, u8 key, u8 fineAdjust)
+{
+ if (chanNum == 4)
+ {
+ if (key <= 20)
+ {
+ key = 0;
+ }
+ else
+ {
+ key -= 21;
+ if (key > 59)
+ key = 59;
+ }
+
+ return gNoiseTable[key];
+ }
+ else
+ {
+ s32 val1;
+ s32 val2;
+
+ if (key <= 35)
+ {
+ fineAdjust = 0;
+ key = 0;
+ }
+ else
+ {
+ key -= 36;
+ if (key > 130)
+ {
+ key = 130;
+ fineAdjust = 255;
+ }
+ }
+
+ val1 = gCgbScaleTable[key];
+ val1 = gCgbFreqTable[val1 & 0xF] >> (val1 >> 4);
+
+ val2 = gCgbScaleTable[key + 1];
+ val2 = gCgbFreqTable[val2 & 0xF] >> (val2 >> 4);
+
+ return val1 + ((fineAdjust * (val2 - val1)) >> 8) + 2048;
+ }
+}
+
+void CgbOscOff(u8 chanNum)
+{
+ switch (chanNum)
+ {
+ case 1:
+ REG_NR12 = 8;
+ REG_NR14 = 0x80;
+ break;
+ case 2:
+ REG_NR22 = 8;
+ REG_NR24 = 0x80;
+ break;
+ case 3:
+ REG_NR30 = 0;
+ break;
+ default:
+ REG_NR42 = 8;
+ REG_NR44 = 0x80;
+ }
+}
diff --git a/src/m4a_4.c b/src/m4a_4.c
new file mode 100644
index 0000000..595ea5a
--- /dev/null
+++ b/src/m4a_4.c
@@ -0,0 +1,384 @@
+#include "gba/m4a_internal.h"
+
+void m4aMPlayTempoControl(struct MusicPlayerInfo *mplayInfo, u16 tempo)
+{
+ if (mplayInfo->ident == ID_NUMBER)
+ {
+ mplayInfo->ident++;
+ mplayInfo->tempoU = tempo;
+ mplayInfo->tempoI = (mplayInfo->tempoD * mplayInfo->tempoU) >> 8;
+ mplayInfo->ident = ID_NUMBER;
+ }
+}
+
+void m4aMPlayVolumeControl(struct MusicPlayerInfo *mplayInfo, u16 trackBits, u16 volume)
+{
+ s32 i;
+ u32 bit;
+ struct MusicPlayerTrack *track;
+
+ if (mplayInfo->ident != ID_NUMBER)
+ return;
+
+ mplayInfo->ident++;
+
+ i = mplayInfo->trackCount;
+ track = mplayInfo->tracks;
+ bit = 1;
+
+ while (i > 0)
+ {
+ if (trackBits & bit)
+ {
+ if (track->flags & MPT_FLG_EXIST)
+ {
+ track->volX = volume / 4;
+ track->flags |= MPT_FLG_VOLCHG;
+ }
+ }
+
+ i--;
+ track++;
+ bit <<= 1;
+ }
+
+ mplayInfo->ident = ID_NUMBER;
+}
+
+void m4aMPlayPitchControl(struct MusicPlayerInfo *mplayInfo, u16 trackBits, s16 pitch)
+{
+ s32 i;
+ u32 bit;
+ struct MusicPlayerTrack *track;
+
+ if (mplayInfo->ident != ID_NUMBER)
+ return;
+
+ mplayInfo->ident++;
+
+ i = mplayInfo->trackCount;
+ track = mplayInfo->tracks;
+ bit = 1;
+
+ while (i > 0)
+ {
+ if (trackBits & bit)
+ {
+ if (track->flags & MPT_FLG_EXIST)
+ {
+ track->keyShiftX = pitch >> 8;
+ track->pitX = pitch;
+ track->flags |= MPT_FLG_PITCHG;
+ }
+ }
+
+ i--;
+ track++;
+ bit <<= 1;
+ }
+
+ mplayInfo->ident = ID_NUMBER;
+}
+
+void m4aMPlayPanpotControl(struct MusicPlayerInfo *mplayInfo, u16 trackBits, s8 pan)
+{
+ s32 i;
+ u32 bit;
+ struct MusicPlayerTrack *track;
+
+ if (mplayInfo->ident != ID_NUMBER)
+ return;
+
+ mplayInfo->ident++;
+
+ i = mplayInfo->trackCount;
+ track = mplayInfo->tracks;
+ bit = 1;
+
+ while (i > 0)
+ {
+ if (trackBits & bit)
+ {
+ if (track->flags & MPT_FLG_EXIST)
+ {
+ track->panX = pan;
+ track->flags |= MPT_FLG_VOLCHG;
+ }
+ }
+
+ i--;
+ track++;
+ bit <<= 1;
+ }
+
+ mplayInfo->ident = ID_NUMBER;
+}
+
+void ClearModM(struct MusicPlayerTrack *track)
+{
+ track->lfoSpeedC = 0;
+ track->modM = 0;
+
+ if (track->modT == 0)
+ track->flags |= MPT_FLG_PITCHG;
+ else
+ track->flags |= MPT_FLG_VOLCHG;
+}
+
+void m4aMPlayModDepthSet(struct MusicPlayerInfo *mplayInfo, u16 trackBits, u8 modDepth)
+{
+ s32 i;
+ u32 bit;
+ struct MusicPlayerTrack *track;
+
+ if (mplayInfo->ident != ID_NUMBER)
+ return;
+
+ mplayInfo->ident++;
+
+ i = mplayInfo->trackCount;
+ track = mplayInfo->tracks;
+ bit = 1;
+
+ while (i > 0)
+ {
+ if (trackBits & bit)
+ {
+ if (track->flags & MPT_FLG_EXIST)
+ {
+ track->mod = modDepth;
+
+ if (!track->mod)
+ ClearModM(track);
+ }
+ }
+
+ i--;
+ track++;
+ bit <<= 1;
+ }
+
+ mplayInfo->ident = ID_NUMBER;
+}
+
+void m4aMPlayLFOSpeedSet(struct MusicPlayerInfo *mplayInfo, u16 trackBits, u8 lfoSpeed)
+{
+ s32 i;
+ u32 bit;
+ struct MusicPlayerTrack *track;
+
+ if (mplayInfo->ident != ID_NUMBER)
+ return;
+
+ mplayInfo->ident++;
+
+ i = mplayInfo->trackCount;
+ track = mplayInfo->tracks;
+ bit = 1;
+
+ while (i > 0)
+ {
+ if (trackBits & bit)
+ {
+ if (track->flags & MPT_FLG_EXIST)
+ {
+ track->lfoSpeed = lfoSpeed;
+
+ if (!track->lfoSpeed)
+ ClearModM(track);
+ }
+ }
+
+ i--;
+ track++;
+ bit <<= 1;
+ }
+
+ mplayInfo->ident = ID_NUMBER;
+}
+
+#define MEMACC_COND_JUMP(cond) \
+if (cond) \
+ goto cond_true; \
+else \
+ goto cond_false; \
+
+void ply_memacc(struct MusicPlayerInfo *mplayInfo, struct MusicPlayerTrack *track)
+{
+ u32 op;
+ u8 *addr;
+ u8 data;
+
+ op = *track->cmdPtr;
+ track->cmdPtr++;
+
+ addr = mplayInfo->memAccArea + *track->cmdPtr;
+ track->cmdPtr++;
+
+ data = *track->cmdPtr;
+ track->cmdPtr++;
+
+ switch (op)
+ {
+ case 0:
+ *addr = data;
+ return;
+ case 1:
+ *addr += data;
+ return;
+ case 2:
+ *addr -= data;
+ return;
+ case 3:
+ *addr = mplayInfo->memAccArea[data];
+ return;
+ case 4:
+ *addr += mplayInfo->memAccArea[data];
+ return;
+ case 5:
+ *addr -= mplayInfo->memAccArea[data];
+ return;
+ case 6:
+ MEMACC_COND_JUMP(*addr == data)
+ return;
+ case 7:
+ MEMACC_COND_JUMP(*addr != data)
+ return;
+ case 8:
+ MEMACC_COND_JUMP(*addr > data)
+ return;
+ case 9:
+ MEMACC_COND_JUMP(*addr >= data)
+ return;
+ case 10:
+ MEMACC_COND_JUMP(*addr <= data)
+ return;
+ case 11:
+ MEMACC_COND_JUMP(*addr < data)
+ return;
+ case 12:
+ MEMACC_COND_JUMP(*addr == mplayInfo->memAccArea[data])
+ return;
+ case 13:
+ MEMACC_COND_JUMP(*addr != mplayInfo->memAccArea[data])
+ return;
+ case 14:
+ MEMACC_COND_JUMP(*addr > mplayInfo->memAccArea[data])
+ return;
+ case 15:
+ MEMACC_COND_JUMP(*addr >= mplayInfo->memAccArea[data])
+ return;
+ case 16:
+ MEMACC_COND_JUMP(*addr <= mplayInfo->memAccArea[data])
+ return;
+ case 17:
+ MEMACC_COND_JUMP(*addr < mplayInfo->memAccArea[data])
+ return;
+ default:
+ return;
+ }
+
+cond_true:
+ {
+ void (*func)(struct MusicPlayerInfo *, struct MusicPlayerTrack *) = *(&gMPlayJumpTable[1]);
+ func(mplayInfo, track);
+ return;
+ }
+
+cond_false:
+ track->cmdPtr += 4;
+}
+
+void ply_xcmd(struct MusicPlayerInfo *mplayInfo, struct MusicPlayerTrack *track)
+{
+ u32 n = *track->cmdPtr;
+ track->cmdPtr++;
+
+ gXcmdTable[n](mplayInfo, track);
+}
+
+void ply_xxx(struct MusicPlayerInfo *mplayInfo, struct MusicPlayerTrack *track)
+{
+ void (*func)(struct MusicPlayerInfo *, struct MusicPlayerTrack *) = *(&gMPlayJumpTable[0]);
+ func(mplayInfo, track);
+}
+
+#define READ_XCMD_BYTE(var, n) \
+{ \
+ u32 byte = track->cmdPtr[(n)]; \
+ byte <<= n * 8; \
+ (var) &= ~(0xFF << (n * 8)); \
+ (var) |= byte; \
+}
+
+void ply_xwave(struct MusicPlayerInfo *mplayInfo, struct MusicPlayerTrack *track)
+{
+ u32 wav;
+
+ READ_XCMD_BYTE(wav, 0) // UB: uninitialized variable
+ READ_XCMD_BYTE(wav, 1)
+ READ_XCMD_BYTE(wav, 2)
+ READ_XCMD_BYTE(wav, 3)
+
+ track->tone.wav = (struct WaveData *)wav;
+ track->cmdPtr += 4;
+}
+
+void ply_xtype(struct MusicPlayerInfo *mplayInfo, struct MusicPlayerTrack *track)
+{
+ track->tone.type = *track->cmdPtr;
+ track->cmdPtr++;
+}
+
+void ply_xatta(struct MusicPlayerInfo *mplayInfo, struct MusicPlayerTrack *track)
+{
+ track->tone.attack = *track->cmdPtr;
+ track->cmdPtr++;
+}
+
+void ply_xdeca(struct MusicPlayerInfo *mplayInfo, struct MusicPlayerTrack *track)
+{
+ track->tone.decay = *track->cmdPtr;
+ track->cmdPtr++;
+}
+
+void ply_xsust(struct MusicPlayerInfo *mplayInfo, struct MusicPlayerTrack *track)
+{
+ track->tone.sustain = *track->cmdPtr;
+ track->cmdPtr++;
+}
+
+void ply_xrele(struct MusicPlayerInfo *mplayInfo, struct MusicPlayerTrack *track)
+{
+ track->tone.release = *track->cmdPtr;
+ track->cmdPtr++;
+}
+
+void ply_xiecv(struct MusicPlayerInfo *mplayInfo, struct MusicPlayerTrack *track)
+{
+ track->echoVolume = *track->cmdPtr;
+ track->cmdPtr++;
+}
+
+void ply_xiecl(struct MusicPlayerInfo *mplayInfo, struct MusicPlayerTrack *track)
+{
+ track->echoLength = *track->cmdPtr;
+ track->cmdPtr++;
+}
+
+void ply_xleng(struct MusicPlayerInfo *mplayInfo, struct MusicPlayerTrack *track)
+{
+ track->tone.length = *track->cmdPtr;
+ track->cmdPtr++;
+}
+
+void ply_xswee(struct MusicPlayerInfo *mplayInfo, struct MusicPlayerTrack *track)
+{
+ track->tone.pan_sweep = *track->cmdPtr;
+ track->cmdPtr++;
+}
+
+void DummyFunc()
+{
+ ;
+}
diff --git a/src/m4a_tables.c b/src/m4a_tables.c
new file mode 100644
index 0000000..fd289a6
--- /dev/null
+++ b/src/m4a_tables.c
@@ -0,0 +1,223 @@
+#include "gba/m4a_internal.h"
+
+// Some of these functions have different signatures, so we need to make this
+// an array of void pointers or a struct. It's simpler to just make it an array
+// for now.
+void * const gMPlayJumpTableTemplate[] =
+{
+ ply_fine,
+ ply_goto,
+ ply_patt,
+ ply_pend,
+ ply_rept,
+ ply_fine,
+ ply_fine,
+ ply_fine,
+ ply_fine,
+ ply_prio,
+ ply_tempo,
+ ply_keysh,
+ ply_voice,
+ ply_vol,
+ ply_pan,
+ ply_bend,
+ ply_bendr,
+ ply_lfos,
+ ply_lfodl,
+ ply_mod,
+ ply_modt,
+ ply_fine,
+ ply_fine,
+ ply_tune,
+ ply_fine,
+ ply_fine,
+ ply_fine,
+ ply_port,
+ ply_fine,
+ ply_endtie,
+ SampleFreqSet,
+ TrackStop,
+ FadeOutBody,
+ TrkVolPitSet,
+ RealClearChain,
+ SoundMainBTM,
+};
+
+const u8 gScaleTable[] =
+{
+ 0xE0, 0xE1, 0xE2, 0xE3, 0xE4, 0xE5, 0xE6, 0xE7, 0xE8, 0xE9, 0xEA, 0xEB,
+ 0xD0, 0xD1, 0xD2, 0xD3, 0xD4, 0xD5, 0xD6, 0xD7, 0xD8, 0xD9, 0xDA, 0xDB,
+ 0xC0, 0xC1, 0xC2, 0xC3, 0xC4, 0xC5, 0xC6, 0xC7, 0xC8, 0xC9, 0xCA, 0xCB,
+ 0xB0, 0xB1, 0xB2, 0xB3, 0xB4, 0xB5, 0xB6, 0xB7, 0xB8, 0xB9, 0xBA, 0xBB,
+ 0xA0, 0xA1, 0xA2, 0xA3, 0xA4, 0xA5, 0xA6, 0xA7, 0xA8, 0xA9, 0xAA, 0xAB,
+ 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, 0x98, 0x99, 0x9A, 0x9B,
+ 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8A, 0x8B,
+ 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7A, 0x7B,
+ 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6A, 0x6B,
+ 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5A, 0x5B,
+ 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4A, 0x4B,
+ 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3A, 0x3B,
+ 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2A, 0x2B,
+ 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1A, 0x1B,
+ 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B,
+};
+
+const u32 gFreqTable[] =
+{
+ 2147483648u,
+ 2275179671u,
+ 2410468894u,
+ 2553802834u,
+ 2705659852u,
+ 2866546760u,
+ 3037000500u,
+ 3217589947u,
+ 3408917802u,
+ 3611622603u,
+ 3826380858u,
+ 4053909305u,
+};
+
+const u16 gPcmSamplesPerVBlankTable[] =
+{
+ 96,
+ 132,
+ 176,
+ 224,
+ 264,
+ 304,
+ 352,
+ 448,
+ 528,
+ 608,
+ 672,
+ 704,
+};
+
+const u8 gCgbScaleTable[] =
+{
+ 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B,
+ 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1A, 0x1B,
+ 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2A, 0x2B,
+ 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3A, 0x3B,
+ 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4A, 0x4B,
+ 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5A, 0x5B,
+ 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6A, 0x6B,
+ 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7A, 0x7B,
+ 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8A, 0x8B,
+ 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, 0x98, 0x99, 0x9A, 0x9B,
+ 0xA0, 0xA1, 0xA2, 0xA3, 0xA4, 0xA5, 0xA6, 0xA7, 0xA8, 0xA9, 0xAA, 0xAB,
+};
+
+const s16 gCgbFreqTable[] =
+{
+ -2004,
+ -1891,
+ -1785,
+ -1685,
+ -1591,
+ -1501,
+ -1417,
+ -1337,
+ -1262,
+ -1192,
+ -1125,
+ -1062,
+};
+
+const u8 gNoiseTable[] =
+{
+ 0xD7, 0xD6, 0xD5, 0xD4,
+ 0xC7, 0xC6, 0xC5, 0xC4,
+ 0xB7, 0xB6, 0xB5, 0xB4,
+ 0xA7, 0xA6, 0xA5, 0xA4,
+ 0x97, 0x96, 0x95, 0x94,
+ 0x87, 0x86, 0x85, 0x84,
+ 0x77, 0x76, 0x75, 0x74,
+ 0x67, 0x66, 0x65, 0x64,
+ 0x57, 0x56, 0x55, 0x54,
+ 0x47, 0x46, 0x45, 0x44,
+ 0x37, 0x36, 0x35, 0x34,
+ 0x27, 0x26, 0x25, 0x24,
+ 0x17, 0x16, 0x15, 0x14,
+ 0x07, 0x06, 0x05, 0x04,
+ 0x03, 0x02, 0x01, 0x00,
+};
+
+const u8 gCgb3Vol[] =
+{
+ 0x00, 0x00,
+ 0x60, 0x60, 0x60, 0x60,
+ 0x40, 0x40, 0x40, 0x40,
+ 0x80, 0x80, 0x80, 0x80,
+ 0x20, 0x20,
+};
+
+const u8 gClockTable[] =
+{
+ 0x00,
+ 0x01,
+ 0x02,
+ 0x03,
+ 0x04,
+ 0x05,
+ 0x06,
+ 0x07,
+ 0x08,
+ 0x09,
+ 0x0A,
+ 0x0B,
+ 0x0C,
+ 0x0D,
+ 0x0E,
+ 0x0F,
+ 0x10,
+ 0x11,
+ 0x12,
+ 0x13,
+ 0x14,
+ 0x15,
+ 0x16,
+ 0x17,
+ 0x18,
+ 0x1C,
+ 0x1E,
+ 0x20,
+ 0x24,
+ 0x28,
+ 0x2A,
+ 0x2C,
+ 0x30,
+ 0x34,
+ 0x36,
+ 0x38,
+ 0x3C,
+ 0x40,
+ 0x42,
+ 0x44,
+ 0x48,
+ 0x4C,
+ 0x4E,
+ 0x50,
+ 0x54,
+ 0x58,
+ 0x5A,
+ 0x5C,
+ 0x60,
+};
+
+const XcmdFunc gXcmdTable[] =
+{
+ ply_xxx,
+ ply_xwave,
+ ply_xtype,
+ ply_xxx,
+ ply_xatta,
+ ply_xdeca,
+ ply_xsust,
+ ply_xrele,
+ ply_xiecv,
+ ply_xiecl,
+ ply_xleng,
+ ply_xswee
+};
diff --git a/src/memory.c b/src/memory.c
new file mode 100644
index 0000000..05c89a2
--- /dev/null
+++ b/src/memory.c
@@ -0,0 +1,145 @@
+#include "global.h"
+#include "memory.h"
+
+extern struct HeapFreeListElement gMainHeapFreeList[32];
+extern u8 gMainHeap[HEAP_SIZE];
+extern u32 gHeapCount;
+extern struct HeapDescriptor gMainHeapDescriptor;
+extern struct HeapDescriptor *gHeapDescriptorList[8];
+
+extern void CpuClear(u32 *dest, s32 size);
+
+void InitHeapInternal(void);
+
+void InitHeap(void)
+{
+ InitHeapInternal();
+}
+
+void MemoryClear8(u8 *dest, s32 size)
+{
+ while (size > 0)
+ {
+ size -= 1;
+ *dest++ = 0;
+ }
+}
+
+void MemoryClear16(u16 *dest, s32 size)
+{
+ while (size > 0)
+ {
+ size -= 2;
+ *dest++ = 0;
+ }
+}
+void MemoryClear32(u32 *dest, s32 size)
+{
+ CpuClear(dest, size);
+}
+
+void MemoryFill8(u8 *dest, u8 value, s32 size)
+{
+ while (size > 0)
+ {
+ size -= 1;
+ *dest++ = value;
+ }
+}
+
+void MemoryFill16(u16 *dest, u16 value, s32 size)
+{
+ while (size > 0)
+ {
+ size -= 2;
+ *dest++ = value;
+ }
+}
+
+void MemoryFill32(u32 *dest, u32 value, s32 size)
+{
+ while (size > 0)
+ {
+ size -= 4;
+ *dest++ = value;
+ }
+}
+
+void MemoryCopy8(u8 *dest, u8 *src, s32 size)
+{
+ while (size > 0)
+ {
+ size -= 1;
+ *dest++ = *src++;
+ }
+}
+
+void MemoryCopy16(u16 *dest, u16 *src, s32 size)
+{
+ while (size > 0)
+ {
+ size -= 2;
+ *dest++ = *src++;
+ }
+}
+
+void MemoryCopy32(u32 *dest, u32 *src, s32 size)
+{
+ while (size > 0)
+ {
+ size -= 4;
+ *dest++ = *src++;
+ }
+}
+
+void InitHeapInternal(void)
+{
+ struct HeapSettings settings;
+
+ settings.start = gMainHeap;
+ settings.size = HEAP_SIZE;
+ gHeapCount = 0;
+ DoInitHeap(&gMainHeapDescriptor, &settings, gMainHeapFreeList, sizeof(gMainHeapFreeList) / sizeof(struct HeapFreeListElement));
+}
+
+void DoInitHeap(struct HeapDescriptor *descriptor, struct HeapSettings *settings, struct HeapFreeListElement *freeList, u32 freeListLength)
+{
+ u32 aligned_size;
+
+ aligned_size = settings->size & 0xFFFFFFFC;
+
+ gHeapDescriptorList[gHeapCount++] = descriptor;
+
+ descriptor->start = settings->start;
+ descriptor->size = aligned_size;
+ descriptor->unk0 = 2;
+ descriptor->parentHeap = NULL;
+ descriptor->freeList = freeList;
+ descriptor->freeCount = 1;
+ descriptor->freeListLength = freeListLength;
+
+ freeList->unk_atb = 0;
+ freeList->atb = 0;
+ freeList->block.start = descriptor->start;
+ freeList->block.size = aligned_size;
+ freeList->block.allocatedSize = 0;
+ freeList->grp = 0;
+}
+
+void InitSubHeap(struct HeapDescriptor *parentHeap, struct HeapMemoryBlock *block, u32 freeListMax)
+{
+ u32 freeListSize;
+ u32 aligned_size;
+ u32 alignment;
+ struct HeapFreeListElement *freeList;
+ struct HeapSettings settings;
+
+ freeListSize = freeListMax * 3;
+ alignment = ~3;
+ freeListSize *= 8;
+ aligned_size = (block->size - freeListSize) & alignment;
+ freeList = (struct HeapFreeListElement *)block->start;
+ settings.start = &((u8 *)block->start)[freeListSize];
+ settings.size = aligned_size;
+ DoInitHeap(parentHeap, &settings, freeList, freeListMax);
+}
diff --git a/src/save.c b/src/save.c
new file mode 100644
index 0000000..5d39bfe
--- /dev/null
+++ b/src/save.c
@@ -0,0 +1,64 @@
+#include "global.h"
+
+extern u32 gUnknown_203B17C;
+extern u32 gUnknown_203B180;
+extern u32 *gUnknown_203B184;
+extern u32 gUnknown_202DE28;
+
+
+u32 sub_8011C1C(void)
+{
+ return gUnknown_203B17C;
+}
+
+void sub_8011C28(u32 in)
+{
+ gUnknown_203B17C = in;
+}
+
+u32 sub_8011C34(void)
+{
+ return gUnknown_202DE28;
+}
+
+void sub_8011C40(u32 in)
+{
+ gUnknown_202DE28 = in;
+}
+
+u32 sub_8011C4C(void)
+{
+ return gUnknown_203B180;
+}
+
+void CalculateChecksum(u8 *out, u32 size)
+{
+ u32 checksum = 0;
+ s32 i = size / 4;
+ if (i > 1)
+ {
+ u32 *ptr = (u32 *)&out[4];
+ --i;
+ do
+ checksum += *ptr++;
+ while (--i);
+ }
+ *(u32 *)out = checksum;
+}
+
+bool8 ValidateChecksum(u8 *in, u32 size)
+{
+ u32 checksum = 0;
+ s32 i = size / 4;
+ if (i > 1)
+ {
+ u32 *ptr = (u32 *)&in[4];
+ --i;
+ do
+ checksum += *ptr++;
+ while (--i);
+ }
+ if (*(u32 *)in != checksum)
+ return TRUE;
+ return FALSE;
+}
diff --git a/src/save1.c b/src/save1.c
new file mode 100644
index 0000000..b7de6c6
--- /dev/null
+++ b/src/save1.c
@@ -0,0 +1,13 @@
+#include "global.h"
+
+extern void MemoryFree(void *);
+
+extern u8 *gUnknown_203B194;
+
+void sub_80129FC()
+{
+ if (gUnknown_203B194) {
+ MemoryFree(gUnknown_203B194);
+ gUnknown_203B194 = NULL;
+ }
+}
diff --git a/src/sprite.c b/src/sprite.c
new file mode 100644
index 0000000..d741fce
--- /dev/null
+++ b/src/sprite.c
@@ -0,0 +1,10 @@
+#include "global.h"
+
+void ResetSprites(bool32);
+void SetSavingIconCoords(u32);
+
+void InitSprites(void)
+{
+ ResetSprites(1);
+ SetSavingIconCoords(0);
+}
diff --git a/src/text.c b/src/text.c
index 8c6725d..5d93844 100644
--- a/src/text.c
+++ b/src/text.c
@@ -1,8 +1,3 @@
-// ------------------------
-// TEXT.C
-// Decompiled by PikalaxALT
-// ------------------------
-
#include "global.h"
#include "file_system.h"
#include "code_800558C.h"
@@ -34,7 +29,7 @@ EWRAM_DATA u8 gUnknown_20274A5;
EWRAM_DATA u32 gUnknown_20274AC;
EWRAM_DATA vu32 gUnknown_20274B0;
EWRAM_DATA u8 gUnknown_20274B4[0x3b00];
-EWRAM_DATA struct OpenedFile *gUnknown_202AFB4[3];
+EWRAM_DATA struct OpenedFile *gKanji[2];
EWRAM_DATA struct UnkTextStruct2 gUnknown_202AFC0[4];
EWRAM_DATA u32 gUnknown_202B020;
EWRAM_DATA u32 gUnknown_202B024;
@@ -65,10 +60,10 @@ void sub_8006218(void)
int k;
gUnknown_20274AC = 0;
- gUnknown_202AFB4[0] = OpenFileAndGetFileDataPtr(gUnknown_80B87B4, &gUnknown_8300500);
- gUnknown_202AFB4[1] = OpenFileAndGetFileDataPtr(gUnknown_80B87BC, &gUnknown_8300500);
- gUnknown_2027490[0] = gUnknown_202AFB4[0]->data;
- gUnknown_2027490[1] = gUnknown_202AFB4[1]->data;
+ gKanji[0] = OpenFileAndGetFileDataPtr(gUnknown_80B87B4, &gUnknown_8300500);
+ gKanji[1] = OpenFileAndGetFileDataPtr(gUnknown_80B87BC, &gUnknown_8300500);
+ gUnknown_2027490[0] = gKanji[0]->data;
+ gUnknown_2027490[1] = gKanji[1]->data;
gUnknown_202B028[0] = 11;
gUnknown_202B028[1] = 12;
for (k = 0; k < 4; k++)
diff --git a/sym_ewram.txt b/sym_ewram.txt
index ebfde64..a627dcf 100644
--- a/sym_ewram.txt
+++ b/sym_ewram.txt
@@ -1,1054 +1,1053 @@
- .space 0x8F0
+ . += 0x8F0;
-gUnknown_20008F0: @ 20008F0
- .space 0x80
+gUnknown_20008F0 = .; /* 20008F0 */
+ . += 0x80;
-gUnknown_2000970: @ 2000970
- .space 0xC0
+gUnknown_2000970 = .; /* 2000970 */
+ . += 0xC0;
-gUnknown_2000A30: @ 2000A30
- .space 0x50
+gMPlayMemAccArea = .; /* 2000A30 */
+ . += 0x50;
-gUnknown_2000A80: @ 2000A80
- .space 0x8
+gUnknown_2000A80 = .; /* 2000A80 */
+ . += 0x8;
-gUnknown_2000A88: @ 2000A88
- .space 0x400
+gUnknown_2000A88 = .; /* 2000A88 */
+ . += 0x400;
-gUnknown_2000E88: @ 2000E88
- .space 0x20
+gHeapDescriptorList = .; /* 2000E88 */
+ . += 0x20;
-gUnknown_2000EA8: @ 2000EA8
- .space 0x8
+gHeapCount = .; /* 2000EA8 */
+ . += 0x4;
+ . = ALIGN(16);
-gUnknown_2000EB0: @ 2000EB0
- .space 0x20
+gMainHeapDescriptor = .; /* 2000EB0 */
+ . += 0x20;
-gUnknown_2000ED0: @ 2000ED0
- .space 0x300
+gMainHeapFreeList = .; /* 2000ED0 */
+ . += 0x300;
-gUnknown_20011D0: @ 20011D0
- .space 0x24000
+gMainHeap = .; /* 20011D0 */
+ . += 0x24000;
-gUnknown_20251D0: @ 20251D0
- .space 0x20
+gBGPaletteUsed = .; /* 20251D0 */
+ . += 0x20;
-gUnknown_20251F0: @ 20251F0
- .space 0x400
+gBGPaletteBuffer = .; /* 20251F0 */
+ . += 0x400;
-gUnknown_20255F0: @ 20255F0
- .space 0x10
+gUnknown_20255F0 = .; /* 20255F0 */
+ . += 0x10;
-gUnknown_2025600: @ 2025600
- .space 0x2C
+gUnknown_2025600 = .; /* 2025600 */
+ . += 0x2C;
-gUnknown_202562C: @ 202562C
- .space 0xC
+gUnknown_202562C = .; /* 202562C */
+ . += 0xC;
-gUnknown_2025638: @ 2025638
- .space 0x10
+gUnknown_2025638 = .; /* 2025638 */
+ . += 0x10;
-gUnknown_2025648: @ 2025648
- .space 0x10
+gUnknown_2025648 = .; /* 2025648 */
+ . += 0x10;
-gUnknown_2025658: @ 2025658
- .space 0x10
+gUnknown_2025658 = .; /* 2025658 */
+ . += 0x10;
-gUnknown_2025668: @ 2025668
- .space 0x8
+gUnknown_2025668 = .; /* 2025668 */
+ . += 0x8;
-gUnknown_2025670: @ 2025670
- .space 0x2
+gUnknown_2025670 = .; /* 2025670 */
+ . += 0x2;
-gUnknown_2025672: @ 2025672
- .space 0x10
+gUnknown_2025672 = .; /* 2025672 */
+ . += 0x10;
-gUnknown_2025682: @ 2025682
- .space 0x12
+gUnknown_2025682 = .; /* 2025682 */
+ . += 0x12;
-gUnknown_2025694: @ 2025694
- .space 0x4
+gUnknown_2025694 = .; /* 2025694 */
+ . += 0x4;
-gUnknown_2025698: @ 2025698
- .space 0x8
+gUnknown_2025698 = .; /* 2025698 */
+ . += 0x8;
-gUnknown_20256A0: @ 20256A0
- .space 0x808
+gUnknown_20256A0 = .; /* 20256A0 */
+ . += 0x808;
-gUnknown_2025EA8: @ 2025EA8
- .space 0x400
+gUnknown_2025EA8 = .; /* 2025EA8 */
+ . += 0x400;
-gUnknown_20262A8: @ 20262A8
- .space 0x400
+gUnknown_20262A8 = .; /* 20262A8 */
+ . += 0x400;
-gUnknown_20266A8: @ 20266A8
- .space 0x8
+gSpriteCount = .; /* 20266A8 */
+ . += 0x8;
-gUnknown_20266B0: @ 20266B0
- .space 0x780
+gUnknown_20266B0 = .; /* 20266B0 */
+ . += 0x780;
-gUnknown_2026E30: @ 2026E30
- .space 0x8
+gCharMemCursor = .; /* 2026E30 */
+ . += 0x8;
-gUnknown_2026E38: @ 2026E38
- .space 0x4
+gUnknown_2026E38 = .; /* 2026E38 */
+ . += 0x4;
-gUnknown_2026E3C: @ 2026E3C
- .space 0x4
+gUnknown_2026E3C = .; /* 2026E3C */
+ . += 0x4;
-gUnknown_2026E40: @ 2026E40
- .space 0x4
+gUnknown_2026E40 = .; /* 2026E40 */
+ . += 0x4;
-gUnknown_2026E44: @ 2026E44
- .space 0x4
+gUnknown_2026E44 = .; /* 2026E44 */
+ . += 0x4;
-gUnknown_2026E48: @ 2026E48
- .space 0x4
+gUnknown_2026E48 = .; /* 2026E48 */
+ . += 0x4;
-gUnknown_2026E4C: @ 2026E4C
- .space 0x2
+gUnknown_2026E4C = .; /* 2026E4C */
+ . += 0x2;
-gUnknown_2026E4E: @ 2026E4E
- .space 0x2
+gUnknown_2026E4E = .; /* 2026E4E */
+ . += 0x2;
-gUnknown_2026E50: @ 2026E50
- .space 0x4
+gUnknown_2026E50 = .; /* 2026E50 */
+ . += 0x4;
-gUnknown_2026E54: @ 2026E54
- .space 0x4
+gUnknown_2026E54 = .; /* 2026E54 */
+ . += 0x4;
-gUnknown_2026E58: @ 2026E58
- .space 0x8
+gUnknown_2026E58 = .; /* 2026E58 */
+ . += 0x8;
-gUnknown_2026E60: @ 2026E60
- .space 0x288
+gUnknown_2026E60 = .; /* 2026E60 */
+ . += 0x288;
-gUnknown_20270E8: @ 20270E8
- .space 0x288
+gUnknown_20270E8 = .; /* 20270E8 */
+ . += 0x288;
-gUnknown_2027370: @ 2027370
- .space 0x48
+gUnknown_2027370 = .; /* 2027370 */
+ . += 0x48;
-gUnknown_20273B8: @ 20273B8
- .space 0xD8
+gUnknown_20273B8 = .; /* 20273B8 */
+ . += 0xD8;
-gUnknown_2027490: @ 2027490
- .space 0x8
+gUnknown_2027490 = .; /* 2027490 */
+ . += 0x8;
-gUnknown_2027498: @ 2027498
- .space 0x2
+gUnknown_2027498 = .; /* 2027498 */
+ . += 0x2;
-gUnknown_202749A: @ 202749A
- .space 0xB
+gUnknown_202749A = .; /* 202749A */
+ . += 0xB;
-gUnknown_20274A5: @ 20274A5
- .space 0x1
+gUnknown_20274A5 = .; /* 20274A5 */
+ . += 0x1;
-gUnknown_20274A6: @ 20274A6
- .space 0x6
+gUnknown_20274A6 = .; /* 20274A6 */
+ . += 0x6;
-gUnknown_20274AC: @ 20274AC
- .space 0x4
+gUnknown_20274AC = .; /* 20274AC */
+ . += 0x4;
-gUnknown_20274B0: @ 20274B0
- .space 0x4
+gUnknown_20274B0 = .; /* 20274B0 */
+ . += 0x4;
-gUnknown_20274B4: @ 20274B4
- .space 0x3B00
+gUnknown_20274B4 = .; /* 20274B4 */
+ . += 0x3B00;
-gUnknown_202AFB4: @ 202AFB4
- .space 0xC
+gKanji = .; /* 202AFB4 */
+ . += 0x8;
-gUnknown_202AFC0: @ 202AFC0
- .space 0x60
+gUnknown_202AFBC = .; /* 202AFBC */
+ . += 0x4;
-gUnknown_202B020: @ 202B020
- .space 0x4
+gUnknown_202AFC0 = .; /* 202AFC0 */
+ . += 0x60;
-gUnknown_202B024: @ 202B024
- .space 0x4
+gUnknown_202B020 = .; /* 202B020 */
+ . += 0x4;
-gUnknown_202B028: @ 202B028
- .space 0x8
+gUnknown_202B024 = .; /* 202B024 */
+ . += 0x4;
-gUnknown_202B030: @ 202B030
- .space 0x4
+gUnknown_202B028 = .; /* 202B028 */
+ . += 0x8;
-gUnknown_202B034: @ 202B034
- .space 0x4
+gUnknown_202B030 = .; /* 202B030 */
+ . += 0x4;
-gUnknown_202B038: @ 202B038
- .space 0x2
+gUnknown_202B034 = .; /* 202B034 */
+ . += 0x4;
-gUnknown_202B03A: @ 202B03A
- .space 0x7FE
+gUnknown_202B038 = .; /* 202B038 */
+ . += 0x2;
-gUnknown_202B838: @ 202B838
- .space 0x800
+gUnknown_202B03A = .; /* 202B03A */
+ . += 0x7FE;
-gUnknown_202C038: @ 202C038
- .space 0x800
+gUnknown_202B838 = .; /* 202B838 */
+ . += 0x800;
-gUnknown_202C838: @ 202C838
- .space 0x720
+gUnknown_202C038 = .; /* 202C038 */
+ . += 0x800;
-gUnknown_202CF58: @ 202CF58
- .space 0xE0
+gUnknown_202C838 = .; /* 202C838 */
+ . += 0x720;
-gUnknown_202D038: @ 202D038
- .space 0x4
+gUnknown_202CF58 = .; /* 202CF58 */
+ . += 0xE0;
-gUnknown_202D03C: @ 202D03C
- .space 0x1C
+gUnknown_202D038 = .; /* 202D038 */
+ . += 0x4;
-gUnknown_202D058: @ 202D058
- .space 0x10
+gUnknown_202D03C = .; /* 202D03C */
+ . += 0x1C;
-gUnknown_202D068: @ 202D068
- .space 0x4
+gUnknown_202D058 = .; /* 202D058 */
+ . += 0x10;
-gUnknown_202D06C: @ 202D06C
- .space 0xC
+gUnknown_202D068 = .; /* 202D068 */
+ . += 0x4;
-gUnknown_202D078: @ 202D078
- .space 0x20
+gUnknown_202D06C = .; /* 202D06C */
+ . += 0xC;
-gUnknown_202D098: @ 202D098
- .space 0x120
+gUnknown_202D078 = .; /* 202D078 */
+ . += 0x20;
-gUnknown_202D1B8: @ 202D1B8
- .space 0x40
+gUnknown_202D098 = .; /* 202D098 */
+ . += 0x120;
-gUnknown_202D1F8: @ 202D1F8
- .space 0x40
+gUnknown_202D1B8 = .; /* 202D1B8 */
+ . += 0x40;
-gUnknown_202D238: @ 202D238
- .space 0x4
+gUnknown_202D1F8 = .; /* 202D1F8 */
+ . += 0x40;
-gUnknown_202D23C: @ 202D23C
- .space 0x4
+gUnknown_202D238 = .; /* 202D238 */
+ . += 0x4;
-gUnknown_202D240: @ 202D240
- .space 0x60
+gUnknown_202D23C = .; /* 202D23C */
+ . += 0x4;
-gUnknown_202D2A0: @ 202D2A0
- .space 0x4
+gUnknown_202D240 = .; /* 202D240 */
+ . += 0x60;
-gUnknown_202D2A4: @ 202D2A4
- .space 0x4
+gUnknown_202D2A0 = .; /* 202D2A0 */
+ . += 0x4;
-gUnknown_202D2A8: @ 202D2A8
- .space 0x110
+gUnknown_202D2A4 = .; /* 202D2A4 */
+ . += 0x4;
-gUnknown_202D3B8: @ 202D3B8
- .space 0xF0
+gFileCache = .; /* 202D2A8 */
+ . += 0x200;
-gUnknown_202D4A8: @ 202D4A8
- .space 0x4
+gUnknown_202D4A8 = .; /* 202D4A8 */
+ . += 0x4;
-gUnknown_202D4AC: @ 202D4AC
- .space 0x4
+gUnknown_202D4AC = .; /* 202D4AC */
+ . += 0x4;
-gUnknown_202D4B0: @ 202D4B0
- .space 0x4
+gUnknown_202D4B0 = .; /* 202D4B0 */
+ . += 0x4;
-gUnknown_202D4B4: @ 202D4B4
- .space 0x4
+gUnknown_202D4B4 = .; /* 202D4B4 */
+ . += 0x4;
-gUnknown_202D4B8: @ 202D4B8
- .space 0x120
+gUnknown_202D4B8 = .; /* 202D4B8 */
+ . += 0x120;
-gIntrTable: @ 202D5D8
- .space 0x18
+gIntrTable = .; /* 202D5D8 */
+ . += 0x18;
-gUnknown_202D5F0: @ 202D5F0
- .space 0x18
+gUnknown_202D5F0 = .; /* 202D5F0 */
+ . += 0x18;
-gUnknown_202D608: @ 202D608
- .space 0x40
+gUnknown_202D608 = .; /* 202D608 */
+ . += 0x40;
-gUnknown_202D648: @ 202D648
- .space 0x40
+gUnknown_202D648 = .; /* 202D648 */
+ . += 0x40;
-gUnknown_202D688: @ 202D688
- .space 0x2
+gUnknown_202D688 = .; /* 202D688 */
+ . += 0x2;
-gUnknown_202D68A: @ 202D68A
- .space 0x2
+gUnknown_202D68A = .; /* 202D68A */
+ . += 0x2;
-gUnknown_202D68C: @ 202D68C
- .space 0x2
+gUnknown_202D68C = .; /* 202D68C */
+ . += 0x2;
-gUnknown_202D68E: @ 202D68E
- .space 0x2
+gUnknown_202D68E = .; /* 202D68E */
+ . += 0x2;
-gUnknown_202D690: @ 202D690
- .space 0x2
+gUnknown_202D690 = .; /* 202D690 */
+ . += 0x2;
-gUnknown_202D692: @ 202D692
- .space 0x2
+gUnknown_202D692 = .; /* 202D692 */
+ . += 0x2;
-gUnknown_202D694: @ 202D694
- .space 0x4
+gUnknown_202D694 = .; /* 202D694 */
+ . += 0x4;
-gUnknown_202D698: @ 202D698
- .space 0x8
+gUnknown_202D698 = .; /* 202D698 */
+ . += 0x8;
-gUnknown_202D6A0: @ 202D6A0
- .space 0x8
+gUnknown_202D6A0 = .; /* 202D6A0 */
+ . += 0x8;
-gUnknown_202D6A8: @ 202D6A8
- .space 0x8
+gUnknown_202D6A8 = .; /* 202D6A8 */
+ . += 0x8;
-gUnknown_202D6B0: @ 202D6B0
- .space 0x8
+gUnknown_202D6B0 = .; /* 202D6B0 */
+ . += 0x8;
-gUnknown_202D6B8: @ 202D6B8
- .space 0x1
+gUnknown_202D6B8 = .; /* 202D6B8 */
+ . += 0x1;
-gUnknown_202D6B9: @ 202D6B9
- .space 0x141
+gUnknown_202D6B9 = .; /* 202D6B9 */
+ . += 0x141;
-gUnknown_202D7FA: @ 202D7FA
- .space 0x2
+gUnknown_202D7FA = .; /* 202D7FA */
+ . += 0x2;
-gUnknown_202D7FC: @ 202D7FC
- .space 0x2
+gUnknown_202D7FC = .; /* 202D7FC */
+ . += 0x2;
-gUnknown_202D7FE: @ 202D7FE
- .space 0x2
+gUnknown_202D7FE = .; /* 202D7FE */
+ . += 0x2;
-gUnknown_202D800: @ 202D800
- .space 0x8
+gUnknown_202D800 = .; /* 202D800 */
+ . += 0x8;
-gUnknown_202D808: @ 202D808
- .space 0x108
+gUnknown_202D808 = .; /* 202D808 */
+ . += 0x108;
-gUnknown_202D910: @ 202D910
- .space 0x4
+gUnknown_202D910 = .; /* 202D910 */
+ . += 0x4;
-gUnknown_202D914: @ 202D914
- .space 0x20C
+gUnknown_202D914 = .; /* 202D914 */
+ . += 0x20C;
-gUnknown_202DB20: @ 202DB20
- .space 0x10
+gUnknown_202DB20 = .; /* 202DB20 */
+ . += 0x10;
-gUnknown_202DB30: @ 202DB30
- .space 0x20
+gUnknown_202DB30 = .; /* 202DB30 */
+ . += 0x20;
-gUnknown_202DB50: @ 202DB50
- .space 0x8
+gUnknown_202DB50 = .; /* 202DB50 */
+ . += 0x8;
-gUnknown_202DB58: @ 202DB58
- .space 0x8
+gUnknown_202DB58 = .; /* 202DB58 */
+ . += 0x8;
-gUnknown_202DB60: @ 202DB60
- .space 0x8
+gUnknown_202DB60 = .; /* 202DB60 */
+ . += 0x8;
-gUnknown_202DB68: @ 202DB68
- .space 0x4
+gUnknown_202DB68 = .; /* 202DB68 */
+ . += 0x4;
-gUnknown_202DB6C: @ 202DB6C
- .space 0x4
+gUnknown_202DB6C = .; /* 202DB6C */
+ . += 0x4;
-gUnknown_202DB70: @ 202DB70
- .space 0x4
+gUnknown_202DB70 = .; /* 202DB70 */
+ . += 0x4;
-gUnknown_202DB74: @ 202DB74
- .space 0x4
+gUnknown_202DB74 = .; /* 202DB74 */
+ . += 0x4;
-gUnknown_202DB78: @ 202DB78
- .space 0x40
+gUnknown_202DB78 = .; /* 202DB78 */
+ . += 0x40;
-gUnknown_202DBB8: @ 202DBB8
- .space 0x140
+gUnknown_202DBB8 = .; /* 202DBB8 */
+ . += 0x140;
-gUnknown_202DCF8: @ 202DCF8
- .space 0x120
+gUnknown_202DCF8 = .; /* 202DCF8 */
+ . += 0x120;
-gUnknown_202DE18: @ 202DE18
- .space 0x1
+gUnknown_202DE18 = .; /* 202DE18 */
+ . += 0x1;
-gUnknown_202DE19: @ 202DE19
- .space 0x3
+gUnknown_202DE19 = .; /* 202DE19 */
+ . += 0x3;
-gUnknown_202DE1C: @ 202DE1C
- .space 0x4
+gUnknown_202DE1C = .; /* 202DE1C */
+ . += 0x4;
-gUnknown_202DE20: @ 202DE20
- .space 0x2
+gUnknown_202DE20 = .; /* 202DE20 */
+ . += 0x2;
-gUnknown_202DE22: @ 202DE22
- .space 0x2
+gUnknown_202DE22 = .; /* 202DE22 */
+ . += 0x2;
-gUnknown_202DE24: @ 202DE24
- .space 0x4
+gUnknown_202DE24 = .; /* 202DE24 */
+ . += 0x4;
-gUnknown_202DE28: @ 202DE28
- .space 0x8
+gUnknown_202DE28 = .; /* 202DE28 */
+ . += 0x4;
+ . = ALIGN(16);
-gUnknown_202DE30: @ 202DE30
- .space 0x28
+gUnknown_202DE30 = .; /* 202DE30 */
+ . += 0x28;
-gUnknown_202DE58: @ 202DE58
- .space 0x50
+gUnknown_202DE58 = .; /* 202DE58 */
+ . += 0x50;
-gUnknown_202DEA8: @ 202DEA8
- .space 0xF0
+gUnknown_202DEA8 = .; /* 202DEA8 */
+ . += 0xF0;
-gUnknown_202DF98: @ 202DF98
- .space 0x50
+gUnknown_202DF98 = .; /* 202DF98 */
+ . += 0x50;
-gUnknown_202DFE8: @ 202DFE8
- .space 0x50
+gUnknown_202DFE8 = .; /* 202DFE8 */
+ . += 0x50;
-gUnknown_202E038: @ 202E038
- .space 0x50
+gUnknown_202E038 = .; /* 202E038 */
+ . += 0x50;
-gUnknown_202E088: @ 202E088
- .space 0xA0
+gUnknown_202E088 = .; /* 202E088 */
+ . += 0xA0;
-gUnknown_202E128: @ 202E128
- .space 0xA0
+gUnknown_202E128 = .; /* 202E128 */
+ . += 0xA0;
-gUnknown_202E1C8: @ 202E1C8
- .space 0x50
+gUnknown_202E1C8 = .; /* 202E1C8 */
+ . += 0x50;
-gUnknown_202E218: @ 202E218
- .space 0xA0
+gUnknown_202E218 = .; /* 202E218 */
+ . += 0xA0;
-gUnknown_202E2B8: @ 202E2B8
- .space 0x320
+gUnknown_202E2B8 = .; /* 202E2B8 */
+ . += 0x320;
-gUnknown_202E5D8: @ 202E5D8
- .space 0x50
+gUnknown_202E5D8 = .; /* 202E5D8 */
+ . += 0x50;
-gUnknown_202E628: @ 202E628
- .space 0xB8
+gUnknown_202E628 = .; /* 202E628 */
+ . += 0xB8;
-gUnknown_202E6E0: @ 202E6E0
- .space 0x8
+gUnknown_202E6E0 = .; /* 202E6E0 */
+ . += 0x8;
-gUnknown_202E6E8: @ 202E6E8
- .space 0x50
+gUnknown_202E6E8 = .; /* 202E6E8 */
+ . += 0x50;
-gUnknown_202E738: @ 202E738
- .space 0x4
+gUnknown_202E738 = .; /* 202E738 */
+ . += 0x4;
-gUnknown_202E73C: @ 202E73C
- .space 0x4
+gUnknown_202E73C = .; /* 202E73C */
+ . += 0x4;
-gUnknown_202E740: @ 202E740
- .space 0x4
+gUnknown_202E740 = .; /* 202E740 */
+ . += 0x4;
-gUnknown_202E744: @ 202E744
- .space 0x4
+gUnknown_202E744 = .; /* 202E744 */
+ . += 0x4;
-gUnknown_202E748: @ 202E748
- .space 0x34
+gUnknown_202E748 = .; /* 202E748 */
+ . += 0x34;
-gUnknown_202E77C: @ 202E77C
- .space 0x4
+gUnknown_202E77C = .; /* 202E77C */
+ . += 0x4;
-gUnknown_202E780: @ 202E780
- .space 0x4
+gUnknown_202E780 = .; /* 202E780 */
+ . += 0x4;
-gUnknown_202E784: @ 202E784
- .space 0x4
+gUnknown_202E784 = .; /* 202E784 */
+ . += 0x4;
-gUnknown_202E788: @ 202E788
- .space 0x4
+gUnknown_202E788 = .; /* 202E788 */
+ . += 0x4;
-gUnknown_202E78C: @ 202E78C
- .space 0x4
+gUnknown_202E78C = .; /* 202E78C */
+ . += 0x4;
-gUnknown_202E790: @ 202E790
- .space 0x1
+gUnknown_202E790 = .; /* 202E790 */
+ . += 0x1;
-gUnknown_202E791: @ 202E791
- .space 0x3
+gUnknown_202E791 = .; /* 202E791 */
+ . += 0x3;
-gUnknown_202E794: @ 202E794
- .space 0x4
+gUnknown_202E794 = .; /* 202E794 */
+ . += 0x4;
-gUnknown_202E798: @ 202E798
- .space 0x3E8
+gUnknown_202E798 = .; /* 202E798 */
+ . += 0x3E8;
-gUnknown_202EB80: @ 202EB80
- .space 0x40
+gUnknown_202EB80 = .; /* 202EB80 */
+ . += 0x40;
-gUnknown_202EBC0: @ 202EBC0
- .space 0x50
+gUnknown_202EBC0 = .; /* 202EBC0 */
+ . += 0x50;
-gUnknown_202EC10: @ 202EC10
- .space 0x4
+gUnknown_202EC10 = .; /* 202EC10 */
+ . += 0x4;
-gUnknown_202EC14: @ 202EC14
- .space 0x4
+gUnknown_202EC14 = .; /* 202EC14 */
+ . += 0x4;
-gUnknown_202EC18: @ 202EC18
- .space 0x4
+gUnknown_202EC18 = .; /* 202EC18 */
+ . += 0x4;
-gUnknown_202EC1C: @ 202EC1C
- .space 0x4
+gUnknown_202EC1C = .; /* 202EC1C */
+ . += 0x4;
-gUnknown_202EC20: @ 202EC20
- .space 0x8
+gUnknown_202EC20 = .; /* 202EC20 */
+ . += 0x8;
-gUnknown_202EC28: @ 202EC28
- .space 0x10
+gUnknown_202EC28 = .; /* 202EC28 */
+ . += 0x10;
-gUnknown_202EC38: @ 202EC38
- .space 0x8
+gUnknown_202EC38 = .; /* 202EC38 */
+ . += 0x8;
-gUnknown_202EC40: @ 202EC40
- .space 0x8
+gUnknown_202EC40 = .; /* 202EC40 */
+ . += 0x8;
-gUnknown_202EC48: @ 202EC48
- .space 0x4
+gUnknown_202EC48 = .; /* 202EC48 */
+ . += 0x4;
-gUnknown_202EC4C: @ 202EC4C
- .space 0x4
+gUnknown_202EC4C = .; /* 202EC4C */
+ . += 0x4;
-gUnknown_202EC50: @ 202EC50
- .space 0x38
+gUnknown_202EC50 = .; /* 202EC50 */
+ . += 0x38;
-gUnknown_202EC88: @ 202EC88
- .space 0x4
+gDungeonNameBannerPalette = .; /* 202EC88 */
+ . += 0x4;
-gUnknown_202EC8C: @ 202EC8C
- .space 0x4
+gDungeonNameBannerFontFile = .; /* 202EC8C */
+ . += 0x4;
-gUnknown_202EC90: @ 202EC90
- .space 0x4
+gDungeonNameBannerFont = .; /* 202EC90 */
+ . += 0x4;
-gUnknown_202EC94: @ 202EC94
- .space 0x4
+gUnknown_202EC94 = .; /* 202EC94 */
+ . += 0x4;
-gUnknown_202EC98: @ 202EC98
- .space 0x4
+gUnknown_202EC98 = .; /* 202EC98 */
+ . += 0x4;
-gUnknown_202EC9C: @ 202EC9C
- .space 0x4
+gUnknown_202EC9C = .; /* 202EC9C */
+ . += 0x4;
-gUnknown_202ECA0: @ 202ECA0
- .space 0x4
+gUnknown_202ECA0 = .; /* 202ECA0 */
+ . += 0x4;
-gUnknown_202ECA4: @ 202ECA4
- .space 0x84
+gUnknown_202ECA4 = .; /* 202ECA4 */
+ . += 0x84;
-gUnknown_202ED28: @ 202ED28
- .space 0x8
+gUnknown_202ED28 = .; /* 202ED28 */
+ . += 0x8;
-gUnknown_202ED30: @ 202ED30
- .space 0x88
+gUnknown_202ED30 = .; /* 202ED30 */
+ . += 0x88;
-gUnknown_202EDB8: @ 202EDB8
- .space 0x8
+gUnknown_202EDB8 = .; /* 202EDB8 */
+ . += 0x8;
-gUnknown_202EDC0: @ 202EDC0
- .space 0x8
+gUnknown_202EDC0 = .; /* 202EDC0 */
+ . += 0x8;
-gUnknown_202EDC8: @ 202EDC8
- .space 0x4
+gUnknown_202EDC8 = .; /* 202EDC8 */
+ . += 0x4;
-gUnknown_202EDCC: @ 202EDCC
- .space 0x4
+gUnknown_202EDCC = .; /* 202EDCC */
+ . += 0x4;
-gUnknown_202EDD0: @ 202EDD0
- .space 0x4
+gUnknown_202EDD0 = .; /* 202EDD0 */
+ . += 0x4;
-gUnknown_202EDD4: @ 202EDD4
- .space 0x4
+gUnknown_202EDD4 = .; /* 202EDD4 */
+ . += 0x4;
-gUnknown_202EDD8: @ 202EDD8
- .space 0x4
+gUnknown_202EDD8 = .; /* 202EDD8 */
+ . += 0x4;
-gUnknown_202EDDC: @ 202EDDC
- .space 0xC
+gUnknown_202EDDC = .; /* 202EDDC */
+ . += 0xC;
-gUnknown_202EDE8: @ 202EDE8
- .space 0x14
+gUnknown_202EDE8 = .; /* 202EDE8 */
+ . += 0x14;
-gUnknown_202EDFC: @ 202EDFC
- .space 0x4
+gUnknown_202EDFC = .; /* 202EDFC */
+ . += 0x4;
-gUnknown_202EE00: @ 202EE00
- .space 0x1
+gUnknown_202EE00 = .; /* 202EE00 */
+ . += 0x1;
-gUnknown_202EE01: @ 202EE01
- .space 0x1
+gUnknown_202EE01 = .; /* 202EE01 */
+ . += 0x1;
-gUnknown_202EE02: @ 202EE02
- .space 0x2
+gUnknown_202EE02 = .; /* 202EE02 */
+ . += 0x2;
-gUnknown_202EE04: @ 202EE04
- .space 0x4
+gUnknown_202EE04 = .; /* 202EE04 */
+ . += 0x4;
-gUnknown_202EE08: @ 202EE08
- .space 0x4
+gUnknown_202EE08 = .; /* 202EE08 */
+ . += 0x4;
-gUnknown_202EE0C: @ 202EE0C
- .space 0x4
+gUnknown_202EE0C = .; /* 202EE0C */
+ . += 0x4;
-gUnknown_202EE10: @ 202EE10
- .space 0x28
+gUnknown_202EE10 = .; /* 202EE10 */
+ . += 0x28;
-gUnknown_202EE38: @ 202EE38
- .space 0x1
+gUnknown_202EE38 = .; /* 202EE38 */
+ . += 0x1;
-gUnknown_202EE39: @ 202EE39
- .space 0x1
+gUnknown_202EE39 = .; /* 202EE39 */
+ . += 0x1;
-gUnknown_202EE3A: @ 202EE3A
- .space 0xA
+gUnknown_202EE3A = .; /* 202EE3A */
+ . += 0xA;
-gUnknown_202EE44: @ 202EE44
- .space 0x28
+gUnknown_202EE44 = .; /* 202EE44 */
+ . += 0x28;
-gUnknown_202EE6C: @ 202EE6C
- .space 0x4
+gUnknown_202EE6C = .; /* 202EE6C */
+ . += 0x4;
-gUnknown_202EE70: @ 202EE70
- .space 0x6
+gUnknown_202EE70 = .; /* 202EE70 */
+ . += 0x6;
-gUnknown_202EE76: @ 202EE76
- .space 0x12
+gUnknown_202EE76 = .; /* 202EE76 */
+ . += 0x12;
-gUnknown_202EE88: @ 202EE88
- .space 0x4
+gUnknown_202EE88 = .; /* 202EE88 */
+ . += 0x4;
-gUnknown_202EE8C: @ 202EE8C
- .space 0x300
+gUnknown_202EE8C = .; /* 202EE8C */
+ . += 0x300;
-gUnknown_202F18C: @ 202F18C
- .space 0x4
+gUnknown_202F18C = .; /* 202F18C */
+ . += 0x4;
-gUnknown_202F190: @ 202F190
- .space 0x18
+gUnknown_202F190 = .; /* 202F190 */
+ . += 0x18;
-gUnknown_202F1A8: @ 202F1A8
- .space 0x1
+gUnknown_202F1A8 = .; /* 202F1A8 */
+ . += 0x1;
-gUnknown_202F1A9: @ 202F1A9
- .space 0x1
+gUnknown_202F1A9 = .; /* 202F1A9 */
+ . += 0x1;
-gUnknown_202F1AA: @ 202F1AA
- .space 0x1
+gUnknown_202F1AA = .; /* 202F1AA */
+ . += 0x1;
-gUnknown_202F1AB: @ 202F1AB
- .space 0x1
+gUnknown_202F1AB = .; /* 202F1AB */
+ . += 0x1;
-gUnknown_202F1AC: @ 202F1AC
- .space 0x1
+gUnknown_202F1AC = .; /* 202F1AC */
+ . += 0x1;
-gUnknown_202F1AD: @ 202F1AD
- .space 0x1
+gUnknown_202F1AD = .; /* 202F1AD */
+ . += 0x1;
-gUnknown_202F1AE: @ 202F1AE
- .space 0x2
+gUnknown_202F1AE = .; /* 202F1AE */
+ . += 0x2;
-gUnknown_202F1B0: @ 202F1B0
- .space 0x2
+gUnknown_202F1B0 = .; /* 202F1B0 */
+ . += 0x2;
-gUnknown_202F1B2: @ 202F1B2
- .space 0x2
+gUnknown_202F1B2 = .; /* 202F1B2 */
+ . += 0x2;
-gUnknown_202F1B4: @ 202F1B4
- .space 0x4
+gUnknown_202F1B4 = .; /* 202F1B4 */
+ . += 0x4;
-gUnknown_202F1B8: @ 202F1B8
- .space 0x10
+gUnknown_202F1B8 = .; /* 202F1B8 */
+ . += 0x10;
-gUnknown_202F1C8: @ 202F1C8
- .space 0x4
+gUnknown_202F1C8 = .; /* 202F1C8 */
+ . += 0x4;
-gUnknown_202F1CC: @ 202F1CC
- .space 0x4
+gUnknown_202F1CC = .; /* 202F1CC */
+ . += 0x4;
-gUnknown_202F1D0: @ 202F1D0
- .space 0x4
+gUnknown_202F1D0 = .; /* 202F1D0 */
+ . += 0x4;
-gUnknown_202F1D4: @ 202F1D4
- .space 0x4
+gUnknown_202F1D4 = .; /* 202F1D4 */
+ . += 0x4;
-gUnknown_202F1D8: @ 202F1D8
- .space 0x4
+gUnknown_202F1D8 = .; /* 202F1D8 */
+ . += 0x4;
-gUnknown_202F1DC: @ 202F1DC
- .space 0x4
+gUnknown_202F1DC = .; /* 202F1DC */
+ . += 0x4;
-gUnknown_202F1E0: @ 202F1E0
- .space 0x1
+gUnknown_202F1E0 = .; /* 202F1E0 */
+ . += 0x1;
-gUnknown_202F1E1: @ 202F1E1
- .space 0x7
+gUnknown_202F1E1 = .; /* 202F1E1 */
+ . += 0x7;
-gUnknown_202F1E8: @ 202F1E8
- .space 0x8
+gUnknown_202F1E8 = .; /* 202F1E8 */
+ . += 0x8;
-gUnknown_202F1F0: @ 202F1F0
- .space 0x8
+gUnknown_202F1F0 = .; /* 202F1F0 */
+ . += 0x8;
-gUnknown_202F1F8: @ 202F1F8
- .space 0x4
+gUnknown_202F1F8 = .; /* 202F1F8 */
+ . += 0x4;
-gUnknown_202F1FC: @ 202F1FC
- .space 0x4
+gUnknown_202F1FC = .; /* 202F1FC */
+ . += 0x4;
-gUnknown_202F200: @ 202F200
- .space 0x8
+gUnknown_202F200 = .; /* 202F200 */
+ . += 0x8;
-gUnknown_202F208: @ 202F208
- .space 0x4
+gUnknown_202F208 = .; /* 202F208 */
+ . += 0x4;
-gUnknown_202F20C: @ 202F20C
- .space 0x4
+gUnknown_202F20C = .; /* 202F20C */
+ . += 0x4;
-gUnknown_202F210: @ 202F210
- .space 0x4
+gUnknown_202F210 = .; /* 202F210 */
+ . += 0x4;
-gUnknown_202F214: @ 202F214
- .space 0x4
+gUnknown_202F214 = .; /* 202F214 */
+ . += 0x4;
-gUnknown_202F218: @ 202F218
- .space 0x1
+gUnknown_202F218 = .; /* 202F218 */
+ . += 0x1;
-gUnknown_202F219: @ 202F219
- .space 0x1
+gUnknown_202F219 = .; /* 202F219 */
+ . += 0x1;
-gUnknown_202F21A: @ 202F21A
- .space 0x2
+gUnknown_202F21A = .; /* 202F21A */
+ . += 0x2;
-gUnknown_202F21C: @ 202F21C
- .space 0x4
+gUnknown_202F21C = .; /* 202F21C */
+ . += 0x4;
-gUnknown_202F220: @ 202F220
- .space 0x1
+gUnknown_202F220 = .; /* 202F220 */
+ . += 0x1;
-gUnknown_202F221: @ 202F221
- .space 0x1
+gUnknown_202F221 = .; /* 202F221 */
+ . += 0x1;
-gUnknown_202F222: @ 202F222
- .space 0x2
+gUnknown_202F222 = .; /* 202F222 */
+ . += 0x2;
-gUnknown_202F224: @ 202F224
- .space 0x4
+gUnknown_202F224 = .; /* 202F224 */
+ . += 0x4;
-gUnknown_202F228: @ 202F228
- .space 0x4
+gUnknown_202F228 = .; /* 202F228 */
+ . += 0x4;
-gUnknown_202F22C: @ 202F22C
- .space 0x1
+gUnknown_202F22C = .; /* 202F22C */
+ . += 0x1;
-gUnknown_202F22D: @ 202F22D
- .space 0x1
+gUnknown_202F22D = .; /* 202F22D */
+ . += 0x1;
-gUnknown_202F22E: @ 202F22E
- .space 0x2
+gUnknown_202F22E = .; /* 202F22E */
+ . += 0x2;
-gUnknown_202F230: @ 202F230
- .space 0x1
+gUnknown_202F230 = .; /* 202F230 */
+ . += 0x1;
-gUnknown_202F231: @ 202F231
- .space 0x7
+gUnknown_202F231 = .; /* 202F231 */
+ . += 0x7;
-gUnknown_202F238: @ 202F238
- .space 0x8
+gUnknown_202F238 = .; /* 202F238 */
+ . += 0x8;
-gUnknown_202F240: @ 202F240
- .space 0x8
+gUnknown_202F240 = .; /* 202F240 */
+ . += 0x8;
-gUnknown_202F248: @ 202F248
- .space 0x10
+gUnknown_202F248 = .; /* 202F248 */
+ . += 0x10;
-gUnknown_202F258: @ 202F258
- .space 0x8
+gUnknown_202F258 = .; /* 202F258 */
+ . += 0x8;
-gUnknown_202F260: @ 202F260
- .space 0x8
+gUnknown_202F260 = .; /* 202F260 */
+ . += 0x8;
-gUnknown_202F268: @ 202F268
- .space 0x8
+gUnknown_202F268 = .; /* 202F268 */
+ . += 0x8;
-gUnknown_202F270: @ 202F270
- .space 0x8
+gUnknown_202F270 = .; /* 202F270 */
+ . += 0x8;
-gUnknown_202F278: @ 202F278
- .space 0x60
+gUnknown_202F278 = .; /* 202F278 */
+ . += 0x60;
-gUnknown_202F2D8: @ 202F2D8
- .space 0x8
+gUnknown_202F2D8 = .; /* 202F2D8 */
+ . += 0x8;
-gUnknown_202F2E0: @ 202F2E0
- .space 0x8
+gUnknown_202F2E0 = .; /* 202F2E0 */
+ . += 0x8;
-gUnknown_202F2E8: @ 202F2E8
- .space 0x10
+gUnknown_202F2E8 = .; /* 202F2E8 */
+ . += 0x10;
-gUnknown_202F2F8: @ 202F2F8
- .space 0x4
+gUnknown_202F2F8 = .; /* 202F2F8 */
+ . += 0x4;
-gUnknown_202F2FC: @ 202F2FC
- .space 0x4
+gUnknown_202F2FC = .; /* 202F2FC */
+ . += 0x4;
-gUnknown_202F300: @ 202F300
- .space 0x8
+gUnknown_202F300 = .; /* 202F300 */
+ . += 0x8;
-gUnknown_202F308: @ 202F308
- .space 0x4
+gUnknown_202F308 = .; /* 202F308 */
+ . += 0x4;
-gUnknown_202F30C: @ 202F30C
- .space 0x4
+gUnknown_202F30C = .; /* 202F30C */
+ . += 0x4;
-gUnknown_202F310: @ 202F310
- .space 0x4
+gUnknown_202F310 = .; /* 202F310 */
+ . += 0x4;
-gUnknown_202F314: @ 202F314
- .space 0x8
+gUnknown_202F314 = .; /* 202F314 */
+ . += 0x8;
-gUnknown_202F31C: @ 202F31C
- .space 0x8
+gUnknown_202F31C = .; /* 202F31C */
+ . += 0x8;
-gUnknown_202F324: @ 202F324
- .space 0x8
+gUnknown_202F324 = .; /* 202F324 */
+ . += 0x8;
-gUnknown_202F32C: @ 202F32C
- .space 0x1
+gUnknown_202F32C = .; /* 202F32C */
+ . += 0x1;
-gUnknown_202F32D: @ 202F32D
- .space 0x3
+gUnknown_202F32D = .; /* 202F32D */
+ . += 0x3;
-gUnknown_202F330: @ 202F330
- .space 0x20
+gUnknown_202F330 = .; /* 202F330 */
+ . += 0x20;
-gUnknown_202F350: @ 202F350
- .space 0x8
+gUnknown_202F350 = .; /* 202F350 */
+ . += 0x8;
-gUnknown_202F358: @ 202F358
- .space 0x20
+gUnknown_202F358 = .; /* 202F358 */
+ . += 0x20;
-gUnknown_202F378: @ 202F378
- .space 0x8
+gUnknown_202F378 = .; /* 202F378 */
+ . += 0x8;
-gUnknown_202F380: @ 202F380
- .space 0x8
+gUnknown_202F380 = .; /* 202F380 */
+ . += 0x8;
-gUnknown_202F388: @ 202F388
- .space 0x8
+gUnknown_202F388 = .; /* 202F388 */
+ . += 0x8;
-gUnknown_202F390: @ 202F390
- .space 0x20
+gUnknown_202F390 = .; /* 202F390 */
+ . += 0x20;
-gUnknown_202F3B0: @ 202F3B0
- .space 0x20
+gUnknown_202F3B0 = .; /* 202F3B0 */
+ . += 0x20;
-gUnknown_202F3D0: @ 202F3D0
- .space 0x8
+gUnknown_202F3D0 = .; /* 202F3D0 */
+ . += 0x8;
-gUnknown_202F3D8: @ 202F3D8
- .space 0x8
+gUnknown_202F3D8 = .; /* 202F3D8 */
+ . += 0x8;
-gUnknown_202F3E0: @ 202F3E0
- .space 0x4
+gMonsterParameters = .; /* 202F3E0 */
+ . += 0x4;
-gUnknown_202F3E4: @ 202F3E4
- .space 0x4
+gMonsterParametersFile = .; /* 202F3E4 */
+ . += 0x4;
-gUnknown_202F3E8: @ 202F3E8
- .space 0x18
+gUnknown_202F3E8 = .; /* 202F3E8 */
+ . += 0x18;
-gUnknown_202F400: @ 202F400
- .space 0x90E8
+gUnknown_202F400 = .; /* 202F400 */
+ . += 0x90E8;
-gUnknown_20384E8: @ 20384E8
- .space 0x8
+gUnknown_20384E8 = .; /* 20384E8 */
+ . += 0x8;
-gUnknown_20384F0: @ 20384F0
- .space 0x4B0
+gUnknown_20384F0 = .; /* 20384F0 */
+ . += 0x4B0;
-gUnknown_20389A0: @ 20389A0
- .space 0x4
+gItemParametersFile = .; /* 20389A0 */
+ . += 0x8;
-gUnknown_20389A4: @ 20389A4
- .space 0x4
+gUnknown_20389A8 = .; /* 20389A8 */
+ . += 0x268;
-gUnknown_20389A8: @ 20389A8
- .space 0x268
+gUnknown_2038C10 = .; /* 2038C10 */
+ . += 0x18;
-gUnknown_2038C10: @ 2038C10
- .space 0x18
+gUnknown_2038C28 = .; /* 2038C28 */
+ . += 0x3C;
-gUnknown_2038C28: @ 2038C28
- .space 0x3C
+gWazaParametersFile = .; /* 2038C64 */
+ . += 0x4;
-gUnknown_2038C64: @ 2038C64
- .space 0x4
+gUnknown_2038C68 = .; /* 2038C68 */
+ . += 0x4;
-gUnknown_2038C68: @ 2038C68
- .space 0x4
+gUnknown_2038C6C = .; /* 2038C6C */
+ . += 0x4;
-gUnknown_2038C6C: @ 2038C6C
- .space 0x4
+gUnknown_2038C70 = .; /* 2038C70 */
+ . += 0x10;
-gUnknown_2038C70: @ 2038C70
- .space 0x10
+gUnknown_2038C80 = .; /* 2038C80 */
+ . += 0x8;
-gUnknown_2038C80: @ 2038C80
- .space 0x8
+gUnknown_2038C88 = .; /* 2038C88 */
+ . += 0x600;
-gUnknown_2038C88: @ 2038C88
- .space 0x600
+gUnknown_2039288 = .; /* 2039288 */
+ . += 0x60;
-gUnknown_2039288: @ 2039288
- .space 0x60
+gUnknown_20392E8 = .; /* 20392E8 */
+ . += 0xD8;
-gUnknown_20392E8: @ 20392E8
- .space 0xD8
+gUnknown_20393C0 = .; /* 20393C0 */
+ . += 0x88;
-gUnknown_20393C0: @ 20393C0
- .space 0x88
+gUnknown_2039448 = .; /* 2039448 */
+ . += 0x330;
-gUnknown_2039448: @ 2039448
- .space 0x330
+gUnknown_2039778 = .; /* 2039778 */
+ . += 0xC8;
-gUnknown_2039778: @ 2039778
- .space 0xC8
+gUnknown_2039840 = .; /* 2039840 */
+ . += 0x68;
-gUnknown_2039840: @ 2039840
- .space 0x68
+gUnknown_20398A8 = .; /* 20398A8 */
+ . += 0x4;
-gUnknown_20398A8: @ 20398A8
- .space 0x4
+gUnknown_20398AC = .; /* 20398AC */
+ . += 0x4;
-gUnknown_20398AC: @ 20398AC
- .space 0x4
+gUnknown_20398B0 = .; /* 20398B0 */
+ . += 0x4;
-gUnknown_20398B0: @ 20398B0
- .space 0x4
+gUnknown_20398B4 = .; /* 20398B4 */
+ . += 0x4;
-gUnknown_20398B4: @ 20398B4
- .space 0x4
+gUnknown_20398B8 = .; /* 20398B8 */
+ . += 0x1;
-gUnknown_20398B8: @ 20398B8
- .space 0x1
+gUnknown_20398B9 = .; /* 20398B9 */
+ . += 0x1;
-gUnknown_20398B9: @ 20398B9
- .space 0x1
+gUnknown_20398BA = .; /* 20398BA */
+ . += 0x2;
-gUnknown_20398BA: @ 20398BA
- .space 0x2
+gUnknown_20398BC = .; /* 20398BC */
+ . += 0x2;
-gUnknown_20398BC: @ 20398BC
- .space 0x2
+gUnknown_20398BE = .; /* 20398BE */
+ . += 0x2;
-gUnknown_20398BE: @ 20398BE
- .space 0x2
+gUnknown_20398C0 = .; /* 20398C0 */
+ . += 0x4;
-gUnknown_20398C0: @ 20398C0
- .space 0x4
+gUnknown_20398C4 = .; /* 20398C4 */
+ . += 0x4;
-gUnknown_20398C4: @ 20398C4
- .space 0x4
+gUnknown_20398C8 = .; /* 20398C8 */
+ . += 0x10;
-gUnknown_20398C8: @ 20398C8
- .space 0x10
+gUnknown_20398D8 = .; /* 20398D8 */
+ . += 0x78;
-gUnknown_20398D8: @ 20398D8
- .space 0x78
+gUnknown_2039950 = .; /* 2039950 */
+ . += 0x8;
-gUnknown_2039950: @ 2039950
- .space 0x8
+gUnknown_2039958 = .; /* 2039958 */
+ . += 0x10;
-gUnknown_2039958: @ 2039958
- .space 0x10
+gUnknown_2039968 = .; /* 2039968 */
+ . += 0x10;
-gUnknown_2039968: @ 2039968
- .space 0x10
+gUnknown_2039978 = .; /* 2039978 */
+ . += 0x8;
-gUnknown_2039978: @ 2039978
- .space 0x8
+gUnknown_2039980 = .; /* 2039980 */
+ . += 0x10;
-gUnknown_2039980: @ 2039980
- .space 0x10
+gUnknown_2039990 = .; /* 2039990 */
+ . += 0x2;
-gUnknown_2039990: @ 2039990
- .space 0x2
+gUnknown_2039992 = .; /* 2039992 */
+ . += 0x6;
-gUnknown_2039992: @ 2039992
- .space 0x6
+gUnknown_2039998 = .; /* 2039998 */
+ . += 0x44;
-gUnknown_2039998: @ 2039998
- .space 0x44
+gUnknown_20399DC = .; /* 20399DC */
+ . += 0x2;
-gUnknown_20399DC: @ 20399DC
- .space 0x2
+gUnknown_20399DE = .; /* 20399DE */
+ . += 0x2;
-gUnknown_20399DE: @ 20399DE
- .space 0x2
+gUnknown_20399E0 = .; /* 20399E0 */
+ . += 0x8;
-gUnknown_20399E0: @ 20399E0
- .space 0x8
+gUnknown_20399E8 = .; /* 20399E8 */
+ . += 0x14;
-gUnknown_20399E8: @ 20399E8
- .space 0x14
+gUnknown_20399FC = .; /* 20399FC */
+ . += 0x34;
-gUnknown_20399FC: @ 20399FC
- .space 0x34
+gUnknown_2039A30 = .; /* 2039A30 */
+ . += 0x2;
-gUnknown_2039A30: @ 2039A30
- .space 0x2
+gUnknown_2039A32 = .; /* 2039A32 */
+ . += 0x2;
-gUnknown_2039A32: @ 2039A32
- .space 0x2
+gUnknown_2039A34 = .; /* 2039A34 */
+ . += 0x2;
-gUnknown_2039A34: @ 2039A34
- .space 0x2
+gUnknown_2039A36 = .; /* 2039A36 */
+ . += 0x2;
-gUnknown_2039A36: @ 2039A36
- .space 0x2
+gUnknown_2039A38 = .; /* 2039A38 */
+ . += 0x88;
-gUnknown_2039A38: @ 2039A38
- .space 0x88
+gUnknown_2039AC0 = .; /* 2039AC0 */
+ . += 0x88;
-gUnknown_2039AC0: @ 2039AC0
- .space 0x88
+gUnknown_2039B48 = .; /* 2039B48 */
+ . += 0x208;
-gUnknown_2039B48: @ 2039B48
- .space 0x208
+gUnknown_2039D50 = .; /* 2039D50 */
+ . += 0x48;
-gUnknown_2039D50: @ 2039D50
- .space 0x48
+gUnknown_2039D98 = .; /* 2039D98 */
+ . += 0xC;
-gUnknown_2039D98: @ 2039D98
- .space 0xC
+gUnknown_2039DA4 = .; /* 2039DA4 */
+ . += 0x4;
-gUnknown_2039DA4: @ 2039DA4
- .space 0x4
+gUnknown_2039DA8 = .; /* 2039DA8 */
+ . += 0x8;
-gUnknown_2039DA8: @ 2039DA8
- .space 0x8
+gUnknown_2039DB0 = .; /* 2039DB0 */
+ . += 0x10;
-gUnknown_2039DB0: @ 2039DB0
- .space 0x10
+gUnknown_2039DC0 = .; /* 2039DC0 */
+ . += 0xC;
-gUnknown_2039DC0: @ 2039DC0
- .space 0xC
+gUnknown_2039DCC = .; /* 2039DCC */
+ . += 0x2;
-gUnknown_2039DCC: @ 2039DCC
- .space 0x2
+gUnknown_2039DCE = .; /* 2039DCE */
+ . += 0x2;
-gUnknown_2039DCE: @ 2039DCE
- .space 0x2
+gUnknown_2039DD0 = .; /* 2039DD0 */
+ . += 0x4;
-gUnknown_2039DD0: @ 2039DD0
- .space 0x4
+gUnknown_2039DD4 = .; /* 2039DD4 */
+ . += 0x4;
-gUnknown_2039DD4: @ 2039DD4
- .space 0x4
+gUnknown_2039DD8 = .; /* 2039DD8 */
+ . += 0x8;
-gUnknown_2039DD8: @ 2039DD8
- .space 0x8
-
-gUnknown_2039DE0: @ 2039DE0
- .space 0x4
+gUnknown_2039DE0 = .; /* 2039DE0 */
+ . += 0x4;
diff --git a/sym_ewram2.txt b/sym_ewram2.txt
index ad9521d..0f91946 100644
--- a/sym_ewram2.txt
+++ b/sym_ewram2.txt
@@ -1,654 +1,651 @@
- .align 2
+ . = ALIGN(2);
-gUnknown_2039ED0: @ 2039ED0
- .space 0xFB0
+gSoundInfo = .; /* 2039ED0 */
+ . += 0xFB0;
-gUnknown_203AE80: @ 203AE80
- .space 0x4
+gMPlayJumpTable = .; /* 203AE80 */
+ . += 0x88;
-gUnknown_203AE84: @ 203AE84
- .space 0x84
+gUnknown_203AF08 = .; /* 203AF08 */
+ . += 0x4;
-gUnknown_203AF08: @ 203AF08
- .space 0x4
+gUnknown_203AF0C = .; /* 203AF0C */
+ . += 0x4;
-gUnknown_203AF0C: @ 203AF0C
- .space 0x4
+gCgbChans = .; /* 203AF10 */
+ . += 0x100;
-gUnknown_203AF10: @ 203AF10
- .space 0x100
+gFlashTimeoutFlag = .; /* 203B010 */
+ . += 0x4;
-gFlashTimeoutFlag: @ 203B010
- .space 0x4
+PollFlashStatus = .; /* 203B014 */
+ . += 0x4;
-PollFlashStatus: @ 203B014
- .space 0x4
+WaitForFlashWrite = .; /* 203B018 */
+ . += 0x4;
-WaitForFlashWrite: @ 203B018
- .space 0x4
+ProgramFlashSector = .; /* 203B01C */
+ . += 0x4;
-ProgramFlashSector: @ 203B01C
- .space 0x4
+gFlash = .; /* 203B020 */
+ . += 0x4;
-gFlash: @ 203B020
- .space 0x4
+gFlashNumRemainingBytes = .; /* 203B024 */
+ . += 0x4;
-gFlashNumRemainingBytes: @ 203B024
- .space 0x4
+EraseFlashChip = .; /* 203B028 */
+ . += 0x4;
-EraseFlashChip: @ 203B028
- .space 0x4
+EraseFlashSector = .; /* 203B02C */
+ . += 0x4;
-EraseFlashSector: @ 203B02C
- .space 0x4
+gFlashMaxTime = .; /* 203B030 */
+ . += 0x4;
-gFlashMaxTime: @ 203B030
- .space 0x4
+errno = .; /* 203B034 */
+ . += 0x4;
-errno: @ 203B034
- .space 0x4
+alt_203B038 = .;
-alt_203B038:
+gUnknown_203B038 = .; /* 203B038 */
+ . += 0x4;
-gUnknown_203B038: @ 203B038
- .space 0x4
+gUnknown_203B03C = .; /* 203B03C */
+ . += 0x4;
-gUnknown_203B03C: @ 203B03C
- .space 0x4
+gUnknown_203B040 = .; /* 203B040 */
+ . += 0x30;
-gUnknown_203B040: @ 203B040
- .space 0x30
+gOtherRngState = .; /* 203B070 */
+ . += 0x4;
-gOtherRngState: @ 203B070
- .space 0x4
+gUnknown_203B074 = .; /* 203B074 */
+ . += 0x4;
-gUnknown_203B074: @ 203B074
- .space 0x4
+gUnknown_203B078 = .; /* 203B078 */
+ . += 0x4;
-gUnknown_203B078: @ 203B078
- .space 0x4
+gRngState = .; /* 203B07C */
+ . += 0x4;
-gRngState: @ 203B07C
- .space 0x4
+gUnknown_203B080 = .; /* 203B080 */
+ . += 0x4;
-gUnknown_203B080: @ 203B080
- .space 0x4
+gUnknown_203B084 = .; /* 203B084 */
+ . += 0x4;
-gUnknown_203B084: @ 203B084
- .space 0x4
+gUnknown_203B088 = .; /* 203B088 */
+ . += 0x4;
-gUnknown_203B088: @ 203B088
- .space 0x4
+gUnknown_203B08C = .; /* 203B08C */
+ . += 0x4;
-gUnknown_203B08C: @ 203B08C
- .space 0x4
+gUnknown_203B090 = .; /* 203B090 */
+ . += 0x4;
-gUnknown_203B090: @ 203B090
- .space 0x4
+gFileCacheCursorPosition = .; /* 203B094 */
+ . += 0x4;
-gUnknown_203B094: @ 203B094
- .space 0x4
+gUnknown_203B098 = .; /* 203B098 */
+ . += 0x1;
-gUnknown_203B098: @ 203B098
- .space 0x1
+gUnknown_203B099 = .; /* 203B099 */
+ . += 0x1;
-gUnknown_203B099: @ 203B099
- .space 0x1
+gUnknown_203B09A = .; /* 203B09A */
+ . += 0x1;
-gUnknown_203B09A: @ 203B09A
- .space 0x1
+gUnknown_203B09B = .; /* 203B09B */
+ . += 0x1;
-gUnknown_203B09B: @ 203B09B
- .space 0x1
+gUnknown_203B09C = .; /* 203B09C */
+ . += 0x4;
-gUnknown_203B09C: @ 203B09C
- .space 0x4
+gUnknown_203B0A0 = .; /* 203B0A0 */
+ . += 0x4;
-gUnknown_203B0A0: @ 203B0A0
- .space 0x4
+gUnknown_203B0A4 = .; /* 203B0A4 */
+ . += 0x4;
-gUnknown_203B0A4: @ 203B0A4
- .space 0x4
+gUnknown_203B0A8 = .; /* 203B0A8 */
+ . += 0x2;
-gUnknown_203B0A8: @ 203B0A8
- .space 0x2
+gUnknown_203B0AA = .; /* 203B0AA */
+ . += 0x2;
-gUnknown_203B0AA: @ 203B0AA
- .space 0x2
+gUnknown_203B0AC = .; /* 203B0AC */
+ . += 0x2;
-gUnknown_203B0AC: @ 203B0AC
- .space 0x2
+gUnknown_203B0AE = .; /* 203B0AE */
+ . += 0x2;
-gUnknown_203B0AE: @ 203B0AE
- .space 0x2
+gUnknown_203B0B0 = .; /* 203B0B0 */
+ . += 0x2;
-gUnknown_203B0B0: @ 203B0B0
- .space 0x2
+gUnknown_203B0B2 = .; /* 203B0B2 */
+ . += 0x2;
-gUnknown_203B0B2: @ 203B0B2
- .space 0x2
+gFlashEnabled = .; /* 203B0B4 */
+ . += 0x4;
-gFlashEnabled: @ 203B0B4
- .space 0x4
+gUnknown_203B0B8 = .; /* 203B0B8 */
+ . += 0x4;
-gUnknown_203B0B8: @ 203B0B8
- .space 0x4
+gUnknown_203B0BC = .; /* 203B0BC */
+ . += 0x2;
-gUnknown_203B0BC: @ 203B0BC
- .space 0x2
+gUnknown_203B0BE = .; /* 203B0BE */
+ . += 0xE;
-gUnknown_203B0BE: @ 203B0BE
- .space 0xE
+gUnknown_203B0CC = .; /* 203B0CC */
+ . += 0x4;
-gUnknown_203B0CC: @ 203B0CC
- .space 0x4
+gUnknown_203B0D0 = .; /* 203B0D0 */
+ . += 0x4;
-gUnknown_203B0D0: @ 203B0D0
- .space 0x4
+gUnknown_203B0D4 = .; /* 203B0D4 */
+ . += 0x4;
-gUnknown_203B0D4: @ 203B0D4
- .space 0x4
+gUnknown_203B0D8 = .; /* 203B0D8 */
+ . += 0x4;
-gUnknown_203B0D8: @ 203B0D8
- .space 0x4
+gUnknown_203B0DC = .; /* 203B0DC */
+ . += 0x8;
-gUnknown_203B0DC: @ 203B0DC
- .space 0x8
+gUnknown_203B0E4 = .; /* 203B0E4 */
+ . += 0x4;
-gUnknown_203B0E4: @ 203B0E4
- .space 0x4
+gUnknown_203B0E8 = .; /* 203B0E8 */
+ . += 0x4;
-gUnknown_203B0E8: @ 203B0E8
- .space 0x4
+gUnknown_203B0EC = .; /* 203B0EC */
+ . += 0x60;
-gUnknown_203B0EC: @ 203B0EC
- .space 0x60
+gUnknown_203B14C = .; /* 203B14C */
+ . += 0x4;
-gUnknown_203B14C: @ 203B14C
- .space 0x4
+gUnknown_203B150 = .; /* 203B150 */
+ . += 0x2C;
-gUnknown_203B150: @ 203B150
- .space 0x2C
+gUnknown_203B17C = .; /* 203B17C */
+ . += 0x4;
-gUnknown_203B17C: @ 203B17C
- .space 0x4
+gUnknown_203B180 = .; /* 203B180 */
+ . += 0x4;
-gUnknown_203B180: @ 203B180
- .space 0x4
+gUnknown_203B184 = .; /* 203B184 */
+ . += 0x4;
-gUnknown_203B184: @ 203B184
- .space 0x4
+gUnknown_203B188 = .; /* 203B188 */
+ . += 0x4;
-gUnknown_203B188: @ 203B188
- .space 0x4
+gUnknown_203B18C = .; /* 203B18C */
+ . += 0x4;
-gUnknown_203B18C: @ 203B18C
- .space 0x4
+gUnknown_203B190 = .; /* 203B190 */
+ . += 0x4;
-gUnknown_203B190: @ 203B190
- .space 0x4
+gUnknown_203B194 = .; /* 203B194 */
+ . += 0x4;
-gUnknown_203B194: @ 203B194
- .space 0x4
+gUnknown_203B198 = .; /* 203B198 */
+ . += 0x60;
-gUnknown_203B198: @ 203B198
- .space 0x60
+gUnknown_203B1F8 = .; /* 203B1F8 */
+ . += 0x4;
-gUnknown_203B1F8: @ 203B1F8
- .space 0x4
+gUnknown_203B1FC = .; /* 203B1FC */
+ . += 0x4;
-gUnknown_203B1FC: @ 203B1FC
- .space 0x4
+gUnknown_203B200 = .; /* 203B200 */
+ . += 0x4;
-gUnknown_203B200: @ 203B200
- .space 0x4
+gUnknown_203B204 = .; /* 203B204 */
+ . += 0x4;
-gUnknown_203B204: @ 203B204
- .space 0x4
+gUnknown_203B208 = .; /* 203B208 */
+ . += 0x4;
-gUnknown_203B208: @ 203B208
- .space 0x4
+gUnknown_203B20C = .; /* 203B20C */
+ . += 0x4;
-gUnknown_203B20C: @ 203B20C
- .space 0x4
+gUnknown_203B210 = .; /* 203B210 */
+ . += 0x4;
-gUnknown_203B210: @ 203B210
- .space 0x4
+gUnknown_203B214 = .; /* 203B214 */
+ . += 0x4;
-gUnknown_203B214: @ 203B214
- .space 0x4
+gUnknown_203B218 = .; /* 203B218 */
+ . += 0x4;
-gUnknown_203B218: @ 203B218
- .space 0x4
+gUnknown_203B21C = .; /* 203B21C */
+ . += 0x4;
-gUnknown_203B21C: @ 203B21C
- .space 0x4
+gUnknown_203B220 = .; /* 203B220 */
+ . += 0x4;
-gUnknown_203B220: @ 203B220
- .space 0x4
+gUnknown_203B224 = .; /* 203B224 */
+ . += 0x4;
-gUnknown_203B224: @ 203B224
- .space 0x4
+gUnknown_203B228 = .; /* 203B228 */
+ . += 0x2;
-gUnknown_203B228: @ 203B228
- .space 0x2
+gUnknown_203B22A = .; /* 203B22A */
+ . += 0x2;
-gUnknown_203B22A: @ 203B22A
- .space 0x2
+gUnknown_203B22C = .; /* 203B22C */
+ . += 0x4;
-gUnknown_203B22C: @ 203B22C
- .space 0x4
+gUnknown_203B230 = .; /* 203B230 */
+ . += 0x4;
-gUnknown_203B230: @ 203B230
- .space 0x4
+gUnknown_203B234 = .; /* 203B234 */
+ . += 0x4;
-gUnknown_203B234: @ 203B234
- .space 0x4
+gUnknown_203B238 = .; /* 203B238 */
+ . += 0x4;
-gUnknown_203B238: @ 203B238
- .space 0x4
+gUnknown_203B23C = .; /* 203B23C */
+ . += 0x4;
-gUnknown_203B23C: @ 203B23C
- .space 0x4
+gUnknown_203B240 = .; /* 203B240 */
+ . += 0x4;
-gUnknown_203B240: @ 203B240
- .space 0x4
+gUnknown_203B244 = .; /* 203B244 */
+ . += 0x4;
-gUnknown_203B244: @ 203B244
- .space 0x4
+gUnknown_203B248 = .; /* 203B248 */
+ . += 0x4;
-gUnknown_203B248: @ 203B248
- .space 0x4
+gUnknown_203B24C = .; /* 203B24C */
+ . += 0x2;
-gUnknown_203B24C: @ 203B24C
- .space 0x2
+gUnknown_203B24E = .; /* 203B24E */
+ . += 0x2;
-gUnknown_203B24E: @ 203B24E
- .space 0x2
+gUnknown_203B250 = .; /* 203B250 */
+ . += 0x4;
-gUnknown_203B250: @ 203B250
- .space 0x4
+gUnknown_203B254 = .; /* 203B254 */
+ . += 0x4;
-gUnknown_203B254: @ 203B254
- .space 0x4
+gUnknown_203B258 = .; /* 203B258 */
+ . += 0x4;
-gUnknown_203B258: @ 203B258
- .space 0x4
+gUnknown_203B25C = .; /* 203B25C */
+ . += 0x4;
-gUnknown_203B25C: @ 203B25C
- .space 0x4
+gUnknown_203B260 = .; /* 203B260 */
+ . += 0x4;
-gUnknown_203B260: @ 203B260
- .space 0x4
+gUnknown_203B264 = .; /* 203B264 */
+ . += 0x4;
-gUnknown_203B264: @ 203B264
- .space 0x4
+gUnknown_203B268 = .; /* 203B268 */
+ . += 0x4;
-gUnknown_203B268: @ 203B268
- .space 0x4
+gUnknown_203B26C = .; /* 203B26C */
+ . += 0x4;
-gUnknown_203B26C: @ 203B26C
- .space 0x4
+gUnknown_203B270 = .; /* 203B270 */
+ . += 0x4;
-gUnknown_203B270: @ 203B270
- .space 0x4
+gUnknown_203B274 = .; /* 203B274 */
+ . += 0x4;
-gUnknown_203B274: @ 203B274
- .space 0x4
+gUnknown_203B278 = .; /* 203B278 */
+ . += 0x4;
-gUnknown_203B278: @ 203B278
- .space 0x4
+gUnknown_203B27C = .; /* 203B27C */
+ . += 0x4;
-gUnknown_203B27C: @ 203B27C
- .space 0x4
+gUnknown_203B280 = .; /* 203B280 */
+ . += 0x4;
-gUnknown_203B280: @ 203B280
- .space 0x4
+gUnknown_203B284 = .; /* 203B284 */
+ . += 0x4;
-gUnknown_203B284: @ 203B284
- .space 0x4
+gUnknown_203B288 = .; /* 203B288 */
+ . += 0x2;
-gUnknown_203B288: @ 203B288
- .space 0x2
+gUnknown_203B28A = .; /* 203B28A */
+ . += 0x2;
-gUnknown_203B28A: @ 203B28A
- .space 0x2
+gUnknown_203B28C = .; /* 203B28C */
+ . += 0x4;
-gUnknown_203B28C: @ 203B28C
- .space 0x4
+gUnknown_203B290 = .; /* 203B290 */
+ . += 0x4;
-gUnknown_203B290: @ 203B290
- .space 0x4
+gUnknown_203B294 = .; /* 203B294 */
+ . += 0x4;
-gUnknown_203B294: @ 203B294
- .space 0x4
+gUnknown_203B298 = .; /* 203B298 */
+ . += 0x4;
-gUnknown_203B298: @ 203B298
- .space 0x4
+gUnknown_203B29C = .; /* 203B29C */
+ . += 0x2;
-gUnknown_203B29C: @ 203B29C
- .space 0x2
+gUnknown_203B29E = .; /* 203B29E */
+ . += 0x2;
-gUnknown_203B29E: @ 203B29E
- .space 0x2
+gUnknown_203B2A0 = .; /* 203B2A0 */
+ . += 0x4;
-gUnknown_203B2A0: @ 203B2A0
- .space 0x4
+gUnknown_203B2A4 = .; /* 203B2A4 */
+ . += 0x4;
-gUnknown_203B2A4: @ 203B2A4
- .space 0x4
+gUnknown_203B2A8 = .; /* 203B2A8 */
+ . += 0x2;
-gUnknown_203B2A8: @ 203B2A8
- .space 0x2
+gUnknown_203B2AA = .; /* 203B2AA */
+ . += 0x2;
-gUnknown_203B2AA: @ 203B2AA
- .space 0x2
+gUnknown_203B2AC = .; /* 203B2AC */
+ . += 0x4;
-gUnknown_203B2AC: @ 203B2AC
- .space 0x4
+gUnknown_203B2B0 = .; /* 203B2B0 */
+ . += 0x4;
-gUnknown_203B2B0: @ 203B2B0
- .space 0x4
+gUnknown_203B2B4 = .; /* 203B2B4 */
+ . += 0x4;
-gUnknown_203B2B4: @ 203B2B4
- .space 0x4
+gUnknown_203B2B8 = .; /* 203B2B8 */
+ . += 0x4;
-gUnknown_203B2B8: @ 203B2B8
- .space 0x4
+gUnknown_203B2BC = .; /* 203B2BC */
+ . += 0x4;
-gUnknown_203B2BC: @ 203B2BC
- .space 0x4
+gUnknown_203B2C0 = .; /* 203B2C0 */
+ . += 0x4;
-gUnknown_203B2C0: @ 203B2C0
- .space 0x4
+gUnknown_203B2C4 = .; /* 203B2C4 */
+ . += 0x4;
-gUnknown_203B2C4: @ 203B2C4
- .space 0x4
+gUnknown_203B2C8 = .; /* 203B2C8 */
+ . += 0x4;
-gUnknown_203B2C8: @ 203B2C8
- .space 0x4
+gUnknown_203B2CC = .; /* 203B2CC */
+ . += 0x4;
-gUnknown_203B2CC: @ 203B2CC
- .space 0x4
+gUnknown_203B2D0 = .; /* 203B2D0 */
+ . += 0x2;
-gUnknown_203B2D0: @ 203B2D0
- .space 0x2
+gUnknown_203B2D2 = .; /* 203B2D2 */
+ . += 0x2;
-gUnknown_203B2D2: @ 203B2D2
- .space 0x2
+gUnknown_203B2D4 = .; /* 203B2D4 */
+ . += 0x4;
-gUnknown_203B2D4: @ 203B2D4
- .space 0x4
+gUnknown_203B2D8 = .; /* 203B2D8 */
+ . += 0x4;
-gUnknown_203B2D8: @ 203B2D8
- .space 0x4
+gUnknown_203B2DC = .; /* 203B2DC */
+ . += 0x4;
-gUnknown_203B2DC: @ 203B2DC
- .space 0x4
+gUnknown_203B2E0 = .; /* 203B2E0 */
+ . += 0x4;
-gUnknown_203B2E0: @ 203B2E0
- .space 0x4
+gUnknown_203B2E4 = .; /* 203B2E4 */
+ . += 0x4;
-gUnknown_203B2E4: @ 203B2E4
- .space 0x4
+gUnknown_203B2E8 = .; /* 203B2E8 */
+ . += 0x4;
-gUnknown_203B2E8: @ 203B2E8
- .space 0x4
+gUnknown_203B2EC = .; /* 203B2EC */
+ . += 0x4;
-gUnknown_203B2EC: @ 203B2EC
- .space 0x4
+gUnknown_203B2F0 = .; /* 203B2F0 */
+ . += 0x4;
-gUnknown_203B2F0: @ 203B2F0
- .space 0x4
+gUnknown_203B2F4 = .; /* 203B2F4 */
+ . += 0x4;
-gUnknown_203B2F4: @ 203B2F4
- .space 0x4
+gUnknown_203B2F8 = .; /* 203B2F8 */
+ . += 0x4;
-gUnknown_203B2F8: @ 203B2F8
- .space 0x4
+gUnknown_203B2FC = .; /* 203B2FC */
+ . += 0x4;
-gUnknown_203B2FC: @ 203B2FC
- .space 0x4
+gUnknown_203B300 = .; /* 203B300 */
+ . += 0x4;
-gUnknown_203B300: @ 203B300
- .space 0x4
+gUnknown_203B304 = .; /* 203B304 */
+ . += 0x4;
-gUnknown_203B304: @ 203B304
- .space 0x4
+gUnknown_203B308 = .; /* 203B308 */
+ . += 0x4;
-gUnknown_203B308: @ 203B308
- .space 0x4
+gUnknown_203B30C = .; /* 203B30C */
+ . += 0x4;
-gUnknown_203B30C: @ 203B30C
- .space 0x4
+gUnknown_203B310 = .; /* 203B310 */
+ . += 0x4;
-gUnknown_203B310: @ 203B310
- .space 0x4
+gUnknown_203B314 = .; /* 203B314 */
+ . += 0x4;
-gUnknown_203B314: @ 203B314
- .space 0x4
+gUnknown_203B318 = .; /* 203B318 */
+ . += 0x4;
-gUnknown_203B318: @ 203B318
- .space 0x4
+gUnknown_203B31C = .; /* 203B31C */
+ . += 0x4;
-gUnknown_203B31C: @ 203B31C
- .space 0x4
+gUnknown_203B320 = .; /* 203B320 */
+ . += 0x4;
-gUnknown_203B320: @ 203B320
- .space 0x4
+gUnknown_203B324 = .; /* 203B324 */
+ . += 0x4;
-gUnknown_203B324: @ 203B324
- .space 0x4
+gUnknown_203B328 = .; /* 203B328 */
+ . += 0x4;
-gUnknown_203B328: @ 203B328
- .space 0x4
+gUnknown_203B32C = .; /* 203B32C */
+ . += 0x4;
-gUnknown_203B32C: @ 203B32C
- .space 0x4
+gUnknown_203B330 = .; /* 203B330 */
+ . += 0x4;
-gUnknown_203B330: @ 203B330
- .space 0x4
+gUnknown_203B334 = .; /* 203B334 */
+ . += 0x4;
-gUnknown_203B334: @ 203B334
- .space 0x4
+gUnknown_203B338 = .; /* 203B338 */
+ . += 0x4;
-gUnknown_203B338: @ 203B338
- .space 0x4
+gUnknown_203B33C = .; /* 203B33C */
+ . += 0x4;
-gUnknown_203B33C: @ 203B33C
- .space 0x4
+gUnknown_203B340 = .; /* 203B340 */
+ . += 0x4;
-gUnknown_203B340: @ 203B340
- .space 0x4
+gUnknown_203B344 = .; /* 203B344 */
+ . += 0x4;
-gUnknown_203B344: @ 203B344
- .space 0x4
+gUnknown_203B348 = .; /* 203B348 */
+ . += 0x4;
-gUnknown_203B348: @ 203B348
- .space 0x4
+gUnknown_203B34C = .; /* 203B34C */
+ . += 0x4;
-gUnknown_203B34C: @ 203B34C
- .space 0x4
+gUnknown_203B350 = .; /* 203B350 */
+ . += 0x4;
-gUnknown_203B350: @ 203B350
- .space 0x4
+gUnknown_203B354 = .; /* 203B354 */
+ . += 0x4;
-gUnknown_203B354: @ 203B354
- .space 0x4
+gUnknown_203B358 = .; /* 203B358 */
+ . += 0x4;
-gUnknown_203B358: @ 203B358
- .space 0x4
+gUnknown_203B35C = .; /* 203B35C */
+ . += 0x4;
-gUnknown_203B35C: @ 203B35C
- .space 0x4
+gUnknown_203B360 = .; /* 203B360 */
+ . += 0x4;
-gUnknown_203B360: @ 203B360
- .space 0x4
+gUnknown_203B364 = .; /* 203B364 */
+ . += 0x4;
-gUnknown_203B364: @ 203B364
- .space 0x4
+gUnknown_203B368 = .; /* 203B368 */
+ . += 0x4;
-gUnknown_203B368: @ 203B368
- .space 0x4
+gUnknown_203B36C = .; /* 203B36C */
+ . += 0x4;
-gUnknown_203B36C: @ 203B36C
- .space 0x4
+gUnknown_203B370 = .; /* 203B370 */
+ . += 0x4;
-gUnknown_203B370: @ 203B370
- .space 0x4
+gUnknown_203B374 = .; /* 203B374 */
+ . += 0x4;
-gUnknown_203B374: @ 203B374
- .space 0x4
+gUnknown_203B378 = .; /* 203B378 */
+ . += 0x10;
-gUnknown_203B378: @ 203B378
- .space 0x10
+gUnknown_203B388 = .; /* 203B388 */
+ . += 0x30;
-gUnknown_203B388: @ 203B388
- .space 0x30
+gUnknown_203B3B8 = .; /* 203B3B8 */
+ . += 0x30;
-gUnknown_203B3B8: @ 203B3B8
- .space 0x30
+gUnknown_203B3E8 = .; /* 203B3E8 */
+ . += 0x4;
-gUnknown_203B3E8: @ 203B3E8
- .space 0x4
+gUnknown_203B3EC = .; /* 203B3EC */
+ . += 0x4;
-gUnknown_203B3EC: @ 203B3EC
- .space 0x4
+gUnknown_203B3F0 = .; /* 203B3F0 */
+ . += 0x4;
-gUnknown_203B3F0: @ 203B3F0
- .space 0x4
+gUnknown_203B3F4 = .; /* 203B3F4 */
+ . += 0x4;
-gUnknown_203B3F4: @ 203B3F4
- .space 0x4
+gUnknown_203B3F8 = .; /* 203B3F8 */
+ . += 0x4;
-gUnknown_203B3F8: @ 203B3F8
- .space 0x4
+gUnknown_203B3FC = .; /* 203B3FC */
+ . += 0x4;
-gUnknown_203B3FC: @ 203B3FC
- .space 0x4
+gUnknown_203B400 = .; /* 203B400 */
+ . += 0x4;
-gUnknown_203B400: @ 203B400
- .space 0x4
+gUnknown_203B404 = .; /* 203B404 */
+ . += 0x4;
-gUnknown_203B404: @ 203B404
- .space 0x4
+gUnknown_203B408 = .; /* 203B408 */
+ . += 0x4;
-gUnknown_203B408: @ 203B408
- .space 0x4
+gUnknown_203B40C = .; /* 203B40C */
+ . += 0x1;
-gUnknown_203B40C: @ 203B40C
- .space 0x1
+gUnknown_203B40D = .; /* 203B40D */
+ . += 0x3;
-gUnknown_203B40D: @ 203B40D
- .space 0x3
+gUnknown_203B410 = .; /* 203B410 */
+ . += 0x4;
-gUnknown_203B410: @ 203B410
- .space 0x4
+gUnknown_203B414 = .; /* 203B414 */
+ . += 0x4;
-gUnknown_203B414: @ 203B414
- .space 0x4
+gUnknown_203B418 = .; /* 203B418 */
+ . += 0x4;
-gUnknown_203B418: @ 203B418
- .space 0x4
+gUnknown_203B41C = .; /* 203B41C */
+ . += 0x4;
-gUnknown_203B41C: @ 203B41C
- .space 0x4
+gUnknown_203B420 = .; /* 203B420 */
+ . += 0x8;
-gUnknown_203B420: @ 203B420
- .space 0x8
+gUnknown_203B428 = .; /* 203B428 */
+ . += 0x8;
-gUnknown_203B428: @ 203B428
- .space 0x8
+gUnknown_203B430 = .; /* 203B430 */
+ . += 0x4;
-gUnknown_203B430: @ 203B430
- .space 0x4
+gUnknown_203B434 = .; /* 203B434 */
+ . += 0x4;
-gUnknown_203B434: @ 203B434
- .space 0x4
+gUnknown_203B438 = .; /* 203B438 */
+ . += 0x4;
-gUnknown_203B438: @ 203B438
- .space 0x4
+gUnknown_203B43C = .; /* 203B43C */
+ . += 0x4;
-gUnknown_203B43C: @ 203B43C
- .space 0x4
+gUnknown_203B440 = .; /* 203B440 */
+ . += 0x4;
-gUnknown_203B440: @ 203B440
- .space 0x4
+gUnknown_203B444 = .; /* 203B444 */
+ . += 0xC;
-gUnknown_203B444: @ 203B444
- .space 0xC
+gUnknown_203B450 = .; /* 203B450 */
+ . += 0x4;
-gUnknown_203B450: @ 203B450
- .space 0x4
+gUnknown_203B454 = .; /* 203B454 */
+ . += 0x4;
-gUnknown_203B454: @ 203B454
- .space 0x4
+gUnknown_203B458 = .; /* 203B458 */
+ . += 0x4;
-gUnknown_203B458: @ 203B458
- .space 0x4
+gUnknown_203B45C = .; /* 203B45C */
+ . += 0x4;
-gUnknown_203B45C: @ 203B45C
- .space 0x4
+gUnknown_203B460 = .; /* 203B460 */
+ . += 0x4;
-gUnknown_203B460: @ 203B460
- .space 0x4
+gUnknown_203B464 = .; /* 203B464 */
+ . += 0x4;
-gUnknown_203B464: @ 203B464
- .space 0x4
+gUnknown_203B468 = .; /* 203B468 */
+ . += 0x4;
-gUnknown_203B468: @ 203B468
- .space 0x4
+gUnknown_203B46C = .; /* 203B46C */
+ . += 0x4;
-gUnknown_203B46C: @ 203B46C
- .space 0x4
+gUnknown_203B470 = .; /* 203B470 */
+ . += 0x4;
-gUnknown_203B470: @ 203B470
- .space 0x4
+gUnknown_203B474 = .; /* 203B474 */
+ . += 0x8;
-gUnknown_203B474: @ 203B474
- .space 0x8
+gUnknown_203B47C = .; /* 203B47C */
+ . += 0x4;
-gUnknown_203B47C: @ 203B47C
- .space 0x4
+gUnknown_203B480 = .; /* 203B480 */
+ . += 0x4;
-gUnknown_203B480: @ 203B480
- .space 0x4
+gUnknown_203B484 = .; /* 203B484 */
+ . += 0x4;
-gUnknown_203B484: @ 203B484
- .space 0x4
+gUnknown_203B488 = .; /* 203B488 */
+ . += 0x4;
-gUnknown_203B488: @ 203B488
- .space 0x4
+gUnknown_203B48C = .; /* 203B48C */
+ . += 0x4;
-gUnknown_203B48C: @ 203B48C
- .space 0x4
+gUnknown_203B490 = .; /* 203B490 */
+ . += 0x4;
-gUnknown_203B490: @ 203B490
- .space 0x4
+gUnknown_203B494 = .; /* 203B494 */
+ . += 0x4;
-gUnknown_203B494: @ 203B494
- .space 0x4
+gUnknown_203B498 = .; /* 203B498 */
+ . += 0x4;
-gUnknown_203B498: @ 203B498
- .space 0x4
+gUnknown_203B49C = .; /* 203B49C */
+ . += 0x1;
-gUnknown_203B49C: @ 203B49C
- .space 0x1
+gUnknown_203B49D = .; /* 203B49D */
+ . += 0x3;
-gUnknown_203B49D: @ 203B49D
- .space 0x3
+gUnknown_203B4A0 = .; /* 203B4A0 */
+ . += 0xC;
-gUnknown_203B4A0: @ 203B4A0
- .space 0xC
+gUnknown_203B4AC = .; /* 203B4AC */
+ . += 0x4;
-gUnknown_203B4AC: @ 203B4AC
- .space 0x4
+gUnknown_203B4B0 = .; /* 203B4B0 */
+ . += 0x4;
-gUnknown_203B4B0: @ 203B4B0
- .space 0x4
+gUnknown_203B4B4 = .; /* 203B4B4 */
+ . += 0x4;
-gUnknown_203B4B4: @ 203B4B4
- .space 0x4
-
-gUnknown_203B4B8: @ 203B4B8
- .space 0x4
+gUnknown_203B4B8 = .; /* 203B4B8 */
+ . += 0x4;
diff --git a/sym_iwram.txt b/sym_iwram.txt
index 918f767..4eafdc5 100644
--- a/sym_iwram.txt
+++ b/sym_iwram.txt
@@ -1,77 +1,77 @@
-SoundMainRAM_Buffer: @ 3000000
- .space 0x400
+SoundMainRAM_Buffer = .; /* 3000000 */
+ . += 0x400;
-gUnknown_3000400: @ 3000400
- .space 0x800
+gUnknown_3000400 = .; /* 3000400 */
+ . += 0x800;
-gUnknown_3000C00: @ 3000C00
- .space 0x294
+gUnknown_3000C00 = .; /* 3000C00 */
+ . += 0x294;
-gUnknown_3000E94: @ 3000E94
- .space 0x144
+gUnknown_3000E94 = .; /* 3000E94 */
+ . += 0x144;
-gUnknown_3000FD8: @ 3000FD8
- .space 0x10
+gUnknown_3000FD8 = .; /* 3000FD8 */
+ . += 0x10;
-gUnknown_3000FE8: @ 3000FE8
- .space 0x30
+gUnknown_3000FE8 = .; /* 3000FE8 */
+ . += 0x30;
-gUnknown_3001018: @ 3001018
- .space 0x180
+gUnknown_3001018 = .; /* 3001018 */
+ . += 0x180;
-gUnknown_3001198: @ 3001198
- .space 0x9C0
+gUnknown_3001198 = .; /* 3001198 */
+ . += 0x9C0;
-alt_3001B58:
+alt_3001B58 = .;
-unk_code_ram: @ 3001B58
+unk_code_ram = .; /* 3001B58 */
-gUnknown_3001B58: @ 3001B58
- .space 0x2
+gUnknown_3001B58 = .; /* 3001B58 */
+ . += 0x2;
-gUnknown_3001B5A: @ 3001B5A
- .space 0x2
+gUnknown_3001B5A = .; /* 3001B5A */
+ . += 0x2;
-gUnknown_3001B5C: @ 3001B5C
- .space 0x4
+gUnknown_3001B5C = .; /* 3001B5C */
+ . += 0x4;
-gUnknown_3001B60: @ 3001B60
- .space 0x4
+gUnknown_3001B60 = .; /* 3001B60 */
+ . += 0x4;
-gUnknown_3001B64: @ 3001B64
- .space 0x4
+gUnknown_3001B64 = .; /* 3001B64 */
+ . += 0x4;
-gUnknown_3001B68: @ 3001B68
- .space 0x4
+gUnknown_3001B68 = .; /* 3001B68 */
+ . += 0x4;
-gUnknown_3001B6C: @ 3001B6C
- .space 0x4
+gUnknown_3001B6C = .; /* 3001B6C */
+ . += 0x4;
-gUnknown_3001B70: @ 3001B70
- .space 0x4
+gUnknown_3001B70 = .; /* 3001B70 */
+ . += 0x4;
-gUnknown_3001B74: @ 3001B74
- .space 0x4
+gUnknown_3001B74 = .; /* 3001B74 */
+ . += 0x4;
-gUnknown_3001B78: @ 3001B78
- .space 0x4
+gUnknown_3001B78 = .; /* 3001B78 */
+ . += 0x4;
-gUnknown_3001B7C: @ 3001B7C
- .space 0x4
+gUnknown_3001B7C = .; /* 3001B7C */
+ . += 0x4;
-gUnknown_3001B80: @ 3001B80
- .space 0x4
+gUnknown_3001B80 = .; /* 3001B80 */
+ . += 0x4;
-gUnknown_3001B84: @ 3001B84
- .space 0x4
+gUnknown_3001B84 = .; /* 3001B84 */
+ . += 0x4;
-gUnknown_3001B88: @ 3001B88
- .space 0x4
+gUnknown_3001B88 = .; /* 3001B88 */
+ . += 0x4;
-gUnknown_3001B8C: @ 3001B8C
- .space 0x4
+gUnknown_3001B8C = .; /* 3001B8C */
+ . += 0x4;
-gUnknown_3001B90: @ 3001B90
- .space 0x2470
+gUnknown_3001B90 = .; /* 3001B90 */
+ . += 0x2470;
-gUnknown_3004000: @ 3004000
+gUnknown_3004000 = .; /* 3004000 */ \ No newline at end of file