Himuro is a project that aims to have a matching source decompilation of the PS2 game Fatal Frame 1; Project Zero; 零. Once we have a matching decompiled rom we want to port the game to modern hardware.
| Name | Region | Game ID | Progress (powered by decomp.dev) |
|---|---|---|---|
| Fatal Frame | US | SLUS_203.88 | |
| Project Zero | EU | SLES_508.21 | |
| Zero | JP | SLPS_250.74 |
No game assets are hosted on this repository. You must provide them yourself, copying them from a legal copy.
Linux is required in order to build this project. It requires a compiler that is only available for Linux. You'll also need at least python 3.8 to run any command. Your linux distribution should come with python3 already installed. If not, please follow your distribution's instructions to install it. Python is a mandatory dependency, as many core tools are written in python. On Ubuntu, if necessary, python3 can be installed with the following command:
sudo apt install python3-fullThe original GCC compiler is a 32-bit executable, so on a 64-bit system the i386 architecture must be added in order for the system to run it. On Ubuntu you can use the following commands:
sudo dpkg --add-architecture i386
sudo apt update
sudo apt install libc6:i386 libstdc++6:i386sudo apt install make python3-venvThis project requires a custom PS2-specific version of binutils to assemble the extracted MIPS assembly. The system-provided binutils-mips-linux-gnu package may not work correctly with PS2 assembly, so manual installation is required.
Download the binutils-mips-ps2-decompals-linux-x86-64.tar.gz (v0.10) package.
Extract the archive to a location of your choice, for example:
sudo mkdir -p /opt/binutils-mips-ps2-decompals
sudo tar -xzf binutils-mips-ps2-decompals-linux-x86-64.tar.gz -C /opt/binutils-mips-ps2-decompalsThen add the bin directory to your PATH environment variable:
export PATH="/opt/binutils-mips-ps2-decompals/:$PATH"To make this change persistent, add the line above to your shell configuration file (for example ~/.bashrc, ~/.zshrc, or equivalent), then restart your terminal or reload your shell.
Verify the installation by running:
mips-ps2-decompals-as --versionIf the installation was successful, the command should print the assembler version information.
Python's virtual environments are the preferred way to use this software, as you may not be allowed to install packages globally.
python3 -m venv .venv
source .venv/bin/activate
python3 -m pip install -r requirements.txtThe main executable is needed in order to perform the decompilation.
Copy SLES_508.21 from DVD/ISO into config/eu/. File must have the following sha1 hash:
cb36d4365e70be9e9dc5bb66e2aa083811a39f12
Copy SLUS_203.88 from DVD/ISO into config/us/. File must have the following sha1 hash:
5ac4626e0d76218e977b01f4fae5948de9a1755e
Copy SLPS_250.74 from DVD/ISO into config/jp/. File must have the following sha1 hash:
7aa0b147649b015a14f86c8f89cc7c1b89430958
NOTE: this operation needs to be performed only once.
make eu-extract-datamake us-extract-datamake jp-extract-dataNOTE: running these commands on an already configured project will reconfigure it.
make eu-configuremake us-configuremake jp-configuremake eu-buildmake us-buildmake jp-buildmake eu-cleanmake us-cleanmake jp-cleanTo have a list all available commands, run make without targets:
make- Add the decompiled code to the TU's
cfile insrc/ - Update
config/{region}/ff1.{region}.yaml:- Replace
asmwithcfor the TU you are decompiling - Add a leading dot (
.) to the type (e.g.,rodata->.rodata) of each subsection that belongs to the TU
- Replace
- Reconfigure the project
- Build the project