Toggle menu
Toggle personal menu
Not logged in
Your IP address will be publicly visible if you make any edits.

FPSLocker Switch: Difference between revisions

From GameBrew
No edit summary
No edit summary
Line 4: Line 4:
|description=Set custom FPS target in retail games.
|description=Set custom FPS target in retail games.
|author=masagrator
|author=masagrator
|lastupdated=2023/05/15
|lastupdated=2023/05/20
|type=Plugins
|type=Plugins
|version=1.2.0
|version=1.2.1
|license=MIT
|license=MIT
|download=https://dlhb.gamebrew.org/switchhomebrews/fpslockerswitch.7z
|download=https://dlhb.gamebrew.org/switchhomebrews/fpslockerswitch.7z
Line 60: Line 60:


==Changelog==
==Changelog==
'''v.1.2.1'''
* Add "Semi-Enabled" option for Window Sync that doesn't timeout nvnSyncWait if at least second consecutive frame was rendered below 8.3ms.
* At cost of slightly worse performance it solved issues in Tears of the Kingdom with longer loading times and screen tearing in menus at 60 FPS.
* It is required to update NX-FPS to version 1.5.1+ for this to work.
'''v.1.2.0'''
'''v.1.2.0'''
* Add support for MASTER_WRITE entry in FPSLocker patches that allows to patch any part of main before game is booted (when applied in Advanced Settings you will see "Master Write was loaded to game"). This is to allow patches to redirect assembly that normally read values from Read Only sections to code caves or patching executable to disable double buffer.
* Add support for MASTER_WRITE entry in FPSLocker patches that allows to patch any part of main before game is booted (when applied in Advanced Settings you will see "Master Write was loaded to game"). This is to allow patches to redirect assembly that normally read values from Read Only sections to code caves or patching executable to disable double buffer.

Revision as of 05:22, 20 Mayıs 2023

FPSLocker
File:Fpslockerswitch.png
General
Authormasagrator
TypePlugins
Version1.2.1
LicenseMIT License
Last Updated2023/05/20
Links
Download
Website
Source

The FPSLocker tool, in conjunction with the SaltyNX plugin NX-FPS, enables you to establish custom frame rates for Nintendo Switch games through an overlay. It should be noted that this tool relies on detecting the graphics API to manipulate FPS, and in certain instances, game-specific patches may be necessary to exceed 30 FPS.

You can access these patches via the provided link. As of now, the maximum supported yaml size is 32kB, but future updates may allow for expansion.

Requirements

Media

FPSLocker on Switch homebrew to unlock FPS in game - (Tralala LS)

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 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

Changelog

v.1.2.1

  • Add "Semi-Enabled" option for Window Sync that doesn't timeout nvnSyncWait if at least second consecutive frame was rendered below 8.3ms.
  • At cost of slightly worse performance it solved issues in Tears of the Kingdom with longer loading times and screen tearing in menus at 60 FPS.
  • It is required to update NX-FPS to version 1.5.1+ for this to work.

v.1.2.0

  • Add support for MASTER_WRITE entry in FPSLocker patches that allows to patch any part of main before game is booted (when applied in Advanced Settings you will see "Master Write was loaded to game"). This is to allow patches to redirect assembly that normally read values from Read Only sections to code caves or patching executable to disable double buffer.
  • Change name "Sync Wait" to "Window Sync Wait"
  • 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

v.1.1.4

  • FPSLocker now can show how many framebuffers is used by NVN and show it in Advanced Settings.
    • "Buffered frames: 2" = game is using real double buffer.
  • Since this number cannot be changed on the fly, this is just an information update.

v.1.1.3

  • Provide better API detection.
  • Now you can see if game is using NVN, EGL or Vulkan in Advanced Settings.
  • Requires updating NX-FPS to at least 1.3 version.

v.1.1.2

  • Fix RTLD detection in older games to get proper BID (f.e. in L.A. Noire).

v.1.1.1

  • Updated libtesla to fix random crash in docked mode related to freeing framebuffer.

v.1.1.0

  • Add support for creating LOCK patches from yaml configs.

v.1.0.0

  • First Release.

Thanks

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

External links

Advertising: