Kappa971 wrote on 2021-12-26, 22:44:
I have some news. With DSOAL r418 the reverb in Serious Sam's Karnak level works (although I had to set boost = +12 to hear it). […]
Show full quote
I have some news. With DSOAL r418 the reverb in Serious Sam's Karnak level works (although I had to set boost = +12 to hear it). It contains OpenAL Soft 1.21.0. Since OpenAL Soft 1.21.1, the reverb stops working.
In Far Cry I still don't hear any reverb.
Can you get me a save game at the spot that you would like to know what reverb is happening? If you can do that I can tell you what EAX settings are being used and whether it should be audible or not, at least with the Steam version. (Depending on how curious I get I might also try to find my original discs in my basement, but no promises hehe.) You can email it to me directly at firstname.lastname@example.org if you'd like, or post it here if you think others might also want to test.
I don't know how DSOAL works, sorry, so I don't know if one would expect to see anything about EAX or not. I am confident in the game's behavior that I described, but I don't know whether DSOAL would log any of that or not.
Of course, I only tried two levels. The level where the reverb is present in ALchemy is Level 2 Carrier.
There were two save games on that level, so I just chose the one that the game said had been loaded last.
These are the EAX settings the game is requesting when I load that save game:
room = 0
roomHF = 0
roomRollOffFactor = 0
decayTime = 0
decayHFRatio = 0
reflections = 0
reflectionsDelay = 0
reverb = 0
reverbDelay = 0
environment = 569393924
environmentSize = 0
environmentDiffusion = 0
airAbsorptionHF = 0
flags = 0
There are two things to note: 1) Almost all of the values are zero (this would generally indicate that either the programmer cleared everything to zero and then never filled in anything or that the programmer never filled in anything at all but the default memory happened to be filled with zeros) and 2) The environment, the only non-zero value, is a huge number.
The "environment" is the default environment type that I mentioned in the previous post about the start of the game (where it was set to "psychotic"). There are only 26 environments, and so the only valid values are 0-25. This means that the call to set the EAX properties will return E_INVALIDARG, none of them will be set, and the previous values will stay active. Those previous values are from the menu (or loading screen), and have the volume set to the minimum so that no EAX reverb is audible.
[Full disclosure: What I just described is how IndirectSound behaves, and I implemented that years ago. That was before my more rigorous approach to testing and documenting behavior with strange input and so I can't 100% guarantee that all of the other values would be ignored if the environment value were bad in Windows XP because I don't remember how I tested it. I can guarantee that the values that FarCry is requesting aren't the result of a carefully crafted sonic environment, though: It looks like a bug.)
It seems to me that DSOAL is behaving correctly. If you hear any reverb with ALchemy it seems like it is a bug with ALchemy accepting invalid values.
Also, from what I can tell, none of the EAX calls that FarCry makes (at least the ones that the Steam version makes) really make sense. It would be interesting to know the history here, but I don't think you're missing anything great. My advice would be to play without reverb and be content 😀