Source reconstruction of the original Japanese TH20 v1.00a Steamless executable. Function-level exactness requires reproducible comparison against one hash-attested target. The workflow follows TH095, with Ghidra and a separate modern MSVC environment for TH20.
Important
Reconstruction is in progress. Verified source components and exact function comparisons are available; the repository does not yet build a playable game. Origin review, source presence, exactness, linkage and runtime behavior are separate statuses.
Supply your own executable as resources/th20.exe:
| Property | Required value |
|---|---|
| Version | Japanese 1.00a, user-selected Steamless variant |
| Embedded title/replay label | 1.00c; recorded separately from registry/package identification |
| Size | 1,858,560 bytes |
| SHA-256 | a274b45fe6ec53511718bb328c2ff169a74e67f95d1b0c74d97d348b955a0897 |
| MD5 | e7ccdbd2f319ba868ce386e484fff1d3 |
| Image base | 0x00400000 |
| Entry point | 0x005435E0 |
scripts/import-target.sh /path/to/th20.exe
scripts/repo-python scripts/verify-target.pyThe Steam-original backup is retained locally as provenance evidence. Its code differs from the comparison target. See target provenance for official Japanese release and independent executable identification. Game executables, assets, private databases, toolchains and reference checkouts are excluded from Git.
At the October 30, 2026 checkpoint the maintained graph has 1,238
source-present mappings, 1,238 strict canonical native units and
259 canonical MSVC object/receipt providers. Independently verified
game-authored whole-function exactness is 589 complete functions /
193,512 original native bytes. These are dated values, not a
whole-game buildability or playable-game claim: always run
scripts/repo-python scripts/report-reconstruction-status.py --summary
for the live inventory and consult the
current concise handoff for the unfinished bosses.
| Area | Verified current state |
|---|---|
| Large game-original exact bodies | 11,110B ECL Runtime tick, 3,735B Bullet emitter /3,832B complete compiler extent, 3,490B InputDevice poll, 456B Animation handle resolver, 1,404B Bullet command-11, 1,036B LZSS compressor and 73B Animation factory are whole native strict exact. |
| Source-present, NONEXACT | 3,111B Player main, 555B Player movement, 273B Bullet draw group, and 1,649B Enemy mesh. Compiler, stack and ABI/codegen differences remain. |
| Giant original bosses, NONEXACT (Animation draw and quad submission source-present; Bullet command, Enemy ECL and Animation VM source-absent) | 12,140B Bullet command processor, 5,993B Animation draw Boss now with complete 49-mode typed C++ source, still NONEXACT, 3,159B quad submit Boss with complete typed C++ but nonexact codegen, 41,967B Enemy ECL dispatcher and 39,470B Animation VM. Exact children do not close these parent bodies. |
| Bullet command call graph | Entire original 12,140B has 210 original native E8 calls, 208 with fully strict-canonical source targets and two compiler-runtime-only outstanding. Seven new Animation methods in two batches add 447 whole native original bytes, but the parent remains NONEXACT. The three original switch tables contain 53 genuine PE HIGHLOW code pointers. |
| Renderer/Animation draw (whole strict children vs nonexact parents) | Whole-native strict exact: 2,725B ten-mode D3D9 texture/sampler boss including its ten-case PE table; 1,163B four-mode blend-state boss including its four-way PE table; 352B batch append +26B forwarding wrapper; 60B game texture lookup and 34B+16B checked STL helpers, with library bytes excluded from game credit; 192B D3D9 batch flush; five quad drawing mode wrappers and three 92B Graphics state-cache transitions. Still NONEXACT parents: 3,159B quad submission with 41/41 E8 and 96/96 HIGHLOW target roles and 5,993B draw dispatcher with all 123 E8 roles. Original source-role counts do not establish machine-code exactness. |
| Typed gameplay and native library source | 199B Bullet interpolation game methods, Animation/Player/ECL game methods, Laser lifetimes, geometry and value methods. Separate PMR vector STL and shared_ptr STL code is library-excluded, not additional game-authored exact credit. |
| Original game data | 72B signed 9x2 Player movement direction table is exact original .rdata and real maintained C++; not counted as authored .text. |
| Whole-program link or playability | Not yet available. Strict mapping, provenance, game-origin credit and executable runtime are distinct. |
Generated progress and the status reporter provide live authored totals. The current handoff records remaining work and local verification; the evidence index routes dated investigations without mixing historical counts into current status.
The pinned toolchain candidate is MSVC 19.44.35211 x86, Windows SDK 10.0.26100.0 and D3DX 9.29.952.8. Accepted units use explicit per-source profiles. These results do not establish executable-wide compiler flags, SDK or CRT identity.
Documentation and artifact-cleanup handoffs use diff/link checks and protected
product hashes. An unchanged native compiler-input graph needs no replay,
compiler, Ghidra or full CI run. Shared-header text edits can invalidate
pinned compiler receipt hashes: replay only the actual pre-edit receipt include
closure in that case. Use the gpt-web: commit prefix.
When code or infrastructure changes warrant broader checks, public CI needs Python 3.11+, with no original game or C++ compiler:
scripts/repo-python scripts/ci.pyDefault CI checks the exact oracle and repository metadata. The historical
portable C++ semantic suite has been retired; retained tests
cover exact comparison and repository tools. Exact checkpoints require affected
native builds and complete strict replay. A specific unresolved behavior or ABI
question can use a temporary probe under .analysis/.
Private preflight for reconstruction changes is:
scripts/bootstrap-tools.sh
scripts/repo-python scripts/verify-target.py
scripts/repo-python scripts/report-reconstruction-status.py --summary
scripts/repo-python scripts/validate-tracking.py --require-targetOn a fresh private workspace, provision tools as described in
Tools, then run scripts/repo-python scripts/ghidra.py import once.
Every query re-attests the executable and complete mapped code section;
inventory refreshes never overwrite reviewed ledgers.
For source changes, derive the actual affected providers from captured include
closures and manifest dependencies. Build and replay only those units, with
individual unit commands or explicit --source filters. New exact acceptance
requires affected cold builds; see build and matching.
Oracatt/Touhou20 is pinned locally under
ignored _reference/Touhou20. Its target hash matches ours. Its v1.00c label
comes from embedded strings; our v1.00a identification follows the independent
hash registry and supplied package. Both observations are preserved in provenance.
The review records the repository-wide evidence audit, module dispositions, stale reports and independently verified absorption. Validated source diagnostics route further analysis; reference source, build layout and completion claims are not imported wholesale.
The function-by-function review is complete for all 6,945 indexed implementations, including one parser omission recovered during manual review. All 113 parser-gap files are manually reconciled. The final audit records coverage and evidence limits; nonexact implementations remain documented for further reconstruction.
- Current handoff
- Focused evidence index
- Architecture and target inventory
- Reconstruction workflow
- Latest source/document cleanup and protected storage audit
- Historical CORE628 artifact-retirement checkpoint
- Independent oracles
- Build and strict matching
- Ghidra setup and attestation
- Tool routing
- Source ownership
- Semantic reconstruction policy
- Reference review
- Function-by-function reference review
- Complete reference review and final tooling batch
- Enemy movement, spawn and variable review
- Runtime invincibility launcher
- Verified knowledge base
- Roadmap
- Generated progress
- Agent rules
- Oracatt/Touhou20: reference reconstruction, source diagnostics and behavioral investigations that guide our independent, function-by-function review.
- N0zoM1z0/th095: reconstruction workflow, exact-oracle control plane, tracking conventions and README/progress layout.
MIT for this repository's original code and TH095-derived control plane. It grants no rights to the original game, downloaded tools or external reference material. Maintained prose and commit messages are in English; official names and original target evidence retain their original language.
