case studyUpdated Aug 6, 202614 min read$21

Mega Man Is on Neo Geo. The Cartridge Has No Idea.

He appears in SVC Chaos through a custom emulator bridge, with source frames and attack experiments. The ROM, reactions, helpers, and sound still belong to Zero.

Jump to evidence
megamansvc-chaoszeroneo-geocps2
CPS-2 Reverse EngineeringPart 23 of 45
Browse all writing
On this page

Once SVC Zero could stand inside CPS‑2 Marvel vs. Capcom, the better question ran in reverse: can MvC Mega Man cross into the Neo Geo game that once rebuilt Capcom's roster?

Mega Man now appears in hidden Zero's SVC slot with his real CPS‑2 body frames. He is bright, opaque, display-corrected, and faces his opponent. A source-behavior bridge recognizes Mega Man motions, advances his source roots and boxes, normalizes damage to SVC's 225-life scale, and gates supers on the Neo Geo meter. It is also intentionally uncomfortable evidence: the cartridge ROM is unchanged, the HUD still says ZERO, several grounded moves expose attack boxes without connecting, and effects and sound are still not Mega Man-native.

Corrective audit: Mega Man is an external bridge, not a Neo Geo ROM port

The August 6 manifest now says complete=false. All four native ownership gates are false: C-ROM graphics, P-ROM dispatch/state, V-ROM samples, and M-ROM sound commands. The bridge can display 30 source action families and apply temporary root/box rows, but it imports zero Mega Man guard, hit, stun, or knockdown families into SVC and zero source helper or audio systems. Slow motion, missing poses, donor reactions, and donor sound are therefore expected defects—not finished-port behavior.

August 6 inspection: what “full animation” means here

The bridge inventory has 30 visible action families: neutral movement, 18 normal families, two special parent-body families, and three hyper parent-body families. That number is not the same as a complete fighter. The current core chooses one of those families from controller history, draws an external RGBA sequence over hidden Zero, and writes temporary roots, boxes, damage, and meter values. SVC's cartridge still owns the underlying character state.

Corrective audit

Thirty visible routes sit on top of zero native Neo Geo ownership layers

Machine-readable bridge manifest; ownership means data and dispatch resident in the SVC cartridge path.

nativeverifiedbridgeddonorpending
routevisual routenative SVC statenative child objectsnative audio
18 normal familiesverifiedexternal source frames packedpendingZero's P-ROM state remainspendingpending
2 special parent bodiesverifiedBuster + rising bodypendingpendingno source projectile/helperpending
3 hyper parent bodiesverifiedpendingpendingbody demonstrations onlypending
guard / hit / stun / knockdownpending0 imported familiespendingSVC Zero reactions remainpendingpending
C / P / V / M ROM ownershippendingpendingpendingpending
The manifest deliberately separates visual vocabulary from native ownership. A rendered family is not evidence of a P-ROM command, collision response, helper, or sound implementation.

Mega Man also has gameplay branches missing from the 30-family bridge. In MvC, kicks after Weapon Change select Mega Ball, Tornado Hold, or Leaf Shield; those item/helper paths are documented in the Mega Man move reference and are absent here. Block, hit, dizzy/stun, knockdown, throws, intros, wins, KO, cross-up facing, and recovery require the same state-level treatment. The reciprocal experiment is therefore a visualization and measurement scaffold, not Mega Man playing natively in SVC.

Blueprint: build the same house in the opposite climate

The return trip follows the same construction order as the Zero experiment:

  1. Blueprint: define source ownership and pass/fail gates.
  2. Foundation: trace Mega Man's real CPS‑2 records and SVC's target object.
  3. Framing: correct color, facing, X geometry, anchors, and alpha.
  4. Wiring: map inputs, state timelines, roots, boxes, damage, and meter.
  5. Plumbing: rebuild helpers, projectiles, effects, and YM2610 audio.
  6. Inspection: automate contacts, reversals, both facings, screenshots, and video.
  7. Finish: write native C/P/V/M data and replace every ZERO identity surface.

Exhibit 1

Mega Man owns the visible frame and source timeline; the native Neo Geo house is not built yet

Latest input-driven custom-core run.

nativeverifiedbridgeddonorpending
routeart + animationcommands + physicsboxes + damageeffects + sound
idle / walk / crouch / jumpverifiedbright, opaque, correct facingbridgedsource root timelinebridgedsource hurt rowsdonor
forward + back dashverifiedbridgeddouble-tap grammar + source rootsbridgeddonor
standing normalsverifiedbridgedpendingboxes appear; 0 connections in fixturedonor
crouching normalsverifiedbridgedpendingincomplete contactdonor
aerial normalsverifiedbridgedbridgedLP/LK connect; HP/HK still faildonor
Mega BusterverifiedbridgedQCF+P recognizedpendingchild projectile not importeddonor
Rising SpecialverifiedbridgedDP+P recognizedpendingno contact in latest fixturedonor
3 Mega Man hypersverifiedbridgedmeter-gated four-button chordsbridgedprototype hits connectpendingbody only; source helpers/audio absent
guard / hit / stun / knockdownpending0 imported source familiesdonordonordonor
weapon-change item branchespendingMega Ball / Tornado Hold / Leaf Shield absentpendingpendingdonor
throw / intro / win / KOpendingdonordonordonor
native C/P/V/M ROMpendingpendingpendingpending
HUD / select identitypendingstill says ZEROpendingpendingpending
Bridged means live source data applied by the custom core. It does not mean cartridge-native. Pending marks an unimplemented system or an observed failing gate.

So are Mega Man's normals, dashes, specials, and supers functional? The dash and animation routes are present. Attack boxes appear for every family. Only a subset connects. The latest fixture records air LP, air LK, and the three hyper demonstrations; it records no grounded normal, Mega Buster, or Rising Special contact. That is a prototype with useful evidence, not full gameplay.

Foundation: trace the source character instead of guessing from a sheet

Mega Man's MvC fighter id is $20, his animation tree begins at $156BE0, and his body palette pointer is $1C8F84. Following the actual runtime records yields 206 visual frames across 30 action families. The bridge also stores the matching source root and collision rows rather than asking hidden Zero to improvise Mega Man's movement.

Exhibit 2

Normals account for 128 of Mega Man's 206 traced visual frames

Source MvC frame vocabulary by action class.

neutral + movementstanding normalscrouching normalsaerial normalsspecialshypers
  1. Mega Man source vocabulary206 frames
Frames retain source record and sprite-list provenance. SVC's four buttons expose a smaller input surface than MvC's six; these 30 selected families remain packed for later native routing, while reaction and item families are absent.

Exhibit 3

Source depth predicts donor pressure better than raw frame count

X = mapped families; Y = source animation units per family; bubble = total source units.

2401891218627036218SVC Zero build206MvC Mega Man323SF3 Kenmapped action familiessource units per familybubble = total source units
A source unit is not identical across formats; the plot shows workload density. Ken's density explains why donor-size animation tables fail especially early in the CPS‑3 experiment.

Framing: fix the darkness, the translucency myth, direction, and width

Mega Man looked almost black in the first SVC capture. The pixels were not translucent. The extractor used the lower 12-bit RGB ramp from ROM while its runtime brightness nibble was zero. MvC copies the row to live palette RAM with brightness F; matching the live row restores the full blue ramp. Every visible bridge pixel has alpha 255 and is written directly—no blending.

Facing was a separate sign error. The first renderer inverted Neo Geo's horizontal flag and made P1 look away from P2. It now follows the live body facing and mirrors both pixels and command directions consistently.

Finally, MvC's 384×224 source and Neo Geo's 320×224 source target the same 4:3 display. Mega Man's X coordinates are scaled 5:6, Y is unchanged, and nearest-neighbor sampling preserves pixel edges. Without that correction he appears about 20% too wide.

Exhibit 4

Runtime brightness doubles the usable channel range without changing opacity

Same extracted body art before and after matching live CPS‑2 palette RAM.

  1. maximum RGB channel+124 / +94.7%
    ROM row / brightness 0131live row / brightness F255
  2. opaque sprite pixels+0 / +0.0%
    before419,600after419,600
  3. partial-alpha pixels+0
    before0after0
The correction changes palette luminance, not alpha. Opaque pixels are direct writes through the custom renderer.
Bright opaque Mega Man standing on the left in SVC Chaos facing Guile
Color inspection // live CPS‑2 brightness, binary opacity
Mega Man jumping inside SVC Chaos with corrected proportions
Geometry inspection // 5:6 X correction, Y unchanged

Wiring: teach SVC to hear Mega Man's commands

The Neo Geo panel has four attack buttons, so the bridge treats A/C as two punch strengths and B/D as two kick strengths. It samples once per emulated frame, keeps a short direction history, mirrors motions by facing, and latches a source action long enough to render its complete timeline.

mapped inputimported source routepresent test result
A / Clight / heavy punchframes + boxes; grounded contact still fails
B / Dlight / heavy kickframes + boxes; grounded contact still fails
down + buttoncrouching familyframes + boxes; incomplete contact
jump + buttonaerial familyLP/LK connect; HP/HK fail current fixture
QCF + punchMega Bustergrammar and body pass; source projectile missing
DP + punchRising Specialgrammar and body pass; contact missing
QCF + A+CHyper Mega Manmeter gate and three prototype hits
QCF + B+DRush Drillmeter gate and prototype contact
QCB + B+DBeat Planemeter gate and prototype contact
Weapon Change + kickMega Ball / Tornado Hold / Leaf Shieldnot represented
Mega Man's source damage ladder is broader than Zero's four-button ladder
  • Mega Man LP1.33% of native full life

    4 / 300

  • Mega Man MP3.33% of native full life

    10 / 300

  • Mega Man HP4% of native full life

    12 / 300

  • Mega Man HK5.67% of native full life

    17 / 300

  • Mega Buster6% of native full life

    18 / 300

  • Rush Drill29% of native full life

    87 / 300

Native MvC source traces. The bridge converts these percentages to SVC's 225-life scale; current target contact is a separate validation gate.

The data shows why copying Zero's damage table would be wrong. Mega Man has six normal strengths, charged/projectile behavior, and hyper totals that do not map cleanly onto four SVC buttons. The bridge normalizes life percentage, but a native port must also reproduce hit count, scaling, hitstop, pushback, knockdown, cancel windows, meter behavior, and defensive reactions. Its source box rows are useful research data; because the custom core writes them over hidden Zero at runtime, they are not proof that SVC's P-ROM attack and hit-response machinery has been ported.

Plumbing: the prototype still borrows its pipes

The bridge packs 5,897,200 bytes because RGBA is convenient for inspection; it is not Neo Geo's native 4bpp C-ROM format. A cartridge build must quantize palettes, slice tiles, author sprite maps and animation records, allocate protected C-ROM space, patch P-ROM dispatch, replace HUD/select identity, and route audio through the Z80 and YM2610 sample ROMs.

Exhibit 5

Only five routes connect in the latest fixture; visible boxes alone are not gameplay parity

Measured target damage from the input-driven contact run.

connected
  1. air LP13 damage

    1 fixture hit

  2. air LK13 damage

    1 fixture hit

  3. Hyper Mega Man7 damage

    3 prototype hits

  4. Rush Drill7 damage

    1 prototype hit

  5. Beat Plane7 damage

    1 prototype hit

Ground normals, Mega Buster, and Rising Special register attack-box frames but zero contact in this fixture. They remain pending.

Sound is the clearest unfinished pipe. The current SVC round still uses donor cues. Mega Man's QSound samples have not been converted, placed in V-ROM space, commanded by SVC's Z80, or balanced against YM2610 playback. A video with music is not evidence that Mega Man's sound was imported.

The same boundary explains the reported slow and strange motion. Visual durations are latched by the bridge while the hidden SVC Zero object continues under a different native timeline. Until the P-ROM owns Mega Man's complete state graph, a display sequence can finish late, root motion can disagree with the target object, and an incoming hit can reveal Zero's response behavior.

Inspection: use real emulator pixels, including the donor evidence

clip · loops
Current research reel // 25.35 seconds · two fresh-stock automated takes · input-driven body, command, and prototype contact coverage · synchronized target YM2610 audio. ZERO in the HUD and donor sounds are intentionally visible.
Mega Man presenting a light punch inside SVC Chaos
Normal inspection // correct body and facing; contact gate still pending
Mega Man presenting a heavy punch against Guile inside SVC Chaos
Heavy inspection // opaque source art on the darker stage
Mega Man presenting the Mega Buster body sequence inside SVC Chaos
Special inspection // QCF+P body route; projectile not source-native
Mega Man presenting the Rising Special sequence inside SVC Chaos
DP inspection // source frames and root motion under test

The HUD still says ZERO. That is not cropped out because it is useful: it exposes the difference between roster identity, visible body, state logic, and sound. The OG card follows the site's own dark instrument-panel style, uses these emulator pixels, and labels the physical route CPS‑2 B-board → Neo Geo MVS instead of inventing a glossy crossover illustration.

The graphs use a disciplined exhibit grammar: state the conclusion in the title, label marks directly, highlight one comparison, and disclose the method beneath the figure. Here, that method note prevents “has attack boxes” from silently becoming “plays correctly.”

Final inspection punch list

  • Convert Mega Man frames into native Neo Geo palette rows, tiles, sprite maps, and protected C-ROM data.
  • Author native SVC animation/state records instead of selecting an external renderer action.
  • Import Mega Man guard, hit, stun, knockdown, throw, intro, win, and KO families and route them from P-ROM state transitions.
  • Fix grounded contact geometry and prove every normal at stand/crouch/air/block fixtures.
  • Import Mega Buster and hyper helper objects, not only the parent body timeline.
  • Rebuild Weapon Change plus Mega Ball, Tornado Hold, and Leaf Shield child-object branches.
  • Reproduce velocity, jump arcs, hitstop, pushback, knockdown, cancels, defense, guard, and meter.
  • Replace ZERO in the HUD, select preview, portraits, palettes, intro, win, continue, and ending.
  • Port QSound voice/effects into the Neo Geo Z80/YM2610 command and sample pipeline.
  • Run both facings and cross-ups, then record public footage only from passing builds.

The return trip has a solid blueprint, a visible frame, and enough temporary wiring to measure the hard parts. The native Neo Geo house is still at the framing stage: 30 displayed action families, zero imported response families, zero native ROM ownership layers, and zero Mega Man audio commands. That boundary—not the screenshot—is the real result: it reveals exactly how much engineering is hidden inside the word “character.”

Written by Daniel Plas Rivera · 3,120 words · $21

ShareXLinkedIn