# Street Fighter II — Move & Mechanics Reference

Functional reference for building GeekFighter as close to the original arcade feel as
possible. Inputs use numpad notation relative to the direction the fighter faces
(6 = toward opponent / "forward", 4 = away / "back"). P = punch, K = kick, with three
strengths each: LP MP HP / LK MK HK (jab/strong/fierce, short/forward/roundhouse).

## Universal mechanics (World Warrior / Champion Edition baseline)

- **Resolution / feel:** 384×224, ~60 fps. Sprites face right by default; auto-turn to
  face the opponent when neutral.
- **Ground movement:** walk forward (hold 6), walk back (hold 4, also the block input),
  crouch (hold 2). No run/dash in WW/CE.
- **Jump:** tap 7/8/9. Neutral jump (8) and diagonal jumps (7 back, 9 forward). Fixed
  arc, ~ 40–48 frames airborne. You are committed once airborne (no air control).
- **Normals:** 6 grounded normals × {stand, crouch} plus jumping normals. Strength trades
  damage for speed: light = fast/low dmg/low stun, heavy = slow/high dmg/high stun.
  - Stand LP/MP/HP, Stand LK/MK/HK
  - Crouch LP/MP/HP (crouch HP is often an anti-air), Crouch LK/MK (low hits),
    **Crouch HK = sweep** (knockdown).
  - Jump LP/MP/HP, Jump LK/MK/HK — jump-in attacks must be **blocked standing**.
- **Blocking:** hold 4 (away). **Stand block** stops high & mid; **crouch block** (1)
  stops mid & low. Overheads and jump-ins must be stand-blocked; lows must be
  crouch-blocked. No block during your own attack, no air-blocking. Chip damage on
  blocked specials only (WW/CE: chip exists; keep small).
- **Hitstun / blockstun:** heavier hits = longer stun; on hit the defender is pushed back.
  Knockdown moves (sweeps, most special finishers) put the defender on the floor with a
  wake-up (get-up) period of invulnerability.
- **Throws:** close 4/6 + MP or HP (and some + kick). Escapable only by teching in later
  revisions; in WW/CE throws are largely un-tech. *(Phase 2 feature.)*
- **Dizzy / stun:** taking several heavy hits in a short window causes a dizzy state
  (stars/skeleton flash) where the fighter is briefly helpless.
- **Rounds:** best-of-3, 99-second timer counting down (arcade counts in "game seconds",
  roughly 60 real frames each here). On timeout the higher-health fighter wins the round;
  equal = draw/double. Two round wins takes the match.
- **Special input windows:** motions must complete within ~ 12–15 frames. Charge moves
  need the charge direction held ~ 40–60 frames before the release.

## Ryu — inputs & properties

Standard "shoto" moveset. Relative damage tiers in parentheses (low/med/high) — tune to
feel, exact arcade values secondary.

| Move | Input | Notes |
|------|-------|-------|
| Hadoken (fireball) | 236 + P (↓↘→) | Projectile; travels forward. Punch strength = speed. Blockable, chip on block. |
| Shoryuken (dragon punch) | 623 + P (→↓↘) | Rising invulnerable-ish anti-air, **knockdown**. Punch strength = height/damage. |
| Tatsumaki (hurricane kick) | 214 + K (↓↙←) | Spinning kick, moves forward through fireballs, multi-hit-ish, knockdown on heavy. |
| Standing normals | LP/MP/HP, LK/MK/HK | HP = fierce (high dmg, slow). MK = strong forward kick. HK = roundhouse. |
| Crouch normals | 2 + button | cr.MK low poke, **cr.HK sweep** (knockdown), cr.HP anti-air. |
| Jump normals | 7/8/9 + button | j.HK / j.HP are the classic jump-ins (stand-block). |
| Throw | 4/6 + HP (close) | Seoi nage. |

Frame-feel targets: Hadoken ~ 9f startup, long recovery (punishable on whiff).
Shoryuken very fast startup (3–4f), huge recovery. Sweep medium startup, hard knockdown.

## Blanka — inputs & properties

Charge + mash character. Beast-style rushdown.

| Move | Input | Notes |
|------|-------|-------|
| Rolling Attack (horizontal ball) | charge 4 ~40f, then 6 + P | Rolls forward across the screen, knockdown. |
| Vertical Rolling (up-ball) | charge 2 ~40f, then 8 + K | Rising anti-air roll, knockdown. |
| Backstep Roll | charge 4, then 6 + K | Like the ball but stops short / repositions. *(Phase 2.)* |
| Electric Thunder | mash P rapidly | Short-range multi-hit shock; whiffs are safe-ish, big block trap. Chip. |
| Standing normals | LP/MP/HP, LK/MK/HK | Long-limbed pokes; HP overhead-y. |
| Crouch normals | 2 + button | **cr.HK sweep** knockdown; cr.MK low. |
| Jump normals | 7/8/9 + button | j.HP / the diagonal bite. |
| Blanka Ball punishes | — | Ball is unsafe on block up close — leave recovery long. |

Charge feel: hold the charge direction ≥ ~40 frames, then the opposite/perpendicular +
button within a few frames. Electric Thunder scales with mash speed (more presses = more
hits, but keep total damage bounded).

## Implementation status vs this reference

See `PLAN.md` for the live checklist. The engine (`public/game.js`) is data-driven:
each character's normals, specials, timings, damage, reach and animation frame lists live
in `public/data/<char>.json`, so tuning toward these targets is JSON editing plus
frame-index correction against the extraction contact sheets.
