mkst / esa

Evo's Space Adventures for PSX. A proof of concept, matching PSX decompilation, leveraging tools from N64 decomp projects.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Evo's Space Adventures PSX

build

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.

Building

The instructions below assume that you will be using Ubuntu 20.04; either natively, via WSL2, or via Docker. Please check the packages.txt and requirements.txt for the prerequisite Linux and Python packages respectively.

Cloning

Clone the repository; note the --recursive flag to fetch submodules at the same time:

git clone --recursive git@github.com:mkst/esa.git

Navigate into the freshly cloned repo

cd esa

Copy esa.dat from your ESA CDROM to the root of the repo and then you are ready to build.

Using Docker

Spin up a container using the pre-built, ready-to-go, image:

docker run --rm -ti -v $(pwd):/esa ghcr.io/mkst/esa:latest

Common Steps

Extract & disassemble the esa.dat executable:

make extract

Compile back into build/esa.dat:

make all --jobs

Notes

Toolchain

This 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.

Space Station Silicon Valley

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.

Tools / Thanks

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

About

Evo's Space Adventures for PSX. A proof of concept, matching PSX decompilation, leveraging tools from N64 decomp projects.


Languages

Language:C 95.0%Language:Python 3.4%Language:Makefile 1.1%Language:Assembly 0.2%Language:Shell 0.1%Language:Dockerfile 0.1%Language:C++ 0.1%