| File name | Progress | Description |
|---|---|---|
SLPM_861.83 |
Full game executable |
You will need to install the following dependencies from your package manager:
- git
- cmake
- build-essential
- binutils-mips-linux-gnu
- cpp-mips-linux-gnu
- python3
- python3-venv
On a Debian-based distribution (Ubuntu or WSL with Debian/Ubuntu), you can run these commands to install them:
sudo apt update
sudo apt install git cmake build-essential binutils-mips-linux-gnu cpp-mips-linux-gnu python3 python3-venv
On a system with Nix installed, there is a development shell you can activate on this repository. It includes a Ghidra setup and PCSX-Redux. You can run this command to start:
nix-shell
Note that due to nixpkgs' binary cache storage limit, cross-platform binaries are not cached, meaning you will have to build the MIPS GCC toolchain on your system. This task can usually take around 30 minutes, depending on your system's specs.
Clone this repository to the directory of your choice. Make sure to clone it recursively!
git clone --recursive https://github.com/Erizur/slpm86183.git && cd slpm86183
Now that you have the repository and all of the submodules, go to the tools/mkpsxiso directory and run the following commands:
cmake -S . -B build
cmake --build build
You should now have a build folder with the mkpsxiso and dumpsxiso binaries. We will need them for the next step.
You will need to provide your own dump of the retail game's ROM. (sha1: 891cfb144375d3f71b1067f74400ac07e1fa5355)
You should obtain a .BIN, place it on the parent directory and rename it into popn.bin. Once that's done, open a terminal and run make teariso.
If you did everything correctly, there should now be an iso folder, and a binary called SLPM_861.83 on the main directory. DO NOT OVERWRITE/DELETE THIS FILE, as it is the original binary to be used as reference for other programs in the decompilation.
To setup the Python shell with all the requirements for the project, you will need a virtual environment (.venv) with pip.
You can set up an environment by running the following commands on the main directory:
python3 -m venv .venv # Creates `.venv` folder with environment.
source .venv/bin/activate # Activates environment (must be run in every new terminal session).
python3 -m pip install -r requirements.txt # Installs project requirements from `requirements.txt`.Because NixOS can not run dynamically-linked executables, and the requirements' heavy reliance on external dependencies, you will have to use tools like nix-ld as a workaround. As an alternative, if you are using flakes, you can create the virtual environment using tools like fix-python instead, but you will need different arguments to set it up:
# These commands assume you are on a development shell with Python3 included. The shell.nix from the repository does not include Python.
python3 -m venv .venv --copies # Creates `.venv` folder with environment, and copies over the python binaries.
nix shell github:GuillaumeDesforges/fix-python # Starts a shell with the fix-python commands.
fix-python --venv .venv # Patches the python binaries.
source .venv/bin/activate # Activates environment (must be run in every new terminal session).
python3 -m pip install -r requirements.txt # Installs project requirements from `requirements.txt`.
fix-python --venv .venv # Patches the newly downloaded binaries.
exit # Exits the fix-python shell.(Mostly taken from the silent-hill-decomp project :P)
On the parent directory in a terminal, run make setup to extract the needed code from the binary.
If it finished successfully, run make to build.
Once the build has finished, a folder named build will be produced. The output results and binaries will be inside.
Additional make commands:
build: Builds the executable.check: Builds the executable. After compilation, it compares its checksum with the original file.clean-build: Regenerates the project configuration and builds the executable.clean-check: Regenerates the project configuration and builds the executable. After compilation, it compares its checksum with the original file.objdiff-config: Generates project configuration for objdiff.compilation-test: Run progress and matching build processes for avoiding compilation errors.
NOTE: clean-build/clean-check/compilation-test is obligatory if the decompilation configuration files inside the config folder or the Makefile have been modified.