# 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 ``` 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). ## 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.