mirror of
https://github.com/zeldaret/oot.git
synced 2024-11-13 04:39:36 +00:00
Set up disassembly for gc-eu-mq (#1613)
* Disassemble gc-eu-mq
* Add script to report progress with matching
* Fix whitespace
* Change T|None to typing.Optional[T]
* Use typing.List
* More type annotations fixes for old Python versions
* Fix type errors
* More type annotations
* Use typing.Iterator
* Use $(PYTHON) for disassembly
* Don't use grouped targets to support very old Make versions
* Docs: suggest checking MM, mention virtualenv, clarify about expected/
* Update sym_info.py
Co-authored-by: Derek Hensley <hensley.derek58@gmail.com>
* Sync functions.txt
* Start banned symbol range at 0x10000000
* Also ban symbols from 0xC0000000-0xFFFFFFFF
* Unban IPL symbols
* Fix first_diff.py
* Sync z_collision_check functions.txt
* Ban 0xA0 symbols too
* Touch .disasm sentinel file
* Copy -jN comment in docs
* diff.py flags: remove -3, add -s
* Update docs/retail_versions.md
Co-authored-by: Yanis42 <35189056+Yanis42@users.noreply.github.com>
* Comment that segments are still from the Debug ROM
* Revert "diff.py flags: remove -3, add -s"
This reverts commit bfaae66c1d
.
* Apply suggestions from code review
Co-authored-by: Dragorn421 <Dragorn421@users.noreply.github.com>
* Remove #ifdef example
* Reformat Python files with black
* Add copyright notice to new Python files
* Add TODOs to Makefile
---------
Co-authored-by: Derek Hensley <hensley.derek58@gmail.com>
Co-authored-by: Yanis42 <35189056+Yanis42@users.noreply.github.com>
Co-authored-by: Dragorn421 <Dragorn421@users.noreply.github.com>
This commit is contained in:
parent
e9a571054c
commit
98a3238822
21 changed files with 15796 additions and 16 deletions
47
Makefile
47
Makefile
|
@ -16,6 +16,8 @@ ORIG_COMPILER := 0
|
|||
COMPILER := ido
|
||||
# Target game version. Currently only the following version is supported:
|
||||
# gc-eu-mq-dbg GameCube Europe/PAL Master Quest Debug (default)
|
||||
# The following versions are work-in-progress and not yet matching:
|
||||
# gc-eu-mq GameCube Europe/PAL Master Quest
|
||||
VERSION := gc-eu-mq-dbg
|
||||
# Number of threads to extract and compress with
|
||||
N_THREADS := $(shell nproc)
|
||||
|
@ -47,7 +49,14 @@ ifeq ($(NON_MATCHING),1)
|
|||
endif
|
||||
|
||||
# Version-specific settings
|
||||
ifeq ($(VERSION),gc-eu-mq-dbg)
|
||||
ifeq ($(VERSION),gc-eu-mq)
|
||||
CFLAGS += -DNON_MATCHING -DNDEBUG
|
||||
CPPFLAGS += -DNON_MATCHING -DNDEBUG
|
||||
OPTFLAGS := -O2 -g3
|
||||
COMPARE := 0
|
||||
else ifeq ($(VERSION),gc-eu-mq-dbg)
|
||||
CFLAGS += -DOOT_DEBUG
|
||||
CPPFLAGS += -DOOT_DEBUG
|
||||
OPTFLAGS := -O2
|
||||
else
|
||||
$(error Unsupported version $(VERSION))
|
||||
|
@ -55,11 +64,11 @@ endif
|
|||
|
||||
PROJECT_DIR := $(dir $(realpath $(firstword $(MAKEFILE_LIST))))
|
||||
BUILD_DIR := build/$(VERSION)
|
||||
EXPECTED_DIR := expected/$(BUILD_DIR)
|
||||
VENV := .venv
|
||||
|
||||
MAKE = make
|
||||
CFLAGS += -DOOT_DEBUG
|
||||
CPPFLAGS += -DOOT_DEBUG -fno-dollars-in-identifiers -P
|
||||
CPPFLAGS += -fno-dollars-in-identifiers -P
|
||||
|
||||
ifeq ($(OS),Windows_NT)
|
||||
DETECTED_OS=windows
|
||||
|
@ -161,6 +170,10 @@ endif
|
|||
|
||||
OBJDUMP_FLAGS := -d -r -z -Mreg-names=32
|
||||
|
||||
DISASM_DATA_DIR := tools/disasm/$(VERSION)
|
||||
DISASM_FLAGS += --custom-suffix _unknown --sequential-label-names --no-use-fpccsr --no-cop0-named-registers
|
||||
DISASM_FLAGS += --config-dir $(DISASM_DATA_DIR) --symbol-addrs $(DISASM_DATA_DIR)/functions.txt --symbol-addrs $(DISASM_DATA_DIR)/variables.txt
|
||||
|
||||
#### Files ####
|
||||
|
||||
# ROM image
|
||||
|
@ -185,16 +198,24 @@ ASSET_FILES_OUT := $(foreach f,$(ASSET_FILES_XML:.xml=.c),$f) \
|
|||
|
||||
UNDECOMPILED_DATA_DIRS := $(shell find data -type d)
|
||||
|
||||
# TODO: for now, ROM segments are still taken from the Debug ROM even when building other versions
|
||||
BASEROM_SEGMENTS_DIR := baseroms/gc-eu-mq-dbg/segments
|
||||
BASEROM_BIN_FILES := $(wildcard $(BASEROM_SEGMENTS_DIR)/*)
|
||||
|
||||
# source files
|
||||
C_FILES := $(filter-out %.inc.c,$(foreach dir,$(SRC_DIRS) $(ASSET_BIN_DIRS),$(wildcard $(dir)/*.c)))
|
||||
S_FILES := $(foreach dir,$(SRC_DIRS) $(UNDECOMPILED_DATA_DIRS),$(wildcard $(dir)/*.s))
|
||||
BASEROM_BIN_FILES := $(wildcard baseroms/$(VERSION)/segments/*)
|
||||
O_FILES := $(foreach f,$(S_FILES:.s=.o),$(BUILD_DIR)/$f) \
|
||||
$(foreach f,$(C_FILES:.c=.o),$(BUILD_DIR)/$f) \
|
||||
$(foreach f,$(BASEROM_BIN_FILES),$(BUILD_DIR)/baserom/$(notdir $f).o)
|
||||
|
||||
OVL_RELOC_FILES := $(shell $(CPP) $(CPPFLAGS) $(SPEC) | $(SPEC_REPLACE_VARS) | grep -o '[^"]*_reloc.o' )
|
||||
|
||||
DISASM_BASEROM := baseroms/$(VERSION)/baserom-decompressed.z64
|
||||
DISASM_DATA_FILES := $(wildcard $(DISASM_DATA_DIR)/*.csv) $(wildcard $(DISASM_DATA_DIR)/*.txt)
|
||||
DISASM_S_FILES := $(shell test -e $(PYTHON) && $(PYTHON) tools/disasm/list_generated_files.py -o $(EXPECTED_DIR) --config-dir $(DISASM_DATA_DIR))
|
||||
DISASM_O_FILES := $(DISASM_S_FILES:.s=.o)
|
||||
|
||||
# Automatic dependency files
|
||||
# (Only asm_processor dependencies and reloc dependencies are handled for now)
|
||||
DEP_FILES := $(O_FILES:.o=.asmproc.d) $(OVL_RELOC_FILES:.o=.d)
|
||||
|
@ -287,7 +308,7 @@ assetclean:
|
|||
$(RM) -r .extracted-assets.json
|
||||
|
||||
distclean: clean assetclean
|
||||
$(RM) -r baseroms/$(VERSION)/segments
|
||||
$(RM) -r $(BASEROM_SEGMENTS_DIR)
|
||||
$(MAKE) -C tools distclean
|
||||
|
||||
venv:
|
||||
|
@ -300,8 +321,13 @@ venv:
|
|||
setup: venv
|
||||
$(MAKE) -C tools
|
||||
$(PYTHON) tools/decompress_baserom.py $(VERSION)
|
||||
# TODO: for now, we only extract ROM segments and assets from the Debug ROM
|
||||
ifeq ($(VERSION),gc-eu-mq-dbg)
|
||||
$(PYTHON) extract_baserom.py
|
||||
$(PYTHON) extract_assets.py -j$(N_THREADS)
|
||||
endif
|
||||
|
||||
disasm: $(DISASM_O_FILES)
|
||||
|
||||
run: $(ROM)
|
||||
ifeq ($(N64_EMULATOR),)
|
||||
|
@ -310,7 +336,7 @@ endif
|
|||
$(N64_EMULATOR) $<
|
||||
|
||||
|
||||
.PHONY: all rom compress clean assetclean distclean venv setup run
|
||||
.PHONY: all rom compress clean assetclean distclean venv setup disasm run
|
||||
.DEFAULT_GOAL := rom
|
||||
|
||||
#### Various Recipes ####
|
||||
|
@ -347,7 +373,7 @@ $(BUILD_DIR)/ldscript.txt: $(BUILD_DIR)/$(SPEC)
|
|||
$(BUILD_DIR)/undefined_syms.txt: undefined_syms.txt
|
||||
$(CPP) $(CPPFLAGS) $< > $@
|
||||
|
||||
$(BUILD_DIR)/baserom/%.o: baseroms/$(VERSION)/segments/%
|
||||
$(BUILD_DIR)/baserom/%.o: $(BASEROM_SEGMENTS_DIR)/%
|
||||
$(OBJCOPY) -I binary -O elf32-big $< $@
|
||||
|
||||
$(BUILD_DIR)/data/%.o: data/%.s
|
||||
|
@ -418,6 +444,13 @@ $(BUILD_DIR)/assets/%.bin.inc.c: assets/%.bin
|
|||
$(BUILD_DIR)/assets/%.jpg.inc.c: assets/%.jpg
|
||||
$(ZAPD) bren -eh -i $< -o $@
|
||||
|
||||
$(EXPECTED_DIR)/.disasm: $(DISASM_DATA_FILES)
|
||||
$(PYTHON) tools/disasm/disasm.py $(DISASM_FLAGS) $(DISASM_BASEROM) -o $(EXPECTED_DIR) --split-functions $(EXPECTED_DIR)/functions
|
||||
touch $@
|
||||
|
||||
$(EXPECTED_DIR)/%.o: $(EXPECTED_DIR)/.disasm
|
||||
$(AS) $(ASFLAGS) $(@:.o=.s) -o $@
|
||||
|
||||
-include $(DEP_FILES)
|
||||
|
||||
# Print target for debugging
|
||||
|
|
1
baseroms/gc-eu-mq/checksum-compressed.md5
Normal file
1
baseroms/gc-eu-mq/checksum-compressed.md5
Normal file
|
@ -0,0 +1 @@
|
|||
1618403427e4344a57833043db5ce3c3 oot-gc-eu-mq-compressed.z64
|
1
baseroms/gc-eu-mq/checksum.md5
Normal file
1
baseroms/gc-eu-mq/checksum.md5
Normal file
|
@ -0,0 +1 @@
|
|||
1a438f4235f8038856971c14a798122a oot-gc-eu-mq.z64
|
|
@ -1,6 +1,10 @@
|
|||
def add_custom_arguments(parser):
|
||||
parser.add_argument("-v", "--oot-version", help="OOT version", default="gc-eu-mq-dbg")
|
||||
|
||||
def apply(config, args):
|
||||
config['mapfile'] = 'build/gc-eu-mq-dbg/z64.map'
|
||||
config['myimg'] = 'oot-gc-eu-mq-dbg.z64'
|
||||
config['baseimg'] = 'baseroms/gc-eu-mq-dbg/baserom-decompressed.z64'
|
||||
config['makeflags'] = []
|
||||
version = args.oot_version
|
||||
config['mapfile'] = f'build/{version}/z64.map'
|
||||
config['myimg'] = f'oot-{version}.z64'
|
||||
config['baseimg'] = f'baseroms/{version}/baserom-decompressed.z64'
|
||||
config['makeflags'] = [f'VERSION={version}']
|
||||
config['source_directories'] = ['src', 'include', 'spec']
|
||||
|
|
126
docs/retail_versions.md
Normal file
126
docs/retail_versions.md
Normal file
|
@ -0,0 +1,126 @@
|
|||
# Decompiling retail versions
|
||||
|
||||
The next decompilation target for OOT is the PAL GameCube Master Quest ROM
|
||||
(`gc-eu-mq`), because it is the retail version that is most similar to the Debug
|
||||
ROM. Unfortunately there are still a lot of differences, many of which are
|
||||
register or stack allocation differences because retail ROMs were built with
|
||||
different compiler flags. However, once this version is done, future
|
||||
retail versions should be much easier, as the changes between retail versions are
|
||||
small in comparison.
|
||||
|
||||
Instead of `cp`ing a matching build into `expected/`, the target ROM is disassembled as `.s` files then
|
||||
reassembled as `.o` files directly into `expected/build/gc-eu-mq` for diff tools.
|
||||
This allows us to make progress matching code in parallel with solving other
|
||||
problems (such as the build system, ROM organization, and BSS ordering). The
|
||||
files in `tools/disasm/gc-eu-mq` say how to split the source files and where the
|
||||
functions and variables are in the target ROM, and these may need to be updated
|
||||
if there are mistakes or if function names change due to documentation work.
|
||||
|
||||
Unfortunately, the disassembly is not perfect, so a "correct" decompilation might
|
||||
still show diffs with data symbols. We might improve this later, but these data
|
||||
diffs are fine to ignore for now.
|
||||
|
||||
For register and stack allocation differences, often the code can be tweaked so
|
||||
that it matches both the retail ROM while continuing to match the Debug ROM (for
|
||||
example, by reordering assignments or moving a local variable declaration inside
|
||||
an `if` block). Since retail MM versions use the same compiler flags as retail
|
||||
OOT, checking MM decomp for similar code can help.
|
||||
|
||||
We can disable code that was removed in retail builds by adding
|
||||
`#ifdef OOT_DEBUG` around these parts of the code. In order to keep the code
|
||||
readable, we should try to minimize the amount of `#ifdef` noise whenever
|
||||
possible.
|
||||
|
||||
## Setup
|
||||
|
||||
1. Copy your target PAL GameCube Master Quest ROM (non-debug) to
|
||||
`baseroms/gc-eu-mq/baserom.z64`
|
||||
|
||||
1. Extract assets and ROM files **from the Debug ROM** by running
|
||||
|
||||
```sh
|
||||
make setup -jN
|
||||
```
|
||||
|
||||
if necessary, where `N` is the number of cores on your machine.
|
||||
|
||||
1. Build the non-matching test ROM by running
|
||||
|
||||
```sh
|
||||
make setup -jN VERSION=gc-eu-mq
|
||||
make -jN VERSION=gc-eu-mq
|
||||
```
|
||||
|
||||
where `N` is the number of cores on your machine. This will build into
|
||||
`build/gc-eu-mq` and produce `oot-gc-eu-mq.z64`.
|
||||
|
||||
If you later want to delete all output files, run
|
||||
|
||||
```sh
|
||||
make clean VERSION=gc-eu-mq
|
||||
```
|
||||
|
||||
1. Disassemble the target ROM by running
|
||||
|
||||
```sh
|
||||
make disasm -jN VERSION=gc-eu-mq
|
||||
```
|
||||
|
||||
where `N` is the number of cores on your machine. The outputs will be written to
|
||||
`expected/build/gc-eu-mq`.
|
||||
|
||||
Note that if you need to copy a matching build for the Debug ROM, you can use
|
||||
|
||||
```sh
|
||||
mkdir -p expected/build
|
||||
cp -r build/gc-eu-mq-dbg expected/build
|
||||
```
|
||||
|
||||
to avoid clobbering the disassembly.
|
||||
|
||||
## Diff Tools
|
||||
|
||||
Note that many tools will require activating the Python virtual environment
|
||||
in your terminal session. To do this, run:
|
||||
|
||||
```sh
|
||||
source .venv/bin/activate
|
||||
```
|
||||
|
||||
### retail_progress.py
|
||||
|
||||
Running `./retail_progress.py path/to/file.c` will attempt to figure out which functions
|
||||
in a file still need to match for `gc-eu-mq`. To get an overview of diffs for
|
||||
all files, run `./retail_progress.py` with no arguments.
|
||||
|
||||
### asm-differ / diff.py
|
||||
|
||||
To diff assembly for a single function in `gc-eu-mq`, run e.g.
|
||||
|
||||
```sh
|
||||
./diff.py -mwo3 -v gc-eu-mq Math3D_CylTriVsIntersect
|
||||
```
|
||||
|
||||
The `-v` flag tells `diff.py` to compare between `build/gc-eu-mq` and
|
||||
`expected/build/gc-eu-mq`, and to use `make VERSION=gc-eu-mq` when rebuilding.
|
||||
|
||||
You may also want to diff the Debug ROM in another terminal with
|
||||
|
||||
```sh
|
||||
./diff.py -mwo3 Math3D_CylTriVsIntersect
|
||||
```
|
||||
|
||||
to ensure any changes still match there.
|
||||
|
||||
### Permuter and decomp.me
|
||||
|
||||
Disassembly for individual functions is written to
|
||||
`expected/build/gc-eu-mq/functions`, so to get a [decomp.me](https://decomp.me/) scratch you can run
|
||||
e.g.
|
||||
|
||||
```sh
|
||||
decomp-permuter/import.py \
|
||||
src/code/sys_math3d.c \
|
||||
expected/build/gc-eu-mq/functions/src/code/sys_math3d/Math3D_CylTriVsIntersect.s \
|
||||
VERSION=gc-eu-mq --decompme
|
||||
```
|
|
@ -30,17 +30,17 @@ def firstDiffMain():
|
|||
parser = argparse.ArgumentParser(description="Find the first difference(s) between the built ROM and the base ROM.")
|
||||
|
||||
parser.add_argument("-c", "--count", type=int, default=5, help="find up to this many instruction difference(s)")
|
||||
parser.add_argument("-v", "--version", help="Which version should be processed", default="gc-eu-mq-dbg")
|
||||
parser.add_argument("-v", "--oot-version", help="Which version should be processed", default="gc-eu-mq-dbg")
|
||||
parser.add_argument("-a", "--add-colons", action='store_true', help="Add colon between bytes" )
|
||||
|
||||
args = parser.parse_args()
|
||||
|
||||
buildFolder = Path("build") / args.version
|
||||
buildFolder = Path("build") / args.oot_version
|
||||
|
||||
BUILTROM = Path(f"oot-{args.version}.z64")
|
||||
BUILTROM = Path(f"oot-{args.oot_version}.z64")
|
||||
BUILTMAP = buildFolder / "z64.map"
|
||||
|
||||
EXPECTEDROM = Path(f"baseroms/{args.version}/baserom-decompressed.z64")
|
||||
EXPECTEDROM = Path(f"baseroms/{args.oot_version}/baserom-decompressed.z64")
|
||||
EXPECTEDMAP = "expected" / BUILTMAP
|
||||
|
||||
mapfile_parser.frontends.first_diff.doFirstDiff(BUILTMAP, EXPECTEDMAP, BUILTROM, EXPECTEDROM, args.count, mismatchSize=True, addColons=args.add_colons, bytesConverterCallback=decodeInstruction)
|
||||
|
|
|
@ -2,3 +2,48 @@
|
|||
.global \label
|
||||
\label:
|
||||
.endm
|
||||
|
||||
.macro dlabel label
|
||||
.global \label
|
||||
\label:
|
||||
.endm
|
||||
|
||||
.macro jlabel label
|
||||
\label:
|
||||
.endm
|
||||
|
||||
|
||||
# Float register aliases (o32 ABI, odd ones are rarely used)
|
||||
|
||||
.set $fv0, $f0
|
||||
.set $fv0f, $f1
|
||||
.set $fv1, $f2
|
||||
.set $fv1f, $f3
|
||||
.set $ft0, $f4
|
||||
.set $ft0f, $f5
|
||||
.set $ft1, $f6
|
||||
.set $ft1f, $f7
|
||||
.set $ft2, $f8
|
||||
.set $ft2f, $f9
|
||||
.set $ft3, $f10
|
||||
.set $ft3f, $f11
|
||||
.set $fa0, $f12
|
||||
.set $fa0f, $f13
|
||||
.set $fa1, $f14
|
||||
.set $fa1f, $f15
|
||||
.set $ft4, $f16
|
||||
.set $ft4f, $f17
|
||||
.set $ft5, $f18
|
||||
.set $ft5f, $f19
|
||||
.set $fs0, $f20
|
||||
.set $fs0f, $f21
|
||||
.set $fs1, $f22
|
||||
.set $fs1f, $f23
|
||||
.set $fs2, $f24
|
||||
.set $fs2f, $f25
|
||||
.set $fs3, $f26
|
||||
.set $fs3f, $f27
|
||||
.set $fs4, $f28
|
||||
.set $fs4f, $f29
|
||||
.set $fs5, $f30
|
||||
.set $fs5f, $f31
|
||||
|
|
|
@ -16,3 +16,4 @@ toml
|
|||
# tools
|
||||
mapfile-parser>=1.2.1,<2.0.0
|
||||
rabbitizer>=1.0.0,<2.0.0
|
||||
spimdisasm>=1.20.0,<2.0.0
|
||||
|
|
245
retail_progress.py
Executable file
245
retail_progress.py
Executable file
|
@ -0,0 +1,245 @@
|
|||
#!/usr/bin/env python3
|
||||
|
||||
# SPDX-FileCopyrightText: © 2024 ZeldaRET
|
||||
# SPDX-License-Identifier: CC0-1.0
|
||||
|
||||
import argparse
|
||||
import collections
|
||||
from dataclasses import dataclass
|
||||
import difflib
|
||||
from enum import Enum
|
||||
import itertools
|
||||
import math
|
||||
from pathlib import Path
|
||||
import re
|
||||
import subprocess
|
||||
import sys
|
||||
from typing import Iterator, List, Optional, Tuple
|
||||
|
||||
|
||||
@dataclass
|
||||
class Inst:
|
||||
func_name: str
|
||||
mnemonic: str
|
||||
regs: List[str]
|
||||
imm: Optional[int]
|
||||
reloc_type: Optional[str]
|
||||
reloc_symbol: Optional[str]
|
||||
|
||||
|
||||
FUNC_RE = re.compile(r"([0-9a-f]+) <(.*)>:")
|
||||
|
||||
|
||||
def parse_func_name(line: str) -> str:
|
||||
match = FUNC_RE.match(line)
|
||||
if not match:
|
||||
raise Exception(f"could not parse function name from '{line}'")
|
||||
return match.group(2)
|
||||
|
||||
|
||||
def is_branch(mnemonic: str) -> bool:
|
||||
return mnemonic.startswith("b") and mnemonic != "break"
|
||||
|
||||
|
||||
def parse_inst(func_name: str, line: str) -> Inst:
|
||||
parts = line.split()
|
||||
addr = int(parts[0][:-1], 16)
|
||||
mnemonic = parts[2]
|
||||
regs = []
|
||||
imm = None
|
||||
if len(parts) > 3:
|
||||
for part in parts[3].split(","):
|
||||
if "(" in part: # load/store
|
||||
offset_str, rest = part.split("(")
|
||||
regs.append(rest[:-1])
|
||||
imm = int(offset_str, 10)
|
||||
elif is_branch(mnemonic):
|
||||
try:
|
||||
# convert branch targets to relative offsets
|
||||
offset = int(part, 16)
|
||||
imm = offset - addr - 4
|
||||
except ValueError:
|
||||
regs.append(part)
|
||||
else:
|
||||
try:
|
||||
imm = int(part, 0)
|
||||
except ValueError:
|
||||
regs.append(part)
|
||||
return Inst(func_name, mnemonic, regs, imm, None, None)
|
||||
|
||||
|
||||
def run_objdump(path: Path) -> List[Inst]:
|
||||
if not path.exists():
|
||||
raise Exception(f"file {path} does not exist")
|
||||
|
||||
command = [
|
||||
"mips-linux-gnu-objdump",
|
||||
"-drz",
|
||||
"-m",
|
||||
"mips:4300",
|
||||
"-j",
|
||||
".text",
|
||||
str(path),
|
||||
]
|
||||
try:
|
||||
lines = subprocess.run(
|
||||
command,
|
||||
stdout=subprocess.PIPE,
|
||||
stderr=subprocess.PIPE,
|
||||
check=True,
|
||||
encoding="utf-8",
|
||||
).stdout.splitlines()
|
||||
except subprocess.CalledProcessError as e:
|
||||
return []
|
||||
|
||||
result = []
|
||||
|
||||
func_name = None
|
||||
i = 6 # skip preamble
|
||||
while i < len(lines):
|
||||
row = lines[i]
|
||||
i += 1
|
||||
|
||||
if not row:
|
||||
continue
|
||||
|
||||
if not row.startswith(" "):
|
||||
func_name = parse_func_name(row)
|
||||
continue
|
||||
|
||||
if not func_name:
|
||||
raise Exception(f"no function name for line '{row}'")
|
||||
|
||||
inst = parse_inst(func_name, row)
|
||||
|
||||
if i < len(lines) and lines[i].startswith("\t"):
|
||||
reloc = lines[i]
|
||||
i += 1
|
||||
_, inst.reloc_type, inst.reloc_symbol = reloc.split()
|
||||
|
||||
result.append(inst)
|
||||
|
||||
# trim trailing nops
|
||||
while result and result[-1].mnemonic == "nop":
|
||||
result.pop()
|
||||
return result
|
||||
|
||||
|
||||
def pair_instructions(
|
||||
insts1: List[Inst], insts2: List[Inst]
|
||||
) -> Iterator[Tuple[Optional[Inst], Optional[Inst]]]:
|
||||
differ = difflib.SequenceMatcher(
|
||||
a=[(inst.func_name, inst.mnemonic) for inst in insts1],
|
||||
b=[(inst.func_name, inst.mnemonic) for inst in insts2],
|
||||
autojunk=False,
|
||||
)
|
||||
for tag, i1, i2, j1, j2 in differ.get_opcodes():
|
||||
for inst1, inst2 in itertools.zip_longest(insts1[i1:i2], insts2[j1:j2]):
|
||||
yield (inst1, inst2)
|
||||
|
||||
|
||||
def has_diff(inst1: Inst, inst2: Inst) -> bool:
|
||||
if (
|
||||
inst1.func_name != inst2.func_name
|
||||
or inst1.mnemonic != inst2.mnemonic
|
||||
or inst1.regs != inst2.regs
|
||||
):
|
||||
return True
|
||||
|
||||
if inst1.reloc_type == inst2.reloc_type and inst1.reloc_type in (
|
||||
"R_MIPS_HI16",
|
||||
"R_MIPS_LO16",
|
||||
):
|
||||
# ignore symbol differences
|
||||
return False
|
||||
|
||||
return inst1 != inst2
|
||||
|
||||
|
||||
def find_functions_with_diffs(version: str, c_path: str):
|
||||
object_path = Path(c_path).with_suffix(".o")
|
||||
|
||||
expected_dir = Path("expected/build") / version
|
||||
build_dir = Path("build") / version
|
||||
|
||||
insts1 = run_objdump(expected_dir / object_path)
|
||||
insts2 = run_objdump(build_dir / object_path)
|
||||
|
||||
functions_with_diffs = collections.OrderedDict()
|
||||
for inst1, inst2 in pair_instructions(insts1, insts2):
|
||||
if inst1 is None and inst2 is not None:
|
||||
functions_with_diffs[inst2.func_name] = True
|
||||
elif inst1 is not None and inst2 is None:
|
||||
functions_with_diffs[inst1.func_name] = True
|
||||
elif inst1 is not None and inst2 is not None and has_diff(inst1, inst2):
|
||||
functions_with_diffs[inst1.func_name] = True
|
||||
functions_with_diffs[inst2.func_name] = True
|
||||
|
||||
if not functions_with_diffs:
|
||||
print(f"{c_path} OK")
|
||||
return
|
||||
|
||||
print(f"{c_path} functions with diffs:")
|
||||
for func_name in functions_with_diffs:
|
||||
print(f" {func_name}")
|
||||
|
||||
|
||||
def print_summary(version: str, csv: bool):
|
||||
expected_dir = Path("expected/build") / version
|
||||
build_dir = Path("build") / version
|
||||
|
||||
if csv:
|
||||
print("path,expected,actual,added,removed,changed,progress")
|
||||
for object_file in sorted(expected_dir.glob("src/**/*.o")):
|
||||
object_path = object_file.relative_to(expected_dir)
|
||||
c_path = object_path.with_suffix(".c")
|
||||
|
||||
insts1 = run_objdump(expected_dir / object_path)
|
||||
insts2 = run_objdump(build_dir / object_path)
|
||||
|
||||
added = 0
|
||||
removed = 0
|
||||
changed = 0
|
||||
for inst1, inst2 in pair_instructions(insts1, insts2):
|
||||
if inst1 is None and inst2 is not None:
|
||||
added += 1
|
||||
elif inst1 is not None and inst2 is None:
|
||||
removed += 1
|
||||
elif inst1 is not None and inst2 is not None and has_diff(inst1, inst2):
|
||||
changed += 1
|
||||
|
||||
if insts1:
|
||||
progress = max(1.0 - (added + removed + changed) / len(insts1), 0)
|
||||
else:
|
||||
progress = 1.0
|
||||
|
||||
if csv:
|
||||
print(
|
||||
f"{c_path},{len(insts1)},{len(insts2)},{added},{removed},{changed},{progress:.3f}"
|
||||
)
|
||||
elif progress == 1.0:
|
||||
print(f" OK {c_path}")
|
||||
else:
|
||||
print(f" {math.floor(progress * 100):>2}% {c_path}")
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
parser = argparse.ArgumentParser(
|
||||
description="Calculate progress matching .text sections"
|
||||
)
|
||||
parser.add_argument(
|
||||
"file",
|
||||
metavar="FILE",
|
||||
nargs="?",
|
||||
help="find functions with diffs in the given source file (if omitted, print summary of diffs for all files)",
|
||||
)
|
||||
parser.add_argument(
|
||||
"-v", "--version", help="version to compare", default="gc-eu-mq"
|
||||
)
|
||||
parser.add_argument("--csv", help="print summary CSV", action="store_true")
|
||||
args = parser.parse_args()
|
||||
|
||||
if args.file is not None:
|
||||
find_functions_with_diffs(args.version, args.file)
|
||||
else:
|
||||
print_summary(args.version, args.csv)
|
|
@ -9,11 +9,12 @@ import mapfile_parser
|
|||
def symInfoMain():
|
||||
parser = argparse.ArgumentParser(description="Display various information about a symbol or address.")
|
||||
parser.add_argument("symname", help="symbol name or VROM/VRAM address to lookup")
|
||||
parser.add_argument("-v", "--oot-version", help="Which version should be processed", default="gc-eu-mq-dbg")
|
||||
parser.add_argument("-e", "--expected", dest="use_expected", action="store_true", help="use the map file in expected/build/ instead of build/")
|
||||
|
||||
args = parser.parse_args()
|
||||
|
||||
BUILTMAP = Path("build") / "gc-eu-mq-dbg" / "z64.map"
|
||||
BUILTMAP = Path("build") / args.oot_version / "z64.map"
|
||||
|
||||
mapPath = BUILTMAP
|
||||
if args.use_expected:
|
||||
|
|
|
@ -33,10 +33,12 @@ def decompress(data: bytes, is_zlib_compressed: bool) -> bytes:
|
|||
|
||||
|
||||
FILE_TABLE_OFFSET = {
|
||||
"gc-eu-mq": 0x07170,
|
||||
"gc-eu-mq-dbg": 0x12F70,
|
||||
}
|
||||
|
||||
VERSIONS_MD5S = {
|
||||
"gc-eu-mq": "1a438f4235f8038856971c14a798122a",
|
||||
"gc-eu-mq-dbg": "f0b7f35375f9cc8ca1b2d59d78e35405",
|
||||
}
|
||||
|
||||
|
|
156
tools/disasm/disasm.py
Executable file
156
tools/disasm/disasm.py
Executable file
|
@ -0,0 +1,156 @@
|
|||
#!/usr/bin/env python3
|
||||
|
||||
# SPDX-FileCopyrightText: © 2024 ZeldaRET
|
||||
# SPDX-License-Identifier: CC0-1.0
|
||||
|
||||
import argparse
|
||||
import collections
|
||||
from pathlib import Path
|
||||
from typing import BinaryIO
|
||||
|
||||
import spimdisasm
|
||||
from spimdisasm import frontendCommon as fec
|
||||
|
||||
from file_addresses import DmaFile, parse_file_addresses, get_z_name_for_overlay
|
||||
|
||||
|
||||
def load_file_splits(
|
||||
context: spimdisasm.common.Context,
|
||||
config_dir: Path,
|
||||
dma_file: DmaFile,
|
||||
f: BinaryIO,
|
||||
) -> spimdisasm.mips.FileSplits:
|
||||
# Assume that we're reading from a decompressed ROM where the DMA file is
|
||||
# now located at the same ROM offset as the VROM start
|
||||
f.seek(dma_file.vrom_start)
|
||||
data = bytearray(f.read(dma_file.vrom_end - dma_file.vrom_start))
|
||||
|
||||
file_splits_path = config_dir / f"files_{dma_file.name}.csv"
|
||||
if file_splits_path.exists():
|
||||
default_filename = ""
|
||||
splits_data = spimdisasm.common.FileSplitFormat()
|
||||
splits_data.readCsvFile(file_splits_path)
|
||||
reloc_section = None
|
||||
elif dma_file.overlay_dir is not None:
|
||||
z_name = get_z_name_for_overlay(dma_file.name)
|
||||
default_filename = (
|
||||
f"src/overlays/{dma_file.overlay_dir}/{dma_file.name}/{z_name}.s"
|
||||
)
|
||||
splits_data = None
|
||||
reloc_section = spimdisasm.mips.sections.SectionRelocZ64(
|
||||
context,
|
||||
vromStart=0,
|
||||
vromEnd=len(data),
|
||||
vram=dma_file.vram_start,
|
||||
filename=default_filename,
|
||||
array_of_bytes=data,
|
||||
segmentVromStart=0,
|
||||
overlayCategory=None,
|
||||
)
|
||||
else:
|
||||
raise Exception(
|
||||
f"DMA file {dma_file.name} is not an overlay but has no file splits"
|
||||
)
|
||||
|
||||
return spimdisasm.mips.FileSplits(
|
||||
context,
|
||||
vromStart=0,
|
||||
vromEnd=len(data),
|
||||
vram=dma_file.vram_start,
|
||||
filename=default_filename,
|
||||
array_of_bytes=data,
|
||||
segmentVromStart=0,
|
||||
overlayCategory=None,
|
||||
splitsData=splits_data,
|
||||
relocSection=reloc_section,
|
||||
)
|
||||
|
||||
|
||||
def main():
|
||||
parser = argparse.ArgumentParser(description="Disassemble a ROM.")
|
||||
parser.add_argument("rom", type=Path, help="Input ROM")
|
||||
parser.add_argument(
|
||||
"-o", "--output-dir", help="Output directory", type=Path, required=True
|
||||
)
|
||||
parser.add_argument(
|
||||
"--config-dir", help="Config directory", type=Path, required=True
|
||||
)
|
||||
parser.add_argument(
|
||||
"--split-functions", help="Write functions into separate files", type=Path
|
||||
)
|
||||
|
||||
spimdisasm.common.Context.addParametersToArgParse(parser)
|
||||
spimdisasm.common.GlobalConfig.addParametersToArgParse(parser)
|
||||
spimdisasm.mips.InstructionConfig.addParametersToArgParse(parser)
|
||||
|
||||
args = parser.parse_args()
|
||||
|
||||
context = spimdisasm.common.Context()
|
||||
context.parseArgs(args)
|
||||
context.changeGlobalSegmentRanges(0x00000000, 0x01000000, 0x8000000, 0x81000000)
|
||||
context.addBannedSymbolRange(0x10000000, 0x80000300)
|
||||
context.addBannedSymbolRange(0xA0000000, 0xFFFFFFFF)
|
||||
|
||||
spimdisasm.mips.InstructionConfig.parseArgs(args)
|
||||
spimdisasm.common.GlobalConfig.parseArgs(args)
|
||||
|
||||
spimdisasm.common.GlobalConfig.ASM_USE_PRELUDE = False
|
||||
spimdisasm.common.GlobalConfig.PRODUCE_SYMBOLS_PLUS_OFFSET = True
|
||||
spimdisasm.common.GlobalConfig.TRUST_USER_FUNCTIONS = True
|
||||
|
||||
dma_files = parse_file_addresses(args.config_dir / "file_addresses.csv")
|
||||
|
||||
output_files = collections.defaultdict(list)
|
||||
with open(args.rom, "rb") as f:
|
||||
for dma_file in dma_files:
|
||||
file_splits = load_file_splits(context, args.config_dir, dma_file, f)
|
||||
|
||||
for section_type, files in file_splits.sectionsDict.items():
|
||||
# TODO: disassemble overlay reloc sections?
|
||||
if section_type == spimdisasm.common.FileSectionType.Reloc:
|
||||
continue
|
||||
|
||||
for path, section in files.items():
|
||||
output_files[path].append(section)
|
||||
|
||||
for path, sections in sorted(output_files.items()):
|
||||
spimdisasm.common.Utils.printQuietless(f"Analyzing {path} ...")
|
||||
for section in sections:
|
||||
section.analyze()
|
||||
|
||||
for path, sections in sorted(output_files.items()):
|
||||
spimdisasm.common.Utils.printQuietless(f"Writing {path} ...")
|
||||
output_path = args.output_dir / path
|
||||
output_path.parent.mkdir(parents=True, exist_ok=True)
|
||||
with open(output_path, "w") as f:
|
||||
f.write('.include "macro.inc"\n')
|
||||
f.write("\n")
|
||||
f.write(".set noat\n")
|
||||
f.write(".set noreorder\n")
|
||||
f.write(".set gp=64\n")
|
||||
for section in sections:
|
||||
f.write("\n")
|
||||
f.write(f".section {section.sectionType.toStr()}\n")
|
||||
f.write("\n")
|
||||
f.write(f".align 4\n")
|
||||
f.write("\n")
|
||||
section.disassembleToFile(f)
|
||||
|
||||
if args.split_functions is not None:
|
||||
rodata_list = []
|
||||
for section in sections:
|
||||
if section.sectionType == spimdisasm.common.FileSectionType.Rodata:
|
||||
rodata_list.append(section)
|
||||
|
||||
for section in sections:
|
||||
if section.sectionType != spimdisasm.common.FileSectionType.Text:
|
||||
continue
|
||||
output_dir = (args.split_functions / section.name).with_suffix("")
|
||||
for func in section.symbolList:
|
||||
spimdisasm.mips.FilesHandlers.writeSplitedFunction(
|
||||
output_dir, func, rodata_list
|
||||
)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
47
tools/disasm/file_addresses.py
Normal file
47
tools/disasm/file_addresses.py
Normal file
|
@ -0,0 +1,47 @@
|
|||
# SPDX-FileCopyrightText: © 2024 ZeldaRET
|
||||
# SPDX-License-Identifier: CC0-1.0
|
||||
|
||||
import csv
|
||||
from dataclasses import dataclass
|
||||
from pathlib import Path
|
||||
from typing import List, Optional
|
||||
|
||||
|
||||
@dataclass
|
||||
class DmaFile:
|
||||
name: str
|
||||
vrom_start: int
|
||||
vrom_end: int
|
||||
rom_start: int
|
||||
rom_end: int
|
||||
vram_start: int
|
||||
overlay_dir: Optional[str]
|
||||
|
||||
|
||||
def parse_file_addresses(path: Path) -> List[DmaFile]:
|
||||
result = []
|
||||
with open(path) as f:
|
||||
reader = csv.DictReader(f)
|
||||
for row in reader:
|
||||
name = row["name"]
|
||||
result.append(
|
||||
DmaFile(
|
||||
name=row["name"],
|
||||
vrom_start=int(row["vrom_start"], 16),
|
||||
vrom_end=int(row["vrom_end"], 16),
|
||||
rom_start=int(row["rom_start"], 16),
|
||||
rom_end=int(row["rom_end"], 16),
|
||||
vram_start=int(row["vram_start"], 16),
|
||||
overlay_dir=row["overlay_dir"] if row["overlay_dir"] else None,
|
||||
)
|
||||
)
|
||||
return result
|
||||
|
||||
|
||||
def get_z_name_for_overlay(filename: str) -> str:
|
||||
if filename == "ovl_player_actor":
|
||||
return "z_player"
|
||||
elif filename.startswith("ovl_Effect_"):
|
||||
return "z_eff_" + filename[len("ovl_Effect_") :].lower()
|
||||
else:
|
||||
return "z_" + filename[len("ovl_") :].lower()
|
472
tools/disasm/gc-eu-mq/file_addresses.csv
Normal file
472
tools/disasm/gc-eu-mq/file_addresses.csv
Normal file
|
@ -0,0 +1,472 @@
|
|||
name,vrom_start,vrom_end,rom_start,rom_end,vram_start,overlay_dir
|
||||
boot,1060,7170,1060,0,80000460,
|
||||
code,A88000,B8A230,A580D0,AF27E0,80010F00,
|
||||
ovl_title,B8A230,B8AA80,AF27E0,AF2E20,80800000,gamestates
|
||||
ovl_select,B8AA80,B8D700,AF2E20,AF4900,80800850,gamestates
|
||||
ovl_opening,B8D700,B8D860,AF4900,AF4A30,808034D0,gamestates
|
||||
ovl_file_choose,B8D860,B9C470,AF4A30,AFCFD0,80803630,gamestates
|
||||
ovl_kaleido_scope,B9C470,BB8E30,AFCFD0,B0BEC0,80812260,misc
|
||||
ovl_player_actor,BB8E30,BDF540,B0BEC0,B25210,8082EC90,actors
|
||||
ovl_map_mark_data,BDF540,BE6020,B25210,B255C0,80855470,misc
|
||||
ovl_En_Test,BE6020,BEB8D0,B255C0,B28A90,8085BF50,actors
|
||||
ovl_Arms_Hook,BEB8D0,BEC640,B28A90,B29520,80861800,actors
|
||||
ovl_Arrow_Fire,BEC640,BEE520,B29520,B2AFE0,80862570,actors
|
||||
ovl_Arrow_Ice,BEE520,BF0420,B2AFE0,B2C850,80864450,actors
|
||||
ovl_Arrow_Light,BF0420,BF2330,B2C850,B2E150,80866350,actors
|
||||
ovl_Bg_Bdan_Objects,BF2330,BF3600,B2E150,B2EE80,80868260,actors
|
||||
ovl_Bg_Bdan_Switch,BF3600,BF4A30,B2EE80,B2FA30,80869530,actors
|
||||
ovl_Bg_Bom_Guard,BF4A30,BF4C50,B2FA30,B2FC20,8086A960,actors
|
||||
ovl_Bg_Bombwall,BF4C50,BF5510,B2FC20,B30300,8086AB80,actors
|
||||
ovl_Bg_Bowl_Wall,BF5510,BF5E90,B30300,B30B20,8086B440,actors
|
||||
ovl_Bg_Breakwall,BF5E90,BF6D00,B30B20,B31680,8086BDC0,actors
|
||||
ovl_Bg_Ddan_Jd,BF6D00,BF7350,B31680,B31B80,8086CC30,actors
|
||||
ovl_Bg_Ddan_Kd,BF7350,BF7C40,B31B80,B32260,8086D280,actors
|
||||
ovl_Bg_Dodoago,BF7C40,BF8980,B32260,B32CC0,8086DB70,actors
|
||||
ovl_Bg_Dy_Yoseizo,BF8980,BFB770,B32CC0,B34C00,8086E920,actors
|
||||
ovl_Bg_Ganon_Otyuka,BFB770,BFDDB0,B34C00,B36920,80871710,actors
|
||||
ovl_Bg_Gate_Shutter,BFDDB0,BFE240,B36920,B36CA0,80873D50,actors
|
||||
ovl_Bg_Gjyo_Bridge,BFE240,BFE730,B36CA0,B370D0,808741E0,actors
|
||||
ovl_Bg_Gnd_Darkmeiro,BFE730,BFEEF0,B370D0,B37690,808746D0,actors
|
||||
ovl_Bg_Gnd_Firemeiro,BFEEF0,BFF440,B37690,B37AF0,80874E90,actors
|
||||
ovl_Bg_Gnd_Iceblock,BFF440,C00530,B37AF0,B38630,808753E0,actors
|
||||
ovl_Bg_Gnd_Nisekabe,C00530,C006A0,B38630,B38780,808764E0,actors
|
||||
ovl_Bg_Gnd_Soulmeiro,C006A0,C00F00,B38780,B38E80,80876650,actors
|
||||
ovl_Bg_Haka,C00F00,C015C0,B38E80,B39430,80876EB0,actors
|
||||
ovl_Bg_Haka_Gate,C015C0,C02650,B39430,B3A110,80877570,actors
|
||||
ovl_Bg_Haka_Huta,C02650,C030F0,B3A110,B3A970,80878610,actors
|
||||
ovl_Bg_Haka_Megane,C030F0,C034F0,B3A970,B3ACC0,808790B0,actors
|
||||
ovl_Bg_Haka_MeganeBG,C034F0,C03BB0,B3ACC0,B3B210,808794B0,actors
|
||||
ovl_Bg_Haka_Sgami,C03BB0,C047D0,B3B210,B3BB90,80879B70,actors
|
||||
ovl_Bg_Haka_Ship,C047D0,C05220,B3BB90,B3C3C0,8087A790,actors
|
||||
ovl_Bg_Haka_Trap,C05220,C067F0,B3C3C0,B3D3D0,8087B1E0,actors
|
||||
ovl_Bg_Haka_Tubo,C067F0,C07210,B3D3D0,B3DC10,8087C7B0,actors
|
||||
ovl_Bg_Haka_Water,C07210,C07A10,B3DC10,B3E1D0,8087D1D0,actors
|
||||
ovl_Bg_Haka_Zou,C07A10,C08C00,B3E1D0,B3EF50,8087D9D0,actors
|
||||
ovl_Bg_Heavy_Block,C08C00,C0A4F0,B3EF50,B40190,8087EBC0,actors
|
||||
ovl_Bg_Hidan_Curtain,C0A4F0,C0AF90,B40190,B409C0,808804B0,actors
|
||||
ovl_Bg_Hidan_Dalm,C0AF90,C0B7E0,B409C0,B41020,80880F50,actors
|
||||
ovl_Bg_Hidan_Firewall,C0B7E0,C0BF40,B41020,B41660,808817A0,actors
|
||||
ovl_Bg_Hidan_Fslift,C0BF40,C0C410,B41660,B41A10,80881F00,actors
|
||||
ovl_Bg_Hidan_Fwbig,C0C410,C0D0F0,B41A10,B42470,808823D0,actors
|
||||
ovl_Bg_Hidan_Hamstep,C0D0F0,C0DFA0,B42470,B42FA0,808830B0,actors
|
||||
ovl_Bg_Hidan_Hrock,C0DFA0,C0E7D0,B42FA0,B43610,80883F60,actors
|
||||
ovl_Bg_Hidan_Kousi,C0E7D0,C0ED60,B43610,B43A50,80884790,actors
|
||||
ovl_Bg_Hidan_Kowarerukabe,C0ED60,C0FC40,B43A50,B44420,80884D20,actors
|
||||
ovl_Bg_Hidan_Rock,C0FC40,C10D40,B44420,B45100,80885C00,actors
|
||||
ovl_Bg_Hidan_Rsekizou,C10D40,C11920,B45100,B459E0,80886D00,actors
|
||||
ovl_Bg_Hidan_Sekizou,C11920,C12D70,B459E0,B46950,808878E0,actors
|
||||
ovl_Bg_Hidan_Sima,C12D70,C13C70,B46950,B47520,80888D30,actors
|
||||
ovl_Bg_Hidan_Syoku,C13C70,C140D0,B47520,B47830,80889C30,actors
|
||||
ovl_Bg_Ice_Objects,C140D0,C15010,B47830,B48270,8088A090,actors
|
||||
ovl_Bg_Ice_Shelter,C15010,C16250,B48270,B49060,8088AFD0,actors
|
||||
ovl_Bg_Ice_Shutter,C16250,C166C0,B49060,B493C0,8088C210,actors
|
||||
ovl_Bg_Ice_Turara,C166C0,C16EF0,B493C0,B49A80,8088C680,actors
|
||||
ovl_Bg_Ingate,C16EF0,C17280,B49A80,B49DA0,8088CEB0,actors
|
||||
ovl_Bg_Jya_1flift,C17280,C17910,B49DA0,B4A2A0,8088D240,actors
|
||||
ovl_Bg_Jya_Amishutter,C17910,C17CA0,B4A2A0,B4A4F0,8088D8D0,actors
|
||||
ovl_Bg_Jya_Bigmirror,C17CA0,C184F0,B4A4F0,B4AC00,8088DC60,actors
|
||||
ovl_Bg_Jya_Block,C184F0,C18760,B4AC00,B4AE60,8088E4B0,actors
|
||||
ovl_Bg_Jya_Bombchuiwa,C18760,C192A0,B4AE60,B4B710,8088E720,actors
|
||||
ovl_Bg_Jya_Bombiwa,C192A0,C19860,B4B710,B4BBF0,8088F260,actors
|
||||
ovl_Bg_Jya_Cobra,C19860,C1B5A0,B4BBF0,B4D170,8088F820,actors
|
||||
ovl_Bg_Jya_Goroiwa,C1B5A0,C1BD20,B4D170,B4D7D0,80891560,actors
|
||||
ovl_Bg_Jya_Haheniron,C1BD20,C1C510,B4D7D0,B4DE50,80891CE0,actors
|
||||
ovl_Bg_Jya_Ironobj,C1C510,C1D2C0,B4DE50,B4E7B0,808924D0,actors
|
||||
ovl_Bg_Jya_Kanaami,C1D2C0,C1D670,B4E7B0,B4EAA0,80893280,actors
|
||||
ovl_Bg_Jya_Lift,C1D670,C1DBC0,B4EAA0,B4EEF0,80893630,actors
|
||||
ovl_Bg_Jya_Megami,C1DBC0,C1EDB0,B4EEF0,B4FDD0,80893B80,actors
|
||||
ovl_Bg_Jya_Zurerukabe,C1EDB0,C1F460,B4FDD0,B50320,80894D70,actors
|
||||
ovl_Bg_Menkuri_Eye,C1F460,C1F8F0,B50320,B50710,80895420,actors
|
||||
ovl_Bg_Menkuri_Kaiten,C1F8F0,C1FA80,B50710,B50870,808958C0,actors
|
||||
ovl_Bg_Menkuri_Nisekabe,C1FA80,C1FBD0,B50870,B50990,80895A50,actors
|
||||
ovl_Bg_Mizu_Bwall,C1FBD0,C210A0,B50990,B51760,80895BA0,actors
|
||||
ovl_Bg_Mizu_Movebg,C210A0,C22220,B51760,B52440,80897070,actors
|
||||
ovl_Bg_Mizu_Shutter,C22220,C22A20,B52440,B52A80,80898200,actors
|
||||
ovl_Bg_Mizu_Uzu,C22A20,C22BF0,B52A80,B52C00,80898A00,actors
|
||||
ovl_Bg_Mizu_Water,C22BF0,C238C0,B52C00,B53500,80898BD0,actors
|
||||
ovl_Bg_Mjin,C238C0,C23CB0,B53500,B53860,808998A0,actors
|
||||
ovl_Bg_Mori_Bigst,C23CB0,C245E0,B53860,B53ED0,80899C90,actors
|
||||
ovl_Bg_Mori_Elevator,C245E0,C250D0,B53ED0,B54620,8089A5C0,actors
|
||||
ovl_Bg_Mori_Hashigo,C250D0,C25990,B54620,B54CA0,8089B0B0,actors
|
||||
ovl_Bg_Mori_Hashira4,C25990,C25F10,B54CA0,B550F0,8089B970,actors
|
||||
ovl_Bg_Mori_Hineri,C25F10,C26C60,B550F0,B55AD0,8089BF00,actors
|
||||
ovl_Bg_Mori_Idomizu,C26C60,C272A0,B55AD0,B55FC0,8089CC50,actors
|
||||
ovl_Bg_Mori_Kaitenkabe,C272A0,C27910,B55FC0,B56510,8089D290,actors
|
||||
ovl_Bg_Mori_Rakkatenjo,C27910,C28290,B56510,B56BD0,8089D900,actors
|
||||
ovl_Bg_Po_Event,C28290,C2A0C0,B56BD0,B58220,8089E280,actors
|
||||
ovl_Bg_Po_Syokudai,C2A0C0,C2AA30,B58220,B589D0,808A00C0,actors
|
||||
ovl_Bg_Pushbox,C2AA30,C2AD30,B589D0,B58C60,808A0A30,actors
|
||||
ovl_Bg_Relay_Objects,C2AD30,C2B4E0,B58C60,B59280,808A0D30,actors
|
||||
ovl_Bg_Spot00_Break,C2B4E0,C2B680,B59280,B593F0,808A14E0,actors
|
||||
ovl_Bg_Spot00_Hanebasi,C2B680,C2C790,B593F0,B5A1B0,808A1680,actors
|
||||
ovl_Bg_Spot01_Fusya,C2C790,C2CA30,B5A1B0,B5A400,808A2790,actors
|
||||
ovl_Bg_Spot01_Idohashira,C2CA30,C2D630,B5A400,B5AD30,808A2A30,actors
|
||||
ovl_Bg_Spot01_Idomizu,C2D630,C2D950,B5AD30,B5B000,808A3630,actors
|
||||
ovl_Bg_Spot01_Idosoko,C2D950,C2DB60,B5B000,B5B1C0,808A3950,actors
|
||||
ovl_Bg_Spot01_Objects2,C2DB60,C2E020,B5B1C0,B5B5D0,808A3B60,actors
|
||||
ovl_Bg_Spot02_Objects,C2E020,C2F380,B5B5D0,B5C3B0,808A4020,actors
|
||||
ovl_Bg_Spot03_Taki,C2F380,C2FCA0,B5C3B0,B5CA90,808A5380,actors
|
||||
ovl_Bg_Spot05_Soko,C2FCA0,C2FFC0,B5CA90,B5CD20,808A5CA0,actors
|
||||
ovl_Bg_Spot06_Objects,C2FFC0,C313C0,B5CD20,B5DC30,808A5FC0,actors
|
||||
ovl_Bg_Spot07_Taki,C313C0,C319B0,B5DC30,B5E0A0,808A73C0,actors
|
||||
ovl_Bg_Spot08_Bakudankabe,C319B0,C32050,B5E0A0,B5E650,808A79B0,actors
|
||||
ovl_Bg_Spot08_Iceblock,C32050,C33090,B5E650,B5F1F0,808A8050,actors
|
||||
ovl_Bg_Spot09_Obj,C33090,C335B0,B5F1F0,B5F5C0,808A9090,actors
|
||||
ovl_Bg_Spot11_Bakudankabe,C335B0,C33BF0,B5F5C0,B5FB20,808A95B0,actors
|
||||
ovl_Bg_Spot11_Oasis,C33BF0,C34320,B5FB20,B60150,808A9BF0,actors
|
||||
ovl_Bg_Spot12_Gate,C34320,C34730,B60150,B60460,808AA320,actors
|
||||
ovl_Bg_Spot12_Saku,C34730,C34BF0,B60460,B60820,808AA730,actors
|
||||
ovl_Bg_Spot15_Rrbox,C34BF0,C359D0,B60820,B61230,808AABF0,actors
|
||||
ovl_Bg_Spot15_Saku,C359D0,C35D10,B61230,B61500,808AB9D0,actors
|
||||
ovl_Bg_Spot16_Bombstone,C35D10,C37260,B61500,B625E0,808ABD10,actors
|
||||
ovl_Bg_Spot16_Doughnut,C37260,C37820,B625E0,B62AB0,808AD260,actors
|
||||
ovl_Bg_Spot17_Bakudankabe,C37820,C37F10,B62AB0,B63090,808AD820,actors
|
||||
ovl_Bg_Spot17_Funen,C37F10,C38160,B63090,B632A0,808ADF10,actors
|
||||
ovl_Bg_Spot18_Basket,C38160,C39150,B632A0,B63EB0,808AE160,actors
|
||||
ovl_Bg_Spot18_Futa,C39150,C392F0,B63EB0,B64010,808AF150,actors
|
||||
ovl_Bg_Spot18_Obj,C392F0,C39BC0,B64010,B64660,808AF2F0,actors
|
||||
ovl_Bg_Spot18_Shutter,C39BC0,C3A110,B64660,B64A80,808AFBC0,actors
|
||||
ovl_Bg_Sst_Floor,C3A110,C3A670,B64A80,B64F70,808B0110,actors
|
||||
ovl_Bg_Toki_Hikari,C3A670,C3B410,B64F70,B657A0,808B0670,actors
|
||||
ovl_Bg_Toki_Swd,C3B410,C3CA60,B657A0,B661E0,808B1410,actors
|
||||
ovl_Bg_Treemouth,C3CA60,C3E0C0,B661E0,B66DE0,808B2A60,actors
|
||||
ovl_Bg_Umajump,C3E0C0,C3E250,B66DE0,B66F50,808B40C0,actors
|
||||
ovl_Bg_Vb_Sima,C3E250,C3E970,B66F50,B675A0,808B4250,actors
|
||||
ovl_Bg_Ydan_Hasi,C3E970,C3F120,B675A0,B67BC0,808B4970,actors
|
||||
ovl_Bg_Ydan_Maruta,C3F120,C3F800,B67BC0,B68140,808B5120,actors
|
||||
ovl_Bg_Ydan_Sp,C3F800,C40F20,B68140,B69220,808B5800,actors
|
||||
ovl_Bg_Zg,C40F20,C41370,B69220,B695A0,808B6F20,actors
|
||||
ovl_Boss_Dodongo,C41370,C4AE70,B695A0,B6F870,808B7370,actors
|
||||
ovl_Boss_Fd,C4AE70,C521D0,B6F870,B74570,808C0E70,actors
|
||||
ovl_Boss_Fd2,C521D0,C55F00,B74570,B770D0,808C81D0,actors
|
||||
ovl_Boss_Ganon,C55F00,C781B0,B770D0,B8C800,808CBF00,actors
|
||||
ovl_Boss_Ganon2,C781B0,C89500,B8C800,B96DB0,808F1D30,actors
|
||||
ovl_Boss_Ganondrof,C89500,C8E290,B96DB0,B9A120,80904BA0,actors
|
||||
ovl_Boss_Goma,C8E290,C94230,B9A120,B9DB30,80909930,actors
|
||||
ovl_Boss_Mo,C94230,C9FD00,B9DB30,BA5D50,8090F8D0,actors
|
||||
ovl_Boss_Sst,C9FD00,CAC290,BA5D50,BAD8B0,8091FEB0,actors
|
||||
ovl_Boss_Tw,CAC290,CBF3E0,BAD8B0,BB9EA0,8092C480,actors
|
||||
ovl_Boss_Va,CBF3E0,CCDC70,BB9EA0,BC34D0,80942050,actors
|
||||
ovl_Demo_6K,CCDC70,CD09D0,BC34D0,BC5620,809592E0,actors
|
||||
ovl_Demo_Du,CD09D0,CD41B0,BC5620,BC71C0,8095C040,actors
|
||||
ovl_Demo_Ec,CD41B0,CD7A10,BC71C0,BC88E0,8095F820,actors
|
||||
ovl_Demo_Effect,CD7A10,CDD5B0,BC88E0,BCC450,80963080,actors
|
||||
ovl_Demo_Ext,CDD5B0,CDDF00,BCC450,BCCB80,80968C20,actors
|
||||
ovl_Demo_Geff,CDDF00,CDE720,BCCB80,BCD170,80969570,actors
|
||||
ovl_Demo_Gj,CDE720,CE23D0,BCD170,BCEDE0,80969D90,actors
|
||||
ovl_Demo_Go,CE23D0,CE3120,BCEDE0,BCF720,8096DA40,actors
|
||||
ovl_Demo_Gt,CE3120,CE8730,BCF720,BD22A0,8096E790,actors
|
||||
ovl_Demo_Ik,CE8730,CE9C40,BD22A0,BD2FB0,80973DA0,actors
|
||||
ovl_Demo_Im,CE9C40,CEDBB0,BD2FB0,BD4F50,809752B0,actors
|
||||
ovl_Demo_Kankyo,CEDBB0,CF1850,BD4F50,BD7360,80979220,actors
|
||||
ovl_Demo_Kekkai,CF1850,CF2B40,BD7360,BD81F0,8097CF10,actors
|
||||
ovl_Demo_Sa,CF2B40,CF5660,BD81F0,BD9750,8097E200,actors
|
||||
ovl_Demo_Shd,CF5660,CF7A70,BD9750,BDAF70,80980D20,actors
|
||||
ovl_Demo_Tre_Lgt,CF7A70,CF8180,BDAF70,BDB560,80983130,actors
|
||||
ovl_Door_Ana,CF8180,CF87F0,BDB560,BDBAC0,80983840,actors
|
||||
ovl_Door_Gerudo,CF87F0,CF8DE0,BDBAC0,BDBFC0,80983EB0,actors
|
||||
ovl_Door_Killer,CF8DE0,CFA350,BDBFC0,BDD040,809844A0,actors
|
||||
ovl_Door_Shutter,CFA350,CFC610,BDD040,BDE930,80985A10,actors
|
||||
ovl_Door_Toki,CFC610,CFC770,BDE930,BDEA50,80987CD0,actors
|
||||
ovl_Door_Warp1,CFC770,D00A70,BDEA50,BE10D0,80987E30,actors
|
||||
ovl_Efc_Erupc,D00A70,D01560,BE10D0,BE19C0,8098C140,actors
|
||||
ovl_Eff_Dust,D01560,D02930,BE19C0,BE25B0,8098CC30,actors
|
||||
ovl_Effect_Ss_Blast,D02930,D02CC0,BE25B0,BE2920,8098E000,effects
|
||||
ovl_Effect_Ss_Bomb,D02CC0,D030F0,BE2920,BE2D00,8098E390,effects
|
||||
ovl_Effect_Ss_Bomb2,D030F0,D039F0,BE2D00,BE33B0,8098E7C0,effects
|
||||
ovl_Effect_Ss_Bubble,D039F0,D03E70,BE33B0,BE37B0,8098F0C0,effects
|
||||
ovl_Effect_Ss_D_Fire,D03E70,D04360,BE37B0,BE3C50,8098F540,effects
|
||||
ovl_Effect_Ss_Dead_Db,D04360,D04840,BE3C50,BE4100,8098FA30,effects
|
||||
ovl_Effect_Ss_Dead_Dd,D04840,D04DD0,BE4100,BE4620,8098FF10,effects
|
||||
ovl_Effect_Ss_Dead_Ds,D04DD0,D05250,BE4620,BE4A50,809904A0,effects
|
||||
ovl_Effect_Ss_Dead_Sound,D05250,D05390,BE4A50,BE4B90,80990920,effects
|
||||
ovl_Effect_Ss_Dt_Bubble,D05390,D05920,BE4B90,BE5070,80990A60,effects
|
||||
ovl_Effect_Ss_Dust,D05920,D06160,BE5070,BE5720,80990FF0,effects
|
||||
ovl_Effect_Ss_En_Fire,D06160,D068B0,BE5720,BE5DB0,80991830,effects
|
||||
ovl_Effect_Ss_En_Ice,D068B0,D07170,BE5DB0,BE6560,80991F80,effects
|
||||
ovl_Effect_Ss_Extra,D07170,D07530,BE6560,BE6900,80992840,effects
|
||||
ovl_Effect_Ss_Fcircle,D07530,D079E0,BE6900,BE6D70,80992C00,effects
|
||||
ovl_Effect_Ss_Fhg_Flash,D079E0,D08960,BE6D70,BE7780,809930B0,effects
|
||||
ovl_Effect_Ss_Fire_Tail,D08960,D09060,BE7780,BE7DD0,80994030,effects
|
||||
ovl_Effect_Ss_G_Fire,D09060,D092F0,BE7DD0,BE8030,80994730,effects
|
||||
ovl_Effect_Ss_G_Magma,D092F0,D09550,BE8030,BE8270,809949C0,effects
|
||||
ovl_Effect_Ss_G_Magma2,D09550,D09A60,BE8270,BE8730,80994C20,effects
|
||||
ovl_Effect_Ss_G_Ripple,D09A60,D09FC0,BE8730,BE8C10,80995130,effects
|
||||
ovl_Effect_Ss_G_Spk,D09FC0,D0A570,BE8C10,BE9130,80995690,effects
|
||||
ovl_Effect_Ss_G_Splash,D0A570,D0AA20,BE9130,BE94F0,80995C40,effects
|
||||
ovl_Effect_Ss_Hahen,D0AA20,D0B060,BE94F0,BE99E0,809960F0,effects
|
||||
ovl_Effect_Ss_HitMark,D0B060,D0B5B0,BE99E0,BE9E90,80996730,effects
|
||||
ovl_Effect_Ss_Ice_Piece,D0B5B0,D0B9F0,BE9E90,BEA290,80996C80,effects
|
||||
ovl_Effect_Ss_Ice_Smoke,D0B9F0,D0BED0,BEA290,BEA6D0,809970C0,effects
|
||||
ovl_Effect_Ss_K_Fire,D0BED0,D0C310,BEA6D0,BEAAD0,809975A0,effects
|
||||
ovl_Effect_Ss_Kakera,D0C310,D0D3A0,BEAAD0,BEB710,809979E0,effects
|
||||
ovl_Effect_Ss_KiraKira,D0D3A0,D0DA10,BEB710,BEBCB0,80998A70,effects
|
||||
ovl_Effect_Ss_Lightning,D0DA10,D0E0E0,BEBCB0,BEC300,809990E0,effects
|
||||
ovl_Effect_Ss_Sibuki,D0E0E0,D0E7B0,BEC300,BEC900,809997B0,effects
|
||||
ovl_Effect_Ss_Sibuki2,D0E7B0,D0EAE0,BEC900,BECC00,80999E80,effects
|
||||
ovl_Effect_Ss_Solder_Srch_Ball,D0EAE0,D0EC90,BECC00,BECDA0,8099A1B0,effects
|
||||
ovl_Effect_Ss_Stick,D0EC90,D0F030,BECDA0,BED0F0,8099A360,effects
|
||||
ovl_Effect_Ss_Stone1,D0F030,D0F3B0,BED0F0,BED440,8099A700,effects
|
||||
ovl_Elf_Msg,D0F3B0,D0F9A0,BED440,BED8A0,8099AA80,actors
|
||||
ovl_Elf_Msg2,D0F9A0,D0FE10,BED8A0,BEDBA0,8099B070,actors
|
||||
ovl_En_Am,D0FE10,D12210,BEDBA0,BEF3E0,8099B4E0,actors
|
||||
ovl_En_Ani,D12210,D12F80,BEF3E0,BEFD70,8099D8E0,actors
|
||||
ovl_En_Anubice,D12F80,D14230,BEFD70,BF0B40,8099E650,actors
|
||||
ovl_En_Anubice_Fire,D14230,D14FF0,BF0B40,BF16A0,8099F900,actors
|
||||
ovl_En_Anubice_Tag,D14FF0,D152C0,BF16A0,BF1910,809A06C0,actors
|
||||
ovl_En_Arow_Trap,D152C0,D15410,BF1910,BF1A50,809A0990,actors
|
||||
ovl_En_Arrow,D15410,D16B10,BF1A50,BF2AC0,809A0AE0,actors
|
||||
ovl_En_Attack_Niw,D16B10,D17D70,BF2AC0,BF3820,809A21E0,actors
|
||||
ovl_En_Ba,D17D70,D19C40,BF3820,BF4C50,809A3440,actors
|
||||
ovl_En_Bb,D19C40,D1D920,BF4C50,BF7810,809A5310,actors
|
||||
ovl_En_Bdfire,D1D920,D1E4C0,BF7810,BF8120,809A8FF0,actors
|
||||
ovl_En_Bigokuta,D1E4C0,D20FC0,BF8120,BF9E50,809A9B90,actors
|
||||
ovl_En_Bili,D20FC0,D23290,BF9E50,BFB680,809AC690,actors
|
||||
ovl_En_Bird,D23290,D23750,BFB680,BFBA60,809AE960,actors
|
||||
ovl_En_Blkobj,D23750,D23CB0,BFBA60,BFBEE0,809AEE20,actors
|
||||
ovl_En_Bom,D23CB0,D24B80,BFBEE0,BFCA90,809AF380,actors
|
||||
ovl_En_Bom_Bowl_Man,D24B80,D260C0,BFCA90,BFDA30,809B0250,actors
|
||||
ovl_En_Bom_Bowl_Pit,D260C0,D26A30,BFDA30,BFE190,809B1790,actors
|
||||
ovl_En_Bom_Chu,D26A30,D280D0,BFE190,BFF380,809B2100,actors
|
||||
ovl_En_Bombf,D280D0,D29560,BFF380,C00370,809B37A0,actors
|
||||
ovl_En_Boom,D29560,D29E30,C00370,C00AB0,809B4C30,actors
|
||||
ovl_En_Box,D29E30,D2B980,C00AB0,C01DA0,809B5500,actors
|
||||
ovl_En_Brob,D2B980,D2CA70,C01DA0,C029E0,809B7060,actors
|
||||
ovl_En_Bubble,D2CA70,D2DE90,C029E0,C03940,809B8150,actors
|
||||
ovl_En_Butte,D2DE90,D2F460,C03940,C04910,809B9570,actors
|
||||
ovl_En_Bw,D2F460,D327F0,C04910,C06BC0,809BAB40,actors
|
||||
ovl_En_Bx,D327F0,D332F0,C06BC0,C07560,809BDED0,actors
|
||||
ovl_En_Changer,D332F0,D33CD0,C07560,C07CB0,809BE9D0,actors
|
||||
ovl_En_Clear_Tag,D33CD0,D3C840,C07CB0,C0C090,809BF3B0,actors
|
||||
ovl_En_Cow,D3C840,D3DCA0,C0C090,C0CDB0,809CA950,actors
|
||||
ovl_En_Crow,D3DCA0,D3F340,C0CDB0,C0DE80,809CBDB0,actors
|
||||
ovl_En_Cs,D3F340,D40570,C0DE80,C0EC70,809CD450,actors
|
||||
ovl_En_Daiku,D40570,D41CB0,C0EC70,C0FE50,809CE680,actors
|
||||
ovl_En_Daiku_Kakariko,D41CB0,D43070,C0FE50,C10D30,809CFDC0,actors
|
||||
ovl_En_Dekubaba,D43070,D46B20,C10D30,C132F0,809D1180,actors
|
||||
ovl_En_Dekunuts,D46B20,D48320,C132F0,C142A0,809D4C30,actors
|
||||
ovl_En_Dh,D48320,D49E00,C142A0,C15620,809D6430,actors
|
||||
ovl_En_Dha,D49E00,D4AE00,C15620,C16200,809D7F10,actors
|
||||
ovl_En_Diving_Game,D4AE00,D4C7B0,C16200,C17400,809D8F10,actors
|
||||
ovl_En_Dns,D4C7B0,D4DB40,C17400,C180D0,809DA8C0,actors
|
||||
ovl_En_Dnt_Demo,D4DB40,D4E860,C180D0,C18B20,809DBC50,actors
|
||||
ovl_En_Dnt_Jiji,D4E860,D4FD80,C18B20,C197E0,809DC970,actors
|
||||
ovl_En_Dnt_Nomal,D4FD80,D52B80,C197E0,C1B390,809DDE90,actors
|
||||
ovl_En_Dodojr,D52B80,D54A20,C1B390,C1C8E0,809E0C90,actors
|
||||
ovl_En_Dodongo,D54A20,D577C0,C1C8E0,C1E820,809E2B30,actors
|
||||
ovl_En_Dog,D577C0,D58970,C1E820,C1F4A0,809E58D0,actors
|
||||
ovl_En_Door,D58970,D597B0,C1F4A0,C20070,809E6A80,actors
|
||||
ovl_En_Ds,D597B0,D5A3D0,C20070,C208E0,809E78C0,actors
|
||||
ovl_En_Du,D5A3D0,D5BE60,C208E0,C21B30,809E84E0,actors
|
||||
ovl_En_Dy_Extra,D5BE60,D5C400,C21B30,C22020,809E9F70,actors
|
||||
ovl_En_Eg,D5C400,D5C5B0,C22020,C22180,809EA510,actors
|
||||
ovl_En_Eiyer,D5C5B0,D5E210,C22180,C235B0,809EA6C0,actors
|
||||
ovl_En_Elf,D5E210,D62BD0,C235B0,C265B0,809EC320,actors
|
||||
ovl_En_Encount1,D62BD0,D63730,C265B0,C26F10,809F0CE0,actors
|
||||
ovl_En_Encount2,D63730,D64960,C26F10,C27D20,809F1840,actors
|
||||
ovl_En_Ex_Item,D64960,D65AE0,C27D20,C289E0,809F2A70,actors
|
||||
ovl_En_Ex_Ruppy,D65AE0,D66BA0,C289E0,C296B0,809F3BF0,actors
|
||||
ovl_En_Fd,D66BA0,D69840,C296B0,C2B7A0,809F4CB0,actors
|
||||
ovl_En_Fd_Fire,D69840,D6A550,C2B7A0,C2C2A0,809F7950,actors
|
||||
ovl_En_Fhg_Fire,D6A550,D6CBF0,C2C2A0,C2DE40,809F8660,actors
|
||||
ovl_En_Fire_Rock,D6CBF0,D6DD00,C2DE40,C2EAB0,809FAD00,actors
|
||||
ovl_En_Firefly,D6DD00,D6FE70,C2EAB0,C30130,809FBE10,actors
|
||||
ovl_En_Fish,D6FE70,D71F80,C30130,C315F0,809FDF80,actors
|
||||
ovl_En_Floormas,D71F80,D75360,C315F0,C335E0,80A00090,actors
|
||||
ovl_En_Fr,D75360,D77DF0,C335E0,C35420,80A03470,actors
|
||||
ovl_En_Fu,D77DF0,D78B30,C35420,C35E90,80A05F00,actors
|
||||
ovl_En_Fw,D78B30,D7A2F0,C35E90,C371C0,80A06C50,actors
|
||||
ovl_En_Fz,D7A2F0,D7C300,C371C0,C38870,80A08410,actors
|
||||
ovl_En_G_Switch,D7C300,D7DB20,C38870,C39B00,80A0A420,actors
|
||||
ovl_En_Ganon_Mant,D7DB20,D81D50,C39B00,C3B850,80A0BC40,actors
|
||||
ovl_En_Ganon_Organ,D81D50,D88D90,C3B850,C3EEE0,80A0FE70,actors
|
||||
ovl_En_Gb,D88D90,D8A4C0,C3EEE0,C40010,80A16EB0,actors
|
||||
ovl_En_Ge1,D8A4C0,D8C4F0,C40010,C41440,80A185E0,actors
|
||||
ovl_En_Ge2,D8C4F0,D8DE90,C41440,C425D0,80A1A610,actors
|
||||
ovl_En_Ge3,D8DE90,D8EAD0,C425D0,C42EF0,80A1BFB0,actors
|
||||
ovl_En_GeldB,D8EAD0,D93E80,C42EF0,C462C0,80A1CBF0,actors
|
||||
ovl_En_GirlA,D93E80,D967A0,C462C0,C47730,80A21FA0,actors
|
||||
ovl_En_Gm,D967A0,D974D0,C47730,C48140,80A248C0,actors
|
||||
ovl_En_Go,D974D0,D9BB10,C48140,C4AEC0,80A255F0,actors
|
||||
ovl_En_Go2,D9BB10,DA1B50,C4AEC0,C4ECE0,80A29C30,actors
|
||||
ovl_En_Goma,DA1B50,DA4800,C4ECE0,C50A80,80A2FC70,actors
|
||||
ovl_En_Goroiwa,DA4800,DA6BC0,C50A80,C523A0,80A32920,actors
|
||||
ovl_En_Gs,DA6BC0,DA8A30,C523A0,C53A00,80A34CE0,actors
|
||||
ovl_En_Guest,DA8A30,DA93D0,C53A00,C54210,80A36B50,actors
|
||||
ovl_En_Hata,DA93D0,DA9960,C54210,C54710,80A374F0,actors
|
||||
ovl_En_Heishi1,DA9960,DAAE70,C54710,C55570,80A37A80,actors
|
||||
ovl_En_Heishi2,DAAE70,DAD070,C55570,C56A20,80A38F90,actors
|
||||
ovl_En_Heishi3,DAD070,DADA40,C56A20,C57150,80A3B190,actors
|
||||
ovl_En_Heishi4,DADA40,DAE940,C57150,C57BE0,80A3BB60,actors
|
||||
ovl_En_Hintnuts,DAE940,DB0370,C57BE0,C58D90,80A3CA60,actors
|
||||
ovl_En_Holl,DB0370,DB1340,C58D90,C59930,80A3E490,actors
|
||||
ovl_En_Honotrap,DB1340,DB28A0,C59930,C5A900,80A3F460,actors
|
||||
ovl_En_Horse,DB28A0,DBEB00,C5A900,C62100,80A409C0,actors
|
||||
ovl_En_Horse_Game_Check,DBEB00,DBFBD0,C62100,C62D20,80A4CC20,actors
|
||||
ovl_En_Horse_Ganon,DBFBD0,DC0950,C62D20,C63790,80A4DCF0,actors
|
||||
ovl_En_Horse_Link_Child,DC0950,DC2750,C63790,C64990,80A4EA70,actors
|
||||
ovl_En_Horse_Normal,DC2750,DC4D70,C64990,C661E0,80A50870,actors
|
||||
ovl_En_Horse_Zelda,DC4D70,DC5860,C661E0,C66AB0,80A52E90,actors
|
||||
ovl_En_Hs,DC5860,DC6400,C66AB0,C672F0,80A53980,actors
|
||||
ovl_En_Hs2,DC6400,DC69E0,C672F0,C677D0,80A54520,actors
|
||||
ovl_En_Hy,DC69E0,DCA320,C677D0,C69C00,80A54B00,actors
|
||||
ovl_En_Ice_Hono,DCA320,DCB510,C69C00,C6A8D0,80A58440,actors
|
||||
ovl_En_Ik,DCB510,DCFB60,C6A8D0,C6D1C0,80A59630,actors
|
||||
ovl_En_In,DCFB60,DD2900,C6D1C0,C6F290,80A5DC90,actors
|
||||
ovl_En_Insect,DD2900,DD4E20,C6F290,C70B30,80A60A30,actors
|
||||
ovl_En_Ishi,DD4E20,DDDF70,C70B30,C71E90,80A62F50,actors
|
||||
ovl_En_It,DDDF70,DDE100,C71E90,C71FC0,80A6C0A0,actors
|
||||
ovl_En_Jj,DDE100,DDF6D0,C71FC0,C72C10,80A6C230,actors
|
||||
ovl_En_Js,DDF6D0,DE00A0,C72C10,C73330,80A6D800,actors
|
||||
ovl_En_Jsjutan,DE00A0,DE4E70,C73330,C750A0,80A6E1D0,actors
|
||||
ovl_En_Kakasi,DE4E70,DE5BB0,C750A0,C75AC0,80A73B00,actors
|
||||
ovl_En_Kakasi2,DE5BB0,DE62D0,C75AC0,C76060,80A74840,actors
|
||||
ovl_En_Kakasi3,DE62D0,DE73B0,C76060,C76CA0,80A74F60,actors
|
||||
ovl_En_Kanban,DE73B0,DEA500,C76CA0,C78AB0,80A76040,actors
|
||||
ovl_En_Karebaba,DEA500,DEBDF0,C78AB0,C79C30,80A79190,actors
|
||||
ovl_En_Ko,DEBDF0,DEFF30,C79C30,C7C1D0,80A7AA80,actors
|
||||
ovl_En_Kusa,DEFF30,DF1410,C7C1D0,C7D120,80A7EBC0,actors
|
||||
ovl_En_Kz,DF1410,DF29B0,C7D120,C7E120,80A800A0,actors
|
||||
ovl_En_Light,DF29B0,DF37B0,C7E120,C7EB00,80A81640,actors
|
||||
ovl_En_Lightbox,DF37B0,DF3C30,C7EB00,C7EED0,80A82440,actors
|
||||
ovl_En_M_Fire1,DF3C30,DF3DD0,C7EED0,C7F020,80A828C0,actors
|
||||
ovl_En_M_Thunder,DF3DD0,DF53D0,C7F020,C80020,80A82A60,actors
|
||||
ovl_En_Ma1,DF53D0,DF66B0,C80020,C80E30,80A84060,actors
|
||||
ovl_En_Ma2,DF66B0,DF7710,C80E30,C81AB0,80A85340,actors
|
||||
ovl_En_Ma3,DF7710,DF86C0,C81AB0,C826D0,80A863A0,actors
|
||||
ovl_En_Mag,DF86C0,DFABE0,C826D0,C84120,80A87350,actors
|
||||
ovl_En_Mb,DFABE0,DFEE10,C84120,C86C10,80A89870,actors
|
||||
ovl_En_Md,DFEE10,E01480,C86C10,C88310,80A8DAA0,actors
|
||||
ovl_En_Mk,E01480,E02310,C88310,C88CF0,80A90110,actors
|
||||
ovl_En_Mm,E02310,E03970,C88CF0,C89DF0,80A90FA0,actors
|
||||
ovl_En_Mm2,E03970,E04730,C89DF0,C8A860,80A92600,actors
|
||||
ovl_En_Ms,E04730,E04E20,C8A860,C8AE10,80A933C0,actors
|
||||
ovl_En_Mu,E04E20,E05740,C8AE10,C8B5D0,80A93AB0,actors
|
||||
ovl_En_Nb,E05740,E09D10,C8B5D0,C8DA50,80A943D0,actors
|
||||
ovl_En_Niw,E09D10,E0D040,C8DA50,C8FF30,80A989A0,actors
|
||||
ovl_En_Niw_Girl,E0D040,E0DB10,C8FF30,C90880,80A9BCD0,actors
|
||||
ovl_En_Niw_Lady,E0DB10,E0F410,C90880,C91A70,80A9C7A0,actors
|
||||
ovl_En_Nutsball,E0F410,E0FA30,C91A70,C91FF0,80A9E0A0,actors
|
||||
ovl_En_Nwc,E0FA30,E10450,C91FF0,C92880,80A9E6C0,actors
|
||||
ovl_En_Ny,E10450,E11D90,C92880,C93B00,80A9F0E0,actors
|
||||
ovl_En_OE2,E11D90,E11E70,C93B00,C93B90,80AA0A20,actors
|
||||
ovl_En_Okarina_Effect,E11E70,E12230,C93B90,C93E80,80AA0B00,actors
|
||||
ovl_En_Okarina_Tag,E12230,E13730,C93E80,C94A80,80AA0EC0,actors
|
||||
ovl_En_Okuta,E13730,E15D10,C94A80,C964C0,80AA23C0,actors
|
||||
ovl_En_Ossan,E15D10,E1C2F0,C964C0,C99CA0,80AA49A0,actors
|
||||
ovl_En_Owl,E1C2F0,E1FE90,C99CA0,C9BF20,80AAAF80,actors
|
||||
ovl_En_Part,E1FE90,E214F0,C9BF20,C9CF90,80AAEB20,actors
|
||||
ovl_En_Peehat,E214F0,E24BF0,C9CF90,C9F260,80AB0180,actors
|
||||
ovl_En_Po_Desert,E24BF0,E259B0,C9F260,C9FDB0,80AB3880,actors
|
||||
ovl_En_Po_Field,E259B0,E293B0,C9FDB0,CA2620,80AB4640,actors
|
||||
ovl_En_Po_Relay,E293B0,E2AAC0,CA2620,CA37A0,80AB80D0,actors
|
||||
ovl_En_Po_Sisters,E2AAC0,E2F7B0,CA37A0,CA69E0,80AB97E0,actors
|
||||
ovl_En_Poh,E2F7B0,E339A0,CA69E0,CA9420,80ABE4D0,actors
|
||||
ovl_En_Pu_box,E339A0,E33CE0,CA9420,CA9700,80AC26C0,actors
|
||||
ovl_En_Rd,E33CE0,E365A0,CA9700,CAB110,80AC2A00,actors
|
||||
ovl_En_Reeba,E365A0,E38010,CAB110,CAC410,80AC52C0,actors
|
||||
ovl_En_River_Sound,E38010,E389A0,CAC410,CACBE0,80AC6D30,actors
|
||||
ovl_En_Rl,E389A0,E39880,CACBE0,CAD500,80AC76C0,actors
|
||||
ovl_En_Rr,E39880,E3BDB0,CAD500,CAF010,80AC85A0,actors
|
||||
ovl_En_Ru1,E3BDB0,E43450,CAF010,CB2E60,80ACAAD0,actors
|
||||
ovl_En_Ru2,E43450,E461D0,CB2E60,CB44A0,80AD2170,actors
|
||||
ovl_En_Sa,E461D0,E48440,CB44A0,CB5B00,80AD4EF0,actors
|
||||
ovl_En_Sb,E48440,E49880,CB5B00,CB6880,80AD7160,actors
|
||||
ovl_En_Scene_Change,E49880,E499B0,CB6880,CB6970,80AD85A0,actors
|
||||
ovl_En_Sda,E499B0,E4AFE0,CB6970,CB7840,80AD86D0,actors
|
||||
ovl_En_Shopnuts,E4AFE0,E4BEF0,CB7840,CB82A0,80AD9DC0,actors
|
||||
ovl_En_Si,E4BEF0,E4C3F0,CB82A0,CB86C0,80ADACD0,actors
|
||||
ovl_En_Siofuki,E4C3F0,E4D1A0,CB86C0,CB9100,80ADB1D0,actors
|
||||
ovl_En_Skb,E4D1A0,E4EA90,CB9100,CBA320,80ADBF80,actors
|
||||
ovl_En_Skj,E4EA90,E523D0,CBA320,CBC6E0,80ADD870,actors
|
||||
ovl_En_Skjneedle,E523D0,E526E0,CBC6E0,CBC990,80AE11C0,actors
|
||||
ovl_En_Ssh,E526E0,E54CD0,CBC990,CBE3E0,80AE14D0,actors
|
||||
ovl_En_St,E54CD0,E57940,CBE3E0,CC02C0,80AE3AC0,actors
|
||||
ovl_En_Sth,E57940,E5BA00,CC02C0,CC2E90,80AE6730,actors
|
||||
ovl_En_Stream,E5BA00,E5BF90,CC2E90,CC3360,80AEA7F0,actors
|
||||
ovl_En_Sw,E5BF90,E5F700,CC3360,CC5BA0,80AEAD80,actors
|
||||
ovl_En_Syateki_Itm,E5F700,E604A0,CC5BA0,CC6610,80AEE570,actors
|
||||
ovl_En_Syateki_Man,E604A0,E61260,CC6610,CC7040,80AEF310,actors
|
||||
ovl_En_Syateki_Niw,E61260,E632F0,CC7040,CC8810,80AF00D0,actors
|
||||
ovl_En_Ta,E632F0,E66CB0,CC8810,CCAB60,80AF2160,actors
|
||||
ovl_En_Takara_Man,E66CB0,E67570,CCAB60,CCB2E0,80AF5B20,actors
|
||||
ovl_En_Tana,E67570,E67820,CCB2E0,CCB520,80AF63E0,actors
|
||||
ovl_En_Tg,E67820,E67F00,CCB520,CCBAF0,80AF6690,actors
|
||||
ovl_En_Tite,E67F00,E6ACA0,CCBAF0,CCD6A0,80AF6D70,actors
|
||||
ovl_En_Tk,E6ACA0,E6CAD0,CCD6A0,CCECD0,80AF9B10,actors
|
||||
ovl_En_Torch,E6CAD0,E6CBC0,CCECD0,CCEDB0,80AFB940,actors
|
||||
ovl_En_Torch2,E6CBC0,E6F320,CCEDB0,CD0A50,80AFBA30,actors
|
||||
ovl_En_Toryo,E6F320,E6FFB0,CD0A50,CD1380,80AFE1D0,actors
|
||||
ovl_En_Tp,E6FFB0,E71E20,CD1380,CD29B0,80AFEE60,actors
|
||||
ovl_En_Tr,E71E20,E73720,CD29B0,CD3BB0,80B00CD0,actors
|
||||
ovl_En_Trap,E73720,E749C0,CD3BB0,CD47F0,80B025D0,actors
|
||||
ovl_En_Tubo_Trap,E749C0,E75660,CD47F0,CD5100,80B03870,actors
|
||||
ovl_En_Vali,E75660,E77D20,CD5100,CD6BB0,80B04510,actors
|
||||
ovl_En_Vase,E77D20,E77E20,CD6BB0,CD6C90,80B06BD0,actors
|
||||
ovl_En_Vb_Ball,E77E20,E78FD0,CD6C90,CD79E0,80B06CD0,actors
|
||||
ovl_En_Viewer,E78FD0,E7BE70,CD79E0,CD9950,80B07E80,actors
|
||||
ovl_En_Vm,E7BE70,E7D730,CD9950,CDAAF0,80B0AD40,actors
|
||||
ovl_En_Wall_Tubo,E7D730,E7DC20,CDAAF0,CDAF10,80B0C600,actors
|
||||
ovl_En_Wallmas,E7DC20,E7F630,CDAF10,CDC0B0,80B0CAF0,actors
|
||||
ovl_En_Weather_Tag,E7F630,E80520,CDC0B0,CDC7F0,80B0E500,actors
|
||||
ovl_En_Weiyer,E80520,E81F20,CDC7F0,CDD910,80B0F3F0,actors
|
||||
ovl_En_Wf,E81F20,E86230,CDD910,CE0460,80B10DF0,actors
|
||||
ovl_En_Wonder_Item,E86230,E86E80,CE0460,CE0D20,80B15100,actors
|
||||
ovl_En_Wonder_Talk,E86E80,E87510,CE0D20,CE1270,80B15E30,actors
|
||||
ovl_En_Wonder_Talk2,E87510,E87BB0,CE1270,CE1810,80B164C0,actors
|
||||
ovl_En_Wood02,E87BB0,E88D80,CE1810,CE2650,80B16B60,actors
|
||||
ovl_En_Xc,E88D80,E8F4E0,CE2650,CE5B10,80B17D40,actors
|
||||
ovl_En_Yabusame_Mark,E8F4E0,E8FBB0,CE5B10,CE6070,80B1E4D0,actors
|
||||
ovl_En_Yukabyun,E8FBB0,E901C0,CE6070,CE65C0,80B1EBA0,actors
|
||||
ovl_En_Zf,E901C0,E96CA0,CE65C0,CEAA50,80B1F1B0,actors
|
||||
ovl_En_Zl1,E96CA0,E9AAB0,CEAA50,CEC9C0,80B25CA0,actors
|
||||
ovl_En_Zl2,E9AAB0,E9F1B0,CEC9C0,CEEDB0,80B29AB0,actors
|
||||
ovl_En_Zl3,E9F1B0,EA7000,CEEDB0,CF2E70,80B2E1B0,actors
|
||||
ovl_En_Zl4,EA7000,EABA30,CF2E70,CF5440,80B36000,actors
|
||||
ovl_En_Zo,EABA30,EADFF0,CF5440,CF6E60,80B3AA30,actors
|
||||
ovl_En_fHG,EADFF0,EB0920,CF6E60,CF89A0,80B3CFF0,actors
|
||||
ovl_End_Title,EB0920,EB4A40,CF89A0,CFA410,80B3F920,actors
|
||||
ovl_Fishing,EB4A40,EC84E0,CFA410,D078E0,80B43A40,actors
|
||||
ovl_Item_B_Heart,EC84E0,EC88F0,D078E0,D07C50,80B5E5B0,actors
|
||||
ovl_Item_Etcetera,EC88F0,EC91C0,D07C50,D082F0,80B5E9C0,actors
|
||||
ovl_Item_Inbox,EC91C0,EC9320,D082F0,D08400,80B5F290,actors
|
||||
ovl_Item_Ocarina,EC9320,EC9AF0,D08400,D089C0,80B5F3F0,actors
|
||||
ovl_Item_Shield,EC9AF0,ECA500,D089C0,D091C0,80B5FBC0,actors
|
||||
ovl_Magic_Dark,ECA500,ECBD50,D091C0,D0A500,80B605D0,actors
|
||||
ovl_Magic_Fire,ECBD50,ECE050,D0A500,D0C440,80B61E20,actors
|
||||
ovl_Magic_Wind,ECE050,ECFD50,D0C440,D0DDD0,80B64120,actors
|
||||
ovl_Mir_Ray,ECFD50,ED1600,D0DDD0,D0F1C0,80B65E20,actors
|
||||
ovl_Obj_Bean,ED1600,ED3D90,D0F1C0,D10A90,80B676D0,actors
|
||||
ovl_Obj_Blockstop,ED3D90,ED3F30,D10A90,D10C10,80B69E60,actors
|
||||
ovl_Obj_Bombiwa,ED3F30,ED44A0,D10C10,D110D0,80B6A000,actors
|
||||
ovl_Obj_Comb,ED44A0,ED4D00,D110D0,D11810,80B6A570,actors
|
||||
ovl_Obj_Dekujr,ED4D00,ED5340,D11810,D11D50,80B6ADD0,actors
|
||||
ovl_Obj_Elevator,ED5340,ED5700,D11D50,D12040,80B6B410,actors
|
||||
ovl_Obj_Hamishi,ED5700,ED5F50,D12040,D12750,80B6B7D0,actors
|
||||
ovl_Obj_Hana,ED5F50,ED6260,D12750,D129C0,80B6C020,actors
|
||||
ovl_Obj_Hsblock,ED6260,ED6830,D129C0,D12E70,80B6C330,actors
|
||||
ovl_Obj_Ice_Poly,ED6830,ED71E0,D12E70,D13660,80B6C900,actors
|
||||
ovl_Obj_Kibako,ED71E0,ED7EE0,D13660,D13F40,80B6D2B0,actors
|
||||
ovl_Obj_Kibako2,ED7EE0,ED85A0,D13F40,D14500,80B6DFB0,actors
|
||||
ovl_Obj_Lift,ED85A0,ED8FC0,D14500,D14D40,80B6E670,actors
|
||||
ovl_Obj_Lightswitch,ED8FC0,EDA3F0,D14D40,D15B10,80B6F090,actors
|
||||
ovl_Obj_Makekinsuta,EDA3F0,EDA540,D15B10,D15C50,80B704C0,actors
|
||||
ovl_Obj_Makeoshihiki,EDA540,EDA9D0,D15C50,D16030,80B70610,actors
|
||||
ovl_Obj_Mure,EDA9D0,EDB9E0,D16030,D16B60,80B70AA0,actors
|
||||
ovl_Obj_Mure2,EDB9E0,EDC400,D16B60,D172E0,80B71AB0,actors
|
||||
ovl_Obj_Mure3,EDC400,EDCBD0,D172E0,D17910,80B724D0,actors
|
||||
ovl_Obj_Oshihiki,EDCBD0,EDE680,D17910,D18BB0,80B72CA0,actors
|
||||
ovl_Obj_Roomtimer,EDE680,EDE8D0,D18BB0,D18DB0,80B74750,actors
|
||||
ovl_Obj_Switch,EDE8D0,EE06B0,D18DB0,D1A080,80B749A0,actors
|
||||
ovl_Obj_Syokudai,EE06B0,EE12F0,D1A080,D1AAB0,80B76780,actors
|
||||
ovl_Obj_Timeblock,EE12F0,EE1F40,D1AAB0,D1B3B0,80B773D0,actors
|
||||
ovl_Obj_Tsubo,EE1F40,EE2F30,D1B3B0,D1BF10,80B78020,actors
|
||||
ovl_Obj_Warp2block,EE2F30,EE3A60,D1BF10,D1C7E0,80B79010,actors
|
||||
ovl_Object_Kankyo,EE3A60,EE6CE0,D1C7E0,D1EB40,80B79B40,actors
|
||||
ovl_Oceff_Spot,EE6CE0,EE7C10,D1EB40,D1F830,80B7CDC0,actors
|
||||
ovl_Oceff_Storm,EE7C10,EE97C0,D1F830,D212B0,80B7DCF0,actors
|
||||
ovl_Oceff_Wipe,EE97C0,EEA540,D212B0,D21E70,80B7F8A0,actors
|
||||
ovl_Oceff_Wipe2,EEA540,EEBCB0,D21E70,D22CB0,80B80620,actors
|
||||
ovl_Oceff_Wipe3,EEBCB0,EED400,D22CB0,D23F30,80B81D90,actors
|
||||
ovl_Oceff_Wipe4,EED400,EEE3E0,D23F30,D24B10,80B834E0,actors
|
||||
ovl_Shot_Sun,EEE3E0,EEEAA0,D24B10,D250B0,80B844C0,actors
|
|
134
tools/disasm/gc-eu-mq/files_boot.csv
Normal file
134
tools/disasm/gc-eu-mq/files_boot.csv
Normal file
|
@ -0,0 +1,134 @@
|
|||
offset,vram,.text
|
||||
0,80000460,src/boot/boot_main.s
|
||||
140,800005A0,src/boot/idle.s
|
||||
3D0,80000830,src/boot/viconfig.s
|
||||
520,80000980,src/boot/z_std_dma.s
|
||||
B60,80000FC0,src/boot/yaz0.s
|
||||
EA0,80001300,src/boot/z_locale.s
|
||||
F60,800013C0,src/boot/is_debug.s
|
||||
FC0,80001420,src/libultra/io/driverominit.s
|
||||
11A0,80001600,src/boot/mio0.s
|
||||
1250,800016B0,src/boot/stackcheck.s
|
||||
14A0,80001900,src/boot/logutils.s
|
||||
1500,80001960,src/libultra/io/piacs.s
|
||||
15C0,80001A20,src/libultra/os/sendmesg.s
|
||||
1710,80001B70,src/libultra/os/stopthread.s
|
||||
17D0,80001C30,src/libultra/io/viextendvstart.s
|
||||
17E0,80001C40,src/libultra/os/recvmesg.s
|
||||
1920,80001D80,src/libultra/os/initialize.s
|
||||
1C70,800020D0,src/libultra/libc/ll.s
|
||||
1F30,80002390,src/libultra/os/exceptasm.s
|
||||
2860,80002CC0,src/libultra/os/thread.s
|
||||
28A0,80002D00,src/libultra/os/destroythread.s
|
||||
29B0,80002E10,src/libultra/libc/bzero.s
|
||||
2A50,80002EB0,src/libultra/os/parameters.s
|
||||
2AB0,80002F10,src/libultra/os/createthread.s
|
||||
2C00,80003060,src/libultra/os/setsr.s
|
||||
2C10,80003070,src/libultra/os/getsr.s
|
||||
2C20,80003080,src/libultra/os/writebackdcache.s
|
||||
2CA0,80003100,src/libultra/io/vigetnextframebuf.s
|
||||
2CE0,80003140,src/libultra/io/pimgr.s
|
||||
2E60,800032C0,src/libultra/io/devmgr.s
|
||||
3270,800036D0,src/libultra/io/pirawdma.s
|
||||
3340,800037A0,src/libultra/os/virtualtophysical.s
|
||||
33C0,80003820,src/libultra/io/viblack.s
|
||||
3430,80003890,src/libultra/io/sirawread.s
|
||||
3480,800038E0,src/libultra/os/getthreadid.s
|
||||
34A0,80003900,src/libultra/os/setintmask.s
|
||||
3540,800039A0,src/libultra/io/visetmode.s
|
||||
35A0,80003A00,src/libultra/os/probetlb.s
|
||||
3660,80003AC0,src/libultra/os/getmemsize.s
|
||||
3780,80003BE0,src/libultra/os/seteventmesg.s
|
||||
3840,80003CA0,src/libultra/os/unmaptlball.s
|
||||
3930,80003D90,src/libultra/os/invalicache.s
|
||||
39B0,80003E10,src/libultra/os/createmesgqueue.s
|
||||
39E0,80003E40,src/libultra/os/invaldcache.s
|
||||
3A90,80003EF0,src/libultra/io/si.s
|
||||
3AC0,80003F20,src/libultra/os/jammesg.s
|
||||
3C10,80004070,src/libultra/os/setthreadpri.s
|
||||
3CF0,80004150,src/libultra/os/getthreadpri.s
|
||||
3D10,80004170,src/libultra/io/epirawread.s
|
||||
3E70,800042D0,src/libultra/io/viswapbuf.s
|
||||
3EC0,80004320,src/libultra/io/epirawdma.s
|
||||
40A0,80004500,src/libultra/libc/bcmp.s
|
||||
41C0,80004620,src/libultra/os/gettime.s
|
||||
4250,800046B0,src/libultra/os/timerintr.s
|
||||
4680,80004AE0,src/libultra/os/getcount.s
|
||||
4690,80004AF0,src/libultra/os/setglobalintmask.s
|
||||
46E0,80004B40,src/libultra/os/setcompare.s
|
||||
46F0,80004B50,src/libultra/libc/bcopy.s
|
||||
4A00,80004E60,src/libultra/os/resetglobalintmask.s
|
||||
4A60,80004EC0,src/libultra/os/interrupt.s
|
||||
4AF0,80004F50,src/libultra/io/vi.s
|
||||
4C10,80005070,src/libultra/io/viswapcontext.s
|
||||
4F10,80005370,src/libultra/io/pigetcmdq.s
|
||||
4F40,800053A0,src/libultra/io/epiread.s
|
||||
4F90,800053F0,src/libultra/io/visetspecial.s
|
||||
50F0,80005550,src/libultra/io/cartrominit.s
|
||||
5250,800056B0,src/libultra/os/setfpccsr.s
|
||||
5260,800056C0,src/libultra/os/getfpccsr.s
|
||||
5270,800056D0,src/libultra/os/maptlbrdb.s
|
||||
52D0,80005730,src/libultra/os/yieldthread.s
|
||||
5320,80005780,src/libultra/os/getcause.s
|
||||
5330,80005790,src/libultra/io/epirawwrite.s
|
||||
5490,800058F0,src/libultra/io/sirawwrite.s
|
||||
54E0,80005940,src/libultra/io/vimgr.s
|
||||
57F0,80005C50,src/libultra/io/vigetcurrcontext.s
|
||||
5800,80005C60,src/libultra/os/startthread.s
|
||||
5950,80005DB0,src/libultra/io/visetyscale.s
|
||||
59A0,80005E00,src/libultra/io/visetxscale.s
|
||||
5AB0,80005F10,src/libultra/os/sethwintrroutine.s
|
||||
5B20,80005F80,src/libultra/os/gethwintrroutine.s
|
||||
5B50,80005FB0,src/libultra/os/setwatchlo.s
|
||||
5B60,80005FC0,data/rsp_boot.text.s
|
||||
|
||||
offset,vram,.data
|
||||
5C30,80006090,data/unk_800093F0.data.s
|
||||
5C50,800060B0,data/unk_80009410.data.s
|
||||
5C70,800060D0,src/boot/idle.s
|
||||
5C90,800060F0,src/boot/viconfig.s
|
||||
5CA0,80006100,src/boot/z_std_dma.s
|
||||
5CB0,80006110,src/boot/z_locale.s
|
||||
5CC0,80006120,src/libultra/io/driverominit.s
|
||||
5CD0,80006130,src/boot/stackcheck.s
|
||||
5CE0,80006140,src/libultra/io/piacs.s
|
||||
5CF0,80006150,src/libultra/io/vimodepallan1.s
|
||||
5D40,800061A0,src/libultra/os/initialize.s
|
||||
5D60,800061C0,src/libultra/os/exceptasm.s
|
||||
5D90,800061F0,src/libultra/os/thread.s
|
||||
5DB0,80006210,src/libultra/io/pimgr.s
|
||||
5DE0,80006240,src/libultra/os/seteventmesg.s
|
||||
5DF0,80006250,src/libultra/os/timerintr.s
|
||||
5E00,80006260,src/libultra/io/vimodentsclan1.s
|
||||
5E50,800062B0,src/libultra/io/vimodempallan1.s
|
||||
5EA0,80006300,src/libultra/io/vi.s
|
||||
5F10,80006370,src/libultra/io/cartrominit.s
|
||||
5F20,80006380,src/libultra/io/vimgr.s
|
||||
|
||||
offset,vram,.rodata
|
||||
5F40,800063A0,src/boot/boot_main.s
|
||||
5F50,800063B0,src/boot/idle.s
|
||||
5F60,800063C0,src/boot/z_std_dma.s
|
||||
5FC0,80006420,src/boot/z_locale.s
|
||||
5FD0,80006430,src/boot/stackcheck.s
|
||||
5FE0,80006440,src/boot/logutils.s
|
||||
5FF0,80006450,src/libultra/os/exceptasm.s
|
||||
6040,800064A0,src/libultra/io/devmgr.s
|
||||
6060,800064C0,src/libultra/os/setintmask.s
|
||||
60E0,80006540,src/boot/build.s
|
||||
|
||||
offset,vram,.bss
|
||||
6110,80006570,src/boot/boot_main.s
|
||||
6B00,80006F60,src/boot/idle.s
|
||||
7710,80007B70,src/boot/z_std_dma.s
|
||||
7E80,800082E0,src/boot/yaz0.s
|
||||
8290,800086F0,src/boot/z_locale.s
|
||||
82B0,80008710,src/libultra/io/driverominit.s
|
||||
8330,80008790,src/libultra/io/piacs.s
|
||||
8350,800087B0,src/libultra/os/initialize.s
|
||||
8360,800087C0,src/libultra/io/pimgr.s
|
||||
97D0,80009C30,src/libultra/os/seteventmesg.s
|
||||
9850,80009CB0,src/libultra/os/timerintr.s
|
||||
9890,80009CF0,src/libultra/io/cartrominit.s
|
||||
9910,80009D70,src/libultra/io/vimgr.s
|
||||
AB30,8000AF90,.end
|
|
463
tools/disasm/gc-eu-mq/files_code.csv
Normal file
463
tools/disasm/gc-eu-mq/files_code.csv
Normal file
|
@ -0,0 +1,463 @@
|
|||
offset,vram,.text
|
||||
0,80010F00,src/code/z_en_a_keep.s
|
||||
AA0,800119A0,src/code/z_en_item00.s
|
||||
2EA0,80013DA0,src/code/z_eff_blure.s
|
||||
62D0,800171D0,src/code/z_eff_shield_particle.s
|
||||
7930,80018830,src/code/z_eff_spark.s
|
||||
8FE0,80019EE0,src/code/z_eff_ss_dead.s
|
||||
9790,8001A690,src/code/z_effect.s
|
||||
9F10,8001AE10,src/code/z_effect_soft_sprite.s
|
||||
A9B0,8001B8B0,src/code/z_effect_soft_sprite_old_init.s
|
||||
D4D0,8001E3D0,src/code/flg_set.s
|
||||
D8F0,8001E7F0,src/code/z_DLF.s
|
||||
DB40,8001EA40,src/code/z_actor.s
|
||||
1A0C0,8002AFC0,src/code/z_actor_dlftbls.s
|
||||
1A210,8002B110,src/code/z_bgcheck.s
|
||||
23DF0,80034CF0,src/code/code_800430A0.s
|
||||
24110,80035010,src/code/code_80043480.s
|
||||
244A0,800353A0,src/code/z_camera.s
|
||||
38AD0,800499D0,src/code/z_collision_btltbls.s
|
||||
38B30,80049A30,src/code/z_collision_check.s
|
||||
407B0,800516B0,src/code/z_common_data.s
|
||||
40830,80051730,src/code/z_debug.s
|
||||
40B40,80051A40,src/code/z_debug_display.s
|
||||
41000,80051F00,src/code/z_demo.s
|
||||
45CE0,80056BE0,src/code/code_80069420.s
|
||||
45D70,80056C70,src/code/z_draw.s
|
||||
47C70,80058B70,src/code/z_sfx_source.s
|
||||
47E30,80058D30,src/code/z_elf_message.s
|
||||
48510,80059410,src/code/z_face_reaction.s
|
||||
48560,80059460,src/code/code_8006C3A0.s
|
||||
486E0,800595E0,src/code/z_fcurve_data.s
|
||||
48920,80059820,src/code/z_fcurve_data_skelanime.s
|
||||
49130,8005A030,src/code/z_horse.s
|
||||
49E10,8005AD10,src/code/z_jpeg.s
|
||||
4A5D0,8005B4D0,src/code/z_kaleido_setup.s
|
||||
4A9A0,8005B8A0,src/code/z_kanfont.s
|
||||
4AB70,8005BA70,src/code/z_kankyo.s
|
||||
52380,80063280,src/code/z_lib.s
|
||||
53520,80064420,src/code/z_lifemeter.s
|
||||
548C0,800657C0,src/code/z_lights.s
|
||||
55960,80066860,src/code/z_malloc.s
|
||||
55B40,80066A40,src/code/z_map_mark.s
|
||||
56140,80067040,src/code/z_prenmi_buff.s
|
||||
56200,80067100,src/code/z_nulltask.s
|
||||
56280,80067180,src/code/z_olib.s
|
||||
56970,80067870,src/code/z_onepointdemo.s
|
||||
5A910,8006B810,src/code/z_map_exp.s
|
||||
5C4B0,8006D3B0,src/code/z_parameter.s
|
||||
67BA0,80078AA0,src/code/z_path.s
|
||||
67D70,80078C70,src/code/z_frame_advance.s
|
||||
67E20,80078D20,src/code/z_player_lib.s
|
||||
6B890,8007C790,src/code/z_prenmi.s
|
||||
6BA30,8007C930,src/code/z_quake.s
|
||||
6C8A0,8007D7A0,src/code/z_rcp.s
|
||||
6E160,8007F060,src/code/z_room.s
|
||||
6F950,80080850,src/code/z_sample.s
|
||||
6FD50,80080C50,src/code/code_80097A00.s
|
||||
6FF10,80080E10,src/code/z_scene.s
|
||||
713C0,800822C0,src/code/z_scene_table.s
|
||||
77BA0,80088AA0,src/code/z_skelanime.s
|
||||
7C590,8008D490,src/code/z_skin.s
|
||||
7D130,8008E030,src/code/z_skin_awb.s
|
||||
7DA40,8008E940,src/code/z_skin_matrix.s
|
||||
7EDE0,8008FCE0,src/code/z_sram.s
|
||||
80220,80091120,src/code/z_ss_sram.s
|
||||
803F0,800912F0,src/code/z_rumble.s
|
||||
80670,80091570,src/code/z_view.s
|
||||
81D70,80092C70,src/code/z_vimode.s
|
||||
828E0,800937E0,src/code/z_viscvg.s
|
||||
82A80,80093980,src/code/z_vismono.s
|
||||
832A0,800941A0,src/code/z_viszbuf.s
|
||||
83530,80094430,src/code/z_vr_box.s
|
||||
85E00,80096D00,src/code/z_vr_box_draw.s
|
||||
864E0,800973E0,src/code/z_player_call.s
|
||||
86650,80097550,src/code/z_fbdemo.s
|
||||
87070,80097F70,src/code/z_fbdemo_triforce.s
|
||||
87630,80098530,src/code/z_fbdemo_wipe1.s
|
||||
87AA0,800989A0,src/code/z_fbdemo_circle.s
|
||||
88160,80099060,src/code/z_fbdemo_fade.s
|
||||
884C0,800993C0,src/code/shrink_window.s
|
||||
88630,80099530,src/code/code_800BB0A0.s
|
||||
88B00,80099A00,src/code/z_kaleido_manager.s
|
||||
88D30,80099C30,src/code/z_kaleido_scope_call.s
|
||||
89010,80099F10,src/code/z_play.s
|
||||
8CA70,8009D970,src/code/PreRender.s
|
||||
8EB60,8009FA60,src/code/TwoHeadGfxArena.s
|
||||
8ED70,8009FC70,src/code/TwoHeadArena.s
|
||||
8EF30,8009FE30,src/code/audio_stop_all_sfx.s
|
||||
8EF80,8009FE80,src/code/audio_thread_manager.s
|
||||
8F390,800A0290,src/code/title_setup.s
|
||||
8F400,800A0300,src/code/game.s
|
||||
8FB80,800A0A80,src/code/gamealloc.s
|
||||
8FCC0,800A0BC0,src/code/graph.s
|
||||
906C0,800A15C0,src/code/listalloc.s
|
||||
90810,800A1710,src/code/main.s
|
||||
90B70,800A1A70,src/code/padmgr.s
|
||||
91680,800A2580,src/code/sched.s
|
||||
92300,800A3200,src/code/speed_meter.s
|
||||
92D40,800A3C40,src/code/sys_cfb.s
|
||||
92E60,800A3D60,src/code/sys_math.s
|
||||
93100,800A4000,src/code/sys_math3d.s
|
||||
98ED0,800A9DD0,src/code/sys_math_atan.s
|
||||
99100,800AA000,src/code/sys_matrix.s
|
||||
9B500,800AC400,src/code/sys_ucode.s
|
||||
9B550,800AC450,src/code/sys_rumble.s
|
||||
9B8B0,800AC7B0,src/code/code_800D31A0.s
|
||||
9B8E0,800AC7E0,src/code/irqmgr.s
|
||||
9BF00,800ACE00,src/code/fault.s
|
||||
9E750,800AF650,src/code/fault_drawer.s
|
||||
9F1D0,800B00D0,src/code/kanread.s
|
||||
9FCC0,800B0BC0,src/audio/lib/synthesis.s
|
||||
A2E20,800B3D20,src/audio/lib/heap.s
|
||||
A61F0,800B70F0,src/audio/lib/load.s
|
||||
A9FE0,800BAEE0,src/audio/lib/thread.s
|
||||
AB840,800BC740,src/audio/lib/dcache.s
|
||||
AB8C0,800BC7C0,src/audio/lib/aisetnextbuf.s
|
||||
AB940,800BC840,src/audio/lib/playback.s
|
||||
AD8C0,800BE7C0,src/audio/lib/effects.s
|
||||
AE340,800BF240,src/audio/lib/seqplayer.s
|
||||
B1960,800C2860,src/audio/general.s
|
||||
B7AF0,800C89F0,src/audio/sfx.s
|
||||
B9950,800CA850,src/audio/sequence.s
|
||||
BB570,800CC470,src/code/gfxprint.s
|
||||
BC2E0,800CD1E0,src/code/rcp_utils.s
|
||||
BC340,800CD240,src/code/loadfragment2.s
|
||||
BC3A0,800CD2A0,src/code/relocation.s
|
||||
BC5E0,800CD4E0,src/code/load.s
|
||||
BC6B0,800CD5B0,src/code/code_800FC620.s
|
||||
BC9F0,800CD8F0,src/code/padutils.s
|
||||
BCBE0,800CDAE0,src/code/padsetup.s
|
||||
BCD20,800CDC20,src/code/code_800FCE80.s
|
||||
BD230,800CE130,src/code/fp.s
|
||||
BD390,800CE290,src/code/system_malloc.s
|
||||
BD560,800CE460,src/code/code_800FD970.s
|
||||
BD720,800CE620,src/code/__osMalloc.s
|
||||
BE4D0,800CF3D0,src/libultra/libc/sprintf.s
|
||||
BE5A0,800CF4A0,src/code/printutils.s
|
||||
BE600,800CF500,src/code/sleep.s
|
||||
BE7A0,800CF6A0,src/code/jpegutils.s
|
||||
BECB0,800CFBB0,src/code/jpegdecoder.s
|
||||
BF2A0,800D01A0,src/libultra/mgu/scale.s
|
||||
BF350,800D0250,src/libultra/gu/sinf.s
|
||||
BF510,800D0410,src/libultra/gu/sins.s
|
||||
BF580,800D0480,src/libultra/io/sptask.s
|
||||
BF840,800D0740,src/libultra/io/motor.s
|
||||
BFC10,800D0B10,src/libultra/io/siacs.s
|
||||
BFCD0,800D0BD0,src/libultra/io/controller.s
|
||||
BFFB0,800D0EB0,src/libultra/io/contreaddata.s
|
||||
C0190,800D1090,src/libultra/gu/perspective.s
|
||||
C0420,800D1320,src/libultra/io/sprawdma.s
|
||||
C04B0,800D13B0,src/libultra/io/sirawdma.s
|
||||
C0560,800D1460,src/libultra/io/sptaskyield.s
|
||||
C0580,800D1480,src/libultra/mgu/mtxidentf.s
|
||||
C05D0,800D14D0,src/libultra/gu/lookat.s
|
||||
C08F0,800D17F0,src/libultra/os/stoptimer.s
|
||||
C09E0,800D18E0,src/libultra/gu/sqrtf.s
|
||||
C09F0,800D18F0,src/libultra/os/afterprenmi.s
|
||||
C0A10,800D1910,src/libultra/io/contquery.s
|
||||
C0AB0,800D19B0,src/libultra/gu/lookathil.s
|
||||
C1330,800D2230,src/libultra/libc/xprintf.s
|
||||
C2010,800D2F10,src/libultra/libc/string.s
|
||||
C20B0,800D2FB0,src/libultra/io/sp.s
|
||||
C20E0,800D2FE0,src/libultra/mgu/mtxident.s
|
||||
C2130,800D3030,src/libultra/gu/position.s
|
||||
C2340,800D3240,src/libultra/io/sptaskyielded.s
|
||||
C23A0,800D32A0,src/libultra/gu/rotate.s
|
||||
C2570,800D3470,src/libultra/io/aisetfreq.s
|
||||
C26C0,800D35C0,src/libultra/os/getactivequeue.s
|
||||
C26E0,800D35E0,src/libultra/mgu/normalize.s
|
||||
C2740,800D3640,src/libultra/io/dpgetstat.s
|
||||
C2750,800D3650,src/libultra/io/dpsetstat.s
|
||||
C2760,800D3660,src/libultra/gu/ortho.s
|
||||
C2920,800D3820,src/libultra/gu/cosf.s
|
||||
C2A90,800D3990,src/libultra/gu/coss.s
|
||||
C2AC0,800D39C0,src/libultra/io/visetevent.s
|
||||
C2B20,800D3A20,src/libultra/gu/us2dex.s
|
||||
C2CA0,800D3BA0,src/libultra/io/pfsselectbank.s
|
||||
C2D20,800D3C20,src/libultra/io/contsetch.s
|
||||
C2D80,800D3C80,src/libultra/io/aigetlen.s
|
||||
C2DA0,800D3CA0,src/libultra/mgu/translate.s
|
||||
C2E70,800D3D70,src/libultra/io/contramwrite.s
|
||||
C30C0,800D3FC0,src/libultra/io/pfsgetstatus.s
|
||||
C32F0,800D41F0,src/libultra/io/contpfs.s
|
||||
C3E70,800D4D70,src/libultra/io/contramread.s
|
||||
C40A0,800D4FA0,src/libultra/io/crc.s
|
||||
C4210,800D5110,src/libultra/io/pfsisplug.s
|
||||
C4500,800D5400,src/libultra/os/settimer.s
|
||||
C4690,800D5590,src/libultra/libc/xldtob.s
|
||||
C51A0,800D60A0,src/libultra/libc/ldiv.s
|
||||
C5330,800D6230,src/libultra/libc/xlitob.s
|
||||
C55D0,800D64D0,src/libultra/io/spgetstat.s
|
||||
C55E0,800D64E0,src/libultra/io/spsetstat.s
|
||||
C55F0,800D64F0,src/libultra/os/writebackdcacheall.s
|
||||
C5620,800D6520,src/libultra/os/getcurrfaultedthread.s
|
||||
C5640,800D6540,src/libultra/mgu/mtxf2l.s
|
||||
C56B0,800D65B0,src/libultra/libc/llcvt.s
|
||||
C58C0,800D67C0,src/libultra/io/vigetcurrframebuf.s
|
||||
C5900,800D6800,src/libultra/io/spsetpc.s
|
||||
C5930,800D6830,src/libultra/libc/sqrt.s
|
||||
C5940,800D6840,src/libultra/libc/absf.s
|
||||
C5950,800D6850,src/code/fmodf.s
|
||||
C59A0,800D68A0,src/code/__osMemset.s
|
||||
C59D0,800D68D0,src/code/__osMemmove.s
|
||||
C5A60,800D6960,src/code/z_message_PAL.s
|
||||
CE820,800DF720,src/code/z_game_over.s
|
||||
CED60,800DFC60,src/code/z_construct.s
|
||||
D02A0,800E11A0,data/rsp.text.s
|
||||
|
||||
offset,vram,.data
|
||||
D3600,800E4500,src/code/z_en_a_keep.s
|
||||
D36A0,800E45A0,src/code/z_en_item00.s
|
||||
D3940,800E4840,src/code/z_eff_blure.s
|
||||
D39F0,800E48F0,src/code/z_eff_shield_particle.s
|
||||
D3A40,800E4940,src/code/z_effect.s
|
||||
D3A90,800E4990,src/code/z_effect_soft_sprite.s
|
||||
D3AA0,800E49A0,src/code/z_effect_soft_sprite_old_init.s
|
||||
D3B90,800E4A90,src/code/z_effect_soft_sprite_dlftbls.s
|
||||
D3FA0,800E4EA0,src/code/flg_set.s
|
||||
D4160,800E5060,src/code/z_actor.s
|
||||
D4480,800E5380,src/code/z_actor_dlftbls.s
|
||||
D7F70,800E8E70,src/code/z_bgcheck.s
|
||||
D80C0,800E8FC0,src/code/z_camera.s
|
||||
DB610,800EC510,src/code/z_collision_btltbls.s
|
||||
DB8F0,800EC7F0,src/code/z_collision_check.s
|
||||
DBBA0,800ECAA0,src/code/z_debug.s
|
||||
DBBD0,800ECAD0,src/code/z_debug_display.s
|
||||
DBC20,800ECB20,src/code/z_demo.s
|
||||
DBD80,800ECC80,src/code/z_draw.s
|
||||
DCE00,800EDD00,src/code/z_elf_message.s
|
||||
DCE50,800EDD50,src/code/z_face_reaction.s
|
||||
DD290,800EE190,src/code/z_game_dlftbls.s
|
||||
DD3B0,800EE2B0,src/code/z_horse.s
|
||||
DD4C0,800EE3C0,src/code/z_jpeg.s
|
||||
DD500,800EE400,src/code/z_kaleido_setup.s
|
||||
DD550,800EE450,src/code/z_kankyo.s
|
||||
DD940,800EE840,src/code/z_lib.s
|
||||
DD970,800EE870,src/code/z_lifemeter.s
|
||||
DDA90,800EE990,src/code/z_lights.s
|
||||
DDAA0,800EE9A0,src/code/z_map_mark.s
|
||||
DDB60,800EEA60,src/code/z_onepointdemo.s
|
||||
E1480,800F2380,src/code/z_map_exp.s
|
||||
E14A0,800F23A0,src/code/z_map_data.s
|
||||
E32A0,800F41A0,src/code/z_parameter.s
|
||||
E35A0,800F44A0,src/code/z_player_lib.s
|
||||
E3C80,800F4B80,src/code/z_quake.s
|
||||
E3CB0,800F4BB0,src/code/z_rcp.s
|
||||
E4AD0,800F59D0,src/code/z_room.s
|
||||
E4B50,800F5A50,src/code/code_80097A00.s
|
||||
E4ED0,800F5DD0,src/code/z_scene.s
|
||||
E4F50,800F5E50,src/code/object_table.s
|
||||
E5BF0,800F6AF0,src/code/z_scene_table.s
|
||||
E7E00,800F8D00,src/code/z_skelanime.s
|
||||
E7E20,800F8D20,src/code/z_skin_matrix.s
|
||||
E7E60,800F8D60,src/code/z_sram.s
|
||||
E8010,800F8F10,src/code/z_ss_sram.s
|
||||
E80C0,800F8FC0,data/unk_8012ABC0.data.s
|
||||
E80F0,800F8FF0,src/code/z_view.s
|
||||
E8100,800F9000,src/code/z_viscvg.s
|
||||
E8190,800F9090,src/code/z_vr_box.s
|
||||
E8490,800F9390,src/code/z_player_call.s
|
||||
E84B0,800F93B0,src/code/z_fbdemo.s
|
||||
E8530,800F9430,src/code/z_fbdemo_triforce.s
|
||||
E8600,800F9500,src/code/z_fbdemo_wipe1.s
|
||||
E90A0,800F9FA0,src/code/z_fbdemo_circle.s
|
||||
EA3A0,800FB2A0,src/code/z_fbdemo_fade.s
|
||||
EA3D0,800FB2D0,src/code/shrink_window.s
|
||||
EA3E0,800FB2E0,src/code/z_kaleido_manager.s
|
||||
EA430,800FB330,src/code/z_play.s
|
||||
EA440,800FB340,src/code/audio_stop_all_sfx.s
|
||||
EA450,800FB350,src/code/graph.s
|
||||
EA460,800FB360,src/code/main.s
|
||||
EA470,800FB370,src/code/padmgr.s
|
||||
EA480,800FB380,src/code/speed_meter.s
|
||||
EA4B0,800FB3B0,src/code/sys_math.s
|
||||
EA4F0,800FB3F0,src/code/sys_math_atan.s
|
||||
EAD00,800FBC00,src/code/sys_matrix.s
|
||||
EAD80,800FBC80,src/code/sys_ucode.s
|
||||
EAD90,800FBC90,src/code/sys_rumble.s
|
||||
EADA0,800FBCA0,src/code/irqmgr.s
|
||||
EADC0,800FBCC0,src/code/fault.s
|
||||
EAE20,800FBD20,src/code/fault_drawer.s
|
||||
EAE60,800FBD60,src/audio/lib/data.s
|
||||
ED270,800FE170,src/audio/lib/synthesis.s
|
||||
ED2A0,800FE1A0,src/audio/lib/load.s
|
||||
ED2B0,800FE1B0,src/audio/lib/thread.s
|
||||
ED2D0,800FE1D0,src/audio/lib/aisetnextbuf.s
|
||||
ED2E0,800FE1E0,src/audio/lib/effects.s
|
||||
ED2F0,800FE1F0,src/audio/lib/seqplayer.s
|
||||
ED340,800FE240,src/audio/general.s
|
||||
EEA60,800FF960,src/audio/sfx_params.s
|
||||
EFE30,80100D30,src/audio/data.s
|
||||
EFEA0,80100DA0,src/audio/session_config.s
|
||||
F0640,80101540,src/code/logseverity.s
|
||||
F0650,80101550,src/code/gfxprint.s
|
||||
F0F00,80101E00,src/code/code_800FC620.s
|
||||
F0F20,80101E20,src/code/fp.s
|
||||
F0F30,80101E30,src/code/code_800FD970.s
|
||||
F0F40,80101E40,src/code/__osMalloc.s
|
||||
F0F50,80101E50,src/libultra/gu/sins.s
|
||||
F1750,80102650,src/libultra/io/siacs.s
|
||||
F1760,80102660,src/libultra/io/controller.s
|
||||
F1770,80102670,src/libultra/libc/xprintf.s
|
||||
F17C0,801026C0,src/libultra/gu/position.s
|
||||
F17D0,801026D0,src/libultra/gu/rotate.s
|
||||
F17E0,801026E0,src/libultra/io/vimodefpallan1.s
|
||||
F1830,80102730,src/libultra/io/contpfs.s
|
||||
F1840,80102740,src/libultra/io/contramread.s
|
||||
F1850,80102750,src/libultra/libc/xlitob.s
|
||||
|
||||
offset,vram,.rodata
|
||||
F1880,80102780,src/code/z_en_a_keep.s
|
||||
F18D0,801027D0,src/code/z_en_item00.s
|
||||
F1B40,80102A40,src/code/z_eff_blure.s
|
||||
F1B70,80102A70,src/code/z_eff_shield_particle.s
|
||||
F1B80,80102A80,src/code/z_eff_spark.s
|
||||
F1B90,80102A90,src/code/z_eff_ss_dead.s
|
||||
F1BA0,80102AA0,src/code/z_effect_soft_sprite_old_init.s
|
||||
F1BC0,80102AC0,src/code/flg_set.s
|
||||
F1F50,80102E50,src/code/z_actor.s
|
||||
F2500,80103400,src/code/z_actor_dlftbls.s
|
||||
F2550,80103450,src/code/z_bgcheck.s
|
||||
F25F0,801034F0,src/code/code_80043480.s
|
||||
F2600,80103500,src/code/z_camera.s
|
||||
F2D80,80103C80,src/code/z_collision_check.s
|
||||
F2DD0,80103CD0,src/code/z_debug.s
|
||||
F2DE0,80103CE0,src/code/z_demo.s
|
||||
F32C0,801041C0,src/code/z_draw.s
|
||||
F32D0,801041D0,src/code/z_elf_message.s
|
||||
F33F0,801042F0,src/code/z_fcurve_data.s
|
||||
F3400,80104300,src/code/z_fcurve_data_skelanime.s
|
||||
F3410,80104310,src/code/z_horse.s
|
||||
F3420,80104320,src/code/z_jpeg.s
|
||||
F34B0,801043B0,src/code/z_kankyo.s
|
||||
F3560,80104460,src/code/z_lib.s
|
||||
F3570,80104470,src/code/z_lifemeter.s
|
||||
F3590,80104490,src/code/z_lights.s
|
||||
F35A0,801044A0,src/code/z_map_mark.s
|
||||
F3600,80104500,src/code/z_olib.s
|
||||
F3620,80104520,src/code/z_onepointdemo.s
|
||||
F3EE0,80104DE0,src/code/z_map_exp.s
|
||||
F4200,80105100,src/code/z_parameter.s
|
||||
F4410,80105310,src/code/z_path.s
|
||||
F4420,80105320,src/code/z_player_lib.s
|
||||
F4480,80105380,src/code/z_quake.s
|
||||
F4510,80105410,src/code/z_room.s
|
||||
F4550,80105450,src/code/z_sample.s
|
||||
F4560,80105460,src/code/z_scene_table.s
|
||||
F45A0,801054A0,src/code/z_skelanime.s
|
||||
F45C0,801054C0,src/code/z_skin.s
|
||||
F45D0,801054D0,src/code/z_skin_matrix.s
|
||||
F45E0,801054E0,src/code/z_sram.s
|
||||
F4650,80105550,src/code/z_rumble.s
|
||||
F4660,80105560,src/code/z_view.s
|
||||
F4670,80105570,src/code/z_vr_box.s
|
||||
F4760,80105660,src/code/z_fbdemo_triforce.s
|
||||
F4770,80105670,src/code/z_fbdemo_wipe1.s
|
||||
F4780,80105680,src/code/z_fbdemo_circle.s
|
||||
F4790,80105690,src/code/code_800BB0A0.s
|
||||
F47A0,801056A0,src/code/z_kaleido_manager.s
|
||||
F47C0,801056C0,src/code/z_play.s
|
||||
F4880,80105780,src/code/game.s
|
||||
F48A0,801057A0,src/code/graph.s
|
||||
F48F0,801057F0,src/code/main.s
|
||||
F4920,80105820,src/code/padmgr.s
|
||||
F4930,80105830,src/code/sys_cfb.s
|
||||
F4940,80105840,src/code/sys_math.s
|
||||
F4950,80105850,src/code/sys_math3d.s
|
||||
F49E0,801058E0,src/code/sys_math_atan.s
|
||||
F49F0,801058F0,src/code/sys_matrix.s
|
||||
F4A20,80105920,src/code/irqmgr.s
|
||||
F4A40,80105940,src/code/fault.s
|
||||
F5450,80106350,src/code/fault_drawer.s
|
||||
F5880,80106780,src/audio/lib/synthesis.s
|
||||
F58A0,801067A0,src/audio/lib/heap.s
|
||||
F58D0,801067D0,src/audio/lib/load.s
|
||||
F5940,80106840,src/audio/lib/thread.s
|
||||
F5A70,80106970,src/audio/lib/playback.s
|
||||
F5AA0,801069A0,src/audio/lib/effects.s
|
||||
F5AD0,801069D0,src/audio/lib/seqplayer.s
|
||||
F6110,80107010,src/audio/general.s
|
||||
F62A0,801071A0,src/audio/sfx.s
|
||||
F62C0,801071C0,src/audio/sequence.s
|
||||
F6340,80107240,src/audio/session_config.s
|
||||
F6350,80107250,src/code/gfxprint.s
|
||||
F6370,80107270,src/code/code_800FCE80.s
|
||||
F63C0,801072C0,src/code/__osMalloc.s
|
||||
F6680,80107580,src/libultra/gu/sinf.s
|
||||
F66D0,801075D0,src/libultra/gu/perspective.s
|
||||
F66E0,801075E0,src/libultra/gu/lookathil.s
|
||||
F66F0,801075F0,src/libultra/libc/xprintf.s
|
||||
F67F0,801076F0,src/libultra/gu/cosf.s
|
||||
F6840,80107740,src/libultra/gu/libm_vals.s
|
||||
F6850,80107750,src/libultra/libc/xldtob.s
|
||||
F68B0,801077B0,src/libultra/libc/llcvt.s
|
||||
|
||||
offset,vram,.data
|
||||
F68C0,801077C0,src/code/z_message_PAL.s
|
||||
|
||||
offset,vram,.rodata
|
||||
FF350,80110250,src/code/z_message_PAL.s
|
||||
FF510,80110410,src/code/z_game_over.s
|
||||
FF570,80110470,data/audio_tables.rodata.s
|
||||
100110,80111010,data/rsp.rodata.s
|
||||
|
||||
offset,vram,.bss
|
||||
102230,80113130,src/code/z_en_item00.s
|
||||
102240,80113140,src/code/z_effect.s
|
||||
106030,80116F30,src/code/flg_set.s
|
||||
106040,80116F40,src/code/z_actor.s
|
||||
1060C0,80116FC0,src/code/z_actor_dlftbls.s
|
||||
1060D0,80116FD0,src/code/z_bgcheck.s
|
||||
1061F0,801170F0,src/code/z_camera.s
|
||||
1062D0,801171D0,src/code/z_collision_check.s
|
||||
107A30,80118930,src/code/z_common_data.s
|
||||
108E60,80119D60,src/code/z_debug.s
|
||||
109080,80119F80,src/code/z_debug_display.s
|
||||
109090,80119F90,src/code/z_demo.s
|
||||
1090C0,80119FC0,src/code/z_kankyo.s
|
||||
109190,8011A090,src/code/z_lifemeter.s
|
||||
1091C0,8011A0C0,src/code/z_lights.s
|
||||
109350,8011A250,src/code/z_malloc.s
|
||||
109380,8011A280,src/code/z_map_mark.s
|
||||
109390,8011A290,src/code/z_map_exp.s
|
||||
1093A0,8011A2A0,src/code/z_parameter.s
|
||||
1093C0,8011A2C0,src/code/z_player_lib.s
|
||||
1093E0,8011A2E0,src/code/z_quake.s
|
||||
109470,8011A370,src/code/z_skelanime.s
|
||||
109480,8011A380,src/code/z_skin.s
|
||||
10A390,8011B290,src/code/z_rumble.s
|
||||
10A4A0,8011B3A0,src/code/z_vr_box_draw.s
|
||||
10A4B0,8011B3B0,src/code/z_player_call.s
|
||||
10A4C0,8011B3C0,src/code/z_kaleido_scope_call.s
|
||||
10A4E0,8011B3E0,src/code/z_play.s
|
||||
10A5F0,8011B4F0,src/code/game.s
|
||||
10A6D0,8011B5D0,src/code/graph.s
|
||||
10A740,8011B640,src/code/main.s
|
||||
10E5D0,8011F4D0,src/code/padmgr.s
|
||||
10E5E0,8011F4E0,src/code/sched.s
|
||||
10E600,8011F500,src/code/speed_meter.s
|
||||
10E670,8011F570,src/code/sys_cfb.s
|
||||
10E680,8011F580,src/code/sys_math3d.s
|
||||
10E8A0,8011F7A0,src/code/sys_matrix.s
|
||||
10E8B0,8011F7B0,src/code/fault.s
|
||||
10F730,80120630,src/code/fault_drawer.s
|
||||
10F790,80120690,src/audio/lib/load.s
|
||||
10F850,80120750,src/audio/general.s
|
||||
10FA50,80120950,src/audio/sfx.s
|
||||
112260,80123160,src/audio/sequence.s
|
||||
113020,80123F20,src/audio/session_config.s
|
||||
119530,8012A430,src/code/gfxprint.s
|
||||
119540,8012A440,src/code/code_800FCE80.s
|
||||
119550,8012A450,src/code/system_malloc.s
|
||||
119580,8012A480,src/code/code_800FD970.s
|
||||
119590,8012A490,src/code/__osMalloc.s
|
||||
1195A0,8012A4A0,src/code/jpegdecoder.s
|
||||
1195B0,8012A4B0,src/libultra/io/sptask.s
|
||||
1195F0,8012A4F0,src/libultra/io/motor.s
|
||||
1196F0,8012A5F0,src/libultra/io/siacs.s
|
||||
119710,8012A610,src/libultra/io/controller.s
|
||||
1197A0,8012A6A0,src/libultra/io/pfsreadwritefile.s
|
||||
1198A0,8012A7A0,src/libultra/io/pfsgetstatus.s
|
||||
1198E0,8012A7E0,src/code/z_message_PAL.s
|
||||
119900,8012A800,.end
|
|
22
tools/disasm/gc-eu-mq/files_ovl_file_choose.csv
Normal file
22
tools/disasm/gc-eu-mq/files_ovl_file_choose.csv
Normal file
|
@ -0,0 +1,22 @@
|
|||
offset,vram,.text
|
||||
0,80803630,src/overlays/gamestates/ovl_file_choose/z_file_copy_erase.s
|
||||
3040,80806670,src/overlays/gamestates/ovl_file_choose/z_file_nameset_PAL.s
|
||||
6F60,8080A590,src/overlays/gamestates/ovl_file_choose/z_file_choose.s
|
||||
|
||||
offset,vram,.data
|
||||
D740,80810D70,src/overlays/gamestates/ovl_file_choose/z_file_nameset_data.s
|
||||
E010,80811640,src/overlays/gamestates/ovl_file_choose/z_file_copy_erase.s
|
||||
E050,80811680,src/overlays/gamestates/ovl_file_choose/z_file_nameset_PAL.s
|
||||
E2B0,808118E0,src/overlays/gamestates/ovl_file_choose/z_file_choose.s
|
||||
|
||||
offset,vram,.rodata
|
||||
E5F0,80811C20,src/overlays/gamestates/ovl_file_choose/z_file_nameset_PAL.s
|
||||
E600,80811C30,src/overlays/gamestates/ovl_file_choose/z_file_choose.s
|
||||
|
||||
offset,vram,.ovl
|
||||
E620,80811C50,src/overlays/gamestates/ovl_file_choose/ovl_file_choose_reloc.s
|
||||
|
||||
offset,vram,.bss
|
||||
EC10,80812240,src/overlays/gamestates/ovl_file_choose/z_file_copy_erase.s
|
||||
EC20,80812250,src/overlays/gamestates/ovl_file_choose/z_file_nameset_PAL.s
|
||||
EC30,80812260,.end
|
|
34
tools/disasm/gc-eu-mq/files_ovl_kaleido_scope.csv
Normal file
34
tools/disasm/gc-eu-mq/files_ovl_kaleido_scope.csv
Normal file
|
@ -0,0 +1,34 @@
|
|||
offset,vram,.text
|
||||
0,80812260,src/overlays/misc/ovl_kaleido_scope/z_kaleido_collect.s
|
||||
2400,80814660,src/overlays/misc/ovl_kaleido_scope/z_kaleido_debug.s
|
||||
43B0,80816610,src/overlays/misc/ovl_kaleido_scope/z_kaleido_equipment.s
|
||||
5E30,80818090,src/overlays/misc/ovl_kaleido_scope/z_kaleido_item.s
|
||||
7E20,8081A080,src/overlays/misc/ovl_kaleido_scope/z_kaleido_map_PAL.s
|
||||
B100,8081D360,src/overlays/misc/ovl_kaleido_scope/z_kaleido_prompt.s
|
||||
B300,8081D560,src/overlays/misc/ovl_kaleido_scope/z_kaleido_scope_PAL.s
|
||||
15350,808275B0,src/overlays/misc/ovl_kaleido_scope/z_lmap_mark.s
|
||||
|
||||
offset,vram,.data
|
||||
15A10,80827C70,src/overlays/misc/ovl_kaleido_scope/z_kaleido_collect.s
|
||||
15BC0,80827E20,src/overlays/misc/ovl_kaleido_scope/z_kaleido_debug.s
|
||||
15D90,80827FF0,src/overlays/misc/ovl_kaleido_scope/z_kaleido_equipment.s
|
||||
15DC0,80828020,src/overlays/misc/ovl_kaleido_scope/z_kaleido_item.s
|
||||
15E30,80828090,src/overlays/misc/ovl_kaleido_scope/z_kaleido_map_PAL.s
|
||||
16080,808282E0,src/overlays/misc/ovl_kaleido_scope/z_kaleido_prompt.s
|
||||
16090,808282F0,src/overlays/misc/ovl_kaleido_scope/z_kaleido_scope_PAL.s
|
||||
16C10,80828E70,src/overlays/misc/ovl_kaleido_scope/z_lmap_mark.s
|
||||
16C60,80828EC0,src/overlays/misc/ovl_kaleido_scope/z_lmap_mark_data.s
|
||||
|
||||
offset,vram,.rodata
|
||||
1ADC0,8082D020,src/overlays/misc/ovl_kaleido_scope/z_kaleido_debug.s
|
||||
1AEA0,8082D100,src/overlays/misc/ovl_kaleido_scope/z_kaleido_equipment.s
|
||||
1AEB0,8082D110,src/overlays/misc/ovl_kaleido_scope/z_kaleido_scope_PAL.s
|
||||
1B190,8082D3F0,src/overlays/misc/ovl_kaleido_scope/z_lmap_mark.s
|
||||
1B240,8082D4A0,src/overlays/misc/ovl_kaleido_scope/z_lmap_mark_data.s
|
||||
|
||||
offset,vram,.ovl
|
||||
1B2C0,8082D560,src/overlays/misc/ovl_kaleido_scope/ovl_kaleido_scope_reloc.s
|
||||
|
||||
offset,vram,.bss
|
||||
1C9C0,8082EC20,src/overlays/misc/ovl_kaleido_scope/z_kaleido_scope_PAL.s
|
||||
1CA30,8082EC90,.end
|
|
13146
tools/disasm/gc-eu-mq/functions.txt
Normal file
13146
tools/disasm/gc-eu-mq/functions.txt
Normal file
File diff suppressed because it is too large
Load diff
785
tools/disasm/gc-eu-mq/variables.txt
Normal file
785
tools/disasm/gc-eu-mq/variables.txt
Normal file
|
@ -0,0 +1,785 @@
|
|||
D_80009430 = 0x800060D0; // size:0x1
|
||||
gViConfigBlack = 0x800060D4; // size:0x1
|
||||
gViConfigAdditionalScanLines = 0x800060D8; // size:0x1
|
||||
gViConfigFeatures = 0x800060DC; // size:0x4
|
||||
gViConfigXScale = 0x800060E0; // size:0x4
|
||||
gViConfigYScale = 0x800060E4; // size:0x4
|
||||
gCartHandle = 0x800060F0; // size:0x4 type:OSPiHandle*
|
||||
gDmaMgrDmaBuffSize = 0x80006104; // size:0x4
|
||||
sDmaMgrIsRomCompressed = 0x80006108; // size:0x4
|
||||
gCurrentRegion = 0x80006110; // size:0x4 type:u32
|
||||
sStackInfoListStart = 0x80006130; // size:0x4
|
||||
sStackInfoListEnd = 0x80006134; // size:0x4
|
||||
__osPiAccessQueueEnabled = 0x80006140; // size:0x4
|
||||
osViModePalLan1 = 0x80006150; // size:0x50
|
||||
osClockRate = 0x800061A0; // size:0x8
|
||||
osViClock = 0x800061A8; // size:0x4
|
||||
__osShutdown = 0x800061AC; // size:0x4 type:u32
|
||||
__OSGlobalIntMask = 0x800061B0; // size:0x4 type:OSHWIntr
|
||||
__osHwIntTable = 0x800061C0; // size:0x28 type:__osHwInt
|
||||
__osPiIntTable = 0x800061E8; // size:0x8 type:__osHwInt
|
||||
__osThreadTail = 0x800061F0; // size:0x8
|
||||
__osRunQueue = 0x800061F8; // size:0x4 type:OSThread*
|
||||
__osActiveQueue = 0x800061FC; // size:0x4
|
||||
__osRunningThread = 0x80006200; // size:0x4 type:OSThread*
|
||||
__osFaultedThread = 0x80006204; // size:0x4 type:OSThread*
|
||||
__osPiDevMgr = 0x80006210; // size:0x1C
|
||||
__osPiTable = 0x8000622C; // size:0x4 type:OSPiHandle*
|
||||
__osCurrentHandle = 0x80006230; // size:0x8
|
||||
__osPreNMI = 0x80006240; // size:0x4
|
||||
__osTimerList = 0x80006250; // size:0x4
|
||||
osViModeNtscLan1 = 0x80006260; // size:0x50
|
||||
osViModeMpalLan1 = 0x800062B0; // size:0x50
|
||||
vi = 0x80006300; // size:0x60
|
||||
__osViCurr = 0x80006360; // size:0x4
|
||||
__osViNext = 0x80006364; // size:0x4
|
||||
__osViDevMgr = 0x80006380; // size:0x1C
|
||||
__additional_scanline = 0x8000639C; // size:0x4
|
||||
__osRcpImTable = 0x800064C0; // size:0x80 type:u16
|
||||
sBootThreadInfo = 0x80006570; // size:0x1C
|
||||
sIdleThread = 0x80006590; // size:0x1B0
|
||||
sIdleThreadStack = 0x80006740; // size:0x400
|
||||
sIdleThreadInfo = 0x80006B40; // size:0x1C
|
||||
sBootThreadStack = 0x80006B60; // size:0x400
|
||||
gMainThread = 0x80006F60; // size:0x1B0
|
||||
sMainStack = 0x80007110; // size:0x900
|
||||
sMainStackInfo = 0x80007A10; // size:0x1C
|
||||
sPiMgrCmdBuff = 0x80007A30; // size:0xC8
|
||||
gPiMgrCmdQueue = 0x80007AF8; // size:0x18
|
||||
gViConfigMode = 0x80007B10; // size:0x50
|
||||
gViConfigModeType = 0x80007B60; // size:0x1 type:u8
|
||||
sDmaMgrStackInfo = 0x80007B70; // size:0x1C
|
||||
sDmaMgrMsgQueue = 0x80007B90; // size:0x18
|
||||
sDmaMgrMsgBuf = 0x80007BA8; // size:0x80
|
||||
sDmaMgrThread = 0x80007C28; // size:0x1B0
|
||||
sDmaMgrStack = 0x80007DD8; // size:0x500
|
||||
sYaz0DataBuffer = 0x800082E0; // size:0x400
|
||||
sYaz0DataBufferEnd = 0x800086E0; // size:0x4
|
||||
sYaz0CurRomStart = 0x800086E4; // size:0x4
|
||||
sYaz0CurSize = 0x800086E8; // size:0x4
|
||||
sYaz0MaxPtr = 0x800086EC; // size:0x4
|
||||
sCartInfo = 0x800086F0; // size:0x20
|
||||
__DriveRomHandle = 0x80008710; // size:0x74 type:OSPiHandle
|
||||
piAccessBuf = 0x80008790; // size:0x4
|
||||
__osPiAccessQueue = 0x80008798; // size:0x18
|
||||
__osFinalrom = 0x800087B0; // size:0x4
|
||||
__Dom1SpeedParam = 0x800087C0; // size:0x74
|
||||
__Dom2SpeedParam = 0x80008838; // size:0x74
|
||||
piThread = 0x800088B0; // size:0x1B0
|
||||
piStackThread = 0x80008A60; // size:0x1000
|
||||
piEventQueue = 0x80009A60; // size:0x18
|
||||
piEventBuf = 0x80009A78; // size:0x8
|
||||
__osThreadSave = 0x80009A80; // size:0x1B0 type:OSThread
|
||||
__osEventStateTab = 0x80009C30; // size:0x78 type:__OSEventState
|
||||
__osCurrentTime = 0x80009CD0; // size:0x8
|
||||
__osBaseCounter = 0x80009CD8; // size:0x4
|
||||
__osViIntrCount = 0x80009CDC; // size:0x4
|
||||
__osTimerCounter = 0x80009CE0; // size:0x4
|
||||
__CartRomHandle = 0x80009CF0; // size:0x74
|
||||
viThread = 0x80009D70; // size:0x1B0
|
||||
viThreadStack = 0x80009F20; // size:0x1000
|
||||
viEventQueue = 0x8000AF20; // size:0x18
|
||||
viEventBuf = 0x8000AF38; // size:0x14
|
||||
viRetraceMsg = 0x8000AF50; // size:0x18
|
||||
viCounterMsg = 0x8000AF68; // size:0x18
|
||||
gDmaDataTable = 0x8000AF90; //
|
||||
sSetupHandlers = 0x800E4860; // size:0x8
|
||||
D_8011578C = 0x800E486C; // size:0x40
|
||||
D_801157CC = 0x800E48AC; // size:0x40
|
||||
sEffectInfoTable = 0x800E4940; // size:0x50
|
||||
sEffectSsInfo = 0x800E4990; // size:0xC
|
||||
gEffectSsOverlayTable = 0x800E4A90; // size:0x40C
|
||||
sNaviColorList = 0x800E5064; // size:0x68
|
||||
D_80115FF8 = 0x800E50D8; // size:0x50
|
||||
sEnemyActorCategories = 0x800E517C; // size:0x2
|
||||
D_801160A0 = 0x800E5180; // size:0xC
|
||||
D_80116268 = 0x800E5348; // size:0xC
|
||||
D_80116274 = 0x800E5354; // size:0xC
|
||||
D_80116280 = 0x800E5360; // size:0x18
|
||||
gActorOverlayTable = 0x800E5380; // size:0x3AE0
|
||||
gMaxActorId = 0x800E8E60; // size:0x4
|
||||
D_80119D90 = 0x800E8E70; // size:0x80
|
||||
sSurfaceMaterialToSfxOffset = 0x800E8EF0; // size:0x1C
|
||||
sZorasDomainWaterBox = 0x800E8F8C; // size:0x10
|
||||
sZorasDomainWaterBoxMinX = 0x800E8F9C; // size:0x4
|
||||
sZorasDomainWaterBoxMinY = 0x800E8FA0; // size:0x4
|
||||
sZorasDomainWaterBoxMinZ = 0x800E8FA4; // size:0x4
|
||||
sZorasDomainWaterBoxMaxX = 0x800E8FA8; // size:0x4
|
||||
sZorasDomainWaterBoxMaxY = 0x800E8FAC; // size:0x4
|
||||
sZorasDomainWaterBoxMaxZ = 0x800E8FB0; // size:0x4
|
||||
sCameraSettings = 0x800EBCC0; // size:0x210
|
||||
sCameraFunctions = 0x800EBED0; // size:0x11C
|
||||
sInitRegs = 0x800EBFEC; // size:0x4
|
||||
gDebugCamEnabled = 0x800EBFF0; // size:0x4
|
||||
sCameraInterfaceField = 0x800EBFF8; // size:0x4
|
||||
sCameraHudVisibilityMode = 0x800EBFFC; // size:0x4
|
||||
sCameraLetterboxSize = 0x800EC000; // size:0x4
|
||||
D_8011D3AC = 0x800EC004; // size:0x4
|
||||
D_8011D3B0 = 0x800EC008; // size:0x1C
|
||||
D_8011D3CC = 0x800EC024; // size:0x1C
|
||||
sUpdateCameraDirection = 0x800EC040; // size:0x4
|
||||
D_8011D3EC = 0x800EC044; // size:0x4
|
||||
D_8011D3F0 = 0x800EC048; // size:0x4
|
||||
sDemo5PrevAction12Frame = 0x800EC04C; // size:0x4
|
||||
D_8011D658 = 0x800EC050; // size:0x20
|
||||
D_8011D678 = 0x800EC070; // size:0x30
|
||||
sDemo5PrevSfxFrame = 0x800EC0A0; // size:0x4
|
||||
D_8011D6AC = 0x800EC0A4; // size:0x78
|
||||
D_8011D954 = 0x800EC34C; // size:0xA0
|
||||
D_8011D9F4 = 0x800EC3EC; // size:0x78
|
||||
sCamElevatorPlatformLowerEyePoints = 0x800EC464; // size:0x30
|
||||
sCamElevatorPlatformUpperEyePoints = 0x800EC494; // size:0x30
|
||||
sCamElevatorPlatformTogglePosY = 0x800EC4C4; // size:0x10
|
||||
sCamElevatorPlatformFovRollParam = 0x800EC4D4; // size:0x10
|
||||
sCamElevatorPlatformRolls = 0x800EC4E4; // size:0x8
|
||||
sDebugCamTextEntryCount = 0x800ECAA0; // size:0x2
|
||||
sDebugCamTextColors = 0x800ECAA4; // size:0x20
|
||||
sCurTextId = 0x800ECB20; // size:0x2
|
||||
sCurOcarinaAction = 0x800ECB24; // size:0x2
|
||||
sManualCutsceneHandlers = 0x800ECB28; // size:0x14
|
||||
sScriptedCutsceneHandlers = 0x800ECB3C; // size:0x14
|
||||
sTitleDemoDestination = 0x800ECB50; // size:0x1
|
||||
sEntranceCutsceneTable = 0x800ECB54; // size:0x110
|
||||
sDrawItemTable = 0x800ECC80; // size:0x1074
|
||||
sChildSariaQuestHints = 0x800EDD00; // size:0x34
|
||||
sAdultSariaQuestHints = 0x800EDD34; // size:0x18
|
||||
sReactionTextIds = 0x800EDD50; // size:0x438
|
||||
gGameStateOverlayTable = 0x800EE190; // size:0x120 type:GameStateOverlay
|
||||
sKaleidoSetupKscpPos0 = 0x800EE400; // size:0x8
|
||||
sKaleidoSetupEyeX0 = 0x800EE408; // size:0x10
|
||||
sKaleidoSetupEyeZ0 = 0x800EE418; // size:0x10
|
||||
sKaleidoSetupKscpPos1 = 0x800EE428; // size:0x8
|
||||
sKaleidoSetupEyeX1 = 0x800EE430; // size:0x10
|
||||
sKaleidoSetupEyeZ1 = 0x800EE440; // size:0x10
|
||||
sZBufValConversionTable = 0x800EE450; // size:0x40
|
||||
gWeatherMode = 0x800EE490; // size:0x1
|
||||
gLightConfigAfterUnderwater = 0x800EE494; // size:0x1
|
||||
gInterruptSongOfStorms = 0x800EE498; // size:0x1
|
||||
gSkyboxIsChanging = 0x800EE49C; // size:0x1
|
||||
gTimeSpeed = 0x800EE4A0; // size:0x2
|
||||
sSunScreenDepth = 0x800EE4A4; // size:0x2
|
||||
sTimeBasedLightConfigs = 0x800EE4A8; // size:0xD2
|
||||
gTimeBasedSkyboxConfigs = 0x800EE57C; // size:0x120
|
||||
gNormalSkyFiles = 0x800EE69C; // size:0x90
|
||||
sSandstormColorIndex = 0x800EE72C; // size:0x1
|
||||
sNextSandstormColorIndex = 0x800EE730; // size:0x1
|
||||
sSandstormLerpScale = 0x800EE734; // size:0x4
|
||||
sLensFlareScales = 0x800EE738; // size:0x28
|
||||
sSandstormPrimColors = 0x800EE824; // size:0xC
|
||||
sSandstormEnvColors = 0x800EE830; // size:0xC
|
||||
sInitChainHandlers = 0x800EE840; // size:0x2C
|
||||
sPlayerInitialPosX = 0x800F2380; // size:0x2
|
||||
sPlayerInitialPosZ = 0x800F2384; // size:0x2
|
||||
sPlayerInitialDirection = 0x800F2388; // size:0x2
|
||||
sEntranceIconMapIndex = 0x800F238C; // size:0x2
|
||||
gMapDataTable = 0x800F4128; // size:0x70
|
||||
gSpoilingItems = 0x800F4348; // size:0x6
|
||||
gSpoilingItemReverts = 0x800F4350; // size:0x6
|
||||
gPlayerSkelHeaders = 0x800F44A0; // size:0x8
|
||||
sBootData = 0x800F44A8; // size:0xCC
|
||||
sActionModelGroups = 0x800F4574; // size:0x43
|
||||
sEnvHazardTextTriggers = 0x800F45B8; // size:0x10
|
||||
gPlayerModelTypes = 0x800F45C8; // size:0x50
|
||||
D_80125D28 = 0x800F4658; // size:0x60
|
||||
gPlayerLeftHandBgsDLs = 0x800F4718; // size:0x20
|
||||
gPlayerLeftHandOpenDLs = 0x800F4738; // size:0x10
|
||||
gPlayerLeftHandClosedDLs = 0x800F4748; // size:0x10
|
||||
sPlayerRightHandClosedDLs = 0x800F4788; // size:0x10
|
||||
gPlayerLeftHandBoomerangDLs = 0x800F4828; // size:0x10
|
||||
sFirstPersonLeftForearmDLs = 0x800F4848; // size:0x8
|
||||
sFirstPersonLeftHandDLs = 0x800F4850; // size:0x8
|
||||
sFirstPersonRightShoulderDLs = 0x800F4858; // size:0x8
|
||||
sFirstPersonForearmDLs = 0x800F4860; // size:0x8
|
||||
sFirstPersonRightHandHoldingWeaponDLs = 0x800F4868; // size:0x8
|
||||
sPlayerDListGroups = 0x800F4870; // size:0x54
|
||||
gCullBackDList = 0x800F48C8; // size:0x10
|
||||
gCullFrontDList = 0x800F48D8; // size:0x10
|
||||
sEyeMouthIndices = 0x800F48E8; // size:0x20
|
||||
sEyeTextures = 0x800F4908; // size:0x40
|
||||
sMouthTextures = 0x800F4928; // size:0x20
|
||||
sTunicColors = 0x800F4938; // size:0x9
|
||||
sGauntletColors = 0x800F4944; // size:0x6
|
||||
sBootDListGroups = 0x800F494C; // size:0x10
|
||||
sZeroVec = 0x800F495C; // size:0xC
|
||||
D_80126038 = 0x800F4968; // size:0x18
|
||||
D_80126050 = 0x800F4980; // size:0x8
|
||||
D_80126058 = 0x800F4988; // size:0x8
|
||||
D_80126060 = 0x800F4990; // size:0x8
|
||||
D_80126068 = 0x800F4998; // size:0x8
|
||||
D_80126070 = 0x800F49A0; // size:0xC
|
||||
D_80126080 = 0x800F49B0; // size:0xC
|
||||
D_8012608C = 0x800F49BC; // size:0xC
|
||||
D_80126098 = 0x800F49C8; // size:0xC
|
||||
D_801260A4 = 0x800F49D4; // size:0x24
|
||||
sPlayerFocusHeadLimbModelPos = 0x800F4A04; // size:0xC
|
||||
sMeleeWeaponLengths = 0x800F4A10; // size:0x18
|
||||
sBottleDLists = 0x800F4A28; // size:0x8
|
||||
sBottleColors = 0x800F4A30; // size:0x27
|
||||
D_80126128 = 0x800F4A58; // size:0xC
|
||||
sBowSlingshotStringData = 0x800F4A64; // size:0x20
|
||||
sRightHandLimbModelShieldQuadVertices = 0x800F4A84; // size:0x30
|
||||
D_80126184 = 0x800F4AB4; // size:0xC
|
||||
D_80126190 = 0x800F4AC0; // size:0xC
|
||||
sSheathLimbModelShieldQuadVertices = 0x800F4ACC; // size:0x30
|
||||
sSheathLimbModelShieldOnBackPos = 0x800F4AFC; // size:0xC
|
||||
sSheathLimbModelShieldOnBackZyxRot = 0x800F4B08; // size:0x6
|
||||
sLeftRightFootLimbModelFootPos = 0x800F4B10; // size:0x18
|
||||
sPauseModelGroupBySword = 0x800F4B28; // size:0x3
|
||||
sQuakeUnused = 0x800F4B80; // size:0x2
|
||||
sQuakeRequestCount = 0x800F4B84; // size:0x2
|
||||
sQuakeCallbacks = 0x800F4B88; // size:0x1C
|
||||
sSetupDL = 0x800F4BB0; // size:0xD50
|
||||
sFillSetupDL = 0x800F5900; // size:0x60
|
||||
D_801270A0 = 0x800F59D0; // size:0xC
|
||||
sRoomDrawHandlers = 0x800F5A40; // size:0xC
|
||||
gBitFlags = 0x800F5A50; // size:0x80
|
||||
gEquipMasks = 0x800F5AD0; // size:0x8
|
||||
gEquipNegMasks = 0x800F5AD8; // size:0x8
|
||||
gUpgradeMasks = 0x800F5AE0; // size:0x20
|
||||
gUpgradeNegMasks = 0x800F5B00; // size:0x20
|
||||
gEquipShifts = 0x800F5B20; // size:0x4
|
||||
gUpgradeShifts = 0x800F5B24; // size:0x8
|
||||
gUpgradeCapacities = 0x800F5B2C; // size:0x40 type:u16
|
||||
gGsFlagsMasks = 0x800F5B6C; // size:0x10
|
||||
gGsFlagsShifts = 0x800F5B7C; // size:0x10
|
||||
gItemIcons = 0x800F5B8C; // size:0x208
|
||||
gItemSlots = 0x800F5D94; // size:0x38
|
||||
sNaviQuestHintFiles = 0x800F5E38; // size:0x10
|
||||
gLinkObjectIds = 0x800F5E50; // size:0x4
|
||||
gObjectTableSize = 0x800F5E54; // size:0x4
|
||||
gObjectTable = 0x800F5E58; // size:0xC90
|
||||
gEntranceTable = 0x800F6AF0; // size:0x1850
|
||||
gSceneTable = 0x800F8340; //
|
||||
sDefaultDisplayList = 0x800F8B28; // size:0x50
|
||||
D_8012A2F8 = 0x800F8B78; // size:0x8
|
||||
gDCEntranceTextures = 0x800F8B80; // size:0x8
|
||||
sDCLavaFloorTextures = 0x800F8B88; // size:0x20
|
||||
sThievesHideoutEntranceTextures = 0x800F8BA8; // size:0x8
|
||||
D_8012A330 = 0x800F8BB0; // size:0x8
|
||||
sIceCavernEntranceTextures = 0x800F8BB8; // size:0x8
|
||||
sGTGEntranceTextures = 0x800F8BC0; // size:0x8
|
||||
sLonLonHouseEntranceTextures = 0x800F8BC8; // size:0x8
|
||||
sGuardHouseView2Textures = 0x800F8BD0; // size:0x8
|
||||
sGuardHouseView1Textures = 0x800F8BD8; // size:0x8
|
||||
sForestTempleEntranceTextures = 0x800F8BE0; // size:0x8
|
||||
sSpiritTempleEntranceTextures = 0x800F8BE8; // size:0x8
|
||||
sKakarikoWindowTextures = 0x800F8BF0; // size:0x8
|
||||
sZorasDomainEntranceTextures = 0x800F8BF8; // size:0x8
|
||||
D_8012A380 = 0x800F8C00; // size:0x8
|
||||
sGoronCityEntranceTextures = 0x800F8C08; // size:0x8
|
||||
sLonLonRanchWindowTextures = 0x800F8C10; // size:0x8
|
||||
D_8012A398 = 0x800F8C18; // size:0x4
|
||||
sSceneDrawConfigs = 0x800F8C24; // size:0xD4
|
||||
sMtxFClear = 0x800F8D20; // size:0x40
|
||||
gSramSlotOffsets = 0x800F8D60; // size:0xC type:u16
|
||||
sSsSramContext = 0x800F8F10; // size:0xA4
|
||||
sLogOnNextViewInit = 0x800F8FF0; // size:0x4
|
||||
sCoverageOnlyDL = 0x800F9000; // size:0x28
|
||||
sCoverageRGBFogDL = 0x800F9028; // size:0x18
|
||||
sCoverageRGBDL = 0x800F9040; // size:0x18
|
||||
sCoverageRGBUniformDL = 0x800F9058; // size:0x30
|
||||
sSkybox256TexOffsets = 0x800F9090; // size:0x10
|
||||
sSkybox256VtxBufIndices = 0x800F90A0; // size:0x80
|
||||
sSkybox256TexSCoords = 0x800F9120; // size:0xA
|
||||
sSkybox256TexTCoords = 0x800F912C; // size:0x12
|
||||
sSkybox256VtxIndices = 0x800F9140; // size:0x80
|
||||
sSkybox128TexOffsets = 0x800F91C0; // size:0x18
|
||||
sSkybox128VtxBufIndices = 0x800F91D8; // size:0x40
|
||||
sSkybox128TexSCoords = 0x800F9218; // size:0xA
|
||||
sSkybox128TexTCoordsXZ = 0x800F9224; // size:0xA
|
||||
sSkybox128TexTCoords = 0x800F9230; // size:0xA
|
||||
sSkybox128VtxIndices = 0x800F923C; // size:0x80
|
||||
sSkybox256FaceParams = 0x800F92BC; // size:0x50
|
||||
sSkybox128FaceParams = 0x800F930C; // size:0x78
|
||||
sTransTileSetupDL = 0x800F9400; // size:0x30
|
||||
sTransTriforceDL = 0x800F9430; // size:0x30
|
||||
sTransWipeDL = 0x800F9E90; // size:0x190
|
||||
sTransCircleNormalTex = 0x800F9FA8; // size:0x400
|
||||
sTransCircleWaveTex = 0x800FA3A8; // size:0x400
|
||||
sTransCircleRippleTex = 0x800FA7A8; // size:0x400
|
||||
sTransCircleStarburstTex = 0x800FABA8; // size:0x400
|
||||
sTransCircleDL = 0x800FB1C8; // size:0xD0
|
||||
sLetterboxState = 0x800FB2D0; // size:0x4
|
||||
sLetterboxSizeTarget = 0x800FB2D4; // size:0x4
|
||||
sLetterboxSize = 0x800FB2D8; // size:0x4
|
||||
gKaleidoMgrOverlayTable = 0x800FB2E0; // size:0x38 type:KaleidoMgrOverlay
|
||||
sKaleidoAreaPtr = 0x800FB318; // size:0x4 type:void*
|
||||
gKaleidoMgrCurOvl = 0x800FB31C; // size:0x4 type:KaleidoMgrOverlay*
|
||||
gBossMarkState = 0x800FB320; // size:0x1 type:u8
|
||||
D_8012D1F8 = 0x800FB330; // size:0x4
|
||||
sSfxBankIds = 0x800FB340; // size:0x7
|
||||
gScreenWidth = 0x800FB360; // size:0x4 type:s32
|
||||
gScreenHeight = 0x800FB364; // size:0x4 type:s32
|
||||
gSystemHeapSize = 0x800FB368; // size:0x4 type:u32
|
||||
gPadMgrLogSeverity = 0x800FB370; // size:0x4
|
||||
sSpeedMeterTimeEntryArray = 0x800FB380; // size:0x30
|
||||
sFactorialTbl = 0x800FB3B0; // size:0x34
|
||||
gMtxClear = 0x800FBC00; // size:0x40
|
||||
gMtxFClear = 0x800FBC40; // size:0x40
|
||||
sDefaultGSPUCodeText = 0x800FBC80; // size:0x4
|
||||
sDefaultGSPUCodeData = 0x800FBC84; // size:0x4
|
||||
gIrqMgrResetStatus = 0x800FBCA0; // size:0x4
|
||||
sIrqMgrResetTime = 0x800FBCA8; // size:0x8
|
||||
gIrqMgrRetraceTime = 0x800FBCB0; // size:0x8
|
||||
sIrqMgrRetraceCount = 0x800FBCB8; // size:0x4
|
||||
sExceptionNames = 0x800FBCC0; // size:0x48
|
||||
sFpExceptionNames = 0x800FBD08; // size:0x18
|
||||
sFaultDrawerDefault = 0x800FBD20; // size:0x3C
|
||||
gWaveSamples = 0x800FCD60; // size:0x24
|
||||
gBendPitchOneOctaveFrequencies = 0x800FCD84; // size:0x400
|
||||
gBendPitchTwoSemitonesFrequencies = 0x800FD184; // size:0x400
|
||||
gPitchFrequencies = 0x800FD584; // size:0x200
|
||||
gDefaultShortNoteVelocityTable = 0x800FD784; // size:0x10
|
||||
gDefaultShortNoteGateTimeTable = 0x800FD794; // size:0x10
|
||||
gDefaultEnvelope = 0x800FD7A4; // size:0x10
|
||||
gZeroNoteSub = 0x800FD7B4; // size:0x20
|
||||
gDefaultNoteSub = 0x800FD7D4; // size:0x20
|
||||
gHaasEffectDelaySizes = 0x800FD7F4; // size:0x80
|
||||
D_8012FBA8 = 0x800FD878; // size:0x80
|
||||
gHeadsetPanVolume = 0x800FD8F8; // size:0x200
|
||||
gStereoPanVolume = 0x800FDAF8; // size:0x200
|
||||
gDefaultPanVolume = 0x800FDCF8; // size:0x200
|
||||
gLowPassFilterData = 0x800FDEF8; // size:0x100
|
||||
gHighPassFilterData = 0x800FDFF8; // size:0xF0
|
||||
sEnvMixerOp = 0x800FE170; // size:0x4
|
||||
sEnvMixerLeftHaasDmemDests = 0x800FE174; // size:0x4
|
||||
sEnvMixerRightHaasDmemDests = 0x800FE178; // size:0x4
|
||||
sEnvMixerDefaultDmemDests = 0x800FE17C; // size:0x4
|
||||
sNumSamplesPerWavePeriod = 0x800FE190; // size:0x4
|
||||
sDmaHandler = 0x800FE1A0; // size:0x4
|
||||
sUnusedHandler = 0x800FE1A4; // size:0x4
|
||||
gAudioContextInitialized = 0x800FE1A8; // size:0x4
|
||||
sSeqInstructionArgsTable = 0x800FE1F0; // size:0x50
|
||||
gIsLargeSfxBank = 0x800FE240; // size:0x7
|
||||
gChannelsPerBank = 0x800FE248; // size:0x1C
|
||||
gUsedChannelsPerBank = 0x800FE264; // size:0x1C
|
||||
D_801305B0 = 0x800FE280; // size:0x4
|
||||
D_801305B4 = 0x800FE284; // size:0x1
|
||||
D_801305B8 = 0x800FE288; // size:0x1
|
||||
D_801305BC = 0x800FE28C; // size:0x1
|
||||
D_801305C0 = 0x800FE290; // size:0x1
|
||||
sBehindScreenZ = 0x800FE294; // size:0x8
|
||||
sAudioIncreasingTranspose = 0x800FE29C; // size:0x1
|
||||
gMorphaTransposeTable = 0x800FE2A0; // size:0x10
|
||||
sPrevChargeLevel = 0x800FE2B0; // size:0x1
|
||||
D_801305E4 = 0x800FE2B4; // size:0x10
|
||||
D_801305F4 = 0x800FE2C4; // size:0x4
|
||||
sGanonsTowerLevelsVol = 0x800FE2C8; // size:0x8
|
||||
sEnterGanonsTowerTimer = 0x800FE2D0; // size:0x1
|
||||
sSoundMode = 0x800FE2D4; // size:0x1
|
||||
D_80130608 = 0x800FE2D8; // size:0x1
|
||||
sAudioCutsceneFlag = 0x800FE2DC; // size:0x1
|
||||
sSpecReverb = 0x800FE2E0; // size:0x1
|
||||
sAudioEnvReverb = 0x800FE2E4; // size:0x1
|
||||
sAudioCodeReverb = 0x800FE2E8; // size:0x1
|
||||
sPrevSeqMode = 0x800FE2EC; // size:0x1
|
||||
sAudioEnemyDist = 0x800FE2F0; // size:0x4
|
||||
sAudioEnemyVol = 0x800FE2F4; // size:0x1
|
||||
sPrevMainBgmSeqId = 0x800FE2F8; // size:0x2
|
||||
sSeqResumePoint = 0x800FE2FC; // size:0x1
|
||||
sPrevSceneSeqId = 0x800FE300; // size:0x1
|
||||
sNumFramesStill = 0x800FE304; // size:0x4
|
||||
sNumFramesMoving = 0x800FE308; // size:0x4
|
||||
sAudioBaseFilter = 0x800FE30C; // size:0x1
|
||||
sAudioExtraFilter = 0x800FE310; // size:0x1
|
||||
sAudioBaseFilter2 = 0x800FE314; // size:0x1
|
||||
sAudioExtraFilter2 = 0x800FE318; // size:0x1
|
||||
sSariaBgmPtr = 0x800FE31C; // size:0x4
|
||||
D_80130650 = 0x800FE320; // size:0x4
|
||||
sSeqFlags = 0x800FE324; // size:0x6E
|
||||
sSpecReverbs = 0x800FE394; // size:0x14
|
||||
sNatureAmbienceDataIO = 0x800FE3A8; // size:0x820
|
||||
sOcarinaAllowedButtonMask = 0x800FEBC8; // size:0x4
|
||||
sOcarinaAButtonMap = 0x800FEBCC; // size:0x4
|
||||
sOcarinaCUpButtonMap = 0x800FEBD0; // size:0x4
|
||||
sOcarinaCDownButtonMap = 0x800FEBD4; // size:0x4
|
||||
sIsOcarinaInputEnabled = 0x800FEBD8; // size:0x1
|
||||
sOcarinaInstrumentId = 0x800FEBDC; // size:0x1
|
||||
sCurOcarinaPitch = 0x800FEBE0; // size:0x1
|
||||
sPrevOcarinaPitch = 0x800FEBE4; // size:0x1
|
||||
sCurOcarinaButtonIndex = 0x800FEBE8; // size:0x1
|
||||
sMusicStaffPrevPitch = 0x800FEBEC; // size:0x1
|
||||
sCurOcarinaBendFreq = 0x800FEBF0; // size:0x4
|
||||
sRelativeOcarinaVolume = 0x800FEBF4; // size:0x4
|
||||
sCurOcarinaBendIndex = 0x800FEBF8; // size:0x1
|
||||
sCurOcarinaVolume = 0x800FEBFC; // size:0x1
|
||||
sCurOcarinaVibrato = 0x800FEC00; // size:0x1
|
||||
sPlaybackState = 0x800FEC04; // size:0x1
|
||||
sOcarinaFlags = 0x800FEC08; // size:0x4
|
||||
sPlaybackNoteTimer = 0x800FEC0C; // size:0x4
|
||||
sPlaybackNotePos = 0x800FEC10; // size:0x2
|
||||
sPlaybackStaffPos = 0x800FEC14; // size:0x2
|
||||
sPrevOcarinaWithMusicStaffFlags = 0x800FEC18; // size:0x2
|
||||
sPlaybackPitch = 0x800FEC1C; // size:0x1
|
||||
sNotePlaybackVolume = 0x800FEC20; // size:0x1
|
||||
sNotePlaybackVibrato = 0x800FEC24; // size:0x1
|
||||
sNotePlaybackBend = 0x800FEC28; // size:0x1
|
||||
sRelativeNotePlaybackBend = 0x800FEC2C; // size:0x4
|
||||
sRelativeNotePlaybackVolume = 0x800FEC30; // size:0x4
|
||||
sOcarinaPlaybackTaskStart = 0x800FEC34; // size:0x4
|
||||
sButtonToPitchMap = 0x800FEC38; // size:0x5
|
||||
sOcaMemoryGameAppendPos = 0x800FEC40; // size:0x1
|
||||
sOcaMemoryGameEndPos = 0x800FEC44; // size:0x1
|
||||
sOcaMemoryGameNumNotes = 0x800FEC48; // size:0x3
|
||||
sOcarinaSongNotes = 0x800FEC4C; // size:0x8C0
|
||||
sPlaybackSong = 0x800FF50C; // size:0x4
|
||||
sFrogsSongNotes = 0x800FF510; // size:0xE
|
||||
gFrogsSongPtr = 0x800FF520; // size:0x4
|
||||
sRecordingState = 0x800FF524; // size:0x1
|
||||
sRecordSongPos = 0x800FF528; // size:0x1
|
||||
sOcarinaRecordTaskStart = 0x800FF52C; // size:0x4
|
||||
sRecordOcarinaPitch = 0x800FF530; // size:0x1
|
||||
sRecordOcarinaVolume = 0x800FF534; // size:0x1
|
||||
sRecordOcarinaVibrato = 0x800FF538; // size:0x1
|
||||
sRecordOcarinaBendIndex = 0x800FF53C; // size:0x1
|
||||
sRecordOcarinaButtonIndex = 0x800FF540; // size:0x1
|
||||
sPlayedOcarinaSongIndexPlusOne = 0x800FF544; // size:0x1
|
||||
sMusicStaffNumNotesPerTest = 0x800FF548; // size:0x1
|
||||
sOcarinaDropInputTimer = 0x800FF54C; // size:0x1
|
||||
sScarecrowsLongSongNotes = 0x800FF550; // size:0x360
|
||||
gScarecrowLongSongPtr = 0x800FF8B0; // size:0x4
|
||||
gScarecrowSpawnSongPtr = 0x800FF8B4; // size:0x4
|
||||
sMemoryGameSongPtr = 0x800FF8B8; // size:0x4
|
||||
sPitchToButtonMap = 0x800FF8BC; // size:0x10
|
||||
gOcarinaSongButtons = 0x800FF8CC; // size:0x7E
|
||||
gSfxParams = 0x80100D0C; // size:0x1C
|
||||
gSfxRequestWriteIndex = 0x80100D30; // size:0x1
|
||||
gSfxRequestReadIndex = 0x80100D34; // size:0x1
|
||||
gSfxBanks = 0x80100D38; // size:0x1C
|
||||
gSfxBankSizes = 0x80100D54; // size:0x7
|
||||
gSfxChannelLayout = 0x80100D5C; // size:0x1
|
||||
D_801333D0 = 0x80100D60; // size:0x2
|
||||
gSfxDefaultPos = 0x80100D64; // size:0xC
|
||||
gSfxDefaultFreqAndVolScale = 0x80100D70; // size:0x4
|
||||
gSfxDefaultReverb = 0x80100D78; // size:0x1
|
||||
gSeqCmdWritePos = 0x80100D80; // size:0x1
|
||||
gSeqCmdReadPos = 0x80100D84; // size:0x1
|
||||
gStartSeqDisabled = 0x80100D88; // size:0x1
|
||||
gSoundModeList = 0x80100D8C; // size:0x4
|
||||
gAudioSpecId = 0x80100D90; // size:0x1
|
||||
D_80133418 = 0x80100D94; // size:0x1
|
||||
gAudioSpecs = 0x80101148; // size:0x3F0
|
||||
sGfxPrintFontTLUT = 0x80101550; // size:0x80
|
||||
sGfxPrintRainbowTLUT = 0x801015D0; // size:0x20
|
||||
sGfxPrintRainbowData = 0x801015F0; // size:0x8
|
||||
sGfxPrintFontData = 0x801015F8; // size:0x800
|
||||
sInitFuncs = 0x80101E00; // size:0x4
|
||||
qNaN0x10000 = 0x80101E24; // size:0x4
|
||||
__osSiAccessQueueEnabled = 0x80102650; // size:0x4
|
||||
__osContInitialized = 0x80102660; // size:0x4
|
||||
spaces = 0x80102670; // size:0x21
|
||||
zeroes = 0x80102694; // size:0x21
|
||||
__osPfsInodeCacheChannel = 0x80102730; // size:0x4
|
||||
__osPfsInodeCacheBank = 0x80102734; // size:0x1
|
||||
__osPfsLastChannel = 0x80102740; // size:0x4
|
||||
D_8014A6C0 = 0x80107240; // size:0x4
|
||||
gAudioHeapInitSizes = 0x80107244; // size:0xC
|
||||
__libm_qnan_f = 0x80107740; // size:0x4
|
||||
sTextFade = 0x801077C0; // size:0x2
|
||||
D_8014B2F4 = 0x801077C4; // size:0x1
|
||||
sOcarinaButtonIndexBufPos = 0x801077C8; // size:0x2
|
||||
sOcarinaButtonIndexBufLen = 0x801077CC; // size:0x2
|
||||
sTextboxSkipped = 0x801077D0; // size:0x1
|
||||
sNextTextId = 0x801077D4; // size:0x2
|
||||
sTextIsCredits = 0x801077D8; // size:0x2
|
||||
sLastPlayedSong = 0x801077E0; // size:0x2
|
||||
sHasSunsSong = 0x801077E4; // size:0x2
|
||||
sMessageHasSetSfx = 0x801077E8; // size:0x2
|
||||
sOcarinaSongBitFlags = 0x801077EC; // size:0x2
|
||||
sNesMessageEntryTable = 0x801077F0; // size:0x4228
|
||||
sGerMessageEntryTable = 0x8010BA18; // size:0x2110
|
||||
sFraMessageEntryTable = 0x8010DB28; // size:0x2110
|
||||
sStaffMessageEntryTable = 0x8010FC38; // size:0x188
|
||||
sNesMessageEntryTablePtr = 0x8010FDC0; // size:0x4
|
||||
sGerMessageEntryTablePtr = 0x8010FDC4; // size:0x4
|
||||
sFraMessageEntryTablePtr = 0x8010FDC8; // size:0x4
|
||||
sStaffMessageEntryTablePtr = 0x8010FDCC; // size:0x4
|
||||
sTextboxBackgroundForePrimColors = 0x8010FDD0; // size:0x30
|
||||
sTextboxBackgroundBackPrimColors = 0x8010FE00; // size:0x18
|
||||
sTextboxBackgroundYOffsets = 0x8010FE18; // size:0x4
|
||||
sOcarinaButtonIndexBuf = 0x8010FE1C; // size:0xC
|
||||
sOcarinaButtonAlphaValues = 0x8010FE28; // size:0x12
|
||||
gOcarinaSongItemMap = 0x8010FE3C; // size:0x18
|
||||
sFontWidths = 0x8010FED0; // size:0x240
|
||||
gGameOverTimer = 0x80110240; // size:0x2 type:s16
|
||||
gSoundFontTable = 0x80110470; //
|
||||
gSequenceFontTable = 0x801106E0; //
|
||||
gSequenceTable = 0x801108A0; //
|
||||
gSampleBankTable = 0x80110F90; //
|
||||
aspMainDataStart = 0x80111010; //
|
||||
sEffectContext = 0x80113140; // size:0x3DF0
|
||||
D_8015BC00 = 0x80116F40; // size:0xE
|
||||
D_8015BC10 = 0x80116F50; // size:0x4
|
||||
D_8015BC14 = 0x80116F58; // size:0x4
|
||||
D_8015BC18 = 0x80116F60; // size:0x4
|
||||
D_8015BBE8 = 0x80116F64; // size:0x4
|
||||
D_8015BBEC = 0x80116F68; // size:0x4
|
||||
D_8015BBF0 = 0x80116F6C; // size:0x4
|
||||
sbgmEnemyDistSq = 0x80116F70; // size:0x4
|
||||
D_8015BBF8 = 0x80116F74; // size:0x4
|
||||
D_8015BBFC = 0x80116F78; // size:0x2
|
||||
D_8015BD7C = 0x80117198; // size:0x4
|
||||
playerFloorPoly = 0x8011719C; // size:0x4
|
||||
D_8015FA88 = 0x80118930; // size:0x4
|
||||
D_8015FA8C = 0x80118934; // size:0x4
|
||||
gSaveContext = 0x80118938; // size:0x1428 type:SaveContext
|
||||
gRegEditor = 0x80119D60; // size:0x4 type:RegEditor*
|
||||
sDebugCamTextBuffer = 0x80119D68; // size:0x210
|
||||
gCamAtSplinePointsAppliedFrame = 0x80119FAE; // size:0x2
|
||||
gCamEyePointAppliedFrame = 0x80119FB0; // size:0x2
|
||||
gCamAtPointAppliedFrame = 0x80119FB2; // size:0x2
|
||||
sReturnToCamId = 0x80119FB4; // size:0x2
|
||||
sQuakeIndex = 0x80119FB6; // size:0x2
|
||||
sLightningBolts = 0x80119FC8; // size:0x60
|
||||
gLightningStrike = 0x8011A028; // size:0xC
|
||||
sLightningFlashAlpha = 0x8011A034; // size:0x2
|
||||
sSunDepthTestX = 0x8011A036; // size:0x2
|
||||
sSunDepthTestY = 0x8011A038; // size:0x2
|
||||
gCustomLensFlareOn = 0x8011A03A; // size:0x1
|
||||
gCustomLensFlarePos = 0x8011A040; // size:0xC
|
||||
gLensFlareScale = 0x8011A04C; // size:0x2
|
||||
gLensFlareColorIntensity = 0x8011A050; // size:0x4
|
||||
gLensFlareGlareStrength = 0x8011A054; // size:0x2
|
||||
sNGameOverLightNode = 0x8011A058; // size:0x4
|
||||
sNGameOverLightInfo = 0x8011A060; // size:0xE
|
||||
sSGameOverLightNode = 0x8011A070; // size:0x4
|
||||
sSGameOverLightInfo = 0x8011A078; // size:0xE
|
||||
sGameOverLightsIntensity = 0x8011A086; // size:0x1
|
||||
sSandstormScroll = 0x8011A088; // size:0x2
|
||||
sBeatingHeartsDDPrim = 0x8011A090; // size:0x6
|
||||
sBeatingHeartsDDEnv = 0x8011A098; // size:0x6
|
||||
sHeartsDDPrim = 0x8011A0A0; // size:0xC
|
||||
sHeartsDDEnv = 0x8011A0B0; // size:0xC
|
||||
sLightsBuffer = 0x8011A0C0; // size:0x188
|
||||
sZeldaArena = 0x8011A250; // size:0x24 type:Arena
|
||||
gMapData = 0x8011A290; // size:0x4
|
||||
sCurBodyPartPos = 0x8011A2C0; // size:0x4
|
||||
sDListsLodOffset = 0x8011A2C4; // size:0x4
|
||||
sGetItemRefPos = 0x8011A2C8; // size:0xC
|
||||
sLeftHandType = 0x8011A2D4; // size:0x4
|
||||
sRightHandType = 0x8011A2D8; // size:0x4
|
||||
sQuakeRequests = 0x8011A2E0; // size:0x90
|
||||
gSkinLimbMatrices = 0x8011A380; // size:0xF00
|
||||
sRumbleMgr = 0x8011B290; // size:0x10E
|
||||
sSkyboxDrawMatrix = 0x8011B3A0; // size:0x4
|
||||
sPlayerCallInitFunc = 0x8011B3B0; // size:0x4
|
||||
sPlayerCallDestroyFunc = 0x8011B3B4; // size:0x4
|
||||
sPlayerCallUpdateFunc = 0x8011B3B8; // size:0x4
|
||||
sPlayerCallDrawFunc = 0x8011B3BC; // size:0x4
|
||||
sKaleidoScopeUpdateFunc = 0x8011B3C0; // size:0x4
|
||||
sKaleidoScopeDrawFunc = 0x8011B3C4; // size:0x4
|
||||
gBossMarkScale = 0x8011B3C8; // size:0x4
|
||||
gLoadedPauseMarkDataTable = 0x8011B3D0; // size:0x4
|
||||
sTransitionTile = 0x8011B3E0; // size:0xE0
|
||||
gTransitionTileState = 0x8011B4C0; // size:0x4
|
||||
sPlayVisMono = 0x8011B4C8; // size:0x18
|
||||
gVisMonoColor = 0x8011B4E0; // size:0x4
|
||||
D_801664D0 = 0x8011B4F0; // size:0x20
|
||||
sVisCvg = 0x8011B510; // size:0x10
|
||||
sVisZBuf = 0x8011B520; // size:0x10
|
||||
sVisMono = 0x8011B530; // size:0x18
|
||||
sViMode = 0x8011B548; // size:0x88
|
||||
sGraphPrevUpdateEndTime = 0x8011B5D0; // size:0x8
|
||||
sGraphPrevTaskTimeStart = 0x8011B5D8; // size:0x8
|
||||
gSegments = 0x8011B648; // size:0x40 type:uintptr_t[16]
|
||||
gScheduler = 0x8011B688; // size:0x258
|
||||
gPadMgr = 0x8011B8E0; // size:0x468
|
||||
gIrqMgr = 0x8011BD48; // size:0x280
|
||||
sGraphThread = 0x8011BFC8; // size:0x1B0
|
||||
sGraphStack = 0x8011C178; // size:0x1800
|
||||
sSchedStack = 0x8011D978; // size:0x600
|
||||
sAudioStack = 0x8011DF78; // size:0x800
|
||||
sPadMgrStack = 0x8011E778; // size:0x500
|
||||
sIrqMgrStack = 0x8011EC78; // size:0x500
|
||||
sGraphStackInfo = 0x8011F178; // size:0x1C
|
||||
sSchedStackInfo = 0x8011F198; // size:0x1C
|
||||
sAudioStackInfo = 0x8011F1B8; // size:0x1C
|
||||
sPadMgrStackInfo = 0x8011F1D8; // size:0x1C
|
||||
sIrqMgrStackInfo = 0x8011F1F8; // size:0x1C
|
||||
gAudioMgr = 0x8011F218; // size:0x298
|
||||
sSerialEventQueue = 0x8011F4B0; // size:0x18
|
||||
sSerialMsgBuf = 0x8011F4C8; // size:0x4
|
||||
sRSPGfxTimeStart = 0x8011F4E0; // size:0x8
|
||||
sRSPAudioTimeStart = 0x8011F4E8; // size:0x8
|
||||
sRSPOtherTimeStart = 0x8011F4F0; // size:0x8
|
||||
sRDPTimeStart = 0x8011F4F8; // size:0x8
|
||||
gAudioThreadUpdateTimeTotalPerGfxTask = 0x8011F500; // size:0x8
|
||||
gGfxTaskSentToNextReadyMinusAudioThreadUpdateTime = 0x8011F508; // size:0x8
|
||||
gRSPAudioTimeTotal = 0x8011F510; // size:0x8
|
||||
gRSPGfxTimeTotal = 0x8011F518; // size:0x8
|
||||
gRDPTimeTotal = 0x8011F520; // size:0x8
|
||||
gGraphUpdatePeriod = 0x8011F528; // size:0x8
|
||||
gAudioThreadUpdateTimeStart = 0x8011F530; // size:0x8
|
||||
gAudioThreadUpdateTimeAcc = 0x8011F538; // size:0x8
|
||||
gRSPAudioTimeAcc = 0x8011F540; // size:0x8
|
||||
gRSPGfxTimeAcc = 0x8011F548; // size:0x8
|
||||
gRSPOtherTimeAcc = 0x8011F550; // size:0x8
|
||||
gRDPTimeAcc = 0x8011F560; // size:0x8
|
||||
sSpeedMeterTimeEntryPtr = 0x8011F568; // size:0x4
|
||||
sSysCfbFbPtr = 0x8011F570; // size:0x8
|
||||
sSysCfbEnd = 0x8011F578; // size:0x4
|
||||
sMatrixStack = 0x8011F7A0; // size:0x4 type:MtxF*
|
||||
sCurrentMatrix = 0x8011F7A4; // size:0x4 type:MtxF*
|
||||
sFaultInstance = 0x8011F7B0; // size:0x4
|
||||
sFaultAwaitingInput = 0x8011F7B4; // size:0x1
|
||||
sFaultStack = 0x8011F7B8; // size:0x600
|
||||
sFaultThreadInfo = 0x8011FDB8; // size:0x1C
|
||||
gFaultMgr = 0x8011FDD8; // size:0x850
|
||||
sFaultDrawer = 0x80120630; // size:0x3C type:FaultDrawer
|
||||
sScriptLoadQueue = 0x80120690; // size:0x18
|
||||
sScriptLoadMsgBuf = 0x801206A8; // size:0x40
|
||||
sScriptLoadDonePointers = 0x801206E8; // size:0x40
|
||||
D_8016B780 = 0x80120730; // size:0x4
|
||||
D_8016B7A8 = 0x80120750; // size:0x4
|
||||
D_8016B7AC = 0x80120754; // size:0x4
|
||||
D_8016B7B0 = 0x80120758; // size:0x4
|
||||
sRiverFreqScaleLerp = 0x80120760; // size:0x10
|
||||
sWaterfallFreqScaleLerp = 0x80120770; // size:0x10
|
||||
D_8016B7D8 = 0x80120780; // size:0x4
|
||||
D_8016B7DC = 0x80120784; // size:0x1
|
||||
D_8016B7E0 = 0x80120788; // size:0x4
|
||||
sRiverSoundMainBgmVol = 0x8012078C; // size:0x1
|
||||
sRiverSoundMainBgmCurrentVol = 0x8012078D; // size:0x1
|
||||
sRiverSoundMainBgmLower = 0x8012078E; // size:0x1
|
||||
sRiverSoundMainBgmRestore = 0x8012078F; // size:0x1
|
||||
sGanonsTowerVol = 0x80120790; // size:0x1
|
||||
sSfxChannelState = 0x80120798; // size:0x100
|
||||
sMalonSingingTimer = 0x80120898; // size:0x1
|
||||
sMalonSingingDisabled = 0x80120899; // size:0x1
|
||||
D_8016B9F3 = 0x8012089A; // size:0x1
|
||||
sFanfareStartTimer = 0x8012089B; // size:0x1
|
||||
sFanfareSeqId = 0x8012089C; // size:0x2
|
||||
sPlayingStaff = 0x8012089E; // size:0x3
|
||||
sPlaybackStaff = 0x801208A2; // size:0x3
|
||||
sRecordingStaff = 0x801208A6; // size:0x3
|
||||
sOcarinaUpdateTaskStart = 0x801208AC; // size:0x4
|
||||
sOcarinaInputStickAdj = 0x801208B0; // size:0x2
|
||||
sOcarinaInputButtonCur = 0x801208B4; // size:0x4
|
||||
sOcarinaInputButtonStart = 0x801208B8; // size:0x4
|
||||
sOcarinaInputButtonPrev = 0x801208BC; // size:0x4
|
||||
sOcarinaInputButtonPress = 0x801208C0; // size:0x4
|
||||
sCurOcarinaSongWithoutMusicStaff = 0x801208C8; // size:0x8
|
||||
sOcarinaWithoutMusicStaffPos = 0x801208D0; // size:0x1
|
||||
sOcarinaHasStartedSong = 0x801208D1; // size:0x1
|
||||
sFirstOcarinaSongIndex = 0x801208D2; // size:0x1
|
||||
sLastOcarinaSongIndex = 0x801208D3; // size:0x1
|
||||
sAvailOcarinaSongFlags = 0x801208D4; // size:0x2
|
||||
sStaffOcarinaPlayingPos = 0x801208D6; // size:0x1
|
||||
sMusicStaffPos = 0x801208D8; // size:0x1C
|
||||
sMusicStaffCurHeldLength = 0x801208F8; // size:0x1C
|
||||
sMusicStaffExpectedLength = 0x80120918; // size:0x1C
|
||||
sMusicStaffExpectedPitch = 0x80120938; // size:0xE
|
||||
sScarecrowsLongSongSecondNote = 0x80120948; // size:0x8
|
||||
sSfxRequests = 0x80121820; // size:0x1800
|
||||
sSfxBankListEnd = 0x80123020; // size:0x7
|
||||
sSfxBankFreeListStart = 0x80123028; // size:0x7
|
||||
sSfxBankUnused = 0x80123030; // size:0x7
|
||||
gActiveSfx = 0x80123038; // size:0xA8
|
||||
sCurSfxPlayerChannelIdx = 0x801230E0; // size:0x1
|
||||
gSfxBankMuted = 0x801230E4; // size:0x7
|
||||
sUnusedBankLerp = 0x801230F0; // size:0x70
|
||||
sSeqRequests = 0x80123160; // size:0x28
|
||||
sNumSeqRequests = 0x80123188; // size:0x4
|
||||
sAudioSeqCmds = 0x80123190; // size:0x400
|
||||
gActiveSeqs = 0x80123590; // size:0x990
|
||||
gAudioCtx = 0x80123FC0; // size:0x6450
|
||||
D_801755D0 = 0x8012A410; // size:0x4
|
||||
gUseAtanContFrac = 0x8012A440; // size:0x4
|
||||
gSystemArena = 0x8012A450; // size:0x24 type:Arena
|
||||
sArenaLockMsg = 0x8012A490; // size:0x4 type:OSMesg
|
||||
sJpegBitStreamPtr = 0x8012A4A0; // size:0x4
|
||||
sJpegBitStreamByteIdx = 0x8012A4A4; // size:0x4
|
||||
sJpegBitStreamBitIdx = 0x8012A4A8; // size:0x1
|
||||
sJpegBitStreamDontSkip = 0x8012A4A9; // size:0x1
|
||||
sJpegBitStreamCurWord = 0x8012A4AC; // size:0x4
|
||||
__MotorDataBuf = 0x8012A4F0; // size:0x100
|
||||
siAccessBuf = 0x8012A5F0; // size:0x4
|
||||
__osSiAccessQueue = 0x8012A5F8; // size:0x18
|
||||
__osContPifRam = 0x8012A610; // size:0x40
|
||||
__osContLastCmd = 0x8012A650; // size:0x1
|
||||
__osMaxControllers = 0x8012A651; // size:0x1
|
||||
__osEepromTimerMsgQueue = 0x8012A678; // size:0x18
|
||||
__osEepromTimerMsg = 0x8012A690; // size:0x4
|
||||
__osPfsInodeCache = 0x8012A6A0; // size:0x100
|
||||
__osPfsPifRam = 0x8012A7A0; // size:0x40
|
||||
sCharTexSize = 0x8012A7E0; // size:0x4
|
||||
sCharTexScale = 0x8012A7E4; // size:0x4
|
||||
sOcarinaButtonAPrimR = 0x8012A7E8; // size:0x2
|
||||
sOcarinaButtonAPrimB = 0x8012A7EA; // size:0x2
|
||||
sOcarinaButtonAPrimG = 0x8012A7EC; // size:0x2
|
||||
sOcarinaButtonAEnvR = 0x8012A7EE; // size:0x2
|
||||
sOcarinaButtonAEnvB = 0x8012A7F0; // size:0x2
|
||||
sOcarinaButtonAEnvG = 0x8012A7F2; // size:0x2
|
||||
sOcarinaButtonCPrimR = 0x8012A7F4; // size:0x2
|
||||
sOcarinaButtonCPrimB = 0x8012A7F6; // size:0x2
|
||||
sOcarinaButtonCPrimG = 0x8012A7F8; // size:0x2
|
||||
sOcarinaButtonCEnvR = 0x8012A7FA; // size:0x2
|
||||
sOcarinaButtonCEnvB = 0x8012A7FC; // size:0x2
|
||||
sOcarinaButtonCEnvG = 0x8012A7FE; // size:0x2
|
||||
gZBuffer = 0x8012A800; // size:0x25800 type:u16
|
||||
gGfxSPTaskOutputBuffer = 0x80150000; // size:0x18000
|
||||
gGfxSPTaskYieldBuffer = 0x80168000; // size:0xC00
|
||||
gGfxSPTaskStack = 0x80168C00; // size:0x400
|
||||
gGfxPools = 0x80169000; // size:0x24820
|
||||
gAudioHeap = 0x8018D820; // size:0x38000
|
||||
gSystemHeap = 0x801C5820; //
|
||||
D_80811BB0 = 0x80810D70; // size:0x180
|
||||
D_80811D30 = 0x80810EF0; // size:0x100
|
||||
D_80811E30 = 0x80810FF0; // size:0x100
|
||||
D_80811F30 = 0x808110F0; // size:0x200
|
||||
D_80812130 = 0x808112F0; // size:0x200
|
||||
gOptionsDividerTopVtx = 0x808114F0; // size:0x40
|
||||
gOptionsDividerMiddleVtx = 0x80811530; // size:0x40
|
||||
gOptionsDividerBottomVtx = 0x80811570; // size:0x40
|
||||
D_808123F0 = 0x808115B0; // size:0x82
|
||||
gAmmoItems = 0x80828020; // size:0x10
|
||||
D_8082AAEC = 0x808286EC; // size:0x40
|
||||
D_8082AB2C = 0x8082872C; // size:0x40
|
||||
gSlotAgeReqs = 0x808287FC; // size:0x18
|
||||
gEquipAgeReqs = 0x80828814; // size:0x10
|
||||
gItemAgeReqs = 0x80828824; // size:0x56
|
||||
gAreaGsFlags = 0x8082887C; // size:0x16
|
||||
gPauseMapMarkDataTable = 0x80828EC0; // size:0x4158
|
||||
sReturnEntranceGroupData = 0x80850FD8; // size:0x1C
|
||||
sReturnEntranceGroupIndices = 0x80850FF4; // size:0x6
|
||||
gMapMarkDataTable = 0x8085BEE8; // size:0x28
|
||||
D_808BB2F0 = 0x808B18A0; // size:0x4A8
|
||||
D_808BB7A0 = 0x808B1D50; // size:0x5E8
|
||||
D_808BBD90 = 0x808B2340; // size:0x628
|
||||
D_808BCE20 = 0x808B3350; // size:0x480
|
||||
D_808BD2A0 = 0x808B37D0; // size:0x280
|
||||
D_808BD520 = 0x808B3A50; // size:0x270
|
||||
D_808BD790 = 0x808B3CC0; // size:0x200
|
||||
gGanondorfShadowSetupDL = 0x808DA308; // size:0x20
|
||||
gGanondorfShadowModelDL = 0x808DA328; // size:0x30
|
||||
gGanondorfTriforceDL = 0x808DB398; // size:0x80
|
||||
gGanondorfWindowShardMaterialDL = 0x808DB888; // size:0xA8
|
||||
gGanondorfWindowShardModelDL = 0x808DB930; // size:0x18
|
||||
gGanondorfWindowShatterTemplateTex = 0x808DB948; // size:0x800
|
||||
gGanondorfLightBallMaterialDL = 0x808DD188; // size:0x70
|
||||
gGanondorfSquareDL = 0x808DD1F8; // size:0x18
|
||||
gGanondorfLightningDL = 0x808E6250; // size:0x80
|
||||
gGanondorfLightRayTriDL = 0x808E6378; // size:0x48
|
||||
gGanondorfLightFlecksDL = 0x808E7DD0; // size:0xF0
|
||||
gGanondorfBigMagicBGCircleDL = 0x808E7EC0; // size:0xA8
|
||||
gGanondorfDotDL = 0x808E7F68; // size:0xC8
|
||||
gGanondorfShockwaveDL = 0x808E89D0; // size:0xF8
|
||||
gGanondorfImpactDarkDL = 0x808E9868; // size:0x118
|
||||
gGanondorfImpactLightDL = 0x808E9980; // size:0x118
|
||||
gGanondorfShockGlowDL = 0x808EAAD8; // size:0xC8
|
||||
gGanondorfLightCoreDL = 0x808EBE38; // size:0x88
|
||||
gGanondorfShockDL = 0x808EBF00; // size:0x80
|
||||
gGanondorfVortexDL = 0x808ECCE0; // size:0x108
|
||||
sEffects = 0x808EE1B8; // size:0x3B60
|
||||
sTwinrovaEyeTextures = 0x8093DDA0; // size:0xC
|
||||
gAdultWarpInCS = 0x8097BAF0; // size:0x108
|
||||
gAdultWarpOutCS = 0x8097BC00; // size:0x180
|
||||
gAdultWarpInToTCS = 0x8097BD80; // size:0x108
|
||||
gAdultWarpOutToTCS = 0x8097BE90; // size:0x120
|
||||
gChildWarpInCS = 0x8097BFB0; // size:0x128
|
||||
gChildWarpOutCS = 0x8097C0E0; // size:0x180
|
||||
gChildWarpInToTCS = 0x8097C260; // size:0x128
|
||||
gChildWarpOutToTCS = 0x8097C390; // size:0x120
|
||||
D_80ABF9D0 = 0x80AA19A0; // size:0x170
|
||||
D_80ABFB40 = 0x80AA1B10; // size:0x798
|
||||
D_80B4C5D0 = 0x80B27720; // size:0xFF0
|
62
tools/disasm/list_generated_files.py
Executable file
62
tools/disasm/list_generated_files.py
Executable file
|
@ -0,0 +1,62 @@
|
|||
#!/usr/bin/env python3
|
||||
|
||||
# SPDX-FileCopyrightText: © 2024 ZeldaRET
|
||||
# SPDX-License-Identifier: CC0-1.0
|
||||
|
||||
import argparse
|
||||
import csv
|
||||
from pathlib import Path
|
||||
|
||||
from file_addresses import parse_file_addresses, get_z_name_for_overlay
|
||||
|
||||
|
||||
def main():
|
||||
parser = argparse.ArgumentParser(
|
||||
description="List generated files for the Makefile."
|
||||
)
|
||||
parser.add_argument(
|
||||
"-o", "--output-dir", help="Output directory", type=Path, required=True
|
||||
)
|
||||
parser.add_argument(
|
||||
"--config-dir", help="Config directory", type=Path, required=True
|
||||
)
|
||||
|
||||
args = parser.parse_args()
|
||||
|
||||
if not args.config_dir.exists(): # disassembly is not set up for this version
|
||||
return
|
||||
|
||||
file_addresses = parse_file_addresses(args.config_dir / "file_addresses.csv")
|
||||
|
||||
generated_files = set()
|
||||
for dma_file in file_addresses:
|
||||
file_splits_path = args.config_dir / f"files_{dma_file.name}.csv"
|
||||
if file_splits_path.exists():
|
||||
with open(file_splits_path) as f:
|
||||
reader = csv.reader(f)
|
||||
for row in reader:
|
||||
if (
|
||||
not row # blank line
|
||||
or row[2].startswith(".") # section name or .end
|
||||
or row[2].endswith(
|
||||
"_reloc.s"
|
||||
) # TODO: disassemble overlay reloc sections?
|
||||
):
|
||||
continue
|
||||
generated_files.add(row[2])
|
||||
elif dma_file.overlay_dir is not None:
|
||||
z_name = get_z_name_for_overlay(dma_file.name)
|
||||
generated_files.add(
|
||||
f"src/overlays/{dma_file.overlay_dir}/{dma_file.name}/{z_name}.s"
|
||||
)
|
||||
else:
|
||||
raise Exception(
|
||||
f"DMA file {dma_file.name} is not an overlay but has no file splits"
|
||||
)
|
||||
|
||||
for filename in sorted(generated_files):
|
||||
print(args.output_dir / filename)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
Loading…
Reference in a new issue