{
  "schemaVersion": 1,
  "scope": "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.",
  "readingRules": [
    "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."
  ],
  "categoryLabels": {
    "positive": "More combo hits demonstrated",
    "production-only": "More attacks produced; extra combo hits not demonstrated",
    "control": "Tested controls: no added combo hits in the examined comparison",
    "static": "Code-supported avenue; live outcome unmeasured or identity unresolved"
  },
  "inputTerms": {
    "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."
  },
  "entries": [
    {
      "id": "gold-proton",
      "character": "Gold War Machine",
      "move": "Proton Cannon",
      "category": "positive",
      "command": "QCF + two punches; Gold variant, E6=$02",
      "inputRecipe": [
        "Choose Gold War Machine and perform QCF + two punches.",
        "Once the cannon starts, keep changing direction through Right → Down → Left → Up → Right. Keep cycling for the firing phase.",
        "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."
      ],
      "baseline": {
        "value": 25,
        "unit": "hit-processing events with positive pre-damage life",
        "setup": "Custom instrumented FBNeo; Spider-Man starts with 144 HP; realized separation 70; release inputs after the command; the baseline does not KO the opponent"
      },
      "bestObserved": {
        "value": 116,
        "unit": "hit-processing events with positive pre-damage life",
        "setup": "Custom instrumented FBNeo; Spider-Man starts with 144 HP; realized separation 70; includes the lethal event"
      },
      "codeBound": "The 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.",
      "maximumStatus": "Not established",
      "globalMaximum": null,
      "whyNotMaximum": "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.",
      "evidence": [
        {
          "label": "Ordinary-health FBNeo events",
          "href": "/blog/mvsc-mash/evidence/revision/core/fbneo/gold-spider-verified/events.jsonl"
        },
        {
          "label": "Ordinary-health MAME events",
          "href": "/blog/mvsc-mash/evidence/revision/core/mame/gold-spider-verified/events.jsonl"
        },
        {
          "label": "Protocol, counters and KO split",
          "href": "/blog/mvsc-mash/evidence/revision/core/methodology.md"
        },
        {
          "label": "Native timer and allocation instructions",
          "href": "/blog/mvsc-mash/evidence/revision/core/code-excerpts.txt"
        }
      ],
      "confidence": "Native code plus three repeated baselines per fixture in MAME and custom FBNeo",
      "additionalObservations": [
        {
          "label": "MAME through lethal hit",
          "value": 114,
          "unit": "hit-processing events with positive pre-damage life",
          "setup": "Same ordinary 144 HP fixture; MAME"
        },
        {
          "label": "Full first move, including after KO",
          "value": 181,
          "unit": "hit-processing events",
          "setup": "Both engines;116 + 65 after KO events in FBNeo, 114 + 67 in MAME; native display clamps at 99"
        },
        {
          "label": "Successful missile allocations",
          "value": 180,
          "unit": "objects",
          "setup": "Both ordinary-health dense-direction trials; objects are not connected hits"
        },
        {
          "label": "High-health diagnostic only",
          "value": 166,
          "unit": "connected events",
          "setup": "MAME with initial target life changed to 1024; FBNeo 149; both allocate 165 missiles. Not the ordinary-health comparison."
        }
      ],
      "measuredInput": "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."
    },
    {
      "id": "hulk-wave",
      "character": "Hulk",
      "move": "Gamma Wave",
      "category": "control",
      "command": "QCF + two punches; E6=$0C",
      "inputRecipe": [
        "Perform QCF + two punches and let the waves reach the opponent.",
        "Extra attack taps are not a supported way to add waves in the examined path. Compare release, hold, punch taps, kick taps and directions from the same position."
      ],
      "baseline": {
        "value": 11,
        "unit": "native combo hits including the wave tail",
        "setup": "MAME ten-condition Gamma Wave fixture; standing Spider-Man, both human controlled, initial life 144; travelling-wave tail included; release inputs after the command"
      },
      "bestObserved": {
        "value": 11,
        "unit": "native combo hits including the wave tail",
        "setup": "MAME ten-condition Gamma Wave fixture; standing Spider-Man, both human controlled, initial life 144; travelling-wave tail included"
      },
      "codeBound": "The observed controller schedule creates eight wave children in every tested input condition. The controller reloads its cadence timer to 10; no button refill was found.",
      "maximumStatus": "Not established",
      "globalMaximum": null,
      "whyNotMaximum": "Travelling waves outlast Hulk’s recovery. The attacker-state-only counter peaks at 3, while its continuing waves reach 11 here. Those contacts depend on position and do not establish a move maximum.",
      "evidence": [
        {
          "label": "Ten-condition repeated-baseline results",
          "href": "/blog/mvsc-mash/evidence/revision/roster/hulk_gamma_wave/summary.json"
        },
        {
          "label": "Wave/controller instructions",
          "href": "/blog/mvsc-mash/evidence/hulk.md"
        }
      ],
      "confidence": "Native controller trace and ten MAME conditions with three identical baselines",
      "additionalObservations": [
        {
          "label": "Attacker-state window only",
          "value": 3,
          "unit": "native combo hits",
          "setup": "Both release and tapping; excludes later travelling-wave contacts"
        },
        {
          "label": "Wave children",
          "value": 8,
          "unit": "successful allocations",
          "setup": "All ten conditions"
        }
      ]
    },
    {
      "id": "hulk-quake",
      "character": "Hulk",
      "move": "Gamma Quake",
      "category": "control",
      "command": "QCF + two kicks; E6=$14",
      "inputRecipe": [
        "Perform QCF + two kicks.",
        "The examined rock schedule runs automatically. Button mashing did not add rocks or raise this paired result."
      ],
      "baseline": {
        "value": 7,
        "unit": "native combo hits",
        "setup": "Standing Spider-Man, both human controlled, initial life 144; earlier matched MAME save-state fixture; release inputs after the command"
      },
      "bestObserved": {
        "value": 7,
        "unit": "native combo hits",
        "setup": "Standing Spider-Man, both human controlled, initial life 144; earlier matched MAME save-state fixture"
      },
      "codeBound": "Controller starts at 48 and emits at remaining 44, 40,…,4: eleven falling rocks. The instrumented runs also produced 22 debris objects; neither count is a connected-hit ceiling.",
      "maximumStatus": "Not established",
      "globalMaximum": null,
      "whyNotMaximum": "Rock placement uses randomness and contacts depend on the opponent. The fixed emission schedule is proven for the controller, not a universal seven-hit bound.",
      "evidence": [
        {
          "label": "Paired results and native scheduler",
          "href": "/blog/mvsc-mash/evidence/hulk.md"
        }
      ],
      "confidence": "Code traced and paired MAME fixture; broader maximum untested"
    },
    {
      "id": "hulk-crush",
      "character": "Hulk",
      "move": "Gamma Crush",
      "category": "control",
      "command": "QCB + two punches; E6=$06",
      "inputRecipe": [
        "Perform QCB + two punches.",
        "A held direction can choose the descent trajectory at the one-time direction check. Repeated attack presses do not buy another descent or extra cycle in the examined path."
      ],
      "baseline": {
        "value": 4,
        "unit": "native combo hits",
        "setup": "Standing Spider-Man, both human controlled, initial life 144; earlier matched MAME save-state fixture; release inputs after the command"
      },
      "bestObserved": {
        "value": 4,
        "unit": "native combo hits",
        "setup": "Standing Spider-Man, both human controlled, initial life 144; earlier matched MAME save-state fixture"
      },
      "codeBound": "The descent helper reads held facing-relative direction once at $031C56. Back/forward/other input select trajectory variants; there is no demonstrated button-credit extension.",
      "maximumStatus": "Not established",
      "globalMaximum": null,
      "whyNotMaximum": "A different trajectory can change contact geometry. Four is the result of this fixture, not a global hit bound.",
      "evidence": [
        {
          "label": "Trajectory code and paired controls",
          "href": "/blog/mvsc-mash/evidence/hulk.md"
        }
      ],
      "confidence": "Code traced and paired MAME fixture; broader maximum untested"
    },
    {
      "id": "ryu-hadoken",
      "character": "Ryu",
      "move": "Shinkuu Hadoken",
      "category": "positive",
      "command": "QCF + two punches; base Ryu, E6=$0A",
      "inputRecipe": [
        "For the best published result, use base Ryu against standing Hulk with the documented wide separation; then perform QCF + two punches.",
        "As the beam becomes active, keep producing fresh attacks: roll through LP → MP → HP → LK → MK → HK, releasing the previous button as you change.",
        "Keep the sequence going during the beam. A held chord produces only its initial edge; directions do not spend the beam credits."
      ],
      "baseline": {
        "value": 20,
        "unit": "first-move connected events",
        "setup": "MAME; standing Hulk, initial life 144; realized separation 325; first-contact Y472 for both fighters; release inputs after the command"
      },
      "bestObserved": {
        "value": 24,
        "unit": "first-move connected events",
        "setup": "MAME; standing Hulk, initial life 144; realized separation 325; first-contact Y472 for both fighters"
      },
      "codeBound": "Twelve 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.",
      "maximumStatus": "Not established",
      "globalMaximum": null,
      "whyNotMaximum": "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.",
      "evidence": [
        {
          "label": "Best recorded standing-Hulk case",
          "href": "/blog/mvsc-mash/evidence/revision/core/mame/ryu-hulk-world-far/result.json"
        },
        {
          "label": "Best case exact input/events",
          "href": "/blog/mvsc-mash/evidence/revision/core/mame/ryu-hulk-world-far/events.jsonl"
        },
        {
          "label": "All tested positions and scores",
          "href": "/blog/mvsc-mash/evidence/revision/core/result-summary.json"
        },
        {
          "label": "Beam code and method",
          "href": "/blog/mvsc-mash/evidence/revision/core/methodology.md"
        }
      ],
      "confidence": "Code verified; best 24 is MAME; close and airborne comparisons independently reproduced in MAME/FBNeo",
      "additionalObservations": [
        {
          "label": "Close Spider-Man baseline",
          "value": 9,
          "unit": "first-move connected events",
          "setup": "Both engines; realized separation 62; no extra input"
        },
        {
          "label": "Close Spider-Man with rotating buttons",
          "value": 10,
          "unit": "first-move connected events",
          "setup": "Both engines; same separation 62, all 12 credits spent"
        },
        {
          "label": "Airborne Hulk baseline",
          "value": 16,
          "unit": "first-move connected events",
          "setup": "Both engines; separation 325, first-contact Y466 versus ground 472"
        },
        {
          "label": "Airborne Hulk with rotating buttons",
          "value": 20,
          "unit": "first-move connected events",
          "setup": "Both engines; same airborne fixture, all 12 credits spent"
        }
      ],
      "measuredInput": "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."
    },
    {
      "id": "ryu-ken",
      "character": "Ryu",
      "move": "Ken-mode Shinryuken",
      "category": "positive",
      "command": "HCB + MP to enter Ken style; then QCF + two kicks, E6=$1C",
      "inputRecipe": [
        "Change to Ken style with HCB + MP; the verified native style value is 2.",
        "Perform QCF + two kicks. During the rising attack, repeatedly press and release LP; any fresh attack button passes the same mask.",
        "Continue through the ascent. Each qualifying edge shortens the current animation delay; simply holding attacks does not repeat that edge."
      ],
      "baseline": {
        "value": 12,
        "unit": "native combo hits",
        "setup": "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"
      },
      "bestObserved": {
        "value": 15,
        "unit": "native combo hits",
        "setup": "Standing Spider-Man, both human controlled, initial life 144; earlier matched MAME save-state fixture; native Ken-style change completed before the saved fixture"
      },
      "codeBound": "Fresh 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.",
      "maximumStatus": "Not established",
      "globalMaximum": null,
      "whyNotMaximum": "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.",
      "evidence": [
        {
          "label": "Native style, inline reader and paired results",
          "href": "/blog/mvsc-mash/evidence/ryu.md"
        }
      ],
      "confidence": "Code traced and paired MAME fixture; broader maximum untested",
      "measuredInput": "LP pressed on alternating emulator callbacks after the command, with neutral callbacks between; only the first selected move is scored."
    },
    {
      "id": "ryu-akuma",
      "character": "Ryu",
      "move": "Akuma-mode Messatsu Gou Hadou",
      "category": "positive",
      "command": "HCB + HP to enter Akuma style; then QCB + two punches, E6=$0A",
      "inputRecipe": [
        "Change to Akuma style with HCB + HP; the verified native style value is 4.",
        "Perform QCB + two punches.",
        "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."
      ],
      "baseline": {
        "value": 9,
        "unit": "native combo hits",
        "setup": "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"
      },
      "bestObserved": {
        "value": 10,
        "unit": "native combo hits",
        "setup": "Standing Spider-Man, both human controlled, initial life 144; earlier matched MAME save-state fixture; native Akuma-style change completed before the saved fixture"
      },
      "codeBound": "Uses the shared $0478D2 beam path:12 human credits and a 64-count timer. Each accepted attack skips one timer decrement.",
      "maximumStatus": "Not established",
      "globalMaximum": null,
      "whyNotMaximum": "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.",
      "evidence": [
        {
          "label": "Akuma command and shared beam receipts",
          "href": "/blog/mvsc-mash/evidence/ryu.md"
        }
      ],
      "confidence": "Code traced and paired MAME fixture; broader maximum untested",
      "measuredInput": "LP pressed/released on alternating callbacks after the native command; all-button pulses produced the same 10 in this fixture."
    },
    {
      "id": "ryu-tatsu",
      "character": "Ryu",
      "move": "Shinkuu Tatsumaki Senpukyaku",
      "category": "control",
      "command": "Base style: QCB + two kicks; E6=$0C",
      "inputRecipe": [
        "Use base Ryu and perform QCB + two kicks.",
        "The tested punch taps, all-button taps and directions did not extend the loop. Do not apply Ken-style Shinryuken advice to this move."
      ],
      "baseline": {
        "value": 18,
        "unit": "native combo hits",
        "setup": "Standing Spider-Man, both human controlled, initial life 144; earlier matched MAME save-state fixture; release inputs after the command"
      },
      "bestObserved": {
        "value": 18,
        "unit": "native combo hits",
        "setup": "Standing Spider-Man, both human controlled, initial life 144; earlier matched MAME save-state fixture"
      },
      "codeBound": "The native loop counter starts at 8 at $047C38 and is spent at $047C62 without new-press reimbursement in that loop.",
      "maximumStatus": "Not established",
      "globalMaximum": null,
      "whyNotMaximum": "Eight loop units are not eight contacts. Eighteen was observed in the tested fixture; other contexts were not exhaustively measured.",
      "evidence": [
        {
          "label": "Base-style loop and five input controls",
          "href": "/blog/mvsc-mash/evidence/ryu.md"
        }
      ],
      "confidence": "Code traced and paired MAME fixture; broader maximum untested"
    },
    {
      "id": "ryu-shoryuken",
      "character": "Ryu",
      "move": "Shin Shoryuken",
      "category": "control",
      "command": "Base style: DP + two punches; E6=$16",
      "inputRecipe": [
        "Use base Ryu and perform forward → down → down-forward + two punches.",
        "Extra button taps did not increase this result. The mashable Ken-style rising super is Shinryuken, entered with a different style and command."
      ],
      "baseline": {
        "value": 3,
        "unit": "native combo hits",
        "setup": "Standing Spider-Man, both human controlled, initial life 144; earlier matched MAME save-state fixture; release inputs after the command"
      },
      "bestObserved": {
        "value": 3,
        "unit": "native combo hits",
        "setup": "Standing Spider-Man, both human controlled, initial life 144; earlier matched MAME save-state fixture"
      },
      "codeBound": "No button-driven extra-cycle budget was established for this base-style path. Five input conditions each produced 3.",
      "maximumStatus": "Not established",
      "globalMaximum": null,
      "whyNotMaximum": "A negative paired result is not a proof that three is the largest number of possible contacts.",
      "evidence": [
        {
          "label": "Base Shin Shoryuken versus Ken Shinryuken",
          "href": "/blog/mvsc-mash/evidence/ryu.md"
        }
      ],
      "confidence": "Code traced and paired MAME fixture; broader maximum untested"
    },
    {
      "id": "chun-kikosho",
      "character": "Chun-Li",
      "move": "Kikosho",
      "category": "positive",
      "command": "QCF + two punches; E6=$06",
      "inputRecipe": [
        "Perform QCF + two punches.",
        "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.",
        "Supply enough fresh presses to spend all 8 credits while the input window is open: every second accepted event buys another child-attack repetition."
      ],
      "baseline": {
        "value": 9,
        "unit": "native combo hits",
        "setup": "Standing Spider-Man, both human controlled, initial life 144; earlier matched MAME save-state fixture; realized separation 60; release inputs after the command"
      },
      "bestObserved": {
        "value": 13,
        "unit": "native combo hits",
        "setup": "Standing Spider-Man, both human controlled, initial life 144; earlier matched MAME save-state fixture; realized separation 60"
      },
      "codeBound": "Eight 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.",
      "maximumStatus": "Not established",
      "globalMaximum": null,
      "whyNotMaximum": "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.",
      "evidence": [
        {
          "label": "Budget, child rearming and paired results",
          "href": "/blog/mvsc-mash/evidence/chun-li.md"
        },
        {
          "label": "Original Kikosho trace",
          "href": "/blog/mvsc-mash/evidence/kikosho.csv"
        }
      ],
      "confidence": "Code traced and paired MAME fixture; broader maximum untested",
      "measuredInput": "LP press/release on alternating emulator callbacks after the command. All-six-button pulses reached the same 13; holding them stayed at 9."
    },
    {
      "id": "chun-senretsu",
      "character": "Chun-Li",
      "move": "Senretsukyaku",
      "category": "positive",
      "command": "QCF + two kicks; E6=$08",
      "inputRecipe": [
        "Perform QCF + two kicks.",
        "During the active kicking phase, keep changing which attack is pressed: cycle LP → MP → HP → LK → MK → HK and release the previous button.",
        "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."
      ],
      "baseline": {
        "value": 15,
        "unit": "first-move connected events",
        "setup": "MAME and custom FBNeo; standing Spider-Man, life 144, realized separation 60; release inputs after the command"
      },
      "bestObserved": {
        "value": 30,
        "unit": "first-move connected events",
        "setup": "MAME and custom FBNeo; standing Spider-Man, life 144, realized separation 60"
      },
      "codeBound": "Sixty 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.",
      "maximumStatus": "Not established",
      "globalMaximum": null,
      "whyNotMaximum": "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.",
      "evidence": [
        {
          "label": "MAME best input comparison",
          "href": "/blog/mvsc-mash/evidence/revision/core/mame/chun-spider-near/result.json"
        },
        {
          "label": "Independent FBNeo comparison",
          "href": "/blog/mvsc-mash/evidence/revision/core/fbneo/chun-spider-near/result.json"
        },
        {
          "label": "Exact rotating-button harness",
          "href": "/blog/mvsc-mash/evidence/revision/core/mame/chun-spider-near/harness.lua"
        },
        {
          "label": "Budget and scoring protocol",
          "href": "/blog/mvsc-mash/evidence/revision/core/methodology.md"
        }
      ],
      "confidence": "Native code and all 60 credits verified;30 reproduced in MAME and custom FBNeo",
      "additionalObservations": [
        {
          "label": "Simple LP pulses",
          "value": 26,
          "unit": "first-move connected events",
          "setup": "MAME revised Spider-Man fixture;45 of 60 credits spent"
        },
        {
          "label": "Alternating LP and MP",
          "value": 30,
          "unit": "first-move connected events",
          "setup": "MAME revised Spider-Man fixture; all 60 credits spent"
        },
        {
          "label": "Holding all attacks",
          "value": 15,
          "unit": "first-move connected events",
          "setup": "Same fixture; no repeated fresh attack edges"
        }
      ],
      "measuredInput": "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."
    },
    {
      "id": "wolverine-barrage",
      "character": "Wolverine",
      "move": "Berserker Barrage",
      "category": "positive",
      "command": "QCF + LP; light version, E6=$04",
      "inputRecipe": [
        "Perform QCF + LP; the published comparison uses the light version.",
        "During the slashing sequence, repeatedly press and release punches so a fresh punch reaches each continuation window.",
        "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."
      ],
      "baseline": {
        "value": 2,
        "unit": "native combo hits",
        "setup": "Standing Spider-Man, both human controlled, initial life 144; earlier matched MAME save-state fixture; light-punch command; release inputs after the command"
      },
      "bestObserved": {
        "value": 4,
        "unit": "native combo hits",
        "setup": "Standing Spider-Man, both human controlled, initial life 144; earlier matched MAME save-state fixture; light-punch command"
      },
      "codeBound": "At $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.",
      "maximumStatus": "Not established",
      "globalMaximum": null,
      "whyNotMaximum": "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.",
      "evidence": [
        {
          "label": "Continuation code and LP fixture",
          "href": "/blog/mvsc-mash/evidence/roster.md"
        }
      ],
      "confidence": "Code traced and paired MAME fixture; broader maximum untested",
      "measuredInput": "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."
    },
    {
      "id": "wolverine-claw",
      "character": "Wolverine",
      "move": "Tornado Claw",
      "category": "positive",
      "command": "DP + LP; light version, E6=$00",
      "inputRecipe": [
        "Perform forward → down → down-forward + LP.",
        "As Wolverine rises, repeatedly press and release punches through the continuation windows. New or buffered punches can enable later attack stages.",
        "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."
      ],
      "baseline": {
        "value": 3,
        "unit": "native combo hits",
        "setup": "Standing Spider-Man, both human controlled, initial life 144; earlier matched MAME save-state fixture; light-punch command; release inputs after the command"
      },
      "bestObserved": {
        "value": 5,
        "unit": "native combo hits",
        "setup": "Standing Spider-Man, both human controlled, initial life 144; earlier matched MAME save-state fixture; light-punch command"
      },
      "codeBound": "Windowed 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.",
      "maximumStatus": "Not established",
      "globalMaximum": null,
      "whyNotMaximum": "Five is the light-version fixture result. Buffered timing, stage availability and contact geometry prevent treating that result as every version’s maximum.",
      "evidence": [
        {
          "label": "Punch/buffer gates and live claw fixture",
          "href": "/blog/mvsc-mash/evidence/roster.md"
        }
      ],
      "confidence": "Code traced and paired MAME fixture; broader maximum untested",
      "measuredInput": "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."
    },
    {
      "id": "morrigan-soul",
      "character": "Morrigan",
      "move": "Soul Eraser",
      "category": "positive",
      "command": "QCF + two punches; E6=$0E",
      "inputRecipe": [
        "Perform QCF + two punches.",
        "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.",
        "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."
      ],
      "baseline": {
        "value": 18,
        "unit": "native combo hits",
        "setup": "Standing Spider-Man, both human controlled, initial life 144; earlier matched MAME save-state fixture; release inputs after the command"
      },
      "bestObserved": {
        "value": 20,
        "unit": "native combo hits",
        "setup": "Standing Spider-Man, both human controlled, initial life 144; earlier matched MAME save-state fixture"
      },
      "codeBound": "Ten 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.",
      "maximumStatus": "Not established",
      "globalMaximum": null,
      "whyNotMaximum": "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.",
      "evidence": [
        {
          "label": "Separate button and satellite-direction paths",
          "href": "/blog/mvsc-mash/evidence/roster.md"
        }
      ],
      "confidence": "Code traced and paired MAME fixture; broader maximum untested",
      "additionalObservations": [
        {
          "label": "Direction pulses only",
          "value": 19,
          "unit": "native combo hits",
          "setup": "Standing Spider-Man, both human controlled, initial life 144; earlier matched MAME save-state fixture; faster satellite orbit, not extra button credits"
        }
      ],
      "measuredInput": "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."
    },
    {
      "id": "shadow-laser",
      "character": "Shadow Lady",
      "move": "Big Bang Laser",
      "category": "positive",
      "command": "QCF + two punches; E6=$20",
      "inputRecipe": [
        "Choose Shadow Lady and perform QCF + two punches.",
        "During the active beam, repeatedly press and release attacks. The measured 25 used all-six-attack pulses with neutral callbacks between.",
        "Continue through the beam’s input window. A fresh single attack also satisfies the code mask; a held chord does not generate repeated edges."
      ],
      "baseline": {
        "value": 21,
        "unit": "native combo hits",
        "setup": "Standing Spider-Man, both human controlled, initial life 144; earlier matched MAME save-state fixture; release inputs after the command"
      },
      "bestObserved": {
        "value": 25,
        "unit": "native combo hits",
        "setup": "Standing Spider-Man, both human controlled, initial life 144; earlier matched MAME save-state fixture"
      },
      "codeBound": "Sixteen 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.",
      "maximumStatus": "Not established",
      "globalMaximum": null,
      "whyNotMaximum": "All 16 credits were spent in the fixture. Four extra connected hits are observed, not proof that 25 is the largest possible combo.",
      "evidence": [
        {
          "label": "Sixteen-credit beam and live result",
          "href": "/blog/mvsc-mash/evidence/roster.md"
        }
      ],
      "confidence": "Code traced and paired MAME fixture; broader maximum untested",
      "measuredInput": "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."
    },
    {
      "id": "megaman-hyper",
      "character": "Mega Man",
      "move": "Hyper Mega Man",
      "category": "production-only",
      "command": "QCF + two punches; E6=$0E",
      "inputRecipe": [
        "Perform QCF + two punches; this is Hyper Mega Man, not QCF + two kicks Beat Plane.",
        "During the transformation attack, repeatedly press and release attacks. The measured script pulses all six attacks together, releases, then repeats.",
        "Fresh presses bring the next scheduled projectile forward. The published fixture produced more objects without adding connected combo hits."
      ],
      "baseline": {
        "value": 14,
        "unit": "successful projectile allocations",
        "setup": "Standing Spider-Man, both human controlled, initial life 144; earlier matched MAME save-state fixture; release inputs after the command"
      },
      "bestObserved": {
        "value": 23,
        "unit": "successful projectile allocations",
        "setup": "Standing Spider-Man, both human controlled, initial life 144; earlier matched MAME save-state fixture"
      },
      "codeBound": "The scheduler normally subtracts 1; an accepted attack subtracts 4 more at $06457C. It consumes a bounded native emission schedule rather than generating one guaranteed hit per press.",
      "maximumStatus": "Not established",
      "globalMaximum": null,
      "whyNotMaximum": "Twenty-three counts successful object allocations, including fixed emissions. The native combo stayed 17→17; no higher-contact or universal shot maximum was demonstrated.",
      "evidence": [
        {
          "label": "Emission counts and native scheduler",
          "href": "/blog/mvsc-mash/evidence/roster.md"
        }
      ],
      "confidence": "Code traced and paired MAME fixture; broader maximum untested",
      "additionalObservations": [
        {
          "label": "No-input combo",
          "value": 17,
          "unit": "native combo hits",
          "setup": "Standing Spider-Man, both human controlled, initial life 144; earlier matched MAME save-state fixture"
        },
        {
          "label": "Tapped combo",
          "value": 17,
          "unit": "native combo hits",
          "setup": "Standing Spider-Man, both human controlled, initial life 144; earlier matched MAME save-state fixture"
        }
      ],
      "measuredInput": "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."
    },
    {
      "id": "roll-hyper",
      "character": "Roll",
      "move": "Hyper Roll",
      "category": "production-only",
      "command": "QCF + two punches; E6=$0E",
      "inputRecipe": [
        "Perform QCF + two punches; QCF + two kicks is the separate Beat Plane move.",
        "During the attack, pulse and release attacks repeatedly. The recorded comparison used all six together on alternating callbacks.",
        "This accelerates scheduled projectiles. It did not raise the connected combo count in the published fixture."
      ],
      "baseline": {
        "value": 12,
        "unit": "successful projectile allocations",
        "setup": "Standing Spider-Man, both human controlled, initial life 144; earlier matched MAME save-state fixture; release inputs after the command"
      },
      "bestObserved": {
        "value": 20,
        "unit": "successful projectile allocations",
        "setup": "Standing Spider-Man, both human controlled, initial life 144; earlier matched MAME save-state fixture"
      },
      "codeBound": "The scheduler subtracts 1 normally and 4 extra on accepted attacks at $042E74, consuming a finite schedule. This is not a one-button-one-projectile promise.",
      "maximumStatus": "Not established",
      "globalMaximum": null,
      "whyNotMaximum": "Twenty allocations is the observed production result; contacts stayed 15→15. Projectile availability and collision must be measured separately.",
      "evidence": [
        {
          "label": "Roll scheduler and successful allocations",
          "href": "/blog/mvsc-mash/evidence/roster.md"
        }
      ],
      "confidence": "Code traced and paired MAME fixture; broader maximum untested",
      "additionalObservations": [
        {
          "label": "No-input combo",
          "value": 15,
          "unit": "native combo hits",
          "setup": "Standing Spider-Man, both human controlled, initial life 144; earlier matched MAME save-state fixture"
        },
        {
          "label": "Tapped combo",
          "value": 15,
          "unit": "native combo hits",
          "setup": "Standing Spider-Man, both human controlled, initial life 144; earlier matched MAME save-state fixture"
        }
      ],
      "measuredInput": "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."
    },
    {
      "id": "venom-throw",
      "character": "Venom",
      "move": "Web Throw",
      "category": "production-only",
      "command": "HCB + punch; measured HCB + LP, E6=$02",
      "inputRecipe": [
        "Perform HCB + LP close enough to capture the opponent.",
        "During the captured slam phase, repeatedly press and release punches, or keep changing directions. The recorded button comparison used all-six-attack pulses; only punches and directions qualify.",
        "Reach 22 qualifying input events before the captured phase ends. This unlocks another two-slam animation loop; a chord still counts as one event per accepted update."
      ],
      "baseline": {
        "value": 2,
        "unit": "slam impacts",
        "setup": "Standing Spider-Man, both human controlled, initial life 144; earlier matched MAME save-state fixture; release inputs after the command"
      },
      "bestObserved": {
        "value": 4,
        "unit": "slam impacts",
        "setup": "Standing Spider-Man, both human controlled, initial life 144; earlier matched MAME save-state fixture"
      },
      "codeBound": "The 22-event threshold grants one extra loop credit at $03B04A. One loop contains two slams: the demonstrated two slams become four. The native combo display remains 1.",
      "maximumStatus": "Not established",
      "globalMaximum": null,
      "whyNotMaximum": "Four describes slam impacts, not four combo-counter hits. Damage attributes change for the extra loop; the button and neutral trials did equal total damage. No extra-combo or damage maximum follows.",
      "evidence": [
        {
          "label": "Threshold, individual slams and unchanged combo display",
          "href": "/blog/mvsc-mash/evidence/roster-additions.md"
        }
      ],
      "confidence": "Code traced and paired MAME fixture; broader maximum untested",
      "additionalObservations": [
        {
          "label": "Native combo display",
          "value": 1,
          "unit": "combo hit",
          "setup": "Both no-input and extra-slam trials"
        },
        {
          "label": "Life removed",
          "value": 34,
          "unit": "HP",
          "setup": "Both neutral and button-pulse trials in this fixture; extra slams have different damage attributes"
        }
      ],
      "measuredInput": "Pulse all six attacks on alternating callbacks after HCB+LP, or rotate cardinals with neutral gaps. Each accepted DA&$007F update reduces the 22-event threshold only once."
    },
    {
      "id": "red-rush",
      "character": "Red Venom",
      "move": "Venom Rush",
      "category": "positive",
      "command": "QCF + LK; measured light-kick version, E6=$04",
      "inputRecipe": [
        "Choose Red Venom and perform QCF + LK.",
        "During the tendril attack, repeatedly press and release kicks. The best recorded script pressed all three kicks together, then released them, on alternating callbacks.",
        "Keep supplying kick edges before animation boundaries. Punches and directions do not sustain this repeat; holding kicks adds only the initial extra edge."
      ],
      "baseline": {
        "value": 2,
        "unit": "native combo hits",
        "setup": "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"
      },
      "bestObserved": {
        "value": 7,
        "unit": "native combo hits",
        "setup": "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"
      },
      "codeBound": "At 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.",
      "maximumStatus": "Not established",
      "globalMaximum": null,
      "whyNotMaximum": "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.",
      "evidence": [
        {
          "label": "Kick-only mask, 28 repeats and controls",
          "href": "/blog/mvsc-mash/evidence/red-venom.md"
        }
      ],
      "confidence": "Code traced and paired MAME fixture; broader maximum untested",
      "additionalObservations": [
        {
          "label": "Held kick chord",
          "value": 4,
          "unit": "native combo hits",
          "setup": "One extra MK/HK edge after the LK command buys one repeat; it does not sustain the move"
        },
        {
          "label": "Punch taps or directions",
          "value": 2,
          "unit": "native combo hits",
          "setup": "Same Red Venom fixture; neither passes the kick-only continuation check"
        }
      ],
      "measuredInput": "After QCF+LK, all-three-kick press/release alternates every callback until callback 360; no input after that cutoff."
    },
    {
      "id": "red-throw",
      "character": "Red Venom",
      "move": "Web Throw",
      "category": "static",
      "command": "HCB + punch; E6=$02",
      "inputRecipe": [
        "The traced Red Venom path is HCB + punch.",
        "During the capture, fresh punches or changing directions feed the corresponding 22-event extra-slam threshold.",
        "This is a code-supported input recipe. Red Venom’s slam count and damage were not separately measured."
      ],
      "baseline": {
        "value": null,
        "unit": "slam impacts",
        "setup": "No separate Red Venom Web Throw gameplay comparison"
      },
      "bestObserved": {
        "value": null,
        "unit": "slam impacts",
        "setup": "No separate Red Venom Web Throw gameplay comparison"
      },
      "codeBound": "Copied threshold/credit logic at $067F16–$067F26 and loop boundary $067E0C correspond to one additional slam-animation loop.",
      "maximumStatus": "Not measured",
      "globalMaximum": null,
      "whyNotMaximum": "Ordinary Venom’s 2→4 measurement cannot be presented as a Red Venom measurement. No live hit/slam maximum is established.",
      "evidence": [
        {
          "label": "Copied routine and explicit testing limit",
          "href": "/blog/mvsc-mash/evidence/roster-additions.md"
        }
      ],
      "confidence": "Static code attribution only; no separate live count"
    },
    {
      "id": "strider-ouroboros",
      "character": "Strider",
      "move": "Ouroboros",
      "category": "static",
      "command": "QCF + two punches, then fresh punches; E6=$08",
      "inputRecipe": [
        "Perform QCF + two punches to create the orbiting objects.",
        "While they remain active, press and release punch buttons to request shots. Kicks do not satisfy the satellites’$0070 punch mask.",
        "The object must be out of its firing cooldown and the owner must pass its state gate; extra presses during cooldown are not guaranteed extra shots."
      ],
      "baseline": {
        "value": null,
        "unit": "connected hits",
        "setup": "Static satellite trace; no live shot/hit comparison"
      },
      "bestObserved": {
        "value": null,
        "unit": "connected hits",
        "setup": "Static satellite trace; no live shot/hit comparison"
      },
      "codeBound": "Each satellite timer starts at 240. A successful firing request calls $094A72 and sets cooldown+$B9=22 at $093A70, then the same pass reaches its decrement $093A76. Input does not refill the effect timer.",
      "maximumStatus": "Not measured",
      "globalMaximum": null,
      "whyNotMaximum": "A cooldown initialized to 22 is not proof of 22 rendered frames between shots or a calculable connected-hit maximum. No live production or contact limit was tested.",
      "evidence": [
        {
          "label": "Owner-input mask, cooldown and fixed lifetime",
          "href": "/blog/mvsc-mash/evidence/roster-additions.md"
        },
        {
          "label": "Native selector and remaining frontier",
          "href": "/blog/mvsc-mash/evidence/revision/roster/inventory.json#1c-base-attack-08"
        }
      ],
      "confidence": "Static child-code trace only"
    },
    {
      "id": "war-proton",
      "character": "War Machine",
      "move": "Proton Cannon",
      "category": "control",
      "command": "QCF + two punches; ordinary War Machine, E6=$02",
      "inputRecipe": [
        "Use ordinary War Machine and perform QCF + two punches.",
        "The ordinary branch does not have Gold War Machine’s direction reimbursement. The tested direction pulses and attack input did not raise its result."
      ],
      "baseline": {
        "value": 27,
        "unit": "native combo hits",
        "setup": "Standing Spider-Man, both human controlled, initial life 144; earlier matched MAME save-state fixture; ordinary War Machine; release inputs after the command"
      },
      "bestObserved": {
        "value": 27,
        "unit": "native combo hits",
        "setup": "Standing Spider-Man, both human controlled, initial life 144; earlier matched MAME save-state fixture; ordinary War Machine"
      },
      "codeBound": "Ordinary character branch initializes a 120-count timer at $02A6D4 and counts down at $02A756 without Gold’s corresponding direction increment.",
      "maximumStatus": "Not established",
      "globalMaximum": null,
      "whyNotMaximum": "Twenty-seven is the ordinary-branch fixture result, not proof of a universal maximum. Do not combine Gold and ordinary War Machine evidence.",
      "evidence": [
        {
          "label": "Ordinary versus Gold native branch and controls",
          "href": "/blog/mvsc-mash/evidence/war-machine.md"
        }
      ],
      "confidence": "Code traced and paired MAME fixture; broader maximum untested"
    },
    {
      "id": "spider-throw",
      "character": "Spider-Man",
      "move": "Web Throw rotation boost",
      "category": "static",
      "command": "HCB + punch; captured Web Throw, E6=$06",
      "inputRecipe": [
        "Use Web Throw, not Maximum Spider; the native selector is $06.",
        "During the captured rotation phase, cycle through all four cardinal directions. Completing two full direction sets inside the window grants another spin credit.",
        "This is a traced rotation/throw-parameter interaction, not a measured recipe for more combo-counter hits. The defender’s escape path can oppose it."
      ],
      "baseline": {
        "value": null,
        "unit": "connected hits",
        "setup": "Static captured-throw routine; no live extra-hit/damage comparison"
      },
      "bestObserved": {
        "value": null,
        "unit": "connected hits",
        "setup": "Static captured-throw routine; no live extra-hit/damage comparison"
      },
      "codeBound": "The routine starts with spin credit 1, a two-set counter, a separate five-rotation cap and a 25-count window. Held normalized directions collect the cardinal set; it is not a button popcount.",
      "maximumStatus": "Not measured",
      "globalMaximum": null,
      "whyNotMaximum": "A spin credit or damage parameter is not a connected hit. The exact live bonus, timing optimum and damage maximum have not been measured.",
      "evidence": [
        {
          "label": "Cardinal-set, spin and escape logic",
          "href": "/blog/mvsc-mash/evidence/roster-additions.md"
        },
        {
          "label": "Native command/selector mapping",
          "href": "/blog/mvsc-mash/evidence/revision/roster/inventory.json#0e-base-attack-06"
        }
      ],
      "confidence": "Static rotation path only"
    },
    {
      "id": "jin-grab",
      "character": "Jin",
      "move": "Direction-sensitive grab path",
      "category": "static",
      "command": "Exact grab name and human command remain unresolved",
      "inputRecipe": [
        "No complete player command is claimed: the exact native grab identity has not been mapped.",
        "Inside the traced captured-grab routine, fresh direction changes accelerate animation and increment the input counter.",
        "Do not apply this finding to Blodia Vulcan or assume that all Jin supers gain hits from mashing."
      ],
      "baseline": {
        "value": null,
        "unit": "connected hits",
        "setup": "Unresolved grab identity; static code only"
      },
      "bestObserved": {
        "value": null,
        "unit": "connected hits",
        "setup": "Unresolved grab identity; static code only"
      },
      "codeBound": "At $052DB6, direction edges can set animation delay 1 and increment+$38A up to 20. The later damage parameter is 32 + floor(counter / 4), so this parameter ranges up to 37 on that path; it is not a measured HP total.",
      "maximumStatus": "Not measured",
      "globalMaximum": null,
      "whyNotMaximum": "The command, precise grab identity and isolated live damage were not verified. A capped parameter does not establish bonus combo hits or damage maximum.",
      "evidence": [
        {
          "label": "Jin grab code and explicit scope",
          "href": "/blog/mvsc-mash/evidence/roster.md"
        }
      ],
      "confidence": "Static code; human move identity unresolved"
    },
    {
      "id": "zangief-grab",
      "character": "Zangief",
      "move": "Direction-sensitive grab paths",
      "category": "static",
      "command": "Exact grab identities and human commands remain unresolved",
      "inputRecipe": [
        "The examined grab paths are not yet mapped to a complete player command list.",
        "They accept fresh direction changes during captured-grab animation to alter speed and capped counters used by damage logic.",
        "Do not treat this as a measured extra-hit recipe for every Zangief super or Mecha-form variant."
      ],
      "baseline": {
        "value": null,
        "unit": "connected hits",
        "setup": "Several unnamed grab routines; static code only"
      },
      "bestObserved": {
        "value": null,
        "unit": "connected hits",
        "setup": "Several unnamed grab routines; static code only"
      },
      "codeBound": "Direction sites $056F44/$0571A8/$057AD6/$057D6C/$058458 update local capped counters; later sites consume them for damage parameters. No single common numeric cap for every named grab is asserted.",
      "maximumStatus": "Not measured",
      "globalMaximum": null,
      "whyNotMaximum": "Exact grab identities, normal/Mecha reachability and isolated live damage/contact changes remain unverified.",
      "evidence": [
        {
          "label": "Grab readers and damage-parameter scope",
          "href": "/blog/mvsc-mash/evidence/roster.md"
        }
      ],
      "confidence": "Static paths; semantic command mapping incomplete"
    },
    {
      "id": "spider-maximum",
      "character": "Spider-Man",
      "move": "Maximum Spider",
      "category": "control",
      "command": "QCF + two punches; E6=$08",
      "inputRecipe": [
        "Perform QCF + two punches.",
        "The examined move can read a held direction to choose its approach angle. Repeated attacks, held attacks and direction controls did not add attack passes in the tests.",
        "Web Throw’s rotation mechanic is a different selector and does not support a 25-hit Maximum Spider claim."
      ],
      "baseline": {
        "value": 5,
        "unit": "first-move connected events",
        "setup": "MAME and custom FBNeo; standing Spider-Man, life 144; each engine’s matched fixture; release inputs after the command"
      },
      "bestObserved": {
        "value": 5,
        "unit": "first-move connected events",
        "setup": "MAME and custom FBNeo; standing Spider-Man, life 144; each engine’s matched fixture"
      },
      "codeBound": "The move initializes finite continuation/retry fields at $03E3A2–$03E3B4; held direction&$000F at $03EB98 selects approach. No attack-button extra-pass mechanism was established.",
      "maximumStatus": "Not established",
      "globalMaximum": null,
      "whyNotMaximum": "Five is the observed result of these controls. It neither reproduces 25 nor proves a universal five-hit maximum against all targets/positions.",
      "evidence": [
        {
          "label": "MAME ten-condition fixture",
          "href": "/blog/mvsc-mash/evidence/revision/roster/maximum_spider/summary.json"
        },
        {
          "label": "Independent FBNeo result",
          "href": "/blog/mvsc-mash/evidence/revision/core/fbneo/spider-maximum/result.json"
        },
        {
          "label": "Counter and approach instructions",
          "href": "/blog/mvsc-mash/evidence/revision/roster/code-excerpts.txt"
        }
      ],
      "confidence": "Native move-specific trace; MAME and custom FBNeo repeated baselines"
    },
    {
      "id": "mega-beat",
      "character": "Mega Man",
      "move": "Beat Plane",
      "category": "positive",
      "command": "QCF + two kicks; E6=$08",
      "inputRecipe": [
        "Perform QCF + two kicks; this is Beat Plane, not the QCF + two punches Hyper transformation.",
        "During the vehicle phase, repeatedly press and release attacks to start eligible firing bursts. Any fresh punch or kick passes the $0770 firing mask.",
        "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."
      ],
      "baseline": {
        "value": 3,
        "unit": "first-move connected events",
        "setup": "MAME and custom FBNeo; standing Spider-Man, life 144; realized separation 62; release inputs after the command"
      },
      "bestObserved": {
        "value": 23,
        "unit": "first-move connected events",
        "setup": "MAME and custom FBNeo; standing Spider-Man, life 144; realized separation 62"
      },
      "codeBound": "Lifetime+$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.",
      "maximumStatus": "Not established",
      "globalMaximum": null,
      "whyNotMaximum": "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.",
      "evidence": [
        {
          "label": "MAME mask, hold and direction controls",
          "href": "/blog/mvsc-mash/evidence/revision/roster/mega_beat_plane/summary.json"
        },
        {
          "label": "MAME exact input harness",
          "href": "/blog/mvsc-mash/evidence/revision/roster/mega_beat_plane/probe.lua"
        },
        {
          "label": "Independent FBNeo result",
          "href": "/blog/mvsc-mash/evidence/revision/core/fbneo/mega-beat/result.json"
        },
        {
          "label": "Burst and lifetime code",
          "href": "/blog/mvsc-mash/evidence/revision/roster/code-excerpts.txt"
        }
      ],
      "confidence": "Native burst/lifetime code; MAME and custom FBNeo first-move score 23",
      "additionalObservations": [
        {
          "label": "Baseline firing objects",
          "value": 0,
          "unit": "type $84/subtype $04 allocations",
          "setup": "MAME; no post-command input or held attacks"
        },
        {
          "label": "Tapped firing objects",
          "value": 4,
          "unit": "type $84/subtype $04 allocations",
          "setup": "MAME; all-attack, punch-only and kick-only pulses; all 180 lifetime decrements remain"
        }
      ],
      "measuredInput": "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."
    },
    {
      "id": "roll-beat",
      "character": "Roll",
      "move": "Beat Plane",
      "category": "positive",
      "command": "QCF + two kicks; E6=$08",
      "inputRecipe": [
        "Perform QCF + two kicks; this is Beat Plane, not the QCF + two punches Hyper transformation.",
        "During the vehicle phase, repeatedly press and release attacks to start eligible firing bursts. Any fresh punch or kick passes the $0770 firing mask.",
        "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."
      ],
      "baseline": {
        "value": 3,
        "unit": "first-move connected events",
        "setup": "MAME and custom FBNeo; standing Spider-Man, life 144; realized separation 58; release inputs after the command"
      },
      "bestObserved": {
        "value": 23,
        "unit": "first-move connected events",
        "setup": "MAME and custom FBNeo; standing Spider-Man, life 144; realized separation 58"
      },
      "codeBound": "Lifetime+$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.",
      "maximumStatus": "Not established",
      "globalMaximum": null,
      "whyNotMaximum": "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.",
      "evidence": [
        {
          "label": "MAME mask, hold and direction controls",
          "href": "/blog/mvsc-mash/evidence/revision/roster/roll_beat_plane/summary.json"
        },
        {
          "label": "MAME exact input harness",
          "href": "/blog/mvsc-mash/evidence/revision/roster/roll_beat_plane/probe.lua"
        },
        {
          "label": "Independent FBNeo result",
          "href": "/blog/mvsc-mash/evidence/revision/core/fbneo/roll-beat/result.json"
        },
        {
          "label": "Burst and lifetime code",
          "href": "/blog/mvsc-mash/evidence/revision/roster/code-excerpts.txt"
        }
      ],
      "confidence": "Native burst/lifetime code; MAME and custom FBNeo first-move score 23",
      "additionalObservations": [
        {
          "label": "Baseline firing objects",
          "value": 0,
          "unit": "type $84/subtype $04 allocations",
          "setup": "MAME; no post-command input or held attacks"
        },
        {
          "label": "Tapped firing objects",
          "value": 4,
          "unit": "type $84/subtype $04 allocations",
          "setup": "MAME; all-attack, punch-only and kick-only pulses; all 180 lifetime decrements remain"
        },
        {
          "label": "Excluded later event",
          "value": 1,
          "unit": "post-exit hit-processing event",
          "setup": "FBNeo raw tail;23 first-move events + 1 later event is not a 24-hit first move"
        }
      ],
      "measuredInput": "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."
    }
  ],
  "normalFindings": [
    {
      "id": "normal-02-base-normal-0-lp",
      "character": "War Machine",
      "move": "Standing LP",
      "category": "static",
      "command": "B4=0, B5=0, 4D=0; LP",
      "inputRecipe": [
        "While standing, press LP to start the normal.",
        "Release and press LP again during its continuation window. The exact accepted inputs and animation gates are recorded in the linked code.",
        "This is a verified local animation continuation; no live extra-hit count or optimal hand timing was measured."
      ],
      "baseline": {
        "value": null,
        "unit": "connected hits",
        "setup": "No live normal comparison"
      },
      "bestObserved": {
        "value": null,
        "unit": "connected hits",
        "setup": "Static local restart/continuation branch only"
      },
      "codeBound": "No explicit finite mash-credit count in this local branch. The animation window and ordinary state transitions still gate each restart. No maximum or live extra-hit total established.",
      "maximumStatus": "Not measured",
      "globalMaximum": null,
      "whyNotMaximum": "A local animation restart does not guarantee another hit connects. Common gates, exact timing and collision remain outside this static result. ",
      "evidence": [
        {
          "label": "Independent normal branch review",
          "href": "/blog/mvsc-mash/evidence/revision/roster/normal-review/findings.json#02-base-normal-0-lp"
        },
        {
          "label": "Exact selector route",
          "href": "/blog/mvsc-mash/evidence/revision/roster/normal-route-receipts.json#02-base-normal-0-lp"
        }
      ],
      "confidence": "Static local branch verified; connected-hit gain and maximum unmeasured",
      "nativeInputGate": "Animation updater $001DD8 has not ended the move, and the animation flag byte +$3C is nonzero.",
      "effect": "Clears +$3C, toggles +$380 and chooses animation-bank offsets $2A/$00 versus $10/$00 before calling $0135E6 at $029AB4. It also resets attack fields +$80/+$84/+$86."
    },
    {
      "id": "normal-04-base-normal-0-lp",
      "character": "Captain America",
      "move": "Standing LP",
      "category": "static",
      "command": "B4=0, B5=0, 4D=0; LP",
      "inputRecipe": [
        "While standing, press LP to start the normal.",
        "Release and press LP again during its continuation window. The exact accepted inputs and animation gates are recorded in the linked code.",
        "This is a verified local animation continuation; no live extra-hit count or optimal hand timing was measured."
      ],
      "baseline": {
        "value": null,
        "unit": "connected hits",
        "setup": "No live normal comparison"
      },
      "bestObserved": {
        "value": null,
        "unit": "connected hits",
        "setup": "Static local restart/continuation branch only"
      },
      "codeBound": "No explicit finite bonus-hit allowance is established in this local branch. This is a code-verified normal animation restart, not a measured hit increase or a Hyper extension. The +$BD branch changes an attribute rather than directly refusing another restart.",
      "maximumStatus": "Not measured",
      "globalMaximum": null,
      "whyNotMaximum": "A local animation restart does not guarantee another hit connects. Common gates, exact timing and collision remain outside this static result. ",
      "evidence": [
        {
          "label": "Independent normal branch review",
          "href": "/blog/mvsc-mash/evidence/revision/roster/normal-review/findings.json#04-base-normal-0-lp"
        },
        {
          "label": "Exact selector route",
          "href": "/blog/mvsc-mash/evidence/revision/roster/normal-route-receipts.json#04-base-normal-0-lp"
        }
      ],
      "confidence": "Static local branch verified; connected-hit gain and maximum unmeasured",
      "nativeInputGate": "Nonzero animation flag +$3C; normal animation has not ended; shared posture/normal-transition gates must permit continuation. Calls $0176B6 and $01741E.",
      "effect": "Clears buffer; resets +$80/+$84/+$86; decrements +$BD at $02CE10 and chooses attack attribute $1A when nonpositive. Animation $10/$06 or $10/$00 is installed at $02CE2A, depending on +$3C."
    },
    {
      "id": "normal-04-base-normal-0-mk",
      "character": "Captain America",
      "move": "Standing MK",
      "category": "static",
      "command": "B4=0, B5=2, 4D=2; MK",
      "inputRecipe": [
        "While standing, press MK to start the normal.",
        "Release and press MK again during its continuation window. The exact accepted inputs and animation gates are recorded in the linked code.",
        "This is a verified local animation continuation; no live extra-hit count or optimal hand timing was measured."
      ],
      "baseline": {
        "value": null,
        "unit": "connected hits",
        "setup": "No live normal comparison"
      },
      "bestObserved": {
        "value": null,
        "unit": "connected hits",
        "setup": "Static local restart/continuation branch only"
      },
      "codeBound": "The local two-state path allows one additional continuation after entry at state 0. Native normal entry clears +$08 at $0185AC. This is not a count of guaranteed additional connected hits.",
      "maximumStatus": "Not measured",
      "globalMaximum": null,
      "whyNotMaximum": "A local animation restart does not guarantee another hit connects. Common gates, exact timing and collision remain outside this static result. ",
      "evidence": [
        {
          "label": "Independent normal branch review",
          "href": "/blog/mvsc-mash/evidence/revision/roster/normal-review/findings.json#04-base-normal-0-mk"
        },
        {
          "label": "Exact selector route",
          "href": "/blog/mvsc-mash/evidence/revision/roster/normal-route-receipts.json#04-base-normal-0-mk"
        }
      ],
      "confidence": "Static local branch verified; connected-hit gain and maximum unmeasured",
      "nativeInputGate": "+$08 dispatch state is zero; +$3C is nonzero and normal animation has not ended.",
      "effect": "Installs animation $12/$08 at $02CFD8, resets attack fields, clears buffer at $02D004 and advances +$08 by 2 at $02D008. State 2 dispatches directly to ordinary animation update $02D00C, bypassing the input branch."
    },
    {
      "id": "normal-06-base-normal-0-lk",
      "character": "Hulk",
      "move": "Standing LK",
      "category": "static",
      "command": "B4=0, B5=2, 4D=0; LK",
      "inputRecipe": [
        "While standing, press LK to start the normal.",
        "Release and press LK again during its continuation window. The exact accepted inputs and animation gates are recorded in the linked code.",
        "This is a verified local animation continuation; no live extra-hit count or optimal hand timing was measured."
      ],
      "baseline": {
        "value": null,
        "unit": "connected hits",
        "setup": "No live normal comparison"
      },
      "bestObserved": {
        "value": null,
        "unit": "connected hits",
        "setup": "Static local restart/continuation branch only"
      },
      "codeBound": "Initializer $0306D0 sets +$3A1 to 1. One qualifying restart can spend that allowance; this is not a super extension or a guaranteed extra connected hit.",
      "maximumStatus": "Not measured",
      "globalMaximum": null,
      "whyNotMaximum": "A local animation restart does not guarantee another hit connects. Common gates, exact timing and collision remain outside this static result. ",
      "evidence": [
        {
          "label": "Independent normal branch review",
          "href": "/blog/mvsc-mash/evidence/revision/roster/normal-review/findings.json#06-base-normal-0-lk"
        },
        {
          "label": "Exact selector route",
          "href": "/blog/mvsc-mash/evidence/revision/roster/normal-route-receipts.json#06-base-normal-0-lk"
        }
      ],
      "confidence": "Static local branch verified; connected-hit gain and maximum unmeasured",
      "nativeInputGate": "Nonzero animation flag +$3C; common $0176B6 and $01741E gates return zero; repeat allowance +$3A1 is nonzero.",
      "effect": "Spends +$3A1 at $030AAC, clears input buffer +$DE at $030AB6, then starts animation $12/$00 through $0135E6 at $030AC2."
    },
    {
      "id": "normal-06-base-normal-1-lk",
      "character": "Hulk",
      "move": "Crouching LK",
      "category": "static",
      "command": "B4=2, B5=2, 4D=0; LK",
      "inputRecipe": [
        "While crouching, press LK to start the normal.",
        "Release and press LK again during its continuation window. The exact accepted inputs and animation gates are recorded in the linked code.",
        "This is a verified local animation continuation; no live extra-hit count or optimal hand timing was measured."
      ],
      "baseline": {
        "value": null,
        "unit": "connected hits",
        "setup": "No live normal comparison"
      },
      "bestObserved": {
        "value": null,
        "unit": "connected hits",
        "setup": "Static local restart/continuation branch only"
      },
      "codeBound": "Initializer $030772 sets +$3A1 to 1. One qualifying local restart, not an added-hit guarantee.",
      "maximumStatus": "Not measured",
      "globalMaximum": null,
      "whyNotMaximum": "A local animation restart does not guarantee another hit connects. Common gates, exact timing and collision remain outside this static result. ",
      "evidence": [
        {
          "label": "Independent normal branch review",
          "href": "/blog/mvsc-mash/evidence/revision/roster/normal-review/findings.json#06-base-normal-1-lk"
        },
        {
          "label": "Exact selector route",
          "href": "/blog/mvsc-mash/evidence/revision/roster/normal-route-receipts.json#06-base-normal-1-lk"
        }
      ],
      "confidence": "Static local branch verified; connected-hit gain and maximum unmeasured",
      "nativeInputGate": "Nonzero animation flag +$3C, common $0176B6 gate returns zero and +$3A1 remains nonzero.",
      "effect": "Spends +$3A1 at $030BA6, clears +$DE at $030BB0, and restarts animation $16/$00 at $030BBC."
    },
    {
      "id": "normal-08-base-normal-0-lp",
      "character": "Wolverine",
      "move": "Standing LP",
      "category": "static",
      "command": "B4=0, B5=0, 4D=0; LP",
      "inputRecipe": [
        "While standing, press LP to start the normal.",
        "Release and press LP again during its continuation window. The exact accepted inputs and animation gates are recorded in the linked code.",
        "This is a verified local animation continuation; no live extra-hit count or optimal hand timing was measured."
      ],
      "baseline": {
        "value": null,
        "unit": "connected hits",
        "setup": "No live normal comparison"
      },
      "bestObserved": {
        "value": null,
        "unit": "connected hits",
        "setup": "Static local restart/continuation branch only"
      },
      "codeBound": "No fixed credit bound established for this local path. Common gates, animation windows and initialization remain part of its reachability.",
      "maximumStatus": "Not measured",
      "globalMaximum": null,
      "whyNotMaximum": "A local animation restart does not guarantee another hit connects. Common gates, exact timing and collision remain outside this static result. ",
      "evidence": [
        {
          "label": "Independent normal branch review",
          "href": "/blog/mvsc-mash/evidence/revision/roster/normal-review/findings.json#08-base-normal-0-lp"
        },
        {
          "label": "Exact selector route",
          "href": "/blog/mvsc-mash/evidence/revision/roster/normal-route-receipts.json#08-base-normal-0-lp"
        }
      ],
      "confidence": "Static local branch verified; connected-hit gain and maximum unmeasured",
      "nativeInputGate": "Animation flag +$3C and common $0176B6, $01741E, $0181C8 gates.",
      "effect": "Accepted LP reaches attack-field reset and animation $10/$06 through $0135E6 at $03404E."
    },
    {
      "id": "normal-08-base-normal-0-mp",
      "character": "Wolverine",
      "move": "Standing MP",
      "category": "static",
      "command": "B4=0, B5=0, 4D=2; MP",
      "inputRecipe": [
        "While standing, press MP to start the normal.",
        "Release and press MP again during its continuation window. The exact accepted inputs and animation gates are recorded in the linked code.",
        "This is a verified local animation continuation; no live extra-hit count or optimal hand timing was measured."
      ],
      "baseline": {
        "value": null,
        "unit": "connected hits",
        "setup": "No live normal comparison"
      },
      "bestObserved": {
        "value": null,
        "unit": "connected hits",
        "setup": "Static local restart/continuation branch only"
      },
      "codeBound": "Alternating animation offsets are proven; a universal repeat cap or live hit gain is not.",
      "maximumStatus": "Not measured",
      "globalMaximum": null,
      "whyNotMaximum": "A local animation restart does not guarantee another hit connects. Common gates, exact timing and collision remain outside this static result. ",
      "evidence": [
        {
          "label": "Independent normal branch review",
          "href": "/blog/mvsc-mash/evidence/revision/roster/normal-review/findings.json#08-base-normal-0-mp"
        },
        {
          "label": "Exact selector route",
          "href": "/blog/mvsc-mash/evidence/revision/roster/normal-route-receipts.json#08-base-normal-0-mp"
        }
      ],
      "confidence": "Static local branch verified; connected-hit gain and maximum unmeasured",
      "nativeInputGate": "Animation flag +$3C and common $0176B6/$01741E gates.",
      "effect": "Clears buffer, resets attack fields, and alternates +$111 parity. The selected animation is $10/$08 or $10/$02, loaded at $0340CA."
    },
    {
      "id": "normal-08-base-normal-0-mk",
      "character": "Wolverine",
      "move": "Standing MK",
      "category": "static",
      "command": "B4=0, B5=2, 4D=2; MK",
      "inputRecipe": [
        "While standing, press MK to start the normal.",
        "Release and press MK again during its continuation window. The exact accepted inputs and animation gates are recorded in the linked code.",
        "This is a verified local animation continuation; no live extra-hit count or optimal hand timing was measured."
      ],
      "baseline": {
        "value": null,
        "unit": "connected hits",
        "setup": "No live normal comparison"
      },
      "bestObserved": {
        "value": null,
        "unit": "connected hits",
        "setup": "Static local restart/continuation branch only"
      },
      "codeBound": "No explicit finite allowance established from this local branch; collision and all shared paths were not measured.",
      "maximumStatus": "Not measured",
      "globalMaximum": null,
      "whyNotMaximum": "A local animation restart does not guarantee another hit connects. Common gates, exact timing and collision remain outside this static result. ",
      "evidence": [
        {
          "label": "Independent normal branch review",
          "href": "/blog/mvsc-mash/evidence/revision/roster/normal-review/findings.json#08-base-normal-0-mk"
        },
        {
          "label": "Exact selector route",
          "href": "/blog/mvsc-mash/evidence/revision/roster/normal-route-receipts.json#08-base-normal-0-mk"
        }
      ],
      "confidence": "Static local branch verified; connected-hit gain and maximum unmeasured",
      "nativeInputGate": "Animation updater has not ended the move and +$3C is nonzero.",
      "effect": "Clears buffer and resets attack fields before animation $12/$08 at $0342FA."
    },
    {
      "id": "normal-08-base-normal-1-lp",
      "character": "Wolverine",
      "move": "Crouching LP",
      "category": "static",
      "command": "B4=2, B5=0, 4D=0; LP",
      "inputRecipe": [
        "While crouching, press LP to start the normal.",
        "Release and press LP again during its continuation window. The exact accepted inputs and animation gates are recorded in the linked code.",
        "This is a verified local animation continuation; no live extra-hit count or optimal hand timing was measured."
      ],
      "baseline": {
        "value": null,
        "unit": "connected hits",
        "setup": "No live normal comparison"
      },
      "bestObserved": {
        "value": null,
        "unit": "connected hits",
        "setup": "Static local restart/continuation branch only"
      },
      "codeBound": "The local counter selects a repeat variant; it is not by itself proof of a whole-move maximum.",
      "maximumStatus": "Not measured",
      "globalMaximum": null,
      "whyNotMaximum": "A local animation restart does not guarantee another hit connects. Common gates, exact timing and collision remain outside this static result. ",
      "evidence": [
        {
          "label": "Independent normal branch review",
          "href": "/blog/mvsc-mash/evidence/revision/roster/normal-review/findings.json#08-base-normal-1-lp"
        },
        {
          "label": "Exact selector route",
          "href": "/blog/mvsc-mash/evidence/revision/roster/normal-route-receipts.json#08-base-normal-1-lp"
        }
      ],
      "confidence": "Static local branch verified; connected-hit gain and maximum unmeasured",
      "nativeInputGate": "Animation +$3C, common $0176B6/$0181C8 and conditional $017456 gate; latter consulted when +$127 < 6.",
      "effect": "Clears buffer and chooses between animation $14/$00 and $14/$06 based on +$84 and +$387. +$387 is decremented at $034160 or initialized to 1 at $03418E."
    },
    {
      "id": "normal-08-base-normal-3-mp",
      "character": "Wolverine",
      "move": "Air, BA!=0 MP",
      "category": "static",
      "command": "B4=4, B5=0, 4D=2, BA != 0; MP",
      "inputRecipe": [
        "While airborne, press MP to start the normal.",
        "This Wolverine air-MP restart requires native air flag BA≠0. Its player-facing jump-type name is unresolved; the BA=0 branch does not perform this local restart.",
        "Release and press MP again during its continuation window. The exact accepted inputs and animation gates are recorded in the linked code.",
        "This is a verified local animation continuation; no live extra-hit count or optimal hand timing was measured."
      ],
      "baseline": {
        "value": null,
        "unit": "connected hits",
        "setup": "No live normal comparison"
      },
      "bestObserved": {
        "value": null,
        "unit": "connected hits",
        "setup": "Static local restart/continuation branch only"
      },
      "codeBound": "BA is preserved as the exact native flag; no unsupported jump-type name or live hit total assigned.",
      "maximumStatus": "Not measured",
      "globalMaximum": null,
      "whyNotMaximum": "A local animation restart does not guarantee another hit connects. Common gates, exact timing and collision remain outside this static result. ",
      "evidence": [
        {
          "label": "Independent normal branch review",
          "href": "/blog/mvsc-mash/evidence/revision/roster/normal-review/findings.json#08-base-normal-3-mp"
        },
        {
          "label": "Exact selector route",
          "href": "/blog/mvsc-mash/evidence/revision/roster/normal-route-receipts.json#08-base-normal-3-mp"
        }
      ],
      "confidence": "Static local branch verified; connected-hit gain and maximum unmeasured",
      "nativeInputGate": "Nonzero +$3C, animation not finished, and +$BA != 0 at $0343D8.",
      "effect": "Clears buffer, then reaches attack-field reset and animation $18/$08 through $0135E6 at $034400."
    },
    {
      "id": "normal-0c-base-normal-0-lp",
      "character": "Venom",
      "move": "Standing LP",
      "category": "static",
      "command": "B4=0, B5=0, 4D=0; LP",
      "inputRecipe": [
        "While standing, press LP to start the normal.",
        "Release and press LP again during its continuation window. The exact accepted inputs and animation gates are recorded in the linked code.",
        "This is a verified local animation continuation; no live extra-hit count or optimal hand timing was measured."
      ],
      "baseline": {
        "value": null,
        "unit": "connected hits",
        "setup": "No live normal comparison"
      },
      "bestObserved": {
        "value": null,
        "unit": "connected hits",
        "setup": "Static local restart/continuation branch only"
      },
      "codeBound": "No explicit finite bonus-hit allowance is established in this local branch. This is a code-verified normal animation restart, not a measured hit increase or a Hyper extension.",
      "maximumStatus": "Not measured",
      "globalMaximum": null,
      "whyNotMaximum": "A local animation restart does not guarantee another hit connects. Common gates, exact timing and collision remain outside this static result. ",
      "evidence": [
        {
          "label": "Independent normal branch review",
          "href": "/blog/mvsc-mash/evidence/revision/roster/normal-review/findings.json#0c-base-normal-0-lp"
        },
        {
          "label": "Exact selector route",
          "href": "/blog/mvsc-mash/evidence/revision/roster/normal-route-receipts.json#0c-base-normal-0-lp"
        }
      ],
      "confidence": "Static local branch verified; connected-hit gain and maximum unmeasured",
      "nativeInputGate": "Nonzero animation flag +$3C; normal animation has not ended; shared posture/normal-transition gates must permit continuation. Calls $0176B6, $01741E and $0181C8.",
      "effect": "Clears buffer at $03A6FA, writes attack attribute $13, clears +$84/+$86 and installs animation $10/$06 at $03A720."
    },
    {
      "id": "normal-0c-base-normal-0-lk",
      "character": "Venom",
      "move": "Standing LK",
      "category": "static",
      "command": "B4=0, B5=2, 4D=0; LK",
      "inputRecipe": [
        "While standing, press LK to start the normal.",
        "Release and press LK again during its continuation window. The exact accepted inputs and animation gates are recorded in the linked code.",
        "This is a verified local animation continuation; no live extra-hit count or optimal hand timing was measured."
      ],
      "baseline": {
        "value": null,
        "unit": "connected hits",
        "setup": "No live normal comparison"
      },
      "bestObserved": {
        "value": null,
        "unit": "connected hits",
        "setup": "Static local restart/continuation branch only"
      },
      "codeBound": "No explicit finite bonus-hit allowance is established in this local branch. This is a code-verified normal animation restart, not a measured hit increase or a Hyper extension.",
      "maximumStatus": "Not measured",
      "globalMaximum": null,
      "whyNotMaximum": "A local animation restart does not guarantee another hit connects. Common gates, exact timing and collision remain outside this static result. ",
      "evidence": [
        {
          "label": "Independent normal branch review",
          "href": "/blog/mvsc-mash/evidence/revision/roster/normal-review/findings.json#0c-base-normal-0-lk"
        },
        {
          "label": "Exact selector route",
          "href": "/blog/mvsc-mash/evidence/revision/roster/normal-route-receipts.json#0c-base-normal-0-lk"
        }
      ],
      "confidence": "Static local branch verified; connected-hit gain and maximum unmeasured",
      "nativeInputGate": "Nonzero animation flag +$3C; normal animation has not ended; shared posture/normal-transition gates must permit continuation. Calls $0176B6, $01741E and $0181C8.",
      "effect": "Clears buffer at $03A7A4, writes attack attribute $14, clears +$84/+$86 and installs animation $12/$06 at $03A7CA."
    },
    {
      "id": "normal-0e-base-normal-0-lp",
      "character": "Spider-Man",
      "move": "Standing LP",
      "category": "static",
      "command": "B4=0, B5=0, 4D=0; LP",
      "inputRecipe": [
        "While standing, press LP to start the normal.",
        "Release and press LP again during its continuation window. The exact accepted inputs and animation gates are recorded in the linked code.",
        "This is a verified local animation continuation; no live extra-hit count or optimal hand timing was measured."
      ],
      "baseline": {
        "value": null,
        "unit": "connected hits",
        "setup": "No live normal comparison"
      },
      "bestObserved": {
        "value": null,
        "unit": "connected hits",
        "setup": "Static local restart/continuation branch only"
      },
      "codeBound": "No explicit finite bonus-hit allowance is established in this local branch. This is a code-verified normal animation restart, not a measured hit increase or a Hyper extension.",
      "maximumStatus": "Not measured",
      "globalMaximum": null,
      "whyNotMaximum": "A local animation restart does not guarantee another hit connects. Common gates, exact timing and collision remain outside this static result. ",
      "evidence": [
        {
          "label": "Independent normal branch review",
          "href": "/blog/mvsc-mash/evidence/revision/roster/normal-review/findings.json#0e-base-normal-0-lp"
        },
        {
          "label": "Exact selector route",
          "href": "/blog/mvsc-mash/evidence/revision/roster/normal-route-receipts.json#0e-base-normal-0-lp"
        }
      ],
      "confidence": "Static local branch verified; connected-hit gain and maximum unmeasured",
      "nativeInputGate": "Nonzero animation flag +$3C; normal animation has not ended; shared posture/normal-transition gates must permit continuation. Calls $0176B6, $01741E and $0181C8.",
      "effect": "Clears buffer at $03D03A, sets attack attribute $19, clears +$84/+$86 and installs animation $10/$06 at $03D060."
    },
    {
      "id": "normal-0e-base-normal-1-lp",
      "character": "Spider-Man",
      "move": "Crouching LP",
      "category": "static",
      "command": "B4=2, B5=0, 4D=0; LP",
      "inputRecipe": [
        "While crouching, press LP to start the normal.",
        "Release and press LP again during its continuation window. The exact accepted inputs and animation gates are recorded in the linked code.",
        "This is a verified local animation continuation; no live extra-hit count or optimal hand timing was measured."
      ],
      "baseline": {
        "value": null,
        "unit": "connected hits",
        "setup": "No live normal comparison"
      },
      "bestObserved": {
        "value": null,
        "unit": "connected hits",
        "setup": "Static local restart/continuation branch only"
      },
      "codeBound": "No explicit finite bonus-hit allowance is established in this local branch. This is a code-verified normal animation restart, not a measured hit increase or a Hyper extension.",
      "maximumStatus": "Not measured",
      "globalMaximum": null,
      "whyNotMaximum": "A local animation restart does not guarantee another hit connects. Common gates, exact timing and collision remain outside this static result. ",
      "evidence": [
        {
          "label": "Independent normal branch review",
          "href": "/blog/mvsc-mash/evidence/revision/roster/normal-review/findings.json#0e-base-normal-1-lp"
        },
        {
          "label": "Exact selector route",
          "href": "/blog/mvsc-mash/evidence/revision/roster/normal-route-receipts.json#0e-base-normal-1-lp"
        }
      ],
      "confidence": "Static local branch verified; connected-hit gain and maximum unmeasured",
      "nativeInputGate": "Nonzero animation flag +$3C; normal animation has not ended; shared posture/normal-transition gates must permit continuation. Calls $0176B6, $017456 and $0181C8.",
      "effect": "Clears buffer at $03D0CC, sets attack attribute $1A, clears +$84/+$86 and installs animation $14/$06 at $03D0F2."
    },
    {
      "id": "normal-18-base-normal-0-lp",
      "character": "Jin",
      "move": "Standing LP",
      "category": "static",
      "command": "B4=0, B5=0, 4D=0; LP",
      "inputRecipe": [
        "While standing, press LP to start the normal.",
        "Release and press LP again during its continuation window. The exact accepted inputs and animation gates are recorded in the linked code.",
        "This is a verified local animation continuation; no live extra-hit count or optimal hand timing was measured."
      ],
      "baseline": {
        "value": null,
        "unit": "connected hits",
        "setup": "No live normal comparison"
      },
      "bestObserved": {
        "value": null,
        "unit": "connected hits",
        "setup": "Static local restart/continuation branch only"
      },
      "codeBound": "No explicit finite bonus-hit allowance is established in this local branch. This is a code-verified normal animation restart, not a measured hit increase or a Hyper extension.",
      "maximumStatus": "Not measured",
      "globalMaximum": null,
      "whyNotMaximum": "A local animation restart does not guarantee another hit connects. Common gates, exact timing and collision remain outside this static result. ",
      "evidence": [
        {
          "label": "Independent normal branch review",
          "href": "/blog/mvsc-mash/evidence/revision/roster/normal-review/findings.json#18-base-normal-0-lp"
        },
        {
          "label": "Exact selector route",
          "href": "/blog/mvsc-mash/evidence/revision/roster/normal-route-receipts.json#18-base-normal-0-lp"
        }
      ],
      "confidence": "Static local branch verified; connected-hit gain and maximum unmeasured",
      "nativeInputGate": "Nonzero animation flag +$3C; normal animation has not ended; shared posture/normal-transition gates must permit continuation. Calls $0176B6 and $01741E.",
      "effect": "Clears buffer at $0504A4, sets attack attribute $1C, clears +$84/+$86 and local substate +$08 at $0504C6, then installs animation $10/$06 at $0504D4."
    },
    {
      "id": "normal-18-base-normal-1-lp",
      "character": "Jin",
      "move": "Crouching LP",
      "category": "static",
      "command": "B4=2, B5=0, 4D=0; LP",
      "inputRecipe": [
        "While crouching, press LP to start the normal.",
        "Release and press LP again during its continuation window. The exact accepted inputs and animation gates are recorded in the linked code.",
        "This is a verified local animation continuation; no live extra-hit count or optimal hand timing was measured."
      ],
      "baseline": {
        "value": null,
        "unit": "connected hits",
        "setup": "No live normal comparison"
      },
      "bestObserved": {
        "value": null,
        "unit": "connected hits",
        "setup": "Static local restart/continuation branch only"
      },
      "codeBound": "No explicit finite bonus-hit allowance is established in this local branch. This is a code-verified normal animation restart, not a measured hit increase or a Hyper extension.",
      "maximumStatus": "Not measured",
      "globalMaximum": null,
      "whyNotMaximum": "A local animation restart does not guarantee another hit connects. Common gates, exact timing and collision remain outside this static result. ",
      "evidence": [
        {
          "label": "Independent normal branch review",
          "href": "/blog/mvsc-mash/evidence/revision/roster/normal-review/findings.json#18-base-normal-1-lp"
        },
        {
          "label": "Exact selector route",
          "href": "/blog/mvsc-mash/evidence/revision/roster/normal-route-receipts.json#18-base-normal-1-lp"
        }
      ],
      "confidence": "Static local branch verified; connected-hit gain and maximum unmeasured",
      "nativeInputGate": "Nonzero animation flag +$3C; normal animation has not ended; shared posture/normal-transition gates must permit continuation. Calls $0176B6 and $017456.",
      "effect": "Clears buffer at $0505C0, sets attack attribute $1D, clears +$84/+$86 and local substate +$08 at $0505E2, then installs animation $14/$06 at $0505F0."
    },
    {
      "id": "normal-1e-base-normal-0-lp",
      "character": "Morrigan",
      "move": "Standing LP",
      "category": "static",
      "command": "B4=0, B5=0, 4D=0; LP",
      "inputRecipe": [
        "While standing, press LP to start the normal.",
        "Release and press LP again during its continuation window. The exact accepted inputs and animation gates are recorded in the linked code.",
        "This is a verified local animation continuation; no live extra-hit count or optimal hand timing was measured."
      ],
      "baseline": {
        "value": null,
        "unit": "connected hits",
        "setup": "No live normal comparison"
      },
      "bestObserved": {
        "value": null,
        "unit": "connected hits",
        "setup": "Static local restart/continuation branch only"
      },
      "codeBound": "The +$BD branch changes attack attributes; no stopping bound or initial allowance was established here. Do not call it a finite number of bonus hits.",
      "maximumStatus": "Not measured",
      "globalMaximum": null,
      "whyNotMaximum": "A local animation restart does not guarantee another hit connects. Common gates, exact timing and collision remain outside this static result. ",
      "evidence": [
        {
          "label": "Independent normal branch review",
          "href": "/blog/mvsc-mash/evidence/revision/roster/normal-review/findings.json#1e-base-normal-0-lp"
        },
        {
          "label": "Exact selector route",
          "href": "/blog/mvsc-mash/evidence/revision/roster/normal-route-receipts.json#1e-base-normal-0-lp"
        }
      ],
      "confidence": "Static local branch verified; connected-hit gain and maximum unmeasured",
      "nativeInputGate": "Animation flag +$3C and common $0176B6/$01741E gates.",
      "effect": "Clears buffer, resets attack fields, decrements +$BD and changes +$80 when that count becomes nonpositive. Chooses $10/$06 versus $10/$00 from +$3C and calls $0135E6 at $05DF92."
    },
    {
      "id": "normal-26-base-normal-0-lk",
      "character": "Orange Hulk",
      "move": "Standing LK",
      "category": "static",
      "command": "B4=0, B5=2, 4D=0; LK",
      "inputRecipe": [
        "While standing, press LK to start the normal.",
        "Release and press LK again during its continuation window. The exact accepted inputs and animation gates are recorded in the linked code.",
        "This is a verified local animation continuation; no live extra-hit count or optimal hand timing was measured."
      ],
      "baseline": {
        "value": null,
        "unit": "connected hits",
        "setup": "No live normal comparison"
      },
      "bestObserved": {
        "value": null,
        "unit": "connected hits",
        "setup": "Static local restart/continuation branch only"
      },
      "codeBound": "Initializer $0306D0 sets +$3A1 to 1. One qualifying restart can spend that allowance; this is not a super extension or a guaranteed extra connected hit.",
      "maximumStatus": "Not measured",
      "globalMaximum": null,
      "whyNotMaximum": "A local animation restart does not guarantee another hit connects. Common gates, exact timing and collision remain outside this static result. This secret variant shares the checked local code; it was not independently live-tested.",
      "evidence": [
        {
          "label": "Independent normal branch review",
          "href": "/blog/mvsc-mash/evidence/revision/roster/normal-review/findings.json#06-base-normal-0-lk"
        },
        {
          "label": "Exact selector route",
          "href": "/blog/mvsc-mash/evidence/revision/roster/normal-route-receipts.json#26-base-normal-0-lk"
        }
      ],
      "confidence": "Static local branch verified; connected-hit gain and maximum unmeasured",
      "nativeInputGate": "Nonzero animation flag +$3C; common $0176B6 and $01741E gates return zero; repeat allowance +$3A1 is nonzero.",
      "effect": "Spends +$3A1 at $030AAC, clears input buffer +$DE at $030AB6, then starts animation $12/$00 through $0135E6 at $030AC2."
    },
    {
      "id": "normal-26-base-normal-1-lk",
      "character": "Orange Hulk",
      "move": "Crouching LK",
      "category": "static",
      "command": "B4=2, B5=2, 4D=0; LK",
      "inputRecipe": [
        "While crouching, press LK to start the normal.",
        "Release and press LK again during its continuation window. The exact accepted inputs and animation gates are recorded in the linked code.",
        "This is a verified local animation continuation; no live extra-hit count or optimal hand timing was measured."
      ],
      "baseline": {
        "value": null,
        "unit": "connected hits",
        "setup": "No live normal comparison"
      },
      "bestObserved": {
        "value": null,
        "unit": "connected hits",
        "setup": "Static local restart/continuation branch only"
      },
      "codeBound": "Initializer $030772 sets +$3A1 to 1. One qualifying local restart, not an added-hit guarantee.",
      "maximumStatus": "Not measured",
      "globalMaximum": null,
      "whyNotMaximum": "A local animation restart does not guarantee another hit connects. Common gates, exact timing and collision remain outside this static result. This secret variant shares the checked local code; it was not independently live-tested.",
      "evidence": [
        {
          "label": "Independent normal branch review",
          "href": "/blog/mvsc-mash/evidence/revision/roster/normal-review/findings.json#06-base-normal-1-lk"
        },
        {
          "label": "Exact selector route",
          "href": "/blog/mvsc-mash/evidence/revision/roster/normal-route-receipts.json#26-base-normal-1-lk"
        }
      ],
      "confidence": "Static local branch verified; connected-hit gain and maximum unmeasured",
      "nativeInputGate": "Nonzero animation flag +$3C, common $0176B6 gate returns zero and +$3A1 remains nonzero.",
      "effect": "Spends +$3A1 at $030BA6, clears +$DE at $030BB0, and restarts animation $16/$00 at $030BBC."
    },
    {
      "id": "normal-28-base-normal-0-lp",
      "character": "Gold War Machine",
      "move": "Standing LP",
      "category": "static",
      "command": "B4=0, B5=0, 4D=0; LP",
      "inputRecipe": [
        "While standing, press LP to start the normal.",
        "Release and press LP again during its continuation window. The exact accepted inputs and animation gates are recorded in the linked code.",
        "This is a verified local animation continuation; no live extra-hit count or optimal hand timing was measured."
      ],
      "baseline": {
        "value": null,
        "unit": "connected hits",
        "setup": "No live normal comparison"
      },
      "bestObserved": {
        "value": null,
        "unit": "connected hits",
        "setup": "Static local restart/continuation branch only"
      },
      "codeBound": "No explicit finite mash-credit count in this local branch. The animation window and ordinary state transitions still gate each restart. No maximum or live extra-hit total established.",
      "maximumStatus": "Not measured",
      "globalMaximum": null,
      "whyNotMaximum": "A local animation restart does not guarantee another hit connects. Common gates, exact timing and collision remain outside this static result. This secret variant shares the checked local code; it was not independently live-tested.",
      "evidence": [
        {
          "label": "Independent normal branch review",
          "href": "/blog/mvsc-mash/evidence/revision/roster/normal-review/findings.json#02-base-normal-0-lp"
        },
        {
          "label": "Exact selector route",
          "href": "/blog/mvsc-mash/evidence/revision/roster/normal-route-receipts.json#28-base-normal-0-lp"
        }
      ],
      "confidence": "Static local branch verified; connected-hit gain and maximum unmeasured",
      "nativeInputGate": "Animation updater $001DD8 has not ended the move, and the animation flag byte +$3C is nonzero.",
      "effect": "Clears +$3C, toggles +$380 and chooses animation-bank offsets $2A/$00 versus $10/$00 before calling $0135E6 at $029AB4. It also resets attack fields +$80/+$84/+$86."
    },
    {
      "id": "normal-2c-base-normal-0-lp",
      "character": "Lilith",
      "move": "Standing LP",
      "category": "static",
      "command": "B4=0, B5=0, 4D=0; LP",
      "inputRecipe": [
        "While standing, press LP to start the normal.",
        "Release and press LP again during its continuation window. The exact accepted inputs and animation gates are recorded in the linked code.",
        "This is a verified local animation continuation; no live extra-hit count or optimal hand timing was measured."
      ],
      "baseline": {
        "value": null,
        "unit": "connected hits",
        "setup": "No live normal comparison"
      },
      "bestObserved": {
        "value": null,
        "unit": "connected hits",
        "setup": "Static local restart/continuation branch only"
      },
      "codeBound": "The +$BD branch changes attack attributes; no stopping bound or initial allowance was established here. Do not call it a finite number of bonus hits.",
      "maximumStatus": "Not measured",
      "globalMaximum": null,
      "whyNotMaximum": "A local animation restart does not guarantee another hit connects. Common gates, exact timing and collision remain outside this static result. This secret variant shares the checked local code; it was not independently live-tested.",
      "evidence": [
        {
          "label": "Independent normal branch review",
          "href": "/blog/mvsc-mash/evidence/revision/roster/normal-review/findings.json#1e-base-normal-0-lp"
        },
        {
          "label": "Exact selector route",
          "href": "/blog/mvsc-mash/evidence/revision/roster/normal-route-receipts.json#2c-base-normal-0-lp"
        }
      ],
      "confidence": "Static local branch verified; connected-hit gain and maximum unmeasured",
      "nativeInputGate": "Animation flag +$3C and common $0176B6/$01741E gates.",
      "effect": "Clears buffer, resets attack fields, decrements +$BD and changes +$80 when that count becomes nonpositive. Chooses $10/$06 versus $10/$00 from +$3C and calls $0135E6 at $05DF92."
    }
  ],
  "superVerdictScope": "Named-super findings only, with an explicit unresolved row wherever a playable character lacks a supported classification. All 21 playable characters appear. Mashable means extra connected hits were demonstrated for the linked setup; More attacks means input affects production but an extra-hit comparison is absent or unchanged. No extension found is restricted to examined paths/fixtures. This is not a claim that every native selector is a named super or that every super is completely classified.",
  "superVerdicts": [
    {
      "id": "super-gold-proton",
      "character": "Gold War Machine",
      "super": "Proton Cannon",
      "command": "QCF + two punches; Gold variant, E6=$02",
      "verdict": "Mashable",
      "input": "Change directions during firing",
      "summary": "Fresh direction edges prolong missile firing. Best ordinary-health result 116 through lethal hit;181 includes after KO processing.",
      "guideId": "gold-proton",
      "evidence": [
        {
          "label": "Ordinary-health FBNeo events",
          "href": "/blog/mvsc-mash/evidence/revision/core/fbneo/gold-spider-verified/events.jsonl"
        },
        {
          "label": "Ordinary-health MAME events",
          "href": "/blog/mvsc-mash/evidence/revision/core/mame/gold-spider-verified/events.jsonl"
        },
        {
          "label": "Protocol, counters and KO split",
          "href": "/blog/mvsc-mash/evidence/revision/core/methodology.md"
        },
        {
          "label": "Native timer and allocation instructions",
          "href": "/blog/mvsc-mash/evidence/revision/core/code-excerpts.txt"
        }
      ]
    },
    {
      "id": "super-war-proton",
      "character": "War Machine",
      "super": "Proton Cannon",
      "command": "QCF + two punches; ordinary War Machine, E6=$02",
      "verdict": "No extension found",
      "input": "No supported mash extension",
      "summary": "Ordinary branch stayed 27→27 in its matched test; Gold’s timer reimbursement is a different branch.",
      "guideId": "war-proton",
      "evidence": [
        {
          "label": "Ordinary versus Gold native branch and controls",
          "href": "/blog/mvsc-mash/evidence/war-machine.md"
        }
      ]
    },
    {
      "id": "super-hulk-wave",
      "character": "Hulk",
      "super": "Gamma Wave",
      "command": "QCF + two punches; E6=$0C",
      "verdict": "No extension found",
      "input": "No supported mash extension",
      "summary": "Eight wave children regardless of tested input; tail-inclusive fixture 11→11.",
      "guideId": "hulk-wave",
      "evidence": [
        {
          "label": "Ten-condition repeated-baseline results",
          "href": "/blog/mvsc-mash/evidence/revision/roster/hulk_gamma_wave/summary.json"
        },
        {
          "label": "Wave/controller instructions",
          "href": "/blog/mvsc-mash/evidence/hulk.md"
        }
      ]
    },
    {
      "id": "super-hulk-quake",
      "character": "Hulk",
      "super": "Gamma Quake",
      "command": "QCF + two kicks; E6=$14",
      "verdict": "No extension found",
      "input": "No supported mash extension",
      "summary": "Fixed eleven-rock schedule; fixture 7→7. Scheduled objects are not guaranteed hits.",
      "guideId": "hulk-quake",
      "evidence": [
        {
          "label": "Paired results and native scheduler",
          "href": "/blog/mvsc-mash/evidence/hulk.md"
        }
      ]
    },
    {
      "id": "super-hulk-crush",
      "character": "Hulk",
      "super": "Gamma Crush",
      "command": "QCB + two punches; E6=$06",
      "verdict": "No extension found",
      "input": "Held direction aims the descent",
      "summary": "One trajectory choice, not a fresh-press budget; fixture 4→4.",
      "guideId": "hulk-crush",
      "evidence": [
        {
          "label": "Trajectory code and paired controls",
          "href": "/blog/mvsc-mash/evidence/hulk.md"
        }
      ]
    },
    {
      "id": "super-ryu-hadoken",
      "character": "Ryu",
      "super": "Shinkuu Hadoken",
      "command": "QCF + two punches; base Ryu, E6=$0A",
      "verdict": "Mashable",
      "input": "Fresh attacks during the beam",
      "summary": "Twelve timer credits. Best published matched fixture 20→24; close Spider-Man 9→10.",
      "guideId": "ryu-hadoken",
      "evidence": [
        {
          "label": "Best recorded standing-Hulk case",
          "href": "/blog/mvsc-mash/evidence/revision/core/mame/ryu-hulk-world-far/result.json"
        },
        {
          "label": "Best case exact input/events",
          "href": "/blog/mvsc-mash/evidence/revision/core/mame/ryu-hulk-world-far/events.jsonl"
        },
        {
          "label": "All tested positions and scores",
          "href": "/blog/mvsc-mash/evidence/revision/core/result-summary.json"
        },
        {
          "label": "Beam code and method",
          "href": "/blog/mvsc-mash/evidence/revision/core/methodology.md"
        }
      ]
    },
    {
      "id": "super-ryu-ken",
      "character": "Ryu",
      "super": "Ken-mode Shinryuken",
      "command": "HCB + MP to enter Ken style; then QCF + two kicks, E6=$1C",
      "verdict": "Mashable",
      "input": "Ken style; fresh attacks while rising",
      "summary": "Inline attack edges accelerate animation; fixture 12→15. Separate from base Shin Shoryuken.",
      "guideId": "ryu-ken",
      "evidence": [
        {
          "label": "Native style, inline reader and paired results",
          "href": "/blog/mvsc-mash/evidence/ryu.md"
        }
      ]
    },
    {
      "id": "super-ryu-akuma",
      "character": "Ryu",
      "super": "Akuma-mode Messatsu Gou Hadou",
      "command": "HCB + HP to enter Akuma style; then QCB + two punches, E6=$0A",
      "verdict": "Mashable",
      "input": "Akuma style; fresh attacks during the beam",
      "summary": "Same twelve-credit beam path; its own tested fixture 9→10.",
      "guideId": "ryu-akuma",
      "evidence": [
        {
          "label": "Akuma command and shared beam receipts",
          "href": "/blog/mvsc-mash/evidence/ryu.md"
        }
      ]
    },
    {
      "id": "super-ryu-tatsu",
      "character": "Ryu",
      "super": "Shinkuu Tatsumaki Senpukyaku",
      "command": "Base style: QCB + two kicks; E6=$0C",
      "verdict": "No extension found",
      "input": "No supported mash extension",
      "summary": "Fixed eight-unit loop counter in the examined path; fixture 18→18.",
      "guideId": "ryu-tatsu",
      "evidence": [
        {
          "label": "Base-style loop and five input controls",
          "href": "/blog/mvsc-mash/evidence/ryu.md"
        }
      ]
    },
    {
      "id": "super-ryu-shoryuken",
      "character": "Ryu",
      "super": "Shin Shoryuken",
      "command": "Base style: DP + two punches; E6=$16",
      "verdict": "No extension found",
      "input": "No supported mash extension",
      "summary": "Base-style fixture 3→3; do not borrow Ken Shinryuken’s mechanism.",
      "guideId": "ryu-shoryuken",
      "evidence": [
        {
          "label": "Base Shin Shoryuken versus Ken Shinryuken",
          "href": "/blog/mvsc-mash/evidence/ryu.md"
        }
      ]
    },
    {
      "id": "super-chun-kikosho",
      "character": "Chun-Li",
      "super": "Kikosho",
      "command": "QCF + two punches; E6=$06",
      "verdict": "Mashable",
      "input": "Fresh attacks while the sphere is active",
      "summary": "Eight accepted events can add four child repeats; fixture 9→13.",
      "guideId": "chun-kikosho",
      "evidence": [
        {
          "label": "Budget, child rearming and paired results",
          "href": "/blog/mvsc-mash/evidence/chun-li.md"
        },
        {
          "label": "Original Kikosho trace",
          "href": "/blog/mvsc-mash/evidence/kikosho.csv"
        }
      ]
    },
    {
      "id": "super-chun-senretsu",
      "character": "Chun-Li",
      "super": "Senretsukyaku",
      "command": "QCF + two kicks; E6=$08",
      "verdict": "Mashable",
      "input": "Alternate fresh attacks throughout active kicks",
      "summary": "Sixty timer credits; rotating attacks or alternating LP/MP reached 15→30.",
      "guideId": "chun-senretsu",
      "evidence": [
        {
          "label": "MAME best input comparison",
          "href": "/blog/mvsc-mash/evidence/revision/core/mame/chun-spider-near/result.json"
        },
        {
          "label": "Independent FBNeo comparison",
          "href": "/blog/mvsc-mash/evidence/revision/core/fbneo/chun-spider-near/result.json"
        },
        {
          "label": "Exact rotating-button harness",
          "href": "/blog/mvsc-mash/evidence/revision/core/mame/chun-spider-near/harness.lua"
        },
        {
          "label": "Budget and scoring protocol",
          "href": "/blog/mvsc-mash/evidence/revision/core/methodology.md"
        }
      ]
    },
    {
      "id": "super-morrigan-soul",
      "character": "Morrigan",
      "super": "Soul Eraser",
      "command": "QCF + two punches; E6=$0E",
      "verdict": "Mashable",
      "input": "Fresh attacks; directions separately speed orbit",
      "summary": "Ten button reimbursements; fixture 18→20. Direction orbit motion is a distinct effect.",
      "guideId": "morrigan-soul",
      "evidence": [
        {
          "label": "Separate button and satellite-direction paths",
          "href": "/blog/mvsc-mash/evidence/roster.md"
        }
      ]
    },
    {
      "id": "super-shadow-laser",
      "character": "Shadow Lady",
      "super": "Big Bang Laser",
      "command": "QCF + two punches; E6=$20",
      "verdict": "Mashable",
      "input": "Fresh attacks during the beam",
      "summary": "Sixteen timer reimbursements; fixture 21→25.",
      "guideId": "shadow-laser",
      "evidence": [
        {
          "label": "Sixteen-credit beam and live result",
          "href": "/blog/mvsc-mash/evidence/roster.md"
        }
      ]
    },
    {
      "id": "super-megaman-hyper",
      "character": "Mega Man",
      "super": "Hyper Mega Man",
      "command": "QCF + two punches; E6=$0E",
      "verdict": "More attacks; hit gain unproved",
      "input": "Fresh attacks accelerate scheduled projectiles",
      "summary": "Successful allocations 14→23, while measured combo stayed 17→17.",
      "guideId": "megaman-hyper",
      "evidence": [
        {
          "label": "Emission counts and native scheduler",
          "href": "/blog/mvsc-mash/evidence/roster.md"
        }
      ]
    },
    {
      "id": "super-mega-beat",
      "character": "Mega Man",
      "super": "Beat Plane",
      "command": "QCF + two kicks; E6=$08",
      "verdict": "Mashable",
      "input": "Fresh attacks fire bursts; directions steer",
      "summary": "Fixture 3→23 during the vehicle state; all 180 lifetime decrements still occur.",
      "guideId": "mega-beat",
      "evidence": [
        {
          "label": "MAME mask, hold and direction controls",
          "href": "/blog/mvsc-mash/evidence/revision/roster/mega_beat_plane/summary.json"
        },
        {
          "label": "MAME exact input harness",
          "href": "/blog/mvsc-mash/evidence/revision/roster/mega_beat_plane/probe.lua"
        },
        {
          "label": "Independent FBNeo result",
          "href": "/blog/mvsc-mash/evidence/revision/core/fbneo/mega-beat/result.json"
        },
        {
          "label": "Burst and lifetime code",
          "href": "/blog/mvsc-mash/evidence/revision/roster/code-excerpts.txt"
        }
      ]
    },
    {
      "id": "super-roll-hyper",
      "character": "Roll",
      "super": "Hyper Roll",
      "command": "QCF + two punches; E6=$0E",
      "verdict": "More attacks; hit gain unproved",
      "input": "Fresh attacks accelerate scheduled projectiles",
      "summary": "Successful allocations 12→20, while measured combo stayed 15→15.",
      "guideId": "roll-hyper",
      "evidence": [
        {
          "label": "Roll scheduler and successful allocations",
          "href": "/blog/mvsc-mash/evidence/roster.md"
        }
      ]
    },
    {
      "id": "super-roll-beat",
      "character": "Roll",
      "super": "Beat Plane",
      "command": "QCF + two kicks; E6=$08",
      "verdict": "Mashable",
      "input": "Fresh attacks fire bursts; directions steer",
      "summary": "Fixture 3→23; the later FBNeo tail event is excluded. Lifetime is not refilled.",
      "guideId": "roll-beat",
      "evidence": [
        {
          "label": "MAME mask, hold and direction controls",
          "href": "/blog/mvsc-mash/evidence/revision/roster/roll_beat_plane/summary.json"
        },
        {
          "label": "MAME exact input harness",
          "href": "/blog/mvsc-mash/evidence/revision/roster/roll_beat_plane/probe.lua"
        },
        {
          "label": "Independent FBNeo result",
          "href": "/blog/mvsc-mash/evidence/revision/core/fbneo/roll-beat/result.json"
        },
        {
          "label": "Burst and lifetime code",
          "href": "/blog/mvsc-mash/evidence/revision/roster/code-excerpts.txt"
        }
      ]
    },
    {
      "id": "super-strider-ouroboros",
      "character": "Strider",
      "super": "Ouroboros",
      "command": "QCF + two punches, then fresh punches; E6=$08",
      "verdict": "More attacks; hit gain unproved",
      "input": "Fresh punches request satellite shots",
      "summary": "Static owner-input firing path with cooldown; no live shot/hit comparison, no duration refill.",
      "guideId": "strider-ouroboros",
      "evidence": [
        {
          "label": "Owner-input mask, cooldown and fixed lifetime",
          "href": "/blog/mvsc-mash/evidence/roster-additions.md"
        },
        {
          "label": "Native selector and remaining frontier",
          "href": "/blog/mvsc-mash/evidence/revision/roster/inventory.json#1c-base-attack-08"
        }
      ]
    },
    {
      "id": "super-spider-maximum",
      "character": "Spider-Man",
      "super": "Maximum Spider",
      "command": "QCF + two punches; E6=$08",
      "verdict": "No extension found",
      "input": "Directions aim approach; no supported button extension",
      "summary": "Own native path tested 5→5. Web Throw’s rotation does not prove a 25-hit Maximum Spider.",
      "guideId": "spider-maximum",
      "evidence": [
        {
          "label": "MAME ten-condition fixture",
          "href": "/blog/mvsc-mash/evidence/revision/roster/maximum_spider/summary.json"
        },
        {
          "label": "Independent FBNeo result",
          "href": "/blog/mvsc-mash/evidence/revision/core/fbneo/spider-maximum/result.json"
        },
        {
          "label": "Counter and approach instructions",
          "href": "/blog/mvsc-mash/evidence/revision/roster/code-excerpts.txt"
        }
      ]
    },
    {
      "id": "super-war-destroyer",
      "character": "War Machine",
      "super": "War Destroyer",
      "command": "QCF + two kicks; E6=$0C",
      "verdict": "Unresolved",
      "input": "No demonstrated extra-hit input recipe",
      "summary": "Directions changed observed contacts without lengthening its 48-count launch phase. The cause was not isolated, so neither mashable nor non-mashable is established.",
      "guideId": null,
      "evidence": [
        {
          "label": "Evidence and remaining scope",
          "href": "/blog/mvsc-mash/evidence/war-machine.md"
        }
      ]
    },
    {
      "id": "super-gold-war-destroyer",
      "character": "Gold War Machine",
      "super": "Shared War Destroyer handler candidate",
      "command": "Gold human command unverified",
      "verdict": "Unresolved",
      "input": "No demonstrated extra-hit input recipe",
      "summary": "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.",
      "guideId": null,
      "evidence": [
        {
          "label": "Evidence and remaining scope",
          "href": "/blog/mvsc-mash/evidence/revision/roster/inventory.json#28-base-attack-0c"
        }
      ]
    },
    {
      "id": "super-lilith-brilliant",
      "character": "Lilith",
      "super": "Brilliant Shower",
      "command": "QCF + two punches; E6=$0A",
      "verdict": "Unresolved",
      "input": "No demonstrated extra-hit input recipe",
      "summary": "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.",
      "guideId": null,
      "evidence": [
        {
          "label": "Evidence and remaining scope",
          "href": "/blog/mvsc-mash/evidence/roster.md"
        }
      ]
    },
    {
      "id": "super-unresolved-captain-america",
      "character": "Captain America",
      "super": "Other supers — not yet classified",
      "command": "Named human command mapping is incomplete",
      "verdict": "Unresolved",
      "input": "No demonstrated extra-hit input recipe",
      "summary": "Native dispatch entries are inventoried, but no supported named-super input-effect verdict was established in this study.",
      "guideId": null,
      "evidence": [
        {
          "label": "Evidence and remaining scope",
          "href": "/blog/mvsc-mash/evidence/revision/roster/native-tables.json#04"
        }
      ]
    },
    {
      "id": "super-unresolved-wolverine",
      "character": "Wolverine",
      "super": "Other supers — not yet classified",
      "command": "Named human command mapping is incomplete",
      "verdict": "Unresolved",
      "input": "No demonstrated extra-hit input recipe",
      "summary": "Berserker Barrage and Tornado Claw findings concern ordinary specials, not a classification of Wolverine’s supers.",
      "guideId": null,
      "evidence": [
        {
          "label": "Evidence and remaining scope",
          "href": "/blog/mvsc-mash/evidence/revision/roster/native-tables.json#08"
        }
      ]
    },
    {
      "id": "super-unresolved-gambit",
      "character": "Gambit",
      "super": "Other supers — not yet classified",
      "command": "Named human command mapping is incomplete",
      "verdict": "Unresolved",
      "input": "No demonstrated extra-hit input recipe",
      "summary": "Native dispatch entries are inventoried, but no supported named-super input-effect verdict was established in this study.",
      "guideId": null,
      "evidence": [
        {
          "label": "Evidence and remaining scope",
          "href": "/blog/mvsc-mash/evidence/revision/roster/native-tables.json#0A"
        }
      ]
    },
    {
      "id": "super-unresolved-venom",
      "character": "Venom",
      "super": "Other supers — not yet classified",
      "command": "Named human command mapping is incomplete",
      "verdict": "Unresolved",
      "input": "No demonstrated extra-hit input recipe",
      "summary": "Web Throw’s extra slams do not classify Venom’s supers.",
      "guideId": null,
      "evidence": [
        {
          "label": "Evidence and remaining scope",
          "href": "/blog/mvsc-mash/evidence/revision/roster/native-tables.json#0C"
        }
      ]
    },
    {
      "id": "super-unresolved-captain-commando",
      "character": "Captain Commando",
      "super": "Other supers — not yet classified",
      "command": "Named human command mapping is incomplete",
      "verdict": "Unresolved",
      "input": "No demonstrated extra-hit input recipe",
      "summary": "Native dispatch entries are inventoried, but no supported named-super input-effect verdict was established in this study.",
      "guideId": null,
      "evidence": [
        {
          "label": "Evidence and remaining scope",
          "href": "/blog/mvsc-mash/evidence/revision/roster/native-tables.json#14"
        }
      ]
    },
    {
      "id": "super-unresolved-jin",
      "character": "Jin",
      "super": "Other supers — not yet classified",
      "command": "Named human command mapping is incomplete",
      "verdict": "Unresolved",
      "input": "No demonstrated extra-hit input recipe",
      "summary": "The traced unnamed grab parameter does not classify Blodia Vulcan or other supers.",
      "guideId": null,
      "evidence": [
        {
          "label": "Evidence and remaining scope",
          "href": "/blog/mvsc-mash/evidence/revision/roster/native-tables.json#18"
        }
      ]
    },
    {
      "id": "super-unresolved-zangief",
      "character": "Zangief",
      "super": "Other supers — not yet classified",
      "command": "Named human command mapping is incomplete",
      "verdict": "Unresolved",
      "input": "No demonstrated extra-hit input recipe",
      "summary": "Unnamed direction-sensitive grabs and the Mecha transformation do not establish a named-super mash verdict.",
      "guideId": null,
      "evidence": [
        {
          "label": "Evidence and remaining scope",
          "href": "/blog/mvsc-mash/evidence/revision/roster/native-tables.json#1A"
        }
      ]
    },
    {
      "id": "super-unresolved-red-venom",
      "character": "Red Venom",
      "super": "Other supers — not yet classified",
      "command": "Named human command mapping is incomplete",
      "verdict": "Unresolved",
      "input": "No demonstrated extra-hit input recipe",
      "summary": "Venom Rush is a special; Web Throw is a throw. Neither supplies a verdict for Red Venom’s supers.",
      "guideId": null,
      "evidence": [
        {
          "label": "Evidence and remaining scope",
          "href": "/blog/mvsc-mash/evidence/revision/roster/native-tables.json#24"
        }
      ]
    },
    {
      "id": "super-unresolved-orange-hulk",
      "character": "Orange Hulk",
      "super": "Other supers — not yet classified",
      "command": "Named human command mapping is incomplete",
      "verdict": "Unresolved",
      "input": "No demonstrated extra-hit input recipe",
      "summary": "Shares Hulk code entry points, but Orange-specific human reachability and live input comparisons were not independently established.",
      "guideId": null,
      "evidence": [
        {
          "label": "Evidence and remaining scope",
          "href": "/blog/mvsc-mash/evidence/revision/roster/native-tables.json#26"
        }
      ]
    },
    {
      "id": "super-unresolved-zangief-mecha",
      "character": "Zangief",
      "super": "Mecha-form supers — not yet classified",
      "command": "Mecha form +$EB=2; named-super command mapping incomplete",
      "verdict": "Unresolved",
      "input": "No demonstrated extra-hit input recipe",
      "summary": "The form change itself is verified. Shared or alternate command routes are not proof that each Mecha-form super gains hits from mashing.",
      "guideId": null,
      "evidence": [
        {
          "label": "Evidence and remaining scope",
          "href": "/blog/mvsc-mash/evidence/revision/roster/methodology.md"
        }
      ]
    },
    {
      "id": "super-unresolved-ryu-styles",
      "character": "Ryu",
      "super": "Other Ryu / Ken / Akuma style supers — not yet classified",
      "command": "Only the five named Ryu-style supers above have supported verdicts here",
      "verdict": "Unresolved",
      "input": "No demonstrated extra-hit input recipe",
      "summary": "Style values 0/2/4 are inventoried. A tested beam or Shinryuken does not classify every remaining style-specific super.",
      "guideId": null,
      "evidence": [
        {
          "label": "Evidence and remaining scope",
          "href": "/blog/mvsc-mash/evidence/revision/roster/methodology.md"
        }
      ]
    }
  ]
}
