case studyUpdated Sep 14, 202626 min read$35

Inside MvC's Mashable Moves: From the ROM Chip to the Extra Hit

Which MvC supers are mashable, what to press, and how many hits were demonstrated: character verdicts, baseline comparisons, code limits, reproducible evidence and a CPS-2 chip location map.

Jump to evidence
cps2marvel-vs-capcomreverse-engineering68000rom-hacking
CPS-2 Reverse EngineeringPart 41 of 43
Browse all writing
On this page

Gold War Machine's Proton Cannon responds to directions. Ryu's Shinkuu Hadoken responds to buttons. Hulk's Gamma Quake keeps dropping the same eleven rocks. Those differences are written into the moves themselves.

The question was simple: how does an attack become mashable, who has one, and could the behavior be added to another move? Answering it took following the input through the 68000 instructions, into a timer or repeat counter, and finally into the attack that reaches the opponent.

A button press never means “add one hit.” The move decides what another press buys. Sometimes it buys time. Sometimes it buys another animation cycle. Sometimes it fires another projectile that misses entirely.

Mashable supers at a glance

Find your character and super here first. Mashable does not mean every press becomes a hit. The table separates extra connected hits from extra attack production, tested paths with no extension, and moves whose behavior remains unresolved.

Character + super / quick verdicts

Is this super mashable?

Mashable means the examined input changes attack production or continuation. The table distinguishes demonstrated extra hits, input-sensitive attacks without a proven hit gain, tested negatives and unresolved moves.

34 super verdicts · untested never means not mashable

Reviewed super findings and specific gaps across the playable roster. Commands and verdicts apply to the named variant.
CharacterSuper / commandMashable?Input and result
Gold War MachineProton CannonQCF + two punches; Gold variantMashableChange directions during firing

Fresh direction edges prolong missile firing. Best ordinary-health result 116 through lethal hit;181 includes after KO processing.

Evidence
War MachineProton CannonQCF + two punches; ordinary War MachineNo extension foundNo supported mash extension

Ordinary branch stayed 27→27 in its matched test; Gold’s timer reimbursement is a different branch.

Evidence
HulkGamma WaveQCF + two punchesNo extension foundNo supported mash extension

Eight wave children regardless of tested input; tail-inclusive fixture 11→11.

Evidence
HulkGamma QuakeQCF + two kicksNo extension foundNo supported mash extension

Fixed eleven-rock schedule; fixture 7→7. Scheduled objects are not guaranteed hits.

Evidence
HulkGamma CrushQCB + two punchesNo extension foundHeld direction aims the descent

One trajectory choice, not a fresh-press budget; fixture 4→4.

Evidence
RyuShinkuu HadokenQCF + two punches; base RyuMashableFresh attacks during the beam

Twelve timer credits. Best published matched fixture 20→24; close Spider-Man 9→10.

Evidence
RyuKen-mode ShinryukenHCB + MP to enter Ken style; then QCF + two kicksMashableKen style; fresh attacks while rising

Inline attack edges accelerate animation; fixture 12→15. Separate from base Shin Shoryuken.

Evidence
RyuAkuma-mode Messatsu Gou HadouHCB + HP to enter Akuma style; then QCB + two punchesMashableAkuma style; fresh attacks during the beam

Same twelve-credit beam path; its own tested fixture 9→10.

Evidence
RyuShinkuu Tatsumaki SenpukyakuBase style: QCB + two kicksNo extension foundNo supported mash extension

Fixed eight-unit loop counter in the examined path; fixture 18→18.

Evidence
RyuShin ShoryukenBase style: DP + two punchesNo extension foundNo supported mash extension

Base-style fixture 3→3; do not borrow Ken Shinryuken’s mechanism.

Evidence
Chun-LiKikoshoQCF + two punchesMashableFresh attacks while the sphere is active

Eight accepted events can add four child repeats; fixture 9→13.

Evidence
Chun-LiSenretsukyakuQCF + two kicksMashableAlternate fresh attacks throughout active kicks

Sixty timer credits; rotating attacks or alternating LP/MP reached 15→30.

Evidence
MorriganSoul EraserQCF + two punchesMashableFresh attacks; directions separately speed orbit

Ten button reimbursements; fixture 18→20. Direction orbit motion is a distinct effect.

Evidence
Shadow LadyBig Bang LaserQCF + two punchesMashableFresh attacks during the beam

Sixteen timer reimbursements; fixture 21→25.

Evidence
Mega ManHyper Mega ManQCF + two punchesMore attacks; hit gain unprovedFresh attacks accelerate scheduled projectiles

Successful allocations 14→23, while measured combo stayed 17→17.

Evidence
Mega ManBeat PlaneQCF + two kicksMashableFresh attacks fire bursts; directions steer

Fixture 3→23 during the vehicle state; all 180 lifetime decrements still occur.

Evidence
RollHyper RollQCF + two punchesMore attacks; hit gain unprovedFresh attacks accelerate scheduled projectiles

Successful allocations 12→20, while measured combo stayed 15→15.

Evidence
RollBeat PlaneQCF + two kicksMashableFresh attacks fire bursts; directions steer

Fixture 3→23; the later FBNeo tail event is excluded. Lifetime is not refilled.

Evidence
StriderOuroborosQCF + two punches, then fresh punchesMore attacks; hit gain unprovedFresh punches request satellite shots

Static owner-input firing path with cooldown; no live shot/hit comparison, no duration refill.

Evidence
Spider-ManMaximum SpiderQCF + two punchesNo extension foundDirections aim approach; no supported button extension

Own native path tested 5→5. Web Throw’s rotation does not prove a 25-hit Maximum Spider.

Evidence
War MachineWar DestroyerQCF + two kicksUnresolvedNo demonstrated extra-hit input recipe

Directions changed observed contacts without lengthening its 48-count launch phase. The cause was not isolated, so neither mashable nor non-mashable is established.

Evidence
Gold War MachineShared War Destroyer handler candidateGold human command unverifiedUnresolvedNo demonstrated extra-hit input recipe

The dispatch entry shares the ordinary War Destroyer handler, but Gold’s human command reachability remains unresolved. No independent Gold trial or extra-hit classification is established.

Evidence
LilithBrilliant ShowerQCF + two punchesUnresolvedNo demonstrated extra-hit input recipe

Button/no-input fixture 13→13; directions produced 16, but the causal extension was not traced. Copied Soul Eraser helper code was not reached by this command.

Evidence
Captain AmericaOther supers — not yet classifiedNamed human command mapping is incompleteUnresolvedNo demonstrated extra-hit input recipe

Native dispatch entries are inventoried, but no supported named-super input-effect verdict was established in this study.

Evidence
WolverineOther supers — not yet classifiedNamed human command mapping is incompleteUnresolvedNo demonstrated extra-hit input recipe

Berserker Barrage and Tornado Claw findings concern ordinary specials, not a classification of Wolverine’s supers.

Evidence
GambitOther supers — not yet classifiedNamed human command mapping is incompleteUnresolvedNo demonstrated extra-hit input recipe

Native dispatch entries are inventoried, but no supported named-super input-effect verdict was established in this study.

Evidence
VenomOther supers — not yet classifiedNamed human command mapping is incompleteUnresolvedNo demonstrated extra-hit input recipe

Web Throw’s extra slams do not classify Venom’s supers.

Evidence
Captain CommandoOther supers — not yet classifiedNamed human command mapping is incompleteUnresolvedNo demonstrated extra-hit input recipe

Native dispatch entries are inventoried, but no supported named-super input-effect verdict was established in this study.

Evidence
JinOther supers — not yet classifiedNamed human command mapping is incompleteUnresolvedNo demonstrated extra-hit input recipe

The traced unnamed grab parameter does not classify Blodia Vulcan or other supers.

Evidence
ZangiefOther supers — not yet classifiedNamed human command mapping is incompleteUnresolvedNo demonstrated extra-hit input recipe

Unnamed direction-sensitive grabs and the Mecha transformation do not establish a named-super mash verdict.

Evidence
Red VenomOther supers — not yet classifiedNamed human command mapping is incompleteUnresolvedNo demonstrated extra-hit input recipe

Venom Rush is a special; Web Throw is a throw. Neither supplies a verdict for Red Venom’s supers.

Evidence
Orange HulkOther supers — not yet classifiedNamed human command mapping is incompleteUnresolvedNo demonstrated extra-hit input recipe

Shares Hulk code entry points, but Orange-specific human reachability and live input comparisons were not independently established.

Evidence
ZangiefMecha-form supers — not yet classifiedMecha form +$EB=2; named-super command mapping incompleteUnresolvedNo demonstrated extra-hit input recipe

The form change itself is verified. Shared or alternate command routes are not proof that each Mecha-form super gains hits from mashing.

Evidence
RyuOther Ryu / Ken / Akuma style supers — not yet classifiedOnly the five named Ryu-style supers above have supported verdicts hereUnresolvedNo demonstrated extra-hit input recipe

Style values 0/2/4 are inventoried. A tested beam or Shinryuken does not classify every remaining style-specific super.

Evidence
Hit totals, input recipes and code limits are in the player guide below. “No extension found” is limited to the examined paths and controls. Unresolved entries retain the wider coverage gaps.

Baseline, best result, and what to press

“Normal total” below means no extra input after the command, in the printed setup. It is not a fixed number for every opponent and distance. The guide gives the strongest published comparison for each finding and the input sequence that produced it. Exact replay timing is expandable; the plain-language instructions explain the same input rule for a player.

A true maximum is not established for these moves. Spending all twelve Ryu credits or all sixty Chun-Li credits reaches the extension allowance, not a proved ceiling on collisions. Gold's 60-hit report is not a universal limit: the revised ordinary-health trials exceeded it before KO.

Player guide / inputs → observed results

What to press for more hits.

No extra input means releasing the controls after the move command. Best demonstrated is the strongest published matched result for that entry, produced by input replay.

True maximum hits: not established. The code limits below count time, repeats or opportunities. Opponent, spacing and collisions still determine connected hits.

13 findings · QCF = quarter-circle forward · QCB = quarter-circle back · PP / KK = two punches / kicks

Gold War Machine

Proton Cannon

QCF + two punches; Gold variantNative code plus three repeated baselines per fixture in MAME and custom FBNeo
No extra input25
Best demonstrated116

hit-processing events with positive pre-damage life

Custom instrumented FBNeo; Spider-Man starts with 144 HP; realized separation 70; includes the lethal event

Maximum statusNot established

  1. Choose Gold War Machine and perform QCF + two punches.
  2. Once the cannon starts, keep changing direction through Right → Down → Left → Up → Right. Keep cycling for the firing phase.
  3. The best recorded script switches to another cardinal every callback with no neutral gaps. Holding a direction or tapping attack buttons does not sustain this extension.

Code limitThe firing timer starts at 96. Each accepted fresh direction adds 1; the ordinary countdown still subtracts 1. No separate finite mash-credit cap was found in this path. A missile allocation is attempted every fourth phase update.

Exact setup, other results & proof

Command and variant: QCF + two punches; Gold variant, E6=$02

Baseline: 25 hit-processing events with positive pre-damage life. Custom instrumented FBNeo; Spider-Man starts with 144 HP; realized separation 70; release inputs after the command; the baseline does not KO the opponent

Best demonstrated: 116 hit-processing events with positive pre-damage life. Custom instrumented FBNeo; Spider-Man starts with 144 HP; realized separation 70; includes the lethal event

Why this is not a universal maximum: 116 counts events whose target had positive life immediately before damage, including the lethal event. It is the best ordinary-health result in these scripts, not a guaranteed arcade or human maximum. RNG, placement and round-state behavior matter.

Measured replay: After command callback 12 and verified move entry, select Down, Left, Up, Right, then repeat, one legal cardinal per emulator callback with no neutral gap. No opposite directions are held together.

MAME through lethal hit: 114 hit-processing events with positive pre-damage life. Same ordinary 144 HP fixture; MAME

Full first move, including after KO: 181 hit-processing events. Both engines;116 + 65 after KO events in FBNeo, 114 + 67 in MAME; native display clamps at 99

Successful missile allocations: 180 objects. Both ordinary-health dense-direction trials; objects are not connected hits

High-health diagnostic only: 166 connected events. MAME with initial target life changed to 1024; FBNeo 149; both allocate 165 missiles. Not the ordinary-health comparison.

Ryu

Shinkuu Hadoken

QCF + two punches; base RyuCode verified; best 24 is MAME; close and airborne comparisons independently reproduced in MAME/FBNeo
No extra input20
Best demonstrated24

first-move connected events

MAME; standing Hulk, initial life 144; realized separation 325; first-contact Y472 for both fighters

Maximum statusNot established

  1. For the best published result, use base Ryu against standing Hulk with the documented wide separation; then perform QCF + two punches.
  2. As the beam becomes active, keep producing fresh attacks: roll through LP → MP → HP → LK → MK → HK, releasing the previous button as you change.
  3. Keep the sequence going during the beam. A held chord produces only its initial edge; directions do not spend the beam credits.

Code limitTwelve human credits, with a 64-count active timer. Each accepted attack spends one credit instead of decrementing the timer: at most 12 extra active countdown opportunities, not 12 extra hits.

Exact setup, other results & proof

Command and variant: QCF + two punches; base Ryu, E6=$0A

Baseline: 20 first-move connected events. MAME; standing Hulk, initial life 144; realized separation 325; first-contact Y472 for both fighters; release inputs after the command

Best demonstrated: 24 first-move connected events. MAME; standing Hulk, initial life 144; realized separation 325; first-contact Y472 for both fighters

Why this is not a universal maximum: 24 is the highest result in the published Ryu sweep and is paired with 20 in that same standing-Hulk fixture. The exact 22→26 airborne-Hulk claim was not reproduced. Other targets, spacing and timing change contacts.

Measured replay: After command callback 12 and verified move entry, select one attack per callback: MP, HP, LK, MK, HK, LP, then repeat. Release the previous attack when changing buttons. Callback timing is not a native-frame or achievable hand-speed claim.

Close Spider-Man baseline: 9 first-move connected events. Both engines; realized separation 62; no extra input

Close Spider-Man with rotating buttons: 10 first-move connected events. Both engines; same separation 62, all 12 credits spent

Airborne Hulk baseline: 16 first-move connected events. Both engines; separation 325, first-contact Y466 versus ground 472

Airborne Hulk with rotating buttons: 20 first-move connected events. Both engines; same airborne fixture, all 12 credits spent

Ryu

Ken-mode Shinryuken

HCB + MP to enter Ken style; then QCF + two kicksCode traced and paired MAME fixture; broader maximum untested
No extra input12
Best demonstrated15

native combo hits

Standing Spider-Man, both human controlled, initial life 144; earlier matched MAME save-state fixture; native Ken-style change completed before the saved fixture

Maximum statusNot established

  1. Change to Ken style with HCB + MP; the verified native style value is 2.
  2. Perform QCF + two kicks. During the rising attack, repeatedly press and release LP; any fresh attack button passes the same mask.
  3. Continue through the ascent. Each qualifying edge shortens the current animation delay; simply holding attacks does not repeat that edge.

Code limitFresh D4&$0770 writes animation delay+$3E=1 at $048432. Ascent movement and the velocity/state exit continue separately. No finite number of bonus hits was proven.

Exact setup, other results & proof

Command and variant: HCB + MP to enter Ken style; then QCF + two kicks, E6=$1C

Baseline: 12 native combo hits. Standing Spider-Man, both human controlled, initial life 144; earlier matched MAME save-state fixture; native Ken-style change completed before the saved fixture; release inputs after the command

Best demonstrated: 15 native combo hits. Standing Spider-Man, both human controlled, initial life 144; earlier matched MAME save-state fixture; native Ken-style change completed before the saved fixture

Why this is not a universal maximum: 15 is the best in the earlier five-condition fixture. The animation-speed effect does not prove a contact ceiling for every target or height.

Measured replay: LP pressed on alternating emulator callbacks after the command, with neutral callbacks between; only the first selected move is scored.

Ryu

Akuma-mode Messatsu Gou Hadou

HCB + HP to enter Akuma style; then QCB + two punchesCode traced and paired MAME fixture; broader maximum untested
No extra input9
Best demonstrated10

native combo hits

Standing Spider-Man, both human controlled, initial life 144; earlier matched MAME save-state fixture; native Akuma-style change completed before the saved fixture

Maximum statusNot established

  1. Change to Akuma style with HCB + HP; the verified native style value is 4.
  2. Perform QCB + two punches.
  3. During the beam, press and release LP repeatedly. Any fresh punch or kick can qualify; holding all buttons or rotating directions does not replenish this beam.

Code limitUses the shared $0478D2 beam path:12 human credits and a 64-count timer. Each accepted attack skips one timer decrement.

Exact setup, other results & proof

Command and variant: HCB + HP to enter Akuma style; then QCB + two punches, E6=$0A

Baseline: 9 native combo hits. Standing Spider-Man, both human controlled, initial life 144; earlier matched MAME save-state fixture; native Akuma-style change completed before the saved fixture; release inputs after the command

Best demonstrated: 10 native combo hits. Standing Spider-Man, both human controlled, initial life 144; earlier matched MAME save-state fixture; native Akuma-style change completed before the saved fixture

Why this is not a universal maximum: The earlier Akuma fixture demonstrated 10, not the base-Ryu sweep’s 24. Results from a different style/target/position are not imported as an Akuma maximum.

Measured replay: LP pressed/released on alternating callbacks after the native command; all-button pulses produced the same 10 in this fixture.

Chun-Li

Kikosho

QCF + two punchesCode traced and paired MAME fixture; broader maximum untested
No extra input9
Best demonstrated13

native combo hits

Standing Spider-Man, both human controlled, initial life 144; earlier matched MAME save-state fixture; realized separation 60

Maximum statusNot established

  1. Perform QCF + two punches.
  2. While the energy sphere is active, repeatedly press and release LP. Any fresh attack qualifies, but pressing six attacks together is only one accepted event.
  3. Supply enough fresh presses to spend all 8 credits while the input window is open: every second accepted event buys another child-attack repetition.

Code limitEight credits at $04E2A4. The even remaining-credit branch increments the child repeat counter, so 8 accepted events grant 4 extra repeats. The child starts with 8 repeats; these are attack repetitions, not a universal hit total.

Exact setup, other results & proof

Command and variant: QCF + two punches; E6=$06

Baseline: 9 native combo hits. Standing Spider-Man, both human controlled, initial life 144; earlier matched MAME save-state fixture; realized separation 60; release inputs after the command

Best demonstrated: 13 native combo hits. Standing Spider-Man, both human controlled, initial life 144; earlier matched MAME save-state fixture; realized separation 60

Why this is not a universal maximum: Thirteen connected in this fixture. All input credits were spent, but contact geometry, initial attack behavior and child rearming are distinct from a proof of thirteen as the game-wide maximum.

Measured replay: LP press/release on alternating emulator callbacks after the command. All-six-button pulses reached the same 13; holding them stayed at 9.

Chun-Li

Senretsukyaku

QCF + two kicksNative code and all 60 credits verified;30 reproduced in MAME and custom FBNeo
No extra input15
Best demonstrated30

first-move connected events

MAME and custom FBNeo; standing Spider-Man, life 144, realized separation 60

Maximum statusNot established

  1. Perform QCF + two kicks.
  2. During the active kicking phase, keep changing which attack is pressed: cycle LP → MP → HP → LK → MK → HK and release the previous button.
  3. Continue until the kicking phase finishes. Alternating LP and MP also reached 30 in MAME. Simple on/off LP pulses reached 26 in the revised fixture; holding a chord stayed at 15.

Code limitSixty human credits and a 60-count active timer. Each accepted attack spends 1 credit instead of 1 timer decrement; the best scripts spend all 60, allowing 60 extra active countdown opportunities.

Exact setup, other results & proof

Command and variant: QCF + two kicks; E6=$08

Baseline: 15 first-move connected events. MAME and custom FBNeo; standing Spider-Man, life 144, realized separation 60; release inputs after the command

Best demonstrated: 30 first-move connected events. MAME and custom FBNeo; standing Spider-Man, life 144, realized separation 60

Why this is not a universal maximum: Spending the full input budget proves the controller limit, not a thirty-contact maximum against every opponent. Thirty is the best demonstrated here; the earlier 25 was not a ceiling.

Measured replay: After command callback 12 and verified move entry, select one attack per callback: MP, HP, LK, MK, HK, LP, then repeat. Release the previous attack when changing buttons. Callback timing is not a native-frame or achievable hand-speed claim.

Simple LP pulses: 26 first-move connected events. MAME revised Spider-Man fixture;45 of 60 credits spent

Alternating LP and MP: 30 first-move connected events. MAME revised Spider-Man fixture; all 60 credits spent

Holding all attacks: 15 first-move connected events. Same fixture; no repeated fresh attack edges

Wolverine

Berserker Barrage

QCF + LP; light versionCode traced and paired MAME fixture; broader maximum untested
No extra input2
Best demonstrated4

native combo hits

Standing Spider-Man, both human controlled, initial life 144; earlier matched MAME save-state fixture; light-punch command

Maximum statusNot established

  1. Perform QCF + LP; the published comparison uses the light version.
  2. During the slashing sequence, repeatedly press and release punches so a fresh punch reaches each continuation window.
  3. The recorded 2→4 comparison pulsed all six attacks together with a release between pulses; only the punch bits qualified. The code also accepts a fresh single punch.

Code limitAt $035224–$03522A the repeat byte is 3 plus native strength+$4D. Strength is encoded 0/2/4, giving counter values 3/5/7, not a 3/4/5 hit cap. A fresh-punch latch must still pass each continuation gate.

Exact setup, other results & proof

Command and variant: QCF + LP; light version, E6=$04

Baseline: 2 native combo hits. Standing Spider-Man, both human controlled, initial life 144; earlier matched MAME save-state fixture; light-punch command; release inputs after the command

Best demonstrated: 4 native combo hits. Standing Spider-Man, both human controlled, initial life 144; earlier matched MAME save-state fixture; light-punch command

Why this is not a universal maximum: Only the light-version contact comparison is published here. A loop-counter value is not a guaranteed number of connected hits; stronger variants were not assigned invented maxima.

Measured replay: After the native command, press all six attacks together on one emulator callback, release on the next, and repeat during the first move. This is the measured script pattern, not a required human frequency.

Wolverine

Tornado Claw

DP + LP; light versionCode traced and paired MAME fixture; broader maximum untested
No extra input3
Best demonstrated5

native combo hits

Standing Spider-Man, both human controlled, initial life 144; earlier matched MAME save-state fixture; light-punch command

Maximum statusNot established

  1. Perform forward → down → down-forward + LP.
  2. As Wolverine rises, repeatedly press and release punches through the continuation windows. New or buffered punches can enable later attack stages.
  3. The recorded 3→5 comparison used all-six-attack pulses; only punch bits matter to this path. Kicks alone do not satisfy its punch mask.

Code limitWindowed checks at $034A8E/$034B5C/$034C64/$034D12 test(D4|DE)&$0070, set+$4E=1 and clear the buffer. This enables specific continuation stages; no whole-move connected-hit bound was proven.

Exact setup, other results & proof

Command and variant: DP + LP; light version, E6=$00

Baseline: 3 native combo hits. Standing Spider-Man, both human controlled, initial life 144; earlier matched MAME save-state fixture; light-punch command; release inputs after the command

Best demonstrated: 5 native combo hits. Standing Spider-Man, both human controlled, initial life 144; earlier matched MAME save-state fixture; light-punch command

Why this is not a universal maximum: Five is the light-version fixture result. Buffered timing, stage availability and contact geometry prevent treating that result as every version’s maximum.

Measured replay: After the native command, press all six attacks together on one emulator callback, release on the next, and repeat during the first move. This is the measured script pattern, not a required human frequency.

Morrigan

Soul Eraser

QCF + two punchesCode traced and paired MAME fixture; broader maximum untested
No extra input18
Best demonstrated20

native combo hits

Standing Spider-Man, both human controlled, initial life 144; earlier matched MAME save-state fixture

Maximum statusNot established

  1. Perform QCF + two punches.
  2. While the beam and satellites are active, repeatedly press and release attacks. The recorded 20 used pulses of all six attacks together with a release between them.
  3. Changing directions has a separate effect: fresh direction edges accelerate the satellite orbit. It does not add more button credits; a combined best-hit recipe was not measured.

Code limitTen button credits at+$391 reimburse at most 10 phase-timer ticks. A separate direction flag doubles the satellite’s orbit step for that update; it does not create another 10-credit pool.

Exact setup, other results & proof

Command and variant: QCF + two punches; E6=$0E

Baseline: 18 native combo hits. Standing Spider-Man, both human controlled, initial life 144; earlier matched MAME save-state fixture; release inputs after the command

Best demonstrated: 20 native combo hits. Standing Spider-Man, both human controlled, initial life 144; earlier matched MAME save-state fixture

Why this is not a universal maximum: Twenty is the best among the published neutral/button/direction comparisons. Faster orbit can alter contact placement; the combination of both inputs was not exhaustively optimized.

Measured replay: After the native command, press all six attacks together on one emulator callback, release on the next, and repeat during the first move. This is the measured script pattern, not a required human frequency.

Direction pulses only: 19 native combo hits. Standing Spider-Man, both human controlled, initial life 144; earlier matched MAME save-state fixture; faster satellite orbit, not extra button credits

Shadow Lady

Big Bang Laser

QCF + two punchesCode traced and paired MAME fixture; broader maximum untested
No extra input21
Best demonstrated25

native combo hits

Standing Spider-Man, both human controlled, initial life 144; earlier matched MAME save-state fixture

Maximum statusNot established

  1. Choose Shadow Lady and perform QCF + two punches.
  2. During the active beam, repeatedly press and release attacks. The measured 25 used all-six-attack pulses with neutral callbacks between.
  3. Continue through the beam’s input window. A fresh single attack also satisfies the code mask; a held chord does not generate repeated edges.

Code limitSixteen credits initialize at $06AB2C; the active timer begins at 96. Accepted attacks spend 1 credit and skip 1 decrement, for at most 16 extra active countdown opportunities.

Exact setup, other results & proof

Command and variant: QCF + two punches; E6=$20

Baseline: 21 native combo hits. Standing Spider-Man, both human controlled, initial life 144; earlier matched MAME save-state fixture; release inputs after the command

Best demonstrated: 25 native combo hits. Standing Spider-Man, both human controlled, initial life 144; earlier matched MAME save-state fixture

Why this is not a universal maximum: All 16 credits were spent in the fixture. Four extra connected hits are observed, not proof that 25 is the largest possible combo.

Measured replay: After the native command, press all six attacks together on one emulator callback, release on the next, and repeat during the first move. This is the measured script pattern, not a required human frequency.

Red Venom

Venom Rush

QCF + LK; measured light-kick versionCode traced and paired MAME fixture; broader maximum untested
No extra input2
Best demonstrated7

native combo hits

Standing Spider-Man, both human controlled, initial life 144; earlier matched MAME save-state fixture; Red Venom, QCF+LK; extra input stopped at callback 360

Maximum statusNot established

  1. Choose Red Venom and perform QCF + LK.
  2. During the tendril attack, repeatedly press and release kicks. The best recorded script pressed all three kicks together, then released them, on alternating callbacks.
  3. Keep supplying kick edges before animation boundaries. Punches and directions do not sustain this repeat; holding kicks adds only the initial extra edge.

Code limitAt an eligible boundary, current/buffered kick bits $0700 increment the loop byte before its ordinary decrement, allowing another attack animation. The script took 28 repeat branches; no separate finite credit cap was proven.

Exact setup, other results & proof

Command and variant: QCF + LK; measured light-kick version, E6=$04

Baseline: 2 native combo hits. Standing Spider-Man, both human controlled, initial life 144; earlier matched MAME save-state fixture; Red Venom, QCF+LK; extra input stopped at callback 360; release inputs after the command

Best demonstrated: 7 native combo hits. Standing Spider-Man, both human controlled, initial life 144; earlier matched MAME save-state fixture; Red Venom, QCF+LK; extra input stopped at callback 360

Why this is not a universal maximum: Only some repeated tendrils stayed connected. Input was deliberately stopped at 360 and the move exited at 391; seven is a bounded script result, not a maximum or proof of infinite connected hits.

Measured replay: After QCF+LK, all-three-kick press/release alternates every callback until callback 360; no input after that cutoff.

Held kick chord: 4 native combo hits. One extra MK/HK edge after the LK command buys one repeat; it does not sustain the move

Punch taps or directions: 2 native combo hits. Same Red Venom fixture; neither passes the kick-only continuation check

Mega Man

Beat Plane

QCF + two kicksNative burst/lifetime code; MAME and custom FBNeo first-move score 23
No extra input3
Best demonstrated23

first-move connected events

MAME and custom FBNeo; standing Spider-Man, life 144; realized separation 62

Maximum statusNot established

  1. Perform QCF + two kicks; this is Beat Plane, not the QCF + two punches Hyper transformation.
  2. During the vehicle phase, repeatedly press and release attacks to start eligible firing bursts. Any fresh punch or kick passes the $0770 firing mask.
  3. Both a rotating single-button sequence and all-attack pulses reached 23. Directions steer the vehicle; they do not substitute for fresh attacks or refill its lifetime.

Code limitLifetime+$39E starts at 180 at $0633B0 and is decremented at $061A7C. The fresh-attack gate at $0638D2 enters a firing subphase, subject to its own burst/recovery gates. All 180 lifetime decrements occur with or without mashing.

Exact setup, other results & proof

Command and variant: QCF + two kicks; E6=$08

Baseline: 3 first-move connected events. MAME and custom FBNeo; standing Spider-Man, life 144; realized separation 62; release inputs after the command

Best demonstrated: 23 first-move connected events. MAME and custom FBNeo; standing Spider-Man, life 144; realized separation 62

Why this is not a universal maximum: Twenty-three is demonstrated, not a 36-hit claim or a universal ceiling. Four extra firing objects can produce many contacts; input timing, burst gates and target position still matter.

Measured replay: After command callback 12 and verified move entry, select one attack per callback: MP, HP, LK, MK, HK, LP, then repeat. Release the previous attack when changing buttons. Callback timing is not a native-frame or achievable hand-speed claim. The separate MAME comparison also reached 23 with all-six, punch-only or kick-only press/release pulses on alternating callbacks.

Baseline firing objects: 0 type $84/subtype $04 allocations. MAME; no post-command input or held attacks

Tapped firing objects: 4 type $84/subtype $04 allocations. MAME; all-attack, punch-only and kick-only pulses; all 180 lifetime decrements remain

Roll

Beat Plane

QCF + two kicksNative burst/lifetime code; MAME and custom FBNeo first-move score 23
No extra input3
Best demonstrated23

first-move connected events

MAME and custom FBNeo; standing Spider-Man, life 144; realized separation 58

Maximum statusNot established

  1. Perform QCF + two kicks; this is Beat Plane, not the QCF + two punches Hyper transformation.
  2. During the vehicle phase, repeatedly press and release attacks to start eligible firing bursts. Any fresh punch or kick passes the $0770 firing mask.
  3. Both a rotating single-button sequence and all-attack pulses reached 23. Directions steer the vehicle; they do not substitute for fresh attacks or refill its lifetime.

Code limitLifetime+$39E starts at 180 at $041C96 and is decremented at $0406EA. The fresh-attack gate at $0421AE enters a firing subphase, subject to its own burst/recovery gates. All 180 lifetime decrements occur with or without mashing.

Exact setup, other results & proof

Command and variant: QCF + two kicks; E6=$08

Baseline: 3 first-move connected events. MAME and custom FBNeo; standing Spider-Man, life 144; realized separation 58; release inputs after the command

Best demonstrated: 23 first-move connected events. MAME and custom FBNeo; standing Spider-Man, life 144; realized separation 58

Why this is not a universal maximum: Twenty-three is demonstrated, not a 36-hit claim or a universal ceiling. Four extra firing objects can produce many contacts; input timing, burst gates and target position still matter.

Measured replay: After command callback 12 and verified move entry, select one attack per callback: MP, HP, LK, MK, HK, LP, then repeat. Release the previous attack when changing buttons. Callback timing is not a native-frame or achievable hand-speed claim. The separate MAME comparison also reached 23 with all-six, punch-only or kick-only press/release pulses on alternating callbacks.

Baseline firing objects: 0 type $84/subtype $04 allocations. MAME; no post-command input or held attacks

Tapped firing objects: 4 type $84/subtype $04 allocations. MAME; all-attack, punch-only and kick-only pulses; all 180 lifetime decrements remain

Excluded later event: 1 post-exit hit-processing event. FBNeo raw tail;23 first-move events + 1 later event is not a 24-hit first move

Stock Marvel vs. Capcom, Europe 980123. Every one of the 28 named research-guide entries is represented, plus 21 static normal-continuation contexts. These are supported findings and tested controls, not a complete list of all semantically understood moves. Best demonstrated means the largest published result for the stated metric and fixture; no global connected-hit maximum is proven.

How to read and reproduce these numbers
  • Compare baseline and best demonstrated within the stated setup; changing the opponent, distance, style or scoring window changes the comparison.
  • Fresh input means a new press: release a button before pressing it again, or switch to a different released button. One chord is one Boolean event in the common helper.
  • Script timing is specified in emulator callbacks. Native input sampling, hitstop and game speed can differ; these are demonstrated scripts, not promised human hand-speed results.
  • Connected hits, native combo display, slam impacts, successful object allocations and controller credits are different units. Gold’s headline excludes events after the lethal hit.
  • No entry has a proven global hit maximum. A full credit budget establishes a code limit on accepted extensions, not a universal contact ceiling.
QCF
down → down-forward → forward
QCB
down → down-back → back
HCB
forward → down-forward → down → down-back → back
DP
forward → down → down-forward
PP
two punch buttons together
KK
two kick buttons together
LP/MP/HP
light/medium/heavy punch
LK/MK/HK
light/medium/heavy kick
facing
Forward and back are relative to the fighter’s facing. Recorded command fixtures face right.
Download the player guide data ↗ · Inputs and evidence package ↗

Three measured examples

MAME + instrumented FBNeo / observed

What did the extra input buy?

Three moves, different allowances. Each number belongs to the setup printed with it.

Ryu performing Shinkuu Hadoken in the original recorded fixtureEarlier capture · move identity only

Ryu

Shinkuu Hadoken

1620

first-move connected hits

No extra inputRotate buttons

Spend a finite allowance12 extra active updates, not 12 hits

Distance matters too. This reproduces a four-hit gain, not the reported 22→26 setup.

Setup & limits

Airborne Hulk; separation 325; first-contact Y 466, ground Y 472.

observed, not maximum. Each core restores its own fixture. Three neutral replays match exactly.

Inspect the evidence ↗
Chun-Li performing Senretsukyaku in the original recorded fixtureEarlier capture · move identity only

Chun-Li

Senretsukyaku

1530

first-move connected hits

No extra inputRotate buttons

Use all sixty credits60 spends + 60 ordinary countdowns

All 60 credits spent. Thirty is demonstrated here; no universal contact maximum is claimed.

Setup & limits

Standing Spider-Man; separation 60.

observed, not maximum. Each core restores its own fixture. Three neutral replays match exactly.

Inspect the evidence ↗
Gold War Machine performing Proton Cannon in the original recorded fixtureEarlier capture · move identity only

Gold War Machine

Proton Cannon

25116

FBNeo hit-processing events through KO

No extra inputRotate directions

Reimburse the firing timer96 + 627 − 723 = 0

MAME: 114 through the lethal event; FBNeo: 116. The separate full-window count of 181 includes post-KO events. Both allocated 180 missiles; allocations are not hits.

Setup & limits

Standing Spider-Man; separation 70; initial HP 144.

observed, not maximum. Each core restores its own fixture. Three neutral replays match exactly.

Inspect the evidence ↗

New MAME 0.287 and custom instrumented FBNeo comparisons, stock Euro 980123 program. Health, meter and positions prepared before saving; input replays make no gameplay-state writes. Images identify moves from earlier captures, not the new numerical outcomes.

These comparisons restore a fixed setup within each emulator. They are observations, not maximum combos or a ranking of the moves. Gold's card uses 116 events through the lethal hit in FBNeo; MAME recorded 114. Its separate full-window total of 181 includes processing after KO. The sections below connect each result to its code; the evidence package contains the player guide, input harnesses, raw observations, runtime logs, ROM identities and selected instruction excerpts.

Follow the code for your move

Start with the named findings below. Each verdict carries its input rule, code locations and limitations. The complete native-table inventory further below exposes the remaining naming and reachability questions as well.

Roster field guide · 28 examined paths

Same game. Different reasons to mash.

Search by character, move or input. Each finding keeps its mechanism, observed result and evidence together.

28 matching findings

Code + paired play test

Proton Cannon

Gold War Machine · QCF + PP · selector $02

A new direction buys another firing update. The missile scheduler keeps running while the firing timer remains active.

25 → 116hit-processing events with positive pre-damage life · FBNeo · no extra input → dense directions

Input: New directions

  1. Start timer at 96$02A8E2 · +$4E = $60
  2. New direction adds 1$02A9D8 · +$4E += 1
  3. Normal update removes 1$02A944 · +$4E -= 1

Standing Spider-Man; separation 70; initial HP 144. Includes post-KO processing. 114 MAME / 116 FBNeo events had positive health before damage; 181 in the full first-move window. 116 counts events whose target had positive life immediately before damage, including the lethal event. It is the best ordinary-health result in these scripts, not a guaranteed arcade or human maximum. RNG, placement and round-state behavior matter.

Paired event receipts

MAME 0.287: 25 → 181 · trial 10 event stream ↗

FBNeo schema12: 25 → 181 · trial 5 event stream ↗

Read this move’s research note →

Supported findings, not an exhaustive roster census. Live comparisons use stock Euro 980123 in MAME 0.287 or custom instrumented FBNeo and a restored move-specific save. Read each receipt for opponent, spacing and engine. Fixture health, meter and positions are set before saving; some roster probes also set selection RAM before initialization. No ROM patch or gameplay writes during input trials. Counts are examples, not universal maxima. Addresses are 68000 CPU addresses; +$ fields are object-relative.

Audit the native routes

The named guide above answers the findings we can explain directly. The code census below makes the wider coverage inspectable: normal contexts, special/super selectors, throws and character styles. A row can identify a real table and handler while still having an unresolved human command or conditional branch. Those gaps remain visible.

The coverage ledger / native code routes

Every table entry has a place to inspect.

Search normals, attack selectors and throws across the playable roster. Shared routes and style contexts are counted separately; these rows are not a count of distinct named moves.

Loading the native-table inventory…

Open the research index directly ↗

Challenge the numbers

Ryu is mashable, and distance matters. Those statements can both be true. With the same standing Spider-Man setup, fresh buttons changed 9 to 10; with the same airborne-Hulk setup, they changed 16 to 20 in MAME and instrumented FBNeo. Moving the opponent independently changed the baseline. We did not reproduce the exact reported 22→26 macro.

Thirty Senretsukyaku hits are demonstrated. Sixty is not a universal Gold Proton ceiling. Maximum Spider's alleged 25 is unsupported by these tests. Each claim below keeps the controls and scoring boundary alongside the number.

Try to break the claim

The controls belong beside the result.

59 cases · 354 trials · 177 neutral replays. Three baselines per case reproduced their complete normalized event streams.

Ryu

Shinkuu Hadoken

Standing Spider-Man; realized initial separation 62

Twelve credits skip twelve countdowns; holding and directions do not spend them.

MAME 0.287

910first-move hit-processing eventsTrial 7 · rotate buttonsExternal combo: 10 · later events excluded: 0

FBNeo schema12

910first-move hit-processing eventsTrial 5 · rotate buttonsExternal combo: 10 · later events excluded: 0

Ryu

Shinkuu Hadoken

Airborne Hulk; separation 325; first-contact Y 466, ground Y 472

Distance matters too. This reproduces a four-hit gain, not the reported 22→26 setup.

MAME 0.287

1620first-move hit-processing eventsTrial 4 · rotate buttonsExternal combo: 20 · later events excluded: 0

FBNeo schema12

1620first-move hit-processing eventsTrial 5 · rotate buttonsExternal combo: 20 · later events excluded: 0

Chun-Li

Senretsukyaku

Standing Spider-Man; separation 60

All 60 credits spent. Thirty is demonstrated here; no universal contact maximum is claimed.

MAME 0.287

1530first-move hit-processing eventsTrial 7 · rotate buttonsExternal combo: 30 · later events excluded: 0

FBNeo schema12

1530first-move hit-processing eventsTrial 5 · rotate buttonsExternal combo: 30 · later events excluded: 0

Gold War Machine

Proton Cannon

Standing Spider-Man; separation 70; initial HP 144

Includes post-KO processing. 114 MAME / 116 FBNeo events had positive health before damage; 181 in the full first-move window.

MAME 0.287

25181first-move hit-processing eventsTrial 10 · directions denseExternal combo: 181 · later events excluded: 0

FBNeo schema12

25181first-move hit-processing eventsTrial 5 · directions denseExternal combo: 181 · later events excluded: 0

Gold War Machine

Proton Cannon · diagnostic

Standing Spider-Man; separation 70; modified initial HP 1024

Separate high-health diagnostic. RNG seeds differ across cores; both produced 165 missile allocations. Not an ordinary-health result.

MAME 0.287

25166first-move hit-processing eventsTrial 7 · directions denseExternal combo: 166 · later events excluded: 0

FBNeo schema12

25149first-move hit-processing eventsTrial 5 · directions denseExternal combo: 149 · later events excluded: 0

Spider-Man

Maximum Spider

Standing Spider-Man; FBNeo separation 76

No extra hits in the tested controls. Its own handlers were examined; Web Throw cannot prove a 25-hit Maximum Spider.

FBNeo schema12

55first-move hit-processing eventsTrial 5 · rotate buttonsExternal combo: 5 · later events excluded: 0

Separate MAME vehicle / Maximum Spider receipts are in the roster investigation.

Mega Man

Beat Plane

Standing Spider-Man; FBNeo separation 62

Fresh buttons fire during the vehicle state. Steering is a different input path; this is not Hyper Mega Man.

FBNeo schema12

323first-move hit-processing eventsTrial 5 · rotate buttonsExternal combo: 23 · later events excluded: 0

Separate MAME vehicle / Maximum Spider receipts are in the roster investigation.

Roll

Beat Plane

Standing Spider-Man; FBNeo separation 58

The raw FBNeo tail had one later hit: exclude it and the first-move result is 23. This is not Hyper Roll.

FBNeo schema12

323first-move hit-processing eventsTrial 5 · rotate buttonsExternal combo: 23 · later events excluded: 1

Separate MAME vehicle / Maximum Spider receipts are in the roster investigation.

Inspect every case and input condition (59 cases)

Case names retain requested setup nicknames. The realized initial separation below takes precedence. An open-ended run may stop at a callback bound: “censored” is not a move finish.

mame/chun-hulk-near · initial gap 60 · HP 144
Externally scored first-move events; each initial neutral triple is identical.
Trial / inputEventsComboPositive HPLater excludedExit
1 · none1515150200
2 · none1515150200
3 · none1515150200
4 · hold all1515151200
5 · tap lp2626260258
6 · tap all2626261258
7 · rotate buttons3030300277
8 · alternate buttons3030300277
9 · directions1515150200
10 · directions dense1515150200
11 · hold direction1515150200
Exact inputs and settings · Event stream
mame/chun-spider-corner · initial gap 65 · HP 144
Externally scored first-move events; each initial neutral triple is identical.
Trial / inputEventsComboPositive HPLater excludedExit
1 · none1515150200
2 · none1515150200
3 · none1515150200
4 · hold all1515151200
5 · tap lp2626260258
6 · tap all2626261259
7 · rotate buttons3030300277
8 · alternate buttons3030300277
9 · directions1515150200
10 · directions dense1515150200
11 · hold direction1515150202
Exact inputs and settings · Event stream
mame/chun-spider-near · initial gap 60 · HP 144
Externally scored first-move events; each initial neutral triple is identical.
Trial / inputEventsComboPositive HPLater excludedExit
1 · none1515150200
2 · none1515150200
3 · none1515150200
4 · hold all1515151200
5 · tap lp2626260258
6 · tap all2626261258
7 · rotate buttons3030300277
8 · alternate buttons3030300278
9 · directions1515150200
10 · directions dense1515150200
11 · hold direction1515150200
Exact inputs and settings · Event stream
mame/chun-spider-window-controls · initial gap 60 · HP 144
Externally scored first-move events; each initial neutral triple is identical.
Trial / inputEventsComboPositive HPLater excludedExit
1 · none1515150200
2 · none1515150200
3 · none1515150200
4 · early only1515150200
5 · late only1515153200
Exact inputs and settings · Event stream
mame/gold-spider-diagnostic · initial gap 70 · HP 1024 · health-modified diagnostic
Externally scored first-move events; each initial neutral triple is identical.
Trial / inputEventsComboPositive HPLater excludedExit
1 · none2525250227
2 · none2525250227
3 · none2525250227
4 · hold direction2525250227
5 · tap all2525251228
6 · directions4242420287
7 · directions dense1661661660716
Exact inputs and settings · Event stream
mame/gold-spider-diagnostic-verified · initial gap 70 · HP 1024 · health-modified diagnostic
Externally scored first-move events; each initial neutral triple is identical.
Trial / inputEventsComboPositive HPLater excludedExit
1 · none2525250227
2 · none2525250227
3 · none2525250227
4 · hold direction2525250227
5 · tap all2525251228
6 · directions4242420287
7 · directions dense1661661660716
Exact inputs and settings · Event stream
mame/gold-spider-near · initial gap 70 · HP 144
Externally scored first-move events; each initial neutral triple is identical.
Trial / inputEventsComboPositive HPLater excludedExit
1 · none2525250227
2 · none2525250227
3 · none2525250227
4 · hold all2525251227
5 · tap lp2525250227
6 · tap all2525251228
7 · rotate buttons2525250227
8 · alternate buttons2525250227
9 · directions4242420287
10 · directions dense1751751140censored
11 · hold direction2525250227
Exact inputs and settings · Event stream
mame/gold-spider-verified · initial gap 70 · HP 144
Externally scored first-move events; each initial neutral triple is identical.
Trial / inputEventsComboPositive HPLater excludedExit
1 · none2525250227
2 · none2525250227
3 · none2525250227
4 · hold all2525251227
5 · tap lp2525250227
6 · tap all2525251228
7 · rotate buttons2525250227
8 · alternate buttons2525250227
9 · directions4242420287
10 · directions dense1811811140805
11 · hold direction2525250227
Exact inputs and settings · Event stream
mame/gold-spider-window-controls · initial gap 70 · HP 144
Externally scored first-move events; each initial neutral triple is identical.
Trial / inputEventsComboPositive HPLater excludedExit
1 · none2525250227
2 · none2525250227
3 · none2525250227
4 · early only2525250228
5 · late only2525250227
Exact inputs and settings · Event stream
mame/ryu-hulk-air0 · initial gap 64 · HP 144
Externally scored first-move events; each initial neutral triple is identical.
Trial / inputEventsComboPositive HPLater excludedExit
1 · none9990169
2 · none9990169
3 · none9990169
4 · hold all9995169
5 · tap lp9990180
6 · tap all9995179
7 · rotate buttons9990180
8 · alternate buttons9990180
9 · directions9990169
10 · directions dense9990169
11 · hold direction9990169
Exact inputs and settings · Event stream
mame/ryu-hulk-air16 · initial gap 64 · HP 144
Externally scored first-move events; each initial neutral triple is identical.
Trial / inputEventsComboPositive HPLater excludedExit
1 · none1111110186
2 · none1111110186
3 · none1111110186
4 · hold all1111115186
5 · tap lp1515150195
6 · tap all1515155195
7 · rotate buttons1515150195
8 · alternate buttons1515150195
9 · directions1111110185
10 · directions dense1111110186
11 · hold direction1111110185
Exact inputs and settings · Event stream
mame/ryu-hulk-air32 · initial gap 64 · HP 144
Externally scored first-move events; each initial neutral triple is identical.
Trial / inputEventsComboPositive HPLater excludedExit
1 · none1111110200
2 · none1111110200
3 · none1111110200
4 · hold all1111115200
5 · tap lp1515150211
6 · tap all1515155211
7 · rotate buttons1515150211
8 · alternate buttons1515150211
9 · directions1111110201
10 · directions dense1111110200
11 · hold direction1111110201
Exact inputs and settings · Event stream
mame/ryu-hulk-gap120-air0 · initial gap 120 · HP 144
Externally scored first-move events; each initial neutral triple is identical.
Trial / inputEventsComboPositive HPLater excludedExit
1 · none1313130169
2 · none1313130169
3 · none1313130169
4 · rotate buttons1313130180
Exact inputs and settings · Event stream
mame/ryu-hulk-gap120-jumpat8 · initial gap 120 · HP 144
Externally scored first-move events; each initial neutral triple is identical.
Trial / inputEventsComboPositive HPLater excludedExit
1 · none9990169
2 · none9990169
3 · none9990169
4 · rotate buttons1313130180
Exact inputs and settings · Event stream
mame/ryu-hulk-gap160 · initial gap 160 · HP 144
Externally scored first-move events; each initial neutral triple is identical.
Trial / inputEventsComboPositive HPLater excludedExit
1 · none2222220171
2 · none2222220171
3 · none2222220171
4 · rotate buttons2222220180
Exact inputs and settings · Event stream
mame/ryu-hulk-gap160-air0 · initial gap 160 · HP 144
Externally scored first-move events; each initial neutral triple is identical.
Trial / inputEventsComboPositive HPLater excludedExit
1 · none1212120169
2 · none1212120169
3 · none1212120169
4 · rotate buttons1616160179
Exact inputs and settings · Event stream
mame/ryu-hulk-gap160-jumpat12 · initial gap 160 · HP 144
Externally scored first-move events; each initial neutral triple is identical.
Trial / inputEventsComboPositive HPLater excludedExit
1 · none9990169
2 · none9990169
3 · none9990169
4 · rotate buttons1212120179
Exact inputs and settings · Event stream
mame/ryu-hulk-gap160-jumpat65-uphold20 · initial gap 160 · HP 144
Externally scored first-move events; each initial neutral triple is identical.
Trial / inputEventsComboPositive HPLater excludedExit
1 · none2222220171
2 · none2222220171
3 · none2222220171
4 · rotate buttons2222220180
Exact inputs and settings · Event stream
mame/ryu-hulk-gap160-jumpat8 · initial gap 160 · HP 144
Externally scored first-move events; each initial neutral triple is identical.
Trial / inputEventsComboPositive HPLater excludedExit
1 · none1111110170
2 · none1111110170
3 · none1111110170
4 · rotate buttons1212120180
Exact inputs and settings · Event stream
mame/ryu-hulk-gap200 · initial gap 200 · HP 144
Externally scored first-move events; each initial neutral triple is identical.
Trial / inputEventsComboPositive HPLater excludedExit
1 · none2121210170
2 · none2121210170
3 · none2121210170
4 · rotate buttons2323230179
Exact inputs and settings · Event stream
mame/ryu-hulk-gap200-air0 · initial gap 200 · HP 144
Externally scored first-move events; each initial neutral triple is identical.
Trial / inputEventsComboPositive HPLater excludedExit
1 · none1616160171
2 · none1616160171
3 · none1616160171
4 · rotate buttons2020200179
Exact inputs and settings · Event stream
mame/ryu-hulk-gap200-jumpat12 · initial gap 200 · HP 144
Externally scored first-move events; each initial neutral triple is identical.
Trial / inputEventsComboPositive HPLater excludedExit
1 · none1515150170
2 · none1515150170
3 · none1515150170
4 · rotate buttons1616160181
Exact inputs and settings · Event stream
mame/ryu-hulk-gap200-jumpat65-uphold20 · initial gap 200 · HP 144
Externally scored first-move events; each initial neutral triple is identical.
Trial / inputEventsComboPositive HPLater excludedExit
1 · none2121210170
2 · none2121210170
3 · none2121210170
4 · rotate buttons2323230179
Exact inputs and settings · Event stream
mame/ryu-hulk-gap200-jumpat8 · initial gap 200 · HP 144
Externally scored first-move events; each initial neutral triple is identical.
Trial / inputEventsComboPositive HPLater excludedExit
1 · none1616160172
2 · none1616160172
3 · none1616160172
4 · rotate buttons1717170181
Exact inputs and settings · Event stream
mame/ryu-hulk-gap240 · initial gap 240 · HP 144
Externally scored first-move events; each initial neutral triple is identical.
Trial / inputEventsComboPositive HPLater excludedExit
1 · none1818180170
2 · none1818180170
3 · none1818180170
4 · rotate buttons2222220180
Exact inputs and settings · Event stream
mame/ryu-hulk-gap240-air0 · initial gap 240 · HP 144
Externally scored first-move events; each initial neutral triple is identical.
Trial / inputEventsComboPositive HPLater excludedExit
1 · none1515150169
2 · none1515150169
3 · none1515150169
4 · rotate buttons1919190179
Exact inputs and settings · Event stream
mame/ryu-hulk-gap240-jumpat65-uphold20 · initial gap 240 · HP 144
Externally scored first-move events; each initial neutral triple is identical.
Trial / inputEventsComboPositive HPLater excludedExit
1 · none1818180170
2 · none1818180170
3 · none1818180170
4 · rotate buttons2222220180
Exact inputs and settings · Event stream
mame/ryu-hulk-gap240-jumpat8 · initial gap 240 · HP 144
Externally scored first-move events; each initial neutral triple is identical.
Trial / inputEventsComboPositive HPLater excludedExit
1 · none1515150169
2 · none1515150169
3 · none1515150169
4 · rotate buttons1717170179
Exact inputs and settings · Event stream
mame/ryu-hulk-gap280 · initial gap 280 · HP 144
Externally scored first-move events; each initial neutral triple is identical.
Trial / inputEventsComboPositive HPLater excludedExit
1 · none1919190171
2 · none1919190171
3 · none1919190171
4 · rotate buttons2323230181
Exact inputs and settings · Event stream
mame/ryu-hulk-gap280-air0 · initial gap 280 · HP 144
Externally scored first-move events; each initial neutral triple is identical.
Trial / inputEventsComboPositive HPLater excludedExit
1 · none1515150172
2 · none1515150172
3 · none1515150172
4 · rotate buttons1919190181
Exact inputs and settings · Event stream
mame/ryu-hulk-gap300 · initial gap 295 · HP 144
Externally scored first-move events; each initial neutral triple is identical.
Trial / inputEventsComboPositive HPLater excludedExit
1 · none1919190171
2 · none1919190171
3 · none1919190171
4 · rotate buttons2323230180
Exact inputs and settings · Event stream
mame/ryu-hulk-near · initial gap 64 · HP 144
Externally scored first-move events; each initial neutral triple is identical.
Trial / inputEventsComboPositive HPLater excludedExit
1 · none1111110170
2 · none1111110170
3 · none1111110170
4 · hold all1111115170
5 · tap lp1515150179
6 · tap all1515155179
7 · rotate buttons1515150179
8 · alternate buttons1515150179
9 · directions1111110169
10 · directions dense1111110169
11 · hold direction1111110171
Exact inputs and settings · Event stream
mame/ryu-hulk-world-far · initial gap 325 · HP 144
Externally scored first-move events; each initial neutral triple is identical.
Trial / inputEventsComboPositive HPLater excludedExit
1 · none2020200170
2 · none2020200170
3 · none2020200170
4 · rotate buttons2424240180
Exact inputs and settings · Event stream
mame/ryu-hulk-world-far-air0 · initial gap 325 · HP 144
Externally scored first-move events; each initial neutral triple is identical.
Trial / inputEventsComboPositive HPLater excludedExit
1 · none1616160170
2 · none1616160170
3 · none1616160170
4 · rotate buttons2020200181
Exact inputs and settings · Event stream
mame/ryu-hulk-world-far-air16 · initial gap 325 · HP 144
Externally scored first-move events; each initial neutral triple is identical.
Trial / inputEventsComboPositive HPLater excludedExit
1 · none2020200185
2 · none2020200185
3 · none2020200185
4 · rotate buttons2424240196
Exact inputs and settings · Event stream
mame/ryu-hulk-world-far-air8 · initial gap 325 · HP 144
Externally scored first-move events; each initial neutral triple is identical.
Trial / inputEventsComboPositive HPLater excludedExit
1 · none2020200177
2 · none2020200177
3 · none2020200177
4 · rotate buttons2424240188
Exact inputs and settings · Event stream
mame/ryu-hulk-world-near-jumpat70 · initial gap 64 · HP 144
Externally scored first-move events; each initial neutral triple is identical.
Trial / inputEventsComboPositive HPLater excludedExit
1 · none1111110169
2 · none1111110169
3 · none1111110169
4 · rotate buttons1515150179
Exact inputs and settings · Event stream
mame/ryu-hulk-world-near-jumpat80 · initial gap 64 · HP 144
Externally scored first-move events; each initial neutral triple is identical.
Trial / inputEventsComboPositive HPLater excludedExit
1 · none1111110169
2 · none1111110169
3 · none1111110169
4 · rotate buttons1515150179
Exact inputs and settings · Event stream
mame/ryu-spider-far · initial gap 87 · HP 144
Externally scored first-move events; each initial neutral triple is identical.
Trial / inputEventsComboPositive HPLater excludedExit
1 · none1010100169
2 · none1010100169
3 · none1010100169
4 · hold all1010109169
5 · tap lp1313130179
6 · tap all1313139179
7 · rotate buttons1313130179
8 · alternate buttons1313130179
9 · directions1010100170
10 · directions dense1010100169
11 · hold direction1010100169
Exact inputs and settings · Event stream
mame/ryu-spider-mid · initial gap 63 · HP 144
Externally scored first-move events; each initial neutral triple is identical.
Trial / inputEventsComboPositive HPLater excludedExit
1 · none9990169
2 · none9990169
3 · none9990169
4 · hold all9999169
5 · tap lp1010100179
6 · tap all1010109179
7 · rotate buttons1010100179
8 · alternate buttons1010100179
9 · directions9990169
10 · directions dense9990170
11 · hold direction9990170
Exact inputs and settings · Event stream
mame/ryu-spider-near · initial gap 62 · HP 144
Externally scored first-move events; each initial neutral triple is identical.
Trial / inputEventsComboPositive HPLater excludedExit
1 · none9990169
2 · none9990169
3 · none9990169
4 · hold all9999169
5 · tap lp1010100179
6 · tap all1010109180
7 · rotate buttons1010100179
8 · alternate buttons1010100179
9 · directions9990169
10 · directions dense9990170
11 · hold direction9990169
Exact inputs and settings · Event stream
mame/ryu-spider-window-controls · initial gap 62 · HP 144
Externally scored first-move events; each initial neutral triple is identical.
Trial / inputEventsComboPositive HPLater excludedExit
1 · none9990169
2 · none9990169
3 · none9990169
4 · early only9990169
5 · late only9990169
Exact inputs and settings · Event stream
mame/ryu-spider-world-far · initial gap 325 · HP 144
Externally scored first-move events; each initial neutral triple is identical.
Trial / inputEventsComboPositive HPLater excludedExit
1 · none1515150169
2 · none1515150169
3 · none1515150169
4 · rotate buttons1717170179
Exact inputs and settings · Event stream
mame/ryu-spider-world-mid · initial gap 160 · HP 144
Externally scored first-move events; each initial neutral triple is identical.
Trial / inputEventsComboPositive HPLater excludedExit
1 · none2020200170
2 · none2020200170
3 · none2020200170
4 · rotate buttons2121210180
Exact inputs and settings · Event stream
mame/ryu-spider-world-near · initial gap 62 · HP 144
Externally scored first-move events; each initial neutral triple is identical.
Trial / inputEventsComboPositive HPLater excludedExit
1 · none9990169
2 · none9990169
3 · none9990169
4 · rotate buttons1010100179
Exact inputs and settings · Event stream
fbneo/chun-spider-near · initial gap 60 · HP 144
Externally scored first-move events; each initial neutral triple is identical.
Trial / inputEventsComboPositive HPLater excludedExit
1 · none1515150201
2 · none1515150201
3 · none1515150201
4 · hold all1515151200
5 · rotate buttons3030300277
6 · directions1515150200
Exact inputs and settings · Event stream
fbneo/chun-spider-window-controls · initial gap 60 · HP 144
Externally scored first-move events; each initial neutral triple is identical.
Trial / inputEventsComboPositive HPLater excludedExit
1 · none1515150201
2 · none1515150201
3 · none1515150201
4 · early only1515150201
5 · late only1515152201
Exact inputs and settings · Event stream
fbneo/gold-spider-diagnostic · initial gap 70 · HP 1024 · health-modified diagnostic
Externally scored first-move events; each initial neutral triple is identical.
Trial / inputEventsComboPositive HPLater excludedExit
1 · none2525250227
2 · none2525250227
3 · none2525250227
4 · hold all2525251227
5 · directions dense1491491490712
6 · tap all2525251227
Exact inputs and settings · Event stream
fbneo/gold-spider-diagnostic-verified · initial gap 70 · HP 1024 · health-modified diagnostic
Externally scored first-move events; each initial neutral triple is identical.
Trial / inputEventsComboPositive HPLater excludedExit
1 · none2525250227
2 · none2525250227
3 · none2525250227
4 · hold all2525251227
5 · directions dense1491491490712
6 · tap all2525251227
Exact inputs and settings · Event stream
fbneo/gold-spider-near · initial gap 70 · HP 144
Externally scored first-move events; each initial neutral triple is identical.
Trial / inputEventsComboPositive HPLater excludedExit
1 · none2525250227
2 · none2525250227
3 · none2525250227
4 · hold all2525251227
5 · directions dense1761761160censored
6 · tap all2525251227
Exact inputs and settings · Event stream
fbneo/gold-spider-verified · initial gap 70 · HP 144
Externally scored first-move events; each initial neutral triple is identical.
Trial / inputEventsComboPositive HPLater excludedExit
1 · none2525250227
2 · none2525250227
3 · none2525250227
4 · hold all2525251227
5 · directions dense1811811160802
6 · tap all2525251227
Exact inputs and settings · Event stream
fbneo/gold-spider-window-controls · initial gap 70 · HP 144
Externally scored first-move events; each initial neutral triple is identical.
Trial / inputEventsComboPositive HPLater excludedExit
1 · none2525250227
2 · none2525250227
3 · none2525250227
4 · early only2525250227
5 · late only2525250227
Exact inputs and settings · Event stream
fbneo/mega-beat · initial gap 62 · HP 144
Externally scored first-move events; each initial neutral triple is identical.
Trial / inputEventsComboPositive HPLater excludedExit
1 · none3330279
2 · none3330279
3 · none3330279
4 · hold all3331279
5 · rotate buttons2323230279
6 · directions3330272
Exact inputs and settings · Event stream
fbneo/roll-beat · initial gap 58 · HP 144
Externally scored first-move events; each initial neutral triple is identical.
Trial / inputEventsComboPositive HPLater excludedExit
1 · none3330293
2 · none3330293
3 · none3330293
4 · hold all3331293
5 · rotate buttons2323231293
6 · directions3330289
Exact inputs and settings · Event stream
fbneo/ryu-hulk-world-far-air0 · initial gap 325 · HP 144
Externally scored first-move events; each initial neutral triple is identical.
Trial / inputEventsComboPositive HPLater excludedExit
1 · none1616160169
2 · none1616160169
3 · none1616160169
4 · hold all1616160169
5 · rotate buttons2020200179
6 · directions1616160169
Exact inputs and settings · Event stream
fbneo/ryu-spider-near · initial gap 62 · HP 144
Externally scored first-move events; each initial neutral triple is identical.
Trial / inputEventsComboPositive HPLater excludedExit
1 · none9990169
2 · none9990169
3 · none9990169
4 · hold all9991169
5 · rotate buttons1010100179
6 · directions9990169
Exact inputs and settings · Event stream
fbneo/ryu-spider-window-controls · initial gap 62 · HP 144
Externally scored first-move events; each initial neutral triple is identical.
Trial / inputEventsComboPositive HPLater excludedExit
1 · none9990169
2 · none9990169
3 · none9990169
4 · early only9990169
5 · late only9990169
Exact inputs and settings · Event stream
fbneo/ryu-spider-world-far · initial gap 325 · HP 144
Externally scored first-move events; each initial neutral triple is identical.
Trial / inputEventsComboPositive HPLater excludedExit
1 · none1515150169
2 · none1515150169
3 · none1515150169
4 · hold all1515151169
5 · rotate buttons1717170179
6 · directions1515150169
Exact inputs and settings · Event stream
fbneo/spider-maximum · initial gap 76 · HP 144
Externally scored first-move events; each initial neutral triple is identical.
Trial / inputEventsComboPositive HPLater excludedExit
1 · none5550236
2 · none5550236
3 · none5550236
4 · hold all5550236
5 · rotate buttons5550236
6 · directions5550234
Exact inputs and settings · Event stream

An observed contact count is not a maximum. Gold’s full-window events include post-KO processing. “Combo” reconstructs uninterrupted hit-store sequences outside the saturated HUD. Scored data · Protocol, code addresses and remaining limits

The input recipe rotates individual buttons at emulator callbacks; the trace separately counts actual native input samples and move updates. That distinction matters during hitstop. Holding buttons, using the wrong mask, and introducing new presses before or after the active window are controls. The outside-window receipts contain actual sampled edges, zero credit spends or timer reimbursements, and unchanged first-move hit counts for Ryu, Chun-Li and Gold in both cores. Late Chun-Li presses caused later normal attacks; those hits are excluded.

A maximum needs both a code-derived bound and an attainable example. This study establishes finite update or repeat budgets where the code supports them, and reports the contacts observed under each setup. It does not promote a best search result into a universal contact limit. The community reports are paraphrased hypotheses, not independent trace evidence. Protocol and disproof controls.

Gold War Machine: directions buy more firing time

Gold War Machine fires the missile version of Proton Cannon in a stock MAME capture
Gold's Proton Cannon, captured during the no-mash trial. The visible move is paired with the Gold-specific branch in the ROM.

Gold shares War Machine's top-level character code, but he does not share every attack implementation. Quarter-circle forward plus two punches selects +$E6=$02. At $02A5A4, character ID $28 branches to Gold's routine at $02A7E2.

Its firing timer starts at 96 at $02A8E2. The helper call at $02A9D0 accepts new directions, and $02A9D8 adds one to the timer. The ordinary update subtracts one at $02A944. One accepted direction reimburses that decrement.

A separate counter schedules a missile every fourth firing update. Keep the firing state alive longer, and the emitter gets more opportunities:

// Simplified firing-phase logic; surrounding gates omitted.
if (new_direction()) firing_timer += 1;
if (++emission_counter % 4 == 0) launch_missile();
if (--firing_timer == 0) begin_recovery();

To extend it: finish QCF + two punches, then continuously change directions while the cannon fires. The strongest recorded script cycles Down → Left → Up → Right, one cardinal per emulator callback with no neutral gaps. A held direction stops producing fresh edges; attack buttons do not reach this timer-extension branch. The timer must still be in its active firing state. Human stick rotation follows that rule, but the exact scripted count is not a promised hand-speed result.

The earlier ordinary-health fixture produced 25 hits without extra input and 40 with direction pulses. The firing state also lasted longer. Holding all buttons produced 23 hits and tapping them 24 in that earlier investigation: missile placement uses randomness, and contact totals can vary without an extension. The claim rests on the timer code and the longer firing state together. Those earlier controls use a different fixture from the revised dense-cardinal comparison. Gold and War Machine receipt.

The revised dense-cardinal test went further. With ordinary initial health 144, both engines counted 181 hit-processing events during the first move. MAME had 114 through the lethal event, then 67 after KO; FBNeo had 116 through the lethal event, then 65 after KO. The displayed counter saturated at 99. A successful missile allocation is a different event: both recorded 180 allocations.

The timer arithmetic closes: 96 initial + 627 reimbursements − 723 decrements = 0, followed by recovery. There is no separate finite mash-credit counter in this inspected loop, but the run ended. The launch-phase byte wrapped twice in MAME; that cycling byte is neither the hit counter nor an infinite-time proof. No tested reimbursement wrapped the timer from 255 to zero.

The visibly separate 1024-HP diagnostic produced 166 MAME / 149 FBNeo connections, despite matching 165 allocations and 565 reimbursements. Its initial RNG seeds differ between cores; both log native RNG changes without freezing them. It cannot stand in for an ordinary-health result. Counts before the first move ends exclude later buffered attacks; this controlled-window attribution does not claim a general per-projectile collision-owner trace. Revised Gold events, RNG and limits.

Ordinary War Machine's Proton Cannon follows another branch. Its timer starts at 120, decrements normally, and lacks Gold's reimbursement call. Its four input conditions all gave 27 fixture hits. Compare conditions within each saved character fixture; Gold and ordinary War Machine were captured on different stages.

Ryu: the style and the super both matter

Ryu performs Shinkuu Hadoken against Spider-Man in the paired stock-ROM experiment
Ryu's beam uses a finite button-credit budget. Akuma-mode Messatsu Gou Hadou reaches the same timer mechanism.

Shinkuu Hadoken initializes twelve human mash credits and a 64-update active timer. The relevant instructions are in the shared beam routine at $0478D2.

At $047AB6, an accepted attack-button press spends one credit at $047ABE, then branches past the timer decrement at $047AC4. The ordinary animation update still runs. After the credits reach zero, every eligible update advances the timer toward the finish.

Twelve credits can therefore buy twelve extra active updates, not twelve guaranteed hits. The original standing-Spider-Man fixture went from 9 to 10, independently reproduced in the revised MAME and FBNeo tests. Akuma-mode Messatsu Gou Hadou uses the same extension and also went from 9 to 10. The harness reached the styles through the game's ordinary transformation commands and checked the resulting style values. Ryu and styles receipt.

The new geometry grid separates distance from input. Against standing Spider-Man, initial separations 62, 160 and 325 produced 9→10, 20→21 and 15→17 in MAME. More distance did not monotonically add hits. Against airborne Hulk at realized separation 325, both cores produced 16→20, with first-contact Y=466 versus ground Y=472. A case nickname such as “air16” does not prove the opponent was airborne on impact; first-contact state and coordinates are in each receipt.

Standing Hulk at separation 325 produced the largest published matched Ryu result, 20→24 in MAME. At separation 160 he produced 22→22 even though the input mechanism exists. That counterexample matters: spending the beam's allowance need not change connected hits. After QCF + two punches, rotate fresh attack buttons during the beam; the measured rotation is MP → HP → LK → MK → HK → LP. All twelve credits can be spent, but holding the buttons or pressing after the active window buys nothing. The exact community 22→26 setup remains unreproduced. All Ryu distance and jump fixtures.

Ken-mode Shinryuken spends the press differentlyAnimation advancement, measured against the same saved opponentCONFIRMED IN GAME
Ryu in Ken mode rises through a fiery Shinryuken during the attack-button-tap trial
native combo peak12 → 15
input read$048428: fighter + $D4
accepted mask$0770 — attack buttons
effect$048432: animation delay = 1
next step$048438: ordinary animation update

The rows describe the paired experiment and code path; the still identifies the move. The peak result is not the counter at this particular capture.

Stock Euro 980123 • MAME 0.287 • ryu/ken_shinryuken.csv and .log in evidence archive

Ken-mode Shinryuken uses an inline input test. A fresh attack-button press sets the animation-delay word to 1, causing the next animation step immediately when the normal updater runs. Upward movement continues separately. Faster animation creates more attack opportunities during that ascent; the measured combo rose from 12 to 15.

Base-Ryu Shin Shoryuken is a different move and did not gain hits here: 3 across all five conditions. Shinkuu Tatsumaki Senpukyaku stayed at 18. Its loop consumes a fixed count at an animation boundary without the tested beam's press reimbursement. Similar names are not evidence of shared mechanics.

Hulk: follow the rocks, not just the hit counter

Hulk summons falling rocks during Gamma Quake in the stock MAME experiment
Gamma Quake's rocks have their own controller. Counting successful object allocations tests whether mashing actually creates more of them.

Hulk's three supers showed no attack-button extension of hits, active time or emitted attacks in the examined stock paths. This is backed by fifteen paired trials and by following the child objects—not simply by failing to find a shared-helper call.

Gamma Quake initializes a controller timer to 48 at $0A96DA. Each update decrements it. When the nonzero timer is divisible by four, the controller emits a falling rock. The qualifying values are 44, 40, 36, down to 4: eleven rocks.

All five input conditions allocated eleven rocks and 22 debris objects. Only seven rocks' attacks connected in this fixture. Eleven scheduled objects and seven connected hits answer different questions. The rock positions also use randomness. Hulk receipt and allocation addresses.

Gamma Wave follows a travelling controller with a fixed child-emission cadence. The allocation trace counted eight wave children in every condition; its fixture combo stayed at eleven. Those children can remain active after Hulk recovers, so the result includes their continuation.

Gamma Crush reads a held, facing-relative direction once to choose the descent trajectory. It does not count repeated presses. Its four-hit fixture result stayed unchanged under button mashing. Changing the trajectory can change which attacks connect; that is aiming, not a bonus-hit counter.

Negative control • ordinary Hulk

The button conditions did not add combo hits

No post-command input compared with repeated attack-button taps, within each move's saved fixture.

  1. Gamma Wave+0 hits / +0.0%
    release11tap11

    The wave children continue after the player recovers.

  2. Gamma Quake+0 hits / +0.0%
    release7tap7

    Eleven rocks were allocated; seven connected combo hits were observed.

  3. Gamma Crush+0 hits / +0.0%
    release4tap4

    A separate held-direction read chooses the descent variant.

Held buttons and light-punch taps agreed with these results. Orange Hulk shares top-level code but was not separately live-tested. These are ordinary-Hulk findings.

Hulk does have a separately commanded Gamma Charge follow-up, and a bounded light-kick repeat path was found in his normal-attack code. Those are distinct input mechanics. They do not establish a mash extension for his supers.

Chun-Li exposes the two simplest designs

The first experiments in this investigation used Chun-Li and five input patterns: release, hold, light-punch taps, all-button taps, and directions. Kikosho went from 9 to 13 hits; Senretsukyaku went from 15 to 25. Holding and directions did not produce either increase.

Recorded experiment · 852 source observations

Follow the credits. Watch the hits.

Real CSV samples from the paired Chun-Li tests. Scrub both trials at the same observation index.

Release after commandTap LP after command
Senretsukyaku: running peak native combo, no input versus LP tapsA step chart from exact MAME observations. No-input peak: 15; LP-tap peak: 25. The horizontal axis is observation callback index, not native game frames. Controls and current values are below the chart.07142128Highest combo observed so far163127190253Observation callback · not native frame dataSenretsukyaku: running peak native combo, no input versus LP tapsA step chart from exact MAME observations. No-input peak: 15; LP-tap peak: 25. The horizontal axis is observation callback index, not native game frames. Controls and current values are below the chart.07142128Highest combo observed so far1127253Observation · not native frames
30 observations/second · illustrative playback speed
Release after command8 peak hits60 credits · raw combo byte 8New-input word $0000 · phase timer 25
Tap LP after command8 peak hits46 credits · raw combo byte 8New-input word $0010 · phase timer 39
Source: senretsukyaku.csv. Values are sampled through the first Hyper only; later buffered normals are excluded. “Peak combo” is a running maximum of P1’s native +$120 byte, which can reset during recovery. Credits are raw sampled values and are zero before initialization. Graph lines stop at each trial’s last active observation. MAME callbacks are not native game frames, and playback speed is not game speed. Fixture and interpretation →

Both supers call the same button helper. What happens after it succeeds is the revealing part.

Kikosho buys child-object repeats. At $04E2A4, the player gets eight credits at +$398. Each accepted press spends one. Every second credit follows the pointer at +$392 to the energy field and increases that object's repeat counter. Eight accepted presses can buy four additional repeats. The child routine at $09879A..$0987CE rearms the attack and consumes the repeat counter.

The original Senretsukyaku 25-hit observation left eighteen credits unused. It establishes an input-sensitive extension, not a 25-hit ceiling.

Senretsukyaku buys time. The human path starts with sixty credits. A press spends one at $04E44E and returns before the active-phase countdown at $04E454. The animation has already advanced earlier in that update, so the existing kicking machinery gets more time before the finish. The credit limit keeps this particular extension finite. Chun-Li code and paired-trial receipt.

In the revised Senretsukyaku fixture, alternating on/off LP or all buttons reached 26 and spent 45 credits. Rotating individual buttons reached 30, spending all 60, in both cores. Holding and direction controls remained at 15. The trace records sixty ordinary countdowns in each condition: qualifying presses postponed those countdowns while the attack animation continued. Thirty is now attainable; this is still not a proof that every target and variant has a 30-contact ceiling. New Chun-Li scored trials.

Senretsukyaku trial with the native counter showing twenty-five hits after repeated light-punch inputs
Senretsukyaku trial with the native counter showing fifteen hits after releasing the controls
‹›
Release · 15 hitsTap LP · 25 hits
Historical 15→25 fixture, before the complete-credit test reached 30. These selected moments are not synchronized video frames or maximums.

The trace is the time-series evidence. Callback counts measure the observation schedule, not native frame data; hitstop and game speed intervene between those two clocks.

Who else has a supported mash mechanic?

The roster explorer separates live-measured behavior, static code findings, and tested controls. “More attacks” includes extra objects and throw slams, even when the HUD does not count them as more combo hits. Each entry links to its research receipt.

Wolverine's Berserker Barrage accepts fresh punches into a continuation latch at $0352D8..$0352E4. The later cycle checks the latch, within a strength-dependent finite repeat limit. Its light-punch fixture rose from 2 to 4 hits. Tornado Claw accepts current or buffered punches in specific animation windows and enables further stages; it went from 3 to 5.

Morrigan's Soul Eraser has two distinct responses. Buttons reimburse up to ten timer ticks and increased the fixture combo from 18 to 20. Directions set a flag that doubles a satellite's orbit step on that update. They accelerate satellite motion; they do not add button credits. Shadow Lady's Big Bang Laser uses sixteen button credits to delay the active countdown, measuring 21 to 25. Additional roster receipt.

Hyper Mega Man and Hyper Roll shorten a projectile scheduler by four additional ticks when a button press qualifies. Successful projectile allocations rose 14 to 23 for Mega Man and 12 to 20 for Roll. Their connected combo totals remained 17 and 15 in these fixtures. An earlier version of this article had only a static trace of that scheduler; the follow-up reached and instrumented both moves.

Attack objects • not combo hits

The scheduler produced more projectiles

ReleaseAdditional with taps
  1. Hyper Mega Man23 objects

    23 successful allocations; the connected combo remained 17.

  2. Hyper Roll20 objects

    20 successful allocations; the connected combo remained 15.

Allocation writes were recorded only after the game's allocator succeeded: $0A8616 for Mega Man and $0ACAF2 for Roll. These totals include the fixed emissions and the accelerated scheduler.

Red Venom's Venom Rush collects fresh kicks in a local buffer, then checks them at an animation boundary. A qualifying kick reimburses the loop decrement, permitting another attack cycle. It measured 2 to 7 hits with kick taps; punches and directions stayed at two. Holding all kicks bought one continuation because MK/HK were newly introduced after the LK command, then stopped helping. The ordinary Venom control remained at two across all five conditions. Red Venom receipt.

Venom's Web Throw illustrates why the combo byte alone is insufficient evidence. Twenty-two qualifying new directions or punches unlock one extra two-slam animation loop: two slams become four, while the HUD remains at one combo hit. The extra-slam state changes the damage attributes too; the no-input and button-tap trials ended with equal total damage. Red Venom has the corresponding throw code, but his Web Throw was not separately tested live. Throw receipt.

Strider's Ouroboros has a code-confirmed punch-triggered projectile path in the orbiting objects. A qualifying owner punch fires a shot, then applies a cooldown. It does not refill the 240-update effect lifetime. This is a static finding here, not a claimed live hit-count comparison.

Maximum Spider and the two Beat Planes

Mega Man fires from Beat Plane, with nineteen hits visible during the fresh-button trial
Beat Plane at observer callback 200 during fresh-button input. The HUD shows 19 at this intermediate moment; the event log continues to 23 first-move hits. The capture identifies the vehicle and firing action, not a maximum.

Maximum Spider was tested as Maximum Spider: QCF + PP, selector $08, its own dispatch and attack passes. The examined MAME and FBNeo conditions produced five first-move hits, including fresh buttons and directions. This supplies no support for a 25-hit mash claim. Spider-Man's separate Web Throw rotation routine cannot establish that result, and five observed hits is not a proof of a global five-hit maximum. Move-specific handlers and MAME controls, independent FBNeo events.

Mega Man and Roll's Beat Plane use QCF + KK, selector $08. In the tested MAME paths, fresh buttons initiated four additional firing objects at allocation store $0A05E4; neutral and held conditions initiated none. The vehicle lifetime still consumed 180 decrements. This is gated firing during the existing vehicle state, rather than extending its duration; steering remains a separate response.

Both vehicles reached 3→23 first-move hits in the MAME and FBNeo comparisons. Roll's raw FBNeo aggregate was 24 because it included a later hit after the first move ended. Scoring that boundary consistently gives 23. These findings are specific to Beat Plane, separate from the Hyper Mega Man / Hyper Roll schedulers above. They neither reproduce nor disprove a 36-hit community example under unknown conditions. Vehicle code and allocations.

Normals: another attack, another classification

The normal-attack census separates restarting or continuing a normal from extending one super. Independent instruction review found local repeat paths in War Machine's standing LP; Hulk's standing and crouching LK; selected Wolverine normals; Morrigan's standing LP; Captain America's standing LP/MK; Venom's standing LP/LK; and Spider-Man and Jin's standing/crouching LP. The ledger records their exact masks, animation gates, shared-call frontiers and whether an effect has been measured in play.

Hulk's two LK initializers write one to +$3A1 ($0306D0 / $030772). A qualifying new or buffered LK spends that allowance and restarts an animation ($030AAC / $030BA6). That is a one-use local continuation, not proof of a mashable Gamma Quake. Captain America's standing MK advances from local state zero to two after its continuation, bypassing that same input branch on the next update.

Wolverine supplies an especially useful counterexample. His air-MP code reads the same input word in both $BA branches, but +$BA=0 returns before the local attack reset and animation restart. The nonzero branch can reach that restart. An input reader alone is not enough to label both paths mashable. Shared global gates and human reachability remain qualified in the independent normal review.

Findings that remain separate

Jin and Zangief have direction-sensitive grab routines affecting animation or damage parameters. Their exact grab identities and live damage differences were not established in this pass. Spider-Man's Web Throw collects directional rotations for additional spin continuation and throw parameters; it is not yet evidence of extra damaging combo hits.

Lilith has copied helper code, but the tested Brilliant Shower did not execute it. Its changed contacts under directional input do not prove that this unreachable-looking helper is the cause. Ordinary War Machine's War Destroyer also produced an unresolved contact difference without a longer launch phase in the traced code. Neither observation belongs in a positive mash-extension list until the causal path is established. Roster caveats, War Destroyer comparison.

This is a supported set of named findings, not an exhaustive negative verdict on every unlisted move, airborne version, team combination or CPU path.

Follow the rule into the board

The target is the unmodified Euro 980123 arcade parent set, commonly named mvsc.zip. Every one of its 21 members matches the stock identities recorded by MAME. The member names and hashes matter more than the archive's filename: another revision or a modified set can have the same ZIP name. ROM provenance.

The 3D location map uses readable, simplified packages positioned from the board photograph, with program sockets, audio and graphics ROMs, connectors and the processor identified. Selecting a program window highlights its package and the corresponding address range. Top and focused views make the labels easier to inspect; the photograph and schematic remain available beside it.

The board photograph is a physical reference, not proof that its installed program chips contain this Euro revision. Its visible MVC 03D and 04D labels differ from the tested mvce.03a and mvce.04a. The map distinguishes a socket on the photographed board, a ROM member, and an address the CPU executes. Those are related locations, not interchangeable numbers.

The main 68000 is integrated into the B-board's DL-1525 custom chip. The detailed board notes in MAME and a physical decapsulation investigation identify that package. This matters when tracing the path from a program EPROM to an executing processor; the plastic shell alone does not identify the silicon. MAME PCB notes, DL-1525 decapsulation.

The shared input helper and the player-side mash routines shown here lie below $080000, in the first 512 KiB program window supplied by 03. Child attack logic such as Kikosho's $0986FA routine lies in 04, the next window. CPS-2 instruction fetches need the decrypted opcode view; ordinary absolute ROM data reads need the data view. A displayed CPU address is therefore an execution location, not a ready-to-paste patch offset or the encrypted bytes in a chip dump. Selected instruction bytes.

For a concrete example, the button-mask instruction's immediate word at CPU $01A3DE resides in mvce.03a. Its aligned raw dump bytes are 65 A0; correcting byte order gives the ordinary ROM word $A065; decoding the instruction gives $0770. The board explorer shows these as separate views. Its bit grid models address space—it is not a microscope image of the ROM die or a claim that ciphertext bits correspond directly to buttons. MAME opcode map, CPS-2 cipher implementation.

Two boards, two different RAM roles

The cabinet inputs enter the A-board through the JAMMA and kick connections, reaching its UD6 / DL-1123 I/O interface. The main bus connects that path to the B-board processor and program ROMs. The fighter's input words and mash credits occupy the decoded $FFxxxx work-RAM region, associated with the A-board UR13 / UR14 HM658128 devices. The B-board UA3 / UA4 HM6264 pair serves the separate sprite-object path. Highlighting that pair as the fighter's mash-credit storage would be wrong.

This logical map adapts Loïc “WydD” Petit's CPS-2 schematics, pinned to commit cbd37b3. Inspect the input sheet, work-RAM sheet, and B-board SRAM sheet. The original schematics are licensed CC BY 4.0 unless otherwise noted; this page simplifies their grouping and adds interactive highlighting. The author's uncertainty notes remain part of the evidence.

The lights mean logical execution or memory access. Explanatory steps identify where the described code and data live; recorded events must include a real program counter or access receipt. They are not measurements of voltage, power or exact electrical timing. MAME explicitly notes that RAM wait states are not emulated.

The bit that makes a press new

At $0136BC..$0136C4, the game computes the difference between the current controls and the previous sample:

newly_pressed = held_now & ~held_previous;

The result lands in the fighter's +$D4 word. A held button produces its initial edge and then stops being new. Release it, press again, and another edge appears. Use the input lab to see the individual bits and the helper's answer.

THE SIGNAL BENCH / KIKOSHO RULE MODEL

Press. Trace. Find the extra attack.

Follow one input from its changing bits to the code that grants another opportunity.

EXPLANATION / code-derived rule model
01 / MAKE A NEW PRESS

Eight credits. Four extra repeats.

+
0Waiting for a samplePress LP, then sample twice.
New-input word · +$D4$0000
HK0MK0LK0ST0HP0MP0LP00000
new = held & ~previous
eligible = (new & $0770) ≠ 0
spend only while credits remain
PLAYER +$3988 / 8 credits
CHILD REPEAT OPPORTUNITIES0 extra

One additional repeat per two spent credits

Assumes human-path gates and Kikosho’s active window pass. This samples the input/credit rule; it does not emulate collision, hitstop or the whole game.

CPS-2 / location → address → instruction

Where the rule lives.

Physical reference
Reference 93646B-6 B-board photograph. Numbered overlays locate the eight program ROM sockets; the outlined 4E package is DL-1525.4E · DL-1525
68000 core
Selected packageROM 03 left program column · row 6

mvce.03a · 512 KiB · CPU $000000–$07FFFF

Amber · inspected chipCyan · explanation
A · input UD6A · work RAMB · DL-1525B · ROM 3

The photograph locates B-board components. The signal map separates A-board input and work RAM from the B-board.

PROGRAM ROM 03mvce.03a
$000000$07FFFF

$0136C0 · decoded instructionmove.w d0,$d4(a6)

Address bits, raw bytes & chip receipt
Capacity512 KiB / 256K words
CRC32824E4A90
Photo stickerMVC 03D
Physical positionleft program column, row 6
CPU byte address$0136C0
Chip word address$09B60
Chip word index · 18 address bits
001001101101100000
01 / raw dump bytes8E F4 B2 11
02 / CPU word orderF4 8E 11 B2
03 / decrypted opcode view3D 40 00 D4
Raw CPU-order word
1111010010001110
Decrypted opcode-view word
0011110101000000

CPU-byte offset $0136C0; its first byte is at raw member offset $0136C1 after accounting for word swap. Decryption is a separate transformation.

Detect the edge

$0136BC–$0136C4

Current controls are compared with the previous sample. Only newly pressed bits survive. This word lives in A-board work RAM, at the fighter’s +$D4.

Ask the helper

$01A3D8–$01A3E6

The 68000 executes the ROM 03 helper. Mask $0770 accepts attack buttons. One eligible edge sets carry; six simultaneous edges still produce one yes/no result.

Spend one allowance

$04E2FA / player +$398

Inside Kikosho’s active window, an accepted press spends one of eight credits. A press is an opportunity granted by this move’s code, not a command to increment the hit counter.

Reach the child

$09879A / child +$50

Every second credit buys an additional energy-field repeat through the player’s +$392 pointer. The child’s repeat-processing instructions live in ROM 04. Eight credits can buy four additional repeats.

Collision decides

player +$120

The rearmed attack must still connect. Collision, opponent state and spacing decide the result. This rule model stops at attack opportunities; the separate recorded tests measured nine versus thirteen hits.

The shared attack-button helper at $01A3CC masks that word with $0770: three punches and three kicks. The direction helper at $01A3A8 uses $000F. Both return a yes/no result, through the CPU's carry flag. Six simultaneous button edges are one accepted event, not six credits.

; Human attack-button path, stock Euro 980123
$01A3D8  move.w  $d4(a6),d0
$01A3DC  andi.w  #$0770,d0
$01A3E0  beq     $01A3E8       ; no qualifying new press
$01A3E2  ori.b   #$01,ccr      ; success: set carry
$01A3E6  rts

These shared helpers also check the human-control flag and the +$2B9 gate. CPU fighters take a separate random/table path. The results here concern ordinary human-controlled attacks; a CPU demonstration is not a substitute for that test. Several moves perform their own inline checks, so searching only for calls to these helpers misses real mash mechanics. Input and helper receipt.

Could another move be made mashable?

Yes, through a move-specific modification. The examples provide several designs: extend a timer, add a child repeat, accelerate an animation, shorten an emission schedule, or unlock another attack cycle. There is no universal “mashable” bit established by this investigation.

From a fresh press to a possible hit
Drawing the diagram…
Input grants an opportunity. Move state and collision still decide what happens.

A sustained beam must coordinate its owner and child lifetime. A repeated strike must rearm an attack identity so a lingering hitbox is not assumed to damage the same opponent again. A cinematic grab needs authored additional phases and a reachable finish. Each design also needs fresh move-local state and cleanup on interruption.

A useful first patch would pick one move, one accepted mask, one active window and a small bonus budget, then test contact, block, whiff, airborne opponents, hitstop, interruption, tags and DHCs. Calling the existing input helper is only the beginning. No universal patch or new balance behavior is shipped with this article.

For the related display question, the 999-hit counter investigation follows what happens after attacks connect. Counting more visible hits and creating additional attacks are separate pieces of code.

Why the diagrams work this way

The visual design draws on recent research, while the MvC conclusions come from the ROM and experiments. July 2026's VizPilot combines guided explanation with synchronized highlighting and free exploration. The design inference here is to keep a chip's location, its address and the selected instruction connected as the reader moves between views.

Two further papers helped sharpen this revision. Debugging as Evidence-Driven Reasoning, uploaded June 29, 2026 and listed as submitted to IEEE VIS, identifies opportunities for connecting expected behavior, observed state and evidence across artifacts. WireYourWay, a CHI 2026 accepted-paper preprint uploaded March 5, 2026, explores contextual guidance around physical hardware. The design inference here is a shared cursor: selecting an event should locate its instruction, changed value, chip and gameplay consequence together. Those are arXiv upload dates and venue statuses, not interchangeable publication dates. These studies inform the presentation; they do not establish MvC mechanics.

A July 2026 comparison of static, scrollytelling and chatbot onboarding found engagement and guideline-adherence advantages in its pooled interactive conditions, but no significant comprehension difference. Animation is therefore not treated as proof of better understanding: the numbers, labels and written explanation remain available. Code Arcades, from September 2025, informed the overview-to-detail structure; it does not establish that 3D is universally better than a flat diagram.

The page uses Mermaid 12.0.0, released September 10, 2026. Its bundled ELK layout places the process diagram above. The migration preserves this site's existing theme and explicitly retains Dagre for older diagrams, so the new defaults do not silently restyle earlier articles. Version 12 also adds use-case diagrams and per-container ELK choices; those features were reviewed, but this explanation needs a process flow and a separate board explorer. Official Mermaid 12 release notes.

How to inspect and reproduce the evidence

Download the complete public evidence package, or start with the file manifest, selected instruction bytes, and reproduction guide.

The package retains the original Chun-Li, Ryu/style, Hulk and additional roster investigations, then adds the revised scored events, the native-table inventory, exact input harnesses and independent code review. The comparison ledger above derives its case and trial counts directly from the scored records. It omits ROMs, decrypted images, save states, NVRAM and the exploratory whole-ROM linear scan. Each included file has a SHA-256 entry, and verify.py checks the extracted package.

Every live comparison restores a move-specific save. Both players are human controlled. The original fixtures use standing Spider-Man; the revision also varies Hulk, position and native jumping inputs. Health, meter and position are seeded before saving. Some additional-roster probes also choose the pre-match roster ID in selection RAM; their receipts say which ones. The original Gold fixture uses his native secret selection code; the revised core fixtures seed the pre-match character selection and then let native initialization run. The original Ryu style tests use native transformation commands. The gameplay ROM stays stock, and the input trials do not rewrite gameplay state.

The common +$B0=$2A attack state includes specials as well as supers. It cannot identify a Hyper by itself; the harness also checks the actual command and +$E6 move selector. The original Chun-Li comparisons are supers, but the broader roster includes specials and throws. Hulk's published input-read logs are the corrected -traced versions, which exclude reads generated by the observer itself.

An independent event recount checked every core trial and the headline counterexamples without calling the publication scorer. A separate hardware audit checked member identities, raw byte order, instruction samples and the two RAM roles.

The tools were MAME 0.287, an instruction-boundary-checked 68000 disassembly, and a custom instrumented FBNeo schema12 executable. Its build hash and source-base identity are in the revision protocol; this is an independent emulator core, not a claim about an unmodified retail Fightcade client. MAME records pass-through memory writes; FBNeo's pre-instruction hooks compute the imminent value from the verified instruction. The evidence identifies that distinction. MAME's Lua machine reference documents save/load and screenshots; its memory reference documents reads and taps. Those tools make the observations repeatable. The code, write traces and paired inputs together support the gameplay conclusions.

Corrections and open findings · 14 September 2026

  • Fixture values are observed, not maximums. The original Senretsukyaku 25 left 18 credits; the revised complete-credit fixture reaches 30. The Ryu 9→10 example used standing Spider-Man, not airborne Hulk.
  • Gold's HUD stops at 99; the external event count does not. The revised ordinary-health result separately reports events through KO, later overkill, missile allocations and timer changes. None is an infinity proof.
  • Maximum Spider needs its own evidence. Web Throw cannot establish its alleged 25-hit result. Its examined conditions stayed at five. Beat Plane now has separate code, firing-object and runtime evidence.
  • Roll's apparent 24 was a scoring-boundary error. One event occurred after the vehicle move; the corrected first-move total is 23. Hulk's wave children demonstrate the opposite trap: a parent-only window can omit genuine delayed child attacks, so his older eleven-hit wave result explicitly includes their continuation.
  • The full native-table census is not a fully named move list. Shared style routes, conditional normal branches, unidentified commands and unresolved global callees remain individually marked. No untested row becomes a negative verdict.
  • Baseline, best demonstrated and maximum are separate. The player guide now puts inputs and measured totals together. Gold's main result excludes post-KO events; its full-window count remains in the evidence. The super table marks unresolved cases explicitly instead of turning missing evidence into “not mashable.”
  • The board view now emphasizes chip locations. The generated scan viewer has been removed. Cited photographs and schematics ground the more detailed location map. Fighter work RAM belongs to the A-board map, distinct from B-board sprite-object SRAM. Recorded lights cite actual events; explanatory lights are labeled as such.

The remaining work is specific: reproduce the exact airborne-Hulk 22→26 setup; close unresolved normal/command reachability paths; establish general delayed-projectile hit ownership; and derive an attainable contact bound before calling any observed total a universal maximum. The article ships the supporting and contrary evidence together so those claims can be challenged.

Written by Daniel Plas Rivera · 5,748 words · $35

ShareXLinkedIn