What's new in Switchres v0.017p (November 2019)- Updates code since some of the low latency modifications have now been pushed to baseline. There's a new option -lowlatency, enabled by default in GM, that is required by -frame_delay to work.
- (Windows) Dropped modification introduced in v0.017o to reduce input latency in BGFX, because it causes speed issues on Windows 7.
About the new -lowlatency option.MAME now includes the new option -lowlatency (-lolat). This means that some of the modifications that have been part of GroovyMAME's low latency features are now officially included in MAME. The
technical details are explained on MAMEdev's github site.
I'd like to thank Oomek for donating one of his prototype
G.I.L.T devices for these tests that was essential to prove the effectiveness of this feature.
If you own a VRR monitor (either Freesync or G-sync), now official MAME's input latency will be exactly as low as GroovyMAME's, virtually matching original hardware behaviour in many cases. Unlike -frame_delay, -lowlatency has no performance penalty.
This new feature won't change input latency on GroovyMAME at all, compared to previous versions, since it was already included in GM before. You only need to make sure the option -lowlatency is enabled, which is by default in GM's generated ini. But take care to update at least your old mame.ini, because failing to have this option enabled will indeed cause a latency penalty since now this feature is optional, while before it was always on.
In the context of non-VRR monitors, the biggest part of input latency is caused by v-sync. VRR monitors don't need v-sync, so they're free of this problem. For this reason on VRR monitors, -lowlatency is enough to get latency as low as it gets.
On the other hand CRT screens and traditional LCDs require v-sync for acceptable results. The latency that's specific to frame buffering associated to v-sync can't be removed by the -lowlatency option. In order to remove it, in addition to -lowlatency you need to keep using -frame_delay, as usual. Now, the difference now is that unless you have -lowlatency enabled, -frame_delay won't have the desired effect, so please pay attention to your setup if you're upgrading.
In short, for low latency, use the following:
- VRR (Freesync or G-sync): official MAME -lowlatency
- CRT or traditional LCD: GroovyMAME -lowlatency -frame_delay #
For VRR, official MAME is simpler to use. You can achieve the same results on VRR with GroovyMAME too, but you need additional config, like this: GroovyMAME -monitor lcd -lowlatency -noautosync (or -nowaitvsync, notriplebuffer, nosyncrefresh).