diff --git a/.gitignore b/.gitignore index bb00fc1..2ce0e22 100644 --- a/.gitignore +++ b/.gitignore @@ -6,14 +6,20 @@ tools/elf2dol/elf2dol # Build artifacts build/ +build.ninja +objdiff.json +.ninja_* *.o *.obj +*.dol *.elf +*.exe *.map # Python artifacts __pycache__/ .venv/ +.mypy_cache # IDE artifacts .vscode/ diff --git a/Makefile b/Makefile deleted file mode 100644 index e124d03..0000000 --- a/Makefile +++ /dev/null @@ -1,175 +0,0 @@ -NON_MATCHING := 0 - -#------------------------------------------------------------------------------- -# Files -#------------------------------------------------------------------------------- - -TARGET_COL := gamecube - -TARGET := SIM - -BUILD_DIR := build/$(TARGET) - -SRC_DIRS := $(shell find src -type d) -ASM_DIRS := $(shell find asm -type d -not -path "asm/non_matchings*") - -C_FILES := $(foreach dir,$(SRC_DIRS),$(wildcard $(dir)/*.c)) - -# Inputs -LDSCRIPT := $(BUILD_DIR)/ldscript.lcf - -# Outputs -ELF := $(BUILD_DIR)/$(TARGET).elf -MAP := $(ELF:.elf=.map) -DOL := $(ELF:.elf=.dol) -COMPARE_TO := $(ELF:.elf=_S.elf) - -# Object files in link order -include obj_files.mk - -#------------------------------------------------------------------------------- -# Tools -#------------------------------------------------------------------------------- - -MWCC_VERSION := GC/1.1 - -# revision build year, 2002 for MQ, 2003 for CE -DOLPHIN_REVISION := 2003 - -# Programs -ifeq ($(OS),Windows_NT) - WINE := -else - UNAME_S := $(shell uname -s) - ifeq ($(UNAME_S),Linux) - WINE := wibo - else ifeq ($(UNAME_S),Darwin) - WINE := wine - else - $(error Unknown OS: $(OS)) - endif -endif - -PPC_BIN_PREFIX := tools/binutils/powerpc-eabi- -AS := $(PPC_BIN_PREFIX)as -OBJCOPY := $(PPC_BIN_PREFIX)objcopy -OBJDUMP := $(PPC_BIN_PREFIX)objdump - -MWCC_DIR := tools/mwcc_compiler/$(MWCC_VERSION) -CC := $(WINE) $(MWCC_DIR)/mwcceppc.exe -LD := $(WINE) $(MWCC_DIR)/mwldeppc.exe - -DOLPHIN_MWCC_DIR := tools/mwcc_compiler/GC/1.2.5n -DOLPHIN_CC := $(WINE) $(DOLPHIN_MWCC_DIR)/mwcceppc.exe - -CC_CHECK := gcc -CC_CHECK_WARNINGS := \ - -Wall \ - -Wextra \ - -Werror=strict-prototypes \ - -Werror=implicit-function-declaration \ - -Wno-cast-function-type \ - -Wno-incompatible-pointer-types \ - -Wno-pointer-to-int-cast \ - -Wno-return-type \ - -Wno-sequence-point \ - -Wno-sign-compare \ - -Wno-unknown-pragmas \ - -Wno-unused-but-set-variable \ - -Wno-unused-function \ - -Wno-unused-parameter \ - -Wno-unused-variable - -SHA1SUM := sha1sum -PYTHON := python3 -ELF2DOL := tools/elf2dol/elf2dol - -ASM_PROCESSOR_DIR := tools/asm_processor -ASM_PROCESSOR := $(ASM_PROCESSOR_DIR)/compile.sh - -POSTPROC := tools/postprocess.py - -# Options -INCLUDES := -Iinclude -Ilibc -ASFLAGS := -mgekko -I include -I libc -LDFLAGS := -map $(MAP) -fp hardware -nodefaults -warn off -CFLAGS := -Cpp_exceptions off -proc gekko -fp hardware -fp_contract on -enum int -align powerpc -nosyspath -RTTI off -str reuse -multibyte -O4,p -sym on -nodefaults -msgstyle gcc $(INCLUDES) -DDOLPHIN_REV=$(DOLPHIN_REVISION) -INLINE_CFLAGS := -inline auto -CC_CHECK_FLAGS := -fno-builtin -fsyntax-only -std=gnu99 -I include -I libc $(CC_CHECK_WARNINGS) -DNON_MATCHING -DDOLPHIN_REV=$(DOLPHIN_REVISION) - -ifneq ($(NON_MATCHING),0) - CFLAGS += -DNON_MATCHING -endif - -# elf2dol needs to know these in order to calculate sbss correctly. -SDATA_PDHR := 9 -SBSS_PDHR := 10 - -#------------------------------------------------------------------------------- -# Recipes -#------------------------------------------------------------------------------- - -### Default target ### - -default: all - -# Compare to the checksum of a stripped original -all: $(ELF) -ifneq ($(NON_MATCHING),1) - @md5sum $(COMPARE_TO) - @md5sum -c checksum.md5 -endif - -setup: -# Build/download tools - $(MAKE) -C tools -# Patch linker - tools/patch_linker.sh $(MWCC_DIR)/mwldeppc.exe -# Strip debugging sections and .mwcats.text section so only the important sections remain -# Tested to ensure it doesn't crash at least on Dolphin - $(OBJCOPY) SIM_original.elf SIM.elf -R .mwcats.text -g -# Copy again to strip symbols since we don't want to diff those - $(OBJCOPY) SIM.elf SIM_S.elf -S - -clean: - rm -f -d -r build - -distclean: - rm -f -r SIM.elf SIM_S.elf - $(MAKE) -C tools clean - -format: - find include libc src -name '*.h' -o -name '*.c' | xargs clang-format -i - -# Note: this is meant for testing/modding purposes as a dol is easier to package and run than the original elf -dol: all $(DOL) - -.PHONY: all setup clean format dol distclean - -ALL_DIRS := build $(BUILD_DIR) $(addprefix $(BUILD_DIR)/,$(SRC_DIRS) $(ASM_DIRS)) - -# Make sure build directory exists before compiling anything -DUMMY != mkdir -p $(ALL_DIRS) - -$(ELF): $(O_FILES) ldscript.lcf - $(RM) -rf $(ASM_PROCESSOR_DIR)/tmp - $(LD) $(LDFLAGS) -o $@ -lcf ldscript.lcf $(O_FILES) - $(OBJCOPY) $(ELF) $(COMPARE_TO) -S - -$(DOL): $(ELF) - $(ELF2DOL) $< $@ $(SDATA_PDHR) $(SBSS_PDHR) $(TARGET_COL) - -$(BUILD_DIR)/src/dolphin/%.o: CC := $(DOLPHIN_CC) - -$(BUILD_DIR)/src/emulator/%.o: INLINE_CFLAGS := -inline auto,deferred -$(BUILD_DIR)/src/emulator/THP%.o: INLINE_CFLAGS := -inline auto -$(BUILD_DIR)/src/emulator/THPRead.o: INLINE_CFLAGS := -inline auto,deferred - -$(BUILD_DIR)/%.o: %.s - $(AS) $(ASFLAGS) -o $@ $< - -$(BUILD_DIR)/%.o: %.c -ifneq ($(CC_CHECK),) - $(CC_CHECK) $(CC_CHECK_FLAGS) $< -endif - $(ASM_PROCESSOR) "$(CC) $(CFLAGS) $(INLINE_CFLAGS)" "$(AS) $(ASFLAGS)" $@ $< diff --git a/README.md b/README.md index 20292ba..ae4c84b 100644 --- a/README.md +++ b/README.md @@ -1,41 +1,38 @@ # oot-gc -This repo contains a WIP decompilation of the N64 Emulator ELF executable intended for use with the Gamecube releases of The Legend of Zelda Ocarina of Time. Currently the decompilation specifically targets the version shipped with the Japanese Zelda Collector's Edition disk as symbols and other debugging information was left unstripped. +A work-in-progress decompilation of the N64 emulator used in the GameCube releases of The Legend of Zelda: Ocarina of Time. -It builds the following ELF executables: +Supported versions: -SIM.elf : `md5: 64428C7350B31E0AAD3DDE221C5B18A5` -SIM_S.elf : `md5: EDDD2DED9906AD2312F7EC585B3D72CE` +- `mq-j`: Master Quest - Japan +- `mq-u`: Master Quest - North America +- `mq-e`: Master Quest - Europe/Australia +- `ce-j`: Collector's Edition - Japan +- `ce-u`: Collector's Edition - North America +- `ce-e`: Collector's Edition - Europe/Australia -SIM_S is a version of the build with stripped symbols which when diffed against a similarly stripped original matches byte for byte if assembled and linked, which is the most realistic goal for verifying the accuracy of the decompilation. +Currently the decompilation mainly targets the `ce-j` version, as the +Collector's Edition disks also contain an ELF file where symbols and other +debugging information were left unstripped. ## Building ### Requirements You will need the following dependencies: -* gcc or clang -* make * git +* ninja * python3 -* wibo (Linux) or wine (macOS) -* wget -* unzip +* wine (for macOS or non-x86 Linux) * clang-format (optional) #### Ubuntu/Debian -In order to install `wibo`, you will need to [download it](https://github.com/decompals/wibo/releases) and run: - -``` -sudo install wibo /usr/bin -``` - You can install the dependencies with the following commands: ``` sudo apt-get update -sudo apt-get install build-essential git python3 wget unzip +sudo apt-get install git ninja python3 ``` #### macOS @@ -43,15 +40,45 @@ sudo apt-get install build-essential git python3 wget unzip You can install dependencies via Homebrew with the following command: ``` -brew install coreutils python3 wget wine +brew install git ninja python3 +brew install --cask --no-quarantine gcenx/wine/wine-crossover ``` ### Instructions -1. Obtain the original ELF executable found in the `120903_zelda.tgc` file on the Japanese Collector's Edition disk and place it in the base working directory and name it `SIM_original.elf` -2. Run `make setup` and `make` +1. Clone the repo using `git clone https://github.com/zeldaret/oot-gc`. -## Development +2. Extract the following TGC archive containing the N64 emulator from the disc of the version you want to build: + + * `mq-j`: `zlj_f.tgc` + * `mq-u`: `zlj_f.tgc` + * `mq-e`: `zlj_f.tgc` + * `ce-j`: `120903_zelda.tgc` + * `ce-u`: `zelda_ENG_090903.tgc` + * `ce-e`: `zelda_PAL_093003.tgc` + + Then, extract the DOL file from the TGC archive and place it in the repo as `orig//main.dol`. + You can use [Dolphin](https://dolphin-emu.org) to perform both of these extraction steps: + right click on the file you want to extract from, select `Properties`, and go to the `Filesystem` tab. + +3. Run `python3 configure.py`. + +4. Run `ninja` to build the `ce-j` version, or run `ninja ` to build another version. + +## Development Tools + +### Scripts + +* `./dol-diff ` will run `dtk dol diff` to show the first differing symbol if the build does not match. +* `./dol-apply ` will run `dtk dol apply` to sync symbols (e.g. if a function was renamed in the repo). +* `./format` will format all source files with `clang-format`. + +### objdiff + +For local decompilation testing, start the objdiff GUI and open this directory as the project directory. +Currently `objdiff` may not work properly on files using asm-processor (i.e. files with `asm_processor=True` in `configure.py`). + +### asm-differ (diff.py) First, copy a matching build to the `expected/` directory to diff against: @@ -60,15 +87,7 @@ mkdir expected cp -r build expected/ ``` -### Diff tools - -For locally diffing the current build against the expected build: - -* `objdiff`: Start the objdiff GUI and open this directory as the project directory. -* `diff.py` (`asm-differ`): Run e.g. `./diff.py -mwo3 xlMain` to diff a function. -* `vbindiff`: Run `vbindiff SIM_S.elf build/SIM/SIM_S.elf` to directly diff the - ELF files to debug tricky matching issues, using the ELF section headers and - the linker map file to locate the diffs in the code. +Then run e.g. `./diff.py -mwo3 xlMain` to diff a function for `ce-j`, or e.g. `./diff.py -mwo3 xlMain -v mq-j` to diff a function for another version. ### decomp.me @@ -92,12 +111,3 @@ correctly, for example by explicitly marking auto-inlined functions as `inline`. The files in the `debug/` directory contain a dump of the DWARF debugging information in the original ELF. Functions marked as `// Erased` were present at one time but have been stripped by the linker, because they were either unused or inlined at all call sites. - -### Migrating a file to C - -All emulator files have been migrated to C, but some SDK and standard library files are still built from the disassembly. Before decompiling -one of these files: - -* In `obj_files.mk`, replace `$(BUILD_DIR)/asm/.o` with `$(BUILD_DIR)/src/.o` to link the new object file -* Add an entry in `objdiff.json` -* Run `cp expected/build/SIM/asm/.o expected/build/SIM/src/.o` to create a base to diff against diff --git a/config/ce-j/build.sha1 b/config/ce-j/build.sha1 new file mode 100644 index 0000000..7e17ce6 --- /dev/null +++ b/config/ce-j/build.sha1 @@ -0,0 +1 @@ +aed1c15af4d667a3cffd8621a6bb3fd08b4c3b04 build/ce-j/oot-gc.dol diff --git a/config/ce-j/config.yml b/config/ce-j/config.yml new file mode 100644 index 0000000..df749bf --- /dev/null +++ b/config/ce-j/config.yml @@ -0,0 +1,102 @@ +# See config.example.yml for documentation. +name: oot-gc +object: orig/ce-j/main.dol +hash: aed1c15af4d667a3cffd8621a6bb3fd08b4c3b04 +symbols: config/ce-j/symbols.txt +splits: config/ce-j/splits.txt +mw_comment_version: 8 + +extract: +# xlCoreGCN.c +- symbol: gTgPcTPL + header: gTgPcTPL.inc +# simGCN.c +- symbol: gcoverOpen + header: gcoverOpen.inc +- symbol: gnoDisk + header: gnoDisk.inc +- symbol: gretryErr + header: gretryErr.inc +- symbol: gfatalErr + header: gfatalErr.inc +- symbol: gwrongDisk + header: gwrongDisk.inc +- symbol: greadingDisk + header: greadingDisk.inc +- symbol: gbar + header: gbar.inc +- symbol: gyes + header: gyes.inc +- symbol: gno + header: gno.inc +- symbol: gmesgOK + header: gmesgOK.inc + +block_relocations: +# systemSetupGameALL +- source: 0x8002E15C +- source: 0x8002E184 +- source: 0x8002E1B0 +- source: 0x8002E1D8 +- source: 0x8002E234 +- source: 0x8002E254 +- source: 0x8002E280 +- source: 0x8002E2A4 +- source: 0x8002E794 +- source: 0x8002E7BC +- source: 0x8002E7E4 +- source: 0x8002E80C +- source: 0x8002E834 +- source: 0x8002E85C +- source: 0x8002E884 +- source: 0x8002E8AC +- source: 0x8002E8D4 +- source: 0x8002E8F8 +- source: 0x8002E91C +- source: 0x8002EC04 +- source: 0x8002ED24 +- source: 0x8002EE14 +- source: 0x8002EE38 +- source: 0x8002EE5C +- source: 0x8002EE88 +- source: 0x8002EEAC +- source: 0x8002EED0 +- source: 0x8002F010 +- source: 0x8002F038 +- source: 0x8002F060 +- source: 0x8002F0A0 +- source: 0x8002F0C4 +- source: 0x8002F0F0 +- source: 0x8002F130 +- source: 0x8002F154 +- source: 0x8002F180 +- source: 0x8002F2EC +- source: 0x8002F314 +- source: 0x8002F86C +- source: 0x8002F894 +- source: 0x8002F8BC +- source: 0x8002F8E0 +- source: 0x8002F908 +- source: 0x8002FA94 +- source: 0x8002FAFC +- source: 0x8002FB20 +- source: 0x8002FB4C +- source: 0x8002FB70 +- source: 0x8002FC60 +- source: 0x8002FDB0 +- source: 0x8002FDF8 +- source: 0x8002FF2C +- source: 0x8002FF74 +- source: 0x8002FF9C +# cpuFindFunction +- source: 0x800333E4 +- source: 0x800333F0 +- source: 0x80033B80 +- source: 0x80033BB0 +- source: 0x80033BB4 +- source: 0x80033BE8 +- source: 0x80033BFC +- source: 0x80033C3C +- source: 0x80033C40 +- source: 0x80033C74 +- source: 0x80033C88 diff --git a/config/ce-j/splits.txt b/config/ce-j/splits.txt new file mode 100644 index 0000000..c4dad9f --- /dev/null +++ b/config/ce-j/splits.txt @@ -0,0 +1,837 @@ +Sections: + .init type:code align:32 + .text type:code align:32 + .ctors type:rodata align:32 + .dtors type:rodata align:32 + .rodata type:rodata align:32 + .data type:data align:32 + .bss type:bss align:32 + .sdata type:data align:32 + .sbss type:bss align:32 + .sdata2 type:rodata align:32 + +emulator/xlCoreGCN.c: + .text start:0x800055A0 end:0x80005E04 + .data start:0x800D3720 end:0x800DB7E0 + .bss start:0x800F3EE0 end:0x800F3FA0 + .sbss start:0x80135580 end:0x801355A0 + .sdata2 start:0x80135D00 end:0x80135D18 + +emulator/xlPostGCN.c: + .text start:0x80005E04 end:0x80005E68 + +emulator/xlFileGCN.c: + .text start:0x80005E68 end:0x80006280 + .data start:0x800DB7E0 end:0x800DB800 + .sdata start:0x80134CE0 end:0x80134CE8 + .sbss start:0x801355A0 end:0x801355A8 + +emulator/xlList.c: + .text start:0x80006280 end:0x80006648 + .bss start:0x800F3FA0 end:0x800F3FB0 + +emulator/xlHeap.c: + .text start:0x80006648 end:0x80007BC0 + .bss start:0x800F3FB0 end:0x800F4540 + .sbss start:0x801355A8 end:0x801355C8 + +emulator/xlObject.c: + .text start:0x80007BC0 end:0x80007F80 + .sbss start:0x801355C8 end:0x801355D0 + +emulator/simGCN.c: + .text start:0x80007F80 end:0x8000F7CC + .rodata start:0x800D2FE0 end:0x800D3130 + .data start:0x800DB800 end:0x800EA1C8 + .bss start:0x800F4540 end:0x800F96E0 + .sdata start:0x80134CE8 end:0x80134DB0 + .sbss start:0x801355D0 end:0x80135610 + .sdata2 start:0x80135D18 end:0x80135D70 + +emulator/movie.c: + .text start:0x8000F7CC end:0x8000F890 + .data start:0x800EA1C8 end:0x800EA1E8 + .sbss start:0x80135610 end:0x80135618 + +emulator/THPPlayer.c: + .text start:0x8000F890 end:0x80010D9C + .data start:0x800EA1E8 end:0x800EA488 + .bss start:0x800F96E0 end:0x800F9E50 + .sdata start:0x80134DB0 end:0x80134DB4 + .sbss start:0x80135618 end:0x80135638 + .sdata2 start:0x80135D70 end:0x80135D78 + +emulator/THPAudioDecode.c: + .text start:0x80010D9C end:0x80011138 + .data start:0x800EA488 end:0x800EA4B0 + .bss start:0x800F9E50 end:0x800FB1C0 + .sbss start:0x80135638 end:0x80135640 + +emulator/THPDraw.c: + .text start:0x80011138 end:0x80011938 + .sdata2 start:0x80135D78 end:0x80135DA0 + +emulator/THPRead.c: + .text start:0x80011938 end:0x80012F20 + .rodata start:0x800D3130 end:0x800D31C0 + .data start:0x800EA4B0 end:0x800EA520 + .bss start:0x800FB1C0 end:0x800FC5F0 + .sbss start:0x80135640 end:0x80135658 + .sdata2 start:0x80135DA0 end:0x80135DD8 + +emulator/THPVideoDecode.c: + .text start:0x80012F20 end:0x80013440 + .data start:0x800EA520 end:0x800EA548 + .bss start:0x800FC5F0 end:0x800FD960 + .sbss start:0x80135658 end:0x80135660 + +emulator/mcardGCN.c: + .text start:0x80013440 end:0x8001C444 + .data start:0x800EA548 end:0x800EA7C8 + .bss start:0x800FD960 end:0x80108180 + .sdata start:0x80134DB8 end:0x80134DC0 + .sbss start:0x80135660 end:0x80135680 + +emulator/codeGCN.c: + .text start:0x8001C444 end:0x8001C498 + .data start:0x800EA7C8 end:0x800EA7D8 + .sdata start:0x80134DC0 end:0x80134DC8 + .sbss start:0x80135680 end:0x80135688 + +emulator/soundGCN.c: + .text start:0x8001C498 end:0x8001D34C + .data start:0x800EA7D8 end:0x800EA838 + .bss start:0x80108180 end:0x801085A0 + .sdata start:0x80134DC8 end:0x80134DD8 + .sdata2 start:0x80135DD8 end:0x80135E00 + +emulator/frame.c: + .text start:0x8001D34C end:0x8002CA14 + .rodata start:0x800D31C0 end:0x800D3200 + .data start:0x800EA838 end:0x800EB300 + .bss start:0x801085A0 end:0x801308E0 + .sdata start:0x80134DD8 end:0x80134E60 + .sbss start:0x80135688 end:0x801356D8 + .sdata2 start:0x80135E00 end:0x80135F90 + +emulator/system.c: + .text start:0x8002CA14 end:0x80030E70 + .data start:0x800EB300 end:0x800EB658 + .bss start:0x801308E0 end:0x80130A58 + .sdata start:0x80134E60 end:0x801350A8 + .sbss start:0x801356D8 end:0x801356E0 + .sdata2 start:0x80135F90 end:0x80135FA0 + +emulator/cpu.c: + .text start:0x80030E70 end:0x8006BE68 + .data start:0x800EB658 end:0x800ED6B8 + .bss start:0x80130A58 end:0x80130C50 + .sdata start:0x801350A8 end:0x80135268 + .sbss start:0x801356E0 end:0x80135760 + .sdata2 start:0x80135FA0 end:0x80135FD0 + +emulator/pif.c: + .text start:0x8006BE68 end:0x8006CD98 + .data start:0x800ED6B8 end:0x800ED6C8 + .sdata start:0x80135268 end:0x80135270 + +emulator/ram.c: + .text start:0x8006CD98 end:0x8006D3AC + .data start:0x800ED6C8 end:0x800ED8E8 + .sdata start:0x80135270 end:0x80135278 + +emulator/rom.c: + .text start:0x8006D3AC end:0x8006FEC0 + .data start:0x800ED8E8 end:0x800EDF40 + .sdata start:0x80135278 end:0x801352B0 + .sbss start:0x80135760 end:0x80135770 + .sdata2 start:0x80135FD0 end:0x80136008 + +emulator/rdp.c: + .text start:0x8006FEC0 end:0x800715D0 + .data start:0x800EDF40 end:0x800EE1B0 + .sdata start:0x801352B0 end:0x801352B8 + .sbss start:0x80135770 end:0x80135788 + .sdata2 start:0x80136008 end:0x80136038 + +emulator/rdb.c: + .text start:0x800715D0 end:0x80071BB8 + .data start:0x800EE1B0 end:0x800EE220 + .sdata start:0x801352B8 end:0x801352C0 + +emulator/rsp.c: + .text start:0x80071BB8 end:0x8008D248 + .data start:0x800EE220 end:0x800EE6D0 + .sdata start:0x801352C0 end:0x801352E8 + .sbss start:0x80135788 end:0x801357B0 + .sdata2 start:0x80136038 end:0x80136078 + +emulator/mips.c: + .text start:0x8008D248 end:0x8008D788 + .data start:0x800EE6D0 end:0x800EE748 + .sdata start:0x801352E8 end:0x801352F0 + +emulator/disk.c: + .text start:0x8008D788 end:0x8008DA1C + .data start:0x800EE748 end:0x800EE758 + .sdata start:0x801352F0 end:0x801352F8 + +emulator/flash.c: + .text start:0x8008DA1C end:0x8008E138 + .data start:0x800EE758 end:0x800EE768 + .sdata start:0x801352F8 end:0x80135300 + +emulator/sram.c: + .text start:0x8008E138 end:0x8008E4A8 + .data start:0x800EE768 end:0x800EE778 + .sdata start:0x80135300 end:0x80135308 + +emulator/audio.c: + .text start:0x8008E4A8 end:0x8008E8A0 + .data start:0x800EE778 end:0x800EE870 + .sdata start:0x80135308 end:0x80135318 + +emulator/video.c: + .text start:0x8008E8A0 end:0x8008EE20 + .data start:0x800EE870 end:0x800EEA28 + .sdata start:0x80135318 end:0x80135320 + +emulator/serial.c: + .text start:0x8008EE20 end:0x8008F0F4 + .data start:0x800EEA28 end:0x800EEB00 + .sdata start:0x80135320 end:0x80135328 + +emulator/library.c: + .text start:0x8008F0F4 end:0x8009779C + .data start:0x800EEB00 end:0x800EFFB0 + .sdata start:0x80135328 end:0x80135370 + .sdata2 start:0x80136078 end:0x801360D8 + +emulator/peripheral.c: + .text start:0x8009779C end:0x80097D9C + .data start:0x800EFFB0 end:0x800F0158 + +emulator/_frameGCNcc.c: + .text start:0x80097D9C end:0x800986A4 + .data start:0x800F0158 end:0x800F0460 + .sdata start:0x80135370 end:0x80135400 + +emulator/_buildtev.c: + .text start:0x800986A4 end:0x8009BABC + .data start:0x800F0460 end:0x800F0628 + .bss start:0x80130C50 end:0x80130F20 + .sdata start:0x80135400 end:0x80135410 + .sdata2 start:0x801360D8 end:0x801360E0 + +dolphin/base/PPCArch.c: + .text start:0x8009BABC end:0x8009BBD0 + +dolphin/os/OS.c: + .text start:0x8009BBD0 end:0x8009C6BC + .data start:0x800F0628 end:0x800F0820 + .bss start:0x80130F20 end:0x80130F70 + .sdata start:0x80135410 end:0x80135420 + .sbss start:0x801357B0 end:0x801357F0 + +dolphin/os/OSAlarm.c: + .text start:0x8009C6BC end:0x8009CE18 + .data start:0x800F0820 end:0x800F0830 + .sbss start:0x801357F0 end:0x801357F8 + +dolphin/os/OSAlloc.c: + .text start:0x8009CE18 end:0x8009D488 + .data start:0x800F0830 end:0x800F0BC8 + .sdata start:0x80135420 end:0x80135428 + .sbss start:0x801357F8 end:0x80135808 + +dolphin/os/OSArena.c: + .text start:0x8009D488 end:0x8009D4A8 + .sdata start:0x80135428 end:0x80135430 + .sbss start:0x80135808 end:0x80135810 + +dolphin/os/OSAudioSystem.c: + .text start:0x8009D4A8 end:0x8009D73C + .data start:0x800F0BC8 end:0x800F0C48 + +dolphin/os/OSCache.c: + .text start:0x8009D73C end:0x8009DD88 + .data start:0x800F0C48 end:0x800F0E78 + +dolphin/os/OSContext.c: + .text start:0x8009DD88 end:0x8009E5F8 + .data start:0x800F0E78 end:0x800F1050 + +dolphin/os/OSError.c: + .text start:0x8009E5F8 end:0x8009ECA4 + .data start:0x800F1050 end:0x800F1370 + .bss start:0x80130F70 end:0x80130FC0 + .sdata start:0x80135430 end:0x80135438 + +dolphin/os/OSFont.c: + .text start:0x8009ECA4 end:0x8009ECFC + .sdata start:0x80135438 end:0x80135440 + +dolphin/os/OSInterrupt.c: + .text start:0x8009ECFC end:0x8009F568 + .data start:0x800F1370 end:0x800F13A0 + .sbss start:0x80135810 end:0x80135828 + +dolphin/os/OSLink.c: + .text start:0x8009F568 end:0x8009F580 + +dolphin/os/OSMessage.c: + .text start:0x8009F580 end:0x8009F784 + +dolphin/os/OSMemory.c: + .text start:0x8009F784 end:0x8009FA5C + .data start:0x800F13A0 end:0x800F13B0 + +dolphin/os/OSMutex.c: + .text start:0x8009FA5C end:0x8009FACC + +dolphin/os/OSReboot.c: + .text start:0x8009FACC end:0x8009FE28 + .bss start:0x80130FC0 end:0x80130FE0 + .sbss start:0x80135828 end:0x80135838 + +dolphin/os/OSReset.c: + .text start:0x8009FE28 end:0x800A024C + .sbss start:0x80135838 end:0x80135848 + +dolphin/os/OSResetSW.c: + .text start:0x800A024C end:0x800A05D8 + .sbss start:0x80135848 end:0x80135868 + +dolphin/os/OSRtc.c: + .text start:0x800A05D8 end:0x800A1054 + .bss start:0x80130FE0 end:0x80131038 + +dolphin/os/OSSync.c: + .text start:0x800A1054 end:0x800A10D8 + +dolphin/os/OSThread.c: + .text start:0x800A10D8 end:0x800A22A8 + .bss start:0x80131038 end:0x80131A30 + .sdata start:0x80135440 end:0x80135448 + .sbss start:0x80135868 end:0x80135878 + +dolphin/os/__start.c: + .init start:0x80003100 end:0x80003400 + .sbss start:0x80135878 end:0x80135880 + +dolphin/os/OSTime.c: + .text start:0x800A22A8 end:0x800A26CC + .data start:0x800F13B0 end:0x800F1410 + +dolphin/os/__ppc_eabi_init.c: + .init start:0x80003400 end:0x80003458 + .text start:0x800A26CC end:0x800A2764 + +dolphin/exi/EXIBios.c: + .text start:0x800A2764 end:0x800A4140 + .data start:0x800F1410 end:0x800F1520 + .bss start:0x80131A30 end:0x80131AF0 + .sdata start:0x80135448 end:0x80135450 + .sbss start:0x80135880 end:0x80135888 + +dolphin/exi/EXIUart.c: + .text start:0x800A4140 end:0x800A471C + .sbss start:0x80135888 end:0x80135898 + +dolphin/si/SIBios.c: + .text start:0x800A471C end:0x800A5E0C + .data start:0x800F1520 end:0x800F1638 + .bss start:0x80131AF0 end:0x80131CF0 + .sdata start:0x80135450 end:0x80135458 + .sbss start:0x80135898 end:0x801358A8 + +dolphin/si/SISamplingRate.c: + .text start:0x800A5E0C end:0x800A5F14 + .data start:0x800F1638 end:0x800F16D0 + .sbss start:0x801358A8 end:0x801358B0 + +dolphin/vi/vi.c: + .text start:0x800A5F14 end:0x800A7CE0 + .data start:0x800F16D0 end:0x800F1AA0 + .bss start:0x80131CF0 end:0x80131E38 + .sdata start:0x80135458 end:0x80135468 + .sbss start:0x801358B0 end:0x80135910 + +dolphin/db/db.c: + .text start:0x800A7CE0 end:0x800A7DCC + .data start:0x800F1AA0 end:0x800F1AC0 + .sbss start:0x80135910 end:0x80135918 + +dolphin/mtx/mtx.c: + .text start:0x800A7DCC end:0x800A7FC4 + .sdata start:0x80135468 end:0x80135470 + .sdata2 start:0x801360E0 end:0x801360E8 + +dolphin/mtx/mtxvec.c: + .text start:0x800A7FC4 end:0x800A8018 + +dolphin/mtx/mtx44.c: + .text start:0x800A8018 end:0x800A8284 + .sdata2 start:0x801360E8 end:0x80136100 + +dolphin/gx/GXInit.c: + .text start:0x800A8284 end:0x800A9604 + .data start:0x800F1AC0 end:0x800F1D00 + .bss start:0x80131E38 end:0x80132468 + .sdata start:0x80135470 end:0x80135478 + .sbss start:0x80135918 end:0x80135940 + .sdata2 start:0x80136100 end:0x80136128 + +dolphin/gx/GXFifo.c: + .text start:0x800A9604 end:0x800A9D9C + .sbss start:0x80135940 end:0x80135960 + +dolphin/gx/GXAttr.c: + .text start:0x800A9D9C end:0x800AAAF0 + .data start:0x800F1D00 end:0x800F1E60 + .sdata start:0x80135478 end:0x80135488 + +dolphin/gx/GXMisc.c: + .text start:0x800AAAF0 end:0x800AB3E0 + .sbss start:0x80135960 end:0x80135978 + +dolphin/gx/GXGeometry.c: + .text start:0x800AB3E0 end:0x800AB71C + +dolphin/gx/GXFrameBuf.c: + .text start:0x800AB71C end:0x800AC3FC + .data start:0x800F1E60 end:0x800F1F90 + .sdata2 start:0x80136128 end:0x80136138 + +dolphin/gx/GXLight.c: + .text start:0x800AC3FC end:0x800AC6D0 + +dolphin/gx/GXTexture.c: + .text start:0x800AC6D0 end:0x800AD568 + .data start:0x800F1F90 end:0x800F20C0 + .sdata start:0x80135488 end:0x801354C8 + .sdata2 start:0x80136138 end:0x80136160 + +dolphin/gx/GXBump.c: + .text start:0x800AD568 end:0x800AD7DC + +dolphin/gx/GXTev.c: + .text start:0x800AD7DC end:0x800ADF40 + .data start:0x800F20C0 end:0x800F2138 + +dolphin/gx/GXPixel.c: + .text start:0x800ADF40 end:0x800AE738 + .data start:0x800F2138 end:0x800F2158 + .sdata2 start:0x80136160 end:0x801361C0 + +dolphin/gx/GXTransform.c: + .text start:0x800AE738 end:0x800AECCC + .sdata2 start:0x801361C0 end:0x801361D0 + +dolphin/gx/GXPerf.c: + .text start:0x800AECCC end:0x800AFD00 + .data start:0x800F2158 end:0x800F22A0 + +dolphin/pad/Padclamp.c: + .text start:0x800AFD00 end:0x800AFF44 + .rodata start:0x800D3200 end:0x800D3210 + +dolphin/pad/Pad.c: + .text start:0x800AFF44 end:0x800B188C + .data start:0x800F22A0 end:0x800F22F8 + .bss start:0x80132468 end:0x801324B8 + .sdata start:0x801354C8 end:0x801354E8 + .sbss start:0x80135978 end:0x801359A8 + +dolphin/dvd/dvdlow.c: + .text start:0x800B188C end:0x800B2708 + .bss start:0x801324B8 end:0x801325A0 + .sdata start:0x801354E8 end:0x801354F0 + .sbss start:0x801359A8 end:0x801359F0 + +dolphin/dvd/dvdfs.c: + .text start:0x800B2708 end:0x800B2F70 + .data start:0x800F22F8 end:0x800F2460 + .sdata start:0x801354F0 end:0x801354F8 + .sbss start:0x801359F0 end:0x80135A10 + +dolphin/dvd/dvd.c: + .text start:0x800B2F70 end:0x800B56A4 + .data start:0x800F2460 end:0x800F25E0 + .bss start:0x801325A0 end:0x80132638 + .sdata start:0x801354F8 end:0x80135510 + .sbss start:0x80135A10 end:0x80135A58 + +dolphin/dvd/dvdqueue.c: + .text start:0x800B56A4 end:0x800B589C + .bss start:0x80132638 end:0x80132658 + +dolphin/dvd/dvderror.c: + .text start:0x800B589C end:0x800B5A34 + .data start:0x800F25E0 end:0x800F2628 + +dolphin/dvd/dvdidutils.c: + .text start:0x800B5A34 end:0x800B5B2C + +dolphin/dvd/dvdFatal.c: + .text start:0x800B5B2C end:0x800B5B5C + .sbss start:0x80135A58 end:0x80135A60 + +dolphin/dvd/fstload.c: + .text start:0x800B5B5C end:0x800B5D9C + .data start:0x800F2628 end:0x800F2698 + .bss start:0x80132658 end:0x801326C8 + .sdata start:0x80135510 end:0x80135520 + .sbss start:0x80135A60 end:0x80135A70 + +dolphin/demo/DEMOInit.c: + .text start:0x800B5D9C end:0x800B68C4 + .data start:0x800F2698 end:0x800F2820 + .bss start:0x801326C8 end:0x80132708 + .sdata start:0x80135520 end:0x80135528 + .sbss start:0x80135A70 end:0x80135A98 + .sdata2 start:0x801361D0 end:0x801361E0 + +dolphin/demo/DEMOPuts.c: + .text start:0x800B68C4 end:0x800B6E30 + .bss start:0x80132708 end:0x80132728 + .sbss start:0x80135A98 end:0x80135AA0 + .sdata2 start:0x801361E0 end:0x80136208 + +dolphin/demo/DEMOFont.c: + .text start:0x800B6E30 end:0x800B6EF4 + .data start:0x800F2820 end:0x800F3420 + +dolphin/demo/DEMOPad.c: + .text start:0x800B6EF4 end:0x800B722C + .data start:0x800F3420 end:0x800F3430 + .bss start:0x80132728 end:0x801327D0 + .sbss start:0x80135AA0 end:0x80135AA8 + +dolphin/demo/DEMOStats.c: + .text start:0x800B722C end:0x800B7F84 + .data start:0x800F3430 end:0x800F3588 + .sdata start:0x80135528 end:0x80135530 + .sbss start:0x80135AA8 end:0x80135B10 + .sdata2 start:0x80136208 end:0x80136218 + +metrotrk/mem_TRK.c: + .init start:0x80003458 end:0x8000347C + +metrotrk/__exception.c: + .init start:0x8000347C end:0x800053B0 + +dolphin/ai/ai.c: + .text start:0x800B7F84 end:0x800B88A4 + .data start:0x800F3588 end:0x800F35D0 + .sdata start:0x80135530 end:0x80135538 + .sbss start:0x80135B10 end:0x80135B50 + +dolphin/ar/ar.c: + .text start:0x800B88A4 end:0x800BA308 + .data start:0x800F35D0 end:0x800F3618 + .sdata start:0x80135538 end:0x80135540 + .sbss start:0x80135B50 end:0x80135B70 + +dolphin/dsp/dsp.c: + .text start:0x800BA308 end:0x800BA488 + .data start:0x800F3618 end:0x800F3698 + .sdata start:0x80135540 end:0x80135548 + .sbss start:0x80135B70 end:0x80135B78 + +dolphin/dsp/dsp_debug.c: + .text start:0x800BA488 end:0x800BA4D8 + +dolphin/dsp/dsp_task.c: + .text start:0x800BA4D8 end:0x800BAD5C + .data start:0x800F3698 end:0x800F37D8 + .sbss start:0x80135B78 end:0x80135B90 + +dolphin/card/CARDBios.c: + .text start:0x800BAD5C end:0x800BC040 + .data start:0x800F37D8 end:0x800F3840 + .bss start:0x801327D0 end:0x80132A20 + .sdata start:0x80135548 end:0x80135550 + .sbss start:0x80135B90 end:0x80135BA0 + +dolphin/card/CARDUnlock.c: + .text start:0x800BC040 end:0x800BD2A0 + .data start:0x800F3840 end:0x800F39A0 + .sdata start:0x80135550 end:0x80135558 + +dolphin/card/CARDNet.c: + .sdata start:0x80135558 end:0x80135560 + +dolphin/card/CARDRdwr.c: + .text start:0x800BD2A0 end:0x800BD538 + +dolphin/card/CARDBlock.c: + .text start:0x800BD538 end:0x800BD93C + +dolphin/card/CARDDir.c: + .text start:0x800BD93C end:0x800BDBA0 + +dolphin/card/CARDCheck.c: + .text start:0x800BDBA0 end:0x800BEB08 + +dolphin/card/CARDMount.c: + .text start:0x800BEB08 end:0x800BF5C8 + .data start:0x800F39A0 end:0x800F39E0 + +dolphin/card/CARDFormat.c: + .text start:0x800BF5C8 end:0x800BFDAC + +dolphin/card/CARDOpen.c: + .text start:0x800BFDAC end:0x800C0398 + +dolphin/card/CARDCreate.c: + .text start:0x800C0398 end:0x800C06E8 + +dolphin/card/CARDRead.c: + .text start:0x800C06E8 end:0x800C0B5C + +dolphin/card/CARDWrite.c: + .text start:0x800C0B5C end:0x800C0E90 + +dolphin/card/CARDDelete.c: + .text start:0x800C0E90 end:0x800C1044 + +dolphin/card/CARDStat.c: + .text start:0x800C1044 end:0x800C14C4 + +dolphin/thp/THPDec.c: + .text start:0x800C14C4 end:0x800C8A2C + .rodata start:0x800D3210 end:0x800D32A0 + .data start:0x800F39E0 end:0x800F3A20 + .bss start:0x80132A20 end:0x80132B50 + .sdata start:0x80135560 end:0x80135568 + .sbss start:0x80135BA0 end:0x80135CB8 + .sdata2 start:0x80136218 end:0x80136238 + +dolphin/thp/THPAudio.c: + .text start:0x800C8A2C end:0x800C8F5C + +dolphin/tex/texPalette.c: + .text start:0x800C8F5C end:0x800C9040 + .sdata2 start:0x80136238 end:0x80136240 + +metrotrk/mainloop.c: + .text start:0x800C9040 end:0x800C91A8 + +metrotrk/nubevent.c: + .text start:0x800C91A8 end:0x800C9404 + .bss start:0x80132B50 end:0x80132B78 + +metrotrk/nubinit.c: + .text start:0x800C9404 end:0x800C9598 + .rodata start:0x800D32A0 end:0x800D32C0 + .bss start:0x80132B78 end:0x80132B80 + +metrotrk/msg.c: + .text start:0x800C9598 end:0x800C95C0 + +metrotrk/msgbuf.c: + .text start:0x800C95C0 end:0x800C9E08 + .bss start:0x80132B80 end:0x80134530 + +metrotrk/serpoll.c: + .text start:0x800C9E08 end:0x800C9FD0 + .bss start:0x80134530 end:0x80134548 + +metrotrk/usr_put.c: + .text start:0x800C9FD0 end:0x800C9FD4 + +metrotrk/dispatch.c: + .text start:0x800C9FD4 end:0x800CA06C + .data start:0x800F3A20 end:0x800F3AA8 + .bss start:0x80134548 end:0x80134550 + +metrotrk/msghndlr.c: + .text start:0x800CA06C end:0x800CB2D8 + +metrotrk/support.c: + .text start:0x800CB2D8 end:0x800CB754 + +metrotrk/mutex_TRK.c: + .text start:0x800CB754 end:0x800CB76C + +metrotrk/notify.c: + .text start:0x800CB76C end:0x800CB844 + +metrotrk/flush_cache.c: + .text start:0x800CB844 end:0x800CB87C + +metrotrk/targimpl.c: + .text start:0x800CB87C end:0x800CCE58 + .rodata start:0x800D32C0 end:0x800D3310 + .data start:0x800F3AA8 end:0x800F3AD8 + .bss start:0x80134550 end:0x80134AD0 + +metrotrk/dolphin_trk.c: + .init start:0x800053B0 end:0x800053D0 + .text start:0x800CCE58 end:0x800CD04C + .data start:0x800F3AD8 end:0x800F3B18 + +metrotrk/mpc_7xx_603e.c: + .text start:0x800CD04C end:0x800CD3BC + +metrotrk/main_TRK.c: + .text start:0x800CD3BC end:0x800CD40C + .bss start:0x80134AD0 end:0x80134AD8 + +metrotrk/dolphin_trk_glue.c: + .text start:0x800CD40C end:0x800CD764 + .data start:0x800F3B18 end:0x800F3B38 + +libc/ansi_files.c: + .data start:0x800F3B38 end:0x800F3C10 + +metrotrk/targcont.c: + .text start:0x800CD764 end:0x800CD798 + +runtime/__va_arg.c: + .text start:0x800CD798 end:0x800CD88C + +runtime/global_destructor_chain.c: + .text start:0x800CD88C end:0x800CD8D4 + .sbss start:0x80135CB8 end:0x80135CC0 + +runtime/runtime.c: + .text start:0x800CD8D4 end:0x800CDFE4 + .rodata start:0x800D3310 end:0x800D3328 + +libc/abort_exit.c: + .text start:0x800CDFE4 end:0x800CE0F0 + .dtors start:0x800D2FC0 end:0x800D2FC4 + .bss start:0x80134AD8 end:0x80134CD8 + .sbss start:0x80135CC0 end:0x80135CD8 + +libc/errno.c: + .sbss start:0x80135CD8 end:0x80135CE0 + +libc/ansi_fp.c: + .text start:0x800CE0F0 end:0x800CE4A4 + .rodata start:0x800D3328 end:0x800D33B0 + .sdata2 start:0x80136240 end:0x80136268 + +libc/buffer_io.c: + .text start:0x800CE4A4 end:0x800CE5A4 + +libc/critical_regions.ppc_eabi.c: + .text start:0x800CE5A4 end:0x800CE5A8 + +libc/ctype.c: + .text start:0x800CE5A8 end:0x800CE5F8 + .rodata start:0x800D33B0 end:0x800D36B0 + +libc/direct_io.c: + .text start:0x800CE5F8 end:0x800CE8D4 + +libc/mbstring.c: + .text start:0x800CE8D4 end:0x800CE910 + +libc/mem.c: + .text start:0x800CE910 end:0x800CEA5C + +libc/mem_funcs.c: + .text start:0x800CEA5C end:0x800CED38 + +libc/misc_io.c: + .text start:0x800CED38 end:0x800CED3C + +libc/printf.c: + .text start:0x800CED3C end:0x800D0740 + .rodata start:0x800D36B0 end:0x800D36C0 + .data start:0x800F3C10 end:0x800F3E30 + .sdata start:0x80135568 end:0x80135570 + .sdata2 start:0x80136268 end:0x80136270 + +libc/scanf.c: + .text start:0x800D0740 end:0x800D07D0 + +libc/string.c: + .text start:0x800D07D0 end:0x800D0A7C + .sdata start:0x80135570 end:0x80135578 + +libc/strtoul.c: + .text start:0x800D0A7C end:0x800D0E88 + .data start:0x800F3E30 end:0x800F3E78 + +libc/float.c: + .data start:0x800F3E78 end:0x800F3E80 + +libc/uart_console_io.c: + .text start:0x800D0E88 end:0x800D1008 + .sbss start:0x80135CE0 end:0x80135CE8 + +libc/wchar_io.c: + .text start:0x800D1008 end:0x800D1088 + +libc/e_asin.c: + .text start:0x800D1088 end:0x800D1090 + +libc/e_pow.c: + .text start:0x800D1090 end:0x800D18C8 + .rodata start:0x800D36C0 end:0x800D36F0 + .sdata2 start:0x80136270 end:0x80136380 + +libc/fminmaxdim.c: + .text start:0x800D18C8 end:0x800D1948 + +libc/s_ceil.c: + .text start:0x800D1948 end:0x800D1AB0 + .sdata2 start:0x80136380 end:0x80136390 + +libc/s_copysign.c: + .text start:0x800D1AB0 end:0x800D1ADC + +libc/s_floor.c: + .text start:0x800D1ADC end:0x800D1C48 + .sdata2 start:0x80136390 end:0x801363A0 + +libc/s_frexp.c: + .text start:0x800D1C48 end:0x800D1CE4 + .sdata2 start:0x801363A0 end:0x801363A8 + +libc/s_ldexp.c: + .text start:0x800D1CE4 end:0x800D1E5C + .sdata2 start:0x801363A8 end:0x801363D0 + +libc/w_pow.c: + .text start:0x800D1E5C end:0x800D1E7C + +libc/hyperbolicsf.c: + .text start:0x800D1E7C end:0x800D1E84 + +libc/log10f.c: + .text start:0x800D1E84 end:0x800D2058 + .rodata start:0x800D36F0 end:0x800D3700 + .sdata2 start:0x801363D0 end:0x801363F0 + +libc/trigf.c: + .text start:0x800D2058 end:0x800D2444 + .ctors start:0x800D2FA0 end:0x800D2FA4 + .rodata start:0x800D3700 end:0x800D3710 + .data start:0x800F3E80 end:0x800F3E90 + .sdata2 start:0x801363F0 end:0x80136408 + +libc/common_float_tables.c: + .data start:0x800F3E90 end:0x800F3ED8 + +libc/math_inlines.c: + .text start:0x800D2444 end:0x800D24D4 + .sdata2 start:0x80136408 end:0x80136420 + +runtime/__mem.c: + .init start:0x800053D0 end:0x80005514 + +debugger/AmcExi2Stubs.c: + .text start:0x800D24D4 end:0x800D2504 + +debugger/DebuggerDriver.c: + .text start:0x800D2504 end:0x800D2F84 + .sdata start:0x80135578 end:0x80135579 + .sbss start:0x80135CE8 end:0x80135CFD + +debugger/odenotstub.c: + .text start:0x800D2F84 end:0x800D2F8C diff --git a/config/ce-j/symbols.txt b/config/ce-j/symbols.txt new file mode 100644 index 0000000..62903c4 --- /dev/null +++ b/config/ce-j/symbols.txt @@ -0,0 +1,3742 @@ +__check_pad3 = .init:0x80003100; // type:function size:0x40 scope:global +__set_debug_bba = .init:0x80003140; // type:function size:0xC scope:local +__get_debug_bba = .init:0x8000314C; // type:function size:0x8 scope:local +__start = .init:0x80003154; // type:function size:0x15C scope:weak +__init_registers = .init:0x800032B0; // type:function size:0x90 scope:global +__init_data = .init:0x80003340; // type:function size:0xC0 scope:global +__init_hardware = .init:0x80003400; // type:function size:0x24 scope:global +__flush_cache = .init:0x80003424; // type:function size:0x34 scope:global +TRK_memcpy = .init:0x80003458; // type:function size:0x24 scope:global +gTRKInterruptVectorTable = .init:0x8000347C; // type:label scope:global +lbl_80004FF8 = .init:0x80004FF8; // type:label +gTRKInterruptVectorTableEnd = .init:0x800053B0; // type:label scope:global +__TRK_reset = .init:0x800053B0; // type:function size:0x20 scope:global +memset = .init:0x800053D0; // type:function size:0x30 scope:global +__fill_mem = .init:0x80005400; // type:function size:0xC4 scope:global +memcpy = .init:0x800054C4; // type:function size:0x50 scope:global +_rom_copy_info = .init:0x80005514; // type:object size:0x6C scope:global data:4byte +_bss_init_info = .init:0x80005580; // type:object size:0x18 scope:global data:4byte +xlCoreBeforeRender = .text:0x800055A0; // type:function size:0xD4 scope:global +main = .text:0x80005674; // type:function size:0x268 scope:global +xlCoreHiResolution = .text:0x800058DC; // type:function size:0x8 scope:global +xlCoreGetArgument = .text:0x800058E4; // type:function size:0x34 scope:global +xlCoreGetArgumentCount = .text:0x80005918; // type:function size:0x8 scope:global +xlCoreInitGX = .text:0x80005920; // type:function size:0x25C scope:global +xlCoreInitMem = .text:0x80005B7C; // type:function size:0xD8 scope:local +xlCoreInitRenderMode = .text:0x80005C54; // type:function size:0x174 scope:local +xlCoreReset = .text:0x80005DC8; // type:function size:0x3C scope:global +xlPostReset = .text:0x80005E04; // type:function size:0x8 scope:global +xlPostSetup = .text:0x80005E0C; // type:function size:0x8 scope:global +xlPostText = .text:0x80005E14; // type:function size:0x54 scope:global +xlFileEvent = .text:0x80005E68; // type:function size:0xB0 scope:global +xlFileSetPosition = .text:0x80005F18; // type:function size:0x28 scope:global +xlFileGet = .text:0x80005F40; // type:function size:0x104 scope:global +xlFileClose = .text:0x80006044; // type:function size:0x34 scope:global +xlFileOpen = .text:0x80006078; // type:function size:0xD4 scope:global +xlFileGetSize = .text:0x8000614C; // type:function size:0x11C scope:global +xlFileSetRead = .text:0x80006268; // type:function size:0xC scope:global +xlFileSetOpen = .text:0x80006274; // type:function size:0xC scope:global +xlListReset = .text:0x80006280; // type:function size:0x8 scope:global +xlListSetup = .text:0x80006288; // type:function size:0x28 scope:global +xlListTestItem = .text:0x800062B0; // type:function size:0x8C scope:global +xlListFreeItem = .text:0x8000633C; // type:function size:0xAC scope:global +xlListMakeItem = .text:0x800063E8; // type:function size:0xAC scope:global +xlListFree = .text:0x80006494; // type:function size:0xBC scope:global +xlListMake = .text:0x80006550; // type:function size:0xF8 scope:global +xlHeapReset = .text:0x80006648; // type:function size:0x68 scope:global +xlHeapSetup = .text:0x800066B0; // type:function size:0x1C0 scope:global +xlHeapGetFree = .text:0x80006870; // type:function size:0x98 scope:global +xlHeapFill32 = .text:0x80006908; // type:function size:0x1E8 scope:global +xlHeapCopy = .text:0x80006AF0; // type:function size:0x478 scope:global +xlHeapCompact = .text:0x80006F68; // type:function size:0x130 scope:global +xlHeapFree = .text:0x80007098; // type:function size:0x11C scope:global +xlHeapTake = .text:0x800071B4; // type:function size:0x288 scope:global +xlHeapFindUpperBlock = .text:0x8000743C; // type:function size:0x104 scope:local +xlHeapBlockCacheReset = .text:0x80007540; // type:function size:0x10C scope:local +xlHeapBlockCacheClear = .text:0x8000764C; // type:function size:0x10C scope:local +xlHeapBlockCacheAdd = .text:0x80007758; // type:function size:0x268 scope:local +xlHeapBlockCacheGet = .text:0x800079C0; // type:function size:0x200 scope:local +xlObjectReset = .text:0x80007BC0; // type:function size:0x70 scope:global +xlObjectSetup = .text:0x80007C30; // type:function size:0x3C scope:global +xlObjectEvent = .text:0x80007C6C; // type:function size:0xB8 scope:global +xlObjectTest = .text:0x80007D24; // type:function size:0x68 scope:global +xlObjectFree = .text:0x80007D8C; // type:function size:0x98 scope:global +xlObjectMake = .text:0x80007E24; // type:function size:0x15C scope:global +xlMain = .text:0x80007F80; // type:function size:0x5B8 scope:global +simulatorGetArgument = .text:0x80008538; // type:function size:0x40 scope:global +simulatorParseArguments = .text:0x80008578; // type:function size:0x164 scope:local +simulatorDrawCursor = .text:0x800086DC; // type:function size:0x208 scope:local +simulatorMCardPollDrawFormatBar = .text:0x800088E4; // type:function size:0x130 scope:global +simulatorMCardPollDrawBar = .text:0x80008A14; // type:function size:0x130 scope:global +simulatorDrawMCardText = .text:0x80008B44; // type:function size:0x98 scope:global +simulatorTestReset = .text:0x80008BDC; // type:function size:0x1E0 scope:global +simulatorRumbleStop = .text:0x80008DBC; // type:function size:0x28 scope:global +simulatorRumbleStart = .text:0x80008DE4; // type:function size:0x28 scope:global +simulatorWriteFLASH = .text:0x80008E0C; // type:function size:0x34 scope:global +simulatorReadFLASH = .text:0x80008E40; // type:function size:0x34 scope:global +simulatorWriteSRAM = .text:0x80008E74; // type:function size:0x34 scope:global +simulatorReadSRAM = .text:0x80008EA8; // type:function size:0x34 scope:global +simulatorWriteEEPROM = .text:0x80008EDC; // type:function size:0x70 scope:global +simulatorReadEEPROM = .text:0x80008F4C; // type:function size:0x70 scope:global +simulatorWritePak = .text:0x80008FBC; // type:function size:0x7C scope:global +simulatorReadPak = .text:0x80009038; // type:function size:0x7C scope:global +simulatorDetectController = .text:0x800090B4; // type:function size:0x54 scope:global +simulatorShowLoad = .text:0x80009108; // type:function size:0x8 scope:global +simulatorReadController = .text:0x80009110; // type:function size:0x574 scope:global +simulatorCopyControllerMap = .text:0x80009684; // type:function size:0xC8 scope:global +simulatorSetControllerMap = .text:0x8000974C; // type:function size:0xD8 scope:global +simulatorResetAndPlayMovie = .text:0x80009824; // type:function size:0x15C scope:global +simulatorReset = .text:0x80009980; // type:function size:0xB0 scope:global +simulatorDrawErrorMessageWait = .text:0x80009A30; // type:function size:0x314C scope:global +simulatorDrawYesNoMessage = .text:0x8000CB7C; // type:function size:0x3A8 scope:global +simulatorDrawYesNoMessageLoop = .text:0x8000CF24; // type:function size:0x2CC scope:global +simulatorPrepareMessage = .text:0x8000D1F0; // type:function size:0x16C scope:global +simulatorDrawErrorMessage = .text:0x8000D35C; // type:function size:0x230 scope:global +simulatorDrawOKImage = .text:0x8000D58C; // type:function size:0x628 scope:global +simulatorDrawYesNoImage = .text:0x8000DBB4; // type:function size:0x8D0 scope:global +simulatorDrawImage = .text:0x8000E484; // type:function size:0x81C scope:global +simulatorPlayMovie = .text:0x8000ECA0; // type:function size:0x24 scope:global +simulatorDVDRead = .text:0x8000ECC4; // type:function size:0xE4 scope:global +simulatorDVDOpen = .text:0x8000EDA8; // type:function size:0x70 scope:global +simulatorDVDShowError = .text:0x8000EE18; // type:function size:0x208 scope:global +simulatorUnpackTexPalette = .text:0x8000F020; // type:function size:0xDC scope:global +simulatorGXInit = .text:0x8000F0FC; // type:function size:0x6D0 scope:global +MovieDraw = .text:0x8000F7CC; // type:function size:0x38 scope:global +MovieInit = .text:0x8000F804; // type:function size:0x8C scope:global +THPPlayerInit = .text:0x8000F890; // type:function size:0x138 scope:global +THPPlayerOpen = .text:0x8000F9C8; // type:function size:0x278 scope:global +THPPlayerCalcNeedMemory = .text:0x8000FC40; // type:function size:0xA8 scope:global +THPPlayerSetBuffer = .text:0x8000FCE8; // type:function size:0x23C scope:global +InitAllMessageQueue = .text:0x8000FF24; // type:function size:0xCC scope:global +PrepareReady = .text:0x8000FFF0; // type:function size:0x30 scope:global +THPPlayerPrepare = .text:0x80010020; // type:function size:0x274 scope:global +THPPlayerPlay = .text:0x80010294; // type:function size:0x5C scope:global +PlayControl = .text:0x800102F0; // type:function size:0x29C scope:local +ProperTimingForStart = .text:0x8001058C; // type:function size:0x6C scope:local +ProperTimingForGettingNextFrame = .text:0x800105F8; // type:function size:0x124 scope:local +THPPlayerDrawCurrentFrame = .text:0x8001071C; // type:function size:0xCC scope:global +PushUsedTextureSet = .text:0x800107E8; // type:function size:0x30 scope:local +THPPlayerDrawDone = .text:0x80010818; // type:function size:0x70 scope:global +THPAudioMixCallback = .text:0x80010888; // type:function size:0x178 scope:local +MixAudio = .text:0x80010A00; // type:function size:0x39C scope:local +CreateAudioDecodeThread = .text:0x80010D9C; // type:function size:0xE0 scope:global +AudioDecodeThreadStart = .text:0x80010E7C; // type:function size:0x34 scope:global +AudioDecoder = .text:0x80010EB0; // type:function size:0x28 scope:local +AudioDecoderForOnMemory = .text:0x80010ED8; // type:function size:0xB0 scope:local +AudioDecode = .text:0x80010F88; // type:function size:0xD8 scope:local +PopFreeAudioBuffer = .text:0x80011060; // type:function size:0x34 scope:global +PushFreeAudioBuffer = .text:0x80011094; // type:function size:0x30 scope:global +PopDecodedAudioBuffer = .text:0x800110C4; // type:function size:0x44 scope:global +PushDecodedAudioBuffer = .text:0x80011108; // type:function size:0x30 scope:global +THPGXRestore = .text:0x80011138; // type:function size:0x118 scope:global +THPGXYuv2RgbSetup = .text:0x80011250; // type:function size:0x504 scope:global +THPGXYuv2RgbDraw = .text:0x80011754; // type:function size:0x1E4 scope:global +PushReadedBuffer2 = .text:0x80011938; // type:function size:0x30 scope:global +PopReadedBuffer2 = .text:0x80011968; // type:function size:0x34 scope:global +PushFreeReadBuffer = .text:0x8001199C; // type:function size:0x30 scope:global +PopReadedBuffer = .text:0x800119CC; // type:function size:0x34 scope:global +Reader = .text:0x80011A00; // type:function size:0x12C scope:local +ReadThreadStart = .text:0x80011B2C; // type:function size:0x34 scope:global +CreateReadThread = .text:0x80011B60; // type:function size:0xAC scope:global +movieReset = .text:0x80011C0C; // type:function size:0xA0 scope:global +movieTestReset = .text:0x80011CAC; // type:function size:0x1B4 scope:global +movieDVDRead = .text:0x80011E60; // type:function size:0xB0 scope:global +movieDVDShowError = .text:0x80011F10; // type:function size:0x260 scope:global +movieDrawErrorMessage = .text:0x80012170; // type:function size:0x1C4 scope:global +movieDrawImage = .text:0x80012334; // type:function size:0x51C scope:global +movieGXInit = .text:0x80012850; // type:function size:0x6D0 scope:global +CreateVideoDecodeThread = .text:0x80012F20; // type:function size:0xE4 scope:global +VideoDecodeThreadStart = .text:0x80013004; // type:function size:0x34 scope:global +VideoDecoder = .text:0x80013038; // type:function size:0xDC scope:local +VideoDecoderForOnMemory = .text:0x80013114; // type:function size:0x134 scope:local +VideoDecode = .text:0x80013248; // type:function size:0x120 scope:local +PopFreeTextureSet = .text:0x80013368; // type:function size:0x34 scope:global +PushFreeTextureSet = .text:0x8001339C; // type:function size:0x30 scope:global +PopDecodedTextureSet = .text:0x800133CC; // type:function size:0x44 scope:global +PushDecodedTextureSet = .text:0x80013410; // type:function size:0x30 scope:global +mcardUpdate = .text:0x80013440; // type:function size:0x2B4 scope:global +mcardStore = .text:0x800136F4; // type:function size:0xF08 scope:global +mcardOpenDuringGame = .text:0x800145FC; // type:function size:0xB50 scope:global +mcardOpen = .text:0x8001514C; // type:function size:0x1804 scope:global +mcardWrite = .text:0x80016950; // type:function size:0x360 scope:global +mcardOpenDuringGameError = .text:0x80016CB0; // type:function size:0xE0 scope:global +mcardOpenError = .text:0x80016D90; // type:function size:0xE0 scope:global +mcardMenu = .text:0x80016E70; // type:function size:0x9A4 scope:global +mcardRead = .text:0x80017814; // type:function size:0x30 scope:global +mcardGameRelease = .text:0x80017844; // type:function size:0xA8 scope:global +mcardGameErase = .text:0x800178EC; // type:function size:0x1A8 scope:global +mcardFileErase = .text:0x80017A94; // type:function size:0x190 scope:global +mcardCardErase = .text:0x80017C24; // type:function size:0x13C scope:global +mcardGameCreate = .text:0x80017D60; // type:function size:0x898 scope:global +mcardFileCreate = .text:0x800185F8; // type:function size:0x658 scope:global +mcardGameSet = .text:0x80018C50; // type:function size:0x408 scope:global +mcardFileSet = .text:0x80019058; // type:function size:0x424 scope:global +mcardInit = .text:0x8001947C; // type:function size:0x5C scope:global +mcardReInit = .text:0x800194D8; // type:function size:0x198 scope:global +mcardWriteGameDataReset = .text:0x80019670; // type:function size:0x68 scope:global +mcardReadGameData = .text:0x800196D8; // type:function size:0x398 scope:global +mcardWriteTimeAsynch = .text:0x80019A70; // type:function size:0x204 scope:global +mcardWriteConfigAsynch = .text:0x80019C74; // type:function size:0x1C4 scope:global +mcardReadBufferAsynch = .text:0x80019E38; // type:function size:0x1A4 scope:global +mcardWriteBufferAsynch = .text:0x80019FDC; // type:function size:0x1E4 scope:global +mcardWriteFileHeaderInitial = .text:0x8001A1C0; // type:function size:0x224 scope:global +mcardReadFileHeaderInitial = .text:0x8001A3E4; // type:function size:0x158 scope:global +mcardWriteFileHeader = .text:0x8001A53C; // type:function size:0x3BC scope:global +mcardReadFileHeader = .text:0x8001A8F8; // type:function size:0x224 scope:global +mcardWriteAnywherePartial = .text:0x8001AB1C; // type:function size:0x1AC scope:global +mcardWriteAnywhere = .text:0x8001ACC8; // type:function size:0x19C scope:global +mcardReadAnywhere = .text:0x8001AE64; // type:function size:0x170 scope:global +mcardReadyCard = .text:0x8001AFD4; // type:function size:0x194 scope:global +mcardPoll = .text:0x8001B168; // type:function size:0xEC scope:global +mcardVerifyChecksumFileHeader = .text:0x8001B254; // type:function size:0x22C scope:global +mcardCheckChecksumFileHeader = .text:0x8001B480; // type:function size:0x314 scope:global +mcardReplaceFileBlock = .text:0x8001B794; // type:function size:0x480 scope:global +mcardSaveChecksumFileHeader = .text:0x8001BC14; // type:function size:0x35C scope:global +mcardCalculateChecksumFileBlock2 = .text:0x8001BF70; // type:function size:0x168 scope:global +mcardCalculateChecksumFileBlock1 = .text:0x8001C0D8; // type:function size:0x168 scope:global +mcardCalculateChecksum = .text:0x8001C240; // type:function size:0x60 scope:global +mcardGCErrorHandler = .text:0x8001C2A0; // type:function size:0x1A4 scope:global +codeEvent = .text:0x8001C444; // type:function size:0x54 scope:global +soundEvent = .text:0x8001C498; // type:function size:0x1F8 scope:global +soundPlayBeep = .text:0x8001C690; // type:function size:0x7C scope:global +soundLoadBeep = .text:0x8001C70C; // type:function size:0x118 scope:global +soundCallbackBeep = .text:0x8001C824; // type:function size:0x5C scope:global +soundSetBufferSize = .text:0x8001C880; // type:function size:0x1A0 scope:global +soundGetDMABuffer = .text:0x8001CA20; // type:function size:0x34 scope:global +soundSetAddress = .text:0x8001CA54; // type:function size:0xC scope:global +soundSetDACRate = .text:0x8001CA60; // type:function size:0x20 scope:global +soundSetLength = .text:0x8001CA80; // type:function size:0x38 scope:global +soundMakeBuffer = .text:0x8001CAB8; // type:function size:0x1EC scope:global +soundCallbackDMA = .text:0x8001CCA4; // type:function size:0x28 scope:global +soundPlayBuffer = .text:0x8001CCCC; // type:function size:0xC0 scope:global +soundMakeRamp = .text:0x8001CD8C; // type:function size:0x4C4 scope:global +soundWipeBuffers = .text:0x8001D250; // type:function size:0xFC scope:global +PSMTX44MultVecNoW = .text:0x8001D34C; // type:function size:0x50 scope:global +frameGetTextureInfo = .text:0x8001D39C; // type:function size:0x11C scope:global +frameInvalidateCache = .text:0x8001D4B8; // type:function size:0x16C scope:global +frameSetMatrixHint = .text:0x8001D624; // type:function size:0x11C scope:global +frameFixMatrixHint = .text:0x8001D740; // type:function size:0xB8 scope:global +frameSetBuffer = .text:0x8001D7F8; // type:function size:0x38 scope:global +frameResetUCode = .text:0x8001D830; // type:function size:0xB0 scope:global +frameSetViewport = .text:0x8001D8E0; // type:function size:0x194 scope:global +frameSetLookAt = .text:0x8001DA74; // type:function size:0xB0 scope:global +frameSetLight = .text:0x8001DB24; // type:function size:0x128 scope:global +frameSetLightCount = .text:0x8001DC4C; // type:function size:0xC scope:global +frameLoadTMEM = .text:0x8001DC58; // type:function size:0xF48 scope:global +frameLoadTLUT = .text:0x8001EBA0; // type:function size:0xE0 scope:global +frameCullDL = .text:0x8001EC80; // type:function size:0x14C scope:global +frameLoadVertex = .text:0x8001EDCC; // type:function size:0xA84 scope:global +frameGetMatrix = .text:0x8001F850; // type:function size:0x120 scope:global +frameSetMatrix = .text:0x8001F970; // type:function size:0x68C scope:global +frameGetMode = .text:0x8001FFFC; // type:function size:0x18 scope:global +frameSetMode = .text:0x80020014; // type:function size:0x194 scope:global +frameSetSize = .text:0x800201A8; // type:function size:0x128 scope:global +frameSetFill = .text:0x800202D0; // type:function size:0x2C scope:global +frameDrawReset = .text:0x800202FC; // type:function size:0x44 scope:global +frameLoadTile = .text:0x80020340; // type:function size:0x424 scope:local +frameUpdateCache = .text:0x80020764; // type:function size:0x1F4 scope:local +frameSetupCache = .text:0x80020958; // type:function size:0x4C8 scope:local +frameMakeTexture = .text:0x80020E20; // type:function size:0x11C scope:local +packFreeBlocks = .text:0x80020F3C; // type:function size:0x68 scope:local +packTakeBlocks = .text:0x80020FA4; // type:function size:0xCC scope:local +frameConvertYUVtoRGB = .text:0x80021070; // type:function size:0xCC scope:local +frameScaleMatrix = .text:0x8002113C; // type:function size:0xC8 scope:global +frameEvent = .text:0x80021204; // type:function size:0x384 scope:global +frameGetDepth = .text:0x80021588; // type:function size:0x270 scope:global +frameHackCIMG_Panel = .text:0x800217F8; // type:function size:0x1844 scope:global +frameHackTIMG_Panel = .text:0x8002303C; // type:function size:0xA4 scope:global +PanelDrawFR3D = .text:0x800230E0; // type:function size:0xB4 scope:global +PanelDrawBG16 = .text:0x80023194; // type:function size:0xBC scope:global +PanelDrawBG8 = .text:0x80023250; // type:function size:0xAC scope:global +frameHackCIMG_Zelda2_Camera = .text:0x800232FC; // type:function size:0x134 scope:global +frameHackCIMG_Zelda2_Shrink = .text:0x80023430; // type:function size:0x174 scope:global +frameHackCIMG_Zelda = .text:0x800235A4; // type:function size:0x440 scope:global +frameHackCIMG_Zelda2 = .text:0x800239E4; // type:function size:0x658 scope:global +frameHackTIMG_Zelda = .text:0x8002403C; // type:function size:0x1C8 scope:global +ZeldaDrawFrameCamera = .text:0x80024204; // type:function size:0x2F4 scope:global +ZeldaDrawFrameShrink = .text:0x800244F8; // type:function size:0x50C scope:global +ZeldaGreyScaleConvert = .text:0x80024A04; // type:function size:0x390 scope:global +CopyAndConvertCFB = .text:0x80024D94; // type:function size:0x344 scope:global +ZeldaDrawFrame = .text:0x800250D8; // type:function size:0x2E0 scope:global +ZeldaDrawFrameBlur = .text:0x800253B8; // type:function size:0x2E4 scope:global +ZeldaDrawFrameNoBlend = .text:0x8002569C; // type:function size:0x1F4 scope:global +_frameDrawRectangle = .text:0x80025890; // type:function size:0x128 scope:global +frameEnd = .text:0x800259B8; // type:function size:0x288 scope:global +frameBegin = .text:0x80025C40; // type:function size:0x28C scope:global +frameBeginOK = .text:0x80025ECC; // type:function size:0x1C scope:global +frameSetColor = .text:0x80025EE8; // type:function size:0xFC scope:global +frameSetDepth = .text:0x80025FE4; // type:function size:0x10 scope:global +frameSetScissor = .text:0x80025FF4; // type:function size:0x128 scope:global +frameShow = .text:0x8002611C; // type:function size:0x8 scope:global +frameDrawRectTexture_Setup = .text:0x80026124; // type:function size:0x3F0 scope:global +frameDrawRectTexture = .text:0x80026514; // type:function size:0x4D8 scope:global +frameDrawRectFill_Setup = .text:0x800269EC; // type:function size:0xB0 scope:local +frameDrawRectFill = .text:0x80026A9C; // type:function size:0x294 scope:global +frameDrawLine_Setup = .text:0x80026D30; // type:function size:0xDC scope:local +frameDrawLine_C2T2 = .text:0x80026E0C; // type:function size:0x21C scope:global +frameDrawLine_C1T2 = .text:0x80027028; // type:function size:0x20C scope:global +frameDrawLine_C0T2 = .text:0x80027234; // type:function size:0x1B8 scope:global +frameDrawLine_C2T0 = .text:0x800273EC; // type:function size:0x1D8 scope:global +frameDrawLine_C1T0 = .text:0x800275C4; // type:function size:0x1C8 scope:global +frameDrawLine_C0T0 = .text:0x8002778C; // type:function size:0x174 scope:global +frameDrawTriangle_Setup = .text:0x80027900; // type:function size:0xDC scope:local +frameDrawTriangle_C3T3 = .text:0x800279DC; // type:function size:0x1A4 scope:global +frameCheckTriangleDivide = .text:0x80027B80; // type:function size:0xEC4 scope:global +frameDrawTriangle_C1T3 = .text:0x80028A44; // type:function size:0x1F0 scope:local +frameDrawTriangle_C0T3 = .text:0x80028C34; // type:function size:0x18C scope:local +frameDrawTriangle_C3T0 = .text:0x80028DC0; // type:function size:0x1BC scope:local +frameDrawTriangle_C1T0 = .text:0x80028F7C; // type:function size:0x19C scope:local +frameDrawTriangle_C0T0 = .text:0x80029118; // type:function size:0x138 scope:local +frameDrawSetupDP = .text:0x80029250; // type:function size:0x56C scope:global +frameGetCombineAlpha = .text:0x800297BC; // type:function size:0x90 scope:global +frameGetCombineColor = .text:0x8002984C; // type:function size:0xFC scope:global +frameDrawSetupSP = .text:0x80029948; // type:function size:0x9B4 scope:global +frameDrawSetup2D = .text:0x8002A2FC; // type:function size:0x1AC scope:global +frameLoadTexture = .text:0x8002A4A8; // type:function size:0x2DC scope:global +frameMakePixels = .text:0x8002A784; // type:function size:0x19F4 scope:global +frameMakeTLUT = .text:0x8002C178; // type:function size:0x16C scope:global +frameDrawDone = .text:0x8002C2E4; // type:function size:0x7C scope:local +frameDrawSyncCallback = .text:0x8002C360; // type:function size:0x18 scope:local +frameDrawSetupFog_Default = .text:0x8002C378; // type:function size:0x304 scope:global +frameDrawSetupFog_Zelda1 = .text:0x8002C67C; // type:function size:0x398 scope:global +systemEvent = .text:0x8002CA14; // type:function size:0x8D8 scope:global +systemExceptionPending = .text:0x8002D2EC; // type:function size:0x38 scope:global +systemCheckInterrupts = .text:0x8002D324; // type:function size:0x158 scope:global +systemExecute = .text:0x8002D47C; // type:function size:0xFC scope:global +systemReset = .text:0x8002D578; // type:function size:0x1B8 scope:global +systemGetStorageDevice = .text:0x8002D730; // type:function size:0x10 scope:global +systemSetStorageDevice = .text:0x8002D740; // type:function size:0xEC scope:global +systemGetMode = .text:0x8002D82C; // type:function size:0x68 scope:global +systemSetMode = .text:0x8002D894; // type:function size:0x70 scope:global +systemCopyROM = .text:0x8002D904; // type:function size:0xF4 scope:global +__systemCopyROM_Complete = .text:0x8002D9F8; // type:function size:0x138 scope:local +systemPut64 = .text:0x8002DB30; // type:function size:0x8 scope:local +systemPut32 = .text:0x8002DB38; // type:function size:0x8 scope:local +systemPut16 = .text:0x8002DB40; // type:function size:0x8 scope:local +systemPut8 = .text:0x8002DB48; // type:function size:0x8 scope:local +systemGet64 = .text:0x8002DB50; // type:function size:0x14 scope:local +systemGet32 = .text:0x8002DB64; // type:function size:0x10 scope:local +systemGet16 = .text:0x8002DB74; // type:function size:0x10 scope:local +systemGet8 = .text:0x8002DB84; // type:function size:0x10 scope:local +systemGetException = .text:0x8002DB94; // type:function size:0x1DC scope:local +systemSetupGameALL = .text:0x8002DD70; // type:function size:0x25F4 scope:local +systemGetInitialConfiguration = .text:0x80030364; // type:function size:0x7D4 scope:global +systemSetupGameRAM = .text:0x80030B38; // type:function size:0x338 scope:local +cpuOpcodeChecksum = .text:0x80030E70; // type:function size:0x114 scope:global +treePrintNode = .text:0x80030F84; // type:function size:0x1E4 scope:local +treeForceCleanNodes = .text:0x80031168; // type:function size:0x1D4 scope:local +treeCleanNodes = .text:0x8003133C; // type:function size:0x2E0 scope:local +treeCleanUp = .text:0x8003161C; // type:function size:0x130 scope:local +treeTimerCheck = .text:0x8003174C; // type:function size:0x114 scope:local +treeKillReason = .text:0x80031860; // type:function size:0x90 scope:local +treeKillRange = .text:0x800318F0; // type:function size:0x798 scope:local +treeSearchNode = .text:0x80032088; // type:function size:0x64 scope:local +treeAdjustRoot = .text:0x800320EC; // type:function size:0x1EC scope:local +treeBalance = .text:0x800322D8; // type:function size:0x198 scope:local +treeInsertNode = .text:0x80032470; // type:function size:0xE8 scope:local +treeInsert = .text:0x80032558; // type:function size:0x11C scope:global +treeDeleteNode = .text:0x80032674; // type:function size:0x360 scope:local +treeKillNodes = .text:0x800329D4; // type:function size:0x2B0 scope:local +treeKill = .text:0x80032C84; // type:function size:0x2A8 scope:local +treeInitNode = .text:0x80032F2C; // type:function size:0x11C scope:local +treeInit = .text:0x80033048; // type:function size:0x58 scope:local +treeCallerCheck = .text:0x800330A0; // type:function size:0x104 scope:local +cpuDMAUpdateFunction = .text:0x800331A4; // type:function size:0x160 scope:local +cpuFindFunction = .text:0x80033304; // type:function size:0xB84 scope:global +cpuTreeTake = .text:0x80033E88; // type:function size:0xB4 scope:local +cpuHeapFree = .text:0x80033F3C; // type:function size:0xEC scope:global +cpuHeapTake = .text:0x80034028; // type:function size:0x260 scope:global +cpuHeapReset = .text:0x80034288; // type:function size:0x9C scope:local +cpuGetFunctionChecksum = .text:0x80034324; // type:function size:0x240 scope:global +cpuInvalidateCache = .text:0x80034564; // type:function size:0x8C scope:global +cpuGetOffsetAddress = .text:0x800345F0; // type:function size:0x190 scope:global +cpuGetAddressBuffer = .text:0x80034780; // type:function size:0x78 scope:global +cpuGetAddressOffset = .text:0x800347F8; // type:function size:0x6C scope:global +cpuEvent = .text:0x80034864; // type:function size:0x208 scope:global +cpuSetXPC = .text:0x80034A6C; // type:function size:0x7C scope:global +cpuReset = .text:0x80034AE8; // type:function size:0x4E4 scope:global +cpuSetCodeHack = .text:0x80034FCC; // type:function size:0x6C scope:global +cpuSetDevicePut = .text:0x80035038; // type:function size:0x18 scope:global +cpuSetDeviceGet = .text:0x80035050; // type:function size:0x18 scope:global +cpuMapObject = .text:0x80035068; // type:function size:0x1B0 scope:global +__cpuBreak = .text:0x80035218; // type:function size:0x14 scope:global +__cpuERET = .text:0x8003522C; // type:function size:0x9C scope:global +cpuGetRegisterCP0 = .text:0x800352C8; // type:function size:0x2A8 scope:global +cpuSetRegisterCP0 = .text:0x80035570; // type:function size:0x1CC scope:global +cpuSetCP0_Status = .text:0x8003573C; // type:function size:0x94 scope:local +cpuGetSize = .text:0x800357D0; // type:function size:0x144 scope:local +cpuGetMode = .text:0x80035914; // type:function size:0xD8 scope:local +cpuSetTLB = .text:0x800359EC; // type:function size:0x2E4 scope:local +cpuMapAddress = .text:0x80035CD0; // type:function size:0x1C8 scope:local +cpuFreeDevice = .text:0x80035E98; // type:function size:0xA4 scope:global +cpuMakeDevice = .text:0x80035F3C; // type:function size:0x110 scope:local +cpuException = .text:0x8003604C; // type:function size:0x2C0 scope:global +cpuTestInterrupt = .text:0x8003630C; // type:function size:0xDC scope:global +cpuFindCachedAddress = .text:0x800363E8; // type:function size:0x1DC scope:local +cpuFreeCachedAddress = .text:0x800365C4; // type:function size:0x94 scope:global +cpuHackHandler = .text:0x80036658; // type:function size:0x218 scope:local +cpuExecute = .text:0x80036870; // type:function size:0xC6C scope:global +cpuMakeLink = .text:0x800374DC; // type:function size:0x2C0 scope:local +cpuExecuteLoadStoreF = .text:0x8003779C; // type:function size:0xB5C scope:global +cpuExecuteLoadStore = .text:0x800382F8; // type:function size:0xE60 scope:global +cpuExecuteCall = .text:0x80039158; // type:function size:0x260 scope:local +cpuExecuteJump = .text:0x800393B8; // type:function size:0xD0 scope:local +cpuExecuteIdle = .text:0x80039488; // type:function size:0x10C scope:local +cpuExecuteOpcode = .text:0x80039594; // type:function size:0x4974 scope:global +cpuExecuteUpdate = .text:0x8003DF08; // type:function size:0x2FC scope:local +cpuRetraceCallback = .text:0x8003E204; // type:function size:0x10 scope:global +cpuNextInstruction = .text:0x8003E214; // type:function size:0x2C4 scope:local +cpuFindAddress = .text:0x8003E4D8; // type:function size:0x49C scope:local +cpuMakeFunction = .text:0x8003E974; // type:function size:0x490 scope:global +cpuGetPPC = .text:0x8003EE04; // type:function size:0x29434 scope:global +cpuCheckDelaySlot = .text:0x80068238; // type:function size:0x130 scope:global +cpuCompile_LWR = .text:0x80068368; // type:function size:0x18C scope:local +cpuCompile_LWL = .text:0x800684F4; // type:function size:0x190 scope:local +cpuCompile_SDC = .text:0x80068684; // type:function size:0x188 scope:local +cpuCompile_LDC = .text:0x8006880C; // type:function size:0x188 scope:local +cpuCompile_SW = .text:0x80068994; // type:function size:0x15C scope:local +cpuCompile_SH = .text:0x80068AF0; // type:function size:0x15C scope:local +cpuCompile_SB = .text:0x80068C4C; // type:function size:0x15C scope:local +cpuCompile_LHU = .text:0x80068DA8; // type:function size:0x158 scope:local +cpuCompile_LBU = .text:0x80068F00; // type:function size:0x158 scope:local +cpuCompile_LW = .text:0x80069058; // type:function size:0x158 scope:local +cpuCompile_LH = .text:0x800691B0; // type:function size:0x16C scope:local +cpuCompile_LB = .text:0x8006931C; // type:function size:0x16C scope:local +cpuCompile_FLOOR_W = .text:0x80069488; // type:function size:0x1BC scope:local +cpuCompile_CEIL_W = .text:0x80069644; // type:function size:0x1BC scope:local +cpuCompile_L_CVT_SD = .text:0x80069800; // type:function size:0x580 scope:local +cpuCompile_W_CVT_SD = .text:0x80069D80; // type:function size:0x1B0 scope:local +cpuCompile_D_SQRT = .text:0x80069F30; // type:function size:0x434 scope:local +cpuCompile_S_SQRT = .text:0x8006A364; // type:function size:0x340 scope:local +cpuCompile_DDIVU = .text:0x8006A6A4; // type:function size:0x41C scope:local +cpuCompile_DDIV = .text:0x8006AAC0; // type:function size:0x5BC scope:local +cpuCompile_DMULTU = .text:0x8006B07C; // type:function size:0x314 scope:local +cpuCompile_DMULT = .text:0x8006B390; // type:function size:0x504 scope:local +cpuCompile_DSRAV = .text:0x8006B894; // type:function size:0x204 scope:local +cpuCompile_DSRLV = .text:0x8006BA98; // type:function size:0x1E8 scope:local +cpuCompile_DSLLV = .text:0x8006BC80; // type:function size:0x1E8 scope:local +pifEvent = .text:0x8006BE68; // type:function size:0x228 scope:global +pifGetData = .text:0x8006C090; // type:function size:0x6C scope:global +pifSetData = .text:0x8006C0FC; // type:function size:0x60 scope:global +pifProcessOutputData = .text:0x8006C15C; // type:function size:0x19C scope:global +pifProcessInputData = .text:0x8006C2F8; // type:function size:0x190 scope:global +pifExecuteCommand = .text:0x8006C488; // type:function size:0x2A4 scope:global +pifGet64 = .text:0x8006C72C; // type:function size:0x54 scope:global +pifGet32 = .text:0x8006C780; // type:function size:0x3C scope:global +pifGet16 = .text:0x8006C7BC; // type:function size:0x3C scope:global +pifGet8 = .text:0x8006C7F8; // type:function size:0x34 scope:global +pifPut64 = .text:0x8006C82C; // type:function size:0x34 scope:global +pifPut32 = .text:0x8006C860; // type:function size:0x28 scope:global +pifPut16 = .text:0x8006C888; // type:function size:0x28 scope:global +pifPut8 = .text:0x8006C8B0; // type:function size:0x24 scope:global +pifGetEEPROMSize = .text:0x8006C8D4; // type:function size:0x44 scope:global +pifSetEEPROMType = .text:0x8006C918; // type:function size:0x64 scope:global +pifGetEControllerType = .text:0x8006C97C; // type:function size:0x18 scope:global +pifSetControllerType = .text:0x8006C994; // type:function size:0x110 scope:global +pifContDataCrc = .text:0x8006CAA4; // type:function size:0x178 scope:local +pifWriteRumble = .text:0x8006CC1C; // type:function size:0x58 scope:global +pifReadRumble = .text:0x8006CC74; // type:function size:0x124 scope:global +ramEvent = .text:0x8006CD98; // type:function size:0x238 scope:global +ramGetSize = .text:0x8006CFD0; // type:function size:0x18 scope:global +ramSetSize = .text:0x8006CFE8; // type:function size:0x70 scope:global +ramWipe = .text:0x8006D058; // type:function size:0x48 scope:global +ramGetBuffer = .text:0x8006D0A0; // type:function size:0x58 scope:global +ramGet64 = .text:0x8006D0F8; // type:function size:0x44 scope:local +ramGet32 = .text:0x8006D13C; // type:function size:0x34 scope:local +ramGet16 = .text:0x8006D170; // type:function size:0x34 scope:local +ramGet8 = .text:0x8006D1A4; // type:function size:0x30 scope:local +ramPut64 = .text:0x8006D1D4; // type:function size:0x34 scope:local +ramPut32 = .text:0x8006D208; // type:function size:0x28 scope:local +ramPut16 = .text:0x8006D230; // type:function size:0x28 scope:local +ramPut8 = .text:0x8006D258; // type:function size:0x24 scope:local +ramGetRI64 = .text:0x8006D27C; // type:function size:0x8 scope:local +ramGetRI32 = .text:0x8006D284; // type:function size:0x34 scope:local +ramGetRI16 = .text:0x8006D2B8; // type:function size:0x8 scope:local +ramGetRI8 = .text:0x8006D2C0; // type:function size:0x8 scope:local +ramPutRI64 = .text:0x8006D2C8; // type:function size:0x8 scope:local +ramPutRI32 = .text:0x8006D2D0; // type:function size:0x34 scope:local +ramPutRI16 = .text:0x8006D304; // type:function size:0x8 scope:local +ramPutRI8 = .text:0x8006D30C; // type:function size:0x8 scope:local +ramGetControl64 = .text:0x8006D314; // type:function size:0x8 scope:local +ramGetControl32 = .text:0x8006D31C; // type:function size:0x34 scope:local +ramGetControl16 = .text:0x8006D350; // type:function size:0x8 scope:local +ramGetControl8 = .text:0x8006D358; // type:function size:0x8 scope:local +ramPutControl64 = .text:0x8006D360; // type:function size:0x8 scope:local +ramPutControl32 = .text:0x8006D368; // type:function size:0x34 scope:local +ramPutControl16 = .text:0x8006D39C; // type:function size:0x8 scope:local +ramPutControl8 = .text:0x8006D3A4; // type:function size:0x8 scope:local +romEvent = .text:0x8006D3AC; // type:function size:0x22C scope:global +romGetImage = .text:0x8006D5D8; // type:function size:0x48 scope:global +romSetImage = .text:0x8006D620; // type:function size:0x174 scope:global +romSetCacheSize = .text:0x8006D794; // type:function size:0x9C scope:global +romUpdate = .text:0x8006D830; // type:function size:0x160 scope:global +romCopyImmediate = .text:0x8006D990; // type:function size:0x268 scope:global +romCopy = .text:0x8006DBF8; // type:function size:0x298 scope:global +romGetDebug64 = .text:0x8006DE90; // type:function size:0x14 scope:local +romGetDebug32 = .text:0x8006DEA4; // type:function size:0x10 scope:local +romGetDebug16 = .text:0x8006DEB4; // type:function size:0x10 scope:local +romGetDebug8 = .text:0x8006DEC4; // type:function size:0x10 scope:local +romPutDebug64 = .text:0x8006DED4; // type:function size:0x8 scope:local +romPutDebug32 = .text:0x8006DEDC; // type:function size:0x8 scope:local +romPutDebug16 = .text:0x8006DEE4; // type:function size:0x8 scope:local +romPutDebug8 = .text:0x8006DEEC; // type:function size:0x8 scope:local +romGet64 = .text:0x8006DEF4; // type:function size:0x7C scope:local +romGet32 = .text:0x8006DF70; // type:function size:0x70 scope:local +romGet16 = .text:0x8006DFE0; // type:function size:0x70 scope:local +romGet8 = .text:0x8006E050; // type:function size:0x70 scope:local +romPut64 = .text:0x8006E0C0; // type:function size:0x8 scope:local +romPut32 = .text:0x8006E0C8; // type:function size:0x8 scope:local +romPut16 = .text:0x8006E0D0; // type:function size:0x8 scope:local +romPut8 = .text:0x8006E0D8; // type:function size:0x8 scope:local +romTestCode = .text:0x8006E0E0; // type:function size:0xC4 scope:global +romGetCode = .text:0x8006E1A4; // type:function size:0x34 scope:global +romGetPC = .text:0x8006E1D8; // type:function size:0x1FC scope:global +romLoadFullOrPart = .text:0x8006E3D4; // type:function size:0x468 scope:local +romCopyUpdate = .text:0x8006E83C; // type:function size:0x284 scope:local +__romCopyUpdate_Complete = .text:0x8006EAC0; // type:function size:0x1C scope:local +romLoadUpdate = .text:0x8006EADC; // type:function size:0x160 scope:local +__romLoadUpdate_Complete = .text:0x8006EC3C; // type:function size:0x1C scope:global +romCacheGame = .text:0x8006EC58; // type:function size:0x5B0 scope:local +romCacheGame_ZELDA = .text:0x8006F208; // type:function size:0x280 scope:local +romLoadRange = .text:0x8006F488; // type:function size:0x14C scope:local +romLoadBlock = .text:0x8006F5D4; // type:function size:0xFC scope:local +__romLoadBlock_CompleteGCN = .text:0x8006F6D0; // type:function size:0x1C scope:local +__romLoadBlock_Complete = .text:0x8006F6EC; // type:function size:0xF4 scope:local +romSetBlockCache = .text:0x8006F7E0; // type:function size:0x258 scope:local +romMakeFreeCache = .text:0x8006FA38; // type:function size:0x214 scope:local +romFindOldestBlock = .text:0x8006FC4C; // type:function size:0x1B0 scope:local +romFindFreeCache = .text:0x8006FDFC; // type:function size:0xC4 scope:local +rdpEvent = .text:0x8006FEC0; // type:function size:0x1A4 scope:global +rdpGetSpan64 = .text:0x80070064; // type:function size:0x8 scope:local +rdpGetSpan32 = .text:0x8007006C; // type:function size:0x70 scope:local +rdpGetSpan16 = .text:0x800700DC; // type:function size:0x8 scope:local +rdpGetSpan8 = .text:0x800700E4; // type:function size:0x8 scope:local +rdpPutSpan64 = .text:0x800700EC; // type:function size:0x8 scope:local +rdpPutSpan32 = .text:0x800700F4; // type:function size:0x64 scope:local +rdpPutSpan16 = .text:0x80070158; // type:function size:0x8 scope:local +rdpPutSpan8 = .text:0x80070160; // type:function size:0x8 scope:local +rdpGet64 = .text:0x80070168; // type:function size:0x8 scope:local +rdpGet32 = .text:0x80070170; // type:function size:0xA4 scope:local +rdpGet16 = .text:0x80070214; // type:function size:0x8 scope:local +rdpGet8 = .text:0x8007021C; // type:function size:0x8 scope:local +rdpPut64 = .text:0x80070224; // type:function size:0x8 scope:local +rdpPut32 = .text:0x8007022C; // type:function size:0x104 scope:local +rdpPut16 = .text:0x80070330; // type:function size:0x8 scope:local +rdpPut8 = .text:0x80070338; // type:function size:0x8 scope:local +rdpParseGBI = .text:0x80070340; // type:function size:0x1290 scope:global +rdbEvent = .text:0x800715D0; // type:function size:0x108 scope:global +rdbGet64 = .text:0x800716D8; // type:function size:0x8 scope:local +rdbGet32 = .text:0x800716E0; // type:function size:0x34 scope:local +rdbGet16 = .text:0x80071714; // type:function size:0x8 scope:local +rdbGet8 = .text:0x8007171C; // type:function size:0x8 scope:local +rdbPut64 = .text:0x80071724; // type:function size:0x8 scope:local +rdbPut32 = .text:0x8007172C; // type:function size:0x47C scope:local +rdbPut16 = .text:0x80071BA8; // type:function size:0x8 scope:local +rdbPut8 = .text:0x80071BB0; // type:function size:0x8 scope:local +rspEvent = .text:0x80071BB8; // type:function size:0x1D4 scope:global +rspUpdate = .text:0x80071D8C; // type:function size:0x1E0 scope:global +rspFrameComplete = .text:0x80071F6C; // type:function size:0x54 scope:global +rspEnableABI = .text:0x80071FC0; // type:function size:0x20 scope:global +rspInvalidateCache = .text:0x80071FE0; // type:function size:0xD8 scope:global +rspGet64 = .text:0x800720B8; // type:function size:0x6C scope:global +rspGet32 = .text:0x80072124; // type:function size:0x14C scope:global +rspGet16 = .text:0x80072270; // type:function size:0x54 scope:global +rspGet8 = .text:0x800722C4; // type:function size:0x54 scope:global +rspPut64 = .text:0x80072318; // type:function size:0x6C scope:global +rspPut32 = .text:0x80072384; // type:function size:0x630 scope:global +rspPut16 = .text:0x800729B4; // type:function size:0x54 scope:global +rspPut8 = .text:0x80072A08; // type:function size:0x54 scope:global +rspParseGBI = .text:0x80072A5C; // type:function size:0x1B4 scope:global +rspParseGBI_Setup = .text:0x80072C10; // type:function size:0x15C scope:local +rspLoadYield = .text:0x80072D6C; // type:function size:0x188 scope:global +rspSaveYield = .text:0x80072EF4; // type:function size:0x178 scope:global +rspFindUCode = .text:0x8007306C; // type:function size:0x1160 scope:global +rspLoadMatrix = .text:0x800741CC; // type:function size:0x288 scope:global +rspParseGBI_F3DEX2 = .text:0x80074454; // type:function size:0x1BD0 scope:global +rspGeometryMode = .text:0x80076024; // type:function size:0xE8 scope:global +rspParseGBI_F3DEX1 = .text:0x8007610C; // type:function size:0x1684 scope:global +rspSetGeometryMode1 = .text:0x80077790; // type:function size:0xC0 scope:global +rspSetupS2DEX = .text:0x80077850; // type:function size:0x160 scope:global +rspObjMatrix = .text:0x800779B0; // type:function size:0x168 scope:global +rspBgRectCopy = .text:0x80077B18; // type:function size:0x1A0 scope:global +rspObjRectangleR = .text:0x80077CB8; // type:function size:0xAB4 scope:global +rspObjSprite = .text:0x8007876C; // type:function size:0xAC8 scope:global +rspObjRectangle = .text:0x80079234; // type:function size:0x59C scope:global +rspObjLoadTxtr = .text:0x800797D0; // type:function size:0x44C scope:global +rspFillObjTxtr = .text:0x80079C1C; // type:function size:0x160 scope:global +guS2DEmuBgRect1Cyc = .text:0x80079D7C; // type:function size:0x73C scope:global +tmemLoad = .text:0x8007A4B8; // type:function size:0x270 scope:global +tmemLoad_A = .text:0x8007A728; // type:function size:0xAC scope:global +tmemLoad_B = .text:0x8007A7D4; // type:function size:0x114 scope:global +rspSetImage = .text:0x8007A8E8; // type:function size:0x94 scope:global +rspFillObjBg = .text:0x8007A97C; // type:function size:0xF8 scope:global +rspFillObjBgScale = .text:0x8007AA74; // type:function size:0xE0 scope:global +rspFillObjSprite = .text:0x8007AB54; // type:function size:0xC8 scope:global +Matrix4by4Identity = .text:0x8007AC1C; // type:function size:0x50 scope:global +rspParseJPEG_DecodeZ = .text:0x8007AC6C; // type:function size:0xFC scope:global +rspParseJPEG_EncodeZ = .text:0x8007AD68; // type:function size:0xFC scope:global +rspRecon420Z = .text:0x8007AE64; // type:function size:0x3E0 scope:global +rspUndoRecon420Z = .text:0x8007B244; // type:function size:0x408 scope:global +rspUndoLoadColorBufferZ = .text:0x8007B64C; // type:function size:0x94 scope:global +rspUndoDCTZ = .text:0x8007B6E0; // type:function size:0x2D0 scope:global +rspUndoZigzagDataZ = .text:0x8007B9B0; // type:function size:0x428 scope:global +rspUndoQuantizeZ = .text:0x8007BDD8; // type:function size:0x5CC scope:global +rspZigzagDataZ = .text:0x8007C3A4; // type:function size:0x528 scope:global +rspQuantizeZ = .text:0x8007C8CC; // type:function size:0x62C scope:global +rspDCTZ = .text:0x8007CEF8; // type:function size:0x2D0 scope:global +rspCreateJPEGArraysZ = .text:0x8007D1C8; // type:function size:0x2F8 scope:global +rspParseJPEG_Decode = .text:0x8007D4C0; // type:function size:0x84C scope:global +rspParseJPEG_Encode = .text:0x8007DD0C; // type:function size:0xA38 scope:global +rspFormatYUV = .text:0x8007E744; // type:function size:0x1B0 scope:global +rspUndoYUVtoDCTBuf = .text:0x8007E8F4; // type:function size:0x788 scope:global +rspUndoDCT = .text:0x8007F07C; // type:function size:0x2EC scope:global +rspUndoQuantize = .text:0x8007F368; // type:function size:0x184 scope:global +rspQuantize = .text:0x8007F4EC; // type:function size:0x17C scope:global +rspDCT = .text:0x8007F668; // type:function size:0x2D0 scope:global +rspYUVtoDCTBuf = .text:0x8007F938; // type:function size:0x6F0 scope:global +rspConvertRGBAtoYUV = .text:0x80080028; // type:function size:0x198 scope:global +rspCreateJPEGArrays = .text:0x800801C0; // type:function size:0x8E4 scope:global +rspParseABI4 = .text:0x80080AA4; // type:function size:0x71C scope:global +rspInitAudioDMEM4 = .text:0x800811C0; // type:function size:0x1464 scope:local +rspParseABI3 = .text:0x80082624; // type:function size:0x570 scope:global +rspAMix3 = .text:0x80082B94; // type:function size:0x98 scope:global +rspAEnvMixer3 = .text:0x80082C2C; // type:function size:0x234 scope:global +rspInitAudioDMEM3 = .text:0x80082E60; // type:function size:0x143C scope:local +rspParseABI2 = .text:0x8008429C; // type:function size:0x6E8 scope:global +rspAPCM8Dec2 = .text:0x80084984; // type:function size:0x894 scope:global +rspAEnvMixer2 = .text:0x80085218; // type:function size:0x2D8 scope:global +rspADistFilter2 = .text:0x800854F0; // type:function size:0x10C scope:global +rspAInterleave2 = .text:0x800855FC; // type:function size:0x24C scope:global +rspAMix2 = .text:0x80085848; // type:function size:0x88 scope:global +rspAFirFilter2 = .text:0x800858D0; // type:function size:0xDB0 scope:global +rspAResample2 = .text:0x80086680; // type:function size:0x230 scope:global +rspANMix2 = .text:0x800868B0; // type:function size:0x6C scope:global +rspANoise2 = .text:0x8008691C; // type:function size:0x2CC scope:global +rspAADPCMDec2Fast = .text:0x80086BE8; // type:function size:0x938 scope:global +rspInitAudioDMEM2 = .text:0x80087520; // type:function size:0x12C8 scope:local +rspParseABI1 = .text:0x800887E8; // type:function size:0x360 scope:global +rspParseABI = .text:0x80088B48; // type:function size:0x22C scope:global +rspASetVolume1 = .text:0x80088D74; // type:function size:0x98 scope:global +rspASetBuffer1 = .text:0x80088E0C; // type:function size:0x108 scope:global +rspAResample1 = .text:0x80088F14; // type:function size:0x2F8 scope:global +rspAMix1 = .text:0x8008920C; // type:function size:0x98 scope:global +rspAEnvMixer1 = .text:0x800892A4; // type:function size:0xBD8 scope:global +rspAPoleFilter1 = .text:0x80089E7C; // type:function size:0x964 scope:global +rspAADPCMDec1Fast = .text:0x8008A7E0; // type:function size:0x8A0 scope:global +rspLoadADPCMCoefTable2 = .text:0x8008B080; // type:function size:0x17C scope:global +rspLoadADPCMCoefTable1 = .text:0x8008B1FC; // type:function size:0x17C scope:global +rspMultPolef = .text:0x8008B378; // type:function size:0x3F0 scope:global +rspDotProduct8x15MatrixBy15x1Vector = .text:0x8008B768; // type:function size:0x474 scope:global +rspInitAudioDMEM1 = .text:0x8008BBDC; // type:function size:0x1330 scope:local +rspVMADN = .text:0x8008CF0C; // type:function size:0x1A4 scope:local +rspVMUDN = .text:0x8008D0B0; // type:function size:0x198 scope:local +mipsEvent = .text:0x8008D248; // type:function size:0x110 scope:global +mipsGet64 = .text:0x8008D358; // type:function size:0x8 scope:global +mipsGet32 = .text:0x8008D360; // type:function size:0x68 scope:global +mipsGet16 = .text:0x8008D3C8; // type:function size:0x8 scope:global +mipsGet8 = .text:0x8008D3D0; // type:function size:0x8 scope:global +mipsPut64 = .text:0x8008D3D8; // type:function size:0x8 scope:global +mipsPut32 = .text:0x8008D3E0; // type:function size:0x208 scope:global +mipsPut16 = .text:0x8008D5E8; // type:function size:0x8 scope:global +mipsPut8 = .text:0x8008D5F0; // type:function size:0x8 scope:global +mipsResetInterrupt = .text:0x8008D5F8; // type:function size:0xA4 scope:global +mipsSetInterrupt = .text:0x8008D69C; // type:function size:0xEC scope:global +diskEvent = .text:0x8008D788; // type:function size:0x19C scope:global +diskGetDrive64 = .text:0x8008D924; // type:function size:0x8 scope:global +diskGetDrive32 = .text:0x8008D92C; // type:function size:0x38 scope:global +diskGetDrive16 = .text:0x8008D964; // type:function size:0x8 scope:global +diskGetDrive8 = .text:0x8008D96C; // type:function size:0x8 scope:global +diskPutDrive64 = .text:0x8008D974; // type:function size:0x8 scope:global +diskPutDrive32 = .text:0x8008D97C; // type:function size:0x2C scope:global +diskPutDrive16 = .text:0x8008D9A8; // type:function size:0x8 scope:global +diskPutDrive8 = .text:0x8008D9B0; // type:function size:0x8 scope:global +diskGetROM64 = .text:0x8008D9B8; // type:function size:0x14 scope:global +diskGetROM32 = .text:0x8008D9CC; // type:function size:0x10 scope:global +diskGetROM16 = .text:0x8008D9DC; // type:function size:0x10 scope:global +diskGetROM8 = .text:0x8008D9EC; // type:function size:0x10 scope:global +diskPutROM64 = .text:0x8008D9FC; // type:function size:0x8 scope:global +diskPutROM32 = .text:0x8008DA04; // type:function size:0x8 scope:global +diskPutROM16 = .text:0x8008DA0C; // type:function size:0x8 scope:global +diskPutROM8 = .text:0x8008DA14; // type:function size:0x8 scope:global +flashEvent = .text:0x8008DA1C; // type:function size:0x120 scope:global +flashGet64 = .text:0x8008DB3C; // type:function size:0x8 scope:local +flashGet32 = .text:0x8008DB44; // type:function size:0xA4 scope:local +flashGet16 = .text:0x8008DBE8; // type:function size:0x8 scope:local +flashGet8 = .text:0x8008DBF0; // type:function size:0x8 scope:local +flashPut64 = .text:0x8008DBF8; // type:function size:0x8 scope:local +flashPut32 = .text:0x8008DC00; // type:function size:0x2D0 scope:local +flashPut16 = .text:0x8008DED0; // type:function size:0x8 scope:local +flashPut8 = .text:0x8008DED8; // type:function size:0x8 scope:local +flashTransferFLASH = .text:0x8008DEE0; // type:function size:0x114 scope:global +flashCopyFLASH = .text:0x8008DFF4; // type:function size:0x144 scope:global +sramEvent = .text:0x8008E138; // type:function size:0x100 scope:global +sramGet64 = .text:0x8008E238; // type:function size:0x30 scope:local +sramGet32 = .text:0x8008E268; // type:function size:0x30 scope:local +sramGet16 = .text:0x8008E298; // type:function size:0x30 scope:local +sramGet8 = .text:0x8008E2C8; // type:function size:0x30 scope:local +sramPut64 = .text:0x8008E2F8; // type:function size:0x30 scope:local +sramPut32 = .text:0x8008E328; // type:function size:0x30 scope:local +sramPut16 = .text:0x8008E358; // type:function size:0x30 scope:local +sramPut8 = .text:0x8008E388; // type:function size:0x30 scope:local +sramTransferSRAM = .text:0x8008E3B8; // type:function size:0x78 scope:global +sramCopySRAM = .text:0x8008E430; // type:function size:0x78 scope:global +audioEvent = .text:0x8008E4A8; // type:function size:0x120 scope:global +audioEnable = .text:0x8008E5C8; // type:function size:0x58 scope:global +audioGet64 = .text:0x8008E620; // type:function size:0x8 scope:global +audioGet32 = .text:0x8008E628; // type:function size:0x108 scope:global +audioGet16 = .text:0x8008E730; // type:function size:0x8 scope:global +audioGet8 = .text:0x8008E738; // type:function size:0x8 scope:global +audioPut64 = .text:0x8008E740; // type:function size:0x8 scope:global +audioPut32 = .text:0x8008E748; // type:function size:0x148 scope:global +audioPut16 = .text:0x8008E890; // type:function size:0x8 scope:global +audioPut8 = .text:0x8008E898; // type:function size:0x8 scope:global +videoEvent = .text:0x8008E8A0; // type:function size:0x154 scope:global +videoForceRetrace = .text:0x8008E9F4; // type:function size:0x6C scope:global +videoGet64 = .text:0x8008EA60; // type:function size:0x8 scope:global +videoGet32 = .text:0x8008EA68; // type:function size:0x11C scope:global +videoGet16 = .text:0x8008EB84; // type:function size:0x8 scope:global +videoGet8 = .text:0x8008EB8C; // type:function size:0x8 scope:global +videoPut64 = .text:0x8008EB94; // type:function size:0x8 scope:global +videoPut32 = .text:0x8008EB9C; // type:function size:0x274 scope:global +videoPut16 = .text:0x8008EE10; // type:function size:0x8 scope:global +videoPut8 = .text:0x8008EE18; // type:function size:0x8 scope:global +serialEvent = .text:0x8008EE20; // type:function size:0x100 scope:global +serialGet64 = .text:0x8008EF20; // type:function size:0x8 scope:global +serialGet32 = .text:0x8008EF28; // type:function size:0x64 scope:global +serialGet16 = .text:0x8008EF8C; // type:function size:0x8 scope:global +serialGet8 = .text:0x8008EF94; // type:function size:0x8 scope:global +serialPut64 = .text:0x8008EF9C; // type:function size:0x8 scope:global +serialPut32 = .text:0x8008EFA4; // type:function size:0x140 scope:global +serialPut16 = .text:0x8008F0E4; // type:function size:0x8 scope:global +serialPut8 = .text:0x8008F0EC; // type:function size:0x8 scope:global +libraryEvent = .text:0x8008F0F4; // type:function size:0x140 scope:global +libraryCall = .text:0x8008F234; // type:function size:0xF8 scope:global +libraryFunctionReplaced = .text:0x8008F32C; // type:function size:0xF4 scope:global +librarySearch = .text:0x8008F420; // type:function size:0x164 scope:local +libraryTestFunction = .text:0x8008F584; // type:function size:0x5E8 scope:global +libraryFindFunctions = .text:0x8008FB6C; // type:function size:0x510 scope:local +libraryFindVariables = .text:0x8009007C; // type:function size:0x734 scope:local +libraryFindException = .text:0x800907B0; // type:function size:0x300 scope:local +zeldaLoadSZS_Exit = .text:0x80090AB0; // type:function size:0x14 scope:global +zeldaLoadSZS_Entry = .text:0x80090AC4; // type:function size:0x14 scope:global +osViSwapBuffer_Entry = .text:0x80090AD8; // type:function size:0x68 scope:global +dmaSoundRomHandler_ZELDA1 = .text:0x80090B40; // type:function size:0x128 scope:global +pictureSnap_Zelda2 = .text:0x80090C68; // type:function size:0x10 scope:global +starfoxCopy = .text:0x80090C78; // type:function size:0x168 scope:global +osEepromLongWrite = .text:0x80090DE0; // type:function size:0xAC scope:global +osEepromLongRead = .text:0x80090E8C; // type:function size:0xAC scope:global +osEepromWrite = .text:0x80090F38; // type:function size:0x78 scope:global +osEepromRead = .text:0x80090FB0; // type:function size:0x78 scope:global +__osEepStatus = .text:0x80091028; // type:function size:0xD8 scope:global +osAiSetNextBuffer = .text:0x80091100; // type:function size:0x10C scope:global +osAiSetFrequency = .text:0x8009120C; // type:function size:0x12C scope:global +guLookAtReflect = .text:0x80091338; // type:function size:0x5D4 scope:global +guLookAtReflectF = .text:0x8009190C; // type:function size:0x554 scope:global +guLookAtHilite = .text:0x80091E60; // type:function size:0x9D4 scope:global +guLookAtHiliteF = .text:0x80092834; // type:function size:0x954 scope:global +guLookAt = .text:0x80093188; // type:function size:0x418 scope:global +guLookAtF = .text:0x800935A0; // type:function size:0x38C scope:global +guRotate = .text:0x8009392C; // type:function size:0x34C scope:global +guRotateF = .text:0x80093C78; // type:function size:0x310 scope:global +guTranslate = .text:0x80093F88; // type:function size:0x1EC scope:global +guTranslateF = .text:0x80094174; // type:function size:0x120 scope:global +guScale = .text:0x80094294; // type:function size:0x1EC scope:global +guScaleF = .text:0x80094480; // type:function size:0x128 scope:global +GenPerspective_1080 = .text:0x800945A8; // type:function size:0xB0 scope:global +guPerspective = .text:0x80094658; // type:function size:0x2C4 scope:global +guPerspectiveF = .text:0x8009491C; // type:function size:0x25C scope:global +guOrtho = .text:0x80094B78; // type:function size:0x2DC scope:global +guOrthoF = .text:0x80094E54; // type:function size:0x270 scope:global +guMtxIdent = .text:0x800950C4; // type:function size:0xB4 scope:global +guMtxIdentF = .text:0x80095178; // type:function size:0xD4 scope:global +guMtxF2L = .text:0x8009524C; // type:function size:0x208 scope:global +guMtxCatF = .text:0x80095454; // type:function size:0x318 scope:global +osVirtualToPhysical = .text:0x8009576C; // type:function size:0x74 scope:global +osPhysicalToVirtual = .text:0x800957E0; // type:function size:0x10 scope:global +_memcpy = .text:0x800957F0; // type:function size:0x5C scope:global +_bcopy = .text:0x8009584C; // type:function size:0x5C scope:global +_bzero = .text:0x800958A8; // type:function size:0x44 scope:global +__sinf = .text:0x800958EC; // type:function size:0x34 scope:local +__cosf = .text:0x80095920; // type:function size:0x34 scope:local +__osSpSetStatus = .text:0x80095954; // type:function size:0x50 scope:global +__osRestoreInt = .text:0x800959A4; // type:function size:0x8C scope:global +__osDisableInt = .text:0x80095A30; // type:function size:0x90 scope:local +osInvalICache = .text:0x80095AC0; // type:function size:0x88 scope:local +osGetMemSize = .text:0x80095B48; // type:function size:0x54 scope:local +__osDispatchThread = .text:0x80095B9C; // type:function size:0x5A4 scope:local +__osPopThread = .text:0x80096140; // type:function size:0xD4 scope:local +__osEnqueueThread = .text:0x80096214; // type:function size:0x228 scope:local +__osEnqueueAndYield = .text:0x8009643C; // type:function size:0x2EC scope:local +send_mesg = .text:0x80096728; // type:function size:0x390 scope:local +__osException = .text:0x80096AB8; // type:function size:0xCE4 scope:local +peripheralEvent = .text:0x8009779C; // type:function size:0x108 scope:global +peripheralGet64 = .text:0x800978A4; // type:function size:0x8 scope:global +peripheralGet32 = .text:0x800978AC; // type:function size:0x100 scope:global +peripheralGet16 = .text:0x800979AC; // type:function size:0x8 scope:global +peripheralGet8 = .text:0x800979B4; // type:function size:0x8 scope:global +peripheralPut64 = .text:0x800979BC; // type:function size:0x8 scope:global +peripheralPut32 = .text:0x800979C4; // type:function size:0x384 scope:global +peripheralPut16 = .text:0x80097D48; // type:function size:0x8 scope:global +peripheralPut8 = .text:0x80097D50; // type:function size:0x8 scope:global +peripheralDMA_Complete = .text:0x80097D58; // type:function size:0x44 scope:global +SetTevStageTable = .text:0x80097D9C; // type:function size:0xC0 scope:global +SetTevStages = .text:0x80097E5C; // type:function size:0x384 scope:global +SetNumTexGensChans = .text:0x800981E0; // type:function size:0x1C0 scope:global +SetTableTevStages = .text:0x800983A0; // type:function size:0x304 scope:global +BuildCombineModeTev = .text:0x800986A4; // type:function size:0x43C scope:global +BuildCycle = .text:0x80098AE0; // type:function size:0xEC scope:global +SetupStage = .text:0x80098BCC; // type:function size:0x2AF0 scope:global +AddAlphaTevOrder = .text:0x8009B6BC; // type:function size:0x120 scope:global +SetAlpha = .text:0x8009B7DC; // type:function size:0x138 scope:global +SetColor = .text:0x8009B914; // type:function size:0x1A8 scope:global +PPCMfmsr = .text:0x8009BABC; // type:function size:0x8 scope:global +PPCMtmsr = .text:0x8009BAC4; // type:function size:0x8 scope:global +PPCMfhid0 = .text:0x8009BACC; // type:function size:0x8 scope:global +PPCMthid0 = .text:0x8009BAD4; // type:function size:0x8 scope:global +PPCMfl2cr = .text:0x8009BADC; // type:function size:0x8 scope:global +PPCMtl2cr = .text:0x8009BAE4; // type:function size:0x8 scope:global +PPCMtdec = .text:0x8009BAEC; // type:function size:0x8 scope:weak +PPCSync = .text:0x8009BAF4; // type:function size:0x8 scope:global +PPCHalt = .text:0x8009BAFC; // type:function size:0x14 scope:weak +PPCMtmmcr0 = .text:0x8009BB10; // type:function size:0x8 scope:global +PPCMtmmcr1 = .text:0x8009BB18; // type:function size:0x8 scope:global +PPCMtpmc1 = .text:0x8009BB20; // type:function size:0x8 scope:global +PPCMtpmc2 = .text:0x8009BB28; // type:function size:0x8 scope:global +PPCMtpmc3 = .text:0x8009BB30; // type:function size:0x8 scope:global +PPCMtpmc4 = .text:0x8009BB38; // type:function size:0x8 scope:global +PPCMffpscr = .text:0x8009BB40; // type:function size:0x20 scope:global +PPCMtfpscr = .text:0x8009BB60; // type:function size:0x28 scope:global +PPCMfhid2 = .text:0x8009BB88; // type:function size:0x8 scope:global +PPCMthid2 = .text:0x8009BB90; // type:function size:0x8 scope:global +PPCMtwpar = .text:0x8009BB98; // type:function size:0x8 scope:global +PPCDisableSpeculation = .text:0x8009BBA0; // type:function size:0x28 scope:global +PPCSetFpNonIEEEMode = .text:0x8009BBC8; // type:function size:0x8 scope:global +__OSFPRInit = .text:0x8009BBD0; // type:function size:0x128 scope:global +OSGetConsoleType = .text:0x8009BCF8; // type:function size:0x28 scope:global +ClearArena = .text:0x8009BD20; // type:function size:0x128 scope:global +InquiryCallback = .text:0x8009BE48; // type:function size:0x3C scope:local +OSInit = .text:0x8009BE84; // type:function size:0x3D8 scope:global +OSExceptionInit = .text:0x8009C25C; // type:function size:0x280 scope:local +__OSDBIntegrator = .text:0x8009C4DC; // type:function size:0x24 scope:local +__OSDBINTSTART = .text:0x8009C4DC; // type:label scope:global +__OSDBJump = .text:0x8009C500; // type:function size:0x4 scope:local +__OSDBJUMPSTART = .text:0x8009C500; // type:label scope:global +__OSDBJUMPEND = .text:0x8009C504; // type:label scope:global +__OSSetExceptionHandler = .text:0x8009C504; // type:function size:0x1C scope:global +__OSGetExceptionHandler = .text:0x8009C520; // type:function size:0x14 scope:global +OSExceptionVector = .text:0x8009C534; // type:function size:0x9C scope:local +__OSEVStart = .text:0x8009C534; // type:label scope:global +__DBVECTOR = .text:0x8009C58C; // type:label scope:global data:4byte +__OSEVSetNumber = .text:0x8009C59C; // type:label scope:global data:4byte +__OSEVEnd = .text:0x8009C5CC; // type:label scope:global +OSDefaultExceptionHandler = .text:0x8009C5D0; // type:function size:0x58 scope:global +__OSPSInit = .text:0x8009C628; // type:function size:0x54 scope:global +__OSGetDIConfig = .text:0x8009C67C; // type:function size:0x14 scope:global +OSRegisterVersion = .text:0x8009C690; // type:function size:0x2C scope:global +OSInitAlarm = .text:0x8009C6BC; // type:function size:0x58 scope:global +OSCreateAlarm = .text:0x8009C714; // type:function size:0x10 scope:global +InsertAlarm = .text:0x8009C724; // type:function size:0x250 scope:local +OSSetAlarm = .text:0x8009C974; // type:function size:0x68 scope:global +OSCancelAlarm = .text:0x8009C9DC; // type:function size:0x11C scope:global +DecrementerExceptionCallback = .text:0x8009CAF8; // type:function size:0x230 scope:local +DecrementerExceptionHandler = .text:0x8009CD28; // type:function size:0x50 scope:local +OnReset = .text:0x8009CD78; // type:function size:0xA0 scope:local +DLInsert = .text:0x8009CE18; // type:function size:0xAC scope:local +OSAllocFromHeap = .text:0x8009CEC4; // type:function size:0xFC scope:global +OSFreeToHeap = .text:0x8009CFC0; // type:function size:0x7C scope:global +OSSetCurrentHeap = .text:0x8009D03C; // type:function size:0x10 scope:global +OSInitAlloc = .text:0x8009D04C; // type:function size:0x70 scope:global +OSCreateHeap = .text:0x8009D0BC; // type:function size:0x6C scope:global +OSCheckHeap = .text:0x8009D128; // type:function size:0x360 scope:global +OSGetArenaHi = .text:0x8009D488; // type:function size:0x8 scope:global +OSGetArenaLo = .text:0x8009D490; // type:function size:0x8 scope:global +OSSetArenaHi = .text:0x8009D498; // type:function size:0x8 scope:global +OSSetArenaLo = .text:0x8009D4A0; // type:function size:0x8 scope:global +__OSInitAudioSystem = .text:0x8009D4A8; // type:function size:0x1BC scope:global +__OSStopAudioSystem = .text:0x8009D664; // type:function size:0xD8 scope:global +DCEnable = .text:0x8009D73C; // type:function size:0x14 scope:global +DCInvalidateRange = .text:0x8009D750; // type:function size:0x2C scope:global +DCFlushRange = .text:0x8009D77C; // type:function size:0x30 scope:global +DCStoreRange = .text:0x8009D7AC; // type:function size:0x30 scope:global +DCFlushRangeNoSync = .text:0x8009D7DC; // type:function size:0x2C scope:global +DCZeroRange = .text:0x8009D808; // type:function size:0x2C scope:global +ICInvalidateRange = .text:0x8009D834; // type:function size:0x34 scope:global +ICFlashInvalidate = .text:0x8009D868; // type:function size:0x10 scope:global +ICEnable = .text:0x8009D878; // type:function size:0x14 scope:global +__LCEnable = .text:0x8009D88C; // type:function size:0xCC scope:global +LCEnable = .text:0x8009D958; // type:function size:0x38 scope:global +LCDisable = .text:0x8009D990; // type:function size:0x28 scope:global +LCStoreBlocks = .text:0x8009D9B8; // type:function size:0x24 scope:global +LCStoreData = .text:0x8009D9DC; // type:function size:0xAC scope:global +LCQueueWait = .text:0x8009DA88; // type:function size:0x14 scope:global +L2GlobalInvalidate = .text:0x8009DA9C; // type:function size:0x98 scope:global +DMAErrorHandler = .text:0x8009DB34; // type:function size:0x160 scope:global +__OSCacheInit = .text:0x8009DC94; // type:function size:0xF4 scope:global +__OSLoadFPUContext = .text:0x8009DD88; // type:function size:0x124 scope:local +__OSSaveFPUContext = .text:0x8009DEAC; // type:function size:0x128 scope:local +OSSaveFPUContext = .text:0x8009DFD4; // type:function size:0x8 scope:global +OSSetCurrentContext = .text:0x8009DFDC; // type:function size:0x5C scope:global +OSGetCurrentContext = .text:0x8009E038; // type:function size:0xC scope:global +OSSaveContext = .text:0x8009E044; // type:function size:0x80 scope:global +OSLoadContext = .text:0x8009E0C4; // type:function size:0xD8 scope:global +OSGetStackPointer = .text:0x8009E19C; // type:function size:0x8 scope:global +OSClearContext = .text:0x8009E1A4; // type:function size:0x24 scope:global +OSInitContext = .text:0x8009E1C8; // type:function size:0xBC scope:global +OSDumpContext = .text:0x8009E284; // type:function size:0x2A8 scope:global +OSSwitchFPUContext = .text:0x8009E52C; // type:function size:0x84 scope:local +__OSContextInit = .text:0x8009E5B0; // type:function size:0x48 scope:global +OSReport = .text:0x8009E5F8; // type:function size:0x80 scope:weak +OSPanic = .text:0x8009E678; // type:function size:0x12C scope:weak +OSSetErrorHandler = .text:0x8009E7A4; // type:function size:0x218 scope:global +__OSUnhandledException = .text:0x8009E9BC; // type:function size:0x2E8 scope:global +OSGetFontEncode = .text:0x8009ECA4; // type:function size:0x58 scope:global +OSDisableInterrupts = .text:0x8009ECFC; // type:function size:0x14 scope:global +__RAS_OSDisableInterrupts_begin = .text:0x8009ECFC; // type:label scope:global +__RAS_OSDisableInterrupts_end = .text:0x8009ED08; // type:label scope:global +OSEnableInterrupts = .text:0x8009ED10; // type:function size:0x14 scope:global +OSRestoreInterrupts = .text:0x8009ED24; // type:function size:0x24 scope:global +__OSSetInterruptHandler = .text:0x8009ED48; // type:function size:0x1C scope:global +__OSGetInterruptHandler = .text:0x8009ED64; // type:function size:0x14 scope:global +__OSInterruptInit = .text:0x8009ED78; // type:function size:0x74 scope:global +SetInterruptMask = .text:0x8009EDEC; // type:function size:0x2D8 scope:global +__OSMaskInterrupts = .text:0x8009F0C4; // type:function size:0x88 scope:global +__OSUnmaskInterrupts = .text:0x8009F14C; // type:function size:0x88 scope:global +__OSDispatchInterrupt = .text:0x8009F1D4; // type:function size:0x344 scope:global +ExternalInterruptHandler = .text:0x8009F518; // type:function size:0x50 scope:local +__OSModuleInit = .text:0x8009F568; // type:function size:0x18 scope:global +OSInitMessageQueue = .text:0x8009F580; // type:function size:0x60 scope:global +OSSendMessage = .text:0x8009F5E0; // type:function size:0xC8 scope:global +OSReceiveMessage = .text:0x8009F6A8; // type:function size:0xDC scope:global +OnReset = .text:0x8009F784; // type:function size:0x3C scope:local +MEMIntrruptHandler = .text:0x8009F7C0; // type:function size:0x6C scope:local +Config24MB = .text:0x8009F82C; // type:function size:0x80 scope:global +Config48MB = .text:0x8009F8AC; // type:function size:0x80 scope:global +RealMode = .text:0x8009F92C; // type:function size:0x18 scope:global +__OSInitMemoryProtection = .text:0x8009F944; // type:function size:0x118 scope:global +__OSUnlockAllMutex = .text:0x8009FA5C; // type:function size:0x70 scope:global +Run = .text:0x8009FACC; // type:function size:0x10 scope:global +Callback = .text:0x8009FADC; // type:function size:0xC scope:local +__OSReboot = .text:0x8009FAE8; // type:function size:0x340 scope:global +OSRegisterResetFunction = .text:0x8009FE28; // type:function size:0x84 scope:global +Reset = .text:0x8009FEAC; // type:function size:0x70 scope:global +__OSDoHotReset = .text:0x8009FF1C; // type:function size:0x48 scope:global +OSResetSystem = .text:0x8009FF64; // type:function size:0x2B8 scope:global +OSGetResetCode = .text:0x800A021C; // type:function size:0x30 scope:global +__OSResetSWInterruptHandler = .text:0x800A024C; // type:function size:0xF4 scope:global +OSGetResetButtonState = .text:0x800A0340; // type:function size:0x298 scope:global +WriteSramCallback = .text:0x800A05D8; // type:function size:0x60 scope:local +WriteSram = .text:0x800A0638; // type:function size:0x118 scope:global +__OSInitSram = .text:0x800A0750; // type:function size:0x13C scope:global +__OSLockSram = .text:0x800A088C; // type:function size:0x5C scope:global +__OSLockSramEx = .text:0x800A08E8; // type:function size:0x5C scope:global +UnlockSram = .text:0x800A0944; // type:function size:0x33C scope:local +__OSUnlockSram = .text:0x800A0C80; // type:function size:0x24 scope:global +__OSUnlockSramEx = .text:0x800A0CA4; // type:function size:0x24 scope:global +__OSSyncSram = .text:0x800A0CC8; // type:function size:0x10 scope:global +OSGetSoundMode = .text:0x800A0CD8; // type:function size:0x80 scope:global +OSSetSoundMode = .text:0x800A0D58; // type:function size:0xA4 scope:global +OSGetWirelessID = .text:0x800A0DFC; // type:function size:0x84 scope:global +OSSetWirelessID = .text:0x800A0E80; // type:function size:0xAC scope:global +OSGetGbsMode = .text:0x800A0F2C; // type:function size:0x70 scope:global +OSSetGbsMode = .text:0x800A0F9C; // type:function size:0xB8 scope:global +SystemCallVector = .text:0x800A1054; // type:function size:0x20 scope:local +__OSSystemCallVectorStart = .text:0x800A1054; // type:label scope:global +__OSSystemCallVectorEnd = .text:0x800A1070; // type:label scope:global +__OSInitSystemCall = .text:0x800A1074; // type:function size:0x64 scope:global +DefaultSwitchThreadCallback = .text:0x800A10D8; // type:function size:0x4 scope:local +__OSThreadInit = .text:0x800A10DC; // type:function size:0x158 scope:global +OSInitThreadQueue = .text:0x800A1234; // type:function size:0x10 scope:global +OSGetCurrentThread = .text:0x800A1244; // type:function size:0xC scope:global +OSDisableScheduler = .text:0x800A1250; // type:function size:0x40 scope:global +OSEnableScheduler = .text:0x800A1290; // type:function size:0x40 scope:global +UnsetRun = .text:0x800A12D0; // type:function size:0x68 scope:local +__OSGetEffectivePriority = .text:0x800A1338; // type:function size:0x3C scope:global +SetEffectivePriority = .text:0x800A1374; // type:function size:0x1C0 scope:local +SelectThread = .text:0x800A1534; // type:function size:0x228 scope:local +__OSReschedule = .text:0x800A175C; // type:function size:0x30 scope:global +OSCreateThread = .text:0x800A178C; // type:function size:0x1E8 scope:global +OSExitThread = .text:0x800A1974; // type:function size:0xE4 scope:global +OSCancelThread = .text:0x800A1A58; // type:function size:0x1BC scope:global +OSResumeThread = .text:0x800A1C14; // type:function size:0x288 scope:global +OSSuspendThread = .text:0x800A1E9C; // type:function size:0x170 scope:global +OSSleepThread = .text:0x800A200C; // type:function size:0xEC scope:global +OSWakeupThread = .text:0x800A20F8; // type:function size:0x104 scope:global +OSClearStack = .text:0x800A21FC; // type:function size:0xAC scope:global +OSGetTime = .text:0x800A22A8; // type:function size:0x18 scope:global +OSGetTick = .text:0x800A22C0; // type:function size:0x8 scope:global +__OSGetSystemTime = .text:0x800A22C8; // type:function size:0x64 scope:global +GetDates = .text:0x800A232C; // type:function size:0x19C scope:local +OSTicksToCalendarTime = .text:0x800A24C8; // type:function size:0x204 scope:global +InitMetroTRK_BBA = .text:0x800A26CC; // type:function size:0x4 scope:global +__init_user = .text:0x800A26D0; // type:function size:0x20 scope:global +__init_cpp = .text:0x800A26F0; // type:function size:0x54 scope:global +_ExitProcess = .text:0x800A2744; // type:function size:0x20 scope:global +SetExiInterruptMask = .text:0x800A2764; // type:function size:0xF4 scope:local +EXIImm = .text:0x800A2858; // type:function size:0x25C scope:global +EXIImmEx = .text:0x800A2AB4; // type:function size:0xA0 scope:global +EXIDma = .text:0x800A2B54; // type:function size:0xEC scope:global +EXISync = .text:0x800A2C40; // type:function size:0x24C scope:global +EXIClearInterrupts = .text:0x800A2E8C; // type:function size:0x48 scope:global +EXISetExiCallback = .text:0x800A2ED4; // type:function size:0x7C scope:global +__EXIProbe = .text:0x800A2F50; // type:function size:0x174 scope:local +EXIProbe = .text:0x800A30C4; // type:function size:0x80 scope:global +EXIProbeEx = .text:0x800A3144; // type:function size:0xB4 scope:global +EXIAttach = .text:0x800A31F8; // type:function size:0x10C scope:global +EXIDetach = .text:0x800A3304; // type:function size:0xBC scope:global +EXISelect = .text:0x800A33C0; // type:function size:0x12C scope:global +EXIDeselect = .text:0x800A34EC; // type:function size:0x110 scope:global +EXIIntrruptHandler = .text:0x800A35FC; // type:function size:0xC8 scope:local +TCIntrruptHandler = .text:0x800A36C4; // type:function size:0x218 scope:local +EXTIntrruptHandler = .text:0x800A38DC; // type:function size:0xD0 scope:local +EXIInit = .text:0x800A39AC; // type:function size:0x1D4 scope:global +EXILock = .text:0x800A3B80; // type:function size:0xF4 scope:global +EXIUnlock = .text:0x800A3C74; // type:function size:0xDC scope:global +EXIGetState = .text:0x800A3D50; // type:function size:0x18 scope:global +UnlockedHandler = .text:0x800A3D68; // type:function size:0x28 scope:local +EXIGetID = .text:0x800A3D90; // type:function size:0x3B0 scope:global +ProbeBarnacle = .text:0x800A4140; // type:function size:0x18C scope:local +__OSEnableBarnacle = .text:0x800A42CC; // type:function size:0x1BC scope:global +InitializeUART = .text:0x800A4488; // type:function size:0x70 scope:global +ReadUARTN = .text:0x800A44F8; // type:function size:0x8 scope:global +WriteUARTN = .text:0x800A4500; // type:function size:0x21C scope:global +SIBusy = .text:0x800A471C; // type:function size:0x20 scope:global +SIIsChanBusy = .text:0x800A473C; // type:function size:0x3C scope:global +CompleteTransfer = .text:0x800A4778; // type:function size:0x2FC scope:local +SIInterruptHandler = .text:0x800A4A74; // type:function size:0x344 scope:local +SIEnablePollingInterrupt = .text:0x800A4DB8; // type:function size:0x98 scope:local +SIRegisterPollingHandler = .text:0x800A4E50; // type:function size:0xCC scope:global +SIUnregisterPollingHandler = .text:0x800A4F1C; // type:function size:0xF4 scope:global +SIInit = .text:0x800A5010; // type:function size:0xB4 scope:global +__SITransfer = .text:0x800A50C4; // type:function size:0x20C scope:local +SIGetStatus = .text:0x800A52D0; // type:function size:0x7C scope:global +SISetCommand = .text:0x800A534C; // type:function size:0x14 scope:global +SITransferCommands = .text:0x800A5360; // type:function size:0x10 scope:global +SISetXY = .text:0x800A5370; // type:function size:0x6C scope:global +SIEnablePolling = .text:0x800A53DC; // type:function size:0x9C scope:global +SIDisablePolling = .text:0x800A5478; // type:function size:0x6C scope:global +SIGetResponseRaw = .text:0x800A54E4; // type:function size:0xD4 scope:local +SIGetResponse = .text:0x800A55B8; // type:function size:0xC4 scope:global +AlarmHandler = .text:0x800A567C; // type:function size:0x8C scope:local +SITransfer = .text:0x800A5708; // type:function size:0x16C scope:global +GetTypeCallback = .text:0x800A5874; // type:function size:0x298 scope:local +SIGetType = .text:0x800A5B0C; // type:function size:0x1C4 scope:global +SIGetTypeAsync = .text:0x800A5CD0; // type:function size:0x13C scope:global +SISetSamplingRate = .text:0x800A5E0C; // type:function size:0xE4 scope:global +SIRefreshSamplingRate = .text:0x800A5EF0; // type:function size:0x24 scope:global +__VIRetraceHandler = .text:0x800A5F14; // type:function size:0x274 scope:local +VISetPostRetraceCallback = .text:0x800A6188; // type:function size:0x44 scope:global +getTiming = .text:0x800A61CC; // type:function size:0xA0 scope:local +__VIInit = .text:0x800A626C; // type:function size:0x200 scope:global +VIInit = .text:0x800A646C; // type:function size:0x4B0 scope:global +VIWaitForRetrace = .text:0x800A691C; // type:function size:0x54 scope:global +setFbbRegs = .text:0x800A6970; // type:function size:0x2D4 scope:local +setVerticalRegs = .text:0x800A6C44; // type:function size:0x1A0 scope:local +VIConfigure = .text:0x800A6DE4; // type:function size:0x828 scope:global +VIFlush = .text:0x800A760C; // type:function size:0x130 scope:global +VISetNextFrameBuffer = .text:0x800A773C; // type:function size:0x6C scope:global +VISetBlack = .text:0x800A77A8; // type:function size:0x7C scope:global +GetCurrentDisplayPosition = .text:0x800A7824; // type:function size:0x3C scope:local +getCurrentFieldEvenOdd = .text:0x800A7860; // type:function size:0x68 scope:local +VIGetNextField = .text:0x800A78C8; // type:function size:0x9C scope:global +VIGetCurrentLine = .text:0x800A7964; // type:function size:0x98 scope:global +VIGetTvFormat = .text:0x800A79FC; // type:function size:0x68 scope:global +__VIDisplayPositionToXY = .text:0x800A7A64; // type:function size:0x21C scope:global +__VIGetCurrentPosition = .text:0x800A7C80; // type:function size:0x60 scope:global +DBInit = .text:0x800A7CE0; // type:function size:0x28 scope:global +__DBExceptionDestinationAux = .text:0x800A7D08; // type:function size:0x48 scope:global +__DBExceptionDestination = .text:0x800A7D50; // type:function size:0x10 scope:global +__DBIsExceptionMarked = .text:0x800A7D60; // type:function size:0x1C scope:global +DBPrintf = .text:0x800A7D7C; // type:function size:0x50 scope:global +PSMTXIdentity = .text:0x800A7DCC; // type:function size:0x2C scope:global +PSMTXConcat = .text:0x800A7DF8; // type:function size:0xCC scope:global +PSMTXTrans = .text:0x800A7EC4; // type:function size:0x34 scope:global +PSMTXTransApply = .text:0x800A7EF8; // type:function size:0x4C scope:global +PSMTXScale = .text:0x800A7F44; // type:function size:0x28 scope:global +PSMTXScaleApply = .text:0x800A7F6C; // type:function size:0x58 scope:global +PSMTXMultVec = .text:0x800A7FC4; // type:function size:0x54 scope:global +C_MTXPerspective = .text:0x800A8018; // type:function size:0xD0 scope:global +C_MTXOrtho = .text:0x800A80E8; // type:function size:0x98 scope:global +PSMTX44Concat = .text:0x800A8180; // type:function size:0x104 scope:global +__GXDefaultTexRegionCallback = .text:0x800A8284; // type:function size:0xFC scope:local +__GXDefaultTlutRegionCallback = .text:0x800A8380; // type:function size:0x24 scope:local +__GXShutdown = .text:0x800A83A4; // type:function size:0x190 scope:local +GXInit = .text:0x800A8534; // type:function size:0x798 scope:global +__GXInitGX = .text:0x800A8CCC; // type:function size:0x938 scope:global +GXCPInterruptHandler = .text:0x800A9604; // type:function size:0x134 scope:local +GXInitFifoBase = .text:0x800A9738; // type:function size:0x6C scope:global +GXInitFifoPtrs = .text:0x800A97A4; // type:function size:0x70 scope:global +GXInitFifoLimits = .text:0x800A9814; // type:function size:0xC scope:global +GXSetCPUFifo = .text:0x800A9820; // type:function size:0x128 scope:global +GXSetGPFifo = .text:0x800A9948; // type:function size:0x178 scope:global +GXGetGPStatus = .text:0x800A9AC0; // type:function size:0x50 scope:global +GXGetFifoBase = .text:0x800A9B10; // type:function size:0x8 scope:global +GXGetFifoSize = .text:0x800A9B18; // type:function size:0x8 scope:global +GXSetBreakPtCallback = .text:0x800A9B20; // type:function size:0x44 scope:global +__GXFifoInit = .text:0x800A9B64; // type:function size:0x4C scope:global +__GXFifoReadEnable = .text:0x800A9BB0; // type:function size:0x24 scope:local +__GXFifoReadDisable = .text:0x800A9BD4; // type:function size:0x24 scope:local +__GXFifoLink = .text:0x800A9BF8; // type:function size:0x34 scope:local +__GXWriteFifoIntEnable = .text:0x800A9C2C; // type:function size:0x30 scope:local +__GXWriteFifoIntReset = .text:0x800A9C5C; // type:function size:0x30 scope:local +__GXCleanGPFifo = .text:0x800A9C8C; // type:function size:0x100 scope:global +GXGetCPUFifo = .text:0x800A9D8C; // type:function size:0x8 scope:global +GXGetGPFifo = .text:0x800A9D94; // type:function size:0x8 scope:global +GXSetVtxDesc = .text:0x800A9D9C; // type:function size:0x26C scope:global +__GXSetVCD = .text:0x800AA008; // type:function size:0xBC scope:global +__GXCalculateVLim = .text:0x800AA0C4; // type:function size:0x124 scope:global +GXClearVtxDesc = .text:0x800AA1E8; // type:function size:0x38 scope:global +GXSetVtxAttrFmt = .text:0x800AA220; // type:function size:0x25C scope:global +GXSetVtxAttrFmtv = .text:0x800AA47C; // type:function size:0x280 scope:global +__GXSetVAT = .text:0x800AA6FC; // type:function size:0x9C scope:global +GXSetArray = .text:0x800AA798; // type:function size:0x8C scope:global +GXInvalidateVtxCache = .text:0x800AA824; // type:function size:0x10 scope:global +GXSetTexCoordGen2 = .text:0x800AA834; // type:function size:0x280 scope:global +GXSetNumTexGens = .text:0x800AAAB4; // type:function size:0x3C scope:global +GXSetMisc = .text:0x800AAAF0; // type:function size:0x94 scope:global +GXFlush = .text:0x800AAB84; // type:function size:0x5C scope:global +__GXAbort = .text:0x800AABE0; // type:function size:0x16C scope:global +GXAbortFrame = .text:0x800AAD4C; // type:function size:0x170 scope:global +GXSetDrawSync = .text:0x800AAEBC; // type:function size:0xB4 scope:global +GXReadDrawSync = .text:0x800AAF70; // type:function size:0xC scope:global +GXSetDrawDone = .text:0x800AAF7C; // type:function size:0x98 scope:global +GXDrawDone = .text:0x800AB014; // type:function size:0x80 scope:global +GXPixModeSync = .text:0x800AB094; // type:function size:0x24 scope:global +GXPokeAlphaMode = .text:0x800AB0B8; // type:function size:0x14 scope:global +GXPokeAlphaRead = .text:0x800AB0CC; // type:function size:0x20 scope:global +GXPokeAlphaUpdate = .text:0x800AB0EC; // type:function size:0x18 scope:global +GXPokeBlendMode = .text:0x800AB104; // type:function size:0x64 scope:global +GXPokeColorUpdate = .text:0x800AB168; // type:function size:0x18 scope:global +GXPokeDstAlpha = .text:0x800AB180; // type:function size:0x24 scope:global +GXPokeDither = .text:0x800AB1A4; // type:function size:0x18 scope:global +GXPokeZMode = .text:0x800AB1BC; // type:function size:0x20 scope:global +GXSetDrawSyncCallback = .text:0x800AB1DC; // type:function size:0x44 scope:global +GXTokenInterruptHandler = .text:0x800AB220; // type:function size:0x88 scope:local +GXSetDrawDoneCallback = .text:0x800AB2A8; // type:function size:0x44 scope:global +GXFinishInterruptHandler = .text:0x800AB2EC; // type:function size:0x80 scope:local +__GXPEInit = .text:0x800AB36C; // type:function size:0x74 scope:global +__GXSetDirtyState = .text:0x800AB3E0; // type:function size:0x80 scope:global +GXBegin = .text:0x800AB460; // type:function size:0xD0 scope:global +__GXSendFlushPrim = .text:0x800AB530; // type:function size:0x88 scope:global +GXSetLineWidth = .text:0x800AB5B8; // type:function size:0x40 scope:global +GXSetPointSize = .text:0x800AB5F8; // type:function size:0x40 scope:global +GXEnableTexOffsets = .text:0x800AB638; // type:function size:0x48 scope:global +GXSetCullMode = .text:0x800AB680; // type:function size:0x44 scope:global +GXSetCoPlanar = .text:0x800AB6C4; // type:function size:0x34 scope:global +__GXSetGenMode = .text:0x800AB6F8; // type:function size:0x24 scope:global +GXAdjustForOverscan = .text:0x800AB71C; // type:function size:0x144 scope:global +GXSetDispCopySrc = .text:0x800AB860; // type:function size:0x7C scope:global +GXSetTexCopySrc = .text:0x800AB8DC; // type:function size:0x7C scope:global +GXSetDispCopyDst = .text:0x800AB958; // type:function size:0x34 scope:global +GXSetTexCopyDst = .text:0x800AB98C; // type:function size:0x130 scope:global +GXSetDispCopyFrame2Field = .text:0x800ABABC; // type:function size:0x24 scope:global +GXSetCopyClamp = .text:0x800ABAE0; // type:function size:0x58 scope:global +GXGetYScaleFactor = .text:0x800ABB38; // type:function size:0x238 scope:global +GXSetDispCopyYScale = .text:0x800ABD70; // type:function size:0xCC scope:global +GXSetCopyClear = .text:0x800ABE3C; // type:function size:0x78 scope:global +GXSetCopyFilter = .text:0x800ABEB4; // type:function size:0x208 scope:global +GXSetDispCopyGamma = .text:0x800AC0BC; // type:function size:0x14 scope:global +GXCopyDisp = .text:0x800AC0D0; // type:function size:0x168 scope:global +GXCopyTex = .text:0x800AC238; // type:function size:0x18C scope:global +GXClearBoundingBox = .text:0x800AC3C4; // type:function size:0x38 scope:global +GXSetChanAmbColor = .text:0x800AC3FC; // type:function size:0xF0 scope:global +GXSetChanMatColor = .text:0x800AC4EC; // type:function size:0xF0 scope:global +GXSetNumChans = .text:0x800AC5DC; // type:function size:0x3C scope:global +GXSetChanCtrl = .text:0x800AC618; // type:function size:0xB8 scope:global +__GetImageTileCount = .text:0x800AC6D0; // type:function size:0xC8 scope:global +GXInitTexObj = .text:0x800AC798; // type:function size:0x24C scope:global +GXInitTexObjCI = .text:0x800AC9E4; // type:function size:0x48 scope:global +GXInitTexObjLOD = .text:0x800ACA2C; // type:function size:0x164 scope:global +GXGetTexObjData = .text:0x800ACB90; // type:function size:0xC scope:global +GXGetTexObjFmt = .text:0x800ACB9C; // type:function size:0x8 scope:global +GXGetTexObjMipMap = .text:0x800ACBA4; // type:function size:0x18 scope:global +GXLoadTexObjPreLoaded = .text:0x800ACBBC; // type:function size:0x17C scope:global +GXLoadTexObj = .text:0x800ACD38; // type:function size:0x54 scope:global +GXInitTlutObj = .text:0x800ACD8C; // type:function size:0x38 scope:global +GXLoadTlut = .text:0x800ACDC4; // type:function size:0x98 scope:global +GXInitTexCacheRegion = .text:0x800ACE5C; // type:function size:0xF4 scope:global +GXInitTlutRegion = .text:0x800ACF50; // type:function size:0x38 scope:global +GXInvalidateTexAll = .text:0x800ACF88; // type:function size:0x48 scope:global +GXSetTexRegionCallback = .text:0x800ACFD0; // type:function size:0x14 scope:global +GXSetTlutRegionCallback = .text:0x800ACFE4; // type:function size:0x14 scope:global +__SetSURegs = .text:0x800ACFF8; // type:function size:0xA0 scope:local +__GXSetSUTexRegs = .text:0x800AD098; // type:function size:0x17C scope:global +__GXSetTmemConfig = .text:0x800AD214; // type:function size:0x354 scope:global +GXSetTevIndirect = .text:0x800AD568; // type:function size:0x6C scope:global +GXSetIndTexCoordScale = .text:0x800AD5D4; // type:function size:0x144 scope:global +GXSetNumIndStages = .text:0x800AD718; // type:function size:0x24 scope:global +GXSetTevDirect = .text:0x800AD73C; // type:function size:0x48 scope:global +__GXUpdateBPMask = .text:0x800AD784; // type:function size:0x4 scope:global +__GXSetIndirectMask = .text:0x800AD788; // type:function size:0x30 scope:global +__GXFlushTextureState = .text:0x800AD7B8; // type:function size:0x24 scope:global +GXSetTevOp = .text:0x800AD7DC; // type:function size:0x8C scope:global +GXSetTevColorIn = .text:0x800AD868; // type:function size:0x44 scope:global +GXSetTevAlphaIn = .text:0x800AD8AC; // type:function size:0x44 scope:global +GXSetTevColorOp = .text:0x800AD8F0; // type:function size:0x68 scope:global +GXSetTevAlphaOp = .text:0x800AD958; // type:function size:0x68 scope:global +GXSetTevColor = .text:0x800AD9C0; // type:function size:0x7C scope:global +GXSetTevColorS10 = .text:0x800ADA3C; // type:function size:0x7C scope:global +GXSetTevKColor = .text:0x800ADAB8; // type:function size:0x74 scope:global +GXSetTevKColorSel = .text:0x800ADB2C; // type:function size:0x5C scope:global +GXSetTevKAlphaSel = .text:0x800ADB88; // type:function size:0x5C scope:global +GXSetTevSwapMode = .text:0x800ADBE4; // type:function size:0x48 scope:global +GXSetTevSwapModeTable = .text:0x800ADC2C; // type:function size:0x80 scope:global +GXSetAlphaCompare = .text:0x800ADCAC; // type:function size:0x44 scope:global +GXSetZTexture = .text:0x800ADCF0; // type:function size:0x8C scope:global +GXSetTevOrder = .text:0x800ADD7C; // type:function size:0x19C scope:global +GXSetNumTevStages = .text:0x800ADF18; // type:function size:0x28 scope:global +GXSetFog = .text:0x800ADF40; // type:function size:0x224 scope:global +GXInitFogAdjTable = .text:0x800AE164; // type:function size:0x1B0 scope:global +GXSetFogRangeAdj = .text:0x800AE314; // type:function size:0x124 scope:global +GXSetBlendMode = .text:0x800AE438; // type:function size:0x54 scope:global +GXSetColorUpdate = .text:0x800AE48C; // type:function size:0x2C scope:global +GXSetAlphaUpdate = .text:0x800AE4B8; // type:function size:0x2C scope:global +GXSetZMode = .text:0x800AE4E4; // type:function size:0x34 scope:global +GXSetZCompLoc = .text:0x800AE518; // type:function size:0x34 scope:global +GXSetPixelFmt = .text:0x800AE54C; // type:function size:0xD4 scope:global +GXSetDither = .text:0x800AE620; // type:function size:0x2C scope:global +GXSetDstAlpha = .text:0x800AE64C; // type:function size:0x3C scope:global +GXSetFieldMask = .text:0x800AE688; // type:function size:0x38 scope:global +GXSetFieldMode = .text:0x800AE6C0; // type:function size:0x78 scope:global +GXSetProjection = .text:0x800AE738; // type:function size:0xA4 scope:global +GXSetProjectionv = .text:0x800AE7DC; // type:function size:0x8C scope:global +GXLoadPosMtxImm = .text:0x800AE868; // type:function size:0x50 scope:global +GXLoadNrmMtxImm = .text:0x800AE8B8; // type:function size:0x50 scope:global +GXSetCurrentMtx = .text:0x800AE908; // type:function size:0x34 scope:global +GXLoadTexMtxImm = .text:0x800AE93C; // type:function size:0xB4 scope:global +__GXSetViewport = .text:0x800AE9F0; // type:function size:0x90 scope:global +GXSetViewportJitter = .text:0x800AEA80; // type:function size:0x58 scope:global +GXSetViewport = .text:0x800AEAD8; // type:function size:0x48 scope:global +GXSetScissor = .text:0x800AEB20; // type:function size:0x78 scope:global +GXGetScissor = .text:0x800AEB98; // type:function size:0x48 scope:global +GXSetScissorBoxOffset = .text:0x800AEBE0; // type:function size:0x40 scope:global +GXSetClipMode = .text:0x800AEC20; // type:function size:0x28 scope:global +__GXSetMatrixIndex = .text:0x800AEC48; // type:function size:0x84 scope:global +GXSetGPMetric = .text:0x800AECCC; // type:function size:0x848 scope:global +GXReadGPMetric = .text:0x800AF514; // type:function size:0x1A8 scope:global +GXClearGPMetric = .text:0x800AF6BC; // type:function size:0x10 scope:global +GXReadGP0Metric = .text:0x800AF6CC; // type:function size:0x2C scope:global +GXReadGP1Metric = .text:0x800AF6F8; // type:function size:0x2C scope:global +GXReadMemMetric = .text:0x800AF724; // type:function size:0x214 scope:global +GXClearMemMetric = .text:0x800AF938; // type:function size:0xA8 scope:global +GXReadPixMetric = .text:0x800AF9E0; // type:function size:0x138 scope:global +GXClearPixMetric = .text:0x800AFB18; // type:function size:0x30 scope:global +GXSetVCacheMetric = .text:0x800AFB48; // type:function size:0x44 scope:global +GXReadVCacheMetric = .text:0x800AFB8C; // type:function size:0x94 scope:global +GXClearVCacheMetric = .text:0x800AFC20; // type:function size:0x1C scope:global +GXReadXfRasMetric = .text:0x800AFC3C; // type:function size:0xC4 scope:global +ClampStick = .text:0x800AFD00; // type:function size:0x130 scope:local +PADClamp = .text:0x800AFE30; // type:function size:0x114 scope:global +UpdateOrigin = .text:0x800AFF44; // type:function size:0x1A4 scope:local +PADOriginCallback = .text:0x800B00E8; // type:function size:0xC4 scope:local +PADOriginUpdateCallback = .text:0x800B01AC; // type:function size:0xCC scope:local +PADProbeCallback = .text:0x800B0278; // type:function size:0xD8 scope:local +PADTypeAndStatusCallback = .text:0x800B0350; // type:function size:0x32C scope:local +PADReceiveCheckCallback = .text:0x800B067C; // type:function size:0x140 scope:local +PADReset = .text:0x800B07BC; // type:function size:0x110 scope:global +PADRecalibrate = .text:0x800B08CC; // type:function size:0x114 scope:global +PADInit = .text:0x800B09E0; // type:function size:0x150 scope:global +PADRead = .text:0x800B0B30; // type:function size:0x300 scope:global +PADControlMotor = .text:0x800B0E30; // type:function size:0xB8 scope:global +PADSetSpec = .text:0x800B0EE8; // type:function size:0x60 scope:global +SPEC0_MakeStatus = .text:0x800B0F48; // type:function size:0x174 scope:local +SPEC1_MakeStatus = .text:0x800B10BC; // type:function size:0x174 scope:local +SPEC2_MakeStatus = .text:0x800B1230; // type:function size:0x470 scope:local +OnReset = .text:0x800B16A0; // type:function size:0xBC scope:local +SamplingHandler = .text:0x800B175C; // type:function size:0x60 scope:local +PADSetSamplingCallback = .text:0x800B17BC; // type:function size:0x54 scope:global +__PADDisableRecalibration = .text:0x800B1810; // type:function size:0x7C scope:global +__DVDInitWA = .text:0x800B188C; // type:function size:0x40 scope:weak +__DVDInterruptHandler = .text:0x800B18CC; // type:function size:0x2E0 scope:weak +AlarmHandler = .text:0x800B1BAC; // type:function size:0x84 scope:local +AlarmHandlerForTimeout = .text:0x800B1C30; // type:function size:0x70 scope:local +Read = .text:0x800B1CA0; // type:function size:0x110 scope:local +SeekTwiceBeforeRead = .text:0x800B1DB0; // type:function size:0x80 scope:local +DVDLowRead = .text:0x800B1E30; // type:function size:0x298 scope:weak +DVDLowSeek = .text:0x800B20C8; // type:function size:0x94 scope:weak +DVDLowWaitCoverClose = .text:0x800B215C; // type:function size:0x2C scope:weak +DVDLowReadDiskID = .text:0x800B2188; // type:function size:0xA4 scope:weak +DVDLowStopMotor = .text:0x800B222C; // type:function size:0x8C scope:weak +DVDLowRequestError = .text:0x800B22B8; // type:function size:0x8C scope:weak +DVDLowInquiry = .text:0x800B2344; // type:function size:0x9C scope:weak +DVDLowAudioStream = .text:0x800B23E0; // type:function size:0x98 scope:weak +DVDLowRequestAudioStatus = .text:0x800B2478; // type:function size:0x8C scope:weak +DVDLowAudioBufferConfig = .text:0x800B2504; // type:function size:0x9C scope:weak +DVDLowReset = .text:0x800B25A0; // type:function size:0xBC scope:weak +DVDLowBreak = .text:0x800B265C; // type:function size:0x14 scope:weak +DVDLowClearCallback = .text:0x800B2670; // type:function size:0x1C scope:weak +__DVDLowSetWAType = .text:0x800B268C; // type:function size:0x44 scope:weak +__DVDLowTestAlarm = .text:0x800B26D0; // type:function size:0x38 scope:global +__DVDFSInit = .text:0x800B2708; // type:function size:0x38 scope:global +DVDConvertPathToEntrynum = .text:0x800B2740; // type:function size:0x2F4 scope:global +DVDOpen = .text:0x800B2A34; // type:function size:0xC8 scope:global +DVDClose = .text:0x800B2AFC; // type:function size:0x24 scope:global +entryToPath = .text:0x800B2B20; // type:function size:0x160 scope:local +DVDGetCurrentDir = .text:0x800B2C80; // type:function size:0xC4 scope:global +DVDReadAsyncPrio = .text:0x800B2D44; // type:function size:0xC0 scope:global +cbForReadAsync = .text:0x800B2E04; // type:function size:0x30 scope:local +DVDReadPrio = .text:0x800B2E34; // type:function size:0x118 scope:global +cbForReadSync = .text:0x800B2F4C; // type:function size:0x24 scope:local +defaultOptionalCommandChecker = .text:0x800B2F70; // type:function size:0x4 scope:local +DVDInit = .text:0x800B2F74; // type:function size:0xCC scope:global +stateReadingFST = .text:0x800B3040; // type:function size:0x94 scope:local +cbForStateReadingFST = .text:0x800B30D4; // type:function size:0x8C scope:local +cbForStateError = .text:0x800B3160; // type:function size:0xAC scope:local +stateTimeout = .text:0x800B320C; // type:function size:0x34 scope:local +stateGettingError = .text:0x800B3240; // type:function size:0x28 scope:local +CategorizeError = .text:0x800B3268; // type:function size:0xB4 scope:local +cbForStateGettingError = .text:0x800B331C; // type:function size:0x294 scope:local +cbForUnrecoveredError = .text:0x800B35B0; // type:function size:0x68 scope:local +cbForUnrecoveredErrorRetry = .text:0x800B3618; // type:function size:0x98 scope:local +stateGoToRetry = .text:0x800B36B0; // type:function size:0x28 scope:local +cbForStateGoToRetry = .text:0x800B36D8; // type:function size:0x158 scope:local +stateCheckID = .text:0x800B3830; // type:function size:0xE0 scope:local +stateCheckID3 = .text:0x800B3910; // type:function size:0x34 scope:local +stateCheckID2a = .text:0x800B3944; // type:function size:0x34 scope:local +cbForStateCheckID2a = .text:0x800B3978; // type:function size:0x74 scope:local +stateCheckID2 = .text:0x800B39EC; // type:function size:0x38 scope:local +cbForStateCheckID1 = .text:0x800B3A24; // type:function size:0x114 scope:local +cbForStateCheckID2 = .text:0x800B3B38; // type:function size:0xE4 scope:local +cbForStateCheckID3 = .text:0x800B3C1C; // type:function size:0xFC scope:local +AlarmHandler = .text:0x800B3D18; // type:function size:0x44 scope:local +stateCoverClosed = .text:0x800B3D5C; // type:function size:0xCC scope:local +stateCoverClosed_CMD = .text:0x800B3E28; // type:function size:0x30 scope:local +cbForStateCoverClosed = .text:0x800B3E58; // type:function size:0x70 scope:local +stateMotorStopped = .text:0x800B3EC8; // type:function size:0x28 scope:local +cbForStateMotorStopped = .text:0x800B3EF0; // type:function size:0xE4 scope:local +stateReady = .text:0x800B3FD4; // type:function size:0x230 scope:local +stateBusy = .text:0x800B4204; // type:function size:0x320 scope:local +cbForStateBusy = .text:0x800B4524; // type:function size:0x638 scope:local +DVDReadAbsAsyncPrio = .text:0x800B4B5C; // type:function size:0xDC scope:global +DVDReadAbsAsyncForBS = .text:0x800B4C38; // type:function size:0xD0 scope:global +DVDReadDiskID = .text:0x800B4D08; // type:function size:0xD4 scope:global +DVDCancelStreamAsync = .text:0x800B4DDC; // type:function size:0xBC scope:global +DVDInquiryAsync = .text:0x800B4E98; // type:function size:0xD0 scope:global +DVDReset = .text:0x800B4F68; // type:function size:0x44 scope:global +DVDGetCommandBlockStatus = .text:0x800B4FAC; // type:function size:0x4C scope:global +DVDGetDriveStatus = .text:0x800B4FF8; // type:function size:0xAC scope:global +DVDSetAutoInvalidation = .text:0x800B50A4; // type:function size:0x10 scope:global +DVDResume = .text:0x800B50B4; // type:function size:0x50 scope:global +DVDCancelAsync = .text:0x800B5104; // type:function size:0x27C scope:global +DVDCancel = .text:0x800B5380; // type:function size:0xAC scope:global +cbForCancelSync = .text:0x800B542C; // type:function size:0x24 scope:local +DVDGetCurrentDiskID = .text:0x800B5450; // type:function size:0x8 scope:global +DVDCheckDisk = .text:0x800B5458; // type:function size:0xF8 scope:global +__DVDPrepareResetAsync = .text:0x800B5550; // type:function size:0x11C scope:global +__DVDTestAlarm = .text:0x800B566C; // type:function size:0x38 scope:global +__DVDClearWaitingQueue = .text:0x800B56A4; // type:function size:0x38 scope:global +__DVDPushWaitingQueue = .text:0x800B56DC; // type:function size:0x68 scope:global +__DVDPopWaitingQueue = .text:0x800B5744; // type:function size:0xA0 scope:global +__DVDCheckWaitingQueue = .text:0x800B57E4; // type:function size:0x58 scope:global +__DVDDequeueWaitingQueue = .text:0x800B583C; // type:function size:0x60 scope:global +ErrorCode2Num = .text:0x800B589C; // type:function size:0x11C scope:local +__DVDStoreErrorCode = .text:0x800B59B8; // type:function size:0x7C scope:global +DVDCompareDiskID = .text:0x800B5A34; // type:function size:0xF8 scope:global +__DVDPrintFatalMessage = .text:0x800B5B2C; // type:function size:0x30 scope:global +cb = .text:0x800B5B5C; // type:function size:0xD8 scope:local +__fstLoad = .text:0x800B5C34; // type:function size:0x168 scope:global +DEMOInit = .text:0x800B5D9C; // type:function size:0x74 scope:global +__DEMOInitRenderMode = .text:0x800B5E10; // type:function size:0x154 scope:local +__DEMOInitMem = .text:0x800B5F64; // type:function size:0xD4 scope:local +__DEMOInitGX = .text:0x800B6038; // type:function size:0x11C scope:local +__DEMOInitVI = .text:0x800B6154; // type:function size:0x48 scope:local +DEMOBeforeRender = .text:0x800B619C; // type:function size:0xE8 scope:global +DEMODoneRender = .text:0x800B6284; // type:function size:0x84 scope:global +DEMOSwapBuffers = .text:0x800B6308; // type:function size:0x68 scope:global +DEMOGetRenderModeObj = .text:0x800B6370; // type:function size:0x8 scope:global +__NoHangDoneRender = .text:0x800B6378; // type:function size:0xF4 scope:local +DEMOSetGPHangMetric = .text:0x800B646C; // type:function size:0xBC scope:global +__DEMODiagnoseHang = .text:0x800B6528; // type:function size:0x1BC scope:local +DEMOReInit = .text:0x800B66E4; // type:function size:0x1E0 scope:global +DEMOInitCaption = .text:0x800B68C4; // type:function size:0x25C scope:global +DEMOPuts = .text:0x800B6B20; // type:function size:0x310 scope:global +DEMOPrintf = .text:0x800B6E30; // type:function size:0xC4 scope:global +DEMOPadCopy = .text:0x800B6EF4; // type:function size:0x198 scope:local +DEMOPadRead = .text:0x800B708C; // type:function size:0xCC scope:global +DEMOPadInit = .text:0x800B7158; // type:function size:0xD4 scope:global +DEMOWriteStats = .text:0x800B722C; // type:function size:0x394 scope:local +DEMOUpdateStats = .text:0x800B75C0; // type:function size:0x58 scope:global +DEMOPrintStats = .text:0x800B7618; // type:function size:0x96C scope:global +AIRegisterDMACallback = .text:0x800B7F84; // type:function size:0x44 scope:global +AIInitDMA = .text:0x800B7FC8; // type:function size:0x88 scope:global +AIGetDMAEnableFlag = .text:0x800B8050; // type:function size:0x10 scope:global +AIStartDMA = .text:0x800B8060; // type:function size:0x18 scope:global +AIStopDMA = .text:0x800B8078; // type:function size:0x18 scope:global +AIGetDMABytesLeft = .text:0x800B8090; // type:function size:0x10 scope:global +AIGetDMAStartAddr = .text:0x800B80A0; // type:function size:0x1C scope:global +AISetStreamPlayState = .text:0x800B80BC; // type:function size:0xD8 scope:global +AIGetStreamPlayState = .text:0x800B8194; // type:function size:0x10 scope:global +AISetDSPSampleRate = .text:0x800B81A4; // type:function size:0xE0 scope:global +AIGetDSPSampleRate = .text:0x800B8284; // type:function size:0x14 scope:global +__AI_set_stream_sample_rate = .text:0x800B8298; // type:function size:0xD4 scope:local +AIGetStreamSampleRate = .text:0x800B836C; // type:function size:0x10 scope:global +AISetStreamVolLeft = .text:0x800B837C; // type:function size:0x1C scope:global +AIGetStreamVolLeft = .text:0x800B8398; // type:function size:0x10 scope:global +AISetStreamVolRight = .text:0x800B83A8; // type:function size:0x1C scope:global +AIGetStreamVolRight = .text:0x800B83C4; // type:function size:0x10 scope:global +AIInit = .text:0x800B83D4; // type:function size:0x16C scope:global +__AISHandler = .text:0x800B8540; // type:function size:0x7C scope:local +__AIDHandler = .text:0x800B85BC; // type:function size:0xAC scope:local +__AICallbackStackSwitch = .text:0x800B8668; // type:function size:0x58 scope:local +__AI_SRC_INIT = .text:0x800B86C0; // type:function size:0x1E4 scope:local +ARGetDMAStatus = .text:0x800B88A4; // type:function size:0x3C scope:global +ARStartDMA = .text:0x800B88E0; // type:function size:0xF0 scope:global +ARInit = .text:0x800B89D0; // type:function size:0xC4 scope:global +ARGetBaseAddress = .text:0x800B8A94; // type:function size:0x8 scope:global +__ARHandler = .text:0x800B8A9C; // type:function size:0x78 scope:local +__ARChecksize = .text:0x800B8B14; // type:function size:0x17F4 scope:local +DSPCheckMailToDSP = .text:0x800BA308; // type:function size:0x10 scope:global +DSPCheckMailFromDSP = .text:0x800BA318; // type:function size:0x10 scope:global +DSPReadMailFromDSP = .text:0x800BA328; // type:function size:0x18 scope:global +DSPSendMailToDSP = .text:0x800BA340; // type:function size:0x14 scope:global +DSPInit = .text:0x800BA354; // type:function size:0xC4 scope:global +DSPAddTask = .text:0x800BA418; // type:function size:0x70 scope:global +__DSP_debug_printf = .text:0x800BA488; // type:function size:0x50 scope:global +__DSPHandler = .text:0x800BA4D8; // type:function size:0x424 scope:global +__DSP_exec_task = .text:0x800BA8FC; // type:function size:0x1A0 scope:global +__DSP_boot_task = .text:0x800BAA9C; // type:function size:0x18C scope:global +__DSP_insert_task = .text:0x800BAC28; // type:function size:0xA0 scope:global +__DSP_remove_task = .text:0x800BACC8; // type:function size:0x94 scope:global +__CARDDefaultApiCallback = .text:0x800BAD5C; // type:function size:0x4 scope:global +__CARDSyncCallback = .text:0x800BAD60; // type:function size:0x34 scope:global +__CARDExtHandler = .text:0x800BAD94; // type:function size:0xD8 scope:global +__CARDExiHandler = .text:0x800BAE6C; // type:function size:0x118 scope:global +__CARDTxHandler = .text:0x800BAF84; // type:function size:0xA8 scope:global +__CARDUnlockedHandler = .text:0x800BB02C; // type:function size:0x84 scope:global +__CARDEnableInterrupt = .text:0x800BB0B0; // type:function size:0xC0 scope:global +__CARDReadStatus = .text:0x800BB170; // type:function size:0xF0 scope:global +__CARDClearStatus = .text:0x800BB260; // type:function size:0xAC scope:global +TimeoutHandler = .text:0x800BB30C; // type:function size:0xA4 scope:local +Retry = .text:0x800BB3B0; // type:function size:0x22C scope:local +UnlockedCallback = .text:0x800BB5DC; // type:function size:0x110 scope:local +__CARDStart = .text:0x800BB6EC; // type:function size:0x1B4 scope:local +__CARDReadSegment = .text:0x800BB8A0; // type:function size:0x134 scope:global +__CARDWritePage = .text:0x800BB9D4; // type:function size:0x11C scope:global +__CARDEraseSector = .text:0x800BBAF0; // type:function size:0xE0 scope:global +CARDInit = .text:0x800BBBD0; // type:function size:0xAC scope:global +__CARDGetFontEncode = .text:0x800BBC7C; // type:function size:0x8 scope:global +__CARDSetDiskID = .text:0x800BBC84; // type:function size:0x38 scope:global +__CARDGetControlBlock = .text:0x800BBCBC; // type:function size:0xB8 scope:global +__CARDPutControlBlock = .text:0x800BBD74; // type:function size:0x64 scope:global +CARDGetResultCode = .text:0x800BBDD8; // type:function size:0x30 scope:global +CARDFreeBlocks = .text:0x800BBE08; // type:function size:0x150 scope:global +__CARDSync = .text:0x800BBF58; // type:function size:0x98 scope:global +OnReset = .text:0x800BBFF0; // type:function size:0x50 scope:local +bitrev = .text:0x800BC040; // type:function size:0x16C scope:local +ReadArrayUnlock = .text:0x800BC1AC; // type:function size:0x144 scope:local +DummyLen = .text:0x800BC2F0; // type:function size:0xC4 scope:local +__CARDUnlock = .text:0x800BC3B4; // type:function size:0xB58 scope:global +InitCallback = .text:0x800BCF0C; // type:function size:0x70 scope:local +DoneCallback = .text:0x800BCF7C; // type:function size:0x324 scope:local +BlockReadCallback = .text:0x800BD2A0; // type:function size:0xDC scope:local +__CARDRead = .text:0x800BD37C; // type:function size:0x64 scope:global +BlockWriteCallback = .text:0x800BD3E0; // type:function size:0xDC scope:local +__CARDWrite = .text:0x800BD4BC; // type:function size:0x64 scope:global +CARDGetXferredBytes = .text:0x800BD520; // type:function size:0x18 scope:global +__CARDGetFatBlock = .text:0x800BD538; // type:function size:0x8 scope:global +WriteCallback = .text:0x800BD540; // type:function size:0xD4 scope:local +EraseCallback = .text:0x800BD614; // type:function size:0xC8 scope:local +__CARDAllocBlock = .text:0x800BD6DC; // type:function size:0x118 scope:global +__CARDFreeBlock = .text:0x800BD7F4; // type:function size:0x9C scope:global +__CARDUpdateFatBlock = .text:0x800BD890; // type:function size:0xAC scope:global +__CARDGetDirBlock = .text:0x800BD93C; // type:function size:0x8 scope:global +WriteCallback = .text:0x800BD944; // type:function size:0xD0 scope:local +EraseCallback = .text:0x800BDA14; // type:function size:0xC8 scope:local +__CARDUpdateDir = .text:0x800BDADC; // type:function size:0xC4 scope:global +__CARDCheckSum = .text:0x800BDBA0; // type:function size:0x1B0 scope:global +VerifyID = .text:0x800BDD50; // type:function size:0x284 scope:local +VerifyDir = .text:0x800BDFD4; // type:function size:0x240 scope:local +VerifyFAT = .text:0x800BE214; // type:function size:0x284 scope:local +__CARDVerify = .text:0x800BE498; // type:function size:0x8C scope:global +CARDCheckExAsync = .text:0x800BE524; // type:function size:0x590 scope:global +CARDCheck = .text:0x800BEAB4; // type:function size:0x54 scope:global +IsCard = .text:0x800BEB08; // type:function size:0xCC scope:local +CARDProbeEx = .text:0x800BEBD4; // type:function size:0x17C scope:global +DoMount = .text:0x800BED50; // type:function size:0x410 scope:local +__CARDMountCallback = .text:0x800BF160; // type:function size:0x138 scope:global +CARDMountAsync = .text:0x800BF298; // type:function size:0x1A0 scope:global +CARDMount = .text:0x800BF438; // type:function size:0x48 scope:global +DoUnmount = .text:0x800BF480; // type:function size:0x9C scope:local +CARDUnmount = .text:0x800BF51C; // type:function size:0xAC scope:global +FormatCallback = .text:0x800BF5C8; // type:function size:0x144 scope:local +__CARDFormatRegionAsync = .text:0x800BF70C; // type:function size:0x658 scope:global +CARDFormatAsync = .text:0x800BFD64; // type:function size:0x48 scope:global +__CARDCompareFileName = .text:0x800BFDAC; // type:function size:0x68 scope:global +__CARDAccess = .text:0x800BFE14; // type:function size:0x94 scope:global +__CARDIsWritable = .text:0x800BFEA8; // type:function size:0x134 scope:global +__CARDIsReadable = .text:0x800BFFDC; // type:function size:0xF4 scope:global +__CARDGetFileNo = .text:0x800C00D0; // type:function size:0x150 scope:global +CARDOpen = .text:0x800C0220; // type:function size:0x11C scope:global +CARDClose = .text:0x800C033C; // type:function size:0x54 scope:global +__CARDIsOpened = .text:0x800C0390; // type:function size:0x8 scope:global +CreateCallbackFat = .text:0x800C0398; // type:function size:0x130 scope:local +CARDCreateAsync = .text:0x800C04C8; // type:function size:0x220 scope:global +__CARDSeek = .text:0x800C06E8; // type:function size:0x1B8 scope:global +ReadCallback = .text:0x800C08A0; // type:function size:0x130 scope:local +CARDReadAsync = .text:0x800C09D0; // type:function size:0x144 scope:global +CARDRead = .text:0x800C0B14; // type:function size:0x48 scope:global +WriteCallback = .text:0x800C0B5C; // type:function size:0x170 scope:local +EraseCallback = .text:0x800C0CCC; // type:function size:0xB0 scope:local +CARDWriteAsync = .text:0x800C0D7C; // type:function size:0x114 scope:global +DeleteCallback = .text:0x800C0E90; // type:function size:0xA4 scope:local +CARDDeleteAsync = .text:0x800C0F34; // type:function size:0x110 scope:global +UpdateIconOffsets = .text:0x800C1044; // type:function size:0x1F8 scope:local +CARDGetStatus = .text:0x800C123C; // type:function size:0x114 scope:global +CARDSetStatusAsync = .text:0x800C1350; // type:function size:0x174 scope:global +THPVideoDecode = .text:0x800C14C4; // type:function size:0x244 scope:global +__THPSetupBuffers = .text:0x800C1708; // type:function size:0x44 scope:local +__THPReadFrameHeader = .text:0x800C174C; // type:function size:0x13C scope:local +__THPReadScaneHeader = .text:0x800C1888; // type:function size:0x11C scope:local +__THPReadQuantizationTable = .text:0x800C19A4; // type:function size:0x3BC scope:local +__THPReadHuffmanTableSpecification = .text:0x800C1D60; // type:function size:0x1E0 scope:local +__THPHuffGenerateSizeTable = .text:0x800C1F40; // type:function size:0xF0 scope:local +__THPHuffGenerateCodeTable = .text:0x800C2030; // type:function size:0x68 scope:local +__THPHuffGenerateDecoderTables = .text:0x800C2098; // type:function size:0x1BC scope:local +__THPRestartDefinition = .text:0x800C2254; // type:function size:0x54 scope:local +__THPPrepBitStream = .text:0x800C22A8; // type:function size:0x24C scope:local +__THPDecompressYUV = .text:0x800C24F4; // type:function size:0x10C scope:local +__THPDecompressiMCURow512x448 = .text:0x800C2600; // type:function size:0x1A88 scope:local +__THPDecompressiMCURow640x480 = .text:0x800C4088; // type:function size:0x1A8C scope:local +__THPDecompressiMCURowNxN = .text:0x800C5B14; // type:function size:0x1AAC scope:local +__THPHuffDecodeDCTCompY = .text:0x800C75C0; // type:function size:0x67C scope:local +__THPHuffDecodeDCTCompU = .text:0x800C7C3C; // type:function size:0x6A8 scope:local +__THPHuffDecodeDCTCompV = .text:0x800C82E4; // type:function size:0x6A8 scope:local +THPInit = .text:0x800C898C; // type:function size:0xA0 scope:global +THPAudioDecode = .text:0x800C8A2C; // type:function size:0x464 scope:global +__THPAudioGetNewSample = .text:0x800C8E90; // type:function size:0x90 scope:local +__THPAudioInitialize = .text:0x800C8F20; // type:function size:0x3C scope:local +TEXGet = .text:0x800C8F5C; // type:function size:0x10 scope:global +TEXGetGXTexObjFromPalette = .text:0x800C8F6C; // type:function size:0xD4 scope:global +TRKHandleRequestEvent = .text:0x800C9040; // type:function size:0x28 scope:global +TRKHandleSupportEvent = .text:0x800C9068; // type:function size:0x20 scope:global +TRKIdle = .text:0x800C9088; // type:function size:0x2C scope:global +TRKNubMainLoop = .text:0x800C90B4; // type:function size:0xF4 scope:global +TRKInitializeEventQueue = .text:0x800C91A8; // type:function size:0x5C scope:global +TRKCopyEvent = .text:0x800C9204; // type:function size:0x24 scope:global +TRKGetNextEvent = .text:0x800C9228; // type:function size:0xC0 scope:global +TRKPostEvent = .text:0x800C92E8; // type:function size:0xE0 scope:global +TRKConstructEvent = .text:0x800C93C8; // type:function size:0x18 scope:global +TRKDestructEvent = .text:0x800C93E0; // type:function size:0x24 scope:global +TRKInitializeNub = .text:0x800C9404; // type:function size:0xD4 scope:global +TRKTerminateNub = .text:0x800C94D8; // type:function size:0x24 scope:global +TRKNubWelcome = .text:0x800C94FC; // type:function size:0x28 scope:global +TRKInitializeEndian = .text:0x800C9524; // type:function size:0x74 scope:global +TRKMessageSend = .text:0x800C9598; // type:function size:0x28 scope:global +TRKSetBufferUsed = .text:0x800C95C0; // type:function size:0x8 scope:local +TRKInitializeMessageBuffers = .text:0x800C95C8; // type:function size:0x78 scope:global +TRKGetFreeBuffer = .text:0x800C9640; // type:function size:0x9C scope:global +TRKGetBuffer = .text:0x800C96DC; // type:function size:0x2C scope:global +TRKReleaseBuffer = .text:0x800C9708; // type:function size:0x68 scope:global +TRKResetBuffer = .text:0x800C9770; // type:function size:0x40 scope:global +TRKSetBufferPosition = .text:0x800C97B0; // type:function size:0x30 scope:global +TRKAppendBuffer = .text:0x800C97E0; // type:function size:0xA4 scope:global +TRKReadBuffer = .text:0x800C9884; // type:function size:0x8C scope:global +TRKAppendBuffer1_ui16 = .text:0x800C9910; // type:function size:0x54 scope:global +TRKAppendBuffer1_ui32 = .text:0x800C9964; // type:function size:0x64 scope:global +TRKAppendBuffer1_ui64 = .text:0x800C99C8; // type:function size:0x88 scope:global +TRKAppendBuffer_ui8 = .text:0x800C9A50; // type:function size:0x68 scope:global +TRKAppendBuffer_ui32 = .text:0x800C9AB8; // type:function size:0x7C scope:global +TRKReadBuffer1_ui8 = .text:0x800C9B34; // type:function size:0x24 scope:global +TRKReadBuffer1_ui16 = .text:0x800C9B58; // type:function size:0x80 scope:global +TRKReadBuffer1_ui32 = .text:0x800C9BD8; // type:function size:0x90 scope:global +TRKReadBuffer1_ui64 = .text:0x800C9C68; // type:function size:0xB0 scope:global +TRKReadBuffer_ui8 = .text:0x800C9D18; // type:function size:0x74 scope:global +TRKReadBuffer_ui32 = .text:0x800C9D8C; // type:function size:0x7C scope:global +TRKTestForPacket = .text:0x800C9E08; // type:function size:0xD0 scope:global +TRKGetInput = .text:0x800C9ED8; // type:function size:0x7C scope:global +TRKProcessInput = .text:0x800C9F54; // type:function size:0x50 scope:global +TRKInitializeSerialHandler = .text:0x800C9FA4; // type:function size:0x24 scope:global +TRKTerminateSerialHandler = .text:0x800C9FC8; // type:function size:0x8 scope:global +usr_put_initialize = .text:0x800C9FD0; // type:function size:0x4 scope:global +TRKInitializeDispatcher = .text:0x800C9FD4; // type:function size:0x14 scope:global +TRKDispatchMessage = .text:0x800C9FE8; // type:function size:0x84 scope:global +TRKMessageIntoReply = .text:0x800CA06C; // type:function size:0x98 scope:local +TRKSendACK = .text:0x800CA104; // type:function size:0x50 scope:global +TRKStandardACK = .text:0x800CA154; // type:function size:0x34 scope:global +TRKDoUnsupported = .text:0x800CA188; // type:function size:0x28 scope:global +TRKDoConnect = .text:0x800CA1B0; // type:function size:0x28 scope:global +TRKDoDisconnect = .text:0x800CA1D8; // type:function size:0x50 scope:global +TRKDoReset = .text:0x800CA228; // type:function size:0x30 scope:global +TRKDoVersions = .text:0x800CA258; // type:function size:0x184 scope:global +TRKDoSupportMask = .text:0x800CA3DC; // type:function size:0xDC scope:global +TRKDoCPUType = .text:0x800CA4B8; // type:function size:0x244 scope:global +TRKDoReadMemory = .text:0x800CA6FC; // type:function size:0x1CC scope:global +TRKDoWriteMemory = .text:0x800CA8C8; // type:function size:0x1E0 scope:global +TRKDoReadRegisters = .text:0x800CAAA8; // type:function size:0x20C scope:global +TRKDoWriteRegisters = .text:0x800CACB4; // type:function size:0x1FC scope:global +TRKDoFlushCache = .text:0x800CAEB0; // type:function size:0x158 scope:global +TRKDoContinue = .text:0x800CB008; // type:function size:0x64 scope:global +TRKDoStep = .text:0x800CB06C; // type:function size:0x214 scope:global +TRKDoStop = .text:0x800CB280; // type:function size:0x58 scope:global +TRKSuppAccessFile = .text:0x800CB2D8; // type:function size:0x2D8 scope:global +TRKRequestSend = .text:0x800CB5B0; // type:function size:0x1A4 scope:global +TRKInitializeMutex = .text:0x800CB754; // type:function size:0x8 scope:global +TRKAcquireMutex = .text:0x800CB75C; // type:function size:0x8 scope:global +TRKReleaseMutex = .text:0x800CB764; // type:function size:0x8 scope:global +TRKDoNotifyStopped = .text:0x800CB76C; // type:function size:0xD8 scope:global +TRK_flush_cache = .text:0x800CB844; // type:function size:0x38 scope:global +__TRK_get_MSR = .text:0x800CB87C; // type:function size:0x8 scope:global +__TRK_set_MSR = .text:0x800CB884; // type:function size:0x8 scope:global +TRKValidMemory32 = .text:0x800CB88C; // type:function size:0x138 scope:global +TRK_ppc_memcpy = .text:0x800CB9C4; // type:function size:0x3C scope:local +TRKTargetAccessMemory = .text:0x800CBA00; // type:function size:0x164 scope:global +TRKTargetReadInstruction = .text:0x800CBB64; // type:function size:0x4C scope:global +TRKTargetAccessDefault = .text:0x800CBBB0; // type:function size:0xFC scope:global +TRKTargetAccessFP = .text:0x800CBCAC; // type:function size:0x148 scope:global +TRKTargetAccessExtended1 = .text:0x800CBDF4; // type:function size:0x178 scope:global +TRKTargetAccessExtended2 = .text:0x800CBF6C; // type:function size:0x17C scope:global +TRKTargetVersions = .text:0x800CC0E8; // type:function size:0x28 scope:global +TRKTargetSupportMask = .text:0x800CC110; // type:function size:0xA4 scope:global +TRKTargetCPUType = .text:0x800CC1B4; // type:function size:0x68 scope:global +TRKInterruptHandler = .text:0x800CC21C; // type:function size:0x194 scope:global +TRKExceptionHandler = .text:0x800CC3B0; // type:function size:0x9C scope:global +TRKPostInterruptEvent = .text:0x800CC44C; // type:function size:0xB0 scope:global +TRKSwapAndGo = .text:0x800CC4FC; // type:function size:0xC4 scope:global +TRKInterruptHandlerEnableInterrupts = .text:0x800CC5C0; // type:function size:0x54 scope:global +TRKTargetInterrupt = .text:0x800CC614; // type:function size:0x64 scope:global +TRKTargetAddStopInfo = .text:0x800CC678; // type:function size:0x90 scope:global +TRKTargetAddExceptionInfo = .text:0x800CC708; // type:function size:0x88 scope:global +TRKTargetEnableTrace = .text:0x800CC790; // type:function size:0x3C scope:local +TRKTargetStepDone = .text:0x800CC7CC; // type:function size:0x84 scope:local +TRKTargetDoStep = .text:0x800CC850; // type:function size:0x70 scope:local +TRKTargetCheckStep = .text:0x800CC8C0; // type:function size:0x68 scope:local +TRKTargetSingleStep = .text:0x800CC928; // type:function size:0x44 scope:global +TRKTargetStepOutOfRange = .text:0x800CC96C; // type:function size:0x48 scope:global +TRKTargetGetPC = .text:0x800CC9B4; // type:function size:0x10 scope:global +TRKTargetSupportRequest = .text:0x800CC9C4; // type:function size:0xF0 scope:global +TRKTargetFlushCache = .text:0x800CCAB4; // type:function size:0x3C scope:global +TRKTargetStopped = .text:0x800CCAF0; // type:function size:0x10 scope:global +TRKTargetSetStopped = .text:0x800CCB00; // type:function size:0x10 scope:global +TRKTargetStop = .text:0x800CCB10; // type:function size:0x28 scope:global +TRKPPCAccessSPR = .text:0x800CCB38; // type:function size:0xB0 scope:global +TRKPPCAccessPairedSingleRegister = .text:0x800CCBE8; // type:function size:0x78 scope:global +TRKPPCAccessFPRegister = .text:0x800CCC60; // type:function size:0x180 scope:global +TRKPPCAccessSpecialReg = .text:0x800CCDE0; // type:function size:0x68 scope:global +TRKTargetSetInputPendingPtr = .text:0x800CCE48; // type:function size:0x10 scope:global +InitMetroTRK = .text:0x800CCE58; // type:function size:0x94 scope:global +EnableMetroTRKInterrupts = .text:0x800CCEEC; // type:function size:0x20 scope:global +TRKTargetTranslate = .text:0x800CCF0C; // type:function size:0xC scope:global +TRK_copy_vector = .text:0x800CCF18; // type:function size:0x60 scope:global +__TRK_copy_vectors = .text:0x800CCF78; // type:function size:0x94 scope:global +TRKInitializeTarget = .text:0x800CD00C; // type:function size:0x40 scope:global +TRKSaveExtended1Block = .text:0x800CD04C; // type:function size:0x1B8 scope:global +TRKRestoreExtended1Block = .text:0x800CD204; // type:function size:0x1B8 scope:global +TRKTargetCPUMinorType = .text:0x800CD3BC; // type:function size:0x8 scope:global +TRK_main = .text:0x800CD3C4; // type:function size:0x48 scope:global +TRKLoadContext = .text:0x800CD40C; // type:function size:0x88 scope:global +TRKEXICallBack = .text:0x800CD494; // type:function size:0x38 scope:global +InitMetroTRKCommTable = .text:0x800CD4CC; // type:function size:0xE8 scope:global +TRKUARTInterruptHandler = .text:0x800CD5B4; // type:function size:0x4 scope:global +TRKInitializeIntDrivenUART = .text:0x800CD5B8; // type:function size:0x40 scope:global +EnableEXI2Interrupts = .text:0x800CD5F8; // type:function size:0x30 scope:global +TRKPollUART = .text:0x800CD628; // type:function size:0x30 scope:global +TRK_ReadUARTN = .text:0x800CD658; // type:function size:0x44 scope:global +TRK_WriteUARTN = .text:0x800CD69C; // type:function size:0x44 scope:global +ReserveEXI2Port = .text:0x800CD6E0; // type:function size:0x30 scope:global +UnreserveEXI2Port = .text:0x800CD710; // type:function size:0x30 scope:global +TRK_board_display = .text:0x800CD740; // type:function size:0x24 scope:global +TRKTargetContinue = .text:0x800CD764; // type:function size:0x34 scope:global +__va_arg = .text:0x800CD798; // type:function size:0xF4 scope:global +__destroy_global_chain = .text:0x800CD88C; // type:function size:0x48 scope:global +__cvt_fp2unsigned = .text:0x800CD8D4; // type:function size:0x5C scope:global +__div2u = .text:0x800CD930; // type:function size:0xEC scope:global +__div2i = .text:0x800CDA1C; // type:function size:0x138 scope:global +__mod2u = .text:0x800CDB54; // type:function size:0xE4 scope:global +__mod2i = .text:0x800CDC38; // type:function size:0x10C scope:global +__shl2i = .text:0x800CDD44; // type:function size:0x24 scope:global +__shr2u = .text:0x800CDD68; // type:function size:0x24 scope:global +__shr2i = .text:0x800CDD8C; // type:function size:0x28 scope:global +__cvt_sll_dbl = .text:0x800CDDB4; // type:function size:0xB0 scope:global +__cvt_sll_flt = .text:0x800CDE64; // type:function size:0xB4 scope:global +__cvt_dbl_usll = .text:0x800CDF18; // type:function size:0xCC scope:global +exit = .text:0x800CDFE4; // type:function size:0x10C scope:global +__num2dec = .text:0x800CE0F0; // type:function size:0x3B4 scope:global +__flush_buffer = .text:0x800CE4A4; // type:function size:0xCC scope:global +__prep_buffer = .text:0x800CE570; // type:function size:0x34 scope:global +__kill_critical_regions = .text:0x800CE5A4; // type:function size:0x4 scope:global +toupper = .text:0x800CE5A8; // type:function size:0x28 scope:global +tolower = .text:0x800CE5D0; // type:function size:0x28 scope:global +fwrite = .text:0x800CE5F8; // type:function size:0x2DC scope:global +wcstombs = .text:0x800CE8D4; // type:function size:0x3C scope:global +memcmp = .text:0x800CE910; // type:function size:0x44 scope:global +memchr = .text:0x800CE954; // type:function size:0x2C scope:global +memmove = .text:0x800CE980; // type:function size:0xDC scope:global +__copy_longs_rev_unaligned = .text:0x800CEA5C; // type:function size:0xB0 scope:global +__copy_longs_unaligned = .text:0x800CEB0C; // type:function size:0xC4 scope:global +__copy_longs_rev_aligned = .text:0x800CEBD0; // type:function size:0xAC scope:global +__copy_longs_aligned = .text:0x800CEC7C; // type:function size:0xBC scope:global +__stdio_atexit = .text:0x800CED38; // type:function size:0x4 scope:global +sprintf = .text:0x800CED3C; // type:function size:0xD4 scope:global +vsprintf = .text:0x800CEE10; // type:function size:0x78 scope:global +vprintf = .text:0x800CEE88; // type:function size:0x7C scope:global +__StringWrite = .text:0x800CEF04; // type:function size:0x6C scope:global +__FileWrite = .text:0x800CEF70; // type:function size:0x58 scope:global +__pformatter = .text:0x800CEFC8; // type:function size:0x630 scope:local +float2str = .text:0x800CF5F8; // type:function size:0x638 scope:local +round_decimal = .text:0x800CFC30; // type:function size:0x134 scope:local +longlong2str = .text:0x800CFD64; // type:function size:0x2E0 scope:local +long2str = .text:0x800D0044; // type:function size:0x224 scope:local +parse_format = .text:0x800D0268; // type:function size:0x4D8 scope:local +__StringRead = .text:0x800D0740; // type:function size:0x90 scope:global +strchr = .text:0x800D07D0; // type:function size:0x30 scope:global +strncmp = .text:0x800D0800; // type:function size:0x40 scope:global +strcmp = .text:0x800D0840; // type:function size:0x124 scope:global +strncpy = .text:0x800D0964; // type:function size:0x44 scope:global +strcpy = .text:0x800D09A8; // type:function size:0xB4 scope:global +strlen = .text:0x800D0A5C; // type:function size:0x20 scope:global +atoi = .text:0x800D0A7C; // type:function size:0xC4 scope:global +__strtoul = .text:0x800D0B40; // type:function size:0x348 scope:global +__close_console = .text:0x800D0E88; // type:function size:0x8 scope:global +__write_console = .text:0x800D0E90; // type:function size:0x98 scope:global +__read_console = .text:0x800D0F28; // type:function size:0xE0 scope:global +fwide = .text:0x800D1008; // type:function size:0x80 scope:global +fabs__Fd = .text:0x800D1088; // type:function size:0x8 scope:weak +__ieee754_pow = .text:0x800D1090; // type:function size:0x818 scope:global +scalbn = .text:0x800D18A8; // type:function size:0x20 scope:weak +__fpclassifyd__Fd = .text:0x800D18C8; // type:function size:0x80 scope:weak +ceil = .text:0x800D1948; // type:function size:0x168 scope:global +copysign = .text:0x800D1AB0; // type:function size:0x2C scope:global +floor = .text:0x800D1ADC; // type:function size:0x16C scope:global +frexp = .text:0x800D1C48; // type:function size:0x9C scope:global +ldexp = .text:0x800D1CE4; // type:function size:0x178 scope:global +pow = .text:0x800D1E5C; // type:function size:0x20 scope:global +fabsf__Ff = .text:0x800D1E7C; // type:function size:0x8 scope:weak +log10f = .text:0x800D1E84; // type:function size:0x1D4 scope:global +tanf = .text:0x800D2058; // type:function size:0x44 scope:global +cos__Ff = .text:0x800D209C; // type:function size:0x20 scope:weak +sin__Ff = .text:0x800D20BC; // type:function size:0x20 scope:weak +cosf = .text:0x800D20DC; // type:function size:0x194 scope:global +sinf = .text:0x800D2270; // type:function size:0x1A4 scope:global +__sinit_trigf_c = .text:0x800D2414; // type:function size:0x30 scope:local +sqrt = .text:0x800D2444; // type:function size:0x90 scope:global +EXI2_Init = .text:0x800D24D4; // type:function size:0x4 scope:global +EXI2_EnableInterrupts = .text:0x800D24D8; // type:function size:0x4 scope:global +EXI2_Poll = .text:0x800D24DC; // type:function size:0x8 scope:global +EXI2_ReadN = .text:0x800D24E4; // type:function size:0x8 scope:global +EXI2_WriteN = .text:0x800D24EC; // type:function size:0x8 scope:global +EXI2_Reserve = .text:0x800D24F4; // type:function size:0x4 scope:global +EXI2_Unreserve = .text:0x800D24F8; // type:function size:0x4 scope:global +AMC_IsStub = .text:0x800D24FC; // type:function size:0x8 scope:global +DBClose = .text:0x800D2504; // type:function size:0x4 scope:global +DBOpen = .text:0x800D2508; // type:function size:0x4 scope:global +DBWrite = .text:0x800D250C; // type:function size:0x260 scope:global +DBRead = .text:0x800D276C; // type:function size:0x8C scope:global +DBQueryData = .text:0x800D27F8; // type:function size:0x9C scope:global +DBInitInterrupts = .text:0x800D2894; // type:function size:0x54 scope:global +DBInitComm = .text:0x800D28E8; // type:function size:0x78 scope:global +DBGHandler = .text:0x800D2960; // type:function size:0x40 scope:local +MWCallback = .text:0x800D29A0; // type:function size:0x3C scope:local +DBGReadStatus = .text:0x800D29DC; // type:function size:0xAC scope:local +DBGWrite = .text:0x800D2A88; // type:function size:0xDC scope:local +DBGRead = .text:0x800D2B64; // type:function size:0xDC scope:local +DBGReadMailbox = .text:0x800D2C40; // type:function size:0xAC scope:local +DBGEXIImm = .text:0x800D2CEC; // type:function size:0x298 scope:local +Hu_IsStub = .text:0x800D2F84; // type:function size:0x8 scope:weak +_ctors = .ctors:0x800D2FA0; // type:label scope:global data:4byte +__destroy_global_chain_reference = .dtors:0x800D2FC0; // type:object size:0x4 scope:global +_dtors = .dtors:0x800D2FC0; // type:label scope:global data:4byte +@5 = .rodata:0x800D2FE0; // type:object size:0x30 scope:local data:4byte +@120 = .rodata:0x800D3010; // type:object size:0x30 scope:local data:4byte +@121 = .rodata:0x800D3040; // type:object size:0x30 scope:local data:4byte +@135 = .rodata:0x800D3070; // type:object size:0x30 scope:local data:4byte +@136 = .rodata:0x800D30A0; // type:object size:0x30 scope:local data:4byte +@160 = .rodata:0x800D30D0; // type:object size:0x30 scope:local data:4byte +@161 = .rodata:0x800D3100; // type:object size:0x30 scope:local data:4byte +@5 = .rodata:0x800D3130; // type:object size:0x30 scope:local data:4byte +@28 = .rodata:0x800D3160; // type:object size:0x30 scope:local data:4byte +@29 = .rodata:0x800D3190; // type:object size:0x30 scope:local data:4byte +D_800D31C0 = .rodata:0x800D31C0; // type:object size:0x40 scope:local data:4byte +...rodata.0 = .rodata:0x800D3200; // type:label scope:local +ClampRegion = .rodata:0x800D3200; // type:object size:0xA scope:local data:byte +...rodata.0 = .rodata:0x800D3210; // type:label scope:local +__THPJpegNaturalOrder = .rodata:0x800D3210; // type:object size:0x50 scope:local data:byte +__THPAANScaleFactor = .rodata:0x800D3260; // type:object size:0x40 scope:local +@40 = .rodata:0x800D32A0; // type:object size:0x1A scope:local data:string +gTRKMemMap = .rodata:0x800D32C0; // type:object size:0x10 scope:global data:4byte +@233 = .rodata:0x800D32D0; // type:object size:0x14 scope:local data:4byte +@238 = .rodata:0x800D32E4; // type:object size:0x14 scope:local data:4byte +@243 = .rodata:0x800D32F8; // type:object size:0x14 scope:local data:4byte +__constants = .rodata:0x800D3310; // type:object size:0x18 scope:local data:double +bit_values = .rodata:0x800D3328; // type:object size:0x48 scope:local data:double +digit_values = .rodata:0x800D3370; // type:object size:0x40 scope:local +__ctype_map = .rodata:0x800D33B0; // type:object size:0x100 scope:global +__lower_map = .rodata:0x800D34B0; // type:object size:0x100 scope:global +__upper_map = .rodata:0x800D35B0; // type:object size:0x100 scope:global +@stringBase0 = .rodata:0x800D36B0; // type:object size:0xE scope:local data:string_table +...rodata.0 = .rodata:0x800D36C0; // type:label scope:local +bp = .rodata:0x800D36C0; // type:object size:0x10 scope:local data:double +dp_h = .rodata:0x800D36D0; // type:object size:0x10 scope:local +dp_l = .rodata:0x800D36E0; // type:object size:0x10 scope:local +...rodata.0 = .rodata:0x800D36F0; // type:label scope:local +_log10_poly = .rodata:0x800D36F0; // type:object size:0x10 scope:local data:float +...rodata.0 = .rodata:0x800D3700; // type:label scope:local +tmp_float = .rodata:0x800D3700; // type:object size:0x10 scope:local data:float +...data.0 = .data:0x800D3720; // type:label scope:local +gTgPcTPL = .data:0x800D3720; // type:object size:0x8081 scope:global +@105 = .data:0x800DB7A4; // type:object size:0xC scope:local data:string +@106 = .data:0x800DB7B0; // type:object size:0xB scope:local data:string +@184 = .data:0x800DB7BC; // type:object size:0x1D scope:local data:string +gTypeFile = .data:0x800DB7E0; // type:object size:0x10 scope:global +...data.0 = .data:0x800DB800; // type:label scope:local +gcoverOpen = .data:0x800DB800; // type:object size:0x28C1 scope:global align:32 +gnoDisk = .data:0x800DE0E0; // type:object size:0x1F01 scope:global align:32 +gretryErr = .data:0x800E0000; // type:object size:0x2441 scope:global align:32 +gfatalErr = .data:0x800E2460; // type:object size:0x32E1 scope:global align:32 noreloc +gwrongDisk = .data:0x800E5760; // type:object size:0x1F01 scope:global align:32 +greadingDisk = .data:0x800E7680; // type:object size:0xC41 scope:global align:32 +gbar = .data:0x800E82E0; // type:object size:0x741 scope:global align:32 +gyes = .data:0x800E8A40; // type:object size:0x5C1 scope:global align:32 +gno = .data:0x800E9020; // type:object size:0x5C1 scope:global align:32 +gmesgOK = .data:0x800E9600; // type:object size:0x341 scope:global align:32 +Vert_s16 = .data:0x800E9960; // type:object size:0x18 scope:global data:2byte +VertTitle_s16 = .data:0x800E9980; // type:object size:0x18 scope:global +VertYes_s16 = .data:0x800E99A0; // type:object size:0x18 scope:global +VertNo_s16 = .data:0x800E99C0; // type:object size:0x18 scope:global +Vert_s16Bar = .data:0x800E99E0; // type:object size:0x18 scope:global +Colors_u32 = .data:0x800E9A00; // type:object size:0xC scope:global +TexCoords_u8 = .data:0x800E9A20; // type:object size:0x8 scope:global +_dummy0 = .data:0x800E9A28; // type:object size:0xB scope:global data:string +_dummy1 = .data:0x800E9A34; // type:object size:0xE scope:global data:string +_dummy2 = .data:0x800E9A44; // type:object size:0xE scope:global data:string +_dummy3 = .data:0x800E9A54; // type:object size:0x54 scope:global data:string +_dummy4 = .data:0x800E9AA8; // type:object size:0x51 scope:global data:string +_dummy5 = .data:0x800E9AFC; // type:object size:0x38 scope:global data:string +@746 = .data:0x800E9B34; // type:object size:0x4B scope:local data:string +@747 = .data:0x800E9B80; // type:object size:0x4D scope:local data:string +@748 = .data:0x800E9BD0; // type:object size:0xA scope:local data:string +@751 = .data:0x800E9BDC; // type:object size:0xB scope:local data:string +@793 = .data:0x800E9BE8; // type:object size:0xD8 scope:local +@813 = .data:0x800E9CC0; // type:object size:0x1C scope:local +@825 = .data:0x800E9CDC; // type:object size:0x2B scope:local data:string +@826 = .data:0x800E9D08; // type:object size:0x9 scope:local data:string +@1536 = .data:0x800E9D14; // type:object size:0x11 scope:local data:string +@1537 = .data:0x800E9D28; // type:object size:0x11 scope:local data:string +@1538 = .data:0x800E9D3C; // type:object size:0x11 scope:local data:string +@1539 = .data:0x800E9D50; // type:object size:0x11 scope:local data:string +@1540 = .data:0x800E9D64; // type:object size:0x13 scope:local data:string +@1541 = .data:0x800E9D78; // type:object size:0x13 scope:local data:string +@1542 = .data:0x800E9D8C; // type:object size:0x13 scope:local data:string +@1543 = .data:0x800E9DA0; // type:object size:0x13 scope:local data:string +@1544 = .data:0x800E9DB4; // type:object size:0x11 scope:local data:string +@1545 = .data:0x800E9DC8; // type:object size:0x11 scope:local data:string +@1546 = .data:0x800E9DDC; // type:object size:0x11 scope:local data:string +@1547 = .data:0x800E9DF0; // type:object size:0x11 scope:local data:string +@1548 = .data:0x800E9E04; // type:object size:0x11 scope:local data:string +@1549 = .data:0x800E9E18; // type:object size:0x11 scope:local data:string +@1550 = .data:0x800E9E2C; // type:object size:0x11 scope:local data:string +@1551 = .data:0x800E9E40; // type:object size:0x11 scope:local data:string +@1552 = .data:0x800E9E54; // type:object size:0x13 scope:local data:string +@1553 = .data:0x800E9E68; // type:object size:0x11 scope:local data:string +@1554 = .data:0x800E9E7C; // type:object size:0x11 scope:local data:string +@1555 = .data:0x800E9E90; // type:object size:0x11 scope:local data:string +@1556 = .data:0x800E9EA4; // type:object size:0x13 scope:local data:string +@1557 = .data:0x800E9EB8; // type:object size:0x13 scope:local data:string +@1558 = .data:0x800E9ECC; // type:object size:0x13 scope:local data:string +@1559 = .data:0x800E9EE0; // type:object size:0x13 scope:local data:string +@1560 = .data:0x800E9EF4; // type:object size:0x11 scope:local data:string +@1561 = .data:0x800E9F08; // type:object size:0x11 scope:local data:string +@1562 = .data:0x800E9F1C; // type:object size:0x11 scope:local data:string +@1563 = .data:0x800E9F30; // type:object size:0x11 scope:local data:string +@1564 = .data:0x800E9F44; // type:object size:0x15 scope:local data:string +@1565 = .data:0x800E9F5C; // type:object size:0xA0 scope:local +@1609 = .data:0x800E9FFC; // type:object size:0x13 scope:local data:string +@1610 = .data:0x800EA010; // type:object size:0x13 scope:local data:string +@1611 = .data:0x800EA024; // type:object size:0x11 scope:local data:string +@1612 = .data:0x800EA038; // type:object size:0x11 scope:local data:string +@1613 = .data:0x800EA04C; // type:object size:0x11 scope:local data:string +@1614 = .data:0x800EA060; // type:object size:0x13 scope:local data:string +@1615 = .data:0x800EA074; // type:object size:0x13 scope:local data:string +@1616 = .data:0x800EA088; // type:object size:0x11 scope:local data:string +@1617 = .data:0x800EA09C; // type:object size:0x78 scope:local +@1671 = .data:0x800EA114; // type:object size:0x11 scope:local data:string +@1672 = .data:0x800EA128; // type:object size:0x11 scope:local data:string +@1673 = .data:0x800EA13C; // type:object size:0x11 scope:local data:string +@1691 = .data:0x800EA150; // type:object size:0x1C scope:local +@1937 = .data:0x800EA16C; // type:object size:0x26 scope:local data:string +@1938 = .data:0x800EA194; // type:object size:0x34 scope:local +@9 = .data:0x800EA1C8; // type:object size:0x1E scope:local data:string +...data.0 = .data:0x800EA1E8; // type:label scope:local +VolumeTable = .data:0x800EA1E8; // type:object size:0x100 scope:global +@10 = .data:0x800EA2E8; // type:object size:0x3C scope:local data:string +@41 = .data:0x800EA324; // type:object size:0x3B scope:local data:string +@42 = .data:0x800EA360; // type:object size:0x35 scope:local data:string +@43 = .data:0x800EA398; // type:object size:0x10 scope:local data:string +@45 = .data:0x800EA3A8; // type:object size:0x1E scope:local data:string +@46 = .data:0x800EA3C8; // type:object size:0x12 scope:local data:string +@47 = .data:0x800EA3DC; // type:object size:0x1B scope:local data:string +@172 = .data:0x800EA3F8; // type:object size:0x2C scope:local data:string +@173 = .data:0x800EA424; // type:object size:0x33 scope:local data:string +@174 = .data:0x800EA458; // type:object size:0x29 scope:local data:string +@11 = .data:0x800EA488; // type:object size:0x22 scope:local data:string +@139 = .data:0x800EA4B0; // type:object size:0x1A scope:local data:string +@217 = .data:0x800EA4CC; // type:object size:0x34 scope:local +@237 = .data:0x800EA500; // type:object size:0x1C scope:local +@11 = .data:0x800EA520; // type:object size:0x22 scope:local data:string +...data.0 = .data:0x800EA548; // type:label scope:local +D_800EA548 = .data:0x800EA548; // type:object size:0x1B scope:local +D_800EA564 = .data:0x800EA564; // type:object size:0x35 scope:local data:string +D_800EA59C = .data:0x800EA59C; // type:object size:0xB scope:local data:string +jtbl_800EA5A8 = .data:0x800EA5A8; // type:object size:0x60 scope:local +jtbl_800EA608 = .data:0x800EA608; // type:object size:0x60 scope:local +jtbl_800EA668 = .data:0x800EA668; // type:object size:0xC8 scope:local +D_800EA730 = .data:0x800EA730; // type:object size:0xF scope:local data:string +D_800EA740 = .data:0x800EA740; // type:object size:0x12 scope:local data:string +D_800EA754 = .data:0x800EA754; // type:object size:0xE scope:local data:string +D_800EA764 = .data:0x800EA764; // type:object size:0x12 scope:local data:string +D_800EA778 = .data:0x800EA778; // type:object size:0x14 scope:local data:string +D_800EA78C = .data:0x800EA78C; // type:object size:0x14 scope:local data:string +D_800EA7A0 = .data:0x800EA7A0; // type:object size:0x14 scope:local data:string +D_800EA7B4 = .data:0x800EA7B4; // type:object size:0x14 scope:local data:string +gClassCode = .data:0x800EA7C8; // type:object size:0x10 scope:global +gClassSound = .data:0x800EA7D8; // type:object size:0x10 scope:global +D_800EA7E8 = .data:0x800EA7E8; // type:object size:0x3E scope:local data:string +D_800EA828 = .data:0x800EA828; // type:object size:0xB scope:local data:string +...data.0 = .data:0x800EA838; // type:label scope:local +D_800EA838 = .data:0x800EA838; // type:object size:0xD scope:local data:string +gClassFrame = .data:0x800EA848; // type:object size:0x10 scope:global +ganNameColor = .data:0x800EA858; // type:object size:0x20 scope:global +ganNamePixel = .data:0x800EA878; // type:object size:0x20 scope:global data:4byte +ganNameTexMtx = .data:0x800EA898; // type:object size:0x20 scope:global data:4byte +ganNameTexCoord = .data:0x800EA8B8; // type:object size:0x20 scope:global data:4byte +D_800EA8D8 = .data:0x800EA8D8; // type:object size:0x12 scope:local data:string +D_800EA8EC = .data:0x800EA8EC; // type:object size:0x12 scope:local data:string +D_800EA900 = .data:0x800EA900; // type:object size:0x12 scope:local data:string +@37 = .data:0x800EA914; // type:object size:0xC scope:local data:string +gaszNameColor = .data:0x800EA920; // type:object size:0x50 scope:global +gaszNameAlpha = .data:0x800EA970; // type:object size:0x24 scope:global +gapfDrawTriangle = .data:0x800EA994; // type:object size:0x20 scope:global +gapfDrawLine = .data:0x800EA9B4; // type:object size:0x18 scope:global +sZBufShift = .data:0x800EA9CC; // type:object size:0x40 scope:global +@41 = .data:0x800EAA0C; // type:object size:0xA scope:local data:string +@42 = .data:0x800EAA18; // type:object size:0xC scope:local data:string +gaszNameColorType = .data:0x800EAA24; // type:object size:0x14 scope:global +sCommandCodes_1679 = .data:0x800EAA38; // type:object size:0x20 scope:global data:4byte +sCommandCodes_1702 = .data:0x800EAA58; // type:object size:0x28 scope:global data:4byte +sCommandCodes2 = .data:0x800EAA80; // type:object size:0x28 scope:global data:4byte +GBIcode = .data:0x800EAAA8; // type:object size:0xC scope:global data:4byte +GBIcode2D2 = .data:0x800EAAB4; // type:object size:0x1C scope:global +GBIcode3D1 = .data:0x800EAAD0; // type:object size:0x14 scope:global +GBIcode3D2 = .data:0x800EAAE4; // type:object size:0x18 scope:global +anRenderModeDatabaseCycle2 = .data:0x800EAAFC; // type:object size:0x190 scope:global +anRenderModeDatabaseCopy = .data:0x800EAC8C; // type:object size:0x190 scope:global +anRenderModeDatabaseFill = .data:0x800EAE1C; // type:object size:0x190 scope:global +anRenderModeDatabaseCycle1 = .data:0x800EAFAC; // type:object size:0x190 scope:global +D_800EB13C = .data:0x800EB13C; // type:object size:0x2C scope:local data:string +jtbl_800EB168 = .data:0x800EB168; // type:object size:0x28 scope:local +jtbl_800EB190 = .data:0x800EB190; // type:object size:0x28 scope:local +D_800EB1B8 = .data:0x800EB1B8; // type:object size:0x3F scope:local data:string +D_800EB1F8 = .data:0x800EB1F8; // type:object size:0x14 scope:local data:string +jtbl_800EB20C = .data:0x800EB20C; // type:object size:0x20 scope:local +jtbl_800EB22C = .data:0x800EB22C; // type:object size:0x80 scope:local +D_800EB2AC = .data:0x800EB2AC; // type:object size:0x27 scope:local data:string +D_800EB2D4 = .data:0x800EB2D4; // type:object size:0x26 scope:local data:string +...data.0 = .data:0x800EB300; // type:label scope:local +@2 = .data:0x800EB300; // type:object size:0xD scope:local data:string +gClassSystem = .data:0x800EB310; // type:object size:0x10 scope:global +contMap = .data:0x800EB320; // type:object size:0x140 scope:local +@999 = .data:0x800EB460; // type:object size:0x40 scope:local +@1192 = .data:0x800EB4A0; // type:object size:0xC scope:local data:string +@1193 = .data:0x800EB4AC; // type:object size:0xB scope:local data:string +@1195 = .data:0x800EB4B8; // type:object size:0xD scope:local data:string +@1197 = .data:0x800EB4C8; // type:object size:0x40 scope:local +@1680 = .data:0x800EB508; // type:object size:0xF scope:local data:string +@1681 = .data:0x800EB518; // type:object size:0xE scope:local data:string +@1683 = .data:0x800EB528; // type:object size:0x9 scope:local data:string +@1687 = .data:0x800EB534; // type:object size:0x13 scope:local +@1691 = .data:0x800EB548; // type:object size:0x1A scope:local data:string +@1696 = .data:0x800EB564; // type:object size:0x10 scope:local data:string +@1699 = .data:0x800EB574; // type:object size:0xB scope:local data:string +@1702 = .data:0x800EB580; // type:object size:0xE scope:local data:string +@1710 = .data:0x800EB590; // type:object size:0xE scope:local data:string +@1716 = .data:0x800EB5A0; // type:object size:0xA scope:local data:string +@1722 = .data:0x800EB5AC; // type:object size:0xB scope:local data:string +@1726 = .data:0x800EB5B8; // type:object size:0xE scope:local data:string +@1729 = .data:0x800EB5C8; // type:object size:0xE scope:local data:string +@1732 = .data:0x800EB5D8; // type:object size:0xE scope:local data:string +@1736 = .data:0x800EB5E8; // type:object size:0xB scope:local data:string +@1737 = .data:0x800EB5F4; // type:object size:0xC scope:local data:string +@1738 = .data:0x800EB600; // type:object size:0xB scope:local data:string +@1740 = .data:0x800EB60C; // type:object size:0xF scope:local data:string +@1741 = .data:0x800EB61C; // type:object size:0x10 scope:local data:string +@1742 = .data:0x800EB62C; // type:object size:0xF scope:local data:string +@1759 = .data:0x800EB63C; // type:object size:0xD scope:local data:string +@1763 = .data:0x800EB64C; // type:object size:0xB scope:local data:string +...data.0 = .data:0x800EB658; // type:label scope:local +gClassCPU = .data:0x800EB658; // type:object size:0x10 scope:global +gaszNameGPR = .data:0x800EB668; // type:object size:0x80 scope:global +gaszNameFPR = .data:0x800EB6E8; // type:object size:0x80 scope:global +@87 = .data:0x800EB768; // type:object size:0xA scope:local data:string +@88 = .data:0x800EB774; // type:object size:0xA scope:local data:string +@90 = .data:0x800EB780; // type:object size:0xA scope:local data:string +@92 = .data:0x800EB78C; // type:object size:0xD scope:local data:string +@93 = .data:0x800EB79C; // type:object size:0xA scope:local data:string +@95 = .data:0x800EB7A8; // type:object size:0x9 scope:local data:string +@103 = .data:0x800EB7B4; // type:object size:0x9 scope:local data:string +@104 = .data:0x800EB7C0; // type:object size:0x9 scope:local data:string +@105 = .data:0x800EB7CC; // type:object size:0xA scope:local data:string +@106 = .data:0x800EB7D8; // type:object size:0xE scope:local data:string +@107 = .data:0x800EB7E8; // type:object size:0xE scope:local data:string +@108 = .data:0x800EB7F8; // type:object size:0xE scope:local data:string +@109 = .data:0x800EB808; // type:object size:0xE scope:local data:string +@110 = .data:0x800EB818; // type:object size:0xE scope:local data:string +@112 = .data:0x800EB828; // type:object size:0xC scope:local data:string +@115 = .data:0x800EB834; // type:object size:0xA scope:local data:string +@116 = .data:0x800EB840; // type:object size:0xE scope:local data:string +gaszNameCP0 = .data:0x800EB850; // type:object size:0x80 scope:global +@118 = .data:0x800EB8D0; // type:object size:0x10 scope:local data:string +@119 = .data:0x800EB8E0; // type:object size:0x10 scope:local data:string +@120 = .data:0x800EB8F0; // type:object size:0x10 scope:local data:string +@121 = .data:0x800EB900; // type:object size:0x10 scope:local data:string +@122 = .data:0x800EB910; // type:object size:0x10 scope:local data:string +@123 = .data:0x800EB920; // type:object size:0x10 scope:local data:string +@124 = .data:0x800EB930; // type:object size:0x10 scope:local data:string +@125 = .data:0x800EB940; // type:object size:0x10 scope:local data:string +@126 = .data:0x800EB950; // type:object size:0x10 scope:local data:string +@127 = .data:0x800EB960; // type:object size:0x11 scope:local data:string +@128 = .data:0x800EB974; // type:object size:0x11 scope:local data:string +@129 = .data:0x800EB988; // type:object size:0x11 scope:local data:string +@130 = .data:0x800EB99C; // type:object size:0x11 scope:local data:string +@131 = .data:0x800EB9B0; // type:object size:0x11 scope:local data:string +@132 = .data:0x800EB9C4; // type:object size:0x11 scope:local data:string +@133 = .data:0x800EB9D8; // type:object size:0x11 scope:local data:string +@134 = .data:0x800EB9EC; // type:object size:0x11 scope:local data:string +@135 = .data:0x800EBA00; // type:object size:0x11 scope:local data:string +@136 = .data:0x800EBA14; // type:object size:0x11 scope:local data:string +@137 = .data:0x800EBA28; // type:object size:0x11 scope:local data:string +@138 = .data:0x800EBA3C; // type:object size:0x11 scope:local data:string +@139 = .data:0x800EBA50; // type:object size:0x11 scope:local data:string +@140 = .data:0x800EBA64; // type:object size:0x11 scope:local data:string +@141 = .data:0x800EBA78; // type:object size:0x11 scope:local data:string +@142 = .data:0x800EBA8C; // type:object size:0x11 scope:local data:string +@143 = .data:0x800EBAA0; // type:object size:0x11 scope:local data:string +@144 = .data:0x800EBAB4; // type:object size:0x11 scope:local data:string +@145 = .data:0x800EBAC8; // type:object size:0x11 scope:local data:string +@146 = .data:0x800EBADC; // type:object size:0x11 scope:local data:string +@147 = .data:0x800EBAF0; // type:object size:0x11 scope:local data:string +gaszNameCP1 = .data:0x800EBB04; // type:object size:0x80 scope:global +ganMaskGetCP0 = .data:0x800EBB88; // type:object size:0x100 scope:global +ganMaskSetCP0 = .data:0x800EBC88; // type:object size:0x100 scope:global +Opcode = .data:0x800EBD88; // type:object size:0x40 scope:global +SpecialOpcode = .data:0x800EBDC8; // type:object size:0x40 scope:global +RegimmOpcode = .data:0x800EBE08; // type:object size:0x20 scope:global +ganOpcodeSaveFP1 = .data:0x800EBE28; // type:object size:0x14 scope:global +ganOpcodeSaveFP2_0 = .data:0x800EBE3C; // type:object size:0x14 scope:global +ganOpcodeSaveFP2_1 = .data:0x800EBE50; // type:object size:0xC scope:global +ganOpcodeLoadFP = .data:0x800EBE5C; // type:object size:0x14 scope:global +ganMapGPR = .data:0x800EBE70; // type:object size:0x80 scope:global data:4byte +jtbl_800EBEF0 = .data:0x800EBEF0; // type:object size:0x64 scope:local +jtbl_800EBF54 = .data:0x800EBF54; // type:object size:0x100 scope:local +D_800EC054 = .data:0x800EC054; // type:object size:0x22 scope:local data:string +D_800EC078 = .data:0x800EC078; // type:object size:0x16 scope:local data:string +D_800EC090 = .data:0x800EC090; // type:object size:0x26 scope:local data:string +D_800EC0B8 = .data:0x800EC0B8; // type:object size:0x12 scope:local data:string +jtbl_800EC0CC = .data:0x800EC0CC; // type:object size:0x64 scope:local +jtbl_800EC130 = .data:0x800EC130; // type:object size:0xB0 scope:local +D_800EC1E0 = .data:0x800EC1E0; // type:object size:0xA scope:local data:string +jtbl_800EC1EC = .data:0x800EC1EC; // type:object size:0x3C scope:local +jtbl_800EC228 = .data:0x800EC228; // type:object size:0x30 scope:local +jtbl_800EC258 = .data:0x800EC258; // type:object size:0x100 scope:local +jtbl_800EC358 = .data:0x800EC358; // type:object size:0x100 scope:local +jtbl_800EC458 = .data:0x800EC458; // type:object size:0x100 scope:local +jtbl_800EC558 = .data:0x800EC558; // type:object size:0x100 scope:local +jtbl_800EC658 = .data:0x800EC658; // type:object size:0x1C scope:local +jtbl_800EC674 = .data:0x800EC674; // type:object size:0x24 scope:local +jtbl_800EC698 = .data:0x800EC698; // type:object size:0x64 scope:local +jtbl_800EC6FC = .data:0x800EC6FC; // type:object size:0x50 scope:local +jtbl_800EC74C = .data:0x800EC74C; // type:object size:0x100 scope:local +jtbl_800EC84C = .data:0x800EC84C; // type:object size:0x100 scope:local +D_800EC94C = .data:0x800EC94C; // type:object size:0x34 scope:local data:string +D_800EC980 = .data:0x800EC980; // type:object size:0x1C scope:local data:string +D_800EC99C = .data:0x800EC99C; // type:object size:0x1D scope:local data:string +D_800EC9BC = .data:0x800EC9BC; // type:object size:0x10 scope:local data:string +D_800EC9CC = .data:0x800EC9CC; // type:object size:0x1C scope:local data:string +D_800EC9E8 = .data:0x800EC9E8; // type:object size:0x1D scope:local data:string +D_800ECA08 = .data:0x800ECA08; // type:object size:0x10 scope:local data:string +D_800ECA18 = .data:0x800ECA18; // type:object size:0xE scope:local data:string +D_800ECA28 = .data:0x800ECA28; // type:object size:0xE scope:local data:string +D_800ECA38 = .data:0x800ECA38; // type:object size:0xE scope:local data:string +D_800ECA48 = .data:0x800ECA48; // type:object size:0xE scope:local data:string +D_800ECA58 = .data:0x800ECA58; // type:object size:0xF scope:local data:string +D_800ECA68 = .data:0x800ECA68; // type:object size:0xE scope:local data:string +D_800ECA78 = .data:0x800ECA78; // type:object size:0xF scope:local data:string +D_800ECA88 = .data:0x800ECA88; // type:object size:0xE scope:local data:string +D_800ECA98 = .data:0x800ECA98; // type:object size:0x12 scope:local data:string +D_800ECAAC = .data:0x800ECAAC; // type:object size:0x12 scope:local data:string +D_800ECAC0 = .data:0x800ECAC0; // type:object size:0x11 scope:local data:string +D_800ECAD4 = .data:0x800ECAD4; // type:object size:0x12 scope:local data:string +D_800ECAE8 = .data:0x800ECAE8; // type:object size:0x10 scope:local data:string +D_800ECAF8 = .data:0x800ECAF8; // type:object size:0xE scope:local data:string +D_800ECB08 = .data:0x800ECB08; // type:object size:0xF scope:local data:string +D_800ECB18 = .data:0x800ECB18; // type:object size:0xF scope:local data:string +D_800ECB28 = .data:0x800ECB28; // type:object size:0x10 scope:local data:string +D_800ECB38 = .data:0x800ECB38; // type:object size:0x10 scope:local data:string +D_800ECB48 = .data:0x800ECB48; // type:object size:0x10 scope:local data:string +D_800ECB58 = .data:0x800ECB58; // type:object size:0x10 scope:local data:string +D_800ECB68 = .data:0x800ECB68; // type:object size:0x10 scope:local data:string +D_800ECB78 = .data:0x800ECB78; // type:object size:0xF scope:local data:string +D_800ECB88 = .data:0x800ECB88; // type:object size:0x11 scope:local data:string +D_800ECB9C = .data:0x800ECB9C; // type:object size:0x10 scope:local data:string +D_800ECBAC = .data:0x800ECBAC; // type:object size:0x10 scope:local data:string +D_800ECBBC = .data:0x800ECBBC; // type:object size:0xF scope:local data:string +D_800ECBCC = .data:0x800ECBCC; // type:object size:0x10 scope:local data:string +D_800ECBDC = .data:0x800ECBDC; // type:object size:0xF scope:local data:string +D_800ECBEC = .data:0x800ECBEC; // type:object size:0x10 scope:local data:string +D_800ECBFC = .data:0x800ECBFC; // type:object size:0xE scope:local data:string +D_800ECC0C = .data:0x800ECC0C; // type:object size:0xE scope:local data:string +D_800ECC1C = .data:0x800ECC1C; // type:object size:0xE scope:local data:string +D_800ECC2C = .data:0x800ECC2C; // type:object size:0xE scope:local data:string +D_800ECC3C = .data:0x800ECC3C; // type:object size:0xF scope:local data:string +D_800ECC4C = .data:0x800ECC4C; // type:object size:0xE scope:local data:string +D_800ECC5C = .data:0x800ECC5C; // type:object size:0xF scope:local data:string +D_800ECC6C = .data:0x800ECC6C; // type:object size:0xE scope:local data:string +D_800ECC7C = .data:0x800ECC7C; // type:object size:0x12 scope:local data:string +D_800ECC90 = .data:0x800ECC90; // type:object size:0x12 scope:local data:string +D_800ECCA4 = .data:0x800ECCA4; // type:object size:0x11 scope:local data:string +D_800ECCB8 = .data:0x800ECCB8; // type:object size:0x12 scope:local data:string +D_800ECCCC = .data:0x800ECCCC; // type:object size:0x10 scope:local data:string +D_800ECCDC = .data:0x800ECCDC; // type:object size:0xE scope:local data:string +D_800ECCEC = .data:0x800ECCEC; // type:object size:0xF scope:local data:string +D_800ECCFC = .data:0x800ECCFC; // type:object size:0xF scope:local data:string +D_800ECD0C = .data:0x800ECD0C; // type:object size:0x10 scope:local data:string +D_800ECD1C = .data:0x800ECD1C; // type:object size:0x10 scope:local data:string +D_800ECD2C = .data:0x800ECD2C; // type:object size:0x10 scope:local data:string +D_800ECD3C = .data:0x800ECD3C; // type:object size:0x10 scope:local data:string +D_800ECD4C = .data:0x800ECD4C; // type:object size:0x10 scope:local data:string +D_800ECD5C = .data:0x800ECD5C; // type:object size:0xF scope:local data:string +D_800ECD6C = .data:0x800ECD6C; // type:object size:0x11 scope:local data:string +D_800ECD80 = .data:0x800ECD80; // type:object size:0x10 scope:local data:string +D_800ECD90 = .data:0x800ECD90; // type:object size:0x10 scope:local data:string +D_800ECDA0 = .data:0x800ECDA0; // type:object size:0xF scope:local data:string +D_800ECDB0 = .data:0x800ECDB0; // type:object size:0x10 scope:local data:string +D_800ECDC0 = .data:0x800ECDC0; // type:object size:0xF scope:local data:string +D_800ECDD0 = .data:0x800ECDD0; // type:object size:0x10 scope:local data:string +jtbl_800ECDE0 = .data:0x800ECDE0; // type:object size:0x100 scope:local +jtbl_800ECEE0 = .data:0x800ECEE0; // type:object size:0x100 scope:local +jtbl_800ECFE0 = .data:0x800ECFE0; // type:object size:0x100 scope:local +jtbl_800ED0E0 = .data:0x800ED0E0; // type:object size:0x100 scope:local +jtbl_800ED1E0 = .data:0x800ED1E0; // type:object size:0x1C scope:local +jtbl_800ED1FC = .data:0x800ED1FC; // type:object size:0x64 scope:local +jtbl_800ED260 = .data:0x800ED260; // type:object size:0x50 scope:local +jtbl_800ED2B0 = .data:0x800ED2B0; // type:object size:0x100 scope:local +jtbl_800ED3B0 = .data:0x800ED3B0; // type:object size:0x100 scope:local +jtbl_800ED4B0 = .data:0x800ED4B0; // type:object size:0x64 scope:local +jtbl_800ED514 = .data:0x800ED514; // type:object size:0x60 scope:local +jtbl_800ED574 = .data:0x800ED574; // type:object size:0x80 scope:local +jtbl_800ED5F4 = .data:0x800ED5F4; // type:object size:0x80 scope:local +D_800ED674 = .data:0x800ED674; // type:object size:0x44 scope:local data:string +gClassPIF = .data:0x800ED6B8; // type:object size:0x10 scope:global +gClassRAM = .data:0x800ED6C8; // type:object size:0x10 scope:global +@176 = .data:0x800ED6D8; // type:object size:0x74 scope:local +@190 = .data:0x800ED74C; // type:object size:0x74 scope:local +@206 = .data:0x800ED7C0; // type:object size:0x94 scope:local +@222 = .data:0x800ED854; // type:object size:0x94 scope:local +...data.0 = .data:0x800ED8E8; // type:label scope:local +gClassROM = .data:0x800ED8E8; // type:object size:0x10 scope:global +ganOffsetBlock_ZLJ = .data:0x800ED8F8; // type:object size:0x318 scope:local +ganOffsetBlock_URAZLJ = .data:0x800EDC10; // type:object size:0x318 scope:local +@1055 = .data:0x800EDF28; // type:object size:0xB scope:local data:string +@1057 = .data:0x800EDF34; // type:object size:0xB scope:local data:string +gClassRDP = .data:0x800EDF40; // type:object size:0x10 scope:global +sCommandCodes$48 = .data:0x800EDF50; // type:object size:0xC scope:local data:4byte +@356 = .data:0x800EDF5C; // type:object size:0x34 scope:local +@366 = .data:0x800EDF90; // type:object size:0x34 scope:local +@381 = .data:0x800EDFC4; // type:object size:0x74 scope:local +@411 = .data:0x800EE038; // type:object size:0x74 scope:local +@739 = .data:0x800EE0AC; // type:object size:0x100 scope:local +gClassRdb = .data:0x800EE1B0; // type:object size:0x10 scope:global +@200 = .data:0x800EE1C0; // type:object size:0x5C scope:local +gClassRSP = .data:0x800EE220; // type:object size:0x10 scope:global +cmask_tab = .data:0x800EE230; // type:object size:0x20 scope:global +emask_tab = .data:0x800EE250; // type:object size:0x20 scope:global +TMEMSIZE = .data:0x800EE270; // type:object size:0xA scope:local +D_800EE27C = .data:0x800EE27C; // type:object size:0x28 scope:local data:string +jtbl_800EE2A4 = .data:0x800EE2A4; // type:object size:0x74 scope:local +jtbl_800EE318 = .data:0x800EE318; // type:object size:0x20 scope:local +jtbl_800EE338 = .data:0x800EE338; // type:object size:0x74 scope:local +jtbl_800EE3AC = .data:0x800EE3AC; // type:object size:0x2C scope:local +jtbl_800EE3D8 = .data:0x800EE3D8; // type:object size:0x34 scope:local +jtbl_800EE40C = .data:0x800EE40C; // type:object size:0x3C scope:local +jtbl_800EE448 = .data:0x800EE448; // type:object size:0x34 scope:local +jtbl_800EE47C = .data:0x800EE47C; // type:object size:0x34 scope:local +jtbl_800EE4B0 = .data:0x800EE4B0; // type:object size:0x3C scope:local +jtbl_800EE4EC = .data:0x800EE4EC; // type:object size:0x7C scope:local +jtbl_800EE568 = .data:0x800EE568; // type:object size:0x6C scope:local +jtbl_800EE5D4 = .data:0x800EE5D4; // type:object size:0x5C scope:local +jtbl_800EE630 = .data:0x800EE630; // type:object size:0x60 scope:local +jtbl_800EE690 = .data:0x800EE690; // type:object size:0x40 scope:local +gClassMips = .data:0x800EE6D0; // type:object size:0x10 scope:global +@111 = .data:0x800EE6E0; // type:object size:0x34 scope:local +@163 = .data:0x800EE714; // type:object size:0x34 scope:local +gClassDisk = .data:0x800EE748; // type:object size:0x10 scope:global +gClassFlash = .data:0x800EE758; // type:object size:0x10 scope:global +gClassSram = .data:0x800EE768; // type:object size:0x10 scope:global +gClassAudio = .data:0x800EE778; // type:object size:0x10 scope:global +@79 = .data:0x800EE788; // type:object size:0x1F scope:local data:string +@81 = .data:0x800EE7A8; // type:object size:0x1A scope:local data:string +@82 = .data:0x800EE7C4; // type:object size:0x54 scope:local +@106 = .data:0x800EE818; // type:object size:0x54 scope:local +gClassVideo = .data:0x800EE870; // type:object size:0x10 scope:global +@102 = .data:0x800EE880; // type:object size:0xD4 scope:local +@142 = .data:0x800EE954; // type:object size:0xD4 scope:local +gClassSerial = .data:0x800EEA28; // type:object size:0x10 scope:global +@49 = .data:0x800EEA38; // type:object size:0x64 scope:local +@68 = .data:0x800EEA9C; // type:object size:0x64 scope:local +...data.0 = .data:0x800EEB00; // type:label scope:local +@21 = .data:0x800EEB00; // type:object size:0xB scope:local data:string +gClassLibrary = .data:0x800EEB0C; // type:object size:0x10 scope:global +__osRcpImTable = .data:0x800EEB1C; // type:object size:0x100 scope:local +@447 = .data:0x800EEC1C; // type:object size:0xA scope:local data:string +@448 = .data:0x800EEC28; // type:object size:0x14 scope:local data:string +@449 = .data:0x800EEC3C; // type:object size:0x12 scope:local data:string +@450 = .data:0x800EEC50; // type:object size:0xE scope:local data:string +@451 = .data:0x800EEC60; // type:object size:0x13 scope:local data:string +@452 = .data:0x800EEC74; // type:object size:0xD scope:local data:string +@453 = .data:0x800EEC84; // type:object size:0xE scope:local data:string +@454 = .data:0x800EEC94; // type:object size:0xE scope:local data:string +@455 = .data:0x800EECA4; // type:object size:0x12 scope:local data:string +@456 = .data:0x800EECB8; // type:object size:0x15 scope:local data:string +@457 = .data:0x800EECD0; // type:object size:0xF scope:local data:string +@458 = .data:0x800EECE0; // type:object size:0xF scope:local data:string +@459 = .data:0x800EECF0; // type:object size:0x10 scope:local data:string +@465 = .data:0x800EED00; // type:object size:0x14 scope:local data:string +@466 = .data:0x800EED14; // type:object size:0x14 scope:local data:string +@467 = .data:0x800EED28; // type:object size:0x9 scope:local data:string +@468 = .data:0x800EED34; // type:object size:0xA scope:local data:string +@469 = .data:0x800EED40; // type:object size:0xC scope:local data:string +@470 = .data:0x800EED4C; // type:object size:0xB scope:local data:string +@471 = .data:0x800EED58; // type:object size:0x9 scope:local data:string +@473 = .data:0x800EED64; // type:object size:0xF scope:local data:string +@474 = .data:0x800EED74; // type:object size:0xE scope:local data:string +@475 = .data:0x800EED84; // type:object size:0x9 scope:local data:string +@477 = .data:0x800EED90; // type:object size:0xA scope:local data:string +@478 = .data:0x800EED9C; // type:object size:0x9 scope:local data:string +@479 = .data:0x800EEDA8; // type:object size:0xD scope:local data:string +@480 = .data:0x800EEDB8; // type:object size:0xC scope:local data:string +@481 = .data:0x800EEDC4; // type:object size:0xA scope:local data:string +@482 = .data:0x800EEDD0; // type:object size:0x9 scope:local data:string +@483 = .data:0x800EEDDC; // type:object size:0x10 scope:local data:string +@484 = .data:0x800EEDEC; // type:object size:0xF scope:local data:string +@485 = .data:0x800EEDFC; // type:object size:0x11 scope:local data:string +@486 = .data:0x800EEE10; // type:object size:0x10 scope:local data:string +@487 = .data:0x800EEE20; // type:object size:0x11 scope:local data:string +@488 = .data:0x800EEE34; // type:object size:0x12 scope:local data:string +@489 = .data:0x800EEE48; // type:object size:0xE scope:local data:string +@490 = .data:0x800EEE58; // type:object size:0xD scope:local data:string +@491 = .data:0x800EEE68; // type:object size:0xE scope:local data:string +@492 = .data:0x800EEE78; // type:object size:0x11 scope:local data:string +@493 = .data:0x800EEE8C; // type:object size:0x12 scope:local data:string +@494 = .data:0x800EEEA0; // type:object size:0xC scope:local data:string +@495 = .data:0x800EEEAC; // type:object size:0xF scope:local data:string +@496 = .data:0x800EEEBC; // type:object size:0x13 scope:local data:string +@497 = .data:0x800EEED0; // type:object size:0x1A scope:local data:string +@498 = .data:0x800EEEEC; // type:object size:0x15 scope:local data:string +@499 = .data:0x800EEF04; // type:object size:0x13 scope:local data:string +@500 = .data:0x800EEF18; // type:object size:0x12 scope:local data:string +gaFunction = .data:0x800EEF2C; // type:object size:0x1008 scope:global +@1047 = .data:0x800EFF34; // type:object size:0x46 scope:local data:string +@1048 = .data:0x800EFF7C; // type:object size:0xA scope:local data:string +@2462 = .data:0x800EFF88; // type:object size:0x24 scope:local +...data.0 = .data:0x800EFFB0; // type:label scope:local +@2 = .data:0x800EFFB0; // type:object size:0xB scope:local data:string +gClassPeripheral = .data:0x800EFFBC; // type:object size:0x10 scope:global +@116 = .data:0x800EFFCC; // type:object size:0xC4 scope:local +@189 = .data:0x800F0090; // type:object size:0xC4 scope:local +...data.0 = .data:0x800F0158; // type:label scope:local +gCombinedColor = .data:0x800F0158; // type:object size:0x40 scope:global +gCombinedAlpha = .data:0x800F0198; // type:object size:0x20 scope:global +ganNameTevStage = .data:0x800F01B8; // type:object size:0x40 scope:local data:4byte +sTevColorOp = .data:0x800F01F8; // type:object size:0x64 scope:local +sTevColorArg = .data:0x800F025C; // type:object size:0x50 scope:local +sTevAlphaArg = .data:0x800F02AC; // type:object size:0x50 scope:local +@2 = .data:0x800F02FC; // type:object size:0x9 scope:local data:string +@5 = .data:0x800F0308; // type:object size:0xA scope:local data:string +@7 = .data:0x800F0314; // type:object size:0xC scope:local data:string +@9 = .data:0x800F0320; // type:object size:0xF scope:local data:string +@10 = .data:0x800F0330; // type:object size:0xD scope:local data:string +@11 = .data:0x800F0340; // type:object size:0xD scope:local data:string +@12 = .data:0x800F0350; // type:object size:0xB scope:local data:string +@13 = .data:0x800F035C; // type:object size:0xC scope:local data:string +@14 = .data:0x800F0368; // type:object size:0xA scope:local data:string +@15 = .data:0x800F0374; // type:object size:0x9 scope:local data:string +@16 = .data:0x800F0380; // type:object size:0xE scope:local data:string +sColorNames = .data:0x800F0390; // type:object size:0x40 scope:local +sAlphaNames = .data:0x800F03D0; // type:object size:0x40 scope:local +strings = .data:0x800F0410; // type:object size:0x40 scope:local +unused = .data:0x800F0450; // type:object size:0xC scope:global data:string +...data.0 = .data:0x800F0460; // type:label scope:local +gColorArgs = .data:0x800F0460; // type:object size:0x40 scope:global +gAlphaArgs = .data:0x800F04A0; // type:object size:0x28 scope:global +sUsualOps = .data:0x800F04C8; // type:object size:0x50 scope:local data:4byte +sUsualCArgs = .data:0x800F0518; // type:object size:0x10 scope:local +sUsualAArgs = .data:0x800F0528; // type:object size:0x10 scope:local +texelType = .data:0x800F0538; // type:object size:0x20 scope:local +lightType = .data:0x800F0558; // type:object size:0x10 scope:local +D_800F0568 = .data:0x800F0568; // type:object size:0x27 scope:local data:string +D_800F0590 = .data:0x800F0590; // type:object size:0x27 scope:local data:string +D_800F05B8 = .data:0x800F05B8; // type:object size:0x27 scope:local data:string +D_800F05E0 = .data:0x800F05E0; // type:object size:0x45 scope:local data:string +...data.0 = .data:0x800F0628; // type:label scope:local +@2 = .data:0x800F0628; // type:object size:0x44 scope:local data:string +@77 = .data:0x800F066C; // type:object size:0xD scope:local data:string +@78 = .data:0x800F067C; // type:object size:0x16 scope:local data:string +@79 = .data:0x800F0694; // type:object size:0xC scope:local data:string +@80 = .data:0x800F06A0; // type:object size:0x9 scope:local data:string +@81 = .data:0x800F06AC; // type:object size:0x10 scope:local data:string +@82 = .data:0x800F06BC; // type:object size:0xB scope:local data:string +@83 = .data:0x800F06C8; // type:object size:0xE scope:local data:string +@84 = .data:0x800F06D8; // type:object size:0xD scope:local data:string +@85 = .data:0x800F06E8; // type:object size:0xD scope:local data:string +@86 = .data:0x800F06F8; // type:object size:0xD scope:local data:string +@87 = .data:0x800F0708; // type:object size:0x19 scope:local data:string +@89 = .data:0x800F0724; // type:object size:0xE scope:local data:string +@90 = .data:0x800F0734; // type:object size:0x15 scope:local data:string +__OSExceptionLocations = .data:0x800F074C; // type:object size:0x3C scope:local +@124 = .data:0x800F0788; // type:object size:0x1B scope:local data:string +@125 = .data:0x800F07A4; // type:object size:0x2E scope:local data:string +@126 = .data:0x800F07D4; // type:object size:0x2F scope:local data:string +@127 = .data:0x800F0804; // type:object size:0x1B scope:local data:string +ResetFunctionInfo = .data:0x800F0820; // type:object size:0x10 scope:local +...data.0 = .data:0x800F0830; // type:label scope:local +@164 = .data:0x800F0830; // type:object size:0x24 scope:local data:string +@165 = .data:0x800F0854; // type:object size:0x37 scope:local data:string +@166 = .data:0x800F088C; // type:object size:0x28 scope:local data:string +@167 = .data:0x800F08B4; // type:object size:0x4F scope:local data:string +@168 = .data:0x800F0904; // type:object size:0x3E scope:local data:string +@169 = .data:0x800F0944; // type:object size:0x37 scope:local data:string +@170 = .data:0x800F097C; // type:object size:0x49 scope:local data:string +@171 = .data:0x800F09C8; // type:object size:0x33 scope:local data:string +@172 = .data:0x800F09FC; // type:object size:0x3D scope:local data:string +@173 = .data:0x800F0A3C; // type:object size:0x39 scope:local data:string +@174 = .data:0x800F0A78; // type:object size:0x45 scope:local data:string +@175 = .data:0x800F0AC0; // type:object size:0x5F scope:local data:string +@176 = .data:0x800F0B20; // type:object size:0x2C scope:local data:string +D_800F0B4C = .data:0x800F0B4C; // type:object size:0x12 scope:local data:string +D_800F0B60 = .data:0x800F0B60; // type:object size:0x12 scope:local data:string +D_800F0B74 = .data:0x800F0B74; // type:object size:0x1A scope:local data:string +D_800F0B90 = .data:0x800F0B90; // type:object size:0x13 scope:local data:string +D_800F0BA4 = .data:0x800F0BA4; // type:object size:0x10 scope:local data:string +D_800F0BB4 = .data:0x800F0BB4; // type:object size:0xE scope:local data:string +DSPInitCode = .data:0x800F0BC8; // type:object size:0x80 scope:local +...data.0 = .data:0x800F0C48; // type:label scope:local +@33 = .data:0x800F0C48; // type:object size:0x29 scope:local data:string +@46 = .data:0x800F0C74; // type:object size:0x18 scope:local data:string +@47 = .data:0x800F0C8C; // type:object size:0x1B scope:local data:string +@48 = .data:0x800F0CA8; // type:object size:0x30 scope:local data:string +@49 = .data:0x800F0CD8; // type:object size:0x3C scope:local data:string +@50 = .data:0x800F0D14; // type:object size:0x37 scope:local data:string +@51 = .data:0x800F0D4C; // type:object size:0x3F scope:local data:string +@52 = .data:0x800F0D8C; // type:object size:0x29 scope:local data:string +@53 = .data:0x800F0DB8; // type:object size:0x1D scope:local data:string +@54 = .data:0x800F0DD8; // type:object size:0x19 scope:local data:string +@66 = .data:0x800F0DF4; // type:object size:0x19 scope:local data:string +@67 = .data:0x800F0E10; // type:object size:0x19 scope:local data:string +@68 = .data:0x800F0E2C; // type:object size:0x16 scope:local data:string +@69 = .data:0x800F0E44; // type:object size:0x2E scope:local data:string +...data.0 = .data:0x800F0E78; // type:label scope:local +@60 = .data:0x800F0E78; // type:object size:0x44 scope:local data:string +@61 = .data:0x800F0EBC; // type:object size:0x30 scope:local data:string +@62 = .data:0x800F0EEC; // type:object size:0x2F scope:local data:string +@63 = .data:0x800F0F1C; // type:object size:0x2F scope:local data:string +@64 = .data:0x800F0F4C; // type:object size:0x11 scope:local data:string +@65 = .data:0x800F0F60; // type:object size:0x21 scope:local data:string +@66 = .data:0x800F0F84; // type:object size:0x12 scope:local data:string +@67 = .data:0x800F0F98; // type:object size:0x19 scope:local data:string +@68 = .data:0x800F0FB4; // type:object size:0x12 scope:local data:string +@69 = .data:0x800F0FC8; // type:object size:0x1D scope:local data:string +@70 = .data:0x800F0FE8; // type:object size:0x26 scope:local data:string +@71 = .data:0x800F1010; // type:object size:0x1C scope:local data:string +@75 = .data:0x800F102C; // type:object size:0x23 scope:local data:string +...data.0 = .data:0x800F1050; // type:label scope:local +@11 = .data:0x800F1050; // type:object size:0x16 scope:local data:string +@12 = .data:0x800F1068; // type:object size:0x26 scope:local data:string +@13 = .data:0x800F1090; // type:object size:0x1C scope:local data:string +@72 = .data:0x800F10AC; // type:object size:0x1D scope:local data:string +@73 = .data:0x800F10CC; // type:object size:0x17 scope:local data:string +@75 = .data:0x800F10E4; // type:object size:0x31 scope:local data:string +@76 = .data:0x800F1118; // type:object size:0x10 scope:local data:string +@77 = .data:0x800F1128; // type:object size:0x60 scope:local data:string +@78 = .data:0x800F1188; // type:object size:0x4C scope:local data:string +@79 = .data:0x800F11D4; // type:object size:0x62 scope:local data:string +@80 = .data:0x800F1238; // type:object size:0x60 scope:local data:string +@81 = .data:0x800F1298; // type:object size:0x1F scope:local data:string +@82 = .data:0x800F12B8; // type:object size:0x1F scope:local data:string +@83 = .data:0x800F12D8; // type:object size:0x1B scope:local data:string +@84 = .data:0x800F12F4; // type:object size:0x35 scope:local data:string +@85 = .data:0x800F132C; // type:object size:0x40 scope:local +InterruptPrioTable = .data:0x800F1370; // type:object size:0x2C scope:local data:4byte +ResetFunctionInfo = .data:0x800F13A0; // type:object size:0x10 scope:local +YearDays = .data:0x800F13B0; // type:object size:0x30 scope:local +LeapYearDays = .data:0x800F13E0; // type:object size:0x30 scope:local +...data.0 = .data:0x800F1410; // type:label scope:local +@1 = .data:0x800F1410; // type:object size:0x45 scope:local data:string +@450 = .data:0x800F1458; // type:object size:0xF scope:local data:string +@451 = .data:0x800F1468; // type:object size:0x10 scope:local data:string +@452 = .data:0x800F1478; // type:object size:0x10 scope:local data:string +@453 = .data:0x800F1488; // type:object size:0x10 scope:local data:string +@454 = .data:0x800F1498; // type:object size:0x11 scope:local data:string +@455 = .data:0x800F14AC; // type:object size:0x11 scope:local data:string +@456 = .data:0x800F14C0; // type:object size:0xC scope:local data:string +@462 = .data:0x800F14CC; // type:object size:0x9 scope:local data:string +@463 = .data:0x800F14D8; // type:object size:0xD scope:local data:string +@464 = .data:0x800F14E8; // type:object size:0x12 scope:local data:string +@466 = .data:0x800F14FC; // type:object size:0xE scope:local data:string +@467 = .data:0x800F150C; // type:object size:0xE scope:local data:string +...data.0 = .data:0x800F1520; // type:label scope:local +@1 = .data:0x800F1520; // type:object size:0x44 scope:local data:string +Si = .data:0x800F1564; // type:object size:0x14 scope:local data:4byte +Type = .data:0x800F1578; // type:object size:0x10 scope:local +@457 = .data:0x800F1588; // type:object size:0xC scope:local data:string +@459 = .data:0x800F1594; // type:object size:0xF scope:local data:string +@460 = .data:0x800F15A4; // type:object size:0xF scope:local data:string +@461 = .data:0x800F15B4; // type:object size:0xD scope:local data:string +@462 = .data:0x800F15C4; // type:object size:0xA scope:local data:string +@463 = .data:0x800F15D0; // type:object size:0x10 scope:local data:string +@464 = .data:0x800F15E0; // type:object size:0x14 scope:local data:string +@465 = .data:0x800F15F4; // type:object size:0x12 scope:local data:string +@466 = .data:0x800F1608; // type:object size:0x14 scope:local data:string +@467 = .data:0x800F161C; // type:object size:0x9 scope:local data:string +@468 = .data:0x800F1628; // type:object size:0x9 scope:local data:string +...data.0 = .data:0x800F1638; // type:label scope:local +XYNTSC = .data:0x800F1638; // type:object size:0x30 scope:local +XYPAL = .data:0x800F1668; // type:object size:0x30 scope:local +@16 = .data:0x800F1698; // type:object size:0x33 scope:local data:string +...data.0 = .data:0x800F16D0; // type:label scope:local +@1 = .data:0x800F16D0; // type:object size:0x44 scope:local data:string +timing = .data:0x800F1714; // type:object size:0x17C scope:local +taps = .data:0x800F1890; // type:object size:0x32 scope:local +@97 = .data:0x800F18C4; // type:object size:0x6C scope:local +@347 = .data:0x800F1930; // type:object size:0x29 scope:local data:string +@348 = .data:0x800F195C; // type:object size:0x29 scope:local data:string +@349 = .data:0x800F1988; // type:object size:0x29 scope:local data:string +@350 = .data:0x800F19B4; // type:object size:0x29 scope:local data:string +@351 = .data:0x800F19E0; // type:object size:0x29 scope:local data:string +@352 = .data:0x800F1A0C; // type:object size:0x29 scope:local data:string +@535 = .data:0x800F1A38; // type:object size:0x4B scope:local data:string +@736 = .data:0x800F1A84; // type:object size:0x1C scope:local +@4 = .data:0x800F1AA0; // type:object size:0x18 scope:local data:string +...data.0 = .data:0x800F1AC0; // type:label scope:local +@1 = .data:0x800F1AC0; // type:object size:0x44 scope:local data:string +DefaultTexData = .data:0x800F1B20; // type:object size:0x20 scope:local align:32 +GXDefaultVATList = .data:0x800F1B40; // type:object size:0xD0 scope:local +GXDefaultProjData = .data:0x800F1C10; // type:object size:0x1C scope:local +GXTexRegionAddrTable = .data:0x800F1C2C; // type:object size:0xC0 scope:local data:4byte +GXResetFuncInfo = .data:0x800F1CEC; // type:object size:0x10 scope:local +@176 = .data:0x800F1D00; // type:object size:0x68 scope:local +@498 = .data:0x800F1D68; // type:object size:0x44 scope:local +@525 = .data:0x800F1DAC; // type:object size:0x44 scope:local +@820 = .data:0x800F1DF0; // type:object size:0x1C scope:local +@819 = .data:0x800F1E0C; // type:object size:0x54 scope:local +GXNtsc480IntDf = .data:0x800F1E60; // type:object size:0x3C scope:global +GXNtsc480Prog = .data:0x800F1E9C; // type:object size:0x3C scope:global +GXMpal480IntDf = .data:0x800F1ED8; // type:object size:0x3C scope:global +GXPal528IntDf = .data:0x800F1F14; // type:object size:0x3C scope:global +GXEurgb60Hz480IntDf = .data:0x800F1F50; // type:object size:0x3C scope:global +@144 = .data:0x800F1F90; // type:object size:0xF4 scope:local +@179 = .data:0x800F2084; // type:object size:0x3C scope:local +...data.0 = .data:0x800F20C0; // type:label scope:local +TEVCOpTableST0 = .data:0x800F20C0; // type:object size:0x14 scope:local +TEVCOpTableST1 = .data:0x800F20D4; // type:object size:0x14 scope:local +TEVAOpTableST0 = .data:0x800F20E8; // type:object size:0x14 scope:local +TEVAOpTableST1 = .data:0x800F20FC; // type:object size:0x14 scope:local +c2r$364 = .data:0x800F2110; // type:object size:0x24 scope:local +p2f$362 = .data:0x800F2138; // type:object size:0x20 scope:local +@281 = .data:0x800F2158; // type:object size:0x5C scope:local +@280 = .data:0x800F21B4; // type:object size:0x90 scope:local +@387 = .data:0x800F2244; // type:object size:0x5C scope:local +...data.0 = .data:0x800F22A0; // type:label scope:local +@1 = .data:0x800F22A0; // type:object size:0x45 scope:local data:string +ResetFunctionInfo = .data:0x800F22E8; // type:object size:0x10 scope:local +@119 = .data:0x800F22F8; // type:object size:0xC8 scope:local data:string +@140 = .data:0x800F23C0; // type:object size:0x37 scope:local data:string +@239 = .data:0x800F23F8; // type:object size:0x34 scope:local data:string +@265 = .data:0x800F242C; // type:object size:0x2F scope:local data:string +...data.0 = .data:0x800F2460; // type:label scope:local +@1 = .data:0x800F2460; // type:object size:0x45 scope:local data:string +@18 = .data:0x800F24A8; // type:object size:0xA scope:local data:string +@24 = .data:0x800F24B4; // type:object size:0x34 scope:local data:string +@344 = .data:0x800F24E8; // type:object size:0x40 scope:local +ImmCommand = .data:0x800F2528; // type:object size:0xC scope:local data:4byte +@768 = .data:0x800F2534; // type:object size:0x41 scope:local data:string +@907 = .data:0x800F2578; // type:object size:0x34 scope:local +@1011 = .data:0x800F25AC; // type:object size:0x34 scope:local +ErrorTable = .data:0x800F25E0; // type:object size:0x48 scope:local data:4byte +...data.0 = .data:0x800F2628; // type:label scope:local +@38 = .data:0x800F2628; // type:object size:0x1A scope:local data:string +@39 = .data:0x800F2644; // type:object size:0x16 scope:local data:string +@40 = .data:0x800F265C; // type:object size:0x14 scope:local data:string +@41 = .data:0x800F2670; // type:object size:0x14 scope:local data:string +@44 = .data:0x800F2684; // type:object size:0x14 scope:local data:string +...data.0 = .data:0x800F2698; // type:label scope:local +@21 = .data:0x800F2698; // type:object size:0xB scope:local data:string +@22 = .data:0x800F26A4; // type:object size:0x1D scope:local data:string +@121 = .data:0x800F26C4; // type:object size:0x35 scope:local data:string +@122 = .data:0x800F26FC; // type:object size:0x10 scope:local data:string +@136 = .data:0x800F270C; // type:object size:0x2D scope:local data:string +@166 = .data:0x800F273C; // type:object size:0x1C scope:local data:string +@167 = .data:0x800F2758; // type:object size:0x1E scope:local data:string +@168 = .data:0x800F2778; // type:object size:0x28 scope:local data:string +@169 = .data:0x800F27A0; // type:object size:0x25 scope:local data:string +@170 = .data:0x800F27C8; // type:object size:0x30 scope:local data:string +@171 = .data:0x800F27F8; // type:object size:0x19 scope:local data:string +DEMOFontBitmap = .data:0x800F2820; // type:object size:0xC00 scope:global +PadChanMask = .data:0x800F3420; // type:object size:0x10 scope:local data:4byte +...data.0 = .data:0x800F3430; // type:label scope:local +@51 = .data:0x800F3430; // type:object size:0xC scope:local data:string +@52 = .data:0x800F343C; // type:object size:0x26 scope:local data:string +@53 = .data:0x800F3464; // type:object size:0x28 scope:local +@158 = .data:0x800F348C; // type:object size:0x9 scope:local data:string +@160 = .data:0x800F3498; // type:object size:0xB scope:local data:string +@161 = .data:0x800F34A4; // type:object size:0xB scope:local data:string +@163 = .data:0x800F34B0; // type:object size:0xA scope:local data:string +@164 = .data:0x800F34BC; // type:object size:0x2C scope:local data:string +@171 = .data:0x800F34E8; // type:object size:0x28 scope:local +@170 = .data:0x800F3510; // type:object size:0x28 scope:local +@169 = .data:0x800F3538; // type:object size:0x28 scope:local +@165 = .data:0x800F3560; // type:object size:0x28 scope:local +...data.0 = .data:0x800F3588; // type:label scope:local +@1 = .data:0x800F3588; // type:object size:0x44 scope:local data:string +...data.0 = .data:0x800F35D0; // type:label scope:local +@1 = .data:0x800F35D0; // type:object size:0x44 scope:local data:string +...data.0 = .data:0x800F3618; // type:label scope:local +@1 = .data:0x800F3618; // type:object size:0x45 scope:local data:string +@19 = .data:0x800F3660; // type:object size:0x1E scope:local data:string +@20 = .data:0x800F3680; // type:object size:0xC scope:local data:string +@21 = .data:0x800F368C; // type:object size:0x9 scope:local data:string +...data.0 = .data:0x800F3698; // type:label scope:local +@266 = .data:0x800F3698; // type:object size:0x1D scope:local data:string +@267 = .data:0x800F36B8; // type:object size:0x2D scope:local data:string +@268 = .data:0x800F36E8; // type:object size:0x2D scope:local data:string +@269 = .data:0x800F3718; // type:object size:0x2D scope:local data:string +@270 = .data:0x800F3748; // type:object size:0x2D scope:local data:string +@271 = .data:0x800F3778; // type:object size:0x2D scope:local data:string +@294 = .data:0x800F37A8; // type:object size:0x2B scope:local data:string +...data.0 = .data:0x800F37D8; // type:label scope:local +@1 = .data:0x800F37D8; // type:object size:0x46 scope:local data:string +ResetFunctionInfo = .data:0x800F3820; // type:object size:0x10 scope:local +CardData = .data:0x800F3840; // type:object size:0x160 scope:local +SectorSizeTable = .data:0x800F39A0; // type:object size:0x20 scope:local +LatencyTable = .data:0x800F39C0; // type:object size:0x20 scope:local +...data.0 = .data:0x800F39E0; // type:label scope:local +@1 = .data:0x800F39E0; // type:object size:0x3C scope:local data:string +gTRKDispatchTable = .data:0x800F3A20; // type:object size:0x84 scope:global +gTRKRestoreFlags = .data:0x800F3AA8; // type:object size:0x9 scope:global data:byte +gTRKExceptionStatus = .data:0x800F3AB4; // type:object size:0x10 scope:local data:4byte +gTRKStepStatus = .data:0x800F3AC4; // type:object size:0x14 scope:local data:4byte +TRK_ISR_OFFSETS = .data:0x800F3AD8; // type:object size:0x3C scope:local data:4byte +gDBCommTable = .data:0x800F3B18; // type:object size:0x1C scope:global data:4byte +...data.0 = .data:0x800F3B38; // type:label scope:local +__files = .data:0x800F3B38; // type:object size:0xD8 scope:global +@1009 = .data:0x800F3C10; // type:object size:0x84 scope:local +@1066 = .data:0x800F3C94; // type:object size:0x84 scope:local +@1186 = .data:0x800F3D18; // type:object size:0xD0 scope:local +@1185 = .data:0x800F3DE8; // type:object size:0x44 scope:local +@410 = .data:0x800F3E30; // type:object size:0x44 scope:local +__float_nan = .data:0x800F3E78; // type:object size:0x4 scope:global data:float +__float_huge = .data:0x800F3E7C; // type:object size:0x4 scope:global data:float +...data.0 = .data:0x800F3E80; // type:label scope:local +__four_over_pi_m1 = .data:0x800F3E80; // type:object size:0x10 scope:local data:float +__sincos_on_quadrant = .data:0x800F3E90; // type:object size:0x20 scope:global +__sincos_poly = .data:0x800F3EB0; // type:object size:0x28 scope:global data:float +rmodeobj = .bss:0x800F3EE0; // type:object size:0x3C scope:local +g_texMap = .bss:0x800F3F1C; // type:object size:0x80 scope:global +gListList = .bss:0x800F3FA0; // type:object size:0x10 scope:local data:4byte +...bss.0 = .bss:0x800F3FA0; // type:label scope:local +gapHeapBlockCache = .bss:0x800F3FB0; // type:object size:0x580 scope:local data:4byte +gOrthoMtx = .bss:0x800F4540; // type:object size:0x40 scope:local align:32 +...bss.0 = .bss:0x800F4540; // type:label scope:local +gContMap = .bss:0x800F4580; // type:object size:0x140 scope:local +gaszArgument = .bss:0x800F46C0; // type:object size:0x20 scope:local data:4byte +gpErrorMessageBuffer = .bss:0x800F46E0; // type:object size:0x5000 scope:global +WorkBuffer = .bss:0x800F96E0; // type:object size:0x40 scope:local data:4byte +...bss.0 = .bss:0x800F96E0; // type:label scope:local +PrepareReadyQueue = .bss:0x800F9720; // type:object size:0x20 scope:local +UsedTextureSetQueue = .bss:0x800F9740; // type:object size:0x20 scope:local +UsedTextureSetMessage = .bss:0x800F9760; // type:object size:0xC scope:local +SoundBuffer = .bss:0x800F9780; // type:object size:0x500 scope:local +ActivePlayer = .bss:0x800F9C80; // type:object size:0x1D0 scope:global +AudioDecodeThread = .bss:0x800F9E50; // type:object size:0x318 scope:local +...bss.0 = .bss:0x800F9E50; // type:label scope:local +AudioDecodeThreadStack = .bss:0x800FA168; // type:object size:0x1000 scope:local +FreeAudioBufferQueue = .bss:0x800FB168; // type:object size:0x20 scope:local +DecodedAudioBufferQueue = .bss:0x800FB188; // type:object size:0x20 scope:local +FreeAudioBufferMessage = .bss:0x800FB1A8; // type:object size:0xC scope:local +DecodedAudioBufferMessage = .bss:0x800FB1B4; // type:object size:0xC scope:local +FreeReadBufferQueue = .bss:0x800FB1C0; // type:object size:0x20 scope:local +...bss.0 = .bss:0x800FB1C0; // type:label scope:local +ReadedBufferQueue = .bss:0x800FB1E0; // type:object size:0x20 scope:local +ReadedBufferQueue2 = .bss:0x800FB200; // type:object size:0x20 scope:local +FreeReadBufferMessage = .bss:0x800FB220; // type:object size:0x28 scope:local +ReadedBufferMessage = .bss:0x800FB248; // type:object size:0x28 scope:local +ReadedBufferMessage2 = .bss:0x800FB270; // type:object size:0x28 scope:local +ReadThread = .bss:0x800FB298; // type:object size:0x318 scope:local +ReadThreadStack = .bss:0x800FB5B0; // type:object size:0x1000 scope:local +gOrthoMtx = .bss:0x800FC5B0; // type:object size:0x40 scope:local +VideoDecodeThread = .bss:0x800FC5F0; // type:object size:0x318 scope:local +...bss.0 = .bss:0x800FC5F0; // type:label scope:local +VideoDecodeThreadStack = .bss:0x800FC908; // type:object size:0x1000 scope:local +FreeTextureSetQueue = .bss:0x800FD908; // type:object size:0x20 scope:local +DecodedTextureSetQueue = .bss:0x800FD928; // type:object size:0x20 scope:local +FreeTextureSetMessage = .bss:0x800FD948; // type:object size:0xC scope:local +DecodedTextureSetMessage = .bss:0x800FD954; // type:object size:0xC scope:local +gMCardCardWorkArea = .bss:0x800FD960; // type:object size:0xA000 scope:local +...bss.0 = .bss:0x800FD960; // type:label scope:local +gDate = .bss:0x80107960; // type:object size:0x28 scope:global +bNoWriteInCurrentFrame = .bss:0x80107988; // type:object size:0x28 scope:global +mCard = .bss:0x801079B0; // type:object size:0x7B8 scope:global +gVolumeCurve = .bss:0x80108180; // type:object size:0x404 scope:global data:4byte +sConstantBufAddr = .bss:0x801085A0; // type:object size:0x18 scope:local align:32 data:4byte +...bss.0 = .bss:0x801085A0; // type:label scope:local +sTempZBuf = .bss:0x801085C0; // type:object size:0x25800 scope:local +sFrameObj1 = .bss:0x8012DDC0; // type:object size:0x20 scope:local +sFrameObj2 = .bss:0x8012DDE0; // type:object size:0x20 scope:local +sFrameObj_1564 = .bss:0x8012DE00; // type:object size:0x20 scope:local +sFrameObj_1565 = .bss:0x8012DE20; // type:object size:0x20 scope:local +sFrameObj_1568 = .bss:0x8012DE40; // type:object size:0x20 scope:local +line_1582 = .bss:0x8012DE60; // type:object size:0x1400 scope:local +line_1606 = .bss:0x8012F260; // type:object size:0xA00 scope:local +line_1630 = .bss:0x8012FC60; // type:object size:0xA00 scope:local data:2byte +sFrameObj_1647 = .bss:0x80130660; // type:object size:0x20 scope:local +sFrameObj_1660 = .bss:0x80130680; // type:object size:0x20 scope:local +frameObj_1663 = .bss:0x801306A0; // type:object size:0x20 scope:local +frameObj_1673 = .bss:0x801306C0; // type:object size:0x20 scope:local +tempLine = .bss:0x801306E0; // type:object size:0x200 scope:local +...bss.0 = .bss:0x801308E0; // type:label scope:local +gSystemRomConfigurationList = .bss:0x801308E0; // type:object size:0x174 scope:global +...bss.0 = .bss:0x80130A58; // type:label scope:local +aHeapTreeFlag = .bss:0x80130A58; // type:object size:0x1F4 scope:global data:4byte +tevStages = .bss:0x80130C50; // type:object size:0x2B8 scope:local data:4byte +...bss.0 = .bss:0x80130C50; // type:label scope:local +DriveInfo = .bss:0x80130F20; // type:object size:0x20 scope:local +...bss.0 = .bss:0x80130F20; // type:label scope:local +DriveBlock = .bss:0x80130F40; // type:object size:0x30 scope:local +...bss.0 = .bss:0x80130F70; // type:label scope:local +__OSErrorTable = .bss:0x80130F70; // type:object size:0x44 scope:global data:4byte +Header = .bss:0x80130FC0; // type:object size:0x20 scope:local align:32 +...bss.0 = .bss:0x80130FC0; // type:label scope:local +Scb = .bss:0x80130FE0; // type:object size:0x54 scope:local data:4byte +...bss.0 = .bss:0x80130FE0; // type:label scope:local +RunQueue = .bss:0x80131038; // type:object size:0x100 scope:local data:4byte +...bss.0 = .bss:0x80131038; // type:label scope:local +IdleThread = .bss:0x80131138; // type:object size:0x318 scope:local +DefaultThread = .bss:0x80131450; // type:object size:0x318 scope:local +IdleContext = .bss:0x80131768; // type:object size:0x2C8 scope:local +Ecb = .bss:0x80131A30; // type:object size:0xC0 scope:local data:4byte +Packet = .bss:0x80131AF0; // type:object size:0x80 scope:local data:4byte +...bss.0 = .bss:0x80131AF0; // type:label scope:local +Alarm = .bss:0x80131B70; // type:object size:0xA0 scope:local +TypeTime = .bss:0x80131C10; // type:object size:0x20 scope:local +XferTime = .bss:0x80131C30; // type:object size:0x20 scope:local +TypeCallback = .bss:0x80131C50; // type:object size:0x40 scope:local +RDSTHandler = .bss:0x80131C90; // type:object size:0x10 scope:local data:4byte +InputBufferValid = .bss:0x80131CA0; // type:object size:0x10 scope:local +InputBuffer = .bss:0x80131CB0; // type:object size:0x20 scope:local +InputBufferVcount = .bss:0x80131CD0; // type:object size:0x10 scope:local +cmdFixDevice$327 = .bss:0x80131CE0; // type:object size:0x10 scope:local +regs = .bss:0x80131CF0; // type:object size:0x76 scope:local data:2byte +...bss.0 = .bss:0x80131CF0; // type:label scope:local +shdwRegs = .bss:0x80131D68; // type:object size:0x76 scope:local +HorVer = .bss:0x80131DE0; // type:object size:0x58 scope:local data:2byte +FifoObj = .bss:0x80131E38; // type:object size:0x80 scope:local +...bss.0 = .bss:0x80131E38; // type:label scope:local +gxData = .bss:0x80131EB8; // type:object size:0x5B0 scope:local +Type = .bss:0x80132468; // type:object size:0x10 scope:local +...bss.0 = .bss:0x80132468; // type:label scope:local +Origin = .bss:0x80132478; // type:object size:0x30 scope:local +CmdProbeDevice = .bss:0x801324A8; // type:object size:0x10 scope:local +CommandList = .bss:0x801324B8; // type:object size:0x3C scope:local data:4byte +...bss.0 = .bss:0x801324B8; // type:label scope:local +AlarmForWA = .bss:0x801324F8; // type:object size:0x28 scope:local +AlarmForTimeout = .bss:0x80132520; // type:object size:0x28 scope:local +AlarmForBreak = .bss:0x80132548; // type:object size:0x28 scope:local +Prev = .bss:0x80132570; // type:object size:0xC scope:local +Curr = .bss:0x8013257C; // type:object size:0xC scope:local +BB2 = .bss:0x801325A0; // type:object size:0x20 scope:local +...bss.0 = .bss:0x801325A0; // type:label scope:local +CurrDiskID = .bss:0x801325C0; // type:object size:0x20 scope:local +DummyCommandBlock = .bss:0x801325E0; // type:object size:0x30 scope:local +ResetAlarm = .bss:0x80132610; // type:object size:0x28 scope:local +WaitingQueue = .bss:0x80132638; // type:object size:0x20 scope:local data:4byte +...bss.0 = .bss:0x80132638; // type:label scope:local +bb2Buf = .bss:0x80132658; // type:object size:0x3F scope:local +block$18 = .bss:0x80132698; // type:object size:0x30 scope:local +rmodeobj = .bss:0x801326C8; // type:object size:0x3C scope:local data:4byte +...bss.0 = .bss:0x801326C8; // type:label scope:local +fontTexObj = .bss:0x80132708; // type:object size:0x20 scope:local +...bss.0 = .bss:0x80132708; // type:label scope:local +Pad = .bss:0x80132728; // type:object size:0x30 scope:local +...bss.0 = .bss:0x80132728; // type:label scope:local +DemoPad = .bss:0x80132758; // type:object size:0x78 scope:global data:2byte +...bss.0 = .bss:0x801327D0; // type:label scope:local +__CARDBlock = .bss:0x801327D0; // type:object size:0x220 scope:global data:4byte +__CARDDiskNone = .bss:0x801329F0; // type:object size:0x20 scope:global +__THPIDCTWorkspace = .bss:0x80132A20; // type:object size:0x100 scope:local +...bss.0 = .bss:0x80132A20; // type:label scope:local +__THPLCWork512 = .bss:0x80132B20; // type:object size:0xC scope:local +__THPLCWork640 = .bss:0x80132B2C; // type:object size:0xC scope:local +__THPMCUBuffer = .bss:0x80132B38; // type:object size:0x18 scope:local data:4byte +gTRKEventQueue = .bss:0x80132B50; // type:object size:0x28 scope:global +gTRKBigEndian = .bss:0x80132B78; // type:object size:0x4 scope:global data:4byte +gTRKMsgBufs = .bss:0x80132B80; // type:object size:0x19B0 scope:global +gTRKFramingState = .bss:0x80134530; // type:object size:0x14 scope:local data:4byte +gTRKInputPendingPtr = .bss:0x80134544; // type:object size:0x4 scope:global data:4byte +gTRKDispatchTableSize = .bss:0x80134548; // type:object size:0x4 scope:global data:4byte +TRK_saved_exceptionID = .bss:0x80134550; // type:object size:0x2 scope:local data:2byte +gTRKSaveState = .bss:0x80134554; // type:object size:0x94 scope:global data:4byte +TRKvalue128_temp = .bss:0x801345E8; // type:object size:0x10 scope:global +gTRKState = .bss:0x801345F8; // type:object size:0xA4 scope:global data:4byte +gTRKCPUState = .bss:0x801346A0; // type:object size:0x430 scope:global +TRK_mainError = .bss:0x80134AD0; // type:object size:0x4 scope:local data:4byte +atexit_funcs = .bss:0x80134AD8; // type:object size:0x100 scope:local +__atexit_funcs = .bss:0x80134BD8; // type:object size:0x100 scope:local +@2 = .sdata:0x80134CE0; // type:object size:0x5 scope:local data:string +gmsg_ld01Size = .sdata:0x80134CE8; // type:object size:0x4 scope:global data:4byte +gmsg_ld02Size = .sdata:0x80134CEC; // type:object size:0x4 scope:global data:4byte +gmsg_ld03Size = .sdata:0x80134CF0; // type:object size:0x4 scope:global data:4byte +gmsg_ld04Size = .sdata:0x80134CF4; // type:object size:0x4 scope:global data:4byte +gmsg_ld05_1Size = .sdata:0x80134CF8; // type:object size:0x4 scope:global data:4byte +gmsg_ld05_2Size = .sdata:0x80134CFC; // type:object size:0x4 scope:global data:4byte +gmsg_ld06_1Size = .sdata:0x80134D00; // type:object size:0x4 scope:global data:4byte +gmsg_ld06_2Size = .sdata:0x80134D04; // type:object size:0x4 scope:global data:4byte +gmsg_ld06_3Size = .sdata:0x80134D08; // type:object size:0x4 scope:global data:4byte +gmsg_ld06_4Size = .sdata:0x80134D0C; // type:object size:0x4 scope:global data:4byte +gmsg_ld07Size = .sdata:0x80134D10; // type:object size:0x4 scope:global data:4byte +gmsg_gf01Size = .sdata:0x80134D14; // type:object size:0x4 scope:global data:4byte +gmsg_gf02Size = .sdata:0x80134D18; // type:object size:0x4 scope:global data:4byte +gmsg_gf03Size = .sdata:0x80134D1C; // type:object size:0x4 scope:global data:4byte +gmsg_gf04Size = .sdata:0x80134D20; // type:object size:0x4 scope:global data:4byte +gmsg_gf05Size = .sdata:0x80134D24; // type:object size:0x4 scope:global data:4byte +gmsg_gf06Size = .sdata:0x80134D28; // type:object size:0x4 scope:global data:4byte +gmsg_in01Size = .sdata:0x80134D2C; // type:object size:0x4 scope:global data:4byte +gmsg_in02Size = .sdata:0x80134D30; // type:object size:0x4 scope:global data:4byte +gmsg_in03Size = .sdata:0x80134D34; // type:object size:0x4 scope:global data:4byte +gmsg_in04Size = .sdata:0x80134D38; // type:object size:0x4 scope:global data:4byte +gmsg_in05Size = .sdata:0x80134D3C; // type:object size:0x4 scope:global data:4byte +gmsg_sv01Size = .sdata:0x80134D40; // type:object size:0x4 scope:global data:4byte +gmsg_sv01_2Size = .sdata:0x80134D44; // type:object size:0x4 scope:global data:4byte +gmsg_sv02Size = .sdata:0x80134D48; // type:object size:0x4 scope:global data:4byte +gmsg_sv03Size = .sdata:0x80134D4C; // type:object size:0x4 scope:global data:4byte +gmsg_sv04Size = .sdata:0x80134D50; // type:object size:0x4 scope:global data:4byte +gmsg_sv05_1Size = .sdata:0x80134D54; // type:object size:0x4 scope:global data:4byte +gmsg_sv06_1Size = .sdata:0x80134D58; // type:object size:0x4 scope:global data:4byte +gmsg_sv06_2Size = .sdata:0x80134D5C; // type:object size:0x4 scope:global data:4byte +gmsg_sv06_3Size = .sdata:0x80134D60; // type:object size:0x4 scope:global data:4byte +gmsg_sv06_4Size = .sdata:0x80134D64; // type:object size:0x4 scope:global data:4byte +gmsg_sv06_5Size = .sdata:0x80134D68; // type:object size:0x4 scope:global data:4byte +gmsg_sv07Size = .sdata:0x80134D6C; // type:object size:0x4 scope:global data:4byte +gmsg_sv08Size = .sdata:0x80134D70; // type:object size:0x4 scope:global data:4byte +gmsg_sv09Size = .sdata:0x80134D74; // type:object size:0x4 scope:global data:4byte +gmsg_sv10Size = .sdata:0x80134D78; // type:object size:0x4 scope:global data:4byte +gmsg_sv11Size = .sdata:0x80134D7C; // type:object size:0x4 scope:global data:4byte +gmsg_sv12Size = .sdata:0x80134D80; // type:object size:0x4 scope:global data:4byte +gmsg_sv_shareSize = .sdata:0x80134D84; // type:object size:0x4 scope:global data:4byte +gz_bnrSize = .sdata:0x80134D88; // type:object size:0x4 scope:global data:4byte +gz_iconSize = .sdata:0x80134D8C; // type:object size:0x4 scope:global data:4byte +gHighlightChoice = .sdata:0x80134D90; // type:object size:0x4 scope:global data:4byte +simulatorMessageCurrent = .sdata:0x80134D94; // type:object size:0x4 scope:global data:4byte +gResetBeginFlag = .sdata:0x80134D98; // type:object size:0x4 scope:global data:4byte +@749 = .sdata:0x80134D9C; // type:object size:0x8 scope:local data:string +@750 = .sdata:0x80134DA4; // type:object size:0x7 scope:local data:string +@44 = .sdata:0x80134DB0; // type:object size:0x4 scope:local data:string +toggle = .sdata:0x80134DB8; // type:object size:0x4 scope:local data:4byte +@2 = .sdata:0x80134DC0; // type:object size:0x5 scope:local data:string +@2 = .sdata:0x80134DC8; // type:object size:0x6 scope:local data:string +D_80134DD0 = .sdata:0x80134DD0; // type:object size:0x4 scope:local data:4byte +sRemapI = .sdata:0x80134DD8; // type:object size:0x8 scope:local +@21 = .sdata:0x80134DE0; // type:object size:0x6 scope:local data:string +@22 = .sdata:0x80134DE8; // type:object size:0x6 scope:local data:string +@23 = .sdata:0x80134DF0; // type:object size:0x3 scope:local data:string +@24 = .sdata:0x80134DF4; // type:object size:0x3 scope:local data:string +@25 = .sdata:0x80134DF8; // type:object size:0x3 scope:local data:string +@26 = .sdata:0x80134DFC; // type:object size:0x3 scope:local data:string +@27 = .sdata:0x80134E00; // type:object size:0x3 scope:local data:string +@28 = .sdata:0x80134E04; // type:object size:0x3 scope:local data:string +@29 = .sdata:0x80134E08; // type:object size:0x5 scope:local data:string +@30 = .sdata:0x80134E10; // type:object size:0x5 scope:local data:string +@31 = .sdata:0x80134E18; // type:object size:0x5 scope:local data:string +@32 = .sdata:0x80134E20; // type:object size:0x5 scope:local data:string +@33 = .sdata:0x80134E28; // type:object size:0x4 scope:local data:string +@34 = .sdata:0x80134E2C; // type:object size:0x5 scope:local data:string +@35 = .sdata:0x80134E34; // type:object size:0x6 scope:local data:string +@36 = .sdata:0x80134E3C; // type:object size:0x5 scope:local data:string +@38 = .sdata:0x80134E44; // type:object size:0x4 scope:local data:string +@39 = .sdata:0x80134E48; // type:object size:0x5 scope:local data:string +@40 = .sdata:0x80134E50; // type:object size:0x6 scope:local data:string +cAlpha = .sdata:0x80134E56; // type:object size:0x1 scope:local data:byte +D_80134E58 = .sdata:0x80134E58; // type:object size:0x8 scope:local data:string +nTickMultiplier = .sdata:0x80134E60; // type:object size:0x4 scope:global data:4byte +fTickScale = .sdata:0x80134E64; // type:object size:0x4 scope:global data:float +@1180 = .sdata:0x80134E68; // type:object size:0x1 scope:local +@1181 = .sdata:0x80134E6C; // type:object size:0x4 scope:local data:string +@1182 = .sdata:0x80134E70; // type:object size:0x4 scope:local data:string +@1183 = .sdata:0x80134E74; // type:object size:0x5 scope:local data:string +@1184 = .sdata:0x80134E7C; // type:object size:0x8 scope:local data:string +@1185 = .sdata:0x80134E84; // type:object size:0x4 scope:local data:string +@1186 = .sdata:0x80134E88; // type:object size:0x3 scope:local data:string +@1187 = .sdata:0x80134E8C; // type:object size:0x3 scope:local data:string +@1188 = .sdata:0x80134E90; // type:object size:0x3 scope:local data:string +@1189 = .sdata:0x80134E94; // type:object size:0x3 scope:local data:string +@1190 = .sdata:0x80134E98; // type:object size:0x3 scope:local data:string +@1191 = .sdata:0x80134E9C; // type:object size:0x3 scope:local data:string +@1194 = .sdata:0x80134EA0; // type:object size:0x6 scope:local data:string +@1196 = .sdata:0x80134EA8; // type:object size:0x7 scope:local data:string +@1678 = .sdata:0x80134EB0; // type:object size:0x5 scope:local data:string +@1679 = .sdata:0x80134EB8; // type:object size:0x5 scope:local data:string +@1682 = .sdata:0x80134EC0; // type:object size:0x6 scope:local data:string +@1684 = .sdata:0x80134EC8; // type:object size:0x5 scope:local data:string +@1685 = .sdata:0x80134ED0; // type:object size:0x5 scope:local data:string +@1686 = .sdata:0x80134ED8; // type:object size:0x7 scope:local data:string +@1688 = .sdata:0x80134EE0; // type:object size:0x7 scope:local data:string +@1689 = .sdata:0x80134EE8; // type:object size:0x6 scope:local data:string +@1690 = .sdata:0x80134EF0; // type:object size:0x7 scope:local data:string +@1692 = .sdata:0x80134EF8; // type:object size:0x5 scope:local data:string +@1693 = .sdata:0x80134F00; // type:object size:0x5 scope:local data:string +@1695 = .sdata:0x80134F08; // type:object size:0x7 scope:local data:string +@1697 = .sdata:0x80134F10; // type:object size:0x5 scope:local data:string +@1698 = .sdata:0x80134F18; // type:object size:0x6 scope:local data:string +@1700 = .sdata:0x80134F20; // type:object size:0x5 scope:local data:string +@1701 = .sdata:0x80134F28; // type:object size:0x3 scope:local data:string +@1703 = .sdata:0x80134F2C; // type:object size:0x5 scope:local data:string +@1704 = .sdata:0x80134F34; // type:object size:0x5 scope:local data:string +@1705 = .sdata:0x80134F3C; // type:object size:0x5 scope:local data:string +@1706 = .sdata:0x80134F44; // type:object size:0x5 scope:local data:string +@1707 = .sdata:0x80134F4C; // type:object size:0x5 scope:local data:string +@1708 = .sdata:0x80134F54; // type:object size:0x5 scope:local data:string +@1709 = .sdata:0x80134F5C; // type:object size:0x7 scope:local data:string +@1711 = .sdata:0x80134F64; // type:object size:0x5 scope:local data:string +@1712 = .sdata:0x80134F6C; // type:object size:0x5 scope:local data:string +@1713 = .sdata:0x80134F74; // type:object size:0x5 scope:local data:string +@1714 = .sdata:0x80134F7C; // type:object size:0x5 scope:local data:string +@1715 = .sdata:0x80134F84; // type:object size:0x8 scope:local data:string +@1717 = .sdata:0x80134F8C; // type:object size:0x5 scope:local data:string +@1718 = .sdata:0x80134F94; // type:object size:0x5 scope:local data:string +@1719 = .sdata:0x80134F9C; // type:object size:0x5 scope:local data:string +@1720 = .sdata:0x80134FA4; // type:object size:0x5 scope:local data:string +@1721 = .sdata:0x80134FAC; // type:object size:0x5 scope:local data:string +@1723 = .sdata:0x80134FB4; // type:object size:0x5 scope:local data:string +@1724 = .sdata:0x80134FBC; // type:object size:0x5 scope:local data:string +@1725 = .sdata:0x80134FC4; // type:object size:0x4 scope:local data:string +@1727 = .sdata:0x80134FC8; // type:object size:0x5 scope:local data:string +@1728 = .sdata:0x80134FD0; // type:object size:0x4 scope:local data:string +@1730 = .sdata:0x80134FD4; // type:object size:0x5 scope:local data:string +@1731 = .sdata:0x80134FDC; // type:object size:0x4 scope:local data:string +@1733 = .sdata:0x80134FE0; // type:object size:0x5 scope:local data:string +@1734 = .sdata:0x80134FE8; // type:object size:0x5 scope:local data:string +@1735 = .sdata:0x80134FF0; // type:object size:0x5 scope:local data:string +@1739 = .sdata:0x80134FF8; // type:object size:0x5 scope:local data:string +@1743 = .sdata:0x80135000; // type:object size:0x5 scope:local data:string +@1744 = .sdata:0x80135008; // type:object size:0x5 scope:local data:string +@1745 = .sdata:0x80135010; // type:object size:0x5 scope:local data:string +@1746 = .sdata:0x80135018; // type:object size:0x5 scope:local data:string +@1747 = .sdata:0x80135020; // type:object size:0x5 scope:local data:string +@1748 = .sdata:0x80135028; // type:object size:0x8 scope:local data:string +@1749 = .sdata:0x80135030; // type:object size:0x8 scope:local data:string +@1750 = .sdata:0x80135038; // type:object size:0x5 scope:local data:string +@1751 = .sdata:0x80135040; // type:object size:0x5 scope:local data:string +@1752 = .sdata:0x80135048; // type:object size:0x5 scope:local data:string +@1753 = .sdata:0x80135050; // type:object size:0x5 scope:local data:string +@1754 = .sdata:0x80135058; // type:object size:0x5 scope:local data:string +@1755 = .sdata:0x80135060; // type:object size:0x5 scope:local data:string +@1756 = .sdata:0x80135068; // type:object size:0x5 scope:local data:string +@1757 = .sdata:0x80135070; // type:object size:0x5 scope:local data:string +@1758 = .sdata:0x80135078; // type:object size:0x6 scope:local data:string +@1760 = .sdata:0x80135080; // type:object size:0x5 scope:local data:string +@1761 = .sdata:0x80135088; // type:object size:0x5 scope:local data:string +@1762 = .sdata:0x80135090; // type:object size:0x5 scope:local data:string +@1764 = .sdata:0x80135098; // type:object size:0x5 scope:local data:string +@1765 = .sdata:0x801350A0; // type:object size:0x4 scope:local data:string +@21 = .sdata:0x801350A8; // type:object size:0x4 scope:local data:string +@22 = .sdata:0x801350AC; // type:object size:0x5 scope:local data:string +@23 = .sdata:0x801350B4; // type:object size:0x3 scope:local data:string +@24 = .sdata:0x801350B8; // type:object size:0x3 scope:local data:string +@25 = .sdata:0x801350BC; // type:object size:0x3 scope:local data:string +@26 = .sdata:0x801350C0; // type:object size:0x3 scope:local data:string +@27 = .sdata:0x801350C4; // type:object size:0x3 scope:local data:string +@28 = .sdata:0x801350C8; // type:object size:0x3 scope:local data:string +@29 = .sdata:0x801350CC; // type:object size:0x3 scope:local data:string +@30 = .sdata:0x801350D0; // type:object size:0x3 scope:local data:string +@31 = .sdata:0x801350D4; // type:object size:0x3 scope:local data:string +@32 = .sdata:0x801350D8; // type:object size:0x3 scope:local data:string +@33 = .sdata:0x801350DC; // type:object size:0x3 scope:local data:string +@34 = .sdata:0x801350E0; // type:object size:0x3 scope:local data:string +@35 = .sdata:0x801350E4; // type:object size:0x3 scope:local data:string +@36 = .sdata:0x801350E8; // type:object size:0x3 scope:local data:string +@37 = .sdata:0x801350EC; // type:object size:0x3 scope:local data:string +@38 = .sdata:0x801350F0; // type:object size:0x3 scope:local data:string +@39 = .sdata:0x801350F4; // type:object size:0x3 scope:local data:string +@40 = .sdata:0x801350F8; // type:object size:0x3 scope:local data:string +@41 = .sdata:0x801350FC; // type:object size:0x3 scope:local data:string +@42 = .sdata:0x80135100; // type:object size:0x3 scope:local data:string +@43 = .sdata:0x80135104; // type:object size:0x3 scope:local data:string +@44 = .sdata:0x80135108; // type:object size:0x3 scope:local data:string +@45 = .sdata:0x8013510C; // type:object size:0x3 scope:local data:string +@46 = .sdata:0x80135110; // type:object size:0x3 scope:local data:string +@47 = .sdata:0x80135114; // type:object size:0x3 scope:local data:string +@48 = .sdata:0x80135118; // type:object size:0x3 scope:local data:string +@49 = .sdata:0x8013511C; // type:object size:0x3 scope:local data:string +@50 = .sdata:0x80135120; // type:object size:0x3 scope:local data:string +@51 = .sdata:0x80135124; // type:object size:0x3 scope:local data:string +@52 = .sdata:0x80135128; // type:object size:0x3 scope:local data:string +@53 = .sdata:0x8013512C; // type:object size:0x3 scope:local data:string +@54 = .sdata:0x80135130; // type:object size:0x3 scope:local data:string +@55 = .sdata:0x80135134; // type:object size:0x3 scope:local data:string +@56 = .sdata:0x80135138; // type:object size:0x3 scope:local data:string +@57 = .sdata:0x8013513C; // type:object size:0x3 scope:local data:string +@58 = .sdata:0x80135140; // type:object size:0x3 scope:local data:string +@59 = .sdata:0x80135144; // type:object size:0x3 scope:local data:string +@60 = .sdata:0x80135148; // type:object size:0x3 scope:local data:string +@61 = .sdata:0x8013514C; // type:object size:0x3 scope:local data:string +@62 = .sdata:0x80135150; // type:object size:0x3 scope:local data:string +@63 = .sdata:0x80135154; // type:object size:0x3 scope:local data:string +@64 = .sdata:0x80135158; // type:object size:0x4 scope:local data:string +@65 = .sdata:0x8013515C; // type:object size:0x4 scope:local data:string +@66 = .sdata:0x80135160; // type:object size:0x4 scope:local data:string +@67 = .sdata:0x80135164; // type:object size:0x4 scope:local data:string +@68 = .sdata:0x80135168; // type:object size:0x4 scope:local data:string +@69 = .sdata:0x8013516C; // type:object size:0x4 scope:local data:string +@70 = .sdata:0x80135170; // type:object size:0x4 scope:local data:string +@71 = .sdata:0x80135174; // type:object size:0x4 scope:local data:string +@72 = .sdata:0x80135178; // type:object size:0x4 scope:local data:string +@73 = .sdata:0x8013517C; // type:object size:0x4 scope:local data:string +@74 = .sdata:0x80135180; // type:object size:0x4 scope:local data:string +@75 = .sdata:0x80135184; // type:object size:0x4 scope:local data:string +@76 = .sdata:0x80135188; // type:object size:0x4 scope:local data:string +@77 = .sdata:0x8013518C; // type:object size:0x4 scope:local data:string +@78 = .sdata:0x80135190; // type:object size:0x4 scope:local data:string +@79 = .sdata:0x80135194; // type:object size:0x4 scope:local data:string +@80 = .sdata:0x80135198; // type:object size:0x4 scope:local data:string +@81 = .sdata:0x8013519C; // type:object size:0x4 scope:local data:string +@82 = .sdata:0x801351A0; // type:object size:0x4 scope:local data:string +@83 = .sdata:0x801351A4; // type:object size:0x4 scope:local data:string +@84 = .sdata:0x801351A8; // type:object size:0x4 scope:local data:string +@85 = .sdata:0x801351AC; // type:object size:0x6 scope:local data:string +@86 = .sdata:0x801351B4; // type:object size:0x7 scope:local data:string +@89 = .sdata:0x801351BC; // type:object size:0x8 scope:local data:string +@91 = .sdata:0x801351C4; // type:object size:0x6 scope:local data:string +@94 = .sdata:0x801351CC; // type:object size:0x6 scope:local data:string +@96 = .sdata:0x801351D4; // type:object size:0x8 scope:local data:string +@97 = .sdata:0x801351DC; // type:object size:0x7 scope:local data:string +@98 = .sdata:0x801351E4; // type:object size:0x6 scope:local data:string +@99 = .sdata:0x801351EC; // type:object size:0x4 scope:local data:string +@100 = .sdata:0x801351F0; // type:object size:0x7 scope:local data:string +@101 = .sdata:0x801351F8; // type:object size:0x7 scope:local data:string +@102 = .sdata:0x80135200; // type:object size:0x7 scope:local data:string +@111 = .sdata:0x80135208; // type:object size:0x4 scope:local data:string +@113 = .sdata:0x8013520C; // type:object size:0x7 scope:local data:string +@114 = .sdata:0x80135214; // type:object size:0x7 scope:local data:string +@117 = .sdata:0x8013521C; // type:object size:0x5 scope:local data:string +@148 = .sdata:0x80135224; // type:object size:0x6 scope:local data:string +D_8013522C = .sdata:0x8013522C; // type:object size:0x5 scope:local data:string +D_80135234 = .sdata:0x80135234; // type:object size:0x5 scope:local data:string +D_8013523C = .sdata:0x8013523C; // type:object size:0x5 scope:local data:string +D_80135244 = .sdata:0x80135244; // type:object size:0x5 scope:local data:string +D_8013524C = .sdata:0x8013524C; // type:object size:0x5 scope:local data:string +D_80135254 = .sdata:0x80135254; // type:object size:0x5 scope:local data:string +D_8013525C = .sdata:0x8013525C; // type:object size:0x1 scope:local +D_80135260 = .sdata:0x80135260; // type:object size:0x6 scope:local data:string +@2 = .sdata:0x80135268; // type:object size:0x4 scope:local data:string +@2 = .sdata:0x80135270; // type:object size:0x4 scope:local data:string +@2 = .sdata:0x80135278; // type:object size:0x4 scope:local data:string +@1052 = .sdata:0x8013527C; // type:object size:0x5 scope:local data:byte +@1053 = .sdata:0x80135284; // type:object size:0x5 scope:local data:byte +@1054 = .sdata:0x8013528C; // type:object size:0x8 scope:local data:string +@1056 = .sdata:0x80135294; // type:object size:0x8 scope:local data:string +@1058 = .sdata:0x8013529C; // type:object size:0x1 scope:local +@1059 = .sdata:0x801352A0; // type:object size:0x5 scope:local data:byte +@1060 = .sdata:0x801352A8; // type:object size:0x5 scope:local data:byte +@2 = .sdata:0x801352B0; // type:object size:0x4 scope:local data:string +@2 = .sdata:0x801352B8; // type:object size:0x4 scope:local data:string +@2 = .sdata:0x801352C0; // type:object size:0x4 scope:local data:string +nFirstTime_2148 = .sdata:0x801352C4; // type:object size:0x4 scope:local data:4byte +nFirstTime_2648 = .sdata:0x801352C8; // type:object size:0x4 scope:local data:4byte +nFirstTime_2757 = .sdata:0x801352CC; // type:object size:0x4 scope:local data:4byte +nFirstTime_2796 = .sdata:0x801352D0; // type:object size:0x4 scope:local data:4byte +scissorX1 = .sdata:0x801352D4; // type:object size:0x2 scope:local data:2byte +scissorY1 = .sdata:0x801352D6; // type:object size:0x2 scope:local data:2byte +TMEMMASK = .sdata:0x801352D8; // type:object size:0x8 scope:local +TMEMSHIFT = .sdata:0x801352E0; // type:object size:0x8 scope:local +@2 = .sdata:0x801352E8; // type:object size:0x5 scope:local data:string +@2 = .sdata:0x801352F0; // type:object size:0x5 scope:local data:string +@2 = .sdata:0x801352F8; // type:object size:0x6 scope:local data:string +@2 = .sdata:0x80135300; // type:object size:0x5 scope:local data:string +@2 = .sdata:0x80135308; // type:object size:0x6 scope:local data:string +@80 = .sdata:0x80135310; // type:object size:0x8 scope:local data:string +@2 = .sdata:0x80135318; // type:object size:0x6 scope:local data:string +@2 = .sdata:0x80135320; // type:object size:0x7 scope:local data:string +dtor$313 = .sdata:0x80135328; // type:object size:0x4 scope:local data:float +dtor$327 = .sdata:0x8013532C; // type:object size:0x4 scope:local data:float +nAddress$442 = .sdata:0x80135330; // type:object size:0x4 scope:local data:4byte +@460 = .sdata:0x80135334; // type:object size:0x7 scope:local data:string +@461 = .sdata:0x8013533C; // type:object size:0x7 scope:local data:string +@462 = .sdata:0x80135344; // type:object size:0x6 scope:local data:string +@463 = .sdata:0x8013534C; // type:object size:0x6 scope:local data:string +@464 = .sdata:0x80135354; // type:object size:0x7 scope:local data:string +@472 = .sdata:0x8013535C; // type:object size:0x8 scope:local data:string +@476 = .sdata:0x80135364; // type:object size:0x8 scope:local data:string +sOrder = .sdata:0x80135370; // type:object size:0x5 scope:local data:byte +sReplace = .sdata:0x80135378; // type:object size:0x5 scope:local +@3 = .sdata:0x80135380; // type:object size:0x7 scope:local data:string +@4 = .sdata:0x80135388; // type:object size:0x7 scope:local data:string +@6 = .sdata:0x80135390; // type:object size:0x6 scope:local data:string +@8 = .sdata:0x80135398; // type:object size:0x2 scope:local data:string +@17 = .sdata:0x8013539C; // type:object size:0x2 scope:local data:string +@18 = .sdata:0x801353A0; // type:object size:0x7 scope:local data:string +@19 = .sdata:0x801353A8; // type:object size:0x7 scope:local data:string +@20 = .sdata:0x801353B0; // type:object size:0x7 scope:local data:string +@21 = .sdata:0x801353B8; // type:object size:0x7 scope:local data:string +@22 = .sdata:0x801353C0; // type:object size:0x7 scope:local data:string +@23 = .sdata:0x801353C8; // type:object size:0x7 scope:local data:string +@24 = .sdata:0x801353D0; // type:object size:0x7 scope:local data:string +@25 = .sdata:0x801353D8; // type:object size:0x7 scope:local data:string +@26 = .sdata:0x801353E0; // type:object size:0x6 scope:local data:string +@27 = .sdata:0x801353E8; // type:object size:0x6 scope:local data:string +@28 = .sdata:0x801353F0; // type:object size:0x6 scope:local data:string +@29 = .sdata:0x801353F8; // type:object size:0x6 scope:local data:string +zeroType = .sdata:0x80135400; // type:object size:0x8 scope:local +D_80135408 = .sdata:0x80135408; // type:object size:0x6 scope:local data:string +__OSVersion = .sdata:0x80135410; // type:object size:0x4 scope:local data:4byte +@88 = .sdata:0x80135414; // type:object size:0x6 scope:local data:string +@135 = .sdata:0x8013541C; // type:object size:0x4 scope:local data:string +__OSCurrHeap = .sdata:0x80135420; // type:object size:0x4 scope:global data:4byte +__OSArenaLo = .sdata:0x80135428; // type:object size:0x4 scope:global data:4byte +__OSFpscrEnableBits = .sdata:0x80135430; // type:object size:0x4 scope:global data:4byte +@74 = .sdata:0x80135434; // type:object size:0x2 scope:local data:string +fontEncode$2 = .sdata:0x80135438; // type:object size:0x2 scope:local data:2byte +SwitchThreadCallback = .sdata:0x80135440; // type:object size:0x4 scope:local data:4byte +__EXIVersion = .sdata:0x80135448; // type:object size:0x4 scope:global data:4byte +__SIVersion = .sdata:0x80135450; // type:object size:0x4 scope:global data:4byte +__VIVersion = .sdata:0x80135458; // type:object size:0x4 scope:global data:4byte +@534 = .sdata:0x8013545C; // type:object size:0x5 scope:local data:string +Unit01 = .sdata:0x80135468; // type:object size:0x8 scope:local +__GXVersion = .sdata:0x80135470; // type:object size:0x4 scope:global data:4byte +tbl1$263 = .sdata:0x80135478; // type:object size:0x4 scope:local +tbl2$264 = .sdata:0x8013547C; // type:object size:0x4 scope:local +tbl3$265 = .sdata:0x80135480; // type:object size:0x4 scope:local +GXTexMode0Ids = .sdata:0x80135488; // type:object size:0x8 scope:local +GXTexMode1Ids = .sdata:0x80135490; // type:object size:0x8 scope:local +GXTexImage0Ids = .sdata:0x80135498; // type:object size:0x8 scope:local +GXTexImage1Ids = .sdata:0x801354A0; // type:object size:0x8 scope:local +GXTexImage2Ids = .sdata:0x801354A8; // type:object size:0x8 scope:local +GXTexImage3Ids = .sdata:0x801354B0; // type:object size:0x8 scope:local +GXTexTlutIds = .sdata:0x801354B8; // type:object size:0x8 scope:local +GX2HWFiltConv = .sdata:0x801354C0; // type:object size:0x6 scope:local +__PADVersion = .sdata:0x801354C8; // type:object size:0x4 scope:global data:4byte +ResettingChan = .sdata:0x801354CC; // type:object size:0x4 scope:local data:4byte +XPatchBits = .sdata:0x801354D0; // type:object size:0x4 scope:local data:4byte +AnalogMode = .sdata:0x801354D4; // type:object size:0x4 scope:local data:4byte +Spec = .sdata:0x801354D8; // type:object size:0x4 scope:local data:4byte +MakeStatus = .sdata:0x801354DC; // type:object size:0x4 scope:local data:4byte +CmdReadOrigin = .sdata:0x801354E0; // type:object size:0x4 scope:local +CmdCalibrate = .sdata:0x801354E4; // type:object size:0x4 scope:local +FirstRead = .sdata:0x801354E8; // type:object size:0x4 scope:local data:4byte +@118 = .sdata:0x801354F0; // type:object size:0x8 scope:local data:string +__DVDVersion = .sdata:0x801354F8; // type:object size:0x4 scope:global data:4byte +autoInvalidation = .sdata:0x801354FC; // type:object size:0x4 scope:local data:4byte +checkOptionalCommand = .sdata:0x80135500; // type:object size:0x4 scope:local data:4byte +@23 = .sdata:0x80135504; // type:object size:0x6 scope:local data:string +DmaCommand = .sdata:0x8013550C; // type:object size:0x4 scope:local data:4byte +@37 = .sdata:0x80135510; // type:object size:0x2 scope:local data:string +@42 = .sdata:0x80135514; // type:object size:0x4 scope:local data:string +@43 = .sdata:0x80135518; // type:object size:0x3 scope:local data:string +DemoFirstFrame = .sdata:0x80135520; // type:object size:0x1 scope:local data:byte +@162 = .sdata:0x80135528; // type:object size:0x8 scope:local data:string +__AIVersion = .sdata:0x80135530; // type:object size:0x4 scope:global data:4byte +__ARVersion = .sdata:0x80135538; // type:object size:0x4 scope:global data:4byte +__DSPVersion = .sdata:0x80135540; // type:object size:0x4 scope:global data:4byte +__CARDVersion = .sdata:0x80135548; // type:object size:0x4 scope:global data:4byte +next = .sdata:0x80135550; // type:object size:0x4 scope:local data:4byte +__CARDVendorID = .sdata:0x80135558; // type:object size:0x2 scope:global data:2byte +__CARDPermMask = .sdata:0x8013555A; // type:object size:0x1 scope:global data:byte +__THPVersion = .sdata:0x80135560; // type:object size:0x4 scope:global data:4byte +@wstringBase0 = .sdata:0x80135568; // type:object size:0x2 scope:local +K1 = .sdata:0x80135570; // type:object size:0x4 scope:local data:4byte +K2 = .sdata:0x80135574; // type:object size:0x4 scope:local data:4byte +SendCount = .sdata:0x80135578; // type:object size:0x1 scope:local data:byte +gnCountArgument = .sbss:0x80135580; // type:object size:0x4 scope:local data:4byte +gaszArgument = .sbss:0x80135584; // type:object size:0x4 scope:local data:4byte +DefaultFifo = .sbss:0x80135588; // type:object size:0x4 scope:local data:4byte +DefaultFifoObj = .sbss:0x8013558C; // type:object size:0x4 scope:local data:4byte +gpHeap = .sbss:0x80135590; // type:object size:0x4 scope:local data:4byte +gArenaHi = .sbss:0x80135594; // type:object size:0x4 scope:local data:4byte +gArenaLo = .sbss:0x80135598; // type:object size:0x4 scope:local data:4byte +rmode = .sbss:0x8013559C; // type:object size:0x4 scope:global data:4byte +gpfOpen = .sbss:0x801355A0; // type:object size:0x4 scope:local data:4byte +gpfRead = .sbss:0x801355A4; // type:object size:0x4 scope:local data:4byte +gpHeap = .sbss:0x801355A8; // type:object size:0x4 scope:local data:4byte +gpHeapBlockFirst = .sbss:0x801355AC; // type:object size:0x4 scope:local data:4byte +gpHeapBlockLast = .sbss:0x801355B0; // type:object size:0x4 scope:local data:4byte +gnHeapTakeCount = .sbss:0x801355B4; // type:object size:0x4 scope:local data:4byte +gnHeapFreeCount = .sbss:0x801355B8; // type:object size:0x4 scope:local data:4byte +gnHeapTakeCacheCount = .sbss:0x801355BC; // type:object size:0x4 scope:local data:4byte +gnSizeHeap = .sbss:0x801355C0; // type:object size:0x4 scope:global data:4byte +gpListData = .sbss:0x801355C8; // type:object size:0x4 scope:local data:4byte +gpCode = .sbss:0x801355D0; // type:object size:0x4 scope:local +gButtonDownToggle = .sbss:0x801355D4; // type:object size:0x4 scope:global data:4byte +gDVDResetToggle = .sbss:0x801355D8; // type:object size:0x4 scope:global data:4byte +toggle$41 = .sbss:0x801355DC; // type:object size:0x4 scope:local data:4byte +nPrevButton$471 = .sbss:0x801355E0; // type:object size:0x4 scope:local data:4byte +nCurrButton$472 = .sbss:0x801355E4; // type:object size:0x4 scope:local data:4byte +gbReset = .sbss:0x801355E8; // type:object size:0x4 scope:global data:4byte +gnTickReset = .sbss:0x801355EC; // type:object size:0x4 scope:global data:4byte +gPreviousIPLSetting = .sbss:0x801355F0; // type:object size:0x4 scope:global data:4byte +gPreviousForceMenuSetting = .sbss:0x801355F4; // type:object size:0x4 scope:global data:4byte +gPreviousAllowResetSetting = .sbss:0x801355F8; // type:object size:0x4 scope:global data:4byte +gbDisplayedError = .sbss:0x801355FC; // type:object size:0x4 scope:global data:4byte +gpSystem = .sbss:0x80135600; // type:object size:0x4 scope:global data:4byte +gpSound = .sbss:0x80135604; // type:object size:0x4 scope:global data:4byte +gpFrame = .sbss:0x80135608; // type:object size:0x4 scope:global data:4byte +gBufferP = .sbss:0x80135610; // type:object size:0x4 scope:global data:4byte +Initialized = .sbss:0x80135618; // type:object size:0x4 scope:local data:4byte +PrepareReadyMessage = .sbss:0x8013561C; // type:object size:0x4 scope:local +OldVIPostCallback = .sbss:0x80135620; // type:object size:0x4 scope:local data:4byte +SoundBufferIndex = .sbss:0x80135624; // type:object size:0x4 scope:local data:4byte +OldAIDCallback = .sbss:0x80135628; // type:object size:0x4 scope:local data:4byte +LastAudioBuffer = .sbss:0x8013562C; // type:object size:0x4 scope:local data:4byte +CurAudioBuffer = .sbss:0x80135630; // type:object size:0x4 scope:local data:4byte +AudioSystem = .sbss:0x80135634; // type:object size:0x4 scope:local data:4byte +AudioDecodeThreadCreated = .sbss:0x80135638; // type:object size:0x4 scope:local data:4byte +ReadThreadCreated = .sbss:0x80135640; // type:object size:0x4 scope:global data:4byte +gMovieErrorToggle = .sbss:0x80135644; // type:object size:0x4 scope:global data:4byte +toggle_184 = .sbss:0x80135648; // type:object size:0x4 scope:global data:4byte +gbReset_thpread = .sbss:0x8013564C; // type:object size:0x4 scope:global data:4byte +gnTickReset_thpread = .sbss:0x80135650; // type:object size:0x4 scope:global data:4byte +VideoDecodeThreadCreated = .sbss:0x80135658; // type:object size:0x4 scope:local data:4byte +First = .sbss:0x8013565C; // type:object size:0x4 scope:local data:4byte +currentIdx = .sbss:0x80135660; // type:object size:0x4 scope:local data:4byte +yes = .sbss:0x80135664; // type:object size:0x4 scope:local data:4byte +prevMenuEntry = .sbss:0x80135668; // type:object size:0x4 scope:local data:4byte +nextMenuEntry = .sbss:0x8013566C; // type:object size:0x4 scope:local data:4byte +toggle2 = .sbss:0x80135670; // type:object size:0x4 scope:local data:4byte +checkFailCount = .sbss:0x80135674; // type:object size:0x4 scope:local data:4byte +bWrite2Card = .sbss:0x80135678; // type:object size:0x4 scope:local data:4byte +gpBufferFunction = .sbss:0x80135680; // type:object size:0x4 scope:local data:4byte +ganDataCode = .sbss:0x80135684; // type:object size:0x4 scope:local data:4byte +gbFrameValid = .sbss:0x80135688; // type:object size:0x4 scope:local data:4byte +gbFrameBegin = .sbss:0x8013568C; // type:object size:0x4 scope:local data:4byte +snScissorChanged = .sbss:0x80135690; // type:object size:0x4 scope:local data:4byte +snScissorXOrig = .sbss:0x80135694; // type:object size:0x4 scope:local data:4byte +snScissorYOrig = .sbss:0x80135698; // type:object size:0x4 scope:local data:4byte +snScissorWidth = .sbss:0x8013569C; // type:object size:0x4 scope:local data:4byte +snScissorHeight = .sbss:0x801356A0; // type:object size:0x4 scope:local data:4byte +sCopyFrameSyncReceived = .sbss:0x801356A4; // type:object size:0x4 scope:local data:4byte +sSpecialZeldaHackON = .sbss:0x801356A8; // type:object size:0x1 scope:local data:byte +sDestinationBuffer = .sbss:0x801356AC; // type:object size:0x4 scope:local data:4byte +sSrcBuffer = .sbss:0x801356B0; // type:object size:0x4 scope:local data:4byte +sNumAddr = .sbss:0x801356B4; // type:object size:0x4 scope:local data:4byte +gHackCreditsColor = .sbss:0x801356B8; // type:object size:0x4 scope:local data:4byte +gNoSwapBuffer = .sbss:0x801356BC; // type:object size:0x4 scope:global data:4byte +gnCountMapHack = .sbss:0x801356C0; // type:object size:0x4 scope:global data:4byte +nCounter = .sbss:0x801356C4; // type:object size:0x4 scope:global data:4byte +bSkip = .sbss:0x801356C8; // type:object size:0x4 scope:global data:4byte +nLastFrame = .sbss:0x801356CC; // type:object size:0x4 scope:global data:4byte +nCopyFrame = .sbss:0x801356D0; // type:object size:0x4 scope:global data:4byte +gnFlagZelda = .sbss:0x801356D8; // type:object size:0x4 scope:global data:4byte +gHeapTree = .sbss:0x801356E0; // type:object size:0x4 scope:local data:4byte +cpuCompile_DSLLV_function = .sbss:0x801356E4; // type:object size:0x4 scope:local data:4byte +cpuCompile_DSRLV_function = .sbss:0x801356E8; // type:object size:0x4 scope:local data:4byte +cpuCompile_DSRAV_function = .sbss:0x801356EC; // type:object size:0x4 scope:local data:4byte +cpuCompile_DMULT_function = .sbss:0x801356F0; // type:object size:0x4 scope:local data:4byte +cpuCompile_DMULTU_function = .sbss:0x801356F4; // type:object size:0x4 scope:local data:4byte +cpuCompile_DDIV_function = .sbss:0x801356F8; // type:object size:0x4 scope:local data:4byte +cpuCompile_DDIVU_function = .sbss:0x801356FC; // type:object size:0x4 scope:local data:4byte +cpuCompile_DADD_function = .sbss:0x80135700; // type:object size:0x4 scope:local data:4byte +cpuCompile_DADDU_function = .sbss:0x80135704; // type:object size:0x4 scope:local data:4byte +cpuCompile_DSUB_function = .sbss:0x80135708; // type:object size:0x4 scope:local data:4byte +cpuCompile_DSUBU_function = .sbss:0x8013570C; // type:object size:0x4 scope:local data:4byte +cpuCompile_S_SQRT_function = .sbss:0x80135710; // type:object size:0x4 scope:local data:4byte +cpuCompile_D_SQRT_function = .sbss:0x80135714; // type:object size:0x4 scope:local data:4byte +cpuCompile_W_CVT_SD_function = .sbss:0x80135718; // type:object size:0x4 scope:local data:4byte +cpuCompile_L_CVT_SD_function = .sbss:0x8013571C; // type:object size:0x4 scope:local data:4byte +cpuCompile_CEIL_W_function = .sbss:0x80135720; // type:object size:0x4 scope:local data:4byte +cpuCompile_FLOOR_W_function = .sbss:0x80135724; // type:object size:0x4 scope:local data:4byte +cpuCompile_ROUND_W_function = .sbss:0x80135728; // type:object size:0x4 scope:local data:4byte +cpuCompile_TRUNC_W_function = .sbss:0x8013572C; // type:object size:0x4 scope:local data:4byte +cpuCompile_LB_function = .sbss:0x80135730; // type:object size:0x4 scope:local data:4byte +cpuCompile_LH_function = .sbss:0x80135734; // type:object size:0x4 scope:local data:4byte +cpuCompile_LW_function = .sbss:0x80135738; // type:object size:0x4 scope:local data:4byte +cpuCompile_LBU_function = .sbss:0x8013573C; // type:object size:0x4 scope:local data:4byte +cpuCompile_LHU_function = .sbss:0x80135740; // type:object size:0x4 scope:local data:4byte +cpuCompile_SB_function = .sbss:0x80135744; // type:object size:0x4 scope:local data:4byte +cpuCompile_SH_function = .sbss:0x80135748; // type:object size:0x4 scope:local data:4byte +cpuCompile_SW_function = .sbss:0x8013574C; // type:object size:0x4 scope:local data:4byte +cpuCompile_LDC_function = .sbss:0x80135750; // type:object size:0x4 scope:local data:4byte +cpuCompile_SDC_function = .sbss:0x80135754; // type:object size:0x4 scope:local data:4byte +cpuCompile_LWL_function = .sbss:0x80135758; // type:object size:0x4 scope:local data:4byte +cpuCompile_LWR_function = .sbss:0x8013575C; // type:object size:0x4 scope:local data:4byte +gbProgress = .sbss:0x80135760; // type:object size:0x4 scope:local data:4byte +gpImageBack = .sbss:0x80135764; // type:object size:0x4 scope:local data:4byte +iImage = .sbss:0x80135768; // type:object size:0x4 scope:local data:4byte +nCount$25 = .sbss:0x80135770; // type:object size:0x4 scope:local data:4byte +nBlurCount$26 = .sbss:0x80135774; // type:object size:0x4 scope:local data:4byte +nNoteCount$27 = .sbss:0x80135778; // type:object size:0x4 scope:local data:4byte +nZCount$28 = .sbss:0x8013577C; // type:object size:0x4 scope:local data:4byte +nZBufferCount$29 = .sbss:0x80135780; // type:object size:0x4 scope:local data:4byte +counter = .sbss:0x80135788; // type:object size:0x4 scope:local data:4byte +scissorX0 = .sbss:0x8013578C; // type:object size:0x2 scope:local data:2byte +scissorY0 = .sbss:0x8013578E; // type:object size:0x2 scope:local data:2byte +flagBilerp = .sbss:0x80135790; // type:object size:0x1 scope:local data:byte +rdpSetTimg_w0 = .sbss:0x80135794; // type:object size:0x4 scope:local data:4byte +rdpSetTile_w0 = .sbss:0x80135798; // type:object size:0x4 scope:local data:4byte +tmemSliceWmax = .sbss:0x8013579C; // type:object size:0x2 scope:local data:2byte +imageSrcWsize = .sbss:0x8013579E; // type:object size:0x2 scope:local data:2byte +flagSplit = .sbss:0x801357A0; // type:object size:0x2 scope:local data:2byte +imagePtrX0 = .sbss:0x801357A2; // type:object size:0x2 scope:local data:2byte +imageTop = .sbss:0x801357A4; // type:object size:0x4 scope:local data:4byte +tmemSrcLines = .sbss:0x801357A8; // type:object size:0x2 scope:local data:2byte +BootInfo = .sbss:0x801357B0; // type:object size:0x4 scope:local data:4byte +BI2DebugFlag = .sbss:0x801357B4; // type:object size:0x4 scope:local data:4byte +BI2DebugFlagHolder = .sbss:0x801357B8; // type:object size:0x4 scope:local data:4byte +__OSIsGcam = .sbss:0x801357BC; // type:object size:0x4 scope:weak data:4byte +ZeroF = .sbss:0x801357C0; // type:object size:0x8 scope:local data:double +ZeroPS = .sbss:0x801357C8; // type:object size:0x8 scope:local +AreWeInitialized = .sbss:0x801357D0; // type:object size:0x4 scope:local data:4byte +OSExceptionTable = .sbss:0x801357D4; // type:object size:0x4 scope:local data:4byte +__OSSavedRegionEnd = .sbss:0x801357D8; // type:object size:0x4 scope:global data:4byte +__OSSavedRegionStart = .sbss:0x801357DC; // type:object size:0x4 scope:global data:4byte +__OSInIPL = .sbss:0x801357E0; // type:object size:0x4 scope:global data:4byte +__OSStartTime = .sbss:0x801357E8; // type:object size:0x8 scope:global data:4byte +AlarmQueue = .sbss:0x801357F0; // type:object size:0x8 scope:local data:4byte +HeapArray = .sbss:0x801357F8; // type:object size:0x4 scope:global data:4byte +NumHeaps = .sbss:0x801357FC; // type:object size:0x4 scope:global data:4byte +ArenaStart = .sbss:0x80135800; // type:object size:0x4 scope:global data:4byte +ArenaEnd = .sbss:0x80135804; // type:object size:0x4 scope:global data:4byte +__OSArenaHi = .sbss:0x80135808; // type:object size:0x4 scope:global data:4byte +InterruptHandlerTable = .sbss:0x80135810; // type:object size:0x4 scope:local data:4byte +__OSLastInterruptSrr0 = .sbss:0x80135814; // type:object size:0x4 scope:global data:4byte +__OSLastInterrupt = .sbss:0x80135818; // type:object size:0x2 scope:global data:2byte +__OSLastInterruptTime = .sbss:0x80135820; // type:object size:0x8 scope:global data:4byte +SaveStart = .sbss:0x80135828; // type:object size:0x4 scope:local data:4byte +SaveEnd = .sbss:0x8013582C; // type:object size:0x4 scope:local data:4byte +Prepared = .sbss:0x80135830; // type:object size:0x4 scope:local data:4byte +ResetFunctionQueue = .sbss:0x80135838; // type:object size:0x8 scope:local data:4byte +bootThisDol = .sbss:0x80135840; // type:object size:0x4 scope:local data:4byte +ResetCallback = .sbss:0x80135848; // type:object size:0x4 scope:local data:4byte +Down = .sbss:0x8013584C; // type:object size:0x4 scope:local data:4byte +LastState = .sbss:0x80135850; // type:object size:0x4 scope:local data:4byte +HoldUp = .sbss:0x80135858; // type:object size:0x8 scope:local data:4byte +HoldDown = .sbss:0x80135860; // type:object size:0x8 scope:local data:4byte +RunQueueBits = .sbss:0x80135868; // type:object size:0x4 scope:local data:4byte +RunQueueHint = .sbss:0x8013586C; // type:object size:0x4 scope:local data:4byte +Reschedule = .sbss:0x80135870; // type:object size:0x4 scope:local data:4byte +Debug_BBA = .sbss:0x80135878; // type:object size:0x1 scope:local data:byte +IDSerialPort1 = .sbss:0x80135880; // type:object size:0x4 scope:local data:4byte +Chan = .sbss:0x80135888; // type:object size:0x4 scope:local data:4byte +Dev = .sbss:0x8013588C; // type:object size:0x4 scope:local data:4byte +Enabled = .sbss:0x80135890; // type:object size:0x4 scope:local data:4byte +BarnacleEnabled = .sbss:0x80135894; // type:object size:0x4 scope:local data:4byte +cmdTypeAndStatus$78 = .sbss:0x80135898; // type:object size:0x4 scope:local +cmdTypeAndStatus$372 = .sbss:0x8013589C; // type:object size:0x4 scope:local +__PADFixBits = .sbss:0x801358A0; // type:object size:0x4 scope:global data:4byte +SamplingRate = .sbss:0x801358A8; // type:object size:0x4 scope:local data:4byte +IsInitialized = .sbss:0x801358B0; // type:object size:0x4 scope:local data:4byte +retraceCount = .sbss:0x801358B4; // type:object size:0x4 scope:local data:4byte +flushFlag = .sbss:0x801358B8; // type:object size:0x4 scope:local data:4byte +retraceQueue = .sbss:0x801358BC; // type:object size:0x8 scope:local +PreCB = .sbss:0x801358C4; // type:object size:0x4 scope:local data:4byte +PostCB = .sbss:0x801358C8; // type:object size:0x4 scope:local data:4byte +PositionCallback = .sbss:0x801358CC; // type:object size:0x4 scope:local data:4byte +encoderType = .sbss:0x801358D0; // type:object size:0x4 scope:local data:4byte +displayOffsetH = .sbss:0x801358D4; // type:object size:0x2 scope:local data:2byte +displayOffsetV = .sbss:0x801358D6; // type:object size:0x2 scope:local data:2byte +changeMode = .sbss:0x801358D8; // type:object size:0x4 scope:local data:4byte +changed = .sbss:0x801358E0; // type:object size:0x8 scope:local data:4byte +shdwChangeMode = .sbss:0x801358E8; // type:object size:0x4 scope:local data:4byte +shdwChanged = .sbss:0x801358F0; // type:object size:0x8 scope:local data:4byte +CurrTiming = .sbss:0x801358F8; // type:object size:0x4 scope:local data:4byte +CurrTvMode = .sbss:0x801358FC; // type:object size:0x4 scope:local data:4byte +NextBufAddr = .sbss:0x80135900; // type:object size:0x4 scope:local data:4byte +CurrBufAddr = .sbss:0x80135904; // type:object size:0x4 scope:local data:4byte +FBSet = .sbss:0x80135908; // type:object size:0x4 scope:local data:4byte +message$343 = .sbss:0x8013590C; // type:object size:0x4 scope:local data:4byte +__DBInterface = .sbss:0x80135910; // type:object size:0x4 scope:global data:4byte +DBVerbose = .sbss:0x80135914; // type:object size:0x4 scope:global data:4byte +__piReg = .sbss:0x80135918; // type:object size:0x4 scope:global data:4byte +__cpReg = .sbss:0x8013591C; // type:object size:0x4 scope:global data:4byte +__peReg = .sbss:0x80135920; // type:object size:0x4 scope:global data:4byte +__memReg = .sbss:0x80135924; // type:object size:0x4 scope:global data:4byte +peCount$35 = .sbss:0x80135928; // type:object size:0x4 scope:local data:4byte +time$36 = .sbss:0x80135930; // type:object size:0x8 scope:local data:4byte +calledOnce$37 = .sbss:0x80135938; // type:object size:0x4 scope:local data:4byte +resetFuncRegistered$70 = .sbss:0x8013593C; // type:object size:0x4 scope:local data:4byte +CPUFifo = .sbss:0x80135940; // type:object size:0x4 scope:local data:4byte +GPFifo = .sbss:0x80135944; // type:object size:0x4 scope:local data:4byte +__GXCurrentThread = .sbss:0x80135948; // type:object size:0x4 scope:local data:4byte +CPGPLinked = .sbss:0x8013594C; // type:object size:0x1 scope:local data:byte +GXOverflowSuspendInProgress = .sbss:0x80135950; // type:object size:0x4 scope:local data:4byte +BreakPointCB = .sbss:0x80135954; // type:object size:0x4 scope:local data:4byte +__GXOverflowCount = .sbss:0x80135958; // type:object size:0x4 scope:local data:4byte +TokenCB = .sbss:0x80135960; // type:object size:0x4 scope:local data:4byte +DrawDoneCB = .sbss:0x80135964; // type:object size:0x4 scope:local data:4byte +DrawDone = .sbss:0x80135968; // type:object size:0x1 scope:local data:byte +FinishQueue = .sbss:0x8013596C; // type:object size:0x8 scope:local +Initialized = .sbss:0x80135978; // type:object size:0x4 scope:local data:4byte +EnabledBits = .sbss:0x8013597C; // type:object size:0x4 scope:local data:4byte +ResettingBits = .sbss:0x80135980; // type:object size:0x4 scope:local data:4byte +RecalibrateBits = .sbss:0x80135984; // type:object size:0x4 scope:local data:4byte +WaitingBits = .sbss:0x80135988; // type:object size:0x4 scope:local data:4byte +CheckingBits = .sbss:0x8013598C; // type:object size:0x4 scope:local data:4byte +PendingBits = .sbss:0x80135990; // type:object size:0x4 scope:local data:4byte +BarrelBits = .sbss:0x80135994; // type:object size:0x4 scope:local data:4byte +SamplingCallback = .sbss:0x80135998; // type:object size:0x4 scope:local data:4byte +recalibrated$388 = .sbss:0x8013599C; // type:object size:0x4 scope:local data:4byte +__PADSpec = .sbss:0x801359A0; // type:object size:0x4 scope:global data:4byte +StopAtNextInt = .sbss:0x801359A8; // type:object size:0x4 scope:local data:4byte +LastLength = .sbss:0x801359AC; // type:object size:0x4 scope:local data:4byte +Callback = .sbss:0x801359B0; // type:object size:0x4 scope:local data:4byte +ResetCoverCallback = .sbss:0x801359B4; // type:object size:0x4 scope:local data:4byte +LastResetEnd = .sbss:0x801359B8; // type:object size:0x8 scope:local data:4byte +ResetOccurred = .sbss:0x801359C0; // type:object size:0x4 scope:local data:4byte +WaitingCoverClose = .sbss:0x801359C4; // type:object size:0x4 scope:local data:4byte +Breaking = .sbss:0x801359C8; // type:object size:0x4 scope:local data:4byte +WorkAroundType = .sbss:0x801359CC; // type:object size:0x4 scope:local data:4byte +WorkAroundSeekLocation = .sbss:0x801359D0; // type:object size:0x4 scope:local data:4byte +LastReadFinished = .sbss:0x801359D8; // type:object size:0x8 scope:local data:4byte +LastReadIssued = .sbss:0x801359E0; // type:object size:0x8 scope:local data:4byte +LastCommandWasRead = .sbss:0x801359E8; // type:object size:0x4 scope:local data:4byte +NextCommandNumber = .sbss:0x801359EC; // type:object size:0x4 scope:local data:4byte +BootInfo = .sbss:0x801359F0; // type:object size:0x4 scope:local data:4byte +FstStart = .sbss:0x801359F4; // type:object size:0x4 scope:local data:4byte +FstStringStart = .sbss:0x801359F8; // type:object size:0x4 scope:local data:4byte +MaxEntryNum = .sbss:0x801359FC; // type:object size:0x4 scope:local data:4byte +currentDirectory = .sbss:0x80135A00; // type:object size:0x4 scope:local data:4byte +__DVDLongFileNameFlag = .sbss:0x80135A04; // type:object size:0x4 scope:global data:4byte +__DVDThreadQueue = .sbss:0x80135A08; // type:object size:0x8 scope:global +executing = .sbss:0x80135A10; // type:object size:0x4 scope:local data:4byte +IDShouldBe = .sbss:0x80135A14; // type:object size:0x4 scope:local data:4byte +bootInfo = .sbss:0x80135A18; // type:object size:0x4 scope:local data:4byte +PauseFlag = .sbss:0x80135A1C; // type:object size:0x4 scope:local data:4byte +PausingFlag = .sbss:0x80135A20; // type:object size:0x4 scope:local data:4byte +AutoFinishing = .sbss:0x80135A24; // type:object size:0x4 scope:local data:4byte +FatalErrorFlag = .sbss:0x80135A28; // type:object size:0x4 scope:local data:4byte +CurrCommand = .sbss:0x80135A2C; // type:object size:0x4 scope:local data:4byte +Canceling = .sbss:0x80135A30; // type:object size:0x4 scope:local data:4byte +CancelCallback = .sbss:0x80135A34; // type:object size:0x4 scope:local data:4byte +ResumeFromHere = .sbss:0x80135A38; // type:object size:0x4 scope:local data:4byte +CancelLastError = .sbss:0x80135A3C; // type:object size:0x4 scope:local data:4byte +LastError = .sbss:0x80135A40; // type:object size:0x4 scope:local data:4byte +NumInternalRetry = .sbss:0x80135A44; // type:object size:0x4 scope:local data:4byte +ResetRequired = .sbss:0x80135A48; // type:object size:0x4 scope:local data:4byte +FirstTimeInBootrom = .sbss:0x80135A4C; // type:object size:0x4 scope:local data:4byte +DVDInitialized = .sbss:0x80135A50; // type:object size:0x4 scope:local data:4byte +LastState = .sbss:0x80135A54; // type:object size:0x4 scope:global data:4byte +FatalFunc = .sbss:0x80135A58; // type:object size:0x4 scope:local data:4byte +status = .sbss:0x80135A60; // type:object size:0x4 scope:local data:4byte +bb2 = .sbss:0x80135A64; // type:object size:0x4 scope:local data:4byte +idTmp = .sbss:0x80135A68; // type:object size:0x4 scope:local data:4byte +DefaultFifo = .sbss:0x80135A70; // type:object size:0x4 scope:local data:4byte +DefaultFifoObj = .sbss:0x80135A74; // type:object size:0x4 scope:local data:4byte +rmode = .sbss:0x80135A78; // type:object size:0x4 scope:local data:4byte +allocatedFrameBufferSize = .sbss:0x80135A7C; // type:object size:0x4 scope:local data:4byte +GPHangWorkaround = .sbss:0x80135A80; // type:object size:0x4 scope:local data:4byte +FrameCount = .sbss:0x80135A84; // type:object size:0x4 scope:local data:4byte +FrameMissThreshold = .sbss:0x80135A88; // type:object size:0x4 scope:local data:4byte +DemoCurrentBuffer = .sbss:0x80135A8C; // type:object size:0x4 scope:global data:4byte +DemoFrameBuffer2 = .sbss:0x80135A90; // type:object size:0x4 scope:global data:4byte +DemoFrameBuffer1 = .sbss:0x80135A94; // type:object size:0x4 scope:global data:4byte +fontShift = .sbss:0x80135A98; // type:object size:0x4 scope:local data:4byte +DemoNumValidPads = .sbss:0x80135AA0; // type:object size:0x4 scope:global data:4byte +DemoStatEnable = .sbss:0x80135AA8; // type:object size:0x1 scope:global data:byte +DemoStat = .sbss:0x80135AAC; // type:object size:0x4 scope:local data:4byte +DemoStatIndx = .sbss:0x80135AB0; // type:object size:0x4 scope:local data:4byte +DemoStatMaxIndx = .sbss:0x80135AB4; // type:object size:0x4 scope:local data:4byte +DemoStatClocks = .sbss:0x80135AB8; // type:object size:0x4 scope:local data:4byte +DemoStatDisp = .sbss:0x80135ABC; // type:object size:0x4 scope:local data:4byte +topPixIn = .sbss:0x80135AC0; // type:object size:0x4 scope:local data:4byte +topPixOut = .sbss:0x80135AC4; // type:object size:0x4 scope:local data:4byte +botPixIn = .sbss:0x80135AC8; // type:object size:0x4 scope:local data:4byte +botPixOut = .sbss:0x80135ACC; // type:object size:0x4 scope:local data:4byte +clrPixIn = .sbss:0x80135AD0; // type:object size:0x4 scope:local data:4byte +copyClks = .sbss:0x80135AD4; // type:object size:0x4 scope:local data:4byte +vcCheck = .sbss:0x80135AD8; // type:object size:0x4 scope:local data:4byte +vcMiss = .sbss:0x80135ADC; // type:object size:0x4 scope:local data:4byte +vcStall = .sbss:0x80135AE0; // type:object size:0x4 scope:local data:4byte +cpReq = .sbss:0x80135AE4; // type:object size:0x4 scope:local data:4byte +tcReq = .sbss:0x80135AE8; // type:object size:0x4 scope:local data:4byte +cpuRdReq = .sbss:0x80135AEC; // type:object size:0x4 scope:local data:4byte +cpuWrReq = .sbss:0x80135AF0; // type:object size:0x4 scope:local data:4byte +dspReq = .sbss:0x80135AF4; // type:object size:0x4 scope:local data:4byte +ioReq = .sbss:0x80135AF8; // type:object size:0x4 scope:local data:4byte +viReq = .sbss:0x80135AFC; // type:object size:0x4 scope:local data:4byte +peReq = .sbss:0x80135B00; // type:object size:0x4 scope:local data:4byte +rfReq = .sbss:0x80135B04; // type:object size:0x4 scope:local data:4byte +fiReq = .sbss:0x80135B08; // type:object size:0x4 scope:local data:4byte +__AIS_Callback = .sbss:0x80135B10; // type:object size:0x4 scope:local data:4byte +__AID_Callback = .sbss:0x80135B14; // type:object size:0x4 scope:local data:4byte +__CallbackStack = .sbss:0x80135B18; // type:object size:0x4 scope:local data:4byte +__OldStack = .sbss:0x80135B1C; // type:object size:0x4 scope:local data:4byte +__AI_init_flag = .sbss:0x80135B20; // type:object size:0x4 scope:local data:4byte +__AID_Active = .sbss:0x80135B24; // type:object size:0x4 scope:local data:4byte +bound_32KHz = .sbss:0x80135B28; // type:object size:0x8 scope:local data:4byte +bound_48KHz = .sbss:0x80135B30; // type:object size:0x8 scope:local data:4byte +min_wait = .sbss:0x80135B38; // type:object size:0x8 scope:local data:4byte +max_wait = .sbss:0x80135B40; // type:object size:0x8 scope:local data:4byte +buffer = .sbss:0x80135B48; // type:object size:0x8 scope:local data:4byte +__AR_Callback = .sbss:0x80135B50; // type:object size:0x4 scope:local data:4byte +__AR_Size = .sbss:0x80135B54; // type:object size:0x4 scope:local data:4byte +__AR_InternalSize = .sbss:0x80135B58; // type:object size:0x4 scope:local data:4byte +__AR_ExpansionSize = .sbss:0x80135B5C; // type:object size:0x4 scope:local data:4byte +__AR_StackPointer = .sbss:0x80135B60; // type:object size:0x4 scope:local data:4byte +__AR_FreeBlocks = .sbss:0x80135B64; // type:object size:0x4 scope:local data:4byte +__AR_BlockLength = .sbss:0x80135B68; // type:object size:0x4 scope:local data:4byte +__AR_init_flag = .sbss:0x80135B6C; // type:object size:0x4 scope:local data:4byte +__DSP_init_flag = .sbss:0x80135B70; // type:object size:0x4 scope:local data:4byte +__DSP_rude_task_pending = .sbss:0x80135B78; // type:object size:0x4 scope:global data:4byte +__DSP_rude_task = .sbss:0x80135B7C; // type:object size:0x4 scope:global data:4byte +__DSP_tmp_task = .sbss:0x80135B80; // type:object size:0x4 scope:global data:4byte +__DSP_last_task = .sbss:0x80135B84; // type:object size:0x4 scope:global data:4byte +__DSP_first_task = .sbss:0x80135B88; // type:object size:0x4 scope:global data:4byte +__DSP_curr_task = .sbss:0x80135B8C; // type:object size:0x4 scope:global data:4byte +__CARDEncode = .sbss:0x80135B90; // type:object size:0x2 scope:local data:2byte +Ydchuff = .sbss:0x80135BA0; // type:object size:0x4 scope:local data:4byte +Udchuff = .sbss:0x80135BC0; // type:object size:0x4 scope:local data:4byte +Vdchuff = .sbss:0x80135BE0; // type:object size:0x4 scope:local data:4byte +Yachuff = .sbss:0x80135C00; // type:object size:0x4 scope:local data:4byte +Uachuff = .sbss:0x80135C20; // type:object size:0x4 scope:local data:4byte +Vachuff = .sbss:0x80135C40; // type:object size:0x4 scope:local data:4byte +__THPHuffmanBits = .sbss:0x80135C44; // type:object size:0x4 scope:local data:4byte +__THPHuffmanSizeTab = .sbss:0x80135C48; // type:object size:0x4 scope:local data:4byte +__THPHuffmanCodeTab = .sbss:0x80135C4C; // type:object size:0x4 scope:local data:4byte +Gbase = .sbss:0x80135C60; // type:object size:0x4 scope:local data:4byte +Gwid = .sbss:0x80135C80; // type:object size:0x4 scope:local data:4byte +Gq = .sbss:0x80135CA0; // type:object size:0x4 scope:local data:4byte +__THPOldGQR5 = .sbss:0x80135CA4; // type:object size:0x4 scope:local data:4byte +__THPOldGQR6 = .sbss:0x80135CA8; // type:object size:0x4 scope:local data:4byte +__THPWorkArea = .sbss:0x80135CAC; // type:object size:0x4 scope:local data:4byte +__THPInfo = .sbss:0x80135CB0; // type:object size:0x4 scope:local data:4byte +__THPInitFlag = .sbss:0x80135CB4; // type:object size:0x4 scope:local data:4byte +__global_destructor_chain = .sbss:0x80135CB8; // type:object size:0x4 scope:global data:4byte +__aborting = .sbss:0x80135CC0; // type:object size:0x4 scope:global data:4byte +atexit_curr_func = .sbss:0x80135CC4; // type:object size:0x4 scope:local data:4byte +__atexit_curr_func = .sbss:0x80135CC8; // type:object size:0x4 scope:local data:4byte +__stdio_exit = .sbss:0x80135CCC; // type:object size:0x4 scope:global data:4byte +__console_exit = .sbss:0x80135CD0; // type:object size:0x4 scope:global data:4byte +errno = .sbss:0x80135CD8; // type:object size:0x4 scope:global data:4byte +initialized$16 = .sbss:0x80135CE0; // type:object size:0x4 scope:local data:4byte +MTRCallback = .sbss:0x80135CE8; // type:object size:0x4 scope:local data:4byte +DBGCallback = .sbss:0x80135CEC; // type:object size:0x4 scope:local data:4byte +SendMailData = .sbss:0x80135CF0; // type:object size:0x4 scope:local data:4byte +RecvDataLeng = .sbss:0x80135CF4; // type:object size:0x4 scope:local data:4byte +pEXIInputFlag = .sbss:0x80135CF8; // type:object size:0x4 scope:local data:4byte +EXIInputFlag = .sbss:0x80135CFC; // type:object size:0x1 scope:local data:byte +D_80135D00 = .sdata2:0x80135D00; // type:object size:0x4 scope:local data:4byte +@71 = .sdata2:0x80135D04; // type:object size:0x4 scope:local data:float +@72 = .sdata2:0x80135D08; // type:object size:0x4 scope:local data:float +@74 = .sdata2:0x80135D10; // type:object size:0x8 scope:local data:double +@2 = .sdata2:0x80135D18; // type:object size:0x4 scope:local data:4byte +@3 = .sdata2:0x80135D1C; // type:object size:0x4 scope:local data:4byte +@4 = .sdata2:0x80135D20; // type:object size:0x4 scope:local data:4byte +@743 = .sdata2:0x80135D24; // type:object size:0x4 scope:local data:float +@744 = .sdata2:0x80135D28; // type:object size:0x4 scope:local data:float +@745 = .sdata2:0x80135D2C; // type:object size:0x4 scope:local data:float +@827 = .sdata2:0x80135D30; // type:object size:0x4 scope:local data:float +@829 = .sdata2:0x80135D38; // type:object size:0x8 scope:local data:double +@883 = .sdata2:0x80135D40; // type:object size:0x4 scope:local data:float +@885 = .sdata2:0x80135D48; // type:object size:0x8 scope:local data:double +@983 = .sdata2:0x80135D50; // type:object size:0x4 scope:local data:float +@984 = .sdata2:0x80135D54; // type:object size:0x4 scope:local data:float +@985 = .sdata2:0x80135D58; // type:object size:0x4 scope:local data:float +@1734 = .sdata2:0x80135D5C; // type:object size:0x4 scope:local data:float +@1735 = .sdata2:0x80135D60; // type:object size:0x4 scope:local data:float +@1736 = .sdata2:0x80135D64; // type:object size:0x4 scope:local data:float +@1737 = .sdata2:0x80135D68; // type:object size:0x4 scope:local data:float +@1738 = .sdata2:0x80135D6C; // type:object size:0x4 scope:local data:float +@48 = .sdata2:0x80135D70; // type:object size:0x4 scope:local data:float +@271 = .sdata2:0x80135D74; // type:object size:0x4 scope:local data:float +@4 = .sdata2:0x80135D78; // type:object size:0x8 scope:local data:4byte +@7 = .sdata2:0x80135D80; // type:object size:0x4 scope:local data:4byte +@10 = .sdata2:0x80135D84; // type:object size:0x4 scope:local data:4byte +@13 = .sdata2:0x80135D88; // type:object size:0x4 scope:local data:4byte +@32 = .sdata2:0x80135D8C; // type:object size:0x4 scope:local data:float +@33 = .sdata2:0x80135D90; // type:object size:0x4 scope:local data:float +@34 = .sdata2:0x80135D94; // type:object size:0x4 scope:local data:float +@36 = .sdata2:0x80135D98; // type:object size:0x8 scope:local data:double +@2 = .sdata2:0x80135DA0; // type:object size:0x4 scope:local data:4byte +@3 = .sdata2:0x80135DA4; // type:object size:0x4 scope:local data:4byte +@4 = .sdata2:0x80135DA8; // type:object size:0x4 scope:local data:4byte +@160 = .sdata2:0x80135DAC; // type:object size:0x4 scope:local data:float +@162 = .sdata2:0x80135DB0; // type:object size:0x8 scope:local data:double +@262 = .sdata2:0x80135DB8; // type:object size:0x4 scope:local data:float +@263 = .sdata2:0x80135DBC; // type:object size:0x4 scope:local data:float +@264 = .sdata2:0x80135DC0; // type:object size:0x4 scope:local data:float +@265 = .sdata2:0x80135DC4; // type:object size:0x4 scope:local data:float +@266 = .sdata2:0x80135DC8; // type:object size:0x4 scope:local data:float +@267 = .sdata2:0x80135DCC; // type:object size:0x4 scope:local data:float +@268 = .sdata2:0x80135DD0; // type:object size:0x4 scope:local data:float +@269 = .sdata2:0x80135DD4; // type:object size:0x4 scope:local data:float +D_80135DD8 = .sdata2:0x80135DD8; // type:object size:0x4 scope:local data:float +D_80135DDC = .sdata2:0x80135DDC; // type:object size:0x4 scope:local data:float +D_80135DE0 = .sdata2:0x80135DE0; // type:object size:0x4 scope:local data:float +D_80135DE8 = .sdata2:0x80135DE8; // type:object size:0x8 scope:local data:double +D_80135DF0 = .sdata2:0x80135DF0; // type:object size:0x8 scope:local data:double +D_80135DF8 = .sdata2:0x80135DF8; // type:object size:0x4 scope:local data:float +D_80135E00 = .sdata2:0x80135E00; // type:object size:0x4 scope:local data:float +D_80135E04 = .sdata2:0x80135E04; // type:object size:0x4 scope:local data:float +D_80135E08 = .sdata2:0x80135E08; // type:object size:0x4 scope:local data:float +D_80135E10 = .sdata2:0x80135E10; // type:object size:0x8 scope:local data:double +D_80135E18 = .sdata2:0x80135E18; // type:object size:0x4 scope:local data:float +D_80135E1C = .sdata2:0x80135E1C; // type:object size:0x4 scope:local data:float +D_80135E20 = .sdata2:0x80135E20; // type:object size:0x4 scope:local data:float +D_80135E24 = .sdata2:0x80135E24; // type:object size:0x4 scope:local data:float +D_80135E28 = .sdata2:0x80135E28; // type:object size:0x8 scope:local data:double +D_80135E30 = .sdata2:0x80135E30; // type:object size:0x4 scope:local data:float +D_80135E34 = .sdata2:0x80135E34; // type:object size:0x4 scope:local data:float +D_80135E38 = .sdata2:0x80135E38; // type:object size:0x4 scope:local data:float +D_80135E40 = .sdata2:0x80135E40; // type:object size:0x8 scope:local data:double +D_80135E48 = .sdata2:0x80135E48; // type:object size:0x8 scope:local data:double +D_80135E50 = .sdata2:0x80135E50; // type:object size:0x4 scope:local data:float +D_80135E54 = .sdata2:0x80135E54; // type:object size:0x4 scope:local data:float +D_80135E58 = .sdata2:0x80135E58; // type:object size:0x4 scope:local data:float +D_80135E5C = .sdata2:0x80135E5C; // type:object size:0x4 scope:local data:float +D_80135E60 = .sdata2:0x80135E60; // type:object size:0x4 scope:local data:float +D_80135E64 = .sdata2:0x80135E64; // type:object size:0x4 scope:local data:float +D_80135E68 = .sdata2:0x80135E68; // type:object size:0x4 scope:local data:float +D_80135E6C = .sdata2:0x80135E6C; // type:object size:0x4 scope:local data:float +D_80135E70 = .sdata2:0x80135E70; // type:object size:0x8 scope:local data:double +D_80135E78 = .sdata2:0x80135E78; // type:object size:0x8 scope:local data:double +D_80135E80 = .sdata2:0x80135E80; // type:object size:0x4 scope:local data:float +D_80135E84 = .sdata2:0x80135E84; // type:object size:0x4 scope:local data:float +D_80135E88 = .sdata2:0x80135E88; // type:object size:0x4 scope:local data:float +D_80135E8C = .sdata2:0x80135E8C; // type:object size:0x4 scope:local data:float +D_80135E90 = .sdata2:0x80135E90; // type:object size:0x4 scope:local data:float +D_80135E94 = .sdata2:0x80135E94; // type:object size:0x4 scope:local data:float +D_80135E98 = .sdata2:0x80135E98; // type:object size:0x4 scope:local data:float +D_80135E9C = .sdata2:0x80135E9C; // type:object size:0x4 scope:local data:float +D_80135EA0 = .sdata2:0x80135EA0; // type:object size:0x4 scope:local data:float +D_80135EA4 = .sdata2:0x80135EA4; // type:object size:0x4 scope:local data:float +D_80135EA8 = .sdata2:0x80135EA8; // type:object size:0x4 scope:local data:float +D_80135EAC = .sdata2:0x80135EAC; // type:object size:0x4 scope:local data:float +D_80135EB0 = .sdata2:0x80135EB0; // type:object size:0x4 scope:local data:float +D_80135EB4 = .sdata2:0x80135EB4; // type:object size:0x4 scope:local data:float +D_80135EB8 = .sdata2:0x80135EB8; // type:object size:0x4 scope:local data:float +D_80135EBC = .sdata2:0x80135EBC; // type:object size:0x4 scope:local data:float +D_80135EC0 = .sdata2:0x80135EC0; // type:object size:0x4 scope:local data:float +D_80135EC4 = .sdata2:0x80135EC4; // type:object size:0x4 scope:local data:float +D_80135EC8 = .sdata2:0x80135EC8; // type:object size:0x4 scope:local data:float +D_80135ECC = .sdata2:0x80135ECC; // type:object size:0x4 scope:local data:float +D_80135ED0 = .sdata2:0x80135ED0; // type:object size:0x4 scope:local data:float +D_80135ED4 = .sdata2:0x80135ED4; // type:object size:0x4 scope:local data:float +D_80135ED8 = .sdata2:0x80135ED8; // type:object size:0x4 scope:local data:float +D_80135EDC = .sdata2:0x80135EDC; // type:object size:0x4 scope:local data:float +D_80135EE0 = .sdata2:0x80135EE0; // type:object size:0x4 scope:local data:float +D_80135EE4 = .sdata2:0x80135EE4; // type:object size:0x4 scope:local data:float +D_80135EE8 = .sdata2:0x80135EE8; // type:object size:0x4 scope:local data:float +D_80135EEC = .sdata2:0x80135EEC; // type:object size:0x4 scope:local data:float +D_80135EF0 = .sdata2:0x80135EF0; // type:object size:0x4 scope:local data:float +D_80135EF4 = .sdata2:0x80135EF4; // type:object size:0x4 scope:local data:float +D_80135EF8 = .sdata2:0x80135EF8; // type:object size:0x4 scope:local data:float +D_80135EFC = .sdata2:0x80135EFC; // type:object size:0x4 scope:local data:float +D_80135F00 = .sdata2:0x80135F00; // type:object size:0x4 scope:local data:float +D_80135F04 = .sdata2:0x80135F04; // type:object size:0x4 scope:local data:float +D_80135F08 = .sdata2:0x80135F08; // type:object size:0x4 scope:local data:float +D_80135F0C = .sdata2:0x80135F0C; // type:object size:0x4 scope:local data:float +D_80135F10 = .sdata2:0x80135F10; // type:object size:0x4 scope:local data:float +D_80135F14 = .sdata2:0x80135F14; // type:object size:0x4 scope:local data:float +D_80135F18 = .sdata2:0x80135F18; // type:object size:0x4 scope:local data:float +D_80135F1C = .sdata2:0x80135F1C; // type:object size:0x4 scope:local data:float +D_80135F20 = .sdata2:0x80135F20; // type:object size:0x4 scope:local data:float +D_80135F24 = .sdata2:0x80135F24; // type:object size:0x4 scope:local data:float +D_80135F28 = .sdata2:0x80135F28; // type:object size:0x4 scope:local data:float +D_80135F2C = .sdata2:0x80135F2C; // type:object size:0x4 scope:local data:float +D_80135F30 = .sdata2:0x80135F30; // type:object size:0x4 scope:local data:float +D_80135F34 = .sdata2:0x80135F34; // type:object size:0x4 scope:local data:float +D_80135F38 = .sdata2:0x80135F38; // type:object size:0x4 scope:local data:float +D_80135F3C = .sdata2:0x80135F3C; // type:object size:0x4 scope:local data:float +D_80135F40 = .sdata2:0x80135F40; // type:object size:0x4 scope:local data:float +D_80135F44 = .sdata2:0x80135F44; // type:object size:0x4 scope:local data:float +D_80135F48 = .sdata2:0x80135F48; // type:object size:0x4 scope:local data:float +D_80135F4C = .sdata2:0x80135F4C; // type:object size:0x4 scope:local data:float +D_80135F50 = .sdata2:0x80135F50; // type:object size:0x4 scope:local data:float +D_80135F54 = .sdata2:0x80135F54; // type:object size:0x4 scope:local data:float +D_80135F58 = .sdata2:0x80135F58; // type:object size:0x4 scope:local data:float +D_80135F5C = .sdata2:0x80135F5C; // type:object size:0x4 scope:local data:float +D_80135F60 = .sdata2:0x80135F60; // type:object size:0x4 scope:local data:float +D_80135F64 = .sdata2:0x80135F64; // type:object size:0x4 scope:local data:float +D_80135F68 = .sdata2:0x80135F68; // type:object size:0x4 scope:local data:float +D_80135F6C = .sdata2:0x80135F6C; // type:object size:0x4 scope:local data:float +D_80135F70 = .sdata2:0x80135F70; // type:object size:0x4 scope:local data:float +D_80135F74 = .sdata2:0x80135F74; // type:object size:0x4 scope:local data:float +D_80135F78 = .sdata2:0x80135F78; // type:object size:0x4 scope:local data:float +D_80135F7C = .sdata2:0x80135F7C; // type:object size:0x4 scope:local data:float +D_80135F80 = .sdata2:0x80135F80; // type:object size:0x4 scope:local data:float +D_80135F88 = .sdata2:0x80135F88; // type:object size:0x8 scope:local data:double +@1677 = .sdata2:0x80135F90; // type:object size:0x4 scope:local data:float +@1694 = .sdata2:0x80135F94; // type:object size:0x4 scope:local data:float +@1767 = .sdata2:0x80135F98; // type:object size:0x8 scope:local data:double +D_80135FA0 = .sdata2:0x80135FA0; // type:object size:0x8 scope:local data:double +D_80135FA8 = .sdata2:0x80135FA8; // type:object size:0x8 scope:local data:double +D_80135FB0 = .sdata2:0x80135FB0; // type:object size:0x8 scope:local data:double +D_80135FB8 = .sdata2:0x80135FB8; // type:object size:0x4 scope:local data:float +D_80135FC0 = .sdata2:0x80135FC0; // type:object size:0x8 scope:local data:double +@3506 = .sdata2:0x80135FC8; // type:object size:0x8 scope:local data:double +@849 = .sdata2:0x80135FD0; // type:object size:0x4 scope:local data:float +@851 = .sdata2:0x80135FD8; // type:object size:0x8 scope:local data:double +@853 = .sdata2:0x80135FE0; // type:object size:0x8 scope:local data:double +@1084 = .sdata2:0x80135FE8; // type:object size:0x4 scope:local data:float +@1085 = .sdata2:0x80135FEC; // type:object size:0x4 scope:local data:float +@1086 = .sdata2:0x80135FF0; // type:object size:0x4 scope:local data:float +@1087 = .sdata2:0x80135FF4; // type:object size:0x4 scope:local data:float +@1088 = .sdata2:0x80135FF8; // type:object size:0x4 scope:local data:float +@1089 = .sdata2:0x80135FFC; // type:object size:0x4 scope:local data:float +@1090 = .sdata2:0x80136000; // type:object size:0x4 scope:local data:float +@732 = .sdata2:0x80136008; // type:object size:0x4 scope:local data:float +@733 = .sdata2:0x8013600C; // type:object size:0x4 scope:local data:float +@734 = .sdata2:0x80136010; // type:object size:0x4 scope:local data:float +@735 = .sdata2:0x80136014; // type:object size:0x4 scope:local data:float +@736 = .sdata2:0x80136018; // type:object size:0x4 scope:local data:float +@737 = .sdata2:0x8013601C; // type:object size:0x4 scope:local data:float +@738 = .sdata2:0x80136020; // type:object size:0x4 scope:local data:float +@741 = .sdata2:0x80136028; // type:object size:0x8 scope:local data:double +@743 = .sdata2:0x80136030; // type:object size:0x8 scope:local data:double +D_80136038 = .sdata2:0x80136038; // type:object size:0x4 scope:local data:float +D_8013603C = .sdata2:0x8013603C; // type:object size:0x4 scope:local data:float +D_80136040 = .sdata2:0x80136040; // type:object size:0x4 scope:local data:float +D_80136048 = .sdata2:0x80136048; // type:object size:0x8 scope:local data:double +D_80136050 = .sdata2:0x80136050; // type:object size:0x8 scope:local data:double +D_80136058 = .sdata2:0x80136058; // type:object size:0x4 scope:local data:float +D_8013605C = .sdata2:0x8013605C; // type:object size:0x4 scope:local data:float +D_80136060 = .sdata2:0x80136060; // type:object size:0x4 scope:local data:float +D_80136064 = .sdata2:0x80136064; // type:object size:0x4 scope:local data:float +D_80136068 = .sdata2:0x80136068; // type:object size:0x4 scope:local data:float +D_8013606C = .sdata2:0x8013606C; // type:object size:0x4 scope:local data:float +D_80136070 = .sdata2:0x80136070; // type:object size:0x4 scope:local data:float +D_80136074 = .sdata2:0x80136074; // type:object size:0x4 scope:local data:float +@1384 = .sdata2:0x80136078; // type:object size:0x4 scope:local data:float +@1385 = .sdata2:0x8013607C; // type:object size:0x4 scope:local data:float +@1387 = .sdata2:0x80136080; // type:object size:0x8 scope:local data:double +@1460 = .sdata2:0x80136088; // type:object size:0x4 scope:local data:float +@1461 = .sdata2:0x80136090; // type:object size:0x8 scope:local data:double +@1462 = .sdata2:0x80136098; // type:object size:0x8 scope:local data:double +@1463 = .sdata2:0x801360A0; // type:object size:0x4 scope:local data:float +@1464 = .sdata2:0x801360A4; // type:object size:0x4 scope:local data:float +@1465 = .sdata2:0x801360A8; // type:object size:0x4 scope:local data:float +@1466 = .sdata2:0x801360AC; // type:object size:0x4 scope:local data:float +@1467 = .sdata2:0x801360B0; // type:object size:0x4 scope:local data:float +@1651 = .sdata2:0x801360B8; // type:object size:0x8 scope:local data:double +@1652 = .sdata2:0x801360C0; // type:object size:0x4 scope:local data:float +@1654 = .sdata2:0x801360C8; // type:object size:0x8 scope:local data:double +@2045 = .sdata2:0x801360D0; // type:object size:0x4 scope:local data:float +@2099 = .sdata2:0x801360D4; // type:object size:0x4 scope:local data:float +D_801360D8 = .sdata2:0x801360D8; // type:object size:0x8 scope:local data:4byte +@2 = .sdata2:0x801360E0; // type:object size:0x4 scope:local data:float +@3 = .sdata2:0x801360E4; // type:object size:0x4 scope:local data:float +@99 = .sdata2:0x801360E8; // type:object size:0x4 scope:local data:float +@100 = .sdata2:0x801360EC; // type:object size:0x4 scope:local data:float +@101 = .sdata2:0x801360F0; // type:object size:0x4 scope:local data:float +@102 = .sdata2:0x801360F4; // type:object size:0x4 scope:local data:float +@105 = .sdata2:0x801360F8; // type:object size:0x4 scope:local data:float +@106 = .sdata2:0x801360FC; // type:object size:0x4 scope:local data:float +__GXData = .sdata2:0x80136100; // type:object size:0x4 scope:global data:4byte +@289 = .sdata2:0x80136104; // type:object size:0x4 scope:local data:float +@290 = .sdata2:0x80136108; // type:object size:0x4 scope:local data:float +@291 = .sdata2:0x8013610C; // type:object size:0x4 scope:local data:4byte +@292 = .sdata2:0x80136110; // type:object size:0x4 scope:local data:4byte +@293 = .sdata2:0x80136114; // type:object size:0x4 scope:local data:4byte +@353 = .sdata2:0x80136118; // type:object size:0x4 scope:local data:float +@354 = .sdata2:0x8013611C; // type:object size:0x4 scope:local data:float +@356 = .sdata2:0x80136120; // type:object size:0x8 scope:local data:double +@179 = .sdata2:0x80136128; // type:object size:0x4 scope:local data:float +@234 = .sdata2:0x80136130; // type:object size:0x8 scope:local data:double +@220 = .sdata2:0x80136138; // type:object size:0x4 scope:local data:float +@222 = .sdata2:0x80136140; // type:object size:0x8 scope:local data:double +@288 = .sdata2:0x80136148; // type:object size:0x4 scope:local data:float +@289 = .sdata2:0x8013614C; // type:object size:0x4 scope:local data:float +@290 = .sdata2:0x80136150; // type:object size:0x4 scope:local data:float +@291 = .sdata2:0x80136154; // type:object size:0x4 scope:local data:float +@292 = .sdata2:0x80136158; // type:object size:0x4 scope:local data:float +@293 = .sdata2:0x8013615C; // type:object size:0x4 scope:local data:float +@221 = .sdata2:0x80136160; // type:object size:0x4 scope:local data:float +@222 = .sdata2:0x80136164; // type:object size:0x4 scope:local data:float +@223 = .sdata2:0x80136168; // type:object size:0x4 scope:local data:float +@224 = .sdata2:0x80136170; // type:object size:0x8 scope:local data:double +@225 = .sdata2:0x80136178; // type:object size:0x4 scope:local data:float +@226 = .sdata2:0x80136180; // type:object size:0x8 scope:local data:double +@227 = .sdata2:0x80136188; // type:object size:0x4 scope:local data:float +@229 = .sdata2:0x80136190; // type:object size:0x8 scope:local data:double +@252 = .sdata2:0x80136198; // type:object size:0x8 scope:local data:double +@253 = .sdata2:0x801361A0; // type:object size:0x4 scope:local data:float +@254 = .sdata2:0x801361A8; // type:object size:0x8 scope:local data:double +@255 = .sdata2:0x801361B0; // type:object size:0x4 scope:local data:float +@257 = .sdata2:0x801361B8; // type:object size:0x8 scope:local data:double +@26 = .sdata2:0x801361C0; // type:object size:0x4 scope:local data:float +@28 = .sdata2:0x801361C4; // type:object size:0x4 scope:local data:float +@201 = .sdata2:0x801361C8; // type:object size:0x4 scope:local data:float +@41 = .sdata2:0x801361D0; // type:object size:0x4 scope:local data:float +@42 = .sdata2:0x801361D4; // type:object size:0x4 scope:local data:float +@44 = .sdata2:0x801361D8; // type:object size:0x8 scope:local data:double +@21 = .sdata2:0x801361E0; // type:object size:0x4 scope:local data:float +@22 = .sdata2:0x801361E4; // type:object size:0x4 scope:local data:float +@24 = .sdata2:0x801361E8; // type:object size:0x8 scope:local data:double +@31 = .sdata2:0x801361F0; // type:object size:0x4 scope:local data:float +@33 = .sdata2:0x801361F8; // type:object size:0x8 scope:local data:double +@55 = .sdata2:0x80136200; // type:object size:0x4 scope:local data:float +@159 = .sdata2:0x80136208; // type:object size:0x4 scope:local data:float +@167 = .sdata2:0x80136210; // type:object size:0x8 scope:local data:double +@244 = .sdata2:0x80136218; // type:object size:0x8 scope:local data:double +@666 = .sdata2:0x80136220; // type:object size:0x4 scope:local data:float +@667 = .sdata2:0x80136224; // type:object size:0x4 scope:local data:float +@668 = .sdata2:0x80136228; // type:object size:0x4 scope:local data:float +@669 = .sdata2:0x8013622C; // type:object size:0x4 scope:local data:float +@670 = .sdata2:0x80136230; // type:object size:0x4 scope:local data:float +@55 = .sdata2:0x80136238; // type:object size:0x8 scope:local data:double +@268 = .sdata2:0x80136240; // type:object size:0x8 scope:local data:double +@270 = .sdata2:0x80136248; // type:object size:0x8 scope:local data:double +@272 = .sdata2:0x80136250; // type:object size:0x8 scope:local data:double +@362 = .sdata2:0x80136258; // type:object size:0x8 scope:local data:double +@363 = .sdata2:0x80136260; // type:object size:0x8 scope:local data:double +@919 = .sdata2:0x80136268; // type:object size:0x8 scope:local data:double +@375 = .sdata2:0x80136270; // type:object size:0x8 scope:local data:double +@376 = .sdata2:0x80136278; // type:object size:0x8 scope:local data:double +@377 = .sdata2:0x80136280; // type:object size:0x8 scope:local data:double +@378 = .sdata2:0x80136288; // type:object size:0x8 scope:local data:double +@379 = .sdata2:0x80136290; // type:object size:0x8 scope:local data:double +@380 = .sdata2:0x80136298; // type:object size:0x8 scope:local data:double +@381 = .sdata2:0x801362A0; // type:object size:0x8 scope:local data:double +@382 = .sdata2:0x801362A8; // type:object size:0x8 scope:local data:double +@383 = .sdata2:0x801362B0; // type:object size:0x8 scope:local data:double +@384 = .sdata2:0x801362B8; // type:object size:0x8 scope:local data:double +@385 = .sdata2:0x801362C0; // type:object size:0x8 scope:local data:double +@386 = .sdata2:0x801362C8; // type:object size:0x8 scope:local data:double +@387 = .sdata2:0x801362D0; // type:object size:0x8 scope:local data:double +@388 = .sdata2:0x801362D8; // type:object size:0x8 scope:local data:double +@389 = .sdata2:0x801362E0; // type:object size:0x8 scope:local data:double +@390 = .sdata2:0x801362E8; // type:object size:0x8 scope:local data:double +@391 = .sdata2:0x801362F0; // type:object size:0x8 scope:local data:double +@392 = .sdata2:0x801362F8; // type:object size:0x8 scope:local data:double +@393 = .sdata2:0x80136300; // type:object size:0x8 scope:local data:double +@394 = .sdata2:0x80136308; // type:object size:0x8 scope:local data:double +@395 = .sdata2:0x80136310; // type:object size:0x8 scope:local data:double +@396 = .sdata2:0x80136318; // type:object size:0x8 scope:local data:double +@397 = .sdata2:0x80136320; // type:object size:0x8 scope:local data:double +@398 = .sdata2:0x80136328; // type:object size:0x8 scope:local data:double +@399 = .sdata2:0x80136330; // type:object size:0x8 scope:local data:double +@400 = .sdata2:0x80136338; // type:object size:0x8 scope:local data:double +@401 = .sdata2:0x80136340; // type:object size:0x8 scope:local data:double +@402 = .sdata2:0x80136348; // type:object size:0x8 scope:local data:double +@403 = .sdata2:0x80136350; // type:object size:0x8 scope:local data:double +@404 = .sdata2:0x80136358; // type:object size:0x8 scope:local data:double +@405 = .sdata2:0x80136360; // type:object size:0x8 scope:local data:double +@406 = .sdata2:0x80136368; // type:object size:0x8 scope:local data:double +@407 = .sdata2:0x80136370; // type:object size:0x8 scope:local data:double +@409 = .sdata2:0x80136378; // type:object size:0x8 scope:local data:double +@166 = .sdata2:0x80136380; // type:object size:0x8 scope:local data:double +@167 = .sdata2:0x80136388; // type:object size:0x8 scope:local data:double +@166 = .sdata2:0x80136390; // type:object size:0x8 scope:local data:double +@167 = .sdata2:0x80136398; // type:object size:0x8 scope:local data:double +@100 = .sdata2:0x801363A0; // type:object size:0x8 scope:local data:double +@131 = .sdata2:0x801363A8; // type:object size:0x8 scope:local data:double +@132 = .sdata2:0x801363B0; // type:object size:0x8 scope:local data:double +@133 = .sdata2:0x801363B8; // type:object size:0x8 scope:local data:double +@134 = .sdata2:0x801363C0; // type:object size:0x8 scope:local data:double +@135 = .sdata2:0x801363C8; // type:object size:0x8 scope:local data:double +@128 = .sdata2:0x801363D0; // type:object size:0x4 scope:local data:float +@129 = .sdata2:0x801363D4; // type:object size:0x4 scope:local data:float +@130 = .sdata2:0x801363D8; // type:object size:0x4 scope:local data:float +@131 = .sdata2:0x801363DC; // type:object size:0x4 scope:local data:float +@132 = .sdata2:0x801363E0; // type:object size:0x4 scope:local data:float +@133 = .sdata2:0x801363E4; // type:object size:0x4 scope:local data:float +@135 = .sdata2:0x801363E8; // type:object size:0x8 scope:local data:double +@106 = .sdata2:0x801363F0; // type:object size:0x4 scope:local data:float +@107 = .sdata2:0x801363F4; // type:object size:0x4 scope:local data:float +@108 = .sdata2:0x801363F8; // type:object size:0x4 scope:local data:float +@110 = .sdata2:0x80136400; // type:object size:0x8 scope:local data:double +@106 = .sdata2:0x80136408; // type:object size:0x8 scope:local data:double +@107 = .sdata2:0x80136410; // type:object size:0x8 scope:local data:double +@108 = .sdata2:0x80136418; // type:object size:0x8 scope:local data:double diff --git a/config/ce-u/build.sha1 b/config/ce-u/build.sha1 new file mode 100644 index 0000000..0eec767 --- /dev/null +++ b/config/ce-u/build.sha1 @@ -0,0 +1 @@ +eaec2d80639095b751c68d9371f7aac7e5c7dbc7 build/ce-u/oot-gc.dol diff --git a/config/ce-u/config.yml b/config/ce-u/config.yml new file mode 100644 index 0000000..c3e9713 --- /dev/null +++ b/config/ce-u/config.yml @@ -0,0 +1,102 @@ +# See config.example.yml for documentation. +name: oot-gc +object: orig/ce-u/main.dol +hash: eaec2d80639095b751c68d9371f7aac7e5c7dbc7 +symbols: config/ce-u/symbols.txt +splits: config/ce-u/splits.txt +mw_comment_version: 8 + +extract: +# xlCoreGCN.c +- symbol: gTgPcTPL + header: gTgPcTPL.inc +# simGCN.c +- symbol: gcoverOpen + header: gcoverOpen.inc +- symbol: gnoDisk + header: gnoDisk.inc +- symbol: gretryErr + header: gretryErr.inc +- symbol: gfatalErr + header: gfatalErr.inc +- symbol: gwrongDisk + header: gwrongDisk.inc +- symbol: greadingDisk + header: greadingDisk.inc +- symbol: gbar + header: gbar.inc +- symbol: gyes + header: gyes.inc +- symbol: gno + header: gno.inc +- symbol: gmesgOK + header: gmesgOK.inc + +block_relocations: +# systemSetupGameALL +- source: 0x8002E168 +- source: 0x8002E190 +- source: 0x8002E1BC +- source: 0x8002E1E4 +- source: 0x8002E240 +- source: 0x8002E260 +- source: 0x8002E28C +- source: 0x8002E2B0 +- source: 0x8002E7A0 +- source: 0x8002E7C8 +- source: 0x8002E7F0 +- source: 0x8002E818 +- source: 0x8002E840 +- source: 0x8002E868 +- source: 0x8002E890 +- source: 0x8002E8B8 +- source: 0x8002E8E0 +- source: 0x8002E904 +- source: 0x8002E928 +- source: 0x8002EC10 +- source: 0x8002ED30 +- source: 0x8002EE20 +- source: 0x8002EE44 +- source: 0x8002EE68 +- source: 0x8002EE94 +- source: 0x8002EEB8 +- source: 0x8002EEDC +- source: 0x8002F01C +- source: 0x8002F044 +- source: 0x8002F06C +- source: 0x8002F0AC +- source: 0x8002F0D0 +- source: 0x8002F0FC +- source: 0x8002F13C +- source: 0x8002F160 +- source: 0x8002F18C +- source: 0x8002F2F8 +- source: 0x8002F320 +- source: 0x8002F878 +- source: 0x8002F8A0 +- source: 0x8002F8C8 +- source: 0x8002F8EC +- source: 0x8002F914 +- source: 0x8002FAA0 +- source: 0x8002FB08 +- source: 0x8002FB2C +- source: 0x8002FB58 +- source: 0x8002FB7C +- source: 0x8002FC6C +- source: 0x8002FDBC +- source: 0x8002FE04 +- source: 0x8002FF38 +- source: 0x8002FF80 +- source: 0x8002FFA8 +# cpuFindFunction +- source: 0x80033460 +- source: 0x8003346C +- source: 0x80033BFC +- source: 0x80033C2C +- source: 0x80033C30 +- source: 0x80033C64 +- source: 0x80033C78 +- source: 0x80033CB8 +- source: 0x80033CBC +- source: 0x80033CF0 +- source: 0x80033D04 diff --git a/config/ce-u/splits.txt b/config/ce-u/splits.txt new file mode 100644 index 0000000..952e918 --- /dev/null +++ b/config/ce-u/splits.txt @@ -0,0 +1,224 @@ +Sections: + .init type:code align:32 + .text type:code align:32 + .ctors type:rodata align:32 + .dtors type:rodata align:32 + .rodata type:rodata align:32 + .data type:data align:32 + .bss type:bss align:32 + .sdata type:data align:32 + .sbss type:bss align:32 + .sdata2 type:rodata align:32 + +emulator/xlCoreGCN.c: + .text start:0x800055A0 end:0x80005E04 + .data start:0x800D37A0 end:0x800DB860 + .bss start:0x800F63E0 end:0x800F64A0 + .sbss start:0x80137A80 end:0x80137AA0 + .sdata2 start:0x80138200 end:0x80138218 + +emulator/xlPostGCN.c: + .text start:0x80005E04 end:0x80005E68 + +emulator/xlFileGCN.c: + .text start:0x80005E68 end:0x80006280 + .data start:0x800DB860 end:0x800DB880 + .sdata start:0x801371E0 end:0x801371E8 + .sbss start:0x80137AA0 end:0x80137AA8 + +emulator/xlList.c: + .text start:0x80006280 end:0x80006648 + .bss start:0x800F64A0 end:0x800F64B0 + +emulator/xlHeap.c: + .text start:0x80006648 end:0x80007BC0 + .bss start:0x800F64B0 end:0x800F6A40 + .sbss start:0x80137AA8 end:0x80137AC8 + +emulator/xlObject.c: + .text start:0x80007BC0 end:0x80007F80 + .sbss start:0x80137AC8 end:0x80137AD0 + +emulator/simGCN.c: + .text start:0x80007F80 end:0x8000F7D8 + .rodata start:0x800D3060 end:0x800D31B0 + .data start:0x800DB880 end:0x800EC6C8 + .bss start:0x800F6A40 end:0x800FBBE0 + .sdata start:0x801371E8 end:0x801372B0 + .sbss start:0x80137AD0 end:0x80137B10 + .sdata2 start:0x80138218 end:0x80138270 + +emulator/movie.c: + .text start:0x8000F7D8 end:0x8000F89C + .data start:0x800EC6C8 end:0x800EC6F0 + .sbss start:0x80137B10 end:0x80137B18 + +emulator/THPPlayer.c: + .text start:0x8000F89C end:0x80010DA8 + .data start:0x800EC6F0 end:0x800EC990 + .bss start:0x800FBBE0 end:0x800FC350 + .sdata start:0x801372B0 end:0x801372B8 + .sbss start:0x80137B18 end:0x80137B38 + .sdata2 start:0x80138270 end:0x80138278 + +emulator/THPAudioDecode.c: + .text start:0x80010DA8 end:0x80011144 + .data start:0x800EC990 end:0x800EC9B8 + .bss start:0x800FC350 end:0x800FD6C0 + .sbss start:0x80137B38 end:0x80137B40 + +emulator/THPDraw.c: + .text start:0x80011144 end:0x80011944 + .sdata2 start:0x80138278 end:0x801382A0 + +emulator/THPRead.c: + .text start:0x80011944 end:0x80012F2C + .rodata start:0x800D31B0 end:0x800D3240 + .data start:0x800EC9B8 end:0x800ECA28 + .bss start:0x800FD6C0 end:0x800FEAF0 + .sbss start:0x80137B40 end:0x80137B58 + .sdata2 start:0x801382A0 end:0x801382D8 + +emulator/THPVideoDecode.c: + .text start:0x80012F2C end:0x8001344C + .data start:0x800ECA28 end:0x800ECA50 + .bss start:0x800FEAF0 end:0x800FFE60 + .sbss start:0x80137B58 end:0x80137B60 + +emulator/mcardGCN.c: + .text start:0x8001344C end:0x8001C450 + .data start:0x800ECA50 end:0x800ECCC8 + .bss start:0x800FFE60 end:0x8010A680 + .sdata start:0x801372B8 end:0x801372C0 + .sbss start:0x80137B60 end:0x80137B80 + +emulator/codeGCN.c: + .text start:0x8001C450 end:0x8001C4A4 + .data start:0x800ECCC8 end:0x800ECCD8 + .sdata start:0x801372C0 end:0x801372C8 + .sbss start:0x80137B80 end:0x80137B88 + +emulator/soundGCN.c: + .text start:0x8001C4A4 end:0x8001D358 + .data start:0x800ECCD8 end:0x800ECD38 + .bss start:0x8010A680 end:0x8010AAA0 + .sdata start:0x801372C8 end:0x801372D8 + .sdata2 start:0x801382D8 end:0x80138300 + +emulator/frame.c: + .text start:0x8001D358 end:0x8002CA20 + .rodata start:0x800D3240 end:0x800D3280 + .data start:0x800ECD38 end:0x800ED800 + .bss start:0x8010AAA0 end:0x80132DE0 + .sdata start:0x801372D8 end:0x80137360 + .sbss start:0x80137B88 end:0x80137BD8 + .sdata2 start:0x80138300 end:0x80138490 + +emulator/system.c: + .text start:0x8002CA20 end:0x80030EEC + .data start:0x800ED800 end:0x800EDB60 + .bss start:0x80132DE0 end:0x80132F58 + .sdata start:0x80137360 end:0x801375A8 + .sbss start:0x80137BD8 end:0x80137BE0 + .sdata2 start:0x80138490 end:0x801384A0 + +emulator/cpu.c: + .text start:0x80030EEC end:0x8006BEE4 + .data start:0x800EDB60 end:0x800EFBC0 + .bss start:0x80132F58 end:0x80133150 + .sdata start:0x801375A8 end:0x80137768 + .sbss start:0x80137BE0 end:0x80137C60 + .sdata2 start:0x801384A0 end:0x801384D0 + +emulator/pif.c: + .text start:0x8006BEE4 end:0x8006CE14 + .data start:0x800EFBC0 end:0x800EFBD0 + .sdata start:0x80137768 end:0x80137770 + +emulator/ram.c: + .text start:0x8006CE14 end:0x8006D428 + .data start:0x800EFBD0 end:0x800EFDF0 + .sdata start:0x80137770 end:0x80137778 + +emulator/rom.c: + .text start:0x8006D428 end:0x8006FF3C + .data start:0x800EFDF0 end:0x800F0448 + .sdata start:0x80137778 end:0x801377B0 + .sbss start:0x80137C60 end:0x80137C70 + .sdata2 start:0x801384D0 end:0x80138508 + +emulator/rdp.c: + .text start:0x8006FF3C end:0x8007164C + .data start:0x800F0448 end:0x800F06B8 + .sdata start:0x801377B0 end:0x801377B8 + .sbss start:0x80137C70 end:0x80137C88 + .sdata2 start:0x80138508 end:0x80138538 + +emulator/rdb.c: + .text start:0x8007164C end:0x80071C34 + .data start:0x800F06B8 end:0x800F0728 + .sdata start:0x801377B8 end:0x801377C0 + +emulator/rsp.c: + .text start:0x80071C34 end:0x8008D2C4 + .data start:0x800F0728 end:0x800F0BD8 + .sdata start:0x801377C0 end:0x801377E8 + .sbss start:0x80137C88 end:0x80137CB0 + .sdata2 start:0x80138538 end:0x80138578 + +emulator/mips.c: + .text start:0x8008D2C4 end:0x8008D804 + .data start:0x800F0BD8 end:0x800F0C50 + .sdata start:0x801377E8 end:0x801377F0 + +emulator/disk.c: + .text start:0x8008D804 end:0x8008DA98 + .data start:0x800F0C50 end:0x800F0C60 + .sdata start:0x801377F0 end:0x801377F8 + +emulator/flash.c: + .text start:0x8008DA98 end:0x8008E1B4 + .data start:0x800F0C60 end:0x800F0C70 + .sdata start:0x801377F8 end:0x80137800 + +emulator/sram.c: + .text start:0x8008E1B4 end:0x8008E524 + .data start:0x800F0C70 end:0x800F0C80 + .sdata start:0x80137800 end:0x80137808 + +emulator/audio.c: + .text start:0x8008E524 end:0x8008E91C + .data start:0x800F0C80 end:0x800F0D78 + .sdata start:0x80137808 end:0x80137818 + +emulator/video.c: + .text start:0x8008E91C end:0x8008EE9C + .data start:0x800F0D78 end:0x800F0F30 + .sdata start:0x80137818 end:0x80137820 + +emulator/serial.c: + .text start:0x8008EE9C end:0x8008F170 + .data start:0x800F0F30 end:0x800F1008 + .sdata start:0x80137820 end:0x80137828 + +emulator/library.c: + .text start:0x8008F170 end:0x80097818 + .data start:0x800F1008 end:0x800F24B8 + .sdata start:0x80137828 end:0x80137870 + .sdata2 start:0x80138578 end:0x801385D8 + +emulator/peripheral.c: + .text start:0x80097818 end:0x80097E18 + .data start:0x800F24B8 end:0x800F2660 + +emulator/_frameGCNcc.c: + .text start:0x80097E18 end:0x80098720 + .data start:0x800F2660 end:0x800F2968 + .sdata start:0x80137870 end:0x80137900 + +emulator/_buildtev.c: + .text start:0x80098720 end:0x8009BB38 + .data start:0x800F2968 end:0x800F2B30 + .bss start:0x80133150 end:0x80133420 + .sdata start:0x80137900 end:0x80137910 + .sdata2 start:0x801385D8 end:0x801385E0 diff --git a/config/ce-u/symbols.txt b/config/ce-u/symbols.txt new file mode 100644 index 0000000..6fac016 --- /dev/null +++ b/config/ce-u/symbols.txt @@ -0,0 +1,3741 @@ +__check_pad3 = .init:0x80003100; // type:function size:0x40 scope:local +__set_debug_bba = .init:0x80003140; // type:function size:0xC scope:local +__get_debug_bba = .init:0x8000314C; // type:function size:0x8 scope:local +__start = .init:0x80003154; // type:function size:0x15C scope:weak +__init_registers = .init:0x800032B0; // type:function size:0x90 scope:local +__init_data = .init:0x80003340; // type:function size:0xC0 scope:local +__init_hardware = .init:0x80003400; // type:function size:0x24 scope:global +__flush_cache = .init:0x80003424; // type:function size:0x34 scope:global +TRK_memcpy = .init:0x80003458; // type:function size:0x24 scope:global +gTRKInterruptVectorTable = .init:0x8000347C; // type:label scope:global +gTRKInterruptVectorTableEnd = .init:0x800053B0; // type:label scope:global +__TRK_reset = .init:0x800053B0; // type:function size:0x20 scope:global +memset = .init:0x800053D0; // type:function size:0x30 scope:global +__fill_mem = .init:0x80005400; // type:function size:0xC4 scope:global +memcpy = .init:0x800054C4; // type:function size:0x50 scope:global +_rom_copy_info = .init:0x80005514; // type:object size:0x6C scope:global data:4byte +_bss_init_info = .init:0x80005580; // type:object size:0x18 scope:global data:4byte +xlCoreBeforeRender = .text:0x800055A0; // type:function size:0xD4 scope:global +main = .text:0x80005674; // type:function size:0x268 scope:global +xlCoreHiResolution = .text:0x800058DC; // type:function size:0x8 scope:global +xlCoreGetArgument = .text:0x800058E4; // type:function size:0x34 scope:global +xlCoreGetArgumentCount = .text:0x80005918; // type:function size:0x8 scope:global +xlCoreInitGX = .text:0x80005920; // type:function size:0x25C scope:global +xlCoreInitMem = .text:0x80005B7C; // type:function size:0xD8 scope:local +xlCoreInitRenderMode = .text:0x80005C54; // type:function size:0x174 scope:local +xlCoreReset = .text:0x80005DC8; // type:function size:0x3C scope:global +xlPostReset = .text:0x80005E04; // type:function size:0x8 scope:global +xlPostSetup = .text:0x80005E0C; // type:function size:0x8 scope:global +xlPostText = .text:0x80005E14; // type:function size:0x54 scope:global +xlFileEvent = .text:0x80005E68; // type:function size:0xB0 scope:global +xlFileSetPosition = .text:0x80005F18; // type:function size:0x28 scope:global +xlFileGet = .text:0x80005F40; // type:function size:0x104 scope:global +xlFileClose = .text:0x80006044; // type:function size:0x34 scope:global +xlFileOpen = .text:0x80006078; // type:function size:0xD4 scope:global +xlFileGetSize = .text:0x8000614C; // type:function size:0x11C scope:global +xlFileSetRead = .text:0x80006268; // type:function size:0xC scope:global +xlFileSetOpen = .text:0x80006274; // type:function size:0xC scope:global +xlListReset = .text:0x80006280; // type:function size:0x8 scope:global +xlListSetup = .text:0x80006288; // type:function size:0x28 scope:global +xlListTestItem = .text:0x800062B0; // type:function size:0x8C scope:global +xlListFreeItem = .text:0x8000633C; // type:function size:0xAC scope:global +xlListMakeItem = .text:0x800063E8; // type:function size:0xAC scope:global +xlListFree = .text:0x80006494; // type:function size:0xBC scope:global +xlListMake = .text:0x80006550; // type:function size:0xF8 scope:global +xlHeapReset = .text:0x80006648; // type:function size:0x68 scope:global +xlHeapSetup = .text:0x800066B0; // type:function size:0x1C0 scope:global +xlHeapGetFree = .text:0x80006870; // type:function size:0x98 scope:global +xlHeapFill32 = .text:0x80006908; // type:function size:0x1E8 scope:global +xlHeapCopy = .text:0x80006AF0; // type:function size:0x478 scope:global +xlHeapCompact = .text:0x80006F68; // type:function size:0x130 scope:global +xlHeapFree = .text:0x80007098; // type:function size:0x11C scope:global +xlHeapTake = .text:0x800071B4; // type:function size:0x288 scope:global +xlHeapFindUpperBlock = .text:0x8000743C; // type:function size:0x104 scope:local +xlHeapBlockCacheReset = .text:0x80007540; // type:function size:0x10C scope:local +xlHeapBlockCacheClear = .text:0x8000764C; // type:function size:0x10C scope:local +xlHeapBlockCacheAdd = .text:0x80007758; // type:function size:0x268 scope:local +xlHeapBlockCacheGet = .text:0x800079C0; // type:function size:0x200 scope:local +xlObjectReset = .text:0x80007BC0; // type:function size:0x70 scope:global +xlObjectSetup = .text:0x80007C30; // type:function size:0x3C scope:global +xlObjectEvent = .text:0x80007C6C; // type:function size:0xB8 scope:global +xlObjectTest = .text:0x80007D24; // type:function size:0x68 scope:global +xlObjectFree = .text:0x80007D8C; // type:function size:0x98 scope:global +xlObjectMake = .text:0x80007E24; // type:function size:0x15C scope:global +xlMain = .text:0x80007F80; // type:function size:0x5BC scope:global +simulatorGetArgument = .text:0x8000853C; // type:function size:0x40 scope:global +simulatorParseArguments = .text:0x8000857C; // type:function size:0x164 scope:local +simulatorDrawCursor = .text:0x800086E0; // type:function size:0x208 scope:local +simulatorMCardPollDrawFormatBar = .text:0x800088E8; // type:function size:0x130 scope:global +simulatorMCardPollDrawBar = .text:0x80008A18; // type:function size:0x130 scope:global +simulatorDrawMCardText = .text:0x80008B48; // type:function size:0x98 scope:global +simulatorTestReset = .text:0x80008BE0; // type:function size:0x1E0 scope:global +simulatorRumbleStop = .text:0x80008DC0; // type:function size:0x28 scope:global +simulatorRumbleStart = .text:0x80008DE8; // type:function size:0x28 scope:global +simulatorWriteFLASH = .text:0x80008E10; // type:function size:0x34 scope:global +simulatorReadFLASH = .text:0x80008E44; // type:function size:0x34 scope:global +simulatorWriteSRAM = .text:0x80008E78; // type:function size:0x34 scope:global +simulatorReadSRAM = .text:0x80008EAC; // type:function size:0x34 scope:global +simulatorWriteEEPROM = .text:0x80008EE0; // type:function size:0x70 scope:global +simulatorReadEEPROM = .text:0x80008F50; // type:function size:0x70 scope:global +simulatorWritePak = .text:0x80008FC0; // type:function size:0x7C scope:global +simulatorReadPak = .text:0x8000903C; // type:function size:0x7C scope:global +simulatorDetectController = .text:0x800090B8; // type:function size:0x54 scope:global +simulatorShowLoad = .text:0x8000910C; // type:function size:0x8 scope:global +simulatorReadController = .text:0x80009114; // type:function size:0x574 scope:global +simulatorCopyControllerMap = .text:0x80009688; // type:function size:0xC8 scope:global +simulatorSetControllerMap = .text:0x80009750; // type:function size:0xD8 scope:global +simulatorResetAndPlayMovie = .text:0x80009828; // type:function size:0x15C scope:global +simulatorReset = .text:0x80009984; // type:function size:0xB0 scope:global +simulatorDrawErrorMessageWait = .text:0x80009A34; // type:function size:0x314C scope:global +simulatorDrawYesNoMessage = .text:0x8000CB80; // type:function size:0x3A8 scope:global +simulatorDrawYesNoMessageLoop = .text:0x8000CF28; // type:function size:0x2CC scope:global +simulatorPrepareMessage = .text:0x8000D1F4; // type:function size:0x16C scope:global +simulatorDrawErrorMessage = .text:0x8000D360; // type:function size:0x238 scope:global +simulatorDrawOKImage = .text:0x8000D598; // type:function size:0x628 scope:global +simulatorDrawYesNoImage = .text:0x8000DBC0; // type:function size:0x8D0 scope:global +simulatorDrawImage = .text:0x8000E490; // type:function size:0x81C scope:global +simulatorPlayMovie = .text:0x8000ECAC; // type:function size:0x24 scope:global +simulatorDVDRead = .text:0x8000ECD0; // type:function size:0xE4 scope:global +simulatorDVDOpen = .text:0x8000EDB4; // type:function size:0x70 scope:global +simulatorDVDShowError = .text:0x8000EE24; // type:function size:0x208 scope:global +simulatorUnpackTexPalette = .text:0x8000F02C; // type:function size:0xDC scope:global +simulatorGXInit = .text:0x8000F108; // type:function size:0x6D0 scope:global +MovieDraw = .text:0x8000F7D8; // type:function size:0x38 scope:global +MovieInit = .text:0x8000F810; // type:function size:0x8C scope:global +THPPlayerInit = .text:0x8000F89C; // type:function size:0x138 scope:global +THPPlayerOpen = .text:0x8000F9D4; // type:function size:0x278 scope:global +THPPlayerCalcNeedMemory = .text:0x8000FC4C; // type:function size:0xA8 scope:global +THPPlayerSetBuffer = .text:0x8000FCF4; // type:function size:0x23C scope:global +InitAllMessageQueue = .text:0x8000FF30; // type:function size:0xCC scope:global +PrepareReady = .text:0x8000FFFC; // type:function size:0x30 scope:global +THPPlayerPrepare = .text:0x8001002C; // type:function size:0x274 scope:global +THPPlayerPlay = .text:0x800102A0; // type:function size:0x5C scope:global +PlayControl = .text:0x800102FC; // type:function size:0x29C scope:local +ProperTimingForStart = .text:0x80010598; // type:function size:0x6C scope:local +ProperTimingForGettingNextFrame = .text:0x80010604; // type:function size:0x124 scope:local +THPPlayerDrawCurrentFrame = .text:0x80010728; // type:function size:0xCC scope:global +PushUsedTextureSet = .text:0x800107F4; // type:function size:0x30 scope:local +THPPlayerDrawDone = .text:0x80010824; // type:function size:0x70 scope:global +THPAudioMixCallback = .text:0x80010894; // type:function size:0x178 scope:local +MixAudio = .text:0x80010A0C; // type:function size:0x39C scope:local +CreateAudioDecodeThread = .text:0x80010DA8; // type:function size:0xE0 scope:global +AudioDecodeThreadStart = .text:0x80010E88; // type:function size:0x34 scope:global +AudioDecoder = .text:0x80010EBC; // type:function size:0x28 scope:local +AudioDecoderForOnMemory = .text:0x80010EE4; // type:function size:0xB0 scope:local +AudioDecode = .text:0x80010F94; // type:function size:0xD8 scope:local +PopFreeAudioBuffer = .text:0x8001106C; // type:function size:0x34 scope:global +PushFreeAudioBuffer = .text:0x800110A0; // type:function size:0x30 scope:global +PopDecodedAudioBuffer = .text:0x800110D0; // type:function size:0x44 scope:global +PushDecodedAudioBuffer = .text:0x80011114; // type:function size:0x30 scope:global +THPGXRestore = .text:0x80011144; // type:function size:0x118 scope:global +THPGXYuv2RgbSetup = .text:0x8001125C; // type:function size:0x504 scope:global +THPGXYuv2RgbDraw = .text:0x80011760; // type:function size:0x1E4 scope:global +PushReadedBuffer2 = .text:0x80011944; // type:function size:0x30 scope:global +PopReadedBuffer2 = .text:0x80011974; // type:function size:0x34 scope:global +PushFreeReadBuffer = .text:0x800119A8; // type:function size:0x30 scope:global +PopReadedBuffer = .text:0x800119D8; // type:function size:0x34 scope:global +Reader = .text:0x80011A0C; // type:function size:0x12C scope:local +ReadThreadStart = .text:0x80011B38; // type:function size:0x34 scope:global +CreateReadThread = .text:0x80011B6C; // type:function size:0xAC scope:global +movieReset = .text:0x80011C18; // type:function size:0xA0 scope:global +movieTestReset = .text:0x80011CB8; // type:function size:0x1B4 scope:global +movieDVDRead = .text:0x80011E6C; // type:function size:0xB0 scope:global +movieDVDShowError = .text:0x80011F1C; // type:function size:0x260 scope:global +movieDrawErrorMessage = .text:0x8001217C; // type:function size:0x1C4 scope:global +movieDrawImage = .text:0x80012340; // type:function size:0x51C scope:global +movieGXInit = .text:0x8001285C; // type:function size:0x6D0 scope:global +CreateVideoDecodeThread = .text:0x80012F2C; // type:function size:0xE4 scope:global +VideoDecodeThreadStart = .text:0x80013010; // type:function size:0x34 scope:global +VideoDecoder = .text:0x80013044; // type:function size:0xDC scope:local +VideoDecoderForOnMemory = .text:0x80013120; // type:function size:0x134 scope:local +VideoDecode = .text:0x80013254; // type:function size:0x120 scope:local +PopFreeTextureSet = .text:0x80013374; // type:function size:0x34 scope:global +PushFreeTextureSet = .text:0x800133A8; // type:function size:0x30 scope:global +PopDecodedTextureSet = .text:0x800133D8; // type:function size:0x44 scope:global +PushDecodedTextureSet = .text:0x8001341C; // type:function size:0x30 scope:global +mcardUpdate = .text:0x8001344C; // type:function size:0x2B4 scope:global +mcardStore = .text:0x80013700; // type:function size:0xF08 scope:global +mcardOpenDuringGame = .text:0x80014608; // type:function size:0xB50 scope:global +mcardOpen = .text:0x80015158; // type:function size:0x1804 scope:global +mcardWrite = .text:0x8001695C; // type:function size:0x360 scope:global +mcardOpenDuringGameError = .text:0x80016CBC; // type:function size:0xE0 scope:global +mcardOpenError = .text:0x80016D9C; // type:function size:0xE0 scope:global +mcardMenu = .text:0x80016E7C; // type:function size:0x9A4 scope:global +mcardRead = .text:0x80017820; // type:function size:0x30 scope:global +mcardGameRelease = .text:0x80017850; // type:function size:0xA8 scope:global +mcardGameErase = .text:0x800178F8; // type:function size:0x1A8 scope:global +mcardFileErase = .text:0x80017AA0; // type:function size:0x190 scope:global +mcardCardErase = .text:0x80017C30; // type:function size:0x13C scope:global +mcardGameCreate = .text:0x80017D6C; // type:function size:0x898 scope:global +mcardFileCreate = .text:0x80018604; // type:function size:0x658 scope:global +mcardGameSet = .text:0x80018C5C; // type:function size:0x408 scope:global +mcardFileSet = .text:0x80019064; // type:function size:0x424 scope:global +mcardInit = .text:0x80019488; // type:function size:0x5C scope:global +mcardReInit = .text:0x800194E4; // type:function size:0x198 scope:global +mcardWriteGameDataReset = .text:0x8001967C; // type:function size:0x68 scope:global +mcardReadGameData = .text:0x800196E4; // type:function size:0x398 scope:global +mcardWriteTimeAsynch = .text:0x80019A7C; // type:function size:0x204 scope:local +mcardWriteConfigAsynch = .text:0x80019C80; // type:function size:0x1C4 scope:local +mcardReadBufferAsynch = .text:0x80019E44; // type:function size:0x1A4 scope:local +mcardWriteBufferAsynch = .text:0x80019FE8; // type:function size:0x1E4 scope:local +mcardWriteFileHeaderInitial = .text:0x8001A1CC; // type:function size:0x224 scope:local +mcardReadFileHeaderInitial = .text:0x8001A3F0; // type:function size:0x158 scope:local +mcardWriteFileHeader = .text:0x8001A548; // type:function size:0x3BC scope:local +mcardReadFileHeader = .text:0x8001A904; // type:function size:0x224 scope:local +mcardWriteAnywherePartial = .text:0x8001AB28; // type:function size:0x1AC scope:local +mcardWriteAnywhere = .text:0x8001ACD4; // type:function size:0x19C scope:local +mcardReadAnywhere = .text:0x8001AE70; // type:function size:0x170 scope:local +mcardReadyCard = .text:0x8001AFE0; // type:function size:0x194 scope:local +mcardPoll = .text:0x8001B174; // type:function size:0xEC scope:local +mcardVerifyChecksumFileHeader = .text:0x8001B260; // type:function size:0x22C scope:local +mcardCheckChecksumFileHeader = .text:0x8001B48C; // type:function size:0x314 scope:local +mcardReplaceFileBlock = .text:0x8001B7A0; // type:function size:0x480 scope:local +mcardSaveChecksumFileHeader = .text:0x8001BC20; // type:function size:0x35C scope:local +mcardCalculateChecksumFileBlock2 = .text:0x8001BF7C; // type:function size:0x168 scope:local +mcardCalculateChecksumFileBlock1 = .text:0x8001C0E4; // type:function size:0x168 scope:local +mcardCalculateChecksum = .text:0x8001C24C; // type:function size:0x60 scope:local +mcardGCErrorHandler = .text:0x8001C2AC; // type:function size:0x1A4 scope:local +codeEvent = .text:0x8001C450; // type:function size:0x54 scope:global +soundEvent = .text:0x8001C4A4; // type:function size:0x1F8 scope:global +soundPlayBeep = .text:0x8001C69C; // type:function size:0x7C scope:global +soundLoadBeep = .text:0x8001C718; // type:function size:0x118 scope:global +soundCallbackBeep = .text:0x8001C830; // type:function size:0x5C scope:local +soundSetBufferSize = .text:0x8001C88C; // type:function size:0x1A0 scope:global +soundGetDMABuffer = .text:0x8001CA2C; // type:function size:0x34 scope:global +soundSetAddress = .text:0x8001CA60; // type:function size:0xC scope:global +soundSetDACRate = .text:0x8001CA6C; // type:function size:0x20 scope:global +soundSetLength = .text:0x8001CA8C; // type:function size:0x38 scope:global +soundMakeBuffer = .text:0x8001CAC4; // type:function size:0x1EC scope:local +soundCallbackDMA = .text:0x8001CCB0; // type:function size:0x28 scope:local +soundPlayBuffer = .text:0x8001CCD8; // type:function size:0xC0 scope:local +soundMakeRamp = .text:0x8001CD98; // type:function size:0x4C4 scope:local +soundWipeBuffers = .text:0x8001D25C; // type:function size:0xFC scope:global +PSMTX44MultVecNoW = .text:0x8001D358; // type:function size:0x50 scope:global +frameGetTextureInfo = .text:0x8001D3A8; // type:function size:0x11C scope:global +frameInvalidateCache = .text:0x8001D4C4; // type:function size:0x16C scope:global +frameSetMatrixHint = .text:0x8001D630; // type:function size:0x11C scope:global +frameFixMatrixHint = .text:0x8001D74C; // type:function size:0xB8 scope:global +frameSetBuffer = .text:0x8001D804; // type:function size:0x38 scope:global +frameResetUCode = .text:0x8001D83C; // type:function size:0xB0 scope:global +frameSetViewport = .text:0x8001D8EC; // type:function size:0x194 scope:global +frameSetLookAt = .text:0x8001DA80; // type:function size:0xB0 scope:global +frameSetLight = .text:0x8001DB30; // type:function size:0x128 scope:global +frameSetLightCount = .text:0x8001DC58; // type:function size:0xC scope:global +frameLoadTMEM = .text:0x8001DC64; // type:function size:0xF48 scope:global +frameLoadTLUT = .text:0x8001EBAC; // type:function size:0xE0 scope:global +frameCullDL = .text:0x8001EC8C; // type:function size:0x14C scope:global +frameLoadVertex = .text:0x8001EDD8; // type:function size:0xA84 scope:global +frameGetMatrix = .text:0x8001F85C; // type:function size:0x120 scope:global +frameSetMatrix = .text:0x8001F97C; // type:function size:0x68C scope:global +frameGetMode = .text:0x80020008; // type:function size:0x18 scope:global +frameSetMode = .text:0x80020020; // type:function size:0x194 scope:global +frameSetSize = .text:0x800201B4; // type:function size:0x128 scope:global +frameSetFill = .text:0x800202DC; // type:function size:0x2C scope:global +frameDrawReset = .text:0x80020308; // type:function size:0x44 scope:global +frameLoadTile = .text:0x8002034C; // type:function size:0x424 scope:local +frameUpdateCache = .text:0x80020770; // type:function size:0x1F4 scope:local +frameSetupCache = .text:0x80020964; // type:function size:0x4C8 scope:local +frameMakeTexture = .text:0x80020E2C; // type:function size:0x11C scope:local +packFreeBlocks = .text:0x80020F48; // type:function size:0x68 scope:local +packTakeBlocks = .text:0x80020FB0; // type:function size:0xCC scope:local +frameConvertYUVtoRGB = .text:0x8002107C; // type:function size:0xCC scope:local +frameScaleMatrix = .text:0x80021148; // type:function size:0xC8 scope:global +frameEvent = .text:0x80021210; // type:function size:0x384 scope:local +frameGetDepth = .text:0x80021594; // type:function size:0x270 scope:global +frameHackCIMG_Panel = .text:0x80021804; // type:function size:0x1844 scope:global +frameHackTIMG_Panel = .text:0x80023048; // type:function size:0xA4 scope:global +PanelDrawFR3D = .text:0x800230EC; // type:function size:0xB4 scope:global +PanelDrawBG16 = .text:0x800231A0; // type:function size:0xBC scope:global +PanelDrawBG8 = .text:0x8002325C; // type:function size:0xAC scope:global +frameHackCIMG_Zelda2_Camera = .text:0x80023308; // type:function size:0x134 scope:global +frameHackCIMG_Zelda2_Shrink = .text:0x8002343C; // type:function size:0x174 scope:global +frameHackCIMG_Zelda = .text:0x800235B0; // type:function size:0x440 scope:global +frameHackCIMG_Zelda2 = .text:0x800239F0; // type:function size:0x658 scope:global +frameHackTIMG_Zelda = .text:0x80024048; // type:function size:0x1C8 scope:global +ZeldaDrawFrameCamera = .text:0x80024210; // type:function size:0x2F4 scope:global +ZeldaDrawFrameShrink = .text:0x80024504; // type:function size:0x50C scope:global +ZeldaGreyScaleConvert = .text:0x80024A10; // type:function size:0x390 scope:local +CopyAndConvertCFB = .text:0x80024DA0; // type:function size:0x344 scope:global +ZeldaDrawFrame = .text:0x800250E4; // type:function size:0x2E0 scope:global +ZeldaDrawFrameBlur = .text:0x800253C4; // type:function size:0x2E4 scope:global +ZeldaDrawFrameNoBlend = .text:0x800256A8; // type:function size:0x1F4 scope:global +_frameDrawRectangle = .text:0x8002589C; // type:function size:0x128 scope:global +frameEnd = .text:0x800259C4; // type:function size:0x288 scope:global +frameBegin = .text:0x80025C4C; // type:function size:0x28C scope:global +frameBeginOK = .text:0x80025ED8; // type:function size:0x1C scope:global +frameSetColor = .text:0x80025EF4; // type:function size:0xFC scope:global +frameSetDepth = .text:0x80025FF0; // type:function size:0x10 scope:global +frameSetScissor = .text:0x80026000; // type:function size:0x128 scope:global +frameShow = .text:0x80026128; // type:function size:0x8 scope:global +frameDrawRectTexture_Setup = .text:0x80026130; // type:function size:0x3F0 scope:local +frameDrawRectTexture = .text:0x80026520; // type:function size:0x4D8 scope:local +frameDrawRectFill_Setup = .text:0x800269F8; // type:function size:0xB0 scope:local +frameDrawRectFill = .text:0x80026AA8; // type:function size:0x294 scope:local +frameDrawLine_Setup = .text:0x80026D3C; // type:function size:0xDC scope:local +frameDrawLine_C2T2 = .text:0x80026E18; // type:function size:0x21C scope:local +frameDrawLine_C1T2 = .text:0x80027034; // type:function size:0x20C scope:local +frameDrawLine_C0T2 = .text:0x80027240; // type:function size:0x1B8 scope:local +frameDrawLine_C2T0 = .text:0x800273F8; // type:function size:0x1D8 scope:local +frameDrawLine_C1T0 = .text:0x800275D0; // type:function size:0x1C8 scope:local +frameDrawLine_C0T0 = .text:0x80027798; // type:function size:0x174 scope:local +frameDrawTriangle_Setup = .text:0x8002790C; // type:function size:0xDC scope:local +frameDrawTriangle_C3T3 = .text:0x800279E8; // type:function size:0x1A4 scope:local +frameCheckTriangleDivide = .text:0x80027B8C; // type:function size:0xEC4 scope:local +frameDrawTriangle_C1T3 = .text:0x80028A50; // type:function size:0x1F0 scope:local +frameDrawTriangle_C0T3 = .text:0x80028C40; // type:function size:0x18C scope:local +frameDrawTriangle_C3T0 = .text:0x80028DCC; // type:function size:0x1BC scope:local +frameDrawTriangle_C1T0 = .text:0x80028F88; // type:function size:0x19C scope:local +frameDrawTriangle_C0T0 = .text:0x80029124; // type:function size:0x138 scope:local +frameDrawSetupDP = .text:0x8002925C; // type:function size:0x56C scope:local +frameGetCombineAlpha = .text:0x800297C8; // type:function size:0x90 scope:local +frameGetCombineColor = .text:0x80029858; // type:function size:0xFC scope:local +frameDrawSetupSP = .text:0x80029954; // type:function size:0x9B4 scope:local +frameDrawSetup2D = .text:0x8002A308; // type:function size:0x1AC scope:global +frameLoadTexture = .text:0x8002A4B4; // type:function size:0x2DC scope:local +frameMakePixels = .text:0x8002A790; // type:function size:0x19F4 scope:local +frameMakeTLUT = .text:0x8002C184; // type:function size:0x16C scope:local +frameDrawDone = .text:0x8002C2F0; // type:function size:0x7C scope:local +frameDrawSyncCallback = .text:0x8002C36C; // type:function size:0x18 scope:local +frameDrawSetupFog_Default = .text:0x8002C384; // type:function size:0x304 scope:local +frameDrawSetupFog_Zelda1 = .text:0x8002C688; // type:function size:0x398 scope:local +systemEvent = .text:0x8002CA20; // type:function size:0x8D8 scope:global +systemExceptionPending = .text:0x8002D2F8; // type:function size:0x38 scope:global +systemCheckInterrupts = .text:0x8002D330; // type:function size:0x158 scope:global +systemExecute = .text:0x8002D488; // type:function size:0xFC scope:global +systemReset = .text:0x8002D584; // type:function size:0x1B8 scope:global +systemGetStorageDevice = .text:0x8002D73C; // type:function size:0x10 scope:global +systemSetStorageDevice = .text:0x8002D74C; // type:function size:0xEC scope:global +systemGetMode = .text:0x8002D838; // type:function size:0x68 scope:global +systemSetMode = .text:0x8002D8A0; // type:function size:0x70 scope:global +systemCopyROM = .text:0x8002D910; // type:function size:0xF4 scope:global +__systemCopyROM_Complete = .text:0x8002DA04; // type:function size:0x138 scope:local +systemPut64 = .text:0x8002DB3C; // type:function size:0x8 scope:local +systemPut32 = .text:0x8002DB44; // type:function size:0x8 scope:local +systemPut16 = .text:0x8002DB4C; // type:function size:0x8 scope:local +systemPut8 = .text:0x8002DB54; // type:function size:0x8 scope:local +systemGet64 = .text:0x8002DB5C; // type:function size:0x14 scope:local +systemGet32 = .text:0x8002DB70; // type:function size:0x10 scope:local +systemGet16 = .text:0x8002DB80; // type:function size:0x10 scope:local +systemGet8 = .text:0x8002DB90; // type:function size:0x10 scope:local +systemGetException = .text:0x8002DBA0; // type:function size:0x1DC scope:local +systemSetupGameALL = .text:0x8002DD7C; // type:function size:0x25F4 scope:local +systemGetInitialConfiguration = .text:0x80030370; // type:function size:0x7D4 scope:global +systemSetupGameRAM = .text:0x80030B44; // type:function size:0x3A8 scope:local +cpuOpcodeChecksum = .text:0x80030EEC; // type:function size:0x114 scope:local +treePrintNode = .text:0x80031000; // type:function size:0x1E4 scope:local +treeForceCleanNodes = .text:0x800311E4; // type:function size:0x1D4 scope:local +treeCleanNodes = .text:0x800313B8; // type:function size:0x2E0 scope:local +treeCleanUp = .text:0x80031698; // type:function size:0x130 scope:local +treeTimerCheck = .text:0x800317C8; // type:function size:0x114 scope:local +treeKillReason = .text:0x800318DC; // type:function size:0x90 scope:local +treeKillRange = .text:0x8003196C; // type:function size:0x798 scope:local +treeSearchNode = .text:0x80032104; // type:function size:0x64 scope:local +treeAdjustRoot = .text:0x80032168; // type:function size:0x1EC scope:local +treeBalance = .text:0x80032354; // type:function size:0x198 scope:local +treeInsertNode = .text:0x800324EC; // type:function size:0xE8 scope:local +treeInsert = .text:0x800325D4; // type:function size:0x11C scope:global +treeDeleteNode = .text:0x800326F0; // type:function size:0x360 scope:local +treeKillNodes = .text:0x80032A50; // type:function size:0x2B0 scope:local +treeKill = .text:0x80032D00; // type:function size:0x2A8 scope:local +treeInitNode = .text:0x80032FA8; // type:function size:0x11C scope:local +treeInit = .text:0x800330C4; // type:function size:0x58 scope:local +treeCallerCheck = .text:0x8003311C; // type:function size:0x104 scope:local +cpuDMAUpdateFunction = .text:0x80033220; // type:function size:0x160 scope:local +cpuFindFunction = .text:0x80033380; // type:function size:0xB84 scope:global +cpuTreeTake = .text:0x80033F04; // type:function size:0xB4 scope:local +cpuHeapFree = .text:0x80033FB8; // type:function size:0xEC scope:global +cpuHeapTake = .text:0x800340A4; // type:function size:0x260 scope:global +cpuHeapReset = .text:0x80034304; // type:function size:0x9C scope:local +cpuGetFunctionChecksum = .text:0x800343A0; // type:function size:0x240 scope:global +cpuInvalidateCache = .text:0x800345E0; // type:function size:0x8C scope:global +cpuGetOffsetAddress = .text:0x8003466C; // type:function size:0x190 scope:global +cpuGetAddressBuffer = .text:0x800347FC; // type:function size:0x78 scope:global +cpuGetAddressOffset = .text:0x80034874; // type:function size:0x6C scope:global +cpuEvent = .text:0x800348E0; // type:function size:0x208 scope:global +cpuSetXPC = .text:0x80034AE8; // type:function size:0x7C scope:global +cpuReset = .text:0x80034B64; // type:function size:0x4E4 scope:global +cpuSetCodeHack = .text:0x80035048; // type:function size:0x6C scope:global +cpuSetDevicePut = .text:0x800350B4; // type:function size:0x18 scope:global +cpuSetDeviceGet = .text:0x800350CC; // type:function size:0x18 scope:global +cpuMapObject = .text:0x800350E4; // type:function size:0x1B0 scope:global +__cpuBreak = .text:0x80035294; // type:function size:0x14 scope:global +__cpuERET = .text:0x800352A8; // type:function size:0x9C scope:global +cpuGetRegisterCP0 = .text:0x80035344; // type:function size:0x2A8 scope:global +cpuSetRegisterCP0 = .text:0x800355EC; // type:function size:0x1CC scope:global +cpuSetCP0_Status = .text:0x800357B8; // type:function size:0x94 scope:local +cpuGetSize = .text:0x8003584C; // type:function size:0x144 scope:local +cpuGetMode = .text:0x80035990; // type:function size:0xD8 scope:local +cpuSetTLB = .text:0x80035A68; // type:function size:0x2E4 scope:local +cpuMapAddress = .text:0x80035D4C; // type:function size:0x1C8 scope:local +cpuFreeDevice = .text:0x80035F14; // type:function size:0xA4 scope:local +cpuMakeDevice = .text:0x80035FB8; // type:function size:0x110 scope:local +cpuException = .text:0x800360C8; // type:function size:0x2C0 scope:global +cpuTestInterrupt = .text:0x80036388; // type:function size:0xDC scope:global +cpuFindCachedAddress = .text:0x80036464; // type:function size:0x1DC scope:local +cpuFreeCachedAddress = .text:0x80036640; // type:function size:0x94 scope:global +cpuHackHandler = .text:0x800366D4; // type:function size:0x218 scope:local +cpuExecute = .text:0x800368EC; // type:function size:0xC6C scope:global +cpuMakeLink = .text:0x80037558; // type:function size:0x2C0 scope:local +cpuExecuteLoadStoreF = .text:0x80037818; // type:function size:0xB5C scope:local +cpuExecuteLoadStore = .text:0x80038374; // type:function size:0xE60 scope:local +cpuExecuteCall = .text:0x800391D4; // type:function size:0x260 scope:local +cpuExecuteJump = .text:0x80039434; // type:function size:0xD0 scope:local +cpuExecuteIdle = .text:0x80039504; // type:function size:0x10C scope:local +cpuExecuteOpcode = .text:0x80039610; // type:function size:0x4974 scope:local +cpuExecuteUpdate = .text:0x8003DF84; // type:function size:0x2FC scope:local +cpuRetraceCallback = .text:0x8003E280; // type:function size:0x10 scope:local +cpuNextInstruction = .text:0x8003E290; // type:function size:0x2C4 scope:local +cpuFindAddress = .text:0x8003E554; // type:function size:0x49C scope:local +cpuMakeFunction = .text:0x8003E9F0; // type:function size:0x490 scope:global +cpuGetPPC = .text:0x8003EE80; // type:function size:0x29434 scope:local +cpuCheckDelaySlot = .text:0x800682B4; // type:function size:0x130 scope:local +cpuCompile_LWR = .text:0x800683E4; // type:function size:0x18C scope:local +cpuCompile_LWL = .text:0x80068570; // type:function size:0x190 scope:local +cpuCompile_SDC = .text:0x80068700; // type:function size:0x188 scope:local +cpuCompile_LDC = .text:0x80068888; // type:function size:0x188 scope:local +cpuCompile_SW = .text:0x80068A10; // type:function size:0x15C scope:local +cpuCompile_SH = .text:0x80068B6C; // type:function size:0x15C scope:local +cpuCompile_SB = .text:0x80068CC8; // type:function size:0x15C scope:local +cpuCompile_LHU = .text:0x80068E24; // type:function size:0x158 scope:local +cpuCompile_LBU = .text:0x80068F7C; // type:function size:0x158 scope:local +cpuCompile_LW = .text:0x800690D4; // type:function size:0x158 scope:local +cpuCompile_LH = .text:0x8006922C; // type:function size:0x16C scope:local +cpuCompile_LB = .text:0x80069398; // type:function size:0x16C scope:local +cpuCompile_FLOOR_W = .text:0x80069504; // type:function size:0x1BC scope:local +cpuCompile_CEIL_W = .text:0x800696C0; // type:function size:0x1BC scope:local +cpuCompile_L_CVT_SD = .text:0x8006987C; // type:function size:0x580 scope:local +cpuCompile_W_CVT_SD = .text:0x80069DFC; // type:function size:0x1B0 scope:local +cpuCompile_D_SQRT = .text:0x80069FAC; // type:function size:0x434 scope:local +cpuCompile_S_SQRT = .text:0x8006A3E0; // type:function size:0x340 scope:local +cpuCompile_DDIVU = .text:0x8006A720; // type:function size:0x41C scope:local +cpuCompile_DDIV = .text:0x8006AB3C; // type:function size:0x5BC scope:local +cpuCompile_DMULTU = .text:0x8006B0F8; // type:function size:0x314 scope:local +cpuCompile_DMULT = .text:0x8006B40C; // type:function size:0x504 scope:local +cpuCompile_DSRAV = .text:0x8006B910; // type:function size:0x204 scope:local +cpuCompile_DSRLV = .text:0x8006BB14; // type:function size:0x1E8 scope:local +cpuCompile_DSLLV = .text:0x8006BCFC; // type:function size:0x1E8 scope:local +pifEvent = .text:0x8006BEE4; // type:function size:0x228 scope:global +pifGetData = .text:0x8006C10C; // type:function size:0x6C scope:global +pifSetData = .text:0x8006C178; // type:function size:0x60 scope:global +pifProcessOutputData = .text:0x8006C1D8; // type:function size:0x19C scope:global +pifProcessInputData = .text:0x8006C374; // type:function size:0x190 scope:global +pifExecuteCommand = .text:0x8006C504; // type:function size:0x2A4 scope:global +pifGet64 = .text:0x8006C7A8; // type:function size:0x54 scope:global +pifGet32 = .text:0x8006C7FC; // type:function size:0x3C scope:global +pifGet16 = .text:0x8006C838; // type:function size:0x3C scope:global +pifGet8 = .text:0x8006C874; // type:function size:0x34 scope:global +pifPut64 = .text:0x8006C8A8; // type:function size:0x34 scope:global +pifPut32 = .text:0x8006C8DC; // type:function size:0x28 scope:global +pifPut16 = .text:0x8006C904; // type:function size:0x28 scope:global +pifPut8 = .text:0x8006C92C; // type:function size:0x24 scope:global +pifGetEEPROMSize = .text:0x8006C950; // type:function size:0x44 scope:global +pifSetEEPROMType = .text:0x8006C994; // type:function size:0x64 scope:global +pifGetEControllerType = .text:0x8006C9F8; // type:function size:0x18 scope:global +pifSetControllerType = .text:0x8006CA10; // type:function size:0x110 scope:global +pifContDataCrc = .text:0x8006CB20; // type:function size:0x178 scope:local +pifWriteRumble = .text:0x8006CC98; // type:function size:0x58 scope:global +pifReadRumble = .text:0x8006CCF0; // type:function size:0x124 scope:global +ramEvent = .text:0x8006CE14; // type:function size:0x238 scope:global +ramGetSize = .text:0x8006D04C; // type:function size:0x18 scope:global +ramSetSize = .text:0x8006D064; // type:function size:0x70 scope:global +ramWipe = .text:0x8006D0D4; // type:function size:0x48 scope:global +ramGetBuffer = .text:0x8006D11C; // type:function size:0x58 scope:global +ramGet64 = .text:0x8006D174; // type:function size:0x44 scope:local +ramGet32 = .text:0x8006D1B8; // type:function size:0x34 scope:local +ramGet16 = .text:0x8006D1EC; // type:function size:0x34 scope:local +ramGet8 = .text:0x8006D220; // type:function size:0x30 scope:local +ramPut64 = .text:0x8006D250; // type:function size:0x34 scope:local +ramPut32 = .text:0x8006D284; // type:function size:0x28 scope:local +ramPut16 = .text:0x8006D2AC; // type:function size:0x28 scope:local +ramPut8 = .text:0x8006D2D4; // type:function size:0x24 scope:local +ramGetRI64 = .text:0x8006D2F8; // type:function size:0x8 scope:local +ramGetRI32 = .text:0x8006D300; // type:function size:0x34 scope:local +ramGetRI16 = .text:0x8006D334; // type:function size:0x8 scope:local +ramGetRI8 = .text:0x8006D33C; // type:function size:0x8 scope:local +ramPutRI64 = .text:0x8006D344; // type:function size:0x8 scope:local +ramPutRI32 = .text:0x8006D34C; // type:function size:0x34 scope:local +ramPutRI16 = .text:0x8006D380; // type:function size:0x8 scope:local +ramPutRI8 = .text:0x8006D388; // type:function size:0x8 scope:local +ramGetControl64 = .text:0x8006D390; // type:function size:0x8 scope:local +ramGetControl32 = .text:0x8006D398; // type:function size:0x34 scope:local +ramGetControl16 = .text:0x8006D3CC; // type:function size:0x8 scope:local +ramGetControl8 = .text:0x8006D3D4; // type:function size:0x8 scope:local +ramPutControl64 = .text:0x8006D3DC; // type:function size:0x8 scope:local +ramPutControl32 = .text:0x8006D3E4; // type:function size:0x34 scope:local +ramPutControl16 = .text:0x8006D418; // type:function size:0x8 scope:local +ramPutControl8 = .text:0x8006D420; // type:function size:0x8 scope:local +romEvent = .text:0x8006D428; // type:function size:0x22C scope:global +romGetImage = .text:0x8006D654; // type:function size:0x48 scope:global +romSetImage = .text:0x8006D69C; // type:function size:0x174 scope:global +romSetCacheSize = .text:0x8006D810; // type:function size:0x9C scope:global +romUpdate = .text:0x8006D8AC; // type:function size:0x160 scope:global +romCopyImmediate = .text:0x8006DA0C; // type:function size:0x268 scope:global +romCopy = .text:0x8006DC74; // type:function size:0x298 scope:global +romGetDebug64 = .text:0x8006DF0C; // type:function size:0x14 scope:local +romGetDebug32 = .text:0x8006DF20; // type:function size:0x10 scope:local +romGetDebug16 = .text:0x8006DF30; // type:function size:0x10 scope:local +romGetDebug8 = .text:0x8006DF40; // type:function size:0x10 scope:local +romPutDebug64 = .text:0x8006DF50; // type:function size:0x8 scope:local +romPutDebug32 = .text:0x8006DF58; // type:function size:0x8 scope:local +romPutDebug16 = .text:0x8006DF60; // type:function size:0x8 scope:local +romPutDebug8 = .text:0x8006DF68; // type:function size:0x8 scope:local +romGet64 = .text:0x8006DF70; // type:function size:0x7C scope:local +romGet32 = .text:0x8006DFEC; // type:function size:0x70 scope:local +romGet16 = .text:0x8006E05C; // type:function size:0x70 scope:local +romGet8 = .text:0x8006E0CC; // type:function size:0x70 scope:local +romPut64 = .text:0x8006E13C; // type:function size:0x8 scope:local +romPut32 = .text:0x8006E144; // type:function size:0x8 scope:local +romPut16 = .text:0x8006E14C; // type:function size:0x8 scope:local +romPut8 = .text:0x8006E154; // type:function size:0x8 scope:local +romTestCode = .text:0x8006E15C; // type:function size:0xC4 scope:global +romGetCode = .text:0x8006E220; // type:function size:0x34 scope:global +romGetPC = .text:0x8006E254; // type:function size:0x1FC scope:global +romLoadFullOrPart = .text:0x8006E450; // type:function size:0x468 scope:local +romCopyUpdate = .text:0x8006E8B8; // type:function size:0x284 scope:local +__romCopyUpdate_Complete = .text:0x8006EB3C; // type:function size:0x1C scope:local +romLoadUpdate = .text:0x8006EB58; // type:function size:0x160 scope:local +__romLoadUpdate_Complete = .text:0x8006ECB8; // type:function size:0x1C scope:global +romCacheGame = .text:0x8006ECD4; // type:function size:0x5B0 scope:local +romCacheGame_ZELDA = .text:0x8006F284; // type:function size:0x280 scope:local +romLoadRange = .text:0x8006F504; // type:function size:0x14C scope:local +romLoadBlock = .text:0x8006F650; // type:function size:0xFC scope:local +__romLoadBlock_CompleteGCN = .text:0x8006F74C; // type:function size:0x1C scope:local +__romLoadBlock_Complete = .text:0x8006F768; // type:function size:0xF4 scope:local +romSetBlockCache = .text:0x8006F85C; // type:function size:0x258 scope:local +romMakeFreeCache = .text:0x8006FAB4; // type:function size:0x214 scope:local +romFindOldestBlock = .text:0x8006FCC8; // type:function size:0x1B0 scope:local +romFindFreeCache = .text:0x8006FE78; // type:function size:0xC4 scope:local +rdpEvent = .text:0x8006FF3C; // type:function size:0x1A4 scope:global +rdpGetSpan64 = .text:0x800700E0; // type:function size:0x8 scope:local +rdpGetSpan32 = .text:0x800700E8; // type:function size:0x70 scope:local +rdpGetSpan16 = .text:0x80070158; // type:function size:0x8 scope:local +rdpGetSpan8 = .text:0x80070160; // type:function size:0x8 scope:local +rdpPutSpan64 = .text:0x80070168; // type:function size:0x8 scope:local +rdpPutSpan32 = .text:0x80070170; // type:function size:0x64 scope:local +rdpPutSpan16 = .text:0x800701D4; // type:function size:0x8 scope:local +rdpPutSpan8 = .text:0x800701DC; // type:function size:0x8 scope:local +rdpGet64 = .text:0x800701E4; // type:function size:0x8 scope:local +rdpGet32 = .text:0x800701EC; // type:function size:0xA4 scope:local +rdpGet16 = .text:0x80070290; // type:function size:0x8 scope:local +rdpGet8 = .text:0x80070298; // type:function size:0x8 scope:local +rdpPut64 = .text:0x800702A0; // type:function size:0x8 scope:local +rdpPut32 = .text:0x800702A8; // type:function size:0x104 scope:local +rdpPut16 = .text:0x800703AC; // type:function size:0x8 scope:local +rdpPut8 = .text:0x800703B4; // type:function size:0x8 scope:local +rdpParseGBI = .text:0x800703BC; // type:function size:0x1290 scope:global +rdbEvent = .text:0x8007164C; // type:function size:0x108 scope:global +rdbGet64 = .text:0x80071754; // type:function size:0x8 scope:local +rdbGet32 = .text:0x8007175C; // type:function size:0x34 scope:local +rdbGet16 = .text:0x80071790; // type:function size:0x8 scope:local +rdbGet8 = .text:0x80071798; // type:function size:0x8 scope:local +rdbPut64 = .text:0x800717A0; // type:function size:0x8 scope:local +rdbPut32 = .text:0x800717A8; // type:function size:0x47C scope:local +rdbPut16 = .text:0x80071C24; // type:function size:0x8 scope:local +rdbPut8 = .text:0x80071C2C; // type:function size:0x8 scope:local +rspEvent = .text:0x80071C34; // type:function size:0x1D4 scope:global +rspUpdate = .text:0x80071E08; // type:function size:0x1E0 scope:global +rspFrameComplete = .text:0x80071FE8; // type:function size:0x54 scope:global +rspEnableABI = .text:0x8007203C; // type:function size:0x20 scope:global +rspInvalidateCache = .text:0x8007205C; // type:function size:0xD8 scope:global +rspGet64 = .text:0x80072134; // type:function size:0x6C scope:global +rspGet32 = .text:0x800721A0; // type:function size:0x14C scope:global +rspGet16 = .text:0x800722EC; // type:function size:0x54 scope:global +rspGet8 = .text:0x80072340; // type:function size:0x54 scope:global +rspPut64 = .text:0x80072394; // type:function size:0x6C scope:global +rspPut32 = .text:0x80072400; // type:function size:0x630 scope:global +rspPut16 = .text:0x80072A30; // type:function size:0x54 scope:global +rspPut8 = .text:0x80072A84; // type:function size:0x54 scope:global +rspParseGBI = .text:0x80072AD8; // type:function size:0x1B4 scope:local +rspParseGBI_Setup = .text:0x80072C8C; // type:function size:0x15C scope:local +rspLoadYield = .text:0x80072DE8; // type:function size:0x188 scope:local +rspSaveYield = .text:0x80072F70; // type:function size:0x178 scope:local +rspFindUCode = .text:0x800730E8; // type:function size:0x1160 scope:local +rspLoadMatrix = .text:0x80074248; // type:function size:0x288 scope:local +rspParseGBI_F3DEX2 = .text:0x800744D0; // type:function size:0x1BD0 scope:local +rspGeometryMode = .text:0x800760A0; // type:function size:0xE8 scope:local +rspParseGBI_F3DEX1 = .text:0x80076188; // type:function size:0x1684 scope:local +rspSetGeometryMode1 = .text:0x8007780C; // type:function size:0xC0 scope:local +rspSetupS2DEX = .text:0x800778CC; // type:function size:0x160 scope:local +rspObjMatrix = .text:0x80077A2C; // type:function size:0x168 scope:local +rspBgRectCopy = .text:0x80077B94; // type:function size:0x1A0 scope:global +rspObjRectangleR = .text:0x80077D34; // type:function size:0xAB4 scope:local +rspObjSprite = .text:0x800787E8; // type:function size:0xAC8 scope:local +rspObjRectangle = .text:0x800792B0; // type:function size:0x59C scope:local +rspObjLoadTxtr = .text:0x8007984C; // type:function size:0x44C scope:local +rspFillObjTxtr = .text:0x80079C98; // type:function size:0x160 scope:global +guS2DEmuBgRect1Cyc = .text:0x80079DF8; // type:function size:0x73C scope:local +tmemLoad = .text:0x8007A534; // type:function size:0x270 scope:local +tmemLoad_A = .text:0x8007A7A4; // type:function size:0xAC scope:local +tmemLoad_B = .text:0x8007A850; // type:function size:0x114 scope:local +rspSetImage = .text:0x8007A964; // type:function size:0x94 scope:global +rspFillObjBg = .text:0x8007A9F8; // type:function size:0xF8 scope:global +rspFillObjBgScale = .text:0x8007AAF0; // type:function size:0xE0 scope:global +rspFillObjSprite = .text:0x8007ABD0; // type:function size:0xC8 scope:local +Matrix4by4Identity = .text:0x8007AC98; // type:function size:0x50 scope:local +rspParseJPEG_DecodeZ = .text:0x8007ACE8; // type:function size:0xFC scope:local +rspParseJPEG_EncodeZ = .text:0x8007ADE4; // type:function size:0xFC scope:local +rspRecon420Z = .text:0x8007AEE0; // type:function size:0x3E0 scope:global +rspUndoRecon420Z = .text:0x8007B2C0; // type:function size:0x408 scope:global +rspUndoLoadColorBufferZ = .text:0x8007B6C8; // type:function size:0x94 scope:global +rspUndoDCTZ = .text:0x8007B75C; // type:function size:0x2D0 scope:global +rspUndoZigzagDataZ = .text:0x8007BA2C; // type:function size:0x428 scope:global +rspUndoQuantizeZ = .text:0x8007BE54; // type:function size:0x5CC scope:global +rspZigzagDataZ = .text:0x8007C420; // type:function size:0x528 scope:global +rspQuantizeZ = .text:0x8007C948; // type:function size:0x62C scope:local +rspDCTZ = .text:0x8007CF74; // type:function size:0x2D0 scope:local +rspCreateJPEGArraysZ = .text:0x8007D244; // type:function size:0x2F8 scope:local +rspParseJPEG_Decode = .text:0x8007D53C; // type:function size:0x84C scope:local +rspParseJPEG_Encode = .text:0x8007DD88; // type:function size:0xA38 scope:local +rspFormatYUV = .text:0x8007E7C0; // type:function size:0x1B0 scope:global +rspUndoYUVtoDCTBuf = .text:0x8007E970; // type:function size:0x788 scope:global +rspUndoDCT = .text:0x8007F0F8; // type:function size:0x2EC scope:global +rspUndoQuantize = .text:0x8007F3E4; // type:function size:0x184 scope:global +rspQuantize = .text:0x8007F568; // type:function size:0x17C scope:local +rspDCT = .text:0x8007F6E4; // type:function size:0x2D0 scope:local +rspYUVtoDCTBuf = .text:0x8007F9B4; // type:function size:0x6F0 scope:local +rspConvertRGBAtoYUV = .text:0x800800A4; // type:function size:0x198 scope:local +rspCreateJPEGArrays = .text:0x8008023C; // type:function size:0x8E4 scope:local +rspParseABI4 = .text:0x80080B20; // type:function size:0x71C scope:local +rspInitAudioDMEM4 = .text:0x8008123C; // type:function size:0x1464 scope:local +rspParseABI3 = .text:0x800826A0; // type:function size:0x570 scope:local +rspAMix3 = .text:0x80082C10; // type:function size:0x98 scope:local +rspAEnvMixer3 = .text:0x80082CA8; // type:function size:0x234 scope:local +rspInitAudioDMEM3 = .text:0x80082EDC; // type:function size:0x143C scope:local +rspParseABI2 = .text:0x80084318; // type:function size:0x6E8 scope:local +rspAPCM8Dec2 = .text:0x80084A00; // type:function size:0x894 scope:local +rspAEnvMixer2 = .text:0x80085294; // type:function size:0x2D8 scope:local +rspADistFilter2 = .text:0x8008556C; // type:function size:0x10C scope:local +rspAInterleave2 = .text:0x80085678; // type:function size:0x24C scope:local +rspAMix2 = .text:0x800858C4; // type:function size:0x88 scope:local +rspAFirFilter2 = .text:0x8008594C; // type:function size:0xDB0 scope:local +rspAResample2 = .text:0x800866FC; // type:function size:0x230 scope:local +rspANMix2 = .text:0x8008692C; // type:function size:0x6C scope:local +rspANoise2 = .text:0x80086998; // type:function size:0x2CC scope:local +rspAADPCMDec2Fast = .text:0x80086C64; // type:function size:0x938 scope:local +rspInitAudioDMEM2 = .text:0x8008759C; // type:function size:0x12C8 scope:local +rspParseABI1 = .text:0x80088864; // type:function size:0x360 scope:local +rspParseABI = .text:0x80088BC4; // type:function size:0x22C scope:local +rspASetVolume1 = .text:0x80088DF0; // type:function size:0x98 scope:local +rspASetBuffer1 = .text:0x80088E88; // type:function size:0x108 scope:local +rspAResample1 = .text:0x80088F90; // type:function size:0x2F8 scope:local +rspAMix1 = .text:0x80089288; // type:function size:0x98 scope:local +rspAEnvMixer1 = .text:0x80089320; // type:function size:0xBD8 scope:local +rspAPoleFilter1 = .text:0x80089EF8; // type:function size:0x964 scope:local +rspAADPCMDec1Fast = .text:0x8008A85C; // type:function size:0x8A0 scope:local +rspLoadADPCMCoefTable2 = .text:0x8008B0FC; // type:function size:0x17C scope:local +rspLoadADPCMCoefTable1 = .text:0x8008B278; // type:function size:0x17C scope:local +rspMultPolef = .text:0x8008B3F4; // type:function size:0x3F0 scope:global +rspDotProduct8x15MatrixBy15x1Vector = .text:0x8008B7E4; // type:function size:0x474 scope:global +rspInitAudioDMEM1 = .text:0x8008BC58; // type:function size:0x1330 scope:local +rspVMADN = .text:0x8008CF88; // type:function size:0x1A4 scope:local +rspVMUDN = .text:0x8008D12C; // type:function size:0x198 scope:local +mipsEvent = .text:0x8008D2C4; // type:function size:0x110 scope:global +mipsGet64 = .text:0x8008D3D4; // type:function size:0x8 scope:global +mipsGet32 = .text:0x8008D3DC; // type:function size:0x68 scope:global +mipsGet16 = .text:0x8008D444; // type:function size:0x8 scope:global +mipsGet8 = .text:0x8008D44C; // type:function size:0x8 scope:global +mipsPut64 = .text:0x8008D454; // type:function size:0x8 scope:global +mipsPut32 = .text:0x8008D45C; // type:function size:0x208 scope:global +mipsPut16 = .text:0x8008D664; // type:function size:0x8 scope:global +mipsPut8 = .text:0x8008D66C; // type:function size:0x8 scope:global +mipsResetInterrupt = .text:0x8008D674; // type:function size:0xA4 scope:global +mipsSetInterrupt = .text:0x8008D718; // type:function size:0xEC scope:global +diskEvent = .text:0x8008D804; // type:function size:0x19C scope:global +diskGetDrive64 = .text:0x8008D9A0; // type:function size:0x8 scope:global +diskGetDrive32 = .text:0x8008D9A8; // type:function size:0x38 scope:global +diskGetDrive16 = .text:0x8008D9E0; // type:function size:0x8 scope:global +diskGetDrive8 = .text:0x8008D9E8; // type:function size:0x8 scope:global +diskPutDrive64 = .text:0x8008D9F0; // type:function size:0x8 scope:global +diskPutDrive32 = .text:0x8008D9F8; // type:function size:0x2C scope:global +diskPutDrive16 = .text:0x8008DA24; // type:function size:0x8 scope:global +diskPutDrive8 = .text:0x8008DA2C; // type:function size:0x8 scope:global +diskGetROM64 = .text:0x8008DA34; // type:function size:0x14 scope:global +diskGetROM32 = .text:0x8008DA48; // type:function size:0x10 scope:global +diskGetROM16 = .text:0x8008DA58; // type:function size:0x10 scope:global +diskGetROM8 = .text:0x8008DA68; // type:function size:0x10 scope:global +diskPutROM64 = .text:0x8008DA78; // type:function size:0x8 scope:global +diskPutROM32 = .text:0x8008DA80; // type:function size:0x8 scope:global +diskPutROM16 = .text:0x8008DA88; // type:function size:0x8 scope:global +diskPutROM8 = .text:0x8008DA90; // type:function size:0x8 scope:global +flashEvent = .text:0x8008DA98; // type:function size:0x120 scope:global +flashGet64 = .text:0x8008DBB8; // type:function size:0x8 scope:local +flashGet32 = .text:0x8008DBC0; // type:function size:0xA4 scope:local +flashGet16 = .text:0x8008DC64; // type:function size:0x8 scope:local +flashGet8 = .text:0x8008DC6C; // type:function size:0x8 scope:local +flashPut64 = .text:0x8008DC74; // type:function size:0x8 scope:local +flashPut32 = .text:0x8008DC7C; // type:function size:0x2D0 scope:local +flashPut16 = .text:0x8008DF4C; // type:function size:0x8 scope:local +flashPut8 = .text:0x8008DF54; // type:function size:0x8 scope:local +flashTransferFLASH = .text:0x8008DF5C; // type:function size:0x114 scope:global +flashCopyFLASH = .text:0x8008E070; // type:function size:0x144 scope:global +sramEvent = .text:0x8008E1B4; // type:function size:0x100 scope:global +sramGet64 = .text:0x8008E2B4; // type:function size:0x30 scope:local +sramGet32 = .text:0x8008E2E4; // type:function size:0x30 scope:local +sramGet16 = .text:0x8008E314; // type:function size:0x30 scope:local +sramGet8 = .text:0x8008E344; // type:function size:0x30 scope:local +sramPut64 = .text:0x8008E374; // type:function size:0x30 scope:local +sramPut32 = .text:0x8008E3A4; // type:function size:0x30 scope:local +sramPut16 = .text:0x8008E3D4; // type:function size:0x30 scope:local +sramPut8 = .text:0x8008E404; // type:function size:0x30 scope:local +sramTransferSRAM = .text:0x8008E434; // type:function size:0x78 scope:global +sramCopySRAM = .text:0x8008E4AC; // type:function size:0x78 scope:global +audioEvent = .text:0x8008E524; // type:function size:0x120 scope:global +audioEnable = .text:0x8008E644; // type:function size:0x58 scope:global +audioGet64 = .text:0x8008E69C; // type:function size:0x8 scope:global +audioGet32 = .text:0x8008E6A4; // type:function size:0x108 scope:global +audioGet16 = .text:0x8008E7AC; // type:function size:0x8 scope:global +audioGet8 = .text:0x8008E7B4; // type:function size:0x8 scope:global +audioPut64 = .text:0x8008E7BC; // type:function size:0x8 scope:global +audioPut32 = .text:0x8008E7C4; // type:function size:0x148 scope:global +audioPut16 = .text:0x8008E90C; // type:function size:0x8 scope:global +audioPut8 = .text:0x8008E914; // type:function size:0x8 scope:global +videoEvent = .text:0x8008E91C; // type:function size:0x154 scope:global +videoForceRetrace = .text:0x8008EA70; // type:function size:0x6C scope:global +videoGet64 = .text:0x8008EADC; // type:function size:0x8 scope:global +videoGet32 = .text:0x8008EAE4; // type:function size:0x11C scope:global +videoGet16 = .text:0x8008EC00; // type:function size:0x8 scope:global +videoGet8 = .text:0x8008EC08; // type:function size:0x8 scope:global +videoPut64 = .text:0x8008EC10; // type:function size:0x8 scope:global +videoPut32 = .text:0x8008EC18; // type:function size:0x274 scope:global +videoPut16 = .text:0x8008EE8C; // type:function size:0x8 scope:global +videoPut8 = .text:0x8008EE94; // type:function size:0x8 scope:global +serialEvent = .text:0x8008EE9C; // type:function size:0x100 scope:global +serialGet64 = .text:0x8008EF9C; // type:function size:0x8 scope:global +serialGet32 = .text:0x8008EFA4; // type:function size:0x64 scope:global +serialGet16 = .text:0x8008F008; // type:function size:0x8 scope:global +serialGet8 = .text:0x8008F010; // type:function size:0x8 scope:global +serialPut64 = .text:0x8008F018; // type:function size:0x8 scope:global +serialPut32 = .text:0x8008F020; // type:function size:0x140 scope:global +serialPut16 = .text:0x8008F160; // type:function size:0x8 scope:global +serialPut8 = .text:0x8008F168; // type:function size:0x8 scope:global +libraryEvent = .text:0x8008F170; // type:function size:0x140 scope:global +libraryCall = .text:0x8008F2B0; // type:function size:0xF8 scope:global +libraryFunctionReplaced = .text:0x8008F3A8; // type:function size:0xF4 scope:global +librarySearch = .text:0x8008F49C; // type:function size:0x164 scope:local +libraryTestFunction = .text:0x8008F600; // type:function size:0x5E8 scope:global +libraryFindFunctions = .text:0x8008FBE8; // type:function size:0x510 scope:local +libraryFindVariables = .text:0x800900F8; // type:function size:0x734 scope:local +libraryFindException = .text:0x8009082C; // type:function size:0x300 scope:local +zeldaLoadSZS_Exit = .text:0x80090B2C; // type:function size:0x14 scope:global +zeldaLoadSZS_Entry = .text:0x80090B40; // type:function size:0x14 scope:global +osViSwapBuffer_Entry = .text:0x80090B54; // type:function size:0x68 scope:global +dmaSoundRomHandler_ZELDA1 = .text:0x80090BBC; // type:function size:0x128 scope:global +pictureSnap_Zelda2 = .text:0x80090CE4; // type:function size:0x10 scope:global +starfoxCopy = .text:0x80090CF4; // type:function size:0x168 scope:global +osEepromLongWrite = .text:0x80090E5C; // type:function size:0xAC scope:global +osEepromLongRead = .text:0x80090F08; // type:function size:0xAC scope:global +osEepromWrite = .text:0x80090FB4; // type:function size:0x78 scope:global +osEepromRead = .text:0x8009102C; // type:function size:0x78 scope:global +__osEepStatus = .text:0x800910A4; // type:function size:0xD8 scope:global +osAiSetNextBuffer = .text:0x8009117C; // type:function size:0x10C scope:global +osAiSetFrequency = .text:0x80091288; // type:function size:0x12C scope:global +guLookAtReflect = .text:0x800913B4; // type:function size:0x5D4 scope:global +guLookAtReflectF = .text:0x80091988; // type:function size:0x554 scope:global +guLookAtHilite = .text:0x80091EDC; // type:function size:0x9D4 scope:global +guLookAtHiliteF = .text:0x800928B0; // type:function size:0x954 scope:global +guLookAt = .text:0x80093204; // type:function size:0x418 scope:global +guLookAtF = .text:0x8009361C; // type:function size:0x38C scope:global +guRotate = .text:0x800939A8; // type:function size:0x34C scope:global +guRotateF = .text:0x80093CF4; // type:function size:0x310 scope:global +guTranslate = .text:0x80094004; // type:function size:0x1EC scope:global +guTranslateF = .text:0x800941F0; // type:function size:0x120 scope:global +guScale = .text:0x80094310; // type:function size:0x1EC scope:global +guScaleF = .text:0x800944FC; // type:function size:0x128 scope:global +GenPerspective_1080 = .text:0x80094624; // type:function size:0xB0 scope:global +guPerspective = .text:0x800946D4; // type:function size:0x2C4 scope:global +guPerspectiveF = .text:0x80094998; // type:function size:0x25C scope:global +guOrtho = .text:0x80094BF4; // type:function size:0x2DC scope:global +guOrthoF = .text:0x80094ED0; // type:function size:0x270 scope:global +guMtxIdent = .text:0x80095140; // type:function size:0xB4 scope:global +guMtxIdentF = .text:0x800951F4; // type:function size:0xD4 scope:global +guMtxF2L = .text:0x800952C8; // type:function size:0x208 scope:global +guMtxCatF = .text:0x800954D0; // type:function size:0x318 scope:global +osVirtualToPhysical = .text:0x800957E8; // type:function size:0x74 scope:global +osPhysicalToVirtual = .text:0x8009585C; // type:function size:0x10 scope:global +_memcpy = .text:0x8009586C; // type:function size:0x5C scope:global +_bcopy = .text:0x800958C8; // type:function size:0x5C scope:global +_bzero = .text:0x80095924; // type:function size:0x44 scope:global +__sinf = .text:0x80095968; // type:function size:0x34 scope:local +__cosf = .text:0x8009599C; // type:function size:0x34 scope:local +__osSpSetStatus = .text:0x800959D0; // type:function size:0x50 scope:global +__osRestoreInt = .text:0x80095A20; // type:function size:0x8C scope:global +__osDisableInt = .text:0x80095AAC; // type:function size:0x90 scope:local +osInvalICache = .text:0x80095B3C; // type:function size:0x88 scope:local +osGetMemSize = .text:0x80095BC4; // type:function size:0x54 scope:local +__osDispatchThread = .text:0x80095C18; // type:function size:0x5A4 scope:local +__osPopThread = .text:0x800961BC; // type:function size:0xD4 scope:local +__osEnqueueThread = .text:0x80096290; // type:function size:0x228 scope:local +__osEnqueueAndYield = .text:0x800964B8; // type:function size:0x2EC scope:local +send_mesg = .text:0x800967A4; // type:function size:0x390 scope:local +__osException = .text:0x80096B34; // type:function size:0xCE4 scope:local +peripheralEvent = .text:0x80097818; // type:function size:0x108 scope:global +peripheralGet64 = .text:0x80097920; // type:function size:0x8 scope:global +peripheralGet32 = .text:0x80097928; // type:function size:0x100 scope:global +peripheralGet16 = .text:0x80097A28; // type:function size:0x8 scope:global +peripheralGet8 = .text:0x80097A30; // type:function size:0x8 scope:global +peripheralPut64 = .text:0x80097A38; // type:function size:0x8 scope:global +peripheralPut32 = .text:0x80097A40; // type:function size:0x384 scope:global +peripheralPut16 = .text:0x80097DC4; // type:function size:0x8 scope:global +peripheralPut8 = .text:0x80097DCC; // type:function size:0x8 scope:global +peripheralDMA_Complete = .text:0x80097DD4; // type:function size:0x44 scope:global +SetTevStageTable = .text:0x80097E18; // type:function size:0xC0 scope:global +SetTevStages = .text:0x80097ED8; // type:function size:0x384 scope:global +SetNumTexGensChans = .text:0x8009825C; // type:function size:0x1C0 scope:global +SetTableTevStages = .text:0x8009841C; // type:function size:0x304 scope:local +BuildCombineModeTev = .text:0x80098720; // type:function size:0x43C scope:global +BuildCycle = .text:0x80098B5C; // type:function size:0xEC scope:global +SetupStage = .text:0x80098C48; // type:function size:0x2AF0 scope:global +AddAlphaTevOrder = .text:0x8009B738; // type:function size:0x120 scope:local +SetAlpha = .text:0x8009B858; // type:function size:0x138 scope:global +SetColor = .text:0x8009B990; // type:function size:0x1A8 scope:global +PPCMfmsr = .text:0x8009BB38; // type:function size:0x8 scope:global +PPCMtmsr = .text:0x8009BB40; // type:function size:0x8 scope:global +PPCMfhid0 = .text:0x8009BB48; // type:function size:0x8 scope:global +PPCMthid0 = .text:0x8009BB50; // type:function size:0x8 scope:global +PPCMfl2cr = .text:0x8009BB58; // type:function size:0x8 scope:global +PPCMtl2cr = .text:0x8009BB60; // type:function size:0x8 scope:global +PPCMtdec = .text:0x8009BB68; // type:function size:0x8 scope:weak +PPCSync = .text:0x8009BB70; // type:function size:0x8 scope:global +PPCHalt = .text:0x8009BB78; // type:function size:0x14 scope:weak +PPCMtmmcr0 = .text:0x8009BB8C; // type:function size:0x8 scope:global +PPCMtmmcr1 = .text:0x8009BB94; // type:function size:0x8 scope:global +PPCMtpmc1 = .text:0x8009BB9C; // type:function size:0x8 scope:global +PPCMtpmc2 = .text:0x8009BBA4; // type:function size:0x8 scope:global +PPCMtpmc3 = .text:0x8009BBAC; // type:function size:0x8 scope:global +PPCMtpmc4 = .text:0x8009BBB4; // type:function size:0x8 scope:global +PPCMffpscr = .text:0x8009BBBC; // type:function size:0x20 scope:global +PPCMtfpscr = .text:0x8009BBDC; // type:function size:0x28 scope:global +PPCMfhid2 = .text:0x8009BC04; // type:function size:0x8 scope:global +PPCMthid2 = .text:0x8009BC0C; // type:function size:0x8 scope:global +PPCMtwpar = .text:0x8009BC14; // type:function size:0x8 scope:global +PPCDisableSpeculation = .text:0x8009BC1C; // type:function size:0x28 scope:global +PPCSetFpNonIEEEMode = .text:0x8009BC44; // type:function size:0x8 scope:global +__OSFPRInit = .text:0x8009BC4C; // type:function size:0x128 scope:global +OSGetConsoleType = .text:0x8009BD74; // type:function size:0x28 scope:global +ClearArena = .text:0x8009BD9C; // type:function size:0x128 scope:local +InquiryCallback = .text:0x8009BEC4; // type:function size:0x3C scope:local +OSInit = .text:0x8009BF00; // type:function size:0x3D8 scope:global +OSExceptionInit = .text:0x8009C2D8; // type:function size:0x280 scope:local +__OSDBIntegrator = .text:0x8009C558; // type:function size:0x24 scope:local +__OSDBINTSTART = .text:0x8009C558; // type:label scope:global +__OSDBJump = .text:0x8009C57C; // type:function size:0x4 scope:local +__OSDBJUMPSTART = .text:0x8009C57C; // type:label scope:global +__OSDBJUMPEND = .text:0x8009C580; // type:label scope:global +__OSSetExceptionHandler = .text:0x8009C580; // type:function size:0x1C scope:global +__OSGetExceptionHandler = .text:0x8009C59C; // type:function size:0x14 scope:global +OSExceptionVector = .text:0x8009C5B0; // type:function size:0x9C scope:local +__OSEVStart = .text:0x8009C5B0; // type:label scope:global +__DBVECTOR = .text:0x8009C608; // type:label scope:global data:4byte +__OSEVSetNumber = .text:0x8009C618; // type:label scope:global data:4byte +__OSEVEnd = .text:0x8009C648; // type:label scope:global +OSDefaultExceptionHandler = .text:0x8009C64C; // type:function size:0x58 scope:global +__OSPSInit = .text:0x8009C6A4; // type:function size:0x54 scope:global +__OSGetDIConfig = .text:0x8009C6F8; // type:function size:0x14 scope:global +OSRegisterVersion = .text:0x8009C70C; // type:function size:0x2C scope:global +OSInitAlarm = .text:0x8009C738; // type:function size:0x58 scope:global +OSCreateAlarm = .text:0x8009C790; // type:function size:0x10 scope:global +InsertAlarm = .text:0x8009C7A0; // type:function size:0x250 scope:local +OSSetAlarm = .text:0x8009C9F0; // type:function size:0x68 scope:global +OSCancelAlarm = .text:0x8009CA58; // type:function size:0x11C scope:global +DecrementerExceptionCallback = .text:0x8009CB74; // type:function size:0x230 scope:local +DecrementerExceptionHandler = .text:0x8009CDA4; // type:function size:0x50 scope:local +OnReset = .text:0x8009CDF4; // type:function size:0xA0 scope:local +DLInsert = .text:0x8009CE94; // type:function size:0xAC scope:local +OSAllocFromHeap = .text:0x8009CF40; // type:function size:0xFC scope:global +OSFreeToHeap = .text:0x8009D03C; // type:function size:0x7C scope:global +OSSetCurrentHeap = .text:0x8009D0B8; // type:function size:0x10 scope:global +OSInitAlloc = .text:0x8009D0C8; // type:function size:0x70 scope:global +OSCreateHeap = .text:0x8009D138; // type:function size:0x6C scope:global +OSCheckHeap = .text:0x8009D1A4; // type:function size:0x360 scope:global +OSGetArenaHi = .text:0x8009D504; // type:function size:0x8 scope:global +OSGetArenaLo = .text:0x8009D50C; // type:function size:0x8 scope:global +OSSetArenaHi = .text:0x8009D514; // type:function size:0x8 scope:global +OSSetArenaLo = .text:0x8009D51C; // type:function size:0x8 scope:global +__OSInitAudioSystem = .text:0x8009D524; // type:function size:0x1BC scope:global +__OSStopAudioSystem = .text:0x8009D6E0; // type:function size:0xD8 scope:global +DCEnable = .text:0x8009D7B8; // type:function size:0x14 scope:global +DCInvalidateRange = .text:0x8009D7CC; // type:function size:0x2C scope:global +DCFlushRange = .text:0x8009D7F8; // type:function size:0x30 scope:global +DCStoreRange = .text:0x8009D828; // type:function size:0x30 scope:global +DCFlushRangeNoSync = .text:0x8009D858; // type:function size:0x2C scope:global +DCZeroRange = .text:0x8009D884; // type:function size:0x2C scope:global +ICInvalidateRange = .text:0x8009D8B0; // type:function size:0x34 scope:global +ICFlashInvalidate = .text:0x8009D8E4; // type:function size:0x10 scope:global +ICEnable = .text:0x8009D8F4; // type:function size:0x14 scope:global +__LCEnable = .text:0x8009D908; // type:function size:0xCC scope:local +LCEnable = .text:0x8009D9D4; // type:function size:0x38 scope:global +LCDisable = .text:0x8009DA0C; // type:function size:0x28 scope:global +LCStoreBlocks = .text:0x8009DA34; // type:function size:0x24 scope:global +LCStoreData = .text:0x8009DA58; // type:function size:0xAC scope:global +LCQueueWait = .text:0x8009DB04; // type:function size:0x14 scope:global +L2GlobalInvalidate = .text:0x8009DB18; // type:function size:0x98 scope:global +DMAErrorHandler = .text:0x8009DBB0; // type:function size:0x160 scope:global +__OSCacheInit = .text:0x8009DD10; // type:function size:0xF4 scope:global +__OSLoadFPUContext = .text:0x8009DE04; // type:function size:0x124 scope:local +__OSSaveFPUContext = .text:0x8009DF28; // type:function size:0x128 scope:local +OSSaveFPUContext = .text:0x8009E050; // type:function size:0x8 scope:global +OSSetCurrentContext = .text:0x8009E058; // type:function size:0x5C scope:global +OSGetCurrentContext = .text:0x8009E0B4; // type:function size:0xC scope:global +OSSaveContext = .text:0x8009E0C0; // type:function size:0x80 scope:global +OSLoadContext = .text:0x8009E140; // type:function size:0xD8 scope:global +OSGetStackPointer = .text:0x8009E218; // type:function size:0x8 scope:global +OSClearContext = .text:0x8009E220; // type:function size:0x24 scope:global +OSInitContext = .text:0x8009E244; // type:function size:0xBC scope:global +OSDumpContext = .text:0x8009E300; // type:function size:0x2A8 scope:global +OSSwitchFPUContext = .text:0x8009E5A8; // type:function size:0x84 scope:local +__OSContextInit = .text:0x8009E62C; // type:function size:0x48 scope:global +OSReport = .text:0x8009E674; // type:function size:0x80 scope:weak +OSPanic = .text:0x8009E6F4; // type:function size:0x12C scope:weak +OSSetErrorHandler = .text:0x8009E820; // type:function size:0x218 scope:global +__OSUnhandledException = .text:0x8009EA38; // type:function size:0x2E8 scope:global +OSGetFontEncode = .text:0x8009ED20; // type:function size:0x58 scope:global +OSDisableInterrupts = .text:0x8009ED78; // type:function size:0x14 scope:global +__RAS_OSDisableInterrupts_begin = .text:0x8009ED78; // type:label scope:global +__RAS_OSDisableInterrupts_end = .text:0x8009ED84; // type:label scope:global +OSEnableInterrupts = .text:0x8009ED8C; // type:function size:0x14 scope:global +OSRestoreInterrupts = .text:0x8009EDA0; // type:function size:0x24 scope:global +__OSSetInterruptHandler = .text:0x8009EDC4; // type:function size:0x1C scope:global +__OSGetInterruptHandler = .text:0x8009EDE0; // type:function size:0x14 scope:global +__OSInterruptInit = .text:0x8009EDF4; // type:function size:0x74 scope:global +SetInterruptMask = .text:0x8009EE68; // type:function size:0x2D8 scope:local +__OSMaskInterrupts = .text:0x8009F140; // type:function size:0x88 scope:global +__OSUnmaskInterrupts = .text:0x8009F1C8; // type:function size:0x88 scope:global +__OSDispatchInterrupt = .text:0x8009F250; // type:function size:0x344 scope:global +ExternalInterruptHandler = .text:0x8009F594; // type:function size:0x50 scope:local +__OSModuleInit = .text:0x8009F5E4; // type:function size:0x18 scope:global +OSInitMessageQueue = .text:0x8009F5FC; // type:function size:0x60 scope:global +OSSendMessage = .text:0x8009F65C; // type:function size:0xC8 scope:global +OSReceiveMessage = .text:0x8009F724; // type:function size:0xDC scope:global +OnReset = .text:0x8009F800; // type:function size:0x3C scope:local +MEMIntrruptHandler = .text:0x8009F83C; // type:function size:0x6C scope:local +Config24MB = .text:0x8009F8A8; // type:function size:0x80 scope:local +Config48MB = .text:0x8009F928; // type:function size:0x80 scope:local +RealMode = .text:0x8009F9A8; // type:function size:0x18 scope:local +__OSInitMemoryProtection = .text:0x8009F9C0; // type:function size:0x118 scope:global +__OSUnlockAllMutex = .text:0x8009FAD8; // type:function size:0x70 scope:global +Run = .text:0x8009FB48; // type:function size:0x10 scope:local +Callback = .text:0x8009FB58; // type:function size:0xC scope:local +__OSReboot = .text:0x8009FB64; // type:function size:0x340 scope:global +OSRegisterResetFunction = .text:0x8009FEA4; // type:function size:0x84 scope:global +Reset = .text:0x8009FF28; // type:function size:0x70 scope:local +__OSDoHotReset = .text:0x8009FF98; // type:function size:0x48 scope:global +OSResetSystem = .text:0x8009FFE0; // type:function size:0x2B8 scope:global +OSGetResetCode = .text:0x800A0298; // type:function size:0x30 scope:global +__OSResetSWInterruptHandler = .text:0x800A02C8; // type:function size:0xF4 scope:global +OSGetResetButtonState = .text:0x800A03BC; // type:function size:0x298 scope:global +WriteSramCallback = .text:0x800A0654; // type:function size:0x60 scope:local +WriteSram = .text:0x800A06B4; // type:function size:0x118 scope:local +__OSInitSram = .text:0x800A07CC; // type:function size:0x13C scope:global +__OSLockSram = .text:0x800A0908; // type:function size:0x5C scope:global +__OSLockSramEx = .text:0x800A0964; // type:function size:0x5C scope:global +UnlockSram = .text:0x800A09C0; // type:function size:0x33C scope:local +__OSUnlockSram = .text:0x800A0CFC; // type:function size:0x24 scope:global +__OSUnlockSramEx = .text:0x800A0D20; // type:function size:0x24 scope:global +__OSSyncSram = .text:0x800A0D44; // type:function size:0x10 scope:global +OSGetSoundMode = .text:0x800A0D54; // type:function size:0x80 scope:global +OSSetSoundMode = .text:0x800A0DD4; // type:function size:0xA4 scope:global +OSGetWirelessID = .text:0x800A0E78; // type:function size:0x84 scope:global +OSSetWirelessID = .text:0x800A0EFC; // type:function size:0xAC scope:global +OSGetGbsMode = .text:0x800A0FA8; // type:function size:0x70 scope:global +OSSetGbsMode = .text:0x800A1018; // type:function size:0xB8 scope:global +SystemCallVector = .text:0x800A10D0; // type:function size:0x20 scope:local +__OSSystemCallVectorStart = .text:0x800A10D0; // type:label scope:global +__OSSystemCallVectorEnd = .text:0x800A10EC; // type:label scope:global +__OSInitSystemCall = .text:0x800A10F0; // type:function size:0x64 scope:global +DefaultSwitchThreadCallback = .text:0x800A1154; // type:function size:0x4 scope:local +__OSThreadInit = .text:0x800A1158; // type:function size:0x158 scope:global +OSInitThreadQueue = .text:0x800A12B0; // type:function size:0x10 scope:global +OSGetCurrentThread = .text:0x800A12C0; // type:function size:0xC scope:global +OSDisableScheduler = .text:0x800A12CC; // type:function size:0x40 scope:global +OSEnableScheduler = .text:0x800A130C; // type:function size:0x40 scope:global +UnsetRun = .text:0x800A134C; // type:function size:0x68 scope:local +__OSGetEffectivePriority = .text:0x800A13B4; // type:function size:0x3C scope:global +SetEffectivePriority = .text:0x800A13F0; // type:function size:0x1C0 scope:local +SelectThread = .text:0x800A15B0; // type:function size:0x228 scope:local +__OSReschedule = .text:0x800A17D8; // type:function size:0x30 scope:global +OSCreateThread = .text:0x800A1808; // type:function size:0x1E8 scope:global +OSExitThread = .text:0x800A19F0; // type:function size:0xE4 scope:global +OSCancelThread = .text:0x800A1AD4; // type:function size:0x1BC scope:global +OSResumeThread = .text:0x800A1C90; // type:function size:0x288 scope:global +OSSuspendThread = .text:0x800A1F18; // type:function size:0x170 scope:global +OSSleepThread = .text:0x800A2088; // type:function size:0xEC scope:global +OSWakeupThread = .text:0x800A2174; // type:function size:0x104 scope:global +OSClearStack = .text:0x800A2278; // type:function size:0xAC scope:global +OSGetTime = .text:0x800A2324; // type:function size:0x18 scope:global +OSGetTick = .text:0x800A233C; // type:function size:0x8 scope:global +__OSGetSystemTime = .text:0x800A2344; // type:function size:0x64 scope:global +GetDates = .text:0x800A23A8; // type:function size:0x19C scope:local +OSTicksToCalendarTime = .text:0x800A2544; // type:function size:0x204 scope:global +InitMetroTRK_BBA = .text:0x800A2748; // type:function size:0x4 scope:weak +__init_user = .text:0x800A274C; // type:function size:0x20 scope:global +__init_cpp = .text:0x800A276C; // type:function size:0x54 scope:local +_ExitProcess = .text:0x800A27C0; // type:function size:0x20 scope:global +SetExiInterruptMask = .text:0x800A27E0; // type:function size:0xF4 scope:local +EXIImm = .text:0x800A28D4; // type:function size:0x25C scope:global +EXIImmEx = .text:0x800A2B30; // type:function size:0xA0 scope:global +EXIDma = .text:0x800A2BD0; // type:function size:0xEC scope:global +EXISync = .text:0x800A2CBC; // type:function size:0x24C scope:global +EXIClearInterrupts = .text:0x800A2F08; // type:function size:0x48 scope:global +EXISetExiCallback = .text:0x800A2F50; // type:function size:0x7C scope:global +__EXIProbe = .text:0x800A2FCC; // type:function size:0x174 scope:local +EXIProbe = .text:0x800A3140; // type:function size:0x80 scope:global +EXIProbeEx = .text:0x800A31C0; // type:function size:0xB4 scope:global +EXIAttach = .text:0x800A3274; // type:function size:0x10C scope:global +EXIDetach = .text:0x800A3380; // type:function size:0xBC scope:global +EXISelect = .text:0x800A343C; // type:function size:0x12C scope:global +EXIDeselect = .text:0x800A3568; // type:function size:0x110 scope:global +EXIIntrruptHandler = .text:0x800A3678; // type:function size:0xC8 scope:local +TCIntrruptHandler = .text:0x800A3740; // type:function size:0x218 scope:local +EXTIntrruptHandler = .text:0x800A3958; // type:function size:0xD0 scope:local +EXIInit = .text:0x800A3A28; // type:function size:0x1D4 scope:global +EXILock = .text:0x800A3BFC; // type:function size:0xF4 scope:global +EXIUnlock = .text:0x800A3CF0; // type:function size:0xDC scope:global +EXIGetState = .text:0x800A3DCC; // type:function size:0x18 scope:global +UnlockedHandler = .text:0x800A3DE4; // type:function size:0x28 scope:local +EXIGetID = .text:0x800A3E0C; // type:function size:0x3B0 scope:global +ProbeBarnacle = .text:0x800A41BC; // type:function size:0x18C scope:local +__OSEnableBarnacle = .text:0x800A4348; // type:function size:0x1BC scope:global +InitializeUART = .text:0x800A4504; // type:function size:0x70 scope:global +ReadUARTN = .text:0x800A4574; // type:function size:0x8 scope:global +WriteUARTN = .text:0x800A457C; // type:function size:0x21C scope:global +SIBusy = .text:0x800A4798; // type:function size:0x20 scope:global +SIIsChanBusy = .text:0x800A47B8; // type:function size:0x3C scope:global +CompleteTransfer = .text:0x800A47F4; // type:function size:0x2FC scope:local +SIInterruptHandler = .text:0x800A4AF0; // type:function size:0x344 scope:local +SIEnablePollingInterrupt = .text:0x800A4E34; // type:function size:0x98 scope:local +SIRegisterPollingHandler = .text:0x800A4ECC; // type:function size:0xCC scope:global +SIUnregisterPollingHandler = .text:0x800A4F98; // type:function size:0xF4 scope:global +SIInit = .text:0x800A508C; // type:function size:0xB4 scope:global +__SITransfer = .text:0x800A5140; // type:function size:0x20C scope:local +SIGetStatus = .text:0x800A534C; // type:function size:0x7C scope:global +SISetCommand = .text:0x800A53C8; // type:function size:0x14 scope:global +SITransferCommands = .text:0x800A53DC; // type:function size:0x10 scope:global +SISetXY = .text:0x800A53EC; // type:function size:0x6C scope:global +SIEnablePolling = .text:0x800A5458; // type:function size:0x9C scope:global +SIDisablePolling = .text:0x800A54F4; // type:function size:0x6C scope:global +SIGetResponseRaw = .text:0x800A5560; // type:function size:0xD4 scope:local +SIGetResponse = .text:0x800A5634; // type:function size:0xC4 scope:global +AlarmHandler = .text:0x800A56F8; // type:function size:0x8C scope:local +SITransfer = .text:0x800A5784; // type:function size:0x16C scope:global +GetTypeCallback = .text:0x800A58F0; // type:function size:0x298 scope:local +SIGetType = .text:0x800A5B88; // type:function size:0x1C4 scope:global +SIGetTypeAsync = .text:0x800A5D4C; // type:function size:0x13C scope:global +SISetSamplingRate = .text:0x800A5E88; // type:function size:0xE4 scope:global +SIRefreshSamplingRate = .text:0x800A5F6C; // type:function size:0x24 scope:global +__VIRetraceHandler = .text:0x800A5F90; // type:function size:0x274 scope:local +VISetPostRetraceCallback = .text:0x800A6204; // type:function size:0x44 scope:global +getTiming = .text:0x800A6248; // type:function size:0xA0 scope:local +__VIInit = .text:0x800A62E8; // type:function size:0x200 scope:global +VIInit = .text:0x800A64E8; // type:function size:0x4B0 scope:global +VIWaitForRetrace = .text:0x800A6998; // type:function size:0x54 scope:global +setFbbRegs = .text:0x800A69EC; // type:function size:0x2D4 scope:local +setVerticalRegs = .text:0x800A6CC0; // type:function size:0x1A0 scope:local +VIConfigure = .text:0x800A6E60; // type:function size:0x828 scope:global +VIFlush = .text:0x800A7688; // type:function size:0x130 scope:global +VISetNextFrameBuffer = .text:0x800A77B8; // type:function size:0x6C scope:global +VISetBlack = .text:0x800A7824; // type:function size:0x7C scope:global +GetCurrentDisplayPosition = .text:0x800A78A0; // type:function size:0x3C scope:local +getCurrentFieldEvenOdd = .text:0x800A78DC; // type:function size:0x68 scope:local +VIGetNextField = .text:0x800A7944; // type:function size:0x9C scope:global +VIGetCurrentLine = .text:0x800A79E0; // type:function size:0x98 scope:global +VIGetTvFormat = .text:0x800A7A78; // type:function size:0x68 scope:global +__VIDisplayPositionToXY = .text:0x800A7AE0; // type:function size:0x21C scope:global +__VIGetCurrentPosition = .text:0x800A7CFC; // type:function size:0x60 scope:global +DBInit = .text:0x800A7D5C; // type:function size:0x28 scope:global +__DBExceptionDestinationAux = .text:0x800A7D84; // type:function size:0x48 scope:global +__DBExceptionDestination = .text:0x800A7DCC; // type:function size:0x10 scope:global +__DBIsExceptionMarked = .text:0x800A7DDC; // type:function size:0x1C scope:global +DBPrintf = .text:0x800A7DF8; // type:function size:0x50 scope:global +PSMTXIdentity = .text:0x800A7E48; // type:function size:0x2C scope:global +PSMTXConcat = .text:0x800A7E74; // type:function size:0xCC scope:global +PSMTXTrans = .text:0x800A7F40; // type:function size:0x34 scope:global +PSMTXTransApply = .text:0x800A7F74; // type:function size:0x4C scope:global +PSMTXScale = .text:0x800A7FC0; // type:function size:0x28 scope:global +PSMTXScaleApply = .text:0x800A7FE8; // type:function size:0x58 scope:global +PSMTXMultVec = .text:0x800A8040; // type:function size:0x54 scope:global +C_MTXPerspective = .text:0x800A8094; // type:function size:0xD0 scope:global +C_MTXOrtho = .text:0x800A8164; // type:function size:0x98 scope:global +PSMTX44Concat = .text:0x800A81FC; // type:function size:0x104 scope:global +__GXDefaultTexRegionCallback = .text:0x800A8300; // type:function size:0xFC scope:local +__GXDefaultTlutRegionCallback = .text:0x800A83FC; // type:function size:0x24 scope:local +__GXShutdown = .text:0x800A8420; // type:function size:0x190 scope:local +GXInit = .text:0x800A85B0; // type:function size:0x798 scope:global +__GXInitGX = .text:0x800A8D48; // type:function size:0x938 scope:global +GXCPInterruptHandler = .text:0x800A9680; // type:function size:0x134 scope:local +GXInitFifoBase = .text:0x800A97B4; // type:function size:0x6C scope:global +GXInitFifoPtrs = .text:0x800A9820; // type:function size:0x70 scope:global +GXInitFifoLimits = .text:0x800A9890; // type:function size:0xC scope:global +GXSetCPUFifo = .text:0x800A989C; // type:function size:0x128 scope:global +GXSetGPFifo = .text:0x800A99C4; // type:function size:0x178 scope:global +GXGetGPStatus = .text:0x800A9B3C; // type:function size:0x50 scope:global +GXGetFifoBase = .text:0x800A9B8C; // type:function size:0x8 scope:global +GXGetFifoSize = .text:0x800A9B94; // type:function size:0x8 scope:global +GXSetBreakPtCallback = .text:0x800A9B9C; // type:function size:0x44 scope:global +__GXFifoInit = .text:0x800A9BE0; // type:function size:0x4C scope:global +__GXFifoReadEnable = .text:0x800A9C2C; // type:function size:0x24 scope:local +__GXFifoReadDisable = .text:0x800A9C50; // type:function size:0x24 scope:local +__GXFifoLink = .text:0x800A9C74; // type:function size:0x34 scope:local +__GXWriteFifoIntEnable = .text:0x800A9CA8; // type:function size:0x30 scope:local +__GXWriteFifoIntReset = .text:0x800A9CD8; // type:function size:0x30 scope:local +__GXCleanGPFifo = .text:0x800A9D08; // type:function size:0x100 scope:global +GXGetCPUFifo = .text:0x800A9E08; // type:function size:0x8 scope:global +GXGetGPFifo = .text:0x800A9E10; // type:function size:0x8 scope:global +GXSetVtxDesc = .text:0x800A9E18; // type:function size:0x26C scope:global +__GXSetVCD = .text:0x800AA084; // type:function size:0xBC scope:global +__GXCalculateVLim = .text:0x800AA140; // type:function size:0x124 scope:global +GXClearVtxDesc = .text:0x800AA264; // type:function size:0x38 scope:global +GXSetVtxAttrFmt = .text:0x800AA29C; // type:function size:0x25C scope:global +GXSetVtxAttrFmtv = .text:0x800AA4F8; // type:function size:0x280 scope:global +__GXSetVAT = .text:0x800AA778; // type:function size:0x9C scope:global +GXSetArray = .text:0x800AA814; // type:function size:0x8C scope:global +GXInvalidateVtxCache = .text:0x800AA8A0; // type:function size:0x10 scope:global +GXSetTexCoordGen2 = .text:0x800AA8B0; // type:function size:0x280 scope:global +GXSetNumTexGens = .text:0x800AAB30; // type:function size:0x3C scope:global +GXSetMisc = .text:0x800AAB6C; // type:function size:0x94 scope:global +GXFlush = .text:0x800AAC00; // type:function size:0x5C scope:global +__GXAbort = .text:0x800AAC5C; // type:function size:0x16C scope:global +GXAbortFrame = .text:0x800AADC8; // type:function size:0x170 scope:global +GXSetDrawSync = .text:0x800AAF38; // type:function size:0xB4 scope:global +GXReadDrawSync = .text:0x800AAFEC; // type:function size:0xC scope:global +GXSetDrawDone = .text:0x800AAFF8; // type:function size:0x98 scope:global +GXDrawDone = .text:0x800AB090; // type:function size:0x80 scope:global +GXPixModeSync = .text:0x800AB110; // type:function size:0x24 scope:global +GXPokeAlphaMode = .text:0x800AB134; // type:function size:0x14 scope:global +GXPokeAlphaRead = .text:0x800AB148; // type:function size:0x20 scope:global +GXPokeAlphaUpdate = .text:0x800AB168; // type:function size:0x18 scope:global +GXPokeBlendMode = .text:0x800AB180; // type:function size:0x64 scope:global +GXPokeColorUpdate = .text:0x800AB1E4; // type:function size:0x18 scope:global +GXPokeDstAlpha = .text:0x800AB1FC; // type:function size:0x24 scope:global +GXPokeDither = .text:0x800AB220; // type:function size:0x18 scope:global +GXPokeZMode = .text:0x800AB238; // type:function size:0x20 scope:global +GXSetDrawSyncCallback = .text:0x800AB258; // type:function size:0x44 scope:global +GXTokenInterruptHandler = .text:0x800AB29C; // type:function size:0x88 scope:local +GXSetDrawDoneCallback = .text:0x800AB324; // type:function size:0x44 scope:global +GXFinishInterruptHandler = .text:0x800AB368; // type:function size:0x80 scope:local +__GXPEInit = .text:0x800AB3E8; // type:function size:0x74 scope:global +__GXSetDirtyState = .text:0x800AB45C; // type:function size:0x80 scope:global +GXBegin = .text:0x800AB4DC; // type:function size:0xD0 scope:global +__GXSendFlushPrim = .text:0x800AB5AC; // type:function size:0x88 scope:global +GXSetLineWidth = .text:0x800AB634; // type:function size:0x40 scope:global +GXSetPointSize = .text:0x800AB674; // type:function size:0x40 scope:global +GXEnableTexOffsets = .text:0x800AB6B4; // type:function size:0x48 scope:global +GXSetCullMode = .text:0x800AB6FC; // type:function size:0x44 scope:global +GXSetCoPlanar = .text:0x800AB740; // type:function size:0x34 scope:global +__GXSetGenMode = .text:0x800AB774; // type:function size:0x24 scope:global +GXAdjustForOverscan = .text:0x800AB798; // type:function size:0x144 scope:global +GXSetDispCopySrc = .text:0x800AB8DC; // type:function size:0x7C scope:global +GXSetTexCopySrc = .text:0x800AB958; // type:function size:0x7C scope:global +GXSetDispCopyDst = .text:0x800AB9D4; // type:function size:0x34 scope:global +GXSetTexCopyDst = .text:0x800ABA08; // type:function size:0x130 scope:global +GXSetDispCopyFrame2Field = .text:0x800ABB38; // type:function size:0x24 scope:global +GXSetCopyClamp = .text:0x800ABB5C; // type:function size:0x58 scope:global +GXGetYScaleFactor = .text:0x800ABBB4; // type:function size:0x238 scope:global +GXSetDispCopyYScale = .text:0x800ABDEC; // type:function size:0xCC scope:global +GXSetCopyClear = .text:0x800ABEB8; // type:function size:0x78 scope:global +GXSetCopyFilter = .text:0x800ABF30; // type:function size:0x208 scope:global +GXSetDispCopyGamma = .text:0x800AC138; // type:function size:0x14 scope:global +GXCopyDisp = .text:0x800AC14C; // type:function size:0x168 scope:global +GXCopyTex = .text:0x800AC2B4; // type:function size:0x18C scope:global +GXClearBoundingBox = .text:0x800AC440; // type:function size:0x38 scope:global +GXSetChanAmbColor = .text:0x800AC478; // type:function size:0xF0 scope:global +GXSetChanMatColor = .text:0x800AC568; // type:function size:0xF0 scope:global +GXSetNumChans = .text:0x800AC658; // type:function size:0x3C scope:global +GXSetChanCtrl = .text:0x800AC694; // type:function size:0xB8 scope:global +__GetImageTileCount = .text:0x800AC74C; // type:function size:0xC8 scope:global +GXInitTexObj = .text:0x800AC814; // type:function size:0x24C scope:global +GXInitTexObjCI = .text:0x800ACA60; // type:function size:0x48 scope:global +GXInitTexObjLOD = .text:0x800ACAA8; // type:function size:0x164 scope:global +GXGetTexObjData = .text:0x800ACC0C; // type:function size:0xC scope:global +GXGetTexObjFmt = .text:0x800ACC18; // type:function size:0x8 scope:global +GXGetTexObjMipMap = .text:0x800ACC20; // type:function size:0x18 scope:global +GXLoadTexObjPreLoaded = .text:0x800ACC38; // type:function size:0x17C scope:global +GXLoadTexObj = .text:0x800ACDB4; // type:function size:0x54 scope:global +GXInitTlutObj = .text:0x800ACE08; // type:function size:0x38 scope:global +GXLoadTlut = .text:0x800ACE40; // type:function size:0x98 scope:global +GXInitTexCacheRegion = .text:0x800ACED8; // type:function size:0xF4 scope:global +GXInitTlutRegion = .text:0x800ACFCC; // type:function size:0x38 scope:global +GXInvalidateTexAll = .text:0x800AD004; // type:function size:0x48 scope:global +GXSetTexRegionCallback = .text:0x800AD04C; // type:function size:0x14 scope:global +GXSetTlutRegionCallback = .text:0x800AD060; // type:function size:0x14 scope:global +__SetSURegs = .text:0x800AD074; // type:function size:0xA0 scope:local +__GXSetSUTexRegs = .text:0x800AD114; // type:function size:0x17C scope:global +__GXSetTmemConfig = .text:0x800AD290; // type:function size:0x354 scope:global +GXSetTevIndirect = .text:0x800AD5E4; // type:function size:0x6C scope:global +GXSetIndTexCoordScale = .text:0x800AD650; // type:function size:0x144 scope:global +GXSetNumIndStages = .text:0x800AD794; // type:function size:0x24 scope:global +GXSetTevDirect = .text:0x800AD7B8; // type:function size:0x48 scope:global +__GXUpdateBPMask = .text:0x800AD800; // type:function size:0x4 scope:global +__GXSetIndirectMask = .text:0x800AD804; // type:function size:0x30 scope:global +__GXFlushTextureState = .text:0x800AD834; // type:function size:0x24 scope:global +GXSetTevOp = .text:0x800AD858; // type:function size:0x8C scope:global +GXSetTevColorIn = .text:0x800AD8E4; // type:function size:0x44 scope:global +GXSetTevAlphaIn = .text:0x800AD928; // type:function size:0x44 scope:global +GXSetTevColorOp = .text:0x800AD96C; // type:function size:0x68 scope:global +GXSetTevAlphaOp = .text:0x800AD9D4; // type:function size:0x68 scope:global +GXSetTevColor = .text:0x800ADA3C; // type:function size:0x7C scope:global +GXSetTevColorS10 = .text:0x800ADAB8; // type:function size:0x7C scope:global +GXSetTevKColor = .text:0x800ADB34; // type:function size:0x74 scope:global +GXSetTevKColorSel = .text:0x800ADBA8; // type:function size:0x5C scope:global +GXSetTevKAlphaSel = .text:0x800ADC04; // type:function size:0x5C scope:global +GXSetTevSwapMode = .text:0x800ADC60; // type:function size:0x48 scope:global +GXSetTevSwapModeTable = .text:0x800ADCA8; // type:function size:0x80 scope:global +GXSetAlphaCompare = .text:0x800ADD28; // type:function size:0x44 scope:global +GXSetZTexture = .text:0x800ADD6C; // type:function size:0x8C scope:global +GXSetTevOrder = .text:0x800ADDF8; // type:function size:0x19C scope:global +GXSetNumTevStages = .text:0x800ADF94; // type:function size:0x28 scope:global +GXSetFog = .text:0x800ADFBC; // type:function size:0x224 scope:global +GXInitFogAdjTable = .text:0x800AE1E0; // type:function size:0x1B0 scope:global +GXSetFogRangeAdj = .text:0x800AE390; // type:function size:0x124 scope:global +GXSetBlendMode = .text:0x800AE4B4; // type:function size:0x54 scope:global +GXSetColorUpdate = .text:0x800AE508; // type:function size:0x2C scope:global +GXSetAlphaUpdate = .text:0x800AE534; // type:function size:0x2C scope:global +GXSetZMode = .text:0x800AE560; // type:function size:0x34 scope:global +GXSetZCompLoc = .text:0x800AE594; // type:function size:0x34 scope:global +GXSetPixelFmt = .text:0x800AE5C8; // type:function size:0xD4 scope:global +GXSetDither = .text:0x800AE69C; // type:function size:0x2C scope:global +GXSetDstAlpha = .text:0x800AE6C8; // type:function size:0x3C scope:global +GXSetFieldMask = .text:0x800AE704; // type:function size:0x38 scope:global +GXSetFieldMode = .text:0x800AE73C; // type:function size:0x78 scope:global +GXSetProjection = .text:0x800AE7B4; // type:function size:0xA4 scope:global +GXSetProjectionv = .text:0x800AE858; // type:function size:0x8C scope:global +GXLoadPosMtxImm = .text:0x800AE8E4; // type:function size:0x50 scope:global +GXLoadNrmMtxImm = .text:0x800AE934; // type:function size:0x50 scope:global +GXSetCurrentMtx = .text:0x800AE984; // type:function size:0x34 scope:global +GXLoadTexMtxImm = .text:0x800AE9B8; // type:function size:0xB4 scope:global +__GXSetViewport = .text:0x800AEA6C; // type:function size:0x90 scope:global +GXSetViewportJitter = .text:0x800AEAFC; // type:function size:0x58 scope:global +GXSetViewport = .text:0x800AEB54; // type:function size:0x48 scope:global +GXSetScissor = .text:0x800AEB9C; // type:function size:0x78 scope:global +GXGetScissor = .text:0x800AEC14; // type:function size:0x48 scope:global +GXSetScissorBoxOffset = .text:0x800AEC5C; // type:function size:0x40 scope:global +GXSetClipMode = .text:0x800AEC9C; // type:function size:0x28 scope:global +__GXSetMatrixIndex = .text:0x800AECC4; // type:function size:0x84 scope:global +GXSetGPMetric = .text:0x800AED48; // type:function size:0x848 scope:global +GXReadGPMetric = .text:0x800AF590; // type:function size:0x1A8 scope:global +GXClearGPMetric = .text:0x800AF738; // type:function size:0x10 scope:global +GXReadGP0Metric = .text:0x800AF748; // type:function size:0x2C scope:global +GXReadGP1Metric = .text:0x800AF774; // type:function size:0x2C scope:global +GXReadMemMetric = .text:0x800AF7A0; // type:function size:0x214 scope:global +GXClearMemMetric = .text:0x800AF9B4; // type:function size:0xA8 scope:global +GXReadPixMetric = .text:0x800AFA5C; // type:function size:0x138 scope:global +GXClearPixMetric = .text:0x800AFB94; // type:function size:0x30 scope:global +GXSetVCacheMetric = .text:0x800AFBC4; // type:function size:0x44 scope:global +GXReadVCacheMetric = .text:0x800AFC08; // type:function size:0x94 scope:global +GXClearVCacheMetric = .text:0x800AFC9C; // type:function size:0x1C scope:global +GXReadXfRasMetric = .text:0x800AFCB8; // type:function size:0xC4 scope:global +ClampStick = .text:0x800AFD7C; // type:function size:0x130 scope:local +PADClamp = .text:0x800AFEAC; // type:function size:0x114 scope:global +UpdateOrigin = .text:0x800AFFC0; // type:function size:0x1A4 scope:local +PADOriginCallback = .text:0x800B0164; // type:function size:0xC4 scope:local +PADOriginUpdateCallback = .text:0x800B0228; // type:function size:0xCC scope:local +PADProbeCallback = .text:0x800B02F4; // type:function size:0xD8 scope:local +PADTypeAndStatusCallback = .text:0x800B03CC; // type:function size:0x32C scope:local +PADReceiveCheckCallback = .text:0x800B06F8; // type:function size:0x140 scope:local +PADReset = .text:0x800B0838; // type:function size:0x110 scope:global +PADRecalibrate = .text:0x800B0948; // type:function size:0x114 scope:global +PADInit = .text:0x800B0A5C; // type:function size:0x150 scope:global +PADRead = .text:0x800B0BAC; // type:function size:0x300 scope:global +PADControlMotor = .text:0x800B0EAC; // type:function size:0xB8 scope:global +PADSetSpec = .text:0x800B0F64; // type:function size:0x60 scope:global +SPEC0_MakeStatus = .text:0x800B0FC4; // type:function size:0x174 scope:local +SPEC1_MakeStatus = .text:0x800B1138; // type:function size:0x174 scope:local +SPEC2_MakeStatus = .text:0x800B12AC; // type:function size:0x470 scope:local +OnReset = .text:0x800B171C; // type:function size:0xBC scope:local +SamplingHandler = .text:0x800B17D8; // type:function size:0x60 scope:local +PADSetSamplingCallback = .text:0x800B1838; // type:function size:0x54 scope:global +__PADDisableRecalibration = .text:0x800B188C; // type:function size:0x7C scope:global +__DVDInitWA = .text:0x800B1908; // type:function size:0x40 scope:weak +__DVDInterruptHandler = .text:0x800B1948; // type:function size:0x2E0 scope:weak +AlarmHandler = .text:0x800B1C28; // type:function size:0x84 scope:local +AlarmHandlerForTimeout = .text:0x800B1CAC; // type:function size:0x70 scope:local +Read = .text:0x800B1D1C; // type:function size:0x110 scope:local +SeekTwiceBeforeRead = .text:0x800B1E2C; // type:function size:0x80 scope:local +DVDLowRead = .text:0x800B1EAC; // type:function size:0x298 scope:weak +DVDLowSeek = .text:0x800B2144; // type:function size:0x94 scope:weak +DVDLowWaitCoverClose = .text:0x800B21D8; // type:function size:0x2C scope:weak +DVDLowReadDiskID = .text:0x800B2204; // type:function size:0xA4 scope:weak +DVDLowStopMotor = .text:0x800B22A8; // type:function size:0x8C scope:weak +DVDLowRequestError = .text:0x800B2334; // type:function size:0x8C scope:weak +DVDLowInquiry = .text:0x800B23C0; // type:function size:0x9C scope:weak +DVDLowAudioStream = .text:0x800B245C; // type:function size:0x98 scope:weak +DVDLowRequestAudioStatus = .text:0x800B24F4; // type:function size:0x8C scope:weak +DVDLowAudioBufferConfig = .text:0x800B2580; // type:function size:0x9C scope:weak +DVDLowReset = .text:0x800B261C; // type:function size:0xBC scope:weak +DVDLowBreak = .text:0x800B26D8; // type:function size:0x14 scope:weak +DVDLowClearCallback = .text:0x800B26EC; // type:function size:0x1C scope:weak +__DVDLowSetWAType = .text:0x800B2708; // type:function size:0x44 scope:weak +__DVDLowTestAlarm = .text:0x800B274C; // type:function size:0x38 scope:global +__DVDFSInit = .text:0x800B2784; // type:function size:0x38 scope:global +DVDConvertPathToEntrynum = .text:0x800B27BC; // type:function size:0x2F4 scope:global +DVDOpen = .text:0x800B2AB0; // type:function size:0xC8 scope:global +DVDClose = .text:0x800B2B78; // type:function size:0x24 scope:global +entryToPath = .text:0x800B2B9C; // type:function size:0x160 scope:local +DVDGetCurrentDir = .text:0x800B2CFC; // type:function size:0xC4 scope:global +DVDReadAsyncPrio = .text:0x800B2DC0; // type:function size:0xC0 scope:global +cbForReadAsync = .text:0x800B2E80; // type:function size:0x30 scope:local +DVDReadPrio = .text:0x800B2EB0; // type:function size:0x118 scope:global +cbForReadSync = .text:0x800B2FC8; // type:function size:0x24 scope:local +defaultOptionalCommandChecker = .text:0x800B2FEC; // type:function size:0x4 scope:local +DVDInit = .text:0x800B2FF0; // type:function size:0xCC scope:global +stateReadingFST = .text:0x800B30BC; // type:function size:0x94 scope:local +cbForStateReadingFST = .text:0x800B3150; // type:function size:0x8C scope:local +cbForStateError = .text:0x800B31DC; // type:function size:0xAC scope:local +stateTimeout = .text:0x800B3288; // type:function size:0x34 scope:local +stateGettingError = .text:0x800B32BC; // type:function size:0x28 scope:local +CategorizeError = .text:0x800B32E4; // type:function size:0xB4 scope:local +cbForStateGettingError = .text:0x800B3398; // type:function size:0x294 scope:local +cbForUnrecoveredError = .text:0x800B362C; // type:function size:0x68 scope:local +cbForUnrecoveredErrorRetry = .text:0x800B3694; // type:function size:0x98 scope:local +stateGoToRetry = .text:0x800B372C; // type:function size:0x28 scope:local +cbForStateGoToRetry = .text:0x800B3754; // type:function size:0x158 scope:local +stateCheckID = .text:0x800B38AC; // type:function size:0xE0 scope:local +stateCheckID3 = .text:0x800B398C; // type:function size:0x34 scope:local +stateCheckID2a = .text:0x800B39C0; // type:function size:0x34 scope:local +cbForStateCheckID2a = .text:0x800B39F4; // type:function size:0x74 scope:local +stateCheckID2 = .text:0x800B3A68; // type:function size:0x38 scope:local +cbForStateCheckID1 = .text:0x800B3AA0; // type:function size:0x114 scope:local +cbForStateCheckID2 = .text:0x800B3BB4; // type:function size:0xE4 scope:local +cbForStateCheckID3 = .text:0x800B3C98; // type:function size:0xFC scope:local +AlarmHandler = .text:0x800B3D94; // type:function size:0x44 scope:local +stateCoverClosed = .text:0x800B3DD8; // type:function size:0xCC scope:local +stateCoverClosed_CMD = .text:0x800B3EA4; // type:function size:0x30 scope:local +cbForStateCoverClosed = .text:0x800B3ED4; // type:function size:0x70 scope:local +stateMotorStopped = .text:0x800B3F44; // type:function size:0x28 scope:local +cbForStateMotorStopped = .text:0x800B3F6C; // type:function size:0xE4 scope:local +stateReady = .text:0x800B4050; // type:function size:0x230 scope:local +stateBusy = .text:0x800B4280; // type:function size:0x320 scope:local +cbForStateBusy = .text:0x800B45A0; // type:function size:0x638 scope:local +DVDReadAbsAsyncPrio = .text:0x800B4BD8; // type:function size:0xDC scope:global +DVDReadAbsAsyncForBS = .text:0x800B4CB4; // type:function size:0xD0 scope:global +DVDReadDiskID = .text:0x800B4D84; // type:function size:0xD4 scope:global +DVDCancelStreamAsync = .text:0x800B4E58; // type:function size:0xBC scope:global +DVDInquiryAsync = .text:0x800B4F14; // type:function size:0xD0 scope:global +DVDReset = .text:0x800B4FE4; // type:function size:0x44 scope:global +DVDGetCommandBlockStatus = .text:0x800B5028; // type:function size:0x4C scope:global +DVDGetDriveStatus = .text:0x800B5074; // type:function size:0xAC scope:global +DVDSetAutoInvalidation = .text:0x800B5120; // type:function size:0x10 scope:global +DVDResume = .text:0x800B5130; // type:function size:0x50 scope:global +DVDCancelAsync = .text:0x800B5180; // type:function size:0x27C scope:global +DVDCancel = .text:0x800B53FC; // type:function size:0xAC scope:global +cbForCancelSync = .text:0x800B54A8; // type:function size:0x24 scope:local +DVDGetCurrentDiskID = .text:0x800B54CC; // type:function size:0x8 scope:global +DVDCheckDisk = .text:0x800B54D4; // type:function size:0xF8 scope:global +__DVDPrepareResetAsync = .text:0x800B55CC; // type:function size:0x11C scope:global +__DVDTestAlarm = .text:0x800B56E8; // type:function size:0x38 scope:global +__DVDClearWaitingQueue = .text:0x800B5720; // type:function size:0x38 scope:global +__DVDPushWaitingQueue = .text:0x800B5758; // type:function size:0x68 scope:global +__DVDPopWaitingQueue = .text:0x800B57C0; // type:function size:0xA0 scope:global +__DVDCheckWaitingQueue = .text:0x800B5860; // type:function size:0x58 scope:global +__DVDDequeueWaitingQueue = .text:0x800B58B8; // type:function size:0x60 scope:global +ErrorCode2Num = .text:0x800B5918; // type:function size:0x11C scope:local +__DVDStoreErrorCode = .text:0x800B5A34; // type:function size:0x7C scope:global +DVDCompareDiskID = .text:0x800B5AB0; // type:function size:0xF8 scope:global +__DVDPrintFatalMessage = .text:0x800B5BA8; // type:function size:0x30 scope:global +cb = .text:0x800B5BD8; // type:function size:0xD8 scope:local +__fstLoad = .text:0x800B5CB0; // type:function size:0x168 scope:global +DEMOInit = .text:0x800B5E18; // type:function size:0x74 scope:global +__DEMOInitRenderMode = .text:0x800B5E8C; // type:function size:0x154 scope:local +__DEMOInitMem = .text:0x800B5FE0; // type:function size:0xD4 scope:local +__DEMOInitGX = .text:0x800B60B4; // type:function size:0x11C scope:local +__DEMOInitVI = .text:0x800B61D0; // type:function size:0x48 scope:local +DEMOBeforeRender = .text:0x800B6218; // type:function size:0xE8 scope:global +DEMODoneRender = .text:0x800B6300; // type:function size:0x84 scope:global +DEMOSwapBuffers = .text:0x800B6384; // type:function size:0x68 scope:global +DEMOGetRenderModeObj = .text:0x800B63EC; // type:function size:0x8 scope:global +__NoHangDoneRender = .text:0x800B63F4; // type:function size:0xF4 scope:local +DEMOSetGPHangMetric = .text:0x800B64E8; // type:function size:0xBC scope:global +__DEMODiagnoseHang = .text:0x800B65A4; // type:function size:0x1BC scope:local +DEMOReInit = .text:0x800B6760; // type:function size:0x1E0 scope:global +DEMOInitCaption = .text:0x800B6940; // type:function size:0x25C scope:global +DEMOPuts = .text:0x800B6B9C; // type:function size:0x310 scope:global +DEMOPrintf = .text:0x800B6EAC; // type:function size:0xC4 scope:global +DEMOPadCopy = .text:0x800B6F70; // type:function size:0x198 scope:local +DEMOPadRead = .text:0x800B7108; // type:function size:0xCC scope:global +DEMOPadInit = .text:0x800B71D4; // type:function size:0xD4 scope:global +DEMOWriteStats = .text:0x800B72A8; // type:function size:0x394 scope:local +DEMOUpdateStats = .text:0x800B763C; // type:function size:0x58 scope:global +DEMOPrintStats = .text:0x800B7694; // type:function size:0x96C scope:global +AIRegisterDMACallback = .text:0x800B8000; // type:function size:0x44 scope:global +AIInitDMA = .text:0x800B8044; // type:function size:0x88 scope:global +AIGetDMAEnableFlag = .text:0x800B80CC; // type:function size:0x10 scope:global +AIStartDMA = .text:0x800B80DC; // type:function size:0x18 scope:global +AIStopDMA = .text:0x800B80F4; // type:function size:0x18 scope:global +AIGetDMABytesLeft = .text:0x800B810C; // type:function size:0x10 scope:global +AIGetDMAStartAddr = .text:0x800B811C; // type:function size:0x1C scope:global +AISetStreamPlayState = .text:0x800B8138; // type:function size:0xD8 scope:global +AIGetStreamPlayState = .text:0x800B8210; // type:function size:0x10 scope:global +AISetDSPSampleRate = .text:0x800B8220; // type:function size:0xE0 scope:global +AIGetDSPSampleRate = .text:0x800B8300; // type:function size:0x14 scope:global +__AI_set_stream_sample_rate = .text:0x800B8314; // type:function size:0xD4 scope:local +AIGetStreamSampleRate = .text:0x800B83E8; // type:function size:0x10 scope:global +AISetStreamVolLeft = .text:0x800B83F8; // type:function size:0x1C scope:global +AIGetStreamVolLeft = .text:0x800B8414; // type:function size:0x10 scope:global +AISetStreamVolRight = .text:0x800B8424; // type:function size:0x1C scope:global +AIGetStreamVolRight = .text:0x800B8440; // type:function size:0x10 scope:global +AIInit = .text:0x800B8450; // type:function size:0x16C scope:global +__AISHandler = .text:0x800B85BC; // type:function size:0x7C scope:local +__AIDHandler = .text:0x800B8638; // type:function size:0xAC scope:local +__AICallbackStackSwitch = .text:0x800B86E4; // type:function size:0x58 scope:local +__AI_SRC_INIT = .text:0x800B873C; // type:function size:0x1E4 scope:local +ARGetDMAStatus = .text:0x800B8920; // type:function size:0x3C scope:global +ARStartDMA = .text:0x800B895C; // type:function size:0xF0 scope:global +ARInit = .text:0x800B8A4C; // type:function size:0xC4 scope:global +ARGetBaseAddress = .text:0x800B8B10; // type:function size:0x8 scope:global +__ARHandler = .text:0x800B8B18; // type:function size:0x78 scope:local +__ARChecksize = .text:0x800B8B90; // type:function size:0x17F4 scope:local +DSPCheckMailToDSP = .text:0x800BA384; // type:function size:0x10 scope:global +DSPCheckMailFromDSP = .text:0x800BA394; // type:function size:0x10 scope:global +DSPReadMailFromDSP = .text:0x800BA3A4; // type:function size:0x18 scope:global +DSPSendMailToDSP = .text:0x800BA3BC; // type:function size:0x14 scope:global +DSPInit = .text:0x800BA3D0; // type:function size:0xC4 scope:global +DSPAddTask = .text:0x800BA494; // type:function size:0x70 scope:global +__DSP_debug_printf = .text:0x800BA504; // type:function size:0x50 scope:global +__DSPHandler = .text:0x800BA554; // type:function size:0x424 scope:global +__DSP_exec_task = .text:0x800BA978; // type:function size:0x1A0 scope:global +__DSP_boot_task = .text:0x800BAB18; // type:function size:0x18C scope:global +__DSP_insert_task = .text:0x800BACA4; // type:function size:0xA0 scope:global +__DSP_remove_task = .text:0x800BAD44; // type:function size:0x94 scope:global +__CARDDefaultApiCallback = .text:0x800BADD8; // type:function size:0x4 scope:global +__CARDSyncCallback = .text:0x800BADDC; // type:function size:0x34 scope:global +__CARDExtHandler = .text:0x800BAE10; // type:function size:0xD8 scope:global +__CARDExiHandler = .text:0x800BAEE8; // type:function size:0x118 scope:global +__CARDTxHandler = .text:0x800BB000; // type:function size:0xA8 scope:global +__CARDUnlockedHandler = .text:0x800BB0A8; // type:function size:0x84 scope:global +__CARDEnableInterrupt = .text:0x800BB12C; // type:function size:0xC0 scope:global +__CARDReadStatus = .text:0x800BB1EC; // type:function size:0xF0 scope:global +__CARDClearStatus = .text:0x800BB2DC; // type:function size:0xAC scope:global +TimeoutHandler = .text:0x800BB388; // type:function size:0xA4 scope:local +Retry = .text:0x800BB42C; // type:function size:0x22C scope:local +UnlockedCallback = .text:0x800BB658; // type:function size:0x110 scope:local +__CARDStart = .text:0x800BB768; // type:function size:0x1B4 scope:local +__CARDReadSegment = .text:0x800BB91C; // type:function size:0x134 scope:global +__CARDWritePage = .text:0x800BBA50; // type:function size:0x11C scope:global +__CARDEraseSector = .text:0x800BBB6C; // type:function size:0xE0 scope:global +CARDInit = .text:0x800BBC4C; // type:function size:0xAC scope:global +__CARDGetFontEncode = .text:0x800BBCF8; // type:function size:0x8 scope:global +__CARDSetDiskID = .text:0x800BBD00; // type:function size:0x38 scope:global +__CARDGetControlBlock = .text:0x800BBD38; // type:function size:0xB8 scope:global +__CARDPutControlBlock = .text:0x800BBDF0; // type:function size:0x64 scope:global +CARDGetResultCode = .text:0x800BBE54; // type:function size:0x30 scope:global +CARDFreeBlocks = .text:0x800BBE84; // type:function size:0x150 scope:global +__CARDSync = .text:0x800BBFD4; // type:function size:0x98 scope:global +OnReset = .text:0x800BC06C; // type:function size:0x50 scope:local +bitrev = .text:0x800BC0BC; // type:function size:0x16C scope:local +ReadArrayUnlock = .text:0x800BC228; // type:function size:0x144 scope:local +DummyLen = .text:0x800BC36C; // type:function size:0xC4 scope:local +__CARDUnlock = .text:0x800BC430; // type:function size:0xB58 scope:global +InitCallback = .text:0x800BCF88; // type:function size:0x70 scope:local +DoneCallback = .text:0x800BCFF8; // type:function size:0x324 scope:local +BlockReadCallback = .text:0x800BD31C; // type:function size:0xDC scope:local +__CARDRead = .text:0x800BD3F8; // type:function size:0x64 scope:global +BlockWriteCallback = .text:0x800BD45C; // type:function size:0xDC scope:local +__CARDWrite = .text:0x800BD538; // type:function size:0x64 scope:global +CARDGetXferredBytes = .text:0x800BD59C; // type:function size:0x18 scope:global +__CARDGetFatBlock = .text:0x800BD5B4; // type:function size:0x8 scope:global +WriteCallback = .text:0x800BD5BC; // type:function size:0xD4 scope:local +EraseCallback = .text:0x800BD690; // type:function size:0xC8 scope:local +__CARDAllocBlock = .text:0x800BD758; // type:function size:0x118 scope:global +__CARDFreeBlock = .text:0x800BD870; // type:function size:0x9C scope:global +__CARDUpdateFatBlock = .text:0x800BD90C; // type:function size:0xAC scope:global +__CARDGetDirBlock = .text:0x800BD9B8; // type:function size:0x8 scope:global +WriteCallback = .text:0x800BD9C0; // type:function size:0xD0 scope:local +EraseCallback = .text:0x800BDA90; // type:function size:0xC8 scope:local +__CARDUpdateDir = .text:0x800BDB58; // type:function size:0xC4 scope:global +__CARDCheckSum = .text:0x800BDC1C; // type:function size:0x1B0 scope:global +VerifyID = .text:0x800BDDCC; // type:function size:0x284 scope:local +VerifyDir = .text:0x800BE050; // type:function size:0x240 scope:local +VerifyFAT = .text:0x800BE290; // type:function size:0x284 scope:local +__CARDVerify = .text:0x800BE514; // type:function size:0x8C scope:global +CARDCheckExAsync = .text:0x800BE5A0; // type:function size:0x590 scope:global +CARDCheck = .text:0x800BEB30; // type:function size:0x54 scope:global +IsCard = .text:0x800BEB84; // type:function size:0xCC scope:local +CARDProbeEx = .text:0x800BEC50; // type:function size:0x17C scope:global +DoMount = .text:0x800BEDCC; // type:function size:0x410 scope:local +__CARDMountCallback = .text:0x800BF1DC; // type:function size:0x138 scope:global +CARDMountAsync = .text:0x800BF314; // type:function size:0x1A0 scope:global +CARDMount = .text:0x800BF4B4; // type:function size:0x48 scope:global +DoUnmount = .text:0x800BF4FC; // type:function size:0x9C scope:local +CARDUnmount = .text:0x800BF598; // type:function size:0xAC scope:global +FormatCallback = .text:0x800BF644; // type:function size:0x144 scope:local +__CARDFormatRegionAsync = .text:0x800BF788; // type:function size:0x658 scope:global +CARDFormatAsync = .text:0x800BFDE0; // type:function size:0x48 scope:global +__CARDCompareFileName = .text:0x800BFE28; // type:function size:0x68 scope:global +__CARDAccess = .text:0x800BFE90; // type:function size:0x94 scope:global +__CARDIsWritable = .text:0x800BFF24; // type:function size:0x134 scope:global +__CARDIsReadable = .text:0x800C0058; // type:function size:0xF4 scope:global +__CARDGetFileNo = .text:0x800C014C; // type:function size:0x150 scope:global +CARDOpen = .text:0x800C029C; // type:function size:0x11C scope:global +CARDClose = .text:0x800C03B8; // type:function size:0x54 scope:global +__CARDIsOpened = .text:0x800C040C; // type:function size:0x8 scope:global +CreateCallbackFat = .text:0x800C0414; // type:function size:0x130 scope:local +CARDCreateAsync = .text:0x800C0544; // type:function size:0x220 scope:global +__CARDSeek = .text:0x800C0764; // type:function size:0x1B8 scope:global +ReadCallback = .text:0x800C091C; // type:function size:0x130 scope:local +CARDReadAsync = .text:0x800C0A4C; // type:function size:0x144 scope:global +CARDRead = .text:0x800C0B90; // type:function size:0x48 scope:global +WriteCallback = .text:0x800C0BD8; // type:function size:0x170 scope:local +EraseCallback = .text:0x800C0D48; // type:function size:0xB0 scope:local +CARDWriteAsync = .text:0x800C0DF8; // type:function size:0x114 scope:global +DeleteCallback = .text:0x800C0F0C; // type:function size:0xA4 scope:local +CARDDeleteAsync = .text:0x800C0FB0; // type:function size:0x110 scope:global +UpdateIconOffsets = .text:0x800C10C0; // type:function size:0x1F8 scope:local +CARDGetStatus = .text:0x800C12B8; // type:function size:0x114 scope:global +CARDSetStatusAsync = .text:0x800C13CC; // type:function size:0x174 scope:global +THPVideoDecode = .text:0x800C1540; // type:function size:0x244 scope:global +__THPSetupBuffers = .text:0x800C1784; // type:function size:0x44 scope:local +__THPReadFrameHeader = .text:0x800C17C8; // type:function size:0x13C scope:local +__THPReadScaneHeader = .text:0x800C1904; // type:function size:0x11C scope:local +__THPReadQuantizationTable = .text:0x800C1A20; // type:function size:0x3BC scope:local +__THPReadHuffmanTableSpecification = .text:0x800C1DDC; // type:function size:0x1E0 scope:local +__THPHuffGenerateSizeTable = .text:0x800C1FBC; // type:function size:0xF0 scope:local +__THPHuffGenerateCodeTable = .text:0x800C20AC; // type:function size:0x68 scope:local +__THPHuffGenerateDecoderTables = .text:0x800C2114; // type:function size:0x1BC scope:local +__THPRestartDefinition = .text:0x800C22D0; // type:function size:0x54 scope:local +__THPPrepBitStream = .text:0x800C2324; // type:function size:0x24C scope:local +__THPDecompressYUV = .text:0x800C2570; // type:function size:0x10C scope:local +__THPDecompressiMCURow512x448 = .text:0x800C267C; // type:function size:0x1A88 scope:local +__THPDecompressiMCURow640x480 = .text:0x800C4104; // type:function size:0x1A8C scope:local +__THPDecompressiMCURowNxN = .text:0x800C5B90; // type:function size:0x1AAC scope:local +__THPHuffDecodeDCTCompY = .text:0x800C763C; // type:function size:0x67C scope:local +__THPHuffDecodeDCTCompU = .text:0x800C7CB8; // type:function size:0x6A8 scope:local +__THPHuffDecodeDCTCompV = .text:0x800C8360; // type:function size:0x6A8 scope:local +THPInit = .text:0x800C8A08; // type:function size:0xA0 scope:global +THPAudioDecode = .text:0x800C8AA8; // type:function size:0x464 scope:global +__THPAudioGetNewSample = .text:0x800C8F0C; // type:function size:0x90 scope:local +__THPAudioInitialize = .text:0x800C8F9C; // type:function size:0x3C scope:local +TEXGet = .text:0x800C8FD8; // type:function size:0x10 scope:global +TEXGetGXTexObjFromPalette = .text:0x800C8FE8; // type:function size:0xD4 scope:global +TRKHandleRequestEvent = .text:0x800C90BC; // type:function size:0x28 scope:global +TRKHandleSupportEvent = .text:0x800C90E4; // type:function size:0x20 scope:global +TRKIdle = .text:0x800C9104; // type:function size:0x2C scope:global +TRKNubMainLoop = .text:0x800C9130; // type:function size:0xF4 scope:global +TRKInitializeEventQueue = .text:0x800C9224; // type:function size:0x5C scope:global +TRKCopyEvent = .text:0x800C9280; // type:function size:0x24 scope:global +TRKGetNextEvent = .text:0x800C92A4; // type:function size:0xC0 scope:global +TRKPostEvent = .text:0x800C9364; // type:function size:0xE0 scope:global +TRKConstructEvent = .text:0x800C9444; // type:function size:0x18 scope:global +TRKDestructEvent = .text:0x800C945C; // type:function size:0x24 scope:global +TRKInitializeNub = .text:0x800C9480; // type:function size:0xD4 scope:global +TRKTerminateNub = .text:0x800C9554; // type:function size:0x24 scope:global +TRKNubWelcome = .text:0x800C9578; // type:function size:0x28 scope:global +TRKInitializeEndian = .text:0x800C95A0; // type:function size:0x74 scope:global +TRKMessageSend = .text:0x800C9614; // type:function size:0x28 scope:global +TRKSetBufferUsed = .text:0x800C963C; // type:function size:0x8 scope:local +TRKInitializeMessageBuffers = .text:0x800C9644; // type:function size:0x78 scope:global +TRKGetFreeBuffer = .text:0x800C96BC; // type:function size:0x9C scope:global +TRKGetBuffer = .text:0x800C9758; // type:function size:0x2C scope:global +TRKReleaseBuffer = .text:0x800C9784; // type:function size:0x68 scope:global +TRKResetBuffer = .text:0x800C97EC; // type:function size:0x40 scope:global +TRKSetBufferPosition = .text:0x800C982C; // type:function size:0x30 scope:global +TRKAppendBuffer = .text:0x800C985C; // type:function size:0xA4 scope:global +TRKReadBuffer = .text:0x800C9900; // type:function size:0x8C scope:global +TRKAppendBuffer1_ui16 = .text:0x800C998C; // type:function size:0x54 scope:global +TRKAppendBuffer1_ui32 = .text:0x800C99E0; // type:function size:0x64 scope:global +TRKAppendBuffer1_ui64 = .text:0x800C9A44; // type:function size:0x88 scope:global +TRKAppendBuffer_ui8 = .text:0x800C9ACC; // type:function size:0x68 scope:global +TRKAppendBuffer_ui32 = .text:0x800C9B34; // type:function size:0x7C scope:global +TRKReadBuffer1_ui8 = .text:0x800C9BB0; // type:function size:0x24 scope:global +TRKReadBuffer1_ui16 = .text:0x800C9BD4; // type:function size:0x80 scope:global +TRKReadBuffer1_ui32 = .text:0x800C9C54; // type:function size:0x90 scope:global +TRKReadBuffer1_ui64 = .text:0x800C9CE4; // type:function size:0xB0 scope:global +TRKReadBuffer_ui8 = .text:0x800C9D94; // type:function size:0x74 scope:global +TRKReadBuffer_ui32 = .text:0x800C9E08; // type:function size:0x7C scope:global +TRKTestForPacket = .text:0x800C9E84; // type:function size:0xD0 scope:global +TRKGetInput = .text:0x800C9F54; // type:function size:0x7C scope:global +TRKProcessInput = .text:0x800C9FD0; // type:function size:0x50 scope:global +TRKInitializeSerialHandler = .text:0x800CA020; // type:function size:0x24 scope:global +TRKTerminateSerialHandler = .text:0x800CA044; // type:function size:0x8 scope:global +usr_put_initialize = .text:0x800CA04C; // type:function size:0x4 scope:global +TRKInitializeDispatcher = .text:0x800CA050; // type:function size:0x14 scope:global +TRKDispatchMessage = .text:0x800CA064; // type:function size:0x84 scope:global +TRKMessageIntoReply = .text:0x800CA0E8; // type:function size:0x98 scope:local +TRKSendACK = .text:0x800CA180; // type:function size:0x50 scope:global +TRKStandardACK = .text:0x800CA1D0; // type:function size:0x34 scope:global +TRKDoUnsupported = .text:0x800CA204; // type:function size:0x28 scope:global +TRKDoConnect = .text:0x800CA22C; // type:function size:0x28 scope:global +TRKDoDisconnect = .text:0x800CA254; // type:function size:0x50 scope:global +TRKDoReset = .text:0x800CA2A4; // type:function size:0x30 scope:global +TRKDoVersions = .text:0x800CA2D4; // type:function size:0x184 scope:global +TRKDoSupportMask = .text:0x800CA458; // type:function size:0xDC scope:global +TRKDoCPUType = .text:0x800CA534; // type:function size:0x244 scope:global +TRKDoReadMemory = .text:0x800CA778; // type:function size:0x1CC scope:global +TRKDoWriteMemory = .text:0x800CA944; // type:function size:0x1E0 scope:global +TRKDoReadRegisters = .text:0x800CAB24; // type:function size:0x20C scope:global +TRKDoWriteRegisters = .text:0x800CAD30; // type:function size:0x1FC scope:global +TRKDoFlushCache = .text:0x800CAF2C; // type:function size:0x158 scope:global +TRKDoContinue = .text:0x800CB084; // type:function size:0x64 scope:global +TRKDoStep = .text:0x800CB0E8; // type:function size:0x214 scope:global +TRKDoStop = .text:0x800CB2FC; // type:function size:0x58 scope:global +TRKSuppAccessFile = .text:0x800CB354; // type:function size:0x2D8 scope:global +TRKRequestSend = .text:0x800CB62C; // type:function size:0x1A4 scope:global +TRKInitializeMutex = .text:0x800CB7D0; // type:function size:0x8 scope:global +TRKAcquireMutex = .text:0x800CB7D8; // type:function size:0x8 scope:global +TRKReleaseMutex = .text:0x800CB7E0; // type:function size:0x8 scope:global +TRKDoNotifyStopped = .text:0x800CB7E8; // type:function size:0xD8 scope:global +TRK_flush_cache = .text:0x800CB8C0; // type:function size:0x38 scope:global +__TRK_get_MSR = .text:0x800CB8F8; // type:function size:0x8 scope:global +__TRK_set_MSR = .text:0x800CB900; // type:function size:0x8 scope:global +TRKValidMemory32 = .text:0x800CB908; // type:function size:0x138 scope:global +TRK_ppc_memcpy = .text:0x800CBA40; // type:function size:0x3C scope:local +TRKTargetAccessMemory = .text:0x800CBA7C; // type:function size:0x164 scope:global +TRKTargetReadInstruction = .text:0x800CBBE0; // type:function size:0x4C scope:global +TRKTargetAccessDefault = .text:0x800CBC2C; // type:function size:0xFC scope:global +TRKTargetAccessFP = .text:0x800CBD28; // type:function size:0x148 scope:global +TRKTargetAccessExtended1 = .text:0x800CBE70; // type:function size:0x178 scope:global +TRKTargetAccessExtended2 = .text:0x800CBFE8; // type:function size:0x17C scope:global +TRKTargetVersions = .text:0x800CC164; // type:function size:0x28 scope:global +TRKTargetSupportMask = .text:0x800CC18C; // type:function size:0xA4 scope:global +TRKTargetCPUType = .text:0x800CC230; // type:function size:0x68 scope:global +TRKInterruptHandler = .text:0x800CC298; // type:function size:0x194 scope:global +TRKExceptionHandler = .text:0x800CC42C; // type:function size:0x9C scope:global +TRKPostInterruptEvent = .text:0x800CC4C8; // type:function size:0xB0 scope:global +TRKSwapAndGo = .text:0x800CC578; // type:function size:0xC4 scope:global +TRKInterruptHandlerEnableInterrupts = .text:0x800CC63C; // type:function size:0x54 scope:global +TRKTargetInterrupt = .text:0x800CC690; // type:function size:0x64 scope:global +TRKTargetAddStopInfo = .text:0x800CC6F4; // type:function size:0x90 scope:global +TRKTargetAddExceptionInfo = .text:0x800CC784; // type:function size:0x88 scope:global +TRKTargetEnableTrace = .text:0x800CC80C; // type:function size:0x3C scope:local +TRKTargetStepDone = .text:0x800CC848; // type:function size:0x84 scope:local +TRKTargetDoStep = .text:0x800CC8CC; // type:function size:0x70 scope:local +TRKTargetCheckStep = .text:0x800CC93C; // type:function size:0x68 scope:local +TRKTargetSingleStep = .text:0x800CC9A4; // type:function size:0x44 scope:global +TRKTargetStepOutOfRange = .text:0x800CC9E8; // type:function size:0x48 scope:global +TRKTargetGetPC = .text:0x800CCA30; // type:function size:0x10 scope:global +TRKTargetSupportRequest = .text:0x800CCA40; // type:function size:0xF0 scope:global +TRKTargetFlushCache = .text:0x800CCB30; // type:function size:0x3C scope:global +TRKTargetStopped = .text:0x800CCB6C; // type:function size:0x10 scope:global +TRKTargetSetStopped = .text:0x800CCB7C; // type:function size:0x10 scope:global +TRKTargetStop = .text:0x800CCB8C; // type:function size:0x28 scope:global +TRKPPCAccessSPR = .text:0x800CCBB4; // type:function size:0xB0 scope:global +TRKPPCAccessPairedSingleRegister = .text:0x800CCC64; // type:function size:0x78 scope:global +TRKPPCAccessFPRegister = .text:0x800CCCDC; // type:function size:0x180 scope:global +TRKPPCAccessSpecialReg = .text:0x800CCE5C; // type:function size:0x68 scope:global +TRKTargetSetInputPendingPtr = .text:0x800CCEC4; // type:function size:0x10 scope:global +InitMetroTRK = .text:0x800CCED4; // type:function size:0x94 scope:global +EnableMetroTRKInterrupts = .text:0x800CCF68; // type:function size:0x20 scope:global +TRKTargetTranslate = .text:0x800CCF88; // type:function size:0xC scope:global +TRK_copy_vector = .text:0x800CCF94; // type:function size:0x60 scope:global +__TRK_copy_vectors = .text:0x800CCFF4; // type:function size:0x94 scope:global +TRKInitializeTarget = .text:0x800CD088; // type:function size:0x40 scope:global +TRKSaveExtended1Block = .text:0x800CD0C8; // type:function size:0x1B8 scope:global +TRKRestoreExtended1Block = .text:0x800CD280; // type:function size:0x1B8 scope:global +TRKTargetCPUMinorType = .text:0x800CD438; // type:function size:0x8 scope:global +TRK_main = .text:0x800CD440; // type:function size:0x48 scope:global +TRKLoadContext = .text:0x800CD488; // type:function size:0x88 scope:global +TRKEXICallBack = .text:0x800CD510; // type:function size:0x38 scope:global +InitMetroTRKCommTable = .text:0x800CD548; // type:function size:0xE8 scope:global +TRKUARTInterruptHandler = .text:0x800CD630; // type:function size:0x4 scope:global +TRKInitializeIntDrivenUART = .text:0x800CD634; // type:function size:0x40 scope:global +EnableEXI2Interrupts = .text:0x800CD674; // type:function size:0x30 scope:global +TRKPollUART = .text:0x800CD6A4; // type:function size:0x30 scope:global +TRK_ReadUARTN = .text:0x800CD6D4; // type:function size:0x44 scope:global +TRK_WriteUARTN = .text:0x800CD718; // type:function size:0x44 scope:global +ReserveEXI2Port = .text:0x800CD75C; // type:function size:0x30 scope:global +UnreserveEXI2Port = .text:0x800CD78C; // type:function size:0x30 scope:global +TRK_board_display = .text:0x800CD7BC; // type:function size:0x24 scope:global +TRKTargetContinue = .text:0x800CD7E0; // type:function size:0x34 scope:global +__va_arg = .text:0x800CD814; // type:function size:0xF4 scope:global +__destroy_global_chain = .text:0x800CD908; // type:function size:0x48 scope:global +__cvt_fp2unsigned = .text:0x800CD950; // type:function size:0x5C scope:global +__div2u = .text:0x800CD9AC; // type:function size:0xEC scope:global +__div2i = .text:0x800CDA98; // type:function size:0x138 scope:global +__mod2u = .text:0x800CDBD0; // type:function size:0xE4 scope:global +__mod2i = .text:0x800CDCB4; // type:function size:0x10C scope:global +__shl2i = .text:0x800CDDC0; // type:function size:0x24 scope:global +__shr2u = .text:0x800CDDE4; // type:function size:0x24 scope:global +__shr2i = .text:0x800CDE08; // type:function size:0x28 scope:global +__cvt_sll_dbl = .text:0x800CDE30; // type:function size:0xB0 scope:global +__cvt_sll_flt = .text:0x800CDEE0; // type:function size:0xB4 scope:global +__cvt_dbl_usll = .text:0x800CDF94; // type:function size:0xCC scope:global +exit = .text:0x800CE060; // type:function size:0x10C scope:global +__num2dec = .text:0x800CE16C; // type:function size:0x3B4 scope:global +__flush_buffer = .text:0x800CE520; // type:function size:0xCC scope:global +__prep_buffer = .text:0x800CE5EC; // type:function size:0x34 scope:global +__kill_critical_regions = .text:0x800CE620; // type:function size:0x4 scope:global +toupper = .text:0x800CE624; // type:function size:0x28 scope:global +tolower = .text:0x800CE64C; // type:function size:0x28 scope:global +fwrite = .text:0x800CE674; // type:function size:0x2DC scope:global +wcstombs = .text:0x800CE950; // type:function size:0x3C scope:global +memcmp = .text:0x800CE98C; // type:function size:0x44 scope:global +memchr = .text:0x800CE9D0; // type:function size:0x2C scope:global +memmove = .text:0x800CE9FC; // type:function size:0xDC scope:global +__copy_longs_rev_unaligned = .text:0x800CEAD8; // type:function size:0xB0 scope:global +__copy_longs_unaligned = .text:0x800CEB88; // type:function size:0xC4 scope:global +__copy_longs_rev_aligned = .text:0x800CEC4C; // type:function size:0xAC scope:global +__copy_longs_aligned = .text:0x800CECF8; // type:function size:0xBC scope:global +__stdio_atexit = .text:0x800CEDB4; // type:function size:0x4 scope:global +sprintf = .text:0x800CEDB8; // type:function size:0xD4 scope:global +vsprintf = .text:0x800CEE8C; // type:function size:0x78 scope:global +vprintf = .text:0x800CEF04; // type:function size:0x7C scope:global +__StringWrite = .text:0x800CEF80; // type:function size:0x6C scope:global +__FileWrite = .text:0x800CEFEC; // type:function size:0x58 scope:global +__pformatter = .text:0x800CF044; // type:function size:0x630 scope:local +float2str = .text:0x800CF674; // type:function size:0x638 scope:local +round_decimal = .text:0x800CFCAC; // type:function size:0x134 scope:local +longlong2str = .text:0x800CFDE0; // type:function size:0x2E0 scope:local +long2str = .text:0x800D00C0; // type:function size:0x224 scope:local +parse_format = .text:0x800D02E4; // type:function size:0x4D8 scope:local +__StringRead = .text:0x800D07BC; // type:function size:0x90 scope:global +strchr = .text:0x800D084C; // type:function size:0x30 scope:global +strncmp = .text:0x800D087C; // type:function size:0x40 scope:global +strcmp = .text:0x800D08BC; // type:function size:0x124 scope:global +strncpy = .text:0x800D09E0; // type:function size:0x44 scope:global +strcpy = .text:0x800D0A24; // type:function size:0xB4 scope:global +strlen = .text:0x800D0AD8; // type:function size:0x20 scope:global +atoi = .text:0x800D0AF8; // type:function size:0xC4 scope:global +__strtoul = .text:0x800D0BBC; // type:function size:0x348 scope:global +__close_console = .text:0x800D0F04; // type:function size:0x8 scope:global +__write_console = .text:0x800D0F0C; // type:function size:0x98 scope:global +__read_console = .text:0x800D0FA4; // type:function size:0xE0 scope:global +fwide = .text:0x800D1084; // type:function size:0x80 scope:global +fabs__Fd = .text:0x800D1104; // type:function size:0x8 scope:weak +__ieee754_pow = .text:0x800D110C; // type:function size:0x818 scope:global +scalbn = .text:0x800D1924; // type:function size:0x20 scope:weak +__fpclassifyd__Fd = .text:0x800D1944; // type:function size:0x80 scope:weak +ceil = .text:0x800D19C4; // type:function size:0x168 scope:global +copysign = .text:0x800D1B2C; // type:function size:0x2C scope:global +floor = .text:0x800D1B58; // type:function size:0x16C scope:global +frexp = .text:0x800D1CC4; // type:function size:0x9C scope:global +ldexp = .text:0x800D1D60; // type:function size:0x178 scope:global +pow = .text:0x800D1ED8; // type:function size:0x20 scope:global +fabsf__Ff = .text:0x800D1EF8; // type:function size:0x8 scope:weak +log10f = .text:0x800D1F00; // type:function size:0x1D4 scope:global +tanf = .text:0x800D20D4; // type:function size:0x44 scope:global +cos__Ff = .text:0x800D2118; // type:function size:0x20 scope:weak +sin__Ff = .text:0x800D2138; // type:function size:0x20 scope:weak +cosf = .text:0x800D2158; // type:function size:0x194 scope:global +sinf = .text:0x800D22EC; // type:function size:0x1A4 scope:global +__sinit_trigf_c = .text:0x800D2490; // type:function size:0x30 scope:local +sqrt = .text:0x800D24C0; // type:function size:0x90 scope:global +EXI2_Init = .text:0x800D2550; // type:function size:0x4 scope:global +EXI2_EnableInterrupts = .text:0x800D2554; // type:function size:0x4 scope:global +EXI2_Poll = .text:0x800D2558; // type:function size:0x8 scope:global +EXI2_ReadN = .text:0x800D2560; // type:function size:0x8 scope:global +EXI2_WriteN = .text:0x800D2568; // type:function size:0x8 scope:global +EXI2_Reserve = .text:0x800D2570; // type:function size:0x4 scope:global +EXI2_Unreserve = .text:0x800D2574; // type:function size:0x4 scope:global +AMC_IsStub = .text:0x800D2578; // type:function size:0x8 scope:global +DBClose = .text:0x800D2580; // type:function size:0x4 scope:global +DBOpen = .text:0x800D2584; // type:function size:0x4 scope:global +DBWrite = .text:0x800D2588; // type:function size:0x260 scope:global +DBRead = .text:0x800D27E8; // type:function size:0x8C scope:global +DBQueryData = .text:0x800D2874; // type:function size:0x9C scope:global +DBInitInterrupts = .text:0x800D2910; // type:function size:0x54 scope:global +DBInitComm = .text:0x800D2964; // type:function size:0x78 scope:global +DBGHandler = .text:0x800D29DC; // type:function size:0x40 scope:local +MWCallback = .text:0x800D2A1C; // type:function size:0x3C scope:local +DBGReadStatus = .text:0x800D2A58; // type:function size:0xAC scope:local +DBGWrite = .text:0x800D2B04; // type:function size:0xDC scope:local +DBGRead = .text:0x800D2BE0; // type:function size:0xDC scope:local +DBGReadMailbox = .text:0x800D2CBC; // type:function size:0xAC scope:local +DBGEXIImm = .text:0x800D2D68; // type:function size:0x298 scope:local +Hu_IsStub = .text:0x800D3000; // type:function size:0x8 scope:weak +_ctors = .ctors:0x800D3020; // type:label scope:global data:4byte +__destroy_global_chain_reference = .dtors:0x800D3040; // type:object size:0x4 scope:global +_dtors = .dtors:0x800D3040; // type:label scope:global data:4byte +@5 = .rodata:0x800D3060; // type:object size:0x30 scope:local data:4byte +@120 = .rodata:0x800D3090; // type:object size:0x30 scope:local data:4byte +@121 = .rodata:0x800D30C0; // type:object size:0x30 scope:local data:4byte +@135 = .rodata:0x800D30F0; // type:object size:0x30 scope:local data:4byte +@136 = .rodata:0x800D3120; // type:object size:0x30 scope:local data:4byte +@160 = .rodata:0x800D3150; // type:object size:0x30 scope:local data:4byte +@161 = .rodata:0x800D3180; // type:object size:0x30 scope:local data:4byte +@5 = .rodata:0x800D31B0; // type:object size:0x30 scope:local data:4byte +@28 = .rodata:0x800D31E0; // type:object size:0x30 scope:local data:4byte +@29 = .rodata:0x800D3210; // type:object size:0x30 scope:local data:4byte +@2157 = .rodata:0x800D3240; // type:object size:0x40 scope:local data:4byte +...rodata.0 = .rodata:0x800D3280; // type:label scope:local +ClampRegion = .rodata:0x800D3280; // type:object size:0xA scope:local data:byte +...rodata.0 = .rodata:0x800D3290; // type:label scope:local +__THPJpegNaturalOrder = .rodata:0x800D3290; // type:object size:0x50 scope:local data:byte +__THPAANScaleFactor = .rodata:0x800D32E0; // type:object size:0x40 scope:local +@40 = .rodata:0x800D3320; // type:object size:0x1A scope:local data:string +gTRKMemMap = .rodata:0x800D3340; // type:object size:0x10 scope:global data:4byte +@233 = .rodata:0x800D3350; // type:object size:0x14 scope:local data:4byte +@238 = .rodata:0x800D3364; // type:object size:0x14 scope:local data:4byte +@243 = .rodata:0x800D3378; // type:object size:0x14 scope:local data:4byte +__constants = .rodata:0x800D3390; // type:object size:0x18 scope:local data:double +bit_values = .rodata:0x800D33A8; // type:object size:0x48 scope:local data:double +digit_values = .rodata:0x800D33F0; // type:object size:0x40 scope:local +__ctype_map = .rodata:0x800D3430; // type:object size:0x100 scope:global +__lower_map = .rodata:0x800D3530; // type:object size:0x100 scope:global +__upper_map = .rodata:0x800D3630; // type:object size:0x100 scope:global +@stringBase0 = .rodata:0x800D3730; // type:object size:0xE scope:local data:string_table +...rodata.0 = .rodata:0x800D3740; // type:label scope:local +bp = .rodata:0x800D3740; // type:object size:0x10 scope:local data:double +dp_h = .rodata:0x800D3750; // type:object size:0x10 scope:local +dp_l = .rodata:0x800D3760; // type:object size:0x10 scope:local +...rodata.0 = .rodata:0x800D3770; // type:label scope:local +_log10_poly = .rodata:0x800D3770; // type:object size:0x10 scope:local data:float +...rodata.0 = .rodata:0x800D3780; // type:label scope:local +tmp_float = .rodata:0x800D3780; // type:object size:0x10 scope:local data:float +...data.0 = .data:0x800D37A0; // type:label scope:local +gTgPcTPL = .data:0x800D37A0; // type:object size:0x8081 scope:global align:32 +@105 = .data:0x800DB824; // type:object size:0xC scope:local data:string +@106 = .data:0x800DB830; // type:object size:0xB scope:local data:string +@184 = .data:0x800DB83C; // type:object size:0x1D scope:local data:string +gTypeFile = .data:0x800DB860; // type:object size:0x10 scope:global +gcoverOpen = .data:0x800DB880; // type:object size:0x2B01 scope:global align:32 +...data.0 = .data:0x800DB880; // type:label scope:local +gnoDisk = .data:0x800DE3A0; // type:object size:0x2201 scope:global align:32 noreloc +gretryErr = .data:0x800E05C0; // type:object size:0x3401 scope:global align:32 noreloc +gfatalErr = .data:0x800E39E0; // type:object size:0x4B41 scope:global align:32 noreloc +gwrongDisk = .data:0x800E8540; // type:object size:0x2201 scope:global align:32 noreloc +greadingDisk = .data:0x800EA760; // type:object size:0xB81 scope:global align:32 noreloc +gbar = .data:0x800EB300; // type:object size:0x741 scope:global align:32 noreloc +gyes = .data:0x800EBA60; // type:object size:0x141 scope:global align:32 noreloc +gno = .data:0x800EBBC0; // type:object size:0x101 scope:global align:32 noreloc +gmesgOK = .data:0x800EBCE0; // type:object size:0x161 scope:global align:32 noreloc +Vert_s16 = .data:0x800EBE60; // type:object size:0x18 scope:global data:2byte +VertTitle_s16 = .data:0x800EBE80; // type:object size:0x18 scope:global +VertYes_s16 = .data:0x800EBEA0; // type:object size:0x18 scope:global +VertNo_s16 = .data:0x800EBEC0; // type:object size:0x18 scope:global +Vert_s16Bar = .data:0x800EBEE0; // type:object size:0x18 scope:global +Colors_u32 = .data:0x800EBF00; // type:object size:0xC scope:global +TexCoords_u8 = .data:0x800EBF20; // type:object size:0x8 scope:global +_dummy0 = .data:0x800EBF28; // type:object size:0xB scope:global data:string +_dummy1 = .data:0x800EBF34; // type:object size:0xE scope:global data:string +_dummy2 = .data:0x800EBF44; // type:object size:0xE scope:global data:string +_dummy3 = .data:0x800EBF54; // type:object size:0x54 scope:global data:string +_dummy4 = .data:0x800EBFA8; // type:object size:0x51 scope:global data:string +_dummy5 = .data:0x800EBFFC; // type:object size:0x38 scope:global data:string +@746 = .data:0x800EC034; // type:object size:0x4B scope:local data:string +@747 = .data:0x800EC080; // type:object size:0x4D scope:local data:string +@748 = .data:0x800EC0D0; // type:object size:0xA scope:local data:string +@751 = .data:0x800EC0DC; // type:object size:0xB scope:local data:string +@793 = .data:0x800EC0E8; // type:object size:0xD8 scope:local +@813 = .data:0x800EC1C0; // type:object size:0x1C scope:local +@825 = .data:0x800EC1DC; // type:object size:0x2B scope:local data:string +@826 = .data:0x800EC208; // type:object size:0x9 scope:local data:string +@1536 = .data:0x800EC214; // type:object size:0x11 scope:local data:string +@1537 = .data:0x800EC228; // type:object size:0x11 scope:local data:string +@1538 = .data:0x800EC23C; // type:object size:0x11 scope:local data:string +@1539 = .data:0x800EC250; // type:object size:0x11 scope:local data:string +@1540 = .data:0x800EC264; // type:object size:0x13 scope:local data:string +@1541 = .data:0x800EC278; // type:object size:0x13 scope:local data:string +@1542 = .data:0x800EC28C; // type:object size:0x13 scope:local data:string +@1543 = .data:0x800EC2A0; // type:object size:0x13 scope:local data:string +@1544 = .data:0x800EC2B4; // type:object size:0x11 scope:local data:string +@1545 = .data:0x800EC2C8; // type:object size:0x11 scope:local data:string +@1546 = .data:0x800EC2DC; // type:object size:0x11 scope:local data:string +@1547 = .data:0x800EC2F0; // type:object size:0x11 scope:local data:string +@1548 = .data:0x800EC304; // type:object size:0x11 scope:local data:string +@1549 = .data:0x800EC318; // type:object size:0x11 scope:local data:string +@1550 = .data:0x800EC32C; // type:object size:0x11 scope:local data:string +@1551 = .data:0x800EC340; // type:object size:0x11 scope:local data:string +@1552 = .data:0x800EC354; // type:object size:0x13 scope:local data:string +@1553 = .data:0x800EC368; // type:object size:0x11 scope:local data:string +@1554 = .data:0x800EC37C; // type:object size:0x11 scope:local data:string +@1555 = .data:0x800EC390; // type:object size:0x11 scope:local data:string +@1556 = .data:0x800EC3A4; // type:object size:0x13 scope:local data:string +@1557 = .data:0x800EC3B8; // type:object size:0x13 scope:local data:string +@1558 = .data:0x800EC3CC; // type:object size:0x13 scope:local data:string +@1559 = .data:0x800EC3E0; // type:object size:0x13 scope:local data:string +@1560 = .data:0x800EC3F4; // type:object size:0x11 scope:local data:string +@1561 = .data:0x800EC408; // type:object size:0x11 scope:local data:string +@1562 = .data:0x800EC41C; // type:object size:0x11 scope:local data:string +@1563 = .data:0x800EC430; // type:object size:0x11 scope:local data:string +@1564 = .data:0x800EC444; // type:object size:0x15 scope:local data:string +@1565 = .data:0x800EC45C; // type:object size:0xA0 scope:local +@1609 = .data:0x800EC4FC; // type:object size:0x13 scope:local data:string +@1610 = .data:0x800EC510; // type:object size:0x13 scope:local data:string +@1611 = .data:0x800EC524; // type:object size:0x11 scope:local data:string +@1612 = .data:0x800EC538; // type:object size:0x11 scope:local data:string +@1613 = .data:0x800EC54C; // type:object size:0x11 scope:local data:string +@1614 = .data:0x800EC560; // type:object size:0x13 scope:local data:string +@1615 = .data:0x800EC574; // type:object size:0x13 scope:local data:string +@1616 = .data:0x800EC588; // type:object size:0x11 scope:local data:string +@1617 = .data:0x800EC59C; // type:object size:0x78 scope:local +@1671 = .data:0x800EC614; // type:object size:0x11 scope:local data:string +@1672 = .data:0x800EC628; // type:object size:0x11 scope:local data:string +@1673 = .data:0x800EC63C; // type:object size:0x11 scope:local data:string +@1691 = .data:0x800EC650; // type:object size:0x1C scope:local +@1937 = .data:0x800EC66C; // type:object size:0x26 scope:local data:string +@1938 = .data:0x800EC694; // type:object size:0x34 scope:local +@9 = .data:0x800EC6C8; // type:object size:0x21 scope:local data:string +...data.0 = .data:0x800EC6F0; // type:label scope:local +VolumeTable = .data:0x800EC6F0; // type:object size:0x100 scope:global +@10 = .data:0x800EC7F0; // type:object size:0x3C scope:local data:string +@41 = .data:0x800EC82C; // type:object size:0x3B scope:local data:string +@42 = .data:0x800EC868; // type:object size:0x35 scope:local data:string +@43 = .data:0x800EC8A0; // type:object size:0x10 scope:local data:string +@45 = .data:0x800EC8B0; // type:object size:0x1E scope:local data:string +@46 = .data:0x800EC8D0; // type:object size:0x12 scope:local data:string +@47 = .data:0x800EC8E4; // type:object size:0x1B scope:local data:string +@172 = .data:0x800EC900; // type:object size:0x2C scope:local data:string +@173 = .data:0x800EC92C; // type:object size:0x33 scope:local data:string +@174 = .data:0x800EC960; // type:object size:0x29 scope:local data:string +@11 = .data:0x800EC990; // type:object size:0x22 scope:local data:string +@139 = .data:0x800EC9B8; // type:object size:0x1A scope:local data:string +@217 = .data:0x800EC9D4; // type:object size:0x34 scope:local +@237 = .data:0x800ECA08; // type:object size:0x1C scope:local +@11 = .data:0x800ECA28; // type:object size:0x22 scope:local data:string +...data.0 = .data:0x800ECA50; // type:label scope:local +@2076 = .data:0x800ECA50; // type:object size:0x11 scope:local +@2334 = .data:0x800ECA64; // type:object size:0x35 scope:local data:string +@2335 = .data:0x800ECA9C; // type:object size:0xB scope:local data:string +@2980 = .data:0x800ECAA8; // type:object size:0x60 scope:local +@2995 = .data:0x800ECB08; // type:object size:0x60 scope:local +@3180 = .data:0x800ECB68; // type:object size:0xC8 scope:local +@3232 = .data:0x800ECC30; // type:object size:0xF scope:local data:string +@3335 = .data:0x800ECC40; // type:object size:0x12 scope:local data:string +@3537 = .data:0x800ECC54; // type:object size:0xE scope:local data:string +@3834 = .data:0x800ECC64; // type:object size:0x12 scope:local data:string +@4148 = .data:0x800ECC78; // type:object size:0x14 scope:local data:string +@4149 = .data:0x800ECC8C; // type:object size:0x14 scope:local data:string +@4195 = .data:0x800ECCA0; // type:object size:0x14 scope:local data:string +@4256 = .data:0x800ECCB4; // type:object size:0x14 scope:local data:string +gClassCode = .data:0x800ECCC8; // type:object size:0x10 scope:global +gClassSound = .data:0x800ECCD8; // type:object size:0x10 scope:global +@475 = .data:0x800ECCE8; // type:object size:0x3E scope:local data:string +@476 = .data:0x800ECD28; // type:object size:0xB scope:local data:string +...data.0 = .data:0x800ECD38; // type:label scope:local +@137 = .data:0x800ECD38; // type:object size:0xD scope:local data:string +gClassFrame = .data:0x800ECD48; // type:object size:0x10 scope:global +ganNameColor = .data:0x800ECD58; // type:object size:0x20 scope:global +ganNamePixel = .data:0x800ECD78; // type:object size:0x20 scope:global data:4byte +ganNameTexMtx = .data:0x800ECD98; // type:object size:0x20 scope:global data:4byte +ganNameTexCoord = .data:0x800ECDB8; // type:object size:0x20 scope:global data:4byte +@1055 = .data:0x800ECDD8; // type:object size:0x12 scope:local data:string +@1056 = .data:0x800ECDEC; // type:object size:0x12 scope:local data:string +@1057 = .data:0x800ECE00; // type:object size:0x12 scope:local data:string +@1058 = .data:0x800ECE14; // type:object size:0xC scope:local data:string +gaszNameColor = .data:0x800ECE20; // type:object size:0x50 scope:local +gaszNameAlpha = .data:0x800ECE70; // type:object size:0x24 scope:local +gapfDrawTriangle = .data:0x800ECE94; // type:object size:0x20 scope:local +gapfDrawLine = .data:0x800ECEB4; // type:object size:0x18 scope:local +sZBufShift = .data:0x800ECECC; // type:object size:0x40 scope:local +@1455 = .data:0x800ECF0C; // type:object size:0xA scope:local data:string +@1456 = .data:0x800ECF18; // type:object size:0xC scope:local data:string +gaszNameColorType = .data:0x800ECF24; // type:object size:0x14 scope:local +sCommandCodes$1679 = .data:0x800ECF38; // type:object size:0x20 scope:local data:4byte +sCommandCodes$1702 = .data:0x800ECF58; // type:object size:0x28 scope:local data:4byte +sCommandCodes2$1722 = .data:0x800ECF80; // type:object size:0x28 scope:local data:4byte +GBIcode$1816 = .data:0x800ECFA8; // type:object size:0xC scope:local data:4byte +GBIcode2D2$1906 = .data:0x800ECFB4; // type:object size:0x1C scope:local +GBIcode3D1$1907 = .data:0x800ECFD0; // type:object size:0x14 scope:local +GBIcode3D2$1908 = .data:0x800ECFE4; // type:object size:0x18 scope:local +anRenderModeDatabaseCycle2 = .data:0x800ECFFC; // type:object size:0x190 scope:global +anRenderModeDatabaseCopy = .data:0x800ED18C; // type:object size:0x190 scope:global +anRenderModeDatabaseFill = .data:0x800ED31C; // type:object size:0x190 scope:global +anRenderModeDatabaseCycle1 = .data:0x800ED4AC; // type:object size:0x190 scope:global +@2728 = .data:0x800ED63C; // type:object size:0x2C scope:local data:string +@2729 = .data:0x800ED668; // type:object size:0x28 scope:local +@3455 = .data:0x800ED690; // type:object size:0x28 scope:local +@4743 = .data:0x800ED6B8; // type:object size:0x3F scope:local data:string +@4785 = .data:0x800ED6F8; // type:object size:0x14 scope:local data:string +@6116 = .data:0x800ED70C; // type:object size:0x20 scope:local +@6137 = .data:0x800ED72C; // type:object size:0x80 scope:local +@6333 = .data:0x800ED7AC; // type:object size:0x27 scope:local data:string +@7442 = .data:0x800ED7D4; // type:object size:0x26 scope:local data:string +...data.0 = .data:0x800ED800; // type:label scope:local +@2 = .data:0x800ED800; // type:object size:0xD scope:local data:string +gClassSystem = .data:0x800ED810; // type:object size:0x10 scope:global +contMap = .data:0x800ED820; // type:object size:0x140 scope:local +@1002 = .data:0x800ED960; // type:object size:0x40 scope:local +@1195 = .data:0x800ED9A0; // type:object size:0xC scope:local data:string +@1196 = .data:0x800ED9AC; // type:object size:0xB scope:local data:string +@1198 = .data:0x800ED9B8; // type:object size:0xD scope:local data:string +@1200 = .data:0x800ED9C8; // type:object size:0x40 scope:local +@1683 = .data:0x800EDA08; // type:object size:0xF scope:local data:string +@1684 = .data:0x800EDA18; // type:object size:0xE scope:local data:string +@1686 = .data:0x800EDA28; // type:object size:0x9 scope:local data:string +@1690 = .data:0x800EDA34; // type:object size:0x1B scope:local data:string +@1694 = .data:0x800EDA50; // type:object size:0x1A scope:local data:string +@1699 = .data:0x800EDA6C; // type:object size:0x10 scope:local data:string +@1702 = .data:0x800EDA7C; // type:object size:0xB scope:local data:string +@1705 = .data:0x800EDA88; // type:object size:0xE scope:local data:string +@1713 = .data:0x800EDA98; // type:object size:0xE scope:local data:string +@1719 = .data:0x800EDAA8; // type:object size:0xA scope:local data:string +@1725 = .data:0x800EDAB4; // type:object size:0xB scope:local data:string +@1729 = .data:0x800EDAC0; // type:object size:0xE scope:local data:string +@1732 = .data:0x800EDAD0; // type:object size:0xE scope:local data:string +@1735 = .data:0x800EDAE0; // type:object size:0xE scope:local data:string +@1739 = .data:0x800EDAF0; // type:object size:0xB scope:local data:string +@1740 = .data:0x800EDAFC; // type:object size:0xC scope:local data:string +@1741 = .data:0x800EDB08; // type:object size:0xB scope:local data:string +@1743 = .data:0x800EDB14; // type:object size:0xF scope:local data:string +@1744 = .data:0x800EDB24; // type:object size:0x10 scope:local data:string +@1745 = .data:0x800EDB34; // type:object size:0xF scope:local data:string +@1762 = .data:0x800EDB44; // type:object size:0xD scope:local data:string +@1766 = .data:0x800EDB54; // type:object size:0xB scope:local data:string +...data.0 = .data:0x800EDB60; // type:label scope:local +gClassCPU = .data:0x800EDB60; // type:object size:0x10 scope:global +gaszNameGPR = .data:0x800EDB70; // type:object size:0x80 scope:local +gaszNameFPR = .data:0x800EDBF0; // type:object size:0x80 scope:local +@204 = .data:0x800EDC70; // type:object size:0xA scope:local data:string +@205 = .data:0x800EDC7C; // type:object size:0xA scope:local data:string +@207 = .data:0x800EDC88; // type:object size:0xA scope:local data:string +@209 = .data:0x800EDC94; // type:object size:0xD scope:local data:string +@210 = .data:0x800EDCA4; // type:object size:0xA scope:local data:string +@212 = .data:0x800EDCB0; // type:object size:0x9 scope:local data:string +@220 = .data:0x800EDCBC; // type:object size:0x9 scope:local data:string +@221 = .data:0x800EDCC8; // type:object size:0x9 scope:local data:string +@222 = .data:0x800EDCD4; // type:object size:0xA scope:local data:string +@223 = .data:0x800EDCE0; // type:object size:0xE scope:local data:string +@224 = .data:0x800EDCF0; // type:object size:0xE scope:local data:string +@225 = .data:0x800EDD00; // type:object size:0xE scope:local data:string +@226 = .data:0x800EDD10; // type:object size:0xE scope:local data:string +@227 = .data:0x800EDD20; // type:object size:0xE scope:local data:string +@229 = .data:0x800EDD30; // type:object size:0xC scope:local data:string +@232 = .data:0x800EDD3C; // type:object size:0xA scope:local data:string +@233 = .data:0x800EDD48; // type:object size:0xE scope:local data:string +gaszNameCP0 = .data:0x800EDD58; // type:object size:0x80 scope:local +@235 = .data:0x800EDDD8; // type:object size:0x10 scope:local data:string +@236 = .data:0x800EDDE8; // type:object size:0x10 scope:local data:string +@237 = .data:0x800EDDF8; // type:object size:0x10 scope:local data:string +@238 = .data:0x800EDE08; // type:object size:0x10 scope:local data:string +@239 = .data:0x800EDE18; // type:object size:0x10 scope:local data:string +@240 = .data:0x800EDE28; // type:object size:0x10 scope:local data:string +@241 = .data:0x800EDE38; // type:object size:0x10 scope:local data:string +@242 = .data:0x800EDE48; // type:object size:0x10 scope:local data:string +@243 = .data:0x800EDE58; // type:object size:0x10 scope:local data:string +@244 = .data:0x800EDE68; // type:object size:0x11 scope:local data:string +@245 = .data:0x800EDE7C; // type:object size:0x11 scope:local data:string +@246 = .data:0x800EDE90; // type:object size:0x11 scope:local data:string +@247 = .data:0x800EDEA4; // type:object size:0x11 scope:local data:string +@248 = .data:0x800EDEB8; // type:object size:0x11 scope:local data:string +@249 = .data:0x800EDECC; // type:object size:0x11 scope:local data:string +@250 = .data:0x800EDEE0; // type:object size:0x11 scope:local data:string +@251 = .data:0x800EDEF4; // type:object size:0x11 scope:local data:string +@252 = .data:0x800EDF08; // type:object size:0x11 scope:local data:string +@253 = .data:0x800EDF1C; // type:object size:0x11 scope:local data:string +@254 = .data:0x800EDF30; // type:object size:0x11 scope:local data:string +@255 = .data:0x800EDF44; // type:object size:0x11 scope:local data:string +@256 = .data:0x800EDF58; // type:object size:0x11 scope:local data:string +@257 = .data:0x800EDF6C; // type:object size:0x11 scope:local data:string +@258 = .data:0x800EDF80; // type:object size:0x11 scope:local data:string +@259 = .data:0x800EDF94; // type:object size:0x11 scope:local data:string +@260 = .data:0x800EDFA8; // type:object size:0x11 scope:local data:string +@261 = .data:0x800EDFBC; // type:object size:0x11 scope:local data:string +@262 = .data:0x800EDFD0; // type:object size:0x11 scope:local data:string +@263 = .data:0x800EDFE4; // type:object size:0x11 scope:local data:string +@264 = .data:0x800EDFF8; // type:object size:0x11 scope:local data:string +gaszNameCP1 = .data:0x800EE00C; // type:object size:0x80 scope:local +ganMaskGetCP0 = .data:0x800EE090; // type:object size:0x100 scope:local +ganMaskSetCP0 = .data:0x800EE190; // type:object size:0x100 scope:local +Opcode = .data:0x800EE290; // type:object size:0x40 scope:local +SpecialOpcode = .data:0x800EE2D0; // type:object size:0x40 scope:local +RegimmOpcode = .data:0x800EE310; // type:object size:0x20 scope:local +ganOpcodeSaveFP1 = .data:0x800EE330; // type:object size:0x14 scope:local +ganOpcodeSaveFP2_0 = .data:0x800EE344; // type:object size:0x14 scope:local +ganOpcodeSaveFP2_1 = .data:0x800EE358; // type:object size:0xC scope:local +ganOpcodeLoadFP = .data:0x800EE364; // type:object size:0x14 scope:local +ganMapGPR = .data:0x800EE378; // type:object size:0x80 scope:global data:4byte +@11596 = .data:0x800EE3F8; // type:object size:0x64 scope:local +@11595 = .data:0x800EE45C; // type:object size:0x100 scope:local +@11665 = .data:0x800EE55C; // type:object size:0x22 scope:local data:string +@11677 = .data:0x800EE580; // type:object size:0x16 scope:local data:string +@11678 = .data:0x800EE598; // type:object size:0x26 scope:local data:string +@11679 = .data:0x800EE5C0; // type:object size:0x12 scope:local data:string +@13051 = .data:0x800EE5D4; // type:object size:0x64 scope:local +@13050 = .data:0x800EE638; // type:object size:0xB0 scope:local +@13940 = .data:0x800EE6E8; // type:object size:0xA scope:local data:string +@13942 = .data:0x800EE6F4; // type:object size:0x3C scope:local +@14126 = .data:0x800EE730; // type:object size:0x30 scope:local +@15146 = .data:0x800EE760; // type:object size:0x100 scope:local +@15143 = .data:0x800EE860; // type:object size:0x100 scope:local +@15142 = .data:0x800EE960; // type:object size:0x100 scope:local +@15140 = .data:0x800EEA60; // type:object size:0x100 scope:local +@15139 = .data:0x800EEB60; // type:object size:0x1C scope:local +@15138 = .data:0x800EEB7C; // type:object size:0x24 scope:local +@15137 = .data:0x800EEBA0; // type:object size:0x64 scope:local +@15136 = .data:0x800EEC04; // type:object size:0x50 scope:local +@15135 = .data:0x800EEC54; // type:object size:0x100 scope:local +@15134 = .data:0x800EED54; // type:object size:0x100 scope:local +@15420 = .data:0x800EEE54; // type:object size:0x34 scope:local data:string +@27576 = .data:0x800EEE88; // type:object size:0x1C scope:local data:string +@27577 = .data:0x800EEEA4; // type:object size:0x1D scope:local data:string +@27578 = .data:0x800EEEC4; // type:object size:0x10 scope:local data:string +@27579 = .data:0x800EEED4; // type:object size:0x1C scope:local data:string +@27580 = .data:0x800EEEF0; // type:object size:0x1D scope:local data:string +@27581 = .data:0x800EEF10; // type:object size:0x10 scope:local data:string +@27582 = .data:0x800EEF20; // type:object size:0xE scope:local data:string +@27583 = .data:0x800EEF30; // type:object size:0xE scope:local data:string +@27584 = .data:0x800EEF40; // type:object size:0xE scope:local data:string +@27585 = .data:0x800EEF50; // type:object size:0xE scope:local data:string +@27586 = .data:0x800EEF60; // type:object size:0xF scope:local data:string +@27587 = .data:0x800EEF70; // type:object size:0xE scope:local data:string +@27588 = .data:0x800EEF80; // type:object size:0xF scope:local data:string +@27589 = .data:0x800EEF90; // type:object size:0xE scope:local data:string +@27590 = .data:0x800EEFA0; // type:object size:0x12 scope:local data:string +@27591 = .data:0x800EEFB4; // type:object size:0x12 scope:local data:string +@27592 = .data:0x800EEFC8; // type:object size:0x11 scope:local data:string +@27593 = .data:0x800EEFDC; // type:object size:0x12 scope:local data:string +@27594 = .data:0x800EEFF0; // type:object size:0x10 scope:local data:string +@27595 = .data:0x800EF000; // type:object size:0xE scope:local data:string +@27596 = .data:0x800EF010; // type:object size:0xF scope:local data:string +@27597 = .data:0x800EF020; // type:object size:0xF scope:local data:string +@27598 = .data:0x800EF030; // type:object size:0x10 scope:local data:string +@27599 = .data:0x800EF040; // type:object size:0x10 scope:local data:string +@27600 = .data:0x800EF050; // type:object size:0x10 scope:local data:string +@27601 = .data:0x800EF060; // type:object size:0x10 scope:local data:string +@27602 = .data:0x800EF070; // type:object size:0x10 scope:local data:string +@27603 = .data:0x800EF080; // type:object size:0xF scope:local data:string +@27604 = .data:0x800EF090; // type:object size:0x11 scope:local data:string +@27605 = .data:0x800EF0A4; // type:object size:0x10 scope:local data:string +@27606 = .data:0x800EF0B4; // type:object size:0x10 scope:local data:string +@27607 = .data:0x800EF0C4; // type:object size:0xF scope:local data:string +@27608 = .data:0x800EF0D4; // type:object size:0x10 scope:local data:string +@27609 = .data:0x800EF0E4; // type:object size:0xF scope:local data:string +@27610 = .data:0x800EF0F4; // type:object size:0x10 scope:local data:string +@27611 = .data:0x800EF104; // type:object size:0xE scope:local data:string +@27612 = .data:0x800EF114; // type:object size:0xE scope:local data:string +@27613 = .data:0x800EF124; // type:object size:0xE scope:local data:string +@27614 = .data:0x800EF134; // type:object size:0xE scope:local data:string +@27615 = .data:0x800EF144; // type:object size:0xF scope:local data:string +@27616 = .data:0x800EF154; // type:object size:0xE scope:local data:string +@27617 = .data:0x800EF164; // type:object size:0xF scope:local data:string +@27618 = .data:0x800EF174; // type:object size:0xE scope:local data:string +@27619 = .data:0x800EF184; // type:object size:0x12 scope:local data:string +@27620 = .data:0x800EF198; // type:object size:0x12 scope:local data:string +@27621 = .data:0x800EF1AC; // type:object size:0x11 scope:local data:string +@27622 = .data:0x800EF1C0; // type:object size:0x12 scope:local data:string +@27623 = .data:0x800EF1D4; // type:object size:0x10 scope:local data:string +@27624 = .data:0x800EF1E4; // type:object size:0xE scope:local data:string +@27625 = .data:0x800EF1F4; // type:object size:0xF scope:local data:string +@27626 = .data:0x800EF204; // type:object size:0xF scope:local data:string +@27627 = .data:0x800EF214; // type:object size:0x10 scope:local data:string +@27628 = .data:0x800EF224; // type:object size:0x10 scope:local data:string +@27629 = .data:0x800EF234; // type:object size:0x10 scope:local data:string +@27630 = .data:0x800EF244; // type:object size:0x10 scope:local data:string +@27631 = .data:0x800EF254; // type:object size:0x10 scope:local data:string +@27632 = .data:0x800EF264; // type:object size:0xF scope:local data:string +@27633 = .data:0x800EF274; // type:object size:0x11 scope:local data:string +@27634 = .data:0x800EF288; // type:object size:0x10 scope:local data:string +@27635 = .data:0x800EF298; // type:object size:0x10 scope:local data:string +@27636 = .data:0x800EF2A8; // type:object size:0xF scope:local data:string +@27637 = .data:0x800EF2B8; // type:object size:0x10 scope:local data:string +@27638 = .data:0x800EF2C8; // type:object size:0xF scope:local data:string +@27639 = .data:0x800EF2D8; // type:object size:0x10 scope:local data:string +@27648 = .data:0x800EF2E8; // type:object size:0x100 scope:local +@27647 = .data:0x800EF3E8; // type:object size:0x100 scope:local +@27646 = .data:0x800EF4E8; // type:object size:0x100 scope:local +@27645 = .data:0x800EF5E8; // type:object size:0x100 scope:local +@27644 = .data:0x800EF6E8; // type:object size:0x1C scope:local +@27643 = .data:0x800EF704; // type:object size:0x64 scope:local +@27642 = .data:0x800EF768; // type:object size:0x50 scope:local +@27641 = .data:0x800EF7B8; // type:object size:0x100 scope:local +@27640 = .data:0x800EF8B8; // type:object size:0x100 scope:local +@27732 = .data:0x800EF9B8; // type:object size:0x64 scope:local +@27731 = .data:0x800EFA1C; // type:object size:0x60 scope:local +@27772 = .data:0x800EFA7C; // type:object size:0x80 scope:local +@27808 = .data:0x800EFAFC; // type:object size:0x80 scope:local +@28227 = .data:0x800EFB7C; // type:object size:0x44 scope:local data:string +gClassPIF = .data:0x800EFBC0; // type:object size:0x10 scope:global +gClassRAM = .data:0x800EFBD0; // type:object size:0x10 scope:global +@176 = .data:0x800EFBE0; // type:object size:0x74 scope:local +@190 = .data:0x800EFC54; // type:object size:0x74 scope:local +@206 = .data:0x800EFCC8; // type:object size:0x94 scope:local +@222 = .data:0x800EFD5C; // type:object size:0x94 scope:local +...data.0 = .data:0x800EFDF0; // type:label scope:local +gClassROM = .data:0x800EFDF0; // type:object size:0x10 scope:global +ganOffsetBlock_ZLE = .data:0x800EFE00; // type:object size:0x318 scope:local +ganOffsetBlock_URAZLE = .data:0x800F0118; // type:object size:0x318 scope:local +@1055 = .data:0x800F0430; // type:object size:0xB scope:local data:string +@1057 = .data:0x800F043C; // type:object size:0xB scope:local data:string +gClassRDP = .data:0x800F0448; // type:object size:0x10 scope:global +sCommandCodes$48 = .data:0x800F0458; // type:object size:0xC scope:local data:4byte +@356 = .data:0x800F0464; // type:object size:0x34 scope:local +@366 = .data:0x800F0498; // type:object size:0x34 scope:local +@381 = .data:0x800F04CC; // type:object size:0x74 scope:local +@411 = .data:0x800F0540; // type:object size:0x74 scope:local +@739 = .data:0x800F05B4; // type:object size:0x100 scope:local +gClassRdb = .data:0x800F06B8; // type:object size:0x10 scope:global +@200 = .data:0x800F06C8; // type:object size:0x5C scope:local +gClassRSP = .data:0x800F0728; // type:object size:0x10 scope:global +cmask_tab = .data:0x800F0738; // type:object size:0x20 scope:global +emask_tab = .data:0x800F0758; // type:object size:0x20 scope:global +TMEMSIZE$3463 = .data:0x800F0778; // type:object size:0xA scope:local +@5189 = .data:0x800F0784; // type:object size:0x28 scope:local data:string +@5239 = .data:0x800F07AC; // type:object size:0x74 scope:local +@5415 = .data:0x800F0820; // type:object size:0x20 scope:local +@5414 = .data:0x800F0840; // type:object size:0x74 scope:local +@5472 = .data:0x800F08B4; // type:object size:0x2C scope:local +@6252 = .data:0x800F08E0; // type:object size:0x34 scope:local +@6251 = .data:0x800F0914; // type:object size:0x3C scope:local +@6250 = .data:0x800F0950; // type:object size:0x34 scope:local +@6757 = .data:0x800F0984; // type:object size:0x34 scope:local +@6756 = .data:0x800F09B8; // type:object size:0x3C scope:local +@6751 = .data:0x800F09F4; // type:object size:0x7C scope:local +@9082 = .data:0x800F0A70; // type:object size:0x6C scope:local +@9334 = .data:0x800F0ADC; // type:object size:0x5C scope:local +@9702 = .data:0x800F0B38; // type:object size:0x60 scope:local +@10919 = .data:0x800F0B98; // type:object size:0x40 scope:local +gClassMips = .data:0x800F0BD8; // type:object size:0x10 scope:global +@111 = .data:0x800F0BE8; // type:object size:0x34 scope:local +@163 = .data:0x800F0C1C; // type:object size:0x34 scope:local +gClassDisk = .data:0x800F0C50; // type:object size:0x10 scope:global +gClassFlash = .data:0x800F0C60; // type:object size:0x10 scope:global +gClassSram = .data:0x800F0C70; // type:object size:0x10 scope:global +gClassAudio = .data:0x800F0C80; // type:object size:0x10 scope:global +@79 = .data:0x800F0C90; // type:object size:0x1F scope:local data:string +@81 = .data:0x800F0CB0; // type:object size:0x1A scope:local data:string +@82 = .data:0x800F0CCC; // type:object size:0x54 scope:local +@106 = .data:0x800F0D20; // type:object size:0x54 scope:local +gClassVideo = .data:0x800F0D78; // type:object size:0x10 scope:global +@102 = .data:0x800F0D88; // type:object size:0xD4 scope:local +@142 = .data:0x800F0E5C; // type:object size:0xD4 scope:local +gClassSerial = .data:0x800F0F30; // type:object size:0x10 scope:global +@49 = .data:0x800F0F40; // type:object size:0x64 scope:local +@68 = .data:0x800F0FA4; // type:object size:0x64 scope:local +...data.0 = .data:0x800F1008; // type:label scope:local +@21 = .data:0x800F1008; // type:object size:0xB scope:local data:string +gClassLibrary = .data:0x800F1014; // type:object size:0x10 scope:global +__osRcpImTable = .data:0x800F1024; // type:object size:0x100 scope:local +@447 = .data:0x800F1124; // type:object size:0xA scope:local data:string +@448 = .data:0x800F1130; // type:object size:0x14 scope:local data:string +@449 = .data:0x800F1144; // type:object size:0x12 scope:local data:string +@450 = .data:0x800F1158; // type:object size:0xE scope:local data:string +@451 = .data:0x800F1168; // type:object size:0x13 scope:local data:string +@452 = .data:0x800F117C; // type:object size:0xD scope:local data:string +@453 = .data:0x800F118C; // type:object size:0xE scope:local data:string +@454 = .data:0x800F119C; // type:object size:0xE scope:local data:string +@455 = .data:0x800F11AC; // type:object size:0x12 scope:local data:string +@456 = .data:0x800F11C0; // type:object size:0x15 scope:local data:string +@457 = .data:0x800F11D8; // type:object size:0xF scope:local data:string +@458 = .data:0x800F11E8; // type:object size:0xF scope:local data:string +@459 = .data:0x800F11F8; // type:object size:0x10 scope:local data:string +@465 = .data:0x800F1208; // type:object size:0x14 scope:local data:string +@466 = .data:0x800F121C; // type:object size:0x14 scope:local data:string +@467 = .data:0x800F1230; // type:object size:0x9 scope:local data:string +@468 = .data:0x800F123C; // type:object size:0xA scope:local data:string +@469 = .data:0x800F1248; // type:object size:0xC scope:local data:string +@470 = .data:0x800F1254; // type:object size:0xB scope:local data:string +@471 = .data:0x800F1260; // type:object size:0x9 scope:local data:string +@473 = .data:0x800F126C; // type:object size:0xF scope:local data:string +@474 = .data:0x800F127C; // type:object size:0xE scope:local data:string +@475 = .data:0x800F128C; // type:object size:0x9 scope:local data:string +@477 = .data:0x800F1298; // type:object size:0xA scope:local data:string +@478 = .data:0x800F12A4; // type:object size:0x9 scope:local data:string +@479 = .data:0x800F12B0; // type:object size:0xD scope:local data:string +@480 = .data:0x800F12C0; // type:object size:0xC scope:local data:string +@481 = .data:0x800F12CC; // type:object size:0xA scope:local data:string +@482 = .data:0x800F12D8; // type:object size:0x9 scope:local data:string +@483 = .data:0x800F12E4; // type:object size:0x10 scope:local data:string +@484 = .data:0x800F12F4; // type:object size:0xF scope:local data:string +@485 = .data:0x800F1304; // type:object size:0x11 scope:local data:string +@486 = .data:0x800F1318; // type:object size:0x10 scope:local data:string +@487 = .data:0x800F1328; // type:object size:0x11 scope:local data:string +@488 = .data:0x800F133C; // type:object size:0x12 scope:local data:string +@489 = .data:0x800F1350; // type:object size:0xE scope:local data:string +@490 = .data:0x800F1360; // type:object size:0xD scope:local data:string +@491 = .data:0x800F1370; // type:object size:0xE scope:local data:string +@492 = .data:0x800F1380; // type:object size:0x11 scope:local data:string +@493 = .data:0x800F1394; // type:object size:0x12 scope:local data:string +@494 = .data:0x800F13A8; // type:object size:0xC scope:local data:string +@495 = .data:0x800F13B4; // type:object size:0xF scope:local data:string +@496 = .data:0x800F13C4; // type:object size:0x13 scope:local data:string +@497 = .data:0x800F13D8; // type:object size:0x1A scope:local data:string +@498 = .data:0x800F13F4; // type:object size:0x15 scope:local data:string +@499 = .data:0x800F140C; // type:object size:0x13 scope:local data:string +@500 = .data:0x800F1420; // type:object size:0x12 scope:local data:string +gaFunction = .data:0x800F1434; // type:object size:0x1008 scope:global +@1047 = .data:0x800F243C; // type:object size:0x46 scope:local data:string +@1048 = .data:0x800F2484; // type:object size:0xA scope:local data:string +@2462 = .data:0x800F2490; // type:object size:0x24 scope:local +...data.0 = .data:0x800F24B8; // type:label scope:local +@2 = .data:0x800F24B8; // type:object size:0xB scope:local data:string +gClassPeripheral = .data:0x800F24C4; // type:object size:0x10 scope:global +@116 = .data:0x800F24D4; // type:object size:0xC4 scope:local +@189 = .data:0x800F2598; // type:object size:0xC4 scope:local +...data.0 = .data:0x800F2660; // type:label scope:local +gCombinedColor = .data:0x800F2660; // type:object size:0x40 scope:global +gCombinedAlpha = .data:0x800F26A0; // type:object size:0x20 scope:global +ganNameTevStage = .data:0x800F26C0; // type:object size:0x40 scope:local data:4byte +sTevColorOp = .data:0x800F2700; // type:object size:0x64 scope:local +sTevColorArg = .data:0x800F2764; // type:object size:0x50 scope:local +sTevAlphaArg = .data:0x800F27B4; // type:object size:0x50 scope:local +@111 = .data:0x800F2804; // type:object size:0x9 scope:local data:string +@114 = .data:0x800F2810; // type:object size:0xA scope:local data:string +@116 = .data:0x800F281C; // type:object size:0xC scope:local data:string +@118 = .data:0x800F2828; // type:object size:0xF scope:local data:string +@119 = .data:0x800F2838; // type:object size:0xD scope:local data:string +@120 = .data:0x800F2848; // type:object size:0xD scope:local data:string +@121 = .data:0x800F2858; // type:object size:0xB scope:local data:string +@122 = .data:0x800F2864; // type:object size:0xC scope:local data:string +@123 = .data:0x800F2870; // type:object size:0xA scope:local data:string +@124 = .data:0x800F287C; // type:object size:0x9 scope:local data:string +@125 = .data:0x800F2888; // type:object size:0xE scope:local data:string +sColorNames = .data:0x800F2898; // type:object size:0x40 scope:local +sAlphaNames = .data:0x800F28D8; // type:object size:0x40 scope:local +strings$288 = .data:0x800F2918; // type:object size:0x40 scope:local +@356 = .data:0x800F2958; // type:object size:0xC scope:local data:string +...data.0 = .data:0x800F2968; // type:label scope:local +gColorArgs = .data:0x800F2968; // type:object size:0x40 scope:global +gAlphaArgs = .data:0x800F29A8; // type:object size:0x28 scope:global +sUsualOps = .data:0x800F29D0; // type:object size:0x50 scope:local data:4byte +sUsualCArgs = .data:0x800F2A20; // type:object size:0x10 scope:local +sUsualAArgs = .data:0x800F2A30; // type:object size:0x10 scope:local +texelType$183 = .data:0x800F2A40; // type:object size:0x20 scope:local +lightType$184 = .data:0x800F2A60; // type:object size:0x10 scope:local +@1359 = .data:0x800F2A70; // type:object size:0x27 scope:local data:string +@1360 = .data:0x800F2A98; // type:object size:0x27 scope:local data:string +@1362 = .data:0x800F2AC0; // type:object size:0x27 scope:local data:string +@1363 = .data:0x800F2AE8; // type:object size:0x45 scope:local data:string +...data.0 = .data:0x800F2B30; // type:label scope:local +@1 = .data:0x800F2B30; // type:object size:0x44 scope:local data:string +@86 = .data:0x800F2B74; // type:object size:0xD scope:local data:string +@87 = .data:0x800F2B84; // type:object size:0x16 scope:local data:string +@88 = .data:0x800F2B9C; // type:object size:0xC scope:local data:string +@89 = .data:0x800F2BA8; // type:object size:0x9 scope:local data:string +@90 = .data:0x800F2BB4; // type:object size:0x10 scope:local data:string +@91 = .data:0x800F2BC4; // type:object size:0xB scope:local data:string +@92 = .data:0x800F2BD0; // type:object size:0xE scope:local data:string +@93 = .data:0x800F2BE0; // type:object size:0xD scope:local data:string +@94 = .data:0x800F2BF0; // type:object size:0xD scope:local data:string +@95 = .data:0x800F2C00; // type:object size:0xD scope:local data:string +@96 = .data:0x800F2C10; // type:object size:0x19 scope:local data:string +@98 = .data:0x800F2C2C; // type:object size:0xE scope:local data:string +@99 = .data:0x800F2C3C; // type:object size:0x15 scope:local data:string +__OSExceptionLocations = .data:0x800F2C54; // type:object size:0x3C scope:local +@133 = .data:0x800F2C90; // type:object size:0x1B scope:local data:string +@134 = .data:0x800F2CAC; // type:object size:0x2E scope:local data:string +@135 = .data:0x800F2CDC; // type:object size:0x2F scope:local data:string +@136 = .data:0x800F2D0C; // type:object size:0x1B scope:local data:string +ResetFunctionInfo = .data:0x800F2D28; // type:object size:0x10 scope:local +...data.0 = .data:0x800F2D38; // type:label scope:local +@354 = .data:0x800F2D38; // type:object size:0x24 scope:local data:string +@355 = .data:0x800F2D5C; // type:object size:0x37 scope:local data:string +@356 = .data:0x800F2D94; // type:object size:0x28 scope:local data:string +@357 = .data:0x800F2DBC; // type:object size:0x4F scope:local data:string +@358 = .data:0x800F2E0C; // type:object size:0x3E scope:local data:string +@359 = .data:0x800F2E4C; // type:object size:0x37 scope:local data:string +@360 = .data:0x800F2E84; // type:object size:0x49 scope:local data:string +@361 = .data:0x800F2ED0; // type:object size:0x33 scope:local data:string +@362 = .data:0x800F2F04; // type:object size:0x3D scope:local data:string +@363 = .data:0x800F2F44; // type:object size:0x39 scope:local data:string +@364 = .data:0x800F2F80; // type:object size:0x45 scope:local data:string +@365 = .data:0x800F2FC8; // type:object size:0x5F scope:local data:string +@366 = .data:0x800F3028; // type:object size:0x2C scope:local data:string +@385 = .data:0x800F3054; // type:object size:0x12 scope:local data:string +@386 = .data:0x800F3068; // type:object size:0x12 scope:local data:string +@387 = .data:0x800F307C; // type:object size:0x1A scope:local data:string +@388 = .data:0x800F3098; // type:object size:0x13 scope:local data:string +@389 = .data:0x800F30AC; // type:object size:0x10 scope:local data:string +@390 = .data:0x800F30BC; // type:object size:0xE scope:local data:string +DSPInitCode = .data:0x800F30D0; // type:object size:0x80 scope:local +...data.0 = .data:0x800F3150; // type:label scope:local +@63 = .data:0x800F3150; // type:object size:0x29 scope:local data:string +@84 = .data:0x800F317C; // type:object size:0x18 scope:local data:string +@85 = .data:0x800F3194; // type:object size:0x1B scope:local data:string +@86 = .data:0x800F31B0; // type:object size:0x30 scope:local data:string +@87 = .data:0x800F31E0; // type:object size:0x3C scope:local data:string +@88 = .data:0x800F321C; // type:object size:0x37 scope:local data:string +@89 = .data:0x800F3254; // type:object size:0x3F scope:local data:string +@90 = .data:0x800F3294; // type:object size:0x29 scope:local data:string +@91 = .data:0x800F32C0; // type:object size:0x1D scope:local data:string +@92 = .data:0x800F32E0; // type:object size:0x19 scope:local data:string +@104 = .data:0x800F32FC; // type:object size:0x19 scope:local data:string +@105 = .data:0x800F3318; // type:object size:0x19 scope:local data:string +@106 = .data:0x800F3334; // type:object size:0x16 scope:local data:string +@107 = .data:0x800F334C; // type:object size:0x2E scope:local data:string +...data.0 = .data:0x800F3380; // type:label scope:local +@61 = .data:0x800F3380; // type:object size:0x44 scope:local data:string +@62 = .data:0x800F33C4; // type:object size:0x30 scope:local data:string +@63 = .data:0x800F33F4; // type:object size:0x2F scope:local data:string +@64 = .data:0x800F3424; // type:object size:0x2F scope:local data:string +@65 = .data:0x800F3454; // type:object size:0x11 scope:local data:string +@66 = .data:0x800F3468; // type:object size:0x21 scope:local data:string +@67 = .data:0x800F348C; // type:object size:0x12 scope:local data:string +@68 = .data:0x800F34A0; // type:object size:0x19 scope:local data:string +@69 = .data:0x800F34BC; // type:object size:0x12 scope:local data:string +@70 = .data:0x800F34D0; // type:object size:0x1D scope:local data:string +@71 = .data:0x800F34F0; // type:object size:0x26 scope:local data:string +@72 = .data:0x800F3518; // type:object size:0x1C scope:local data:string +@76 = .data:0x800F3534; // type:object size:0x23 scope:local data:string +...data.0 = .data:0x800F3558; // type:label scope:local +@13 = .data:0x800F3558; // type:object size:0x16 scope:local data:string +@14 = .data:0x800F3570; // type:object size:0x26 scope:local data:string +@15 = .data:0x800F3598; // type:object size:0x1C scope:local data:string +@74 = .data:0x800F35B4; // type:object size:0x1D scope:local data:string +@75 = .data:0x800F35D4; // type:object size:0x17 scope:local data:string +@77 = .data:0x800F35EC; // type:object size:0x31 scope:local data:string +@78 = .data:0x800F3620; // type:object size:0x10 scope:local data:string +@79 = .data:0x800F3630; // type:object size:0x60 scope:local data:string +@80 = .data:0x800F3690; // type:object size:0x4C scope:local data:string +@81 = .data:0x800F36DC; // type:object size:0x62 scope:local data:string +@82 = .data:0x800F3740; // type:object size:0x60 scope:local data:string +@83 = .data:0x800F37A0; // type:object size:0x1F scope:local data:string +@84 = .data:0x800F37C0; // type:object size:0x1F scope:local data:string +@85 = .data:0x800F37E0; // type:object size:0x1B scope:local data:string +@86 = .data:0x800F37FC; // type:object size:0x35 scope:local data:string +@87 = .data:0x800F3834; // type:object size:0x40 scope:local +InterruptPrioTable = .data:0x800F3878; // type:object size:0x2C scope:local data:4byte +ResetFunctionInfo = .data:0x800F38A8; // type:object size:0x10 scope:local +YearDays = .data:0x800F38B8; // type:object size:0x30 scope:local +LeapYearDays = .data:0x800F38E8; // type:object size:0x30 scope:local +...data.0 = .data:0x800F3918; // type:label scope:local +@1 = .data:0x800F3918; // type:object size:0x45 scope:local data:string +@450 = .data:0x800F3960; // type:object size:0xF scope:local data:string +@451 = .data:0x800F3970; // type:object size:0x10 scope:local data:string +@452 = .data:0x800F3980; // type:object size:0x10 scope:local data:string +@453 = .data:0x800F3990; // type:object size:0x10 scope:local data:string +@454 = .data:0x800F39A0; // type:object size:0x11 scope:local data:string +@455 = .data:0x800F39B4; // type:object size:0x11 scope:local data:string +@456 = .data:0x800F39C8; // type:object size:0xC scope:local data:string +@462 = .data:0x800F39D4; // type:object size:0x9 scope:local data:string +@463 = .data:0x800F39E0; // type:object size:0xD scope:local data:string +@464 = .data:0x800F39F0; // type:object size:0x12 scope:local data:string +@466 = .data:0x800F3A04; // type:object size:0xE scope:local data:string +@467 = .data:0x800F3A14; // type:object size:0xE scope:local data:string +...data.0 = .data:0x800F3A28; // type:label scope:local +@1 = .data:0x800F3A28; // type:object size:0x44 scope:local data:string +Si = .data:0x800F3A6C; // type:object size:0x14 scope:local data:4byte +Type = .data:0x800F3A80; // type:object size:0x10 scope:local +@457 = .data:0x800F3A90; // type:object size:0xC scope:local data:string +@459 = .data:0x800F3A9C; // type:object size:0xF scope:local data:string +@460 = .data:0x800F3AAC; // type:object size:0xF scope:local data:string +@461 = .data:0x800F3ABC; // type:object size:0xD scope:local data:string +@462 = .data:0x800F3ACC; // type:object size:0xA scope:local data:string +@463 = .data:0x800F3AD8; // type:object size:0x10 scope:local data:string +@464 = .data:0x800F3AE8; // type:object size:0x14 scope:local data:string +@465 = .data:0x800F3AFC; // type:object size:0x12 scope:local data:string +@466 = .data:0x800F3B10; // type:object size:0x14 scope:local data:string +@467 = .data:0x800F3B24; // type:object size:0x9 scope:local data:string +@468 = .data:0x800F3B30; // type:object size:0x9 scope:local data:string +...data.0 = .data:0x800F3B40; // type:label scope:local +XYNTSC = .data:0x800F3B40; // type:object size:0x30 scope:local +XYPAL = .data:0x800F3B70; // type:object size:0x30 scope:local +@16 = .data:0x800F3BA0; // type:object size:0x33 scope:local data:string +...data.0 = .data:0x800F3BD8; // type:label scope:local +@1 = .data:0x800F3BD8; // type:object size:0x44 scope:local data:string +timing = .data:0x800F3C1C; // type:object size:0x17C scope:local +taps = .data:0x800F3D98; // type:object size:0x32 scope:local +@97 = .data:0x800F3DCC; // type:object size:0x6C scope:local +@347 = .data:0x800F3E38; // type:object size:0x29 scope:local data:string +@348 = .data:0x800F3E64; // type:object size:0x29 scope:local data:string +@349 = .data:0x800F3E90; // type:object size:0x29 scope:local data:string +@350 = .data:0x800F3EBC; // type:object size:0x29 scope:local data:string +@351 = .data:0x800F3EE8; // type:object size:0x29 scope:local data:string +@352 = .data:0x800F3F14; // type:object size:0x29 scope:local data:string +@535 = .data:0x800F3F40; // type:object size:0x4B scope:local data:string +@736 = .data:0x800F3F8C; // type:object size:0x1C scope:local +@9 = .data:0x800F3FA8; // type:object size:0x18 scope:local data:string +...data.0 = .data:0x800F3FC0; // type:label scope:local +@1 = .data:0x800F3FC0; // type:object size:0x44 scope:local data:string +DefaultTexData = .data:0x800F4020; // type:object size:0x20 scope:local +GXDefaultVATList = .data:0x800F4040; // type:object size:0xD0 scope:local +GXDefaultProjData = .data:0x800F4110; // type:object size:0x1C scope:local +GXTexRegionAddrTable = .data:0x800F412C; // type:object size:0xC0 scope:local data:4byte +GXResetFuncInfo = .data:0x800F41EC; // type:object size:0x10 scope:local +@176 = .data:0x800F4200; // type:object size:0x68 scope:local +@498 = .data:0x800F4268; // type:object size:0x44 scope:local +@525 = .data:0x800F42AC; // type:object size:0x44 scope:local +@820 = .data:0x800F42F0; // type:object size:0x1C scope:local +@819 = .data:0x800F430C; // type:object size:0x54 scope:local +GXNtsc480IntDf = .data:0x800F4360; // type:object size:0x3C scope:global +GXNtsc480Prog = .data:0x800F439C; // type:object size:0x3C scope:global +GXMpal480IntDf = .data:0x800F43D8; // type:object size:0x3C scope:global +GXPal528IntDf = .data:0x800F4414; // type:object size:0x3C scope:global +GXEurgb60Hz480IntDf = .data:0x800F4450; // type:object size:0x3C scope:global +@145 = .data:0x800F4490; // type:object size:0xF4 scope:local +@224 = .data:0x800F4584; // type:object size:0x3C scope:local +...data.0 = .data:0x800F45C0; // type:label scope:local +TEVCOpTableST0 = .data:0x800F45C0; // type:object size:0x14 scope:local +TEVCOpTableST1 = .data:0x800F45D4; // type:object size:0x14 scope:local +TEVAOpTableST0 = .data:0x800F45E8; // type:object size:0x14 scope:local +TEVAOpTableST1 = .data:0x800F45FC; // type:object size:0x14 scope:local +c2r$364 = .data:0x800F4610; // type:object size:0x24 scope:local +p2f$362 = .data:0x800F4638; // type:object size:0x20 scope:local +@281 = .data:0x800F4658; // type:object size:0x5C scope:local +@280 = .data:0x800F46B4; // type:object size:0x90 scope:local +@387 = .data:0x800F4744; // type:object size:0x5C scope:local +...data.0 = .data:0x800F47A0; // type:label scope:local +@1 = .data:0x800F47A0; // type:object size:0x45 scope:local data:string +ResetFunctionInfo = .data:0x800F47E8; // type:object size:0x10 scope:local +@119 = .data:0x800F47F8; // type:object size:0xC8 scope:local data:string +@140 = .data:0x800F48C0; // type:object size:0x37 scope:local data:string +@239 = .data:0x800F48F8; // type:object size:0x34 scope:local data:string +@265 = .data:0x800F492C; // type:object size:0x2F scope:local data:string +...data.0 = .data:0x800F4960; // type:label scope:local +@1 = .data:0x800F4960; // type:object size:0x45 scope:local data:string +@18 = .data:0x800F49A8; // type:object size:0xA scope:local data:string +@24 = .data:0x800F49B4; // type:object size:0x34 scope:local data:string +@344 = .data:0x800F49E8; // type:object size:0x40 scope:local +ImmCommand = .data:0x800F4A28; // type:object size:0xC scope:local data:4byte +@768 = .data:0x800F4A34; // type:object size:0x41 scope:local data:string +@907 = .data:0x800F4A78; // type:object size:0x34 scope:local +@1011 = .data:0x800F4AAC; // type:object size:0x34 scope:local +ErrorTable = .data:0x800F4AE0; // type:object size:0x48 scope:local data:4byte +...data.0 = .data:0x800F4B28; // type:label scope:local +@38 = .data:0x800F4B28; // type:object size:0x1A scope:local data:string +@39 = .data:0x800F4B44; // type:object size:0x16 scope:local data:string +@40 = .data:0x800F4B5C; // type:object size:0x14 scope:local data:string +@41 = .data:0x800F4B70; // type:object size:0x14 scope:local data:string +@44 = .data:0x800F4B84; // type:object size:0x14 scope:local data:string +...data.0 = .data:0x800F4B98; // type:label scope:local +@21 = .data:0x800F4B98; // type:object size:0xB scope:local data:string +@22 = .data:0x800F4BA4; // type:object size:0x1D scope:local data:string +@121 = .data:0x800F4BC4; // type:object size:0x35 scope:local data:string +@122 = .data:0x800F4BFC; // type:object size:0x10 scope:local data:string +@136 = .data:0x800F4C0C; // type:object size:0x2D scope:local data:string +@166 = .data:0x800F4C3C; // type:object size:0x1C scope:local data:string +@167 = .data:0x800F4C58; // type:object size:0x1E scope:local data:string +@168 = .data:0x800F4C78; // type:object size:0x28 scope:local data:string +@169 = .data:0x800F4CA0; // type:object size:0x25 scope:local data:string +@170 = .data:0x800F4CC8; // type:object size:0x30 scope:local data:string +@171 = .data:0x800F4CF8; // type:object size:0x19 scope:local data:string +DEMOFontBitmap = .data:0x800F4D20; // type:object size:0xC00 scope:global +PadChanMask = .data:0x800F5920; // type:object size:0x10 scope:local data:4byte +...data.0 = .data:0x800F5930; // type:label scope:local +@51 = .data:0x800F5930; // type:object size:0xC scope:local data:string +@52 = .data:0x800F593C; // type:object size:0x26 scope:local data:string +@53 = .data:0x800F5964; // type:object size:0x28 scope:local +@158 = .data:0x800F598C; // type:object size:0x9 scope:local data:string +@160 = .data:0x800F5998; // type:object size:0xB scope:local data:string +@161 = .data:0x800F59A4; // type:object size:0xB scope:local data:string +@163 = .data:0x800F59B0; // type:object size:0xA scope:local data:string +@164 = .data:0x800F59BC; // type:object size:0x2C scope:local data:string +@171 = .data:0x800F59E8; // type:object size:0x28 scope:local +@170 = .data:0x800F5A10; // type:object size:0x28 scope:local +@169 = .data:0x800F5A38; // type:object size:0x28 scope:local +@165 = .data:0x800F5A60; // type:object size:0x28 scope:local +...data.0 = .data:0x800F5A88; // type:label scope:local +@1 = .data:0x800F5A88; // type:object size:0x44 scope:local data:string +...data.0 = .data:0x800F5AD0; // type:label scope:local +@1 = .data:0x800F5AD0; // type:object size:0x44 scope:local data:string +...data.0 = .data:0x800F5B18; // type:label scope:local +@1 = .data:0x800F5B18; // type:object size:0x45 scope:local data:string +@19 = .data:0x800F5B60; // type:object size:0x1E scope:local data:string +@20 = .data:0x800F5B80; // type:object size:0xC scope:local data:string +@21 = .data:0x800F5B8C; // type:object size:0x9 scope:local data:string +...data.0 = .data:0x800F5B98; // type:label scope:local +@266 = .data:0x800F5B98; // type:object size:0x1D scope:local data:string +@267 = .data:0x800F5BB8; // type:object size:0x2D scope:local data:string +@268 = .data:0x800F5BE8; // type:object size:0x2D scope:local data:string +@269 = .data:0x800F5C18; // type:object size:0x2D scope:local data:string +@270 = .data:0x800F5C48; // type:object size:0x2D scope:local data:string +@271 = .data:0x800F5C78; // type:object size:0x2D scope:local data:string +@294 = .data:0x800F5CA8; // type:object size:0x2B scope:local data:string +...data.0 = .data:0x800F5CD8; // type:label scope:local +@1 = .data:0x800F5CD8; // type:object size:0x46 scope:local data:string +ResetFunctionInfo = .data:0x800F5D20; // type:object size:0x10 scope:local +CardData = .data:0x800F5D40; // type:object size:0x160 scope:local +SectorSizeTable = .data:0x800F5EA0; // type:object size:0x20 scope:local +LatencyTable = .data:0x800F5EC0; // type:object size:0x20 scope:local +...data.0 = .data:0x800F5EE0; // type:label scope:local +@1 = .data:0x800F5EE0; // type:object size:0x3C scope:local data:string +gTRKDispatchTable = .data:0x800F5F20; // type:object size:0x84 scope:global +gTRKRestoreFlags = .data:0x800F5FA8; // type:object size:0x9 scope:global data:byte +gTRKExceptionStatus = .data:0x800F5FB4; // type:object size:0x10 scope:local data:4byte +gTRKStepStatus = .data:0x800F5FC4; // type:object size:0x14 scope:local data:4byte +TRK_ISR_OFFSETS = .data:0x800F5FD8; // type:object size:0x3C scope:local data:4byte +gDBCommTable = .data:0x800F6018; // type:object size:0x1C scope:global data:4byte +...data.0 = .data:0x800F6038; // type:label scope:local +__files = .data:0x800F6038; // type:object size:0xD8 scope:global +@1009 = .data:0x800F6110; // type:object size:0x84 scope:local +@1066 = .data:0x800F6194; // type:object size:0x84 scope:local +@1186 = .data:0x800F6218; // type:object size:0xD0 scope:local +@1185 = .data:0x800F62E8; // type:object size:0x44 scope:local +@410 = .data:0x800F6330; // type:object size:0x44 scope:local +__float_nan = .data:0x800F6378; // type:object size:0x4 scope:global data:float +__float_huge = .data:0x800F637C; // type:object size:0x4 scope:global data:float +...data.0 = .data:0x800F6380; // type:label scope:local +__four_over_pi_m1 = .data:0x800F6380; // type:object size:0x10 scope:local data:float +__sincos_on_quadrant = .data:0x800F6390; // type:object size:0x20 scope:global +__sincos_poly = .data:0x800F63B0; // type:object size:0x28 scope:global data:float +rmodeobj = .bss:0x800F63E0; // type:object size:0x3C scope:local +g_texMap = .bss:0x800F641C; // type:object size:0x80 scope:global +gListList = .bss:0x800F64A0; // type:object size:0x10 scope:local data:4byte +...bss.0 = .bss:0x800F64A0; // type:label scope:local +gapHeapBlockCache = .bss:0x800F64B0; // type:object size:0x580 scope:local data:4byte +gOrthoMtx = .bss:0x800F6A40; // type:object size:0x40 scope:local align:32 +...bss.0 = .bss:0x800F6A40; // type:label scope:local +gContMap = .bss:0x800F6A80; // type:object size:0x140 scope:local +gaszArgument = .bss:0x800F6BC0; // type:object size:0x20 scope:local data:4byte +gpErrorMessageBuffer = .bss:0x800F6BE0; // type:object size:0x5000 scope:global +WorkBuffer = .bss:0x800FBBE0; // type:object size:0x40 scope:local data:4byte +...bss.0 = .bss:0x800FBBE0; // type:label scope:local +PrepareReadyQueue = .bss:0x800FBC20; // type:object size:0x20 scope:local +UsedTextureSetQueue = .bss:0x800FBC40; // type:object size:0x20 scope:local +UsedTextureSetMessage = .bss:0x800FBC60; // type:object size:0xC scope:local +SoundBuffer = .bss:0x800FBC80; // type:object size:0x500 scope:local +ActivePlayer = .bss:0x800FC180; // type:object size:0x1D0 scope:global +AudioDecodeThread = .bss:0x800FC350; // type:object size:0x318 scope:local +...bss.0 = .bss:0x800FC350; // type:label scope:local +AudioDecodeThreadStack = .bss:0x800FC668; // type:object size:0x1000 scope:local +FreeAudioBufferQueue = .bss:0x800FD668; // type:object size:0x20 scope:local +DecodedAudioBufferQueue = .bss:0x800FD688; // type:object size:0x20 scope:local +FreeAudioBufferMessage = .bss:0x800FD6A8; // type:object size:0xC scope:local +DecodedAudioBufferMessage = .bss:0x800FD6B4; // type:object size:0xC scope:local +FreeReadBufferQueue = .bss:0x800FD6C0; // type:object size:0x20 scope:local +...bss.0 = .bss:0x800FD6C0; // type:label scope:local +ReadedBufferQueue = .bss:0x800FD6E0; // type:object size:0x20 scope:local +ReadedBufferQueue2 = .bss:0x800FD700; // type:object size:0x20 scope:local +FreeReadBufferMessage = .bss:0x800FD720; // type:object size:0x28 scope:local +ReadedBufferMessage = .bss:0x800FD748; // type:object size:0x28 scope:local +ReadedBufferMessage2 = .bss:0x800FD770; // type:object size:0x28 scope:local +ReadThread = .bss:0x800FD798; // type:object size:0x318 scope:local +ReadThreadStack = .bss:0x800FDAB0; // type:object size:0x1000 scope:local +gOrthoMtx = .bss:0x800FEAB0; // type:object size:0x40 scope:local +VideoDecodeThread = .bss:0x800FEAF0; // type:object size:0x318 scope:local +...bss.0 = .bss:0x800FEAF0; // type:label scope:local +VideoDecodeThreadStack = .bss:0x800FEE08; // type:object size:0x1000 scope:local +FreeTextureSetQueue = .bss:0x800FFE08; // type:object size:0x20 scope:local +DecodedTextureSetQueue = .bss:0x800FFE28; // type:object size:0x20 scope:local +FreeTextureSetMessage = .bss:0x800FFE48; // type:object size:0xC scope:local +DecodedTextureSetMessage = .bss:0x800FFE54; // type:object size:0xC scope:local +gMCardCardWorkArea = .bss:0x800FFE60; // type:object size:0xA000 scope:local +...bss.0 = .bss:0x800FFE60; // type:label scope:local +gDate = .bss:0x80109E60; // type:object size:0x28 scope:global +bNoWriteInCurrentFrame = .bss:0x80109E88; // type:object size:0x28 scope:global +mCard = .bss:0x80109EB0; // type:object size:0x7B8 scope:global +gVolumeCurve = .bss:0x8010A680; // type:object size:0x404 scope:global data:4byte +sConstantBufAddr = .bss:0x8010AAA0; // type:object size:0x18 scope:local align:32 data:4byte +...bss.0 = .bss:0x8010AAA0; // type:label scope:local +sTempZBuf = .bss:0x8010AAC0; // type:object size:0x25800 scope:local +sFrameObj1$1562 = .bss:0x801302C0; // type:object size:0x20 scope:local +sFrameObj2$1563 = .bss:0x801302E0; // type:object size:0x20 scope:local +sFrameObj$1564 = .bss:0x80130300; // type:object size:0x20 scope:local +sFrameObj$1565 = .bss:0x80130320; // type:object size:0x20 scope:local +sFrameObj$1568 = .bss:0x80130340; // type:object size:0x20 scope:local +line$1582 = .bss:0x80130360; // type:object size:0x1400 scope:local +line$1606 = .bss:0x80131760; // type:object size:0xA00 scope:local +line$1630 = .bss:0x80132160; // type:object size:0xA00 scope:local data:2byte +sFrameObj$1647 = .bss:0x80132B60; // type:object size:0x20 scope:local +sFrameObj$1660 = .bss:0x80132B80; // type:object size:0x20 scope:local +frameObj$1663 = .bss:0x80132BA0; // type:object size:0x20 scope:local +frameObj$1673 = .bss:0x80132BC0; // type:object size:0x20 scope:local +tempLine$1785 = .bss:0x80132BE0; // type:object size:0x200 scope:local +...bss.0 = .bss:0x80132DE0; // type:label scope:local +gSystemRomConfigurationList = .bss:0x80132DE0; // type:object size:0x174 scope:global +...bss.0 = .bss:0x80132F58; // type:label scope:local +aHeapTreeFlag = .bss:0x80132F58; // type:object size:0x1F4 scope:global data:4byte +tevStages$519 = .bss:0x80133150; // type:object size:0x2B8 scope:local data:4byte +...bss.0 = .bss:0x80133150; // type:label scope:local +DriveInfo = .bss:0x80133420; // type:object size:0x20 scope:local +...bss.0 = .bss:0x80133420; // type:label scope:local +DriveBlock = .bss:0x80133440; // type:object size:0x30 scope:local +...bss.0 = .bss:0x80133470; // type:label scope:local +__OSErrorTable = .bss:0x80133470; // type:object size:0x44 scope:global data:4byte +Header = .bss:0x801334C0; // type:object size:0x20 scope:local +...bss.0 = .bss:0x801334C0; // type:label scope:local +Scb = .bss:0x801334E0; // type:object size:0x54 scope:local data:4byte +...bss.0 = .bss:0x801334E0; // type:label scope:local +RunQueue = .bss:0x80133538; // type:object size:0x100 scope:local data:4byte +...bss.0 = .bss:0x80133538; // type:label scope:local +IdleThread = .bss:0x80133638; // type:object size:0x318 scope:local +DefaultThread = .bss:0x80133950; // type:object size:0x318 scope:local +IdleContext = .bss:0x80133C68; // type:object size:0x2C8 scope:local +Ecb = .bss:0x80133F30; // type:object size:0xC0 scope:local data:4byte +Packet = .bss:0x80133FF0; // type:object size:0x80 scope:local data:4byte +...bss.0 = .bss:0x80133FF0; // type:label scope:local +Alarm = .bss:0x80134070; // type:object size:0xA0 scope:local +TypeTime = .bss:0x80134110; // type:object size:0x20 scope:local +XferTime = .bss:0x80134130; // type:object size:0x20 scope:local +TypeCallback = .bss:0x80134150; // type:object size:0x40 scope:local +RDSTHandler = .bss:0x80134190; // type:object size:0x10 scope:local data:4byte +InputBufferValid = .bss:0x801341A0; // type:object size:0x10 scope:local +InputBuffer = .bss:0x801341B0; // type:object size:0x20 scope:local +InputBufferVcount = .bss:0x801341D0; // type:object size:0x10 scope:local +cmdFixDevice$327 = .bss:0x801341E0; // type:object size:0x10 scope:local +regs = .bss:0x801341F0; // type:object size:0x76 scope:local data:2byte +...bss.0 = .bss:0x801341F0; // type:label scope:local +shdwRegs = .bss:0x80134268; // type:object size:0x76 scope:local +HorVer = .bss:0x801342E0; // type:object size:0x58 scope:local data:2byte +FifoObj = .bss:0x80134338; // type:object size:0x80 scope:local +...bss.0 = .bss:0x80134338; // type:label scope:local +gxData = .bss:0x801343B8; // type:object size:0x5B0 scope:local +Type = .bss:0x80134968; // type:object size:0x10 scope:local +...bss.0 = .bss:0x80134968; // type:label scope:local +Origin = .bss:0x80134978; // type:object size:0x30 scope:local +CmdProbeDevice = .bss:0x801349A8; // type:object size:0x10 scope:local +CommandList = .bss:0x801349B8; // type:object size:0x3C scope:local data:4byte +...bss.0 = .bss:0x801349B8; // type:label scope:local +AlarmForWA = .bss:0x801349F8; // type:object size:0x28 scope:local +AlarmForTimeout = .bss:0x80134A20; // type:object size:0x28 scope:local +AlarmForBreak = .bss:0x80134A48; // type:object size:0x28 scope:local +Prev = .bss:0x80134A70; // type:object size:0xC scope:local +Curr = .bss:0x80134A7C; // type:object size:0xC scope:local +BB2 = .bss:0x80134AA0; // type:object size:0x20 scope:local +...bss.0 = .bss:0x80134AA0; // type:label scope:local +CurrDiskID = .bss:0x80134AC0; // type:object size:0x20 scope:local +DummyCommandBlock = .bss:0x80134AE0; // type:object size:0x30 scope:local +ResetAlarm = .bss:0x80134B10; // type:object size:0x28 scope:local +WaitingQueue = .bss:0x80134B38; // type:object size:0x20 scope:local data:4byte +...bss.0 = .bss:0x80134B38; // type:label scope:local +bb2Buf = .bss:0x80134B58; // type:object size:0x3F scope:local +block$18 = .bss:0x80134B98; // type:object size:0x30 scope:local +rmodeobj = .bss:0x80134BC8; // type:object size:0x3C scope:local data:4byte +...bss.0 = .bss:0x80134BC8; // type:label scope:local +fontTexObj = .bss:0x80134C08; // type:object size:0x20 scope:local +...bss.0 = .bss:0x80134C08; // type:label scope:local +Pad = .bss:0x80134C28; // type:object size:0x30 scope:local +...bss.0 = .bss:0x80134C28; // type:label scope:local +DemoPad = .bss:0x80134C58; // type:object size:0x78 scope:global data:2byte +...bss.0 = .bss:0x80134CD0; // type:label scope:local +__CARDBlock = .bss:0x80134CD0; // type:object size:0x220 scope:global data:4byte +__CARDDiskNone = .bss:0x80134EF0; // type:object size:0x20 scope:global +__THPIDCTWorkspace = .bss:0x80134F20; // type:object size:0x100 scope:local +...bss.0 = .bss:0x80134F20; // type:label scope:local +__THPLCWork512 = .bss:0x80135020; // type:object size:0xC scope:local +__THPLCWork640 = .bss:0x8013502C; // type:object size:0xC scope:local +__THPMCUBuffer = .bss:0x80135038; // type:object size:0x18 scope:local data:4byte +gTRKEventQueue = .bss:0x80135050; // type:object size:0x28 scope:global +gTRKBigEndian = .bss:0x80135078; // type:object size:0x4 scope:global data:4byte +gTRKMsgBufs = .bss:0x80135080; // type:object size:0x19B0 scope:global +gTRKFramingState = .bss:0x80136A30; // type:object size:0x14 scope:local data:4byte +gTRKInputPendingPtr = .bss:0x80136A44; // type:object size:0x4 scope:global data:4byte +gTRKDispatchTableSize = .bss:0x80136A48; // type:object size:0x4 scope:global data:4byte +TRK_saved_exceptionID = .bss:0x80136A50; // type:object size:0x2 scope:local data:2byte +gTRKSaveState = .bss:0x80136A54; // type:object size:0x94 scope:global data:4byte +TRKvalue128_temp = .bss:0x80136AE8; // type:object size:0x10 scope:global +gTRKState = .bss:0x80136AF8; // type:object size:0xA4 scope:global data:4byte +gTRKCPUState = .bss:0x80136BA0; // type:object size:0x430 scope:global +TRK_mainError = .bss:0x80136FD0; // type:object size:0x4 scope:local data:4byte +atexit_funcs = .bss:0x80136FD8; // type:object size:0x100 scope:local +__atexit_funcs = .bss:0x801370D8; // type:object size:0x100 scope:local +@2 = .sdata:0x801371E0; // type:object size:0x5 scope:local data:string +gmsg_ld01Size = .sdata:0x801371E8; // type:object size:0x4 scope:global data:4byte +gmsg_ld02Size = .sdata:0x801371EC; // type:object size:0x4 scope:global data:4byte +gmsg_ld03Size = .sdata:0x801371F0; // type:object size:0x4 scope:global data:4byte +gmsg_ld04Size = .sdata:0x801371F4; // type:object size:0x4 scope:global data:4byte +gmsg_ld05_1Size = .sdata:0x801371F8; // type:object size:0x4 scope:global data:4byte +gmsg_ld05_2Size = .sdata:0x801371FC; // type:object size:0x4 scope:global data:4byte +gmsg_ld06_1Size = .sdata:0x80137200; // type:object size:0x4 scope:global data:4byte +gmsg_ld06_2Size = .sdata:0x80137204; // type:object size:0x4 scope:global data:4byte +gmsg_ld06_3Size = .sdata:0x80137208; // type:object size:0x4 scope:global data:4byte +gmsg_ld06_4Size = .sdata:0x8013720C; // type:object size:0x4 scope:global data:4byte +gmsg_ld07Size = .sdata:0x80137210; // type:object size:0x4 scope:global data:4byte +gmsg_gf01Size = .sdata:0x80137214; // type:object size:0x4 scope:global data:4byte +gmsg_gf02Size = .sdata:0x80137218; // type:object size:0x4 scope:global data:4byte +gmsg_gf03Size = .sdata:0x8013721C; // type:object size:0x4 scope:global data:4byte +gmsg_gf04Size = .sdata:0x80137220; // type:object size:0x4 scope:global data:4byte +gmsg_gf05Size = .sdata:0x80137224; // type:object size:0x4 scope:global data:4byte +gmsg_gf06Size = .sdata:0x80137228; // type:object size:0x4 scope:global data:4byte +gmsg_in01Size = .sdata:0x8013722C; // type:object size:0x4 scope:global data:4byte +gmsg_in02Size = .sdata:0x80137230; // type:object size:0x4 scope:global data:4byte +gmsg_in03Size = .sdata:0x80137234; // type:object size:0x4 scope:global data:4byte +gmsg_in04Size = .sdata:0x80137238; // type:object size:0x4 scope:global data:4byte +gmsg_in05Size = .sdata:0x8013723C; // type:object size:0x4 scope:global data:4byte +gmsg_sv01Size = .sdata:0x80137240; // type:object size:0x4 scope:global data:4byte +gmsg_sv01_2Size = .sdata:0x80137244; // type:object size:0x4 scope:global data:4byte +gmsg_sv02Size = .sdata:0x80137248; // type:object size:0x4 scope:global data:4byte +gmsg_sv03Size = .sdata:0x8013724C; // type:object size:0x4 scope:global data:4byte +gmsg_sv04Size = .sdata:0x80137250; // type:object size:0x4 scope:global data:4byte +gmsg_sv05_1Size = .sdata:0x80137254; // type:object size:0x4 scope:global data:4byte +gmsg_sv06_1Size = .sdata:0x80137258; // type:object size:0x4 scope:global data:4byte +gmsg_sv06_2Size = .sdata:0x8013725C; // type:object size:0x4 scope:global data:4byte +gmsg_sv06_3Size = .sdata:0x80137260; // type:object size:0x4 scope:global data:4byte +gmsg_sv06_4Size = .sdata:0x80137264; // type:object size:0x4 scope:global data:4byte +gmsg_sv06_5Size = .sdata:0x80137268; // type:object size:0x4 scope:global data:4byte +gmsg_sv07Size = .sdata:0x8013726C; // type:object size:0x4 scope:global data:4byte +gmsg_sv08Size = .sdata:0x80137270; // type:object size:0x4 scope:global data:4byte +gmsg_sv09Size = .sdata:0x80137274; // type:object size:0x4 scope:global data:4byte +gmsg_sv10Size = .sdata:0x80137278; // type:object size:0x4 scope:global data:4byte +gmsg_sv11Size = .sdata:0x8013727C; // type:object size:0x4 scope:global data:4byte +gmsg_sv12Size = .sdata:0x80137280; // type:object size:0x4 scope:global data:4byte +gmsg_sv_shareSize = .sdata:0x80137284; // type:object size:0x4 scope:global data:4byte +gz_bnrSize = .sdata:0x80137288; // type:object size:0x4 scope:global data:4byte +gz_iconSize = .sdata:0x8013728C; // type:object size:0x4 scope:global data:4byte +gHighlightChoice = .sdata:0x80137290; // type:object size:0x4 scope:global data:4byte +simulatorMessageCurrent = .sdata:0x80137294; // type:object size:0x4 scope:global data:4byte +gResetBeginFlag = .sdata:0x80137298; // type:object size:0x4 scope:global data:4byte +@749 = .sdata:0x8013729C; // type:object size:0x8 scope:local data:string +@750 = .sdata:0x801372A4; // type:object size:0x7 scope:local data:string +@44 = .sdata:0x801372B0; // type:object size:0x4 scope:local data:string +toggle$1034 = .sdata:0x801372B8; // type:object size:0x4 scope:local data:4byte +@2 = .sdata:0x801372C0; // type:object size:0x5 scope:local data:string +@108 = .sdata:0x801372C8; // type:object size:0x6 scope:local data:string +@291 = .sdata:0x801372D0; // type:object size:0x4 scope:local data:4byte +sRemapI$746 = .sdata:0x801372D8; // type:object size:0x8 scope:local +@1039 = .sdata:0x801372E0; // type:object size:0x6 scope:local data:string +@1040 = .sdata:0x801372E8; // type:object size:0x6 scope:local data:string +@1041 = .sdata:0x801372F0; // type:object size:0x3 scope:local data:string +@1042 = .sdata:0x801372F4; // type:object size:0x3 scope:local data:string +@1043 = .sdata:0x801372F8; // type:object size:0x3 scope:local data:string +@1044 = .sdata:0x801372FC; // type:object size:0x3 scope:local data:string +@1045 = .sdata:0x80137300; // type:object size:0x3 scope:local data:string +@1046 = .sdata:0x80137304; // type:object size:0x3 scope:local data:string +@1047 = .sdata:0x80137308; // type:object size:0x5 scope:local data:string +@1048 = .sdata:0x80137310; // type:object size:0x5 scope:local data:string +@1049 = .sdata:0x80137318; // type:object size:0x5 scope:local data:string +@1050 = .sdata:0x80137320; // type:object size:0x5 scope:local data:string +@1051 = .sdata:0x80137328; // type:object size:0x4 scope:local data:string +@1052 = .sdata:0x8013732C; // type:object size:0x5 scope:local data:string +@1053 = .sdata:0x80137334; // type:object size:0x6 scope:local data:string +@1054 = .sdata:0x8013733C; // type:object size:0x5 scope:local data:string +@1452 = .sdata:0x80137344; // type:object size:0x4 scope:local data:string +@1453 = .sdata:0x80137348; // type:object size:0x5 scope:local data:string +@1454 = .sdata:0x80137350; // type:object size:0x6 scope:local data:string +cAlpha$1648 = .sdata:0x80137356; // type:object size:0x1 scope:local data:byte +@7443 = .sdata:0x80137358; // type:object size:0x8 scope:local data:string +nTickMultiplier = .sdata:0x80137360; // type:object size:0x4 scope:global data:4byte +fTickScale = .sdata:0x80137364; // type:object size:0x4 scope:global data:float +@1183 = .sdata:0x80137368; // type:object size:0x1 scope:local +@1184 = .sdata:0x8013736C; // type:object size:0x4 scope:local data:string +@1185 = .sdata:0x80137370; // type:object size:0x4 scope:local data:string +@1186 = .sdata:0x80137374; // type:object size:0x5 scope:local data:string +@1187 = .sdata:0x8013737C; // type:object size:0x8 scope:local data:string +@1188 = .sdata:0x80137384; // type:object size:0x4 scope:local data:string +@1189 = .sdata:0x80137388; // type:object size:0x3 scope:local data:string +@1190 = .sdata:0x8013738C; // type:object size:0x3 scope:local data:string +@1191 = .sdata:0x80137390; // type:object size:0x3 scope:local data:string +@1192 = .sdata:0x80137394; // type:object size:0x3 scope:local data:string +@1193 = .sdata:0x80137398; // type:object size:0x3 scope:local data:string +@1194 = .sdata:0x8013739C; // type:object size:0x3 scope:local data:string +@1197 = .sdata:0x801373A0; // type:object size:0x6 scope:local data:string +@1199 = .sdata:0x801373A8; // type:object size:0x7 scope:local data:string +@1681 = .sdata:0x801373B0; // type:object size:0x5 scope:local data:string +@1682 = .sdata:0x801373B8; // type:object size:0x5 scope:local data:string +@1685 = .sdata:0x801373C0; // type:object size:0x6 scope:local data:string +@1687 = .sdata:0x801373C8; // type:object size:0x5 scope:local data:string +@1688 = .sdata:0x801373D0; // type:object size:0x5 scope:local data:string +@1689 = .sdata:0x801373D8; // type:object size:0x7 scope:local data:string +@1691 = .sdata:0x801373E0; // type:object size:0x7 scope:local data:string +@1692 = .sdata:0x801373E8; // type:object size:0x6 scope:local data:string +@1693 = .sdata:0x801373F0; // type:object size:0x7 scope:local data:string +@1695 = .sdata:0x801373F8; // type:object size:0x5 scope:local data:string +@1696 = .sdata:0x80137400; // type:object size:0x5 scope:local data:string +@1698 = .sdata:0x80137408; // type:object size:0x7 scope:local data:string +@1700 = .sdata:0x80137410; // type:object size:0x5 scope:local data:string +@1701 = .sdata:0x80137418; // type:object size:0x6 scope:local data:string +@1703 = .sdata:0x80137420; // type:object size:0x5 scope:local data:string +@1704 = .sdata:0x80137428; // type:object size:0x3 scope:local data:string +@1706 = .sdata:0x8013742C; // type:object size:0x5 scope:local data:string +@1707 = .sdata:0x80137434; // type:object size:0x5 scope:local data:string +@1708 = .sdata:0x8013743C; // type:object size:0x5 scope:local data:string +@1709 = .sdata:0x80137444; // type:object size:0x5 scope:local data:string +@1710 = .sdata:0x8013744C; // type:object size:0x5 scope:local data:string +@1711 = .sdata:0x80137454; // type:object size:0x5 scope:local data:string +@1712 = .sdata:0x8013745C; // type:object size:0x7 scope:local data:string +@1714 = .sdata:0x80137464; // type:object size:0x5 scope:local data:string +@1715 = .sdata:0x8013746C; // type:object size:0x5 scope:local data:string +@1716 = .sdata:0x80137474; // type:object size:0x5 scope:local data:string +@1717 = .sdata:0x8013747C; // type:object size:0x5 scope:local data:string +@1718 = .sdata:0x80137484; // type:object size:0x8 scope:local data:string +@1720 = .sdata:0x8013748C; // type:object size:0x5 scope:local data:string +@1721 = .sdata:0x80137494; // type:object size:0x5 scope:local data:string +@1722 = .sdata:0x8013749C; // type:object size:0x5 scope:local data:string +@1723 = .sdata:0x801374A4; // type:object size:0x5 scope:local data:string +@1724 = .sdata:0x801374AC; // type:object size:0x5 scope:local data:string +@1726 = .sdata:0x801374B4; // type:object size:0x5 scope:local data:string +@1727 = .sdata:0x801374BC; // type:object size:0x5 scope:local data:string +@1728 = .sdata:0x801374C4; // type:object size:0x4 scope:local data:string +@1730 = .sdata:0x801374C8; // type:object size:0x5 scope:local data:string +@1731 = .sdata:0x801374D0; // type:object size:0x4 scope:local data:string +@1733 = .sdata:0x801374D4; // type:object size:0x5 scope:local data:string +@1734 = .sdata:0x801374DC; // type:object size:0x4 scope:local data:string +@1736 = .sdata:0x801374E0; // type:object size:0x5 scope:local data:string +@1737 = .sdata:0x801374E8; // type:object size:0x5 scope:local data:string +@1738 = .sdata:0x801374F0; // type:object size:0x5 scope:local data:string +@1742 = .sdata:0x801374F8; // type:object size:0x5 scope:local data:string +@1746 = .sdata:0x80137500; // type:object size:0x5 scope:local data:string +@1747 = .sdata:0x80137508; // type:object size:0x5 scope:local data:string +@1748 = .sdata:0x80137510; // type:object size:0x5 scope:local data:string +@1749 = .sdata:0x80137518; // type:object size:0x5 scope:local data:string +@1750 = .sdata:0x80137520; // type:object size:0x5 scope:local data:string +@1751 = .sdata:0x80137528; // type:object size:0x8 scope:local data:string +@1752 = .sdata:0x80137530; // type:object size:0x8 scope:local data:string +@1753 = .sdata:0x80137538; // type:object size:0x5 scope:local data:string +@1754 = .sdata:0x80137540; // type:object size:0x5 scope:local data:string +@1755 = .sdata:0x80137548; // type:object size:0x5 scope:local data:string +@1756 = .sdata:0x80137550; // type:object size:0x5 scope:local data:string +@1757 = .sdata:0x80137558; // type:object size:0x5 scope:local data:string +@1758 = .sdata:0x80137560; // type:object size:0x5 scope:local data:string +@1759 = .sdata:0x80137568; // type:object size:0x5 scope:local data:string +@1760 = .sdata:0x80137570; // type:object size:0x5 scope:local data:string +@1761 = .sdata:0x80137578; // type:object size:0x6 scope:local data:string +@1763 = .sdata:0x80137580; // type:object size:0x5 scope:local data:string +@1764 = .sdata:0x80137588; // type:object size:0x5 scope:local data:string +@1765 = .sdata:0x80137590; // type:object size:0x5 scope:local data:string +@1767 = .sdata:0x80137598; // type:object size:0x5 scope:local data:string +@1768 = .sdata:0x801375A0; // type:object size:0x4 scope:local data:string +@138 = .sdata:0x801375A8; // type:object size:0x4 scope:local data:string +@139 = .sdata:0x801375AC; // type:object size:0x5 scope:local data:string +@140 = .sdata:0x801375B4; // type:object size:0x3 scope:local data:string +@141 = .sdata:0x801375B8; // type:object size:0x3 scope:local data:string +@142 = .sdata:0x801375BC; // type:object size:0x3 scope:local data:string +@143 = .sdata:0x801375C0; // type:object size:0x3 scope:local data:string +@144 = .sdata:0x801375C4; // type:object size:0x3 scope:local data:string +@145 = .sdata:0x801375C8; // type:object size:0x3 scope:local data:string +@146 = .sdata:0x801375CC; // type:object size:0x3 scope:local data:string +@147 = .sdata:0x801375D0; // type:object size:0x3 scope:local data:string +@148 = .sdata:0x801375D4; // type:object size:0x3 scope:local data:string +@149 = .sdata:0x801375D8; // type:object size:0x3 scope:local data:string +@150 = .sdata:0x801375DC; // type:object size:0x3 scope:local data:string +@151 = .sdata:0x801375E0; // type:object size:0x3 scope:local data:string +@152 = .sdata:0x801375E4; // type:object size:0x3 scope:local data:string +@153 = .sdata:0x801375E8; // type:object size:0x3 scope:local data:string +@154 = .sdata:0x801375EC; // type:object size:0x3 scope:local data:string +@155 = .sdata:0x801375F0; // type:object size:0x3 scope:local data:string +@156 = .sdata:0x801375F4; // type:object size:0x3 scope:local data:string +@157 = .sdata:0x801375F8; // type:object size:0x3 scope:local data:string +@158 = .sdata:0x801375FC; // type:object size:0x3 scope:local data:string +@159 = .sdata:0x80137600; // type:object size:0x3 scope:local data:string +@160 = .sdata:0x80137604; // type:object size:0x3 scope:local data:string +@161 = .sdata:0x80137608; // type:object size:0x3 scope:local data:string +@162 = .sdata:0x8013760C; // type:object size:0x3 scope:local data:string +@163 = .sdata:0x80137610; // type:object size:0x3 scope:local data:string +@164 = .sdata:0x80137614; // type:object size:0x3 scope:local data:string +@165 = .sdata:0x80137618; // type:object size:0x3 scope:local data:string +@166 = .sdata:0x8013761C; // type:object size:0x3 scope:local data:string +@167 = .sdata:0x80137620; // type:object size:0x3 scope:local data:string +@168 = .sdata:0x80137624; // type:object size:0x3 scope:local data:string +@169 = .sdata:0x80137628; // type:object size:0x3 scope:local data:string +@170 = .sdata:0x8013762C; // type:object size:0x3 scope:local data:string +@171 = .sdata:0x80137630; // type:object size:0x3 scope:local data:string +@172 = .sdata:0x80137634; // type:object size:0x3 scope:local data:string +@173 = .sdata:0x80137638; // type:object size:0x3 scope:local data:string +@174 = .sdata:0x8013763C; // type:object size:0x3 scope:local data:string +@175 = .sdata:0x80137640; // type:object size:0x3 scope:local data:string +@176 = .sdata:0x80137644; // type:object size:0x3 scope:local data:string +@177 = .sdata:0x80137648; // type:object size:0x3 scope:local data:string +@178 = .sdata:0x8013764C; // type:object size:0x3 scope:local data:string +@179 = .sdata:0x80137650; // type:object size:0x3 scope:local data:string +@180 = .sdata:0x80137654; // type:object size:0x3 scope:local data:string +@181 = .sdata:0x80137658; // type:object size:0x4 scope:local data:string +@182 = .sdata:0x8013765C; // type:object size:0x4 scope:local data:string +@183 = .sdata:0x80137660; // type:object size:0x4 scope:local data:string +@184 = .sdata:0x80137664; // type:object size:0x4 scope:local data:string +@185 = .sdata:0x80137668; // type:object size:0x4 scope:local data:string +@186 = .sdata:0x8013766C; // type:object size:0x4 scope:local data:string +@187 = .sdata:0x80137670; // type:object size:0x4 scope:local data:string +@188 = .sdata:0x80137674; // type:object size:0x4 scope:local data:string +@189 = .sdata:0x80137678; // type:object size:0x4 scope:local data:string +@190 = .sdata:0x8013767C; // type:object size:0x4 scope:local data:string +@191 = .sdata:0x80137680; // type:object size:0x4 scope:local data:string +@192 = .sdata:0x80137684; // type:object size:0x4 scope:local data:string +@193 = .sdata:0x80137688; // type:object size:0x4 scope:local data:string +@194 = .sdata:0x8013768C; // type:object size:0x4 scope:local data:string +@195 = .sdata:0x80137690; // type:object size:0x4 scope:local data:string +@196 = .sdata:0x80137694; // type:object size:0x4 scope:local data:string +@197 = .sdata:0x80137698; // type:object size:0x4 scope:local data:string +@198 = .sdata:0x8013769C; // type:object size:0x4 scope:local data:string +@199 = .sdata:0x801376A0; // type:object size:0x4 scope:local data:string +@200 = .sdata:0x801376A4; // type:object size:0x4 scope:local data:string +@201 = .sdata:0x801376A8; // type:object size:0x4 scope:local data:string +@202 = .sdata:0x801376AC; // type:object size:0x6 scope:local data:string +@203 = .sdata:0x801376B4; // type:object size:0x7 scope:local data:string +@206 = .sdata:0x801376BC; // type:object size:0x8 scope:local data:string +@208 = .sdata:0x801376C4; // type:object size:0x6 scope:local data:string +@211 = .sdata:0x801376CC; // type:object size:0x6 scope:local data:string +@213 = .sdata:0x801376D4; // type:object size:0x8 scope:local data:string +@214 = .sdata:0x801376DC; // type:object size:0x7 scope:local data:string +@215 = .sdata:0x801376E4; // type:object size:0x6 scope:local data:string +@216 = .sdata:0x801376EC; // type:object size:0x4 scope:local data:string +@217 = .sdata:0x801376F0; // type:object size:0x7 scope:local data:string +@218 = .sdata:0x801376F8; // type:object size:0x7 scope:local data:string +@219 = .sdata:0x80137700; // type:object size:0x7 scope:local data:string +@228 = .sdata:0x80137708; // type:object size:0x4 scope:local data:string +@230 = .sdata:0x8013770C; // type:object size:0x7 scope:local data:string +@231 = .sdata:0x80137714; // type:object size:0x7 scope:local data:string +@234 = .sdata:0x8013771C; // type:object size:0x5 scope:local data:string +@265 = .sdata:0x80137724; // type:object size:0x6 scope:local data:string +@13044 = .sdata:0x8013772C; // type:object size:0x5 scope:local data:string +@13045 = .sdata:0x80137734; // type:object size:0x5 scope:local data:string +@13046 = .sdata:0x8013773C; // type:object size:0x5 scope:local data:string +@13047 = .sdata:0x80137744; // type:object size:0x5 scope:local data:string +@13048 = .sdata:0x8013774C; // type:object size:0x5 scope:local data:string +@13049 = .sdata:0x80137754; // type:object size:0x5 scope:local data:string +@13941 = .sdata:0x8013775C; // type:object size:0x1 scope:local +@28228 = .sdata:0x80137760; // type:object size:0x6 scope:local data:string +@2 = .sdata:0x80137768; // type:object size:0x4 scope:local data:string +@2 = .sdata:0x80137770; // type:object size:0x4 scope:local data:string +@2 = .sdata:0x80137778; // type:object size:0x4 scope:local data:string +@1052 = .sdata:0x8013777C; // type:object size:0x5 scope:local data:byte +@1053 = .sdata:0x80137784; // type:object size:0x5 scope:local data:byte +@1054 = .sdata:0x8013778C; // type:object size:0x8 scope:local data:string +@1056 = .sdata:0x80137794; // type:object size:0x8 scope:local data:string +@1058 = .sdata:0x8013779C; // type:object size:0x1 scope:local +@1059 = .sdata:0x801377A0; // type:object size:0x5 scope:local data:byte +@1060 = .sdata:0x801377A8; // type:object size:0x5 scope:local data:byte +@2 = .sdata:0x801377B0; // type:object size:0x4 scope:local data:string +@2 = .sdata:0x801377B8; // type:object size:0x4 scope:local data:string +@136 = .sdata:0x801377C0; // type:object size:0x4 scope:local data:string +nFirstTime$2148 = .sdata:0x801377C4; // type:object size:0x4 scope:local data:4byte +nFirstTime$2648 = .sdata:0x801377C8; // type:object size:0x4 scope:local data:4byte +nFirstTime$2757 = .sdata:0x801377CC; // type:object size:0x4 scope:local data:4byte +nFirstTime$2796 = .sdata:0x801377D0; // type:object size:0x4 scope:local data:4byte +scissorX1 = .sdata:0x801377D4; // type:object size:0x2 scope:local data:2byte +scissorY1 = .sdata:0x801377D6; // type:object size:0x2 scope:local data:2byte +TMEMMASK$3464 = .sdata:0x801377D8; // type:object size:0x8 scope:local +TMEMSHIFT$3465 = .sdata:0x801377E0; // type:object size:0x8 scope:local +@2 = .sdata:0x801377E8; // type:object size:0x5 scope:local data:string +@2 = .sdata:0x801377F0; // type:object size:0x5 scope:local data:string +@2 = .sdata:0x801377F8; // type:object size:0x6 scope:local data:string +@2 = .sdata:0x80137800; // type:object size:0x5 scope:local data:string +@2 = .sdata:0x80137808; // type:object size:0x6 scope:local data:string +@80 = .sdata:0x80137810; // type:object size:0x8 scope:local data:string +@2 = .sdata:0x80137818; // type:object size:0x6 scope:local data:string +@2 = .sdata:0x80137820; // type:object size:0x7 scope:local data:string +dtor$313 = .sdata:0x80137828; // type:object size:0x4 scope:local data:float +dtor$327 = .sdata:0x8013782C; // type:object size:0x4 scope:local data:float +nAddress$442 = .sdata:0x80137830; // type:object size:0x4 scope:local data:4byte +@460 = .sdata:0x80137834; // type:object size:0x7 scope:local data:string +@461 = .sdata:0x8013783C; // type:object size:0x7 scope:local data:string +@462 = .sdata:0x80137844; // type:object size:0x6 scope:local data:string +@463 = .sdata:0x8013784C; // type:object size:0x6 scope:local data:string +@464 = .sdata:0x80137854; // type:object size:0x7 scope:local data:string +@472 = .sdata:0x8013785C; // type:object size:0x8 scope:local data:string +@476 = .sdata:0x80137864; // type:object size:0x8 scope:local data:string +sOrder = .sdata:0x80137870; // type:object size:0x5 scope:local data:byte +sReplace = .sdata:0x80137878; // type:object size:0x5 scope:local +@112 = .sdata:0x80137880; // type:object size:0x7 scope:local data:string +@113 = .sdata:0x80137888; // type:object size:0x7 scope:local data:string +@115 = .sdata:0x80137890; // type:object size:0x6 scope:local data:string +@117 = .sdata:0x80137898; // type:object size:0x2 scope:local data:string +@126 = .sdata:0x8013789C; // type:object size:0x2 scope:local data:string +@289 = .sdata:0x801378A0; // type:object size:0x7 scope:local data:string +@290 = .sdata:0x801378A8; // type:object size:0x7 scope:local data:string +@291 = .sdata:0x801378B0; // type:object size:0x7 scope:local data:string +@292 = .sdata:0x801378B8; // type:object size:0x7 scope:local data:string +@293 = .sdata:0x801378C0; // type:object size:0x7 scope:local data:string +@294 = .sdata:0x801378C8; // type:object size:0x7 scope:local data:string +@295 = .sdata:0x801378D0; // type:object size:0x7 scope:local data:string +@296 = .sdata:0x801378D8; // type:object size:0x7 scope:local data:string +@297 = .sdata:0x801378E0; // type:object size:0x6 scope:local data:string +@298 = .sdata:0x801378E8; // type:object size:0x6 scope:local data:string +@299 = .sdata:0x801378F0; // type:object size:0x6 scope:local data:string +@300 = .sdata:0x801378F8; // type:object size:0x6 scope:local data:string +zeroType$182 = .sdata:0x80137900; // type:object size:0x8 scope:local +@1361 = .sdata:0x80137908; // type:object size:0x6 scope:local data:string +__OSVersion = .sdata:0x80137910; // type:object size:0x4 scope:global data:4byte +@97 = .sdata:0x80137914; // type:object size:0x6 scope:local data:string +@144 = .sdata:0x8013791C; // type:object size:0x4 scope:local data:string +__OSCurrHeap = .sdata:0x80137920; // type:object size:0x4 scope:global data:4byte +__OSArenaLo = .sdata:0x80137928; // type:object size:0x4 scope:local data:4byte +__OSFpscrEnableBits = .sdata:0x80137930; // type:object size:0x4 scope:global data:4byte +@76 = .sdata:0x80137934; // type:object size:0x2 scope:local data:string +fontEncode$80 = .sdata:0x80137938; // type:object size:0x2 scope:local data:2byte +SwitchThreadCallback = .sdata:0x80137940; // type:object size:0x4 scope:local data:4byte +__EXIVersion = .sdata:0x80137948; // type:object size:0x4 scope:global data:4byte +__SIVersion = .sdata:0x80137950; // type:object size:0x4 scope:global data:4byte +__VIVersion = .sdata:0x80137958; // type:object size:0x4 scope:global data:4byte +@534 = .sdata:0x8013795C; // type:object size:0x5 scope:local data:string +Unit01 = .sdata:0x80137968; // type:object size:0x8 scope:local +__GXVersion = .sdata:0x80137970; // type:object size:0x4 scope:global data:4byte +tbl1$263 = .sdata:0x80137978; // type:object size:0x4 scope:local +tbl2$264 = .sdata:0x8013797C; // type:object size:0x4 scope:local +tbl3$265 = .sdata:0x80137980; // type:object size:0x4 scope:local +GXTexMode0Ids = .sdata:0x80137988; // type:object size:0x8 scope:local +GXTexMode1Ids = .sdata:0x80137990; // type:object size:0x8 scope:local +GXTexImage0Ids = .sdata:0x80137998; // type:object size:0x8 scope:local +GXTexImage1Ids = .sdata:0x801379A0; // type:object size:0x8 scope:local +GXTexImage2Ids = .sdata:0x801379A8; // type:object size:0x8 scope:local +GXTexImage3Ids = .sdata:0x801379B0; // type:object size:0x8 scope:local +GXTexTlutIds = .sdata:0x801379B8; // type:object size:0x8 scope:local +GX2HWFiltConv = .sdata:0x801379C0; // type:object size:0x6 scope:local +__PADVersion = .sdata:0x801379C8; // type:object size:0x4 scope:global data:4byte +ResettingChan = .sdata:0x801379CC; // type:object size:0x4 scope:local data:4byte +XPatchBits = .sdata:0x801379D0; // type:object size:0x4 scope:local data:4byte +AnalogMode = .sdata:0x801379D4; // type:object size:0x4 scope:local data:4byte +Spec = .sdata:0x801379D8; // type:object size:0x4 scope:local data:4byte +MakeStatus = .sdata:0x801379DC; // type:object size:0x4 scope:local data:4byte +CmdReadOrigin = .sdata:0x801379E0; // type:object size:0x4 scope:local +CmdCalibrate = .sdata:0x801379E4; // type:object size:0x4 scope:local +FirstRead = .sdata:0x801379E8; // type:object size:0x4 scope:local data:4byte +@118 = .sdata:0x801379F0; // type:object size:0x8 scope:local data:string +__DVDVersion = .sdata:0x801379F8; // type:object size:0x4 scope:global data:4byte +autoInvalidation = .sdata:0x801379FC; // type:object size:0x4 scope:local data:4byte +checkOptionalCommand = .sdata:0x80137A00; // type:object size:0x4 scope:local data:4byte +@23 = .sdata:0x80137A04; // type:object size:0x6 scope:local data:string +DmaCommand = .sdata:0x80137A0C; // type:object size:0x4 scope:local data:4byte +@37 = .sdata:0x80137A10; // type:object size:0x2 scope:local data:string +@42 = .sdata:0x80137A14; // type:object size:0x4 scope:local data:string +@43 = .sdata:0x80137A18; // type:object size:0x3 scope:local data:string +DemoFirstFrame = .sdata:0x80137A20; // type:object size:0x1 scope:local data:byte +@162 = .sdata:0x80137A28; // type:object size:0x8 scope:local data:string +__AIVersion = .sdata:0x80137A30; // type:object size:0x4 scope:global data:4byte +__ARVersion = .sdata:0x80137A38; // type:object size:0x4 scope:global data:4byte +__DSPVersion = .sdata:0x80137A40; // type:object size:0x4 scope:global data:4byte +__CARDVersion = .sdata:0x80137A48; // type:object size:0x4 scope:global data:4byte +next = .sdata:0x80137A50; // type:object size:0x4 scope:local data:4byte +__CARDVendorID = .sdata:0x80137A58; // type:object size:0x2 scope:global data:2byte +__CARDPermMask = .sdata:0x80137A5A; // type:object size:0x1 scope:global data:byte +__THPVersion = .sdata:0x80137A60; // type:object size:0x4 scope:global data:4byte +@wstringBase0 = .sdata:0x80137A68; // type:object size:0x2 scope:local +K1 = .sdata:0x80137A70; // type:object size:0x4 scope:local data:4byte +K2 = .sdata:0x80137A74; // type:object size:0x4 scope:local data:4byte +SendCount = .sdata:0x80137A78; // type:object size:0x1 scope:local data:byte +gnCountArgument = .sbss:0x80137A80; // type:object size:0x4 scope:local data:4byte +gaszArgument = .sbss:0x80137A84; // type:object size:0x4 scope:local data:4byte +DefaultFifo = .sbss:0x80137A88; // type:object size:0x4 scope:local data:4byte +DefaultFifoObj = .sbss:0x80137A8C; // type:object size:0x4 scope:local data:4byte +gpHeap = .sbss:0x80137A90; // type:object size:0x4 scope:local data:4byte +gArenaHi = .sbss:0x80137A94; // type:object size:0x4 scope:local data:4byte +gArenaLo = .sbss:0x80137A98; // type:object size:0x4 scope:local data:4byte +rmode = .sbss:0x80137A9C; // type:object size:0x4 scope:global data:4byte +gpfOpen = .sbss:0x80137AA0; // type:object size:0x4 scope:local data:4byte +gpfRead = .sbss:0x80137AA4; // type:object size:0x4 scope:local data:4byte +gpHeap = .sbss:0x80137AA8; // type:object size:0x4 scope:local data:4byte +gpHeapBlockFirst = .sbss:0x80137AAC; // type:object size:0x4 scope:local data:4byte +gpHeapBlockLast = .sbss:0x80137AB0; // type:object size:0x4 scope:local data:4byte +gnHeapTakeCount = .sbss:0x80137AB4; // type:object size:0x4 scope:local data:4byte +gnHeapFreeCount = .sbss:0x80137AB8; // type:object size:0x4 scope:local data:4byte +gnHeapTakeCacheCount = .sbss:0x80137ABC; // type:object size:0x4 scope:local data:4byte +gnSizeHeap = .sbss:0x80137AC0; // type:object size:0x4 scope:global data:4byte +gpListData = .sbss:0x80137AC8; // type:object size:0x4 scope:local data:4byte +gpCode = .sbss:0x80137AD0; // type:object size:0x4 scope:local +gButtonDownToggle = .sbss:0x80137AD4; // type:object size:0x4 scope:global data:4byte +gDVDResetToggle = .sbss:0x80137AD8; // type:object size:0x4 scope:global data:4byte +toggle$41 = .sbss:0x80137ADC; // type:object size:0x4 scope:local data:4byte +nPrevButton$471 = .sbss:0x80137AE0; // type:object size:0x4 scope:local data:4byte +nCurrButton$472 = .sbss:0x80137AE4; // type:object size:0x4 scope:local data:4byte +gbReset = .sbss:0x80137AE8; // type:object size:0x4 scope:global data:4byte +gnTickReset = .sbss:0x80137AEC; // type:object size:0x4 scope:global data:4byte +gPreviousIPLSetting = .sbss:0x80137AF0; // type:object size:0x4 scope:global data:4byte +gPreviousForceMenuSetting = .sbss:0x80137AF4; // type:object size:0x4 scope:global data:4byte +gPreviousAllowResetSetting = .sbss:0x80137AF8; // type:object size:0x4 scope:global data:4byte +gbDisplayedError = .sbss:0x80137AFC; // type:object size:0x4 scope:global data:4byte +gpSystem = .sbss:0x80137B00; // type:object size:0x4 scope:global data:4byte +gpSound = .sbss:0x80137B04; // type:object size:0x4 scope:global data:4byte +gpFrame = .sbss:0x80137B08; // type:object size:0x4 scope:global data:4byte +gBufferP = .sbss:0x80137B10; // type:object size:0x4 scope:global data:4byte +Initialized = .sbss:0x80137B18; // type:object size:0x4 scope:local data:4byte +PrepareReadyMessage = .sbss:0x80137B1C; // type:object size:0x4 scope:local +OldVIPostCallback = .sbss:0x80137B20; // type:object size:0x4 scope:local data:4byte +SoundBufferIndex = .sbss:0x80137B24; // type:object size:0x4 scope:local data:4byte +OldAIDCallback = .sbss:0x80137B28; // type:object size:0x4 scope:local data:4byte +LastAudioBuffer = .sbss:0x80137B2C; // type:object size:0x4 scope:local data:4byte +CurAudioBuffer = .sbss:0x80137B30; // type:object size:0x4 scope:local data:4byte +AudioSystem = .sbss:0x80137B34; // type:object size:0x4 scope:local data:4byte +AudioDecodeThreadCreated = .sbss:0x80137B38; // type:object size:0x4 scope:local data:4byte +ReadThreadCreated = .sbss:0x80137B40; // type:object size:0x4 scope:global data:4byte +gMovieErrorToggle = .sbss:0x80137B44; // type:object size:0x4 scope:global data:4byte +toggle_184 = .sbss:0x80137B48; // type:object size:0x4 scope:global data:4byte +gbReset_thpread = .sbss:0x80137B4C; // type:object size:0x4 scope:global data:4byte +gnTickReset_thpread = .sbss:0x80137B50; // type:object size:0x4 scope:global data:4byte +VideoDecodeThreadCreated = .sbss:0x80137B58; // type:object size:0x4 scope:local data:4byte +First = .sbss:0x80137B5C; // type:object size:0x4 scope:local data:4byte +currentIdx = .sbss:0x80137B60; // type:object size:0x4 scope:global data:4byte +yes$771 = .sbss:0x80137B64; // type:object size:0x4 scope:local data:4byte +prevMenuEntry$772 = .sbss:0x80137B68; // type:object size:0x4 scope:local data:4byte +nextMenuEntry$773 = .sbss:0x80137B6C; // type:object size:0x4 scope:local data:4byte +toggle2$1029 = .sbss:0x80137B70; // type:object size:0x4 scope:local data:4byte +checkFailCount$1490 = .sbss:0x80137B74; // type:object size:0x4 scope:local data:4byte +bWrite2Card = .sbss:0x80137B78; // type:object size:0x4 scope:global data:4byte +gpBufferFunction = .sbss:0x80137B80; // type:object size:0x4 scope:local data:4byte +ganDataCode = .sbss:0x80137B84; // type:object size:0x4 scope:local data:4byte +gbFrameValid = .sbss:0x80137B88; // type:object size:0x4 scope:local data:4byte +gbFrameBegin = .sbss:0x80137B8C; // type:object size:0x4 scope:local data:4byte +snScissorChanged = .sbss:0x80137B90; // type:object size:0x4 scope:local data:4byte +snScissorXOrig = .sbss:0x80137B94; // type:object size:0x4 scope:local data:4byte +snScissorYOrig = .sbss:0x80137B98; // type:object size:0x4 scope:local data:4byte +snScissorWidth = .sbss:0x80137B9C; // type:object size:0x4 scope:local data:4byte +snScissorHeight = .sbss:0x80137BA0; // type:object size:0x4 scope:local data:4byte +sCopyFrameSyncReceived = .sbss:0x80137BA4; // type:object size:0x4 scope:local data:4byte +sSpecialZeldaHackON = .sbss:0x80137BA8; // type:object size:0x1 scope:local data:byte +sDestinationBuffer = .sbss:0x80137BAC; // type:object size:0x4 scope:local data:4byte +sSrcBuffer = .sbss:0x80137BB0; // type:object size:0x4 scope:local data:4byte +sNumAddr = .sbss:0x80137BB4; // type:object size:0x4 scope:local data:4byte +gHackCreditsColor = .sbss:0x80137BB8; // type:object size:0x4 scope:local data:4byte +gNoSwapBuffer = .sbss:0x80137BBC; // type:object size:0x4 scope:global data:4byte +gnCountMapHack = .sbss:0x80137BC0; // type:object size:0x4 scope:local data:4byte +nCounter$1367 = .sbss:0x80137BC4; // type:object size:0x4 scope:local data:4byte +bSkip$1410 = .sbss:0x80137BC8; // type:object size:0x4 scope:local data:4byte +nLastFrame$1695 = .sbss:0x80137BCC; // type:object size:0x4 scope:local data:4byte +nCopyFrame$1697 = .sbss:0x80137BD0; // type:object size:0x4 scope:local data:4byte +gnFlagZelda = .sbss:0x80137BD8; // type:object size:0x4 scope:global data:4byte +gHeapTree = .sbss:0x80137BE0; // type:object size:0x4 scope:global data:4byte +cpuCompile_DSLLV_function = .sbss:0x80137BE4; // type:object size:0x4 scope:local data:4byte +cpuCompile_DSRLV_function = .sbss:0x80137BE8; // type:object size:0x4 scope:local data:4byte +cpuCompile_DSRAV_function = .sbss:0x80137BEC; // type:object size:0x4 scope:local data:4byte +cpuCompile_DMULT_function = .sbss:0x80137BF0; // type:object size:0x4 scope:local data:4byte +cpuCompile_DMULTU_function = .sbss:0x80137BF4; // type:object size:0x4 scope:local data:4byte +cpuCompile_DDIV_function = .sbss:0x80137BF8; // type:object size:0x4 scope:local data:4byte +cpuCompile_DDIVU_function = .sbss:0x80137BFC; // type:object size:0x4 scope:local data:4byte +cpuCompile_DADD_function = .sbss:0x80137C00; // type:object size:0x4 scope:local data:4byte +cpuCompile_DADDU_function = .sbss:0x80137C04; // type:object size:0x4 scope:local data:4byte +cpuCompile_DSUB_function = .sbss:0x80137C08; // type:object size:0x4 scope:local data:4byte +cpuCompile_DSUBU_function = .sbss:0x80137C0C; // type:object size:0x4 scope:local data:4byte +cpuCompile_S_SQRT_function = .sbss:0x80137C10; // type:object size:0x4 scope:local data:4byte +cpuCompile_D_SQRT_function = .sbss:0x80137C14; // type:object size:0x4 scope:local data:4byte +cpuCompile_W_CVT_SD_function = .sbss:0x80137C18; // type:object size:0x4 scope:local data:4byte +cpuCompile_L_CVT_SD_function = .sbss:0x80137C1C; // type:object size:0x4 scope:local data:4byte +cpuCompile_CEIL_W_function = .sbss:0x80137C20; // type:object size:0x4 scope:local data:4byte +cpuCompile_FLOOR_W_function = .sbss:0x80137C24; // type:object size:0x4 scope:local data:4byte +cpuCompile_ROUND_W_function = .sbss:0x80137C28; // type:object size:0x4 scope:local data:4byte +cpuCompile_TRUNC_W_function = .sbss:0x80137C2C; // type:object size:0x4 scope:local data:4byte +cpuCompile_LB_function = .sbss:0x80137C30; // type:object size:0x4 scope:local data:4byte +cpuCompile_LH_function = .sbss:0x80137C34; // type:object size:0x4 scope:local data:4byte +cpuCompile_LW_function = .sbss:0x80137C38; // type:object size:0x4 scope:local data:4byte +cpuCompile_LBU_function = .sbss:0x80137C3C; // type:object size:0x4 scope:local data:4byte +cpuCompile_LHU_function = .sbss:0x80137C40; // type:object size:0x4 scope:local data:4byte +cpuCompile_SB_function = .sbss:0x80137C44; // type:object size:0x4 scope:local data:4byte +cpuCompile_SH_function = .sbss:0x80137C48; // type:object size:0x4 scope:local data:4byte +cpuCompile_SW_function = .sbss:0x80137C4C; // type:object size:0x4 scope:local data:4byte +cpuCompile_LDC_function = .sbss:0x80137C50; // type:object size:0x4 scope:local data:4byte +cpuCompile_SDC_function = .sbss:0x80137C54; // type:object size:0x4 scope:local data:4byte +cpuCompile_LWL_function = .sbss:0x80137C58; // type:object size:0x4 scope:local data:4byte +cpuCompile_LWR_function = .sbss:0x80137C5C; // type:object size:0x4 scope:local data:4byte +gbProgress = .sbss:0x80137C60; // type:object size:0x4 scope:local data:4byte +gpImageBack = .sbss:0x80137C64; // type:object size:0x4 scope:local data:4byte +iImage = .sbss:0x80137C68; // type:object size:0x4 scope:local data:4byte +nCount$25 = .sbss:0x80137C70; // type:object size:0x4 scope:local data:4byte +nBlurCount$26 = .sbss:0x80137C74; // type:object size:0x4 scope:local data:4byte +nNoteCount$27 = .sbss:0x80137C78; // type:object size:0x4 scope:local data:4byte +nZCount$28 = .sbss:0x80137C7C; // type:object size:0x4 scope:local data:4byte +nZBufferCount$29 = .sbss:0x80137C80; // type:object size:0x4 scope:local data:4byte +counter$2409 = .sbss:0x80137C88; // type:object size:0x4 scope:local data:4byte +scissorX0 = .sbss:0x80137C8C; // type:object size:0x2 scope:local data:2byte +scissorY0 = .sbss:0x80137C8E; // type:object size:0x2 scope:local data:2byte +flagBilerp = .sbss:0x80137C90; // type:object size:0x1 scope:local data:byte +rdpSetTimg_w0 = .sbss:0x80137C94; // type:object size:0x4 scope:local data:4byte +rdpSetTile_w0 = .sbss:0x80137C98; // type:object size:0x4 scope:local data:4byte +tmemSliceWmax = .sbss:0x80137C9C; // type:object size:0x2 scope:local data:2byte +imageSrcWsize = .sbss:0x80137C9E; // type:object size:0x2 scope:local data:2byte +flagSplit = .sbss:0x80137CA0; // type:object size:0x2 scope:local data:2byte +imagePtrX0 = .sbss:0x80137CA2; // type:object size:0x2 scope:local data:2byte +imageTop = .sbss:0x80137CA4; // type:object size:0x4 scope:local data:4byte +tmemSrcLines = .sbss:0x80137CA8; // type:object size:0x2 scope:local data:2byte +BootInfo = .sbss:0x80137CB0; // type:object size:0x4 scope:local data:4byte +BI2DebugFlag = .sbss:0x80137CB4; // type:object size:0x4 scope:local data:4byte +BI2DebugFlagHolder = .sbss:0x80137CB8; // type:object size:0x4 scope:local data:4byte +__OSIsGcam = .sbss:0x80137CBC; // type:object size:0x4 scope:weak data:4byte +ZeroF = .sbss:0x80137CC0; // type:object size:0x8 scope:local data:double +ZeroPS = .sbss:0x80137CC8; // type:object size:0x8 scope:local +AreWeInitialized = .sbss:0x80137CD0; // type:object size:0x4 scope:local data:4byte +OSExceptionTable = .sbss:0x80137CD4; // type:object size:0x4 scope:local data:4byte +__OSSavedRegionEnd = .sbss:0x80137CD8; // type:object size:0x4 scope:global data:4byte +__OSSavedRegionStart = .sbss:0x80137CDC; // type:object size:0x4 scope:global data:4byte +__OSInIPL = .sbss:0x80137CE0; // type:object size:0x4 scope:global data:4byte +__OSStartTime = .sbss:0x80137CE8; // type:object size:0x8 scope:global data:4byte +AlarmQueue = .sbss:0x80137CF0; // type:object size:0x8 scope:local data:4byte +HeapArray = .sbss:0x80137CF8; // type:object size:0x4 scope:local data:4byte +NumHeaps = .sbss:0x80137CFC; // type:object size:0x4 scope:local data:4byte +ArenaStart = .sbss:0x80137D00; // type:object size:0x4 scope:local data:4byte +ArenaEnd = .sbss:0x80137D04; // type:object size:0x4 scope:local data:4byte +__OSArenaHi = .sbss:0x80137D08; // type:object size:0x4 scope:local data:4byte +InterruptHandlerTable = .sbss:0x80137D10; // type:object size:0x4 scope:local data:4byte +__OSLastInterruptSrr0 = .sbss:0x80137D14; // type:object size:0x4 scope:global data:4byte +__OSLastInterrupt = .sbss:0x80137D18; // type:object size:0x2 scope:global data:2byte +__OSLastInterruptTime = .sbss:0x80137D20; // type:object size:0x8 scope:global data:4byte +SaveStart = .sbss:0x80137D28; // type:object size:0x4 scope:local data:4byte +SaveEnd = .sbss:0x80137D2C; // type:object size:0x4 scope:local data:4byte +Prepared = .sbss:0x80137D30; // type:object size:0x4 scope:local data:4byte +ResetFunctionQueue = .sbss:0x80137D38; // type:object size:0x8 scope:local data:4byte +bootThisDol = .sbss:0x80137D40; // type:object size:0x4 scope:local data:4byte +ResetCallback = .sbss:0x80137D48; // type:object size:0x4 scope:local data:4byte +Down = .sbss:0x80137D4C; // type:object size:0x4 scope:local data:4byte +LastState = .sbss:0x80137D50; // type:object size:0x4 scope:local data:4byte +HoldUp = .sbss:0x80137D58; // type:object size:0x8 scope:local data:4byte +HoldDown = .sbss:0x80137D60; // type:object size:0x8 scope:local data:4byte +RunQueueBits = .sbss:0x80137D68; // type:object size:0x4 scope:local data:4byte +RunQueueHint = .sbss:0x80137D6C; // type:object size:0x4 scope:local data:4byte +Reschedule = .sbss:0x80137D70; // type:object size:0x4 scope:local data:4byte +Debug_BBA = .sbss:0x80137D78; // type:object size:0x1 scope:local data:byte +IDSerialPort1 = .sbss:0x80137D80; // type:object size:0x4 scope:local data:4byte +Chan = .sbss:0x80137D88; // type:object size:0x4 scope:local data:4byte +Dev = .sbss:0x80137D8C; // type:object size:0x4 scope:local data:4byte +Enabled = .sbss:0x80137D90; // type:object size:0x4 scope:local data:4byte +BarnacleEnabled = .sbss:0x80137D94; // type:object size:0x4 scope:local data:4byte +cmdTypeAndStatus$78 = .sbss:0x80137D98; // type:object size:0x4 scope:local +cmdTypeAndStatus$372 = .sbss:0x80137D9C; // type:object size:0x4 scope:local +__PADFixBits = .sbss:0x80137DA0; // type:object size:0x4 scope:global data:4byte +SamplingRate = .sbss:0x80137DA8; // type:object size:0x4 scope:local data:4byte +IsInitialized = .sbss:0x80137DB0; // type:object size:0x4 scope:local data:4byte +retraceCount = .sbss:0x80137DB4; // type:object size:0x4 scope:local data:4byte +flushFlag = .sbss:0x80137DB8; // type:object size:0x4 scope:local data:4byte +retraceQueue = .sbss:0x80137DBC; // type:object size:0x8 scope:local +PreCB = .sbss:0x80137DC4; // type:object size:0x4 scope:local data:4byte +PostCB = .sbss:0x80137DC8; // type:object size:0x4 scope:local data:4byte +PositionCallback = .sbss:0x80137DCC; // type:object size:0x4 scope:local data:4byte +encoderType = .sbss:0x80137DD0; // type:object size:0x4 scope:local data:4byte +displayOffsetH = .sbss:0x80137DD4; // type:object size:0x2 scope:local data:2byte +displayOffsetV = .sbss:0x80137DD6; // type:object size:0x2 scope:local data:2byte +changeMode = .sbss:0x80137DD8; // type:object size:0x4 scope:local data:4byte +changed = .sbss:0x80137DE0; // type:object size:0x8 scope:local data:4byte +shdwChangeMode = .sbss:0x80137DE8; // type:object size:0x4 scope:local data:4byte +shdwChanged = .sbss:0x80137DF0; // type:object size:0x8 scope:local data:4byte +CurrTiming = .sbss:0x80137DF8; // type:object size:0x4 scope:local data:4byte +CurrTvMode = .sbss:0x80137DFC; // type:object size:0x4 scope:local data:4byte +NextBufAddr = .sbss:0x80137E00; // type:object size:0x4 scope:local data:4byte +CurrBufAddr = .sbss:0x80137E04; // type:object size:0x4 scope:local data:4byte +FBSet = .sbss:0x80137E08; // type:object size:0x4 scope:local data:4byte +message$343 = .sbss:0x80137E0C; // type:object size:0x4 scope:local data:4byte +__DBInterface = .sbss:0x80137E10; // type:object size:0x4 scope:global data:4byte +DBVerbose = .sbss:0x80137E14; // type:object size:0x4 scope:global data:4byte +__piReg = .sbss:0x80137E18; // type:object size:0x4 scope:global data:4byte +__cpReg = .sbss:0x80137E1C; // type:object size:0x4 scope:global data:4byte +__peReg = .sbss:0x80137E20; // type:object size:0x4 scope:global data:4byte +__memReg = .sbss:0x80137E24; // type:object size:0x4 scope:global data:4byte +peCount$35 = .sbss:0x80137E28; // type:object size:0x4 scope:local data:4byte +time$36 = .sbss:0x80137E30; // type:object size:0x8 scope:local data:4byte +calledOnce$37 = .sbss:0x80137E38; // type:object size:0x4 scope:local data:4byte +resetFuncRegistered$70 = .sbss:0x80137E3C; // type:object size:0x4 scope:local data:4byte +CPUFifo = .sbss:0x80137E40; // type:object size:0x4 scope:local data:4byte +GPFifo = .sbss:0x80137E44; // type:object size:0x4 scope:local data:4byte +__GXCurrentThread = .sbss:0x80137E48; // type:object size:0x4 scope:local data:4byte +CPGPLinked = .sbss:0x80137E4C; // type:object size:0x1 scope:local data:byte +GXOverflowSuspendInProgress = .sbss:0x80137E50; // type:object size:0x4 scope:local data:4byte +BreakPointCB = .sbss:0x80137E54; // type:object size:0x4 scope:local data:4byte +__GXOverflowCount = .sbss:0x80137E58; // type:object size:0x4 scope:local data:4byte +TokenCB = .sbss:0x80137E60; // type:object size:0x4 scope:local data:4byte +DrawDoneCB = .sbss:0x80137E64; // type:object size:0x4 scope:local data:4byte +DrawDone = .sbss:0x80137E68; // type:object size:0x1 scope:local data:byte +FinishQueue = .sbss:0x80137E6C; // type:object size:0x8 scope:local +Initialized = .sbss:0x80137E78; // type:object size:0x4 scope:local data:4byte +EnabledBits = .sbss:0x80137E7C; // type:object size:0x4 scope:local data:4byte +ResettingBits = .sbss:0x80137E80; // type:object size:0x4 scope:local data:4byte +RecalibrateBits = .sbss:0x80137E84; // type:object size:0x4 scope:local data:4byte +WaitingBits = .sbss:0x80137E88; // type:object size:0x4 scope:local data:4byte +CheckingBits = .sbss:0x80137E8C; // type:object size:0x4 scope:local data:4byte +PendingBits = .sbss:0x80137E90; // type:object size:0x4 scope:local data:4byte +BarrelBits = .sbss:0x80137E94; // type:object size:0x4 scope:local data:4byte +SamplingCallback = .sbss:0x80137E98; // type:object size:0x4 scope:local data:4byte +recalibrated$388 = .sbss:0x80137E9C; // type:object size:0x4 scope:local data:4byte +__PADSpec = .sbss:0x80137EA0; // type:object size:0x4 scope:global data:4byte +StopAtNextInt = .sbss:0x80137EA8; // type:object size:0x4 scope:local data:4byte +LastLength = .sbss:0x80137EAC; // type:object size:0x4 scope:local data:4byte +Callback = .sbss:0x80137EB0; // type:object size:0x4 scope:local data:4byte +ResetCoverCallback = .sbss:0x80137EB4; // type:object size:0x4 scope:local data:4byte +LastResetEnd = .sbss:0x80137EB8; // type:object size:0x8 scope:local data:4byte +ResetOccurred = .sbss:0x80137EC0; // type:object size:0x4 scope:local data:4byte +WaitingCoverClose = .sbss:0x80137EC4; // type:object size:0x4 scope:local data:4byte +Breaking = .sbss:0x80137EC8; // type:object size:0x4 scope:local data:4byte +WorkAroundType = .sbss:0x80137ECC; // type:object size:0x4 scope:local data:4byte +WorkAroundSeekLocation = .sbss:0x80137ED0; // type:object size:0x4 scope:local data:4byte +LastReadFinished = .sbss:0x80137ED8; // type:object size:0x8 scope:local data:4byte +LastReadIssued = .sbss:0x80137EE0; // type:object size:0x8 scope:local data:4byte +LastCommandWasRead = .sbss:0x80137EE8; // type:object size:0x4 scope:local data:4byte +NextCommandNumber = .sbss:0x80137EEC; // type:object size:0x4 scope:local data:4byte +BootInfo = .sbss:0x80137EF0; // type:object size:0x4 scope:local data:4byte +FstStart = .sbss:0x80137EF4; // type:object size:0x4 scope:local data:4byte +FstStringStart = .sbss:0x80137EF8; // type:object size:0x4 scope:local data:4byte +MaxEntryNum = .sbss:0x80137EFC; // type:object size:0x4 scope:local data:4byte +currentDirectory = .sbss:0x80137F00; // type:object size:0x4 scope:local data:4byte +__DVDLongFileNameFlag = .sbss:0x80137F04; // type:object size:0x4 scope:global data:4byte +__DVDThreadQueue = .sbss:0x80137F08; // type:object size:0x8 scope:global +executing = .sbss:0x80137F10; // type:object size:0x4 scope:local data:4byte +IDShouldBe = .sbss:0x80137F14; // type:object size:0x4 scope:local data:4byte +bootInfo = .sbss:0x80137F18; // type:object size:0x4 scope:local data:4byte +PauseFlag = .sbss:0x80137F1C; // type:object size:0x4 scope:local data:4byte +PausingFlag = .sbss:0x80137F20; // type:object size:0x4 scope:local data:4byte +AutoFinishing = .sbss:0x80137F24; // type:object size:0x4 scope:local data:4byte +FatalErrorFlag = .sbss:0x80137F28; // type:object size:0x4 scope:local data:4byte +CurrCommand = .sbss:0x80137F2C; // type:object size:0x4 scope:local data:4byte +Canceling = .sbss:0x80137F30; // type:object size:0x4 scope:local data:4byte +CancelCallback = .sbss:0x80137F34; // type:object size:0x4 scope:local data:4byte +ResumeFromHere = .sbss:0x80137F38; // type:object size:0x4 scope:local data:4byte +CancelLastError = .sbss:0x80137F3C; // type:object size:0x4 scope:local data:4byte +LastError = .sbss:0x80137F40; // type:object size:0x4 scope:local data:4byte +NumInternalRetry = .sbss:0x80137F44; // type:object size:0x4 scope:local data:4byte +ResetRequired = .sbss:0x80137F48; // type:object size:0x4 scope:local data:4byte +FirstTimeInBootrom = .sbss:0x80137F4C; // type:object size:0x4 scope:local data:4byte +DVDInitialized = .sbss:0x80137F50; // type:object size:0x4 scope:local data:4byte +LastState = .sbss:0x80137F54; // type:object size:0x4 scope:global data:4byte +FatalFunc = .sbss:0x80137F58; // type:object size:0x4 scope:local data:4byte +status = .sbss:0x80137F60; // type:object size:0x4 scope:local data:4byte +bb2 = .sbss:0x80137F64; // type:object size:0x4 scope:local data:4byte +idTmp = .sbss:0x80137F68; // type:object size:0x4 scope:local data:4byte +DefaultFifo = .sbss:0x80137F70; // type:object size:0x4 scope:local data:4byte +DefaultFifoObj = .sbss:0x80137F74; // type:object size:0x4 scope:local data:4byte +rmode = .sbss:0x80137F78; // type:object size:0x4 scope:local data:4byte +allocatedFrameBufferSize = .sbss:0x80137F7C; // type:object size:0x4 scope:local data:4byte +GPHangWorkaround = .sbss:0x80137F80; // type:object size:0x4 scope:local data:4byte +FrameCount = .sbss:0x80137F84; // type:object size:0x4 scope:local data:4byte +FrameMissThreshold = .sbss:0x80137F88; // type:object size:0x4 scope:local data:4byte +DemoCurrentBuffer = .sbss:0x80137F8C; // type:object size:0x4 scope:global data:4byte +DemoFrameBuffer2 = .sbss:0x80137F90; // type:object size:0x4 scope:global data:4byte +DemoFrameBuffer1 = .sbss:0x80137F94; // type:object size:0x4 scope:global data:4byte +fontShift = .sbss:0x80137F98; // type:object size:0x4 scope:local data:4byte +DemoNumValidPads = .sbss:0x80137FA0; // type:object size:0x4 scope:global data:4byte +DemoStatEnable = .sbss:0x80137FA8; // type:object size:0x1 scope:global data:byte +DemoStat = .sbss:0x80137FAC; // type:object size:0x4 scope:local data:4byte +DemoStatIndx = .sbss:0x80137FB0; // type:object size:0x4 scope:local data:4byte +DemoStatMaxIndx = .sbss:0x80137FB4; // type:object size:0x4 scope:local data:4byte +DemoStatClocks = .sbss:0x80137FB8; // type:object size:0x4 scope:local data:4byte +DemoStatDisp = .sbss:0x80137FBC; // type:object size:0x4 scope:local data:4byte +topPixIn = .sbss:0x80137FC0; // type:object size:0x4 scope:local data:4byte +topPixOut = .sbss:0x80137FC4; // type:object size:0x4 scope:local data:4byte +botPixIn = .sbss:0x80137FC8; // type:object size:0x4 scope:local data:4byte +botPixOut = .sbss:0x80137FCC; // type:object size:0x4 scope:local data:4byte +clrPixIn = .sbss:0x80137FD0; // type:object size:0x4 scope:local data:4byte +copyClks = .sbss:0x80137FD4; // type:object size:0x4 scope:local data:4byte +vcCheck = .sbss:0x80137FD8; // type:object size:0x4 scope:local data:4byte +vcMiss = .sbss:0x80137FDC; // type:object size:0x4 scope:local data:4byte +vcStall = .sbss:0x80137FE0; // type:object size:0x4 scope:local data:4byte +cpReq = .sbss:0x80137FE4; // type:object size:0x4 scope:local data:4byte +tcReq = .sbss:0x80137FE8; // type:object size:0x4 scope:local data:4byte +cpuRdReq = .sbss:0x80137FEC; // type:object size:0x4 scope:local data:4byte +cpuWrReq = .sbss:0x80137FF0; // type:object size:0x4 scope:local data:4byte +dspReq = .sbss:0x80137FF4; // type:object size:0x4 scope:local data:4byte +ioReq = .sbss:0x80137FF8; // type:object size:0x4 scope:local data:4byte +viReq = .sbss:0x80137FFC; // type:object size:0x4 scope:local data:4byte +peReq = .sbss:0x80138000; // type:object size:0x4 scope:local data:4byte +rfReq = .sbss:0x80138004; // type:object size:0x4 scope:local data:4byte +fiReq = .sbss:0x80138008; // type:object size:0x4 scope:local data:4byte +__AIS_Callback = .sbss:0x80138010; // type:object size:0x4 scope:local data:4byte +__AID_Callback = .sbss:0x80138014; // type:object size:0x4 scope:local data:4byte +__CallbackStack = .sbss:0x80138018; // type:object size:0x4 scope:local data:4byte +__OldStack = .sbss:0x8013801C; // type:object size:0x4 scope:local data:4byte +__AI_init_flag = .sbss:0x80138020; // type:object size:0x4 scope:local data:4byte +__AID_Active = .sbss:0x80138024; // type:object size:0x4 scope:local data:4byte +bound_32KHz = .sbss:0x80138028; // type:object size:0x8 scope:local data:4byte +bound_48KHz = .sbss:0x80138030; // type:object size:0x8 scope:local data:4byte +min_wait = .sbss:0x80138038; // type:object size:0x8 scope:local data:4byte +max_wait = .sbss:0x80138040; // type:object size:0x8 scope:local data:4byte +buffer = .sbss:0x80138048; // type:object size:0x8 scope:local data:4byte +__AR_Callback = .sbss:0x80138050; // type:object size:0x4 scope:local data:4byte +__AR_Size = .sbss:0x80138054; // type:object size:0x4 scope:local data:4byte +__AR_InternalSize = .sbss:0x80138058; // type:object size:0x4 scope:local data:4byte +__AR_ExpansionSize = .sbss:0x8013805C; // type:object size:0x4 scope:local data:4byte +__AR_StackPointer = .sbss:0x80138060; // type:object size:0x4 scope:local data:4byte +__AR_FreeBlocks = .sbss:0x80138064; // type:object size:0x4 scope:local data:4byte +__AR_BlockLength = .sbss:0x80138068; // type:object size:0x4 scope:local data:4byte +__AR_init_flag = .sbss:0x8013806C; // type:object size:0x4 scope:local data:4byte +__DSP_init_flag = .sbss:0x80138070; // type:object size:0x4 scope:local data:4byte +__DSP_rude_task_pending = .sbss:0x80138078; // type:object size:0x4 scope:global data:4byte +__DSP_rude_task = .sbss:0x8013807C; // type:object size:0x4 scope:global data:4byte +__DSP_tmp_task = .sbss:0x80138080; // type:object size:0x4 scope:global data:4byte +__DSP_last_task = .sbss:0x80138084; // type:object size:0x4 scope:global data:4byte +__DSP_first_task = .sbss:0x80138088; // type:object size:0x4 scope:global data:4byte +__DSP_curr_task = .sbss:0x8013808C; // type:object size:0x4 scope:global data:4byte +__CARDEncode = .sbss:0x80138090; // type:object size:0x2 scope:local data:2byte +Ydchuff = .sbss:0x801380A0; // type:object size:0x4 scope:local data:4byte +Udchuff = .sbss:0x801380C0; // type:object size:0x4 scope:local data:4byte +Vdchuff = .sbss:0x801380E0; // type:object size:0x4 scope:local data:4byte +Yachuff = .sbss:0x80138100; // type:object size:0x4 scope:local data:4byte +Uachuff = .sbss:0x80138120; // type:object size:0x4 scope:local data:4byte +Vachuff = .sbss:0x80138140; // type:object size:0x4 scope:local data:4byte +__THPHuffmanBits = .sbss:0x80138144; // type:object size:0x4 scope:local data:4byte +__THPHuffmanSizeTab = .sbss:0x80138148; // type:object size:0x4 scope:local data:4byte +__THPHuffmanCodeTab = .sbss:0x8013814C; // type:object size:0x4 scope:local data:4byte +Gbase = .sbss:0x80138160; // type:object size:0x4 scope:local data:4byte +Gwid = .sbss:0x80138180; // type:object size:0x4 scope:local data:4byte +Gq = .sbss:0x801381A0; // type:object size:0x4 scope:local data:4byte +__THPOldGQR5 = .sbss:0x801381A4; // type:object size:0x4 scope:local data:4byte +__THPOldGQR6 = .sbss:0x801381A8; // type:object size:0x4 scope:local data:4byte +__THPWorkArea = .sbss:0x801381AC; // type:object size:0x4 scope:local data:4byte +__THPInfo = .sbss:0x801381B0; // type:object size:0x4 scope:local data:4byte +__THPInitFlag = .sbss:0x801381B4; // type:object size:0x4 scope:local data:4byte +__global_destructor_chain = .sbss:0x801381B8; // type:object size:0x4 scope:global data:4byte +__aborting = .sbss:0x801381C0; // type:object size:0x4 scope:global data:4byte +atexit_curr_func = .sbss:0x801381C4; // type:object size:0x4 scope:local data:4byte +__atexit_curr_func = .sbss:0x801381C8; // type:object size:0x4 scope:local data:4byte +__stdio_exit = .sbss:0x801381CC; // type:object size:0x4 scope:global data:4byte +__console_exit = .sbss:0x801381D0; // type:object size:0x4 scope:global data:4byte +errno = .sbss:0x801381D8; // type:object size:0x4 scope:global data:4byte +initialized$16 = .sbss:0x801381E0; // type:object size:0x4 scope:local data:4byte +MTRCallback = .sbss:0x801381E8; // type:object size:0x4 scope:local data:4byte +DBGCallback = .sbss:0x801381EC; // type:object size:0x4 scope:local data:4byte +SendMailData = .sbss:0x801381F0; // type:object size:0x4 scope:local data:4byte +RecvDataLeng = .sbss:0x801381F4; // type:object size:0x4 scope:local data:4byte +pEXIInputFlag = .sbss:0x801381F8; // type:object size:0x4 scope:local data:4byte +EXIInputFlag = .sbss:0x801381FC; // type:object size:0x1 scope:local data:byte +D_80135D00 = .sdata2:0x80138200; // type:object size:0x4 scope:global data:4byte +@71 = .sdata2:0x80138204; // type:object size:0x4 scope:local data:float +@72 = .sdata2:0x80138208; // type:object size:0x4 scope:local data:float +@74 = .sdata2:0x80138210; // type:object size:0x8 scope:local data:double +@2 = .sdata2:0x80138218; // type:object size:0x4 scope:local data:4byte +@3 = .sdata2:0x8013821C; // type:object size:0x4 scope:local data:4byte +@4 = .sdata2:0x80138220; // type:object size:0x4 scope:local data:4byte +@743 = .sdata2:0x80138224; // type:object size:0x4 scope:local data:float +@744 = .sdata2:0x80138228; // type:object size:0x4 scope:local data:float +@745 = .sdata2:0x8013822C; // type:object size:0x4 scope:local data:float +@827 = .sdata2:0x80138230; // type:object size:0x4 scope:local data:float +@829 = .sdata2:0x80138238; // type:object size:0x8 scope:local data:double +@883 = .sdata2:0x80138240; // type:object size:0x4 scope:local data:float +@885 = .sdata2:0x80138248; // type:object size:0x8 scope:local data:double +@983 = .sdata2:0x80138250; // type:object size:0x4 scope:local data:float +@984 = .sdata2:0x80138254; // type:object size:0x4 scope:local data:float +@985 = .sdata2:0x80138258; // type:object size:0x4 scope:local data:float +@1734 = .sdata2:0x8013825C; // type:object size:0x4 scope:local data:float +@1735 = .sdata2:0x80138260; // type:object size:0x4 scope:local data:float +@1736 = .sdata2:0x80138264; // type:object size:0x4 scope:local data:float +@1737 = .sdata2:0x80138268; // type:object size:0x4 scope:local data:float +@1738 = .sdata2:0x8013826C; // type:object size:0x4 scope:local data:float +@48 = .sdata2:0x80138270; // type:object size:0x4 scope:local data:float +@271 = .sdata2:0x80138274; // type:object size:0x4 scope:local data:float +@4 = .sdata2:0x80138278; // type:object size:0x8 scope:local data:4byte +@7 = .sdata2:0x80138280; // type:object size:0x4 scope:local data:4byte +@10 = .sdata2:0x80138284; // type:object size:0x4 scope:local data:4byte +@13 = .sdata2:0x80138288; // type:object size:0x4 scope:local data:4byte +@32 = .sdata2:0x8013828C; // type:object size:0x4 scope:local data:float +@33 = .sdata2:0x80138290; // type:object size:0x4 scope:local data:float +@34 = .sdata2:0x80138294; // type:object size:0x4 scope:local data:float +@36 = .sdata2:0x80138298; // type:object size:0x8 scope:local data:double +@2 = .sdata2:0x801382A0; // type:object size:0x4 scope:local data:4byte +@3 = .sdata2:0x801382A4; // type:object size:0x4 scope:local data:4byte +@4 = .sdata2:0x801382A8; // type:object size:0x4 scope:local data:4byte +@160 = .sdata2:0x801382AC; // type:object size:0x4 scope:local data:float +@162 = .sdata2:0x801382B0; // type:object size:0x8 scope:local data:double +@262 = .sdata2:0x801382B8; // type:object size:0x4 scope:local data:float +@263 = .sdata2:0x801382BC; // type:object size:0x4 scope:local data:float +@264 = .sdata2:0x801382C0; // type:object size:0x4 scope:local data:float +@265 = .sdata2:0x801382C4; // type:object size:0x4 scope:local data:float +@266 = .sdata2:0x801382C8; // type:object size:0x4 scope:local data:float +@267 = .sdata2:0x801382CC; // type:object size:0x4 scope:local data:float +@268 = .sdata2:0x801382D0; // type:object size:0x4 scope:local data:float +@269 = .sdata2:0x801382D4; // type:object size:0x4 scope:local data:float +@387 = .sdata2:0x801382D8; // type:object size:0x4 scope:local data:float +@388 = .sdata2:0x801382DC; // type:object size:0x4 scope:local data:float +@389 = .sdata2:0x801382E0; // type:object size:0x4 scope:local data:float +@390 = .sdata2:0x801382E8; // type:object size:0x8 scope:local data:double +@392 = .sdata2:0x801382F0; // type:object size:0x8 scope:local data:double +@642 = .sdata2:0x801382F8; // type:object size:0x4 scope:local data:float +@2783 = .sdata2:0x80138300; // type:object size:0x4 scope:local data:float +@2848 = .sdata2:0x80138304; // type:object size:0x4 scope:local data:float +@2849 = .sdata2:0x80138308; // type:object size:0x4 scope:local data:float +@2851 = .sdata2:0x80138310; // type:object size:0x8 scope:local data:double +@2909 = .sdata2:0x80138318; // type:object size:0x4 scope:local data:float +@2910 = .sdata2:0x8013831C; // type:object size:0x4 scope:local data:float +@2911 = .sdata2:0x80138320; // type:object size:0x4 scope:local data:float +@2912 = .sdata2:0x80138324; // type:object size:0x4 scope:local data:float +@2914 = .sdata2:0x80138328; // type:object size:0x8 scope:local data:double +@3235 = .sdata2:0x80138330; // type:object size:0x4 scope:local data:float +@3236 = .sdata2:0x80138334; // type:object size:0x4 scope:local data:float +@3237 = .sdata2:0x80138338; // type:object size:0x4 scope:local data:float +@3238 = .sdata2:0x80138340; // type:object size:0x8 scope:local data:double +@3239 = .sdata2:0x80138348; // type:object size:0x8 scope:local data:double +@3240 = .sdata2:0x80138350; // type:object size:0x4 scope:local data:float +@3241 = .sdata2:0x80138354; // type:object size:0x4 scope:local data:float +@3401 = .sdata2:0x80138358; // type:object size:0x4 scope:local data:float +@3402 = .sdata2:0x8013835C; // type:object size:0x4 scope:local data:float +@3551 = .sdata2:0x80138360; // type:object size:0x4 scope:local data:float +@3552 = .sdata2:0x80138364; // type:object size:0x4 scope:local data:float +@3553 = .sdata2:0x80138368; // type:object size:0x4 scope:local data:float +@3554 = .sdata2:0x8013836C; // type:object size:0x4 scope:local data:float +@3575 = .sdata2:0x80138370; // type:object size:0x8 scope:local data:double +@3576 = .sdata2:0x80138378; // type:object size:0x8 scope:local data:double +@4417 = .sdata2:0x80138380; // type:object size:0x4 scope:local data:float +@4418 = .sdata2:0x80138384; // type:object size:0x4 scope:local data:float +@4419 = .sdata2:0x80138388; // type:object size:0x4 scope:local data:float +@4420 = .sdata2:0x8013838C; // type:object size:0x4 scope:local data:float +@4421 = .sdata2:0x80138390; // type:object size:0x4 scope:local data:float +@4449 = .sdata2:0x80138394; // type:object size:0x4 scope:local data:float +@4450 = .sdata2:0x80138398; // type:object size:0x4 scope:local data:float +@4451 = .sdata2:0x8013839C; // type:object size:0x4 scope:local data:float +@4452 = .sdata2:0x801383A0; // type:object size:0x4 scope:local data:float +@4600 = .sdata2:0x801383A4; // type:object size:0x4 scope:local data:float +@4601 = .sdata2:0x801383A8; // type:object size:0x4 scope:local data:float +@4602 = .sdata2:0x801383AC; // type:object size:0x4 scope:local data:float +@4962 = .sdata2:0x801383B0; // type:object size:0x4 scope:local data:float +@5270 = .sdata2:0x801383B4; // type:object size:0x4 scope:local data:float +@5271 = .sdata2:0x801383B8; // type:object size:0x4 scope:local data:float +@5272 = .sdata2:0x801383BC; // type:object size:0x4 scope:local data:float +@5273 = .sdata2:0x801383C0; // type:object size:0x4 scope:local data:float +@5274 = .sdata2:0x801383C4; // type:object size:0x4 scope:local data:float +@6104 = .sdata2:0x801383C8; // type:object size:0x4 scope:local data:float +@6254 = .sdata2:0x801383CC; // type:object size:0x4 scope:local data:float +@6255 = .sdata2:0x801383D0; // type:object size:0x4 scope:local data:float +@6256 = .sdata2:0x801383D4; // type:object size:0x4 scope:local data:float +@6257 = .sdata2:0x801383D8; // type:object size:0x4 scope:local data:float +@6258 = .sdata2:0x801383DC; // type:object size:0x4 scope:local data:float +@6259 = .sdata2:0x801383E0; // type:object size:0x4 scope:local data:float +@6274 = .sdata2:0x801383E4; // type:object size:0x4 scope:local data:float +@7124 = .sdata2:0x801383E8; // type:object size:0x4 scope:local data:float +@7125 = .sdata2:0x801383EC; // type:object size:0x4 scope:local data:float +@7126 = .sdata2:0x801383F0; // type:object size:0x4 scope:local data:float +@7127 = .sdata2:0x801383F4; // type:object size:0x4 scope:local data:float +@7128 = .sdata2:0x801383F8; // type:object size:0x4 scope:local data:float +@7129 = .sdata2:0x801383FC; // type:object size:0x4 scope:local data:float +@7130 = .sdata2:0x80138400; // type:object size:0x4 scope:local data:float +@7131 = .sdata2:0x80138404; // type:object size:0x4 scope:local data:float +@7132 = .sdata2:0x80138408; // type:object size:0x4 scope:local data:float +@7133 = .sdata2:0x8013840C; // type:object size:0x4 scope:local data:float +@7134 = .sdata2:0x80138410; // type:object size:0x4 scope:local data:float +@7135 = .sdata2:0x80138414; // type:object size:0x4 scope:local data:float +@7136 = .sdata2:0x80138418; // type:object size:0x4 scope:local data:float +@7137 = .sdata2:0x8013841C; // type:object size:0x4 scope:local data:float +@7138 = .sdata2:0x80138420; // type:object size:0x4 scope:local data:float +@7139 = .sdata2:0x80138424; // type:object size:0x4 scope:local data:float +@7140 = .sdata2:0x80138428; // type:object size:0x4 scope:local data:float +@7141 = .sdata2:0x8013842C; // type:object size:0x4 scope:local data:float +@7201 = .sdata2:0x80138430; // type:object size:0x4 scope:local data:float +@7202 = .sdata2:0x80138434; // type:object size:0x4 scope:local data:float +@7203 = .sdata2:0x80138438; // type:object size:0x4 scope:local data:float +@7204 = .sdata2:0x8013843C; // type:object size:0x4 scope:local data:float +@7205 = .sdata2:0x80138440; // type:object size:0x4 scope:local data:float +@7206 = .sdata2:0x80138444; // type:object size:0x4 scope:local data:float +@7207 = .sdata2:0x80138448; // type:object size:0x4 scope:local data:float +@7208 = .sdata2:0x8013844C; // type:object size:0x4 scope:local data:float +@7209 = .sdata2:0x80138450; // type:object size:0x4 scope:local data:float +@7210 = .sdata2:0x80138454; // type:object size:0x4 scope:local data:float +@7211 = .sdata2:0x80138458; // type:object size:0x4 scope:local data:float +@7212 = .sdata2:0x8013845C; // type:object size:0x4 scope:local data:float +@7213 = .sdata2:0x80138460; // type:object size:0x4 scope:local data:float +@7214 = .sdata2:0x80138464; // type:object size:0x4 scope:local data:float +@7215 = .sdata2:0x80138468; // type:object size:0x4 scope:local data:float +@7216 = .sdata2:0x8013846C; // type:object size:0x4 scope:local data:float +@7217 = .sdata2:0x80138470; // type:object size:0x4 scope:local data:float +@7218 = .sdata2:0x80138474; // type:object size:0x4 scope:local data:float +@7219 = .sdata2:0x80138478; // type:object size:0x4 scope:local data:float +@7220 = .sdata2:0x8013847C; // type:object size:0x4 scope:local data:float +@7221 = .sdata2:0x80138480; // type:object size:0x4 scope:local data:float +@7222 = .sdata2:0x80138488; // type:object size:0x8 scope:local data:double +@1680 = .sdata2:0x80138490; // type:object size:0x4 scope:local data:float +@1697 = .sdata2:0x80138494; // type:object size:0x4 scope:local data:float +@1770 = .sdata2:0x80138498; // type:object size:0x8 scope:local data:double +@13389 = .sdata2:0x801384A0; // type:object size:0x8 scope:local data:double +@15131 = .sdata2:0x801384A8; // type:object size:0x8 scope:local data:double +@15132 = .sdata2:0x801384B0; // type:object size:0x8 scope:local data:double +@15133 = .sdata2:0x801384B8; // type:object size:0x4 scope:local data:float +@15144 = .sdata2:0x801384C0; // type:object size:0x8 scope:local data:double +@15374 = .sdata2:0x801384C8; // type:object size:0x8 scope:local data:double +@849 = .sdata2:0x801384D0; // type:object size:0x4 scope:local data:float +@851 = .sdata2:0x801384D8; // type:object size:0x8 scope:local data:double +@853 = .sdata2:0x801384E0; // type:object size:0x8 scope:local data:double +@1084 = .sdata2:0x801384E8; // type:object size:0x4 scope:local data:float +@1085 = .sdata2:0x801384EC; // type:object size:0x4 scope:local data:float +@1086 = .sdata2:0x801384F0; // type:object size:0x4 scope:local data:float +@1087 = .sdata2:0x801384F4; // type:object size:0x4 scope:local data:float +@1088 = .sdata2:0x801384F8; // type:object size:0x4 scope:local data:float +@1089 = .sdata2:0x801384FC; // type:object size:0x4 scope:local data:float +@1090 = .sdata2:0x80138500; // type:object size:0x4 scope:local data:float +@732 = .sdata2:0x80138508; // type:object size:0x4 scope:local data:float +@733 = .sdata2:0x8013850C; // type:object size:0x4 scope:local data:float +@734 = .sdata2:0x80138510; // type:object size:0x4 scope:local data:float +@735 = .sdata2:0x80138514; // type:object size:0x4 scope:local data:float +@736 = .sdata2:0x80138518; // type:object size:0x4 scope:local data:float +@737 = .sdata2:0x8013851C; // type:object size:0x4 scope:local data:float +@738 = .sdata2:0x80138520; // type:object size:0x4 scope:local data:float +@741 = .sdata2:0x80138528; // type:object size:0x8 scope:local data:double +@743 = .sdata2:0x80138530; // type:object size:0x8 scope:local data:double +@6241 = .sdata2:0x80138538; // type:object size:0x4 scope:local data:float +@6242 = .sdata2:0x8013853C; // type:object size:0x4 scope:local data:float +@6243 = .sdata2:0x80138540; // type:object size:0x4 scope:local data:float +@6245 = .sdata2:0x80138548; // type:object size:0x8 scope:local data:double +@6248 = .sdata2:0x80138550; // type:object size:0x8 scope:local data:double +@6797 = .sdata2:0x80138558; // type:object size:0x4 scope:local data:float +@6798 = .sdata2:0x8013855C; // type:object size:0x4 scope:local data:float +@6799 = .sdata2:0x80138560; // type:object size:0x4 scope:local data:float +@6800 = .sdata2:0x80138564; // type:object size:0x4 scope:local data:float +@6801 = .sdata2:0x80138568; // type:object size:0x4 scope:local data:float +@6811 = .sdata2:0x8013856C; // type:object size:0x4 scope:local data:float +@7226 = .sdata2:0x80138570; // type:object size:0x4 scope:local data:float +@14927 = .sdata2:0x80138574; // type:object size:0x4 scope:local data:float +@1384 = .sdata2:0x80138578; // type:object size:0x4 scope:local data:float +@1385 = .sdata2:0x8013857C; // type:object size:0x4 scope:local data:float +@1387 = .sdata2:0x80138580; // type:object size:0x8 scope:local data:double +@1460 = .sdata2:0x80138588; // type:object size:0x4 scope:local data:float +@1461 = .sdata2:0x80138590; // type:object size:0x8 scope:local data:double +@1462 = .sdata2:0x80138598; // type:object size:0x8 scope:local data:double +@1463 = .sdata2:0x801385A0; // type:object size:0x4 scope:local data:float +@1464 = .sdata2:0x801385A4; // type:object size:0x4 scope:local data:float +@1465 = .sdata2:0x801385A8; // type:object size:0x4 scope:local data:float +@1466 = .sdata2:0x801385AC; // type:object size:0x4 scope:local data:float +@1467 = .sdata2:0x801385B0; // type:object size:0x4 scope:local data:float +@1651 = .sdata2:0x801385B8; // type:object size:0x8 scope:local data:double +@1652 = .sdata2:0x801385C0; // type:object size:0x4 scope:local data:float +@1654 = .sdata2:0x801385C8; // type:object size:0x8 scope:local data:double +@2045 = .sdata2:0x801385D0; // type:object size:0x4 scope:local data:float +@2099 = .sdata2:0x801385D4; // type:object size:0x4 scope:local data:float +@185 = .sdata2:0x801385D8; // type:object size:0x8 scope:local data:4byte +@96 = .sdata2:0x801385E0; // type:object size:0x4 scope:local data:float +@97 = .sdata2:0x801385E4; // type:object size:0x4 scope:local data:float +@99 = .sdata2:0x801385E8; // type:object size:0x4 scope:local data:float +@100 = .sdata2:0x801385EC; // type:object size:0x4 scope:local data:float +@101 = .sdata2:0x801385F0; // type:object size:0x4 scope:local data:float +@102 = .sdata2:0x801385F4; // type:object size:0x4 scope:local data:float +@105 = .sdata2:0x801385F8; // type:object size:0x4 scope:local data:float +@106 = .sdata2:0x801385FC; // type:object size:0x4 scope:local data:float +__GXData = .sdata2:0x80138600; // type:object size:0x4 scope:global data:4byte +@289 = .sdata2:0x80138604; // type:object size:0x4 scope:local data:float +@290 = .sdata2:0x80138608; // type:object size:0x4 scope:local data:float +@291 = .sdata2:0x8013860C; // type:object size:0x4 scope:local data:4byte +@292 = .sdata2:0x80138610; // type:object size:0x4 scope:local data:4byte +@293 = .sdata2:0x80138614; // type:object size:0x4 scope:local data:4byte +@353 = .sdata2:0x80138618; // type:object size:0x4 scope:local data:float +@354 = .sdata2:0x8013861C; // type:object size:0x4 scope:local data:float +@356 = .sdata2:0x80138620; // type:object size:0x8 scope:local data:double +@179 = .sdata2:0x80138628; // type:object size:0x4 scope:local data:float +@234 = .sdata2:0x80138630; // type:object size:0x8 scope:local data:double +@220 = .sdata2:0x80138638; // type:object size:0x4 scope:local data:float +@222 = .sdata2:0x80138640; // type:object size:0x8 scope:local data:double +@288 = .sdata2:0x80138648; // type:object size:0x4 scope:local data:float +@289 = .sdata2:0x8013864C; // type:object size:0x4 scope:local data:float +@290 = .sdata2:0x80138650; // type:object size:0x4 scope:local data:float +@291 = .sdata2:0x80138654; // type:object size:0x4 scope:local data:float +@292 = .sdata2:0x80138658; // type:object size:0x4 scope:local data:float +@293 = .sdata2:0x8013865C; // type:object size:0x4 scope:local data:float +@221 = .sdata2:0x80138660; // type:object size:0x4 scope:local data:float +@222 = .sdata2:0x80138664; // type:object size:0x4 scope:local data:float +@223 = .sdata2:0x80138668; // type:object size:0x4 scope:local data:float +@224 = .sdata2:0x80138670; // type:object size:0x8 scope:local data:double +@225 = .sdata2:0x80138678; // type:object size:0x4 scope:local data:float +@226 = .sdata2:0x80138680; // type:object size:0x8 scope:local data:double +@227 = .sdata2:0x80138688; // type:object size:0x4 scope:local data:float +@229 = .sdata2:0x80138690; // type:object size:0x8 scope:local data:double +@252 = .sdata2:0x80138698; // type:object size:0x8 scope:local data:double +@253 = .sdata2:0x801386A0; // type:object size:0x4 scope:local data:float +@254 = .sdata2:0x801386A8; // type:object size:0x8 scope:local data:double +@255 = .sdata2:0x801386B0; // type:object size:0x4 scope:local data:float +@257 = .sdata2:0x801386B8; // type:object size:0x8 scope:local data:double +@26 = .sdata2:0x801386C0; // type:object size:0x4 scope:local data:float +@28 = .sdata2:0x801386C4; // type:object size:0x4 scope:local data:float +@201 = .sdata2:0x801386C8; // type:object size:0x4 scope:local data:float +@41 = .sdata2:0x801386D0; // type:object size:0x4 scope:local data:float +@42 = .sdata2:0x801386D4; // type:object size:0x4 scope:local data:float +@44 = .sdata2:0x801386D8; // type:object size:0x8 scope:local data:double +@21 = .sdata2:0x801386E0; // type:object size:0x4 scope:local data:float +@22 = .sdata2:0x801386E4; // type:object size:0x4 scope:local data:float +@24 = .sdata2:0x801386E8; // type:object size:0x8 scope:local data:double +@31 = .sdata2:0x801386F0; // type:object size:0x4 scope:local data:float +@33 = .sdata2:0x801386F8; // type:object size:0x8 scope:local data:double +@55 = .sdata2:0x80138700; // type:object size:0x4 scope:local data:float +@159 = .sdata2:0x80138708; // type:object size:0x4 scope:local data:float +@167 = .sdata2:0x80138710; // type:object size:0x8 scope:local data:double +@244 = .sdata2:0x80138718; // type:object size:0x8 scope:local data:double +@666 = .sdata2:0x80138720; // type:object size:0x4 scope:local data:float +@667 = .sdata2:0x80138724; // type:object size:0x4 scope:local data:float +@668 = .sdata2:0x80138728; // type:object size:0x4 scope:local data:float +@669 = .sdata2:0x8013872C; // type:object size:0x4 scope:local data:float +@670 = .sdata2:0x80138730; // type:object size:0x4 scope:local data:float +@55 = .sdata2:0x80138738; // type:object size:0x8 scope:local data:double +@268 = .sdata2:0x80138740; // type:object size:0x8 scope:local data:double +@270 = .sdata2:0x80138748; // type:object size:0x8 scope:local data:double +@272 = .sdata2:0x80138750; // type:object size:0x8 scope:local data:double +@362 = .sdata2:0x80138758; // type:object size:0x8 scope:local data:double +@363 = .sdata2:0x80138760; // type:object size:0x8 scope:local data:double +@919 = .sdata2:0x80138768; // type:object size:0x8 scope:local data:double +@375 = .sdata2:0x80138770; // type:object size:0x8 scope:local data:double +@376 = .sdata2:0x80138778; // type:object size:0x8 scope:local data:double +@377 = .sdata2:0x80138780; // type:object size:0x8 scope:local data:double +@378 = .sdata2:0x80138788; // type:object size:0x8 scope:local data:double +@379 = .sdata2:0x80138790; // type:object size:0x8 scope:local data:double +@380 = .sdata2:0x80138798; // type:object size:0x8 scope:local data:double +@381 = .sdata2:0x801387A0; // type:object size:0x8 scope:local data:double +@382 = .sdata2:0x801387A8; // type:object size:0x8 scope:local data:double +@383 = .sdata2:0x801387B0; // type:object size:0x8 scope:local data:double +@384 = .sdata2:0x801387B8; // type:object size:0x8 scope:local data:double +@385 = .sdata2:0x801387C0; // type:object size:0x8 scope:local data:double +@386 = .sdata2:0x801387C8; // type:object size:0x8 scope:local data:double +@387 = .sdata2:0x801387D0; // type:object size:0x8 scope:local data:double +@388 = .sdata2:0x801387D8; // type:object size:0x8 scope:local data:double +@389 = .sdata2:0x801387E0; // type:object size:0x8 scope:local data:double +@390 = .sdata2:0x801387E8; // type:object size:0x8 scope:local data:double +@391 = .sdata2:0x801387F0; // type:object size:0x8 scope:local data:double +@392 = .sdata2:0x801387F8; // type:object size:0x8 scope:local data:double +@393 = .sdata2:0x80138800; // type:object size:0x8 scope:local data:double +@394 = .sdata2:0x80138808; // type:object size:0x8 scope:local data:double +@395 = .sdata2:0x80138810; // type:object size:0x8 scope:local data:double +@396 = .sdata2:0x80138818; // type:object size:0x8 scope:local data:double +@397 = .sdata2:0x80138820; // type:object size:0x8 scope:local data:double +@398 = .sdata2:0x80138828; // type:object size:0x8 scope:local data:double +@399 = .sdata2:0x80138830; // type:object size:0x8 scope:local data:double +@400 = .sdata2:0x80138838; // type:object size:0x8 scope:local data:double +@401 = .sdata2:0x80138840; // type:object size:0x8 scope:local data:double +@402 = .sdata2:0x80138848; // type:object size:0x8 scope:local data:double +@403 = .sdata2:0x80138850; // type:object size:0x8 scope:local data:double +@404 = .sdata2:0x80138858; // type:object size:0x8 scope:local data:double +@405 = .sdata2:0x80138860; // type:object size:0x8 scope:local data:double +@406 = .sdata2:0x80138868; // type:object size:0x8 scope:local data:double +@407 = .sdata2:0x80138870; // type:object size:0x8 scope:local data:double +@409 = .sdata2:0x80138878; // type:object size:0x8 scope:local data:double +@166 = .sdata2:0x80138880; // type:object size:0x8 scope:local data:double +@167 = .sdata2:0x80138888; // type:object size:0x8 scope:local data:double +@166 = .sdata2:0x80138890; // type:object size:0x8 scope:local data:double +@167 = .sdata2:0x80138898; // type:object size:0x8 scope:local data:double +@100 = .sdata2:0x801388A0; // type:object size:0x8 scope:local data:double +@131 = .sdata2:0x801388A8; // type:object size:0x8 scope:local data:double +@132 = .sdata2:0x801388B0; // type:object size:0x8 scope:local data:double +@133 = .sdata2:0x801388B8; // type:object size:0x8 scope:local data:double +@134 = .sdata2:0x801388C0; // type:object size:0x8 scope:local data:double +@135 = .sdata2:0x801388C8; // type:object size:0x8 scope:local data:double +@128 = .sdata2:0x801388D0; // type:object size:0x4 scope:local data:float +@129 = .sdata2:0x801388D4; // type:object size:0x4 scope:local data:float +@130 = .sdata2:0x801388D8; // type:object size:0x4 scope:local data:float +@131 = .sdata2:0x801388DC; // type:object size:0x4 scope:local data:float +@132 = .sdata2:0x801388E0; // type:object size:0x4 scope:local data:float +@133 = .sdata2:0x801388E4; // type:object size:0x4 scope:local data:float +@135 = .sdata2:0x801388E8; // type:object size:0x8 scope:local data:double +@106 = .sdata2:0x801388F0; // type:object size:0x4 scope:local data:float +@107 = .sdata2:0x801388F4; // type:object size:0x4 scope:local data:float +@108 = .sdata2:0x801388F8; // type:object size:0x4 scope:local data:float +@110 = .sdata2:0x80138900; // type:object size:0x8 scope:local data:double +@106 = .sdata2:0x80138908; // type:object size:0x8 scope:local data:double +@107 = .sdata2:0x80138910; // type:object size:0x8 scope:local data:double +@108 = .sdata2:0x80138918; // type:object size:0x8 scope:local data:double diff --git a/configure.py b/configure.py new file mode 100755 index 0000000..846cfd1 --- /dev/null +++ b/configure.py @@ -0,0 +1,520 @@ +#!/usr/bin/env python3 + +### +# Generates build files for the project. +# This file also includes the project configuration, +# such as compiler flags and the object NonMatching status. +# +# Usage: +# python3 configure.py +# ninja +# +# Append --help to see available options. +### + +import argparse +import sys +from pathlib import Path +from typing import Any, Dict, List + +from tools.project import ( + Object, + ProjectConfig, + calculate_progress, + generate_build, + is_windows, +) + +### Script's arguments + +parser = argparse.ArgumentParser() +parser.add_argument( + "mode", + choices=["configure", "progress"], + default="configure", + help="script mode (default: configure)", + nargs="?", +) +parser.add_argument( + "--non-matching", + action="store_true", + help="create non-matching build for modding", +) +parser.add_argument( + "--build-dir", + metavar="DIR", + type=Path, + default=Path("build"), + help="base build directory (default: build)", +) +parser.add_argument( + "--binutils", + metavar="BINARY", + type=Path, + help="path to binutils (optional)", +) +parser.add_argument( + "--compilers", + metavar="DIR", + type=Path, + help="path to compilers (optional)", +) +parser.add_argument( + "--map", + action="store_true", + help="generate map file(s)", + default=True, +) +parser.add_argument( + "--no-asm", + action="store_true", + help="don't incorporate .s files from asm directory", +) +if not is_windows(): + parser.add_argument( + "--wrapper", + metavar="BINARY", + type=Path, + help="path to wibo or wine (optional)", + ) +parser.add_argument( + "--dtk", + metavar="BINARY | DIR", + type=Path, + help="path to decomp-toolkit binary or source (optional)", +) +parser.add_argument( + "--sjiswrap", + metavar="EXE", + type=Path, + help="path to sjiswrap.exe (optional)", +) +parser.add_argument( + "--progress-version", + metavar="VERSION", + help="version to print progress for", +) + +args = parser.parse_args() + +### Project configuration + +config = ProjectConfig() +config.versions = [ + "ce-j", + "ce-u", +] +config.default_version = "ce-j" +config.warn_missing_config = True +config.warn_missing_source = False +config.progress_all = False + +config.build_dir = args.build_dir +config.dtk_path = args.dtk +config.binutils_path = args.binutils +config.compilers_path = args.compilers +config.generate_map = args.map +config.sjiswrap_path = args.sjiswrap +config.non_matching = args.non_matching + +if not is_windows(): + config.wrapper = args.wrapper + +if args.no_asm: + config.asm_dir = None + +### Tool versions + +config.binutils_tag = "2.42-1" +config.compilers_tag = "20231018" +config.dtk_tag = "v0.8.3" +config.sjiswrap_tag = "v1.1.1" +config.wibo_tag = "0.6.11" +config.linker_version = "GC/1.1" + +### Flags + +config.asflags = [ + "-mgekko", + "-I include", + "-I libc", +] + +config.ldflags = [ + "-fp hardware", + "-nodefaults", + "-warn off", +] + +cflags_base = [ + "-Cpp_exceptions off", + "-proc gekko", + "-fp hardware", + "-fp_contract on", + "-enum int", + "-align powerpc", + "-nosyspath", + "-RTTI off", + "-str reuse", + "-multibyte", + "-O4,p", + "-inline auto", + "-nodefaults", + "-msgstyle gcc", + "-sym on", + "-i include", + "-i libc", + # TODO: remove and use VERSION instead + "-DDOLPHIN_REV=2003", +] + +if config.non_matching: + cflags_base.append("-DNON_MATCHING") + +### Helper functions + +def EmulatorLib(lib_name: str, objects: List[Object]) -> Dict[str, Any]: + return { + "lib": lib_name, + "mw_version": "GC/1.1", + "cflags": [*cflags_base, "-inline deferred"], + "host": False, + "objects": objects, + } + +def DolphinLib(lib_name: str, objects: List[Object]) -> Dict[str, Any]: + return { + "lib": lib_name, + "mw_version": "GC/1.2.5n", + "cflags": cflags_base, + "host": False, + "objects": objects, + } + +def GenericLib(lib_name: str, objects: List[Object]) -> Dict[str, Any]: + return { + "lib": lib_name, + "mw_version": "GC/1.3.2", + "cflags": cflags_base, + "host": False, + "objects": objects, + } + +### Link order + +# Not matching for any version +NonMatching = {} + +# Matching for all versions +Matching = config.versions + +# Matching for specific versions +def MatchingFor(*versions): + return versions + +config.libs = [ + EmulatorLib( + "emulator", + [ + Object(MatchingFor("ce-j", "ce-u"), "emulator/xlCoreGCN.c"), + Object(MatchingFor("ce-j", "ce-u"), "emulator/xlPostGCN.c"), + Object(MatchingFor("ce-j", "ce-u"), "emulator/xlFileGCN.c"), + Object(MatchingFor("ce-j", "ce-u"), "emulator/xlList.c"), + Object(MatchingFor("ce-j", "ce-u"), "emulator/xlHeap.c"), + Object(MatchingFor("ce-j", "ce-u"), "emulator/xlObject.c"), + Object(MatchingFor("ce-j", "ce-u"), "emulator/simGCN.c"), + Object(MatchingFor("ce-j", "ce-u"), "emulator/movie.c"), + # THP files except for THPRead.c do not have -inline deferred + Object(MatchingFor("ce-j", "ce-u"), "emulator/THPPlayer.c", cflags=cflags_base), + Object(MatchingFor("ce-j", "ce-u"), "emulator/THPAudioDecode.c", cflags=cflags_base), + Object(MatchingFor("ce-j", "ce-u"), "emulator/THPDraw.c", cflags=cflags_base), + Object(MatchingFor("ce-j", "ce-u"), "emulator/THPRead.c"), + Object(MatchingFor("ce-j", "ce-u"), "emulator/THPVideoDecode.c", cflags=cflags_base), + Object(MatchingFor("ce-j"), "emulator/mcardGCN.c", asm_processor=True), + Object(MatchingFor("ce-j", "ce-u"), "emulator/codeGCN.c"), + Object(MatchingFor("ce-j", "ce-u"), "emulator/soundGCN.c"), + Object(MatchingFor("ce-j"), "emulator/frame.c", asm_processor=True), + Object(MatchingFor("ce-j", "ce-u"), "emulator/system.c"), + Object(MatchingFor("ce-j"), "emulator/cpu.c", asm_processor=True), + Object(MatchingFor("ce-j", "ce-u"), "emulator/pif.c"), + Object(MatchingFor("ce-j", "ce-u"), "emulator/ram.c"), + Object(MatchingFor("ce-j", "ce-u"), "emulator/rom.c"), + Object(MatchingFor("ce-j", "ce-u"), "emulator/rdp.c"), + Object(MatchingFor("ce-j", "ce-u"), "emulator/rdb.c"), + Object(MatchingFor("ce-j"), "emulator/rsp.c", asm_processor=True), + Object(MatchingFor("ce-j", "ce-u"), "emulator/mips.c"), + Object(MatchingFor("ce-j", "ce-u"), "emulator/disk.c"), + Object(MatchingFor("ce-j", "ce-u"), "emulator/flash.c"), + Object(MatchingFor("ce-j", "ce-u"), "emulator/sram.c"), + Object(MatchingFor("ce-j", "ce-u"), "emulator/audio.c"), + Object(MatchingFor("ce-j", "ce-u"), "emulator/video.c"), + Object(MatchingFor("ce-j", "ce-u"), "emulator/serial.c"), + Object(MatchingFor("ce-j", "ce-u"), "emulator/library.c"), + Object(MatchingFor("ce-j", "ce-u"), "emulator/peripheral.c"), + Object(MatchingFor("ce-j"), "emulator/_frameGCNcc.c", asm_processor=True), + Object(MatchingFor("ce-j"), "emulator/_buildtev.c", asm_processor=True), + ], + ), + DolphinLib( + "base", + [ + Object(NonMatching, "dolphin/base/PPCArch.c"), + ], + ), + DolphinLib( + "os", + [ + Object(MatchingFor("ce-j"), "dolphin/os/OS.c"), + Object(MatchingFor("ce-j"), "dolphin/os/OSAlarm.c"), + Object(MatchingFor("ce-j"), "dolphin/os/OSAlloc.c"), + Object(MatchingFor("ce-j"), "dolphin/os/OSArena.c"), + Object(MatchingFor("ce-j"), "dolphin/os/OSAudioSystem.c"), + Object(MatchingFor("ce-j"), "dolphin/os/OSCache.c"), + Object(MatchingFor("ce-j"), "dolphin/os/OSContext.c"), + Object(MatchingFor("ce-j"), "dolphin/os/OSError.c"), + Object(MatchingFor("ce-j"), "dolphin/os/OSFont.c"), + Object(MatchingFor("ce-j"), "dolphin/os/OSInterrupt.c"), + Object(MatchingFor("ce-j"), "dolphin/os/OSLink.c"), + Object(MatchingFor("ce-j"), "dolphin/os/OSMessage.c"), + Object(MatchingFor("ce-j"), "dolphin/os/OSMemory.c"), + Object(MatchingFor("ce-j"), "dolphin/os/OSMutex.c"), + Object(MatchingFor("ce-j"), "dolphin/os/OSReboot.c"), + Object(MatchingFor("ce-j"), "dolphin/os/OSReset.c"), + Object(MatchingFor("ce-j"), "dolphin/os/OSResetSW.c"), + Object(MatchingFor("ce-j"), "dolphin/os/OSRtc.c"), + Object(MatchingFor("ce-j"), "dolphin/os/OSSync.c"), + Object(MatchingFor("ce-j"), "dolphin/os/OSThread.c"), + Object(MatchingFor("ce-j"), "dolphin/os/OSTime.c"), + Object(MatchingFor("ce-j"), "dolphin/os/__start.c"), + Object(MatchingFor("ce-j"), "dolphin/os/__ppc_eabi_init.c"), + ], + ), + DolphinLib( + "exi", + [ + Object(NonMatching, "dolphin/exi/EXIBios.c"), + Object(NonMatching, "dolphin/exi/EXIUart.c"), + ], + ), + DolphinLib( + "si", + [ + Object(NonMatching, "dolphin/si/SIBios.c"), + Object(NonMatching, "dolphin/si/SISamplingRate.c"), + ], + ), + DolphinLib( + "vi", + [ + Object(NonMatching, "dolphin/vi/vi.c"), + ], + ), + DolphinLib( + "db", + [ + Object(NonMatching, "dolphin/db/db.c"), + ], + ), + DolphinLib( + "mtx", + [ + Object(NonMatching, "dolphin/mtx/mtx.c", extra_cflags=["-fp_contract off"]), + Object(NonMatching, "dolphin/mtx/mtxvec.c"), + Object(NonMatching, "dolphin/mtx/mtx44.c"), + ], + ), + DolphinLib( + "gx", + [ + Object(NonMatching, "dolphin/gx/GXInit.c"), + Object(NonMatching, "dolphin/gx/GXFifo.c"), + Object(NonMatching, "dolphin/gx/GXAttr.c"), + Object(NonMatching, "dolphin/gx/GXMisc.c"), + Object(NonMatching, "dolphin/gx/GXGeometry.c"), + Object(NonMatching, "dolphin/gx/GXFrameBuf.c"), + Object(NonMatching, "dolphin/gx/GXLight.c"), + Object(NonMatching, "dolphin/gx/GXTexture.c"), + Object(NonMatching, "dolphin/gx/GXBump.c"), + Object(NonMatching, "dolphin/gx/GXTev.c"), + Object(NonMatching, "dolphin/gx/GXPixel.c"), + Object(NonMatching, "dolphin/gx/GXTransform.c"), + Object(NonMatching, "dolphin/gx/GXPerf.c"), + ], + ), + DolphinLib( + "pad", + [ + Object(NonMatching, "dolphin/pad/Padclamp.c"), + Object(NonMatching, "dolphin/pad/Pad.c"), + ], + ), + DolphinLib( + "dvd", + [ + Object(NonMatching, "dolphin/dvd/dvdlow.c"), + Object(NonMatching, "dolphin/dvd/dvdfs.c"), + Object(NonMatching, "dolphin/dvd/dvd.c"), + Object(NonMatching, "dolphin/dvd/dvdqueue.c"), + Object(NonMatching, "dolphin/dvd/dvderror.c"), + Object(NonMatching, "dolphin/dvd/dvdidutils.c"), + Object(NonMatching, "dolphin/dvd/dvdFatal.c"), + Object(NonMatching, "dolphin/dvd/fstload.c"), + ], + ), + DolphinLib( + "demo", + [ + Object(NonMatching, "dolphin/demo/DEMOInit.c"), + Object(NonMatching, "dolphin/demo/DEMOPuts.c"), + Object(NonMatching, "dolphin/demo/DEMOFont.c"), + Object(NonMatching, "dolphin/demo/DEMOPad.c"), + Object(NonMatching, "dolphin/demo/DEMOStats.c"), + ], + ), + DolphinLib( + "ai", + [ + Object(NonMatching, "dolphin/ai/ai.c"), + ], + ), + DolphinLib( + "ar", + [ + Object(NonMatching, "dolphin/ar/ar.c"), + ], + ), + DolphinLib( + "dsp", + [ + Object(NonMatching, "dolphin/dsp/dsp.c"), + Object(NonMatching, "dolphin/dsp/dsp_debug.c"), + Object(NonMatching, "dolphin/dsp/dsp_task.c"), + ], + ), + DolphinLib( + "card", + [ + Object(NonMatching, "dolphin/card/CARDBios.c"), + Object(NonMatching, "dolphin/card/CARDUnlock.c"), + Object(NonMatching, "dolphin/card/CARDRdwr.c"), + Object(NonMatching, "dolphin/card/CARDBlock.c"), + Object(NonMatching, "dolphin/card/CARDDir.c"), + Object(NonMatching, "dolphin/card/CARDCheck.c"), + Object(NonMatching, "dolphin/card/CARDMount.c"), + Object(NonMatching, "dolphin/card/CARDFormat.c"), + Object(NonMatching, "dolphin/card/CARDOpen.c"), + Object(NonMatching, "dolphin/card/CARDCreate.c"), + Object(NonMatching, "dolphin/card/CARDRead.c"), + Object(NonMatching, "dolphin/card/CARDWrite.c"), + Object(NonMatching, "dolphin/card/CARDDelete.c"), + Object(NonMatching, "dolphin/card/CARDStat.c"), + Object(NonMatching, "dolphin/card/CARDRename.c"), + Object(NonMatching, "dolphin/card/CARDNet.c"), + ], + ), + DolphinLib( + "thp", + [ + Object(NonMatching, "dolphin/thp/THPDec.c"), + Object(NonMatching, "dolphin/thp/THPAudio.c"), + ], + ), + DolphinLib( + "tex", + [ + Object(NonMatching, "dolphin/tex/texPalette.c"), + ], + ), + GenericLib( + "metrotrk", + [ + Object(NonMatching, "metrotrk/mainloop.c"), + Object(NonMatching, "metrotrk/nubevent.c"), + Object(NonMatching, "metrotrk/nubinit.c"), + Object(NonMatching, "metrotrk/msg.c"), + Object(NonMatching, "metrotrk/msgbuf.c"), + Object(NonMatching, "metrotrk/serpoll.c"), + Object(NonMatching, "metrotrk/usr_put.c"), + Object(NonMatching, "metrotrk/dispatch.c"), + Object(NonMatching, "metrotrk/msghndlr.c"), + Object(NonMatching, "metrotrk/support.c"), + Object(NonMatching, "metrotrk/mutex_TRK.c"), + Object(NonMatching, "metrotrk/notify.c"), + Object(NonMatching, "metrotrk/flush_cache.c"), + Object(NonMatching, "metrotrk/mem_TRK.c"), + Object(NonMatching, "metrotrk/__exception.c"), + Object(NonMatching, "metrotrk/targimpl.c"), + Object(NonMatching, "metrotrk/dolphin_trk.c"), + Object(NonMatching, "metrotrk/mpc_7xx_603e.c"), + Object(NonMatching, "metrotrk/main_TRK.c"), + Object(NonMatching, "metrotrk/dolphin_trk_glue.c"), + Object(NonMatching, "metrotrk/targcont.c"), + ] + ), + GenericLib( + "runtime", + [ + Object(NonMatching, "runtime/__mem.c"), + Object(NonMatching, "runtime/__va_arg.c"), + Object(NonMatching, "runtime/global_destructor_chain.c"), + Object(NonMatching, "runtime/runtime.c"), + ] + ), + GenericLib( + "libc", + [ + Object(NonMatching, "libc/abort_exit.c"), + Object(NonMatching, "libc/ansi_files.c"), + Object(NonMatching, "libc/ansi_fp.c", extra_cflags=["-inline noauto"]), + Object(NonMatching, "libc/buffer_io.c"), + Object(NonMatching, "libc/critical_regions.ppc_eabi.c"), + Object(NonMatching, "libc/ctype.c"), + Object(NonMatching, "libc/direct_io.c"), + Object(NonMatching, "libc/errno.c"), + Object(NonMatching, "libc/mbstring.c", extra_cflags=["-inline noauto"]), + Object(NonMatching, "libc/mem.c"), + Object(NonMatching, "libc/mem_funcs.c"), + Object(NonMatching, "libc/misc_io.c"), + Object(NonMatching, "libc/printf.c"), + Object(NonMatching, "libc/scanf.c"), + Object(NonMatching, "libc/string.c"), + Object(NonMatching, "libc/strtoul.c"), + Object(NonMatching, "libc/uart_console_io.c"), + Object(NonMatching, "libc/float.c"), + Object(NonMatching, "libc/wchar_io.c"), + Object(NonMatching, "libc/e_asin.c"), + Object(NonMatching, "libc/e_pow.c"), + Object(NonMatching, "libc/fminmaxdim.c"), + Object(NonMatching, "libc/s_ceil.c"), + Object(NonMatching, "libc/s_copysign.c"), + Object(NonMatching, "libc/s_floor.c"), + Object(NonMatching, "libc/s_frexp.c"), + Object(NonMatching, "libc/s_ldexp.c"), + Object(NonMatching, "libc/w_pow.c"), + Object(NonMatching, "libc/hyperbolicsf.c"), + Object(NonMatching, "libc/log10f.c"), + Object(NonMatching, "libc/trigf.c"), + Object(NonMatching, "libc/math_inlines.c"), + Object(NonMatching, "libc/common_float_tables.c"), + ] + ), + GenericLib( + "debugger", + [ + Object(NonMatching, "debugger/AmcExi2Stubs.c"), + Object(NonMatching, "debugger/DebuggerDriver.c"), + Object(NonMatching, "debugger/odenotstub.c"), + ] + ), +] + +### Execute mode + +if args.mode == "configure": + # Write build.ninja and objdiff.json + generate_build(config) +elif args.mode == "progress": + # Print progress and write progress.json + calculate_progress(config, args.progress_version) +else: + sys.exit("Unknown mode: " + args.mode) diff --git a/diff_settings.py b/diff_settings.py index a959a6d..e4d1065 100644 --- a/diff_settings.py +++ b/diff_settings.py @@ -1,11 +1,13 @@ +def add_custom_arguments(parser): + parser.add_argument("-v", "--version", help="Emulator version to diff", default="ce-j") + def apply(config, args): - config["baseimg"] = "SIM_S.elf" - config["myimg"] = "build/SIM/SIM_S.elf" - config["mapfile"] = "build/SIM/SIM.map" + version = args.version + config["make_command"] = ["ninja"] + config["mapfile"] = f"build/{version}/oot-gc.elf.MAP" config["source_directories"] = ["src", "include"] config["arch"] = "ppc" config["map_format"] = "mw" # gnu, mw, ms - config["build_dir"] = "build/SIM/" # only needed for mw and ms map format - config["objdump_executable"] = "tools/objdump_wrapper.py" + config["build_dir"] = f"build/{version}/src" # only needed for mw and ms map formats + config["objdump_executable"] = "build/binutils/powerpc-eabi-objdump" config["show_line_numbers_default"] = True - config["show_target_line_numbers_default"] = True diff --git a/dol-apply b/dol-apply new file mode 100755 index 0000000..cc1f57c --- /dev/null +++ b/dol-apply @@ -0,0 +1,11 @@ +#!/bin/bash + +# Wrapper for `dtk dol apply` to automatically update dtk symbols from the elf. +# Usage: ./dol-apply [VERSION] +# If VERSION is not provided, it defaults to ce-j. + +set -euo pipefail + +VERSION=${1:-ce-j} +ninja "build/$VERSION/ok" +build/tools/dtk dol apply "config/$VERSION/config.yml" "build/$VERSION/oot-gc.elf" diff --git a/dol-diff b/dol-diff new file mode 100755 index 0000000..2ba9b2a --- /dev/null +++ b/dol-diff @@ -0,0 +1,11 @@ +#!/bin/bash + +# Wrapper for `dtk dol diff` to locate the first diff in the dol. +# Usage: ./dol-diff [VERSION] +# If VERSION is not provided, it defaults to ce-j. + +set -euo pipefail + +VERSION=${1:-ce-j} +ninja "build/$VERSION/oot-gc.elf" +build/tools/dtk dol diff "config/$VERSION/config.yml" "build/$VERSION/oot-gc.elf" diff --git a/format b/format new file mode 100755 index 0000000..9791f9e --- /dev/null +++ b/format @@ -0,0 +1,2 @@ +#!/bin/bash +find include libc src -name '*.h' -o -name '*.c' | xargs clang-format -i diff --git a/include/macros.h b/include/macros.h index 16a5640..b23b311 100644 --- a/include/macros.h +++ b/include/macros.h @@ -1,6 +1,14 @@ #ifndef _MACROS_H #define _MACROS_H +// The VERSION macro will be set to one of these version numbers. +#define MQ_J 1 +#define MQ_U 2 +#define MQ_E 3 +#define CE_J 4 +#define CE_U 5 +#define CE_E 6 + #define ALIGNAS(N) __attribute__((aligned(N))) #define ALIGN_PREV(X, N) ((X) & ~((N) - 1)) #define ALIGN_NEXT(X, N) ALIGN_PREV(((X) + (N) - 1), N) diff --git a/ldscript.lcf b/ldscript.lcf deleted file mode 100644 index f0d385e..0000000 --- a/ldscript.lcf +++ /dev/null @@ -1,25 +0,0 @@ -MEMORY { - text : origin = 0x80003100 -} -SECTIONS { - GROUP:{ - .init ALIGN(0x20):{} - .text ALIGN(0x20):{} - .ctors ALIGN(0x20):{} - .dtors ALIGN(0x20):{} - .rodata ALIGN(0x20):{} - .data ALIGN(0x20):{} - .bss ALIGN(0x20):{} - .sdata ALIGN(0x20):{} - .sbss ALIGN(0x20):{} - .sdata2 ALIGN(0x20):{} - .sbss2 ALIGN(0x20):{} - .stack ALIGN(0x100):{} - } > text - _stack_addr = (_f_sbss2 + SIZEOF(.sbss2) + 65536 + 0x7) & ~0x7; - _stack_end = _f_sbss2 + SIZEOF(.sbss2); - _db_stack_addr = (_stack_addr + 0x2000); - _db_stack_end = _stack_addr; - __ArenaLo = (_db_stack_addr + 0x1f) & ~0x1f; - __ArenaHi = 0x81700000 ; -} diff --git a/obj_files.mk b/obj_files.mk deleted file mode 100644 index b4cf485..0000000 --- a/obj_files.mk +++ /dev/null @@ -1,184 +0,0 @@ -# Linker order for every file, passed to the Metrowerks linker. - -O_FILES := \ - $(BUILD_DIR)/src/emulator/xlCoreGCN.o \ - $(BUILD_DIR)/src/emulator/xlPostGCN.o \ - $(BUILD_DIR)/src/emulator/xlFileGCN.o \ - $(BUILD_DIR)/src/emulator/xlList.o \ - $(BUILD_DIR)/src/emulator/xlHeap.o \ - $(BUILD_DIR)/src/emulator/xlObject.o \ - $(BUILD_DIR)/src/emulator/simGCN.o \ - $(BUILD_DIR)/src/emulator/movie.o \ - $(BUILD_DIR)/src/emulator/THPPlayer.o \ - $(BUILD_DIR)/src/emulator/THPAudioDecode.o \ - $(BUILD_DIR)/src/emulator/THPDraw.o \ - $(BUILD_DIR)/src/emulator/THPRead.o \ - $(BUILD_DIR)/src/emulator/THPVideoDecode.o \ - $(BUILD_DIR)/src/emulator/mcardGCN.o \ - $(BUILD_DIR)/src/emulator/codeGCN.o \ - $(BUILD_DIR)/src/emulator/soundGCN.o \ - $(BUILD_DIR)/src/emulator/frame.o \ - $(BUILD_DIR)/src/emulator/system.o \ - $(BUILD_DIR)/src/emulator/cpu.o \ - $(BUILD_DIR)/src/emulator/pif.o \ - $(BUILD_DIR)/src/emulator/ram.o \ - $(BUILD_DIR)/src/emulator/rom.o \ - $(BUILD_DIR)/src/emulator/rdp.o \ - $(BUILD_DIR)/src/emulator/rdb.o \ - $(BUILD_DIR)/src/emulator/rsp.o \ - $(BUILD_DIR)/src/emulator/mips.o \ - $(BUILD_DIR)/src/emulator/disk.o \ - $(BUILD_DIR)/src/emulator/flash.o \ - $(BUILD_DIR)/src/emulator/sram.o \ - $(BUILD_DIR)/src/emulator/audio.o \ - $(BUILD_DIR)/src/emulator/video.o \ - $(BUILD_DIR)/src/emulator/serial.o \ - $(BUILD_DIR)/src/emulator/library.o \ - $(BUILD_DIR)/src/emulator/peripheral.o \ - $(BUILD_DIR)/src/emulator/_frameGCNcc.o \ - $(BUILD_DIR)/src/emulator/_buildtev.o \ - $(BUILD_DIR)/src/dolphin/base/PPCArch.o \ - $(BUILD_DIR)/src/dolphin/os/OS.o \ - $(BUILD_DIR)/src/dolphin/os/OSAlarm.o \ - $(BUILD_DIR)/src/dolphin/os/OSAlloc.o \ - $(BUILD_DIR)/src/dolphin/os/OSArena.o \ - $(BUILD_DIR)/src/dolphin/os/OSAudioSystem.o \ - $(BUILD_DIR)/src/dolphin/os/OSCache.o \ - $(BUILD_DIR)/src/dolphin/os/OSContext.o \ - $(BUILD_DIR)/src/dolphin/os/OSError.o \ - $(BUILD_DIR)/src/dolphin/os/OSFont.o \ - $(BUILD_DIR)/src/dolphin/os/OSInterrupt.o \ - $(BUILD_DIR)/src/dolphin/os/OSLink.o \ - $(BUILD_DIR)/src/dolphin/os/OSMessage.o \ - $(BUILD_DIR)/src/dolphin/os/OSMemory.o \ - $(BUILD_DIR)/src/dolphin/os/OSMutex.o \ - $(BUILD_DIR)/src/dolphin/os/OSReboot.o \ - $(BUILD_DIR)/src/dolphin/os/OSReset.o \ - $(BUILD_DIR)/src/dolphin/os/OSResetSW.o \ - $(BUILD_DIR)/src/dolphin/os/OSRtc.o \ - $(BUILD_DIR)/src/dolphin/os/OSSync.o \ - $(BUILD_DIR)/src/dolphin/os/OSThread.o \ - $(BUILD_DIR)/src/dolphin/os/OSTime.o \ - $(BUILD_DIR)/src/dolphin/os/__start.o \ - $(BUILD_DIR)/src/dolphin/os/__ppc_eabi_init.o \ - $(BUILD_DIR)/asm/EXIBios.o \ - $(BUILD_DIR)/asm/EXIUart.o \ - $(BUILD_DIR)/asm/SIBios.o \ - $(BUILD_DIR)/asm/SISamplingRate.o \ - $(BUILD_DIR)/asm/vi.o \ - $(BUILD_DIR)/asm/db.o \ - $(BUILD_DIR)/asm/mtx.o \ - $(BUILD_DIR)/asm/mtxvec.o \ - $(BUILD_DIR)/asm/mtx44.o \ - $(BUILD_DIR)/asm/GXInit.o \ - $(BUILD_DIR)/asm/GXFifo.o \ - $(BUILD_DIR)/asm/GXAttr.o \ - $(BUILD_DIR)/asm/GXMisc.o \ - $(BUILD_DIR)/asm/GXGeometry.o \ - $(BUILD_DIR)/asm/GXFrameBuf.o \ - $(BUILD_DIR)/asm/GXLight.o \ - $(BUILD_DIR)/asm/GXTexture.o \ - $(BUILD_DIR)/asm/GXBump.o \ - $(BUILD_DIR)/asm/GXTev.o \ - $(BUILD_DIR)/asm/GXPixel.o \ - $(BUILD_DIR)/asm/GXTransform.o \ - $(BUILD_DIR)/asm/GXPerf.o \ - $(BUILD_DIR)/asm/Padclamp.o \ - $(BUILD_DIR)/asm/Pad.o \ - $(BUILD_DIR)/asm/dvdlow.o \ - $(BUILD_DIR)/asm/dvdfs.o \ - $(BUILD_DIR)/asm/dvd.o \ - $(BUILD_DIR)/asm/dvdqueue.o \ - $(BUILD_DIR)/asm/dvderror.o \ - $(BUILD_DIR)/asm/dvdidutils.o \ - $(BUILD_DIR)/asm/dvdFatal.o \ - $(BUILD_DIR)/asm/fstload.o \ - $(BUILD_DIR)/asm/DEMOInit.o \ - $(BUILD_DIR)/asm/DEMOPuts.o \ - $(BUILD_DIR)/asm/DEMOFont.o \ - $(BUILD_DIR)/asm/DEMOPad.o \ - $(BUILD_DIR)/asm/DEMOStats.o \ - $(BUILD_DIR)/asm/ai.o \ - $(BUILD_DIR)/asm/ar.o \ - $(BUILD_DIR)/asm/dsp.o \ - $(BUILD_DIR)/asm/dsp_debug.o \ - $(BUILD_DIR)/asm/dsp_task.o \ - $(BUILD_DIR)/asm/CARDBios.o \ - $(BUILD_DIR)/asm/CARDUnlock.o \ - $(BUILD_DIR)/asm/CARDRdwr.o \ - $(BUILD_DIR)/asm/CARDBlock.o \ - $(BUILD_DIR)/asm/CARDDir.o \ - $(BUILD_DIR)/asm/CARDCheck.o \ - $(BUILD_DIR)/asm/CARDMount.o \ - $(BUILD_DIR)/asm/CARDFormat.o \ - $(BUILD_DIR)/asm/CARDOpen.o \ - $(BUILD_DIR)/asm/CARDCreate.o \ - $(BUILD_DIR)/asm/CARDRead.o \ - $(BUILD_DIR)/asm/CARDWrite.o \ - $(BUILD_DIR)/asm/CARDDelete.o \ - $(BUILD_DIR)/asm/CARDStat.o \ - $(BUILD_DIR)/asm/CARDNet.o \ - $(BUILD_DIR)/asm/THPDec.o \ - $(BUILD_DIR)/asm/THPAudio.o \ - $(BUILD_DIR)/asm/texPalette.o \ - $(BUILD_DIR)/asm/mainloop.o \ - $(BUILD_DIR)/asm/nubevent.o \ - $(BUILD_DIR)/asm/nubinit.o \ - $(BUILD_DIR)/asm/msg.o \ - $(BUILD_DIR)/asm/msgbuf.o \ - $(BUILD_DIR)/asm/serpoll.o \ - $(BUILD_DIR)/asm/usr_put.o \ - $(BUILD_DIR)/asm/dispatch.o \ - $(BUILD_DIR)/asm/msghndlr.o \ - $(BUILD_DIR)/asm/support.o \ - $(BUILD_DIR)/asm/mutex_TRK.o \ - $(BUILD_DIR)/asm/notify.o \ - $(BUILD_DIR)/asm/flush_cache.o \ - $(BUILD_DIR)/asm/mem_TRK.o \ - $(BUILD_DIR)/asm/__exception.o \ - $(BUILD_DIR)/asm/targimpl.o \ - $(BUILD_DIR)/asm/dolphin_trk.o \ - $(BUILD_DIR)/asm/mpc_7xx_603e.o \ - $(BUILD_DIR)/asm/main_TRK.o \ - $(BUILD_DIR)/asm/dolphin_trk_glue.o \ - $(BUILD_DIR)/asm/targcont.o \ - $(BUILD_DIR)/asm/__mem.o \ - $(BUILD_DIR)/asm/__va_arg.o \ - $(BUILD_DIR)/asm/global_destructor_chain.o \ - $(BUILD_DIR)/asm/runtime.o \ - $(BUILD_DIR)/asm/abort_exit.o \ - $(BUILD_DIR)/asm/ansi_files.o \ - $(BUILD_DIR)/asm/ansi_fp.o \ - $(BUILD_DIR)/asm/buffer_io.o \ - $(BUILD_DIR)/asm/critical_regions.ppc_eabi.o \ - $(BUILD_DIR)/asm/ctype.o \ - $(BUILD_DIR)/asm/direct_io.o \ - $(BUILD_DIR)/asm/errno.o \ - $(BUILD_DIR)/asm/mbstring.o \ - $(BUILD_DIR)/asm/mem.o \ - $(BUILD_DIR)/asm/mem_funcs.o \ - $(BUILD_DIR)/asm/misc_io.o \ - $(BUILD_DIR)/asm/printf.o \ - $(BUILD_DIR)/asm/scanf.o \ - $(BUILD_DIR)/asm/string.o \ - $(BUILD_DIR)/asm/strtoul.o \ - $(BUILD_DIR)/asm/uart_console_io.o \ - $(BUILD_DIR)/asm/float.o \ - $(BUILD_DIR)/asm/wchar_io.o \ - $(BUILD_DIR)/asm/e_asin.o \ - $(BUILD_DIR)/asm/e_pow.o \ - $(BUILD_DIR)/asm/fminmaxdim.o \ - $(BUILD_DIR)/asm/s_ceil.o \ - $(BUILD_DIR)/asm/s_copysign.o \ - $(BUILD_DIR)/asm/s_floor.o \ - $(BUILD_DIR)/asm/s_frexp.o \ - $(BUILD_DIR)/asm/s_ldexp.o \ - $(BUILD_DIR)/asm/w_pow.o \ - $(BUILD_DIR)/asm/hyperbolicsf.o \ - $(BUILD_DIR)/asm/log10f.o \ - $(BUILD_DIR)/asm/trigf.o \ - $(BUILD_DIR)/asm/math_inlines.o \ - $(BUILD_DIR)/asm/common_float_tables.o \ - $(BUILD_DIR)/asm/AmcExi2Stubs.o \ - $(BUILD_DIR)/asm/DebuggerDriver.o \ - $(BUILD_DIR)/asm/odenotstub.o \ diff --git a/objdiff.json b/objdiff.json deleted file mode 100644 index 0ce1048..0000000 --- a/objdiff.json +++ /dev/null @@ -1,844 +0,0 @@ -{ - "min_version": "1.0.0", - "build_target": false, - "watch_patterns": [ - "*.c", - "*.cp", - "*.cpp", - "*.h", - "*.hpp", - "*.inc", - "*.py", - "*.yml", - "*.txt", - "*.json" - ], - "units": [ - { - "name": "emulator/xlCoreGCN", - "target_path": "expected/build/SIM/src/emulator/xlCoreGCN.o", - "base_path": "build/SIM/src/emulator/xlCoreGCN.o", - "reverse_fn_order": true, - "complete": true, - "scratch": { - "platform": "gc_wii", - "compiler": "mwcc_233_159", - "c_flags": "-lang=c -nodefaults -proc gekko -enum int -fp hardware -Cpp_exceptions off -O4,p -inline auto -fp_contract on -DVERSION=0 -DNDEBUG=1 -msgstyle gcc -inline auto,deferred", - "ctx_path": "build/SIM/src/emulator/xlCoreGCN.ctx", - "build_ctx": true - } - }, - { - "name": "emulator/xlPostGCN", - "target_path": "expected/build/SIM/src/emulator/xlPostGCN.o", - "base_path": "build/SIM/src/emulator/xlPostGCN.o", - "reverse_fn_order": true, - "complete": true, - "scratch": { - "platform": "gc_wii", - "compiler": "mwcc_233_159", - "c_flags": "-lang=c -nodefaults -proc gekko -enum int -fp hardware -Cpp_exceptions off -O4,p -inline auto -fp_contract on -DVERSION=0 -DNDEBUG=1 -msgstyle gcc -inline auto,deferred", - "ctx_path": "build/SIM/src/emulator/xlPostGCN.ctx", - "build_ctx": true - } - }, - { - "name": "emulator/xlFileGCN", - "target_path": "expected/build/SIM/src/emulator/xlFileGCN.o", - "base_path": "build/SIM/src/emulator/xlFileGCN.o", - "reverse_fn_order": true, - "complete": true, - "scratch": { - "platform": "gc_wii", - "compiler": "mwcc_233_159", - "c_flags": "-lang=c -nodefaults -proc gekko -enum int -fp hardware -Cpp_exceptions off -O4,p -inline auto -fp_contract on -DVERSION=0 -DNDEBUG=1 -msgstyle gcc -inline auto,deferred", - "ctx_path": "build/SIM/src/emulator/xlFileGCN.ctx", - "build_ctx": true - } - }, - { - "name": "emulator/xlList", - "target_path": "expected/build/SIM/src/emulator/xlList.o", - "base_path": "build/SIM/src/emulator/xlList.o", - "reverse_fn_order": true, - "complete": true, - "scratch": { - "platform": "gc_wii", - "compiler": "mwcc_233_159", - "c_flags": "-lang=c -nodefaults -proc gekko -enum int -fp hardware -Cpp_exceptions off -O4,p -inline auto -fp_contract on -DVERSION=0 -DNDEBUG=1 -msgstyle gcc -inline auto,deferred", - "ctx_path": "build/SIM/src/emulator/xlList.ctx", - "build_ctx": true - } - }, - { - "name": "emulator/xlHeap", - "target_path": "expected/build/SIM/src/emulator/xlHeap.o", - "base_path": "build/SIM/src/emulator/xlHeap.o", - "reverse_fn_order": true, - "complete": true, - "scratch": { - "platform": "gc_wii", - "compiler": "mwcc_233_159", - "c_flags": "-lang=c -nodefaults -proc gekko -enum int -fp hardware -Cpp_exceptions off -O4,p -inline auto -fp_contract on -DVERSION=0 -DNDEBUG=1 -msgstyle gcc -inline auto,deferred", - "ctx_path": "build/SIM/src/emulator/xlHeap.ctx", - "build_ctx": true - } - }, - { - "name": "emulator/xlObject", - "target_path": "expected/build/SIM/src/emulator/xlObject.o", - "base_path": "build/SIM/src/emulator/xlObject.o", - "reverse_fn_order": true, - "complete": true, - "scratch": { - "platform": "gc_wii", - "compiler": "mwcc_233_159", - "c_flags": "-lang=c -nodefaults -proc gekko -enum int -fp hardware -Cpp_exceptions off -O4,p -inline auto -fp_contract on -DVERSION=0 -DNDEBUG=1 -msgstyle gcc -inline auto,deferred", - "ctx_path": "build/SIM/src/emulator/xlObject.ctx", - "build_ctx": true - } - }, - { - "name": "emulator/simGCN", - "target_path": "expected/build/SIM/src/emulator/simGCN.o", - "base_path": "build/SIM/src/emulator/simGCN.o", - "reverse_fn_order": true, - "complete": false, - "scratch": { - "platform": "gc_wii", - "compiler": "mwcc_233_159", - "c_flags": "-lang=c -nodefaults -proc gekko -enum int -fp hardware -Cpp_exceptions off -O4,p -inline auto -fp_contract on -DVERSION=0 -DNDEBUG=1 -msgstyle gcc -inline auto,deferred", - "ctx_path": "build/SIM/src/emulator/simGCN.ctx", - "build_ctx": true - } - }, - { - "name": "emulator/movie", - "target_path": "expected/build/SIM/src/emulator/movie.o", - "base_path": "build/SIM/src/emulator/movie.o", - "reverse_fn_order": true, - "complete": true, - "scratch": { - "platform": "gc_wii", - "compiler": "mwcc_233_159", - "c_flags": "-lang=c -nodefaults -proc gekko -enum int -fp hardware -Cpp_exceptions off -O4,p -inline auto -fp_contract on -DVERSION=0 -DNDEBUG=1 -msgstyle gcc -inline auto,deferred", - "ctx_path": "build/SIM/src/emulator/movie.ctx", - "build_ctx": true - } - }, - { - "name": "emulator/THPPlayer", - "target_path": "expected/build/SIM/src/emulator/THPPlayer.o", - "base_path": "build/SIM/src/emulator/THPPlayer.o", - "reverse_fn_order": false, - "complete": true, - "scratch": { - "platform": "gc_wii", - "compiler": "mwcc_233_159", - "c_flags": "-lang=c -nodefaults -proc gekko -enum int -fp hardware -Cpp_exceptions off -O4,p -inline auto -fp_contract on -DVERSION=0 -DNDEBUG=1 -msgstyle gcc -inline auto,deferred", - "ctx_path": "build/SIM/src/emulator/THPPlayer.ctx", - "build_ctx": true - } - }, - { - "name": "emulator/THPAudioDecode", - "target_path": "expected/build/SIM/src/emulator/THPAudioDecode.o", - "base_path": "build/SIM/src/emulator/THPAudioDecode.o", - "reverse_fn_order": false, - "complete": true, - "scratch": { - "platform": "gc_wii", - "compiler": "mwcc_233_159", - "c_flags": "-lang=c -nodefaults -proc gekko -enum int -fp hardware -Cpp_exceptions off -O4,p -inline auto -fp_contract on -DVERSION=0 -DNDEBUG=1 -msgstyle gcc -inline auto,deferred", - "ctx_path": "build/SIM/src/emulator/THPAudioDecode.ctx", - "build_ctx": true - } - }, - { - "name": "emulator/THPDraw", - "target_path": "expected/build/SIM/src/emulator/THPDraw.o", - "base_path": "build/SIM/src/emulator/THPDraw.o", - "reverse_fn_order": false, - "complete": true, - "scratch": { - "platform": "gc_wii", - "compiler": "mwcc_233_159", - "c_flags": "-lang=c -nodefaults -proc gekko -enum int -fp hardware -Cpp_exceptions off -O4,p -inline auto -fp_contract on -DVERSION=0 -DNDEBUG=1 -msgstyle gcc -inline auto,deferred", - "ctx_path": "build/SIM/src/emulator/THPDraw.ctx", - "build_ctx": true - } - }, - { - "name": "emulator/THPRead", - "target_path": "expected/build/SIM/src/emulator/THPRead.o", - "base_path": "build/SIM/src/emulator/THPRead.o", - "reverse_fn_order": true, - "complete": false, - "scratch": { - "platform": "gc_wii", - "compiler": "mwcc_233_159", - "c_flags": "-lang=c -nodefaults -proc gekko -enum int -fp hardware -Cpp_exceptions off -O4,p -inline auto -fp_contract on -DVERSION=0 -DNDEBUG=1 -msgstyle gcc -inline auto,deferred", - "ctx_path": "build/SIM/src/emulator/THPRead.ctx", - "build_ctx": true - } - }, - { - "name": "emulator/THPVideoDecode", - "target_path": "expected/build/SIM/src/emulator/THPVideoDecode.o", - "base_path": "build/SIM/src/emulator/THPVideoDecode.o", - "reverse_fn_order": false, - "complete": true, - "scratch": { - "platform": "gc_wii", - "compiler": "mwcc_233_159", - "c_flags": "-lang=c -nodefaults -proc gekko -enum int -fp hardware -Cpp_exceptions off -O4,p -inline auto -fp_contract on -DVERSION=0 -DNDEBUG=1 -msgstyle gcc -inline auto,deferred", - "ctx_path": "build/SIM/src/emulator/THPVideoDecode.ctx", - "build_ctx": true - } - }, - { - "name": "emulator/mcardGCN", - "target_path": "expected/build/SIM/src/emulator/mcardGCN.o", - "base_path": "build/SIM/src/emulator/mcardGCN.o", - "reverse_fn_order": true, - "complete": false, - "scratch": { - "platform": "gc_wii", - "compiler": "mwcc_233_159", - "c_flags": "-lang=c -nodefaults -proc gekko -enum int -fp hardware -Cpp_exceptions off -O4,p -inline auto -fp_contract on -DVERSION=0 -DNDEBUG=1 -msgstyle gcc -inline auto,deferred", - "ctx_path": "build/SIM/src/emulator/mcardGCN.ctx", - "build_ctx": true - } - }, - { - "name": "emulator/codeGCN", - "target_path": "expected/build/SIM/src/emulator/codeGCN.o", - "base_path": "build/SIM/src/emulator/codeGCN.o", - "reverse_fn_order": true, - "complete": true, - "scratch": { - "platform": "gc_wii", - "compiler": "mwcc_233_159", - "c_flags": "-lang=c -nodefaults -proc gekko -enum int -fp hardware -Cpp_exceptions off -O4,p -inline auto -fp_contract on -DVERSION=0 -DNDEBUG=1 -msgstyle gcc -inline auto,deferred", - "ctx_path": "build/SIM/src/emulator/codeGCN.ctx", - "build_ctx": true - } - }, - { - "name": "emulator/soundGCN", - "target_path": "expected/build/SIM/src/emulator/soundGCN.o", - "base_path": "build/SIM/src/emulator/soundGCN.o", - "reverse_fn_order": true, - "complete": false, - "scratch": { - "platform": "gc_wii", - "compiler": "mwcc_233_159", - "c_flags": "-lang=c -nodefaults -proc gekko -enum int -fp hardware -Cpp_exceptions off -O4,p -inline auto -fp_contract on -DVERSION=0 -DNDEBUG=1 -msgstyle gcc -inline auto,deferred", - "ctx_path": "build/SIM/src/emulator/soundGCN.ctx", - "build_ctx": true - } - }, - { - "name": "emulator/frame", - "target_path": "expected/build/SIM/src/emulator/frame.o", - "base_path": "build/SIM/src/emulator/frame.o", - "reverse_fn_order": true, - "complete": false, - "scratch": { - "platform": "gc_wii", - "compiler": "mwcc_233_159", - "c_flags": "-lang=c -nodefaults -proc gekko -enum int -fp hardware -Cpp_exceptions off -O4,p -inline auto -fp_contract on -DVERSION=0 -DNDEBUG=1 -msgstyle gcc -inline auto,deferred", - "ctx_path": "build/SIM/src/emulator/frame.ctx", - "build_ctx": true - } - }, - { - "name": "emulator/system", - "target_path": "expected/build/SIM/src/emulator/system.o", - "base_path": "build/SIM/src/emulator/system.o", - "reverse_fn_order": true, - "complete": true, - "scratch": { - "platform": "gc_wii", - "compiler": "mwcc_233_159", - "c_flags": "-lang=c -nodefaults -proc gekko -enum int -fp hardware -Cpp_exceptions off -O4,p -inline auto -fp_contract on -DVERSION=0 -DNDEBUG=1 -msgstyle gcc -inline auto,deferred", - "ctx_path": "build/SIM/src/emulator/system.ctx", - "build_ctx": true - } - }, - { - "name": "emulator/cpu", - "target_path": "expected/build/SIM/src/emulator/cpu.o", - "base_path": "build/SIM/src/emulator/cpu.o", - "reverse_fn_order": true, - "complete": false, - "scratch": { - "platform": "gc_wii", - "compiler": "mwcc_233_159", - "c_flags": "-lang=c -nodefaults -proc gekko -enum int -fp hardware -Cpp_exceptions off -O4,p -inline auto -fp_contract on -DVERSION=0 -DNDEBUG=1 -msgstyle gcc -inline auto,deferred", - "ctx_path": "build/SIM/src/emulator/cpu.ctx", - "build_ctx": true - } - }, - { - "name": "emulator/pif", - "target_path": "expected/build/SIM/src/emulator/pif.o", - "base_path": "build/SIM/src/emulator/pif.o", - "reverse_fn_order": true, - "complete": false, - "scratch": { - "platform": "gc_wii", - "compiler": "mwcc_233_159", - "c_flags": "-lang=c -nodefaults -proc gekko -enum int -fp hardware -Cpp_exceptions off -O4,p -inline auto -fp_contract on -DVERSION=0 -DNDEBUG=1 -msgstyle gcc -inline auto,deferred", - "ctx_path": "build/SIM/src/emulator/pif.ctx", - "build_ctx": true - } - }, - { - "name": "emulator/ram", - "target_path": "expected/build/SIM/src/emulator/ram.o", - "base_path": "build/SIM/src/emulator/ram.o", - "reverse_fn_order": true, - "complete": true, - "scratch": { - "platform": "gc_wii", - "compiler": "mwcc_233_159", - "c_flags": "-lang=c -nodefaults -proc gekko -enum int -fp hardware -Cpp_exceptions off -O4,p -inline auto -fp_contract on -DVERSION=0 -DNDEBUG=1 -msgstyle gcc -inline auto,deferred", - "ctx_path": "build/SIM/src/emulator/ram.ctx", - "build_ctx": true - } - }, - { - "name": "emulator/rom", - "target_path": "expected/build/SIM/src/emulator/rom.o", - "base_path": "build/SIM/src/emulator/rom.o", - "reverse_fn_order": true, - "complete": true, - "scratch": { - "platform": "gc_wii", - "compiler": "mwcc_233_159", - "c_flags": "-lang=c -nodefaults -proc gekko -enum int -fp hardware -Cpp_exceptions off -O4,p -inline auto -fp_contract on -DVERSION=0 -DNDEBUG=1 -msgstyle gcc -inline auto,deferred", - "ctx_path": "build/SIM/src/emulator/rom.ctx", - "build_ctx": true - } - }, - { - "name": "emulator/rdp", - "target_path": "expected/build/SIM/src/emulator/rdp.o", - "base_path": "build/SIM/src/emulator/rdp.o", - "reverse_fn_order": true, - "complete": false, - "scratch": { - "platform": "gc_wii", - "compiler": "mwcc_233_159", - "c_flags": "-lang=c -nodefaults -proc gekko -enum int -fp hardware -Cpp_exceptions off -O4,p -inline auto -fp_contract on -DVERSION=0 -DNDEBUG=1 -msgstyle gcc -inline auto,deferred", - "ctx_path": "build/SIM/src/emulator/rdp.ctx", - "build_ctx": true - } - }, - { - "name": "emulator/rdb", - "target_path": "expected/build/SIM/src/emulator/rdb.o", - "base_path": "build/SIM/src/emulator/rdb.o", - "reverse_fn_order": true, - "complete": true, - "scratch": { - "platform": "gc_wii", - "compiler": "mwcc_233_159", - "c_flags": "-lang=c -nodefaults -proc gekko -enum int -fp hardware -Cpp_exceptions off -O4,p -inline auto -fp_contract on -DVERSION=0 -DNDEBUG=1 -msgstyle gcc -inline auto,deferred", - "ctx_path": "build/SIM/src/emulator/rdb.ctx", - "build_ctx": true - } - }, - { - "name": "emulator/rsp", - "target_path": "expected/build/SIM/src/emulator/rsp.o", - "base_path": "build/SIM/src/emulator/rsp.o", - "reverse_fn_order": true, - "complete": false, - "scratch": { - "platform": "gc_wii", - "compiler": "mwcc_233_159", - "c_flags": "-lang=c -nodefaults -proc gekko -enum int -fp hardware -Cpp_exceptions off -O4,p -inline auto -fp_contract on -DVERSION=0 -DNDEBUG=1 -msgstyle gcc -inline auto,deferred", - "ctx_path": "build/SIM/src/emulator/rsp.ctx", - "build_ctx": true - } - }, - { - "name": "emulator/mips", - "target_path": "expected/build/SIM/src/emulator/mips.o", - "base_path": "build/SIM/src/emulator/mips.o", - "reverse_fn_order": true, - "complete": true, - "scratch": { - "platform": "gc_wii", - "compiler": "mwcc_233_159", - "c_flags": "-lang=c -nodefaults -proc gekko -enum int -fp hardware -Cpp_exceptions off -O4,p -inline auto -fp_contract on -DVERSION=0 -DNDEBUG=1 -msgstyle gcc -inline auto,deferred", - "ctx_path": "build/SIM/src/emulator/mips.ctx", - "build_ctx": true - } - }, - { - "name": "emulator/disk", - "target_path": "expected/build/SIM/src/emulator/disk.o", - "base_path": "build/SIM/src/emulator/disk.o", - "reverse_fn_order": true, - "complete": true, - "scratch": { - "platform": "gc_wii", - "compiler": "mwcc_233_159", - "c_flags": "-lang=c -nodefaults -proc gekko -enum int -fp hardware -Cpp_exceptions off -O4,p -inline auto -fp_contract on -DVERSION=0 -DNDEBUG=1 -msgstyle gcc -inline auto,deferred", - "ctx_path": "build/SIM/src/emulator/disk.ctx", - "build_ctx": true - } - }, - { - "name": "emulator/flash", - "target_path": "expected/build/SIM/src/emulator/flash.o", - "base_path": "build/SIM/src/emulator/flash.o", - "reverse_fn_order": true, - "complete": true, - "scratch": { - "platform": "gc_wii", - "compiler": "mwcc_233_159", - "c_flags": "-lang=c -nodefaults -proc gekko -enum int -fp hardware -Cpp_exceptions off -O4,p -inline auto -fp_contract on -DVERSION=0 -DNDEBUG=1 -msgstyle gcc -inline auto,deferred", - "ctx_path": "build/SIM/src/emulator/flash.ctx", - "build_ctx": true - } - }, - { - "name": "emulator/sram", - "target_path": "expected/build/SIM/src/emulator/sram.o", - "base_path": "build/SIM/src/emulator/sram.o", - "reverse_fn_order": true, - "complete": true, - "scratch": { - "platform": "gc_wii", - "compiler": "mwcc_233_159", - "c_flags": "-lang=c -nodefaults -proc gekko -enum int -fp hardware -Cpp_exceptions off -O4,p -inline auto -fp_contract on -DVERSION=0 -DNDEBUG=1 -msgstyle gcc -inline auto,deferred", - "ctx_path": "build/SIM/src/emulator/sram.ctx", - "build_ctx": true - } - }, - { - "name": "emulator/audio", - "target_path": "expected/build/SIM/src/emulator/audio.o", - "base_path": "build/SIM/src/emulator/audio.o", - "reverse_fn_order": true, - "complete": true, - "scratch": { - "platform": "gc_wii", - "compiler": "mwcc_233_159", - "c_flags": "-lang=c -nodefaults -proc gekko -enum int -fp hardware -Cpp_exceptions off -O4,p -inline auto -fp_contract on -DVERSION=0 -DNDEBUG=1 -msgstyle gcc -inline auto,deferred", - "ctx_path": "build/SIM/src/emulator/audio.ctx", - "build_ctx": true - } - }, - { - "name": "emulator/video", - "target_path": "expected/build/SIM/src/emulator/video.o", - "base_path": "build/SIM/src/emulator/video.o", - "reverse_fn_order": true, - "complete": true, - "scratch": { - "platform": "gc_wii", - "compiler": "mwcc_233_159", - "c_flags": "-lang=c -nodefaults -proc gekko -enum int -fp hardware -Cpp_exceptions off -O4,p -inline auto -fp_contract on -DVERSION=0 -DNDEBUG=1 -msgstyle gcc -inline auto,deferred", - "ctx_path": "build/SIM/src/emulator/video.ctx", - "build_ctx": true - } - }, - { - "name": "emulator/serial", - "target_path": "expected/build/SIM/src/emulator/serial.o", - "base_path": "build/SIM/src/emulator/serial.o", - "reverse_fn_order": true, - "complete": true, - "scratch": { - "platform": "gc_wii", - "compiler": "mwcc_233_159", - "c_flags": "-lang=c -nodefaults -proc gekko -enum int -fp hardware -Cpp_exceptions off -O4,p -inline auto -fp_contract on -DVERSION=0 -DNDEBUG=1 -msgstyle gcc -inline auto,deferred", - "ctx_path": "build/SIM/src/emulator/serial.ctx", - "build_ctx": true - } - }, - { - "name": "emulator/library", - "target_path": "expected/build/SIM/src/emulator/library.o", - "base_path": "build/SIM/src/emulator/library.o", - "reverse_fn_order": true, - "complete": true, - "scratch": { - "platform": "gc_wii", - "compiler": "mwcc_233_159", - "c_flags": "-lang=c -nodefaults -proc gekko -enum int -fp hardware -Cpp_exceptions off -O4,p -inline auto -fp_contract on -DVERSION=0 -DNDEBUG=1 -msgstyle gcc -inline auto,deferred", - "ctx_path": "build/SIM/src/emulator/library.ctx", - "build_ctx": true - } - }, - { - "name": "emulator/peripheral", - "target_path": "expected/build/SIM/src/emulator/peripheral.o", - "base_path": "build/SIM/src/emulator/peripheral.o", - "reverse_fn_order": true, - "complete": true, - "scratch": { - "platform": "gc_wii", - "compiler": "mwcc_233_159", - "c_flags": "-lang=c -nodefaults -proc gekko -enum int -fp hardware -Cpp_exceptions off -O4,p -inline auto -fp_contract on -DVERSION=0 -DNDEBUG=1 -msgstyle gcc -inline auto,deferred", - "ctx_path": "build/SIM/src/emulator/peripheral.ctx", - "build_ctx": true - } - }, - { - "name": "emulator/_frameGCNcc", - "target_path": "expected/build/SIM/src/emulator/_frameGCNcc.o", - "base_path": "build/SIM/src/emulator/_frameGCNcc.o", - "reverse_fn_order": true, - "complete": false, - "scratch": { - "platform": "gc_wii", - "compiler": "mwcc_233_159", - "c_flags": "-lang=c -nodefaults -proc gekko -enum int -fp hardware -Cpp_exceptions off -O4,p -inline auto -fp_contract on -DVERSION=0 -DNDEBUG=1 -msgstyle gcc -inline auto,deferred", - "ctx_path": "build/SIM/src/emulator/_frameGCNcc.ctx", - "build_ctx": true - } - }, - { - "name": "emulator/_buildtev", - "target_path": "expected/build/SIM/src/emulator/_buildtev.o", - "base_path": "build/SIM/src/emulator/_buildtev.o", - "reverse_fn_order": true, - "complete": false, - "scratch": { - "platform": "gc_wii", - "compiler": "mwcc_233_159", - "c_flags": "-lang=c -nodefaults -proc gekko -enum int -fp hardware -Cpp_exceptions off -O4,p -inline auto -fp_contract on -DVERSION=0 -DNDEBUG=1 -msgstyle gcc -inline auto,deferred", - "ctx_path": "build/SIM/src/emulator/_buildtev.ctx", - "build_ctx": true - } - }, - { - "name": "dolphin/os/OS", - "target_path": "expected/build/SIM/src/dolphin/os/OS.o", - "base_path": "build/SIM/src/dolphin/os/OS.o", - "reverse_fn_order": false, - "complete": true, - "scratch": { - "platform": "gc_wii", - "compiler": "mwcc_233_163n", - "c_flags": "-lang=c -nodefaults -proc gekko -enum int -fp hardware -Cpp_exceptions off -O4,p -inline auto -fp_contract on -DVERSION=1 -DDOLPHIN_REV=99 -sym on -DDEBUG=1 -align powerpc -pragma \"cats off\" -pragma \"warn_notinlined off\" -maxerrors 1 -nosyspath -RTTI off -str reuse -multibyte", - "ctx_path": "build/SIM/src/dolphin/os/OS.ctx", - "build_ctx": true - } - }, - { - "name": "dolphin/os/OSAlarm", - "target_path": "expected/build/SIM/src/dolphin/os/OSAlarm.o", - "base_path": "build/SIM/src/dolphin/os/OSAlarm.o", - "reverse_fn_order": false, - "complete": true, - "scratch": { - "platform": "gc_wii", - "compiler": "mwcc_233_163n", - "c_flags": "-lang=c -nodefaults -proc gekko -enum int -fp hardware -Cpp_exceptions off -O4,p -inline auto -fp_contract on -DVERSION=1 -DDOLPHIN_REV=99 -sym on -DDEBUG=1 -align powerpc -pragma \"cats off\" -pragma \"warn_notinlined off\" -maxerrors 1 -nosyspath -RTTI off -str reuse -multibyte", - "ctx_path": "build/SIM/src/dolphin/os/OSAlarm.ctx", - "build_ctx": true - } - }, - { - "name": "dolphin/os/OSAlloc", - "target_path": "expected/build/SIM/src/dolphin/os/OSAlloc.o", - "base_path": "build/SIM/src/dolphin/os/OSAlloc.o", - "reverse_fn_order": false, - "complete": true, - "scratch": { - "platform": "gc_wii", - "compiler": "mwcc_233_163n", - "c_flags": "-lang=c -nodefaults -proc gekko -enum int -fp hardware -Cpp_exceptions off -O4,p -inline auto -fp_contract on -DVERSION=1 -DDOLPHIN_REV=99 -sym on -DDEBUG=1 -align powerpc -pragma \"cats off\" -pragma \"warn_notinlined off\" -maxerrors 1 -nosyspath -RTTI off -str reuse -multibyte", - "ctx_path": "build/SIM/src/dolphin/os/OSAlloc.ctx", - "build_ctx": true - } - }, - { - "name": "dolphin/os/OSArena", - "target_path": "expected/build/SIM/src/dolphin/os/OSArena.o", - "base_path": "build/SIM/src/dolphin/os/OSArena.o", - "reverse_fn_order": false, - "complete": true, - "scratch": { - "platform": "gc_wii", - "compiler": "mwcc_233_163n", - "c_flags": "-lang=c -nodefaults -proc gekko -enum int -fp hardware -Cpp_exceptions off -O4,p -inline auto -fp_contract on -DVERSION=1 -DDOLPHIN_REV=99 -sym on -DDEBUG=1 -align powerpc -pragma \"cats off\" -pragma \"warn_notinlined off\" -maxerrors 1 -nosyspath -RTTI off -str reuse -multibyte", - "ctx_path": "build/SIM/src/dolphin/os/OSArena.ctx", - "build_ctx": true - } - }, - { - "name": "dolphin/os/OSAudioSystem", - "target_path": "expected/build/SIM/src/dolphin/os/OSAudioSystem.o", - "base_path": "build/SIM/src/dolphin/os/OSAudioSystem.o", - "reverse_fn_order": false, - "complete": true, - "scratch": { - "platform": "gc_wii", - "compiler": "mwcc_233_163n", - "c_flags": "-lang=c -nodefaults -proc gekko -enum int -fp hardware -Cpp_exceptions off -O4,p -inline auto -fp_contract on -DVERSION=1 -DDOLPHIN_REV=99 -sym on -DDEBUG=1 -align powerpc -pragma \"cats off\" -pragma \"warn_notinlined off\" -maxerrors 1 -nosyspath -RTTI off -str reuse -multibyte", - "ctx_path": "build/SIM/src/dolphin/os/OSAudioSystem.ctx", - "build_ctx": true - } - }, - { - "name": "dolphin/os/OSCache", - "target_path": "expected/build/SIM/src/dolphin/os/OSCache.o", - "base_path": "build/SIM/src/dolphin/os/OSCache.o", - "reverse_fn_order": false, - "complete": true, - "scratch": { - "platform": "gc_wii", - "compiler": "mwcc_233_163n", - "c_flags": "-lang=c -nodefaults -proc gekko -enum int -fp hardware -Cpp_exceptions off -O4,p -inline auto -fp_contract on -DVERSION=1 -DDOLPHIN_REV=99 -sym on -DDEBUG=1 -align powerpc -pragma \"cats off\" -pragma \"warn_notinlined off\" -maxerrors 1 -nosyspath -RTTI off -str reuse -multibyte", - "ctx_path": "build/SIM/src/dolphin/os/OSCache.ctx", - "build_ctx": true - } - }, - { - "name": "dolphin/os/OSContext", - "target_path": "expected/build/SIM/src/dolphin/os/OSContext.o", - "base_path": "build/SIM/src/dolphin/os/OSContext.o", - "reverse_fn_order": false, - "complete": true, - "scratch": { - "platform": "gc_wii", - "compiler": "mwcc_233_163n", - "c_flags": "-lang=c -nodefaults -proc gekko -enum int -fp hardware -Cpp_exceptions off -O4,p -inline auto -fp_contract on -DVERSION=1 -DDOLPHIN_REV=99 -sym on -DDEBUG=1 -align powerpc -pragma \"cats off\" -pragma \"warn_notinlined off\" -maxerrors 1 -nosyspath -RTTI off -str reuse -multibyte", - "ctx_path": "build/SIM/src/dolphin/os/OSContext.ctx", - "build_ctx": true - } - }, - { - "name": "dolphin/os/OSError", - "target_path": "expected/build/SIM/src/dolphin/os/OSError.o", - "base_path": "build/SIM/src/dolphin/os/OSError.o", - "reverse_fn_order": false, - "complete": true, - "scratch": { - "platform": "gc_wii", - "compiler": "mwcc_233_163n", - "c_flags": "-lang=c -nodefaults -proc gekko -enum int -fp hardware -Cpp_exceptions off -O4,p -inline auto -fp_contract on -DVERSION=1 -DDOLPHIN_REV=99 -sym on -DDEBUG=1 -align powerpc -pragma \"cats off\" -pragma \"warn_notinlined off\" -maxerrors 1 -nosyspath -RTTI off -str reuse -multibyte", - "ctx_path": "build/SIM/src/dolphin/os/OSError.ctx", - "build_ctx": true - } - }, - { - "name": "dolphin/os/OSFont", - "target_path": "expected/build/SIM/src/dolphin/os/OSFont.o", - "base_path": "build/SIM/src/dolphin/os/OSFont.o", - "reverse_fn_order": false, - "complete": true, - "scratch": { - "platform": "gc_wii", - "compiler": "mwcc_233_163n", - "c_flags": "-lang=c -nodefaults -proc gekko -enum int -fp hardware -Cpp_exceptions off -O4,p -inline auto -fp_contract on -DVERSION=1 -DDOLPHIN_REV=99 -sym on -DDEBUG=1 -align powerpc -pragma \"cats off\" -pragma \"warn_notinlined off\" -maxerrors 1 -nosyspath -RTTI off -str reuse -multibyte", - "ctx_path": "build/SIM/src/dolphin/os/OSFont.ctx", - "build_ctx": true - } - }, - { - "name": "dolphin/os/OSInterrupt", - "target_path": "expected/build/SIM/src/dolphin/os/OSInterrupt.o", - "base_path": "build/SIM/src/dolphin/os/OSInterrupt.o", - "reverse_fn_order": false, - "complete": true, - "scratch": { - "platform": "gc_wii", - "compiler": "mwcc_233_163n", - "c_flags": "-lang=c -nodefaults -proc gekko -enum int -fp hardware -Cpp_exceptions off -O4,p -inline auto -fp_contract on -DVERSION=1 -DDOLPHIN_REV=99 -sym on -DDEBUG=1 -align powerpc -pragma \"cats off\" -pragma \"warn_notinlined off\" -maxerrors 1 -nosyspath -RTTI off -str reuse -multibyte", - "ctx_path": "build/SIM/src/dolphin/os/OSInterrupt.ctx", - "build_ctx": true - } - }, - { - "name": "dolphin/os/OSLink", - "target_path": "expected/build/SIM/src/dolphin/os/OSLink.o", - "base_path": "build/SIM/src/dolphin/os/OSLink.o", - "reverse_fn_order": false, - "complete": true, - "scratch": { - "platform": "gc_wii", - "compiler": "mwcc_233_163n", - "c_flags": "-lang=c -nodefaults -proc gekko -enum int -fp hardware -Cpp_exceptions off -O4,p -inline auto -fp_contract on -DVERSION=1 -DDOLPHIN_REV=99 -sym on -DDEBUG=1 -align powerpc -pragma \"cats off\" -pragma \"warn_notinlined off\" -maxerrors 1 -nosyspath -RTTI off -str reuse -multibyte", - "ctx_path": "build/SIM/src/dolphin/os/OSLink.ctx", - "build_ctx": true - } - }, - { - "name": "dolphin/os/OSMessage", - "target_path": "expected/build/SIM/src/dolphin/os/OSMessage.o", - "base_path": "build/SIM/src/dolphin/os/OSMessage.o", - "reverse_fn_order": false, - "complete": true, - "scratch": { - "platform": "gc_wii", - "compiler": "mwcc_233_163n", - "c_flags": "-lang=c -nodefaults -proc gekko -enum int -fp hardware -Cpp_exceptions off -O4,p -inline auto -fp_contract on -DVERSION=1 -DDOLPHIN_REV=99 -sym on -DDEBUG=1 -align powerpc -pragma \"cats off\" -pragma \"warn_notinlined off\" -maxerrors 1 -nosyspath -RTTI off -str reuse -multibyte", - "ctx_path": "build/SIM/src/dolphin/os/OSMessage.ctx", - "build_ctx": true - } - }, - { - "name": "dolphin/os/OSMemory", - "target_path": "expected/build/SIM/src/dolphin/os/OSMemory.o", - "base_path": "build/SIM/src/dolphin/os/OSMemory.o", - "reverse_fn_order": false, - "complete": true, - "scratch": { - "platform": "gc_wii", - "compiler": "mwcc_233_163n", - "c_flags": "-lang=c -nodefaults -proc gekko -enum int -fp hardware -Cpp_exceptions off -O4,p -inline auto -fp_contract on -DVERSION=1 -DDOLPHIN_REV=99 -sym on -DDEBUG=1 -align powerpc -pragma \"cats off\" -pragma \"warn_notinlined off\" -maxerrors 1 -nosyspath -RTTI off -str reuse -multibyte", - "ctx_path": "build/SIM/src/dolphin/os/OSMemory.ctx", - "build_ctx": true - } - }, - { - "name": "dolphin/os/OSMutex", - "target_path": "expected/build/SIM/src/dolphin/os/OSMutex.o", - "base_path": "build/SIM/src/dolphin/os/OSMutex.o", - "reverse_fn_order": false, - "complete": true, - "scratch": { - "platform": "gc_wii", - "compiler": "mwcc_233_163n", - "c_flags": "-lang=c -nodefaults -proc gekko -enum int -fp hardware -Cpp_exceptions off -O4,p -inline auto -fp_contract on -DVERSION=1 -DDOLPHIN_REV=99 -sym on -DDEBUG=1 -align powerpc -pragma \"cats off\" -pragma \"warn_notinlined off\" -maxerrors 1 -nosyspath -RTTI off -str reuse -multibyte", - "ctx_path": "build/SIM/src/dolphin/os/OSMutex.ctx", - "build_ctx": true - } - }, - { - "name": "dolphin/os/OSReboot", - "target_path": "expected/build/SIM/src/dolphin/os/OSReboot.o", - "base_path": "build/SIM/src/dolphin/os/OSReboot.o", - "reverse_fn_order": false, - "complete": true, - "scratch": { - "platform": "gc_wii", - "compiler": "mwcc_233_163n", - "c_flags": "-lang=c -nodefaults -proc gekko -enum int -fp hardware -Cpp_exceptions off -O4,p -inline auto -fp_contract on -DVERSION=1 -DDOLPHIN_REV=99 -sym on -DDEBUG=1 -align powerpc -pragma \"cats off\" -pragma \"warn_notinlined off\" -maxerrors 1 -nosyspath -RTTI off -str reuse -multibyte", - "ctx_path": "build/SIM/src/dolphin/os/OSReboot.ctx", - "build_ctx": true - } - }, - { - "name": "dolphin/os/OSReset", - "target_path": "expected/build/SIM/src/dolphin/os/OSReset.o", - "base_path": "build/SIM/src/dolphin/os/OSReset.o", - "reverse_fn_order": false, - "complete": true, - "scratch": { - "platform": "gc_wii", - "compiler": "mwcc_233_163n", - "c_flags": "-lang=c -nodefaults -proc gekko -enum int -fp hardware -Cpp_exceptions off -O4,p -inline auto -fp_contract on -DVERSION=1 -DDOLPHIN_REV=99 -sym on -DDEBUG=1 -align powerpc -pragma \"cats off\" -pragma \"warn_notinlined off\" -maxerrors 1 -nosyspath -RTTI off -str reuse -multibyte", - "ctx_path": "build/SIM/src/dolphin/os/OSReset.ctx", - "build_ctx": true - } - }, - { - "name": "dolphin/os/OSResetSW", - "target_path": "expected/build/SIM/src/dolphin/os/OSResetSW.o", - "base_path": "build/SIM/src/dolphin/os/OSResetSW.o", - "reverse_fn_order": false, - "complete": true, - "scratch": { - "platform": "gc_wii", - "compiler": "mwcc_233_163n", - "c_flags": "-lang=c -nodefaults -proc gekko -enum int -fp hardware -Cpp_exceptions off -O4,p -inline auto -fp_contract on -DVERSION=1 -DDOLPHIN_REV=99 -sym on -DDEBUG=1 -align powerpc -pragma \"cats off\" -pragma \"warn_notinlined off\" -maxerrors 1 -nosyspath -RTTI off -str reuse -multibyte", - "ctx_path": "build/SIM/src/dolphin/os/OSResetSW.ctx", - "build_ctx": true - } - }, - { - "name": "dolphin/os/OSRtc", - "target_path": "expected/build/SIM/src/dolphin/os/OSRtc.o", - "base_path": "build/SIM/src/dolphin/os/OSRtc.o", - "reverse_fn_order": false, - "complete": true, - "scratch": { - "platform": "gc_wii", - "compiler": "mwcc_233_163n", - "c_flags": "-lang=c -nodefaults -proc gekko -enum int -fp hardware -Cpp_exceptions off -O4,p -inline auto -fp_contract on -DVERSION=1 -DDOLPHIN_REV=99 -sym on -DDEBUG=1 -align powerpc -pragma \"cats off\" -pragma \"warn_notinlined off\" -maxerrors 1 -nosyspath -RTTI off -str reuse -multibyte", - "ctx_path": "build/SIM/src/dolphin/os/OSRtc.ctx", - "build_ctx": true - } - }, - { - "name": "dolphin/os/OSSync", - "target_path": "expected/build/SIM/src/dolphin/os/OSSync.o", - "base_path": "build/SIM/src/dolphin/os/OSSync.o", - "reverse_fn_order": false, - "complete": true, - "scratch": { - "platform": "gc_wii", - "compiler": "mwcc_233_163n", - "c_flags": "-lang=c -nodefaults -proc gekko -enum int -fp hardware -Cpp_exceptions off -O4,p -inline auto -fp_contract on -DVERSION=1 -DDOLPHIN_REV=99 -sym on -DDEBUG=1 -align powerpc -pragma \"cats off\" -pragma \"warn_notinlined off\" -maxerrors 1 -nosyspath -RTTI off -str reuse -multibyte", - "ctx_path": "build/SIM/src/dolphin/os/OSSync.ctx", - "build_ctx": true - } - }, - { - "name": "dolphin/os/OSThread", - "target_path": "expected/build/SIM/src/dolphin/os/OSThread.o", - "base_path": "build/SIM/src/dolphin/os/OSThread.o", - "reverse_fn_order": false, - "complete": true, - "scratch": { - "platform": "gc_wii", - "compiler": "mwcc_233_163n", - "c_flags": "-lang=c -nodefaults -proc gekko -enum int -fp hardware -Cpp_exceptions off -O4,p -inline auto -fp_contract on -DVERSION=1 -DDOLPHIN_REV=99 -sym on -DDEBUG=1 -align powerpc -pragma \"cats off\" -pragma \"warn_notinlined off\" -maxerrors 1 -nosyspath -RTTI off -str reuse -multibyte", - "ctx_path": "build/SIM/src/dolphin/os/OSThread.ctx", - "build_ctx": true - } - }, - { - "name": "dolphin/os/__start", - "target_path": "expected/build/SIM/src/dolphin/os/__start.o", - "base_path": "build/SIM/src/dolphin/os/__start.o", - "reverse_fn_order": false, - "complete": true, - "scratch": { - "platform": "gc_wii", - "compiler": "mwcc_233_163n", - "c_flags": "-lang=c -nodefaults -proc gekko -enum int -fp hardware -Cpp_exceptions off -O4,p -inline auto -fp_contract on -DVERSION=1 -DDOLPHIN_REV=99 -sym on -DDEBUG=1 -align powerpc -pragma \"cats off\" -pragma \"warn_notinlined off\" -maxerrors 1 -nosyspath -RTTI off -str reuse -multibyte", - "ctx_path": "build/SIM/src/dolphin/os/__start.ctx", - "build_ctx": true - } - }, - { - "name": "dolphin/os/OSTime", - "target_path": "expected/build/SIM/src/dolphin/os/OSTime.o", - "base_path": "build/SIM/src/dolphin/os/OSTime.o", - "reverse_fn_order": false, - "complete": true, - "scratch": { - "platform": "gc_wii", - "compiler": "mwcc_233_163n", - "c_flags": "-lang=c -nodefaults -proc gekko -enum int -fp hardware -Cpp_exceptions off -O4,p -inline auto -fp_contract on -DVERSION=1 -DDOLPHIN_REV=99 -sym on -DDEBUG=1 -align powerpc -pragma \"cats off\" -pragma \"warn_notinlined off\" -maxerrors 1 -nosyspath -RTTI off -str reuse -multibyte", - "ctx_path": "build/SIM/src/dolphin/os/OSTime.ctx", - "build_ctx": true - } - }, - { - "name": "dolphin/os/__ppc_eabi_init", - "target_path": "expected/build/SIM/src/dolphin/os/__ppc_eabi_init.o", - "base_path": "build/SIM/src/dolphin/os/__ppc_eabi_init.o", - "reverse_fn_order": false, - "complete": true, - "scratch": { - "platform": "gc_wii", - "compiler": "mwcc_233_163n", - "c_flags": "-lang=c -nodefaults -proc gekko -enum int -fp hardware -Cpp_exceptions off -O4,p -inline auto -fp_contract on -DVERSION=1 -DDOLPHIN_REV=99 -sym on -DDEBUG=1 -align powerpc -pragma \"cats off\" -pragma \"warn_notinlined off\" -maxerrors 1 -nosyspath -RTTI off -str reuse -multibyte", - "ctx_path": "build/SIM/src/dolphin/os/__ppc_eabi_init.ctx", - "build_ctx": true - } - } - ] -} diff --git a/orig/ce-e/.gitkeep b/orig/ce-e/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/orig/ce-j/.gitkeep b/orig/ce-j/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/orig/ce-u/.gitkeep b/orig/ce-u/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/orig/mq-e/.gitkeep b/orig/mq-e/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/orig/mq-j/.gitkeep b/orig/mq-j/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/orig/mq-u/.gitkeep b/orig/mq-u/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/src/emulator/mcardGCN.c b/src/emulator/mcardGCN.c index 06522ad..a81d53b 100644 --- a/src/emulator/mcardGCN.c +++ b/src/emulator/mcardGCN.c @@ -1,9 +1,8 @@ #include "emulator/mcardGCN.h" #include "emulator/mcardGCN_jumptables.h" -// ゼルダの伝説:時のオカリナ -char D_800EA548[] = - "\x83\x5b\x83\x8b\x83\x5f\x82\xcc\x93\x60\x90\xe0\x81\x46\x8e\x9e\x82\xcc\x83\x49\x83\x4a\x83\x8a\x83\x69"; +// "The Legend of Zelda: Ocarina of Time" +char D_800EA548[] = "ゼルダの伝説:時のオカリナ"; char D_800EA564[] = "Invalid Memory Card Command %d - Assuming Go To Game"; char D_800EA59C[] = "mcardGCN.c"; diff --git a/src/emulator/movie.c b/src/emulator/movie.c index 235cb67..78e655f 100644 --- a/src/emulator/movie.c +++ b/src/emulator/movie.c @@ -4,6 +4,12 @@ #include "emulator/system.h" #include "emulator/xlCoreGCN.h" +#if VERSION == CE_J +#define MOVIE_FILENAME "final_zelda_credits_sound.thp" +#elif VERSION == CE_U +#define MOVIE_FILENAME "us_final_zelda_credits_sound.thp" +#endif + void* gBufferP; void MovieInit(void) { @@ -13,7 +19,7 @@ void MovieInit(void) { THPPlayerInit(false); if (!simulatorGetArgument(SAT_MOVIE, &szText)) { - THPPlayerOpen("final_zelda_credits_sound.thp", false); + THPPlayerOpen(MOVIE_FILENAME, false); } else { THPPlayerOpen(szText, false); } diff --git a/src/emulator/rom.c b/src/emulator/rom.c index 55fe604..68a2a42 100644 --- a/src/emulator/rom.c +++ b/src/emulator/rom.c @@ -19,6 +19,8 @@ _XL_OBJECTTYPE gClassROM = { (EventFunc)romEvent, }; +#if VERSION == CE_J + static u32 ganOffsetBlock_ZLJ[198] = { 0x01685160, 0x016D376F, 0x016D3770, 0x0172B78F, 0x0172B790, 0x0175E1CF, 0x0175E1D0, 0x017BE4FF, 0x017BE500, 0x0182EA4F, 0x0182EA50, 0x0189A76F, 0x0189A770, 0x0191AD0F, 0x0191AD10, 0x0198436F, 0x01984370, 0x019CA5CF, @@ -69,6 +71,60 @@ static u32 ganOffsetBlock_URAZLJ[198] = { 0x01F45A0F, 0x01F45A10, 0x01F4F24F, 0x01F4F250, 0x01F57B7F, 0x01F57B80, 0x01F6255F, 0x01F62560, 0x01F739DF, }; +#elif VERSION == CE_U + +static u32 ganOffsetBlock_ZLE[198] = { + 0x01685440, 0x016D3A4F, 0x016D3A50, 0x0172BA5F, 0x0172BA60, 0x0175E48F, 0x0175E490, 0x017BE7AF, 0x017BE7B0, + 0x0182ECFF, 0x0182ED00, 0x0189AA1F, 0x0189AA20, 0x0191AFCF, 0x0191AFD0, 0x0198462F, 0x01984630, 0x019CA88F, + 0x019CA890, 0x01A096EF, 0x01A096F0, 0x01A720AF, 0x01A720B0, 0x01A953AF, 0x01A953B0, 0x01AACA1F, 0x01AACA20, + 0x01AC6FEF, 0x01AC6FF0, 0x01ADAA7F, 0x01ADAA80, 0x01AFD89F, 0x01AFD8A0, 0x01B0F46F, 0x01B0F470, 0x01B271CF, + 0x01B271D0, 0x01B3792F, 0x01B37930, 0x01B488FF, 0x01B48900, 0x01B57A0F, 0x01B57A10, 0x01B7779F, 0x01B777A0, + 0x01B8FE2F, 0x01B8FE30, 0x01BA9E8F, 0x01BA9E90, 0x01BB978F, 0x01BB9790, 0x01BCFBFF, 0x01BCFC00, 0x01BEB52F, + 0x01BEB530, 0x01C0266F, 0x01C02670, 0x01C3191F, 0x01C31920, 0x01C344BF, 0x01C344C0, 0x01C36F5F, 0x01C36F60, + 0x01C41EBF, 0x01C41EC0, 0x01C548AF, 0x01C548B0, 0x01C5CB1F, 0x01C5CB20, 0x01C64CEF, 0x01C64CF0, 0x01C6DBBF, + 0x01C6DBC0, 0x01CAE06F, 0x01CAE070, 0x01CB585F, 0x01CB5860, 0x01CC14BF, 0x01CC14C0, 0x01CCB05F, 0x01CCB060, + 0x01CD098F, 0x01CD0990, 0x01CDF8EF, 0x01CDF8F0, 0x01CEF1CF, 0x01CEF1D0, 0x01D00ABF, 0x01D00AC0, 0x01D0E29F, + 0x01D0E2A0, 0x01D0F8BF, 0x01D0F8C0, 0x01D14B6F, 0x01D14B70, 0x01D1B3BF, 0x01D1B3C0, 0x01D289CF, 0x01D289D0, + 0x01D2A2BF, 0x01D2A2C0, 0x01D35DEF, 0x01D35DF0, 0x01D3D81F, 0x01D3D820, 0x01D4393F, 0x01D43940, 0x01D48AAF, + 0x01D48AB0, 0x01D51C0F, 0x01D51C10, 0x01D5713F, 0x01D57140, 0x01D5F4CF, 0x01D5F4D0, 0x01D63FBF, 0x01D63FC0, + 0x01D6B7BF, 0x01D6B7C0, 0x01D7307F, 0x01D73080, 0x01D77C4F, 0x01D77C50, 0x01D7D0FF, 0x01D7D100, 0x01D836FF, + 0x01D83700, 0x01D8872F, 0x01D88730, 0x01D8DFBF, 0x01D8DFC0, 0x01D92F3F, 0x01D92F40, 0x01D9A65F, 0x01D9A660, + 0x01DA3CBF, 0x01DA3CC0, 0x01DB379F, 0x01DB37A0, 0x01DBA75F, 0x01DBA760, 0x01DC56CF, 0x01DC56D0, 0x01DCBE0F, + 0x01DCBE10, 0x01DD551F, 0x01DD5520, 0x01E0A6FF, 0x01E0A700, 0x01E1BFAF, 0x01E1BFB0, 0x01E299AF, 0x01E299B0, + 0x01E33C5F, 0x01E33C60, 0x01E45D3F, 0x01E45D40, 0x01E4CA1F, 0x01E4CA20, 0x01E72F3F, 0x01E72F40, 0x01E8122F, + 0x01E81230, 0x01E90F7F, 0x01E90F80, 0x01E9BEFF, 0x01E9BF00, 0x01EA716F, 0x01EA7170, 0x01EB338F, 0x01EB3390, + 0x01ECB0CF, 0x01ECB0D0, 0x01ED286F, 0x01ED2870, 0x01EDD4BF, 0x01EDD4C0, 0x01EEB49F, 0x01EEB4A0, 0x01EF7C0F, + 0x01EF7C10, 0x01F0A42F, 0x01F0A430, 0x01F12ECF, 0x01F12ED0, 0x01F1C87F, 0x01F1C880, 0x01F2DCAF, 0x01F2DCB0, + 0x01F4439F, 0x01F443A0, 0x01F4DBDF, 0x01F4DBE0, 0x01F5650F, 0x01F56510, 0x01F60EEF, 0x01F60EF0, 0x01F7236F, +}; + +static u32 ganOffsetBlock_URAZLE[198] = { + 0x01686520, 0x016D4EAF, 0x016D4EB0, 0x0172D2EF, 0x0172D2F0, 0x0176030F, 0x01760310, 0x017C079F, 0x017C07A0, + 0x01830BEF, 0x01830BF0, 0x0189CCAF, 0x0189CCB0, 0x0191D55F, 0x0191D560, 0x019874DF, 0x019874E0, 0x019CD7EF, + 0x019CD7F0, 0x01A0C57F, 0x01A0C580, 0x01A7506F, 0x01A75070, 0x01A9836F, 0x01A98370, 0x01AAF9DF, 0x01AAF9E0, + 0x01AC9FAF, 0x01AC9FB0, 0x01ADDA3F, 0x01ADDA40, 0x01B0085F, 0x01B00860, 0x01B1242F, 0x01B12430, 0x01B2A18F, + 0x01B2A190, 0x01B3A8EF, 0x01B3A8F0, 0x01B4B8BF, 0x01B4B8C0, 0x01B5A9CF, 0x01B5A9D0, 0x01B7A75F, 0x01B7A760, + 0x01B92DEF, 0x01B92DF0, 0x01BACE4F, 0x01BACE50, 0x01BBC74F, 0x01BBC750, 0x01BD2BBF, 0x01BD2BC0, 0x01BEE4EF, + 0x01BEE4F0, 0x01C0562F, 0x01C05630, 0x01C348DF, 0x01C348E0, 0x01C3747F, 0x01C37480, 0x01C39F1F, 0x01C39F20, + 0x01C44E7F, 0x01C44E80, 0x01C5786F, 0x01C57870, 0x01C5FADF, 0x01C5FAE0, 0x01C67CAF, 0x01C67CB0, 0x01C70B7F, + 0x01C70B80, 0x01CB102F, 0x01CB1030, 0x01CB881F, 0x01CB8820, 0x01CC447F, 0x01CC4480, 0x01CCE01F, 0x01CCE020, + 0x01CD394F, 0x01CD3950, 0x01CE28AF, 0x01CE28B0, 0x01CF218F, 0x01CF2190, 0x01D03A7F, 0x01D03A80, 0x01D1125F, + 0x01D11260, 0x01D1287F, 0x01D12880, 0x01D17B2F, 0x01D17B30, 0x01D1E37F, 0x01D1E380, 0x01D2B98F, 0x01D2B990, + 0x01D2D27F, 0x01D2D280, 0x01D38DAF, 0x01D38DB0, 0x01D407DF, 0x01D407E0, 0x01D468FF, 0x01D46900, 0x01D4BA6F, + 0x01D4BA70, 0x01D54BCF, 0x01D54BD0, 0x01D5A0FF, 0x01D5A100, 0x01D6248F, 0x01D62490, 0x01D66F7F, 0x01D66F80, + 0x01D6E77F, 0x01D6E780, 0x01D7603F, 0x01D76040, 0x01D7AC0F, 0x01D7AC10, 0x01D800BF, 0x01D800C0, 0x01D866BF, + 0x01D866C0, 0x01D8B6EF, 0x01D8B6F0, 0x01D90F7F, 0x01D90F80, 0x01D95EFF, 0x01D95F00, 0x01D9D61F, 0x01D9D620, + 0x01DA6C7F, 0x01DA6C80, 0x01DB675F, 0x01DB6760, 0x01DBD71F, 0x01DBD720, 0x01DC868F, 0x01DC8690, 0x01DCEDCF, + 0x01DCEDD0, 0x01DD84DF, 0x01DD84E0, 0x01E0D6BF, 0x01E0D6C0, 0x01E1EF6F, 0x01E1EF70, 0x01E2C96F, 0x01E2C970, + 0x01E36C1F, 0x01E36C20, 0x01E48CFF, 0x01E48D00, 0x01E4F9CF, 0x01E4F9D0, 0x01E75EEF, 0x01E75EF0, 0x01E841DF, + 0x01E841E0, 0x01E93F2F, 0x01E93F30, 0x01E9EEAF, 0x01E9EEB0, 0x01EAA11F, 0x01EAA120, 0x01EB633F, 0x01EB6340, + 0x01ECE07F, 0x01ECE080, 0x01ED581F, 0x01ED5820, 0x01EE046F, 0x01EE0470, 0x01EEE44F, 0x01EEE450, 0x01EFABBF, + 0x01EFABC0, 0x01F0D3DF, 0x01F0D3E0, 0x01F15E7F, 0x01F15E80, 0x01F1F82F, 0x01F1F830, 0x01F30C5F, 0x01F30C60, + 0x01F4734F, 0x01F47350, 0x01F50B8F, 0x01F50B90, 0x01F594BF, 0x01F594C0, 0x01F63E9F, 0x01F63EA0, 0x01F7531F, +}; + +#endif + static bool gbProgress; static void* gpImageBack; static s32 iImage; @@ -439,6 +495,7 @@ static bool romCacheGame(Rom* pROM) { bIsCZLE = romTestCode(pROM, "CZLE"); bIsCZLJ = romTestCode(pROM, "CZLJ"); if (bIsCZLE || bIsCZLJ) { +#if VERSION == CE_J if (gnFlagZelda & 2) { if (!bIsCZLE) { pROM->anOffsetBlock = ganOffsetBlock_ZLJ; @@ -448,6 +505,17 @@ static bool romCacheGame(Rom* pROM) { pROM->anOffsetBlock = ganOffsetBlock_URAZLJ; pROM->nCountOffsetBlocks = 0xC6; } +#elif VERSION == CE_U + if (gnFlagZelda & 2) { + if (bIsCZLE) { + pROM->anOffsetBlock = ganOffsetBlock_ZLE; + pROM->nCountOffsetBlocks = 0xC6; + } + } else if (bIsCZLE) { + pROM->anOffsetBlock = ganOffsetBlock_URAZLE; + pROM->nCountOffsetBlocks = 0xC6; + } +#endif if (bIsCZLE) { szName = gnFlagZelda & 2 ? "zle.tpl" : "urazle.tpl"; diff --git a/src/emulator/simGCN.c b/src/emulator/simGCN.c index 0971577..b3670aa 100644 --- a/src/emulator/simGCN.c +++ b/src/emulator/simGCN.c @@ -16,45 +16,24 @@ #include "macros.h" #include "string.h" -u8 gcoverOpen[0x28C1] ALIGNAS(32) = { -#pragma INCBIN("SIM_original.elf", 0x000D8880, 0x28C1) -}; +// clang-format off +#include "gcoverOpen.inc" +#include "gnoDisk.inc" +#include "gretryErr.inc" +#include "gfatalErr.inc" +#include "gwrongDisk.inc" +#include "greadingDisk.inc" +#include "gbar.inc" +#include "gyes.inc" +#include "gno.inc" +#include "gmesgOK.inc" +// clang-format on -u8 gnoDisk[0x1F01] ALIGNAS(32) = { -#pragma INCBIN("SIM_original.elf", 0x000DB160, 0x1F01) -}; - -u8 gretryErr[0x2441] ALIGNAS(32) = { -#pragma INCBIN("SIM_original.elf", 0x000DD080, 0x2441) -}; - -u8 gfatalErr[0x32E1] ALIGNAS(32) = { -#pragma INCBIN("SIM_original.elf", 0x000DF4E0, 0x32E1) -}; - -u8 gwrongDisk[0x1F01] ALIGNAS(32) = { -#pragma INCBIN("SIM_original.elf", 0x000E27E0, 0x1F01) -}; - -u8 greadingDisk[0x0C41] ALIGNAS(32) = { -#pragma INCBIN("SIM_original.elf", 0x000E4700, 0x0C41) -}; - -u8 gbar[0x0741] ALIGNAS(32) = { -#pragma INCBIN("SIM_original.elf", 0x000E5360, 0x0741) -}; - -u8 gyes[0x05C1] ALIGNAS(32) = { -#pragma INCBIN("SIM_original.elf", 0x000E5AC0, 0x05C1) -}; - -u8 gno[0x05C1] ALIGNAS(32) = { -#pragma INCBIN("SIM_original.elf", 0x000E60A0, 0x05C1) -}; - -u8 gmesgOK[0x0341] ALIGNAS(32) = { -#pragma INCBIN("SIM_original.elf", 0x000E6680, 0x0341) -}; +#if VERSION == CE_J +#define DEFAULT_ROM_NAME "zlj_f.n64" +#elif VERSION == CE_U +#define DEFAULT_ROM_NAME "zle_f.n64" +#endif s16 Vert_s16[12] ALIGNAS(32) = { 0x0000, 0x0000, 0xFFFF, 0x00C8, 0x0000, 0xFFFF, 0x00C8, 0x00C8, 0xFFFF, 0x0000, 0x00C8, 0xFFFF, @@ -2305,7 +2284,7 @@ bool xlMain(void) { if (simulatorGetArgument(SAT_NAME, &szNameROM)) { strcpy(acNameROM, szNameROM); } else { - strcpy(acNameROM, "zlj_f.n64"); + strcpy(acNameROM, DEFAULT_ROM_NAME); } iName = strlen(acNameROM) - 1; diff --git a/src/emulator/system.c b/src/emulator/system.c index 268233d..162561f 100644 --- a/src/emulator/system.c +++ b/src/emulator/system.c @@ -25,6 +25,16 @@ #include "stdlib.h" #include "string.h" +#if VERSION == CE_J +#define MCARD_FILE_NAME "ZELDA1" +#define MCARD_COMMENT "ゼルダコレクション" // "Zelda Collection" +#define MCARD_FILE_SIZE 0xC000 +#elif VERSION == CE_U +#define MCARD_FILE_NAME "ZELDA1" +#define MCARD_COMMENT "Zelda: Collector's Edition" +#define MCARD_FILE_SIZE 0xC000 +#endif + _XL_OBJECTTYPE gClassSystem = { "SYSTEM (N64)", sizeof(System), @@ -169,12 +179,27 @@ static bool systemSetupGameRAM(System* pSystem) { if (romTestCode(pROM, "CZLJ") || romTestCode(pROM, "CZLE") || romTestCode(pROM, "NZSJ") || romTestCode(pROM, "NZSE")) { switch (nCode) { +#if VERSION == CE_U + case 0x5CAC1CF7: +#else case 0x5CAC1C8F: +#endif gnFlagZelda = 2; break; case 0x184CED80: gnFlagZelda = 3; break; +#if VERSION == CE_U + case 0x5CAC1C27: + gnFlagZelda = 0; + break; + case 0x5CAC1C8F: + gnFlagZelda = romTestCode(pROM, "CZLE") ? 2 : 0; + break; + case 0x184CED18: + gnFlagZelda = 1; + break; +#endif case 0x54A59B56: case 0x421EB8E9: gnFlagZelda = 4; @@ -523,10 +548,8 @@ static bool systemSetupGameALL(System* pSystem) { DVDClose(&fileInfo); simulatorUnpackTexPalette((TEXPalette*)mCard.saveBanner); - // "ゼルダコレクション" - mcardOpen(&mCard, "ZELDA1", "\x83\x5b\x83\x8b\x83\x5f\x83\x52\x83\x8c\x83\x4e\x83\x56\x83\x87\x83\x93", - mCard.saveIcon, mCard.saveBanner, "ZELDAX", - &gSystemRomConfigurationList[i].currentControllerConfig, 0xC000, 0x8000); + mcardOpen(&mCard, MCARD_FILE_NAME, MCARD_COMMENT, mCard.saveIcon, mCard.saveBanner, "ZELDAX", + &gSystemRomConfigurationList[i].currentControllerConfig, MCARD_FILE_SIZE, 0x8000); } else { if (DVDOpen(Z_ICON_PATH, &fileInfo) == 1 && !simulatorDVDRead(&fileInfo, mCard.saveIcon, (gz_iconSize + 0x1F) & 0xFFFFFFE0, 0, NULL)) { @@ -543,10 +566,8 @@ static bool systemSetupGameALL(System* pSystem) { DVDClose(&fileInfo); simulatorUnpackTexPalette((TEXPalette*)mCard.saveBanner); - // "ゼルダコレクション" - mcardOpen(&mCard, "ZELDA1", "\x83\x5b\x83\x8b\x83\x5f\x83\x52\x83\x8c\x83\x4e\x83\x56\x83\x87\x83\x93", - mCard.saveIcon, mCard.saveBanner, "ZELDA", - &gSystemRomConfigurationList[i].currentControllerConfig, 0xC000, 0x8000); + mcardOpen(&mCard, MCARD_FILE_NAME, MCARD_COMMENT, mCard.saveIcon, mCard.saveBanner, "ZELDA", + &gSystemRomConfigurationList[i].currentControllerConfig, MCARD_FILE_SIZE, 0x8000); } } else { // debug rom? diff --git a/src/emulator/xlCoreGCN.c b/src/emulator/xlCoreGCN.c index ce03f39..b08ddc3 100644 --- a/src/emulator/xlCoreGCN.c +++ b/src/emulator/xlCoreGCN.c @@ -6,9 +6,7 @@ #include "emulator/xlPostGCN.h" #include "macros.h" -u8 gTgPcTPL[32897] = { -#pragma INCBIN("SIM_original.elf", 0x000D07A0, 0x00008081) -}; +#include "gTgPcTPL.inc" static GXRenderModeObj rmodeobj; GXTexObj g_texMap[4]; diff --git a/tools/Makefile b/tools/Makefile deleted file mode 100644 index 475fc94..0000000 --- a/tools/Makefile +++ /dev/null @@ -1,39 +0,0 @@ - -ifeq ($(OS),Windows_NT) - BINUTILS_ZIP=windows-x86_64 -else - UNAME_S := $(shell uname -s) - ifeq ($(UNAME_S),Linux) - BINUTILS_ZIP=linux-x86_64 - endif - ifeq ($(UNAME_S),Darwin) - BINUTILS_ZIP=macos-universal - endif -endif - -BINUTILS_TAG := 2.42-1 -COMPILERS_TAG := 20231018 - -.PHONY: all clean - -all: binutils mwcc_compiler - $(MAKE) -C elf2dol - -clean: - rm -rf binutils - rm -rf mwcc_compiler - $(MAKE) -C elf2dol clean - -binutils: - mkdir -p binutils - wget https://github.com/encounter/gc-wii-binutils/releases/download/$(BINUTILS_TAG)/$(BINUTILS_ZIP).zip -O binutils/$(BINUTILS_ZIP).zip - unzip binutils/$(BINUTILS_ZIP).zip -d binutils - rm binutils/$(BINUTILS_ZIP).zip - chmod +x binutils/powerpc-eabi-* - -mwcc_compiler: - mkdir -p mwcc_compiler - wget https://files.decomp.dev/compilers_$(COMPILERS_TAG).zip -O mwcc_compiler/compilers_$(COMPILERS_TAG).zip - unzip mwcc_compiler/compilers_$(COMPILERS_TAG).zip -d mwcc_compiler - rm mwcc_compiler/compilers_$(COMPILERS_TAG).zip - find mwcc_compiler/ -name '*.exe' -exec chmod +x {} \; diff --git a/tools/__init__.py b/tools/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/tools/asm_processor/asm_processor.py b/tools/asm_processor/asm_processor.py index 1de8020..096ccaa 100755 --- a/tools/asm_processor/asm_processor.py +++ b/tools/asm_processor/asm_processor.py @@ -938,6 +938,8 @@ def fixup_objfile(objfile_name, functions, asm_prelude, assembler, output_enc): late_rodata_source_name_start = None late_rodata_source_name_end = None + function_sizes = {function.text_glabels[0]: function.data['.text'][1] for function in functions} + # Generate an assembly file with all the assembly we need to fill in. For # simplicity we pad with nops/.space so that addresses match exactly, so we # don't have to fix up relocations/symbol references. @@ -1134,6 +1136,8 @@ def fixup_objfile(objfile_name, functions, asm_prelude, assembler, output_enc): if objfile.sections[s.st_shndx].name == '.rodata' and s.st_value in moved_late_rodata: s.st_value = moved_late_rodata[s.st_value] s.st_name += strtab_adj + if s.name in function_sizes: + s.st_size = function_sizes[s.name] if is_local: new_local_syms.append(s) else: diff --git a/tools/asm_processor/compile.sh b/tools/asm_processor/compile.sh index 5ae039f..6c7c6c4 100755 --- a/tools/asm_processor/compile.sh +++ b/tools/asm_processor/compile.sh @@ -1,15 +1,27 @@ #!/bin/bash +set -euo pipefail + CC="$1" shift AS="$1" shift +IN="$1" +shift +OUT="$1" # When running windows exes through wsl1 you can't give them linux paths mkdir -p tools/asm_processor/tmp -temp="$(mktemp -d tools/asm_processor/tmp/XXXXXX)" +TEMP="$(mktemp -d tools/asm_processor/tmp/XXXXXX)" +trap "rm -rf $TEMP" EXIT -tools/asm_processor/asm_processor.py "$2" > "$temp.c" && -$CC "$temp.c" -c -o "$temp.o" && -tools/asm_processor/asm_processor.py "$2" --post-process "$temp.o" --assembler "$AS" --asm-prelude include/macros.inc && -tools/binutils/powerpc-eabi-objcopy --remove-section .mwcats.text --remove-section .comment "$temp.o" "$1" +STEM=$(basename "$IN") +STEM="${STEM%.*}" + +tools/asm_processor/asm_processor.py "$IN" > "$TEMP/$STEM.c" +$CC "$TEMP/$STEM.c" -c -o "$TEMP" +tools/asm_processor/asm_processor.py "$IN" --post-process "$TEMP/$STEM.o" --assembler "$AS" --asm-prelude include/macros.inc +# Remove sections that don't work with our reloc hacks +build/binutils/powerpc-eabi-objcopy --remove-section .mwcats.text --remove-section .comment "$TEMP/$STEM.o" "$OUT" +# Copy depfile, replacing the first line with the correct input/output files +( echo "$OUT: $IN \\"; tail -n +2 "$TEMP/$STEM.d" ) > "${OUT%.*}.d" diff --git a/tools/decompctx.py b/tools/decompctx.py new file mode 100755 index 0000000..e86d5ef --- /dev/null +++ b/tools/decompctx.py @@ -0,0 +1,120 @@ +#!/usr/bin/env python3 + +### +# Generates a ctx.c file, usable for "Context" on https://decomp.me. +# +# Usage: +# python3 tools/decompctx.py src/file.cpp +# +# If changes are made, please submit a PR to +# https://github.com/encounter/dtk-template +### + +import argparse +import os +import re +from typing import List + +script_dir = os.path.dirname(os.path.realpath(__file__)) +root_dir = os.path.abspath(os.path.join(script_dir, "..")) +src_dir = os.path.join(root_dir, "src") +include_dirs = [ + os.path.join(root_dir, "include"), + # Add additional include directories here +] + +include_pattern = re.compile(r'^#include\s*[<"](.+?)[>"]$') +guard_pattern = re.compile(r"^#ifndef\s+(.*)$") + +defines = set() + + +def import_h_file(in_file: str, r_path: str, deps: List[str]) -> str: + rel_path = os.path.join(root_dir, r_path, in_file) + if os.path.exists(rel_path): + return import_c_file(rel_path, deps) + for include_dir in include_dirs: + inc_path = os.path.join(include_dir, in_file) + if os.path.exists(inc_path): + return import_c_file(inc_path, deps) + else: + print("Failed to locate", in_file) + return "" + + +def import_c_file(in_file: str, deps: List[str]) -> str: + in_file = os.path.relpath(in_file, root_dir) + deps.append(in_file) + out_text = "" + + try: + with open(in_file, encoding="utf-8") as file: + out_text += process_file(in_file, list(file), deps) + except Exception: + with open(in_file) as file: + out_text += process_file(in_file, list(file), deps) + return out_text + + +def process_file(in_file: str, lines: List[str], deps: List[str]) -> str: + out_text = "" + for idx, line in enumerate(lines): + guard_match = guard_pattern.match(line.strip()) + if idx == 0: + if guard_match: + if guard_match[1] in defines: + break + defines.add(guard_match[1]) + print("Processing file", in_file) + include_match = include_pattern.match(line.strip()) + if include_match and not include_match[1].endswith(".s"): + out_text += f'/* "{in_file}" line {idx} "{include_match[1]}" */\n' + out_text += import_h_file(include_match[1], os.path.dirname(in_file), deps) + out_text += f'/* end "{include_match[1]}" */\n' + else: + out_text += line + + return out_text + + +def sanitize_path(path: str) -> str: + return path.replace("\\", "/").replace(" ", "\\ ") + + +def main(): + parser = argparse.ArgumentParser( + description="""Create a context file which can be used for decomp.me""" + ) + parser.add_argument( + "c_file", + help="""File from which to create context""", + ) + parser.add_argument( + "-o", + "--output", + help="""Output file""", + default="ctx.c", + ) + parser.add_argument( + "-d", + "--depfile", + help="""Dependency file""", + ) + args = parser.parse_args() + + deps = [] + output = import_c_file(args.c_file, deps) + + with open(os.path.join(root_dir, args.output), "w", encoding="utf-8") as f: + f.write(output) + + if args.depfile: + with open(os.path.join(root_dir, args.depfile), "w", encoding="utf-8") as f: + f.write(sanitize_path(args.output) + ":") + for dep in deps: + path = sanitize_path(dep) + f.write(f" \\\n\t{path}") + + +if __name__ == "__main__": + main() diff --git a/tools/download_tool.py b/tools/download_tool.py new file mode 100644 index 0000000..594f647 --- /dev/null +++ b/tools/download_tool.py @@ -0,0 +1,117 @@ +#!/usr/bin/env python3 + +### +# Downloads various tools from GitHub releases. +# +# Usage: +# python3 tools/download_tool.py wibo build/tools/wibo --tag 1.0.0 +# +# If changes are made, please submit a PR to +# https://github.com/encounter/dtk-template +### + +import argparse +import io +import os +import platform +import shutil +import stat +import urllib.request +import zipfile +from typing import Callable, Dict +from pathlib import Path + + +def binutils_url(tag): + uname = platform.uname() + system = uname.system.lower() + arch = uname.machine.lower() + if system == "darwin": + system = "macos" + arch = "universal" + elif arch == "amd64": + arch = "x86_64" + + repo = "https://github.com/encounter/gc-wii-binutils" + return f"{repo}/releases/download/{tag}/{system}-{arch}.zip" + + +def compilers_url(tag: str) -> str: + return f"https://files.decomp.dev/compilers_{tag}.zip" + + +def dtk_url(tag: str) -> str: + uname = platform.uname() + suffix = "" + system = uname.system.lower() + if system == "darwin": + system = "macos" + elif system == "windows": + suffix = ".exe" + arch = uname.machine.lower() + if arch == "amd64": + arch = "x86_64" + + repo = "https://github.com/encounter/decomp-toolkit" + return f"{repo}/releases/download/{tag}/dtk-{system}-{arch}{suffix}" + + +def sjiswrap_url(tag: str) -> str: + repo = "https://github.com/encounter/sjiswrap" + return f"{repo}/releases/download/{tag}/sjiswrap-windows-x86.exe" + + +def wibo_url(tag: str) -> str: + repo = "https://github.com/decompals/wibo" + return f"{repo}/releases/download/{tag}/wibo" + + +TOOLS: Dict[str, Callable[[str], str]] = { + "binutils": binutils_url, + "compilers": compilers_url, + "dtk": dtk_url, + "sjiswrap": sjiswrap_url, + "wibo": wibo_url, +} + + +def main() -> None: + parser = argparse.ArgumentParser() + parser.add_argument("tool", help="Tool name") + parser.add_argument("output", type=Path, help="output file path") + parser.add_argument("--tag", help="GitHub tag", required=True) + args = parser.parse_args() + + url = TOOLS[args.tool](args.tag) + output = Path(args.output) + + print(f"Downloading {url} to {output}") + req = urllib.request.Request(url, headers={"User-Agent": "Mozilla/5.0"}) + with urllib.request.urlopen(req) as response: + if url.endswith(".zip"): + data = io.BytesIO(response.read()) + with zipfile.ZipFile(data) as f: + f.extractall(output) + # Make all files executable + for root, _, files in os.walk(output): + for name in files: + os.chmod(os.path.join(root, name), 0o755) + output.touch(mode=0o755) # Update dir modtime + else: + with open(output, "wb") as f: + shutil.copyfileobj(response, f) + st = os.stat(output) + os.chmod(output, st.st_mode | stat.S_IEXEC) + + # Hack around CWParserSetOutputFileDirectory bug + if args.tool == "compilers": + compiler_path = output.joinpath("GC/1.1/mwldeppc.exe") + data = None + with open(compiler_path, "rb") as infile: + data = bytearray(infile.read()) + data = data.replace(b"\xb9\x41\0\0\0\xf3\xa5\x8d\x44\x24\x04", b"\xb9\x51\0\0\0\xf3\xa5\x8d\x44\x24\x04") + with open(compiler_path, "wb") as outfile: + outfile.write(data) + +if __name__ == "__main__": + main() diff --git a/tools/elf2dol/Makefile b/tools/elf2dol/Makefile deleted file mode 100644 index f49b466..0000000 --- a/tools/elf2dol/Makefile +++ /dev/null @@ -1,13 +0,0 @@ -ELF2DOL := elf2dol -ELF2DOL_CC := cc -ELF2DOL_CFLAGS := -O3 -Wall -s - -all: $(ELF2DOL) - -clean: - $(RM) elf2dol - -.PHONY: all clean - -$(ELF2DOL): - $(ELF2DOL_CC) $(ELF2DOL_CFLAGS) -o $(ELF2DOL) elf2dol.c diff --git a/tools/elf2dol/elf2dol.c b/tools/elf2dol/elf2dol.c deleted file mode 100644 index b3edf68..0000000 --- a/tools/elf2dol/elf2dol.c +++ /dev/null @@ -1,497 +0,0 @@ -#include -#include -#include -#include -#include -#include - -#ifndef MAX -//! Get the maximum of two values -#define MAX(a, b) (((a) > (b)) ? (a) : (b)) -#endif - -#ifndef MIN -//! Get the minimum of two values -#define MIN(a, b) (((a) < (b)) ? (a) : (b)) -#endif - -#define ARRAY_COUNT(arr) (sizeof(arr)/sizeof((arr)[0])) - -#define EI_NIDENT 16 - -typedef struct { - unsigned char e_ident[EI_NIDENT]; - uint16_t e_type; - uint16_t e_machine; - uint32_t e_version; - uint32_t e_entry; - uint32_t e_phoff; - uint32_t e_shoff; - uint32_t e_flags; - uint16_t e_ehsize; - uint16_t e_phentsize; - uint16_t e_phnum; - uint16_t e_shentsize; - uint16_t e_shnum; - uint16_t e_shstrndx; -} Elf32_Ehdr; - -#define EI_CLASS 4 -#define EI_DATA 5 -#define EI_VERSION 6 -#define EI_PAD 7 -#define EI_NIDENT 16 - -#define ELFCLASS32 1 -#define ELFDATA2MSB 2 -#define EV_CURRENT 1 - -#define ET_EXEC 2 -#define EM_PPC 20 - -typedef struct { - uint32_t p_type; - uint32_t p_offset; - uint32_t p_vaddr; - uint32_t p_paddr; - uint32_t p_filesz; - uint32_t p_memsz; - uint32_t p_flags; - uint32_t p_align; -} Elf32_Phdr; - -#define PT_LOAD 1 -#define PF_R 4 -#define PF_W 2 -#define PF_X 1 - -int verbosity = 0; - -#if BYTE_ORDER == BIG_ENDIAN - -#define swap32(x) (x) -#define swap16(x) (x) - -#else - -static inline uint32_t swap32(uint32_t v) -{ - return (v >> 24) | - ((v >> 8) & 0x0000FF00) | - ((v << 8) & 0x00FF0000) | - (v << 24); -} - -static inline uint16_t swap16(uint16_t v) -{ - return (v >> 8) | (v << 8); -} - -#endif /* BIG_ENDIAN */ - -typedef struct { - - uint32_t text_off[7]; - uint32_t data_off[11]; - uint32_t text_addr[7]; - uint32_t data_addr[11]; - uint32_t text_size[7]; - uint32_t data_size[11]; - uint32_t bss_addr; - uint32_t bss_size; - uint32_t entry; - uint32_t pad[7]; -} DOL_hdr; - -#define HAVE_BSS 1 - -#define MAX_TEXT_SEGMENTS 7 -#define MAX_DATA_SEGMENTS 11 - -#define DOL_ALIGNMENT 32 - -#define DOL_ALIGN(x) (((x) + DOL_ALIGNMENT - 1) & ~(DOL_ALIGNMENT - 1)) - -typedef struct { - DOL_hdr header; - int text_cnt; - int data_cnt; - uint32_t text_elf_off[7]; - uint32_t data_elf_off[11]; - uint32_t flags; - FILE *elf; -} DOL_map; - -void usage(const char *name) -{ - fprintf(stderr, "Usage: %s [-h] [-v] [--] elf-file dol-file\n", name); - fprintf(stderr, " Convert an ELF file to a DOL file (by segments)\n"); - fprintf(stderr, " Options:\n"); - fprintf(stderr, " -h Show this help\n"); - fprintf(stderr, " -v Be more verbose (twice for even more)\n"); -} - -#define die(x) { fprintf(stderr, x "\n"); exit(1); } -#define perrordie(x) { perror(x); exit(1); } - -void ferrordie(FILE *f, const char *str) -{ - if(ferror(f)) { - fprintf(stderr, "Error while "); - perrordie(str); - } else if(feof(f)) { - fprintf(stderr, "EOF while %s\n", str); - exit(1); - } else { - fprintf(stderr, "Unknown error while %s\n", str); - exit(1); - } -} - -void add_bss(DOL_map *map, uint32_t paddr, uint32_t memsz) -{ - if(map->flags & HAVE_BSS) { - uint32_t curr_start = swap32(map->header.bss_addr); - uint32_t curr_size = swap32(map->header.bss_size); - if (paddr < curr_start) - map->header.bss_addr = swap32(paddr); - // Total BSS size should be the end of the last bss section minus the - // start of the first bss section. - if (paddr + memsz > curr_start + curr_size) - map->header.bss_size = swap32(paddr + memsz - curr_start); - } else { - map->header.bss_addr = swap32(paddr); - map->header.bss_size = swap32(memsz); - map->flags |= HAVE_BSS; - } -} - -void read_elf_segments(DOL_map *map, const char *elf) -{ - int read, i; - Elf32_Ehdr ehdr; - - if(verbosity >= 2) - fprintf(stderr, "Reading ELF file...\n"); - - map->elf = fopen(elf, "rb"); - if(!map->elf) - perrordie("Could not open ELF file"); - - read = fread(&ehdr, sizeof(ehdr), 1, map->elf); - if(read != 1) - ferrordie(map->elf, "reading ELF header"); - - if(memcmp(&ehdr.e_ident[0], "\177ELF", 4)) - die("Invalid ELF header"); - if(ehdr.e_ident[EI_CLASS] != ELFCLASS32) - die("Invalid ELF class"); - if(ehdr.e_ident[EI_DATA] != ELFDATA2MSB) - die("Invalid ELF byte order"); - if(ehdr.e_ident[EI_VERSION] != EV_CURRENT) - die("Invalid ELF ident version"); - if(swap32(ehdr.e_version) != EV_CURRENT) - die("Invalid ELF version"); - if(swap16(ehdr.e_type) != ET_EXEC) - die("ELF is not an executable"); - if(swap16(ehdr.e_machine) != EM_PPC) - die("Machine is not PowerPC"); - if(!swap32(ehdr.e_entry)) - die("ELF has no entrypoint"); - - map->header.entry = ehdr.e_entry; - - if(verbosity >= 2) - fprintf(stderr, "Valid ELF header found\n"); - - uint16_t phnum = swap16(ehdr.e_phnum); - uint32_t phoff = swap32(ehdr.e_phoff); - Elf32_Phdr *phdrs; - - if(!phnum || !phoff) - die("ELF has no program headers"); - - if(swap16(ehdr.e_phentsize) != sizeof(Elf32_Phdr)) - die("Invalid program header entry size"); - - phdrs = malloc(phnum * sizeof(Elf32_Phdr)); - - if(fseek(map->elf, phoff, SEEK_SET) < 0) - ferrordie(map->elf, "reading ELF program headers"); - read = fread(phdrs, sizeof(Elf32_Phdr), phnum, map->elf); - if(read != phnum) - ferrordie(map->elf, "reading ELF program headers"); - - for(i=0; i= 2) - fprintf(stderr, "PHDR %d: 0x%x [0x%x] -> 0x%08x [0x%x] flags 0x%x\n", - i, offset, filesz, paddr, memsz, flags); - if(flags & PF_X) { - // TEXT segment - if(!(flags & PF_R)) - fprintf(stderr, "Warning: non-readable segment %d\n", i); - if(flags & PF_W) - fprintf(stderr, "Warning: writable and executable segment %d\n", i); - if(filesz > memsz) { - fprintf(stderr, "Error: TEXT segment %d memory size (0x%x) smaller than file size (0x%x)\n", - i, memsz, filesz); - exit(1); - } else if (memsz > filesz) { - add_bss(map, paddr + filesz, memsz - filesz); - } - if(map->text_cnt >= MAX_TEXT_SEGMENTS) { - die("Error: Too many TEXT segments"); - } - map->header.text_addr[map->text_cnt] = swap32(paddr); - map->header.text_size[map->text_cnt] = swap32(filesz); - map->text_elf_off[map->text_cnt] = offset; - map->text_cnt++; - } else { - // DATA or BSS segment - if(!(flags & PF_R)) - fprintf(stderr, "Warning: non-readable segment %d\n", i); - if(filesz == 0) { - // BSS segment - add_bss(map, paddr, memsz); - } else { - // DATA segment - if(filesz > memsz) { - fprintf(stderr, "Error: segment %d memory size (0x%x) is smaller than file size (0x%x)\n", - i, memsz, filesz); - exit(1); - } - if(map->data_cnt >= MAX_DATA_SEGMENTS) { - die("Error: Too many DATA segments"); - } - map->header.data_addr[map->data_cnt] = swap32(paddr); - map->header.data_size[map->data_cnt] = swap32(filesz); - map->data_elf_off[map->data_cnt] = offset; - map->data_cnt++; - } - } - - } else { - if(verbosity >= 1) - fprintf(stderr, "Skipping empty program header %d\n", i); - } - } else if(verbosity >= 1) { - fprintf(stderr, "Skipping program header %d of type %d\n", i, swap32(phdrs[i].p_type)); - } - } - if(verbosity >= 2) { - fprintf(stderr, "Segments:\n"); - for(i=0; itext_cnt; i++) { - fprintf(stderr, " TEXT %d: 0x%08x [0x%x] from ELF offset 0x%x\n", - i, swap32(map->header.text_addr[i]), swap32(map->header.text_size[i]), - map->text_elf_off[i]); - } - for(i=0; idata_cnt; i++) { - fprintf(stderr, " DATA %d: 0x%08x [0x%x] from ELF offset 0x%x\n", - i, swap32(map->header.data_addr[i]), swap32(map->header.data_size[i]), - map->data_elf_off[i]); - } - if(map->flags & HAVE_BSS) - fprintf(stderr, " BSS segment: 0x%08x [0x%x]\n", swap32(map->header.bss_addr), - swap32(map->header.bss_size)); - } -} - -void map_dol(DOL_map *map) -{ - uint32_t fpos; - int i; - - if(verbosity >= 2) - fprintf(stderr, "Laying out DOL file...\n"); - - fpos = DOL_ALIGN(sizeof(DOL_hdr)); - - for(i=0; itext_cnt; i++) { - if(verbosity >= 2) - fprintf(stderr, " TEXT segment %d at 0x%x\n", i, fpos); - map->header.text_off[i] = swap32(fpos); - fpos = DOL_ALIGN(fpos + swap32(map->header.text_size[i])); - } - for(i=0; idata_cnt; i++) { - if(verbosity >= 2) - fprintf(stderr, " DATA segment %d at 0x%x\n", i, fpos); - map->header.data_off[i] = swap32(fpos); - fpos = DOL_ALIGN(fpos + swap32(map->header.data_size[i])); - } - - if(map->text_cnt == 0) { - if(verbosity >= 1) - fprintf(stderr, "Note: adding dummy TEXT segment to work around IOS bug\n"); - map->header.text_off[0] = swap32(DOL_ALIGN(sizeof(DOL_hdr))); - } - if(map->data_cnt == 0) { - if(verbosity >= 1) - fprintf(stderr, "Note: adding dummy DATA segment to work around IOS bug\n"); - map->header.data_off[0] = swap32(DOL_ALIGN(sizeof(DOL_hdr))); - } -} - -#define BLOCK (1024*1024) - -void fcpy(FILE *dst, FILE *src, uint32_t dst_off, uint32_t src_off, uint32_t size) -{ - int left = size; - int read; - int written; - int block; - void *blockbuf; - - if(fseek(src, src_off, SEEK_SET) < 0) - ferrordie(src, "reading ELF segment data"); - if(fseek(dst, dst_off, SEEK_SET) < 0) - ferrordie(dst, "writing DOL segment data"); - - blockbuf = malloc(MIN(BLOCK, left)); - - while(left) { - block = MIN(BLOCK, left); - read = fread(blockbuf, 1, block, src); - if(read != block) { - free(blockbuf); - ferrordie(src, "reading ELF segment data"); - } - written = fwrite(blockbuf, 1, block, dst); - if(written != block) { - free(blockbuf); - ferrordie(dst, "writing DOL segment data"); - } - left -= block; - } - free(blockbuf); -} - -void fpad(FILE *dst, uint32_t dst_off, uint32_t size) -{ - uint32_t i; - - if(fseek(dst, dst_off, SEEK_SET) < 0) - ferrordie(dst, "writing DOL segment data"); - for(i=0; i= 2) - fprintf(stderr, "Writing DOL file...\n"); - - dolf = fopen(dol, "wb"); - if(!dolf) - perrordie("Could not open DOL file"); - - if(verbosity >= 2) { - fprintf(stderr, "DOL header:\n"); - for(i=0; itext_cnt); i++) - fprintf(stderr, " TEXT %d @ 0x%08x [0x%x] off 0x%x\n", i, - swap32(map->header.text_addr[i]), swap32(map->header.text_size[i]), - swap32(map->header.text_off[i])); - for(i=0; idata_cnt); i++) - fprintf(stderr, " DATA %d @ 0x%08x [0x%x] off 0x%x\n", i, - swap32(map->header.data_addr[i]), swap32(map->header.data_size[i]), - swap32(map->header.data_off[i])); - if(swap32(map->header.bss_addr) && swap32(map->header.bss_size)) - fprintf(stderr, " BSS @ 0x%08x [0x%x]\n", swap32(map->header.bss_addr), - swap32(map->header.bss_size)); - fprintf(stderr, " Entry: 0x%08x\n", swap32(map->header.entry)); - fprintf(stderr, "Writing DOL header...\n"); - } - - // Write DOL header with aligned text and data section sizes - DOL_hdr aligned_header = map->header; - for(i=0; itext_cnt; i++) { - uint32_t size = swap32(map->header.text_size[i]); - uint32_t padded_size = DOL_ALIGN(size); - if(verbosity >= 2) - fprintf(stderr, "Writing TEXT segment %d...\n", i); - fcpy(dolf, map->elf, swap32(map->header.text_off[i]), map->text_elf_off[i], size); - if (padded_size > size) - fpad(dolf, swap32(map->header.text_off[i]) + size, padded_size - size); - } - for(i=0; idata_cnt; i++) { - uint32_t size = swap32(map->header.data_size[i]); - uint32_t padded_size = DOL_ALIGN(size); - if(verbosity >= 2) - fprintf(stderr, "Writing DATA segment %d...\n", i); - fcpy(dolf, map->elf, swap32(map->header.data_off[i]), map->data_elf_off[i], size); - if (padded_size > size) - fpad(dolf, swap32(map->header.data_off[i]) + size, padded_size - size); - } - - if(verbosity >= 2) - fprintf(stderr, "All done!\n"); - - fclose(map->elf); - fclose(dolf); -} - -int main(int argc, char **argv) -{ - char **arg; - - if(argc < 2) { - usage(argv[0]); - return 1; - } - arg = &argv[1]; - argc--; - - while(argc && *arg[0] == '-') { - if(!strcmp(*arg, "-h")) { - usage(argv[0]); - return 1; - } else if(!strcmp(*arg, "-v")) { - verbosity++; - } else if(!strcmp(*arg, "--")) { - arg++; - argc--; - break; - } else { - fprintf(stderr, "Unrecognized option %s\n", *arg); - usage(argv[0]); - return 1; - } - arg++; - argc--; - } - if(argc < 2) { - usage(argv[0]); - exit(1); - } - - const char *elf_file = arg[0]; - const char *dol_file = arg[1]; - - DOL_map map; - - memset(&map, 0, sizeof(map)); - - read_elf_segments(&map, elf_file); - map_dol(&map); - write_dol(&map, dol_file); - - return 0; -} diff --git a/tools/ninja_syntax.py b/tools/ninja_syntax.py new file mode 100644 index 0000000..7306ee1 --- /dev/null +++ b/tools/ninja_syntax.py @@ -0,0 +1,254 @@ +# Copyright 2011 Google Inc. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +"""Python module for generating .ninja files. + +Note that this is emphatically not a required piece of Ninja; it's +just a helpful utility for build-file-generation systems that already +use Python. +""" + +import re +import textwrap +import os +from io import StringIO +from pathlib import Path +from typing import Dict, List, Match, Optional, Tuple, Union + +NinjaPath = Union[str, Path] +NinjaPaths = Union[ + List[str], + List[Path], + List[NinjaPath], + List[Optional[str]], + List[Optional[Path]], + List[Optional[NinjaPath]], +] +NinjaPathOrPaths = Union[NinjaPath, NinjaPaths] + + +def escape_path(word: str) -> str: + return word.replace("$ ", "$$ ").replace(" ", "$ ").replace(":", "$:") + + +class Writer(object): + def __init__(self, output: StringIO, width: int = 78) -> None: + self.output = output + self.width = width + + def newline(self) -> None: + self.output.write("\n") + + def comment(self, text: str) -> None: + for line in textwrap.wrap( + text, self.width - 2, break_long_words=False, break_on_hyphens=False + ): + self.output.write("# " + line + "\n") + + def variable( + self, + key: str, + value: Optional[NinjaPathOrPaths], + indent: int = 0, + ) -> None: + value = " ".join(serialize_paths(value)) + self._line("%s = %s" % (key, value), indent) + + def pool(self, name: str, depth: int) -> None: + self._line("pool %s" % name) + self.variable("depth", str(depth), indent=1) + + def rule( + self, + name: str, + command: str, + description: Optional[str] = None, + depfile: Optional[NinjaPath] = None, + generator: bool = False, + pool: Optional[str] = None, + restat: bool = False, + rspfile: Optional[NinjaPath] = None, + rspfile_content: Optional[NinjaPath] = None, + deps: Optional[NinjaPathOrPaths] = None, + ) -> None: + self._line("rule %s" % name) + self.variable("command", command, indent=1) + if description: + self.variable("description", description, indent=1) + if depfile: + self.variable("depfile", depfile, indent=1) + if generator: + self.variable("generator", "1", indent=1) + if pool: + self.variable("pool", pool, indent=1) + if restat: + self.variable("restat", "1", indent=1) + if rspfile: + self.variable("rspfile", rspfile, indent=1) + if rspfile_content: + self.variable("rspfile_content", rspfile_content, indent=1) + if deps: + self.variable("deps", deps, indent=1) + + def build( + self, + outputs: NinjaPathOrPaths, + rule: str, + inputs: Optional[NinjaPathOrPaths] = None, + implicit: Optional[NinjaPathOrPaths] = None, + order_only: Optional[NinjaPathOrPaths] = None, + variables: Optional[ + Union[ + List[Tuple[str, Optional[NinjaPathOrPaths]]], + Dict[str, Optional[NinjaPathOrPaths]], + ] + ] = None, + implicit_outputs: Optional[NinjaPathOrPaths] = None, + pool: Optional[str] = None, + dyndep: Optional[NinjaPath] = None, + ) -> List[str]: + outputs = serialize_paths(outputs) + out_outputs = [escape_path(x) for x in outputs] + all_inputs = [escape_path(x) for x in serialize_paths(inputs)] + + if implicit: + implicit = [escape_path(x) for x in serialize_paths(implicit)] + all_inputs.append("|") + all_inputs.extend(map(str, implicit)) + if order_only: + order_only = [escape_path(x) for x in serialize_paths(order_only)] + all_inputs.append("||") + all_inputs.extend(map(str, order_only)) + if implicit_outputs: + implicit_outputs = [ + escape_path(x) for x in serialize_paths(implicit_outputs) + ] + out_outputs.append("|") + out_outputs.extend(map(str, implicit_outputs)) + + self._line( + "build %s: %s" % (" ".join(out_outputs), " ".join([rule] + all_inputs)) + ) + if pool is not None: + self._line(" pool = %s" % pool) + if dyndep is not None: + self._line(" dyndep = %s" % serialize_path(dyndep)) + + if variables: + if isinstance(variables, dict): + iterator = iter(variables.items()) + else: + iterator = iter(variables) + + for key, val in iterator: + self.variable(key, val, indent=1) + + return outputs + + def include(self, path: str) -> None: + self._line("include %s" % path) + + def subninja(self, path: str) -> None: + self._line("subninja %s" % path) + + def default(self, paths: NinjaPathOrPaths) -> None: + self._line("default %s" % " ".join(serialize_paths(paths))) + + def _count_dollars_before_index(self, s: str, i: int) -> int: + """Returns the number of '$' characters right in front of s[i].""" + dollar_count = 0 + dollar_index = i - 1 + while dollar_index > 0 and s[dollar_index] == "$": + dollar_count += 1 + dollar_index -= 1 + return dollar_count + + def _line(self, text: str, indent: int = 0) -> None: + """Write 'text' word-wrapped at self.width characters.""" + leading_space = " " * indent + while len(leading_space) + len(text) > self.width: + # The text is too wide; wrap if possible. + + # Find the rightmost space that would obey our width constraint and + # that's not an escaped space. + available_space = self.width - len(leading_space) - len(" $") + space = available_space + while True: + space = text.rfind(" ", 0, space) + if space < 0 or self._count_dollars_before_index(text, space) % 2 == 0: + break + + if space < 0: + # No such space; just use the first unescaped space we can find. + space = available_space - 1 + while True: + space = text.find(" ", space + 1) + if ( + space < 0 + or self._count_dollars_before_index(text, space) % 2 == 0 + ): + break + if space < 0: + # Give up on breaking. + break + + self.output.write(leading_space + text[0:space] + " $\n") + text = text[space + 1 :] + + # Subsequent lines are continuations, so indent them. + leading_space = " " * (indent + 2) + + self.output.write(leading_space + text + "\n") + + def close(self) -> None: + self.output.close() + + +def serialize_path(input: Optional[NinjaPath]) -> str: + if not input: + return "" + if isinstance(input, Path): + return str(input).replace("/", os.sep) + else: + return str(input) + + +def serialize_paths(input: Optional[NinjaPathOrPaths]) -> List[str]: + if isinstance(input, list): + return [serialize_path(path) for path in input if path] + return [serialize_path(input)] if input else [] + + +def escape(string: str) -> str: + """Escape a string such that it can be embedded into a Ninja file without + further interpretation.""" + assert "\n" not in string, "Ninja syntax does not allow newlines" + # We only have one special metacharacter: '$'. + return string.replace("$", "$$") + + +def expand(string: str, vars: Dict[str, str], local_vars: Dict[str, str] = {}) -> str: + """Expand a string containing $vars as Ninja would. + + Note: doesn't handle the full Ninja variable syntax, but it's enough + to make configure.py's use of it work. + """ + + def exp(m: Match[str]) -> str: + var = m.group(1) + if var == "$": + return "$" + return local_vars.get(var, vars.get(var, "")) + + return re.sub(r"\$(\$|\w*)", exp, string) diff --git a/tools/objdump_wrapper.py b/tools/objdump_wrapper.py deleted file mode 100755 index c6031ac..0000000 --- a/tools/objdump_wrapper.py +++ /dev/null @@ -1,122 +0,0 @@ -#!/usr/bin/env python3 - -# Adds line numbers from SIM_original.elf to objdump output for diff.py - -from __future__ import annotations - -from pathlib import Path -import re -import subprocess -import sys -from typing import BinaryIO - -MAP_FILE = "expected/build/SIM/SIM.map" -ORIGINAL_ELF_FILE = "SIM_original.elf" -OBJDUMP_EXECUTABLE = "tools/binutils/powerpc-eabi-objdump" - - -def find_start_address_from_map_file(object_name: str) -> int | None: - pattern = re.compile(r" \S+ \S+ (\S+) +\S+ .text \t" + re.escape(object_name)) - with open(MAP_FILE, "r") as f: - for line in f: - match = pattern.match(line) - if match: - return int(match[1], 16) - return None - - -def find_elf_section(f: BinaryIO, section_name: str) -> tuple[int, int] | None: - f.seek(0) - elf_header = f.read(64) - e_shoff = int.from_bytes(elf_header[0x20:0x24], byteorder="big") - e_shentsize = int.from_bytes(elf_header[0x2E:0x30], byteorder="big") - e_shnum = int.from_bytes(elf_header[0x30:0x32], byteorder="big") - e_shstrndx = int.from_bytes(elf_header[0x32:0x34], byteorder="big") - - # find string table - f.seek(e_shoff + e_shstrndx * e_shentsize) - entry = f.read(e_shentsize) - strtab_offset = int.from_bytes(entry[0x10:0x14], byteorder="big") - - # find section - for i in range(e_shnum): - f.seek(e_shoff + i * e_shentsize) - entry = f.read(e_shentsize) - sh_name = int.from_bytes(entry[0x00:0x04], byteorder="big") - - f.seek(strtab_offset + sh_name) - current_name = bytearray() - while c := f.read(1)[0]: - current_name.append(c) - - if current_name.decode("utf-8") == section_name: - sh_offset = int.from_bytes(entry[0x10:0x14], byteorder="big") - sh_size = int.from_bytes(entry[0x14:0x18], byteorder="big") - return sh_offset, sh_size - - return None - - -def read_line_numbers(elf_file: Path, start_address) -> list[tuple[int, int]]: - line_numbers = [] - with open(elf_file, "rb") as f: - section = find_elf_section(f, ".line") - if section is None: - return [] - - offset, size = section - f.seek(offset) - while f.tell() < offset + size: - start = f.tell() - - length = int.from_bytes(f.read(4), byteorder="big") - address = int.from_bytes(f.read(4), byteorder="big") - - if address != start_address: - f.seek(start + length) - continue - - while f.tell() < start + length: - line_info = f.read(10) - line = int.from_bytes(line_info[0:4], byteorder="big") - delta = int.from_bytes(line_info[6:10], byteorder="big") - line_numbers.append((delta, line)) - - return line_numbers - - -def main(objdump_args: list[str]): - object_file = Path(objdump_args[-1]) - c_file = object_file.with_suffix(".c").name - - line_numbers = [] - if object_file.parts[0] == "expected": - start_address = find_start_address_from_map_file(object_file.name) - if start_address is not None: - line_numbers = read_line_numbers(Path(ORIGINAL_ELF_FILE), start_address) - else: - line_numbers = read_line_numbers(object_file, 0) - - p = subprocess.Popen( - [OBJDUMP_EXECUTABLE] + objdump_args, stdout=subprocess.PIPE, encoding="utf-8" - ) - assert p.stdout is not None - - next_entry = 0 - pattern = re.compile(r"^\s+([0-9a-f]+):") - for line in p.stdout: - match = pattern.match(line) - if match: - delta = int(match[1], 16) - if next_entry < len(line_numbers) and line_numbers[next_entry][0] == delta: - print(f"{c_file}:{line_numbers[next_entry][1]}") - next_entry += 1 - print(line, end="") - - p.wait() - sys.exit(p.returncode) - - -if __name__ == "__main__": - objdump_args = sys.argv[1:] - main(objdump_args) diff --git a/tools/patch_linker.sh b/tools/patch_linker.sh deleted file mode 100755 index 6759457..0000000 --- a/tools/patch_linker.sh +++ /dev/null @@ -1,36 +0,0 @@ -#!/bin/bash - -# Patches a bug in CWParserSetOutputFileDirectory which causes the linker to -# read uninitialized data and possibly crash. - -set -euo pipefail - -LD="$1" -if [[ ! -f "$LD" ]]; then - echo "Linker not found. Please place the MWCC compiler executables in the $(dirname "$LD") directory." - exit 1 -fi - -ORIG_CHECKSUM="1e7752feb4e77e9338662e26cf09983b" -PATCHED_CHECKSUM="93835e361ba564c7f5d73fb10fc9cdfa" - -CHECKSUM=$(md5sum "$LD" | cut -d ' ' -f 1) -if [[ "$CHECKSUM" = "$PATCHED_CHECKSUM" ]]; then - : # Already patched -elif [[ "$CHECKSUM" = "$ORIG_CHECKSUM" ]]; then - LD_ORIG="$LD".orig - cp "$LD" "$LD_ORIG" - - printf '\x51' | dd of="$LD" bs=1 seek=130933 count=1 conv=notrunc 2>/dev/null - - CHECKSUM=$(md5sum "$LD" | cut -d ' ' -f 1) - if [[ "$CHECKSUM" != "$PATCHED_CHECKSUM" ]]; then - echo "Failed to patch linker! Checksum does not match." - exit 1 - fi - - echo "Patched $(basename "$LD"), original saved as $(basename "$LD_ORIG")" -else - echo "Unknown linker version. Ensure that the correct MWCC compiler executables are in the $(dirname "$LD") directory." - exit 1 -fi diff --git a/tools/project.py b/tools/project.py new file mode 100644 index 0000000..577b6e7 --- /dev/null +++ b/tools/project.py @@ -0,0 +1,1226 @@ +### +# decomp-toolkit project generator +# Generates build.ninja and objdiff.json. +# +# This generator is intentionally project-agnostic +# and shared between multiple projects. Any configuration +# specific to a project should be added to `configure.py`. +# But, we've modified it anyway to support asm_processor and +# make multiple versions more user-friendly. +### + +import io +import json +import math +import os +import platform +import sys +from pathlib import Path +from typing import Any, Dict, List, Optional, Set, Tuple, Union + +from . import ninja_syntax +from .ninja_syntax import serialize_path + +if sys.platform == "cygwin": + sys.exit( + f"Cygwin/MSYS2 is not supported." + f"\nPlease use native Windows Python instead." + f"\n(Current path: {sys.executable})" + ) + + +class Object: + def __init__( + self, completed_versions: List[str], name: str, **options: Any + ) -> None: + self.name = name + self.base_name = Path(name).with_suffix("") + self.completed_versions = completed_versions + self.options: Dict[str, Any] = { + "add_to_all": True, + "asflags": None, + "extra_asflags": None, + "cflags": None, + "extra_cflags": None, + "mw_version": None, + "shift_jis": None, + "source": name, + "asm_processor": False, + } + self.options.update(options) + + def completed(self, version: str) -> bool: + return version in self.completed_versions + + +class ProjectConfig: + def __init__(self) -> None: + # Paths + self.build_dir: Path = Path("build") # Output build files + self.src_dir: Path = Path("src") # C/C++/asm source files + self.tools_dir: Path = Path("tools") # Python scripts + self.asm_dir: Optional[Path] = Path( + "asm" + ) # Override incomplete objects (for modding) + + # Tooling + self.binutils_tag: Optional[str] = None # Git tag + self.binutils_path: Optional[Path] = None # If None, download + self.dtk_tag: Optional[str] = None # Git tag + self.dtk_path: Optional[Path] = None # If None, download + self.compilers_tag: Optional[str] = None # 1 + self.compilers_path: Optional[Path] = None # If None, download + self.wibo_tag: Optional[str] = None # Git tag + self.wrapper: Optional[Path] = None # If None, download wibo on Linux + self.sjiswrap_tag: Optional[str] = None # Git tag + self.sjiswrap_path: Optional[Path] = None # If None, download + + # Project config + self.build_rels: bool = True # Build REL files + self.config_dir: Path = Path("config") # Config directory + self.debug: bool = False # Build with debug info + self.non_matching: bool = False # Disable hash check (for modding) + self.generate_map: bool = False # Generate map file(s) + self.asflags: Optional[List[str]] = None # Assembler flags + self.ldflags: Optional[List[str]] = None # Linker flags + self.libs: Optional[List[Dict[str, Any]]] = None # List of libraries + self.linker_version: Optional[str] = None # mwld version + self.versions: List[str] = [] # List of versions + self.default_version: Optional[str] = None # Default version name + self.warn_missing_config: bool = False # Warn on missing unit configuration + self.warn_missing_source: bool = False # Warn on missing source file + self.rel_strip_partial: bool = True # Generate PLFs with -strip_partial + self.rel_empty_file: Optional[str] = ( + None # Object name for generating empty RELs + ) + self.shift_jis = ( + True # Convert source files from UTF-8 to Shift JIS automatically + ) + + # Progress output and progress.json config + self.progress_all: bool = True # Include combined "all" category + self.progress_modules: bool = True # Include combined "modules" category + self.progress_each_module: bool = ( + True # Include individual modules, disable for large numbers of modules + ) + + # Progress fancy printing + self.progress_use_fancy: bool = False + self.progress_code_fancy_frac: int = 0 + self.progress_code_fancy_item: str = "" + self.progress_data_fancy_frac: int = 0 + self.progress_data_fancy_item: str = "" + + def validate(self) -> None: + required_attrs = [ + "build_dir", + "src_dir", + "tools_dir", + "config_dir", + "ldflags", + "linker_version", + "libs", + "default_version", + ] + for attr in required_attrs: + if getattr(self, attr) is None: + sys.exit(f"ProjectConfig.{attr} missing") + + def find_object(self, name: str) -> Optional[Tuple[Dict[str, Any], Object]]: + for lib in self.libs or {}: + for obj in lib["objects"]: + if obj.name == name: + return lib, obj + return None + + def check_sha_path(self, version: str) -> Path: + return self.config_dir / version / "build.sha1" + + def config_path(self, version: str) -> Path: + return self.config_dir / version / "config.yml" + + def out_path(self, version: str) -> Path: + return self.build_dir / version + + +def is_windows() -> bool: + return os.name == "nt" + + +# On Windows, we need this to use && in commands +CHAIN = "cmd /c " if is_windows() else "" +# Native executable extension +EXE = ".exe" if is_windows() else "" + + +def make_flags_str(cflags: Union[str, List[str]]) -> str: + if isinstance(cflags, list): + return " ".join(cflags) + else: + return cflags + + +# Load decomp-toolkit generated config.json +def load_build_config( + config: ProjectConfig, build_config_path: Path +) -> Optional[Dict[str, Any]]: + if not build_config_path.is_file(): + return None + + def versiontuple(v: str) -> Tuple[int, ...]: + return tuple(map(int, (v.split(".")))) + + f = open(build_config_path, "r", encoding="utf-8") + build_config: Dict[str, Any] = json.load(f) + config_version = build_config.get("version") + if not config_version: + # Invalid config.json + f.close() + os.remove(build_config_path) + return None + + dtk_version = str(config.dtk_tag)[1:] # Strip v + if versiontuple(config_version) < versiontuple(dtk_version): + # Outdated config.json + f.close() + os.remove(build_config_path) + return None + + f.close() + return build_config + + +# Generate build.ninja and objdiff.json +def generate_build(config: ProjectConfig) -> None: + rebuild_configs = False + build_configs = {} + + for version in config.versions: + build_config_path = config.out_path(version) / "config.json" + build_config = load_build_config(config, build_config_path) + if build_config is None: + rebuild_configs = True + else: + build_configs[version] = build_config + + generate_build_ninja(config, build_configs, rebuild_configs) + generate_objdiff_config(config, build_configs) + + +# Generate build.ninja +def generate_build_ninja( + config: ProjectConfig, + build_configs: Dict[str, Dict[str, Any]], + rebuild_configs: bool, +) -> None: + config.validate() + + out = io.StringIO() + n = ninja_syntax.Writer(out) + n.variable("ninja_required_version", "1.3") + n.newline() + + configure_script = Path(os.path.relpath(os.path.abspath(sys.argv[0]))) + python_lib = Path(os.path.relpath(__file__)) + python_lib_dir = python_lib.parent + n.comment("The arguments passed to configure.py, for rerunning it.") + n.variable("configure_args", sys.argv[1:]) + n.variable("python", f'"{sys.executable}"') + n.newline() + + ### + # Variables + ### + n.comment("Variables") + ldflags = " ".join(config.ldflags or []) + if config.generate_map: + ldflags += " -mapunused" + if config.debug: + ldflags += " -g" + n.variable("ldflags", ldflags) + if not config.linker_version: + sys.exit("ProjectConfig.linker_version missing") + n.variable("mw_version", Path(config.linker_version)) + n.newline() + + ### + # Tooling + ### + n.comment("Tooling") + + build_tools_path = config.build_dir / "tools" + download_tool = config.tools_dir / "download_tool.py" + n.rule( + name="download_tool", + command=f"$python {download_tool} $tool $out --tag $tag", + description="TOOL $out", + ) + + decompctx = config.tools_dir / "decompctx.py" + n.rule( + name="decompctx", + command=f"$python {decompctx} $in -o $out -d $out.d", + description="CTX $in", + depfile="$out.d", + deps="gcc", + ) + + if config.dtk_path is not None and config.dtk_path.is_file(): + dtk = config.dtk_path + elif config.dtk_path is not None: + dtk = build_tools_path / "release" / f"dtk{EXE}" + n.rule( + name="cargo", + command="cargo build --release --manifest-path $in --bin $bin --target-dir $target", + description="CARGO $bin", + depfile=Path("$target") / "release" / "$bin.d", + deps="gcc", + ) + n.build( + outputs=dtk, + rule="cargo", + inputs=config.dtk_path / "Cargo.toml", + implicit=config.dtk_path / "Cargo.lock", + variables={ + "bin": "dtk", + "target": build_tools_path, + }, + ) + elif config.dtk_tag: + dtk = build_tools_path / f"dtk{EXE}" + n.build( + outputs=dtk, + rule="download_tool", + implicit=download_tool, + variables={ + "tool": "dtk", + "tag": config.dtk_tag, + }, + ) + else: + sys.exit("ProjectConfig.dtk_tag missing") + + if config.sjiswrap_path: + sjiswrap = config.sjiswrap_path + elif config.sjiswrap_tag: + sjiswrap = build_tools_path / "sjiswrap.exe" + n.build( + outputs=sjiswrap, + rule="download_tool", + implicit=download_tool, + variables={ + "tool": "sjiswrap", + "tag": config.sjiswrap_tag, + }, + ) + else: + sys.exit("ProjectConfig.sjiswrap_tag missing") + + # Only add an implicit dependency on wibo if we download it + wrapper = config.wrapper + wrapper_implicit: Optional[Path] = None + if ( + config.wibo_tag is not None + and sys.platform == "linux" + and platform.machine() in ("i386", "x86_64") + and config.wrapper is None + ): + wrapper = build_tools_path / "wibo" + wrapper_implicit = wrapper + n.build( + outputs=wrapper, + rule="download_tool", + implicit=download_tool, + variables={ + "tool": "wibo", + "tag": config.wibo_tag, + }, + ) + if not is_windows() and wrapper is None: + wrapper = Path("wine") + wrapper_cmd = f"{wrapper} " if wrapper else "" + + compilers_implicit: Optional[Path] = None + if config.compilers_path: + compilers = config.compilers_path + elif config.compilers_tag: + compilers = config.build_dir / "compilers" + compilers_implicit = compilers + n.build( + outputs=compilers, + rule="download_tool", + implicit=download_tool, + variables={ + "tool": "compilers", + "tag": config.compilers_tag, + }, + ) + else: + sys.exit("ProjectConfig.compilers_tag missing") + + binutils_implicit = None + if config.binutils_path: + binutils = config.binutils_path + elif config.binutils_tag: + binutils = config.build_dir / "binutils" + binutils_implicit = binutils + n.build( + outputs=binutils, + rule="download_tool", + implicit=download_tool, + variables={ + "tool": "binutils", + "tag": config.binutils_tag, + }, + ) + else: + sys.exit("ProjectConfig.binutils_tag missing") + + n.newline() + + ### + # Build rules + ### + compiler_path = compilers / "$mw_version" + + # MWCC + mwcc = compiler_path / "mwcceppc.exe" + mwcc_cmd = f"{wrapper_cmd}{mwcc} $cflags -MMD -c $in -o $basedir" + mwcc_implicit: List[Optional[Path]] = [compilers_implicit or mwcc, wrapper_implicit] + + # MWCC with UTF-8 to Shift JIS wrapper + mwcc_sjis_cmd = f"{wrapper_cmd}{sjiswrap} {mwcc} $cflags -MMD -c $in -o $basedir" + mwcc_sjis_implicit: List[Optional[Path]] = [*mwcc_implicit, sjiswrap] + + # MWLD + mwld = compiler_path / "mwldeppc.exe" + mwld_cmd = f"{wrapper_cmd}{mwld} $ldflags -o $out @$out.rsp" + mwld_implicit: List[Optional[Path]] = [compilers_implicit or mwld, wrapper_implicit] + + # GNU as + gnu_as = binutils / f"powerpc-eabi-as{EXE}" + gnu_as_cmd = ( + f"{CHAIN}{gnu_as} $asflags -o $out $in -MD $out.d" + + f" && {dtk} elf fixup $out $out" + ) + gnu_as_implicit = [binutils_implicit or gnu_as, dtk] + + # MWCC with asm_processor + mwcc_asm_processor_cmd = f'tools/asm_processor/compile.sh "{wrapper_cmd}{sjiswrap} {mwcc} $cflags -MMD" "{gnu_as} $asflags" $in $out' + mwcc_asm_processor_implicit: List[Optional[Path]] = [ + *mwcc_sjis_implicit, + binutils_implicit or gnu_as, + Path("tools/asm_processor/compile.sh"), + Path("tools/asm_processor/asm_processor.py"), + ] + + if os.name != "nt": + transform_dep = config.tools_dir / "transform_dep.py" + mwcc_cmd += f" && $python {transform_dep} $basefile.d $basefile.d" + mwcc_sjis_cmd += f" && $python {transform_dep} $basefile.d $basefile.d" + mwcc_asm_processor_cmd += f" && $python {transform_dep} $basefile.d $basefile.d" + mwcc_implicit.append(transform_dep) + mwcc_sjis_implicit.append(transform_dep) + mwcc_asm_processor_implicit.append(transform_dep) + + n.comment("Link ELF file") + n.rule( + name="link", + command=mwld_cmd, + description="LINK $out", + rspfile="$out.rsp", + rspfile_content="$in_newline", + ) + n.newline() + + n.comment("Generate DOL") + n.rule( + name="elf2dol", + command=f"{dtk} elf2dol $in $out", + description="DOL $out", + ) + n.newline() + + n.comment("MWCC build") + n.rule( + name="mwcc", + command=mwcc_cmd, + description="MWCC $out", + depfile="$basefile.d", + deps="gcc", + ) + n.newline() + + n.comment("MWCC build (with UTF-8 to Shift JIS wrapper)") + n.rule( + name="mwcc_sjis", + command=mwcc_sjis_cmd, + description="MWCC $out", + depfile="$basefile.d", + deps="gcc", + ) + n.newline() + + n.comment("MWCC build (with asm_processor and UTF-8 to Shift JIS wrapper)") + n.rule( + name="mwcc_asm_processor", + command=mwcc_asm_processor_cmd, + description="MWCC $out", + depfile="$basefile.d", + deps="gcc", + ) + n.newline() + + n.comment("Assemble asm") + n.rule( + name="as", + command=gnu_as_cmd, + description="AS $out", + depfile="$out.d", + deps="gcc", + ) + n.newline() + + n.comment("Split DOL into relocatable objects") + n.rule( + name="split", + command=f"{dtk} dol split $in $out_dir", + description="SPLIT $in", + depfile="$out_dir/dep", + deps="gcc", + ) + n.newline() + + n.comment("Check hash") + n.rule( + name="check", + command=f"{dtk} shasum -c $in -o $out", + description="CHECK $in", + ) + n.newline() + + n.comment("Progress") + n.rule( + name="progress", + command=f"$python {configure_script} $configure_args progress --progress-version $version", + description="PROGRESS $version", + ) + n.newline() + + ### + # Source files + ### + n.comment("Source files") + + def map_path(path: Path) -> Path: + return path.parent / (path.name + ".MAP") + + class LinkStep: + def __init__(self, config: Dict[str, Any]) -> None: + self.name: str = config["name"] + self.module_id: int = config["module_id"] + self.ldscript: Optional[Path] = Path(config["ldscript"]) + self.entry = config["entry"] + self.inputs: List[str] = [] + + def add(self, obj: Path) -> None: + self.inputs.append(serialize_path(obj)) + + def output(self) -> Path: + if self.module_id == 0: + return build_path / f"{self.name}.dol" + else: + return build_path / self.name / f"{self.name}.rel" + + def partial_output(self) -> Path: + if self.module_id == 0: + return build_path / f"{self.name}.elf" + else: + return build_path / self.name / f"{self.name}.plf" + + def write(self, n: ninja_syntax.Writer) -> None: + n.comment(f"Link {self.name}") + if self.module_id == 0: + elf_path = build_path / f"{self.name}.elf" + dol_path = build_path / f"{self.name}.dol" + elf_ldflags = f"$ldflags -lcf {serialize_path(self.ldscript)}" + if config.generate_map: + elf_map = map_path(elf_path) + elf_ldflags += f" -map {serialize_path(elf_map)}" + else: + elf_map = None + n.build( + outputs=elf_path, + rule="link", + inputs=self.inputs, + implicit=[self.ldscript, *mwld_implicit], + implicit_outputs=elf_map, + variables={"ldflags": elf_ldflags}, + ) + n.build( + outputs=dol_path, + rule="elf2dol", + inputs=elf_path, + implicit=dtk, + ) + else: + preplf_path = build_path / self.name / f"{self.name}.preplf" + plf_path = build_path / self.name / f"{self.name}.plf" + preplf_ldflags = "$ldflags -sdata 0 -sdata2 0 -r" + plf_ldflags = f"$ldflags -sdata 0 -sdata2 0 -r1 -lcf {serialize_path(self.ldscript)}" + if self.entry: + plf_ldflags += f" -m {self.entry}" + # -strip_partial is only valid with -m + if config.rel_strip_partial: + plf_ldflags += " -strip_partial" + if config.generate_map: + preplf_map = map_path(preplf_path) + preplf_ldflags += f" -map {serialize_path(preplf_map)}" + plf_map = map_path(plf_path) + plf_ldflags += f" -map {serialize_path(plf_map)}" + else: + preplf_map = None + plf_map = None + n.build( + outputs=preplf_path, + rule="link", + inputs=self.inputs, + implicit=mwld_implicit, + implicit_outputs=preplf_map, + variables={"ldflags": preplf_ldflags}, + ) + n.build( + outputs=plf_path, + rule="link", + inputs=self.inputs, + implicit=[self.ldscript, preplf_path, *mwld_implicit], + implicit_outputs=plf_map, + variables={"ldflags": plf_ldflags}, + ) + n.newline() + + for version, build_config in build_configs.items(): + build_path = config.out_path(version) + progress_path = build_path / "progress.json" + build_asm_path = build_path / "mod" + build_src_path = build_path / "src" + build_host_path = build_path / "host" + + link_steps: List[LinkStep] = [] + used_compiler_versions: Set[str] = set() + source_inputs: List[Path] = [] + host_source_inputs: List[Path] = [] + source_added: Set[Path] = set() + + def c_build( + obj: Object, options: Dict[str, Any], lib_name: str, src_path: Path + ) -> Optional[Path]: + asflags_str = make_flags_str(config.asflags or []) + cflags_str = make_flags_str(options["cflags"]) + if options["extra_cflags"] is not None: + extra_cflags_str = make_flags_str(options["extra_cflags"]) + cflags_str += " " + extra_cflags_str + cflags_str += f" -i build/{version}/include -DVERSION={version.upper().replace('-', '_')}" + used_compiler_versions.add(options["mw_version"]) + + src_obj_path = build_src_path / f"{obj.base_name}.o" + src_base_path = build_src_path / obj.base_name + + # Avoid creating duplicate build rules + if src_obj_path in source_added: + return src_obj_path + source_added.add(src_obj_path) + + shift_jis = options["shift_jis"] + if shift_jis is None: + shift_jis = config.shift_jis + + # Add MWCC build rule + n.comment(f"{obj.name}: {lib_name} (linked {obj.completed(version)})") + if options["asm_processor"]: + n.build( + outputs=src_obj_path, + rule="mwcc_asm_processor", + inputs=src_path, + variables={ + "mw_version": Path(options["mw_version"]), + "asflags": asflags_str, + "cflags": cflags_str, + "basedir": os.path.dirname(src_base_path), + "basefile": src_base_path, + }, + implicit=mwcc_asm_processor_implicit, + ) + else: + n.build( + outputs=src_obj_path, + rule="mwcc_sjis" if shift_jis else "mwcc", + inputs=src_path, + variables={ + "mw_version": Path(options["mw_version"]), + "cflags": cflags_str, + "basedir": os.path.dirname(src_base_path), + "basefile": src_base_path, + }, + implicit=mwcc_sjis_implicit if shift_jis else mwcc_implicit, + ) + + # Add ctx build rule + ctx_path = build_src_path / f"{obj.base_name}.ctx" + n.build( + outputs=ctx_path, + rule="decompctx", + inputs=src_path, + implicit=decompctx, + ) + + # Add host build rule + if options.get("host", False): + host_obj_path = build_host_path / f"{obj.base_name}.o" + host_base_path = build_host_path / obj.base_name + n.build( + outputs=host_obj_path, + rule="host_cc" if src_path.suffix == ".c" else "host_cpp", + inputs=src_path, + variables={ + "basedir": os.path.dirname(host_base_path), + "basefile": host_base_path, + }, + ) + if options["add_to_all"]: + host_source_inputs.append(host_obj_path) + n.newline() + + if options["add_to_all"]: + source_inputs.append(src_obj_path) + + return src_obj_path + + def asm_build( + obj: Object, options: Dict[str, Any], lib_name: str, src_path: Path + ) -> Optional[Path]: + asflags = options["asflags"] or config.asflags + if asflags is None: + sys.exit("ProjectConfig.asflags missing") + asflags_str = make_flags_str(asflags) + if options["extra_asflags"] is not None: + extra_asflags_str = make_flags_str(options["extra_asflags"]) + asflags_str += " " + extra_asflags_str + + asm_obj_path = build_asm_path / f"{obj.base_name}.o" + + # Avoid creating duplicate build rules + if asm_obj_path in source_added: + return asm_obj_path + source_added.add(asm_obj_path) + + # Add assembler build rule + n.comment(f"{obj.name}: {lib_name} (linked {obj.completed(version)})") + n.build( + outputs=asm_obj_path, + rule="as", + inputs=src_path, + variables={"asflags": asflags_str}, + implicit=gnu_as_implicit, + ) + n.newline() + + if options["add_to_all"]: + source_inputs.append(asm_obj_path) + + return asm_obj_path + + def add_unit(build_obj, link_step: LinkStep): + obj_path, obj_name = build_obj["object"], build_obj["name"] + result = config.find_object(obj_name) + if not result: + if config.warn_missing_config and not build_obj["autogenerated"]: + print(f"Missing configuration for {obj_name}") + link_step.add(obj_path) + return + + lib, obj = result + lib_name = lib["lib"] + + # Use object options, then library options + options = lib.copy() + for key, value in obj.options.items(): + if value is not None or key not in options: + options[key] = value + + unit_src_path = Path(lib.get("src_dir", config.src_dir)) / options["source"] + + unit_asm_path: Optional[Path] = None + if config.asm_dir is not None: + unit_asm_path = ( + Path(lib.get("asm_dir", config.asm_dir)) / options["source"] + ).with_suffix(".s") + + built_obj_path: Optional[Path] = None + link_built_obj = obj.completed(version) + if unit_src_path.exists(): + if unit_src_path.suffix in (".c", ".cp", ".cpp"): + # Add MWCC & host build rules + built_obj_path = c_build(obj, options, lib_name, unit_src_path) + elif unit_src_path.suffix == ".s": + # Add assembler build rule + built_obj_path = asm_build(obj, options, lib_name, unit_src_path) + else: + sys.exit(f"Unknown source file type {unit_src_path}") + else: + if config.warn_missing_source or obj.completed(version): + print(f"Missing source file {unit_src_path}") + link_built_obj = False + + # Assembly overrides + if unit_asm_path is not None and unit_asm_path.exists(): + link_built_obj = True + built_obj_path = asm_build(obj, options, lib_name, unit_asm_path) + + if link_built_obj and built_obj_path is not None: + # Use the source-built object + link_step.add(built_obj_path) + elif obj_path is not None: + # Use the original (extracted) object + link_step.add(obj_path) + else: + sys.exit(f"Missing object for {obj_name}: {unit_src_path} {lib} {obj}") + + # Add DOL link step + link_step = LinkStep(build_config) + for unit in build_config["units"]: + add_unit(unit, link_step) + link_steps.append(link_step) + + if config.build_rels: + # Add REL link steps + for module in build_config["modules"]: + module_link_step = LinkStep(module) + for unit in module["units"]: + add_unit(unit, module_link_step) + # Add empty object to empty RELs + if len(module_link_step.inputs) == 0: + if not config.rel_empty_file: + sys.exit("ProjectConfig.rel_empty_file missing") + add_unit( + { + "object": None, + "name": config.rel_empty_file, + "autogenerated": True, + }, + module_link_step, + ) + link_steps.append(module_link_step) + n.newline() + + # Check if all compiler versions exist + for mw_version in used_compiler_versions: + mw_path = compilers / mw_version / "mwcceppc.exe" + if config.compilers_path and not os.path.exists(mw_path): + sys.exit(f"Compiler {mw_path} does not exist") + + # Check if linker exists + mw_path = compilers / str(config.linker_version) / "mwldeppc.exe" + if config.compilers_path and not os.path.exists(mw_path): + sys.exit(f"Linker {mw_path} does not exist") + + ### + # Link + ### + for step in link_steps: + step.write(n) + n.newline() + + ### + # Check hash + ### + ok_path = build_path / "ok" + n.build( + outputs=ok_path, + rule="check", + inputs=config.check_sha_path(version), + implicit=[dtk, *map(lambda step: step.output(), link_steps)], + ) + n.newline() + + ### + # Calculate progress + ### + n.build( + outputs=progress_path, + rule="progress", + variables={"version": version}, + implicit=[ + ok_path, + configure_script, + python_lib, + config.config_path(version), + ], + ) + n.newline() + + ### + # Version target + ### + n.comment(f"Version {version}") + if config.non_matching: + n.build( + outputs=version, + rule="phony", + inputs=[*map(lambda step: step.output(), link_steps)], + ) + else: + n.build( + outputs=f"{version}", + rule="phony", + inputs=progress_path, + ) + n.newline() + + ### + # Split DOL + ### + n.comment("Split DOL into relocatable objects") + for version in config.versions: + build_path = config.out_path(version) + build_config_path = build_path / "config.json" + n.build( + inputs=config.config_path(version), + outputs=build_config_path, + rule="split", + implicit=dtk, + variables={"out_dir": build_path}, + ) + n.build( + outputs=f"split-{version}", + rule="phony", + inputs=build_config_path, + ) + n.build( + outputs="split-all", + rule="phony", + inputs=[f"split-{version}" for version in config.versions], + ) + n.newline() + + ### + # Regenerate on change + ### + n.comment("Reconfigure on change") + n.rule( + name="configure", + command=f"$python {configure_script} $configure_args", + generator=True, + description=f"RUN {configure_script}", + ) + n.build( + outputs="build.ninja", + rule="configure", + implicit=[ + *[config.out_path(version) / "config.json" for version in config.versions], + configure_script, + python_lib, + python_lib_dir / "ninja_syntax.py", + ], + ) + n.newline() + + ### + # Default rule + ### + n.comment("Default rules") + if rebuild_configs: + n.default("split-all") + elif config.default_version is not None: + n.default(config.default_version) + + # Write build.ninja + with open("build.ninja", "w", encoding="utf-8") as f: + f.write(out.getvalue()) + out.close() + + +# Generate objdiff.json +def generate_objdiff_config( + config: ProjectConfig, build_configs: Dict[str, Dict[str, Any]] +) -> None: + objdiff_config: Dict[str, Any] = { + "min_version": "1.0.0", + "custom_make": "ninja", + "build_target": False, + "watch_patterns": [ + "*.c", + "*.cp", + "*.cpp", + "*.h", + "*.hpp", + "*.inc", + "*.py", + "*.yml", + "*.txt", + "*.json", + ], + "units": [], + } + + # decomp.me compiler name mapping + # Commented out versions have not been added to decomp.me yet + COMPILER_MAP = { + "GC/1.0": "mwcc_233_144", + "GC/1.1": "mwcc_233_159", + "GC/1.2.5": "mwcc_233_163", + "GC/1.2.5e": "mwcc_233_163e", + "GC/1.2.5n": "mwcc_233_163n", + "GC/1.3.2": "mwcc_242_81", + "GC/1.3.2r": "mwcc_242_81r", + "GC/2.0": "mwcc_247_92", + "GC/2.5": "mwcc_247_105", + "GC/2.6": "mwcc_247_107", + "GC/2.7": "mwcc_247_108", + "GC/3.0": "mwcc_41_60831", + # "GC/3.0a3": "mwcc_41_51213", + "GC/3.0a3.2": "mwcc_41_60126", + # "GC/3.0a3.3": "mwcc_41_60209", + # "GC/3.0a3.4": "mwcc_42_60308", + # "GC/3.0a5": "mwcc_42_60422", + "GC/3.0a5.2": "mwcc_41_60831", + "Wii/0x4201_127": "mwcc_42_142", + # "Wii/1.0": "mwcc_43_145", + # "Wii/1.0RC1": "mwcc_42_140", + "Wii/1.0a": "mwcc_42_142", + "Wii/1.1": "mwcc_43_151", + "Wii/1.3": "mwcc_43_172", + # "Wii/1.5": "mwcc_43_188", + "Wii/1.6": "mwcc_43_202", + "Wii/1.7": "mwcc_43_213", + } + + def add_unit(build_obj: Dict[str, Any], version: str, module_name: str) -> None: + if build_obj["autogenerated"]: + # Skip autogenerated objects + return + + build_path = config.out_path(version) + obj_path, obj_name = build_obj["object"], build_obj["name"] + base_object = Path(obj_name).with_suffix("") + unit_config: Dict[str, Any] = { + "name": Path(version) / base_object, + "target_path": obj_path, + } + + result = config.find_object(obj_name) + if not result: + objdiff_config["units"].append(unit_config) + return + + lib, obj = result + src_dir = Path(lib.get("src_dir", config.src_dir)) + + # Use object options, then library options + options = lib.copy() + for key, value in obj.options.items(): + if value is not None or key not in options: + options[key] = value + + unit_src_path = src_dir / str(options["source"]) + + if not unit_src_path.exists(): + objdiff_config["units"].append(unit_config) + return + + cflags = options["cflags"] + src_obj_path = build_path / "src" / f"{obj.base_name}.o" + src_ctx_path = build_path / "src" / f"{obj.base_name}.ctx" + + reverse_fn_order = False + if type(cflags) is list: + for flag in cflags: + if not flag.startswith("-inline "): + continue + for value in flag.split(" ")[1].split(","): + if value == "deferred": + reverse_fn_order = True + elif value == "nodeferred": + reverse_fn_order = False + + # Filter out include directories + def keep_flag(flag): + return not flag.startswith("-i ") and not flag.startswith("-I ") + + cflags = list(filter(keep_flag, cflags)) + + # Add appropriate lang flag + if unit_src_path.suffix in (".cp", ".cpp"): + cflags.insert(0, "-lang=c++") + else: + cflags.insert(0, "-lang=c") + + unit_config["base_path"] = src_obj_path + unit_config["reverse_fn_order"] = reverse_fn_order + unit_config["complete"] = obj.completed(version) + compiler_version = COMPILER_MAP.get(options["mw_version"]) + if compiler_version is None: + print(f"Missing scratch compiler mapping for {options['mw_version']}") + else: + unit_config["scratch"] = { + "platform": "gc_wii", + "compiler": compiler_version, + "c_flags": make_flags_str(cflags), + "ctx_path": src_ctx_path, + "build_ctx": True, + } + objdiff_config["units"].append(unit_config) + + for version, build_config in build_configs.items(): + # Add DOL units + for unit in build_config["units"]: + add_unit(unit, version, build_config["name"]) + + # Add REL units + for module in build_config["modules"]: + for unit in module["units"]: + add_unit(unit, version, module["name"]) + + # Write objdiff.json + with open("objdiff.json", "w", encoding="utf-8") as w: + + def unix_path(input: Any) -> str: + return str(input).replace(os.sep, "/") if input else "" + + json.dump(objdiff_config, w, indent=4, default=unix_path) + + +# Calculate, print and write progress to progress.json +def calculate_progress(config: ProjectConfig, version: str) -> None: + out_path = config.out_path(version) + build_config = load_build_config(config, out_path / "config.json") + if not build_config: + return + + class ProgressUnit: + def __init__(self, name: str) -> None: + self.name: str = name + self.code_total: int = 0 + self.code_fancy_frac: int = config.progress_code_fancy_frac + self.code_fancy_item: str = config.progress_code_fancy_item + self.code_progress: int = 0 + self.data_total: int = 0 + self.data_fancy_frac: int = config.progress_data_fancy_frac + self.data_fancy_item: str = config.progress_data_fancy_item + self.data_progress: int = 0 + self.objects_progress: int = 0 + self.objects_total: int = 0 + self.objects: Set[Object] = set() + + def add(self, build_obj: Dict[str, Any]) -> None: + self.code_total += build_obj["code_size"] + self.data_total += build_obj["data_size"] + + # Avoid counting the same object in different modules twice + include_object = build_obj["name"] not in self.objects + if include_object: + self.objects.add(build_obj["name"]) + self.objects_total += 1 + + if build_obj["autogenerated"]: + # Skip autogenerated objects + return + + result = config.find_object(build_obj["name"]) + if not result: + return + + _, obj = result + if not obj.completed(version) or obj.options["asm_processor"]: + return + + self.code_progress += build_obj["code_size"] + self.data_progress += build_obj["data_size"] + if include_object: + self.objects_progress += 1 + + def code_frac(self) -> float: + return self.code_progress / self.code_total + + def data_frac(self) -> float: + return self.data_progress / self.data_total + + # Add DOL units + all_progress = ProgressUnit("All") if config.progress_all else None + dol_progress = ProgressUnit("DOL") + for unit in build_config["units"]: + if all_progress: + all_progress.add(unit) + dol_progress.add(unit) + + # Add REL units + rels_progress = ProgressUnit("Modules") if config.progress_modules else None + modules_progress: List[ProgressUnit] = [] + for module in build_config["modules"]: + progress = ProgressUnit(module["name"]) + modules_progress.append(progress) + for unit in module["units"]: + if all_progress: + all_progress.add(unit) + if rels_progress: + rels_progress.add(unit) + progress.add(unit) + + # Print human-readable progress + print(f"{version} progress:") + + def print_category(unit: Optional[ProgressUnit]) -> None: + if unit is None: + return + + code_frac = unit.code_frac() + data_frac = unit.data_frac() + print( + f" {unit.name}: {code_frac:.2%} code, {data_frac:.2%} data ({unit.objects_progress} / {unit.objects_total} files)" + ) + print(f" Code: {unit.code_progress} / {unit.code_total} bytes") + print(f" Data: {unit.data_progress} / {unit.data_total} bytes") + if config.progress_use_fancy: + print( + "\nYou have {} out of {} {} and collected {} out of {} {}.".format( + math.floor(code_frac * unit.code_fancy_frac), + unit.code_fancy_frac, + unit.code_fancy_item, + math.floor(data_frac * unit.data_fancy_frac), + unit.data_fancy_frac, + unit.data_fancy_item, + ) + ) + + if all_progress: + print_category(all_progress) + print_category(dol_progress) + module_count = len(build_config["modules"]) + if module_count > 0: + print_category(rels_progress) + if config.progress_each_module: + for progress in modules_progress: + print_category(progress) + + # Generate and write progress.json + progress_json: Dict[str, Any] = {} + + def add_category(category: str, unit: ProgressUnit) -> None: + progress_json[category] = { + "code": unit.code_progress, + "code/total": unit.code_total, + "data": unit.data_progress, + "data/total": unit.data_total, + } + + if all_progress: + add_category("all", all_progress) + add_category("dol", dol_progress) + if len(build_config["modules"]) > 0: + if rels_progress: + add_category("modules", rels_progress) + if config.progress_each_module: + for progress in modules_progress: + add_category(progress.name, progress) + with open(out_path / "progress.json", "w", encoding="utf-8") as w: + json.dump(progress_json, w, indent=4) diff --git a/tools/transform_dep.py b/tools/transform_dep.py new file mode 100755 index 0000000..124de04 --- /dev/null +++ b/tools/transform_dep.py @@ -0,0 +1,84 @@ +#!/usr/bin/env python3 + +### +# Transforms .d files, converting Windows paths to Unix paths. +# Allows usage of the mwcc -MMD flag on platforms other than Windows. +# +# Usage: +# python3 tools/transform_dep.py build/src/file.d build/src/file.d +# +# If changes are made, please submit a PR to +# https://github.com/encounter/dtk-template +### + +import argparse +import os +from platform import uname + +wineprefix = os.path.join(os.environ["HOME"], ".wine") +if "WINEPREFIX" in os.environ: + wineprefix = os.environ["WINEPREFIX"] +winedevices = os.path.join(wineprefix, "dosdevices") + + +def in_wsl() -> bool: + return "microsoft-standard" in uname().release + + +def import_d_file(in_file: str) -> str: + out_text = "" + + with open(in_file) as file: + for idx, line in enumerate(file): + if idx == 0: + if line.endswith(" \\\n"): + out_text += line[:-3].replace("\\", "/") + " \\\n" + else: + out_text += line.replace("\\", "/") + else: + suffix = "" + if line.endswith(" \\\n"): + suffix = " \\" + path = line.lstrip()[:-3] + else: + path = line.strip() + # lowercase drive letter + path = path[0].lower() + path[1:] + if path[0] == "z": + # shortcut for z: + path = path[2:].replace("\\", "/") + elif in_wsl(): + path = path[0:1] + path[2:] + path = os.path.join("/mnt", path.replace("\\", "/")) + else: + # use $WINEPREFIX/dosdevices to resolve path + path = os.path.realpath( + os.path.join(winedevices, path.replace("\\", "/")) + ) + out_text += "\t" + path + suffix + "\n" + + return out_text + + +def main() -> None: + parser = argparse.ArgumentParser( + description="""Transform a .d file from Wine paths to normal paths""" + ) + parser.add_argument( + "d_file", + help="""Dependency file in""", + ) + parser.add_argument( + "d_file_out", + help="""Dependency file out""", + ) + args = parser.parse_args() + + output = import_d_file(args.d_file) + + with open(args.d_file_out, "w", encoding="UTF-8") as f: + f.write(output) + + +if __name__ == "__main__": + main()