Last update: 2020/25/1
The purpose of this issue filed is to keep a log of changes relative to DSound code bug need to be resolve.
Stable:
Current Title Issues:
Current code bugs:
Still an issue for below?
Current Title(s) with no audio: (affected AFTER merge from #514 HLE-Audio-Improvement)
Can anyone care to explain why CMcpxStream_Pause has a 4928 ref in DSound.1.0.4627.inl file? I had looked in blame section to find out who establish this coding bug. Turns out, there's no change of this XREF version since beginning of the file. @LukeUsher was the last person except the commit says it was revert back. Nothing else before it.
Reason for this is to able implement missing DirectSound_CDirectSoundStream_Pause function patch since Turok Evolution and Rayman Arena are not calling DirectSound_CDirectSoundStream_Pause function to play/stop audio during Intro videos. I am able to verify Taz - Wanted is calling it during Intro video.
Thanks @blueshogun96 for incorrect version in my post.
Are you sure you aren't referring to 4928? There was no 5928 XDK.
If that is the case, then it's intentional. Ever since the days of sir caustik and kingofc releasing 0.8.0, 4928 was redirected to 4627 since they were so highly similar. Cxbx will search for that signature accordingly, even if we redirect most of the signatures to 4627. Now, if it's causing a false positive, then we have a bug that needs fixing. If you can verify that, feel free to fix.
Shogun
Only thing I can verify it is not finding DirectSound_CDirectSoundStream_Pause address for both [XDK 4627] Turok Evolution and [XDK 4627] Rayman Arena games. However, it is finding CMcpxStream_Pause address. Note, I am looking in HLE Cache files for this verification. When I look at both addresses in Taz - Wanted and Turok Evolution, it looks different. Even the caller feels different as well. Something tells me this is the wrong location for CMcpxStream_Pause for both Turok E. and Taz plus other XDK 4627+ titles. I am still researching for correct location...
Thanks for the confirmation @blueshogun96 btw. :smiley:
Edit: I just need to separate asm code to see it better. Well, it's at same location and leading to apparently correct function since both are identical. Look like it was not included nor executed, next question would be how does xbox know when to play it? Hmm... In Taz - Wanted, I did see it make a pause first then play flag.
Edit2: Hmm, Turok E. and Rayman Arena titles appear does not need to wait and start playing audio. Except there's an issue with XADPCM playing with Rayman Arena for first video. This should be fun.
Edit3: Resolved
.xbe info: Xbe.txt
Kernel Debug file: KrnlDebug.txt
dragons lair 3d reporting to this aswell after the pop up i get black screen but the audio still plays

Turok Evolution (report by RadWolfie)
Jet Set Radio Future
HybridDirectSound3DBuffer_SetConeOrientation return 0x80070057 (DSERR_INVALIDPARAM)
It looks like this is caused by (0, 0, 0) being sent as the (x, y, z) parameters to the function.
The PC version of SetConeOrientation performs validation on the vector that is passed in, while the xbox version of the function does not.
Since it is expecting a direction vector, that it will in turn normalize, a zero vector is invalid when passed to the PC version of SetConeOrientation.
Correct, which I am so confused about it. There is no documentation of float range acceptable in all 3 parameters, for x y z values. The only thing I ever get was the default value for x: 0, y: 0, z: 1.0f.
I was hoping CDirectSoundVoice_SetConeOrientation might be false detection in WIP_HLEDB_v2 branch. Turns out I was wrong, it is at correct location.
Is it possible these title developers made some mistake about the z value? If so, the only solution we can do is to check if all 3 values has a zero then set z value to 1 for default.
Edit: Or skip the call to PC's DirectSound.
i have not checked to see at which point it is calling this, but the xbox version does not even look like it performs normalization on the values. They are just passed through and stored. Whereas the PC version check for NaN, Length > 0, Normalizes, and then i believe stores the value.
So the zero vector could just be some sort of internal initialization/invalidation of the cone orientation.
But, yeah, i cannot be sure on that. Checking for zero and skipping if so i guess is not so bad (that is what i am doing locally), it is not necessarily a performance critical function.
But it would be good to better understand why it is used this way as well.
Since I'm not quite happy with HLE DSound. I plan on make little bit of improvements next month or sooner.
NOTE: This is a self-planned improvement list.
Test cases:
@RadWolfie Driver 3 https://github.com/Cxbx-Reloaded/game-compatibility/issues/356 reports this error:
Return result report: 0x80070057
In EmuPatch_IDirectSound_SetOrientation (..\..\src\CxbxKrnl\EmuDSound.cpp)
Build: 9f66d00a dsfix 2
Hunter the reckoning
Hunter the reckoning has a ambient background sound trigger issue, when the sound box is entered the game freezes until the audio track finishes playing(4seccond), then the new ambient audio track takes over. Same with menus press pause swatches to no audio lags 4 a certain amount of time.
Org:"D:\MEDIA\Sounds\BGMusic\drip.wav"
New:"$XbePath\MEDIA\Sounds\BGMusic\drip.wav"
[0x1448] WARN: Use of unsupported pdssd->dwFlags mask(s) (0x00040000)
DEBUG: SetVolume | lVolume = 0 | volumeMixbin = 0 | dwHeadroom = 600
[0x1448] WARN: EmuDirectSound_CDirectSoundStream_GetInfo is not yet supported!
I left a review comment here that might be related to this : https://github.com/Cxbx-Reloaded/Cxbx-Reloaded/commit/270a821ad5d0d3728750830c5308e41003fa702c#r28802750
Mortal Kombat Deception also log this issue in log.
Call of Duty: Finest Hour
[0x2A9C] WARN: SetCurrentPosition Failed!
Return result report: 0x80070057
In EmuPatch_IDirectSoundBuffer_SetCurrentPosition (c:\projects\cxbx-reloaded\src\cxbxkrnl\emudsound.cpp)
Update:
Two titles has been removed from current issues list. Since they are resolved in latest develop build.
Enclave (Apr 9 2020 build) crashes "directsoundbuffer unlock failed"
Ah, this is the place to report these DSound problems.
A new issue has just popped up recently for the game below:
Another game, Madagascar (referred from the bottom of the current OP's body), does have an audio problem, if I recall rightly. I saw a recent video by Literalmente{game} where the dialogue audio seems to loop twice or thrice. So definitely check that out. I think I also saw a comment on Discord or game compat repo where one user reported a similar problem (general sound effects or music?) in another game. Can't remember which game.
Addendum: The latest post in the open Madagascar issue page, that was put up on June 2019, actually confirmed the repeating audio issue among many other problems.
Edit (May 19, 2020):
Most helpful comment
dragons lair 3d reporting to this aswell after the pop up i get black screen but the audio still plays
