Files
ReaperOfVeriod c83f5104d2 Document the PCSX2 test setup
PCSX2 was set up and working but existed only in this machine's filesystem
and in people's heads, so every comparison looked like a one-off observation
rather than something re-runnable. The setup section in
docs/plan/pcsx2-verification.md now records where the emulator, the BIOS, the
disc, the savestates and the PINE socket are, how a state is captured, and
which command the disc integration tests need -- and AGENTS.md and README.md
point at it from their orientation sections. One operational detail worth
spelling out: the emulator's directory is lowercase (pcsx2), which is not
what people type.
2026-10-11 20:59:19 +02:00

112 lines
4.2 KiB
Markdown

# Going Commando
A native PC reimplementation of **Ratchet & Clank: Going Commando** (PlayStation
2, 2003), written in Rust.
The game is reimplemented, not emulated. There is no MIPS interpreter here and
no CPU emulator: the systems are ported to Rust so they run as ordinary native
code.
**Status: initial scaffold.** The disc is identified and verified, the
workspace builds, and nothing else is implemented yet. See
[`docs/roadmap.md`](docs/roadmap.md) for where things stand and what comes next.
## The target
| | |
|---|---|
| Game | Ratchet & Clank: Going Commando |
| Platform | PlayStation 2 |
| Disc | `SCUS_972.68` v1.01, USA Black Label |
| Video | NTSC, 60 Hz |
| Boot ELF SHA-1 | `bacda860cbd6723142e86db56f197e47e728970f` |
Verified against a real disc — see [`docs/disc-identification.md`](docs/disc-identification.md).
This is the build the reference projects pin; Greatest Hits v2.00 is a
different binary and is not the target.
## No game content
This repository contains **no game assets, no disc images, no BIOS dumps and no
proprietary toolchains**. You supply your own legally obtained copy of the disc
as an input, the way the upstream reference projects do.
A pre-commit hook enforces this, blocking disc images, asset directories,
container signatures and files over 50 MiB. If you clone elsewhere, enable it:
```sh
git config core.hooksPath .githooks
```
## Layout
```
crates/
gc-formats/ asset format parsers (pure, no I/O beyond the caller's buffer)
gc-extract/ disc pipeline: identify, unpack, verify
gc-game/ game logic: hero, weapons, moby classes, progression, saves
gc-video/ IPU / MPEG-2 decode
gc-engine/ Bevy app: Graphics Synthesizer, VU0/VU1, renderer, frame loop
docs/
disc-identification.md which disc we build against, verified
roadmap.md phases, gates, current status
plan/ one file per subsystem, written as work proceeds
formats/ format specs, written as formats are reversed
tools/
identify-disc.py identify any Going Commando disc image
vendor/
rerac/ pinned upstream reference checkout (not tracked)
```
## Building
Requires a Rust toolchain via [rustup](https://rustup.rs).
```sh
cargo check --workspace
cargo test --workspace
```
The host audio backend is disabled in `Cargo.toml` (see the comment there) so
that the workspace builds without system ALSA development headers. Audio decode
is the last phase of the port and lives in `gc-video`; re-enable it and install
`alsa-lib-devel` when that work starts.
## Identifying a disc
```sh
python3 tools/identify-disc.py <your-disc.iso>
```
Reports the serial, version and video mode from `SYSTEM.CNF`, hashes the boot
executable, and warns when the disc is not the supported build. Reads only a
few megabytes, so it is near-instant.
## How it will be verified
Visual and behavioural comparison against PCSX2, replaying recorded input and
comparing frames, level by level. The PS2 float model is reproduced rather than
approximated — see [`AGENTS.md`](AGENTS.md#2-reproduce-the-ps2-float-model).
PCSX2 is installed and working on this machine; the comparison loop that reads
the game's own memory over its debug protocol is up, and level 0's and level
1's tfrag lighting are verified byte-exact against it. See
[`docs/plan/pcsx2-verification.md`](docs/plan/pcsx2-verification.md) for the
setup and how to run it.
## Credits and licensing
This project learns from and is built on the work of others. Licences are
recorded in [`PROVENANCE.md`](PROVENANCE.md) and notices must travel with any
code derived from them.
- **ReRAC** — a native Rust/Bevy port of *Ratchet & Clank* (2002), the first
game. ISC. The architecture this project follows.
- **OpenRAC / rac2-gc-decomp** — matching decompilation research for this
game. MIT. Source of verified struct layouts and engine documentation.
- **Wrench** — community documentation of Insomniac's container formats. GPL,
used as a specification reference only; no code is copied.
Ratchet & Clank is a trademark of Sony Interactive Entertainment. This is an
unofficial fan project, not affiliated with or endorsed by Sony Interactive
Entertainment or Insomniac Games.