https://bugs.winehq.org/show_bug.cgi?id=53553
Bug ID: 53553 Summary: F.E.A.R. won't work with DSOAL surround sound restoration DLL replacement Product: Wine Version: 7.14 Hardware: x86-64 OS: Linux Status: UNCONFIRMED Severity: normal Priority: P2 Component: dsound Assignee: wine-bugs@winehq.org Reporter: mr.matt.eastwood@gmx.de Distribution: ---
Steps to Reproduce: 1. Install F.E.A.R. (e.g., "Fear Platinum" from GOG) 2. Get DSOAL from https://github.com/kcat/dsoal and compile dsound.dll 3. Get latest OpenAL-Soft bin from https://openal-soft.org/ 4. Unzip soft_oal.dll from its bin\Win32 directory 5. Rename that file to dsoal-aldrv.dll 6. Place both dsoal-aldrv.dll and DSOAL's dsound.dll in same directory as FEAR.exe 7. Run game 8. Enter sound menu
Expected Results: When running F.E.A.R. with the DLL replacement DSOAL for surround sound restoration, the advanced sound options "Enable HW mixing", "Enable EAX 2.0" and "Enable EAX Advanced HD" should be available in the sound menu and surround sound including EAX effects should work.
Current Results: The sound options remain greyed-out.
Observations: F.E.A.R. won't load dsound.dll from anywhere but syswow64. If one places the DSOAL dsound.dll there (replacing Wine's own), and then sets dsound.dll to "native" e.g. through winecfg, everything works. Screenshot:
If one sets dsound.dll to "native" e.g. through winecfg and then loads the game without replacing Wine's dsound.dll in syswow64 (but with the DSOAL files in the F.E.A.R. folder): "Failed to initialize sound driver 'SndDrv.dll' on startup. Screenshot: https://paste.pics/I4DO0. No sound during game or menus, only during intro movie. Available sound options: https://paste.pics/I4DOD
https://bugs.winehq.org/show_bug.cgi?id=53553
--- Comment #1 from Matthias Elsdoerfer mr.matt.eastwood@gmx.de --- Oops, forgot to include the screenshot in my first observation. https://paste.pics/I4DPF
Also, in Steps to Reproduce: be sure to compile a 32-bit dll in step 2.
https://bugs.winehq.org/show_bug.cgi?id=53553
mirh mirh@protonmail.ch changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |mirh@protonmail.ch
--- Comment #2 from mirh mirh@protonmail.ch --- Did your prefix get EAX unified installed by any chance (eax.dll in the system directory)? Can you try to set the bottle to Windows XP?
https://bugs.winehq.org/show_bug.cgi?id=53553
--- Comment #3 from Matthias Elsdoerfer mr.matt.eastwood@gmx.de --- Hello @mirh, thanks for following up. I'm afraid I haven't yet reinstalled Lutris or F.E.A.R. since I reformatted my PC when Linux Mint 21.1 came out in December. I did reinstall Wine-Staging and I'm on version 8.0-rc4. I can't find any file named eax.dll anywhere in the drive_c directory.
I will keep this in mind and follow up as soon as I find time, but it might be a while.
https://bugs.winehq.org/show_bug.cgi?id=53553
--- Comment #4 from mirh mirh@protonmail.ch --- Can you try to apply this to the bottle? https://github.com/kcat/dsoal/files/8773404/CURRENT_USER.-.Add.dsound.zip
(if that still doesn't work try https://github.com/kcat/dsoal/files/8773836/Register.dsound.dll.zip)
https://bugs.winehq.org/show_bug.cgi?id=53553
--- Comment #5 from Matthias Elsdoerfer mr.matt.eastwood@gmx.de --- Hey, I haven't checked in on this for quite a while due to life happening. Thanks so much for following up.
So, I'm back with a fresh copy of F.E.A.R., first-time install through Lutris since setting up Linux Mint 21.1 from scratch on my desktop PC back in December. FWIW, I'm gonna leave a full, detailed report here.
// SUMMARY - how to get it to work
F.E.A.R. surround sound works fully when putting DSOAL's two dll files into the same directory as FEAR.exe, dsound.dll into drive_c/windows/syswow64, and then setting Win XP compatibility mode and dsound = native for FEAR.exe using winecfg.
/// Installation stumbling using Lutris
I have F.E.A.R. Platinum Collection on GOG and installed it through Lutris 0.5.12 from Mint repos (i.e., not Flatpak). Lutris detected my system-wide Wine installation, version 8.1 (staging).
I installed F.E.A.R. using the "wine - GOG install" option, i.e. not the second one, "wine - GOG (auto-generated)". I chose only to install the base game, none of the extra content (Wallpaper, Commentary etc.).
During installation, I got an error dialog, "Command exited with code 13568". Screenshot of install screen: https://paste.pics/LN6BJ.
I'm already used to that, Lutris has worked that way on my PC since I first tried it. I cancelled, removing game files, and restarted the installation from scratch and the 2nd one went through.
/// Current Results
...running without any changes to config or directory: ...running with DSOAL's dsound.dll and dsoal-aldrv.dll in same directory as FEAR.EXE: ...running with DSOAL's dsound.dll in drive_c/windows/syswow64 directory (original dsound.dll renamed) and DSOAL's dsound.dll + dsoal-aldrv.dll in same directory as FEAR.EXE:
=> Stereo sound, last 3 sound options greyed out (EAX etc.). => Sound crackles badly in front left speaker, sudden overall volume spikes when navigating the menu
...running with the following set-up:
- FEAR.exe set to Win XP compatibility in winecfg - dsound set to "native" in winecfg for FEAR.exe - DSOAL's dsound.dll in drive_c/windows/syswow64 - DSOAL's dsound.dll and dsoal-aldrv.dll in same directory as FEAR.EXE
=> Everything works!
...running without any changes to config or directory, BUT with the first fix (registry edit) proposed above: ...running without any changes to config or directory, BUT with the second fix (register dsound) proposed above:
=> Stereo sound, last 3 sound options greyed out (EAX etc.). => Sound crackles badly in front left speaker, sudden overall volume spikes when navigating the menu
/// Installed versions
Lutris: 0.5.12 from Mint repos (i.e., not Flatpak) Wine: 8.1 staging from PPA
/// PC specs (report by Lutris): /// (Linux Mint's report: https://termbin.com/ejwr)
[System] OS: Linux Mint 21.1 Vera Arch: x86_64 Kernel: 6.0.0-1011-oem Desktop: X-Cinnamon Display Server: x11
[CPU] Vendor: GenuineIntel Model: Intel(R) Core(TM) i7-4790K CPU @ 4.00GHz Physical cores: 4 Logical cores: 8
[Memory] RAM: 31.3 GB Swap: 2.0 GB
[Graphics] Vendor: NVIDIA Corporation OpenGL Renderer: NVIDIA GeForce GTX 1080 Ti/PCIe/SSE2 OpenGL Version: 4.6.0 NVIDIA 525.78.01 OpenGL Core: 4.6.0 NVIDIA 525.78.01 OpenGL ES: OpenGL ES 3.2 NVIDIA 525.78.01 Vulkan: Supported
https://bugs.winehq.org/show_bug.cgi?id=53553
--- Comment #6 from Matthias Elsdoerfer mr.matt.eastwood@gmx.de --- @mirh, quick follow-up: I set Win XP compatibility and dsound = native for FEAR.EXE using winecfg after applying both solutions you suggested. F.E.A.R. complained about not being able to to load SndDrv.dll, and I got no sound. The same happened when I put the two DSOAL .dlls into the same directory as FEAR.exe. Only when I put the DSOAL dsound.dll back into syswow64 (overwriting a 400-odd kb large one that was there) did surround sound start working again.
https://bugs.winehq.org/show_bug.cgi?id=53553
--- Comment #7 from mirh mirh@protonmail.ch --- "Failed to initialize sound driver 'SndDrv.dll'" error means that no dsound.dll could be found at all (just tested this in W10 with the demo).
If this happens, then wine's COM code not only suffers of bug 14771 (i.e. I just found simple HKCU overrides have no effect over HKCR) but they also don't seem to follow the normally expected dll load order for the InprocServer32 directives.
https://bugs.winehq.org/show_bug.cgi?id=53553
--- Comment #8 from Matthias Elsdoerfer mr.matt.eastwood@gmx.de --- Hmm, what you wrote is over my head, unfortunately. I do know that F.E.A.R. is a special case. kcat, who makes DSOAL, mentioned that back in August:
https://github.com/kcat/dsoal/issues/67#issuecomment-1211908958
https://bugs.winehq.org/show_bug.cgi?id=53553
--- Comment #9 from mirh mirh@protonmail.ch --- The "special case" (technically unbeknownst before I debunked the "Windows 8/10 broke it" theory) is just loading dsound through COM calls rather than the usual loadlibrary.
And putting aside that it should still be up to wine to support the entirety of directsound (but there are other bugs open for that AFAIR), the problem here seems to be that the normal loading order isn't honoured with CLSID dlls (or maybe the mechanism is altogether broken and just for show?).