Star on GitHubStar1.1k stars

Case study

vf2-decomp: differentially validated Virtua Fighter 2 recovery

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.

Targets
Game
Category
Independent reconstruction cases
Relationship
Independent reconstruction project
Sources reviewed

Requirements & limits

  • Prerequisites: 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.
  • Prerequisites: 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.
  • Scope: 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.
  • Testing evidence: 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.
  • License: 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.

About this entry

The description was reviewed against primary sources.

Report an outdated entry Suggest a translation fix

Primary sources

  1. README.md GitHub · celsowm/vf2-decomp · Revision 9a9f727
  2. LICENSE GitHub · celsowm/vf2-decomp · Revision 9a9f727
  3. docs/LEGAL.md GitHub · celsowm/vf2-decomp · Revision 9a9f727
  4. THIRD_PARTY.md GitHub · celsowm/vf2-decomp · Revision 9a9f727
  5. docs/STATUS.md GitHub · celsowm/vf2-decomp · Revision 9a9f727
  6. AGENTS.md GitHub · celsowm/vf2-decomp · Revision 9a9f727
  7. config/vf2_v22_roms.csv GitHub · celsowm/vf2-decomp · Revision 9a9f727
  8. .github/workflows/ci.yml GitHub · celsowm/vf2-decomp · Revision 9a9f727

More in Games

All 318 entries in GamesGames case studies (239)

↑↓ move↵ open⌘↵ new tab