Two questions that look like arcade randomness are actually two different deterministic systems:
What decides whether Maximum Spider drops the opponent on the left or right? Can the victim influence it? And can either player steer the release side of Zangief's 360?
The deeper answer is more interesting than either “random” or “just hold a direction.” Maximum Spider has real but bounded directional influence. A held direction changes the victim's position between hits, which can change the fifth hit's reaction path and horizontal launch seed. It does not directly select a destination. Zangief's 360 does not expose that influence window: once the catch begins, the throw owns the victim and mirrors its release from the side/facing at capture.
The player answer
Holding a direction as the victim can change the landing side. It works cumulatively: the hold nudges the multi-hit route, so later contacts happen at different coordinates. The fifth hit is the handoff into the final knockdown, but “P1 was visibly on the left” is not a complete rule. The reaction handler may sign its launch from relative X, facing or inherited motion, then the stage clamp can erase the difference.
The victim cannot steer the tested 360 after contact. Neutral, hold-left and hold-right produced identical coordinates, timing and launch values. To control the result, change the order before the grab connects: cross under, turn Zangief around, or create the desired side with the preceding setup.
First, fix the experiment
The first version of this investigation had a blind spot: it applied the post-command hold to P1. That measures Spider-Man's recovery movement, not the victim's directional influence. It can even make Spider-Man cross a grounded opponent and falsely look like the victim changed sides.
The corrected harness does four things differently:
- Both characters are human-controlled, so P2 input is real.
- P1 and P2 begin at written, recorded world coordinates.
- P2 remains neutral until the first real contact, preventing pre-super walking.
- The result closes on the first uncontaminated grounded frame, before later movement.
It also exposed a separate stale receipt: the earlier image labeled “Zangief 360” was an ordinary airborne hit. The rebuilt oracle uses a compressed octant history that the stock command recognizer accepts before jump startup wins, then requires the long cinematic catch, damage and landing.
That correction matters. A repeatable test can still repeat the wrong move.
What P2 input changes inside Maximum Spider
All three Spider-Man trials began at the same coordinates: P1 X=300, P2 X=418. The command,
characters, stage and timing were identical. Only P2's direction after first contact changed.
The table reports P2 X - P1 X at every damage edge. Positive means the victim was to the right of
the attacking Spider-Man; negative means the victim was to his left.
| Hit | Neutral | P2 holds left | P2 holds right |
|---|---|---|---|
| 1 | +113 | +113 | +113 |
| 2 | -29 | -39 | -20 |
| 3 | +96 | +83 | +86 |
| 4 | +6 | -11 | +58 |
| 5 | +44 | +18 | -25 |
The first hit is identical because the hold begins on contact. Every later hit diverges. That is the clean signature of directional influence: not a late coin flip, but small route differences accumulating before the last reaction.
| P2 input | Fifth-hit positions | Fifth-hit route | $F8 launch write | First grounded result |
|---|---|---|---|---|
| Neutral | P1 393, P2 437 | group $2E, subgroup $1C | +$130000 at $1C2C2 | P2 stage-right at X=747 |
| Hold left | P1 253, P2 271 | group $2E, subgroup $26 | +$120000 at $1C4D0 | P2 right of P1, X=271 |
| Hold right | P1 489, P2 464 | group $2E, subgroup $1E | -$127A00 at $1C2C2 | P2 stage-left at X=21 |
In this setup, the opposite holds really do flip the result. The right hold moved the victim far enough through the route that the fifth contact occurred on Spider-Man's left, and the cached horizontal reaction became negative.




These are fresh emulator captures from the corrected P2-input runs, not the reference images that prompted the follow-up.
Why it is not a guaranteed left-or-right recipe
Move the same setup to P1 X=500, P2 X=618, and the simple recipe breaks:
| Setup | P2 hold | Fifth-hit relative X | Final P2 X | Side |
|---|---|---|---|---|
| X=500 / 618 | Left | +15 | 747 | Right |
| X=500 / 618 | Right | +42 | 747 | Right |
The input still changes height, timing and intermediate coordinates, but both trajectories enter a right-going outcome and saturate at the same legal stage boundary. In other positions, a reaction branch or corner can similarly dominate the small influence.
So the practical rule is:
- DI can bias the path and sometimes flip the landing.
- It cannot promise a destination from every starting position.
- The effect is counterintuitive: holding right did not mean “land right” in the accepted flip.
- Test the exact duo/corner/setup you intend to use; assists and camera state can change the geometry.
flowchart LR
I["P2 direction after contact"] --> N["small route influence"]
N --> H["hits 2 through 5 diverge"]
H --> R["final reaction variant"]
R --> V["cached horizontal launch"]
V --> M["movement integration"]
M --> C["stage boundary clamp"]
C --> L["first grounded side"]The fifth hit is the hinge, not a limb test
Fast sprite poses invite a plausible but wrong model: perhaps a left arm, right arm, left leg or right leg selects the destination. The engine does not give each visible limb an independent landing-side identity. Those shapes are assembled art for a route subgroup.
The accepted trials reached different fifth-hit subgroups ($1C, $26, $1E), so the visible
angle changes along with the route. That makes a leg look predictive in selected frames. It is a
correlation: both the pose and the launch came from the same evolving state.
The reaction code exposes the actual inputs:
; one final-reaction family, $1C482-$1C4AC
move.w $C(a4),d2 ; source/attacker world X
cmp.w $C(a6),d2 ; compare victim world X
ble keep_sign
neg.w d0 ; mirror horizontal launch
neg.w d1
keep_sign:
move.l d0,$F8(a6) ; cache victim horizontal launchAnother family at $1C4B2-$1C4D8 mirrors the vector with the victim's facing bit. The route used by
the neutral and right-hold fifth hits reaches $1C2C2, where inherited horizontal motion is clamped
to -$130000..+$130000 before being stored at $F8. At $110D4, the reaction state copies $F8
into the live horizontal velocity field.
That is why two screenshots with Spider-Man apparently attacking from the same visible side can still end differently: the screenshot does not reveal which reaction family ran, the facing bit, the sub-pixel velocity, or the launch value already cached for the knockdown.
Maximum Spider also contains a tiny per-frame horizontal helper at $1CF04:
cmpi.w #$000C,$6(a6)
bne done
move.b $85(a6),d0
andi.w #$001F,d0
add.w d0,d0
lea $1CF2E(pc),a0
move.w (a0,d0.w),d0 ; 32-entry table of -1 / +1
tst.b $4B(a6)
beq apply
neg.w d0
apply:
add.w d0,$C(a6)The table is four repeating words: -1, -1, +1, +1. The routine reads a five-bit route/direction
field and mirrors through facing. It is not a random generator and it does not inspect a limb. P2
input changes the path that feeds this state; the move then combines those small shifts with much
larger reaction vectors.
The boundary is the final distortion layer
After the reaction copies its cached launch into live velocity, the common motion path at $2494
integrates the object. The stage resolver at $13ADA-$13B1A clips anything outside the current
window:
left_limit = stage_x + $55
right_limit = stage_x + $1AB
if victim_x <= left_limit:
victim_x = left_limit ; writer $13AFC
elseif victim_x >= right_limit:
victim_x = right_limit ; writer $13B10In these captures the legal edges were X=21 and X=747. Repeated writes from $13AFC or
$13B10 show the trajectory trying to continue beyond the screen while the clamp holds the visible
fighter at the edge. That is why two distinct routes can end at exactly the same pixel.
Zangief's 360 uses a different control surface
For the corrected 360 test, Zangief and Spider-Man began 28 pixels apart. The harness held that close setup stable only until the stock command recognizer accepted the catch; after contact, it stopped all position writes and let the real throw run.
With the victim starting on Zangief's right, all three inputs produced this exact receipt:
| P2 input after contact | Contact | Damage | Landing | Zangief X | P2 X | Launch $F8 |
|---|---|---|---|---|---|---|
| Neutral | 102 | 205 | 249 | 461 | 747 | +$76900 |
| Hold left | 102 | 205 | 249 | 461 | 747 | +$76900 |
| Hold right | 102 | 205 | 249 | 461 | 747 | +$76900 |
Not merely the side, but the timing, damage, coordinates, reaction writes and extrema are identical. The victim's directions are present at the input layer and have no influence once the catch owns the object.
Mirror the pre-grab order—Zangief X=500, victim X=472—and the throw mirrors: the $F8 launch
becomes -$76900, Zangief finishes at X=339, and the victim reaches the left edge at X=21.
The shared reaction handler at $1C196-$1C1D8 explains that exact sign change. It reads the source
object attached to the victim at $A4, tests the source's facing at $B3, and negates the table
velocity before caching it at $F8. There is no P2 direction read in this handoff.




What this validates—and what it does not
This investigation validates the landing-side mechanics in stock mvsc:
- Maximum Spider victim DI is real and begins affecting the route after first contact.
- The fifth hit is the final knockdown handoff, but relative X alone is not a universal formula.
- Visible arm/leg angle does not independently select a side.
- Reaction family, facing, cached launch and the stage boundary complete the decision.
- Zangief's 360 ignores victim left/right after catch and mirrors from the pre-capture setup.
It does not rate the supers, prove a particular duo chip setup, or establish the practicality of a frame-perfect combo into Maximum Spider. Those are separate gates with different evidence. The landing result also should not be generalized from this solo setup to every assist collision or corner state without replaying the same coordinate trace there.
The reusable model
When a cinematic attack “randomly” changes sides, capture these layers separately:
- exact source and victim world coordinates at every hit;
- both players' inputs, with influence delayed until contact;
- the final reaction handler and cached launch vector;
- the frame that copies cached launch into live velocity;
- all stage-boundary corrections; and
- the first grounded frame, before either player can walk.
Maximum Spider is a route you can influence but not command outright. Zangief's 360 is a captured relationship you must arrange in advance. Neither requires a random left/right coin—and neither can be understood reliably from the last visible limb alone.