diff --git a/src/core/hle/DSOUND/DirectSound/DirectSound.hpp b/src/core/hle/DSOUND/DirectSound/DirectSound.hpp index 9a5c4f6d2..7d3bd5043 100644 --- a/src/core/hle/DSOUND/DirectSound/DirectSound.hpp +++ b/src/core/hle/DSOUND/DirectSound/DirectSound.hpp @@ -105,6 +105,7 @@ struct X_CDirectSoundBuffer LONG Xb_VolumeMixbin; DWORD Xb_dwHeadroom; X_DSENVOLOPEDESC Xb_EnvolopeDesc; + X_DSVOICEPROPS Xb_VoiceProperties; }; //Custom flags (4 bytes support up to 31 shifts,starting from 0) @@ -256,6 +257,7 @@ class X_CDirectSoundStream LONG Xb_VolumeMixbin; DWORD Xb_dwHeadroom; X_DSENVOLOPEDESC Xb_EnvolopeDesc; + X_DSVOICEPROPS Xb_VoiceProperties; }; // ****************************************************************** diff --git a/src/core/hle/DSOUND/XbDSoundLogging.cpp b/src/core/hle/DSOUND/XbDSoundLogging.cpp index 38115a0a4..72f027b08 100644 --- a/src/core/hle/DSOUND/XbDSoundLogging.cpp +++ b/src/core/hle/DSOUND/XbDSoundLogging.cpp @@ -318,7 +318,7 @@ LOGRENDER(X_DSBUFFERDESC) LOGRENDER_MEMBER_TYPE(DSBCAPS_FLAG, dwFlags) LOGRENDER_MEMBER(dwBufferBytes) LOGRENDER_MEMBER_TYPE(LPWAVEFORMATEX, lpwfxFormat) - LOGRENDER_MEMBER(lpMixBins) // TODO: Need loop support since lpMixBins is dynamic array. + LOGRENDER_MEMBER(lpMixBinsOutput) // TODO: Need loop support since lpMixBinsOutput is dynamic array. LOGRENDER_MEMBER(dwInputMixBin) ; } @@ -332,7 +332,7 @@ LOGRENDER(X_DSSTREAMDESC) LOGRENDER_MEMBER_TYPE(LPWAVEFORMATEX, lpwfxFormat) LOGRENDER_MEMBER_TYPE(void*, lpfnCallback) LOGRENDER_MEMBER(lpvContext) - LOGRENDER_MEMBER(lpMixBins) // TODO: Need loop support since lpMixBins is dynamic array. + LOGRENDER_MEMBER(lpMixBinsOutput) // TODO: Need loop support since lpMixBinsOutput is dynamic array. ; } diff --git a/src/core/hle/DSOUND/XbDSoundTypes.h b/src/core/hle/DSOUND/XbDSoundTypes.h index 068651f20..0fa71df51 100644 --- a/src/core/hle/DSOUND/XbDSoundTypes.h +++ b/src/core/hle/DSOUND/XbDSoundTypes.h @@ -33,6 +33,32 @@ #define WAVE_FORMAT_XBOX_ADPCM 0x0069 +// XDSMIXBIN Flags +#define XDSMIXBIN_FRONT_LEFT 0 +#define XDSMIXBIN_FRONT_RIGHT 1 +#define XDSMIXBIN_FRONT_CENTER 2 +#define XDSMIXBIN_LOW_FREQUENCY 3 +#define XDSMIXBIN_BACK_LEFT 4 +#define XDSMIXBIN_BACK_RIGHT 5 +#define XDSMIXBIN_SPEAKERS_MAX 6 // Max count for speakers +// Other flags are used + +// ****************************************************************** +// * X_DSMIXBINVOLUMEPAIR +// ****************************************************************** +typedef struct _XDSMIXBINVOLUMEPAIR { + DWORD dwMixBin; + LONG lVolume; +} X_DSMIXBINVOLUMEPAIR, *X_LPDSMIXBINVOLUMEPAIR; + +// ****************************************************************** +// * X_DSMIXBINS +// ****************************************************************** +typedef struct _XDSMIXBINS { + DWORD dwCount; + X_LPDSMIXBINVOLUMEPAIR lpMixBinVolumePairs; +} X_DSMIXBINS, *X_LPDSMIXBINS; + // EmuIDirectSoundBuffer_Play flags #define X_DSBPLAY_LOOPING 0x00000001 #define X_DSBPLAY_FROMSTART 0x00000002 @@ -92,7 +118,7 @@ struct X_DSBUFFERDESC DWORD dwFlags; DWORD dwBufferBytes; LPWAVEFORMATEX lpwfxFormat; - LPVOID lpMixBins; // TODO: Implement + X_LPDSMIXBINS lpMixBinsOutput; DWORD dwInputMixBin; }; @@ -133,7 +159,7 @@ struct X_DSSTREAMDESC LPWAVEFORMATEX lpwfxFormat; LPFNXMOCALLBACK lpfnCallback; LPVOID lpvContext; - PVOID lpMixBins; // TODO: Implement + X_LPDSMIXBINS lpMixBinsOutput; }; // ****************************************************************** @@ -184,32 +210,6 @@ XMEDIAINFO, *PXEIDIAINFO, *LPXMEDIAINFO; #define XMO_STREAMF_IN_PLACE 0x00000010 // The object supports in-place modification of data #define XMO_STREAMF_MASK 0x0000001F -// XDSMIXBIN Flags -#define XDSMIXBIN_FRONT_LEFT 0 -#define XDSMIXBIN_FRONT_RIGHT 1 -#define XDSMIXBIN_FRONT_CENTER 2 -#define XDSMIXBIN_LOW_FREQUENCY 3 -#define XDSMIXBIN_BACK_LEFT 4 -#define XDSMIXBIN_BACK_RIGHT 5 -#define XDSMIXBIN_SPEAKERS_MAX 6 // Max count for speakers -// Other flags are used - -// ****************************************************************** -// * X_DSMIXBINVOLUMEPAIR -// ****************************************************************** -typedef struct _XDSMIXBINVOLUMEPAIR { - DWORD dwMixBin; - LONG lVolume; -} X_DSMIXBINVOLUMEPAIR, *X_LPDSMIXBINVOLUMEPAIR; - -// ****************************************************************** -// * X_DSMB -// ****************************************************************** -typedef struct _XDSMIXBINS { - DWORD dwCount; - X_LPDSMIXBINVOLUMEPAIR lpMixBinVolumePairs; -} X_DSMIXBINS, *X_LPDSMIXBINS; - // ****************************************************************** // * X_DSFILTERDESC // ******************************************************************