Modding Tears of the Kingdom

I want to share how I modded The Legend of Zelda: Tears of the Kingdom on my Nintendo Switch as guides on the internet were targetted at Yuzu or Ryujinx emulators.

Requirements

Modding the game on a Switch requires a modified Nintedo Switch. In my previous post, I cover how I modified my Nintendo Switch OLED using a modchip. I do not condone piracy.

atmosphere

60 FPS

Tears of the Kingdom targets 30 frames per second (FPS), and Digital Foundry's John Linneman says the game "holds very closely to its 30 FPS target. Nearly the entirety of video capture managed to maintain a solid 30 frames per second, at least in most instances which, for the Switch running a game this vast and emergent, is downright impressive."

As the game is capping itself at 30 FPS, there is a bit of performance left on the table. To unlock the frame rate:

  1. On the Switch's SD card, create the folder /atmosphere/contents/0100F2C0115B6000.

  2. Download TotK DynamicFPS. At the time of the post, the latest version is 1.5.5beta3.

  3. Place the DynamicFPS - #1-0 - v1.5.5 (Required) and DynamicFPS - #2-3 - 60FPS (see above) (Optional) contents in /atmosphere/contents/0100F2C0115B6000.

  4. Follow this guide to install:

    • SaltyNX: Background process for the Nintendo Switch for file/code modification
    • Status-Monitor-Overlay: Hardware monitoring.
    • FPSLocker: Set custom FPS in Nintendo Switch games
    • Telsa Menu: Overlay menu to activate FPSLocker and Status-Monitor-Overlay.
    • nx-ovlloader: Host process for loading Tesla Menu.
  5. Your sdcard should look like this by the end of it:

    sdcard
    ├── SaltySD
    │   ├── exceptions.txt
    │   ├── flags
    │   │   └── log.flag
    │   ├── patches
    │   └── saltysd_core.elf
    ├── atmosphere
    │   └── contents
    │       ├── 0000000000534C56
    │       │   ├── exefs.nsp
    │       │   ├── flags
    │       │   │   └── boot2.flag
    │       │   └── toolbox.json
    │       ├── 0100F2C0115B6000
    │       │   ├── exefs
    │       │   │   ├── main.npdm
    │       │   │   └── subsdk9
    │       │   └── romfs
    │       │       └── dfps
    │       │           ├── 60fps.ini
    │       │           └── default.ini
    │       └── 420000000007E51A
    │           ├── exefs.nsp
    │           ├── flags
    │           │   └── boot2.flag
    │           └── toolbox.json
    └── switch
        └── .overlays
            ├── FPSLocker.ovl
            ├── Status-Monitor-Overlay.ovl
            └── ovlmenu.ovl
  6. Start the game and press L + DPad Down + R3 to bring up the Tesla menu overlay.

  7. Open FPSLocker and set Window Sync Wait set to Disabled.

    fpslocker window sync wait

  8. While still in FPSLocker, increase the FPS target to 60 FPS.

    fpslocker fps target

  9. To confirm the game is running at 60 FPS, use Status-Monitor-Overlay.

    status monitor full

I don't recommend using the Disable Quality Reduction patch or any other FSR/DynamicRes disablers. The game needs to these to keep the FPS high on a Switch. The game will run in 900p when docked, and drop to 720p when panning the camera or in portable mode.

Within Shrines and smaller areas, 60 FPS is easy to obtain and hold.

At Kakariko village, one of most intensive areas, the game hold above 30 FPS.

Overclocking

Overclocking the Switch will help it hold higher frame rates. It will however, decrease the lifespan of the Switch and may also cause instabilities and file corruption.

Switch-OC-Suite by hanai3Bi is a collection of tools for overclocking the Switch. It includes and online configurator to push clocks further than its defaults. The one setting I changed was increasing the Mariko (OLED model) max memory clock to 2131200.

oc online config mem

Under Global Profile, I updated all memory clocks to 2131 MHz. This does not affect temperatures or noise. It's free performance.

oc global mem

Enable an overclocking profile for the game.

oc enable profile

I enabled the both CPU and GPU governors and maxed their clocks speeds (CPU 2295 MHz and GPU 1267 MHz). The governor will decrease clocks in less intensive situations to save energy and power.

oc settings

These mods can be installed following the method above.