WIP Silent Hill decompilation project

4 months ago 7

An in-progress decompilation of the 1.1 US release of Silent Hill on the Playstation 1.

Due to the limited memory on the PlayStation 1, games often distribute their logic and functionality across different binary overlays. Silent Hill follows this approach by separating core engine code, screen-related code, and map stage event code into many distinct binaries. The main executable (SLUS_007.07 on the 1.1 NTSC release) serves primarily as a memory handler.

Progress bars powered by decomp.dev

Install build dependencies

The build process has the following package requirements:

  • git
  • build-essential
  • binutils-mips-linux-gnu
  • cpp-mips-linux-gnu
  • python3
  • python3-venv
  • bchunk
  • 7z

Under a Debian-based distribution (or Windows with a Debian-based WSL2 setup), you can install these with the following commands:

sudo apt update sudo apt install git build-essential binutils-mips-linux-gnu cpp-mips-linux-gnu python3 python3-venv bchunk p7zip-full

Clone https://github.com/Vatuu/silent-hill-decomp to your desired directory. Make sure to clone recursively!

git clone --recursive https://github.com/Vatuu/silent-hill-decomp.git && cd silent-hill-decomp

You will need to provide your own ROM dump of the NTSC-U 1.1 version of the game, if dumped correctly you should have a .BIN file with the SHA1 hash 34278D31D9B9B12B3B5DB5E45BCBE548991ECBC7 (616,494,480 Bytes / 587 MiB).

After dumping, this BIN file must be placed as rom/image/SLUS-00707.bin in the repo.

Setup Python virtual environment and requirements

Modern Linux distros require a virtual environment to be setup before installing requirements with pip.

You can setup an environment in the repo folder with the following:

python3 -m venv .venv # creates a .venv folder with the environment source .venv/bin/activate # activates the environment (needs to be run in every new terminal session) python3 -m pip install -r requirements.txt # installs the project requirements from requirements.txt

Run make setup to extract needed assets and code from the binary. If the setup was successful, run make to build. Once the build has finished, a folder named build will be produced. The output will be inside this.

Additional Make commands:

  • build: Builds the executable and overlays.
  • check: Builds the executable and overlays. After compilation, it compares checksums with the original files.
  • clean-build: Clears the project configuration without deleting files.
  • clean-check: Clears the project configuration without deleting files. After compilation, it compares checksums with the original files.
  • objdiff-config: Generates project configuration for Objdiff.

NOTE: clean-build/clean-check are obligatory if the configuration in the Makefile has been modified when intending to work on different overlays.

Contributions are welcome. Following our code conventions, feel free to contribute via a pull request or issue and join us in the PS1/PS2 Decompilation Discord server's #silent-hill channel.

Read Entire Article