• Stars
    star
    201
  • Rank 194,491 (Top 4 %)
  • Language
    C++
  • License
    MIT License
  • Created over 1 year ago
  • Updated 5 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Set custom FPS in Nintendo Switch games

FPSLocker

An overlay that with SaltyNX 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

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:

  • Interval Mode - it's used by NVN API to set limiter to either 30 FPS (2) or 60 FPS (1).
  • 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:
    • If game is using NVN
      • Window Sync Wait - this is dangerous setting that disabled can crash game, but in some can bring benefit of disabling double buffer vsync at the cost of small graphical glitches (check list of games compatible with this solution at the bottom of README). Use it with caution. It won't show if game is not using double buffer.
      • Set Buffering - if game is using any other buffering than double, this option will show that will allow you to force game to run at any other buffering that is not higher than original one (so f.e. you cannot change double buffer to triple buffer). Lowering buffer is recommended only for games that have near perfect performance at 30 or 60 FPS, but suffer from bad framepacing or big input lag. If you will force double buffer in games with uneven performance, FPS drops will be very severe. It can be applied only at boot of game, so after changing buffering you must save settings in FPSLocker and restart game.
        Explanation of Set/Active/Available Buffers:
        • Set - how many buffers were set by using nvnWindowSetNumActiveTextures. If game is not using it, it will be 0. It can be used by games to set lower buffer value than reserved space allows. If this is detected to be used and lower than Available Buffers, you can use "(force)" variant next to default option. Without (force) it will reset to default settings.
        • Active - How many buffers are actually used by game.
        • Available - How many buffers is actually provided to NVN. We can use this information to force games to utilize all buffers when they are not doing it.
    • 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.
    • Check/download config file - Checks in Warehouse repository if config for this game and version exists. If exists, it is downloaded and also checked if it's the same as the one on sdcard. If it's not, overlay will remove existing patch and config file, and user must manually convert new config to patch file. If config doesn't exist in repository for this game and version, you should get Err 404. 0x312 error means we got unexpected file from github. Any other error means that something is happening with your connection or github server.
  • 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

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:

  • Batman - The Telltale Series (Warehouse patch enables triple buffer, so there is no need to use this option)
  • Pokemon Legends: Arceus
  • Pokemon Scarlet
  • Pokemon Violet
  • Sonic Frontier
  • The Legend of Zelda: Tears of the Kingdom
  • Xenoblade Chronicles: Definitive Edition
  • Xenoblade Chronicles 2
  • Xenoblade Chronicles 3

More Repositories

1

Status-Monitor-Overlay

Monitor many stats of Nintendo Switch hardware
C++
482
star
2

NXGraphicsPatches

Graphics Patches for Nintendo Switch games
338
star
3

ReverseNX-RT

Alternative version of ReverseNX that can switch between handheld and docked mode in Real Time.
C
202
star
4

NX-FPS

SaltyNX Plugin collecting FPS data
C
180
star
5

ReverseNX-Tool

Tool for easier management of ReverseNX patches
C++
151
star
6

FPSLocker-Warehouse

FPSLocker patches and methodology how to update them
Python
140
star
7

ReverseNX

SaltyNX plugin forcing docked or handheld graphics settings
C
80
star
8

HigurashiENX

Higurashi no Naku Koro ni English Translation Mod for Nintendo Switch
Python
55
star
9

NXGameScripts

Various scripts dedicated to Nintendo Switch games
Python
39
star
10

SaltyNX-Tool

To manage SaltyNX functions
Makefile
36
star
11

Xenoblade2DynFPS

Plugin adjusting dynamically game speed to framerate
C++
25
star
12

PortalNXSideLoader

Portal Collection File Sideloader for Nintendo Switch
C
22
star
13

UnityGraphics

SaltyNX plugin & Tesla overlay dedicated to changing graphics settings in Unity games
C
15
star
14

ToCS1-ENX

English Translation Mod for The Legend of Heroes: Trails of Cold Steel Kai Nintendo Switch version
C++
12
star
15

AIR-ENX

English Translation Mod for Air Nintendo Switch version
C
11
star
16

MonHunRiseResPlugin

Skyline plugin for Monster Hunter Rise to override resolution
C
10
star
17

ToCS2-ENX

English Translation Mod for The Legend of Heroes: Trails of Cold Steel 2 Kai Nintendo Switch version
C++
9
star
18

SPRB-ENX

Summer Pockets Reflection Blue English translation mod for Nintendo Switch
C
8
star
19

UE4cfgdumper

Tool that finds automatically RAM offsets for graphics settings in Unreal Engine 4 & 5 Nintendo Switch games
C++
7
star
20

UnityGraphicsWarehouse

Storage for offsets files
6
star
21

SymphonicRain-ENX

English translation mod for Nintendo Switch version of Symphonic Rain
Python
4
star
22

HigurashiENX-texts

2
star
23

NVNpointersLabels

Files for ghidra to name all nvn pointers for games
Python
2
star
24

AIR-texts

2
star
25

BatteryChargeInfoNX

Test overlay to RE BatteryChargeInfoFields struct
C++
2
star
26

Yahari

C++
2
star
27

NX-FidDb

FunctionID database of Nintendo Switch executables to use with Ghidra
2
star
28

UnrealOodleWrapper

Visual Studio Project linking Unreal Oodle plugin with command tool
C++
2
star
29

DiesIraeNXEN

1
star
30

LANoireNX

LA Noire scripts used for repacking files from Switch version
Roff
1
star
31

HigurashiENX-OyashiroShock

C++
1
star
32

UE4CMDNX

Use commands in Unreal Engine 4 games for Nintendo Switch
C
1
star
33

NXResolutionDB

Resolution used in games
C
1
star
34

DiesIraeScenario

Nintendo Switch
MAXScript
1
star
35

ToCS3Configurator

C++
1
star
36

FLiNSGM

Force Language in Nintendo Switch Games Methodology repo
1
star
37

HigurashiENX-images

1
star
38

GetNetworkPass

Simple app to get password from connected network on Nintendo Switch
Makefile
1
star
39

ShinPlugin

C++
1
star
40

SaltyNX-Patches

Some useful asm64 patches for SaltyNX
1
star