Back
FPSLocker
by masagrator
|
Version | 2.1.6 |
Zip size | 486 KiB |
License | MIT |
Updated | 30/05/2025 |
Downloads | 78,613 |
MD5 | 04f000b7a63d352b67fb85ec31f051ff |
App Details
An overlay that with companion SaltyNX plugin NX-FPS allows to set custom 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:
* Atmosphere CFW
* My fork of SaltyNX, version 0.5.1+
* NX-FPS 1.1+
* Tesla environment: ovlloader + Tesla Menu
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:
Interval Mode - it's used by NVN API to set limiter to either 30 FPS (2) or 60 FPS (1 or 0 (0 means that game never bothered to set it, it can be also a sign that game is not utilizing NVN but EGL or Vulkan))
Custom FPS Target - it's used to lock game to certain FPS. If game is using engine proprietary FPS locks, it may not be able to unlock more than 30 FPS without additional patches.
Big number on the right - it shows how many frames have passed in last second for currently running game. This is to confirm that lock is working as expected.
Increase/Decrease FPS target - Change FPS Target by 5. Minimum is 15 FPS, max is 60 FPS. If FPS is set above 30 FPS, it sets interval mode to 1. Otherwise it sets interval to 2.
Disable custom FPS target - Removes FPS Target. Since we cannot predict what interval mode is expected at this point, it is in user's discretion to manipulate FPS to bring back correct interval before disabling FPS target.
Advanced settings - submenu which consists of:
Sync Wait - this is dangerous setting that disabled in most cases will crash game (for example Witcher 3 and Breath of The Wild), but in some can bring benefit of disabling double buffer at the cost of small graphical glitches (for example Xenoblade Chronicles 3). Use it with caution.
Convert config to patch file - if proper config file exists for this game and version, you will get an option to convert it to patch file that will be loaded when you will run this game next time. Patch is saved to SaltySD/plugins/FPSLocker/patches/*titleid_uppercase*/*buildid_uppercase*.bin
Delete patch file - if proper config file exists for this game and version, you will get an option to delete patch file so it won't be loaded when you will run this game next time.
Save settings - save profile for currently running game that will be loaded next time by plugin on boot automatically. Don't use it if you disabled Sync Wait and you didn't test it properly that it won't cause crash. Profile is saved in SaltySD/plugins/FPSLocker/*titleid_uppercase*.dat
* When game is not running:
It will list installed games (max 32) and as first option it's available "All" submenu.
Inside each one you will find two options:
Delete settings - it will delete file created by "Save settings" option
Delete patches - it will delete file created by "Convert config to patch file" option
Thanks to ~WerWolv for creating Tesla environment, and ~cucholix + ~Monked for tests.
Changelog
2.1.6
Fix an issue with some capture cards triggering segfault when trying to access Docked settings because they store VIC index 0 which is invalid (f.e. NZXT Signal HD60, EVGA XR1 Lite)
2.1.5
Store Docked settings in ini file instead of EDID dump (this is a needed step to introduce proper docked display overclocking in future)
Use SaltyNX 1.2.6+ for proper support
Print your display's config name in Docked settings
For people that would want to know which config is which when exploring files, I added key "tvName", its value can be edited and it will be maintained. Don't use spaces, those will be removed next time you change settings
2.1.4
Improve "Reported max refresh rate" readings in Docked display settings.
2.1.3
Add "Halt unfocused game" in Advanced Settings (to work properly it requires SaltyNX 1.2.5+).
Some games are not suspended when your Switch is in Home Menu (for example Tales of Graces f). Enabling this option moves thread responsible for pushing frames to display into infinite loop when you are in Home Menu. Enabling this option can cause various issues depending on game, so be sure to not use it frivolously.
2.1.2
Add support for changing amount of buffers in Vulkan games (requires SaltyNX 1.2.3+)Fix an issue where at unstable internet connection checking Warehouse for info about patch takes 20-30 seconds instead of few seconds.
2.1.1
Add support for SaltyNX 1.2.1+
Added support for converting configs to new type of patches currently supported by SaltyNX. You must convert every config again to be compatible with SaltyNX 1.2.1 and newer. That's to futureproof support for OCing displays to 60+ Hz.
Now disabling "Allow patches to force 60Hz" in Docked Settings -> Additional settings also disables 4 second delay before cutscenes when playing in docked mode with patch that has such thing available, f.e. Yakuza and Xenoblade Chronicles 2, 3, X.