Howdy,
With a controller plugged in, the game launches, plays intro audio, shows a bstuck fade-in (sometimes with corrupted geometry along the bottom edge) or a black window, then crashes. Unplugging the controller before launch makes the game run perfectly. Renaming x64/FF9_Data/Plugins/JoyShockLibrary.dll to disable it also fully resolves the issue and the controller then works normally through standard XInput.
- OS: Bazzite (Fedora Atomic-based, immutable)
- Proton: tested with stock Proton (Steam default), Proton Experimental, and GE-Proton — same crash on all three
- Memoria version: 2025-07-13 (installed via the official dotaxis/memoria.sh Linux installer)
- Mods: reproduced both with MoguriMain enabled and with all mods disabled
- Controller: Switch Pro connected via USB
Steps to reproduce
- Fresh FFIX install on Linux via Steam/Proton.
- Install Memoria using the official Linux installer script.
- Connect controller.
- Launch FFIX from Steam.
Result: Memoria engine runs as expected. Launching the game opens a window, audio plays, process crashes within ~2 seconds, music keeps playing. No managed exception in Memoria.log
Expected: Game reaches title screen normally.
Diagnosis
PROTON_LOG=1 capture shows no segfault — the last meaningful event is:
trace:loaddll:build_module Loaded L"...\FF9_Data\Plugins\JoyShockLibrary.dll" at 0x6ffff9b00000: native
…followed by a fork and a clean process exit (pid X != Y, skipping destruction (fork without exec?)). DXVK initialized successfully and was already mid-ResetSwapChain. No c0000005 / page-fault. The only "exceptions" in the log are benign DBG_PRINTEXCEPTION_C lines from Memoria's own trace logging.
Things ruled out during troubleshooting
- Proton version (stock / Experimental / GE-Proton — identical behavior)
- The 2K video pack (disabled, no change)
- MoguriMain itself (disabled, no change)
- Steam Input toggle (no effect — JoyShockLibrary opens the HID device directly, bypassing Steam Input)
- Re-running the Memoria patcher (no change)
Workaround
Rename x64/FF9_Data/Plugins/JoyShockLibrary.dll to something else. Game launches and controller works normally via XInput through Steam Input.
Suggestions
Wrap JoyShockLibrary initialization in a try/catch so a failure inside the native lib doesn't take the process down silently.
On Linux/Proton, consider skipping JoyShockLibrary by default and exposing it as an opt-in launcher setting, since standard XInput via Steam Input covers the common case and JoyShockLibrary's hidraw access is fragile under Proton.
At minimum, log JoyShockLibrary init success/failure to Memoria.log so this kind of issue is visible without a wine debug capture.
Tail of Memoria.log showing clean init through to where the process dies:
28.05.2026 07:47:56 |M| [SteamSdkWrapper] Initialized: True
28.05.2026 07:47:56 |M| [KeyBinding] Succesfully parsed movement key bindings (W, A, S, D)
28.05.2026 07:47:56 |M| [KeyBinding] Succesfully parsed pause key bindings (Backspace)
28.05.2026 07:47:56 |M| [KeyBinding] Succesfully parsed help key bindings (Alpha1)
28.05.2026 07:47:56 |M| [FontInterceptor] Dynamic font initialization.
28.05.2026 07:47:56 |M| [FontInterceptor] Pass through {Configuration.Font.Enabled = 0}.
28.05.2026 07:47:56 |M| [Initialization] Memoria version: 2025-07-13
28.05.2026 07:47:56 |M| [Initialization] OS version: Microsoft Windows NT 10.0.19045.0
28.05.2026 07:47:56 |M| [Initialization] Mods: 'MoguriMain'
28.05.2026 07:47:56 |M| [DataPatchers] Initialized
28.05.2026 07:47:57 |M| [FontInterceptor] Loading font [Original: TBUDGoStd-Bold (UnityEngine.Font)]
28.05.2026 07:47:57 |M| [SaXAudio] Initialized
28.05.2026 07:47:57 |M| [UIRoot] Changing a clip region of the UI root.
28.05.2026 07:47:57 |M| [WindowProc] Windows procedure registered
28.05.2026 07:47:57 |M| [GameLoopManager] RaiseStartEvent
28.05.2026 07:47:58 |M| Updating text localization [English(US)]
28.05.2026 07:47:58 |M| InitializeItemText
28.05.2026 07:47:58 |M| InitializeImportantItemText
28.05.2026 07:47:58 |M| InitializeAbilityText
28.05.2026 07:47:58 |M| InitializeCommandText
28.05.2026 07:47:58 |M| InitializeLocationText
28.05.2026 07:47:58 |M| InitializeEtcText
28.05.2026 07:47:58 |M| InitializeCharacterNamesText
28.05.2026 07:47:58 |M| Total text update time: 0.07s
28.05.2026 07:47:58 |M| [AudioResourceExporter] Pass through {Configuration.Export.Audio = 0}.
Relevant pieces of ~/steam-377840.log — DXVK initialized fine, then JoyShockLibrary loads and the process exits cleanly:
info: DXVK: Using 20 compiler threads
39958.185:0274:02e0:warn:threadname:NtSetInformationThread Thread renamed to L"dxvk-descriptor"
39958.185:0274:02e4:warn:threadname:NtSetInformationThread Thread renamed to L"dxvk-cs"
info: D3D9DeviceEx::ResetSwapChain:
info: - Format: D3D9Format::A8R8G8B8
info: ^ Format: D3D9Format::D24S8
39960.238:0274:0404:warn:threadname:NtSetInformationThread Thread renamed to L"dxvk-frame"
info: D3D9DeviceEx::ResetSwapChain:
info: - Format: D3D9Format::A8R8G8B8
info: ^ Format: D3D9Format::D24S8
39961.204:0274:0278:trace:loaddll:build_module Loaded L"S:\\common\\FINAL FANTASY IX\\x64\\FF9_Data\\Plugins\\JoyShockLibrary.dll" at 00006FFFF9B00000: native
39967.158:0120:0180:trace:mscoree:DllMain (00006FFFFDA70000, 3, 0000000000000000)
pid 131739 != 131738, skipping destruction (fork without exec?)
Thank you all so much for this amazing mod. I am having a blast. Hope this bug report helps!
Howdy,
With a controller plugged in, the game launches, plays intro audio, shows a bstuck fade-in (sometimes with corrupted geometry along the bottom edge) or a black window, then crashes. Unplugging the controller before launch makes the game run perfectly. Renaming x64/FF9_Data/Plugins/JoyShockLibrary.dll to disable it also fully resolves the issue and the controller then works normally through standard XInput.
Steps to reproduce
Result: Memoria engine runs as expected. Launching the game opens a window, audio plays, process crashes within ~2 seconds, music keeps playing. No managed exception in Memoria.log
Expected: Game reaches title screen normally.
Diagnosis
PROTON_LOG=1capture shows no segfault — the last meaningful event is:trace:loaddll:build_module Loaded L"...\FF9_Data\Plugins\JoyShockLibrary.dll" at 0x6ffff9b00000: native…followed by a fork and a clean process exit (
pid X != Y, skipping destruction (fork without exec?)). DXVK initialized successfully and was already mid-ResetSwapChain. No c0000005 / page-fault. The only "exceptions" in the log are benign DBG_PRINTEXCEPTION_C lines from Memoria's own trace logging.Things ruled out during troubleshooting
Workaround
Rename x64/FF9_Data/Plugins/JoyShockLibrary.dll to something else. Game launches and controller works normally via XInput through Steam Input.
Suggestions
Wrap JoyShockLibrary initialization in a try/catch so a failure inside the native lib doesn't take the process down silently.
On Linux/Proton, consider skipping JoyShockLibrary by default and exposing it as an opt-in launcher setting, since standard XInput via Steam Input covers the common case and JoyShockLibrary's hidraw access is fragile under Proton.
At minimum, log JoyShockLibrary init success/failure to Memoria.log so this kind of issue is visible without a wine debug capture.
Tail of
Memoria.logshowing clean init through to where the process dies:Relevant pieces of
~/steam-377840.log— DXVK initialized fine, then JoyShockLibrary loads and the process exits cleanly:Thank you all so much for this amazing mod. I am having a blast. Hope this bug report helps!