Lyall/DeadIsland2Fix

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

  1. Main contents of DeadIsland2Fix_v_1_0_2.zip (meaning DeadIsland2Fix.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
  2. Using Bottle > Settings > DLL Overrides I've tried adding winmm.dll as Native, then Builtin
    2024-02-01_11-45
    (Specifying the filename without an extension (winmm) made no difference either).
  3. Instead of launching with Bottles, I launched the game directly from Steam using:
    WINEDLLOVERRIDES="winmm.dll=n,b" WINEESYNC=1 gamemoderun mangohud %command%
    As well as:
    WINEDLLOVERRIDES="winmm.dll=n,b" %command%
    However, neither worked

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 :(

2024-02-01_12-05

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 use dsound.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 without winmm.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:

  1. Follow the installation instructions for DeadIsland2Fix_v_1_0_2.zip (meaning DeadIsland2Fix.asi + DeadIsland2Fix.ini + winmm.dll should be placed in: <GameDrive>/DeadIsland/Binaries/Win64)

  2. Create <GameDrive>/DeadIsland/Binaries/Win64/winmm.ini with:

    [GlobalSets]
    DontLoadFromDllMain=0
  3. Use WINEDLLOVERRIDES="winmm.dll=n,b" %command% to start the (steam) game.
    Alternatively, with Bottles it's as simple as adding winmm as Native,then Builtin in Bottle > Settings > DLL Overrides:
    Bottle

  4. 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.