Homebrew  Updated

UE4cfgdumper - dump RAM pointers to graphics settings

This tool automatically searches for some of graphics and gameplay settings available in Unreal Engine 4. Instead of doing this slowly in Edizon or wait for main to disassemble, you can just use this tool and get common settings pointers dumped in few minutes. It requires dmnt:cht (tl;dr cheat engine used by Atmosphere) to run. So if you have GDB enabled, it won't run.

It automatically detects if game is running on Unreal Engine 4 or 5, prints which version and encoding is in use. Tested on games like Hellblade, Borderlands 3, Hogwarts Legacy, Kao the Kangaroo, The Dark Pictures Anthology: Little Hope, Dragon Ball Z KAKAROT, so it should work for at least most UE4 games. No Unreal Engine 5 game was tested yet.

THIS IS NOT ALL IN ONE SOLUTION THAT WILL CREATE FOR YOU 60 FPS OR RESOLUTION CHEATS, ETC. YOU MUST BASED ON RESULTS MAKE YOUR OWN CHEATS!

Tool dumps offsets into two forms:
- cheats format that contain address and default value of each setting
- log format that prints name, address + default value not only in hexadecimal, but also decimal form.

Currently supported settings:
Code:
- t.MaxFPS
- r.LensFlareQuality
- r.BloomQuality
- r.SceneColorFringeQuality
- r.AmbientOcclusionRadiusScale
- r.ShadowQuality
- r.MotionBlurQuality
- r.PostProcessAAQuality
- r.DepthOfFieldQuality
- r.ScreenPercentage
- r.MSAA.CompositingSampleCount
- r.MobileMSAA
- r.MSAACount
- r.MaxAnisotropy
- r.ViewDistanceScale
- r.EyeAdaptationQuality
- r.Shadow.DistanceScale
- r.Tonemapper.GrainQuantization
- r.SkyLightingQuality
- r.DynamicRes.OperationMode
- r.DynamicRes.MinScreenPercentage
- r.DynamicRes.MaxScreenPercentage
- r.DynamicRes.FrameTimeBudget
- r.Tonemapper.Sharpen
- r.Tonemapper.Quality
- r.Upscale.Quality
- r.DisableDistortion
- r.TemporalAA.Upsampling
- r.SSR.Quality
- r.SSS.Quality
- r.SSS.Scale
- r.RefractionQuality
- r.MaxQualityMode
- r.Mobile.ShadingPath
- r.LightFunctionQuality
- r.SSGI.Enable
- r.SSGI.Quality
- r.GTSyncType
- foliage.LODDistanceScale
- r.Streaming.FullyLoadUsedTextures
- r.TonemapperFilm
- r.SecondaryScreenPercentage.GameViewport
- r.VSync
- rhi.SyncInterval
- bUseFixedFrameRate (search method for this and next ones is not compatible with games using older UE than 4.19)
- bSmoothFrameRate
- FixedFrameRate
- CustomTimeStep

To understand what each of this setting does read Unreal Engine 4 documentation matching version used by your game.
Some of those settings are not available on older versions of engine, so don't worry if some settings cannot be found. Check if they are listed in documentation.

Full video how this looks like in The Dark Pictures Anthology: Little Hope 1.0.0 from booting game to end of dumping process:


Repo: https://github.com/masagrator/UE4cfgdumper

Releases: https://github.com/masagrator/UE4cfgdumper/releases

How to use:
1. Run game and wait for main menu to appear
2. Run UE4cfgdumper
3. When it's finished, it will print at the end where files are saved. It follows pattern: sdmc:/switch/ue4cfgdumper/*title_id*/*build_id*.txt and .log
 
Last edited by masagrator,

blashy101

Well-Known Member
Newcomer
Joined
Sep 12, 2023
Messages
78
Trophies
0
Age
31
XP
390
Country
United States
Title ID: 0100A8401A0A8000

Based on the results from this, how can I take this information and use it to make cheats/IPS patch to increase framerate or change some of these settings? I used FPSLocker to push this game to 60 before and it worked reasonably well but it capped out at about 45fps, so I imagine reducing some of the graphics settings might help get it to 60?
 

Attachments

  • 3BC3CEAD22CE46BF.txt
    3.1 KB · Views: 15
  • 3BC3CEAD22CE46BF.log.txt
    3.4 KB · Views: 20

masagrator

The patches guy
OP
Developer
Joined
Oct 14, 2018
Messages
6,280
Trophies
3
XP
12,046
Country
Poland
@blashy101 When making 60 FPS cheat, you should focus mainly on 6 things:

- rhi.SyncInterval - setting this to 1 allows interval to work at 60 FPS. Not needed if you use FPSLocker. In some games this setting doesn't work at all, for example Ghostrunner has it set to 2, but there is no interval set in NVN.
- t.MaxFPS - setting it to 60 or 0 (0 may not work if game has enabled smoothFrameRate, but it is preferred over 60 whenever possible) allows unlocking internal FPS lock to allow 60 FPS
- r.DynamicRes.FrameTimeBudget - what frametime dynamic resolution should target. The best way to calculate this is to divide default value by (1000/30) and then result multiply by (1000/FPS). In case of 60 FPS just half default value.
- r.VSync - setting it to 0 is always a good choice. Many games have it enabled, and it's actually harmful to performance on Switch.
- CustomTimeStep - this set to 1 ties game speed to framerate, speed is retrieved from FixedFrameRate float value, so it's advised to set it to 0 (f.e. Demon Slayer has it set to 1)
- FixedFrameRate - it's like using t.MaxFPS and CustomTimeStep at the same time. Cheat file provides in one line flags and float value. If flags are 00000047/0x47 or 00000067/0x67, change it to 00000007/0x7 to disable FixedFrameRate. 00000027/0x27 means that only SmoothFrameRate is enabled. (f.e. DBZ Kakarot enables FixedFrameRate only in cutscenes).

This won't help with very few games, for example Mortal Kombat 1 uses custom class to block game to 30 FPS in cameos.

For other things look up Unreal Engine documentation matching engine version used by your game + eventually this:
https://github.com/masagrator/UE4cfgdumper/blob/main/include/ue4settings.hpp

So by looking at your log, I would change r.VSync to 0. By looking at r.DynamicRes.OperationMode you have dynamicres disabled. It's possible that it's enabled in other places in game, so just in case would be good to change r.DynamicRes.FrameTimeBudget to 16.66.
 
Last edited by masagrator,

Site & Scene News

Popular threads in this forum

General chit-chat
Help Users
  • No one is chatting at the moment.
    Psionic Roshambo @ Psionic Roshambo: I did use a bot for Diablo III though but no ban there lol