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.

Requirements and limitations

  • 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.
  • 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.
  • 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.
  • No matching or equivalence check is published, and nothing was built or run here. 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. No REA or AI involvement is documented.

About this entry

Type
Case study
Category
Independent reconstruction cases
Relationship
Independent reconstruction project
Targets
Game

Sources reviewed

The description was reviewed against primary sources. This does not establish runtime testing, security auditing or verified compatibility.

Primary sources

  1. README.md GitHub · ughman/c2c · Revision 2e9535f
  2. docs/FUNCTIONS.md GitHub · ughman/c2c · Revision 2e9535f
  3. srcdisasm/Main.cs GitHub · ughman/c2c · Revision 2e9535f
  4. srcemu/gte.c GitHub · ughman/c2c · Revision 2e9535f
  5. Makefile GitHub · ughman/c2c · Revision 2e9535f
  6. srczz GitHub · ughman/c2c · Revision 2e9535f