hrydgard / ppsspp

A PSP emulator for Android, Windows, Mac and Linux, written in C++. Want to contribute? Join us on Discord at https://discord.gg/5NJB6dD or just send pull requests / issues. For discussion use the forums at forums.ppsspp.org.
https://www.ppsspp.org
Other
10.95k stars 2.13k forks source link

[FR] Sync to host refresh rate to prevent micro-stuttering #15081

Open vanfanel opened 2 years ago

vanfanel commented 2 years ago

What should happen

PPSSPP could have an "sync to host refresh" option that could set the games framerate match the host system refresh rate, thus providing smooth movement.

Currently without this option, games show small hiccups once in a while because of the mismatch between the emulated system framerate and the host refresh rate. (For example, if physical video mode is 60.002 Hz and the emulated PSP is 59.94 FPS, the hiccups appear once in a while even if they are close enough. They must be exactly the same, and the easiest way to do it is force emulation to run at EXACTLY the host's refresh rate).

Other emulators, like DuckStation, already have this feature and it works perfectly well.

Who would this benefit

Everyone who can tell smooth and continuous movement on PPSSPP standalone is not perfect.

Platform (if relevant)

No response

Games this would be useful in

Every game with smooth near-60FPS movement, like Ridge Racers for example.

Other emulators or software with a similar feature

DuckStation, which also has a direct KMS/DRM graphics interface.

Checklist

kristianity77 commented 9 months ago

No. The answer is just use ppsspp inside retroarch instead. This solves the issue.

vanfanel commented 9 months ago

The problem is that it also seems to happens on the RetroArch core: In Ridge Racers, move over to some of the options that show scrolling text on the bottom of the screen, look closely at the scrolling text, and you will see some small hiccups now and then, while this scrolling text movement is always smooth on real hardware.

@hrydgard Is the LibRetro core really syncing with host refresh rate as other cores do? That would mean that the core should run as fast as possible, and sync to whatever RetroArch vsync rate uses.