A Hat in Time: Quality & Performance Presets

MayorBryce

Well-Known Member
OP
Newcomer
Joined
Mar 31, 2023
Messages
84
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 256, 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 2.
    • Enabled bAllowPostprocessMLAA.
  • Enabled bAllowHighQualityMaterialEffects.

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

FAQ
What kind of Overclock do I need?

Performance and Quality mode target 60fps or 30fps respecitvely with an overclock of 1785mhz CPU, 460mhz GPU, and 2400 MEM in handheld mode. 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.

Are there any resolution patches?
By default, A Hat in Time runs at 720p docked, 540p handheld. A 720p handheld patch is coming soon; however, 1080p is much more complicated. For 720p handheld, you'll need 768mhz GPU. As such, this is only achievable on Mariko.
From my testing, 1080p is very expensive: with near stock settings at 1267mhz GPU (my safe maximum; do NOT go that high unless your system can handle it), I can hardly manage 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 the other preset!
Download the other preset, 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.

Is there a 1080p version?
A 1080p mod is in the works.

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

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.
 

Attachments

  • Default.zip
    1.4 KB · Views: 8
  • Quality 30fps v1.0.1.zip
    28.3 KB · Views: 8
  • Quality Uncapped v1.0.1.zip
    28.3 KB · Views: 9
  • Performance 60fps v1.0.1.zip
    28.3 KB · Views: 8
Last edited by MayorBryce,

MayorBryce

Well-Known Member
OP
Newcomer
Joined
Mar 31, 2023
Messages
84
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

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