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

Splinter Cell and Splinter Cell: Chaos Theory query for unsupported propset #102

Open
Hiradur opened this issue Jul 23, 2024 · 4 comments
Open

Comments

@Hiradur
Copy link
Contributor

Hiradur commented Jul 23, 2024

Both Splinter Cell and Splinter Cell: Chaos Theory query for a propset that DSOAL reports as unsupported:

0024:debug:dsound:BufferProp::QuerySupport (087c3a28)->({a94047c0-1cef-11d3-bdb8-00c0f02ddf87}, 0x0, 0032d0d8)
0024:fixme:dsound:BufferProp::QuerySupport Unhandled propset: {a94047c0-1cef-11d3-bdb8-00c0f02ddf87} (propid: 0)

Quote from @kcat after mentioning this on IRC:

[13:28:45] <KittyCat> hmm, I wonder what that guid is. it seems similar to DSPROPSETID_EAX30_ListenerProperties/DSPROPSETID_EAX30_BufferProperties, but not quite the same
[13:30:03] <KittyCat> neither the wine or eax headers seem to have it, a search isn't showing anything promising
[13:31:03] <Hiradur> Could it come from DS3D or be specific to Creative's driver?
[14:03:28] <KittyCat> maybe Creative's driver, or some unknown/under-documented eax interface
@mirh
Copy link

mirh commented Jul 24, 2024

Interestingly these, fc2, ac and BGE are all first party ubisoft games.. Ok nvm max payne 2 and hitman 2 should also have it.
Could it be a query for EAX1 properties?

@Hiradur
Copy link
Contributor Author

Hiradur commented Jul 27, 2024

It might be provided by an EAX implementation from one of Creative's competitors. IIRC, Realtek and Aureal provided their own EAX implementations and possibly others as well.

@mirh
Copy link

mirh commented Sep 16, 2024

That's very meaningless because every single vendor had to have its own implementation, yes.. but rolling out your own GUID with blackjack and hookers then that's doing something else entirely and would break compatibility with the standard itself.

Anyhow FWIW eax.dll version 2.6 (2.06?) from 1999 doesn't have it, while version 3.0.6 (3.06?) from 2001 has it. V4 doesn't though.
The file is probably why all these random games have it even with no supposed "special attentions given to audio".
After some outside of the box thinking in ghidra, I found eax.dll uses it in some strange super long repeated conditional, which I really could make no sense of.. BUT that sits within two other similar ifs checks that *do have* known CLSIDs. Simply put:

DSPROPSETID_EAX20_ListenerProperties
????????????????????????????????????
DSPROPSETID_EAX30_ListenerProperties

Now, that shouldn't be automatically interpreted as some sort of ordered relation (even though it may).. But, considering we *do* know what DSPROPSETID_EAX10_ListenerProperties is (and it's not that) I'm kinda afraid that however improbable what remains could be the worst.

Could it be a reference to whatever the hell "EAX2.5" is or was supposed to be?
@kxproject do you know if EMU10K1 had some sort of "can't physically do more than EAX2, but I'm still better than peasants" mode? Or maybe that's just some old ass beta they had internally.

@mirh
Copy link

mirh commented Sep 16, 2024

Holy shit, I nailed it.
https://archive.org/details/sb-audigy-driver
The first(?) Audigy drivers had debug symbols left in!
And yes, I can confidently confirm that in e10kx2k.sys the mysterious string is _DSPROPSETID_EAX25_Listener.
(of very much interesting note that this is also included inside of the 0.9.4.1 openal32.dll that ships together)

Again, it is unclear what exactly this was used for but as a matter of fact I could also find it inside 2000's sblfx.dll, aka "SB Live! DS3D & Effects" (presumably they it's in a dll and not a normal kernel driver, because they didn't want to replicate the code between VxD, WDM and old NT).

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

2 participants