diff options
author | PikalaxALT <PikalaxALT@users.noreply.github.com> | 2019-08-10 05:15:50 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-08-10 05:15:50 -0400 |
commit | 9e969601456fb0ef392910d505e0e0673a902bd3 (patch) | |
tree | af8fdeb1c6cdf9cd8584f0d693a4049bfc408b9d | |
parent | 250a331df9dbd312d572aaf0d629503417cfc9d4 (diff) | |
parent | ba6f243c728de5d5c024aeb177026bcc59909e2e (diff) |
Merge pull request #4 from nullableVoidPtr/master
Overhaul
59 files changed, 8878 insertions, 8107 deletions
@@ -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. @@ -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: +SUBDIRS := $(sort $(dir $(ALL_OBJECTS))) -# Secondary expansion is required for dependency variables in object rules. -.SECONDEXPANSION: +ifeq ($(OS),Windows_NT) +LIB := ../../tools/agbcc/lib/libc.a ../../tools/agbcc/lib/libgcc.a +else +LIB := -L ../../tools/agbcc/lib -lc -lgcc +endif -.PRECIOUS: %.1bpp %.4bpp %.8bpp %.gbapal %.lz %.rl %.pcm %.bin +LD_SCRIPT := $(BUILD_DIR)/ld_script.ld -.PHONY: all clean tidy - -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) + +compare: all + @$(SHA1SUM) $(BUILD_NAME).sha1 -$(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) + $(PREPROC) $< charmap.txt | $(CPP) -I include | $(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 $@ @@ -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). @@ -33,5 +33,3 @@ To set up the repository, see [INSTALL.md](INSTALL.md). [pokeemerald]: https://github.com/pret/pokeemerald [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 deleted file mode 100644 index 9b42ee5..0000000 --- a/asm/bg_palette_buffer.s +++ /dev/null @@ -1,263 +0,0 @@ - .include "constants/gba_constants.inc" - .include "asm/macros.inc" - - .syntax unified - - .text - - thumb_func_start InitBGPaletteBuffer -InitBGPaletteBuffer: - push {lr} - movs r2, 0 - ldr r1, _0800465C - movs r0, 0x80 - lsls r0, 2 -_0800463E: - strh r2, [r1] - adds r1, 0x2 - subs r0, 0x1 - cmp r0, 0 - bne _0800463E - ldr r1, _08004660 - movs r2, 0x1 - adds r0, r1, 0 - adds r0, 0x1F -_08004650: - strb r2, [r0] - subs r0, 0x1 - cmp r0, r1 - bge _08004650 - pop {r0} - bx r0 - .align 2, 0 -_0800465C: .4byte gUnknown_20251F0 -_08004660: .4byte gUnknown_20251D0 - thumb_func_end InitBGPaletteBuffer - - thumb_func_start SetBGPaletteBufferColorRGB -SetBGPaletteBufferColorRGB: - push {r4-r7,lr} - adds r4, r0, 0 - adds r5, r1, 0 - cmp r2, 0 - bge _08004670 - movs r2, 0 -_08004670: - cmp r2, 0x1F - ble _08004676 - movs r2, 0x1F -_08004676: - ldr r1, _080046CC - adds r0, r4, 0 - cmp r4, 0 - bge _08004680 - adds r0, 0xF -_08004680: - asrs r0, 4 - adds r0, r1 - movs r1, 0x1 - strb r1, [r0] - cmp r3, 0 - bne _080046D4 - ldr r0, _080046D0 - lsls r1, r4, 1 - adds r6, r1, r0 - ldrb r0, [r5, 0x2] - muls r0, r2 - cmp r0, 0 - bge _0800469C - adds r0, 0xFF -_0800469C: - asrs r0, 8 - movs r3, 0x1F - ands r0, r3 - lsls r4, r0, 10 - ldrb r0, [r5, 0x1] - muls r0, r2 - cmp r0, 0 - bge _080046AE - adds r0, 0xFF -_080046AE: - asrs r0, 8 - ands r0, r3 - lsls r1, r0, 5 - orrs r1, r4 - ldrb r0, [r5] - muls r0, r2 - cmp r0, 0 - bge _080046C0 - adds r0, 0xFF -_080046C0: - asrs r0, 8 - ands r0, r3 - orrs r1, r0 - strh r1, [r6] - b _08004722 - .align 2, 0 -_080046CC: .4byte gUnknown_20251D0 -_080046D0: .4byte gUnknown_20251F0 -_080046D4: - ldr r1, _08004728 - lsls r0, r4, 1 - adds r7, r0, r1 - ldrb r0, [r5, 0x2] - lsls r0, 2 - adds r0, r3 - ldrb r0, [r0, 0x2] - muls r0, r2 - cmp r0, 0 - bge _080046EA - adds r0, 0xFF -_080046EA: - asrs r0, 8 - movs r4, 0x1F - ands r0, r4 - lsls r6, r0, 10 - ldrb r0, [r5, 0x1] - lsls r0, 2 - adds r0, r3 - ldrb r0, [r0, 0x1] - muls r0, r2 - cmp r0, 0 - bge _08004702 - adds r0, 0xFF -_08004702: - asrs r0, 8 - ands r0, r4 - lsls r1, r0, 5 - orrs r1, r6 - ldrb r0, [r5] - lsls r0, 2 - adds r0, r3 - ldrb r0, [r0] - muls r0, r2 - cmp r0, 0 - bge _0800471A - adds r0, 0xFF -_0800471A: - asrs r0, 8 - ands r0, r4 - orrs r1, r0 - strh r1, [r7] -_08004722: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08004728: .4byte gUnknown_20251F0 - 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. @@ -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_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 @@ -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 @@ -5,386 +5,6 @@ .text - thumb_func_start sub_8006218 -sub_8006218: - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - ldr r1, _080062F4 - movs r0, 0 - str r0, [r1] - ldr r0, _080062F8 - ldr r5, _080062FC - adds r1, r5, 0 - bl OpenFileAndGetFileDataPtr - ldr r4, _08006300 - str r0, [r4] - ldr r0, _08006304 - adds r1, r5, 0 - bl OpenFileAndGetFileDataPtr - str r0, [r4, 0x4] - ldr r2, _08006308 - ldr r1, [r4] - ldr r1, [r1, 0x4] - str r1, [r2] - ldr r0, [r0, 0x4] - str r0, [r2, 0x4] - ldr r1, _0800630C - movs r0, 0xB - str r0, [r1] - movs r0, 0xC - str r0, [r1, 0x4] - ldr r0, _08006310 - movs r4, 0 - movs r3, 0 - adds r2, r0, 0 - adds r2, 0x46 - adds r0, 0x4 - movs r1, 0x3 -_08006264: - strh r3, [r0] - strh r3, [r0, 0x4] - strb r4, [r2] - adds r2, 0x48 - adds r0, 0x48 - subs r1, 0x1 - cmp r1, 0 - bge _08006264 - ldr r1, _08006314 - movs r0, 0 - strh r0, [r1] - movs r3, 0 - ldr r0, _08006318 - mov r9, r0 - ldr r1, _0800631C - mov r10, r1 - ldr r7, _08006320 - ldr r2, _08006324 - mov r8, r2 - movs r0, 0x80 - lsls r0, 4 - adds r6, r7, r0 - ldr r4, _08006328 - movs r5, 0 - mov r12, r6 -_08006296: - lsls r0, r3, 6 - adds r2, r0, r7 - mov r1, r8 - strh r1, [r2] - adds r1, r0, r6 - strh r4, [r1] - adds r3, 0x1 - add r0, r12 - adds r0, 0x2 - adds r2, 0x2 - movs r1, 0x1E -_080062AC: - strh r5, [r2] - strh r4, [r0] - adds r0, 0x2 - adds r2, 0x2 - subs r1, 0x1 - cmp r1, 0 - bge _080062AC - cmp r3, 0x13 - ble _08006296 - movs r1, 0 - movs r0, 0x1 - mov r2, r9 - strb r0, [r2] - ldr r0, _0800632C - mov r2, r10 - str r0, [r2] - ldr r0, _08006330 - str r1, [r0] - ldr r2, _08006334 - strb r1, [r2] - movs r0, 0x1 - ldr r1, _08006338 - str r0, [r1] - movs r0, 0x14 - ldr r2, _0800633C - str r0, [r2] - movs r0, 0 - bl xxx_update_some_bg_tiles - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080062F4: .4byte gUnknown_20274AC -_080062F8: .4byte gUnknown_80B87B4 -_080062FC: .4byte gUnknown_8300500 -_08006300: .4byte gUnknown_202AFB4 -_08006304: .4byte gUnknown_80B87BC -_08006308: .4byte gUnknown_2027490 -_0800630C: .4byte gUnknown_202B028 -_08006310: .4byte gUnknown_2027370 -_08006314: .4byte gUnknown_2027498 -_08006318: .4byte gUnknown_202B034 -_0800631C: .4byte gUnknown_202B030 -_08006320: .4byte gUnknown_202B038 -_08006324: .4byte 0x0000f279 -_08006328: .4byte 0x0000f27a -_0800632C: .4byte 0x88888888 -_08006330: .4byte gUnknown_203B078 -_08006334: .4byte gUnknown_20274A5 -_08006338: .4byte gUnknown_202B020 -_0800633C: .4byte gUnknown_202B024 - thumb_func_end sub_8006218 - - thumb_func_start xxx_update_some_bg_tiles -xxx_update_some_bg_tiles: - push {r4,r5,lr} - adds r1, r0, 0 - ldr r0, _08006360 - ldr r5, [r0] - ldr r4, _08006364 - str r1, [r0] - cmp r1, 0 - beq _08006354 - cmp r1, 0x2 - bne _0800636C -_08006354: - movs r0, 0x2 - bl sub_800CDA8 - ldr r2, _08006368 - b _08006374 - .align 2, 0 -_08006360: .4byte gUnknown_20274B0 -_08006364: .4byte 0x06004f40 -_08006368: .4byte gUnknown_80B87C4 -_0800636C: - movs r0, 0x1 - bl sub_800CDA8 - ldr r2, _080063A4 -_08006374: - ldr r1, _080063A8 - ldr r0, _080063AC - str r0, [r1] - ldm r2!, {r0} - stm r4!, {r0} - ldm r2!, {r0} - stm r4!, {r0} - ldm r2!, {r0} - stm r4!, {r0} - ldm r2!, {r0} - stm r4!, {r0} - ldm r2!, {r0} - stm r4!, {r0} - ldm r2!, {r0} - stm r4!, {r0} - ldm r2!, {r0} - stm r4!, {r0} - ldr r0, [r2] - str r0, [r4] - adds r0, r5, 0 - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_080063A4: .4byte gUnknown_80B87E4 -_080063A8: .4byte gUnknown_202B030 -_080063AC: .4byte 0x88888888 - thumb_func_end xxx_update_some_bg_tiles - - thumb_func_start sub_80063B0 -sub_80063B0: - ldr r0, _080063B8 - ldr r0, [r0] - bx lr - .align 2, 0 -_080063B8: .4byte gUnknown_20274B0 - thumb_func_end sub_80063B0 - - thumb_func_start sub_80063BC -sub_80063BC: - ldr r1, _080063C8 - ldrb r2, [r1] - strb r0, [r1] - adds r0, r2, 0 - bx lr - .align 2, 0 -_080063C8: .4byte gUnknown_202B034 - thumb_func_end sub_80063BC - - thumb_func_start sub_80063CC -sub_80063CC: - ldr r1, _080063D4 - str r0, [r1] - bx lr - .align 2, 0 -_080063D4: .4byte gUnknown_20274AC - thumb_func_end sub_80063CC - - thumb_func_start sub_80063D8 -sub_80063D8: - push {lr} - adds r1, r0, 0 - cmp r1, 0 - bne _080063F0 - ldr r0, _080063E8 - ldr r0, [r0] - ldr r2, _080063EC - b _08006410 - .align 2, 0 -_080063E8: .4byte gUnknown_20274B0 -_080063EC: .4byte 0x88888888 -_080063F0: - movs r0, 0xF - ands r0, r1 - lsls r2, r0, 4 - orrs r2, r0 - lsls r1, r0, 8 - orrs r2, r1 - lsls r1, r0, 12 - orrs r2, r1 - lsls r1, r0, 16 - orrs r2, r1 - lsls r1, r0, 20 - orrs r2, r1 - lsls r1, r0, 24 - orrs r2, r1 - lsls r0, 28 - orrs r2, r0 -_08006410: - ldr r0, _08006418 - str r2, [r0] - pop {r0} - bx r0 - .align 2, 0 -_08006418: .4byte gUnknown_202B030 - thumb_func_end sub_80063D8 - - thumb_func_start sub_800641C -sub_800641C: - push {lr} - sub sp, 0x4 - lsls r1, 24 - lsrs r1, 24 - lsls r2, 24 - lsrs r2, 24 - movs r3, 0 - str r3, [sp] - mov r3, sp - bl sub_8006438 - add sp, 0x4 - pop {r0} - bx r0 - thumb_func_end sub_800641C - - thumb_func_start sub_8006438 -sub_8006438: - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x1C - adds r4, r0, 0 - mov r8, r3 - lsls r1, 24 - lsrs r1, 24 - mov r10, r1 - lsls r2, 24 - lsrs r2, 24 - movs r0, 0x2 - mov r9, r0 - cmp r4, 0 - bne _0800645C - ldr r4, _080064F0 -_0800645C: - cmp r2, 0 - beq _08006464 - bl sub_8009388 -_08006464: - bl sub_800898C - movs r6, 0 - adds r5, r4, 0 - adds r5, 0xC - ldr r1, _080064F4 - str r1, [sp, 0x18] -_08006472: - ldr r0, [sp, 0x18] - adds r1, r4, 0 - ldm r1!, {r2,r3,r7} - stm r0!, {r2,r3,r7} - ldm r1!, {r2,r3,r7} - stm r0!, {r2,r3,r7} - movs r1, 0 - ldrsh r0, [r5, r1] - cmp r0, 0 - beq _080064C4 - ldr r1, _080064F8 - lsls r0, r6, 2 - adds r0, r1 - ldr r0, [r0] - str r0, [sp] - str r4, [sp, 0x4] - mov r2, r10 - str r2, [sp, 0x8] - mov r3, r9 - str r3, [sp, 0xC] - mov r7, r8 - str r7, [sp, 0x10] - movs r0, 0 - str r0, [sp, 0x14] - ldr r0, _080064FC - movs r1, 0xC0 - lsls r1, 19 - ldr r2, _08006500 - ldr r3, _08006504 - bl sub_8006554 - adds r0, r4, 0 - mov r1, r8 - bl sub_80089AC - movs r0, 0 - ldrsh r1, [r5, r0] - movs r2, 0x4 - ldrsh r0, [r5, r2] - muls r0, r1 - add r9, r0 -_080064C4: - adds r5, 0x18 - adds r4, 0x18 - ldr r3, [sp, 0x18] - adds r3, 0x18 - str r3, [sp, 0x18] - adds r6, 0x1 - cmp r6, 0x3 - ble _08006472 - ldr r2, _08006508 - ldr r0, _0800650C - ldr r1, _08006510 - str r0, [r2] - movs r0, 0x1 - strb r0, [r1] - add sp, 0x1C - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080064F0: .4byte gUnknown_80B857C -_080064F4: .4byte gUnknown_202AFC0 -_080064F8: .4byte gUnknown_80B8804 -_080064FC: .4byte gUnknown_2027370 -_08006500: .4byte gUnknown_20274B4 -_08006504: .4byte gUnknown_202B038 -_08006508: .4byte gUnknown_203B078 -_0800650C: .4byte gUnknown_3000E94 -_08006510: .4byte gUnknown_20274A5 - thumb_func_end sub_8006438 - thumb_func_start nullsub_152 nullsub_152: bx lr @@ -4848,7 +4468,7 @@ sub_8008584: adds r1, r5, r1 b _08008624 .align 2, 0 -_080085C4: .4byte gUnknown_2027490 +_080085C4: .4byte gKanji _080085C8: .4byte gUnknown_20274AC _080085CC: .4byte 0xffff0800 _080085D0: .4byte 0x000007fe 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/build_tools.sh b/build_tools.sh new file mode 100755 index 0000000..d9eebf0 --- /dev/null +++ b/build_tools.sh @@ -0,0 +1,10 @@ +#!/bin/sh +make -C tools/gbagfx CXX=${1:-g++} +make -C tools/scaninc CXX=${1:-g++} +make -C tools/preproc CXX=${1:-g++} +make -C tools/bin2c CXX=${1:-g++} +make -C tools/rsfont CXX=${1:-g++} +make -C tools/aif2pcm CXX=${1:-g++} +make -C tools/ramscrgen CXX=${1:-g++} +make -C tools/gbafix CXX=${1:-g++} +make -C tools/mid2agb CXX=${1:-g++} diff --git a/charmap.txt b/charmap.txt new file mode 100644 index 0000000..e7ea662 --- /dev/null +++ b/charmap.txt @@ -0,0 +1,217 @@ +' ' = 20 +'!' = 21 +'"' = 22 +'#' = 23 +'$' = 24 +'%' = 25 +'&' = 26 +'\'' = 27 +'(' = 28 +')' = 29 +'*' = 2A +'+' = 2B +',' = 2C +'-' = 2D +'.' = 2E +'/' = 2F +'0' = 30 +'1' = 31 +'2' = 32 +'3' = 33 +'4' = 34 +'5' = 35 +'6' = 36 +'7' = 37 +'8' = 38 +'9' = 39 +':' = 3A +';' = 3B +'<' = 3C +'=' = 3D +'>' = 3E +'?' = 3F +'@' = 40 +'A' = 41 +'B' = 42 +'C' = 43 +'D' = 44 +'E' = 45 +'F' = 46 +'G' = 47 +'H' = 48 +'I' = 49 +'J' = 4A +'K' = 4B +'L' = 4C +'M' = 4D +'N' = 4E +'O' = 4F +'P' = 50 +'Q' = 51 +'R' = 52 +'S' = 53 +'T' = 54 +'U' = 55 +'V' = 56 +'W' = 57 +'X' = 58 +'Y' = 59 +'Z' = 5A +'[' = 5B +@'\\' = 5C +']' = 5D +'^' = 5E +'_' = 5F +'`' = 60 +'a' = 61 +'b' = 62 +'c' = 63 +'d' = 64 +'e' = 65 +'f' = 66 +'g' = 67 +'h' = 68 +'i' = 69 +'j' = 6A +'k' = 6B +'l' = 6C +'m' = 6D +'n' = 6E +'o' = 6F +'p' = 70 +'q' = 71 +'r' = 72 +'s' = 73 +'t' = 74 +'u' = 75 +'v' = 76 +'w' = 77 +'x' = 78 +'y' = 79 +'z' = 7A +'{' = 7B +'|' = 7C +'}' = 7D +'~' = 7E +'€' = 80 +'⋯' = 85 +'†' = 86 +'ˆ' = 88 +'‰' = 89 +'Š' = 8A +'‹' = 8B +'Œ' = 8C +'Ž' = 8E +'•' = 8F +'‘' = 91 +'’' = 92 +'“' = 93 +'”' = 94 +'™' = 99 +'š' = 9A +'›' = 9B +'œ' = 9C +'ž' = 9E +'Ÿ' = 9F +'¡' = A1 +'¢' = A2 +'£' = A3 +'¤' = A4 +'¥' = A5 +'¦' = A6 +'§' = A7 +'¨' = A8 +'©' = A9 +'ª' = AA +'«' = AB +'¬' = AC +'—' = AD +'®' = AE +'¯' = AF +'°' = B0 +'±' = B1 +'²' = B2 +'³' = B3 +'´' = B4 +'µ' = B5 +'¶' = B6 +'„' = B7 +'‚' = B8 +'¹' = B9 +'⁰' = BA +'»' = BB +'←' = BC +'♂' = BD +'♀' = BE +'¿' = BF +'À' = C0 +'Á' = C1 +'Â' = C2 +'Ã' = C3 +'Ä' = C4 +'Å' = C5 +'Æ' = C6 +'Ç' = C7 +'È' = C8 +'É' = C9 +'Ê' = CA +'Ë' = CB +'Ì' = CC +'Í' = CD +'Î' = CE +'Ï' = CF +'Ð' = D0 +'Ñ' = D1 +'Ò' = D2 +'Ó' = D3 +'Ô' = D4 +'Õ' = D5 +'Ö' = D6 +'×' = D7 +'Ø' = D8 +'Ù' = D9 +'Ú' = DA +'Û' = DB +'Ü' = DC +'Ý' = DD +'Þ' = DE +'ß' = DF +'à' = E0 +'á' = E1 +'â' = E2 +'ã' = E3 +'ä' = E4 +'å' = E5 +'æ' = E6 +'ç' = E7 +'è' = E8 +'é' = E9 +'ê' = EA +'ë' = EB +'ì' = EC +'í' = ED +'î' = EE +'ï' = EF +'ð' = F0 +'ñ' = F1 +'ò' = F2 +'ó' = F3 +'ô' = F4 +'õ' = F5 +'ö' = F6 +'÷' = F7 +'ø' = F8 +'ù' = F9 +'ú' = FA +'û' = FB +'ü' = FC +'ý' = FD +'þ' = FE +'ÿ' = FF + +POKE = 83 BF 83 C4 + +A_BUTTON = 87 50 +B_BUTTON = 87 51 + +'\n' = 0A
\ 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.s b/data/data.s index 656302e..2486395 100644 --- a/data/data.s +++ b/data/data.s @@ -22,37 +22,7 @@ gUnknown_80B69F8: @ 80B69F8 gUnknown_80B6A28: @ 80B6A28 .incbin "baserom.gba", 0xB6A28, 0xC - .global gUnknown_80B6A34 -gUnknown_80B6A34: @ 80B6A34 - .incbin "baserom.gba", 0xB6A34, 0x48 - - .global gUnknown_80B6A7C -gUnknown_80B6A7C: @ 80B6A7C - .incbin "baserom.gba", 0xB6A7C, 0x24 - - .global gUnknown_80B6AA0 -gUnknown_80B6AA0: @ 80B6AA0 - .incbin "baserom.gba", 0xB6AA0, 0x74 - - .global gUnknown_80B6B14 -gUnknown_80B6B14: @ 80B6B14 - .incbin "baserom.gba", 0xB6B14, 0x64 - - .global gUnknown_80B6B78 -gUnknown_80B6B78: @ 80B6B78 - .incbin "baserom.gba", 0xB6B78, 0x10 - - .global gUnknown_80B6B88 -gUnknown_80B6B88: @ 80B6B88 - .incbin "baserom.gba", 0xB6B88, 0x54 - - .global gUnknown_80B6BDC -gUnknown_80B6BDC: @ 80B6BDC - .incbin "baserom.gba", 0xB6BDC, 0xDC - - .global gUnknown_80B6CB8 -gUnknown_80B6CB8: @ 80B6CB8 - .incbin "baserom.gba", 0xB6CB8, 0xD8 + .include "data/text/save.inc" .global gUnknown_80B6D90 gUnknown_80B6D90: @ 80B6D90 diff --git a/data/data_80B9BB8.s b/data/data_80B9BB8.s index 3b51eba..eb4932c 100644 --- a/data/data_80B9BB8.s +++ b/data/data_80B9BB8.s @@ -156,7 +156,9 @@ gUnknown_80D40FC: @ 80D40FC .global gUnknown_80D4104 gUnknown_80D4104: @ 80D4104 - .incbin "baserom.gba", 0xD4104, 0x1C + .string "Where would you like to go?" + .byte 0 + .align 2, 0 .global gUnknown_80D4120 gUnknown_80D4120: @ 80D4120 @@ -1286,85 +1288,7 @@ gUnknown_80DCA24: @ 80DCA24 gUnknown_80DCA2C: @ 80DCA2C .incbin "baserom.gba", 0xDCA2C, 0x8 - .global gUnknown_80DCA34 -gUnknown_80DCA34: @ 80DCA34 - .incbin "baserom.gba", 0xDCA34, 0x84 - - .global gUnknown_80DCAB8 -gUnknown_80DCAB8: @ 80DCAB8 - .incbin "baserom.gba", 0xDCAB8, 0x18 - - .global gUnknown_80DCAD0 -gUnknown_80DCAD0: @ 80DCAD0 - .incbin "baserom.gba", 0xDCAD0, 0x28C - - .global gUnknown_80DCD5C -gUnknown_80DCD5C: @ 80DCD5C - .incbin "baserom.gba", 0xDCD5C, 0x34 - - .global gUnknown_80DCD90 -gUnknown_80DCD90: @ 80DCD90 - .incbin "baserom.gba", 0xDCD90, 0x28 - - .global gUnknown_80DCDB8 -gUnknown_80DCDB8: @ 80DCDB8 - .incbin "baserom.gba", 0xDCDB8, 0x24 - - .global gUnknown_80DCDDC -gUnknown_80DCDDC: @ 80DCDDC - .incbin "baserom.gba", 0xDCDDC, 0x3C - - .global gUnknown_80DCE18 -gUnknown_80DCE18: @ 80DCE18 - .incbin "baserom.gba", 0xDCE18, 0x20 - - .global gUnknown_80DCE38 -gUnknown_80DCE38: @ 80DCE38 - .incbin "baserom.gba", 0xDCE38, 0x30 - - .global gUnknown_80DCE68 -gUnknown_80DCE68: @ 80DCE68 - .incbin "baserom.gba", 0xDCE68, 0x48 - - .global gUnknown_80DCEB0 -gUnknown_80DCEB0: @ 80DCEB0 - .incbin "baserom.gba", 0xDCEB0, 0x2C - - .global gUnknown_80DCEDC -gUnknown_80DCEDC: @ 80DCEDC - .incbin "baserom.gba", 0xDCEDC, 0x68 - - .global gUnknown_80DCF44 -gUnknown_80DCF44: @ 80DCF44 - .incbin "baserom.gba", 0xDCF44, 0x44 - - .global gUnknown_80DCF88 -gUnknown_80DCF88: @ 80DCF88 - .incbin "baserom.gba", 0xDCF88, 0x24 - - .global gUnknown_80DCFAC -gUnknown_80DCFAC: @ 80DCFAC - .incbin "baserom.gba", 0xDCFAC, 0x48 - - .global gUnknown_80DCFF4 -gUnknown_80DCFF4: @ 80DCFF4 - .incbin "baserom.gba", 0xDCFF4, 0x60 - - .global gUnknown_80DD054 -gUnknown_80DD054: @ 80DD054 - .incbin "baserom.gba", 0xDD054, 0x44 - - .global gUnknown_80DD098 -gUnknown_80DD098: @ 80DD098 - .incbin "baserom.gba", 0xDD098, 0x48 - - .global gUnknown_80DD0E0 -gUnknown_80DD0E0: @ 80DD0E0 - .incbin "baserom.gba", 0xDD0E0, 0x24 - - .global gUnknown_80DD104 -gUnknown_80DD104: @ 80DD104 - .incbin "baserom.gba", 0xDD104, 0x44 + .include "data/text/luminous_cave.inc" .global gUnknown_80DD148 gUnknown_80DD148: @ 80DD148 @@ -1458,93 +1382,7 @@ gUnknown_80DD358: @ 80DD358 gUnknown_80DD370: @ 80DD370 .incbin "baserom.gba", 0xDD370, 0x18 - .global gUnknown_80DD388 -gUnknown_80DD388: @ 80DD388 - .incbin "baserom.gba", 0xDD388, 0x98 - - .global gUnknown_80DD420 -gUnknown_80DD420: @ 80DD420 - .incbin "baserom.gba", 0xDD420, 0xA4 - - .global gUnknown_80DD4C4 -gUnknown_80DD4C4: @ 80DD4C4 - .incbin "baserom.gba", 0xDD4C4, 0x30 - - .global gUnknown_80DD4F4 -gUnknown_80DD4F4: @ 80DD4F4 - .incbin "baserom.gba", 0xDD4F4, 0x40 - - .global gUnknown_80DD534 -gUnknown_80DD534: @ 80DD534 - .incbin "baserom.gba", 0xDD534, 0x30 - - .global gUnknown_80DD564 -gUnknown_80DD564: @ 80DD564 - .incbin "baserom.gba", 0xDD564, 0x30 - - .global gUnknown_80DD594 -gUnknown_80DD594: @ 80DD594 - .incbin "baserom.gba", 0xDD594, 0x24 - - .global gUnknown_80DD5B8 -gUnknown_80DD5B8: @ 80DD5B8 - .incbin "baserom.gba", 0xDD5B8, 0x54 - - .global gUnknown_80DD60C -gUnknown_80DD60C: @ 80DD60C - .incbin "baserom.gba", 0xDD60C, 0x30 - - .global gUnknown_80DD63C -gUnknown_80DD63C: @ 80DD63C - .incbin "baserom.gba", 0xDD63C, 0x28 - - .global gUnknown_80DD664 -gUnknown_80DD664: @ 80DD664 - .incbin "baserom.gba", 0xDD664, 0xC - - .global gUnknown_80DD670 -gUnknown_80DD670: @ 80DD670 - .incbin "baserom.gba", 0xDD670, 0xC - - .global gUnknown_80DD67C -gUnknown_80DD67C: @ 80DD67C - .incbin "baserom.gba", 0xDD67C, 0xC - - .global gUnknown_80DD688 -gUnknown_80DD688: @ 80DD688 - .incbin "baserom.gba", 0xDD688, 0xC - - .global gUnknown_80DD694 -gUnknown_80DD694: @ 80DD694 - .incbin "baserom.gba", 0xDD694, 0x8 - - .global gUnknown_80DD69C -gUnknown_80DD69C: @ 80DD69C - .incbin "baserom.gba", 0xDD69C, 0x8 - - .global gUnknown_80DD6A4 -gUnknown_80DD6A4: @ 80DD6A4 - .incbin "baserom.gba", 0xDD6A4, 0x10 - - .global gUnknown_80DD6B4 -gUnknown_80DD6B4: @ 80DD6B4 - .incbin "baserom.gba", 0xDD6B4, 0x8 - - .global gUnknown_80DD6BC -gUnknown_80DD6BC: @ 80DD6BC - .incbin "baserom.gba", 0xDD6BC, 0x8 - - .global gUnknown_80DD6C4 -gUnknown_80DD6C4: @ 80DD6C4 - .incbin "baserom.gba", 0xDD6C4, 0xC - - .global gUnknown_80DD6D0 -gUnknown_80DD6D0: @ 80DD6D0 - .incbin "baserom.gba", 0xDD6D0, 0x10 - - .global gUnknown_80DD6E0 -gUnknown_80DD6E0: @ 80DD6E0 - .incbin "baserom.gba", 0xDD6E0, 0xC + .include "data/text/party_menu.inc" .global gUnknown_80DD6EC gUnknown_80DD6EC: @ 80DD6EC @@ -1662,218 +1500,8 @@ gUnknown_80DDB24: @ 80DDB24 gUnknown_80DDB60: @ 80DDB60 .incbin "baserom.gba", 0xDDB60, 0x48 - .global gUnknown_80DDBA8 -gUnknown_80DDBA8: @ 80DDBA8 - .incbin "baserom.gba", 0xDDBA8, 0x54 - - .global gUnknown_80DDBFC -gUnknown_80DDBFC: @ 80DDBFC - .incbin "baserom.gba", 0xDDBFC, 0x34 - - .global gUnknown_80DDC30 -gUnknown_80DDC30: @ 80DDC30 - .incbin "baserom.gba", 0xDDC30, 0x40 - - .global gUnknown_80DDC70 -gUnknown_80DDC70: @ 80DDC70 - .incbin "baserom.gba", 0xDDC70, 0x4C - - .global gUnknown_80DDCBC -gUnknown_80DDCBC: @ 80DDCBC - .incbin "baserom.gba", 0xDDCBC, 0x70 - - .global gUnknown_80DDD2C -gUnknown_80DDD2C: @ 80DDD2C - .incbin "baserom.gba", 0xDDD2C, 0x5C - - .global gUnknown_80DDD88 -gUnknown_80DDD88: @ 80DDD88 - .incbin "baserom.gba", 0xDDD88, 0x34 - - .global gUnknown_80DDDBC -gUnknown_80DDDBC: @ 80DDDBC - .incbin "baserom.gba", 0xDDDBC, 0x1C - - .global gUnknown_80DDDD8 -gUnknown_80DDDD8: @ 80DDDD8 - .incbin "baserom.gba", 0xDDDD8, 0x48 - - .global gUnknown_80DDE20 -gUnknown_80DDE20: @ 80DDE20 - .incbin "baserom.gba", 0xDDE20, 0x38 - - .global gUnknown_80DDE58 -gUnknown_80DDE58: @ 80DDE58 - .incbin "baserom.gba", 0xDDE58, 0x68 - - .global gUnknown_80DDEC0 -gUnknown_80DDEC0: @ 80DDEC0 - .incbin "baserom.gba", 0xDDEC0, 0x6C - - .global gUnknown_80DDF2C -gUnknown_80DDF2C: @ 80DDF2C - .incbin "baserom.gba", 0xDDF2C, 0x8C - - .global gUnknown_80DDFB8 -gUnknown_80DDFB8: @ 80DDFB8 - .incbin "baserom.gba", 0xDDFB8, 0x64 - - .global gUnknown_80DE01C -gUnknown_80DE01C: @ 80DE01C - .incbin "baserom.gba", 0xDE01C, 0x50 - - .global gUnknown_80DE06C -gUnknown_80DE06C: @ 80DE06C - .incbin "baserom.gba", 0xDE06C, 0x54 - - .global gUnknown_80DE0C0 -gUnknown_80DE0C0: @ 80DE0C0 - .incbin "baserom.gba", 0xDE0C0, 0x64 - - .global gUnknown_80DE124 -gUnknown_80DE124: @ 80DE124 - .incbin "baserom.gba", 0xDE124, 0x54 - - .global gUnknown_80DE178 -gUnknown_80DE178: @ 80DE178 - .incbin "baserom.gba", 0xDE178, 0x3C - - .global gUnknown_80DE1B4 -gUnknown_80DE1B4: @ 80DE1B4 - .incbin "baserom.gba", 0xDE1B4, 0x30 - - .global gUnknown_80DE1E4 -gUnknown_80DE1E4: @ 80DE1E4 - .incbin "baserom.gba", 0xDE1E4, 0x9C - - .global gUnknown_80DE280 -gUnknown_80DE280: @ 80DE280 - .incbin "baserom.gba", 0xDE280, 0x30 - - .global gUnknown_80DE2B0 -gUnknown_80DE2B0: @ 80DE2B0 - .incbin "baserom.gba", 0xDE2B0, 0xB8 - - .global gUnknown_80DE368 -gUnknown_80DE368: @ 80DE368 - .incbin "baserom.gba", 0xDE368, 0xC8 - - .global gUnknown_80DE430 -gUnknown_80DE430: @ 80DE430 - .incbin "baserom.gba", 0xDE430, 0x5C - - .global gUnknown_80DE48C -gUnknown_80DE48C: @ 80DE48C - .incbin "baserom.gba", 0xDE48C, 0x2C - - .global gUnknown_80DE4B8 -gUnknown_80DE4B8: @ 80DE4B8 - .incbin "baserom.gba", 0xDE4B8, 0x38 - - .global gUnknown_80DE4F0 -gUnknown_80DE4F0: @ 80DE4F0 - .incbin "baserom.gba", 0xDE4F0, 0x34 - - .global gUnknown_80DE524 -gUnknown_80DE524: @ 80DE524 - .incbin "baserom.gba", 0xDE524, 0xF0 - - .global gUnknown_80DE614 -gUnknown_80DE614: @ 80DE614 - .incbin "baserom.gba", 0xDE614, 0x34 - - .global gUnknown_80DE648 -gUnknown_80DE648: @ 80DE648 - .incbin "baserom.gba", 0xDE648, 0x4C - - .global gUnknown_80DE694 -gUnknown_80DE694: @ 80DE694 - .incbin "baserom.gba", 0xDE694, 0x40 - - .global gUnknown_80DE6D4 -gUnknown_80DE6D4: @ 80DE6D4 - .incbin "baserom.gba", 0xDE6D4, 0x80 - - .global gUnknown_80DE754 -gUnknown_80DE754: @ 80DE754 - .incbin "baserom.gba", 0xDE754, 0x64 - - .global gUnknown_80DE7B8 -gUnknown_80DE7B8: @ 80DE7B8 - .incbin "baserom.gba", 0xDE7B8, 0x30 - - .global gUnknown_80DE7E8 -gUnknown_80DE7E8: @ 80DE7E8 - .incbin "baserom.gba", 0xDE7E8, 0x20 - - .global gUnknown_80DE808 -gUnknown_80DE808: @ 80DE808 - .incbin "baserom.gba", 0xDE808, 0x28 - - .global gUnknown_80DE830 -gUnknown_80DE830: @ 80DE830 - .incbin "baserom.gba", 0xDE830, 0x34 - - .global gUnknown_80DE864 -gUnknown_80DE864: @ 80DE864 - .incbin "baserom.gba", 0xDE864, 0x50 - - .global gUnknown_80DE8B4 -gUnknown_80DE8B4: @ 80DE8B4 - .incbin "baserom.gba", 0xDE8B4, 0x64 - - .global gUnknown_80DE918 -gUnknown_80DE918: @ 80DE918 - .incbin "baserom.gba", 0xDE918, 0x24 - - .global gUnknown_80DE93C -gUnknown_80DE93C: @ 80DE93C - .incbin "baserom.gba", 0xDE93C, 0x18 - - .global gUnknown_80DE954 -gUnknown_80DE954: @ 80DE954 - .incbin "baserom.gba", 0xDE954, 0x38 - - .global gUnknown_80DE98C -gUnknown_80DE98C: @ 80DE98C - .incbin "baserom.gba", 0xDE98C, 0x64 - - .global gUnknown_80DE9F0 -gUnknown_80DE9F0: @ 80DE9F0 - .incbin "baserom.gba", 0xDE9F0, 0x68 - - .global gUnknown_80DEA58 -gUnknown_80DEA58: @ 80DEA58 - .incbin "baserom.gba", 0xDEA58, 0x5C - - .global gUnknown_80DEAB4 -gUnknown_80DEAB4: @ 80DEAB4 - .incbin "baserom.gba", 0xDEAB4, 0x64 - - .global gUnknown_80DEB18 -gUnknown_80DEB18: @ 80DEB18 - .incbin "baserom.gba", 0xDEB18, 0x3C - - .global gUnknown_80DEB54 -gUnknown_80DEB54: @ 80DEB54 - .incbin "baserom.gba", 0xDEB54, 0xAC - - .global gUnknown_80DEC00 -gUnknown_80DEC00: @ 80DEC00 - .incbin "baserom.gba", 0xDEC00, 0x70 - - .global gUnknown_80DEC70 -gUnknown_80DEC70: @ 80DEC70 - .incbin "baserom.gba", 0xDEC70, 0x50 - - .global gUnknown_80DECC0 -gUnknown_80DECC0: @ 80DECC0 - .incbin "baserom.gba", 0xDECC0, 0x3C - - .global gUnknown_80DECFC -gUnknown_80DECFC: @ 80DECFC - .incbin "baserom.gba", 0xDECFC, 0x48 - + .include "data/text/wonder_mail_1.inc" + .global gUnknown_80DED44 gUnknown_80DED44: @ 80DED44 .incbin "baserom.gba", 0xDED44, 0x4 @@ -1918,169 +1546,7 @@ gUnknown_80DEEBC: @ 80DEEBC gUnknown_80DEEE4: @ 80DEEE4 .incbin "baserom.gba", 0xDEEE4, 0x20 - .global gUnknown_80DEF04 -gUnknown_80DEF04: @ 80DEF04 - .incbin "baserom.gba", 0xDEF04, 0x24 - - .global gUnknown_80DEF28 -gUnknown_80DEF28: @ 80DEF28 - .incbin "baserom.gba", 0xDEF28, 0x58 - - .global gUnknown_80DEF80 -gUnknown_80DEF80: @ 80DEF80 - .incbin "baserom.gba", 0xDEF80, 0x5C - - .global gUnknown_80DEFDC -gUnknown_80DEFDC: @ 80DEFDC - .incbin "baserom.gba", 0xDEFDC, 0x68 - - .global gUnknown_80DF044 -gUnknown_80DF044: @ 80DF044 - .incbin "baserom.gba", 0xDF044, 0x5C - - .global gUnknown_80DF0A0 -gUnknown_80DF0A0: @ 80DF0A0 - .incbin "baserom.gba", 0xDF0A0, 0x40 - - .global gUnknown_80DF0E0 -gUnknown_80DF0E0: @ 80DF0E0 - .incbin "baserom.gba", 0xDF0E0, 0x58 - - .global gUnknown_80DF138 -gUnknown_80DF138: @ 80DF138 - .incbin "baserom.gba", 0xDF138, 0x5C - - .global gUnknown_80DF194 -gUnknown_80DF194: @ 80DF194 - .incbin "baserom.gba", 0xDF194, 0x2C - - .global gUnknown_80DF1C0 -gUnknown_80DF1C0: @ 80DF1C0 - .incbin "baserom.gba", 0xDF1C0, 0x48 - - .global gUnknown_80DF208 -gUnknown_80DF208: @ 80DF208 - .incbin "baserom.gba", 0xDF208, 0x48 - - .global gUnknown_80DF250 -gUnknown_80DF250: @ 80DF250 - .incbin "baserom.gba", 0xDF250, 0xB4 - - .global gUnknown_80DF304 -gUnknown_80DF304: @ 80DF304 - .incbin "baserom.gba", 0xDF304, 0x2C - - .global gUnknown_80DF330 -gUnknown_80DF330: @ 80DF330 - .incbin "baserom.gba", 0xDF330, 0x50 - - .global gUnknown_80DF380 -gUnknown_80DF380: @ 80DF380 - .incbin "baserom.gba", 0xDF380, 0x34 - - .global gUnknown_80DF3B4 -gUnknown_80DF3B4: @ 80DF3B4 - .incbin "baserom.gba", 0xDF3B4, 0x64 - - .global gUnknown_80DF418 -gUnknown_80DF418: @ 80DF418 - .incbin "baserom.gba", 0xDF418, 0x34 - - .global gUnknown_80DF44C -gUnknown_80DF44C: @ 80DF44C - .incbin "baserom.gba", 0xDF44C, 0x20 - - .global gUnknown_80DF46C -gUnknown_80DF46C: @ 80DF46C - .incbin "baserom.gba", 0xDF46C, 0x88 - - .global gUnknown_80DF4F4 -gUnknown_80DF4F4: @ 80DF4F4 - .incbin "baserom.gba", 0xDF4F4, 0x50 - - .global gUnknown_80DF544 -gUnknown_80DF544: @ 80DF544 - .incbin "baserom.gba", 0xDF544, 0x50 - - .global gUnknown_80DF594 -gUnknown_80DF594: @ 80DF594 - .incbin "baserom.gba", 0xDF594, 0x50 - - .global gUnknown_80DF5E4 -gUnknown_80DF5E4: @ 80DF5E4 - .incbin "baserom.gba", 0xDF5E4, 0x58 - - .global gUnknown_80DF63C -gUnknown_80DF63C: @ 80DF63C - .incbin "baserom.gba", 0xDF63C, 0x58 - - .global gUnknown_80DF694 -gUnknown_80DF694: @ 80DF694 - .incbin "baserom.gba", 0xDF694, 0x5C - - .global gUnknown_80DF6F0 -gUnknown_80DF6F0: @ 80DF6F0 - .incbin "baserom.gba", 0xDF6F0, 0x20 - - .global gUnknown_80DF710 -gUnknown_80DF710: @ 80DF710 - .incbin "baserom.gba", 0xDF710, 0x2C - - .global gUnknown_80DF73C -gUnknown_80DF73C: @ 80DF73C - .incbin "baserom.gba", 0xDF73C, 0x40 - - .global gUnknown_80DF77C -gUnknown_80DF77C: @ 80DF77C - .incbin "baserom.gba", 0xDF77C, 0x58 - - .global gUnknown_80DF7D4 -gUnknown_80DF7D4: @ 80DF7D4 - .incbin "baserom.gba", 0xDF7D4, 0x9C - - .global gUnknown_80DF870 -gUnknown_80DF870: @ 80DF870 - .incbin "baserom.gba", 0xDF870, 0x44 - - .global gUnknown_80DF8B4 -gUnknown_80DF8B4: @ 80DF8B4 - .incbin "baserom.gba", 0xDF8B4, 0x38 - - .global gUnknown_80DF8EC -gUnknown_80DF8EC: @ 80DF8EC - .incbin "baserom.gba", 0xDF8EC, 0x3C - - .global gUnknown_80DF928 -gUnknown_80DF928: @ 80DF928 - .incbin "baserom.gba", 0xDF928, 0x24 - - .global gUnknown_80DF94C -gUnknown_80DF94C: @ 80DF94C - .incbin "baserom.gba", 0xDF94C, 0x20 - - .global gUnknown_80DF96C -gUnknown_80DF96C: @ 80DF96C - .incbin "baserom.gba", 0xDF96C, 0x38 - - .global gUnknown_80DF9A4 -gUnknown_80DF9A4: @ 80DF9A4 - .incbin "baserom.gba", 0xDF9A4, 0x4C - - .global gUnknown_80DF9F0 -gUnknown_80DF9F0: @ 80DF9F0 - .incbin "baserom.gba", 0xDF9F0, 0x8 - - .global gUnknown_80DF9F8 -gUnknown_80DF9F8: @ 80DF9F8 - .incbin "baserom.gba", 0xDF9F8, 0xB0 - - .global gUnknown_80DFAA8 -gUnknown_80DFAA8: @ 80DFAA8 - .incbin "baserom.gba", 0xDFAA8, 0x6C - - .global gUnknown_80DFB14 -gUnknown_80DFB14: @ 80DFB14 - .incbin "baserom.gba", 0xDFB14, 0xBC + .include "data/text/wonder_mail_2.inc" .global gUnknown_80DFBD0 gUnknown_80DFBD0: @ 80DFBD0 @@ -2194,73 +1660,13 @@ gUnknown_80DFE04: @ 80DFE04 gUnknown_80DFE1C: @ 80DFE1C .incbin "baserom.gba", 0xDFE1C, 0x30 - .global gUnknown_80DFE4C -gUnknown_80DFE4C: @ 80DFE4C - .incbin "baserom.gba", 0xDFE4C, 0x50 - - .global gUnknown_80DFE9C -gUnknown_80DFE9C: @ 80DFE9C - .incbin "baserom.gba", 0xDFE9C, 0x34 - - .global gUnknown_80DFED0 -gUnknown_80DFED0: @ 80DFED0 - .incbin "baserom.gba", 0xDFED0, 0x5C - - .global gUnknown_80DFF2C -gUnknown_80DFF2C: @ 80DFF2C - .incbin "baserom.gba", 0xDFF2C, 0x78 - - .global gUnknown_80DFFA4 -gUnknown_80DFFA4: @ 80DFFA4 - .incbin "baserom.gba", 0xDFFA4, 0x6C - - .global gUnknown_80E0010 -gUnknown_80E0010: @ 80E0010 - .incbin "baserom.gba", 0xE0010, 0x64 - - .global gUnknown_80E0074 -gUnknown_80E0074: @ 80E0074 - .incbin "baserom.gba", 0xE0074, 0x20 - - .global gUnknown_80E0094 -gUnknown_80E0094: @ 80E0094 - .incbin "baserom.gba", 0xE0094, 0x74 - - .global gUnknown_80E0108 -gUnknown_80E0108: @ 80E0108 - .incbin "baserom.gba", 0xE0108, 0x44 - - .global gUnknown_80E014C -gUnknown_80E014C: @ 80E014C - .incbin "baserom.gba", 0xE014C, 0xC - - .global gUnknown_80E0158 -gUnknown_80E0158: @ 80E0158 - .incbin "baserom.gba", 0xE0158, 0x14 + .include "data/text/wonder_mail_3.inc" .global gUnknown_80E016C gUnknown_80E016C: @ 80E016C .incbin "baserom.gba", 0xE016C, 0x18 - .global gUnknown_80E0184 -gUnknown_80E0184: @ 80E0184 - .incbin "baserom.gba", 0xE0184, 0x1C - - .global gUnknown_80E01A0 -gUnknown_80E01A0: @ 80E01A0 - .incbin "baserom.gba", 0xE01A0, 0x24 - - .global gUnknown_80E01C4 -gUnknown_80E01C4: @ 80E01C4 - .incbin "baserom.gba", 0xE01C4, 0x2C - - .global gUnknown_80E01F0 -gUnknown_80E01F0: @ 80E01F0 - .incbin "baserom.gba", 0xE01F0, 0x28 - - .global gUnknown_80E0218 -gUnknown_80E0218: @ 80E0218 - .incbin "baserom.gba", 0xE0218, 0x30 + .include "data/text/wonder_mail_complete.inc" .global gUnknown_80E0248 gUnknown_80E0248: @ 80E0248 @@ -2530,73 +1936,7 @@ gUnknown_80E0B3C: @ 80E0B3C gUnknown_80E0BD4: @ 80E0BD4 .incbin "baserom.gba", 0xE0BD4, 0x78 - .global gUnknown_80E0C4C -gUnknown_80E0C4C: @ 80E0C4C - .incbin "baserom.gba", 0xE0C4C, 0x24 - - .global gUnknown_80E0C70 -gUnknown_80E0C70: @ 80E0C70 - .incbin "baserom.gba", 0xE0C70, 0x160 - - .global gUnknown_80E0DD0 -gUnknown_80E0DD0: @ 80E0DD0 - .incbin "baserom.gba", 0xE0DD0, 0x108 - - .global gUnknown_80E0ED8 -gUnknown_80E0ED8: @ 80E0ED8 - .incbin "baserom.gba", 0xE0ED8, 0x1F0 - - .global gUnknown_80E10C8 -gUnknown_80E10C8: @ 80E10C8 - .incbin "baserom.gba", 0xE10C8, 0x144 - - .global gUnknown_80E120C -gUnknown_80E120C: @ 80E120C - .incbin "baserom.gba", 0xE120C, 0x160 - - .global gUnknown_80E136C -gUnknown_80E136C: @ 80E136C - .incbin "baserom.gba", 0xE136C, 0xB4 - - .global gUnknown_80E1420 -gUnknown_80E1420: @ 80E1420 - .incbin "baserom.gba", 0xE1420, 0x15C - - .global gUnknown_80E157C -gUnknown_80E157C: @ 80E157C - .incbin "baserom.gba", 0xE157C, 0x120 - - .global gUnknown_80E169C -gUnknown_80E169C: @ 80E169C - .incbin "baserom.gba", 0xE169C, 0x12C - - .global gUnknown_80E17C8 -gUnknown_80E17C8: @ 80E17C8 - .incbin "baserom.gba", 0xE17C8, 0x74 - - .global gUnknown_80E183C -gUnknown_80E183C: @ 80E183C - .incbin "baserom.gba", 0xE183C, 0x2C - - .global gUnknown_80E1868 -gUnknown_80E1868: @ 80E1868 - .incbin "baserom.gba", 0xE1868, 0x1C8 - - .global gUnknown_80E1A30 -gUnknown_80E1A30: @ 80E1A30 - .incbin "baserom.gba", 0xE1A30, 0xA8 - - .global gUnknown_80E1AD8 -gUnknown_80E1AD8: @ 80E1AD8 - .incbin "baserom.gba", 0xE1AD8, 0xB0 - - .global gUnknown_80E1B88 -gUnknown_80E1B88: @ 80E1B88 - .incbin "baserom.gba", 0xE1B88, 0x1FC - - .global gUnknown_80E1D84 -gUnknown_80E1D84: @ 80E1D84 - .incbin "baserom.gba", 0xE1D84, 0x178 + .include "data/text/wonder_mail_4.inc" .global gUnknown_80E1EFC gUnknown_80E1EFC: @ 80E1EFC @@ -11966,42 +11306,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/data/text/luminous_cave.inc b/data/text/luminous_cave.inc new file mode 100644 index 0000000..92b9c2d --- /dev/null +++ b/data/text/luminous_cave.inc @@ -0,0 +1,131 @@ +gUnknown_80DCA34:: @ 80DCA34 + .string "#+...#WA voice emanates from somewhere...#P#+...Ye who seek awak" + .string "ening...#P#+This is Luminous Cave.#W\n" + .string "#+Do ye seek a new evolution?" + .byte 0 + .align 2, 0 + +gUnknown_80DCAB8:: @ 80DCAB8 + .string "#+Do ye seek evolution?" + .byte 0 + .align 2, 0 + +gUnknown_80DCAD0:: @ 80DCAD0 + .string "#+There are those among Pokémon\n" + .string "#+that can evolve.#P#+Such Pokémon can evolve at this very\n" + .string "#+spot if they satisfy certain conditions.#P#+Evolution brings about changes\n" + .string "#+in appearance and abilities.#P#+Not only that~2c some Pokémon even change\n" + .string "#+type and learn different moves.#P#+However...#W The requirements for\n" + .string "#+evolution differ among Pokémon.#P#+Some become ready for evolution\n" + .string "#+merely by leveling up.#P#+Still others may need special items\n" + .string "#+to attain evolution.#P#+Ye must also be aware of this:#P#+Once it has evolved~2c a Pokémon\n" + .string "#+can never regain its previous form.#P#+That is why ye must think carefully\n" + .string "#+before committing to evolution." + .byte 0 + .align 2, 0 + +gUnknown_80DCD5C:: @ 80DCD5C + .string "#+Ye shall return if evolution\n" + .string "#+is what ye seek..." + .byte 0 + .align 2, 0 + +gUnknown_80DCD90:: @ 80DCD90 + .string "#+Will ye give an item for evolution?" + .byte 0 + .align 2, 0 + +gUnknown_80DCDB8:: @ 80DCDB8 + .string "#+Will ye give yet another item?" + .byte 0 + .align 2, 0 + +gUnknown_80DCDDC:: @ 80DCDDC + .string "#+Alas~2c ye seem to lack what is needed\n" + .string "#+for evolution." + .byte 0 + .align 2, 0 + +gUnknown_80DCE18:: @ 80DCE18 + .string "#+Ye seem to have but one item." + .byte 0 + .align 2, 0 + +gUnknown_80DCE38:: @ 80DCE38 + .string "#+...Ye who seek awakening...\n" + .string "#+Let us begin." + .byte 0 + .align 2, 0 + +gUnknown_80DCE68:: @ 80DCE68 + .string "#+...#W" + .byte 0x24 + .string "n0 is undergoing changes...#P#+" + .byte 0x24 + .string "n0~27s appearance changed...#P" + .byte 0 + .align 2, 0 + +gUnknown_80DCEB0:: @ 80DCEB0 + .string "#+It evolved from #C4" + .byte 0x24 + .string "m0#R\n" + .string "#+to #C6" + .byte 0x24 + .string "m1#R!" + .byte 0 + .align 2, 0 + +gUnknown_80DCEDC:: @ 80DCEDC + .string "#+...#P#+One cannot evolve if one\n" + .string "#+is in the company of others.#P#+Come alone if ye wish to evolve." + .byte 0 + .align 2, 0 + +gUnknown_80DCF44:: @ 80DCF44 + .string "#+...#P#+Ye cannot evolve yet.#P#+Ye have not high enough a level." + .byte 0 + .align 2, 0 + +gUnknown_80DCF88:: @ 80DCF88 + .string "#+...#P#+Ye cannot evolve anymore." + .byte 0 + .align 2, 0 + +gUnknown_80DCFAC:: @ 80DCFAC + .string "#+...#P#+Ye cannot evolve yet.#P#+Ye need your Friend Area to evolve." + .byte 0 + .align 2, 0 + +gUnknown_80DCFF4:: @ 80DCFF4 + .string "#+...#P#+Ye cannot evolve yet.#P#+The Friend Area to which ye shall go\n" + .string "#+has no room for ye." + .byte 0 + .align 2, 0 + +gUnknown_80DD054:: @ 80DD054 + .string "#+...#P#+Ye cannot evolve yet.#P#+Ye seem to lack the IQ to evolve." + .byte 0 + .align 2, 0 + +gUnknown_80DD098:: @ 80DD098 + .string "#+#+...#P#+Ye cannot evolve yet.#P#+Ye seem to lack an item to evolve." + .byte 0 + .align 2, 0 + +gUnknown_80DD0E0:: @ 80DD0E0 + .string "#+#+...#P#+Ye cannot evolve yet. " + .byte 0 + .align 2, 0 + +gUnknown_80DD104:: @ 80DD104 + .string "#+Ye must give a name to\n" + .string "#+the evolved Pokémon. " + .byte 0 + .align 2, 0 + + .asciz "pksdir0" + .align 2, 0 + + .asciz "pksdir0" + .align 2, 0 diff --git a/data/text/party_menu.inc b/data/text/party_menu.inc new file mode 100644 index 0000000..eaaabd1 --- /dev/null +++ b/data/text/party_menu.inc @@ -0,0 +1,147 @@ +gUnknown_80DD388:: @ 80DD388 + .string "You have chosen to say farewell\n" + .string "to this Pokémon.#PThe Pokémon will leave its Friend Area.\n" + .string "It will no longer be available for\n" + .string "adventures. Is that OK?" + .byte 0 + .align 2, 0 + +gUnknown_80DD420:: @ 80DD420 + .string "If you say farewell to this\n" + .string "Pokémon~2c it will be gone forever.#PYou will never be able to get another one\n" + .string "like it to join your team.\n" + .string "Will you release it anyway?" + .byte 0 + .align 2, 0 + +gUnknown_80DD4C4:: @ 80DD4C4 + .string "#+" + .byte 0x24 + .string "m1 joined the\n" + .string "#+rescue team for adventures!" + .byte 0 + .align 2, 0 + +gUnknown_80DD4F4:: @ 80DD4F4 + .string "#+" + .byte 0x24 + .string "m1 left the team to remain\n" + .string "#+on standby in the Friend Area." + .byte 0 + .align 2, 0 + +gUnknown_80DD534:: @ 80DD534 + .string "#+" + .byte 0x24 + .string "m1 became the leader\n" + .string "#+of the rescue team." + .byte 0 + .align 2, 0 + +gUnknown_80DD564:: @ 80DD564 + .string "#+" + .byte 0x24 + .string "m1 left\n" + .string "#+the Friend Area.\n" + .string "#+Bye-bye~2c " + .byte 0x24 + .string "m1!" + .byte 0 +gUnknown_80DD594:: @ 80DD594 + .string "#+The #C4" + .byte 0x24 + .string "i1#R was\n" + .string "#+handed over. " + .byte 0 + .align 2, 0 + +gUnknown_80DD5B8:: @ 80DD5B8 + .string "#+The #C4" + .byte 0x24 + .string "i1#R was\n" + .string "#+handed over.#P#+The #C4" + .byte 0x24 + .string "i0#R was\n" + .string "#+returned to the Toolbox." + .byte 0 + .align 2, 0 + +gUnknown_80DD60C:: @ 80DD60C + .string "#+The #C4" + .byte 0x24 + .string "i0#R was\n" + .string "#+returned to the Toolbox." + .byte 0 + .align 2, 0 + +gUnknown_80DD63C:: @ 80DD63C + .string "#+The #C4" + .byte 0x24 + .string "i0#R was\n" + .string "#+sent to storage." + .byte 0 + .align 2, 0 + +gUnknown_80DD664:: @ 80DD664 + .string "Stand By" + .byte 0 + .align 2, 0 +gUnknown_80DD670:: @ 80DD670 + .string "Make Leader" + .byte 0 + +gUnknown_80DD67C:: @ 80DD67C + .string "Join Team" + .byte 0 + .align 2, 0 + +gUnknown_80DD688:: @ 80DD688 + .string "Give Gummi" + .byte 0 + .align 2, 0 + +gUnknown_80DD694:: @ 80DD694 + .string "Give" + .byte 0 + .align 2, 0 + +gUnknown_80DD69C:: @ 80DD69C + .string "Take" + .byte 0 + .align 2, 0 + +gUnknown_80DD6A4:: @ 80DD6A4 + .string "Say Farewell" + .byte 0 + .align 2, 0 + +gUnknown_80DD6B4:: @ 80DD6B4 + .string "Summary" + .byte 0 + .align 2, 0 + +gUnknown_80DD6BC:: @ 80DD6BC + .string "Moves" + .byte 0 + .align 2, 0 + +gUnknown_80DD6C4:: @ 80DD6C4 + .string "Check IQ" + .byte 0 + .align 2, 0 + +gUnknown_80DD6D0:: @ 80DD6D0 + .string "Item: #C4" + .byte 0x24 + .string "i0#R " + .byte 0 + .align 2, 0 + +gUnknown_80DD6E0:: @ 80DD6E0 + .string "%s" + .byte 0 + .align 2, 0 + + .string "pksdir0" + .byte 0 + .align 2, 0 diff --git a/data/text/save.inc b/data/text/save.inc new file mode 100644 index 0000000..4843851 --- /dev/null +++ b/data/text/save.inc @@ -0,0 +1,57 @@ +gUnknown_80B6A34:: @ 80B6A34 + .string "#+Quicksaving your adventure...\n" + .string "#+Please don~27t turn off the power." + .byte 0 + .align 2, 0 + +gUnknown_80B6A7C:: @ 80B6A7C + .string "#+Your adventure has been saved." + .byte 0 + .align 2, 0 + +gUnknown_80B6AA0:: @ 80B6AA0 + .string "#+Your adventure has been saved.\n" + .string "#+When you are in a dungeon~2c quicksave\n" + .string "#+your progress before ending the game." + .byte 0 + .align 2, 0 + +gUnknown_80B6B14:: @ 80B6B14 + .string "#+The data could not be written.\n" + .string "#+Please turn off the power and remove\n" + .string "#+and reinsert the DS Card." + .byte 0 + .align 2, 0 + +gUnknown_80B6B78:: @ 80B6B78 + .string "#+Save failed." + .byte 0 + .align 2, 0 + +gUnknown_80B6B88:: @ 80B6B88 + .string "#+Error reading data.\n" + .string "#+Please turn off the power and reinsert\n" + .string "#+the DS Game Card." + .byte 0 + .align 2, 0 + +gUnknown_80B6BDC:: @ 80B6BDC + .string "#+Your data was not properly saved~2c\n" + .string "#+so your game cannot be resumed\n" + .string "#+from your last spot.#P#+Your last outing is considered a defeat.\n" + .string "#+Before shutting down~2c save in your\n" + .string "#+team base~2c or quicksave in a dungeon." + .byte 0 + .align 2, 0 + +gUnknown_80B6CB8:: @ 80B6CB8 + .string "#+You may not resume your dungeon\n" + .string "#+adventure using this saved data.\n" + .string "#+Your last outing is considered a defeat." + .byte 0 + .align 2, 0 + + .asciz "pksdir0" + .align 2, 0 + + .incbin "baserom.gba", 0xB6D30, 0x60 diff --git a/data/text/wonder_mail_1.inc b/data/text/wonder_mail_1.inc new file mode 100644 index 0000000..3fc142f --- /dev/null +++ b/data/text/wonder_mail_1.inc @@ -0,0 +1,347 @@ +gUnknown_80DDBA8:: @ 80DDBA8 + .string " What you need to do is\n" + .string "tell your friend--the one you rescued--\n" + .string "this here password." + .byte 0 + .align 2, 0 + +gUnknown_80DDBFC:: @ 80DDBFC + .string " All righty!\n" + .string "Here~27s your #CGA-OK Mail password#R." + .byte 0 + .align 2, 0 + +gUnknown_80DDC30:: @ 80DDC30 + .string " Okeydoke! That~27s all done.\n" + .string "Come around whenever you need." + .byte 0 + .align 2, 0 + +gUnknown_80DDC70:: @ 80DDC70 + .string " Okeydoke! I sent off your\n" + .string "#CGA-OK Mail#R.#P Let me save your adventure." + .byte 0 + .align 2, 0 + +gUnknown_80DDCBC:: @ 80DDCBC + .string "#+Please choose the Pokémon you want to\n" + .string "#+send as a helper to your friend.\n" + .string "#+(Its hold item will not be sent.)" + .byte 0 + .align 2, 0 + +gUnknown_80DDD2C:: @ 80DDD2C + .string " ...Uh~2c no?\n" + .string "There appear to be no Pokémon in your\n" + .string "Friend Areas. What do you want to do?" + .byte 0 + .align 2, 0 + +gUnknown_80DDD88:: @ 80DDD88 + .string " You~27re sure you want to\n" + .string "send this here Pokémon?" + .byte 0 + .align 2, 0 + +gUnknown_80DDDBC:: @ 80DDDBC + .string " You~27re sure about this?" + .byte 0 + .align 2, 0 + +gUnknown_80DDDD8:: @ 80DDDD8 + .string " All righty. I need you to\n" + .string "pick the #CGA-OK Mail#R you want to send." + .byte 0 + .align 2, 0 + +gUnknown_80DDE20:: @ 80DDE20 + .string " ...Uh~2c no?\n" + .string "I don~27t see any #CGA-OK Mail#R here." + .byte 0 + .align 2, 0 + +gUnknown_80DDE58:: @ 80DDE58 + .string " Did you know? If you use\n" + .string "a #CGGame Link cable#R~2c you can send\n" + .string "a #CGhelper Pokémon#R to your friend." + .byte 0 + .align 2, 0 + +gUnknown_80DDEC0:: @ 80DDEC0 + .string " Don~27t you worry. Sending\n" + .string "a Pokémon doesn~27t mean it will go away.\n" + .string "So! Want to send one to your friend?" + .byte 0 + .align 2, 0 + +gUnknown_80DDF2C:: @ 80DDF2C + .string " ...Uh~2c no?\n" + .string "There~27s no space at all to receive\n" + .string "any more mail.#P Delete some old mail~2c\n" + .string "and then come to me to receive\n" + .string "your mail~2c OK?" + .byte 0 + .align 2, 0 + +gUnknown_80DDFB8:: @ 80DDFB8 + .string " All righty! Connect up\n" + .string "the #CGGame Link cable#R~2c if you~27d please.\n" + .string "Your friend ready~2c too?" + .byte 0 + .align 2, 0 + +gUnknown_80DE01C:: @ 80DE01C + .incbin "baserom.gba", 0xDE01C, 0x50 + +gUnknown_80DE06C:: @ 80DE06C + .string " Okeydoke!\n" + .string "I received your friend~27s #CGSOS Mail#R.#P Let me save your adventure." + .byte 0 + .align 2, 0 + +gUnknown_80DE0C0:: @ 80DE0C0 + .string " Okeydoke! You~27re good to go.\n" + .string "Just give me a shout when you~27d like\n" + .string "to go rescue your friend." + .byte 0 + .align 2, 0 + +gUnknown_80DE124:: @ 80DE124 + .string " OK~2c I need you to enter\n" + .string "the #CGSOS Mail password#R that your\n" + .string "friend gave you." + .byte 0 + .align 2, 0 + +gUnknown_80DE178:: @ 80DE178 + .string " How do you want to receive\n" + .string "your friend~27s #CGSOS Mail#R?" + .byte 0 + .align 2, 0 + +gUnknown_80DE1B4:: @ 80DE1B4 + .string " How do you want to send\n" + .string "your #CGA-OK Mail#R?" + .byte 0 + .align 2, 0 + +gUnknown_80DE1E4:: @ 80DE1E4 + .string " ...Uh~2c no?\n" + .string "You don~27t have an #CGSOS Mail#R.#P You~27ll need to arrange\n" + .string "to receive your friend~27s #CGSOS Mail#R first.\n" + .string "That~27s what you need to do." + .byte 0 + .align 2, 0 + +gUnknown_80DE280:: @ 80DE280 + .string " Okeydoke!\n" + .string "Let me show you to the rescue site." + .byte 0 + .align 2, 0 + +gUnknown_80DE2B0:: @ 80DE2B0 + .string " ...Uh~2c no?\n" + .string "Doesn~27t look like you can go to the dungeon\n" + .string "named in this #CGSOS Mail#R.#P Come see me about doing\n" + .string "this rescue when you can actually go\n" + .string "to that dungeon~2c all right?" + .byte 0 + .align 2, 0 + +gUnknown_80DE368:: @ 80DE368 + .string " ...Uh~2c no?\n" + .string "You~27ve blown this rescue mission too\n" + .string "often. Your friend~27s team is beyond help.#P I~27m sorry to say this~2c\n" + .string "but you~27ll have to tell your friend that\n" + .string "your rescue attempts failed." + .byte 0 + .align 2, 0 + +gUnknown_80DE430:: @ 80DE430 + .string " Okeydoke.\n" + .string "I~27ll need you to choose the #CGSOS Mail#R\n" + .string "for you to go on a rescue mission." + .byte 0 + .align 2, 0 + +gUnknown_80DE48C:: @ 80DE48C + .string " What kind of mail do you\n" + .string "want to delete?" + .byte 0 + .align 2, 0 + +gUnknown_80DE4B8:: @ 80DE4B8 + .string " All righty. Choose\n" + .string "the #CGSOS Mail#R you don~27t need." + .byte 0 + +gUnknown_80DE4F0:: @ 80DE4F0 + .string " ...Uh~2c no?\n" + .string "You don~27t have any #CGSOS Mail#R." + .byte 0 + .align 2, 0 + +gUnknown_80DE524:: @ 80DE524 + .string " If you want a reward~2c #C2don~27t\n" + .string "delete an A-OK Mail#R before getting a\n" + .string "#CGThank-You Mail#R back for it.#P #C2Be careful#R if you~27re going\n" + .string "to delete any #CGA-OK Mail#R.#P Okeydoke.\n" + .string "Choose an #CGA-OK Mail#R\n" + .string "you don~27t need anymore." + .byte 0 + .align 2, 0 + +gUnknown_80DE614:: @ 80DE614 + .string " ...Uh~2c no?\n" + .string "You don~27t have any #CGA-OK Mail#R." + .byte 0 + .align 2, 0 + +gUnknown_80DE648:: @ 80DE648 + .string " Uh~2c OK.\n" + .string "So~2c you want me to delete every piece\n" + .string "of mail that you have." + .byte 0 + .align 2, 0 + +gUnknown_80DE694:: @ 80DE694 + .string " ...Uh~2c no?\n" + .string "You don~27t have a single piece of\n" + .string "mail on you!" + .byte 0 + .align 2, 0 + +gUnknown_80DE6D4:: @ 80DE6D4 + .string " So~2c delete all your #CGSOS Mail#R~2c\n" + .string "#CGA-OK Mail#R~2c and your #CGThank-You Mail#R?\n" + .string "You~27re absolutely~2c positively sure?" + .byte 0 + +gUnknown_80DE754:: @ 80DE754 + .string " If I delete any mail~2c it~27s\n" + .string "gone forever and ever. Bye-bye.\n" + .string "You~27re really~2c really sure now?" + .byte 0 + +gUnknown_80DE7B8:: @ 80DE7B8 + .string " OK~2c then.\n" + .string "Let me save your adventure now." + .byte 0 + .align 2, 0 + +gUnknown_80DE7E8:: @ 80DE7E8 + .string " Okeydoke. That~27s all done." + .byte 0 + .align 2, 0 + +gUnknown_80DE808:: @ 80DE808 + .string " Do you want to delete\n" + .string "any other mail?" + .byte 0 + .align 2, 0 + +gUnknown_80DE830:: @ 80DE830 + .string " Okeydoke.\n" + .string "I~27ll delete #CGevery piece of mail#R." + .byte 0 + .align 2, 0 + +gUnknown_80DE864:: @ 80DE864 + .string " Okeydoke.\n" + .string "Every bit of mail has been deleted.#P Let me save your adventure." + .byte 0 + .align 2, 0 + +gUnknown_80DE8B4:: @ 80DE8B4 + .string " Well~2c hello~2c there!\n" + .string "This is the #CGFriend Rescue#R counter.\n" + .string "What can I help you with today?" + .byte 0 + .align 2, 0 + +gUnknown_80DE918:: @ 80DE918 + .string " Help you with anything\n" + .string "else today?" + .byte 0 + +gUnknown_80DE93C:: @ 80DE93C + .string " Come again anytime!" + .byte 0 + .align 2, 0 + +gUnknown_80DE954:: @ 80DE954 + .string " ...Uh~2c no?\n" + .string "Something~27s not working right here..." + .byte 0 + .align 2, 0 + +gUnknown_80DE98C:: @ 80DE98C + .string " ...Uh~2c no?\n" + .string "The number of GBA systems isn~27t right.\n" + .string "You~27d better try this again from the top." + .byte 0 + .align 2, 0 + +gUnknown_80DE9F0:: @ 80DE9F0 + .string " ...Uh~2c no? You~27re not in the\n" + .string "same mode as your friend.\n" + .string "You~27d better try this again from the top." + .byte 0 + +gUnknown_80DEA58:: @ 80DEA58 + .string " ...Uh~2c no?\n" + .string "Your storage space is stuffed full.\n" + .string "You~27d better make room and try again." + .byte 0 + .align 2, 0 + +gUnknown_80DEAB4:: @ 80DEAB4 + .string " ...Uh~2c no? It looks like\n" + .string "you received this mail before.\n" + .string "You can~27t get the same mail twice. " + .byte 0 + .align 2, 0 + +gUnknown_80DEB18:: @ 80DEB18 + .string " ...Uh~2c no?\n" + .string "You~27re not eligible to receive this mail." + .byte 0 + .align 2, 0 + +gUnknown_80DEB54:: @ 80DEB54 + .string " ...Uh~2c no?\n" + .string "There~27s no room for you to \n" + .string "receive any more mail.#P You~27d better delete some\n" + .string "mail and make room before you come see\n" + .string "me again about receiving new mail." + .byte 0 + .align 2, 0 + +gUnknown_80DEC00:: @ 80DEC00 + .string " ...Uh~2c no? Looks like your\n" + .string "friend didn~27t do what needed doing.\n" + .string "You~27d better do this again from the top." + .byte 0 + .align 2, 0 + +gUnknown_80DEC70:: @ 80DEC70 + .string " ...Uh~2c no?\n" + .string "This here password looks wrong.\n" + .string "Do you want to try that again?" + .byte 0 + .align 2, 0 + +gUnknown_80DECC0:: @ 80DECC0 + .string " ...Uh~2c no? This password~27s\n" + .string "not for any #CGSOS Mail#R." + .byte 0 + .align 2, 0 + +gUnknown_80DECFC:: @ 80DECFC + .string ": I received the #CGSOS Mail#R.\n" + .string "Your adventure will be saved." + .byte 0 + .align 2, 0 + + .asciz "pksdir0" + .align 2, 0 diff --git a/data/text/wonder_mail_2.inc b/data/text/wonder_mail_2.inc new file mode 100644 index 0000000..1cc51b9 --- /dev/null +++ b/data/text/wonder_mail_2.inc @@ -0,0 +1,283 @@ +gUnknown_80DEF04:: @ 80DEF04 + .string " ...Oh?\n" + .string "Something~27s gone wrong." + .byte 0 + .align 2, 0 + +gUnknown_80DEF28:: @ 80DEF28 + .string " ...Oh? The number of linked\n" + .string "GBA systems is incorrect.\n" + .string "Please try again from the start." + .byte 0 + .align 2, 0 + +gUnknown_80DEF80:: @ 80DEF80 + .string " ...Oh? It looks like your\n" + .string "friend chose a different mode.\n" + .string "Please try again from the start." + .byte 0 + .align 2, 0 + +gUnknown_80DEFDC:: @ 80DEFDC + .string " ...Oh? It looks like your\n" + .string "storage space is full. Please clear some\n" + .string "space and try again from the start." + .byte 0 + .align 2, 0 + +gUnknown_80DF044:: @ 80DF044 + .string " ...Oh?\n" + .string "I think you~27ve received this mail before.\n" + .string "You can~27t get the same mail twice." + .byte 0 + .align 2, 0 + +gUnknown_80DF0A0:: @ 80DF0A0 + .string " ...Oh?\n" + .string "I don~27t think you~27re eligible to receive\n" + .string "this mail." + .byte 0 + .align 2, 0 + +gUnknown_80DF0E0:: @ 80DF0E0 + .string " ...Oh?\n" + .string "There is no room to receive new mail.\n" + .string "Please delete some mail and try again." + .byte 0 + .align 2, 0 + +gUnknown_80DF138:: @ 80DF138 + .string " ...Oh? Your friend didn~27t\n" + .string "follow through on their side.\n" + .string "Please try again from the start." + .byte 0 + .align 2, 0 + +gUnknown_80DF194:: @ 80DF194 + .string " Your #CGThank-You Mail#R\n" + .string "has been sent." + .byte 0 + .align 2, 0 + +gUnknown_80DF1C0:: @ 80DF1C0 + .string " ...Oh?\n" + .string "This password appears to be wrong.\n" + .string "Would you like to try again?" + .byte 0 + .align 2, 0 + +gUnknown_80DF208:: @ 80DF208 + .string " ...Oh? This password doesn~27t\n" + .string "appear to be for a #CGThank-You Mail#R." + .byte 0 + .align 2, 0 + +gUnknown_80DF250:: @ 80DF250 + .string ": This is the counter for\n" + .string "#CGThank-You Mail#R.#P: Oh~2c hi~2c #CN%s#R.\n" + .string "I~27ve been waiting for you. You wanted me\n" + .string "to process a #CGThank-You Mail#R?#P: Let me get on it right away" + .string "." + .byte 0 + .align 2, 0 + +gUnknown_80DF304:: @ 80DF304 + .string " Is it OK to send this\n" + .string "#CGThank-You Mail#R?" + .byte 0 + .align 2, 0 + +gUnknown_80DF330:: @ 80DF330 + .string " Please choose the\n" + .string "#CGThank-You Mail#R that you want to\n" + .string "send to your friend." + .byte 0 + .align 2, 0 + +gUnknown_80DF380:: @ 80DF380 + .string " OK. Please enter the\n" + .string "#CGThank-You Mail password#R." + .byte 0 + .align 2, 0 + +gUnknown_80DF3B4:: @ 80DF3B4 + .string " Please give this password\n" + .string "to the friend that rescued your team.#P I also must save your\n" + .string "adventure." + .byte 0 + .align 2, 0 + +gUnknown_80DF418:: @ 80DF418 + .string " OK~2c here is your\n" + .string "#CGThank-You Mail password#R." + .byte 0 + .align 2, 0 + +gUnknown_80DF44C:: @ 80DF44C + .string " I need to save your\n" + .string "adventure." + .byte 0 + .align 2, 0 + +gUnknown_80DF46C:: @ 80DF46C + .string " There we go.\n" + .string "I~27m all done.#P Doesn~27t it feel great to\n" + .string "be appreciated for doing something good?\n" + .string "Please keep up your rescue work!" + .byte 0 + .align 2, 0 + +gUnknown_80DF4F4:: @ 80DF4F4 + .string " A #CGThank-You Mail#R has\n" + .string "arrived from your friend for your rescue\n" + .string "mission." + .byte 0 + .align 2, 0 + +gUnknown_80DF544:: @ 80DF544 + .string "#+Communicating...\n" + .string "#+Please wait with the power on.\n" + .string "#+To cancel~2c press {B_BUTTON}." + .byte 0 + .align 2, 0 + +gUnknown_80DF594:: @ 80DF594 + .string " There. I~27ve sent your\n" + .string "#CGThank-You Mail#R.\n" + .string "I need to save your adventure." + .byte 0 + .align 2, 0 + +gUnknown_80DF5E4:: @ 80DF5E4 + .string " Please connect the GBA\n" + .string "systems with a #CGGame Link cable#R.\n" + .string "Is your friend also ready?" + .byte 0 + .align 2, 0 + +gUnknown_80DF63C:: @ 80DF63C + .string " There~2c all done.\n" + .string "#CN%s#R~2c I hope your friend\n" + .string "appreciates your sense of gratitude." + .byte 0 + .align 2, 0 + +gUnknown_80DF694:: @ 80DF694 + .string " The item you~27ve chosen\n" + .string "here can~27t be exchanged later.\n" + .string "Are you certain this item is OK?" + .byte 0 + .align 2, 0 + +gUnknown_80DF6F0:: @ 80DF6F0 + .string " I~27ve saved your adventure. " + .byte 0 + .align 2, 0 + +gUnknown_80DF710:: @ 80DF710 + .string " OK~2c please choose\n" + .string "the item to be sent." + .byte 0 + .align 2, 0 + +gUnknown_80DF73C:: @ 80DF73C + .string " ...Oh?\n" + .string "Your storage space is empty.\n" + .string "What would you like to do?" + .byte 0 + .align 2, 0 + +gUnknown_80DF77C:: @ 80DF77C + .string " Would you like to choose\n" + .string "a #CGreward item#R from storage and\n" + .string "send it with your mail?" + .byte 0 + .align 2, 0 + +gUnknown_80DF7D4:: @ 80DF7D4 + .string " ...Oh?\n" + .string "You~27ve already attached a #CGreward item#R\n" + .string "to this mail.#P I~27m sorry~2c but once an item\n" + .string "has been attached to mail~2c it can~27t be\n" + .string "exchanged." + .byte 0 + .align 2, 0 + +gUnknown_80DF870:: @ 80DF870 + .string " Would you like to send it\n" + .string "again with the item you chose before?" + .byte 0 + .align 2, 0 + +gUnknown_80DF8B4:: @ 80DF8B4 + .string " ...Oh?\n" + .string "You don~27t seem to have a #CGThank-You Mail#R." + .byte 0 + .align 2, 0 + +gUnknown_80DF8EC:: @ 80DF8EC + .string " Hello.\n" + .string "I handle #CGThank-You Mail#R.\n" + .string "How may I serve you?" + .byte 0 + .align 2, 0 + +gUnknown_80DF928:: @ 80DF928 + .string " May I help you with\n" + .string "anything else?" + .byte 0 + .align 2, 0 + +gUnknown_80DF94C:: @ 80DF94C + .string " Please come see me\n" + .string "anytime." + .byte 0 + .align 2, 0 + +gUnknown_80DF96C:: @ 80DF96C + .string " How would you like to send\n" + .string "your #CGThank-You Mail#R?" + .byte 0 + .align 2, 0 + +gUnknown_80DF9A4:: @ 80DF9A4 + .string " How would you like to\n" + .string "receive your friend~27s #CGThank-You Mail#R?" + .byte 0 + + .string "pksdir0" + .byte 0 + .align 2, 0 + +gUnknown_80DF9F0:: @ 80DF9F0 + .string "????" + .byte 0 + .align 2, 0 + +gUnknown_80DF9F8:: @ 80DF9F8 + .string " Oh~2c hello!\n" + .string "Your rescue mission went well~2c didn~27t it?\n" + .string "I wouldn~27t expect any less~2c #CG%s#R!#P Well~2c well!\n" + .string "Here is your reward from the Pokémon\n" + .string "Rescue Organization!" + .byte 0 + .align 2, 0 + +gUnknown_80DFAA8:: @ 80DFAA8 + .string " I hope you will keep on\n" + .string "rescuing your friends in\n" + .string "dire straits.#P And now~2c I must save\n" + .string "your adventure." + .byte 0 + .align 2, 0 + +gUnknown_80DFB14:: @ 80DFB14 + .string " Oh~2c yes~2c that~27s right.\n" + .string "Please don~27t forget to send an #CGA-OK Mail#R\n" + .string "to the friend you just rescued.#P Please give me a shout if\n" + .string "you would like to send #CGA-OK Mail#R." + .byte 0 + .align 2, 0 + + .string "pksdir0" + .byte 0 diff --git a/data/text/wonder_mail_3.inc b/data/text/wonder_mail_3.inc new file mode 100644 index 0000000..1aa2213 --- /dev/null +++ b/data/text/wonder_mail_3.inc @@ -0,0 +1,68 @@ +gUnknown_80DFE4C:: @ 80DFE4C + .string "Are you sure you want to replace the\n" + .string "old #CGWonder Mail#R with the new one?" + .byte 0 + .align 2, 0 + +gUnknown_80DFE9C:: @ 80DFE9C + .string "This #CGWonder Mail#R has already been\n" + .string "received." + .byte 0 + .align 2, 0 + +gUnknown_80DFED0:: @ 80DFED0 + .string "This #CGWonder Mail#R has already been\n" + .string "received.\n" + .string "You may not receive the same one again." + .byte 0 + .align 2, 0 + +gUnknown_80DFF2C:: @ 80DFF2C + .string "Only #CGone piece#R of #CGWonder Mail#R can be held.\n" + .string "Please receive it after completing any\n" + .string "rescue mission in progress." + .byte 0 + .align 2, 0 + +gUnknown_80DFFA4:: @ 80DFFA4 + .string "The rescue team has quicksaved in\n" + .string "a dungeon with a mission in progress.\n" + .string "Please complete the mission first." + .byte 0 + .align 2, 0 + +gUnknown_80E0010:: @ 80E0010 + .string "The rescue team has quicksaved in\n" + .string "a dungeon with a mission in progress.\n" + .string "Mail cannot be deleted now." + .byte 0 +gUnknown_80E0074:: @ 80E0074 + .string "Received the #CGWonder Mail#R!" + .byte 0 + .align 2, 0 + +gUnknown_80E0094:: @ 80E0094 + .string "Only #CGone piece#R of #CGWonder Mail#R can be held.\n" + .string "Is it OK to replace the old #CGWonder Mail#R\n" + .string "with the new one?" + .byte 0 + .align 2, 0 + +gUnknown_80E0108:: @ 80E0108 + .string "Your #CGJob List#R is full.\n" + .string "Please select and delete unwanted mail." + .byte 0 + .align 2, 0 + +gUnknown_80E014C:: @ 80E014C + .string "New Mail" + .byte 0 + .align 2, 0 + +gUnknown_80E0158:: @ 80E0158 + .string "Old Mail" + .byte 0 + .align 2, 0 + + .string "pksdir0" + .byte 0 diff --git a/data/text/wonder_mail_4.inc b/data/text/wonder_mail_4.inc new file mode 100644 index 0000000..a8b30f9 --- /dev/null +++ b/data/text/wonder_mail_4.inc @@ -0,0 +1,190 @@ +gUnknown_80E0C4C:: @ 80E0C4C + .string " So~2c what~27d you want to\n" + .string "know?" + .byte 0 + .align 2, 0 + +gUnknown_80E0C70:: @ 80E0C70 + .string " If you need to call for\n" + .string "help~2c first send your friend\n" + .string "an #CGSOS Mail#R.#P Once you send that mail~2c\n" + .string "wait until your friend sends you back\n" + .string "an #CGA-OK Mail#R.#P When you get that\n" + .string "#CGA-OK Mail#R back~2c your team\n" + .string "can continue from where it went down.#P Make sure you send your\n" + .string "friend a #CGThank-You Mail#R.\n" + .string "That~27s if you get revived~2c of course." + .byte 0 + .align 2, 0 + +gUnknown_80E0DD0:: @ 80E0DD0 + .string " If your team gets defeated\n" + .string "in a dungeon~2c you can send an #CGSOS Mail#R\n" + .string "to a friend willing to help.#P But I have to warn you.\n" + .string "You can~27t get anyone to rescue you\n" + .string "in certain places.#P If you need to send\n" + .string "an #CGSOS Mail#R~2c you send it from the\n" + .string "#CGmain menu#R." + .byte 0 + .align 2, 0 + +gUnknown_80E0ED8:: @ 80E0ED8 + .string " If your friend manages to\n" + .string "rescue your team~2c you need to receive\n" + .string "an #CGA-OK Mail#R from your friend.#P See~2c once you get that\n" + .string "#CGA-OK Mail#R~2c your team can continue from\n" + .string "where it went down in the dungeon.#P And~2c if you use\n" + .string "a #CGGame Link cable#R~2c your friend can\n" + .string "even send you a #CGhelper Pokémon#R.#P There~27s just one thing.\n" + .string "A #CGhelper Pokémon#R can~27t bring\n" + .string "any item it happens to be holding.#P You can receive that\n" + .string "team-saving #CGA-OK Mail#R on the #CGmain menu#R~2c\n" + .string "all right?" + .byte 0 + .align 2, 0 + +gUnknown_80E10C8:: @ 80E10C8 + .string " If your team gets rescued~2c\n" + .string "be sure to send your friend\n" + .string "a #CGThank-You Mail#R.#P You do that by going to\n" + .string "the #CGright counter#R~2c or\n" + .string "by selecting it from the #CGmain menu#R.#P You can attach an item in\n" + .string "storage to your #CGThank-You Mail#R\n" + .string "as a #CGreward item#R.#P You don~27t want to ever\n" + .string "forget to express your thanks." + .byte 0 + .align 2, 0 + +gUnknown_80E120C:: @ 80E120C + .string " If you want to go and\n" + .string "rescue your friend~27s KO~27d team~2c\n" + .string "you need to receive an #CGSOS Mail#R.#P When you get that mail~2c\n" + .string "you can rescue your friend at\n" + .string "the #CGleft counter#R over there.#P If you do manage to rescue\n" + .string "the team~2c you send your friend\n" + .string "an #CGA-OK Mail#R.#P After you do that~2c your\n" + .string "friend can send back to you\n" + .string "a #CGThank-You Mail#R." + .byte 0 + .align 2, 0 + +gUnknown_80E136C:: @ 80E136C + .string " To go off on a rescue~2c\n" + .string "you first need to receive your friend~27s\n" + .string "#CGSOS Mail#R.#P You do that at\n" + .string "the #CGleft counter#R over there~2c\n" + .string "or by selecting it from the #CGmain menu#R." + .byte 0 + .align 2, 0 + +gUnknown_80E1420:: @ 80E1420 + .string " If you succeed in rescuing\n" + .string "that team~2c you send your friend an\n" + .string "#CGA-OK Mail#R.#P You do that by going to\n" + .string "the #CGleft counter#R~2c\n" + .string "or from the #CGmain menu#R.#P You can send your friend\n" + .string "a Pokémon as a helper from your Friend\n" + .string "Areas using a #CGGame Link cable#R.#P This Pokémon won~27t\n" + .string "disappear from its Friend Area~2c so\n" + .string "don~27t you worry any." + .byte 0 + .align 2, 0 + +gUnknown_80E157C:: @ 80E157C + .string " If you get an #CGSOS Mail#R~2c\n" + .string "you head off on the rescue from\n" + .string "the #CGleft counter#R.#P But~2c I have to warn you.\n" + .string "You can~27t go off to rescue in a dungeon\n" + .string "if you can~27t get into it.#P You~27ll be able to get\n" + .string "there when you go farther in your\n" + .string "adventure~2c so it won~27t do to fret." + .byte 0 + .align 2, 0 + +gUnknown_80E169C:: @ 80E169C + .string " If you send your friend\n" + .string "an #CGA-OK Mail#R~2c you can look forward\n" + .string "to getting a #CGThank-You Mail#R back.#P You can receive it at\n" + .string "the #CGright counter#R\n" + .string "or on the #CGmain menu#R.#P But you need to #C2be careful#R.\n" + .string "You #C2must not delete the A-OK Mail#R\n" + .string "before you get the #CGThank-You Mail#R back." + .byte 0 + .align 2, 0 + +gUnknown_80E17C8:: @ 80E17C8 + .string " I~27m your guide to what you\n" + .string "can expect at the Pelipper Post Office.\n" + .string "If you have any questions~2c just ask away!" + .byte 0 + .align 2, 0 + +gUnknown_80E183C:: @ 80E183C + .string " Did you want to ask about\n" + .string "anything else?" + .byte 0 + .align 2, 0 + +gUnknown_80E1868:: @ 80E1868 + .string " #CGThe Pelipper Post Office#R\n" + .string "keeps track of information from\n" + .string "around the world.#P We inform folks\n" + .string "about everything from gossip to calls\n" + .string "for help from fellow Pokémon.#P For the latest news~2c check\n" + .string "#CGyour Mailbox#R or the #CGBulletin Board#R\n" + .string "outside~2c all right?#P Oh~2c that~27s not all.\n" + .string "You can arrange for #CGFriend Rescue#R\n" + .string "missions at that counter there.#P The #CGleft counter#R is\n" + .string "for rescues~2c and the #CGright counter#R\n" + .string "is for Thank-You Mail." + .byte 0 + .align 2, 0 + +gUnknown_80E1A30:: @ 80E1A30 + .string " The #CGBulletin Board#R outside\n" + .string "here lists rescue requests.#P Take on rescue jobs from\n" + .string "the Bulletin Board. Be a hero and handle\n" + .string "the jobs for fellow Pokémon in need!" + .byte 0 + .align 2, 0 + +gUnknown_80E1AD8:: @ 80E1AD8 + .string " If your rescue team\n" + .string "becomes famous for doing lots of rescues~2c\n" + .string "expect to get rescue requests directly.#P Our delivery " + .byte 0x24 + .string "m0\n" + .string "will take those jobs straight to your\n" + .string "#CGMailbox#R." + .byte 0 + .align 2, 0 + +gUnknown_80E1B88:: @ 80E1B88 + .string " Friend Rescue is what we\n" + .string "call rescue missions between friends using\n" + .string "a #CGGame Link cable#R~2c #CGpasswords#R~2c etc.#P For instance~2c you can send\n" + .string "out for help saying your team wiped out\n" + .string "in a dungeon at such and such a place.#P Your friend could play\n" + .string "the hero and come to your team~27s rescue.\n" + .string "Or it can be the other way around~2c too.#P If you use #CGpasswords#R~2c\n" + .string "you can do rescues with friends in\n" + .string "far-away places.#P You can apply for Friend\n" + .string "Rescue jobs at the #CGleft counter#R of\n" + .string "that counter there." + .byte 0 + .align 2, 0 + +gUnknown_80E1D84:: @ 80E1D84 + .string " Deleting mail just means\n" + .string "getting rid of old mail that you don~27t\n" + .string "need anymore.#P If you do lots of Friend\n" + .string "Rescues~2c you~27ll find #CGSOS Mail#R and\n" + .string "#CGA-OK Mail#R piling up.#P Once you get #CG30 pieces#R~2c\n" + .string "you won~27t be able to receive more mail.\n" + .string "That~27s why you~27ll need to delete old mail.#P You can look through old\n" + .string "mail at the #CGleft counter#R over there." + .byte 0 + .align 2, 0 + + .string "pksdir0" + .byte 0 diff --git a/data/text/wonder_mail_complete.inc b/data/text/wonder_mail_complete.inc new file mode 100644 index 0000000..7b6fad1 --- /dev/null +++ b/data/text/wonder_mail_complete.inc @@ -0,0 +1,40 @@ +gUnknown_80E0184:: @ 80E0184 + .string " Thank you for rescuing me!" + .byte 0 + .align 2, 0 + +gUnknown_80E01A0:: @ 80E01A0 + .string " Thank you for rescuing\n" + .string "#C5" + .byte 0x24 + .string "m1#R!" + .byte 0 + .align 2, 0 + +gUnknown_80E01C4:: @ 80E01C4 + .string " Thank you for escorting me\n" + .string "to #C5" + .byte 0x24 + .string "m1#R! " + .byte 0 + .align 2, 0 + +gUnknown_80E01F0:: @ 80E01F0 + .string " Thank you for delivering\n" + .string "the #C4" + .byte 0x24 + .string "i0#R!" + .byte 0 + .align 2, 0 + +gUnknown_80E0218:: @ 80E0218 + .string " Thank you for getting me\n" + .string "the #C4" + .byte 0x24 + .string "i0#R!" + .byte 0 + .align 2, 0 + + .string "pksdir0" + .byte 0 + .align 2, 0 diff --git a/include/code_800558C.h b/include/code_800558C.h new file mode 100644 index 0000000..e1b3432 --- /dev/null +++ b/include/code_800558C.h @@ -0,0 +1,6 @@ +#ifndef GUARD_code_800558C_H +#define GUARD_code_800558C_H + +extern void *gUnknown_203B078; + +#endif //GUARD_code_800558C_H diff --git a/include/code_800B540.h b/include/code_800B540.h new file mode 100644 index 0000000..050998e --- /dev/null +++ b/include/code_800B540.h @@ -0,0 +1,6 @@ +#ifndef GUARD_code_800B540_H +#define GUARD_code_800B540_H + +void sub_800CDA8(int a0); + +#endif //GUARD_code_800B540_H diff --git a/include/file_system.h b/include/file_system.h new file mode 100644 index 0000000..360f7ac --- /dev/null +++ b/include/file_system.h @@ -0,0 +1,34 @@ +#ifndef GUARD_FILE_SYSTEM_H +#define GUARD_FILE_SYSTEM_H + +struct File +{ + char *name; + u8 *data; +}; + +struct OpenedFile +{ + struct File *file; + u8 *data; +}; + +struct FileArchive +{ + char magic[8]; + s32 count; + struct File *entries; +}; + +struct SiroArchive +{ + u32 magic; + u8 *data; +}; + +struct OpenedFile *OpenFile(const char *filename, const struct FileArchive *arc); +u8 *GetFileDataPtr(struct OpenedFile *openedFile, int unused); +struct OpenedFile *OpenFileAndGetFileDataPtr(const char *filename, const struct FileArchive *arc); +struct OpenedFile *Call_OpenFileAndGetFileDataPtr(const char *filename, const struct FileArchive *arc); + +#endif //GUARD_FILE_SYSTEM_H 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..b5a4593 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,13 +24,7 @@ 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 NAKED __attribute__((naked)) #define ARRAY_COUNT(array) (sizeof(array) / sizeof((array)[0])) 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 e3a6af7..de750b1 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,16 +43,20 @@ 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); + src/text.o(.text); + . = ALIGN(4); asm/text.o(.text); asm/code_8009804.o(.text); src/file_system.o(.text); @@ -66,9 +65,14 @@ 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_3.o(.text); + src/m4a_4.o(.text); asm/syscall.o(.text); src/agb_flash.o(.text); src/agb_flash_1m.o(.text); @@ -133,23 +137,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); @@ -164,7 +162,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..86c4795 --- /dev/null +++ b/sound/music_player_table.inc @@ -0,0 +1,10 @@ + .align 2 +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..df66710 --- /dev/null +++ b/sound/song_table.inc @@ -0,0 +1,942 @@ + .align 2 +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..9917adf --- /dev/null +++ b/src/bg_palette_buffer.c @@ -0,0 +1,248 @@ +#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); + +#ifndef NONMATCHING +NAKED +#endif +void InitBGPaletteBuffer(void) +{ +#ifdef NONMATCHING + 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); +#else + asm_unified("\tpush {lr}\n" + "\tmovs r2, 0\n" + "\tldr r1, =gBGPaletteBuffer\n" + "\tmovs r0, 0x80\n" + "\tlsls r0, 2\n" + "_0800463E:\n" + "\tstrh r2, [r1]\n" + "\tadds r1, 0x2\n" + "\tsubs r0, 0x1\n" + "\tcmp r0, 0\n" + "\tbne _0800463E\n" + "\tldr r1, =gBGPaletteUsed\n" + "\tmovs r2, 0x1\n" + "\tadds r0, r1, 0\n" + "\tadds r0, 0x1F\n" + "_08004650:\n" + "\tstrb r2, [r0]\n" + "\tsubs r0, 0x1\n" + "\tcmp r0, r1\n" + "\tbge _08004650\n" + "\tpop {r0}\n" + "\tbx r0\n" + "\t.align 2, 0\n" + "\t.pool"); +#endif +} + +#ifndef NONMATCHING +NAKED +#endif +void SetBGPaletteBufferColorRGB(s32 index, u8 *RGBArray, s32 a1, u8 *a2) +{ +#ifdef NONMATCHING + if (a1 < 0) { + a1 = 0; + } + if (a1 > 31) { + a1 = 31; + } + gBGPaletteUsed[index / 16] = 1; + if (!a2) { + gBGPaletteBuffer[index] = ((RGBArray[2] * a1 / 256 & 0x1F) << 10) | ((RGBArray[1] * a1 / 256 & 0x1F) << 5) | (RGBArray[0] * a1 / 256 & 0x1F); + } + else + { + gBGPaletteBuffer[index] = ((a2[4 * RGBArray[2] + 2] * a1 / 256 & 0x1F) << 10) | ((a2[4 * RGBArray[1] + 1] * a1 / 256 & 0x1F) << 5) | (a2[4 * RGBArray[0]] * a1 / 256 & 0x1F); + } +#else + asm_unified("\tpush {r4-r7,lr}\n" + "\tadds r4, r0, 0\n" + "\tadds r5, r1, 0\n" + "\tcmp r2, 0\n" + "\tbge _08004670\n" + "\tmovs r2, 0\n" + "_08004670:\n" + "\tcmp r2, 0x1F\n" + "\tble _08004676\n" + "\tmovs r2, 0x1F\n" + "_08004676:\n" + "\tldr r1, =gBGPaletteUsed\n" + "\tadds r0, r4, 0\n" + "\tcmp r4, 0\n" + "\tbge _08004680\n" + "\tadds r0, 0xF\n" + "_08004680:\n" + "\tasrs r0, 4\n" + "\tadds r0, r1\n" + "\tmovs r1, 0x1\n" + "\tstrb r1, [r0]\n" + "\tcmp r3, 0\n" + "\tbne _080046D4\n" + "\tldr r0, =gBGPaletteBuffer\n" + "\tlsls r1, r4, 1\n" + "\tadds r6, r1, r0\n" + "\tldrb r0, [r5, 0x2]\n" + "\tmuls r0, r2\n" + "\tcmp r0, 0\n" + "\tbge _0800469C\n" + "\tadds r0, 0xFF\n" + "_0800469C:\n" + "\tasrs r0, 8\n" + "\tmovs r3, 0x1F\n" + "\tands r0, r3\n" + "\tlsls r4, r0, 10\n" + "\tldrb r0, [r5, 0x1]\n" + "\tmuls r0, r2\n" + "\tcmp r0, 0\n" + "\tbge _080046AE\n" + "\tadds r0, 0xFF\n" + "_080046AE:\n" + "\tasrs r0, 8\n" + "\tands r0, r3\n" + "\tlsls r1, r0, 5\n" + "\torrs r1, r4\n" + "\tldrb r0, [r5]\n" + "\tmuls r0, r2\n" + "\tcmp r0, 0\n" + "\tbge _080046C0\n" + "\tadds r0, 0xFF\n" + "_080046C0:\n" + "\tasrs r0, 8\n" + "\tands r0, r3\n" + "\torrs r1, r0\n" + "\tstrh r1, [r6]\n" + "\tb _08004722\n" + "\t.align 2, 0\n" + "\t.pool\n" + "_080046D4:\n" + "\tldr r1, =gBGPaletteBuffer\n" + "\tlsls r0, r4, 1\n" + "\tadds r7, r0, r1\n" + "\tldrb r0, [r5, 0x2]\n" + "\tlsls r0, 2\n" + "\tadds r0, r3\n" + "\tldrb r0, [r0, 0x2]\n" + "\tmuls r0, r2\n" + "\tcmp r0, 0\n" + "\tbge _080046EA\n" + "\tadds r0, 0xFF\n" + "_080046EA:\n" + "\tasrs r0, 8\n" + "\tmovs r4, 0x1F\n" + "\tands r0, r4\n" + "\tlsls r6, r0, 10\n" + "\tldrb r0, [r5, 0x1]\n" + "\tlsls r0, 2\n" + "\tadds r0, r3\n" + "\tldrb r0, [r0, 0x1]\n" + "\tmuls r0, r2\n" + "\tcmp r0, 0\n" + "\tbge _08004702\n" + "\tadds r0, 0xFF\n" + "_08004702:\n" + "\tasrs r0, 8\n" + "\tands r0, r4\n" + "\tlsls r1, r0, 5\n" + "\torrs r1, r6\n" + "\tldrb r0, [r5]\n" + "\tlsls r0, 2\n" + "\tadds r0, r3\n" + "\tldrb r0, [r0]\n" + "\tmuls r0, r2\n" + "\tcmp r0, 0\n" + "\tbge _0800471A\n" + "\tadds r0, 0xFF\n" + "_0800471A:\n" + "\tasrs r0, 8\n" + "\tands r0, r4\n" + "\torrs r1, r0\n" + "\tstrh r1, [r7]\n" + "_08004722:\n" + "\tpop {r4-r7}\n" + "\tpop {r0}\n" + "\tbx r0\n" + "\t.align 2, 0\n" + "\t.pool"); +#endif +} + +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) +{ + +} +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 296478d..61d9ec4 100644 --- a/src/file_system.c +++ b/src/file_system.c @@ -1,33 +1,9 @@ #include "global.h" +#include "file_system.h" -struct File -{ - char *name; - u8 *data; -}; - -struct OpenedFile -{ - struct File *file; - u8 *data; -}; - -struct FileArchive -{ - char magic[8]; - s32 count; - struct File *entries; -}; - -struct SiroArchive -{ - u32 magic; - u8 *data; -}; - -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 *, ...); @@ -41,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; } @@ -56,14 +32,14 @@ u32 sub_800A8F8(u32 value) return oldValue; } -struct OpenedFile *OpenFile(char *filename, struct FileArchive *arc) +struct OpenedFile *OpenFile(const char *filename, const struct FileArchive *arc) { char buffer[0x12C]; s32 left, right; s32 cursor; s32 i; - s32 magic = 0; - s32 magicFound; + u32 magic = 0; + bool32 magicFound; struct File *entries; struct File *file; @@ -71,7 +47,7 @@ struct OpenedFile *OpenFile(char *filename, struct FileArchive *arc) magicFound = 0; - if (!(u8)magic) + if (!(bool8)magic) magicFound = 1; if (!magicFound) @@ -108,18 +84,18 @@ struct OpenedFile *OpenFile(char *filename, 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]; } } @@ -138,7 +114,7 @@ u8 *GetFileDataPtr(struct OpenedFile *openedFile, int unused) return GetSiroPtr(openedFile); } -struct OpenedFile *OpenFileAndGetFileDataPtr(char *filename, struct FileArchive *arc) +struct OpenedFile *OpenFileAndGetFileDataPtr(const char *filename, const struct FileArchive *arc) { struct OpenedFile *openedFile = OpenFile(filename, arc); if (openedFile) @@ -146,7 +122,7 @@ struct OpenedFile *OpenFileAndGetFileDataPtr(char *filename, struct FileArchive return openedFile; } -struct OpenedFile *Call_OpenFileAndGetFileDataPtr(char *filename, struct FileArchive *arc) +struct OpenedFile *Call_OpenFileAndGetFileDataPtr(const char *filename, const struct FileArchive *arc) { return OpenFileAndGetFileDataPtr(filename, arc); } @@ -157,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..ce9ac19 --- /dev/null +++ b/src/m4a_2.c @@ -0,0 +1,947 @@ +#include "gba/m4a_internal.h" +#include "global.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)®_FIFO_A; + REG_DMA2SAD = (s32)soundInfo->pcmBuffer + PCM_DMA_BUF_SIZE; + REG_DMA2DAD = (s32)®_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; + } +} + +static inline int CgbPan(struct CgbChannel *chan) +{ + u32 rightVolume = chan->rightVolume; + u32 leftVolume = chan->leftVolume; + + if ((rightVolume = (u8)rightVolume) >= (leftVolume = (u8)leftVolume)) + { + if (rightVolume / 2 >= leftVolume) + { + chan->pan = 0x0F; + return 1; + } + } + else + { + if (leftVolume / 2 >= rightVolume) + { + chan->pan = 0xF0; + return 1; + } + } + + return 0; +} +#ifndef NONMATCHING +NAKED +#endif +void CgbModVol(struct CgbChannel *chan) +{ +#ifdef NONMATCHING + struct SoundInfo *soundInfo = SOUND_INFO_PTR; + + if ((soundInfo->mode & 1) || !CgbPan(chan)) + { + chan->pan = 0xFF; + chan->eg = (u32)(chan->rightVolume + chan->leftVolume) >> 4; + } + else + { + // Force chan->rightVolume and chan->leftVolume to be read from memory again, + // even though there is no reason to do so. + // The command line option "-fno-gcse" achieves the same result as this. + asm("" : : : "memory"); + + chan->eg = (u32)(chan->rightVolume + chan->leftVolume) >> 4; + if (chan->eg > 15) + chan->eg = 15; + } + + chan->sg = (chan->eg * chan->su + 15) >> 4; + chan->pan &= chan->panMask; +#else + asm_unified("\tpush {r4,lr}\n" + "\tadds r1, r0, 0\n" + "\tldrb r0, [r1, 0x2]\n" + "\tlsls r2, r0, 24\n" + "\tlsrs r4, r2, 24\n" + "\tldrb r3, [r1, 0x3]\n" + "\tlsls r0, r3, 24\n" + "\tlsrs r3, r0, 24\n" + "\tcmp r4, r3\n" + "\tbcc _080AFA94\n" + "\tlsrs r0, r2, 25\n" + "\tcmp r0, r3\n" + "\tbcc _080AFAA0\n" + "\tmovs r0, 0xF\n" + "\tstrb r0, [r1, 0x1B]\n" + "\tb _080AFAAE\n" + "_080AFA94:\n" + "\tlsrs r0, 25\n" + "\tcmp r0, r4\n" + "\tbcc _080AFAA0\n" + "\tmovs r0, 0xF0\n" + "\tstrb r0, [r1, 0x1B]\n" + "\tb _080AFAAE\n" + "_080AFAA0:\n" + "\tmovs r0, 0xFF\n" + "\tstrb r0, [r1, 0x1B]\n" + "\tldrb r2, [r1, 0x3]\n" + "\tldrb r3, [r1, 0x2]\n" + "\tadds r0, r2, r3\n" + "\tlsrs r0, 4\n" + "\tb _080AFABE\n" + "_080AFAAE:\n" + "\tldrb r2, [r1, 0x3]\n" + "\tldrb r3, [r1, 0x2]\n" + "\tadds r0, r2, r3\n" + "\tlsrs r0, 4\n" + "\tstrb r0, [r1, 0xA]\n" + "\tcmp r0, 0xF\n" + "\tbls _080AFAC0\n" + "\tmovs r0, 0xF\n" + "_080AFABE:\n" + "\tstrb r0, [r1, 0xA]\n" + "_080AFAC0:\n" + "\tldrb r2, [r1, 0x6]\n" + "\tldrb r3, [r1, 0xA]\n" + "\tadds r0, r2, 0\n" + "\tmuls r0, r3\n" + "\tadds r0, 0xF\n" + "\tasrs r0, 4\n" + "\tstrb r0, [r1, 0x19]\n" + "\tldrb r0, [r1, 0x1C]\n" + "\tldrb r2, [r1, 0x1B]\n" + "\tands r0, r2\n" + "\tstrb r0, [r1, 0x1B]\n" + "\tpop {r4}\n" + "\tpop {r0}\n" + "\tbx r0\n"); +#endif +}
\ No newline at end of file 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 new file mode 100644 index 0000000..9de996a --- /dev/null +++ b/src/text.c @@ -0,0 +1,198 @@ +#include "global.h" +#include "file_system.h" +#include "code_800558C.h" +#include "code_800B540.h" + +struct UnkTextStruct1 { + u8 fill00[4]; + u16 unk04; + u8 fill06[2]; + u16 unk08; + u8 fill04[0x3c]; + u8 unk46; +}; + +struct UnkTextStruct2 { + u8 fill00[0x0c]; + s16 unk0c; + u8 fill0e[2]; + s16 unk10; + u8 fill12[0x06]; +}; + +extern char gUnknown_3000E94[]; + +EWRAM_DATA struct UnkTextStruct1 gUnknown_2027370[4]; +EWRAM_DATA u8 *gKanji[2]; +EWRAM_DATA u16 gUnknown_2027498; +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 *gKanjiFiles[2]; +EWRAM_DATA struct UnkTextStruct2 gUnknown_202AFC0[4]; +EWRAM_DATA u32 gUnknown_202B020; +EWRAM_DATA u32 gUnknown_202B024; +EWRAM_DATA u32 gUnknown_202B028[2]; +EWRAM_DATA u32 gUnknown_202B030; +EWRAM_DATA u8 gUnknown_202B034; +EWRAM_DATA u16 gUnknown_202B038[2][32][32]; + +u32 xxx_update_some_bg_tiles(u32 a0); +void sub_8006438(const struct UnkTextStruct2 *a0, u8 a1, u8 a2, u32 *a3); +void sub_8006554(void *a0, void *a1, void *a2, void *a3, u32 a4, const struct UnkTextStruct2 *a5, u8 a6, u32 a7, u32 *a8, u32 a9); +void sub_800898C(void); +void sub_80089AC(const struct UnkTextStruct2 *a0, void *a1); +void sub_8009388(void); + +extern const struct UnkTextStruct2 gUnknown_80B857C[4]; +extern const char gUnknown_80B87B4[]; +extern const char gUnknown_80B87BC[]; +extern const struct FileArchive gUnknown_8300500; +extern const u32 gUnknown_80B87C4[8]; +extern const u32 gUnknown_80B87E4[8]; +extern const u32 gUnknown_80B8804[4]; + +void sub_8006218(void) +{ + int i; + int j; + int k; + + gUnknown_20274AC = 0; + gKanjiFiles[0] = OpenFileAndGetFileDataPtr(gUnknown_80B87B4, &gUnknown_8300500); + gKanjiFiles[1] = OpenFileAndGetFileDataPtr(gUnknown_80B87BC, &gUnknown_8300500); + gKanji[0] = gKanjiFiles[0]->data; + gKanji[1] = gKanjiFiles[1]->data; + gUnknown_202B028[0] = 11; + gUnknown_202B028[1] = 12; + for (k = 0; k < 4; k++) + { + gUnknown_2027370[k].unk04 = 0; + gUnknown_2027370[k].unk08 = 0; + gUnknown_2027370[k].unk46 = 0; + } + gUnknown_2027498 = 0; + for (i = 0; i < 20; i++) + { + gUnknown_202B038[0][i][0] = 0xf279; + gUnknown_202B038[1][i][0] = 0xf27a; + for (j = 1; j < 32; j++) + { + gUnknown_202B038[0][i][j] = 0; + gUnknown_202B038[1][i][j] = 0xf27a; + } + } + gUnknown_202B034 = 1; + gUnknown_202B030 = 0x88888888; + gUnknown_203B078 = NULL; + gUnknown_20274A5 = 0; + gUnknown_202B020 = 1; + gUnknown_202B024 = 20; + xxx_update_some_bg_tiles(0); +} + +u32 xxx_update_some_bg_tiles(u32 a0) +{ + u32 r5 = gUnknown_20274B0; + u32 *r4 = (u32 *)(VRAM + 0x4f40); + const u32 *r2; + gUnknown_20274B0 = a0; + if (a0 == 0 || a0 == 2) + { + sub_800CDA8(2); + r2 = gUnknown_80B87C4; + } + else + { + sub_800CDA8(1); + r2 = gUnknown_80B87E4; + } + gUnknown_202B030 = 0x88888888; + *r4++ = *r2++; + *r4++ = *r2++; + *r4++ = *r2++; + *r4++ = *r2++; + *r4++ = *r2++; + *r4++ = *r2++; + *r4++ = *r2++; + *r4++ = *r2++; + return r5; +} + +u32 sub_80063B0(void) +{ + return gUnknown_20274B0; +} + +u8 sub_80063BC(u8 a0) +{ + u8 retval = gUnknown_202B034; + gUnknown_202B034 = a0; + return retval; +} + +void sub_80063CC(u32 a0) +{ + gUnknown_20274AC = a0; +} + +void sub_80063D8(int a0) +{ + u32 retval; + if (a0 == 0) + { + gUnknown_20274B0; + retval = 0x88888888; + } + else + { + retval = (a0 & 0xf) | ((a0 & 0xf) << 4); + retval |= ((a0 & 0xf) << 8); + retval |= ((a0 & 0xf) << 12); + retval |= ((a0 & 0xf) << 16); + retval |= ((a0 & 0xf) << 20); + retval |= ((a0 & 0xf) << 24); + retval |= ((a0 & 0xf) << 28); + } + gUnknown_202B030 = retval; +} + +void sub_800641C(void *a0, u8 a1, u8 a2) +{ + u32 r3 = 0; + sub_8006438(a0, a1, a2, &r3); +} + +void sub_8006438(const struct UnkTextStruct2 *a0, u8 a1, u8 a2, u32 *a3) +{ + int i; + u32 r9 = 2; + + if (a0 == NULL) + a0 = gUnknown_80B857C; + if (a2) + sub_8009388(); + sub_800898C(); + for (i = 0; i < 4; i++) + { + gUnknown_202AFC0[i] = a0[i]; + if (a0[i].unk0c) + { + sub_8006554(gUnknown_2027370, (void *)VRAM, gUnknown_20274B4, gUnknown_202B038, gUnknown_80B8804[i], a0 + i, a1, r9, a3, 0); + sub_80089AC(a0 + i, a3); + r9 += a0[i].unk0c * a0[i].unk10; + } + } +#ifdef NONMATCHING + gUnknown_203B078 = gUnknown_3000E94; + gUnknown_20274A5 = 1; +#else + asm_unified("\tldr r2, =gUnknown_203B078\n" + "\tldr r0, =gUnknown_3000E94\n" + "\tldr r1, =gUnknown_20274A5\n" + "\tstr r0, [r2]\n" + "\tmovs r0, 0x1\n" + "\tstrb r0, [r1]"); +#endif +} diff --git a/sym_ewram.txt b/sym_ewram.txt index ebfde64..1d287ee 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 +gKanji = .; /* 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 +gKanjiFiles = .; /* 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 |