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.
Place your own legal copy at the ignored canonical path
resources/th09.exe. Repository tools use that path by default. An explicit
path or TH09_TARGET_PATH is supported only for deliberate local overrides;
normal Factory work must use the canonical path.
| 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.
python3 scripts/verify-target.py
python3 scripts/validate-tracking.py --require-target
python3 scripts/report-reconstruction-status.pyIDA attestation is environment-specific: local Codex may use the registered
direct provider or scripts/check-ida-mcp.py, while Factory/Web must call
get_metadata with {} through the attested th09-ida provider. See
AGENTS.md and docs/TOOLS.md before analysis.
Original executables, game data, IDA databases, decompiler output, and downloaded tools are private and never committed.
The latest checkpoint attested the target and live IDA database, but every new
session must attest both again. Current ledger totals are generated in
docs/PROGRESS.md and summarized with the active frontier
in docs/RE_HANDOFF.md; do not copy historical packet
counts or old remains source-absent/unknown wording into a new decision. When a
historical packet conflicts with config/functions.csv, config/matches.csv,
or the maintained fact-index table at the top of docs/KNOWLEDGE_BASE.md, the
current ledgers/fact index win.
The PE and Rich header identify Microsoft Visual C++ .NET 2003 build 3077.
Some runtime-library contributions and compiler-generated helpers are proven,
but the complete translation-unit graph, resources, data owners, compiler
profiles, and link order remain open. config/build.toml records that state
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.
- Preserve the reviewed boundary/origin inventory and recover remaining exact VC7.1 authored units.
- Close and exercise the faithful Windows i386 product, including static data ownership, initializers, resources, libraries, and runtime scenarios.
- Perform semantic reconstruction with two independent runtime Oracles: the original target and the reconstructed native i386 product.
- 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.
AGENTS.md— mandatory session, evidence, and checkpoint rules.config/target.toml— exact target and observed PE/toolchain facts.config/build.toml— whole-product graph and explicit unknowns.docs/RE_WORKFLOW.md— bounded reconstruction loop and stage gates.docs/ORACLES.md— what can falsify or accept each claim.docs/RE_HANDOFF.md— current phase and restart commands.docs/KNOWLEDGE_BASE.md— durable TH09-only facts.docs/TOOLS.md— local and Factory tool routing.docs/PROGRESS.md— generated ledger totals.- Touhou Reconstruction Factory — shared ontology, workflow, and cross-game knowledge.
Repository-authored code and documentation are provided under the MIT License. This does not grant rights to the original game or its assets.
