Okay guys, I’ve done a lot of testing since I last wrote. I’ve focused on performing a slightly more in-depth comparison of RetroPie on the Raspberry Pi 3 compared to running RetroArch on the PC, to sort of compare to the best case scenario.
First off, the hardware specs:
Core i7-6700K (Skylake)
Radeon R9 390 8GB
Windows 10 64-bit
Dell Latitude E5450
Core i5-5300U (Broadwell)
Integrated HD Graphics 5500
Ubuntu 15.10 64-bit
Monitor (used for all tests): HP Z24i LCD monitor with 1920×1200 resolution. This monitor supposedly has almost no input lag (~1 ms), but I’ve only seen one test and I haven’t been able to verify this myself.
Gamepad (used for all tests): CIRKA USB SNES replica
I tested input lag in NES and SNES emulators and used the following two games:
- Mega Man 2
- Super Mario World 2: Yoshi’s Island
I filmed the monitor and gamepad with a Canon EOS 70D in 1280×720 mode at 60 FPS. I filmed while jumping repeatedly (approximately 30 times for each test) and then analyzed the film clips frame by frame to get the average input lag.
Raspberry Pi 3 + RetroPie 3.6
FCEUmm: 7 frames
Nestopia: 6 frames
snes9x-next: 8 frames
Comments: Nestopia was pretty consistently 1 frame quicker than FCEUmm.
Windows 10 + RetroArch 1.3.2
Nestopia: 7 (often 8) frames
snes9x-next: 9 (often 10) frames
Nestopia: 4 frames
snes9x-next: 6 (often 7) frames
bsnes-mercury-balanced: 6 (often 5) frames
Comments: Xbox Game DVR feature was disabled in Windows’ Xbox application. Having this feature enabled has been reported to add input lag, but I didn’t really investigate it.
Ubuntu 15.10 + RetroArch 1.3.3 in KMS mode
Nestopia: 5 frames
bsnes-mercury-balanced: 7 frames
Comments: video_hard_sync was left off. Enabling it had no effect on performance.
Conclusions: There are a few conclusions we can draw from these tests. First of all, Nestopia was pretty consistently 1 frame quicker than FCEUmm. SNES emulation seems to be approximately 2 frames slower than NES emulation with Nestopia (at least for the tested games). However, testing on Windows suggests that bsnes-mercury-balanced is quicker than snes9x-next. Where snes9x-next is around 2-3 frames slower than Nestopia, bsnes-mercury-balanced is around 1-2 frames slower. Unfortunately bsnes-mercury is not available on RetroPie (and probably wouldn’t run very well due to its higher requirements).
Regarding platform differences: RetroPie is 1-2 frames faster than Windows 10 without video_hard_sync enabled. Once video_hard_sync is enabled, Windows 10 shaves off at least 3 frames of input lag for both NES and SNES emulation, providing the quickest response of all three tested platforms. The biggest surprise is perhaps that running RetroArch in Linux under KMS still doesn’t beat Windows in terms of input lag.
So, to summarize, the final standings are:
1. RetroArch under Windows 10: 4-6 frames (67-100 ms) of input lag
2. RetroArch under Linux KMS: 5-7 frames (83-117 ms) of input lag
3. RetroPie: 6-8 frames (100-133 ms) of input lag
Although Windows is the quickest, I still wouldn’t call it lightning fast, especially not in the SNES case. Adding a couple of frames for the average TV and you’re already at 133 ms input lag. That may be perfectly fine for modern shooters, but it’s not ideal for super-fast platformers. My Samsung plasma TV appears to have around 4 frames of input lag, which combined with RetroPie results in a total of 200 ms for SNES emulation. That is definitely noticeable and makes, for example, Super Mario World a lot harder than it used to be.
One interesting development that may change things slightly for the Raspberry Pi is the ongoing development of a fully open source OpenGL graphics stack. Maybe someone more knowledgeable than me can chime in on that and shed some light on any possible ramifications? Given the fact that a PC running Linux under KMS can’t shave off more than 1 frame of input lag compared to the current version of RetroPie, I’m not overly optimistic.
– There’s of course some uncertainty in the measurements due to recording at just 60 FPS. However, with around 30 attempts for each test, a pretty clear trend could be seen.
– It would have been interesting to test with more NES and SNES games, but I didn’t have time for that.
– I can’t guarantee that the HP Z24i doesn’t add some measurable latency.
– Different display hardware (AMD, Intel, Nvidia) could very well affect the outcome.