summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Makefile20
-rw-r--r--include/macro.inc7
-rw-r--r--requirements.txt2
-rwxr-xr-xtools/disasm/disasm.py127
-rwxr-xr-xtools/disasm/do_disasm.sh55
-rw-r--r--tools/disasm/gc-eu-mq/files_boot.csv254
-rw-r--r--tools/disasm/gc-eu-mq/files_code.csv904
-rw-r--r--tools/disasm/gc-eu-mq/files_ovl_file_choose.csv24
-rw-r--r--tools/disasm/gc-eu-mq/files_ovl_kaleido_scope.csv48
-rwxr-xr-xtools/disasm/list_generated_files.py62
10 files changed, 756 insertions, 747 deletions
diff --git a/Makefile b/Makefile
index 5f9ae59d5..34e198cb3 100644
--- a/Makefile
+++ b/Makefile
@@ -181,10 +181,6 @@ 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
@@ -223,11 +219,6 @@ O_FILES := $(foreach f,$(S_FILES:.s=.o),$(BUILD_DIR)/$f) \
OVL_RELOC_FILES := $(shell $(CPP) $(CPPFLAGS) $(SPEC) | $(SPEC_REPLACE_VARS) | grep -o '[^"]*_reloc.o' )
-DISASM_BASEROM := $(BASEROM_DIR)/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)
@@ -373,7 +364,9 @@ ifeq ($(VERSION),gc-eu-mq-dbg)
$(PYTHON) tools/msgdis.py --text-out assets/text/message_data.h --staff-text-out assets/text/message_data_staff.h
endif
-disasm: $(DISASM_O_FILES)
+disasm:
+ $(RM) -r $(EXPECTED_DIR)
+ VERSION=$(VERSION) DISASM_BASEROM=$(BASEROM_DIR)/baserom-decompressed.z64 DISASM_DIR=$(EXPECTED_DIR) PYTHON=$(PYTHON) AS_CMD='$(AS) $(ASFLAGS)' LD=$(LD) ./tools/disasm/do_disasm.sh
run: $(ROM)
ifeq ($(N64_EMULATOR),)
@@ -495,13 +488,6 @@ $(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
- iconv --from UTF-8 --to EUC-JP $(@:.o=.s) | $(AS) $(ASFLAGS) -o $@
-
-include $(DEP_FILES)
# Print target for debugging
diff --git a/include/macro.inc b/include/macro.inc
index b153bc544..882093744 100644
--- a/include/macro.inc
+++ b/include/macro.inc
@@ -1,3 +1,8 @@
+# Evaluate this file only once in case it's included more than once
+.ifndef _MACRO_INC_GUARD
+.internal _MACRO_INC_GUARD
+.set _MACRO_INC_GUARD, 1
+
.macro glabel label
.global \label
\label:
@@ -47,3 +52,5 @@
.set $fs4f, $f29
.set $fs5, $f30
.set $fs5f, $f31
+
+.endif
diff --git a/requirements.txt b/requirements.txt
index 677bf2d3e..05d86d39c 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -16,4 +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
+spimdisasm>=1.21.0,<2.0.0
diff --git a/tools/disasm/disasm.py b/tools/disasm/disasm.py
index 1471a7e13..9435f3cd2 100755
--- a/tools/disasm/disasm.py
+++ b/tools/disasm/disasm.py
@@ -3,13 +3,13 @@
# SPDX-FileCopyrightText: © 2024 ZeldaRET
# SPDX-License-Identifier: CC0-1.0
+from __future__ import annotations
+
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
@@ -23,18 +23,18 @@ def load_file_splits(
# 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))
+ data = 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 = ""
+ default_filename = dma_file.name
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"
+ f"src/overlays/{dma_file.overlay_dir}/{dma_file.name}/{z_name}"
)
splits_data = None
reloc_section = spimdisasm.mips.sections.SectionRelocZ64(
@@ -42,7 +42,7 @@ def load_file_splits(
vromStart=0,
vromEnd=len(data),
vram=dma_file.vram_start,
- filename=default_filename,
+ filename=f"src/overlays/{dma_file.overlay_dir}/{dma_file.name}/{dma_file.name}",
array_of_bytes=data,
segmentVromStart=0,
overlayCategory=None,
@@ -94,62 +94,85 @@ def main():
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)
+ print("Loading disasm info...")
+ all_file_splits: list[spimdisasm.mips.FileSplits] = []
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)
+ all_file_splits.append(file_splits)
- 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
+ print("Analyzing...")
+ for i, file_splits in enumerate(all_file_splits):
+ f = i / len(all_file_splits)
+ spimdisasm.common.Utils.printQuietless(
+ f"{f*100:3.0f}%", "Analyzing", file_splits.name, end=" \r"
+ )
+ file_splits.analyze()
+ print()
+ print("Analyzing done.")
+
+ print("Writing disassembled sections...")
+ output_dir: Path = args.output_dir
+ output_dir.mkdir(parents=True, exist_ok=True)
+ for i, file_splits in enumerate(all_file_splits):
+ f = i / len(all_file_splits)
+ spimdisasm.common.Utils.printQuietless(
+ f"{f*100:3.0f}%", "Writing", file_splits.name, end=" \r"
+ )
+ for sectDict in file_splits.sectionsDict.values():
+ for name, section in sectDict.items():
+ basepath = output_dir / name
+ basepath.parent.mkdir(parents=True, exist_ok=True)
+ if section.sectionType == spimdisasm.common.FileSectionType.Reloc:
+ # basepath is like
+ # .../ovl_Overlay_Name/z_overlay_name
+ # and we want to write relocs to
+ # .../ovl_Overlay_Name/ovl_Overlay_Name_reloc.s
+ path = basepath.parent / f"{basepath.parent.name}_reloc.s"
+ with path.open("w", encoding="UTF-8") as f:
+ section.disassembleToFile(f)
+ else:
+ section.saveToFile(str(basepath))
+ print()
+ print("Writing sections done.")
+
+ if args.split_functions is not None:
+ print("Writing disassembled functions individually...")
+ for i, file_splits in enumerate(all_file_splits):
+ f = i / len(all_file_splits)
+ spimdisasm.common.Utils.printQuietless(
+ f"{f*100:3.0f}%", "Writing", file_splits.name, end=" \r"
+ )
+
+ for section_name, text_section in file_splits.sectionsDict[
+ spimdisasm.common.FileSectionType.Text
+ ].items():
+ rodata_section = file_splits.sectionsDict[
+ spimdisasm.common.FileSectionType.Rodata
+ ].get(section_name)
+ # FunctionRodataEntry represents a function,
+ # plus any associated rodata (strings, floats, jump tables...)
+ # It can also be rodata that hasn't been associated to any function
+ for (
+ func_rodata_entry
+ ) in spimdisasm.mips.FunctionRodataEntry.getAllEntriesFromSections(
+ text_section, rodata_section
+ ):
+ output_dir = (
+ args.split_functions
+ / section_name
+ / f"{func_rodata_entry.getName()}.s"
)
+ output_dir.parent.mkdir(parents=True, exist_ok=True)
+ with output_dir.open("w", encoding="UTF-8") as f:
+ func_rodata_entry.writeToFile(f, writeFunction=True)
+ print()
+ print("Writing functions done.")
if __name__ == "__main__":
diff --git a/tools/disasm/do_disasm.sh b/tools/disasm/do_disasm.sh
new file mode 100755
index 000000000..0c7c5e9cc
--- /dev/null
+++ b/tools/disasm/do_disasm.sh
@@ -0,0 +1,55 @@
+#!/bin/bash
+set -eu -o pipefail
+
+if [ "${VERBOSE-}" ]
+then
+echo "$VERSION"
+echo "$DISASM_DIR"
+echo "$DISASM_BASEROM"
+echo "$PYTHON"
+echo "$AS_CMD"
+echo "$LD"
+set -x
+fi
+
+DISASM_DATA_DIR="tools/disasm/$VERSION"
+DISASM_FLAGS="--custom-suffix _unknown --sequential-label-names --no-use-fpccsr --no-cop0-named-registers"
+DISASM_FLAGS="$DISASM_FLAGS --config-dir $DISASM_DATA_DIR --symbol-addrs $DISASM_DATA_DIR/functions.txt --symbol-addrs $DISASM_DATA_DIR/variables.txt"
+
+echo Disassembling...
+cmd="$PYTHON tools/disasm/disasm.py $DISASM_FLAGS $DISASM_BASEROM -o $DISASM_DIR --split-functions $DISASM_DIR/functions"
+echo "$cmd"
+$cmd || (
+ echo
+ echo Error on disassembling.
+ false
+)
+echo Disassembling done.
+
+echo Assembling text,data,rodata,bss sections together for each file...
+for filebase in `find $DISASM_DIR -name '*.s' | sed -E -n 's/\.(text|data|rodata|bss)\.s$//p' | sort | uniq`
+do
+ printf '%s \r' "$filebase"
+ files=
+ for section in text data rodata bss
+ do
+ file="$filebase.$section.s"
+ if [ -e $file ]
+ then
+ files="$files $file"
+ fi
+ done
+ iconv_cmd="iconv -f UTF-8 -t EUC-JP $files"
+ asfile_cmd="$AS_CMD -o $filebase.o --"
+ ( $iconv_cmd | $asfile_cmd ) || (
+ echo
+ echo Error on assembling:
+ echo "$filebase"
+ echo Command line:
+ echo "$iconv_cmd | $asfile_cmd"
+ false
+ )
+done
+echo
+
+echo All done!
diff --git a/tools/disasm/gc-eu-mq/files_boot.csv b/tools/disasm/gc-eu-mq/files_boot.csv
index fb7cd3cbd..74b3eb521 100644
--- a/tools/disasm/gc-eu-mq/files_boot.csv
+++ b/tools/disasm/gc-eu-mq/files_boot.csv
@@ -1,135 +1,135 @@
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
-3890,80003CF0,src/libultra/io/epidma.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
+0,80000460,src/boot/boot_main
+140,800005A0,src/boot/idle
+3D0,80000830,src/boot/viconfig
+520,80000980,src/boot/z_std_dma
+B60,80000FC0,src/boot/yaz0
+EA0,80001300,src/boot/z_locale
+F60,800013C0,src/boot/is_debug
+FC0,80001420,src/libultra/io/driverominit
+11A0,80001600,src/boot/mio0
+1250,800016B0,src/boot/stackcheck
+14A0,80001900,src/boot/logutils
+1500,80001960,src/libultra/io/piacs
+15C0,80001A20,src/libultra/os/sendmesg
+1710,80001B70,src/libultra/os/stopthread
+17D0,80001C30,src/libultra/io/viextendvstart
+17E0,80001C40,src/libultra/os/recvmesg
+1920,80001D80,src/libultra/os/initialize
+1C70,800020D0,src/libultra/libc/ll
+1F30,80002390,src/libultra/os/exceptasm
+2860,80002CC0,src/libultra/os/thread
+28A0,80002D00,src/libultra/os/destroythread
+29B0,80002E10,src/libultra/libc/bzero
+2A50,80002EB0,src/libultra/os/parameters
+2AB0,80002F10,src/libultra/os/createthread
+2C00,80003060,src/libultra/os/setsr
+2C10,80003070,src/libultra/os/getsr
+2C20,80003080,src/libultra/os/writebackdcache
+2CA0,80003100,src/libultra/io/vigetnextframebuf
+2CE0,80003140,src/libultra/io/pimgr
+2E60,800032C0,src/libultra/io/devmgr
+3270,800036D0,src/libultra/io/pirawdma
+3340,800037A0,src/libultra/os/virtualtophysical
+33C0,80003820,src/libultra/io/viblack
+3430,80003890,src/libultra/io/sirawread
+3480,800038E0,src/libultra/os/getthreadid
+34A0,80003900,src/libultra/os/setintmask
+3540,800039A0,src/libultra/io/visetmode
+35A0,80003A00,src/libultra/os/probetlb
+3660,80003AC0,src/libultra/os/getmemsize
+3780,80003BE0,src/libultra/os/seteventmesg
+3840,80003CA0,src/libultra/os/unmaptlball
+3890,80003CF0,src/libultra/io/epidma
+3930,80003D90,src/libultra/os/invalicache
+39B0,80003E10,src/libultra/os/createmesgqueue
+39E0,80003E40,src/libultra/os/invaldcache
+3A90,80003EF0,src/libultra/io/si
+3AC0,80003F20,src/libultra/os/jammesg
+3C10,80004070,src/libultra/os/setthreadpri
+3CF0,80004150,src/libultra/os/getthreadpri
+3D10,80004170,src/libultra/io/epirawread
+3E70,800042D0,src/libultra/io/viswapbuf
+3EC0,80004320,src/libultra/io/epirawdma
+40A0,80004500,src/libultra/libc/bcmp
+41C0,80004620,src/libultra/os/gettime
+4250,800046B0,src/libultra/os/timerintr
+4680,80004AE0,src/libultra/os/getcount
+4690,80004AF0,src/libultra/os/setglobalintmask
+46E0,80004B40,src/libultra/os/setcompare
+46F0,80004B50,src/libultra/libc/bcopy
+4A00,80004E60,src/libultra/os/resetglobalintmask
+4A60,80004EC0,src/libultra/os/interrupt
+4AF0,80004F50,src/libultra/io/vi
+4C10,80005070,src/libultra/io/viswapcontext
+4F10,80005370,src/libultra/io/pigetcmdq
+4F40,800053A0,src/libultra/io/epiread
+4F90,800053F0,src/libultra/io/visetspecial
+50F0,80005550,src/libultra/io/cartrominit
+5250,800056B0,src/libultra/os/setfpccsr
+5260,800056C0,src/libultra/os/getfpccsr
+5270,800056D0,src/libultra/os/maptlbrdb
+52D0,80005730,src/libultra/os/yieldthread
+5320,80005780,src/libultra/os/getcause
+5330,80005790,src/libultra/io/epirawwrite
+5490,800058F0,src/libultra/io/sirawwrite
+54E0,80005940,src/libultra/io/vimgr
+57F0,80005C50,src/libultra/io/vigetcurrcontext
+5800,80005C60,src/libultra/os/startthread
+5950,80005DB0,src/libultra/io/visetyscale
+59A0,80005E00,src/libultra/io/visetxscale
+5AB0,80005F10,src/libultra/os/sethwintrroutine
+5B20,80005F80,src/libultra/os/gethwintrroutine
+5B50,80005FB0,src/libultra/os/setwatchlo
+5B60,80005FC0,data/rsp_boot.text
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
+5C30,80006090,data/unk_800093F0.data
+5C50,800060B0,data/unk_80009410.data
+5C70,800060D0,src/boot/idle
+5C90,800060F0,src/boot/viconfig
+5CA0,80006100,src/boot/z_std_dma
+5CB0,80006110,src/boot/z_locale
+5CC0,80006120,src/libultra/io/driverominit
+5CD0,80006130,src/boot/stackcheck
+5CE0,80006140,src/libultra/io/piacs
+5CF0,80006150,src/libultra/io/vimodepallan1
+5D40,800061A0,src/libultra/os/initialize
+5D60,800061C0,src/libultra/os/exceptasm
+5D90,800061F0,src/libultra/os/thread
+5DB0,80006210,src/libultra/io/pimgr
+5DE0,80006240,src/libultra/os/seteventmesg
+5DF0,80006250,src/libultra/os/timerintr
+5E00,80006260,src/libultra/io/vimodentsclan1
+5E50,800062B0,src/libultra/io/vimodempallan1
+5EA0,80006300,src/libultra/io/vi
+5F10,80006370,src/libultra/io/cartrominit
+5F20,80006380,src/libultra/io/vimgr
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
+5F40,800063A0,src/boot/boot_main
+5F50,800063B0,src/boot/idle
+5F60,800063C0,src/boot/z_std_dma
+5FC0,80006420,src/boot/z_locale
+5FD0,80006430,src/boot/stackcheck
+5FE0,80006440,src/boot/logutils
+5FF0,80006450,src/libultra/os/exceptasm
+6040,800064A0,src/libultra/io/devmgr
+6060,800064C0,src/libultra/os/setintmask
+60E0,80006540,src/boot/build
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
+6110,80006570,src/boot/boot_main
+6B00,80006F60,src/boot/idle
+7710,80007B70,src/boot/z_std_dma
+7E80,800082E0,src/boot/yaz0
+8290,800086F0,src/boot/z_locale
+82B0,80008710,src/libultra/io/driverominit
+8330,80008790,src/libultra/io/piacs
+8350,800087B0,src/libultra/os/initialize
+8360,800087C0,src/libultra/io/pimgr
+97D0,80009C30,src/libultra/os/seteventmesg
+9850,80009CB0,src/libultra/os/timerintr
+9890,80009CF0,src/libultra/io/cartrominit
+9910,80009D70,src/libultra/io/vimgr
AB30,8000AF90,.end
diff --git a/tools/disasm/gc-eu-mq/files_code.csv b/tools/disasm/gc-eu-mq/files_code.csv
index b62bd5694..9de88579f 100644
--- a/tools/disasm/gc-eu-mq/files_code.csv
+++ b/tools/disasm/gc-eu-mq/files_code.csv
@@ -1,464 +1,464 @@
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
-90660,800A1560,src/code/gfxalloc.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
+0,80010F00,src/code/z_en_a_keep
+AA0,800119A0,src/code/z_en_item00
+2EA0,80013DA0,src/code/z_eff_blure
+62D0,800171D0,src/code/z_eff_shield_particle
+7930,80018830,src/code/z_eff_spark
+8FE0,80019EE0,src/code/z_eff_ss_dead
+9790,8001A690,src/code/z_effect
+9F10,8001AE10,src/code/z_effect_soft_sprite
+A9B0,8001B8B0,src/code/z_effect_soft_sprite_old_init
+D4D0,8001E3D0,src/code/flg_set
+D8F0,8001E7F0,src/code/z_DLF
+DB40,8001EA40,src/code/z_actor
+1A0C0,8002AFC0,src/code/z_actor_dlftbls
+1A210,8002B110,src/code/z_bgcheck
+23DF0,80034CF0,src/code/code_800430A0
+24110,80035010,src/code/code_80043480
+244A0,800353A0,src/code/z_camera
+38AD0,800499D0,src/code/z_collision_btltbls
+38B30,80049A30,src/code/z_collision_check
+407B0,800516B0,src/code/z_common_data
+40830,80051730,src/code/z_debug
+40B40,80051A40,src/code/z_debug_display
+41000,80051F00,src/code/z_demo
+45CE0,80056BE0,src/code/code_80069420
+45D70,80056C70,src/code/z_draw
+47C70,80058B70,src/code/z_sfx_source
+47E30,80058D30,src/code/z_elf_message
+48510,80059410,src/code/z_face_reaction
+48560,80059460,src/code/code_8006C3A0
+486E0,800595E0,src/code/z_fcurve_data
+48920,80059820,src/code/z_fcurve_data_skelanime
+49130,8005A030,src/code/z_horse
+49E10,8005AD10,src/code/z_jpeg
+4A5D0,8005B4D0,src/code/z_kaleido_setup
+4A9A0,8005B8A0,src/code/z_kanfont
+4AB70,8005BA70,src/code/z_kankyo
+52380,80063280,src/code/z_lib
+53520,80064420,src/code/z_lifemeter
+548C0,800657C0,src/code/z_lights
+55960,80066860,src/code/z_malloc
+55B40,80066A40,src/code/z_map_mark
+56140,80067040,src/code/z_prenmi_buff
+56200,80067100,src/code/z_nulltask
+56280,80067180,src/code/z_olib
+56970,80067870,src/code/z_onepointdemo
+5A910,8006B810,src/code/z_map_exp
+5C4B0,8006D3B0,src/code/z_parameter
+67BA0,80078AA0,src/code/z_path
+67D70,80078C70,src/code/z_frame_advance
+67E20,80078D20,src/code/z_player_lib
+6B890,8007C790,src/code/z_prenmi
+6BA30,8007C930,src/code/z_quake
+6C8A0,8007D7A0,src/code/z_rcp
+6E160,8007F060,src/code/z_room
+6F950,80080850,src/code/z_sample
+6FD50,80080C50,src/code/code_80097A00
+6FF10,80080E10,src/code/z_scene
+713C0,800822C0,src/code/z_scene_table
+77BA0,80088AA0,src/code/z_skelanime
+7C590,8008D490,src/code/z_skin
+7D130,8008E030,src/code/z_skin_awb
+7DA40,8008E940,src/code/z_skin_matrix
+7EDE0,8008FCE0,src/code/z_sram
+80220,80091120,src/code/z_ss_sram
+803F0,800912F0,src/code/z_rumble
+80670,80091570,src/code/z_view
+81D70,80092C70,src/code/z_vimode
+828E0,800937E0,src/code/z_viscvg
+82A80,80093980,src/code/z_vismono
+832A0,800941A0,src/code/z_viszbuf
+83530,80094430,src/code/z_vr_box
+85E00,80096D00,src/code/z_vr_box_draw
+864E0,800973E0,src/code/z_player_call
+86650,80097550,src/code/z_fbdemo
+87070,80097F70,src/code/z_fbdemo_triforce
+87630,80098530,src/code/z_fbdemo_wipe1
+87AA0,800989A0,src/code/z_fbdemo_circle
+88160,80099060,src/code/z_fbdemo_fade
+884C0,800993C0,src/code/shrink_window
+88630,80099530,src/code/code_800BB0A0
+88B00,80099A00,src/code/z_kaleido_manager
+88D30,80099C30,src/code/z_kaleido_scope_call
+89010,80099F10,src/code/z_play
+8CA70,8009D970,src/code/PreRender
+8EB60,8009FA60,src/code/TwoHeadGfxArena
+8ED70,8009FC70,src/code/TwoHeadArena
+8EF30,8009FE30,src/code/audio_stop_all_sfx
+8EF80,8009FE80,src/code/audio_thread_manager
+8F390,800A0290,src/code/title_setup
+8F400,800A0300,src/code/game
+8FB80,800A0A80,src/code/gamealloc
+8FCC0,800A0BC0,src/code/graph
+90660,800A1560,src/code/gfxalloc
+906C0,800A15C0,src/code/listalloc
+90810,800A1710,src/code/main
+90B70,800A1A70,src/code/padmgr
+91680,800A2580,src/code/sched
+92300,800A3200,src/code/speed_meter
+92D40,800A3C40,src/code/sys_cfb
+92E60,800A3D60,src/code/sys_math
+93100,800A4000,src/code/sys_math3d
+98ED0,800A9DD0,src/code/sys_math_atan
+99100,800AA000,src/code/sys_matrix
+9B500,800AC400,src/code/sys_ucode
+9B550,800AC450,src/code/sys_rumble
+9B8B0,800AC7B0,src/code/code_800D31A0
+9B8E0,800AC7E0,src/code/irqmgr
+9BF00,800ACE00,src/code/fault
+9E750,800AF650,src/code/fault_drawer
+9F1D0,800B00D0,src/code/kanread
+9FCC0,800B0BC0,src/audio/lib/synthesis
+A2E20,800B3D20,src/audio/lib/heap
+A61F0,800B70F0,src/audio/lib/load
+A9FE0,800BAEE0,src/audio/lib/thread
+AB840,800BC740,src/audio/lib/dcache
+AB8C0,800BC7C0,src/audio/lib/aisetnextbuf
+AB940,800BC840,src/audio/lib/playback
+AD8C0,800BE7C0,src/audio/lib/effects
+AE340,800BF240,src/audio/lib/seqplayer
+B1960,800C2860,src/audio/general
+B7AF0,800C89F0,src/audio/sfx
+B9950,800CA850,src/audio/sequence
+BB570,800CC470,src/code/gfxprint
+BC2E0,800CD1E0,src/code/rcp_utils
+BC340,800CD240,src/code/loadfragment2
+BC3A0,800CD2A0,src/code/relocation
+BC5E0,800CD4E0,src/code/load
+BC6B0,800CD5B0,src/code/code_800FC620
+BC9F0,800CD8F0,src/code/padutils
+BCBE0,800CDAE0,src/code/padsetup
+BCD20,800CDC20,src/code/code_800FCE80
+BD230,800CE130,src/code/fp
+BD390,800CE290,src/code/system_malloc
+BD560,800CE460,src/code/code_800FD970
+BD720,800CE620,src/code/__osMalloc
+BE4D0,800CF3D0,src/libultra/libc/sprintf
+BE5A0,800CF4A0,src/code/printutils
+BE600,800CF500,src/code/sleep
+BE7A0,800CF6A0,src/code/jpegutils
+BECB0,800CFBB0,src/code/jpegdecoder
+BF2A0,800D01A0,src/libultra/mgu/scale
+BF350,800D0250,src/libultra/gu/sinf
+BF510,800D0410,src/libultra/gu/sins
+BF580,800D0480,src/libultra/io/sptask
+BF840,800D0740,src/libultra/io/motor
+BFC10,800D0B10,src/libultra/io/siacs
+BFCD0,800D0BD0,src/libultra/io/controller
+BFFB0,800D0EB0,src/libultra/io/contreaddata
+C0190,800D1090,src/libultra/gu/perspective
+C0420,800D1320,src/libultra/io/sprawdma
+C04B0,800D13B0,src/libultra/io/sirawdma
+C0560,800D1460,src/libultra/io/sptaskyield
+C0580,800D1480,src/libultra/mgu/mtxidentf
+C05D0,800D14D0,src/libultra/gu/lookat
+C08F0,800D17F0,src/libultra/os/stoptimer
+C09E0,800D18E0,src/libultra/gu/sqrtf
+C09F0,800D18F0,src/libultra/os/afterprenmi
+C0A10,800D1910,src/libultra/io/contquery
+C0AB0,800D19B0,src/libultra/gu/lookathil
+C1330,800D2230,src/libultra/libc/xprintf
+C2010,800D2F10,src/libultra/libc/string
+C20B0,800D2FB0,src/libultra/io/sp
+C20E0,800D2FE0,src/libultra/mgu/mtxident
+C2130,800D3030,src/libultra/gu/position
+C2340,800D3240,src/libultra/io/sptaskyielded
+C23A0,800D32A0,src/libultra/gu/rotate
+C2570,800D3470,src/libultra/io/aisetfreq
+C26C0,800D35C0,src/libultra/os/getactivequeue
+C26E0,800D35E0,src/libultra/mgu/normalize
+C2740,800D3640,src/libultra/io/dpgetstat
+C2750,800D3650,src/libultra/io/dpsetstat
+C2760,800D3660,src/libultra/gu/ortho
+C2920,800D3820,src/libultra/gu/cosf
+C2A90,800D3990,src/libultra/gu/coss
+C2AC0,800D39C0,src/libultra/io/visetevent
+C2B20,800D3A20,src/libultra/gu/us2dex
+C2CA0,800D3BA0,src/libultra/io/pfsselectbank
+C2D20,800D3C20,src/libultra/io/contsetch
+C2D80,800D3C80,src/libultra/io/aigetlen
+C2DA0,800D3CA0,src/libultra/mgu/translate
+C2E70,800D3D70,src/libultra/io/contramwrite
+C30C0,800D3FC0,src/libultra/io/pfsgetstatus
+C32F0,800D41F0,src/libultra/io/contpfs
+C3E70,800D4D70,src/libultra/io/contramread
+C40A0,800D4FA0,src/libultra/io/crc
+C4210,800D5110,src/libultra/io/pfsisplug
+C4500,800D5400,src/libultra/os/settimer
+C4690,800D5590,src/libultra/libc/xldtob
+C51A0,800D60A0,src/libultra/libc/ldiv
+C5330,800D6230,src/libultra/libc/xlitob
+C55D0,800D64D0,src/libultra/io/spgetstat
+C55E0,800D64E0,src/libultra/io/spsetstat
+C55F0,800D64F0,src/libultra/os/writebackdcacheall
+C5620,800D6520,src/libultra/os/getcurrfaultedthread
+C5640,800D6540,src/libultra/mgu/mtxf2l
+C56B0,800D65B0,src/libultra/libc/llcvt
+C58C0,800D67C0,src/libultra/io/vigetcurrframebuf
+C5900,800D6800,src/libultra/io/spsetpc
+C5930,800D6830,src/libultra/libc/sqrt
+C5940,800D6840,src/libultra/libc/absf
+C5950,800D6850,src/code/fmodf
+C59A0,800D68A0,src/code/__osMemset
+C59D0,800D68D0,src/code/__osMemmove
+C5A60,800D6960,src/code/z_message_PAL
+CE820,800DF720,src/code/z_game_over
+CED60,800DFC60,src/code/z_construct
+D02A0,800E11A0,data/rsp.text
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
+D3600,800E4500,src/code/z_en_a_keep
+D36A0,800E45A0,src/code/z_en_item00
+D3940,800E4840,src/code/z_eff_blure
+D39F0,800E48F0,src/code/z_eff_shield_particle
+D3A40,800E4940,src/code/z_effect
+D3A90,800E4990,src/code/z_effect_soft_sprite
+D3AA0,800E49A0,src/code/z_effect_soft_sprite_old_init
+D3B90,800E4A90,src/code/z_effect_soft_sprite_dlftbls
+D3FA0,800E4EA0,src/code/flg_set
+D4160,800E5060,src/code/z_actor
+D4480,800E5380,src/code/z_actor_dlftbls
+D7F70,800E8E70,src/code/z_bgcheck
+D80C0,800E8FC0,src/code/z_camera
+DB610,800EC510,src/code/z_collision_btltbls
+DB8F0,800EC7F0,src/code/z_collision_check
+DBBA0,800ECAA0,src/code/z_debug
+DBBD0,800ECAD0,src/code/z_debug_display
+DBC20,800ECB20,src/code/z_demo
+DBD80,800ECC80,src/code/z_draw
+DCE00,800EDD00,src/code/z_elf_message
+DCE50,800EDD50,src/code/z_face_reaction
+DD290,800EE190,src/code/z_game_dlftbls
+DD3B0,800EE2B0,src/code/z_horse
+DD4C0,800EE3C0,src/code/z_jpeg
+DD500,800EE400,src/code/z_kaleido_setup
+DD550,800EE450,src/code/z_kankyo
+DD940,800EE840,src/code/z_lib
+DD970,800EE870,src/code/z_lifemeter
+DDA90,800EE990,src/code/z_lights
+DDAA0,800EE9A0,src/code/z_map_mark
+DDB60,800EEA60,src/code/z_onepointdemo
+E1480,800F2380,src/code/z_map_exp
+E14A0,800F23A0,src/code/z_map_data
+E32A0,800F41A0,src/code/z_parameter
+E35A0,800F44A0,src/code/z_player_lib
+E3C80,800F4B80,src/code/z_quake
+E3CB0,800F4BB0,src/code/z_rcp
+E4AD0,800F59D0,src/code/z_room
+E4B50,800F5A50,src/code/code_80097A00
+E4ED0,800F5DD0,src/code/z_scene
+E4F50,800F5E50,src/code/object_table
+E5BF0,800F6AF0,src/code/z_scene_table
+E7E00,800F8D00,src/code/z_skelanime
+E7E20,800F8D20,src/code/z_skin_matrix
+E7E60,800F8D60,src/code/z_sram
+E8010,800F8F10,src/code/z_ss_sram
+E80C0,800F8FC0,data/unk_8012ABC0.data
+E80F0,800F8FF0,src/code/z_view
+E8100,800F9000,src/code/z_viscvg
+E8190,800F9090,src/code/z_vr_box
+E8490,800F9390,src/code/z_player_call
+E84B0,800F93B0,src/code/z_fbdemo
+E8530,800F9430,src/code/z_fbdemo_triforce
+E8600,800F9500,src/code/z_fbdemo_wipe1
+E90A0,800F9FA0,src/code/z_fbdemo_circle
+EA3A0,800FB2A0,src/code/z_fbdemo_fade
+EA3D0,800FB2D0,src/code/shrink_window
+EA3E0,800FB2E0,src/code/z_kaleido_manager
+EA430,800FB330,src/code/z_play
+EA440,800FB340,src/code/audio_stop_all_sfx
+EA450,800FB350,src/code/graph
+EA460,800FB360,src/code/main
+EA470,800FB370,src/code/padmgr
+EA480,800FB380,src/code/speed_meter
+EA4B0,800FB3B0,src/code/sys_math
+EA4F0,800FB3F0,src/code/sys_math_atan
+EAD00,800FBC00,src/code/sys_matrix
+EAD80,800FBC80,src/code/sys_ucode
+EAD90,800FBC90,src/code/sys_rumble
+EADA0,800FBCA0,src/code/irqmgr
+EADC0,800FBCC0,src/code/fault
+EAE20,800FBD20,src/code/fault_drawer
+EAE60,800FBD60,src/audio/lib/data
+ED270,800FE170,src/audio/lib/synthesis
+ED2A0,800FE1A0,src/audio/lib/load
+ED2B0,800FE1B0,src/audio/lib/thread
+ED2D0,800FE1D0,src/audio/lib/aisetnextbuf
+ED2E0,800FE1E0,src/audio/lib/effects
+ED2F0,800FE1F0,src/audio/lib/seqplayer
+ED340,800FE240,src/audio/general
+EEA60,800FF960,src/audio/sfx_params
+EFE30,80100D30,src/audio/data
+EFEA0,80100DA0,src/audio/session_config
+F0640,80101540,src/code/logseverity
+F0650,80101550,src/code/gfxprint
+F0F00,80101E00,src/code/code_800FC620
+F0F20,80101E20,src/code/fp
+F0F30,80101E30,src/code/code_800FD970
+F0F40,80101E40,src/code/__osMalloc
+F0F50,80101E50,src/libultra/gu/sins
+F1750,80102650,src/libultra/io/siacs
+F1760,80102660,src/libultra/io/controller
+F1770,80102670,src/libultra/libc/xprintf
+F17C0,801026C0,src/libultra/gu/position
+F17D0,801026D0,src/libultra/gu/rotate
+F17E0,801026E0,src/libultra/io/vimodefpallan1
+F1830,80102730,src/libultra/io/contpfs
+F1840,80102740,src/libultra/io/contramread
+F1850,80102750,src/libultra/libc/xlitob
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
+F1880,80102780,src/code/z_en_a_keep
+F18D0,801027D0,src/code/z_en_item00
+F1B40,80102A40,src/code/z_eff_blure
+F1B70,80102A70,src/code/z_eff_shield_particle
+F1B80,80102A80,src/code/z_eff_spark
+F1B90,80102A90,src/code/z_eff_ss_dead
+F1BA0,80102AA0,src/code/z_effect_soft_sprite_old_init
+F1BC0,80102AC0,src/code/flg_set
+F1F50,80102E50,src/code/z_actor
+F2500,80103400,src/code/z_actor_dlftbls
+F2550,80103450,src/code/z_bgcheck
+F25F0,801034F0,src/code/code_80043480
+F2600,80103500,src/code/z_camera
+F2D80,80103C80,src/code/z_collision_check
+F2DD0,80103CD0,src/code/z_debug
+F2DE0,80103CE0,src/code/z_demo
+F32C0,801041C0,src/code/z_draw
+F32D0,801041D0,src/code/z_elf_message
+F33F0,801042F0,src/code/z_fcurve_data
+F3400,80104300,src/code/z_fcurve_data_skelanime
+F3410,80104310,src/code/z_horse
+F3420,80104320,src/code/z_jpeg
+F34B0,801043B0,src/code/z_kankyo
+F3560,80104460,src/code/z_lib
+F3570,80104470,src/code/z_lifemeter
+F3590,80104490,src/code/z_lights
+F35A0,801044A0,src/code/z_map_mark
+F3600,80104500,src/code/z_olib
+F3620,80104520,src/code/z_onepointdemo
+F3EE0,80104DE0,src/code/z_map_exp
+F4200,80105100,src/code/z_parameter
+F4410,80105310,src/code/z_path
+F4420,80105320,src/code/z_player_lib
+F4480,80105380,src/code/z_quake
+F4510,80105410,src/code/z_room
+F4550,80105450,src/code/z_sample
+F4560,80105460,src/code/z_scene_table
+F45A0,801054A0,src/code/z_skelanime
+F45C0,801054C0,src/code/z_skin
+F45D0,801054D0,src/code/z_skin_matrix
+F45E0,801054E0,src/code/z_sram
+F4650,80105550,src/code/z_rumble
+F4660,80105560,src/code/z_view
+F4670,80105570,src/code/z_vr_box
+F4760,80105660,src/code/z_fbdemo_triforce
+F4770,80105670,src/code/z_fbdemo_wipe1
+F4780,80105680,src/code/z_fbdemo_circle
+F4790,80105690,src/code/code_800BB0A0
+F47A0,801056A0,src/code/z_kaleido_manager
+F47C0,801056C0,src/code/z_play
+F4880,80105780,src/code/game
+F48A0,801057A0,src/code/graph
+F48F0,801057F0,src/code/main
+F4920,80105820,src/code/padmgr
+F4930,80105830,src/code/sys_cfb
+F4940,80105840,src/code/sys_math
+F4950,80105850,src/code/sys_math3d
+F49E0,801058E0,src/code/sys_math_atan
+F49F0,801058F0,src/code/sys_matrix
+F4A20,80105920,src/code/irqmgr
+F4A40,80105940,src/code/fault
+F5450,80106350,src/code/fault_drawer
+F5880,80106780,src/audio/lib/synthesis
+F58A0,801067A0,src/audio/lib/heap
+F58D0,801067D0,src/audio/lib/load
+F5940,80106840,src/audio/lib/thread
+F5A70,80106970,src/audio/lib/playback
+F5AA0,801069A0,src/audio/lib/effects
+F5AD0,801069D0,src/audio/lib/seqplayer
+F6110,80107010,src/audio/general
+F62A0,801071A0,src/audio/sfx
+F62C0,801071C0,src/audio/sequence
+F6340,80107240,src/audio/session_config
+F6350,80107250,src/code/gfxprint
+F6370,80107270,src/code/code_800FCE80
+F63C0,801072C0,src/code/__osMalloc
+F6680,80107580,src/libultra/gu/sinf
+F66D0,801075D0,src/libultra/gu/perspective
+F66E0,801075E0,src/libultra/gu/lookathil
+F66F0,801075F0,src/libultra/libc/xprintf
+F67F0,801076F0,src/libultra/gu/cosf
+F6840,80107740,src/libultra/gu/libm_vals
+F6850,80107750,src/libultra/libc/xldtob
+F68B0,801077B0,src/libultra/libc/llcvt
offset,vram,.data
-F68C0,801077C0,src/code/z_message_PAL.s
+F68C0,801077C0,src/code/z_message_PAL
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
+FF350,80110250,src/code/z_message_PAL
+FF510,80110410,src/code/z_game_over
+FF570,80110470,data/audio_tables.rodata
+100110,80111010,data/rsp.rodata
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/contpfs.s
-1198A0,8012A7A0,src/libultra/io/pfsisplug.s
-1198E0,8012A7E0,src/code/z_message_PAL.s
+102230,80113130,src/code/z_en_item00
+102240,80113140,src/code/z_effect
+106030,80116F30,src/code/flg_set
+106040,80116F40,src/code/z_actor
+1060C0,80116FC0,src/code/z_actor_dlftbls
+1060D0,80116FD0,src/code/z_bgcheck
+1061F0,801170F0,src/code/z_camera
+1062D0,801171D0,src/code/z_collision_check
+107A30,80118930,src/code/z_common_data
+108E60,80119D60,src/code/z_debug
+109080,80119F80,src/code/z_debug_display
+109090,80119F90,src/code/z_demo
+1090C0,80119FC0,src/code/z_kankyo
+109190,8011A090,src/code/z_lifemeter
+1091C0,8011A0C0,src/code/z_lights
+109350,8011A250,src/code/z_malloc
+109380,8011A280,src/code/z_map_mark
+109390,8011A290,src/code/z_map_exp
+1093A0,8011A2A0,src/code/z_parameter
+1093C0,8011A2C0,src/code/z_player_lib
+1093E0,8011A2E0,src/code/z_quake
+109470,8011A370,src/code/z_skelanime
+109480,8011A380,src/code/z_skin
+10A390,8011B290,src/code/z_rumble
+10A4A0,8011B3A0,src/code/z_vr_box_draw
+10A4B0,8011B3B0,src/code/z_player_call
+10A4C0,8011B3C0,src/code/z_kaleido_scope_call
+10A4E0,8011B3E0,src/code/z_play
+10A5F0,8011B4F0,src/code/game
+10A6D0,8011B5D0,src/code/graph
+10A740,8011B640,src/code/main
+10E5D0,8011F4D0,src/code/padmgr
+10E5E0,8011F4E0,src/code/sched
+10E600,8011F500,src/code/speed_meter
+10E670,8011F570,src/code/sys_cfb
+10E680,8011F580,src/code/sys_math3d
+10E8A0,8011F7A0,src/code/sys_matrix
+10E8B0,8011F7B0,src/code/fault
+10F730,80120630,src/code/fault_drawer
+10F790,80120690,src/audio/lib/load
+10F850,80120750,src/audio/general
+10FA50,80120950,src/audio/sfx
+112260,80123160,src/audio/sequence
+113020,80123F20,src/audio/session_config
+119530,8012A430,src/code/gfxprint
+119540,8012A440,src/code/code_800FCE80
+119550,8012A450,src/code/system_malloc
+119580,8012A480,src/code/code_800FD970
+119590,8012A490,src/code/__osMalloc
+1195A0,8012A4A0,src/code/jpegdecoder
+1195B0,8012A4B0,src/libultra/io/sptask
+1195F0,8012A4F0,src/libultra/io/motor
+1196F0,8012A5F0,src/libultra/io/siacs
+119710,8012A610,src/libultra/io/controller
+1197A0,8012A6A0,src/libultra/io/contpfs
+1198A0,8012A7A0,src/libultra/io/pfsisplug
+1198E0,8012A7E0,src/code/z_message_PAL
119900,8012A800,.end
diff --git a/tools/disasm/gc-eu-mq/files_ovl_file_choose.csv b/tools/disasm/gc-eu-mq/files_ovl_file_choose.csv
index 1a0310d1c..aa498ef9a 100644
--- a/tools/disasm/gc-eu-mq/files_ovl_file_choose.csv
+++ b/tools/disasm/gc-eu-mq/files_ovl_file_choose.csv
@@ -1,22 +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
+0,80803630,src/overlays/gamestates/ovl_file_choose/z_file_copy_erase
+3040,80806670,src/overlays/gamestates/ovl_file_choose/z_file_nameset_PAL
+6F60,8080A590,src/overlays/gamestates/ovl_file_choose/z_file_choose
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
+D740,80810D70,src/overlays/gamestates/ovl_file_choose/z_file_nameset_data
+E010,80811640,src/overlays/gamestates/ovl_file_choose/z_file_copy_erase
+E050,80811680,src/overlays/gamestates/ovl_file_choose/z_file_nameset_PAL
+E2B0,808118E0,src/overlays/gamestates/ovl_file_choose/z_file_choose
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
+E5F0,80811C20,src/overlays/gamestates/ovl_file_choose/z_file_nameset_PAL
+E600,80811C30,src/overlays/gamestates/ovl_file_choose/z_file_choose
offset,vram,.ovl
-E620,80811C50,src/overlays/gamestates/ovl_file_choose/ovl_file_choose_reloc.s
+E620,80811C50,src/overlays/gamestates/ovl_file_choose/ovl_file_choose_reloc
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
+EC10,80812240,src/overlays/gamestates/ovl_file_choose/z_file_copy_erase
+EC20,80812250,src/overlays/gamestates/ovl_file_choose/z_file_nameset_PAL
EC30,80812260,.end
diff --git a/tools/disasm/gc-eu-mq/files_ovl_kaleido_scope.csv b/tools/disasm/gc-eu-mq/files_ovl_kaleido_scope.csv
index c03d91625..ca3a62dca 100644
--- a/tools/disasm/gc-eu-mq/files_ovl_kaleido_scope.csv
+++ b/tools/disasm/gc-eu-mq/files_ovl_kaleido_scope.csv
@@ -1,34 +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
+0,80812260,src/overlays/misc/ovl_kaleido_scope/z_kaleido_collect
+2400,80814660,src/overlays/misc/ovl_kaleido_scope/z_kaleido_debug
+43B0,80816610,src/overlays/misc/ovl_kaleido_scope/z_kaleido_equipment
+5E30,80818090,src/overlays/misc/ovl_kaleido_scope/z_kaleido_item
+7E20,8081A080,src/overlays/misc/ovl_kaleido_scope/z_kaleido_map_PAL
+B100,8081D360,src/overlays/misc/ovl_kaleido_scope/z_kaleido_prompt
+B300,8081D560,src/overlays/misc/ovl_kaleido_scope/z_kaleido_scope_PAL
+15350,808275B0,src/overlays/misc/ovl_kaleido_scope/z_lmap_mark
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
+15A10,80827C70,src/overlays/misc/ovl_kaleido_scope/z_kaleido_collect
+15BC0,80827E20,src/overlays/misc/ovl_kaleido_scope/z_kaleido_debug
+15D90,80827FF0,src/overlays/misc/ovl_kaleido_scope/z_kaleido_equipment
+15DC0,80828020,src/overlays/misc/ovl_kaleido_scope/z_kaleido_item
+15E30,80828090,src/overlays/misc/ovl_kaleido_scope/z_kaleido_map_PAL
+16080,808282E0,src/overlays/misc/ovl_kaleido_scope/z_kaleido_prompt
+16090,808282F0,src/overlays/misc/ovl_kaleido_scope/z_kaleido_scope_PAL
+16C10,80828E70,src/overlays/misc/ovl_kaleido_scope/z_lmap_mark
+16C60,80828EC0,src/overlays/misc/ovl_kaleido_scope/z_lmap_mark_data
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
+1ADC0,8082D020,src/overlays/misc/ovl_kaleido_scope/z_kaleido_debug
+1AEA0,8082D100,src/overlays/misc/ovl_kaleido_scope/z_kaleido_equipment
+1AEB0,8082D110,src/overlays/misc/ovl_kaleido_scope/z_kaleido_scope_PAL
+1B190,8082D3F0,src/overlays/misc/ovl_kaleido_scope/z_lmap_mark
+1B240,8082D4A0,src/overlays/misc/ovl_kaleido_scope/z_lmap_mark_data
offset,vram,.ovl
-1B2C0,8082D560,src/overlays/misc/ovl_kaleido_scope/ovl_kaleido_scope_reloc.s
+1B2C0,8082D560,src/overlays/misc/ovl_kaleido_scope/ovl_kaleido_scope_reloc
offset,vram,.bss
-1C9C0,8082EC20,src/overlays/misc/ovl_kaleido_scope/z_kaleido_scope_PAL.s
+1C9C0,8082EC20,src/overlays/misc/ovl_kaleido_scope/z_kaleido_scope_PAL
1CA30,8082EC90,.end
diff --git a/tools/disasm/list_generated_files.py b/tools/disasm/list_generated_files.py
deleted file mode 100755
index 2f160a961..000000000
--- a/tools/disasm/list_generated_files.py
+++ /dev/null
@@ -1,62 +0,0 @@
-#!/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()