Open drunohazarb opened 1 year ago
The 2a8af120-e9de-4132-aaa5-4bdda5f325b8
GUID doesn't seem to be recognized, and a search on DuckDuckGo only returns two results from a few years ago:
https://www.indirectsound.com/downloads.html
- Use Microsoft's COM object when IID {2A8AF120-E9DE-4132-AAA5-4BDDA5F325B8} is queried
- This can at least partially fix DirectMusic in some games, but it may also cause problems of its own (in No One Lives Forever 2, for example, this changes restores missing music but there can still be crashes inside DirectMusic which may or may not be related)
- DirectMusic's IDirectMusicPerformance8::CreateAudioPath() can call DirectSound and query it for an undocumented IID. IndirectSound will now recognize this IID, pass it on directly to Microsoft's official DirectSound, and return the resulting COM object to the application. This means, however, that DirectMusic is using a pure DirectSound COM object that is not controlled by IndirectSound in any way (specifically, the COM object that DirectMusic has does not support hardware acceleration).
It seems to be an undocumented internal interface that DirectMusic uses to get non-public functionality, but nothing's been found out about it since then.
Checks out, this game requires the native DirectMusic to be installed to work under Wine, regardless of IndirectSound.
Looks like we won't be seeing an open-source re-implementation of this interface without putting some serious effort on reverse engineering DirectMusic. Hope Codeweavers and Valve can get there some day.
https://github.com/google-code-export/hourglass-win32/blob/master/src/wintasee/hooks/soundhooks.cpp#L2032 I found this on the other hand (from the guys here I guess).
But they are pretty strange numbers tbh (on top of the fact not even XP sources seem to have them). For instance {d28de0d0-2794-492f-a3ff-e24180d54379}
is reported to be IID_IDirectSoundSynthSink elsewhere (dmusic), not IID_IDirectSoundSinkSync (dsound) which has another guid.
Is the directmusic even in the scope of the project?
Ok after banging my head to hell and beyond with Ghidra.. I think it may be IID_IDirectSoundPrivate
?
(the name would also confirm the suspect the wine devs had, and it would explain why it was so hidden).
And it wasn't even showing in the "code drops", because it seems like that used to be {d6e525ae-b125-4ec4-be13-126d0cf7afb6}
before DX9 was released (which couldn't cut it in time for the XP SP1 and ~2002 xbox leaks).
If it can help, it's either called from dmime.dll or dmusic.dll.
@lmichaelis a mystery for you perhaps
Game refuses to launch with DSOAL, displaying the following error. Works fine with IndirectSound.
DSOAL_LOGLEVEL=1 Output:
25b8:fixme:dsound:DSDevice_GetInterface Unhandled GUID: {2a8af120-e9de-4132-aaa5-4bdda5f325b8}
DSOAL_LOGLEVEL=3 Output: