{
  "added_at": "2026-10-19",
  "additional_evidence_urls": [
    "https://github.com/N0zoM1z0/th095/blob/6084b36cfa90ac1720f0cba36caec3ee56fc5e1f/docs/PROGRESS.md",
    "https://github.com/N0zoM1z0/th095/blob/6084b36cfa90ac1720f0cba36caec3ee56fc5e1f/docs/ORACLES.md",
    "https://github.com/N0zoM1z0/th095/blob/6084b36cfa90ac1720f0cba36caec3ee56fc5e1f/docs/RUNTIME_ISSUES.md",
    "https://github.com/N0zoM1z0/th095/blob/6084b36cfa90ac1720f0cba36caec3ee56fc5e1f/docs/TOOLS.md",
    "https://github.com/N0zoM1z0/th095/blob/6084b36cfa90ac1720f0cba36caec3ee56fc5e1f/config/tools.lock.toml",
    "https://github.com/N0zoM1z0/th095/blob/6084b36cfa90ac1720f0cba36caec3ee56fc5e1f/scripts/bootstrap-tools.sh",
    "https://github.com/N0zoM1z0/th095/blob/6084b36cfa90ac1720f0cba36caec3ee56fc5e1f/.github/workflows/ci.yml",
    "https://github.com/N0zoM1z0/th095/blob/6084b36cfa90ac1720f0cba36caec3ee56fc5e1f/LICENSE"
  ],
  "category": "reconstruction-cases",
  "description_en": "Reconstructs source for the original Japanese Touhou 9.5: Shoot the Bullet 1.02a executable, accepting function exactness only through reproducible byte comparison of pinned Visual C++ .NET 2003 builds against one hash-attested target. The whole program also compiles and links into a playable Windows i386 executable, while README keeps playability, function matching and whole-executable identity as separate statuses.",
  "description_zh": "为日版 Touhou 9.5：东方文花帖 1.02a 原可执行文件重建源码；只有使用固定版本 Visual C++ .NET 2003 构建、并与单一经哈希核验的目标进行可复现字节比较后，才认定函数级一致。整个程序也能编译链接为可游玩的 Windows i386 可执行文件，而 README 将可玩性、函数匹配与整个可执行文件一致性列为相互独立的状态。",
  "entry_url": "https://awesomerea.org/resources/th095-reconstruction-case/",
  "entry_url_zh": "https://awesomerea.org/zh/resources/th095-reconstruction-case/",
  "evidence_url": "https://github.com/N0zoM1z0/th095/blob/6084b36cfa90ac1720f0cba36caec3ee56fc5e1f/README.md",
  "group": "cases",
  "id": "th095-reconstruction-case",
  "json_url": "https://awesomerea.org/resources/th095-reconstruction-case/record.json",
  "kind": "case-study",
  "markdown_url": "https://awesomerea.org/resources/th095-reconstruction-case/index.md",
  "markdown_url_zh": "https://awesomerea.org/zh/resources/th095-reconstruction-case/index.md",
  "name": "TH095: function-level reconstruction of Shoot the Bullet 1.02a",
  "name_zh": "TH095：东方文花帖 1.02a 的函数级重建",
  "reconstruction_method": "matching-decompilation",
  "record_type": "resource",
  "relationship": "independent-reconstruction",
  "requirement_facets": [
    "testing",
    "prerequisites",
    "prerequisites",
    "testing",
    "license"
  ],
  "requirements": [
    "Generated PROGRESS.md reports 697 confirmed authored functions among 1,880 candidates, all with source, and 696 canonically exact, covering 99.22% of confirmed authored bytes; Controller::GetInput keeps one differing byte. README lists semantic reconstruction as active and Windows x86-64, Linux and Web ports as planned, and tags the playable baseline v0.1.0-windows-i386 without release binaries.",
    "Supply your own original Japanese 1.02a th095.exe matching the size, SHA-256 and MD5 in README, imported as resources/th095.exe; playing also needs the game’s data. README says copyrighted executables, game data and private analysis databases are not included, and public CI runs only target-independent checks.",
    "scripts/bootstrap-tools.sh needs curl, git, sha256sum, tar, unzip, uv and Wine, then fetches checksum-pinned Ghidra 12.1.3, Temurin JDK 21, objdiff 3.8.0 and Microsoft Visual C++ .NET 2003 (13.10.3077) binaries from a third-party archive repository; reccmp 0.1.6 is also pinned. scripts/build-whole.py cold-compiles and links the production graph and refuses stubbed or force-linked images.",
    "Exact credit requires a zero-difference COFF function comparison recorded in the match ledgers; Ghidra, IDA MCP and runtime observation count only as supporting evidence. README cites a full-game runtime video using a test-only no-death launcher plus separate normal-build tests, and RUNTIME_ISSUES.md notes those checks used 2026-09-10 source, with later semantic changes only compile- and link-validated.",
    "MIT covers repository code and documentation, not the game or its assets; the downloaded compiler and tools keep their own terms. The repository carries coding-agent rules and skills and a GPT web Ghidra bridge; REA’s separately published Touhou essay discusses this project."
  ],
  "requirements_zh": [
    "自动生成的 PROGRESS.md 报告：1,880 个候选中有 697 个已确认的原作函数，全部具备源码，其中 696 个达到规范一致，覆盖已确认原作字节的 99.22%；Controller::GetInput 仍有一个字节不同。README 将语义重建列为进行中、Windows x86-64／Linux／Web 移植列为计划，并以 v0.1.0-windows-i386 标签固定可玩基线，但未附发布二进制。",
    "需自备与 README 所列大小、SHA-256 和 MD5 一致的日版 1.02a 原版 th095.exe，并导入为 resources/th095.exe；游玩还需要游戏数据。README 说明仓库不含受版权保护的可执行文件、游戏数据和私有分析数据库，公开 CI 只运行不依赖目标文件的检查。",
    "scripts/bootstrap-tools.sh 需要 curl、git、sha256sum、tar、unzip、uv 和 Wine，随后获取以校验和固定的 Ghidra 12.1.3、Temurin JDK 21、objdiff 3.8.0，以及来自第三方存档仓库的 Microsoft Visual C++ .NET 2003（13.10.3077）二进制；reccmp 0.1.6 也固定版本。scripts/build-whole.py 从零编译并链接生产构建图，拒绝生成桩代码或强制链接的映像。",
    "认定一致须通过零差异的 COFF 函数比较，并记录在匹配台账中；Ghidra、IDA MCP 和运行观察只作为辅助证据。README 引用一段使用仅供测试的无敌启动器完成的全流程运行视频，另有正常构建的单独测试；RUNTIME_ISSUES.md 注明这些检查针对 2026-09-10 的源码，之后的语义改动只经过编译和链接验证。",
    "MIT 许可覆盖仓库代码与文档，不涵盖游戏或其素材；下载的编译器与工具各有条款。仓库包含编程智能体规则与技能以及 GPT 网页版 Ghidra 桥接；REA 另行发表的东方重建文章讨论了此项目。"
  ],
  "targets": [
    "game"
  ],
  "url": "https://github.com/N0zoM1z0/th095",
  "verification": "source-reviewed",
  "verified_at": "2026-10-18"
}
