Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Windows 11 Support #34

Open
MarioTainaka opened this issue Dec 11, 2021 · 69 comments
Open

Windows 11 Support #34

MarioTainaka opened this issue Dec 11, 2021 · 69 comments

Comments

@MarioTainaka
Copy link

Hello there, i'd like to report that neither DSOAL nor Creative Alchemy are working on Windows 11. Almost like dsound.dll isn't being loaded at all. I've already modified the registry with the following entries:

[HKEY_CURRENT_USER\Software\Classes\CLSID{47D4D946-62E8-11CF-93BC-444553540000}\InprocServer32]
@="dsound.dll"

[HKEY_CURRENT_USER\Software\Classes\CLSID{3901CC3F-84B5-4FA4-BA35-AA8172B8A09B}\InprocServer32]
@="dsound.dll"

[HKEY_CURRENT_USER\Software\Classes\WOW6432Node\CLSID{47D4D946-62E8-11CF-93BC-444553540000}\InprocServer32]
@="dsound.dll"

[HKEY_CURRENT_USER\Software\Classes\WOW6432Node\CLSID{3901CC3F-84B5-4FA4-BA35-AA8172B8A09B}\InprocServer32]
@="dsound.dll".

But these do nothing., neither does installing Alchemy. It would be great if you could look at adding Windows 11 support in the future.

Thank you!

@Kappa971
Copy link

Kappa971 commented Dec 12, 2021

Hi, I also have Windows 11 and both Creative Alchemy 1.45.20 and DSOAL work (I have a Sound Blaster Z with the latest drivers), so there must be something wrong with your system.

@deton24
Copy link

deton24 commented Dec 26, 2021

Did you actually add the game in Alchemy app instead of just dragging and dropping dsound.dll and ini?
Somehow, it is recommended in the description here: https://www.youtube.com/watch?v=fY7i6X41T7U

I'm also curious whether it's possible to inject dsoal renaming dsound.dll to something else, but I doubt.
The first when I'd start is: run the game, open Process Explorer>Properties>Threads and check for possible dll names.

Maybe you can also try out these solutions which may also work for DSOAL:
https://www.indirectsound.com/registryIssues.html

@MarioTainaka
Copy link
Author

Did you actually add the game in Alchemy app instead of just dragging and dropping dsound.dll and ini? Somehow, it is recommended in the description here: https://www.youtube.com/watch?v=fY7i6X41T7U

I'm also curious whether it's possible to inject dsoal renaming dsound.dll to something else, but I doubt. The first when I'd start is: run the game, open Process Explorer>Properties>Threads and check for possible dll names.

Maybe you can also try out these solutions which may also work for DSOAL: https://www.indirectsound.com/registryIssues.html

Yup that's the first thing I did. doesn't matter if you use registery settings or use the dir option. Usually on Windows 10 that would do it for me.

@deton24
Copy link

deton24 commented Dec 26, 2021 via email

@Kappa971
Copy link

What sound card do you have? As mentioned, I have a Sound Blaster Z with Windows 11 and ALchemy (and DSOAL) works. I would try to reinstall the drivers.

@MarioTainaka
Copy link
Author

Realtek

What sound card do you have? As mentioned, I have a Sound Blaster Z with Windows 11 and ALchemy (and DSOAL) works. I would try to reinstall the drivers.

Realtek HD Audio still. On the same setting with Windows 10 installed the above steps just work.

@deton24
Copy link

deton24 commented Dec 26, 2021

Probably I'm just running out of ideas, but maybe try different drivers.

  1. These attached on your motherboard vendor site
  2. These from Realtek site
  3. Assuming you have just automatically installed by Windows (generic HD Audio?)

You can still wipe out your current drivers using DDU I suppose.

@mirh
Copy link

mirh commented Dec 27, 2021

Drivers have nothing to do with directsound.
https://docs.microsoft.com/en-us/windows/win32/dlls/dynamic-link-library-search-order#standard-search-order-for-desktop-applications
Try to check if safe dll search mode is disabled.

@deton24
Copy link

deton24 commented Dec 27, 2021

JFYI, out of curiosity, I tried two alternative methods of injecting DSOAL, but to no avail:

  • proxy via DXwrapper (dxwrapper.ini>LoadCustomDllPath)
    (logs shows dsoal is injected but there's no HRTF applied)
  • Simple DLL Loader - fork of ASI Loader (still nothing)
  • enbinjector (only works with ENB)

@kcat
Copy link
Owner

kcat commented Dec 27, 2021

proxy via DXwrapper (dxwrapper.ini>LoadCustomDllPath)
(logs shows dsoal is injected but there's no HRTF applied)

Whether or not HRTF is applied depends on OpenAL Soft enabling it. And it only does that if the output device is reported as Stereo Headphones or Headset, and the DLL is built with the HRTF data set built-in (which it is for normal builds). And it wasn't disabled in OpenAL Soft's config file. DSOAL isn't strictly about enabling HRTF for DSound, it's about using OpenAL and its capabilities for DSound. This can be for HRTF, but it can also be for normal speakers (including surround sound, and limited with-height setups through 3D7.1, this hopefully expanding in the future to proper with-height setups), or UHJ for having a surround sound mix in stereo, as well as using EFX to implement EAX.

@MarioTainaka
Copy link
Author

JFYI, out of curiosity, I tried two alternative methods of injecting DSOAL, but to no avail:

  • proxy via DXwrapper (dxwrapper.ini>LoadCustomDllPath)
    (logs shows dsoal is injected but there's no HRTF applied)
  • Simple DLL Loader - fork of ASI Loader (still nothing)
  • enbinjector (only works with ENB)

I'll try all these methods within the week.

If I use creative alchemy for example the log files do show that the dll is being loaded..

@Kappa971
Copy link

Kappa971 commented Dec 28, 2021

You're running Windows 11, that's not the problem. Not even Realtek drivers. You don't have a Sound Blaster so you are probably using an "unlocked" version of ALchemy, maybe it doesn't work. DSOAL should work though. Where did you download DSOAL? How are you installing it? Which game do you want to use with it? As pointed out by @deton24, you can use Process Explorer (https://docs.microsoft.com/en-us/sysinternals/downloads/process-explorer) to check if dsound.dll is loaded by the game.
You can have DSOAL create a log file when the game starts, to see if there are any errors (play only a few minutes because the file can get very large). To the Windows environment variables you need to add:
DSOAL_LOGLEVEL=3
DSOAL_LOGFILE=dsoal_log.txt

I think you can set DSOAL_LOGLEVEL=1 to view errors only.

@MarioTainaka
Copy link
Author

MarioTainaka commented Dec 28, 2021

You're running Windows 11, that's not the problem. Not even Realtek drivers. You don't have a Sound Blaster so you are probably using an "unlocked" version of ALchemy, maybe it doesn't work. DSOAL should work though. Where did you download DSOAL? How are you installing it? Which game do you want to use with it? As pointed out by @deton24, you can use Process Explorer (https://docs.microsoft.com/en-us/sysinternals/downloads/process-explorer) to check if dsound.dll is loaded by the game. You can have DSOAL create a log file when the game starts, to see if there are any errors (play only a few minutes because the file can get very large). To the Windows environment variables you need to add: DSOAL_LOGLEVEL=3 DSOAL_LOGFILE=dsoal_log.txt

I think you can set DSOAL_LOGLEVEL=1 to view errors only.

That's the issue DSOAL does NOT work at all. I can't even select EAX. The game I usually use to test to see if everything is working is Prince Of Persia The Two Thrones.

I usually grab it from moddb.

@deton24
Copy link

deton24 commented Dec 28, 2021

I completely understand, kcat. It was oversimplification.
Of course, I also attached normally working dsoal-aldrv.dll and alsoft.ini with HRTF set with parameters you mention (and HRTF worked when dsound.dll was injected directly from root directory by placing the library near the game's executable, just not when set as a dxwrapper proxy from other location or renamed).

@Kappa971
Copy link

Kappa971 commented Dec 28, 2021

That's the issue DSOAL does NOT work at all. I can't even select EAX. The game I usually use to test to see if everything is working is Prince Of Persia The Two Thrones.

I usually grab it from moddb.

Try downloading it from here: http://vaporeon.io/hosted/dsoal-builds/

As already mentioned, make sure that a log file is created.

@ThreeDeeJay
Copy link

That's the issue DSOAL does NOT work at all. I can't even select EAX. The game I usually use to test to see if everything is working is Prince Of Persia The Two Thrones.
I usually grab it from moddb.

Try downloading it from here: http://vaporeon.io/hosted/dsoal-builds/

As already mentioned, make sure that a log file is created.

Just tried the dsoal-latest.7z with this alsoft.ini and HRTF works in RightMark 3D Sound, but EAX options are greyed out whether [eax]enable is set to true or false. Running on a Windows 11 virtual machine fresh install (no registry edits): https://i.imgur.com/RxVvwue.mp4

@mirh
Copy link

mirh commented May 25, 2022

Remind me again why you'd be supposed to edit CLSIDs sometimes?

@Kappa971
Copy link

You need to add the following registry keys: CURRENT_USER - Add dsound.zip
This is DSOAL + OpenAL Soft compiled from source DSOAL.zip, EAX runs on Windows 11 (also on build 22621 which will be released in October) so this issue should be closed to avoid confusion.

@ThreeDeeJay
Copy link

Beginning with Windows 8 some games won't use IndirectSound even if the dsound.dll is in the correct location. To fix this the Windows registry must be changed. (Some Windows updates may also make it necessary to repeat these changes.)

(One way that games can use DirectSound is to ask Windows for an interface to it by specifying the CLSID. In Windows 8 or later if a game does this Windows will always give an interface to the official Microsoft version of DirectSound. By making these registry changes you are telling Windows to first look for dsound.dll in the same directory that the game is in before it looks for the official Microsoft version.)

@mirh You mean this? It's in the page you linked. Unless you're asking why only some games do it. Maybe it depends on how games call DirectSound, idk.
Perhaps @kcat knows and more importantly, if this could be bypassed on DSOAL's end so people don't have to do it manually, especially if Windows updates constantly reset it.

@Kappa971 I'm working on a script to update all relevant registry keys, but just noticed we also need to take ownership of some registry keys even if we're on the current administrator account, which is even less user-friendly than merging a key, let alone adding it manually.
On the bright side, I found a tool that allows taking ownership programmatically so I'll add it to the script.

@Kappa971
Copy link

@ThreeDeeJay, I don't think you need a script, just run the .reg file I put in the link and it should work.

@mirh
Copy link

mirh commented May 25, 2022

Unless you're asking why only some games do it. Maybe it depends on how games call DirectSound, idk.

I'm missing out what other factor exists other than just the normal dll loading order, yes.

@ThreeDeeJay
Copy link

ThreeDeeJay commented May 25, 2022

There is a good chance that if you try to edit this value Windows will show an error message and refuse to accept the change. If this happens it is probably because your account doesn't have the permission required to change the registry key. If you search the internet you can discover how to change the key's permissions.

@Kappa971 I think if the game is run as administrator (many old games require it), it might use one of the protected registry keys, which require manually taking ownership before adding/editing it, as explained above. Otherwise, it'll probably just use the system dsound.dll, thus ignoring DSOAL, unless maybe you replace the system one with DSOAL, which IIRC is not recommended.
Simply merging registry key doesn't actually update the protected ones because by default, only the SYSTEM/TrustedInstaller "users" can make modifications:
image
vmplayer_LN27tqIT7D

@Kappa971
Copy link

Kappa971 commented May 25, 2022

Ok so for games that don't require to be run as administrator my .reg works. What games require to be run as an administrator? I have tried several games: Max Payne, GTA 3, Vice City, San Andreas, Far Cry, Unreal Gold, Splinter Cell, they seem to work without being run as an administrator (I only use d3d8to9 in Ultimate ASI Loader or Dgvoodoo2 and Widescreen patches).
Maybe I'm lucky? 😁

@ThreeDeeJay
Copy link

@mirh Other than what I've mentioned, I've got no clue so that's probably a question for kcat.

@Kappa971 IIRC Splinter Cell Pandora Tomorrow requires running as admin for it to load the .ini (where we can force EAX) from the regular folder instead of the VirtualStore one which can confuse people. But generally running as admin can solve compatibility issues with XP-era games when there was no UAC.

Anyhow, this should hopefully fix registry-related DSOAL issues on Windows 11 (or previous versions for that matter)
Register dsound.dll.zip
vmplayer_hHKSrG2R8y
I'm still not sure why EAX options are still greyed out in RightMark 3DSound Positioning Accuracy test on Windows 11 🤔

@Kappa971
Copy link

Kappa971 commented May 25, 2022

@Kappa971 IIRC Splinter Cell Pandora Tomorrow requires running as admin for it to load the .ini (where we can force EAX) from the regular folder instead of the VirtualStore one which can confuse people. But generally running as admin can solve compatibility issues with XP-era games when there was no UAC.

Anyhow, this should hopefully fix registry-related DSOAL issues on Windows 11 (or previous versions for that matter) Register dsound.dll.zip

I'm still not sure why EAX options are still greyed out in RightMark 3DSound Positioning Accuracy test on Windows 11 thinking

I think I tried Splinter Cell Pandora Tomorrow and it worked even without being run as administrator. However, I have found a game that needs to run in Windows XP SP2 compatibility mode, which automatically runs the game as administrator: Mafia 1. When run as administrator (or Win XP SP2), DSOAL doesn't work, so this is definitely one of the cases you described. Therefore, the keys in HKEY_LOCAL_MACHINE must also be changed.
I would like to know what SetACL32.exe and SetACL64.exe do. Isn't a batch script running as administrator enough to change the keys in HKEY_LOCAL_MACHINE? (reg add etc...).

EDIT
It appears that SetACL32.exe and SetACL64.exe are changing permissions to allow modification of registry keys in HKEY_LOCAL_MACHINE, right? Did you write these programs yourself?

@mirh
Copy link

mirh commented May 25, 2022

Mafia has a shim in W10. Maybe even the other odd games have the compatibility engine to disturb them?
mafia

@Kappa971
Copy link

Kappa971 commented May 25, 2022

So, SetACL is a utility that you can download from the internet. Here is a detailed guide that helped me understand: https://www.askvg.com/windows-tip-take-ownership-permission-of-registry-keys-from-command-line/.

Other keys are indicated on the Indirectsound website:

 There are additional CLSIDs used to create other DirectSound interfaces. IndirectSound does not currently implement these interfaces, but they are listed here for completeness:

    {B0210780-89CD-11D0-AF08-00A0C925CD16} (DirectSoundCapture Object)
    {E4BCAC13-7F99-4908-9A8E-74E3BF24B6E1} (DirectSoundCapture 8.0 Object)
    {FEA4300C-7959-4147-B26A-2377B9E7A91D} (DirectSoundFullDuplex Object)
    {11AB3EC0-25EC-11D1-A4D8-00C04FC28ACA} (CLSID_DirectSoundPrivate)
        (This last one will likely not be listed in the registry)

but I don't know if they are needed for DSOAL.

However, I wonder what approach Creative Alchemy took to work.

@ThreeDeeJay
Copy link

Yeah, SetACL is what I used to modify registry key ownership so people don't have to do it themselves since there's no batch command to do it programmatically AFAIK.
I didn't program SetACL myself (just the .bat), but I got permission to redistribute it.

And yeah, XP compatibility mode (also required for many old games) also runs as administrator so those games are probably affected as well.

I also wonder if compatibility mode makes DirectSound calls behave differently. I usually run XP games with the respective compatibility mode when suggested for other compatibility reasons but I'm yet to notice DSOAL behaving differently with and without it.

@mirh
Copy link

mirh commented May 26, 2022

Aaand there you have it.
https://lbvenkatesh.wordpress.com/2011/09/18/how-does-a-com-dll-get-loaded/
https://www.vogons.org/viewtopic.php?t=39499&start=320#p692601

Also, idk what's confusing about virtualstore. If the game tries to write to a path outside its privileges, it's already a miracle that microsoft has a mechanism for the thing to still more or less work somehow.
If you want the "proper handling" either launch it with admin privileges like it always assumed, or have its folder be unprivileged (or I guess there are also fixes for games to write to the documents folder, but I digress).

@Kappa971
Copy link

Anyway I confirm that by modifying the keys in HKEY_LOCAL_MACHINE, DSOAL also works by running Mafia as administrator.

However, the title of this issue should be changed as it refers to versions of Windows from Vista and later.

@mirh
Copy link

mirh commented Jun 2, 2022

If all this is correct, as mentioned above, it is enough to change only the keys in HKLM, as it will apply to all users.

Yes, I was just asking an implementation detail for the script here.
Are we taking for granted then that nobody will ever touch HKCU otherwise (i.e. even if they do, they'll always only write our desired dsound.dll)?

When you run a program "as administrator" this makes me think we are running it with a system administrator profile rather than the user profile with admin privileges

Not at all. This isn't dumb linux.

If you run a DirectSound game as an administrator and it doesn't see the keys in HKCU but only in HKLM, what would you think?

I mean.. it could be as well the documentation is wrong, but until we exhaust the other alternatives (or sigh.. UCyborg comes up with another masterful disassembly) it should be the last option.
Could you draft a list of applications that care about COM/CLSIDs?

I wish I knew what Windows 7 does different...

Yeah, that's the biggest mystery I still have here.
For starters, can we confirm which windows version changed behaviour?
Was it 8, 8.1 or 10?

@Kappa971
Copy link

Kappa971 commented Jun 2, 2022

Yes, I was just asking an implementation detail for the script here.
Are we taking for granted then that nobody will ever touch HKCU otherwise (i.e. even if they do, they'll always only write our desired dsound.dll)?

It doesn't matter, as Directsound games run as administrator, they aren't checking HKCU in my case.

Not at all. This isn't dumb linux.

Instead it would seem so since the games aren't controlling HKCU, but that's just a guess.

Could you draft a list of applications that care about COM/CLSIDs?

No sorry.

For starters, can we confirm which windows version changed behaviour?
Was it 8, 8.1 or 10?

It might be Windows 10, but I don't know what difference it would make if it were Windows 8 😆

@mirh
Copy link

mirh commented Jun 3, 2022

It doesn't matter, as Directsound games run as administrator, they aren't checking HKCU in my case.

Yes it matters? It's written nowhere that directsound games/programs have to and will be run as administrator.
Even though I reckon it will be predominantly dead old cruft to use COM (you can bet some japanese developer is still doing things wrong to these days though /s)

Instead it would seem so since the games aren't controlling HKCU, but that's just a guess.

I mean, it's not a guess if it's what you observe.
But this happening to all programs using COM, all those using COM and with an old manifest, or just those with COM and shims, is kinda different.
If not to "do what you have to do to get the game running" at least to be sure you have everything covered (and have the peace of mind where the next time even a hair is not checking out you'll be ready with a theory)

No sorry.

I reckon we already know of pandora tomorrow and prince of persia?

It might be Windows 10, but I don't know what difference it would make if it were Windows 8 😆

I can better scavenge google for clues :)
Also madmen could try to bisect the change across older windows beta builds, in the worst case scenario.

@Kappa971
Copy link

Kappa971 commented Jun 3, 2022

Yes it matters? It's written nowhere that directsound games/programs have to and will be run as administrator.
Even though I reckon it will be predominantly dead old cruft to use COM (you can bet some japanese developer is still doing things wrong to these days though /s)

If you run a Directsound game normally, it will still use the keys present in HKLM (unless they exist in HKCU), so no problem.

I mean, it's not a guess if it's what you observe.
But this happening to all programs using COM, all those using COM and with an old manifest, or just those with COM and shims, is kinda different.
If not to "do what you have to do to get the game running" at least to be sure you have everything covered (and have the peace of mind where the next time even a hair is not checking out you'll be ready with a theory)

I tried Mafia 1 and Splinter Cell Pandora Tomorrow. By changing only the keys in HKLM, DSOAL works in both whether these are run as administrator or not.

I can share my own scripts, one sets the keys while the other checks if they have been changed (it's nothing extremely complex, I'm not much of a batch expert): ScriptDSOAL.zip

@mirh
Copy link

mirh commented Jun 3, 2022

If you run a Directsound game normally, it will still use the keys present in HKLM (unless they exist in HKCU), so no problem.

Ok, let's make this more explicit.
What if somebody was to write some other value into HKCU? Then we'd be screwed.
That's the navel gazing I was pondering upon. I'm not saying the script should bother with those keys either (what monster would write anything else there?), but it should be known and understood that it's a "variable" that we leave unchecked.

... or maybe we could just have the batch file always check the keys, but only edit them if present/different.

By changing only the keys in HKLM, DSOAL works in both whether these are run as administrator or not.

Yes, of course if HKCU wasn't added that's the only possible behaviour...
My question (not to be confused with the previous doubts) was: why is msdn only mentioning the "UAC disabled" condition?
Is it because it was written by a clueless monkey (windows actually is only caring about privilege levels), is it because of some undocumented aspect of UAC virtualization (which *among others* running as administrator influences) or is it some ungodly quirk of the application compatibility engine (i.e. the thing that applies shims)?

@Kappa971
Copy link

Kappa971 commented Jun 3, 2022

If someone starts modifying the Windows registry keys without knowing what they are doing, they deserve the system to stop starting, I wouldn't worry too much :)
It would be great if DSOAL did all this automatically as ALchemy, in this case there would be no risk for anyone.

@mirh
Copy link

mirh commented Jun 3, 2022

Sure thing.
Creative has a dedicated installer though.
(and I don't think you can influence the application manifests from a dll)
So, I don't know, I believe the best thing you can do after that is just having a check in the dll that somehow warns the user to open whatever page with the instructions.

#52
Meanwhile, every release note could underline this step, and every release zip should probably include the batch file.

@mirh
Copy link

mirh commented Nov 23, 2022

Ehrm, guys... Wtf.
This never had anything to do with the operating system version.
(or at least this is what I found with mafia, which is really portable to throw around clean VMs)
Whatever the specific dll loading mechanism they use is, this happens because of EAX Unified. I simply did not install it, and now magically even 10-21H2 had no issue.

@ThreeDeeJay
Copy link

@mirh Interesting.
On a side note, did you ever find out if there's a way to force loading dsound.dll from the game folder for games/apps that refuse to do it even after applying the registry hacks?
Off the top of my head, I remember MTA San Andreas (multitheftauto/mtasa-blue#2687) and I think some older games/apps do it.
Other games are also hell-bent on loading x3daudio1_7.dll from the system folders, which renders https://github.com/ThreeDeeJay/x3daudio1_7_hrtf unusable on newer Unreal Engine 4 games.

@deton24
Copy link

deton24 commented Nov 28, 2022 via email

@mirh
Copy link

mirh commented Nov 28, 2022

https://github.com/multitheftauto/mtasa-blue/blob/1.5.9/Client/loader/MainFunctions.cpp#L1005
As for UE4.. I don't know, they seem to have like three or four kinds of backends?
https://github.com/Andra-Games-Entertainment/Unreal-Engine-4.19.2/tree/4.19.0-release/Engine/Source/Runtime/Windows
Anyhow, in both cases you should have the sources to experiment (or at least older versions available for a neat bisect pinpointing)

I swear it's gonna be the epitome of facepalm if OS version turned out to be a total red herring and it was all about COM loading (I mean, not that we shouldn't also take care of the EAX unified case, but clearly that would have even other alternatives available)
EDIT: @Nucleoprotein why did you presume W10 was any special?

@mirh
Copy link

mirh commented Feb 5, 2023

Well fellas, I think this (super-filtered and cut-and-pasted in paint) screen makes the mystery pretty much dead obvious.

procmon
The game may even normally load our dsound.dll right on start (not shown, but it does happen).
But regardless, then they follow whatever guidance creative might have dispensed two decades ago and they rely on eax.dll.

First that's loaded through COM (in the pic I tried to point its CLSID to a custom folder to see if load order of the rest could be influenced, to no avail), and then it takes care of dsound in turn. Again, with COM.
This still wouldn't really explain the ass backwards Windows behaviour when programs are run as admin, but I guess this heightened level of complexity has so much (legacy) cruft beneath that everything and its opposite could go with it.
Aaaaaand here you have.

Anyhow, if this is actually the culprit, I wonder if all this bloody tinkering with the registry is even truly necessary (it's not exactly orthodox to mess with system-wide conventions, and unless there's no other way I would rather not sacrifice the convenience of "drag and drop and you are done").
Be it as it may that games still have dsound in their imports (at least Mafia does into LS3DF.dll) couldn't dsoal hijack any of the CoCreateInstance/IID_IDirectSound8/EAXDirectSoundCreate8 calls? Or it could support to be registered in place of the official eax unified dll.
EDIT: actually, do we even need the thing given that our own "hardware device" is meant to be the best of the most?

@MarioTainaka
Copy link
Author

Really glad to see this thread taking off the way it is, I made this during my short time with Windows 11. DSOAL not working properly was one of the reasons why I went back to 10 and i'm gonna stay on 10 as long as it takes. I thought I was crazy when I made this thread. But Seriously thank you all for contributing and figuring this out. Hopefully by the time 10's support ends we can finally use this properly on 11.

@mirh
Copy link

mirh commented Feb 5, 2023

Sigh, kill me...
What I have been saying in the last few posts (well, actually since the beginning, but now I have a working theory too) is that Windows version is completely irrelevant.
The only thing that matters is whether a game uses EAX unified or not (such as popttt).
EDIT: this should be renamed "COM loading doesn't load dsoal dll"

@mirh
Copy link

mirh commented Feb 7, 2023

Shoot. While navel gazing over #68, I figured that it's not just games using the mindbending Unified to rely on COM.

CoCreateInstance(CLSID_DirectSound8,NULL,CLSCTX_INPROC_SERVER,IID_IDirectSound8,something-device-maybe)

This is what ghidra shows me about the Wwise initialization, presumably used by every game they shipped in before 2013 at least.
Now, unbelievably enough those are just fine surround-wise on Vista+ (and in fact you could also argue that's the developer vision®)... but if you can potentially stick dsoal to them the better.
(and then, this way of initializing directsound was explicitly overtly mentioned in the documentation)

So.. yeah, we are back to square one of actually needing the overrides. Sorry for having tried too much to find a way out of this.

Long story short, to conclude: how to more smoothly present the instructions?
Should any normal person just running games require anything more than only the two CLSIDs in the OP?
How much passing over the convenience of a simple procedure just targetting HCU, is worth the bother to somebody that has to load dsound with COM as admin, having to come back here to read the longer FAQs with the full explanation?
Would it be legitimate for dsoal to also lowkey try to add/verify itself the keys it has access to?

EDIT: there is some pretty stretched reason to believe not only HKLM, but also HKCU can get reset on OS upgrade

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

6 participants