Capcom and SNK taught us to expect impossible matchups. Marvel vs. Capcom crossed universes. Capcom vs. SNK crossed companies. SNK reversed the billing with SVC Chaos and built its own beautiful Zero for Neo Geo—then that branch stopped after one game.
This is the hardware crossover those releases never attempted: move SVC Zero from Neo Geo into CPS‑2 Marvel vs. Capcom, replacing Mega Man. Highlight Mega Man and the fight now draws Zero, the lifebar says ZERO, and the portrait is his. The more important discovery is what remains after the reveal: a character is not a sprite sheet. It is a coupled system of animation, commands, state, physics, collision, damage, helpers, meter, effects, sound, and identity.
The August 6 state-tree census counts 110 imported Zero chains out of 302 distinct Mega Man chains: 36.42%. A 13-pixel source baseline error caused the visible hover and is now corrected. Super-jump, reached guard, hit, and knockdown routes now draw imported Zero poses, but 192 donor chains remain. Helpers, projectiles, several state aliases, throws, weapon branches, and QSound are still Mega Man-owned. “Complete,” “native,” and “all moves functional” would be false labels.
August 8 Character Lab: Zero now has a repair contract, not a completion claim
The reusable secret-menu harness now has a pinned Zero profile and a 37-lane occupancy
inspection. It separates identity, movement, every normal family, SVC specials and supers,
defense, throws, victim holds, helper lifecycle, damage, stun, cancels, reactions, audio, AI,
story and stock-roster regression. The current ledger closes 1/37 required lanes—and that one
closure is only a written waiver because SVC Zero has no persistent flight mode. Existing idle,
super-jump and hit-route artifacts remain OBSERVED, never promoted into full behavior passes.
This port needs a hybrid source oracle. SVC Chaos is Neo Geo software and does not contain
Capcom's CPS-2 developer menu, so source truth still comes from the stock SVC runtime tracer. On
the destination side, the MvC HIT and CATCH tools both open and census the replaced slot, but they
still call it 10 ROCK MAN. That is useful evidence: Zero's art is in the ROM, while the
editor-visible destination contract remains Mega Man's.

The prepared repair order is deliberately load-bearing: command and parent-state handoff first; then the missing Zero animation families and assembly; collision and throw geometry; Zero's own helpers and projectile lifecycles; damage, stun, cancels and victim reactions; finally QSound, story/ending edges and full-roster regression. That ordering prevents a successful saber pose from being mistaken for an imported special or super.
This video records the v2 milestone in the order the port actually happened: Zero became visible, selectable and identifiable inside MvC before the later route census exposed how much Mega Man behavior remained underneath. It belongs in the progression record precisely because it is not a finished-moveset claim; the corrective audit and acceptance matrix below show what the footage proves and what it cannot prove.
August 6 inspection: what the new screenshots actually proved
The reported hover was real, not an aspect-ratio illusion. Each extracted source cell contained
13 transparent rows below Zero's feet. Bottom-centering that cell inside a CPS‑2 sprite canvas
preserved the empty rows and lifted the character by 13 target pixels. The builder now applies a
measured +13 source-baseline correction before it authors each sprite list. Horizontal display
correction remains 6:5; the vertical scale remains 1:1.
The same inspection found a second false signal in the capture harness: it rewrote the fighter's Y coordinate to the floor every frame, canceling the native jump physics while the animation pointer continued to advance. The repaired harness resets the fixture once, then leaves the game in charge. The airborne still below is therefore evidence of both the Zero sprite route and native MvC super-jump movement.
Corrective audit
The repair added 66 Zero chains—and still leaves most of Mega Man's tree intact
Distinct animation chains reached from all 340 slots in Mega Man's tree; denominator = 302 de-duplicated chains.
- imported Zero chains+66 / +150.0%14.57% before4436.42% now110
- stock Mega Man chains remaining-66 / -25.6%before258now192
- mapped donor addresses+71 / +134.0%first full-route pass53state audit124




These are route proofs, not a completeness montage. They answer the specific fallback report: the reached super-jump, block, and hit paths now show Zero rather than Mega Man. They do not prove every guard, dizzy, throw, KO, or recovery alias in the 302-chain tree.
Blueprint: define the rooms before moving the first byte
The project is structured like a house because the metaphor forces an honest build order:
- Blueprint: define the character ontology and proof gates.
- Foundation: inventory source ROMs and measure both hardware systems.
- Framing: correct aspect, palette, anchors, and animation capacity.
- Wiring: translate state timelines, commands, boxes, damage, and meter.
- Plumbing: route helpers, effects, and audio.
- Inspection: automate inputs, contact tests, stills, and recordings.
- Finish: identity art, regression, packaging, and a truthful release verdict.
Exhibit 1
Zero owns the visible house; Mega Man still controls several load-bearing systems
Latest input-driven ROM test, separated by system rather than by screenshot.
| route | art + animation | commands + physics | boxes + damage | effects + sound |
|---|---|---|---|---|
| idle / walk / crouch / jump | verifiedZero frames + 13 px baseline fix | donorMega Man state dispatcher | bridgedsource hurt rows authored | donor |
| super jump | verifiedfresh airborne route proof | donornative MvC jump physics | bridged | donor |
| forward + back dash | verified | donortarget velocity contract | bridged | donor |
| light + medium normals | bridged | pendingdispatcher exits before active rows | pending0 active-box frames in latest run | donor |
| heavy normals | bridged | donor | verifiedstanding and crouching HP connect | donor |
| aerial normals | bridged | donor | pendinggrounded fixture cannot prove full family | donor |
| SVC specials | bridged | pendingstill entered through donor grammar | pendingchild projectile not source-native | donor |
| SVC super timelines | verifiedsplit across all traced hyper subchains | donor | verifiedtwo multi-hit routes connect | pendingeffect helpers + audio remain donor |
| guard + reached hit reactions | verifiedsource poses on tested roots | donortarget blockstun + launch logic | bridgedsource body boxes; donor state timing | donor |
| throw / stun / KO / win | pendingtree still contains fallback chains | donor | donor | donor |
| lifebar identity | verifiedZERO + portrait readback | pending | pending | pending |
That matrix answers the gameplay question precisely. No, all normals and supers are not yet functionally equivalent to SVC Zero. Two heavy routes and two multi-hit super presentations make contact; the lights and mediums do not. The distinction matters because an attractive animation can play while its attack rectangle never becomes active.
Foundation: two arcade systems, one data ontology
The supplied SVC set contains 88.5 MiB of uncompressed addressable cartridge payload; stock MvC contains 44.25 MiB. Similar 68000 CPUs do not make their data interchangeable. Neo Geo and CPS‑2 disagree on sprite maps, palette selection, animation records, box encoding, sound hardware, banking, and screen coordinates.
I normalized both games into a shared frame vocabulary:
| field | source meaning | target question |
|---|---|---|
| root X / Y | world position per frame | where should the imported pose and boxes live? |
| facing | source forward axis | must X and command directions be inverted? |
| pose / duration | visual state and hold time | can the donor chain represent every phase? |
| hurt / attack box | defense and contact geometry | which CPS‑2 box-set and shape rows are required? |
| damage / life max | raw combat units | what percentage of a full bar is preserved? |
| meter delta | gain or spend | does the route obey the target gauge contract? |
| child object | projectile, helper, effect | is the move still borrowing Mega Man plumbing? |
Exhibit 2
Expansion closes 41 MiB of the capacity gap—but storage is the easy part
Uncompressed addressable payload by role, MiB.
- SVC Chaos / Neo Geo88.50 MiB6416
- MvC / stock CPS-244.25 MiB328
- MvC / expanded target85.25 MiB+41.0 vs stock6416
Exhibit 3
The expanded target reaches SVC's art scale while retaining a smaller data ceiling
X = graphics MiB; Y = 68000 program/data MiB; bubble = sample MiB.
Framing: correct Zero's shape, colors, and identity
Both cabinets are 4:3, but SVC authors against a 320×224 raster while MvC uses 384×224. A direct pixel copy makes Zero five-sixths too narrow. The importer therefore scales X by 6:5, leaves Y unchanged, and uses nearest-neighbor sampling. This is display correction, not an artistic stretch.
Zero's source palette is genuinely dark: brown hair, black limbs, and deep crimson armor. The body row is fitted from neutral frames so green saber light cannot evict red body shades. Effects now use a second 15-color row for green/cyan saber energy, white highlights, and the blue Cyber-Elf glow. That split fixed the original mud-black body pass, though some compound effect frames still need art-by-art inspection.



The lifebar banner reuses the game's alphabet exactly: Z from Zangief, E and R from Captain America, O from Morrigan. The face is a nearest-neighbor 32×32 crop from SVC. Name tiles, both fight-side records, portrait tiles, and the decrypted portrait lookup are verified after the final ZIP is written. The large character-select illustration is still Mega Man; the fight HUD is fixed, but that additional identity surface remains on the punch list.
Wiring: expand the ROM, then discover the donor-state ceiling
The imported sprite lists live at $500000; expanded chains begin at $560000; translated box
sets, shapes, and move properties occupy the top of the new 1 MiB data window. Expanded graphics
use bank 4. The game and custom core must agree on both pieces: a larger file is useless if the CPU
cannot fetch the data or the sprite bank cannot address it.
- 1stock program ROM$00000000–$003FFFFF · 4.00 MB4 MiB
- 2imported sprite lists$00500000–$0055FFFF · 384.0 KB48,640 bytes used
- 3expanded animation chains$00560000–$005EFFFF · 576.0 KB38,288 bytes used
- 4box sets$005F0000–$005F3FFF · 16.0 KB160 rows
- 5box shapes$005F4000–$005FBFFF · 32.0 KB342 rows
- 6move properties$005FC000–$005FFFFF · 16.0 KBdamage indexed by attack-shape id
- Anew flat read/fetch window$00500000 · marker
Exhibit 4
The state audit added 138 imported poses and more than doubled mapped donor routes
Before/after measurements from the same builder and target.
- imported build frames+138 / +172.5%first bridge80current pass218
- unique CPS-2 tiles+3,386 / +161.8%first bridge2,093body + effect rows5,479
- mapped donor addresses+71 / +134.0%first full-route pass53current map124
- box-set rows+65 / +68.4%stock clone95source-authored160
That last sentence is the most useful result in the project. Mega Man's light dispatcher leaves the attack state before the longer Zero chain reaches its active source record. The ROM holds the right data; the state no longer asks for it. Heavy states live long enough to reach the expanded chain and connect. Animation expansion and state-duration expansion are separate jobs.
There is also a harder conflict than duration. Stock trace data shows animation chain $158B34
serving both Mega Man's Beat Plane continuation and a throw-out path. Redirecting that one chain to
Zero's Cyber-Elf super makes the throw display the same Zero sequence. One donor address cannot be
two source actions. The fix requires a new dispatcher branch and relocated target chains—not
another sprite redirect. Five additional interior aliases overlap their redirected parent chains
for the same 20-byte in-place reason.
Plumbing: compare the source fighters before balancing the target
The source traces reset life, hold spacing, and measure damage against each game's native full-life maximum. Raw bytes are misleading across systems, so the chart uses percent of full life.
- SVC Zero standing A1.33% of native full life
3 / 225
- MvC Mega Man standing LP1.33% of native full life
4 / 300
- SVC Zero standing D6.67% of native full life
15 / 225
- MvC Mega Man standing HK5.67% of native full life
17 / 300
- SVC Zero QCF×2+C16.89% of native full life
38 / 225 in fixture
- MvC Mega Man Rush Drill29% of native full life
87 / 300
Exhibit 5
The latest CPS‑2 test proves 80 damage units across two heavy and two super routes
Connected target damage by route in the automated contact fixture.
- standing HP11 damage11
1 hit
- crouching HP11 damage11
1 hit
- Ultimate route34 damage34
9 hits
- Cyber-Elf route47 damage47
9 hits
The source-to-target translation normalizes damage by life: SVC's 225-unit bar becomes MvC's 300-unit bar. Boxes invert the forward X axis and scale horizontal geometry by 6:5. That is enough to author the tables, but not enough to import a projectile helper or a move dispatcher. Zero's voice and move sounds also require a separate ADPCM/YM2610-to-QSound asset and Z80 command map.
Inspection: show what passed—and what still looks wrong




The current stills are real emulator pixels, not composited concept art. They also are not selected to hide the remaining problems: some light attacks return to idle before their active frame, the large select portrait still belongs to Mega Man, and compound saber effects need further palette and object separation. The buster shot remains parent-body evidence only; its child projectile, impact behavior, and sound are not SVC Zero's native helper system.
The chart design uses numbered exhibits, finding-first titles, direct labels, one highlighted comparison, and a method note beneath every chart. The distinction that matters is between a declared artifact and an observed result: authored ROM data is the declaration; a connected, input-driven test is the realized proof.
Final inspection punch list
- Extend or replace Mega Man's short-action dispatcher so all Zero light and medium active phases execute.
- Split shared donor dispatchers—especially the
$158B34throw/Beat Plane collision—so one target chain can no longer impersonate two Zero actions. - Relocate the five overlapping interior aliases that cannot accept independent 20-byte redirects in place.
- Replace donor command grammar, velocity, cancels, remaining guard/stun/throw/incoming/KO aliases, wakeup, and win states.
- Import source projectile/helper objects and prove their collision independently from the body.
- Finish effect palette/object separation for every saber and Cyber-Elf frame.
- Port Zero's voice and move cues into the QSound sample and command path.
- Replace the large select portrait and remaining Mega Man identity surfaces.
- Run every normal, dash, special, and super on both sides of the screen against stand, crouch, air, block, and counter-hit fixtures; publish only the footage that passes.
The hover and the reported Mega Man fallbacks were defects, and the measured routes above are now repaired. The broader verdict remains deliberately strict: 36.42% chain ownership is not a full port, and source-looking supers are not source-native supers while helpers and audio are still borrowed. The inspection found a load-bearing donor wall, which is precisely why the experiment is more interesting than a sprite swap: it shows where one arcade game's idea of a character stops and the other game's begins.