Ratchet & Clank: Going Commando
A work-in-progress, byte-matching decompilation of Going Commando for PlayStation 2.
Recovering readable C/C++ from the original game, with a native PC port as the long-term goal.
Note
This project uses AI-assisted research, coding and tooling under human direction. Matching claims require compiler-produced code to pass byte-for-byte comparisons against the pinned game executable. An AI-generated answer alone is not evidence.
Warning
This is an early decompilation project, not a playable PC port. No game assets, disc images, rebuilt executables or proprietary toolchains are distributed. You must supply your own legally obtained copy of the supported release.
The global catalogue also reports conservative unique EE code under a documented structural grouping policy. Unsupported extents stay separate, unproved address fields stay literal, and static target classes refine relocation templates. This is a different scope from loaded-byte coverage; the normal matching acceptance rule is unchanged.
| Metric | Matched C bytes | Total code bytes | Progress |
|---|---|---|---|
| Conservative unique EE code (unsupported extents uncollapsed) | 68,124 | 44,451,612 | 0.1533% |
| Loaded code (boot + 27 overlays) | 324,352 | 48,788,176 | 0.6648% |
Structurally supported function extents cover 40,029,528 loaded EE bytes; 231,732 EE bytes remain unresolved. VU code excluded: 86,368 bytes. Provisional representative partition: 37,641,816 bytes (certified: false); no global progress percentage is inferred from this partition. Conservative global partition retains unknown extents and gaps without deduplication: 8,672,280 loaded EE bytes have unsupported boundaries. The total follows the stated grouping policy and is not a certified original-source size. Supported subset: 68,124 / 35,779,332 unique bytes.
Shared boot binding: 22,522 static edges in combined pinned reference images. Runtime code preservation is unproved. See the binding and remaining-duplication audit.
Recorded validation on 6 October 2026:
| Scope | Integrated C functions / placements | Matched C bytes |
|---|---|---|
| Boot | 184 functions | 9,944 |
| 27 level overlays | 5,275 placements | 314,408 |
| Native overlay subset, included above | 1,121 placements | 107,328 |
| Total C coverage | Boot + all 27 overlays | 324,352 / 48,788,176 (0.6648%) |
The complete boot (2,521,763 loaded bytes, two PT_LOAD segments) and all 27 overlays pass loaded-byte and metadata equality gates. Tool tests run in CI. Assembly reconstruction and naming research are tracked separately from matching C. Native PC execution and visual gameplay remain unverified; recorded emulator observations and their limits are in PCSX2 validation.
Current evidence: runtime gates,
boot integration, level integrations
and independent C qualification.
The progress bar and table are generated together from those validated proofs;
CI rejects either one if stale. Run python scripts/readme_progress.py after a validated lot.
Its fill uses the full 0–100% scale.
| Game | Platform | Region | Version | Boot executable |
|---|---|---|---|---|
| Ratchet & Clank: Going Commando (2003) | PlayStation 2 | USA / NTSC-U | 1.01 | SCUS_972.68 |
| Ratchet & Clank 2: Locked and Loaded (2003) | PlayStation 2 | Europe / PAL | unmeasured | SCES_516.07 |
Matching proofs exist for USA v1.01 only. Disc and boot identities are pinned in
target configuration; all 27 extracted overlay identities
are in overlay configuration. The PAL release is a
registered but unpinned region: --region pal lets the preparation and
reconstruction tools measure and round-trip it, without C catalogues or credit.
See game regions. Greatest Hits v2.00 is a different target.
The functional, non-matching PAL reconstruction and native-port skeleton from platypet2217-star/RAC2Decomp are imported with their history under ports/pal-functional/. They are outside the matching sources and add no progress.
No programming or PS2 experience needed to get started. Bring a coding AI that can edit files and run commands, and a GitHub account to submit your work.
Important
Bring your own legally acquired USA v1.01 ISO and the complete qualified tool suite. Your AI guides installation and verification. Finish setup before selecting a contribution.
| ① Start your AI | ② Verify your setup | ③ Submit for review |
|---|---|---|
| Copy the request below into your coding assistant. | Let it verify your ISO, tools and baseline, and explain any step that needs you. | Review the change and draft PR. The maintainer reviews it before merging. |
Your guides: Beginner walkthrough · Tools & official sources · Contribution rules
I am a beginner. Help me make one contribution to
https://github.com/llesieur99/rac2-decomp from branch RAC2.
Read AGENTS.md, docs/CONTRIBUTOR-QUICKSTART.md and toolchain/README.md.
Use my fork and a topic branch; I authorize pushing the tested change to my
fork and opening a draft PR to upstream RAC2, not pushing or merging upstream.
Verify my legally acquired matching ISO and complete tool suite first.
If anything is missing, finish setup before selecting a contribution.
Preserve existing work, run the real gates/tests, show the diff, and use
detailed English commits. Never upload private/game/SDK files or invent a match.
The walkthrough explains forks, branches and PRs. The tool guide distinguishes public downloads from locally supplied legacy tools. An AI cannot supply missing rights or prove matching code without the qualified tools and reference bytes.
Already set up? Resume the campaign →
Open the local checkout on branch RAC2 and read AGENTS.md,
then the continuation guide. The repository holds the method,
task decisions and proof history. Your ignored .local/ENVIRONMENT.md pointer
supplies machine-specific paths and private operational state when available.
Use the campaign workflow to check progress and select a task:
python scripts/campaign.py --runtime <private-campaign-directory> status
python scripts/campaign.py --runtime <private-campaign-directory> queue
python scripts/campaign.py --runtime <private-campaign-directory> packet <task-id>config/campaign-register.json is the one task and experiment authority. The queue view and historical experiment view are derived from it. Prior refusals and reopening conditions remain recorded. Trial sources, objects, assembly, logs and immutable UUID evidence packages stay private.
The shared-family workflow discovers candidate copies and prepares reviewed canonical C controls with explicit per-level bindings. It retains constants and uses the existing unmasked exact checks; its discovery reports and private banks add no matching credit.
For acquisition links, component roles, versions and hash sources, start with
toolchain/README.md and requirements metadata.
The folder hosts documentation only; toolchain/local/ is ignored by Git.
- Python 3.12 and the pinned dependencies in requirements.txt.
- Your own legally acquired matching ISO and a runtime directory outside this repository.
- Wrench
wrenchbuildfor unpacking the level executables. - Windows and a supplied SN ProDG 2.0 EE toolchain for assembly reconstruction.
- WSL and the qualified GNU EE 2.9-ee-991111b
cpp/cc1/asprofile for C, plus the SN ProDG 3.01 EE linker. - Ghidra with verified R5900 support and analysis access for the AI.
- PCSX2 with a usable configuration and your own permitted local PS2 BIOS.
The current C flags are -O2 -G0 -ffunction-sections. The original game's compiler
identity is not established by the matching corpus. The earlier SN compiler
profile is historical; see compiler provenance and measured limits.
No SDK is supplied or downloaded by these scripts.
The full setup walkthrough explains the reference preparation and underlying gates. Check the environment first:
python scripts/doctor.py
# Install only if required package versions are missing:
python -m pip install -r requirements.txt
python scripts/setup.py --iso <disc.iso> --runtime <private-runtime-directory> --wrench <wrenchbuild.exe>Reuse a configured Python interpreter; a virtual environment is optional for dependency isolation. Use that same interpreter throughout and preserve other projects' package requirements when choosing where to install dependencies.
For an archive, replace --iso with --archive <archive.7z> --sevenzip <7z.exe>.
Preparation verifies the disc and extracts the pinned boot and all 27 overlays.
<private-runtime-directory>/latest.json points to the successful manifest.
Keep source, game images, toolchains and generated runtime outputs separate.
For a complete build with reviewed C, use the explicit preparation manifest:
python scripts/campaign.py --runtime <private-campaign-directory> integrate -- --manifest <manifest.json> --toolchain <SN-ProDG-2.0-EE-gcc-directory> --c-toolchain <SN-ProDG-3.01-EE-gcc-directory> --program-jobs 4 --jobs 2This runs fresh boot and 27-overlay gates with bounded parallelism. It produces private evidence; it does not publish proofs or push Git automatically. Review and publish the coherent proof set using the campaign procedure.
Author under src/boot/ and src/levels/. Source recipes assemble the standalone compilation units in candidates/, preserving declaration context and explicit per-program placements. The organization pilot regenerates all 28 units byte-identically. Module boundaries describe authored organization, not recovered original object files. Follow source authoring and regeneration.
python scripts/source_layout.py --check --inventory-check progress/source-inventory.json
python -m unittest discover -s tests
python scripts/readme_progress.py --checkThe authored-source inventory counts source families and textual variants separately from replicated code coverage. Its representative byte counts do not add to the game's matching numerator.
Every accepted body requires a fresh compiler-produced object, a defined function at the reviewed address, its complete symbol size and all matching bytes. The same object must pass the complete image gate before integration credit is given. Padding and remaining assembly stay in the reconstruction. Prefix matches, relocation-masked acceptance, patched bytes and guessed ABI returns are insufficient. Keep every source, catalog, tool and proof dependency coherent after an edit.
CI exports SCUS_972.68_report in objdiff report v2 format from the boot and
all 27 level integration proofs. This independently validates the current
integrated C total, source/catalog hashes, object provenance and non-overlapping ranges.
Generated section units are remaining work, not completed C translation units.
CI also publishes the separate authored-source inventory.
Dispatch-table and diagnostic-message research helps identify functions, but labels alone add no matching credit. Methods and provenance are documented in dispatch tables and assert-message annotations.
Latest matching work and its negative measurements remain in the lot documents:
| Lot | Result |
|---|---|
| 25 | Two native families and five Ship Shack bodies; 1,008 added C bytes |
| 26 | Quadratic family and seven Ship Shack bodies; 1,120 added C bytes |
| 27 | Three native families and two Ship Shack call sequences; 5,288 added C bytes |
The later source/workflow organization and README bar add no matching credit. The next targets and parked experiments are selected through the current register.
Related projects include RAC1 and UYA. Shared engine research can inform a hypothesis; addresses and code must be verified against the RAC2 target. Reused C is credited per function in the second C lot, and contributed research in community engine references. Compiler, libgcc and SDK findings measured on RAC1 are summarised in findings from rac1-decomp. OpenRAC provides a community view of decompilation projects.
Read CONTRIBUTING.md before contributing. Write documentation, comments and commits in English; use a scoped subject and substantive commit body. Keep contributions coherent, validate affected proofs and retain negative evidence. Game data, extracted retail assembly and proprietary tools remain outside Git.
- Expand matching C while keeping the boot and all affected overlay gates exact.
- Review new function boundaries and ABI, qualify complete units and publish tested lots.
- Extend verified shared families and readable source organization.
- Reach complete matching decompilation, then develop and validate the native runtime and launcher.
Intermediate percentages are milestones, not completion of the project.
MIT — see LICENSE. It covers the repository's code, never the game,
its assets or proprietary toolchains. Contributions use the same terms.
ports/pal-functional/ keeps its own MIT notice, copyright platypet2217-star,
in its LICENSE.
