diff --git a/CHANGELOG.md b/CHANGELOG.md index 4a2d8a4..231f19c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,17 @@ # Changelog +## Unreleased + +- **Clair Obscur: Expedition 33 → native.** Removed the vendored ClairObscurFix: + it's archived, crashed on save load on current builds, and its config flags + don't gate its hooks (so a "reduced profile" never reduced the crash surface). + The game added official ultrawide support in patch 1.2.3 and works at 5120×1440 + with no mod. New `METHOD=native` marks such entries; install/build/publish treat + them as no-op / no-artifact. +- **New game: ONE PIECE ODYSSEY** (UE4 + SteamStub). SUWSF loads, but the + GB4 patterns don't match this build (FOV pattern 0 matches; pillarbox pattern + false-matched). Needs runtime-derived patterns. ⚠️ in progress. + Versioning applies to the collection as a whole: **adding a game is a minor bump**, fixes/tuning to existing entries are patch bumps. diff --git a/README.md b/README.md index fe7aa84..d2ebd6e 100644 --- a/README.md +++ b/README.md @@ -17,7 +17,7 @@ Most force **Hor+ FOV** (a wider screen shows you *more* rather than zooming in) | [Gundam Breaker 4](games/GundamBreaker4/) | Unreal Engine 4.27 | SUWSF | ✅ Confirmed working at 5120×1440 | | [Burglin' Gnomes](games/BurglinGnomes/) | Unity 6 (Mono) | BepInEx plugin | ✅ Confirmed working at 5120×1440 | | [ONE PIECE ODYSSEY](games/OnePieceOdyssey/) | Unreal Engine 4 | SUWSF | ⚠️ New — unverified | -| [Clair Obscur: Expedition 33](games/Expedition33/) | Unreal Engine 5 | External ([ClairObscurFix](https://github.com/Lyall/ClairObscurFix) by Lyall) | ⚠️ Partial — reduced profile, see notes | +| [Clair Obscur: Expedition 33](games/Expedition33/) | Unreal Engine 5 | Native | ✅ Native ultrawide since patch 1.2.3 — no fix needed | ## Install diff --git a/THIRD_PARTY.md b/THIRD_PARTY.md index 094ece7..b1e8afb 100644 --- a/THIRD_PARTY.md +++ b/THIRD_PARTY.md @@ -32,13 +32,12 @@ them; all runtime patching is performed by SUWSF. - Used only for runtime inspection while developing a fix; it is NOT part of any release package and is not required by end users. -## ClairObscurFix (the entire Expedition 33 fix) -- Author: **Lyall** — https://github.com/Lyall/ClairObscurFix -- License: MIT (see `vendor/ClairObscurFix/LICENSE`) -- Files: `vendor/ClairObscurFix/**` — vendored **unmodified** -- Version: v0.0.10 (upstream repo is archived) -- The ultrawide fix for Clair Obscur: Expedition 33 is entirely Lyall's work. - This repo contributes only a 32:9-tuned `ClairObscurFix.ini` and packaging. +## ClairObscurFix (no longer bundled) +- Author: Lyall — https://github.com/Lyall/ClairObscurFix (MIT) +- Was vendored for Clair Obscur: Expedition 33, then **removed**: the game gained + official ultrawide support (patch 1.2.3) and the archived fix crashed on current + builds. The E33 entry is now `native` and ships no third-party code. + ## Patch patterns The `AspectRatioAxisConstraint` (HOR+) and `ConstrainAspectRatio` (pillarbox) diff --git a/games/Expedition33/ClairObscurFix.ini b/games/Expedition33/ClairObscurFix.ini deleted file mode 100644 index 3aaf59a..0000000 --- a/games/Expedition33/ClairObscurFix.ini +++ /dev/null @@ -1,52 +0,0 @@ -;;;;;;;;;; General ;;;;;;;;;; - -[Developer Console] -; Set "Enabled" to true to enable the console. -; By default you can access it with the key "Tilde". -Enabled = false - -[Skip Intro Logos] -; Skips splash screen logos, epilepsy warning and autosave warning. -Enabled = false - -[Uncap Cutscene FPS] -; Removes 30fps cap in cutscenes. -; DISABLED: bisecting a crash-on-save-load with game build > fix v0.0.10. -Enabled = false - -[Adjust Resolution Checks] -; Adjusts resolution checks to use the monitor's maximum supported resolution, rather than the "native" resolution. -; DISABLED: its pattern scan already fails on this game build ("Resolution Checks: Pattern scan failed"). -Enabled = false - -[Background Audio] -; Set "Enabled" to true to allow audio to continue playing when the game window has lost focus. -Enabled = false - -;;;;;;;;;; Ultrawide/Narrower ;;;;;;;;;; - -[Cutscene Letterboxing] -; Set "Enabled" to true to re-enable pillarboxing/letterboxing in cutscenes. -Enabled = false - -[Fix Movies] -; Crops letterboxing from pre-rendered movies at ultrawide resolutions. -; DISABLED: bisecting; re-enable once the crash source is known. -Enabled = false - -[Center HUD] -; Set "Enabled" to true to center certain parts of the HUD to 16:9 at ultrawide resolutions. -Enabled = true -; Adjust "AspectRatio" to set the aspect ratio of the HUD. i.e 1.77778 for 16:9, 2.33333 for 21:9 etc -AspectRatio = 1.77778 - -;;;;;;;;;; Graphics ;;;;;;;;;; - -[Disable Subtitle Blur] -; Set "Enabled" to true to disable the background blur on cutscene subtitle lines. -Enabled = false - -[Sharpening] -; Adjust "Strength" to control the intensity of the forced post-process sharpening. -; Valid range: 0 to 2.0 Game Default = 1.0 -Strength = 0 \ No newline at end of file diff --git a/games/Expedition33/README.md b/games/Expedition33/README.md index 0509e24..296bb9d 100644 --- a/games/Expedition33/README.md +++ b/games/Expedition33/README.md @@ -1,101 +1,43 @@ # Clair Obscur: Expedition 33 — UltraWide -⚠️ **Partial support — reduced feature profile.** ClairObscurFix v0.0.10 is archived and predates the current game build; running it with upstream defaults **crashed on save load**. This repo ships a reduced profile with only the 32:9 HUD centering enabled. +✅ **Native ultrawide — no fix needed.** The game added official ultrawide support +in **patch 1.2.3**, and renders correctly at **5120×1440 (32:9)** on Proton with no +mod at all. Verified 2026-07-22. -- **Engine:** Unreal Engine 5 — **no DRM** (no SteamStub; `.text` entropy 6.74) +- **Engine:** Unreal Engine 5 (no DRM) - **Steam AppID:** 1903340 -- **Executable:** `SandFall-Win64-Shipping.exe` -- **Method:** `external` — vendored third-party fix + our 32:9 config +- **Method:** `native` — kept in the collection as a documented "works out of the box" entry -## We did not write this fix +## Just play it -The ultrawide work here is **[ClairObscurFix](https://github.com/Lyall/ClairObscurFix) by [Lyall](https://github.com/Lyall)** (MIT), vendored unmodified. It is mature and already handles the hard parts; reimplementing it would be duplicated effort for no benefit. **All credit for the fix itself goes to Lyall.** - -What this repo adds is the **32:9 configuration** verified on a Samsung 49" G93SC, packaging, and a one-command installer consistent with the other games here. - -> The upstream repo is **archived**, so it will not receive further updates. Vendoring it here means the version you need stays available. - -## Install (Linux / Proton) +Set **5120×1440** fullscreen in-game. No install, no launch option, nothing to do. ```bash -./install.sh Expedition33 +./install.sh Expedition33 # prints "supports ultrawide natively — no fix needed" ``` -Then **required** — Steam → Properties → Launch Options: +## History: why there is no fix here anymore -``` -WINEDLLOVERRIDES="dsound=n,b" %command% -``` +This entry previously vendored [ClairObscurFix](https://github.com/Lyall/ClairObscurFix) +by Lyall (MIT) — an excellent fix when it was written. Two things made it the wrong +choice for the current game: -Set **5120×1440** fullscreen in-game. +1. **It's archived** (last release v0.0.10, May 2025) and no longer tracks the game's + builds. Its pattern scans began failing, and it **crashed on save load**. +2. **Its config flags don't gate its hooks.** Even with only `Center HUD` enabled, the + `.asi` still installed `Level Load`, `Widgets`, cutscene, and PostProcess hooks into + now-shifted code. Disabling features never reduced the crash surface — the only + reliable fix was to not load it. -## Install (Windows) +Meanwhile the game shipped official ultrawide support, so the fix became **pure +liability**: risk with no remaining benefit. Removed entirely. -Extract the release zip into `…\Expedition 33\Sandfall\Binaries\Win64\`. +**Takeaway for the collection:** a vendored fix against a live game is a decaying +asset. When the game itself catches up, the right move is to drop the fix and mark +the game native — not to keep nursing a broken mod. -## Our 32:9 config +## If a future game patch regresses ultrawide -`ClairObscurFix.ini` ships with upstream defaults **except**: - -| Option | Upstream | Ours | Why | -|---|---|---|---| -| `[Center HUD] Enabled` | `false` | **`true`** | At 5120px wide, HUD elements anchored to screen edges end up absurdly far apart | - -Everything else is left at upstream defaults, which are already ultrawide-friendly: - -| Option | Default | Effect | -|---|---|---| -| `Cutscene Letterboxing` | `false` | No bars in cutscenes | -| `Fix Movies` | `true` | Crops letterboxing from pre-rendered video | -| `Adjust Resolution Checks` | `true` | Uses the monitor's max resolution rather than "native" | -| `Uncap Cutscene FPS` | `true` | Removes the 30fps cutscene cap | - -### Tuning - -Edit `…/Sandfall/Binaries/Win64/ClairObscurFix.ini` (requires a restart — this fix has no live reload): - -- **HUD too cramped?** Raise `[Center HUD] AspectRatio` from `1.77778` (16:9) to `2.33333` (21:9) — usually the sweet spot at 32:9. -- **Prefer the HUD spanning the full width?** Set `[Center HUD] Enabled = false`. -- **Want cinematic bars back?** `[Cutscene Letterboxing] Enabled = true`. - -## Uninstall - -```bash -./install.sh Expedition33 uninstall -``` - -## Known issue: version drift - -**ClairObscurFix v0.0.10 (May 2025) is archived and no longer tracks the game.** - -Observed on a current build (2026-07-21), with upstream defaults: - -``` -[error] Resolution Checks: Pattern scan failed. -[error] Resolution Scale Bug: Pattern scan failed. -``` - -…followed by a **crash when loading a save**. Removing the fix entirely made the -game load normally, isolating the fix as the cause. The crash coincides with the -fix's `Level Load` hook, which is consistent with a hook attaching to shifted -code in a newer binary. - -**Mitigation:** ship a reduced profile — everything disabled except `Center HUD`, -the only option genuinely needed at 32:9. The failing scans are disabled outright -since they were already inert. - -## Maintenance / revalidation - -Because upstream is archived, this entry decays as the game patches. Re-check -after any significant game update: - -1. Launch and load a save. If it crashes, remove the fix (`./install.sh Expedition33 uninstall`) and retry to confirm the fix is the cause rather than the game or Proton. -2. Read `Sandfall/Binaries/Win64/ClairObscurFix.log` — `Pattern scan failed` lines mark hooks that no longer match the binary. -3. Disable any newly-failing feature in `ClairObscurFix.ini`; a failed scan is inert, but a *wrongly-attached* hook is what crashes. -4. If `Center HUD` itself stops working, this entry should be marked unsupported. The game has **no DRM**, so writing a small dedicated HUD-centering patch is a viable replacement. - -## Still unverified at 32:9 - -- [ ] Is `Center HUD` at 16:9 right, or is 21:9 (`2.33333`) better? -- [ ] Camera FOV — Hor+ (see more) or Vert- (zoomed)? -- [ ] Pillarboxing in cutscenes / pre-rendered movies (`Fix Movies` currently **off**) +The game has **no DRM**, so if native support ever breaks, a small dedicated +HUD-centering patch (one hook, not a dozen) is a viable path — far cleaner than +reviving an archived general-purpose fix. diff --git a/games/Expedition33/game.conf b/games/Expedition33/game.conf index 43f1a21..9f3f575 100644 --- a/games/Expedition33/game.conf +++ b/games/Expedition33/game.conf @@ -6,14 +6,10 @@ EXE="SandFall-Win64-Shipping.exe" COMMON_SUBDIR="Expedition 33/Sandfall/Binaries/Win64" ENGINE="Unreal Engine 5 (no DRM)" -# Fix method: EXTERNAL — we ship an upstream third-party fix (MIT) plus our own -# 32:9-tuned config. We deliberately do NOT reimplement it; see README.md. -METHOD="external" -VENDOR_PAYLOAD="ClairObscurFix/Sandfall/Binaries/Win64" # contents copied into the exe dir -EXTERNAL_CONFIG="ClairObscurFix.ini" # our tuned copy overrides upstream's -EXTERNAL_FILES="ClairObscurFix.asi ClairObscurFix.ini dsound.dll" -LOADER="dsound.dll" -LAUNCH_OPTION='WINEDLLOVERRIDES="dsound=n,b" %command%' +# No fix needed: the game added official ultrawide support in patch 1.2.3 and +# renders correctly at 5120x1440 (32:9) natively. Kept in the collection as a +# documented native entry. See README.md for the history (a vendored fix used +# to live here and was removed for crashing on current builds). +METHOD="native" -PREFIX_INI="" -STATUS="PARTIAL — reduced profile (Center HUD only); upstream v0.0.10 is archived and crashes with full features on current builds" +STATUS="Native ultrawide since game patch 1.2.3 — no fix needed (verified at 5120x1440)" diff --git a/install.sh b/install.sh index bf7ac58..ef8063a 100755 --- a/install.sh +++ b/install.sh @@ -107,6 +107,12 @@ remove_ini() { METHOD="${METHOD:-suwsf}" +if [ "$METHOD" = "native" ]; then + echo "[i] ${TITLE:-$GAME} supports ultrawide natively — no fix to install or remove." + echo " ${STATUS:-}" + exit 0 +fi + if [ "$ACTION" = "uninstall" ]; then echo "[+] Uninstalling..." if [ "$METHOD" = "external" ]; then diff --git a/tools/build_release.sh b/tools/build_release.sh index 12e7dd1..526ed3e 100755 --- a/tools/build_release.sh +++ b/tools/build_release.sh @@ -15,6 +15,10 @@ GDIR="games/$GAME" . "$GDIR/game.conf" METHOD="${METHOD:-suwsf}" +if [ "${METHOD:-suwsf}" = "native" ]; then + echo "[i] $GAME is native (no fix) — nothing to package."; exit 0 +fi + OUT="dist/${GAME}_UltraWide_Fix" rm -rf "$OUT" "$OUT.zip" mkdir -p "$OUT" diff --git a/tools/publish.sh b/tools/publish.sh index b87cab2..91eb1a6 100755 --- a/tools/publish.sh +++ b/tools/publish.sh @@ -15,7 +15,12 @@ REPO="${GITEA_REPO:-UltraWidePatches}" # GAME may be a space-separated list; empty/"all" = every game in games/ GAME="${GAME:-all}" if [ "$GAME" = "all" ]; then - GAME=$(for d in games/*/; do [ -f "$d/game.conf" ] && basename "$d"; done | tr '\n' ' ') + GAME=$(for d in games/*/; do + [ -f "$d/game.conf" ] || continue + m=$(. "$d/game.conf" >/dev/null 2>&1; echo "${METHOD:-suwsf}") + [ "$m" = "native" ] && continue # native entries have no release zip + basename "$d" + done | tr '\n' ' ') fi TAG="${TAG:?set TAG explicitly, e.g. TAG=v1.2.0 (see CHANGELOG.md)}" # Single game -> its own README; multiple -> the collection README. diff --git a/vendor/ClairObscurFix.zip b/vendor/ClairObscurFix.zip deleted file mode 100644 index 5762346..0000000 Binary files a/vendor/ClairObscurFix.zip and /dev/null differ diff --git a/vendor/ClairObscurFix/EXTRACT_TO_GAME_FOLDER b/vendor/ClairObscurFix/EXTRACT_TO_GAME_FOLDER deleted file mode 100644 index e69de29..0000000 diff --git a/vendor/ClairObscurFix/LICENSE b/vendor/ClairObscurFix/LICENSE deleted file mode 100644 index 8e85c4d..0000000 --- a/vendor/ClairObscurFix/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -MIT License - -Copyright (c) 2025 Lyall - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. diff --git a/vendor/ClairObscurFix/Sandfall/Binaries/Win64/ClairObscurFix.asi b/vendor/ClairObscurFix/Sandfall/Binaries/Win64/ClairObscurFix.asi deleted file mode 100644 index 0760e4e..0000000 Binary files a/vendor/ClairObscurFix/Sandfall/Binaries/Win64/ClairObscurFix.asi and /dev/null differ diff --git a/vendor/ClairObscurFix/Sandfall/Binaries/Win64/ClairObscurFix.ini b/vendor/ClairObscurFix/Sandfall/Binaries/Win64/ClairObscurFix.ini deleted file mode 100644 index ac985dc..0000000 --- a/vendor/ClairObscurFix/Sandfall/Binaries/Win64/ClairObscurFix.ini +++ /dev/null @@ -1,49 +0,0 @@ -;;;;;;;;;; General ;;;;;;;;;; - -[Developer Console] -; Set "Enabled" to true to enable the console. -; By default you can access it with the key "Tilde". -Enabled = false - -[Skip Intro Logos] -; Skips splash screen logos, epilepsy warning and autosave warning. -Enabled = false - -[Uncap Cutscene FPS] -; Removes 30fps cap in cutscenes. -Enabled = true - -[Adjust Resolution Checks] -; Adjusts resolution checks to use the monitor's maximum supported resolution, rather than the "native" resolution. -Enabled = true - -[Background Audio] -; Set "Enabled" to true to allow audio to continue playing when the game window has lost focus. -Enabled = false - -;;;;;;;;;; Ultrawide/Narrower ;;;;;;;;;; - -[Cutscene Letterboxing] -; Set "Enabled" to true to re-enable pillarboxing/letterboxing in cutscenes. -Enabled = false - -[Fix Movies] -; Crops letterboxing from pre-rendered movies at ultrawide resolutions. -Enabled = true - -[Center HUD] -; Set "Enabled" to true to center certain parts of the HUD to 16:9 at ultrawide resolutions. -Enabled = false -; Adjust "AspectRatio" to set the aspect ratio of the HUD. i.e 1.77778 for 16:9, 2.33333 for 21:9 etc -AspectRatio = 1.77778 - -;;;;;;;;;; Graphics ;;;;;;;;;; - -[Disable Subtitle Blur] -; Set "Enabled" to true to disable the background blur on cutscene subtitle lines. -Enabled = false - -[Sharpening] -; Adjust "Strength" to control the intensity of the forced post-process sharpening. -; Valid range: 0 to 2.0 Game Default = 1.0 -Strength = 0 \ No newline at end of file diff --git a/vendor/ClairObscurFix/Sandfall/Binaries/Win64/dsound.dll b/vendor/ClairObscurFix/Sandfall/Binaries/Win64/dsound.dll deleted file mode 100644 index 321341a..0000000 Binary files a/vendor/ClairObscurFix/Sandfall/Binaries/Win64/dsound.dll and /dev/null differ diff --git a/vendor/ClairObscurFix/UltimateASILoader_LICENSE.md b/vendor/ClairObscurFix/UltimateASILoader_LICENSE.md deleted file mode 100644 index 3f48ab3..0000000 --- a/vendor/ClairObscurFix/UltimateASILoader_LICENSE.md +++ /dev/null @@ -1,21 +0,0 @@ -MIT License - -Copyright (c) 2023 ThirteenAG - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE.