Input Lag & Display Latency Master Guide
Ever wonder why jumps in Super Mario World or parries in Street Fighter feel slightly "floaty" on your handheld? Learn how Android double buffering, display pixel response times, and controller polling rates affect your gameplay—and how to fix it with Run-Ahead.
Real Input Latency Tiers (From Button Press to Pixel Shift)
Measured using high-speed 1,000 FPS cameras and LED photodiode testers:
Analog cathode ray tube drawing raster scanlines line-by-line with zero digital frame buffering.
Miyoo Mini Plus (OnionOS) or Anbernic RG35XX SP (muOS) with 1 frame of Run-Ahead strips out inherent game engine polling delay.
Android SurfaceFlinger compositor adds ~1 frame of double buffering, mitigated by fast 120Hz touch sampling and low-latency drivers.
Bluetooth 125Hz polling + TV image processing smoothing filters create unbearable delay in tight platformers like Super Mario World.
Interactive Latency Estimator
Calculate your total glass-to-glass input delay based on your hardware setup.
How to Enable Run-Ahead in RetroArch (Step-by-Step)
Works on GBA, SNES, Genesis, NES, and PS1 cores:
Open Latency Settings
In RetroArch, go to Settings > Latency. Toggle "Run-Ahead to Reduce Latency" to ON.
Set Number of Frames
Set "Number of Frames to Run-Ahead" to 1. Setting it to 1 is 100% safe for 99% of retro games without frame skipping.
Enable Second Instance
Check "Run-Ahead Use Second Instance". This prevents audio crackles by running the forward frames in a silent background thread.
Frequently Asked Questions
Q: What is RetroArch Run-Ahead and how does it eliminate input lag?
Run-Ahead is a revolutionary emulation feature. Real retro games (like Super Mario Bros. or Mega Man) inherently had 1 or 2 frames of internal CPU delay built into their game loop before Mario actually jumped. Run-Ahead runs the emulator 1 or 2 frames ahead invisibly in memory, then rewinds if no button was pressed. This allows modern handhelds to respond faster than a real SNES on a CRT TV!
Q: Why does Android have more input lag than Linux (OnionOS / muOS)?
Android is a full smartphone operating system with a window compositor called SurfaceFlinger. To prevent screen tearing, Android forces triple buffering. Lightweight Linux OSes like muOS or OnionOS render directly to the Linux framebuffer (/dev/fb0 or DRM/KMS), bypassing compositor queues entirely.
Q: Do Bluetooth wireless controllers add lag compared to USB-C?
Yes. Most Bluetooth controllers poll at 125Hz (8ms per packet) and suffer from RF interference. Direct USB-C wired controllers (or Hall-Effect built-in handheld controls) poll at 500Hz to 1,000Hz (1ms), cutting input latency by 7ms to 12ms.
Q: Does an OLED screen reduce input latency compared to IPS?
Yes! While display refresh rate determines frame intervals, pixel response time (the time for a pixel to change from grey to grey) is 0.1ms on OLED panels (Retroid Pocket 5, Odin 2 Portal, Steam Deck OLED) versus 8ms to 16ms on budget IPS screens. This eliminates ghosting and makes fast twitch movements feel sharper.