Case study

Final Fantasy VII: a matching PlayStation decompilation

Reconstructs C source for the US PlayStation release of Final Fantasy VII, aiming for code that compiles back to the original main executable and its game overlays. The build splits the user’s disc files with splat, compiles with period cc1-psx compilers and checks every rebuilt file against its SHA-1. A native build against the PsyZ PlayStation-library replacement is compiled in CI but is not documented as a playable port.

Requirements & limits

  • The project describes itself as a matching decompilation of the PS1 game; config/us.yaml defines the single us version, covering SCUS_941.63 and battle, field, menu, world, minigame, magic and other overlays with 29 SHA-1 entries. Source tables such as the chocobo minigame’s arccosine table are data taken from the game, as is usual for such projects. README states no completion figure; CI uploads a progress report as a build artifact, and this collection recorded none.
  • Supply disc 1 of Final Fantasy VII (USA) as BIN/CUE under disks/; README lists the USA Interactive Sampler CD as optional, though the reviewed config builds only us. CONTRIBUTING says the repository includes no original game data and is not a playable or standalone version. CI fetches its disc images from a private dependency repository through a secret token.
  • README documents Debian/Ubuntu and Arch Linux with Go, Python 3 (a venv with splat64, spimdisasm and others), ninja, 7zip, bchunk and mipsel-linux-gnu binutils and GCC; CI notes that Ubuntu 24.04’s binutils 2.42 linker does not match the game. Make downloads the cc1-psx-26 and cc1-psx-272 compiler builds from the project’s init release and checks them against committed SHA-256 files; maspsx, m2c, asm-differ and PsyZ come in as submodules, and a Dockerfile is provided.
  • make build ends with a ninja rule running sha1sum -c over the expected hashes of every overlay. CI on the upstream repository checks formatting, runs that build, lints for overlapping symbols and compiles the PsyZ build. These checks compare file identity for the US release, not gameplay coverage, and this collection did not rerun them.
  • LICENSE is AGPL-3.0; the game discs, extracted data and downloaded compilers keep separate rights. README says the decompiled code is written by humans and rejects LLM-accelerated decompilation, while allowing LLMs for tooling, permuting hard functions or hunting runtime bugs; CONTRIBUTING forbids autonomously generated pull requests and commit messages. No REA use is documented and no runtime reproduction is claimed.

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.

Report an outdated entry Suggest a translation fix

Primary sources

  1. README.md GitHub · Xeeynamo/ff7-decomp · Revision 37f35a5
  2. CONTRIBUTING.md GitHub · Xeeynamo/ff7-decomp · Revision 37f35a5
  3. Makefile GitHub · Xeeynamo/ff7-decomp · Revision 37f35a5
  4. config/us.yaml GitHub · Xeeynamo/ff7-decomp · Revision 37f35a5
  5. tools/ninja/gen.py GitHub · Xeeynamo/ff7-decomp · Revision 37f35a5
  6. tools/builder/builder/build.go GitHub · Xeeynamo/ff7-decomp · Revision 37f35a5
  7. .github/workflows/build.yaml GitHub · Xeeynamo/ff7-decomp · Revision 37f35a5
  8. CMakeLists.txt GitHub · Xeeynamo/ff7-decomp · Revision 37f35a5
  9. .gitmodules GitHub · Xeeynamo/ff7-decomp · Revision 37f35a5
  10. bin/cc1-psx-26.gz.sha256 GitHub · Xeeynamo/ff7-decomp · Revision 37f35a5
  11. Dockerfile GitHub · Xeeynamo/ff7-decomp · Revision 37f35a5
  12. LICENSE GitHub · Xeeynamo/ff7-decomp · Revision 37f35a5

More in Games

All 231 entries in GamesGames case studies (189)