Skip to content

Repository files navigation

東方花映塚 ~ Phantasmagoria of Flower View

TH09 reconstruction progress

This project reconstructs the original Japanese TH09 version 1.50a executable. It starts from an independently versioned, hash-attested target and tracks boundary, origin, source presence, codegen exactness, native-product closure, runtime semantics, and portability as separate facts.

Exact target

Supply your own legal copy through TH09_TARGET_PATH, an explicit argument, or the ignored path resources/th09.exe:

Property Required value
Version original Japanese 1.50a
Size 685,056 bytes
SHA-256 10350095bcf95edb59e03bee9849a2dc8a7714b4927ad5909c569c550fce6822
MD5 cf634df46e05552e104fa97a971aaac0
Image base 0x00400000
Entry point 0x0047D45F

The pinned thcrap version database classifies this exact SHA-256 and size as th09, v1.50a, (original) and lists the English-patched executable under a different digest. The official 1.50a release post is dated 2005-10-08 JST, consistent with the target's PE timestamp.

export TH09_TARGET_PATH='/path/to/legal/th09.exe'
python3 scripts/verify-target.py
python3 scripts/check-ida-mcp.py
python3 scripts/validate-tracking.py --require-target
python3 scripts/report-reconstruction-status.py

Original executables, game data, IDA databases, decompiler output, and downloaded tools are private and never committed.

Current status

The target and the live IDA database are attested. The initial IDA function inventory is intentionally provisional: every candidate begins with unknown origin, unreviewed boundaries, no source-presence claim, and no exactness credit. The PE and Rich header identify Microsoft Visual C++ .NET 2003 build 3077; compiler flags, translation-unit boundaries, libraries, resources, and link order remain unknown. config/build.toml records that open whole-product graph instead of pretending the project is buildable.

Run python3 scripts/progress.py to regenerate the status card and python3 scripts/ci.py for the small target-independent validation set.

Required phase order

  1. Reconcile authored boundaries and recover exact VC7.1 units.
  2. Close and exercise the faithful Windows i386 product, including static data ownership, initializers, resources, libraries, and runtime scenarios.
  3. Perform semantic reconstruction with two independent runtime Oracles: the original target and the reconstructed native i386 product.
  4. Start a portability branch only after the native semantic baseline is trustworthy.

Exact functions do not imply a complete or runnable product. A modern port can hide missing original data owners, ABI behavior, and initialization, so it is not an acceptable shortcut around the native-product stage.

Project map

License

Repository-authored code and documentation are provided under the MIT License. This does not grant rights to the original game or its assets.

Releases

Packages

Contributors

Languages