Case study
TH08 Web: a WebAssembly port built from reconstructed source
Compiles the reconstructed C++ source of the Japanese Touhou 8 1.00d release to WebAssembly with Emscripten, adding WebGL 2 rendering, Web Audio, browser input and IndexedDB saves behind the game’s D3D8-, DirectSound- and DirectInput-shaped interfaces. Players select their own retail DAT files locally. The web build makes no binary-exact claim and is a separate port from the curated TH08 reconstruction.
Requirements and limitations
- README reports the game playable from title to ending in desktop browsers and recommends current Chrome; Firefox automatically uses a dedicated no-readback build, while Safari and mobile browsers are not verified. The page needs WebAssembly threads, SharedArrayBuffer, WebGL 2, Web Audio and cross-origin-isolated HTTPS. Listed remaining work includes Firefox hardware profiling, replay endurance and memory-ceiling measurement.
- Select th08.dat and thbgm.dat from your own legally obtained TH08 installation. The launcher copies th08.dat into session memory and range-reads thbgm.dat; README says neither is uploaded, bundled or persisted. The repository, deployment and release v0.1.0 contain no retail data or executable, and a provenance script rejects forbidden payloads and any artifact outside the nine-file allowlist.
- Local builds need Docker, Python 3 and a desktop browser: scripts/build-web-game.sh uses a digest-pinned Emscripten 6.0.8 image, and scripts/serve-web.py supplies the COOP, COEP and CORP headers a generic static server lacks. The public site is a Cloudflare Pages deployment from main, and self-hosting the release archive needs the same isolation headers.
- WEB_ARCHITECTURE.md records author-run checks with user-selected retail files: a complete Lunatic Final-B route in Chromium and on an earlier Firefox bridge, a Stage 6B practice run, persistence tests showing no DAT in IndexedDB, and replay-driven pacing samples near 60 Hz under the SwiftShader and llvmpipe software renderers. These are bounded correctness observations, not hardware benchmarks or binary comparisons; this collection ran nothing.
- MIT covers repository code and documentation, not the original game, DAT files, music or graphics; the pinned Detours submodule keeps its own terms. README describes this repository as the web-focused fork of N0zoM1z0/th08 with its history retained. The reviewed web-port sources establish no REA attribution, and no runtime reproduction is claimed.
About this entry
- Type
- Case study
- Category
- Independent reconstruction cases
- Relationship
- Independent reconstruction project
- Targets
- Game
Sources reviewed
The description was reviewed against primary sources. This does not establish runtime testing, security auditing or verified compatibility.
Primary sources
- README.md GitHub · N0zoM1z0/th08-web · Revision e3485ab
- docs/WEB_ARCHITECTURE.md GitHub · N0zoM1z0/th08-web · Revision e3485ab
- docs/WEB_PORTING.md GitHub · N0zoM1z0/th08-web · Revision e3485ab
- scripts/build-web-game.sh GitHub · N0zoM1z0/th08-web · Revision e3485ab
- scripts/check-web-provenance.py GitHub · N0zoM1z0/th08-web · Revision e3485ab
- .github/workflows/deploy-web.yml GitHub · N0zoM1z0/th08-web · Revision e3485ab
- .github/workflows/ci.yml GitHub · N0zoM1z0/th08-web · Revision e3485ab
- .gitmodules GitHub · N0zoM1z0/th08-web · Revision e3485ab
- LICENSE GitHub · N0zoM1z0/th08-web · Revision e3485ab
- https://github.com/N0zoM1z0/th08-web/releases/tag/v0.1.0
- https://th08-web.pages.dev/