The Witcher 3 60 FPS and Dynamic Resolution Tweaks Switch

From GameBrew
The Witcher 3 60 FPS and Dynamic Resolution Tweaks
Thewitcher360fpsanddynamicresolutiontweaksswitch.png
General
Authormasagrator
TypeGame Hacks
Version3.7
LicenseMixed
Last Updated2021/02/21
Links
Download
Website
Support Author

The Witcher 3 IPS patch for unlocking 60 FPS and tutorials for changing Dynamic Resolution values.

It was confirmed working for PL (010039400E8D6000) and EU (01003D100E9C6000) releases.

User guide

Note: The tutorials below are based on the release post (last updated 2021/02/21). For the most recent information and updates, please consult the discussion thread.

60 FPS mod

First step to get 60 FPS is to unlock it. It works only with versions these versions:

  • Versions 3.4 and 3.5 (TW3-60FPS.zip)
  • Version 3.6 (TW3-60FPS-3.6.zip)
  • Version 3.7 (TW3-60FPS-3.7.zip)

Put exefs_patches folder to the SD card:

  • Atmosphere CFW /atmosphere/
  • SXOS CFW /sxos/

And restart Switch.

Recommended OC settings for 60 FPS with sys-clk:

handheld_cpu=1326
handheld_charging_gpu=768
handheld_charging_official_cpu=1785
handheld_charging_official_gpu=921
handheld_mem=1600
docked_cpu=1785
docked_gpu=921

Dynamic resolution config tweaks

Backup your save file with EdiZon or Checkpoint first, otherwise the settings will reset to default.

In backup folder you will find folder user.settings and settings.txt inside. Open it, locate this line [Rendering]

Below that you can paste any line from this list:

DynamicResolutionOverride=-1
DRRequireCameraMove=1
DRIgnoreCPU=1
DRIgnoreVsync=1
DRGameTargetFrameTimeInMs=31.5
DRCinematicTargetFrameTimeInMs=40.0
DRIncreaseResolutionMargin=1
DRIncreaseResolutionMarginMultiply=1
DRCinematicIncreaseResolutionWaitTimeInMs=607.5
DRCinematicDecreaseResolutionWaitTimeInMs=101.5
DRGameIncreaseResolutionWaitTimeInMs=945.0
DRGameDecreaseResolutionWaitTimeInMs=157.5

These are default settings. The following will focus only on settings that will make 60 FPS available and tweak cinematics for 30 FPS.

For 60 FPS users, it is recommended to add these 2 lines:

  • DRGameTargetFrameTimeInMs=14.0
  • DRCinematicTargetFrameTimeInMs=14.0
  • This will change dynamic resolution frametime interval for gameplay from 31.5 ms to 14 ms and for cinematics from 40 ms to 14 ms.

For 30 FPS users, it is recommended to add this line:

  • DRCinematicTargetFrameTimeInMs=31.5
  • It will change dynamic resolution frametime interval for cinematic from 40 ms to 31.5 ms, solving some issues with framedrops in cutscenes

Fixing resolution, you can disable Dynamic Resolution by using DynamicResolutionOverride:

  • DynamicResolutionOverride=-1 means that Dynamic Resolution is enabled.
  • Starting from 0 we can disable it.
  • (Note: It looks like Inventory glitches for different values for each person. Only confirmed value that is not glitching is 25.)
  • Going above the list will just set last known resolution.

Then just restore your backup save with changed config.

Dynamic Resolution ExeFS Tweaks

This section will include some more advanced editing. Improper editing it can result in crashing game or system.

(Warning: This works only with versions 3.4-3.7. After changing it Fixing resolution point from Dynamic Resolution Config Tweaks will scale different, but still 25 is 1280x720.)

For changing minimal Dynamic Resolution, you will need:

  • Versions 3.4 and 3.5 - TW3-DR.zip
  • Version 3.6 - TW3-DR-3.6.zip
  • Version 3.7 - TW3-DR-3.7.zip (NOTE: from 3.7 game is using W29 register instead of W22, so underlined bytes are slightly different in IPS file dedicated for this version)

Unpack it. Open IPS file with hex editor (for example HxD), you will get something like this:

thewitcher360fpsdntweaknx4.png

Each color is different instruction with different config.

  • Red - Handheld width
  • Green - Handheld height
  • Brown - Docked width
  • Pink - Docked height

You need to convert those hex values to ARM instructions. You can use this site.

  • As example we are taking red value 16688052
  • We got this MOVZ W22, #0x340
  • We need to change "340". This is hex value. You can use this site to convert it to decimal value.
  • After converting we got "832". We want to change it to 640. We can convert it back with this site.
  • After converting we got "280".
  • Now our instruction should look like MOVZ W22, #0x280
  • We need to convert this instruction to hex. We can use this site.
  • After converting we need to copy value from ARM64 window. So we got hex 16508052

And now we need to replace our new hex with old hex and save file. Put folder exefs_patches to the SD card:

  • Atmosphere CFW /atmosphere/
  • SXOS CFW /sxos/

And restart Switch.

Screenshots

Handheld min. res 640x360, drops below 468p with 60 FPS (AA On, blur off)
thewitcher360fpsdntweaknx2.jpg
Using with the Enhanced Settings mod
thewitcher360fpsdntweaknx3.jpg

External links

Advertising: