Perfect Audio Video Synchronization

On a fixed refresh rate monitor, you can either run the game at the monitor’s native refresh rate (~60 Hz) with smooth sync/scrolling (RetroArch’s default settings), or you run the game at its native speed with tearing/stuttering (i.e., vsync OFF, audio sync ON; the ‘sync to exact content framerate’ also does this). There’s no other option.

With a variable refresh rate monitor, you can make your monitor sync at the same speed as the game (e.g., 55 Hz) to have smooth sync/scrolling, no tearing/stuttering and the proper speed (also ‘sync to exact content framerate’).

3 Likes

On MAME you have a ‘speed of emulation’ meter that means ‘1’ is 100%, 0.9 90%, etc …

Screenshot_1

What I mean is that if, after the whole sync process from 55 to 60 fps, we lowered the whole playback speed, then we do have the original speed with the updated framerrate.

I’m not seeing how that makes a difference. You can’t trick your monitor into running at 55 Hz. It either does (and you get perfect sync at the right speed) or it doesn’t (and you’ll never get perfect sync at the right speed).

1 Like

MAME has advanced options that allows you to keep the framerate attached to the screen refresh and at the same time reduce the speed of the game to maintain the orginal gameplay speed.

You need to calculate the percentage of speed that you have gained by synchronizing the framerate of the game with the screen refresh, and subtract it in the emlation speed option.

So, is it decoupling the speed of the game/engine from the game’s own vsync interval?? Because that’s the only way I can see that doing anything different, but that seems like it would cause all sorts of mayhem with timing/accuracy. Nevertheless, if that’s the case, it would have to be implemented on the core side, since the frame swap is the shared reference between libretro frontends and backends.

1 Like