{
  "added_at": "2026-10-18",
  "additional_evidence_urls": [
    "https://github.com/celsowm/vf2-decomp/blob/9a9f7270f090cfa0f38b0ec6a22c3e53dae4bd18/LICENSE",
    "https://github.com/celsowm/vf2-decomp/blob/9a9f7270f090cfa0f38b0ec6a22c3e53dae4bd18/docs/LEGAL.md",
    "https://github.com/celsowm/vf2-decomp/blob/9a9f7270f090cfa0f38b0ec6a22c3e53dae4bd18/THIRD_PARTY.md",
    "https://github.com/celsowm/vf2-decomp/blob/9a9f7270f090cfa0f38b0ec6a22c3e53dae4bd18/docs/STATUS.md",
    "https://github.com/celsowm/vf2-decomp/blob/9a9f7270f090cfa0f38b0ec6a22c3e53dae4bd18/AGENTS.md",
    "https://github.com/celsowm/vf2-decomp/blob/9a9f7270f090cfa0f38b0ec6a22c3e53dae4bd18/config/vf2_v22_roms.csv",
    "https://github.com/celsowm/vf2-decomp/blob/9a9f7270f090cfa0f38b0ec6a22c3e53dae4bd18/.github/workflows/ci.yml"
  ],
  "category": "reconstruction-cases",
  "description_en": "Recovers Virtua Fighter 2 Version 2.1’s Sega Model 2A i960 program into portable, non-matching C17, accepting each recovered path only when it matches a reference i960 executor at controlled boundaries. The repository adds ROM validation, i960 and 68000 analysis tools, a bounded Model 2A hardware model and snapshot-based differential runners. README states that it is not yet a playable port; match flow, combat, physics, AI, rasterization and much of the audio remain open.",
  "description_zh": "将 Virtua Fighter 2 Version 2.1 的 Sega Model 2A i960 程序恢复为可移植、非一致性的 C17 代码，每条恢复路径须在受控边界上与参考 i960 执行器一致才被接受。仓库还提供 ROM 校验、i960 与 68000 分析工具、有限范围的 Model 2A 硬件模型，以及基于快照的差分运行器。README 说明它尚不是可游玩的移植；对战流程、格斗、物理、AI、光栅化及大部分音频仍未完成。",
  "entry_url": "https://awesomerea.org/resources/vf2-decomp-differential-recovery-case/",
  "entry_url_zh": "https://awesomerea.org/zh/resources/vf2-decomp-differential-recovery-case/",
  "evidence_url": "https://github.com/celsowm/vf2-decomp/blob/9a9f7270f090cfa0f38b0ec6a22c3e53dae4bd18/README.md",
  "group": "cases",
  "id": "vf2-decomp-differential-recovery-case",
  "json_url": "https://awesomerea.org/resources/vf2-decomp-differential-recovery-case/record.json",
  "kind": "case-study",
  "markdown_url": "https://awesomerea.org/resources/vf2-decomp-differential-recovery-case/index.md",
  "markdown_url_zh": "https://awesomerea.org/zh/resources/vf2-decomp-differential-recovery-case/index.md",
  "name": "vf2-decomp: differentially validated Virtua Fighter 2 recovery",
  "name_zh": "vf2-decomp：经差分验证的 Virtua Fighter 2 代码恢复",
  "reconstruction_method": "decompilation",
  "record_type": "resource",
  "relationship": "independent-reconstruction",
  "requirement_facets": [
    "scope",
    "prerequisites",
    "prerequisites",
    "testing",
    "license"
  ],
  "requirements": [
    "README describes a clean-room, non-matching recovery whose native runtime preserves CPU, frame, counter and mutable-memory state through repeated scheduler and gameplay dispatches, including a 1,270,824-instruction post-scheduler corridor with no interpreted instructions. It explicitly does not claim complete decompilation, a playable executable, full Model 2/TGP emulation, SCSP DSP audio or every gameplay branch. Unverified paths fail closed with VF2_ERROR_UNSUPPORTED.",
    "ROM-backed analysis and differential tests need a user-supplied, legally obtained copy of the supported arcade ROM set. config/vf2_v22_roms.csv records only filenames, sizes and hashes, and vf2rom verifies the set. The repository contains no Sega game data, and contributors must not commit ROMs or reconstructed region images.",
    "Builds use CMake with a C17 compiler and warnings treated as errors, plus an optional sanitizer configuration. STATUS lists GCC/Clang CI, and README names native Windows MSVC as the canonical agent workflow. Setting VF2_ROM_DIR enables the ROM-backed CTest targets; otherwise only ROM-independent tests run.",
    "The vf2i960 native-dispatch commands run the recorded differential milestones, and vf2cycles advances recovered C and the reference executor from a shared snapshot, stopping in strict mode at the first unsupported block, reference failure or state mismatch. STATUS reports MATCH for the third through sixth dispatches. CI runs only ROM-independent tests, so the ROM-backed results remain project-reported.",
    "BSD-3-Clause covers the project’s code; MAME and public Intel i960 documentation serve as cross-references, not included source. docs/LEGAL.md discloses 301 original Sega symbol names, taken from a later Model 2 port DLL, as non-clean-room naming, and an untracked Sonic The Fighters disassembly is used only as a navigation aid. AGENTS.md addresses coding agents."
  ],
  "requirements_zh": [
    "README 将其描述为净室、非一致性的恢复项目：原生运行时在重复的调度器与游戏分派中保持 CPU、调用帧、计数器及可变内存状态，其中调度器之后的一段严格路径包含 1,270,824 条恢复指令，且无解释执行指令。项目明确不主张完整反编译、可游玩的可执行文件、完整的 Model 2／TGP 模拟、SCSP DSP 音频或覆盖全部游戏分支。未验证路径以 VF2_ERROR_UNSUPPORTED 失败关闭。",
    "依赖 ROM 的分析和差分测试，需要使用者自行提供合法取得的受支持街机 ROM 组。config/vf2_v22_roms.csv 仅记录文件名、大小和哈希，vf2rom 用于校验该 ROM 组。仓库不含任何 Sega 游戏数据，贡献者不得提交 ROM 或重建的区域映像。",
    "使用 CMake 与 C17 编译器构建，警告视为错误，并可选用 sanitizer 配置。STATUS 列出 GCC／Clang CI，README 将原生 Windows MSVC 称为代理的标准工作流程。设置 VF2_ROM_DIR 后启用依赖 ROM 的 CTest 目标；否则只运行不依赖 ROM 的测试。",
    "vf2i960 的原生分派命令运行已记录的差分里程碑；vf2cycles 从同一快照推进恢复的 C 代码与参考执行器，严格模式下遇到首个不受支持的代码块、参考执行失败或状态不一致即停止。STATUS 报告第三至第六次分派均为 MATCH。CI 只运行不依赖 ROM 的测试，因此依赖 ROM 的结果仍为项目报告。",
    "项目代码采用 BSD-3-Clause；MAME 与公开的 Intel i960 文档仅作交叉参考，未收录其源码。docs/LEGAL.md 披露 301 个取自后续 Model 2 移植版 DLL 的 Sega 原始符号名，并说明这部分命名并非净室成果；未纳入版本库的 Sonic The Fighters 反汇编快照仅作导航参考。AGENTS.md 面向编码代理。"
  ],
  "targets": [
    "game"
  ],
  "url": "https://github.com/celsowm/vf2-decomp",
  "verification": "source-reviewed",
  "verified_at": "2026-10-18"
}
