# 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.

- Type: Case study
- Targets: Game
- Category: Independent reconstruction cases
- Relationship: Independent reconstruction project
- Sources reviewed: 2026-10-18
- Added to the catalog: 2026-10-18
- Original resource: <https://github.com/celsowm/vf2-decomp>
- Primary source: <https://github.com/celsowm/vf2-decomp/blob/9a9f7270f090cfa0f38b0ec6a22c3e53dae4bd18/README.md>
- Catalog page: <https://awesomerea.org/resources/vf2-decomp-differential-recovery-case/>
- Record JSON: <https://awesomerea.org/resources/vf2-decomp-differential-recovery-case/record.json>
- Chinese version: [简体中文](https://awesomerea.org/zh/resources/vf2-decomp-differential-recovery-case/index.md)

## 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.

## Primary sources

1. <https://github.com/celsowm/vf2-decomp/blob/9a9f7270f090cfa0f38b0ec6a22c3e53dae4bd18/README.md>
2. <https://github.com/celsowm/vf2-decomp/blob/9a9f7270f090cfa0f38b0ec6a22c3e53dae4bd18/LICENSE>
3. <https://github.com/celsowm/vf2-decomp/blob/9a9f7270f090cfa0f38b0ec6a22c3e53dae4bd18/docs/LEGAL.md>
4. <https://github.com/celsowm/vf2-decomp/blob/9a9f7270f090cfa0f38b0ec6a22c3e53dae4bd18/THIRD_PARTY.md>
5. <https://github.com/celsowm/vf2-decomp/blob/9a9f7270f090cfa0f38b0ec6a22c3e53dae4bd18/docs/STATUS.md>
6. <https://github.com/celsowm/vf2-decomp/blob/9a9f7270f090cfa0f38b0ec6a22c3e53dae4bd18/AGENTS.md>
7. <https://github.com/celsowm/vf2-decomp/blob/9a9f7270f090cfa0f38b0ec6a22c3e53dae4bd18/config/vf2_v22_roms.csv>
8. <https://github.com/celsowm/vf2-decomp/blob/9a9f7270f090cfa0f38b0ec6a22c3e53dae4bd18/.github/workflows/ci.yml>

## More in Games

- [Wind Waker HD decompilation: functions verified against the recompiled Wii U game](https://awesomerea.org/resources/wind-waker-hd-decomp-case/index.md) · Case study
- [Banjo: Recompiled — an N64Recomp Banjo-Kazooie native port](https://awesomerea.org/resources/banjo-recompiled-case/index.md) · Case study
- [C2C: hybrid recompilation and hand decompilation of Crash Bandicoot 2](https://awesomerea.org/resources/c2c-crash2-hybrid-recompilation-case/index.md) · Case study
- [Castlevania 64: Recompiled — a beta static-recompilation port](https://awesomerea.org/resources/cv64-recompiled-case/index.md) · Case study
- [Conker's Bad Fur Day: Recompiled — an N64Recomp native port](https://awesomerea.org/resources/cbfd-recompiled-case/index.md) · Case study
- [CPS-2 Recomp: static recompilation of Capcom CPS-2 and CPS-1 arcade games](https://awesomerea.org/resources/cps2recomp-arcade-static-recomp-case/index.md) · Case study

## About this entry

The description was reviewed against primary sources.
Original editorial content: MIT. Linked projects, papers and assets retain their own rights and licenses.
