Case study
C2C: hybrid recompilation and hand decompilation of Crash Bandicoot 2
An early reverse-engineering effort on PlayStation Crash Bandicoot 2 that converts the engine’s MIPS machine code directly into a very large C file and runs it against a modified PCSX-R emulator library for hardware I/O. Translated functions are meant to be decompiled by hand and moved into ordinary C, gradually replacing the mechanical translation.
- Targets
- Game
- Category
- Independent reconstruction cases
- Relationship
- Independent reconstruction project
- Sources reviewed
Requirements & limits
- Prerequisites: Running needs the user’s own PAL Crash Bandicoot 2 disc as a raw BIN image with full sector headers and that disc’s SCES_009.67 executable, plus third-party PlayStation emulator GPU, SPU and two gamepad plugins and a 128 KB memory-card file; the repository ships no game data.
- Prerequisites: Windows only: the main program builds under Cygwin with GNU Make, GCC and SDL2, the emulator library needs Microsoft Visual C++ 2005 or later, and the optional C# disassembler needs Visual C# 2005 or later. Development ran on the develop branch from January to April 2015, and there are no releases. As checked on 2026-10-20, GitHub’s last recorded push was 2020-09-30, the repository is not archived and the README does not mark it as maintained, superseded or archived.
- Limits: The README warns that the software is not intended for regular use and reports no playability status. Its translator does little decompiling and does not resolve indirect branches or jump tables, so code regions must be listed by hand; docs/FUNCTIONS.md names 18 of 818 listed function entry points.
- License: No matching or equivalence check is published. The repository has no license file; the PCSX-R-derived emulator sources carry GPL-2.0-or-later headers, and the original game retains its own rights.
About this entry
The description was reviewed against primary sources.
Primary sources
- README.md GitHub · ughman/c2c · Revision 2e9535f
- docs/FUNCTIONS.md GitHub · ughman/c2c · Revision 2e9535f
- srcdisasm/Main.cs GitHub · ughman/c2c · Revision 2e9535f
- srcemu/gte.c GitHub · ughman/c2c · Revision 2e9535f
- Makefile GitHub · ughman/c2c · Revision 2e9535f
- srczz GitHub · ughman/c2c · Revision 2e9535f
More in Games
- Castlevania 64: Recompiled — a beta static-recompilation port · Case study
- Conker's Bad Fur Day: Recompiled — an N64Recomp native port · Case study
- CPS-2 Recomp: static recompilation of Capcom CPS-2 and CPS-1 arcade games · Case study
- Crash Bandicoot 2 Recompiled: a PSXRecomp native build · Case study
- Dead Rising 2: Case West — a sibling Xbox 360 XBLA static recompilation port · Case study
- Dead Rising 2: Case Zero — an Xbox 360 XBLA static recompilation port · Case study