Yeah, I built one last year and I've been put off by the input lag. I tried RetroPie and Lakka (which is basically RetroArch-as-a-shell) and neither one of them gave me that instantaneous feeling, even when plugged into my PC monitor. Emulators on a proper PC or an OG Xbox are the only things that have come close. I have some jumps in different Mario and Sonic games forever burned into my brain. I can make them on a real console or on the Xbox. I can't make them on a RetroPie - I fall off the edge.
So I mean, it's fine, but it's not a plug-and-play thing and it's not well-suited to action games. If you want to play some Final Fantasy it's sufficient, though. People don't put up with latency in their PC gaming. There's no reason they should put up with it in a small retro box, either.
Earlier this year I grabbed the newer, higher-clocked Pi 3B+, and an outstanding 5/5 case
(has an on/off switch, reset button, breakout board for front USB ports, heatsinks included, and very high build-quality). As professional procrastinators do, I sat on the hardware for a while, and finally got off my butt this past week......just a few months shy of 2 years after posting about it in this thread, and just in time for them to release a vastly superior Pi 4.
That's only mildly annoying though, as my main interest is limited to 8 and 16-bit gaming consoles, which the Pi3 seems to handle fine when correctly configured. Like any proper encounter with Linux, RetroPie 4.4 doesn't work well out of the box, and doesn't give any obvious indication as to where the problem (input lag) lies. You would think that emulating a handful of very well known 30+ year old machines on a single, ubiquitous unchanging system (Pi 4 doesn't come into play yet), and running the most common type of display/resolution by far and wide (1080p) would be the perfect scenario for something to "just work" in its default out-of-the-box config. Apparently not.
Anyhow, after several hours of jacking around (testing on a known-fast TN monitor first, then transferring to the TV), the most important thing appears to be resolution, particularly "rendering resolution"
(the res the emulator is running under the hood before it outputs to display). The default for all emulators seems to be to "render at the current display setting", which in this case is 1080p, and is excessive to the extreme. The NES for example, runs native at 256x240, and if it was default-rendering at 1080p (I'm pretty sure it was) then that's something like 34x the number of pixels for zero benefit. Choosing something much lower which is evenly divisible by the native res (say 640x480 or 800x600) yields tremendous improvement. It goes from unplayable to quite decent.
My experience with wireless controllers (8Bitdo in this case) is that you don't want to use the baked-in Bluetooth chip on the Pi3. A separate bluetooth receiver via USB performs substantially better, both in regards to lag, and ease of paring/configuring. A wired controller might be a tiny amount better, but felt lag using a separate receiver is minimal to imperceptible, and probably low enough to be concealed within the envelope of the display's input lag.
Output resolution also seems to matter, though to a lesser degree, and somewhat harder to measure by eye, except when you get two which are completely incompatible. I've been running the "DMT" version of 1280x720p @60hz with good results, as this is a resolution my TV can recognize, and also fits any rendering choice I might want to use. "DMT" is supposedly geared more towards monitors, and seems a touch faster (CEA is supposed to be more for consumer TVs, but mine handles both). There's also a myriad of other settings, VSync being notable among them, as it's Enabled by default, and a setting which is known to universally cause input lag on any system. Unfortunately, disabling it causes horrific tearing, so I guess it'll need to be tweaked to run as best as possible.
And on that note......does anyone know of a quick and dirty method for measuring input lag?? Perhaps slow-motion video on an iPhone? I'm not looking for professional accuracy, but some method of quantifying it rather than just seat-of-the-pants.