DLL Override for winmm.dll has no effect in Linux/Arch Linux?
Closed this issue · 5 comments
Problem
Cutscenes still have black bars after installing this mod in Linux.
Specifications
- Distro: Arch Linux (this is what SteamDeck is based on)
- Resolution: 3840 x 1600
- Window Manager:
Sway
- WINE Driver:
XWayland
- WINE Prefix:
Wine 9.1
&Proton Experimental
What I've tried
- Main contents of
DeadIsland2Fix_v_1_0_2.zip
(meaningDeadIsland2Fix.asi
,DeadIsland2Fix.ini
,LICENSES.txt
&winmm.dll
) replaced existing files in:<GameDrive>/DeadIsland/Binaries/Win64
$ ls -l "/home/user/game/.local/share/bottles/bottles/Gaming/drive_c/Program Files/Dead Island 2/DeadIsland/Binaries/Win64/" total 472024 -rw-r--r-- 1 game game 368128 Jul 12 2023 bass.dll -rw-r--r-- 1 game game 219648 Nov 2 19:46 DeadIsland2Fix.asi -rw-r--r-- 1 game game 398 Apr 22 2023 DeadIsland2Fix.ini -rwxr-xr-x 1 game game 460205056 Jul 15 2023 DeadIsland-Win64-Shipping.exe* -rw-r--r-- 1 game game 15183360 Jul 15 2023 EMP.dll -rw-r--r-- 1 game game 186368 Jul 12 2023 libScePad.dll -rw-r--r-- 1 game game 2205 Nov 2 19:51 LICENSES.txt drwxr-xr-x 2 game game 56 Jan 31 18:33 nepice_settings/ -rw-r--r-- 1 game game 2933248 Jul 12 2023 pros.sdk.x64.dll -rw-r--r-- 1 game game 2000424 Jan 31 20:12 vkd3d-proton.cache -rw-r--r-- 1 game game 1880640 Feb 1 11:37 vkd3d-proton.cache.write -rw-r--r-- 1 game game 351744 Oct 25 05:55 winmm.dll
- Using
Bottle > Settings > DLL Overrides
I've tried addingwinmm.dll
asNative, then Builtin
(Specifying the filename without an extension (winmm
) made no difference either). - Instead of launching with Bottles, I launched the game directly from Steam using:
As well as:
WINEDLLOVERRIDES="winmm.dll=n,b" WINEESYNC=1 gamemoderun mangohud %command%
However, neither workedWINEDLLOVERRIDES="winmm.dll=n,b" %command%
Reference
I was able to successfully use DLL Overrides
in Bottles with Ultrawide Mod for The Expanse - A Telltale Series
:
https://github.com/RoseTheFlower/UltrawideIndex/releases/tag/expanse
(This game uses a difference DLL which requires WINEDLLOVERRIDES="dsound=n,b"
)
Question
Has anyone managed to use this mod successfully with Arch Linux?
I've confirmed this isn't a regression by testing every single release:
- DeadIsland2Fix_v_1_0_0
- DeadIsland2Fix_v_1_0_1
- DeadIsland2Fix_v_1_0_2
DeadIsland2Fix.log is nowhere to be found and I don't see any logs/std messages from this mod in my terminal when launching the game manually :(
Thanks for the detailed issue report! If there's no log file being generated, that likely means the ASI loader isn't being injected. Can you try this?
Ultimate-ASI-Loader_x64_test.zip
Just delete the old winmm.dll
file and add the override like you did for the Expanse game.
You're fast!
Thanks for taking a look
-
The game crashes after pressing
Main Menu > Continue Game > Play
when I only usedsound.dll
+dsound.ini
in<GameDrive>/DeadIsland/Binaries/Win64
(meaning without:DeadIsland2Fix.asi
,DeadIsland2Fix.ini
&winmm.dll
). -
I experience the exact same issue when I use
dsound.dll
+dsound.ini
+DeadIsland2Fix.asi
+DeadIsland2Fix.ini
in<GameDrive>/DeadIsland/Binaries/Win64
(meaning withoutwinmm.dll
).However,
DeadIsland2Fix.log
gets generated with this configuration as soon as I start the game!It doesn't matter which version I use (v_1_0_0, v_1_0_1 & v_1_0_2), they're crashing as soon as I click PLAY to load my saved game file
Log (I'm using 1.0.2, not sure why it says 1.0.1):
File verbosity level: 9 date time ( uptime ) [ thread name/id ] file:line v| 2024-02-01 15:04:22.664 ( 0.038s) [ 358A4C3A] loguru.cpp:841 INFO| Logging to 'DeadIsland2Fix.log', mode: 'w', verbosity: 9 2024-02-01 15:04:22.664 ( 0.038s) [Main ] dllmain.cpp:141 INFO| DeadIsland2Fix v1.0.1 loaded 2024-02-01 15:04:22.665 ( 0.038s) [Main ] dllmain.cpp:155 INFO| Game Name: Dead Island 2 2024-02-01 15:04:22.665 ( 0.038s) [Main ] dllmain.cpp:156 INFO| Game Path: C:\Program Files\Dead Island 2\DeadIsland\Binaries\Win64\DeadIsland-Win64-Shipping.exe 2024-02-01 15:04:22.665 ( 0.038s) [Main ] dllmain.cpp:163 ERR| Failed to load config file. 2024-02-01 15:04:22.665 ( 0.038s) [Main ] dllmain.cpp:164 ERR| Trying alternate config path. 2024-02-01 15:04:22.665 ( 0.038s) [Main ] dllmain.cpp:175 INFO| Successfuly loaded config file. (Alternate path) 2024-02-01 15:04:22.665 ( 0.038s) [Main ] dllmain.cpp:184 INFO| Game Version: 2024-02-01 15:04:22.665 ( 0.038s) [Main ] dllmain.cpp:215 INFO| Config Parse: iInjectionDelay: 2000ms 2024-02-01 15:04:22.665 ( 0.038s) [Main ] dllmain.cpp:216 INFO| Config Parse: bAspectFix: 1 2024-02-01 15:04:22.665 ( 0.038s) [Main ] dllmain.cpp:217 INFO| Config Parse: bFOVFix: 1 2024-02-01 15:04:22.665 ( 0.038s) [Main ] dllmain.cpp:218 INFO| Config Parse: bHUDBorderLimit: 1 2024-02-01 15:04:22.665 ( 0.038s) [Main ] dllmain.cpp:219 INFO| Config Parse: iCustomResX: 3840 2024-02-01 15:04:22.665 ( 0.038s) [Main ] dllmain.cpp:220 INFO| Config Parse: iCustomResY: 1600 2024-02-01 15:04:22.665 ( 0.038s) [Main ] dllmain.cpp:221 INFO| Config Parse: fNewX: 3840.00 2024-02-01 15:04:22.665 ( 0.038s) [Main ] dllmain.cpp:222 INFO| Config Parse: fNewY: 1600.00 2024-02-01 15:04:22.665 ( 0.038s) [Main ] dllmain.cpp:223 INFO| Config Parse: fNewAspect: 2.4000 2024-02-01 15:04:24.702 ( 2.075s) [Main ] dllmain.cpp:238 INFO| Current Resolution: Hook length is 19 bytes 2024-02-01 15:04:24.702 ( 2.075s) [Main ] dllmain.cpp:239 INFO| Current Resolution: Hook address is 0x1437dcd95 2024-02-01 15:04:24.715 ( 2.089s) [Main ] dllmain.cpp:257 INFO| Aspect Ratio/FOV: Hook length is 14 bytes 2024-02-01 15:04:24.715 ( 2.089s) [Main ] dllmain.cpp:258 INFO| Aspect Ratio/FOV: Hook address is 0x1417cd233 2024-02-01 15:04:24.728 ( 2.102s) [Main ] dllmain.cpp:281 INFO| HUD Border Limit: Hook length is 16 bytes 2024-02-01 15:04:24.728 ( 2.102s) [Main ] dllmain.cpp:282 INFO| HUD Border Limit: Hook address is 0x14199daa4
FIXED
Thanks @Lyall!!
The solution was in your .zip file all along :)
Here's all I had to do to fix this issue:
-
Follow the installation instructions for
DeadIsland2Fix_v_1_0_2.zip
(meaningDeadIsland2Fix.asi
+DeadIsland2Fix.ini
+winmm.dll
should be placed in:<GameDrive>/DeadIsland/Binaries/Win64
) -
Create
<GameDrive>/DeadIsland/Binaries/Win64/winmm.ini
with:[GlobalSets] DontLoadFromDllMain=0
-
Use
WINEDLLOVERRIDES="winmm.dll=n,b" %command%
to start the (steam) game.
Alternatively, with Bottles it's as simple as addingwinmm
asNative,then Builtin
inBottle > Settings > DLL Overrides
:
-
Lastly, I launch the game using:
<GameDrive>/DeadIsland/Binaries/Win64/DeadIsland-Win64-Shipping.exe
For future readers there's also another (potential) fix; projects that uses ThirteenAG's codebase (Ultimate ASI Loader), it's possible to simply rename the winmm.ini
to one of supported filenames from the README like dsound.dll
(but with Dead Island 2 this particular filename caused conflicts hence the crashing):
https://github.com/ThirteenAG/Ultimate-ASI-Loader
Nice, I'll add the DontLoadFromDllMain
ini to the latest release. I had to this for Ishin which is another UE4 game so they must not like being loaded that way.