Homebrew  Updated

FPSLocker - set custom FPS target in retail games

An overlay that with SaltyNX 0.7.0+ allows to set custom FPS in Nintendo Switch retail games.

Disclaimer: Tool is utilizing detection of graphics API to manipulate FPS. It supports special patches that are helping with going above 30 FPS in games using proprietary FPS locks.

You can see here how it works (I was utilizing Witcher 3 dynamic resolution config mod to make anything above 30 FPS available):


More in README (I recommend to read it + also SaltyNX readme if you don't know how it works)
Repo: https://github.com/masagrator/FPSLocker
Releases: https://github.com/masagrator/FPSLocker/releases
Patches: https://github.com/masagrator/FPSLocker-Warehouse
 
Last edited by masagrator,

meha

Well-Known Member
Member
Joined
Feb 12, 2023
Messages
216
Trophies
0
Age
29
XP
854
Country
Korea, South
Hello.
Would this work on online games like Overwatch, Fortnite, etc? (which i doubt)
and if it does work, any possibility of ban?
 
  • Like
Reactions: cloud-strife777

masagrator

The patches guy
OP
Developer
Joined
Oct 14, 2018
Messages
6,268
Trophies
3
XP
12,036
Country
Poland
Hello.
Would this work on online games like Overwatch, Fortnite, etc? (which i doubt)
and if it does work, any possibility of ban?
I have confirmation it works in Fortnite, but you won't get performance improvements because of no dynamic resolution patch. Though I am not encouraging in using this in online games as it can be easily detected by any game that checks for mappings.
 

meha

Well-Known Member
Member
Joined
Feb 12, 2023
Messages
216
Trophies
0
Age
29
XP
854
Country
Korea, South
I have confirmation it works in Fortnite, but you won't get performance improvements because of no dynamic resolution patch. Though I am not encouraging in using this in online games as it can be easily detected by any game that checks for mappings.
ok thanks for the answer
 
1.1.3

masagrator

The patches guy
OP
Developer
Joined
Oct 14, 2018
Messages
6,268
Trophies
3
XP
12,036
Country
Poland
Updated NX-FPS to version 1.3 which fixes issue with changing interval in games using EGL.
And beside that I have added proper API detection to plugin, so with that I have updated FPSLocker to version 1.1.3 to properly support EGL and now it shows which API is used by game in Advanced Settings.

Plus now Warehouse consists of 22 patches and 54 games listed.
 
Last edited by masagrator,

masagrator

The patches guy
OP
Developer
Joined
Oct 14, 2018
Messages
6,268
Trophies
3
XP
12,036
Country
Poland
Since I am going back to work soon, small update.

As of now Warehouse consists of 330 listed games, from which:
- 126 can set FPS above 30 without any patch needed
- 131 patches for games to fix bugs and/or improve performance.

While doing those patches sometimes it was not possible to implement it as FPSLocker patch, so I have decided to do for few games 60 FPS cheats and put HERE:
- all Crysis games (true 60 FPS available with tweaked dynamic resolution)
- Dying Light (with tweaked dynamic resolution)
- Othercide (with tweaked dynamic resolution)

Most of my patches not only are allowing to set FPS above 30, but also they tweak dynamic resolution to match FPS target.
Many of those patches you won't find anywhere in cheat form in 60 FPS known by me cheat databases or they have some exclusive features (excluding dynamic resolution tweaks as I would need to put almost all of my patches on this list), listed below:
Code:
"for newest version of game" = available 60 FPS cheats are not done for newest versions of game

- A Hat In Time
- Abzu
- Advance Wars 1+2: Re-Boot Camp
- Ancestors Legacy (accompanying mod disables double buffer)
- Batora: Lost Haven
- Bassmaster Fishing 2022
- Bioshock
- Bioshock Infinite
- Blair Witch
- Bloodstained: Ritual of the Night (accompanying mod disables double buffer)
- Bravely Default II
- CRISIS CORE -FINAL FANTASY VII- REUNION (for newest version of game)
- Demon Slayer -Kimetsu no Yaiba- (disables custom flag that was tying backbuffer game speed to framerate)
- Destiny Connect: Tick-Tock Travelers
- Disco Elysium - The Final Cut (for newest version of game)
- Disney Dreamlight Valley (for newest version of game)
- DOOM
- DOOM Eternal
- DRAGON BALL Z: KARAKOR + A NEW POWER AWAKENS SET (cutscenes speed is not tied to framerate anymore)
- DRAGON QUEST TREASURES (game speed is not tied to framerate anymore)
- Dusk Diver & Dusk Diver 2 (game speed is not tied to framerate anymore)
- Everspace
- Fishing: North Atlantic
- Gigantosaurus The Game
- Grand Theft Auto: The Trilogy - The Definitive Edition (for newest version of game)
- It Takes Two (accompanying mod disables double buffer)
- L.A. Noire (slightly broken car physics and two minigames, but it's perfectly finishable)
- Life is Strange 2
- Little Nightmares II
- Maglam Lord (unties game speed from framerate, enemy movement speed is broken)
- Metro Redux Collection
- Monster Hunter Rise (for newest version of game)
- Monster Jam Steel Titans 2
- Monster Truck Championship
- Mythic Ocean (unties game speed from framerate)
- Need for Speed Hot Pursuit Remastered (it doesn't need any exefs patch to work)
- Redemption Reapers (unties game speed from framerate, available for newest version of game)
- Redout 2 (available for newest version of game)
- RiMS Racing
- Ruiner
- SENRAN KAGURA Peach Ball
- Sherlock Holmes The Awakened
- SINNER: Sacrifice for Redemption (unties game speed from framerate)
- Spyro Reignited Trilogy (unties game speed from framerate)
- SWORD ART ONLINE: FATAL BULLET
- The Caligula Effect: Overdose
- The Caligula Effect 2
- The Stretchers
- Trek to Yomi (available for newest version of game)
- TT Isle of Man
- TT Isle of Man 2
- What Remains of Edith Finch
- Wolfenstein: Youngblood
- Wolfenstein II: The New Colossus
- WRC8
- WRC9
- WRC10 (available for newest version of game)
- WRC Generations (available for newest version of game)
- Xenoblade Chronicles 3 (available for newest version of game)
- 英雄伝説 閃の軌跡I:改 -Thors Military Academy 1204-
- 英雄伝説 閃の軌跡II:改 -The Erebonian Civil War-
Learned new things last two weeks about different engines. And from now on updates will slow down.

Found out that some games are creating fake double buffers - like most Telltale games (They work perfectly fine between 30 and 60, but when game cannot maintain frame rendering time below 16.6ms, they are artificially locked to 30. Only first batman has true double buffer, and Tales from the Borderlands has this lock completely removed). I would try to figure out how to remove them.
 
Last edited by masagrator,
1.1.4

masagrator

The patches guy
OP
Developer
Joined
Oct 14, 2018
Messages
6,268
Trophies
3
XP
12,036
Country
Poland
Released version 1.1.4.

It can show in advanced settings "Buffered Frames" for NVN from which we can deduce if game is using double buffering or triple buffering (or quadruple buffering since NVN technically supports that though I don't know if any game uses that).

"Buffered frames: 2" == Double buffer

Because game must allocate first enough memory to fit those buffers and fill this buffer with needed data, it cannot be used to disable double buffer without exefs patch. So it's just a simple information. (Though changing triple buffering to double buffering is pretty easy as we have already big enough buffer to use)

NX-FPS 1.4.1+ is required for this info to show.

Examples:
Xenoblade Chronicles 3 (using double buffer)
2023050608591800.jpg

Crisis Core (using triple buffer)
2023050609002100.jpg
 
Last edited by masagrator,
1.2.0

masagrator

The patches guy
OP
Developer
Joined
Oct 14, 2018
Messages
6,268
Trophies
3
XP
12,036
Country
Poland
Released new FPSLocker 1.2.0, NX-FPS 1.5.0 and SaltyNX 0.6.0.

SaltyNX now takes 45% less RAM than previously, going below 1MB. Plus because of new Atmosphere way to deal with romfs cache I have added support for flag `R` that will stop injecting SaltyNX if game has romfs mod. For now there is no need to use it, but Tears of the Kingdom is pretty close.

NX-FPS now:
- supports patching executable before game is booted
- now it properly detects nvnSync responsible for syncing with double buffer vsync, so now more games using double buffer can be desynced without crashing game - like The Legend of Zelda: Tears of the Kingdom.

FPSLocker:
- Supports converting new entry "MASTER_WRITE" which is responsible for patching executable before game is booted
- Renamed "Sync Wait" into "Window Sync Wait" and now it won't show if game is not using double buffer.
- Now if game config that can be converted to patch is not available, instead of error code overlay will print Game config file not found

This is what happens if you will disable Window Sync Wait in NX-FPS with enabled Dynamic FPS cheat in ToTK:


Result is that game no more jumps between stable 30 and stable 60. Because of desyncing with buffer expect graphical glitches in vicinity of 60 FPS, but it can be solved by limiting FPS with FPSLocker to something below 60 FPS.
 
Last edited by masagrator,

hippy dave

BBMB
Member
Joined
Apr 30, 2012
Messages
9,868
Trophies
2
XP
29,071
Country
United Kingdom
SaltyNX now takes 45% less RAM than previously, going below 1MB.
Nice update, thanks. I found with previous SaltyNX that my Switch would lock up if I tried to open the homebrew menu through the album while a game was running (specifically BOTW, was trying to load BOTW Unexplored homebrew), worked fine with SaltyNX disabled. Was this likely to be a memory issue and might this update fix it?
I actually just uninstalled BOTW to make room for TOTK, but now and again a need to open homebrew while a game is running comes up.
 

Chrisssj2

Well-Known Member
Member
Joined
Feb 12, 2008
Messages
2,704
Trophies
1
XP
4,383
Country
Netherlands
Released new FPSLocker 1.2.0, NX-FPS 1.5.0 and SaltyNX 0.6.0.

SaltyNX now takes 45% less RAM than previously, going below 1MB. Plus because of new Atmosphere way to deal with romfs cache I have added support for flag `R` that will stop injecting SaltyNX if game has romfs mod. For now there is no need to use it, but Tears of the Kingdom is pretty close.

NX-FPS now:
- supports patching executable before game is booted
- now it properly detects nvnSync responsible for syncing with double buffer vsync, so now more games using double buffer can be desynced without crashing game - like The Legend of Zelda: Tears of the Kingdom.

FPSLocker:
- Supports converting new entry "MASTER_WRITE" which is responsible for patching executable before game is booted
- Renamed "Sync Wait" into "Window Sync Wait" and now it won't show if game is not using double buffer.
- Now if game config that can be converted to patch is not available, instead of error code overlay will print Game config file not found

This is what happens if you will disable Window Sync Wait in NX-FPS with enabled Dynamic FPS cheat in ToTK:


Result is that game no more jumps between stable 30 and stable 60. Because of desyncing with buffer expect graphical glitches in vicinity of 60 FPS, but it can be solved by limiting FPS with FPSLocker to something below 60 FPS.

"if you will disable Window Sync Wait in NX-FPS" Does this mean that it is something you need to do yourself or it is like this by default with the new version? i use the dynamic fps cheat with the 60 fps on my physical switch and i notice that stable 30 and stable 60 thing. Cant wait to try this out!
 

Chrisssj2

Well-Known Member
Member
Joined
Feb 12, 2008
Messages
2,704
Trophies
1
XP
4,383
Country
Netherlands
I don't force it since it is still possible that some games will crash. User must change it themself.
How can you do it yourself? Also you say " so now more games using double buffer can be desynced without crashing game - like The Legend of Zelda: Tears of the Kingdom."
Tears of the kingdom was crashing with something? Can you explain? do you mean atmosphere crash or software has closed crash? Zelda was crashing sometimes? how and how often?
 

masagrator

The patches guy
OP
Developer
Joined
Oct 14, 2018
Messages
6,268
Trophies
3
XP
12,036
Country
Poland
How can you do it yourself? Also you say " so now more games using double buffer can be desynced without crashing game - like The Legend of Zelda: Tears of the Kingdom."
Tears of the kingdom was crashing with something? Can you explain? do you mean atmosphere crash or software has closed crash? Zelda was crashing sometimes? how and how often?
Turn off "Window Sync Wait" in FPSLocker? :ph34r:

For example XC3 was using nvnSyncWait only to wait for info when to push frame. ToTK is using this to also make sure that all GPU commands have been done before continuing doing other stuff. Timeouting those waits for GPU to finish job obviously will result in bugs and result in crash - software crash. And before update it was always immediately after turning off Sync Wait that ToTK stopped working.
 

Chrisssj2

Well-Known Member
Member
Joined
Feb 12, 2008
Messages
2,704
Trophies
1
XP
4,383
Country
Netherlands
Turn off "Window Sync Wait" in FPSLocker? :ph34r:

For example XC3 was using nvnSyncWait only to wait for info when to push frame. ToTK is using this to also make sure that all GPU commands have been done before continuing doing other stuff. Timeouting those waits for GPU to finish job obviously will result in bugs and result in crash - software crash. And before update it was always immediately after turning off Sync Wait that ToTK stopped working.
I just tried this! and it no longer goes to 30 fps lock stable.. however at the edges of the screen and in the middle of the screen when you open the map there is this weird "line" that messes up the flow of the screen... Nothing you can do about this?
 

masagrator

The patches guy
OP
Developer
Joined
Oct 14, 2018
Messages
6,268
Trophies
3
XP
12,036
Country
Poland
I just tried this! and it no longer goes to 30 fps lock stable.. however at the edges of the screen and in the middle of the screen when you open the map there is this weird "line" that messes up the flow of the screen... Nothing you can do about this?
Because of desyncing with buffer expect graphical glitches in vicinity of 60 FPS, but it can be solved by limiting FPS with FPSLocker to something below 60 FPS.
Not in this form, because this is why you don't mess with double buffer. Only way to truly fix it is to enable back double buffer vsync or for somebody to patch game to use somehow triple buffer (which is not an easy task from what I tried in XC3 ). I still have some ideas how to minimize occurrence of those, but they need testing.
 
Last edited by masagrator,
1.2.1

masagrator

The patches guy
OP
Developer
Joined
Oct 14, 2018
Messages
6,268
Trophies
3
XP
12,036
Country
Poland
Released version 1.2.1.

Because I was getting reports that with Window Sync turned off ToTK had weird issues with loading times, I was working on figuring out some solution to fix this. And by not timeouting very fast frames (at least second frame in a row must be rendered in time below 8.3 ms) it seems to solve this issue while also fixing issue with screen tearing at 60 FPS in menus. Downside is slightly worse performance. So I have added it as separate option called "Semi-Enabled".

NX-FPS 1.5.1+ is required.
 

Site & Scene News

Popular threads in this forum

General chit-chat
Help Users
    cearp @ cearp: HBD 2U