案例
vf2-decomp:经差分验证的 Virtua Fighter 2 代码恢复
将 Virtua Fighter 2 Version 2.1 的 Sega Model 2A i960 程序恢复为可移植、非一致性的 C17 代码,每条恢复路径须在受控边界上与参考 i960 执行器一致才被接受。仓库还提供 ROM 校验、i960 与 68000 分析工具、有限范围的 Model 2A 硬件模型,以及基于快照的差分运行器。README 说明它尚不是可游玩的移植;对战流程、格斗、物理、AI、光栅化及大部分音频仍未完成。
使用条件与局限
- 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 面向编码代理,但所审来源未确立 REA 的使用。
关于此条目
- 类型
- 案例
- 类别
- 独立重建案例
- 关联
- 独立重建项目
- 目标
- 游戏
来源复核于
说明已依据一手来源复核;这不代表已运行验证、经过安全审计或确认兼容。
一手来源
- README.md GitHub · celsowm/vf2-decomp · 修订 9a9f727
- LICENSE GitHub · celsowm/vf2-decomp · 修订 9a9f727
- docs/LEGAL.md GitHub · celsowm/vf2-decomp · 修订 9a9f727
- THIRD_PARTY.md GitHub · celsowm/vf2-decomp · 修订 9a9f727
- docs/STATUS.md GitHub · celsowm/vf2-decomp · 修订 9a9f727
- AGENTS.md GitHub · celsowm/vf2-decomp · 修订 9a9f727
- config/vf2_v22_roms.csv GitHub · celsowm/vf2-decomp · 修订 9a9f727
- .github/workflows/ci.yml GitHub · celsowm/vf2-decomp · 修订 9a9f727