TLDR: BURAOT's Implementation yielded a significant difference in sound quality when compared to IndirectSound.
BURAOT's Implementation only works on Windows, I wasn't able to get it to work on Linux in anyway. IndirectSound
allowed all of the sound options to be enabled on Windows and on Linux, but I didn't really hear a significant difference
regardless of whether I used EAX 1.0 or EAX 2.0 emulation as it's currently implemented in IndirectSound 0.20. Since
the difference in sound quality was noticable, I will be sticking with BURAOT's implementation in Cactus, however, for Linux
users, you may as well try IndirectSound anyways since you may notice some improvements on your end.
[Video] 3D Sound Comparison - BURAOT vs IndirectSound (Included in Cactus)
Testing Notes
- Linux Mint 20.3
- Wine 7.0 (Stable)
- Clean Win32 Prefix
- Windows Version in winecfg: Windows 7 (I would probably recommend Windows XP just in case, maybe even earlier, I do this on Windows itself - for the Mouse 3 compatibility specifically).
The below configurations place the appropriate files directly into the Diablo II root directory.
BURAOT's Implementation
- With 'dsound' and 'eax' (No overrides in winecfg for 'dsound'): Nothing detected in game
- With 'dsound' override (native, builtin): Nothing detected in game
- With 'dsound' override (native) - dsound.dll and eax.dll ARE in the d2 root folder: Game starts up but not sound at all (Sound Options greyed out).
- With 'dsound' override (native) - dsound.dll / eax.dll are NOT in the d2 root folder: Game crashes at start - Hard locked.
0024:err:module:import_dll Library DSOUND.dll (which is needed by L"Z:\\home\\jon\\Games\\Diablo II\\D2Sound.dll") not found
0024:err:module:import_dll Library D2Sound.dll (which is needed by L"Z:\\home\\jon\\Games\\Diablo II\\Game.exe") not found
0024:err:module:import_dll Library DSOUND.dll (which is needed by L"Z:\\home\\jon\\Games\\Diablo II\\D2Sound.dll") not found
0024:err:module:import_dll Library D2Sound.dll (which is needed by L"Z:\\home\\jon\\Games\\Diablo II\\D2Win.dll") not found
0024:err:module:import_dll Library D2Win.dll (which is needed by L"Z:\\home\\jon\\Games\\Diablo II\\Game.exe") not found
0024:err:module:LdrInitializeThunk Importing dlls for L"Z:\\home\\jon\\Games\\Diablo II\\Game.exe" failed, status c0000135
- With 'dsound override (native), but replaced the 'dsound.dll' provided by wine in system32 with our 'dsound.dll' and 'eax.dll': Game crashes at start - Hard locked.
01c0:err:sync:RtlpWaitForCriticalSection section 7BC68440 "dlls/ntdll/loader.c: loader_section" wait timed out in thread 01c0, blocked by 018c, retrying (60 sec)
- Setting the override to (native, builtin): Game crashes at start.
IndirectSound 0.20
- With 'dsound' (No overrides in winecfg for 'dsound'): Nothing detected in game
- With 'dsound' override (native, builtin): 3D Sound and 3D Bias now Available. Environmental Effects not enabled by default.
In dsound.ini:
Changing either 'eax1' or 'eax2' or both from false to true will enable "Environmental Effects" in game.
I didn't really notice any significant difference when using my laptop's external speakers, however using
my Razer Headphones allowed a bit more of the depth to be displayed. Although nothing major but it helps.
On Windows, the sound difference wasn't really any different than the Linux counterpart.
This was the quote in the 'dsound.ini' configuration file for the EAX section:
--[[
EAX ("Environmental Audio Extensions") is not emulated by IndirectSound.
IndirectSound can emulate EAX support, however.
In other words, IndirectSound will pretend that EAX is supported
so that games using IndirectSound will think that EAX is available.
This is useful for some games that don't calculate
3D positional audio unless EAX is supported.
(Actual emulation of EAX is under development
but is not yet ready to release.)
There are two versions of EAX with emulated support:
* EAX 1.0
* EAX 2.0
Support for later versions of EAX is not yet emulated.
To emulate support for a specific EAX version
set the corresponding value to "true" (with no quotes), e.g.:
eax2 = true
To disable emulated support set the value to false.
Disabling EAX has the same effect as setting the
"Hardware Acceleration" slider in the control panel to "Standard"
on older versions of Windows.
]]
eax1 = false
eax2 = false