<!-- Research receipt: original investigation notes. File references below refer to paths inside the downloadable evidence archive. Later findings supersede explicitly earlier scope statements. -->

# Ryu and his styles: stock MVC1 mash checks

Target: unmodified Euro 980123 `mvsc.zip`, with ROM provenance and cached
CPU opcode/data views in `analysis/mvsc_mash_20260913/`.

## Paired results

Twenty-five MAME 0.287 trials, restoring the same move-specific save before
each input condition. Both players are human controlled; P2 is standing
Spider-Man. Character selection, style changes and move commands use native
inputs. Health (144), meter and position are seeded before the save; no
gameplay memory is changed during a trial. Ken mode is reached through
HCB+MP and Akuma through HCB+HP, verified as style values 2 and 4 at +$385.

| Move | Command | +E6 | None | Hold all | Tap LP | Tap all | Directions |
|---|---|---|---:|---:|---:|---:|---:|
| Shinkuu Hadoken | QCF+PP | 0A | 9 | 9 | 10 | 10 | 9 |
| Shinkuu Tatsumaki Senpukyaku | QCB+KK | 0C | 18 | 18 | 18 | 18 | 18 |
| Shin Shoryuken | DP+PP | 16 | 3 | 3 | 3 | 3 | 3 |
| Ken-mode Shinryuken | QCF+KK | 1C | 12 | 12 | 15 | 15 | 12 |
| Akuma-mode Messatsu Gou Hadou | QCB+PP | 0A | 9 | 9 | 10 | 10 | 9 |

Counts are the maximum native attacker combo byte during the first tested
move, not universal minima/maxima or extra-hit guarantees against all
opponents. Initial recorded states are identical across each move's five
input conditions. Both human-control flags remain set throughout every
trial. The tested move selector stays consistent. Damage totals vary in
some conditions despite equal hit totals; these notes make no deterministic
damage-value claim.

The shared +$B0=$2A state is an attack state used by specials as well as
supers; the command and +$E6 identify the actual move. It should not be used
alone as proof that an arbitrary attack is a Hyper Combo.

## Beam: limited timer reimbursement

Shinkuu Hadoken and Akuma-mode Messatsu Gou Hadou execute the shared
`$0478D2` routine. `$0478FE..$047908` initializes +$382 to **12** for a human
player (24 on its CPU setup path). `$047926` initializes +$4E to **64**.
Style +$385 changes animation, sound and other effects within this path.

During active state 6:

1. `$047AB0` checks that mash credits remain.
2. `$047AB6` calls the common attack-button-edge helper `$01A3CC`.
3. A success spends one credit at `$047ABE` and branches past the ordinary
   phase-timer decrement.
4. Without a success, or with zero credits, `$047AC4` decrements the timer.
5. At zero, the parent starts its ending animation. The normal animation
   update still runs on accepted mash updates.

Conceptually, each accepted press buys one extra active update, capped at
12 credits for a human. It does **not** promise 12 additional hits. The
beam's attacks still have to connect. Runtime write taps show the credit
spends occur at `$047ABE` for both styles and only in the tapping trials.

The common helper tests `new_buttons & $0770`, so any of the six attack
buttons qualifies. The return value is Boolean: six simultaneous new
buttons do not spend six credits. Holding creates no repeated new edges.
The helper has separate CPU handling and rejects the human path when
+$2B9 is nonzero; these tests cover ordinary human-controlled solo attacks.

## Ken-mode Shinryuken: animation advancement

This move uses an inline input test, not the shared helper:

- `$048428` reads new button edges from +$D4.
- `$04842C` masks all attack buttons with `$0770`.
- On success, `$048432` writes **1** to the animation-delay word +$3E.
- `$048438` calls the ordinary animation update `$001DD8`, which decrements
  +$3E. A value of 1 therefore causes the next animation step immediately.

The ascent movement continues separately. Its vertical-velocity sign check
at `$048416..$048426` eventually moves the attack into the ending states.
The attack-rearming routine at `$0484B2` processes animation attack events.
Advancing the animation sooner creates more attack opportunities during
the ascent. This is a different mechanism from extending the beam timer.
Runtime taps recorded 32 writes at `$048432` across the two tapping trials;
the other conditions had none. The observed combo rose from 12 to 15.

## Other base-Ryu supers

The tested Shinkuu Tatsumaki and Shin Shoryuken conditions did not gain
hits from button mashing. The Tatsu loop initializes +$4E to 8 at `$047C38`
and consumes one at an animation-loop boundary (`$047C62`), with no press
reimbursement in that loop. Do not transfer Ken-mode Shinryuken's mash
behavior to the similarly named base-Ryu Shin Shoryuken.

## Files and reproduction

`probe.lua` is the final harness. Set MASH_DIR to this directory and
MASH_MOVE to the first-column filename stem in `summary.json`, using the
same MAME invocation as the earlier `mvsc_mash_20260913/README.md`.
It saves after 300 live observation callbacks and restores before every
400-callback trial. Normal mode starts with Ryu; transformed modes perform
their half-circle-back change before fixture setup. All CSVs have 2,000
rows. Logs contain DONE and runtime taps; screenshots establish the visual
move identities. The JSON summary validates row counts, human flags,
identical initial observations and native move selectors.

Callback counts are observations, not native frame-data measurements.
Hitstop and game-speed scheduling affect their relation to game updates.
No ROM patch, save state or derived ROM image is intended for publication.
