# 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?
