# TH08 Web：基于重建源码的 WebAssembly 移植

> 使用 Emscripten 将日版 Touhou 8 1.00d 的重建 C++ 源码编译为 WebAssembly，并在游戏原有的 D3D8、DirectSound 与 DirectInput 形态接口之后接入 WebGL 2 渲染、Web Audio、浏览器输入和 IndexedDB 存档。玩家在本地选择自备的正版 DAT 文件。网页构建不主张与原二进制逐字节一致，是独立于已收录 TH08 重建的移植。

- 类型：案例
- 目标：游戏
- 类别：独立重建案例
- 关联：独立重建项目
- 来源复核于：2026-10-18
- 收录于：2026-10-19
- 原始资源：<https://github.com/N0zoM1z0/th08-web>
- 一手来源：<https://github.com/N0zoM1z0/th08-web/blob/e3485ab9a9af3b5a90ce51841667bbdf5a867e5c/README.md>
- 目录页面：<https://awesomerea.org/zh/resources/th08-web-wasm-port-case/>
- 记录 JSON：<https://awesomerea.org/resources/th08-web-wasm-port-case/record.json>
- 英文版：[English](https://awesomerea.org/resources/th08-web-wasm-port-case/index.md)

## 使用条件与局限

- **前提条件：**README 报告游戏可在桌面浏览器中从标题画面玩到结局，推荐使用最新版 Chrome；Firefox 会自动使用专门的免回读构建，Safari 和移动浏览器尚未验证。页面需要 WebAssembly 线程、SharedArrayBuffer、WebGL 2、Web Audio 及跨源隔离的 HTTPS 环境。列出的后续工作包括 Firefox 硬件性能分析、回放耐久测试和内存上限测量。
- **前提条件：**需从自己合法取得的 TH08 安装中选择 th08.dat 和 thbgm.dat。启动器把 th08.dat 复制到会话内存，并按范围读取 thbgm.dat；README 说明两者都不会被上传、打包或持久保存。仓库、部署站点和 v0.1.0 发布均不含零售数据或可执行文件，来源检查脚本会拒绝禁止的内容及九文件白名单之外的任何产物。
- **前提条件：**本地构建需要 Docker、Python 3 和桌面浏览器：scripts/build-web-game.sh 使用以摘要固定的 Emscripten 6.0.8 镜像，scripts/serve-web.py 提供普通静态服务器缺少的 COOP、COEP 和 CORP 响应头。公开站点由 main 分支部署到 Cloudflare Pages，自行托管发布包也需要相同的隔离响应头。
- **测试证据：**WEB_ARCHITECTURE.md 记录了作者使用自选零售文件完成的检查：在 Chromium 及较早的 Firefox 桥接方案上完整通关 Lunatic Final-B 路线、一次 Stage 6B 练习、证明 IndexedDB 中不含 DAT 的持久化测试，以及在 SwiftShader 与 llvmpipe 软件渲染器下接近 60 Hz 的回放驱动帧节奏采样。
- **许可：**MIT 许可覆盖仓库代码与文档，不涵盖原游戏、DAT 文件、音乐或图像；固定版本的 Detours 子模块另有条款。README 称此仓库是 N0zoM1z0/th08 面向网页的分支，并保留其历史。

## 一手来源

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

## 同分区更多条目：游戏

- [TonyWasAProSkater：派生自一致性反编译的 THPS1 原生移植](https://awesomerea.org/zh/resources/thps1-decomp-native-port-case/index.md) · 案例
- [Vandal Hearts：基于一致性反编译的原生 PC 移植](https://awesomerea.org/zh/resources/vandal-hearts-pc-port-case/index.md) · 案例
- [Age of Empires Free Software Remake：基于原版数据的重新实现](https://awesomerea.org/zh/resources/aoe-free-software-remake-case/index.md) · 案例
- [Bravo：逆向实现的 Minecraft 服务端](https://awesomerea.org/zh/resources/bravo-minecraft-server-case/index.md) · 案例
- [Chariot《帝国时代》引擎重实现](https://awesomerea.org/zh/resources/chariot/index.md) · 案例
- [CoD4 Rewrite：Rust/Bevy 游戏重建](https://awesomerea.org/zh/resources/cod4-rewrite-reconstruction-case/index.md) · 案例

## 关于此条目

说明已依据一手来源复核。
原创说明采用 MIT 许可；外部项目、论文与素材保留各自的权利和许可。
