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
Total Progress | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
⚙ SLUS-00707 ⚙ | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Progress | Purpose | |||||||||||||||||||||||||||||||||||||||||||||||||||||||
Main executable. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Progress | Purpose | |||||||||||||||||||||||||||||||||||||||||||||||||||||||
Psy-Q libraries. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
🎮 Game System Overlays 🎮 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Click here to expand
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||
🗺 Game Map Overlays 🗺 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Click here to expand |
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.
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.