东方绀珠传 (Touhou 15: Legacy of Lunatic Kingdom) 浏览器移植。
架构:原版 th15.exe 在 WASM x86 仿真器(v86 0.4 纯 JS 解释器 fork,BSD-2-Clause)中执行; Windows API 由原生 JS 翻译层提供(D3D9→WebGL2、DirectSound→WebAudio、GDI→Canvas、VFS→IndexedDB)。
许可:本项目代码 MIT;CPU 核心来自 v86(BSD-2-Clause,见 packages/cpu/src/v86/LICENSE)。 游戏文件(th15.exe / th15.dat / thbgmogg.dat 等)版权归 上海爱丽丝幻乐团,须由用户自行提供,严禁提交到本仓库。
本地开发:需要 Node.js ≥ 20(无需任何 C++ 工具链)。
npm install
npm test # 单测 + 冒烟(不含游戏文件)
npm run dev # 浏览器开发带游戏文件的本地集成测试(CI ��外,游戏文件不进仓库):
$env:TH15_DIR = "C:\path\to\game"; npx vitest run packages/loader/test/pe-th15.integration.test.ts- M0: CPU 核心 + PE 加载器 + 最小 API 层 → th15.exe 启动到标题(log.txt 输出)
- M1: UI shell(拖放 th15 游戏文件 → 启动,时间片步进 + 运行日志)+ 窗口/消息循环/GDI 文字/输入
- 浏览器拖放:整页 dragover/drop 均 preventDefault,杜绝浏览器接管为下载/导航; 支持一次拖入多个文件或整个游戏文件夹(文件夹含 th15.exe 时自动平铺到虚拟 C:/th15, exe 在子目录时自动提升为根),可分多次拖入自动累加(逻辑见 src/dnd.ts,含单测)。
- M2: D3D9→WebGL2 最小集 → STAGE 1 60fps
- M3: 音频(方案 A:无 SAB)
- M4: 存档/回放(确定性)
- M5: 全流程 + 性能