v2026.11 DB LIVEVerified Frame-Time & Emulator Config Recipes for PS2, GameCube, Switch, PSP & iOS Delta
60
RetroFPSHandheld Matrix
Test FPS
🧭 Matchmaker📦 PortMaster📐 16:9 Hacks🕹️ Systems🔋 Battery⚡ Input Lag📺 Shaders🎮 Frontends📱 Handhelds (24)💿 Games (50)⚔️ Versus⚡ Turnip Drivers📦 ROM Compress📐 Screens🛠️ CFW🧠 Chipsets💾 SD Calc
Emulation Latency Physics & Tuning

Run-Ahead Tuning Matrix & Latency Math

Eliminate vintage console engine input lag. Discover optimal Run-Ahead and Pre-emptive Frame values per title, calculate exact millisecond latency savings, and avoid audio underruns on handheld SoCs.

Interactive Run-Ahead Latency & Frame Savings Calculator

Configure your display refresh rate, controller polling rate, and Run-Ahead frames to compute real-time input-to-photon latency reduction.

1

0 = Disabled | 1 = Safe Default | 2 = High Lag Games | 3+ = Risk of Animation Skip

Latency Reduced
-16.7 ms
Exact input delay cut
Final End-to-End Lag
35.3 ms
Total button to screen time
Frame Pipeline Visualizer (Button Press → Pixel Render)
Pro Tip: On low-power handhelds (RG35XX, Miyoo Mini), enable Run-Ahead Use Second Instance under RetroArch Settings → Latency to offload the rewind buffer without triggering audio crackles.

How Run-Ahead Eliminates Latency: The Physics

Traditional emulation waits for user input, processes the core emulator cycle, updates the video frame buffer, and presents the frame during VSYNC. When combined with internal game programming logic (where classic programmers read gamepad registers at frame N, processed logic at frame N+1, and updated sprite VRAM at frame N+2), players faced 33.3ms to 50ms of delay before physical characters moved on screen.

ΔLatency (ms) = Nrunahead × (1000 / FPS)
Pre-emptive Frames (RetroArch 1.15+)

A lighter, modernized rewrite of Run-Ahead. Rather than continually cloning state every cycle, Pre-emptive Frames only rewinds and re-runs emulator logic when an actual controller button state change occurs. This uses up to 60% less CPU, enabling lag reduction on lower-end devices.

Second Instance Mode

Spawns a secondary silent core instance strictly dedicated to audio calculation and future frame generation. This insulates the main audio buffer from state rewind stalls, completely curing the infamous "crackling chiptune" syndrome on SNES, GBA, and Genesis emulators.

Verified RetroArch Run-Ahead Frame Limits

Engineered frame counts tested through frame-advance measurement. Never exceed Safe Max to prevent character teleportation.

Game TitlePlatform & CoreNative Engine DelayOptimal Run-AheadSafe LimitSoC Hardware LoadTuning Notes
Super Mario WorldSNES (Snes9x)2 Frames1 Frame2 FramesLow (H700 / RK3566 ok)Setting 2 frames achieves instant jump; setting 3 frames cuts into jump animation.
Super Mario Bros.NES (Mesen / Nestopia)1 Frame1 Frame1 FrameExtremely Low1 frame eliminates all game engine latency, matching original CRT response.
Mega Man XSNES (Snes9x)2 Frames1 Frame2 FramesLow to ModerateDash and Buster release feel immediate. 2 frames safe on RK3566+.
Sonic the Hedgehog 2Genesis (Genesis Plus GX)1 Frame1 Frame1 FrameLowInstant spin-dash response. Exceeding 1 frame will clip initial rolling animation.
Super MetroidSNES (Snes9x)2 Frames1 Frame2 FramesModerateWall-jumping timing becomes significantly more forgiving and accurate.
Castlevania: Rondo of BloodPC Engine CD (Beetle PCE)2 Frames1 Frame2 FramesModerateWhip strike lag reduced by ~33ms; second instance recommended to prevent audio popping.
Tekken 3PS1 (SwanStation / Beetle PSX)2-3 Frames1 Frame1 FrameHigh (T618 / SD865+ required)Requires fast CPU and 'Run-Ahead Use Second Instance' enabled to prevent crackling.
Street Fighter II TurboArcade / SNES (FBNeo / Snes9x)2 Frames1 Frame2 FramesLow to ModerateDragon punch (Shoryuken) anti-air timing perfectly syncs with modern Bluetooth controllers.

How to Enable Run-Ahead in RetroArch (Quick Setup)

  1. Launch RetroArch and open Settings → Latency.
  2. Toggle Run-Ahead to Reduce Latency to ON.
  3. Set Number of Frames to Run Ahead to 1 (the universal sweet spot).
  4. Enable Run-Ahead Use Second Instance to prevent audio stuttering on older SoCs.
  5. In RetroArch Quick Menu, navigate to Overrides → Save Game Overrides so each game retains its calibrated frame count without breaking others.

Frequently Asked Questions

Q:What is RetroArch Run-Ahead and how does it beat original hardware latency?

Run-Ahead is an advanced emulation latency reduction technique created by Dwedit. Every frame, RetroArch silently executes 1 to N future frames behind the scenes, renders the upcoming state, and rewinds immediately to capture fresh player inputs. Because vintage games often took 1 to 3 internal hardware frames before displaying sprite animation, running 1 or 2 frames ahead can actually result in LOWER total input lag on modern handhelds than the original console plugged into a CRT TV.

Q:How do I measure the exact native frame delay of any retro game?

Pause emulation in RetroArch, hold down the Jump or Attack button, and press the 'Frame Advance' hotkey (default 'K' or bound to a hotkey). Count how many frame presses are required before the player character changes sprite or reacts. If the character reacts on the 3rd frame press, the game has 2 frames of built-in engine delay. You can safely set Run-Ahead to 1 or 2 frames without skipping visible animation.

Q:What happens if I set Run-Ahead frames too high?

If Run-Ahead frames exceed the game's native internal delay, you induce animation clipping and visual teleportation. For example, setting 3 frames of Run-Ahead on Super Mario Bros (which only has 1 frame of delay) will cause Mario to jump from the ground to mid-air with zero transition animation, making jumps look glitchy and unnatural.

Q:Why does Run-Ahead cause audio crackling and how do I fix it?

Every Run-Ahead frame forces the emulator core to calculate multiple frames within a single 16.67ms VSYNC window. If your handheld SoC (like the Allwinner H700 or Rockchip RK3566) drops below 60 FPS under this double or triple workload, audio buffer underruns occur, causing crackling. To fix this, enable 'Run-Ahead Use Second Instance' in RetroArch Latency settings, or lower the frame count to 1.