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

  1. README.md GitHub · N0zoM1z0/th08-web · Revision e3485ab
  2. docs/WEB_ARCHITECTURE.md GitHub · N0zoM1z0/th08-web · Revision e3485ab
  3. docs/WEB_PORTING.md GitHub · N0zoM1z0/th08-web · Revision e3485ab
  4. scripts/build-web-game.sh GitHub · N0zoM1z0/th08-web · Revision e3485ab
  5. scripts/check-web-provenance.py GitHub · N0zoM1z0/th08-web · Revision e3485ab
  6. .github/workflows/deploy-web.yml GitHub · N0zoM1z0/th08-web · Revision e3485ab
  7. .github/workflows/ci.yml GitHub · N0zoM1z0/th08-web · Revision e3485ab
  8. .gitmodules GitHub · N0zoM1z0/th08-web · Revision e3485ab
  9. LICENSE GitHub · N0zoM1z0/th08-web · Revision e3485ab
  10. https://github.com/N0zoM1z0/th08-web/releases/tag/v0.1.0
  11. https://th08-web.pages.dev/