A Proof-of-Concept, Work-in-Progress, decompilation of Evo's Space Adventure for the PlayStation 1.
See the Wiki for more information.
Note: To use this repository, you must already own a copy of the game.
The instructions below assume that you will be using Ubuntu 22.04; either natively, via WSL2, or via Docker.
Please check the packages.txt and requirements.txt for the prerequisite Linux and Python packages respectively.
Clone the repository; note the --recursive flag to fetch submodules at the same time:
git clone --recursive [email protected]:mkst/esa.gitNavigate into the freshly cloned repo
cd esaCopy esa.dat from your ESA CDROM to the root of the repo and then you are ready to build.
Spin up a container using the pre-built, ready-to-go, image:
docker run --rm -ti -v $(pwd):/esa ghcr.io/mkst/esa:latestExtract & disassemble the esa.dat executable:
make extractCompile back into build/esa.dat:
make all --jobsThis project uses gcc 2.92.2, GNU as, and maspsx in order to build a matching binary without the need to use the PSYQ toolchain. The modern-aspsx script is WIP and may not cover all required functionality.
This project only exists for two purposes; firstly to demonstrate that a PSX decompilation can be accelerated by using the tools that have been built for N64 decomp projects, and secondly (and more importantly) to help accelerate the existing SSSV decomp project.
Large chunks of code have been copy/pasted from the N64 version of the game and the PSX port, and therefore by working on both projects (with different compilers - IDO vs GCC) we are able to gain a little more insight than by decompiling SSSV alone.
That said, a lot of the functionality has been stripped away; the PSX port is a much more basic version of the game.
Files in this project have been named based on their SSSV counterparts.
Upon the shoulders of giants... This project would not be possible without these tools (+ more):
- asm-differ; rapidly diff between source/target assembly
- binutils; where we would we be without GNU.
- decomp-permuter; tweaks code, rebuilds, scores; helpful for weird regalloc issues
- m2c; assembly to C code translator
- modern-asn64; proof that GNU as can be used to build PSYQ-compiled games!
- old-gcc; collection of old gcc versions that are ready to go
- splat; binary splitter/disassembler + more