Rollback demo
Drop a ROM. Crank the lag. Toggle rollback off. Feel the difference.
Waiting for ROM
Raw .z64, .n64, or .v64 files. Stays on this device.
Rollback netplay runs your game locally without waiting on the network. Every player's input, yours included, takes effect after a small fixed delay (a frame or two, just enough to absorb jitter), so both machines apply it on the same frame. For the rest of the round-trip, the engine predicts what the opponent pressed and keeps going, then rewinds and replays if the guess was wrong: invisible at low latency, visible as judder at high latency. Lockstep, the older approach, waits for the opponent's input every frame, so its delay has to cover about half the round-trip plus a jitter cushion, and you feel all of it.
The proof is the contrast: at the same simulated RTT, rollback keeps your input delay small while lockstep makes every press arrive noticeably later. Lockstep stays smoother visually (it never rewinds); rollback's framerate dips at high RTT because predictions miss more often and the engine has more to replay. The rollback button switches between them, and auto-compare switches every 6 seconds. Each switch changes the input delay, so the game briefly holds behind a "Switching to…" banner while it does.
In this demo P2 is a synthetic peer running in the same tab. An autopilot drives the menus for both players; in the match P2 plays random inputs at roughly human cadence. Each time P2's input differs from what the engine predicted, the engine rewinds. That fills the Rollbacks counter and the Result card's timeline below, and at high RTT shows up in the fps readout. Crank the RTT slider and the count rises: that's the latency rollback keeps out of your input delay, paid for in rewinds instead.