Introduce a cargo workspace under tools/rust/ with a shared ps-core library and three binaries for the byte-for-byte matching effort: - ps-status: status of functions pending decompilation. Build-free mode scans GLOBAL_ASM in src/ (validated: 190 funcs across 68 files, matching grep); build-aware mode reports byte progress per folder from the linker .map, porting the progress.py metric. - ps-firstdiff: first difference(s) between built and expected ROM, with function naming and jal-target resolution (like tools/first_diff.py). - ps-fdiff: non-interactive per-function asm diff of built ROM vs baserom (like ./diff.py -mwo <func>). ps-core provides parsers for GLOBAL_ASM, symbol_addrs, and GNU ld .map files (with vram/vrom lookups), a .z64 reader with md5 verification, and a rabbitizer wrapper for disassembly. All parsers are unit-tested. Wired into tools/Makefile (cargo build, skipped with a warning if cargo is absent), target/ gitignored, and documented in README.md and tools/rust/README.md. The Python scripts (progress.py, tools/first_diff.py, diff.py) are kept in place: only the build-free ps-status path can be validated without a ROM and toolchain. Parity of the build-dependent tools must be confirmed in a full build environment before removing the Python equivalents. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Pokemon Stadium (US)
A WIP decomp of Pokemon Stadium (US).
It builds the following ROMs:
- pokestadium.z64:
md5: ed1378bc12115f71209a77844965ba50
Note: To use this repository, you must already have a rom for the game.
Prerequisites
Under Debian / Ubuntu (which we recommend using), you can install them with the following commands:
sudo apt update
sudo apt install make git build-essential binutils-mips-linux-gnu python3 python3-pip python3-venv
Please also ensure that the Python version installed is >3.7.
The build process has a few python packages required that are located in requirements.txt.
To install them simply run in a terminal:
python3 -m pip install -r requirements.txt
To use
- Place the US Pokemon Stadium 1.0 rom into the repository's "/baseroms/us/" folder as "baserom.z64".
- Set up tools and extract the rom:
make init - Re-assemble the rom:
make
Matching tools (Rust)
A Rust workspace under tools/rust/ provides the tooling for the
byte-for-byte matching effort. It is built automatically by make setup
(make -C tools) when cargo is available; you can also build it directly:
cargo build --release --manifest-path tools/rust/Cargo.toml
The binaries land in tools/rust/target/release/:
-
ps-status— status of functions still pending decompilation. Runs build-free (no ROM needed), scanning#pragma GLOBAL_ASMinsrc/:./tools/rust/target/release/ps-status # summary + per-file counts ./tools/rust/target/release/ps-status --list # every function + address ./tools/rust/target/release/ps-status --json # machine-readableAfter
makeit also runs build-aware (byte progress per folder, likeprogress.py) whenbuild/pokestadium-us.mapexists, or with--build-aware. -
ps-firstdiff— first difference(s) between the built and expected ROM (liketools/first_diff.py). Requiresmake+make diff-init:./tools/rust/target/release/ps-firstdiff -c 5 -
ps-fdiff— non-interactive per-function asm diff of the built ROM vs the baserom (like./diff.py -mwo <func>). Requiresmake:./tools/rust/target/release/ps-fdiff func_80030010
Run any tool with --help for options. The equivalent Python scripts
(progress.py, tools/first_diff.py, diff.py) are kept alongside for now; see
tools/rust/README.md for parity-validation status.
For contacts and other pret projects, see pret.github.io.