Add dmadata vrom symbols. Link rom in two passes: first to generate dmadata, second to apply dmadata symbols. Clean up symbols at low addresses.

This commit is contained in:
rozlette 2019-11-16 03:28:05 -06:00
parent 6905647e4f
commit 08d128bdaa
12 changed files with 9435 additions and 1054 deletions

View File

@ -40,10 +40,12 @@ BASEROM_FILES := $(wildcard baserom/*)
# Exclude dmadata, it will be generated right before packing the rom
BASEROM_FILES := $(subst baserom/dmadata ,,$(BASEROM_FILES))
BASEROM_BUILD_FILES := $(BASEROM_FILES:baserom/%=build/baserom/%)
BASEROM_PRE_DMADATA_FILES := $(BASEROM_BUILD_FILES:build/baserom/%=build/baserom_pre_dmadata/%)
BASE_DECOMP_FILES := $(wildcard decomp/*)
DECOMP_FILES := $(BASE_DECOMP_FILES:decomp/%=build/decomp/%)
COMP_FILES := $(DECOMP_FILES:decomp/%=comp/%.yaz0)
DECOMP_PRE_DMADATA_FILES := $(DECOMP_FILES:build/decomp/%=build/decomp_pre_dmadata/%)
COMP_FILES := $(DECOMP_FILES:build/decomp/%=build/comp/%.yaz0)
S_FILES := $(wildcard asm/*)
S_O_FILES = $(S_FILES:asm/%.asm=build/asm/%.o)
@ -64,8 +66,10 @@ ROM := rom.z64
# make build directories
$(shell mkdir -p build/asm)
$(shell mkdir -p build/baserom)
$(shell mkdir -p build/baserom_pre_dmadata)
$(shell mkdir -p build/comp)
$(shell mkdir -p build/decomp)
$(shell mkdir -p build/decomp_pre_dmadata)
$(shell mkdir -p build/src)
$(shell mkdir -p build/src/libultra)
$(shell mkdir -p build/src/libultra/os)
@ -82,34 +86,67 @@ check: $(ROM)
$(ROM): $(ROM_FILES)
@python3 ./tools/makerom.py ./tables/dmadata_table.py $@
boot.bin: code.elf
build/boot_pre_dmadata.bin: build/code_pre_dmadata.elf
$(MIPS_BINUTILS)objcopy --dump-section boot=$@ $<
code.bin: code.elf
build/code_pre_dmadata.bin: build/code_pre_dmadata.elf
$(MIPS_BINUTILS)objcopy --dump-section code=$@ $<
ovl_title.bin: code.elf
build/ovl_title_pre_dmadata.bin: build/code_pre_dmadata.elf
$(MIPS_BINUTILS)objcopy --dump-section ovl_title=$@ $<
code.elf: $(S_O_FILES) $(C_O_FILES) codescript.txt undef.txt
$(LD) -T codescript.txt -T undef.txt --no-check-sections --accept-unknown-input-arch -o $@
build/boot.bin: build/code.elf
$(MIPS_BINUTILS)objcopy --dump-section boot=$@ $<
build/code.bin: build/code.elf
$(MIPS_BINUTILS)objcopy --dump-section code=$@ $<
build/ovl_title.bin: build/code.elf
$(MIPS_BINUTILS)objcopy --dump-section ovl_title=$@ $<
build/code_pre_dmadata.elf: $(S_O_FILES) $(C_O_FILES) codescript.txt undef.txt
$(LD) -r -T codescript.txt -T undef.txt --no-check-sections --accept-unknown-input-arch -o $@
build/code.elf: $(S_O_FILES) $(C_O_FILES) codescript.txt undef.txt dmadata_script.txt
$(LD) -T codescript.txt -T undef.txt -T dmadata_script.txt --no-check-sections --accept-unknown-input-arch -o $@
dmadata_script.txt: $(DECOMP_PRE_DMADATA_FILES) $(BASEROM_PRE_DMADATA_FILES)
# TODO is there a better way to avoid this shuffling?
mv build/baserom build/baserom_temp
mv build/decomp build/decomp_temp
mv build/baserom_pre_dmadata build/baserom
mv build/decomp_pre_dmadata build/decomp
python3 ./tools/dmadata.py ./tables/dmadata_table.py /dev/null -u -l dmadata_script.txt
mv build/baserom build/baserom_pre_dmadata
mv build/decomp build/decomp_pre_dmadata
mv build/baserom_temp build/baserom
mv build/decomp_temp build/decomp
test.txt: build/src/test.o
$(MIPS_BINUTILS)objdump -d -z --adjust-vma=0x80080790 $< > test.txt
clean:
rm $(ROM) code.elf code.bin boot.bin -r build
rm $(ROM) -r build
build/baserom/dmadata: $(COMP_FILES) $(DECOMP_FILES) $(BASEROM_BUILD_FILES)
python3 ./tools/dmadata.py ./tables/dmadata_table.py $@
build/baserom/boot: boot.bin
build/baserom/boot: build/boot.bin
cp $< $@
build/decomp/code: code.bin
build/decomp/code: build/code.bin
cp $< $@
build/decomp/ovl_title: ovl_title.bin
build/decomp/ovl_title: build/ovl_title.bin
cp $< $@
build/baserom_pre_dmadata/boot: build/boot_pre_dmadata.bin
cp $< $@
build/decomp_pre_dmadata/code: build/code_pre_dmadata.bin
cp $< $@
build/decomp_pre_dmadata/ovl_title: build/ovl_title_pre_dmadata.bin
cp $< $@
@ -121,7 +158,10 @@ disasm:
# Recipes
build/baserom/%: baserom/%
build/baserom/%: build/baserom_pre_dmadata/%
cp $< $@
build/baserom_pre_dmadata/%: baserom/%
cp $< $@
build/asm/%.o: asm/%.asm
@ -130,7 +170,10 @@ build/asm/%.o: asm/%.asm
build/src/%.o: src/%.c include/*
$(CC) -c $(CFLAGS) $(MIPS_VERSION) $(OPTIMIZATION) -Iinclude -o $@ $<
build/decomp/%: decomp/%
build/decomp/%: build/decomp_pre_dmadata/%
cp $< $@
build/decomp_pre_dmadata/%: decomp/%
cp $< $@
build/comp/%.yaz0: build/decomp/%

View File

@ -1,3 +1,3 @@
2a0a8acb61538235bc1094d297fb6556 rom.z64
4e8afbb44e6a4b9bc00eaa318bb1650c code.bin
b0145fad4be13d63d5d7aa75062db400 boot.bin
4e8afbb44e6a4b9bc00eaa318bb1650c build/code.bin
b0145fad4be13d63d5d7aa75062db400 build/boot.bin

4605
dmadata_script.txt Normal file

File diff suppressed because it is too large Load Diff

4611
include/dmadata.h Normal file

File diff suppressed because it is too large Load Diff

View File

@ -9,525 +9,12 @@
#include <structs.h>
#include <stdlib.h>
#include <xstdio.h>
#include <dmadata.h>
//extern UNK_TYPE D_0000AB44;
//extern UNK_TYPE D_0000ABD4;
//extern UNK_TYPE D_0000ABD8;
//extern UNK_TYPE D_0000ABDC;
//extern UNK_TYPE D_0000ABE0;
//extern UNK_TYPE D_0000ABE4;
//extern UNK_TYPE D_0000ABE8;
//extern UNK_TYPE D_0000ABEC;
//extern UNK_TYPE D_0000ABF0;
//extern UNK_TYPE D_0000ABF4;
//extern UNK_TYPE D_0000ABF8;
//extern UNK_TYPE D_0000ABFC;
//extern UNK_TYPE D_0000AC00;
//extern UNK_TYPE D_0000AC04;
//extern UNK_TYPE D_0000AC08;
//extern UNK_TYPE D_0000AC0C;
//extern UNK_TYPE D_0000E364;
//extern UNK_TYPE D_0000E368;
//extern UNK_TYPE D_00011880;
//extern UNK_TYPE D_00011881;
//extern UNK_TYPE D_00011D80;
//extern UNK_TYPE D_00011D84;
//extern UNK_TYPE D_00011D88;
//extern UNK_TYPE D_00011EF8;
//extern UNK_TYPE D_00011F00;
//extern UNK_TYPE D_00011F02;
//extern UNK_TYPE D_00011F04;
//extern UNK_TYPE D_00011F06;
//extern UNK_TYPE D_00011F08;
//extern UNK_TYPE D_00011F0A;
//extern UNK_TYPE D_00011F0B;
//extern UNK_TYPE D_00011F0C;
//extern UNK_TYPE D_00011F10;
//extern UNK_TYPE D_00011F14;
//extern UNK_TYPE D_00011F16;
//extern UNK_TYPE D_00011F18;
//extern UNK_TYPE D_00011F22;
//extern UNK_TYPE D_00011F24;
//extern UNK_TYPE D_00011F26;
//extern UNK_TYPE D_00011F2E;
//extern UNK_TYPE D_00011F30;
//extern UNK_TYPE D_00011F32;
//extern UNK_TYPE D_00011F34;
//extern UNK_TYPE D_00011F54;
//extern UNK_TYPE D_00011F56;
//extern UNK_TYPE D_00011F58;
//extern UNK_TYPE D_00011F5A;
//extern UNK_TYPE D_00011F5C;
//extern UNK_TYPE D_00011F60;
//extern UNK_TYPE D_00011F64;
//extern UNK_TYPE D_00011F66;
//extern UNK_TYPE D_00011F68;
//extern UNK_TYPE D_00011F6A;
//extern UNK_TYPE D_00011F6C;
//extern UNK_TYPE D_00011F6E;
//extern UNK_TYPE D_00011F70;
//extern UNK_TYPE D_00011F72;
//extern UNK_TYPE D_00011FEC;
//extern UNK_TYPE D_00011FEE;
//extern UNK_TYPE D_00011FF0;
//extern UNK_TYPE D_00011FF2;
//extern UNK_TYPE D_00011FF4;
//extern UNK_TYPE D_00011FF6;
//extern UNK_TYPE D_00011FF8;
//extern UNK_TYPE D_00011FFA;
//extern UNK_TYPE D_00011FFC;
//extern UNK_TYPE D_00012004;
//extern UNK_TYPE D_00012006;
//extern UNK_TYPE D_00012008;
//extern UNK_TYPE D_0001200A;
//extern UNK_TYPE D_0001200C;
//extern UNK_TYPE D_0001200E;
//extern UNK_TYPE D_00012010;
//extern UNK_TYPE D_00012012;
//extern UNK_TYPE D_00012014;
//extern UNK_TYPE D_00012016;
//extern UNK_TYPE D_00012018;
//extern UNK_TYPE D_0001201A;
//extern UNK_TYPE D_0001201C;
//extern UNK_TYPE D_0001201E;
//extern UNK_TYPE D_00012020;
//extern UNK_TYPE D_00012021;
//extern UNK_TYPE D_00012022;
//extern UNK_TYPE D_00012023;
//extern UNK_TYPE D_00012024;
//extern UNK_TYPE D_00012026;
//extern UNK_TYPE D_00012028;
//extern UNK_TYPE D_0001202C;
//extern UNK_TYPE D_0001202E;
//extern UNK_TYPE D_00012034;
//extern UNK_TYPE D_00012036;
//extern UNK_TYPE D_00012038;
//extern UNK_TYPE D_0001203A;
//extern UNK_TYPE D_0001203C;
//extern UNK_TYPE D_00012040;
//extern UNK_TYPE D_00012048;
//extern UNK_TYPE D_00012068;
//extern UNK_TYPE D_0001206A;
//extern UNK_TYPE D_0001206C;
//extern UNK_TYPE D_00012070;
//extern UNK_TYPE D_00012074;
//extern UNK_TYPE D_00012078;
//extern UNK_TYPE D_00012090;
//extern UNK_TYPE D_00012092;
//extern UNK_TYPE D_00012094;
//extern UNK_TYPE D_00012098;
//extern UNK_TYPE D_0001209C;
//extern UNK_TYPE D_000120A0;
//extern UNK_TYPE D_000120A8;
//extern UNK_TYPE D_000120AA;
//extern UNK_TYPE D_000120AC;
//extern UNK_TYPE D_000120AE;
//extern UNK_TYPE D_000120B0;
//extern UNK_TYPE D_000120B1;
//extern UNK_TYPE D_000120BE;
//extern UNK_TYPE D_000120C0;
//extern UNK_TYPE D_000120C2;
//extern UNK_TYPE D_000120C4;
//extern UNK_TYPE D_000120C8;
//extern UNK_TYPE D_000120CA;
//extern UNK_TYPE D_000120CC;
//extern UNK_TYPE D_000120CE;
//extern UNK_TYPE D_000120D0;
//extern UNK_TYPE D_000120D2;
//extern UNK_TYPE D_000120D4;
//extern UNK_TYPE D_000120D6;
//extern UNK_TYPE D_000120D8;
//extern UNK_TYPE D_000167F8;
//extern UNK_TYPE D_0001680C;
//extern UNK_TYPE D_00016818;
//extern UNK_TYPE D_0001681C;
//extern UNK_TYPE D_0001682A;
//extern UNK_TYPE D_000168FC;
//extern UNK_TYPE D_000168FE;
//extern UNK_TYPE D_0001691E;
//extern UNK_TYPE D_00016929;
//extern UNK_TYPE D_0001692B;
//extern UNK_TYPE D_0001692C;
//extern UNK_TYPE D_0001692E;
//extern UNK_TYPE D_00016932;
//extern UNK_TYPE D_00016934;
//extern UNK_TYPE D_00016938;
//extern UNK_TYPE D_0001694C;
//extern UNK_TYPE D_0001694E;
//extern UNK_TYPE D_00016950;
//extern UNK_TYPE D_00016974;
//extern UNK_TYPE D_00016980;
//extern UNK_TYPE D_00016984;
//extern UNK_TYPE D_0001698C;
//extern UNK_TYPE D_00016994;
//extern UNK_TYPE D_00016998;
//extern UNK_TYPE D_000169A0;
//extern UNK_TYPE D_000169A4;
//extern UNK_TYPE D_000169A8;
//extern UNK_TYPE D_000169AC;
//extern UNK_TYPE D_000169AE;
//extern UNK_TYPE D_000169B8;
//extern UNK_TYPE D_000169B9;
//extern UNK_TYPE D_000169C4;
//extern UNK_TYPE D_000169DC;
//extern UNK_TYPE D_000169DE;
//extern UNK_TYPE D_00016B58;
//extern UNK_TYPE D_00016B5C;
//extern UNK_TYPE D_00016BFA;
//extern UNK_TYPE D_00016BFC;
//extern UNK_TYPE D_00016C04;
//extern UNK_TYPE D_00016C06;
//extern UNK_TYPE D_00016C0A;
//extern UNK_TYPE D_00016C0C;
//extern UNK_TYPE D_00016C0E;
//extern UNK_TYPE D_00016C36;
//extern UNK_TYPE D_00016C38;
//extern UNK_TYPE D_00016C40;
//extern UNK_TYPE D_00016C42;
//extern UNK_TYPE D_00016C44;
//extern UNK_TYPE D_00016C46;
//extern UNK_TYPE D_00016C48;
//extern UNK_TYPE D_00016C4E;
//extern UNK_TYPE D_00016C50;
//extern UNK_TYPE D_00016C5C;
//extern UNK_TYPE D_00016C66;
//extern UNK_TYPE D_00016C68;
//extern UNK_TYPE D_00016C6E;
//extern UNK_TYPE D_00016CEC;
//extern UNK_TYPE D_00016CFA;
//extern UNK_TYPE D_00016CFB;
//extern UNK_TYPE D_00016CFC;
//extern UNK_TYPE D_00016CFD;
//extern UNK_TYPE D_00016D02;
//extern UNK_TYPE D_00016D03;
//extern UNK_TYPE D_00016D04;
//extern UNK_TYPE D_00016F1C;
//extern UNK_TYPE D_00016F1E;
//extern UNK_TYPE D_00016F20;
//extern UNK_TYPE D_00016F30;
//extern UNK_TYPE D_00016F34;
//extern UNK_TYPE D_00016F54;
//extern UNK_TYPE D_00016F70;
//extern UNK_TYPE D_00016F86;
//extern UNK_TYPE D_00016F8E;
//extern UNK_TYPE D_00016FB4;
//extern UNK_TYPE D_00016FE9;
//extern UNK_TYPE D_00017000;
//extern UNK_TYPE D_00017006;
//extern UNK_TYPE D_00017008;
//extern UNK_TYPE D_0001700C;
//extern UNK_TYPE D_00017010;
//extern UNK_TYPE D_00017014;
//extern UNK_TYPE D_00017019;
//extern UNK_TYPE D_0001701A;
//extern UNK_TYPE D_0001701B;
//extern UNK_TYPE D_0001701C;
//extern UNK_TYPE D_0001701D;
//extern UNK_TYPE D_0001701E;
//extern UNK_TYPE D_00017022;
//extern UNK_TYPE D_00017023;
//extern UNK_TYPE D_00017024;
//extern UNK_TYPE D_00017025;
//extern UNK_TYPE D_00017026;
//extern UNK_TYPE D_00017028;
//extern UNK_TYPE D_000170A8;
//extern UNK_TYPE D_000170AA;
//extern UNK_TYPE D_000170B0;
//extern UNK_TYPE D_000170B2;
//extern UNK_TYPE D_000170B4;
//extern UNK_TYPE D_000170B8;
//extern UNK_TYPE D_000170BC;
//extern UNK_TYPE D_000170C0;
//extern UNK_TYPE D_000170C4;
//extern UNK_TYPE D_000170C5;
//extern UNK_TYPE D_000170C6;
//extern UNK_TYPE D_000170C7;
//extern UNK_TYPE D_000170E0;
//extern UNK_TYPE D_000170E4;
//extern UNK_TYPE D_000170E5;
//extern UNK_TYPE D_000170E6;
//extern UNK_TYPE D_000170E7;
//extern UNK_TYPE D_000170E8;
//extern UNK_TYPE D_000170E9;
//extern UNK_TYPE D_000170ED;
//extern UNK_TYPE D_000170EE;
//extern UNK_TYPE D_000170EF;
//extern UNK_TYPE D_000170F0;
//extern UNK_TYPE D_000170F6;
//extern UNK_TYPE D_000170F7;
//extern UNK_TYPE D_000170F8;
//extern UNK_TYPE D_000170F9;
//extern UNK_TYPE D_000170FA;
//extern UNK_TYPE D_00017D88;
//extern UNK_TYPE D_00017D90;
//extern UNK_TYPE D_00017D91;
//extern UNK_TYPE D_00017D93;
//extern UNK_TYPE D_00017D98;
//extern UNK_TYPE D_00017DDC;
//extern UNK_TYPE D_000186E0;
//extern UNK_TYPE D_000186E2;
//extern UNK_TYPE D_000186E3;
//extern UNK_TYPE D_000186E4;
//extern UNK_TYPE D_000186E5;
//extern UNK_TYPE D_000186E6;
//extern UNK_TYPE D_000186E8;
//extern UNK_TYPE D_000186EC;
//extern UNK_TYPE D_000186F4;
//extern UNK_TYPE D_00018700;
//extern UNK_TYPE D_00018711;
//extern UNK_TYPE D_00018754;
//extern UNK_TYPE D_00018758;
//extern UNK_TYPE D_0001875A;
//extern UNK_TYPE D_0001875C;
//extern UNK_TYPE D_00018760;
//extern UNK_TYPE D_00018764;
//extern UNK_TYPE D_00018768;
//extern UNK_TYPE D_0001876C;
//extern UNK_TYPE D_00018770;
//extern UNK_TYPE D_00018774;
//extern UNK_TYPE D_00018778;
//extern UNK_TYPE D_0001877C;
//extern UNK_TYPE D_00018780;
//extern UNK_TYPE D_00018784;
//extern UNK_TYPE D_00018788;
//extern UNK_TYPE D_0001878C;
//extern UNK_TYPE D_00018790;
//extern UNK_TYPE D_00018794;
//extern UNK_TYPE D_00018798;
//extern UNK_TYPE D_0001879C;
//extern UNK_TYPE D_0001879E;
//extern UNK_TYPE D_000187A0;
//extern UNK_TYPE D_000187A2;
//extern UNK_TYPE D_000187A4;
//extern UNK_TYPE D_000187A6;
//extern UNK_TYPE D_000187A8;
//extern UNK_TYPE D_000187AA;
//extern UNK_TYPE D_000187AC;
//extern UNK_TYPE D_000187F0;
//extern UNK_TYPE D_000187F4;
//extern UNK_TYPE D_000187F8;
//extern UNK_TYPE D_0001883C;
//extern UNK_TYPE D_00018840;
//extern UNK_TYPE D_00018844;
//extern UNK_TYPE D_00018845;
//extern UNK_TYPE D_00018846;
//extern UNK_TYPE D_00018848;
//extern UNK_TYPE D_0001884C;
//extern UNK_TYPE D_00018850;
//extern UNK_TYPE D_00018854;
//extern UNK_TYPE D_00018858;
//extern UNK_TYPE D_0001885C;
//extern UNK_TYPE D_00018860;
//extern UNK_TYPE D_00018864;
//extern UNK_TYPE D_00018868;
//extern UNK_TYPE D_0001886C;
//extern UNK_TYPE D_00018870;
//extern UNK_TYPE D_00018874;
//extern UNK_TYPE D_00018875;
//extern UNK_TYPE D_00018876;
//extern UNK_TYPE D_00018878;
//extern UNK_TYPE D_0001887A;
//extern UNK_TYPE D_0001887C;
//extern UNK_TYPE D_0001887D;
//extern UNK_TYPE D_0001887E;
//extern UNK_TYPE D_0001887F;
//extern UNK_TYPE D_00018880;
//extern UNK_TYPE D_00018B20;
//extern UNK_TYPE D_00018B48;
//extern UNK_TYPE D_00018B49;
//extern UNK_TYPE D_00018B4A;
//extern UNK_TYPE D_00018B60;
//extern UNK_TYPE D_00018B64;
//extern UNK_TYPE D_00018BF0;
//extern UNK_TYPE D_00018BF2;
//extern UNK_TYPE D_00018E54;
//extern UNK_TYPE D_00018E58;
//extern UNK_TYPE D_00018E5C;
//extern UNK_TYPE D_00018E60;
//extern UNK_TYPE D_00018E64;
//extern UNK_TYPE D_00018E68;
extern u32 dmadataRomStart; // D_0001A500
//extern UNK_TYPE D_00020308;
extern u32 dmadataRomEnd; // D_00020700
//extern UNK_TYPE D_000242F3;
//extern UNK_TYPE D_00024413;
//extern UNK_TYPE D_00024414;
//extern UNK_TYPE D_0002446A;
//extern UNK_TYPE D_0002446C;
//extern UNK_TYPE D_00024480;
//extern UNK_TYPE D_00024482;
//extern UNK_TYPE D_00024484;
//extern UNK_TYPE D_00024486;
//extern UNK_TYPE D_00024488;
//extern UNK_TYPE D_0002448A;
//extern UNK_TYPE D_0002448C;
//extern UNK_TYPE D_0002448E;
//extern UNK_TYPE D_00024498;
//extern UNK_TYPE D_000244A6;
//extern UNK_TYPE D_000244A8;
//extern UNK_TYPE D_000244AA;
//extern UNK_TYPE D_000244AC;
//extern UNK_TYPE D_000244AE;
//extern UNK_TYPE D_000244BA;
//extern UNK_TYPE D_000244CE;
//extern UNK_TYPE D_000244E2;
//extern UNK_TYPE D_000244E4;
//extern UNK_TYPE D_000244E6;
//extern UNK_TYPE D_000244E8;
//extern UNK_TYPE D_000244F2;
//extern UNK_TYPE D_000244F4;
//extern UNK_TYPE D_000244FA;
//extern UNK_TYPE D_000244FC;
//extern UNK_TYPE D_000244FE;
//extern UNK_TYPE D_00024500;
//extern UNK_TYPE D_00024502;
//extern UNK_TYPE D_00024504;
//extern UNK_TYPE D_00024506;
//extern UNK_TYPE D_00024508;
//extern UNK_TYPE D_0002450A;
//extern UNK_TYPE D_0002450C;
//extern UNK_TYPE D_00024510;
//extern UNK_TYPE D_00024512;
//extern UNK_TYPE D_00024514;
//extern UNK_TYPE D_00024516;
//extern UNK_TYPE D_00024518;
//extern UNK_TYPE D_0002451A;
//extern UNK_TYPE D_0002451C;
//extern UNK_TYPE D_0002451E;
//extern UNK_TYPE D_00024528;
//extern UNK_TYPE D_00046AF0;
//extern UNK_TYPE D_00080028;
//extern UNK_TYPE D_00097F70;
//extern UNK_TYPE D_000FFFFC;
//extern UNK_TYPE D_001ABAB0;
//extern UNK_TYPE D_001E3BB0;
//extern UNK_TYPE D_0065D000;
//extern UNK_TYPE D_00957000;
//extern UNK_TYPE D_009ECEC0;
//extern UNK_TYPE D_009ED000;
//extern UNK_TYPE D_009F4700;
//extern UNK_TYPE D_009F5000;
//extern UNK_TYPE D_00A09AF0;
//extern UNK_TYPE D_00A0A000;
//extern UNK_TYPE D_00A0EB80;
//extern UNK_TYPE D_00A0F000;
//extern UNK_TYPE D_00A12300;
//extern UNK_TYPE D_00A13000;
//extern UNK_TYPE D_00A1BA00;
//extern UNK_TYPE D_00A1C000;
//extern UNK_TYPE D_00A1C2E0;
//extern UNK_TYPE D_00A1D000;
//extern UNK_TYPE D_00A1E310;
//extern UNK_TYPE D_00A27660;
//extern UNK_TYPE D_00A352F0;
//extern UNK_TYPE D_00A36C10;
//extern UNK_TYPE D_00A7BEE0;
//extern UNK_TYPE D_00A807A0;
//extern UNK_TYPE D_00A8C000;
//extern UNK_TYPE D_00A92A10;
//extern UNK_TYPE D_00A990E0;
//extern UNK_TYPE D_00A9A000;
//extern UNK_TYPE D_00ABFC00;
//extern UNK_TYPE D_00AC0000;
//extern UNK_TYPE D_00AC0480;
extern UNK_TYPE D_00AC4000; // D_00AC4000
//extern UNK_TYPE D_00ACA000;
extern UNK_TYPE D_00ACC000; // D_00ACC000
//extern UNK_TYPE D_00AD1000;
//extern UNK_TYPE D_00B3B000;
extern UNK_TYPE D_00B3C000; // D_00B3C000
extern UNK_TYPE D_00C7A4E0; // D_00C7A4E0
//extern UNK_TYPE D_01000000;
//extern UNK_TYPE D_01000680;
//extern UNK_TYPE D_01001280;
//extern UNK_TYPE D_01001800;
//extern UNK_TYPE D_01002720;
//extern UNK_TYPE D_01002800;
//extern UNK_TYPE D_01007980;
//extern UNK_TYPE D_010220B0;
//extern UNK_TYPE D_010277B0;
//extern UNK_TYPE D_0102A030;
//extern UNK_TYPE D_0102A6B0;
//extern UNK_TYPE D_0102A7B0;
//extern UNK_TYPE D_0102AAB0;
//extern UNK_TYPE D_0102B170;
//extern UNK_TYPE D_0102B3B0;
//extern UNK_TYPE D_0102B8F0;
//extern UNK_TYPE D_0102FCB0;
//extern UNK_TYPE D_010308F0;
//extern UNK_TYPE D_010310F0;
//extern UNK_TYPE D_010311F0;
//extern UNK_TYPE D_01031408;
//extern UNK_TYPE D_01031618;
//extern UNK_TYPE D_01E85000;
//extern UNK_TYPE D_01E87DC0;
//extern UNK_TYPE D_01E88000;
//extern UNK_TYPE D_01EB9730;
//extern UNK_TYPE D_01EBA000;
//extern UNK_TYPE D_01EBC000;
//extern UNK_TYPE D_01EBD000;
//extern UNK_TYPE D_01EC8B20;
//extern UNK_TYPE D_01EC9000;
//extern UNK_TYPE D_01ECA000;
//extern UNK_TYPE D_01ED3B00;
//extern UNK_TYPE D_01EF2000;
//extern UNK_TYPE D_01EFE000;
//extern UNK_TYPE D_01F0A000;
//extern UNK_TYPE D_01F0A200;
extern UNK_TYPE D_060005D0; // D_060005D0
extern UNK_TYPE D_06001100; // D_06001100
extern UNK_TYPE D_06001228; // D_06001228
extern UNK_TYPE D_06002D30; // D_06002D30
//extern UNK_TYPE D_11000A70;
//extern UNK_TYPE D_11111111;
//extern UNK_TYPE D_3CFFED40;
//extern UNK_TYPE D_3E7FDDD0;
//extern UNK_TYPE D_3EBF9330;
//extern UNK_TYPE D_3EFFD880;
//extern UNK_TYPE D_3EFFF764;
//extern UNK_TYPE D_3F7FCDC0;
//extern UNK_TYPE D_3F7FCE80;
//extern UNK_TYPE D_3F7FCEA0;
//extern UNK_TYPE D_3F7FE3F0;
//extern UNK_TYPE D_3F7FEBB4;
//extern UNK_TYPE D_3F800CEC;
//extern UNK_TYPE D_3F806764;
//extern UNK_TYPE D_3F80679C;
//extern UNK_TYPE D_3F8071B0;
//extern UNK_TYPE D_3F8071B8;
//extern UNK_TYPE D_3F8071C0;
//extern UNK_TYPE D_3F9FE9B4;
//extern UNK_TYPE D_403F8BAC;
//extern UNK_TYPE D_407F83D0;
//extern UNK_TYPE D_411FDAA0;
//extern UNK_TYPE D_411FDBFC;
//extern UNK_TYPE D_412022F0;
//extern UNK_TYPE D_41204208;
//extern UNK_TYPE D_412060B8;
//extern UNK_TYPE D_416FD0CC;
//extern UNK_TYPE D_419FB50C;
//extern UNK_TYPE D_41AFAD08;
//extern UNK_TYPE D_421FFBA8;
//extern UNK_TYPE D_4248099C;
//extern UNK_TYPE D_428C2BD1;
//extern UNK_TYPE D_429FC358;
//extern UNK_TYPE D_429FFF58;
//extern UNK_TYPE D_42A00B10;
//extern UNK_TYPE D_42A05D1C;
//extern UNK_TYPE D_42B42BC9;
//extern UNK_TYPE D_42EFD968;
//extern UNK_TYPE D_43162BC9;
//extern UNK_TYPE D_4347E450;
//extern UNK_TYPE D_4390DC8C;
//extern UNK_TYPE D_4390DC90;
//extern UNK_TYPE D_439B22F4;
//extern UNK_TYPE D_439B420C;
//extern UNK_TYPE D_439B60BC;
//extern UNK_TYPE D_43C7ED84;
//extern UNK_TYPE D_43F9FB94;
//extern UNK_TYPE D_43F9FBB4;
//extern UNK_TYPE D_46FFCED0;
//extern UNK_TYPE D_47803510;
//extern UNK_TYPE D_80000000;
extern UNK_TYPE osTvType; // D_80000300
extern UNK_TYPE osRomType; // D_80000304

View File

@ -37,8 +37,8 @@ UNK_RET func_80080250(void) {
osCreateMesgQueue(&sp30, &sp2C, 1);
v1 = &D_00B3C000;
t7 = &D_00C7A4E0;
v1 = &code_vrom_start;
t7 = &code_vrom_end;
v0 = &D_80096B50;
sp28 = *v0;
*v0 = 0;

View File

@ -223,7 +223,7 @@ void Dmamgr_Start() {
DmadataEntry* v0;
u32 v1;
// TODO register load ordering is wrong
Dmamgr_DoDmaTransfer(&dmadataRomStart, dmadata, (u8*)&dmadataRomEnd - (u8*)&dmadataRomStart);
Dmamgr_DoDmaTransfer(&dmadata_vrom_start, dmadata, (u8*)&dmadata_vrom_end - (u8*)&dmadata_vrom_start);
for (v0 = dmadata, v1 = 0; v0->vromEnd != 0; v0++, v1++);

View File

@ -4,3 +4,4 @@ boot_0x800968B0
z_std_dma
z_effect_soft_sprite
z_lib
z_actor

View File

@ -1,15 +1,77 @@
# Follows the format of Address:(Name, Type, Is Array)
{
0x0001A500:("dmadataRomStart","u32",False), # Start of dmadata
0x00020700:("dmadataRomEnd","u32",False), # Byte immediately after end of dmadata
0x00AC4000:("","UNK_TYPE",False), # this seems low
0x00ACC000:("","UNK_TYPE",False), # this seems low
0x00B3C000:("","UNK_TYPE",False), # this seems low
0x00C7A4E0:("","UNK_TYPE",False), # this seems low
0x060005D0:("","UNK_TYPE",False), # this seems low
0x06001100:("","UNK_TYPE",False), # this seems low
0x06001228:("","UNK_TYPE",False), # this seems low
0x06002D30:("","UNK_TYPE",False), # this seems low
# NOTE These symbols could be one of two symbols: the start of a file or the end of a file before it.
# The choice for disassembly is arbitrary but in code it should be the one that makes sense.
0x0001A500:("dmadata_vrom_start","u32",False), # Start of dmadata
0x00020700:("dmadata_vrom_end","u32",False), # Byte immediately after end of dmadata
0x00046AF0:("Audioseq_vrom_start","UNK_TYPE",False),
0x00097F70:("Audioseq_vrom_end","UNK_TYPE",False),
0x0065D000:("link_animetion_vrom_start","UNK_TYPE",False),
0x00957000:("","UNK_TYPE",False), # ovl_kaleido_scope uses this. It is the start of vrom for a null entry in dmadata???
0x009ECEC0:("","UNK_TYPE",False), # ovl_kaleido_scope uses this. It is the end of vrom for a null entry in dmadata???
0x009ED000:("","UNK_TYPE",False), # ovl_kaleido_scope uses this. It is the start of vrom for a null entry in dmadata???
0x009F4700:("","UNK_TYPE",False), # ovl_kaleido_scope uses this. It is the end of vrom for a null entry in dmadata???
0x009F5000:("icon_item_field_static_vrom_start","UNK_TYPE",False),
0x00A09AF0:("icon_item_field_static_vrom_end","UNK_TYPE",False),
0x00A0A000:("icon_item_dungeon_static_vrom_start","UNK_TYPE",False),
0x00A0EB80:("icon_item_dungeon_static_vrom_end","UNK_TYPE",False),
0x00A0F000:("icon_item_gameover_static_vrom_start","UNK_TYPE",False),
0x00A12300:("icon_item_gameover_static_vrom_end","UNK_TYPE",False),
0x00A13000:("_013_0x00963540_vrom_start","UNK_TYPE",False),
0x00A1BA00:("_013_0x00963540_vrom_end","UNK_TYPE",False),
0x00A1C000:("_014_0x00967260_vrom_start","UNK_TYPE",False),
0x00A1C2E0:("_014_0x00967260_vrom_end","UNK_TYPE",False),
0x00A1D000:("map_i_static_vrom_start","UNK_TYPE",False),
0x00A1E310:("map_grand_static_vrom_start","UNK_TYPE",False),
0x00A27660:("item_name_static_vrom_start","UNK_TYPE",False),
0x00A352F0:("map_name_static_vrom_start","UNK_TYPE",False),
0x00A36C10:("_019_0x00980f60_vrom_start","UNK_TYPE",False),
0x00A7BEE0:("_020_0x009c6230_vrom_start","UNK_TYPE",False),
0x00A807A0:("_020_0x009c6230_vrom_end","UNK_TYPE",False),
0x00A8C000:("_022_0x009caaf0_vrom_start","UNK_TYPE",False),
0x00A92A10:("_023_0x009d1500_vrom_start","UNK_TYPE",False),
0x00A990E0:("_023_0x009d1500_vrom_end","UNK_TYPE",False),
0x00A9A000:("_024_0x009d3760_vrom_start","UNK_TYPE",False),
0x00ABFC00:("_024_0x009d3760_vrom_end","UNK_TYPE",False),
0x00AC0000:("do_action_static_vrom_start","UNK_TYPE",False),
0x00AC4000:("message_static_vrom_start","UNK_TYPE",False),
0x00ACA000:("message_texture_static_vrom_start","UNK_TYPE",False),
0x00ACC000:("nes_font_static_vrom_start","UNK_TYPE",False),
0x00AD1000:("en_message_data_static_vrom_start","UNK_TYPE",False),
0x00B3B000:("staff_message_data_static_vrom_start","UNK_TYPE",False),
0x00B3C000:("code_vrom_start","UNK_TYPE",False),
0x00C7A4E0:("code_vrom_end","UNK_TYPE",False),
0x01E85000:("nintendo_rogo_static_vrom_start","UNK_TYPE",False),
0x01E87DC0:("nintendo_rogo_static_vrom_end","UNK_TYPE",False),
0x01E88000:("title_static_vrom_start","UNK_TYPE",False),
0x01EB9730:("title_static_vrom_end","UNK_TYPE",False),
0x01EBA000:("_1124_0x0163f490_vrom_start","UNK_TYPE",False),
0x01EBB280:("_1124_0x0163f490_vrom_end","UNK_TYPE",False),
0x01EBC000:("_1125_0x0163fc10_vrom_start","UNK_TYPE",False),
0x01EBC680:("_1125_0x0163fc10_vrom_end","UNK_TYPE",False),
0x01EBD000:("_1126_0x0163ffc0_vrom_start","UNK_TYPE",False),
0x01EC8B20:("_1126_0x0163ffc0_vrom_end","UNK_TYPE",False),
0x01EC9000:("_1127_0x01643d50_vrom_start","UNK_TYPE",False),
0x01EC9F30:("_1127_0x01643d50_vrom_end","UNK_TYPE",False),
0x01ECA000:("_1128_0x01644c80_vrom_start","UNK_TYPE",False),
0x01ED3B00:("_1128_0x01644c80_vrom_end","UNK_TYPE",False),
0x01ED4000:("_1129_0x01646b60_vrom_start","UNK_TYPE",False),
0x01EDDB00:("_1129_0x01646b60_vrom_end","UNK_TYPE",False),
0x01EDE000:("_1130_0x01649020_vrom_start","UNK_TYPE",False),
0x01EE7B00:("_1130_0x01649020_vrom_end","UNK_TYPE",False),
0x01EE8000:("_1131_0x0164ad90_vrom_start","UNK_TYPE",False),
0x01EF1B00:("_1131_0x0164ad90_vrom_end","UNK_TYPE",False),
0x01EF2000:("vr_fine_static_vrom_start","UNK_TYPE",False),
0x01EFE000:("vr_cloud_static_vrom_start","UNK_TYPE",False),
0x01F0A000:("vr_pal_static_vrom_start","UNK_TYPE",False),
0x01F0A200:("vr_pal_static_vrom_end","UNK_TYPE",False),
# TODO These are object addresses.
0x060005D0:("","UNK_TYPE",False),
0x06001100:("","UNK_TYPE",False),
0x06001228:("","UNK_TYPE",False),
0x06002D30:("","UNK_TYPE",False),
0x80000300:("osTvType","UNK_TYPE",False),
0x80000304:("osRomType","UNK_TYPE",False),
0x80000308:("osRomBase","UNK_TYPE",False),

View File

@ -468,7 +468,7 @@ class Disassembler:
# TODO workaround to avoid classifying loading constants as loading pointers
# This unfortunately causes it to not detect object addresses
if addr >= 0x2000000 and addr < 0x80000000:
if addr < 0x80000000:
return
if self.is_in_data_or_undef(addr):
@ -481,6 +481,12 @@ class Disassembler:
elif is_load(next_inst) and (get_rt(cur_inst) == get_rs(next_inst)): # lui + load (load pointer)
addr = (get_imm(cur_inst) << 16) + get_signed_imm(next_inst)
# TODO workaround to avoid classifying loading constants as loading pointers
# This unfortunately causes it to not detect object addresses
if addr < 0x80000000:
return
if self.is_in_data_or_undef(addr):
self.add_variable(addr)
else:
@ -687,9 +693,12 @@ class Disassembler:
with open(path + "/variables.h", 'w', newline='\n') as f:
f.write("#ifndef _VARIABLES_H_\n#define _VARIABLES_H_\n\n")
f.write('#include <PR/ultratypes.h>\n#include <osint.h>\n#include <viint.h>\n#include <guint.h>\n#include <unk.h>\n#include <structs.h>\n#include <stdlib.h>\n#include <xstdio.h>\n\n')
f.write('#include <PR/ultratypes.h>\n#include <osint.h>\n#include <viint.h>\n#include <guint.h>\n#include <unk.h>\n#include <structs.h>\n#include <stdlib.h>\n#include <xstdio.h>\n#include <dmadata.h>\n\n')
for addr in sorted(self.vars):
if addr < 0x02000000:
continue # Don't print out symbols of dmadata files' vrom addresses. These will be defined in another file.
if addr in known_vars:
f.write("extern %s %s%s; // D_%08X\n" % (known_vars[addr][1], self.make_load(addr), "[]" if known_vars[addr][2] else "", addr))
else:

View File

@ -7,12 +7,15 @@ if __name__ == "__main__":
parser = argparse.ArgumentParser()
parser.add_argument('files', help='file list')
parser.add_argument('out', help='output file')
parser.add_argument('-l', '--linkscript', help='output linker script for file VROM addresses', metavar='filename')
parser.add_argument('-u', '--uncompressed', help='build dmadata from only uncompressed files', action='store_true', default=False)
args = parser.parse_args()
with open(args.out, 'wb') as dmadata, open(args.files, 'r') as files:
curr_vrom = 0
curr_phys = 0
dmadata_table = ast.literal_eval(files.read())
linker_info = list()
for base_file, comp_file, alignment, size_if_missing in dmadata_table:
try:
uncompressed = comp_file == ''
@ -30,7 +33,7 @@ if __name__ == "__main__":
phys_size = vrom_size
else:
vrom_size = os.path.getsize(base_file)
if uncompressed:
if uncompressed or args.uncompressed:
phys_size = vrom_size
else:
phys_size = os.path.getsize(comp_file)
@ -59,6 +62,17 @@ if __name__ == "__main__":
dmadata.write(vrom_end.to_bytes(4, 'big'))
dmadata.write(phys_start.to_bytes(4, 'big'))
dmadata.write(phys_end.to_bytes(4, 'big'))
if base_file != '':
linker_info.append((os.path.basename(base_file), vrom_start, vrom_end))
except:
print('Error when processing entry ' + base_file)
sys.exit(1)
if args.linkscript:
with open(args.linkscript, 'w') as file:
for name, vrom_start, vrom_end in linker_info:
formatted_name = '_' + name if name[0].isdigit() else name
file.write('{}_vrom_start = 0x{:08X};\n'.format(formatted_name, vrom_start))
file.write('{}_vrom_end = 0x{:08X};\n'.format(formatted_name, vrom_end))
file.write('\n')

569
undef.txt
View File

@ -1,521 +1,70 @@
D_0000AB44 = 0x0000AB44;
D_0000ABD4 = 0x0000ABD4;
D_0000ABD8 = 0x0000ABD8;
D_0000ABDC = 0x0000ABDC;
D_0000ABE0 = 0x0000ABE0;
D_0000ABE4 = 0x0000ABE4;
D_0000ABE8 = 0x0000ABE8;
D_0000ABEC = 0x0000ABEC;
D_0000ABF0 = 0x0000ABF0;
D_0000ABF4 = 0x0000ABF4;
D_0000ABF8 = 0x0000ABF8;
D_0000ABFC = 0x0000ABFC;
D_0000AC00 = 0x0000AC00;
D_0000AC04 = 0x0000AC04;
D_0000AC08 = 0x0000AC08;
D_0000AC0C = 0x0000AC0C;
D_0000E364 = 0x0000E364;
D_0000E368 = 0x0000E368;
D_00011880 = 0x00011880;
D_00011881 = 0x00011881;
D_00011D80 = 0x00011D80;
D_00011D84 = 0x00011D84;
D_00011D88 = 0x00011D88;
D_00011EF8 = 0x00011EF8;
D_00011F00 = 0x00011F00;
D_00011F02 = 0x00011F02;
D_00011F04 = 0x00011F04;
D_00011F06 = 0x00011F06;
D_00011F08 = 0x00011F08;
D_00011F0A = 0x00011F0A;
D_00011F0B = 0x00011F0B;
D_00011F0C = 0x00011F0C;
D_00011F10 = 0x00011F10;
D_00011F14 = 0x00011F14;
D_00011F16 = 0x00011F16;
D_00011F18 = 0x00011F18;
D_00011F22 = 0x00011F22;
D_00011F24 = 0x00011F24;
D_00011F26 = 0x00011F26;
D_00011F2E = 0x00011F2E;
D_00011F30 = 0x00011F30;
D_00011F32 = 0x00011F32;
D_00011F34 = 0x00011F34;
D_00011F54 = 0x00011F54;
D_00011F56 = 0x00011F56;
D_00011F58 = 0x00011F58;
D_00011F5A = 0x00011F5A;
D_00011F5C = 0x00011F5C;
D_00011F60 = 0x00011F60;
D_00011F64 = 0x00011F64;
D_00011F66 = 0x00011F66;
D_00011F68 = 0x00011F68;
D_00011F6A = 0x00011F6A;
D_00011F6C = 0x00011F6C;
D_00011F6E = 0x00011F6E;
D_00011F70 = 0x00011F70;
D_00011F72 = 0x00011F72;
D_00011FEC = 0x00011FEC;
D_00011FEE = 0x00011FEE;
D_00011FF0 = 0x00011FF0;
D_00011FF2 = 0x00011FF2;
D_00011FF4 = 0x00011FF4;
D_00011FF6 = 0x00011FF6;
D_00011FF8 = 0x00011FF8;
D_00011FFA = 0x00011FFA;
D_00011FFC = 0x00011FFC;
D_00012004 = 0x00012004;
D_00012006 = 0x00012006;
D_00012008 = 0x00012008;
D_0001200A = 0x0001200A;
D_0001200C = 0x0001200C;
D_0001200E = 0x0001200E;
D_00012010 = 0x00012010;
D_00012012 = 0x00012012;
D_00012014 = 0x00012014;
D_00012016 = 0x00012016;
D_00012018 = 0x00012018;
D_0001201A = 0x0001201A;
D_0001201C = 0x0001201C;
D_0001201E = 0x0001201E;
D_00012020 = 0x00012020;
D_00012021 = 0x00012021;
D_00012022 = 0x00012022;
D_00012023 = 0x00012023;
D_00012024 = 0x00012024;
D_00012026 = 0x00012026;
D_00012028 = 0x00012028;
D_0001202C = 0x0001202C;
D_0001202E = 0x0001202E;
D_00012034 = 0x00012034;
D_00012036 = 0x00012036;
D_00012038 = 0x00012038;
D_0001203A = 0x0001203A;
D_0001203C = 0x0001203C;
D_00012040 = 0x00012040;
D_00012048 = 0x00012048;
D_00012068 = 0x00012068;
D_0001206A = 0x0001206A;
D_0001206C = 0x0001206C;
D_00012070 = 0x00012070;
D_00012074 = 0x00012074;
D_00012078 = 0x00012078;
D_00012090 = 0x00012090;
D_00012092 = 0x00012092;
D_00012094 = 0x00012094;
D_00012098 = 0x00012098;
D_0001209C = 0x0001209C;
D_000120A0 = 0x000120A0;
D_000120A8 = 0x000120A8;
D_000120AA = 0x000120AA;
D_000120AC = 0x000120AC;
D_000120AE = 0x000120AE;
D_000120B0 = 0x000120B0;
D_000120B1 = 0x000120B1;
D_000120BE = 0x000120BE;
D_000120C0 = 0x000120C0;
D_000120C2 = 0x000120C2;
D_000120C4 = 0x000120C4;
D_000120C8 = 0x000120C8;
D_000120CA = 0x000120CA;
D_000120CC = 0x000120CC;
D_000120CE = 0x000120CE;
D_000120D0 = 0x000120D0;
D_000120D2 = 0x000120D2;
D_000120D4 = 0x000120D4;
D_000120D6 = 0x000120D6;
D_000120D8 = 0x000120D8;
D_000167F8 = 0x000167F8;
D_0001680C = 0x0001680C;
D_00016818 = 0x00016818;
D_0001681C = 0x0001681C;
D_0001682A = 0x0001682A;
D_000168FC = 0x000168FC;
D_000168FE = 0x000168FE;
D_0001691E = 0x0001691E;
D_00016929 = 0x00016929;
D_0001692B = 0x0001692B;
D_0001692C = 0x0001692C;
D_0001692E = 0x0001692E;
D_00016932 = 0x00016932;
D_00016934 = 0x00016934;
D_00016938 = 0x00016938;
D_0001694C = 0x0001694C;
D_0001694E = 0x0001694E;
D_00016950 = 0x00016950;
D_00016974 = 0x00016974;
D_00016980 = 0x00016980;
D_00016984 = 0x00016984;
D_0001698C = 0x0001698C;
D_00016994 = 0x00016994;
D_00016998 = 0x00016998;
D_000169A0 = 0x000169A0;
D_000169A4 = 0x000169A4;
D_000169A8 = 0x000169A8;
D_000169AC = 0x000169AC;
D_000169AE = 0x000169AE;
D_000169B8 = 0x000169B8;
D_000169B9 = 0x000169B9;
D_000169C4 = 0x000169C4;
D_000169DC = 0x000169DC;
D_000169DE = 0x000169DE;
D_00016B58 = 0x00016B58;
D_00016B5C = 0x00016B5C;
D_00016BFA = 0x00016BFA;
D_00016BFC = 0x00016BFC;
D_00016C04 = 0x00016C04;
D_00016C06 = 0x00016C06;
D_00016C0A = 0x00016C0A;
D_00016C0C = 0x00016C0C;
D_00016C0E = 0x00016C0E;
D_00016C36 = 0x00016C36;
D_00016C38 = 0x00016C38;
D_00016C40 = 0x00016C40;
D_00016C42 = 0x00016C42;
D_00016C44 = 0x00016C44;
D_00016C46 = 0x00016C46;
D_00016C48 = 0x00016C48;
D_00016C4E = 0x00016C4E;
D_00016C50 = 0x00016C50;
D_00016C5C = 0x00016C5C;
D_00016C66 = 0x00016C66;
D_00016C68 = 0x00016C68;
D_00016C6E = 0x00016C6E;
D_00016CEC = 0x00016CEC;
D_00016CFA = 0x00016CFA;
D_00016CFB = 0x00016CFB;
D_00016CFC = 0x00016CFC;
D_00016CFD = 0x00016CFD;
D_00016D02 = 0x00016D02;
D_00016D03 = 0x00016D03;
D_00016D04 = 0x00016D04;
D_00016F1C = 0x00016F1C;
D_00016F1E = 0x00016F1E;
D_00016F20 = 0x00016F20;
D_00016F30 = 0x00016F30;
D_00016F34 = 0x00016F34;
D_00016F54 = 0x00016F54;
D_00016F70 = 0x00016F70;
D_00016F86 = 0x00016F86;
D_00016F8E = 0x00016F8E;
D_00016FB4 = 0x00016FB4;
D_00016FE9 = 0x00016FE9;
D_00017000 = 0x00017000;
D_00017006 = 0x00017006;
D_00017008 = 0x00017008;
D_0001700C = 0x0001700C;
D_00017010 = 0x00017010;
D_00017014 = 0x00017014;
D_00017019 = 0x00017019;
D_0001701A = 0x0001701A;
D_0001701B = 0x0001701B;
D_0001701C = 0x0001701C;
D_0001701D = 0x0001701D;
D_0001701E = 0x0001701E;
D_00017022 = 0x00017022;
D_00017023 = 0x00017023;
D_00017024 = 0x00017024;
D_00017025 = 0x00017025;
D_00017026 = 0x00017026;
D_00017028 = 0x00017028;
D_000170A8 = 0x000170A8;
D_000170AA = 0x000170AA;
D_000170B0 = 0x000170B0;
D_000170B2 = 0x000170B2;
D_000170B4 = 0x000170B4;
D_000170B8 = 0x000170B8;
D_000170BC = 0x000170BC;
D_000170C0 = 0x000170C0;
D_000170C4 = 0x000170C4;
D_000170C5 = 0x000170C5;
D_000170C6 = 0x000170C6;
D_000170C7 = 0x000170C7;
D_000170E0 = 0x000170E0;
D_000170E4 = 0x000170E4;
D_000170E5 = 0x000170E5;
D_000170E6 = 0x000170E6;
D_000170E7 = 0x000170E7;
D_000170E8 = 0x000170E8;
D_000170E9 = 0x000170E9;
D_000170ED = 0x000170ED;
D_000170EE = 0x000170EE;
D_000170EF = 0x000170EF;
D_000170F0 = 0x000170F0;
D_000170F6 = 0x000170F6;
D_000170F7 = 0x000170F7;
D_000170F8 = 0x000170F8;
D_000170F9 = 0x000170F9;
D_000170FA = 0x000170FA;
D_00017D88 = 0x00017D88;
D_00017D90 = 0x00017D90;
D_00017D91 = 0x00017D91;
D_00017D93 = 0x00017D93;
D_00017D98 = 0x00017D98;
D_00017DDC = 0x00017DDC;
D_000186E0 = 0x000186E0;
D_000186E2 = 0x000186E2;
D_000186E3 = 0x000186E3;
D_000186E4 = 0x000186E4;
D_000186E5 = 0x000186E5;
D_000186E6 = 0x000186E6;
D_000186E8 = 0x000186E8;
D_000186EC = 0x000186EC;
D_000186F4 = 0x000186F4;
D_00018700 = 0x00018700;
D_00018711 = 0x00018711;
D_00018754 = 0x00018754;
D_00018758 = 0x00018758;
D_0001875A = 0x0001875A;
D_0001875C = 0x0001875C;
D_00018760 = 0x00018760;
D_00018764 = 0x00018764;
D_00018768 = 0x00018768;
D_0001876C = 0x0001876C;
D_00018770 = 0x00018770;
D_00018774 = 0x00018774;
D_00018778 = 0x00018778;
D_0001877C = 0x0001877C;
D_00018780 = 0x00018780;
D_00018784 = 0x00018784;
D_00018788 = 0x00018788;
D_0001878C = 0x0001878C;
D_00018790 = 0x00018790;
D_00018794 = 0x00018794;
D_00018798 = 0x00018798;
D_0001879C = 0x0001879C;
D_0001879E = 0x0001879E;
D_000187A0 = 0x000187A0;
D_000187A2 = 0x000187A2;
D_000187A4 = 0x000187A4;
D_000187A6 = 0x000187A6;
D_000187A8 = 0x000187A8;
D_000187AA = 0x000187AA;
D_000187AC = 0x000187AC;
D_000187F0 = 0x000187F0;
D_000187F4 = 0x000187F4;
D_000187F8 = 0x000187F8;
D_0001883C = 0x0001883C;
D_00018840 = 0x00018840;
D_00018844 = 0x00018844;
D_00018845 = 0x00018845;
D_00018846 = 0x00018846;
D_00018848 = 0x00018848;
D_0001884C = 0x0001884C;
D_00018850 = 0x00018850;
D_00018854 = 0x00018854;
D_00018858 = 0x00018858;
D_0001885C = 0x0001885C;
D_00018860 = 0x00018860;
D_00018864 = 0x00018864;
D_00018868 = 0x00018868;
D_0001886C = 0x0001886C;
D_00018870 = 0x00018870;
D_00018874 = 0x00018874;
D_00018875 = 0x00018875;
D_00018876 = 0x00018876;
D_00018878 = 0x00018878;
D_0001887A = 0x0001887A;
D_0001887C = 0x0001887C;
D_0001887D = 0x0001887D;
D_0001887E = 0x0001887E;
D_0001887F = 0x0001887F;
D_00018880 = 0x00018880;
D_00018B20 = 0x00018B20;
D_00018B48 = 0x00018B48;
D_00018B49 = 0x00018B49;
D_00018B4A = 0x00018B4A;
D_00018B60 = 0x00018B60;
D_00018B64 = 0x00018B64;
D_00018BF0 = 0x00018BF0;
D_00018BF2 = 0x00018BF2;
D_00018E54 = 0x00018E54;
D_00018E58 = 0x00018E58;
D_00018E5C = 0x00018E5C;
D_00018E60 = 0x00018E60;
D_00018E64 = 0x00018E64;
D_00018E68 = 0x00018E68;
dmadataRomStart = 0x0001A500;
D_00020308 = 0x00020308;
dmadataRomEnd = 0x00020700;
D_000242F3 = 0x000242F3;
D_00024413 = 0x00024413;
D_00024414 = 0x00024414;
D_0002446A = 0x0002446A;
D_0002446C = 0x0002446C;
D_00024480 = 0x00024480;
D_00024482 = 0x00024482;
D_00024484 = 0x00024484;
D_00024486 = 0x00024486;
D_00024488 = 0x00024488;
D_0002448A = 0x0002448A;
D_0002448C = 0x0002448C;
D_0002448E = 0x0002448E;
D_00024498 = 0x00024498;
D_000244A6 = 0x000244A6;
D_000244A8 = 0x000244A8;
D_000244AA = 0x000244AA;
D_000244AC = 0x000244AC;
D_000244AE = 0x000244AE;
D_000244BA = 0x000244BA;
D_000244CE = 0x000244CE;
D_000244E2 = 0x000244E2;
D_000244E4 = 0x000244E4;
D_000244E6 = 0x000244E6;
D_000244E8 = 0x000244E8;
D_000244F2 = 0x000244F2;
D_000244F4 = 0x000244F4;
D_000244FA = 0x000244FA;
D_000244FC = 0x000244FC;
D_000244FE = 0x000244FE;
D_00024500 = 0x00024500;
D_00024502 = 0x00024502;
D_00024504 = 0x00024504;
D_00024506 = 0x00024506;
D_00024508 = 0x00024508;
D_0002450A = 0x0002450A;
D_0002450C = 0x0002450C;
D_00024510 = 0x00024510;
D_00024512 = 0x00024512;
D_00024514 = 0x00024514;
D_00024516 = 0x00024516;
D_00024518 = 0x00024518;
D_0002451A = 0x0002451A;
D_0002451C = 0x0002451C;
D_0002451E = 0x0002451E;
D_00024528 = 0x00024528;
D_00046AF0 = 0x00046AF0;
D_00080028 = 0x00080028;
D_00097F70 = 0x00097F70;
D_000FFFFC = 0x000FFFFC;
D_001ABAB0 = 0x001ABAB0;
D_001E3BB0 = 0x001E3BB0;
D_0065D000 = 0x0065D000;
dmadata_vrom_start = 0x0001A500;
dmadata_vrom_end = 0x00020700;
Audioseq_vrom_start = 0x00046AF0;
Audioseq_vrom_end = 0x00097F70;
link_animetion_vrom_start = 0x0065D000;
D_00957000 = 0x00957000;
D_009ECEC0 = 0x009ECEC0;
D_009ED000 = 0x009ED000;
D_009F4700 = 0x009F4700;
D_009F5000 = 0x009F5000;
D_00A09AF0 = 0x00A09AF0;
D_00A0A000 = 0x00A0A000;
D_00A0EB80 = 0x00A0EB80;
D_00A0F000 = 0x00A0F000;
D_00A12300 = 0x00A12300;
D_00A13000 = 0x00A13000;
D_00A1BA00 = 0x00A1BA00;
D_00A1C000 = 0x00A1C000;
D_00A1C2E0 = 0x00A1C2E0;
D_00A1D000 = 0x00A1D000;
D_00A1E310 = 0x00A1E310;
D_00A27660 = 0x00A27660;
D_00A352F0 = 0x00A352F0;
D_00A36C10 = 0x00A36C10;
D_00A7BEE0 = 0x00A7BEE0;
D_00A807A0 = 0x00A807A0;
D_00A8C000 = 0x00A8C000;
D_00A92A10 = 0x00A92A10;
D_00A990E0 = 0x00A990E0;
D_00A9A000 = 0x00A9A000;
D_00ABFC00 = 0x00ABFC00;
D_00AC0000 = 0x00AC0000;
D_00AC0480 = 0x00AC0480;
D_00AC4000 = 0x00AC4000;
D_00ACA000 = 0x00ACA000;
D_00ACC000 = 0x00ACC000;
D_00AD1000 = 0x00AD1000;
D_00B3B000 = 0x00B3B000;
D_00B3C000 = 0x00B3C000;
D_00C7A4E0 = 0x00C7A4E0;
D_01000000 = 0x01000000;
D_01000680 = 0x01000680;
D_01001280 = 0x01001280;
D_01001800 = 0x01001800;
D_01002720 = 0x01002720;
D_01002800 = 0x01002800;
D_01007980 = 0x01007980;
D_010220B0 = 0x010220B0;
D_010277B0 = 0x010277B0;
D_0102A030 = 0x0102A030;
D_0102A6B0 = 0x0102A6B0;
D_0102A7B0 = 0x0102A7B0;
D_0102AAB0 = 0x0102AAB0;
D_0102B170 = 0x0102B170;
D_0102B3B0 = 0x0102B3B0;
D_0102B8F0 = 0x0102B8F0;
D_0102FCB0 = 0x0102FCB0;
D_010308F0 = 0x010308F0;
D_010310F0 = 0x010310F0;
D_010311F0 = 0x010311F0;
D_01031408 = 0x01031408;
D_01031618 = 0x01031618;
D_01E85000 = 0x01E85000;
D_01E87DC0 = 0x01E87DC0;
D_01E88000 = 0x01E88000;
D_01EB9730 = 0x01EB9730;
D_01EBA000 = 0x01EBA000;
D_01EBC000 = 0x01EBC000;
D_01EBD000 = 0x01EBD000;
D_01EC8B20 = 0x01EC8B20;
D_01EC9000 = 0x01EC9000;
D_01ECA000 = 0x01ECA000;
D_01ED3B00 = 0x01ED3B00;
D_01EF2000 = 0x01EF2000;
D_01EFE000 = 0x01EFE000;
D_01F0A000 = 0x01F0A000;
D_01F0A200 = 0x01F0A200;
icon_item_field_static_vrom_start = 0x009F5000;
icon_item_field_static_vrom_end = 0x00A09AF0;
icon_item_dungeon_static_vrom_start = 0x00A0A000;
icon_item_dungeon_static_vrom_end = 0x00A0EB80;
icon_item_gameover_static_vrom_start = 0x00A0F000;
icon_item_gameover_static_vrom_end = 0x00A12300;
_013_0x00963540_vrom_start = 0x00A13000;
_013_0x00963540_vrom_end = 0x00A1BA00;
_014_0x00967260_vrom_start = 0x00A1C000;
_014_0x00967260_vrom_end = 0x00A1C2E0;
map_i_static_vrom_start = 0x00A1D000;
map_grand_static_vrom_start = 0x00A1E310;
item_name_static_vrom_start = 0x00A27660;
map_name_static_vrom_start = 0x00A352F0;
_019_0x00980f60_vrom_start = 0x00A36C10;
_020_0x009c6230_vrom_start = 0x00A7BEE0;
_020_0x009c6230_vrom_end = 0x00A807A0;
_022_0x009caaf0_vrom_start = 0x00A8C000;
_023_0x009d1500_vrom_start = 0x00A92A10;
_023_0x009d1500_vrom_end = 0x00A990E0;
_024_0x009d3760_vrom_start = 0x00A9A000;
_024_0x009d3760_vrom_end = 0x00ABFC00;
do_action_static_vrom_start = 0x00AC0000;
message_static_vrom_start = 0x00AC4000;
message_texture_static_vrom_start = 0x00ACA000;
nes_font_static_vrom_start = 0x00ACC000;
en_message_data_static_vrom_start = 0x00AD1000;
staff_message_data_static_vrom_start = 0x00B3B000;
code_vrom_start = 0x00B3C000;
code_vrom_end = 0x00C7A4E0;
nintendo_rogo_static_vrom_start = 0x01E85000;
nintendo_rogo_static_vrom_end = 0x01E87DC0;
title_static_vrom_start = 0x01E88000;
title_static_vrom_end = 0x01EB9730;
_1124_0x0163f490_vrom_start = 0x01EBA000;
_1124_0x0163f490_vrom_end = 0x01EBB280;
_1125_0x0163fc10_vrom_start = 0x01EBC000;
_1125_0x0163fc10_vrom_end = 0x01EBC680;
_1126_0x0163ffc0_vrom_start = 0x01EBD000;
_1126_0x0163ffc0_vrom_end = 0x01EC8B20;
_1127_0x01643d50_vrom_start = 0x01EC9000;
_1127_0x01643d50_vrom_end = 0x01EC9F30;
_1128_0x01644c80_vrom_start = 0x01ECA000;
_1128_0x01644c80_vrom_end = 0x01ED3B00;
_1129_0x01646b60_vrom_start = 0x01ED4000;
_1129_0x01646b60_vrom_end = 0x01EDDB00;
_1130_0x01649020_vrom_start = 0x01EDE000;
_1130_0x01649020_vrom_end = 0x01EE7B00;
_1131_0x0164ad90_vrom_start = 0x01EE8000;
_1131_0x0164ad90_vrom_end = 0x01EF1B00;
vr_fine_static_vrom_start = 0x01EF2000;
vr_cloud_static_vrom_start = 0x01EFE000;
vr_pal_static_vrom_start = 0x01F0A000;
vr_pal_static_vrom_end = 0x01F0A200;
D_060005D0 = 0x060005D0;
D_06001100 = 0x06001100;
D_06001228 = 0x06001228;
D_06002D30 = 0x06002D30;
D_11000A70 = 0x11000A70;
D_11111111 = 0x11111111;
D_3CFFED40 = 0x3CFFED40;
D_3E7FDDD0 = 0x3E7FDDD0;
D_3EBF9330 = 0x3EBF9330;
D_3EFFD880 = 0x3EFFD880;
D_3EFFF764 = 0x3EFFF764;
D_3F7FCDC0 = 0x3F7FCDC0;
D_3F7FCE80 = 0x3F7FCE80;
D_3F7FCEA0 = 0x3F7FCEA0;
D_3F7FE3F0 = 0x3F7FE3F0;
D_3F7FEBB4 = 0x3F7FEBB4;
D_3F800CEC = 0x3F800CEC;
D_3F806764 = 0x3F806764;
D_3F80679C = 0x3F80679C;
D_3F8071B0 = 0x3F8071B0;
D_3F8071B8 = 0x3F8071B8;
D_3F8071C0 = 0x3F8071C0;
D_3F9FE9B4 = 0x3F9FE9B4;
D_403F8BAC = 0x403F8BAC;
D_407F83D0 = 0x407F83D0;
D_411FDAA0 = 0x411FDAA0;
D_411FDBFC = 0x411FDBFC;
D_412022F0 = 0x412022F0;
D_41204208 = 0x41204208;
D_412060B8 = 0x412060B8;
D_416FD0CC = 0x416FD0CC;
D_419FB50C = 0x419FB50C;
D_41AFAD08 = 0x41AFAD08;
D_421FFBA8 = 0x421FFBA8;
D_4248099C = 0x4248099C;
D_428C2BD1 = 0x428C2BD1;
D_429FC358 = 0x429FC358;
D_429FFF58 = 0x429FFF58;
D_42A00B10 = 0x42A00B10;
D_42A05D1C = 0x42A05D1C;
D_42B42BC9 = 0x42B42BC9;
D_42EFD968 = 0x42EFD968;
D_43162BC9 = 0x43162BC9;
D_4347E450 = 0x4347E450;
D_4390DC8C = 0x4390DC8C;
D_4390DC90 = 0x4390DC90;
D_439B22F4 = 0x439B22F4;
D_439B420C = 0x439B420C;
D_439B60BC = 0x439B60BC;
D_43C7ED84 = 0x43C7ED84;
D_43F9FB94 = 0x43F9FB94;
D_43F9FBB4 = 0x43F9FBB4;
D_46FFCED0 = 0x46FFCED0;
D_47803510 = 0x47803510;
D_80000000 = 0x80000000;
osTvType = 0x80000300;
osRomType = 0x80000304;