case studyUpdated Aug 5, 202610 min read$24

Building the Impossible Return Trip: Mega Man Crosses CPS‑2 Into Neo Geo SVC Chaos

The Zero crossover runs in reverse: Marvel vs. Capcom Mega Man replaces hidden Zero in SVC Chaos with corrected facing, opaque pixels, 151 traced frames, every mapped normal family, two mechanically verified donor supers, and a measured map from custom-core bridge to native Neo Geo work.

megamansvc-chaoszeroneo-geocps2
CPS-2 Reverse EngineeringPart 25 of 26
Browse all writing
On this page

After moving SVC Chaos Zero into CPS-2 Marvel vs. Capcom, the more revealing question was the opposite one: can a CPS-2 character cross back into the Neo Geo game that borrowed Capcom's license?

Mega Man now stands inside a live SVC round in hidden Zero's place. His MvC body covers idle, movement, all mapped standing and crouching normal families, two special families, and three hyper presentation families. SVC still owns the round, commands, collision, damage, meter, effects, and sound. The supplied cartridge archive remains unchanged; a custom FBNeo renderer is the temporary wall carrying the imported body.

clip · loops
The completed walkthrough // 650 captured frames · 21.67 seconds · live SVC video and synchronized YM2610 audio · the two meter-consuming supers use separate fresh-stock takes.

Blueprint: separate a replacement wall from the foundation

This build follows the same house rule as the Zero port: identify every system before claiming the character. The result is functional because SVC Zero already has complete combat plumbing. Mega Man is currently the visible tenant, not the owner of those pipes.

Exhibit 1

Mega Man covers the visible move vocabulary while Zero still owns every combat consequence

Status by layer in the current Neo Geo bridge.

nativeverifiedbridgeddonorpending
routebody animationcommands + statecollision + damageeffects + sound
idle + movementbridgeddonorlive Zero anchor and facingdonordonor
8 normal routesbridgeddonordonordonor
2 special routesbridgeddonordonordonor
3 hyper body familiesbridged14 MvC hyper framesdonor2 verified SVC super routesdonordonor
identity surfacespendingHUD still says ZEROpendingpendingpending
native C-ROM bodypendingpendingpendingpending
Bridged = imported MvC presentation. Donor = working SVC Zero behavior. Pending = no native Neo Geo replacement has been claimed.

The direct answer to “are the normals and supers functional?” is therefore two-part. All eight mapped normal routes work, and both of Zero's SVC super families are mechanically verified, with real command recognition, meter consumption, hit logic, damage, effects, and audio. Mega Man-native combat is not yet present. His frames describe what the player sees; they do not replace Zero's attack tables or state handlers.

Foundation: enter through SVC's real door

The bridge uses the game's authentic hidden-Zero selection route rather than forcing a character id after initialization: hold Start, enter Up, Right, Right, Left, Left, Down, Up, Up, Up, Right, then confirm. That matters because selection initializes palettes, object families, HUD state, and other tables a late id write can leave stale.

The source side also begins with data, not a montage. Mega Man's MvC fighter id $20, animation tree $156BE0, and palette pointer $1C8F84 lead to the chains the game truly advances. Following them produces the complete current 151-frame vocabulary.

Exhibit 2

Normals contribute 77 of Mega Man's 151 traced frames; hypers add 14 more

Unique rendered frames by action class, followed from stock MvC records.

neutral + movementstanding normalscrouching normalsspecialshypers
  1. Mega Man / current SVC bridge151 frames
Counts retain source record and sprite-list provenance. Crouch itself is counted with neutral/movement; its four attacks total 27.

Framing: fix direction, proportions, and the “translucent” illusion

Three visual bugs could be mistaken for bad source art.

First, the return trip requires the inverse of Zero's transform. MvC's 384×224 source raster is displayed on the same 4:3 cabinet shape as Neo Geo's 320×224 raster. Mega Man is resampled 5:6 in X with nearest-neighbor pixels and no Y change. Copying him one-for-one makes him roughly 20% too wide.

Second, the initial renderer inverted Neo Geo's horizontal flip bit. On the left side of the screen, Mega Man looked away from Guile. The corrected renderer follows the live body attribute directly, so the imported frame faces the same opponent as Zero's suppressed body.

Third, Mega Man looked translucent. An alpha census shows the opposite: there is no partial alpha in the bridge at all. Every visible pixel is fully opaque and written directly; only the background pixels are zero-alpha. The dark MvC palette against SVC's stage—and the wrong-facing silhouette—made the first result read as ghosted.

Exhibit 3

All 308,160 visible pixels are fully opaque; partial-alpha pixels equal zero

Alpha census across all 151 display-corrected frames.

transparent background (alpha 0)opaque sprite (alpha 255)partial alpha
  1. bridge frame canvas690,956 pixels
Policy: binary alpha only. Opaque pixels use direct PutPix writes; the renderer performs no blending.
Opaque Mega Man on the left side of an SVC Chaos match facing right toward Guile
Facing inspection // left-side P1 now looks toward the opponent
Mega Man jumping inside SVC Chaos with corrected Neo Geo display geometry
Geometry inspection // 5:6 X conversion, Y unchanged

Wiring: bind MvC animation families to live SVC inputs

The bridge samples the four Neo Geo directions and buttons once per emulated frame. It keeps a short direction history, recognizes the mapped Zero motions, latches the requested MvC body family long enough to complete, and leaves SVC to advance the real combat state. Sampling once matters: the renderer can run more than once per raster frame, and treating each slice as an input sample made quarter-circles appear longer than they were.

Exhibit 4

Adding all three MvC hypers grew the reverse bridge by 14 frames and 13%

Before/after measurements from the same extraction and binary packer.

  1. traced frames+14 / +10.2%
    first bridge137with hypers151
  2. action families+3 / +17.6%
    first bridge17mapped now20
  3. bridge payload (KiB)+316 / +13.3%
    first bridge2,384.4with hypers2,700.4
Payload values are uncompressed RGBA bridge bytes, not native Neo Geo C-ROM capacity.
Animation density rises 27% on the reverse trip; the SF3 Ken reference shows how much deeper a native port can go
  • SVC Zero → MvC5.95source animation units per mapped family

    119 unique frames / 20 families

  • MvC Mega Man → SVC7.55source animation units per mapped family

    151 unique frames / 20 families

  • SF3 Ken reference21.53source animation units per mapped family

    323 source records / 15 actions

This is workload density, not a claim that one Ken record equals one rendered Mega Man frame. It exposes the same donor-cage risk across three source pipelines.

The cross-project comparison matters because a donor slot tends to hide truncation. Mega Man's reverse bridge already carries more visible source variation per family than the Zero bridge, yet the Ken reference is almost three times denser again. The correlation is not “more records means a better character”; it is “source depth predicts how quickly stock donor tables stop being enough.”

The super crosswalk deliberately pairs like-sized demonstrations while keeping the mechanics label visible:

SVC routeMega Man body familyWhat the reel proves
Spiral ShotHyper Mega ManSVC command, stock consumption, projectile, hit and sound; MvC body
Ultimate SaberRush DrillSVC command, stock consumption, multi-hit rush and sound; MvC body
no third SVC super claimedBeat Planeall four source body frames are packed; no native Beat Plane mechanics claimed

The first valid super consumes SVC's only starting stock. The final reel therefore joins two automated, fresh-stock captures: one for Spiral Shot and one for Ultimate Saber. In both takes the gauge visibly falls from Level 1 to Level 0. Nothing writes meter into memory, and the cut is kept visible as a new take rather than disguised as uninterrupted play.

Insulation: understand what the temporary bridge costs

RGBA makes an excellent inspection material because every frame is easy to trace and view, but it is not how Neo Geo stores a fighter. The 2.64 MiB body asset is dominated by normal and movement canvases, not by the 14 added hyper frames.

Exhibit 5

Standing normals are the largest share of the 2.64 MiB inspection bridge

Uncompressed RGBA pixel payload by action class; binary headers excluded.

neutral + movementstanding normalscrouching normalsspecialshypers
  1. Mega Man bridge payload2.64 MiB
Calculated from each post-transform frame width × height × 4 bytes. The complete bridge file is 2,765,230 bytes including records and names.

A native cartridge build must replace this inspection wall with Neo Geo materials: choose 15-color palette rows, pack 4bpp tiles, author sprite maps, allocate C-ROM space, encode the protected late Neo Geo graphics format, write SVC animation/state records, and rebuild the identity surfaces. The current svc.zip is unchanged, which is an important boundary rather than a packaging detail.

The bridge proves source extraction and live target anchoring; native cartridge work starts at the dashed wall
Loading diagram...

Inspection: the repaired return trip in stills

Mega Man in the Hyper Mega Man body sequence while SVC Zero's Spiral Shot mechanics execute
Super inspection A // Spiral Shot underneath
Mega Man in the Rush Drill body sequence during an SVC Ultimate Saber demonstration
Super inspection B // Ultimate Saber Dash underneath
Mega Man presenting an imported special-move body sequence inside SVC Chaos
Special inspection // traced MvC body family
Mega Man performing a heavy normal against Guile inside SVC Chaos
Normal inspection // MvC body, SVC contact rules

The HUD still says ZERO. Cropping it away would make the result less informative. It proves that roster identity, body presentation, animation selection, and combat behavior are separate data layers. The same separation is why the chart design here uses direct ownership labels instead of a single green “done” bar.

The chart grammar follows the conclusion-first, direct-label approach studied in McKinsey's UK FDI exhibits and global FDI report: show the finding in the title, mute context, highlight the important series, and put the unit and method under the visual. These are original site components and arcade measurements, not copied McKinsey artwork.

Punch list: what turns the model home into a cartridge-native fighter

  • Quantize Mega Man into Neo Geo palette rows and 4bpp tiles without losing the MvC silhouette.
  • Author sprite maps and animation/state records for every required SVC action.
  • Replace Zero's HUD name, portrait, select preview, palette choices, win, and continue surfaces.
  • Translate Mega Man commands, velocities, boxes, damage, guard, meter, helpers, and all three hypers instead of borrowing Zero's equivalents.
  • Allocate and route Mega Man cues through SVC's YM2610 sound program.
  • Encode the C-ROM data correctly, run stock-core and regression tests, and publish hashes for the transformed reader-supplied set.

The foundation is still SVC Zero. The frame, visible rooms, and inspection wiring now belong to Mega Man. Turning that model into a native Neo Geo home is the next phase—and the boundary between those phases is precisely what makes the reverse experiment useful.

Written by Daniel Plas Rivera · 2,308 words · $24

ShareXLinkedIn