After a reboot E33 kept crashing. The ClairObscurFix.log showed why the earlier
'reduced profile' never helped: config flags gate behaviour INSIDE the fix's
hooks, but the .asi installs all its hooks (Level Load, Widgets, cutscene,
PostProcess) regardless. So the crash surface was never reduced - only removing
the fix stops it.
The game added official ultrawide support in patch 1.2.3 and renders correctly
at 5120x1440 natively, so the archived fix was pure liability. Removed it
entirely and marked the entry native.
- New METHOD=native: install.sh no-ops with a message, build/publish skip it.
- Deleted vendor/ClairObscurFix and the tuned ini (unused, crash-causing).
- README/THIRD_PARTY/CHANGELOG updated; ClairObscurFix recorded as historical.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Expedition 33 is UE5 with no DRM, but a mature MIT-licensed fix already exists:
ClairObscurFix by Lyall. Rather than reimplement it, install.sh gains a third
method that vendors a third-party fix unmodified and layers our own tuned
config on top, with the upstream license shipped in the release zip as MIT
requires. Upstream is archived, so vendoring also keeps it available.
Our only change vs upstream defaults is [Center HUD] Enabled = true, since at
5120px wide the edge-anchored HUD elements end up absurdly far apart.
Install/uninstall round-trip verified against a scratch game dir, including
that our tuned ini overrides the vendored default.
Credit to Lyall is recorded in THIRD_PARTY.md, the game README, and the repo
README's method table.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
BepInEx install/uninstall verified end-to-end against a scratch game dir:
installs loader + plugin, uninstall removes both and leaves BepInEx/ intact.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Generalize the project from a single GB4 fix into a collection that can host
ultrawide patches for many games.
- games/<Game>/{SUWSF.ini,game.conf,README.md}; GB4 moved in as the first entry
- game.conf carries all game-specific data (appid, exe, paths, loader, launch
option), so install.sh is fully generic: ./install.sh <Game> [uninstall]
- installer gains GAME_DIR / PREFIX_INI_FILE / LOADER_NAME overrides; verified
install -> idempotent re-run -> uninstall leaves the tree pristine
- tools de-hardcoded: dump_decrypted.py takes an exe name, read_protonlog.sh
takes an appid, aob.py takes a dump + game ini, build_release.sh takes a game
- README rewritten as an umbrella index with an "adding a game" guide
- LICENSE copyright -> programmingPug
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
32:9 / 21:9 ultrawide support for Gundam Breaker 4 (UE4.27) via SUWSF +
Ultimate ASI Loader. Forces Hor+ FOV (AspectRatioAxisConstraint=MaintainYFOV)
and disables pillarboxing, patched in decrypted memory at runtime so it holds
through missions (the exe is SteamStub-encrypted; a static patch is impossible).
Confirmed working in gameplay at 5120x1440 (Samsung Odyssey G93SC) on Proton.
Requires WINEDLLOVERRIDES="dsound=n,b" on Proton so the loader injects.
Includes: patch/SUWSF.ini, Proton installer with clean uninstall, release-zip
builder, and runtime dump/verify tooling. Third-party bundles under MIT (see
THIRD_PARTY.md).
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>