Gundam Breaker 4 UltraWide Fix v1.0.0

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>
This commit is contained in:
2026-07-20 20:21:23 -04:00
co-authored by Claude Opus 4.8
commit dc28d60392
17 changed files with 829 additions and 0 deletions
+21
View File
@@ -0,0 +1,21 @@
MIT License
Copyright (c) 2021 PhantomGamers
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.
+113
View File
@@ -0,0 +1,113 @@
# SUWSF
Somewhat Universal Widescreen Fix is intended to enable widescreen aspect ratios (e.g. 21:9, 32:9, 48:9) in games where it is unsupported.
## WARNING IT IS NOT RECOMMENDED TO USE THIS FIX IN GAMES THAT CONTAIN ANTICHEAT
## Installation
- **Ensure you have the latest [64bit VC Redist](https://aka.ms/vs/17/release/vc_redist.x64.exe) or [32bit VC Redist](https://aka.ms/vs/17/release/vc_redist.x86.exe) installed.**
- Download [the latest release](https://github.com/phantomgamers/suwsf/releases/latest)
- For 32bit (x86) games download SUWSF-x86.zip, for 64bit (x86_64) games download SUWSF-x64.zip.
- Extract it so that `SUWSF.asi`, `SUWSF.ini`, and `dsound.dll` are in the same folder as the game executable that you are trying to fix.
- If `dsound.dll` would collide with a file included in the game try a different name on [this list](https://github.com/ThirteenAG/Ultimate-ASI-Loader#description) which is marked as supporting the architecture (x86 or x64) of the game you are trying to fix.
Note that it must be alongside the actual game executable, it will not work if it is only placed alongside a game's launcher.
## Uninstall
To uninstall, delete the `SUWSF.asi`, `SUWSF.ini`, and `dsound.dll` files that you extracted to the game executable location.
## Configuration
In `SUWSF.ini` you can configure the following settings:
### **[UserSettings]**
A group of settings specific to the user.
#### **Resolution**
The user's screen resolution that should be used in patch calculations.
Valid options: A screen resolution (e.g. "3440x1440"), "auto" (automatically detect from primary screen, may be affected by DPI scaling)
Default: "auto"
### **[Patch]**
A group of settings related to a patch. Patches can optionally have names (e.g. `[Patch:AspectRatio]` or `[Patch:FOV]`). Names do not matter as long as they contain the word `Patch`.
As many patch groups as needed can be used.
#### **Enabled**
Whether a patch should be enabled. Use this for optional patches that users can choose to enable or disable.
Valid options: "true", "false"
Default: "true"
#### **Pattern**
This should be set to a pattern that matches the bytes you would like to patch.
Commonly this will be 16/9 in bytes, which can either be `39 8E E3 3F` or `3B 8E E3 3F` depending on the game.
Wildcards are supported for bytes that can vary between game versions (e.g. `39 8E ?? 3F`).
#### **Offset**
The offset from the pattern match that should be written. Use this if you need to include bytes before the thing you are trying to patch.
e.g. to get to `39` in `90 90 39 8E E3 3F` set to 2
Default: 0
#### **Value**
The value to write to the matched bytes.
If `ValueType` is `float` then this can contain numbers or included variables. This can also contain an expression!
If `ValueType` is `byte` then this should contain an array of bytes! e.g. `90 90 90 90`
Included variables:
`aspectratio` - This will be replaced with the user's screen's aspect ratio.
`width` - This will be replaced with the user's screen's width.
`height` - This will be replaced with the user's screen's height.
Example:
`Value="width/height"`
#### **ValueType**
What type the Value setting contains.
Valid options: "float", "int", "byte"
Default: `float`
#### **Match**
Which match should be targeted. Useful for cases where a pattern can have multiple matches but only one should be changed.
Valid options: number of match (starting from 1), "last", "all"
**Note that `last` might match different bytes than the last match in a hex editor.** This is because SUWSF works from memory while a hex editor works on the file on disk.
Default: "all"
#### **Module**
Which file should be targeted by patch. Useful for cases where the patch needs to be applied to a file other than the main game executable. (e.g. "UnityPlayer.dll")
Valid options: "auto" (detects main game executable name), any string.
Default: "auto"
## Troubleshooting
If you get an error such as "Unable to load SUWSF.asi. Error:126", ensure you have the latest [64bit VC Redist](https://aka.ms/vs/17/release/vc_redist.x64.exe) or [32bit VC Redist](https://aka.ms/vs/17/release/vc_redist.x86.exe) installed depending on which version of SUWSF you are trying to use.
If this does not work for you, try renaming `dsound.dll` to `dinput8.dll` or any other name on [this list](https://github.com/ThirteenAG/Ultimate-ASI-Loader#description) and see if the problem remains.
`version.dll` is a good alternative to try.
## Credits
- [@ThirteenAG](https://github.com/ThirteenAG) for [Hooking.Patterns](https://github.com/ThirteenAG/Hooking.Patterns), [IniReader](https://github.com/ThirteenAG/IniReader) and [UltimateASILoader](https://github.com/ThirteenAG/Ultimate-ASI-Loader)
- [@sergey-shandar](https://github.com/sergey-shandar) for [getboost](https://github.com/sergey-shandar/getboost)
- [@codeplea](https://github.com/codeplea) for [tinyexpr](https://github.com/codeplea/tinyexpr)
BIN
View File
Binary file not shown.
+25
View File
@@ -0,0 +1,25 @@
[UserSettings]
; Set to your screen resolution (e.g. "3440x1440") (default: "auto")
Resolution="auto"
; Globally enable or disable patches (default: true)
Enabled=true
; WARNING: PATCHES BELOW. DO NOT MODIFY UNLESS YOU KNOW WHAT YOU ARE DOING.
; Normally users should not need to edit this
; This is the default example patch but any number of these can be added and named anything as long as they contain the word "Patch"
[Patch:AspectRatio]
; Whether this patch should be enabled (default: true)
Enabled=true
; Byte pattern to search for. E.g. "39 8E E3 3F" (16/9 as float). Wildcards accepted (use ?? for bytes that can change)
Pattern="39 8E E3 3F"
; Offset in number of bytes to target. e.g. to get to "39" in "90 90 39 8E E3 3F" set to 2 (default: 0)
Offset=0
; Value to write. Numbers or variables (aspectratio, width, height) are accepted. Bytes are accepted if ValueType="byte"
Value="aspectratio"
; Type of value. Accepted values are: "float", "double", "int", "byte" (default: "float")
ValueType="float"
; Which match to write to. Accepted values are: number of match (starting from 1), last, all. (default: "all")
Match="all"
; Which file to search for pattern in. "auto" detects process name automatically (default: "auto")
Module="auto"
BIN
View File
Binary file not shown.