Add ONE PIECE ODYSSEY (UE4 + SteamStub, same profile as GB4)
Recon: UE4, SteamStub-wrapped (.bind present, .text entropy 8.00), no native ultrawide, and the community workaround is raising FOV at 32:9 - the Vert- signature. That is the Gundam Breaker 4 scenario exactly, so it reuses the proven SUWSF method and UE4-generic patterns. Patterns cannot be verified statically because the exe is encrypted; marked unverified until a runtime check confirms the matches. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -16,6 +16,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 |
|
||||
|
||||
## Install
|
||||
|
||||
@@ -0,0 +1,65 @@
|
||||
# ONE PIECE ODYSSEY — UltraWide Fix
|
||||
|
||||
⚠️ **New — patterns not yet verified at runtime.**
|
||||
|
||||
- **Engine:** Unreal Engine 4
|
||||
- **Steam AppID:** 814000
|
||||
- **Executable:** `odyssey-Win64-Shipping.exe` (**SteamStub-encrypted**)
|
||||
- **Method:** SUWSF runtime memory patch
|
||||
|
||||
## Why this mirrors Gundam Breaker 4
|
||||
|
||||
Same engine, same DRM, same symptom — the game has no native ultrawide support and
|
||||
the community workaround is *raising FOV* at 32:9, which is the Vert- signature:
|
||||
the camera holds horizontal FOV constant, so a wider display crops vertically
|
||||
instead of showing more.
|
||||
|
||||
Because the exe is SteamStub-wrapped (`.bind` section, `.text` entropy 8.00), it is
|
||||
encrypted on disk and cannot be patched statically. SUWSF patches the decrypted
|
||||
image in memory at launch, which is also why the fix survives into gameplay.
|
||||
|
||||
The patterns are the UE4-generic ones proven on Gundam Breaker 4.
|
||||
|
||||
## Install (Linux / Proton)
|
||||
|
||||
```bash
|
||||
./install.sh OnePieceOdyssey
|
||||
```
|
||||
|
||||
Then **required** — Steam → Properties → Launch Options:
|
||||
|
||||
```
|
||||
WINEDLLOVERRIDES="dsound=n,b" %command%
|
||||
```
|
||||
|
||||
Set **5120×1440** fullscreen in-game.
|
||||
|
||||
## Patches
|
||||
|
||||
| Patch | Effect |
|
||||
|---|---|
|
||||
| `AspectRatioAxisConstraint` | Forces `MaintainYFOV` → Hor+ FOV. **Do not use at 16:9 or narrower.** |
|
||||
| `ConstrainAspectRatio` | NOPs the pillarbox/letterbox clamp |
|
||||
| `HardcodedAspect_16by9_*` | Optional fallbacks, disabled by default |
|
||||
|
||||
## Verifying / troubleshooting
|
||||
|
||||
Add `PROTON_LOG=1` to the launch options, then:
|
||||
|
||||
```bash
|
||||
./tools/read_protonlog.sh 814000
|
||||
```
|
||||
|
||||
SUWSF reports each pattern as `Found patch … N matches` or `No pattern found, skipping`.
|
||||
If `AspectRatioAxisConstraint` misses, derive the exact bytes from a runtime dump:
|
||||
|
||||
```bash
|
||||
python3 tools/dump_decrypted.py odyssey-Win64-Shipping.exe # while the game runs
|
||||
python3 tools/aob.py <dump> games/OnePieceOdyssey/SUWSF.ini
|
||||
```
|
||||
|
||||
## Open questions
|
||||
|
||||
- [ ] Do the GB4 patterns match this build?
|
||||
- [ ] Is the HUD sane at 32:9, or stretched/misplaced?
|
||||
- [ ] Any pillarboxing left in cutscenes?
|
||||
@@ -0,0 +1,71 @@
|
||||
[UserSettings]
|
||||
; ==========================================================================
|
||||
; ONE PIECE ODYSSEY - UltraWide Fix (SUWSF patch)
|
||||
; Target display: Samsung 49" Odyssey G93SC (5120x1440, 32:9)
|
||||
; Engine: Unreal Engine 4 | Exe is SteamStub-encrypted -> runtime patch
|
||||
; ==========================================================================
|
||||
; Your screen resolution used in patch calculations. "auto" reads primary
|
||||
; display; set explicitly if auto misreads under Proton/DPI scaling.
|
||||
Resolution="5120x1440"
|
||||
; Globally enable or disable all patches (default: true)
|
||||
Enabled=true
|
||||
|
||||
; --------------------------------------------------------------------------
|
||||
; WARNING: PATCHES BELOW. These are CANDIDATE UE4 patterns adapted from
|
||||
; known-good UE4 fixes (Trepang2 / Lies of P). Because GB4's .text is
|
||||
; SteamStub-encrypted on disk we cannot verify the exact bytes statically;
|
||||
; SUWSF scans the DECRYPTED image in memory at runtime, so if GB4's UE4.27
|
||||
; codegen matches these generic patterns they apply directly.
|
||||
;
|
||||
; If a patch reports 0 matches (see SUWSF log / no visual change), run
|
||||
; tools/dump_decrypted.sh while the game is running and send me the dump so
|
||||
; I can derive GB4's exact pattern. Each patch is independent - a miss on one
|
||||
; does not stop the others.
|
||||
; --------------------------------------------------------------------------
|
||||
|
||||
; [1] HOR+ FOV -- the primary fix.
|
||||
; Forces ULocalPlayer AspectRatioAxisConstraint to 0 (AspectRatio_MaintainYFOV).
|
||||
; This makes the camera keep VERTICAL FOV constant and expand horizontally
|
||||
; (Hor+), removing the zoomed-in feel at 32:9. Do NOT use at 16:9 or narrower.
|
||||
; Value BA 00 00 00 00 = "mov edx, 0" ; 90 90 90 = pad nops.
|
||||
[Patch:AspectRatioAxisConstraint]
|
||||
Enabled=true
|
||||
Pattern="0F ?? ?? ?? 0F ?? ?? ?? ?? ?? 41 ?? ?? ?? ?? ?? 00 00 48 ?? ?? ?? ?? 00 00 4C ?? ??"
|
||||
Offset=10
|
||||
Value="BA 00 00 00 00 90 90 90"
|
||||
ValueType="byte"
|
||||
Match="1"
|
||||
Module="auto"
|
||||
|
||||
; [2] Disable pillarboxing/letterboxing (bConstrainAspectRatio = 0).
|
||||
; Prevents the game clamping the render to 16:9 with black side bars.
|
||||
[Patch:ConstrainAspectRatio]
|
||||
Enabled=true
|
||||
Pattern="33 ?? ?? 83 ?? 02 31 ?? ?? 0F ?? ?? ?? ?? 00 00"
|
||||
Offset=0
|
||||
Value="90 90 90 90 90 90"
|
||||
ValueType="byte"
|
||||
Match="1"
|
||||
Module="auto"
|
||||
|
||||
; [3] OPTIONAL fallback: some UE builds hardcode 16:9 (1.777778) as a float
|
||||
; (39 8E E3 3F) or (3B 8E E3 3F) and clamp to it. Disabled by default because
|
||||
; it can double-apply with patch [1]. Enable ONLY if [1] misses and you still
|
||||
; see a squeezed/zoomed image. Writes your true aspect ratio in its place.
|
||||
[Patch:HardcodedAspect_16by9_a]
|
||||
Enabled=false
|
||||
Pattern="39 8E E3 3F"
|
||||
Offset=0
|
||||
Value="aspectratio"
|
||||
ValueType="float"
|
||||
Match="all"
|
||||
Module="auto"
|
||||
|
||||
[Patch:HardcodedAspect_16by9_b]
|
||||
Enabled=false
|
||||
Pattern="3B 8E E3 3F"
|
||||
Offset=0
|
||||
Value="aspectratio"
|
||||
ValueType="float"
|
||||
Match="all"
|
||||
Module="auto"
|
||||
@@ -0,0 +1,20 @@
|
||||
# ONE PIECE ODYSSEY — metadata for ../../install.sh
|
||||
TITLE="ONE PIECE ODYSSEY"
|
||||
APPID=814000
|
||||
|
||||
EXE="odyssey-Win64-Shipping.exe"
|
||||
COMMON_SUBDIR="ONE PIECE ODYSSEY/odyssey/Binaries/Win64"
|
||||
ENGINE="Unreal Engine 4 (SteamStub DRM — runtime patching required)"
|
||||
|
||||
METHOD="suwsf"
|
||||
LOADER="dsound.dll"
|
||||
LAUNCH_OPTION='WINEDLLOVERRIDES="dsound=n,b" %command%'
|
||||
|
||||
# UE4 config-level partial win: fixes menus immediately; SUWSF carries gameplay.
|
||||
PREFIX_INI="drive_c/users/steamuser/AppData/Local/odyssey/Saved/Config/WindowsNoEditor/Engine.ini"
|
||||
read -r -d '' INI_BLOCK <<'BLOCK' || true
|
||||
[/Script/Engine.LocalPlayer]
|
||||
AspectRatioAxisConstraint=AspectRatio_MaintainYFOV
|
||||
BLOCK
|
||||
|
||||
STATUS="NEW — UE4+SteamStub like GB4; patterns unverified at runtime"
|
||||
Reference in New Issue
Block a user