A Hat in Time: Quality & Performance Presets

MayorBryce

Well-Known Member
OP
Newcomer
Joined
Mar 31, 2023
Messages
85
Trophies
0
XP
350
Country
United States
I've been hard at working changing configurations, and I've finally created some configs I'm happy with.

Presets
  • Performance Mode
    • Boosted framerate from 30fps to 60fps.
    • Increased the graphic fidelity of some settings.
    • Disabled some graphical effects for a better experience and performance.
This is primarily for people who wish to fine-tune their settings.
  • Boosted Framerate to 60fps, from 32fps (found in SwitchGameEngine.ini).
  • Boosted MinShadowResolution to 128, from 65.
  • Boosted ShadowFadeResolution to 128, from 96.
  • Enabled DynamicLights.
  • Enabled bAllowParticleShadows.
  • Enabled bAllowParticleShadowsOnNonPlayers.
  • Disabled DepthOfField.
  • Disabled Bloom.
  • Enabled bAllowLightShafts.
  • Disabled MotionBlur.
  • Enabled AmbientOcclusion.
  • Enabled AllowRadialBlur.
  • Enabled Anti Aliasing, Level 0.
  • Quality Mode
    • Locked framerate to 30fps
    • Majorly increased the graphic fidelity of nearly all settings.
A_Hat_in_Time_20240424_155040_00.jpg

A_Hat_in_Time_20240424_155144_00.jpg

A_Hat_in_Time_20240424_155319_00.jpg

A_Hat_in_Time_20240424_155440_00.jpg


A_Hat_in_Time_20240424_155532_00.jpg

A_Hat_in_Time_20240424_155722_00.jpg
This is primarily for people who wish to fine-tune their settings.
  • Locked Framerate to 30fps, from 32fps (found in SwitchGameEngine.ini).
  • Enabled bEnableForegroundShadowsOnWorld
  • Boosted DetailMode to 1, from 0.
  • Boosted MaxDrawDistanceScale to 1.2, from 0.7.
  • Boosted MaxAnisotropy to 16, from 8.
  • Boosted MinShadowResolution to 512, from 65.
  • Boosted ShadowFadeResolution to 256, from 96.
  • Boosted MaxShadowResolution to 1024, from 256.
  • Boosted MaxWholeSceneDominantShadowResolution to 1024, from 256.
  • Boosted ShadowTexelsPerPixel to 2.0, from 0.5
  • Enabled EnableCSM.
  • Enabled DynamicLights.
  • Enabled bAllowParticleShadows.
  • Enabled bAllowParticleShadowsOnNonPlayers.
  • Enabled bAllowDetailShadows.
  • Disabled DepthOfField.
  • Enabled bAllowLightShafts.
  • Disabled MotionBlur.
  • Enabled AmbientOcclusion.
  • Lowered PPDownSampleFactor to 1, from 2.
  • Enabled AllowRadialBlur.
  • Enabled bAllowAntiAliasing, Level 8.
  • Enabled bAllowPostprocessMLAA.
  • Enabled bAllowHighQualityMaterialEffects.
  • Changed all TEXTUREGROUP settings to have a MinLODSize of 1. If a setting had LODBias set to 0, it was raised to 4096; otherwise, it was left alone.

  • Quality Mode (Uncapped)
    • All the improvements of Quality Mode, but the framerate is set to 60fps. No Nintendo Switch system, including Mariko, can hit 60fps in all areas with this preset (specifically Mafia Town). However, areas like the Spaceship, Time Rifts, etc. will hit 60 there.
  • 720p Handheld
    • A pchtxt that patches the screen percentage to run at 720p in handheld mode.
    • Additional GPU OC is needed (see "What kind of overclock do I need?" in the FAQ).
  • 1080p Docked/724p Handheld (EXPERIMENTAL)
    • A pchtxt file that makes the game run at 1080p and patches screen percentage to run at 724p.
    • KNOWN BUG: The game will crash right before the Unreal Engine logo if you boot in handheld mode with this mod. To get around this, boot the game in docked mode with ReverseNX-RT and then switch back to handheld when you see the Unreal Engine logo.
  • Ultra Quality Mode
    • This is only intended for if Hat in Time gets updated for the Switch's successor and adds in higher resolution textures. On current hardware, this lack of textures causes serious visual bugs.
    • Made the framerate cap 120fps.
    • Maxed out graphics to as high as they can go, regardless of how they perform on current hardware.
This is primarily for people who wish to fine-tune their settings.
  • Increased Framerate to 120fps, from 32fps (found in SwitchGameEngine.ini).
  • Disabled Vsync.
  • Enabled bEnableForegroundShadowsOnWorld.
  • Increased DetailMode to 2, from 0.
  • Boosted MaxDrawDistanceScale to 1.5, from 0.7.
  • Boosted MaxAnisotropy to 16, from 8.
  • Boosted MinShadowResolution to 1024, from 65.
  • Boosted ShadowFadeResolution to 2048, from 96.
  • Boosted MaxShadowResolution to 4096, from 256.
  • Boosted MaxWholeSceneDominantShadowResolution to 4096, from 256.
  • Boosted ShadowTexelsPerPixel to 2.0, from 0.5
  • Enabled CSM.
  • Enabled DynamicLights.
  • Enabled bAllowParticleShadows.
  • Enabled bAllowParticleShadowsOnNonPlayers.
  • Enabled bAllowDetailShadows.
  • Disabled DepthOfField.
  • Enabled bAllowLightShafts.
  • Disabled MotionBlur.
  • Enabled AmbientOcclusion.
  • Lowered PPDownSampleFactor to 1, from 2.
  • Enabled AllowRadialBlur.
  • Enabled bAllowAntiAliasing, Level 8.
  • Enabled bAllowPostprocessMLAA.
  • Enabled bAllowHighQualityMaterials.
  • Enabled bAllowHighQualityMaterialEffects.
  • Increased all TEXTUREGROUP settings to have a MinLODSize of 1, MaxLODSize of 4096, and an LODBias of 0.

FAQ
What kind of Overclock do I need?

Performance and Quality mode target 60fps or 30fps respectively with an overclock of 1785mhz CPU, 460mhz GPU, and 2400 MEM in handheld mode, though lower memory overclock may suffice. In docked mode, set the CPU to your safe maximum and the GPU to 768mhz.

How do I fix long loading screens/lag spikes?
AHiT is not very well optimized. Granted, it's an Unreal Engine 3 game ported to consoles, but it still needs some help. Typically, a single CPU core (out of the Switch's three available for games) is used for loading, and lag spikes are caused by when a single CPU core hits 100%. The only way around this is to clock the CPU higher.

How do the resolution patches work?
By default, A Hat in Time runs at 720p docked, 540p handheld. For 720p handheld, you'll need 768mhz GPU. As such, this is only achievable on Mariko. The mod works by patching ScreenPercentage to be 100 (720p), instead of 75 (540p).

1080p patches the game to run at 1080p in docked mode, and patches ScreenPercentage to be 67 (724p). Heavy GPU overclock is needed to run at 30fps; I could only get locked 30fps by scaling the settings to slightly worse than stock and running the GPU at my safe maximum, 1267mhz. Your mileage wil vary, but Erista cannot run this mod at 30fps.

Is this Online Safe?
These patches are 100% online safe.

How do I install this mod?
Extract the atmosphere folder to the root of your SD card.

I want to use a different preset!
Download the preset you want, then extract the atmosphere folder to the root of your SD card. If prompted, overwrite any files.

Menus/The Title Screen/Background Elements are missing the blur!
This is because I disabled Depth of Field. It can be renabled if you like with a slight performance loss; however, I found it cleaned up the image nicely with it disabled.

Motion Blur?
Again, I found this cleaned up the image disabling it. It can be renabled at any time.

What about Splitscreen?
Splitscreen is hardcoded to be disabled, though it's on the list of things I want to try to patch in.

Mod Support?
As far as I know, the Switch doesn't support mods. I haven't tried patching any in yet, but they probably need to be compiled for the Switch.

Fine-Tuning The Mod
Since this isn't everyone's cup of tea, I've created the presets above. However, if you really want to get into the nitty-gritty of the improvements, here's how.

The Switch port of A Hat in Time uses three files for setting configuration. These are all found in the romfs/HatinTimeGame/Config/Switch/ folder.
  • SwitchEngine.ini
    • MaxSmoothedFramerate: Default is 32fps. Controls framerate cap.
    • manual: crashes the game when changed to anything other than 0.
    • All other values are completely ignored, likely hardcoded into the game.
  • SwitchGame.ini
    • There isn't any settings of note in here.
  • SwitchSystemSettings.ini
    • This is where the majority of the graphics settings.
Since SwitchSystemSettings.ini is where all the graphics settings are, let's go through each of them one by one.
  • bDeferSaveGameSaving
    • Default value: True
    • As far as I can tell, this doesn't do anything.
  • UseVsync
    • Default value: True
    • It's vSync, what do you expect.
  • bEnableForegroundShadowsOnWorld
    • Default value: false
  • bAllowMeshParticleInstancing
    • Default value: true
  • DetailMode
    • Default value: 0
    • Controls the detail level of various things, like grass. Has a signficant GPU cost. Setting to 1 boosts graphics quality nicely, but 2 doesn't seem to change much and causes levels like The Big Parade to have extreme lag.
  • MaxDrawDistanceScale
    • Default value: 0.7
    • Determines how far to draw objects before they start loading it. Boosting to 1.2 more or less removes pop-in.
  • SplitscreenMaxDrawDistanceScale
    • Default value: 0.8
    • Since AHiT does not allow splitscreen on console versions, this setting has no impact.
  • MaxAnisotropy
    • Default value: 8
    • Controls anistrophic filtering.
  • MinShadowResolution / ShadowFadeResolution / MaxShadowResolution / MaxWholeSceneDominantShadowResolution
    • Default values: 65 / 96 / 256 / 256
    • Controls shadow resolution. I believe MinShadowResolution is used for distant shadows, MaxShadowResolution for close up shadows, and ShadowFadeResolution is for edges. I'm not sure what MaxWholeSceneDominantShadowResolution does. Setting any of these to over 1024 crashes the game when loading Nyakuza Metro.
  • ShadowTexelsPerPixel
    • Default value: 0.5
    • Controls the Shadow Texels per Pixel.
  • bEnableCSM
    • Default value: False
    • Enables Cascade Shadow Maps, which allows higher quality shadows at the expensive of GPU performance.
  • bAllowWholeSceneDominantShadows
    • Default value: True
    • Used primarily for large towers or objects like the reverse waterfall in Mafia Town. Disabling this removes these shadows, causing weird shadows in places there is supposed to be shadows.
  • bAllowPreShadow
    • Default value: True
  • bUseConservativeShadowBounds
    • Default value: True
  • DynamicLights
    • Default value: false.
    • Enables dynamic lighting.
  • bAllowParticleShadows
    • Default value: false.
  • bAllowParticleShadowsOnNonPlayers
    • Default value: false
  • bAllowDetailShadows
    • Default value: false
  • DepthOfField
    • Default value: true.
    • Disabling this improves performance and makes background elements less blurry. It also removes the pause menu blur and the file select blur, however, but these aren't game breaking.
  • AdvancedDepthOfField
    • Default value: false.
    • More GPU expensive, but makes the DOF look much nicer.
  • Bloom
    • Default value: true.
  • bAllowLightShafts
    • Default value: false.
  • MotionBlur
    • Default value: true.
    • Disabling this improves performance slightly while removing the annoying blur effect when turning.
  • AmbientOcclusion
    • Default value: false.
  • PPDownSampleFactor
    • Default value: 2
    • Determines the resolution that effects like Depth of Field render at. Setting to 1 makes it pixel accurate, 2 is a 2x2 pixel square, etc.
  • MotionBlurSamples
    • Default value: 13
    • The number of frames to apply motion blur to.
  • bAllowMotionBlurScreen
    • Default value: True
    • As far as I can tell, disabling this does the same thing as disabling MotionBlur, so both must be on to enable Motion Blur.
  • bAllowPostprocessMLAA
    • Default value: false.
    • Enables MLAA.
  • AllowRadialBlur
    • Default value: false.
  • Distortion
    • Default value: true.
  • bAllowAntiAliasing
    • Default value: false.
    • Enables AA.
  • MaxAntiAliasingQuality
    • Default value: 0.
    • Controls AA quality level. bAllowAntiAliasing must be set to true to work. You can set it to 0, 2, 4, or 8. Higher numbers improve quality at the cost of performance.
  • LensFlares
    • Default value: True
  • bAllowHighQualityMaterials
    • Default value: False
    • Enabling this crashes the game once the title screen is reached, likely because the HQ textures might not be present.
  • bAllowHighQualityMaterialEffects
    • Default value: False
    • Enables high quality effects. This can be safely enabled.
  • TEXTUREGROUP_World, etc.
    • Control LOD settings.
    • MinLODSize: Controls how close to the camera effects load in. Keep at 1, or objects may not behave correctly when right next to them.
    • MaxLODSize: How far away objects render. You can set it to any exponent of 2 (256, 512, 1024, 2048, 4096, etc.) but over 2048 tends to break things.
    • LODBias: Controls when objects change LOD level. Lower numbers are higher quality. Recommended to keep this to the default, since it breaks things when lowered, and raising them makes textures worse quality. Since AHiT is not memory bound, HQ textures are not an issue.
    • MinMagFilter: Set to Aniso. Not sure what this does, since I don't know what other variables there are.
    • MipFilter: Set to point. Again, not sure what this does.
    • Values are: MinLODSize, MaxLODSize, LODBias, MinMagFilter, MipFilter

Changelog:
v1.0.0: Initial Release.
v1.0.1: Fixed a serious performance bug in "The Big Parade" caused by having the GraphicsMode set to 2. It's been lowered to 1 in the Quality preset. This change does not affect the Performance preset.
v1.1.0: Updated Quality presets, added Ultra Quality preset, and added 720p handheld and 1080p docked pchtxt files.
 

Attachments

  • Performance v1.0.0.zip
    28.3 KB · Views: 0
  • Quality (30fps) v1.1.0.zip
    28.2 KB · Views: 0
  • Quality (Uncapped) v1.1.0.zip
    28.2 KB · Views: 0
  • 720p Handheld pchtxt.zip
    287 bytes · Views: 0
  • 1080p Docked pchtxt.zip
    420 bytes · Views: 0
  • 1080p Settings.zip
    2.5 KB · Views: 0
  • Ultra Quality.zip
    28.1 KB · Views: 0
Last edited by MayorBryce,

MayorBryce

Well-Known Member
OP
Newcomer
Joined
Mar 31, 2023
Messages
85
Trophies
0
XP
350
Country
United States
Update to v1.0.1. Fixed a serious performance bug in "The Big Parade" caused by having the GraphicsMode set to 2. It's been lowered to 1 in the Quality preset. This change does not affect the Performance preset. If you have v1.0.0 of the quality preset, it's highly recommended to update.
 
  • Like
Reactions: platanos

MayorBryce

Well-Known Member
OP
Newcomer
Joined
Mar 31, 2023
Messages
85
Trophies
0
XP
350
Country
United States
Update to v1.1.0. Updated Quality presets, added Ultra Quality preset, and added 720p handheld and 1080p docked pchtxt files. NOTE: the 1080p patch is EXPERIMENTAL and will likely have bugs.
 

Site & Scene News

Popular threads in this forum

General chit-chat
Help Users
  • No one is chatting at the moment.
    K3Nv2 @ K3Nv2: https://youtube.com/shorts/Y9WKPRUjNQ4?si=raUf8jEiET8rmH2P