libretro / FBNeo

FBNeo - We are Team FBNeo.
https://neo-source.com
Other
228 stars 136 forks source link

(Android) Framerate Throttle/Sync to Exact driver framerate core option #979

Closed RaduNastase closed 2 years ago

RaduNastase commented 2 years ago

Hello friends,

So, in Retroarch core, an option to lock/sync the framerate to the 'exact' original game's framerate would be very welcomed.

Why i say that: On a smartphone with a fast 160 hz screen (Rog 3), the Mame core with the core option "framerate throttle" enabled, will sync beautifully and smoothly to the game's exact framerate (ex. Street Fighther Zero 3 will run at native 59.6 fps). Even though the phone's screen is not GSync (as far as i know), games sync smoothly, without frame issues to their nayive framerates (even Esprade @ 57.5 fps) in Mame.

However, in FBNeo, even with Retroarch's Sync to Exact content enabled, the sync is not smooth in comparison to Mame's. I'm guessing Retroarch's sync method is a bit lacking compared to Mame.

So, could a core option similar to that in mame, be a solution?

barbudreadmon commented 2 years ago

Retroarch's Sync to Exact content enabled

That's the correct way to handle that, please report any issue with this feature to the retroarch repository instead. I'm not into implementing workarounds for frontend bugs. Especially framerate throttle core side, it should be banned since it's gonna break tons of retroarch features (not really unexpected from the mame core which is poorly libretroized).

RaduNastase commented 2 years ago

Got it!

As an on/off option however, it would definitelly help in these configurations of high speed displays. It is literally a game breaking issue right now, as the core is pretty much unusable in 160 hz.

barbudreadmon commented 2 years ago

I'd rather not, one of the main concept of the libretro api is that the retro_run call must run a frame unrestrained, that "framerate throttle" is preventing that. Again, i'm not into implementing workarounds for frontend bugs, especially those that are literally breaking the libretro implementation and will cause more issues than they solve.

RaduNastase commented 2 years ago

Thank you for your detailed answer!