Skip to content

Reference Projects

Italo Dell Areti edited this page May 18, 2026 · 1 revision

Reference Projects

ps1-recomp did not happen in isolation. This page indexes the projects we studied or use as reference, with a short note on what each one contributes to our design or implementation.

Project Sub-page Why it matters
N64Recomp (Wiseguy) Reference-Projects-N64Recomp Pioneered the static-recompilation technique for retro consoles. Data-driven instruction tables, Generator abstraction, recomp_context pointer pattern.
PS2Recomp (ran-j) Reference-Projects-PS2Recomp Direct architectural model: three binaries (Analyzer + Recomp + Runtime), in-tree runtime, TOML config, ps2_runtime_macros.h style.
psxrecomp (mstan) Reference-Projects-PSXRecomp Reference PS1 static recompiler. Tomba! runs full gameplay (movement + FMV + audio). Source of patterns for SPU ADPCM, XA streaming, fiber-based VBlank, BIOS stubs.
c1c (ManDude) Reference-Projects-c1c Crash Bandicoot 1 hand-decompilation. Architectural sibling to this project (same srczz/*.h + src/*.cc split). emuptr<T> + EMUGLOBALVAR patterns; conceptual reference for the NS chunk subsystem port.
psyz (Xeeynamo) Reference-Projects-PSY-Z Matching decompilation of PSY-Q 4.00 and 4.70 with symbol maps. Used to cross-reference and expand our PsyQ signature database.
Misc (ps1-bare-metal, ghidra_psx_ldr, psx-spx, DuckStation, decomp.me, Chrono Cross decomp) Reference-Projects-Misc Hardware definitions, PsyQ GDT type libraries, the No$PSX specs, the gold-standard PS1 emulator, the matching-decomp community platform, and a PSX matching decomp template.

Quick comparison

Aspect ps1-recomp N64Recomp PS2Recomp psxrecomp
Module split 3 binaries 1 CLI; runtime in separate repo 3 binaries (in-tree runtime) 2: Recomp + Runtime
HLE strategy Hash-based PsyQ (3463 sigs) Manual TOML stubs Macro lists (~430 entries) None / per-game CSV
Tests 557 gtest + 8 pytest Minimal ~10 files None
Runtime location In-tree External repo (N64ModernRuntime) In-tree In-tree
Code emission Single recompiled_out.cpp One .c per function (batchable) Configurable Single _full.c + _dispatch.c
License GPL v3 MIT GPL v3 PolyForm NC

Workspace layout

These projects are cloned locally (not vendored) for cross-reference. By convention they live in a sibling PS1Recomp-workspace/ directory:

PS1Recomp-workspace/
├── N64Recomp/           N64 static recompiler
├── PS2Recomp/           PS2 static recompiler
├── psxrecomp/           PS1 static recompiler (Tomba reference)
├── c1c/                 Crash Bandicoot 1 hand-decomp
├── psyz/                PSY-Q matching decomp + symbol maps
├── gooc/                GOOL compiler (BSD 2-clause)
├── goocdump/            GOOL decompiles per entity
├── CrashEdit/           Crash editor (C#) — NSF parser, GOOL instructions
├── duckstation/         Reference emulator
├── psx-spx.github.io/   No$PSX specs (Markdown)
├── ghidra_psx_ldr/      Ghidra plugin: PSX loader + PsyQ GDTs
├── ps1-bare-metal/      PS1 hardware register definitions
├── chrono-cross-decomp/ Matching decomp template (PSY-Q)
└── decomp.me/           Web platform for matching decomp

This directory is not a git submodule of ps1-recomp — it is a working mirror that contributors maintain on their own machines.

Clone this wiki locally