Compare commits
1
Commits
v1.2.0
..
2f781f95c9
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
2f781f95c9 |
@@ -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 |
|
| [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 |
|
| [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 | External ([ClairObscurFix](https://github.com/Lyall/ClairObscurFix) by Lyall) | ⚠️ Partial — reduced profile, see notes |
|
||||||
|
|
||||||
## Install
|
## 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