Does Guilty Gear Strive (GGST) start at 1080p and then switch to your real resolution a few seconds later? This small mod for the PC version (Steam, and the Microsoft Store / Xbox app / PC Game Pass version) fixes that. The game launches straight into your 1440p (or other) resolution and your chosen fullscreen or borderless mode, with no resolution switch, black flash or rearranged windows on your other monitors.
⬇ Download the latest release · Install · How it works · FAQ · Evidence for every claim
- Guilty Gear Strive launches in 1920×1080 (1080p) even though your settings say 2560×1440, then switches to the correct resolution a few seconds later, around the time your save loads.
- In exclusive fullscreen the monitor changes display mode twice at every launch: black flicker, and windows or icons on other monitors get moved or resized.
- Editing
GameUserSettings.ini, making it read-only, the-ResX/-ResYlaunch options, or switching to borderless in-game doesn't stop it.
Tested at 2560×1440 on Windows 11 (Steam), and at 3840×2160 by a player on the Microsoft Store version. It should work at any resolution above 1080p (both causes are resolution-independent); ultrawide hasn't been tested yet. Reports welcome.
Strive ignores your settings for the first few seconds after launch:
- The window opens at your saved resolution.
- About a second later, the game switches to 1920×1080. In exclusive fullscreen your monitor changes mode, the screen flashes, and windows on your other monitors get shuffled around.
- Several seconds later it loads your settings from
SYSTEM.savand switches again to your real resolution and window mode.
None of the usual fixes work. The engine already reads GameUserSettings.ini correctly, so editing
it (or making it read-only) can't help; -ResX/-ResY launch options and picking Borderless in the
game's options don't stop it either; and SYSTEM.sav can't be edited (it has no standard Unreal
save header and its contents look random, i.e. it's encrypted or otherwise obfuscated).
With this mod the game starts in your real resolution and window mode, and nothing switches.
Download from the Releases page, or from the official GameBanana page (same files). Check the SHA-256 hash against the one listed on the release. There's one zip per version of the game.
Steam: GGSTNativeRes-<version>-steam.zip
- Put
xapofx1_5.dllfrom the zip in the folder that containsGGST-Win64-Shipping.exe:(In Steam, right-click the game, then Manage → Browse local files to find it.)...\steamapps\common\GUILTY GEAR STRIVE\RED\Binaries\Win64\ - Launch the game normally.
Uninstall: delete xapofx1_5.dll, GGSTNativeRes.ini and GGSTNativeRes.log from that folder.
Microsoft Store / Xbox app / PC Game Pass: GGSTNativeRes-<version>-xbox.zip
- Extract the zip into the game's install folder, e.g.
C:\XboxGames\GUILTY GEAR STRIVE\, so thatdsound.dllends up in(the same place StriveLabs' Xbox files go).C:\XboxGames\GUILTY GEAR STRIVE\Content\RED\Binaries\WinGDK\ - Launch the game normally.
Uninstall: delete dsound.dll, GGSTNativeRes.ini and GGSTNativeRes.log from the WinGDK
folder. If the game folder isn't writable, the log is in %LOCALAPPDATA%\GGST\Saved instead.
Linux / Steam Deck (Proton), untested: Proton won't load the DLL unless told to. Add this to the game's Steam launch options:
WINEDLLOVERRIDES="xapofx1_5=n,b" %command%
If you also use StriveLabs on Proton, combine the two: WINEDLLOVERRIDES="sensapi=n,b;xapofx1_5=n,b" %command%
On first launch the mod creates GGSTNativeRes.ini next to the DLL:
[Settings]
Width=0 ; 0 = your monitor's current desktop resolution
Height=0
Mode=-1 ; -1 = same as your in-game setting, 0 = Fullscreen, 1 = Borderless, 2 = Windowed
Log=1 ; write GGSTNativeRes.log
FixBootDefault=1 ; fix 1 below (1 = on, 0 = off)
FixFullscreenCap=1 ; fix 2 below (1 = on, 0 = off)The defaults are right for most people: your desktop resolution, and whichever window mode you
picked in the game's options. The two Fix... switches let you turn each fix off individually,
for example to compare against the stock game (see VERIFICATION.md).
There are actually two separate causes of the 1080p switch, and the mod fixes both. Every claim in this section is backed by evidence you can check yourself in VERIFICATION.md.
1. Strive's own boot-time default. The game stores your display setting as an index into the list of display modes your monitor supports, together with a fingerprint of that list. Every time the settings are applied, the game checks the fingerprint. If it doesn't match, for example because the monitor changed and the saved index might now point at the wrong mode, the game resets to a default: 1920×1080 (or the largest mode, if the monitor can't do 1080p), window mode Fullscreen. At boot this check runs before your save has loaded, so it always fails and you always get the default for the first few seconds. The mod replaces the default's width, height and window mode with yours. (Reading the code, the same reset should also happen whenever your monitor's mode list changes, e.g. after a driver update; that part hasn't been tested.)
2. An Unreal Engine 4 quirk with some monitors. Before the game's own code runs, the engine
reads GameUserSettings.ini and applies it. In exclusive Fullscreen only, it caps the resolution
at what it thinks your monitor's native resolution is, and it gets that from the first
detailed timing descriptor in the monitor's EDID (the identity data every monitor reports).
Some monitors put a 1920×1080 mode in that slot even though they're 1440p or 4K. The ASUS
XG27AQDMG this mod was developed on lists 1920×1080 @ 240 Hz there, and its real 2560×1440 @ 240 Hz
mode only appears in an extension block. So UE4 decides it's a 1080p monitor. Run
tools/check_edid.py to see what UE4 reads from yours. The mod makes
exclusive Fullscreen use your desktop size as the cap instead, which is what Borderless and
Windowed already do. (UE4's -ForceRes launch option also gets around this one, but it doesn't
help with cause 1.)
Side effect of fix 2: at boot, exclusive Fullscreen can no longer start at a resolution above
your desktop resolution (e.g. a 4K TV used with a 1080p desktop). The game's own settings are
applied a few seconds later as normal, so you'd just see one switch at boot, like without the mod.
If that's your setup, set FixFullscreenCap=0.
What the mod does and doesn't do:
- No function hooks or detours. It changes 5 constants and 2 same-size instructions in the game's memory at startup (one sets the window mode, one is a jump), then stops running.
- Touches nothing else. Input, netcode, gameplay, saves and game files are all untouched.
- Fails safe. It searches for the exact code it expects and applies each fix only if its patterns
are found exactly once, in the expected layout. If a game update changes that code, that fix is
skipped and the game behaves as stock.
GGSTNativeRes.logsays what was and wasn't patched. (These checks confirm the code looks the same, not that it still means the same thing. An update that kept these exact bytes but changed their purpose would be extremely unlikely, but it isn't impossible.) - Only runs inside Strive. It does nothing if loaded by any other program.
On Steam it loads as a proxy for xapofx1_5.dll, a DirectX audio-effects DLL the game imports. The
game loads DLLs from its own folder first, and the mod passes the DLL's single function, CreateFX,
through to the real copy in System32. The Microsoft Store version doesn't load that DLL, so its
build loads as a proxy for dsound.dll (DirectSound) instead and passes all 12 of its functions
through to the real one. The patching code is the same in both.
Strive has no client-side anti-cheat that we could find: no EasyAntiCheat, BattlEye or kernel driver in the install folder or loaded in the game. What its servers check is unknown.
Mod loaders work by placing a DLL with a specific name in the game folder, so two mods that use the same name overwrite each other. Names used by popular Strive mods:
| Mod | DLL names |
|---|---|
| StriveLabs | dwmapi.dll, xinput1_3.dll, sensapi.dll |
| UE4SS-based mods | dwmapi.dll (sometimes xinput1_3.dll) |
| GGST-Enhancer | UMPDC.dll |
| GGSTNativeRes | xapofx1_5.dll (Steam), dsound.dll (Microsoft Store) |
GGSTNativeRes doesn't hook anything, so it shouldn't interfere with mods that do.
Unverum (the mod manager, TekkaGB/Unverum, checked against
its source, not tested): it installs .pak mods into Content\Paks\~mods, and its own UE4SS
(dwmapi.dll, ue4ss.dll) into Binaries\Win64 when a mod needs it. Each time it applies mods it
deletes opengl32.dll, patternsleuth_bind.dll, ue4ss.dll, UE4SS-settings.ini, dwmapi.dll,
Win64\Mods and LogicMods. None of those are GGSTNativeRes files, so it leaves this mod alone.
Beware of look-alike "Unverum Mod Manager 2026" repos; the original is TekkaGB's.
Tested together: StriveLabs v2-47 (UE4SS) on Windows. Both load, StriveLabs starts normally, and the resolution fixes still apply before the engine's boot-time resolution code runs.
Two reasons, both before your settings are loaded. Strive's own code applies a built-in 1920×1080 Fullscreen default before your save file loads. Separately, Unreal Engine 4 limits exclusive fullscreen to the "native" resolution it reads from your monitor's EDID, and some monitors report 1080p there. Details in How it works; proof in VERIFICATION.md.
Yes: without it the game still starts in 1080p Fullscreen. (Version 1.0.0 had a gap here: Borderless and Windowed players got the right resolution at boot, but the game still briefly entered exclusive Fullscreen at that resolution before the save loaded. 1.1.0 fixes that.)
The game reads that file correctly. The 1080p comes from the two steps above, which happen after the file is read, so there's nothing in the file to fix.
We found no client-side anti-cheat in Strive (no EasyAntiCheat, BattlEye or kernel driver). The mod only changes display-setup code at startup and never touches gameplay, input, netcode or save files. No problems have come up in matches played with it so far. We can't speak for what Arc System Works' servers check, though, so use it at your own risk like any mod.
No. It changes 5 numbers and 2 instructions in the resolution setup code, then stops running.
Yes. It loads as xapofx1_5.dll (Steam) or dsound.dll (Microsoft Store), names no other popular
Strive mod uses. It's tested together with StriveLabs on Steam, and Unverum's file cleanup doesn't
touch it. See Compatibility.
If an update changes the code the mod patches, the mod skips that fix and the game behaves as
normal (it never crashes the game over it). GGSTNativeRes.log will say "Not patched", and an
updated release will follow.
Yes, since 1.1.0. Use the -xbox.zip; see Install. That version runs a different
executable (RED-WinGDK-Shipping.exe) that doesn't load the DLL the Steam build uses, so it has its
own build, loaded as dsound.dll. A player on that version confirmed both fixes apply and the
1080p switch is gone (at 3840×2160). If it doesn't work for you, open an issue with
your GGSTNativeRes.log and the report from tools/xbox-check.ps1.
Untested. Proton needs a launch option to load the DLL; see Install.
Guilty Gear Xrd Rev 2 doesn't: it's an Unreal Engine 3 game without either cause (tested). Other games haven't been checked.
Unsigned DLLs loaded under a system DLL's name sometimes trigger warnings. Check the SHA-256 hash against the one on the release page, or build it yourself: the build is reproducible, so your build will match the release byte for byte (see Building).
Requires Visual Studio 2022 or newer with the Desktop development with C++ workload.
build.bat Steam release build -> build\xapofx1_5.dll
build.bat xbox Microsoft Store release build -> build\xbox\dsound.dll
build.bat diag diagnostic build (add xbox for the Microsoft Store one)
release.ps1 builds both and packages dist\GGSTNativeRes-<version>-steam.zip,
dist\GGSTNativeRes-<version>-xbox.zip and dist\SHA256SUMS.txt.
Reproducible builds: the build uses /Brepro, so the same source and compiler always produce a
byte-identical DLL. To check that a release DLL was built from this source, check out the release's
tag, run build.bat with the same MSVC toolset (listed in the release notes), and compare the
SHA-256 of build\xapofx1_5.dll (or build\xbox\dsound.dll) with the published one. A different compiler version will produce
a different (but equivalent) binary.
The diagnostic build also logs every resolution change the game requests (with the calling address) and every display-mode change, on one timeline. It's meant for development and adds a function hook, so it's not for release.
tools/ contains the scripts used to find the code and verify the fix, and notes for redoing the
analysis after a game update. See tools/NOTES.md.
Unofficial and not affiliated with or endorsed by Arc System Works. Use at your own risk.