Dark mode switch icon Light mode switch icon

Why does retro video game emulation not feel good? Latency analysis

4 min read

As a retro video game fan, I’ve heard a few times that emulation “doesn’t feel right”. There might be an argument to that effect – while older games being emulated typically run easily at 60FPS, I’ve had the nagging feeling that there was more input lag between my clicking a button and getting the response.

There is probably some truth to this idea. Dan Luu reports that the computer with the lowest input lag he found was the 1983 apple 2e, with 30ms input-to-screen time. A gaming pc in 2018 with a high refresh rate monitor is around 50ms, for comparison, though don’t be shocked if your computer is in the 80-150ms range [footnote]You can easily measure that with a modern smartphone with the slow-motion camera feature, by counting frames of the video at 120 or 240 fps[/footnote]

You read that right – while many gamers usually obsess on the difference between 16ms and 33ms frames (eg. 60 and 30 frames per second), your input lag is anywhere between 2x and 10x that!

I ran a few experiments to confirm this, using a high speed camera to measure input lag. Main findings are as follows:

High refresh rate displays like the 120hz screen on the Razer phone may help with this, especially on touchscreens, where the refresh rate improves both input polling time and rendering time. This remains to be tested.

If you want to learn more on input latency, I recommend reading this post by Pavel Fatin.


Appendix:

The baseline measurement for emulators I used in different systems is using the sword in the original NES Legend of Zelda. To compare the Gamecube, PS2 and N64, I used the same games (mario kart and crash team racing) with the Dolphin, PCSX2 and project64 emulators. I tested many different android NES emulators on a Nexus 4, HTC One m7 and Essential phone. The processing time calculation in android emulators is the time between when the android OS shows a touch (a setting in the developer options) and when the touch is recognized on the touchscreen by the emulator (by highlighting the button).

Originally published on by Matt Ranger