-
v1.2.0 Stable
released this
2026-07-21 17:35:37 -04:00 | 3 commits to main since this releaseUltraWidePatches
Ultrawide (32:9 / 21:9) fixes for PC games that ship with poor or no ultrawide support — built and tested on a Samsung 49" Odyssey G93SC (5120×1440), and Proton/Linux-first.
Fixes use whichever approach the engine calls for:
- SUWSF + Ultimate ASI Loader — runtime memory patching, for Unreal titles (and anything DRM-wrapped, where static patching is impossible).
- BepInEx plugin — a proper C# mod, for Unity titles with the Mono backend.
- External — where a good third-party fix already exists, it is vendored (license permitting) with our tuned config and full credit, rather than reimplemented. Vendored fixes can go stale against a patched game, so those entries carry a revalidation checklist.
Most force Hor+ FOV (a wider screen shows you more rather than zooming in) and fix UI that assumes 16:9. Some games already render correctly and only need UI work — Burglin' Gnomes is one, and the fix deliberately leaves its camera alone.
Supported games
Game Engine Method Status Gundam Breaker 4 Unreal Engine 4.27 SUWSF ✅ Confirmed working at 5120×1440 Burglin' Gnomes Unity 6 (Mono) BepInEx plugin ✅ Confirmed working at 5120×1440 Clair Obscur: Expedition 33 Unreal Engine 5 External (ClairObscurFix by Lyall) ⚠️ Partial — reduced profile, see notes Install
./install.sh # list available patches ./install.sh GundamBreaker4 # install one ./install.sh GundamBreaker4 uninstallThe installer finds the game across your Steam libraries, drops the loader + patch next to the executable, and applies any config-level tweak (with a backup). It never modifies game files.
Proton users: each game needs a
WINEDLLOVERRIDESlaunch option or the loader is silently ignored — the installer prints the exact line for that game. This is the single most common reason a fix "doesn't work."Windows users can extract a release zip straight into the game's exe folder; no launch option needed.
Why runtime patching
Config-file tweaks (e.g. UE4's
AspectRatioAxisConstraint=MaintainYFOV) typically fix menus but revert once gameplay loads, because the game re-sets the camera per view. Many shipping executables are also DRM-encrypted on disk (GB4's is SteamStub-wrapped,.textentropy 8.0), which makes static exe patching impossible. Patching the decrypted image in memory solves both problems at once.Repo layout
Path What games/<Game>/SUWSF.iniPatch definitions (SUWSF games) games/<Game>/plugin/C# plugin source + prebuilt DLL (BepInEx games) games/<Game>/*.iniOur tuned config for a vendored external fix games/<Game>/game.confGame metadata (appid, exe, paths, launch option) install.shGeneric installer / uninstaller tools/build_release.shBuilds a per-game drop-in release zip tools/publish.shPushes + cuts a Gitea release tools/dump_decrypted.pyDumps a DRM-decrypted image from a running process tools/aob.pyVerifies/derives byte patterns against a dump tools/read_protonlog.shConfirms ASI injection + per-patch match counts tools/unity_diag.cs,tools/unity_uitune.csUnityExplorer console diagnostics/tuners vendor/SUWSF-x64/Upstream SUWSF 2.3.0 + Ultimate ASI Loader (MIT) vendor/BepInEx_win_x64_*.zipUpstream BepInEx 5.4.23.5 (LGPL-2.1) Adding a game
mkdir games/<GameName>with agame.conf(copy GB4's as a template) and aSUWSF.ini.- Set
METHOD=ingame.conftosuwsf,bepinex, orexternal.
Check for an existing fix first — if a good one exists and its license
allows redistribution, vendor it with credit instead of rewriting it. - Unreal: start from the UE4 patterns in
games/GundamBreaker4/SUWSF.ini— they match across many UE4 titles. If a pattern misses, usetools/dump_decrypted.py+tools/aob.pyto derive the exact bytes. - Unity: install BepInEx + UnityExplorer and inspect live with
tools/unity_diag.cs/tools/unity_uitune.cs, then write a plugin (copygames/BurglinGnomes/plugin/).
Changelog
Version history and the versioning policy (adding a game = minor bump) are in CHANGELOG.md.
License
MIT — see LICENSE. Bundled third-party components (SUWSF, Ultimate ASI Loader) are MIT and credited in THIRD_PARTY.md. You must own the games; nothing here modifies or circumvents copy protection.
Downloads
-
v1.1.0 Stable
released this
2026-07-21 16:42:00 -04:00 | 7 commits to main since this releaseBurglin' Gnomes — UltraWide Fix
✅ Confirmed working at 5120×1440 (32:9) on Proton.
- Engine: Unity 6 (6000.0.62f1), Mono backend, URP + Cinemachine
- Steam AppID: 3844970
- Executable:
Gnomium.exe - Method: BepInEx plugin (no DRM, no memory patching needed)
What it fixes — and what it deliberately doesn't
The camera is already correct. It's orthographic with a constant
orthographicSizeof 5.0, so a wider display genuinely shows more world (visible width 17.8 → 35.6 going 16:9 → 32:9). That's textbook Hor+, and this fix does not touch it.fieldOfViewreads 60 at every resolution simply because orthographic cameras don't use it — a red herring if you go looking.The problem is entirely UI, in two separate places needing two different levers:
Canvas Problem Lever HUD ( ScreenSpaceOverlay+ScaleWithScreenSize)Ships matchWidthOrHeight = 0.453(width-biased). At 5120px that yields scaleFactor 1.948 — a ballooned HUD with overlapping bottom/centre text.match = 1(scale by height) + raisereferenceResolution.y, shrinking the HUD and giving the layout more logical roomIn-world labels ( WorldSpace, e.g.NamePlate)At 32:9 you see twice as much world, so far more labels are on screen and can collide Canvas transform.localScaleGotcha:
CanvasScaler.scaleFactordoes nothing on a WorldSpace canvas —CanvasScaler.HandleWorldCanvas()overwrites it withdynamicPixelsPerUnitevery frame. Scaling the transform is the only thing that works.Install (Linux / Proton)
./install.sh BurglinGnomesThen required — Steam → Properties → Launch Options:
WINEDLLOVERRIDES="winhttp=n,b" %command%Without it Proton ignores BepInEx's
winhttp.dllloader and the plugin never runs.Install (Windows)
Extract the release zip into the game folder (next to
Gnomium.exe). No launch option needed.Tuning
Config is generated on first launch:
<game>/BepInEx/config/com.programmingpug.burglingnomes.ultrawidefix.cfgEdits apply live (~2s) — no restart. BepInEx doesn't reload config on its own, so the plugin watches the file's mtime and calls
Config.Reload()itself.Setting Default Notes HudScale0.8HUD size. Lower = smaller HUD and more layout room (cures overlapping text) WorldLabelScale0.8In-world nameplate size MatchWidthOrHeight1.0Leave at 1. Lower re-introduces width scaling and cramps the layout vertically DesignHeight1080The game's design height; don't change VerbosefalseLog every canvas adjustment HudScale→ resulting HUD scale at 5120×1440 (stock is 1.333):HudScale 1.0 0.85 0.8 0.6 scale 1.333 1.133 1.067 0.800 Verifying it works
<game>/BepInEx/LogOutput.logThat's the plugin's log — not UnityExplorer's in-game Log window, which only shows Unity
Debug.Log. You should see:Burglin' Gnomes UltraWide Fix 1.0.0 loaded. HUD 'Canvas' ref (1920.00, 1080.00) -> (1920.00, 1350.00) match=1 => scale=1.067 World 'NamePlate' localScale (1.00, 1.00, 1.00) -> (0.80, 0.80, 0.80)If a line is absent, that adjustment didn't happen.
Uninstall
./install.sh BurglinGnomes uninstallRemoves the loader and plugin.
BepInEx/is left in place in case other mods use it.Building the plugin from source
Prebuilt
BurglinGnomes.UltraWideFix.dllships here, so this is only needed if you change it:cd plugin dotnet build -c Release -p:GameDir="/path/to/Burglin' Gnomes"Requires the .NET SDK; it references the game's own assemblies and redistributes none of them.
Downloads
-
v1.0.0 Stable
released this
2026-07-20 20:21:23 -04:00 | 24 commits to main since this releaseGundam Breaker 4 — UltraWide Fix v1.0.0
Part of UltraWidePatches.
Ultrawide 32:9 / 21:9 support for Gundam Breaker 4 (PC). Forces Hor+ FOV — a wider screen shows you more, instead of zooming the camera in — and disables pillarboxing. Confirmed working in gameplay at 5120×1440 on Linux/Proton (Samsung 49" Odyssey G93SC).
Install (Linux / Proton)
- Extract the zip into
…/GB4/Binaries/Win64/(next toGB4-Win64-Shipping.exe), or run./install.sh GundamBreaker4from the repo. - Required — Steam → Properties → Launch Options:
Without this, Proton ignores the loader and the fix only works in the lobby.
WINEDLLOVERRIDES="dsound=n,b" %command% - Set the in-game resolution to your native ultrawide res, fullscreen.
Install (Windows)
Extract the zip into
…\GB4\Binaries\Win64\. No launch option needed.How it works
GB4 is Unreal Engine 4.27 and its shipping exe is SteamStub-encrypted, so a static exe patch isn't possible. This uses SUWSF + Ultimate ASI Loader to patch the decrypted UE4
AspectRatioAxisConstraintin memory at runtime — which is why it holds through missions (theEngine.initrick alone reverts in-mission).Notes
- Do not enable the HOR+ patch at 16:9 or narrower.
- You must own the game. Nothing here modifies or circumvents copy protection.
- Uninstall:
./install.sh GundamBreaker4 uninstall, or deleteSUWSF.asi,SUWSF.ini,dsound.dll.
Credits: SUWSF by PhantomGamers · Ultimate ASI Loader by ThirteenAG · patterns adapted from Lyall's UltrawidePatches.
Downloads
- Extract the zip into