masagrator / FPSLocker

Set custom FPS in Nintendo Switch games
MIT License
240 stars 14 forks source link

FPSLocker

An overlay that with SaltyNX allows to set custom display refresh rate and FPS in Nintendo Switch retail games.

Disclaimer: Tool is utilizing detection of graphics API to manipulate FPS and in special cases it requires using patches made per game for each version to get more than 30 FPS. You can find those patches HERE
Max supported yaml size is 32kB, though it can be expanded in next updates.

Requirements

How to setup everything: HERE

Usage

Overlay runs in two modes:

When game is running

If game is supported by SaltyNX and you installed everything correctly, you will see menu where first line states NX-FPS plugin is running. Explanation of each line:

When game is not running

You will have two submenus to choose from (if you are using OLED model, you will be redirected automatically to Games list):

Information about changing refresh rates

I want to use this space to clarify few things.

OLED screens were getting often issues with green tint and ghosting below 60 Hz. 45 Hz works for some people properly only above certain brightness. I have decided to block OLED model completely until somebody will find more reliable way to change refresh rate for those displays.

From all reports I got, only one LCD screen was getting issue with small flickering in left bottom corner when running at 40 Hz (they were using InnoLux P062CCA-AZ2, but there were other users who also got this display and had no issues at 40 Hz - me included). No other issues were found.

I have decided to limit down to 40 Hz since lower refresh rates not only were not beneficial to user, also this allows avoid certain risks with underclocking display too much.

LCD can be overclocked up to 70 Hz without immediately visible issues but I have leaved max at 60 Hz since I have decided that there are no visible benefits running display at 70 Hz which would justify tinkering with existing patches to patch games breaking above 60 FPS. From 75 Hz all users were reporting issues with glitchy image. OLED above 65 Hz was freezing and only way to got it back working again was lowering refresh rate to 65 Hz and lower.

This works only for builtin display, you cannot change refresh rate in docked mode. If Display Sync is turned off, custom refresh rate is not restored after sleep mode.

Changing refresh rate affects animations speed of OS and Tesla overlays, making them more sluggigsh at lower refresh rates.

Adding support for custom display refresh rate required changing how game configs are written, so you are advised to redownload all FPSLocker Warehouse configs if you want them to properly support custom refresh rates.

I am not taking any responsibility for damages occuring from changing refresh rate. Each time you will go to Display settings, you will be welcomed by prompt with warning that you - user - are taking full responsibility. You must choose Accept to go further.

Thanks

Thanks to ~WerWolv for creating Tesla environment, and ~cucholix + ~Monked for tests.

Sync Wait

In those games you can disable double buffer vsync by turning off Window Sync Wait in FPSLocker: