Is there any way to LOCK the refresh rate?

Hy guys,

Recently, i bought a new phone (Rog3) and i have a significant issue with it.

The 60 hz screen is actually 59.3 hz, as displayhz.com shows. I had no clue this was the case, this info does not exist anywhere.

Problem is, whatever i do, i can not get the 60 fps games run smoothly in Retroarch. I manually set the Vertical refresh rate to 59.3, but Retroarch tends to go to 60 every few seconds, and while it runs perfectly smooth as long as the framerate shows 59.3, it stutters quite noticeably when it jumps to 59, 60ā€¦

I tried various combinations, with and without Audio Sync, vulkan, GL, no solution. The value of 59.3 doesnā€™t stick for long. Iā€™ve mainly run Mame and FBneo cores.

I also tried the other display values of the phone (90, 120, 144) hz, together with Sync to exact content framerate in Retroarch, but every time thereā€™s some sort of stuttering more or less.

The smoothest experience, similar to my OnePlus7 (60.02 hz screen refresh) is when the Vertical refresh sticks to 59.3.

What can i do guys? Itā€™s really a deal breaker for me, so iā€™m gonna try to sell the phone, but maybe, maybe thereā€™s a solution.

Thanks so much!

RetroArch shouldnā€™t have any particular affinity for 60 Hz over 59.3 or whatever. It should try to sync to your monitor refresh rate as long as vsync is enabled. You could try disabling threaded video, which is on by default on Android. You may also have luck disabling audio sync and setting the max run speed (in ā€˜frame throttleā€™ menu) to 1x.

1 Like

Thank you hunter, you are always so fast in giving valuable advices. Tried all these already though. I will investigate further these days and return with more thoughts on the matter.

1 Like

Ok, so iā€™ve been testing so many different ways of achieving the best sync possible on this phone, that my head is spinning :woozy_face:

So there are 2 ways of getting smooth video (and audio) on the 59.3 hz screen. And thereā€™s also an oddity that maybe someone knowledgeable could cear up?

60 hz mode: Set the phone screen to 60 hz, do NOT add Retroarch to Armoury Crate (Game Mode), set Vsync manually to 59.3 hz in Retroarch, disable Audio Sync. This way you get good, constant sync to 59.3 hz, but you donā€™t benefit from the ultra fast response of 160 hz or the maximum level of CPU/GPU performance that Armory Crate offers.

160 hz mode: Add Retroarch to Armoury Crate, set 160 hz display and both max. performance and max. touch speeds. In Retroarch, disable Vsync and Audio sync, but ā€œenableā€ Sync to Exact content (also if the core has it, enable Framerate Throttling, which is also a Sync to Content option). This way you get sync to the exact content, which is either constant 60 fps (cv1000 shmups) or 59.6 (cps1 and 2) or even 57.5 (Cave 1st gen shmups like Esprade).

The smoothness achieved in 160 hz is slightly different from the one in 60 hz, with a slight debluring effect, noticeable when carefully observing a fast scrolling element. But it is constantly smooth, with no gaps or micro stutters and this is where iā€™m a little surprised, so question 1:

How can it sync to 57.5 fps content smoothly, both video and audio, when the screen of Rog 3 is not G-Sync as far as i know?

And question 2:

Is there maybe a motion shader that can mitigate the de-bluring effect of the 160 hz mode? I use response-time to add a little blur, it works great, but maybe thereā€™s an even better solution to simulate that 60 hz 1:1 motion, when in 160 hz.

I need to underline yet again how amazing and powerful Retroarchā€™s sync tools are to be able to achieve these results :hugs: No other emulator can sync to 59.3 hz (neither Dolphin, Citra or Aether) the way Retroarch does (ppsspp is the only one that can actually).

1 Like

@RaduNastase

To get perfect sync, I would switch to 120Hz (because itā€™s 60*2), then set:

Settings->Video->Synchronization->VSync Swap Interval: 2 Settings->Video->Synchronization->Sync to Exact Content FPS: OFF Settings->Audio->Synchronization->Maximum Timing Skew: 0.50

This will speed up 57.5FPS to an FPS that is equal to display HZ / swapint. So for Hz = 120 and vsync swap interval 2, it will speed up the game to 60FPS. With perfect sync.

So basically swap interval allows you to use higher Hz to ges less input lag, but still do perfect sync as if the display was running at 60Hz. Obviously your display Hz needs to be a multiple of the target Hz you want to sync to. So for 60Hz perfect sync, you can set the display to 120Hz with swap interval 2, 180Hz with swap interval 3, 240Hz with swap interval 4, etc. Since your display maxes out at 160Hz and doesnā€™t do 180, you have to use 120Hz with swap int 2.

Note that ā€œMaximum Timing Skewā€ is a percentage. 0.50 means 50%, so it will even speed up 30FPS to 60 in this case. So you should probably set it a bit lower. Maybe 0.20. Up to you to decide what the cut off point should be where RA will not speed up games to sync to your display.

1 Like

Thanks so much for you answer man!

What you say should definitely work in theory, and it was among the first things i tried. It was with this thought of using 120hz and swap interval 2 that i bought the phone.

In practice however, at least in my phoneā€™s case, the results were absolutelly horrible. The framepacing is all over the place in 120 hz, and the swap interval does nothing while in-game (though curiously, it does half the framerate while in Retroarch menus). Letā€™s not lose sight of the fact that my screen in NOT 60 hz, but 59.3 hz. However, as i said, setting Retroarch to run in 160 hz (via Game Mode) and enabling Exact Content in Retroarch, actually works smooth with a variety of internal framerates, which, again, is a bit baffling to me as to why it actually worksā€¦?! Also in this case, i donā€™t need to touch the Timing Skew values, it syncs the audio perfectly.

The timing skew not only syncs audio, but also video to the display in case FPS and Hz mismatch is too large.

1 Like

Oh, this is didnā€™t know. I thought it was an audio only feature.

Ok, so more testing with the 120 hz screen and Swap interval set to 2 (Sync to exact content disabled) cleared up the unknowns in my initial unsatisfactory results. It definitely works, but it seems that, in order to keep the speed up with 120 hz and Swap 2, i need to have at least 120 fps in the respective game. The moment the game goes to ā€¦say 100 fps or 80, the resulting framerate is an obviously choppy 50 fps, 40 fps, etc. I was under the impression that the game needs to be able to stay above 60, not 120ā€¦

The phone is decently powerful, but nowhere near powerful enough to play the respective games at >120 fps, nevermind adding a shader or two.

What games? Emulators usually run at 60FPS.

No, you missunderstand me :relaxed: The games i play are the usual arcade games in mame/fbneo (fighters, shmups, brawlers), they run at ~ 60. But in order to run them at 120 hz with Swap Interval 2, it seems i have to be able to run them at more than 120 fps (unthrottled).