# Himuro: a matching Fatal Frame PS2 decompilation

> Reconstructs Fatal Frame’s PS2 executable as C for the US, EU and Japanese releases, built with the original EE-GCC 2.9 toolchain and checked by SHA-1 against the user’s own executables. Committed objdiff reports list the US and EU code as fully matched and the Japanese code as partial, and a few routines still rely on assembly or byte patches. Porting to modern hardware is a stated later goal, not part of this repository.

- Type: Case study
- Targets: Game
- Category: Independent reconstruction cases
- Relationship: Independent reconstruction project
- Sources reviewed: 2026-10-18
- Added to the catalog: 2026-10-19
- Original resource: <https://github.com/Mikompilation/Himuro>
- Primary source: <https://github.com/Mikompilation/Himuro/blob/595b082aef19c329a25dc6926e4ac638d13ed75d/README.md>
- Catalog page: <https://awesomerea.org/resources/himuro-fatal-frame-decomp-case/>
- Record JSON: <https://awesomerea.org/resources/himuro-fatal-frame-decomp-case/record.json>
- Chinese version: [简体中文](https://awesomerea.org/zh/resources/himuro-fatal-frame-decomp-case/index.md)

## Requirements & limits

- **Prerequisites:** Copy the matching main executable from your own disc or ISO into config/<region>/; the README gives the required SHA-1 for each region. Data extraction, splitting and the expected assembly are generated locally, and no game assets are committed.
- **Prerequisites:** Linux is required: Python 3.8+ in a virtual environment, make, i386 libc/libstdc++ for the committed 32-bit EE-GCC 2.9-991111-01 compiler, and the decompals PS2 binutils v0.10 installed separately; objdiff-cli is also committed. Each region is extracted, configured and built separately.
- **Scope:** Covers SLUS_203.88 (US), SLES_508.21 (EU) and SLPS_250.74 (JP); the output is a rebuilt PS2 ELF, not a PC port, which the README names only as a later goal. After the project’s own report-adjustment script, the committed objdiff reports list 3,437 of 3,437 US and 3,464 of 3,464 EU functions with all code and data matched, but 2,712 of 3,394 JP functions (73.64% of code). The README’s decomp.dev badges are mutable.
- **Testing evidence:** The ninja build runs sha1sum against config/<region>/checksum.sha1, so a successful build reproduces the supplied executable. To reach that hash, the build rewrites selected compiler output from asm_patches.json and copies listed byte ranges from the original executable into the built file (PhotoScoreCount in US and EU, DspSpData in EU). CI only uploads the committed reports and cannot build without the executables.
- **License:** MIT license for the project; Fatal Frame and its executables retain separate rights, and the committed compiler binaries keep their own terms.

## Primary sources

1. <https://github.com/Mikompilation/Himuro/blob/595b082aef19c329a25dc6926e4ac638d13ed75d/README.md>
2. <https://github.com/Mikompilation/Himuro/blob/595b082aef19c329a25dc6926e4ac638d13ed75d/LICENSE>
3. <https://github.com/Mikompilation/Himuro/blob/595b082aef19c329a25dc6926e4ac638d13ed75d/configure.py>
4. <https://github.com/Mikompilation/Himuro/blob/595b082aef19c329a25dc6926e4ac638d13ed75d/Makefile>
5. <https://github.com/Mikompilation/Himuro/blob/595b082aef19c329a25dc6926e4ac638d13ed75d/config/us/checksum.sha1>
6. <https://github.com/Mikompilation/Himuro/blob/595b082aef19c329a25dc6926e4ac638d13ed75d/config/us/report.json>
7. <https://github.com/Mikompilation/Himuro/blob/595b082aef19c329a25dc6926e4ac638d13ed75d/config/eu/report.json>
8. <https://github.com/Mikompilation/Himuro/blob/595b082aef19c329a25dc6926e4ac638d13ed75d/config/jp/report.json>
9. <https://github.com/Mikompilation/Himuro/blob/595b082aef19c329a25dc6926e4ac638d13ed75d/config/us/bin_patches.json>
10. <https://github.com/Mikompilation/Himuro/blob/595b082aef19c329a25dc6926e4ac638d13ed75d/config/eu/bin_patches.json>
11. <https://github.com/Mikompilation/Himuro/blob/595b082aef19c329a25dc6926e4ac638d13ed75d/config/us/asm_patches.json>
12. <https://github.com/Mikompilation/Himuro/blob/595b082aef19c329a25dc6926e4ac638d13ed75d/tools/python/fix_bin_matching.py>
13. <https://github.com/Mikompilation/Himuro/blob/595b082aef19c329a25dc6926e4ac638d13ed75d/tools/python/fix_report.py>
14. <https://github.com/Mikompilation/Himuro/blob/595b082aef19c329a25dc6926e4ac638d13ed75d/.github/workflows/progress.yml>

## More in Games

- [ICO decompilation: byte-identical PAL and Japanese PlayStation 2 boot ELFs](https://awesomerea.org/resources/ico-matching-decomp-case/index.md) · Case study
- [Kingdom Hearts 358/2 Days: a matching Nintendo DS decompilation](https://awesomerea.org/resources/kingdom-hearts-days-matching-decomp-case/index.md) · Case study
- [LEGO Island: source reconstruction with separately reported exact rebuilds](https://awesomerea.org/resources/lego-island-decomp-case/index.md) · Case study
- [Majora’s Mask: matching US N64 decompilation](https://awesomerea.org/resources/zelda-mm-decomp-case/index.md) · Case study
- [Mario Kart Wii: an in-progress matching decompilation of the PAL release](https://awesomerea.org/resources/mario-kart-wii-decomp-case/index.md) · Case study
- [Mario Kart: Double Dash!!: a matching GameCube decompilation of the debug build](https://awesomerea.org/resources/mario-kart-double-dash-decomp-case/index.md) · Case study

## About this entry

The description was reviewed against primary sources.
Original editorial content: MIT. Linked projects, papers and assets retain their own rights and licenses.
