Added 3 more verbose log detail to DirectSound plugin

Added WAVEFORMAT_CHANNEL, WAVEFORMAT_TAG, and DS_BCAPS
This commit is contained in:
RadWolfie 2019-02-09 18:56:24 -06:00
parent 553883322c
commit 1607c5a386
5 changed files with 62 additions and 7 deletions

View File

@ -114,9 +114,8 @@ struct X_CDirectSoundBuffer
LONG Xb_VolumeMixbin;
DWORD Xb_dwHeadroom;
X_DSENVOLOPEDESC Xb_EnvolopeDesc;
};
};
#define WAVE_FORMAT_XBOX_ADPCM 0x0069
//Custom flags (4 bytes support up to 31 shifts,starting from 0)
#define DSE_FLAG_PCM (1 << 0)
#define DSE_FLAG_XADPCM (1 << 1)

View File

@ -34,6 +34,30 @@
#include "Logging.h"
#include "DirectSoundLogging.hpp"
#include <mmreg.h>
namespace XTL {
#include "..\XbDSoundTypes.h"
}
FLAGS2STR_START(DS_BCAPS)
FLAG2STR(DSBCAPS_PRIMARYBUFFER)
FLAG2STR(DSBCAPS_STATIC)
FLAG2STR(DSBCAPS_LOCHARDWARE)
FLAG2STR(DSBCAPS_LOCSOFTWARE)
FLAG2STR(DSBCAPS_CTRL3D)
FLAG2STR(DSBCAPS_CTRLFREQUENCY)
FLAG2STR(DSBCAPS_CTRLPAN)
FLAG2STR(DSBCAPS_CTRLVOLUME)
FLAG2STR(DSBCAPS_CTRLPOSITIONNOTIFY)
FLAG2STR(DSBCAPS_CTRLFX)
FLAG2STR(DSBCAPS_STICKYFOCUS)
FLAG2STR(DSBCAPS_GLOBALFOCUS)
FLAG2STR(DSBCAPS_GETCURRENTPOSITION2)
FLAG2STR(DSBCAPS_MUTE3DATMAXDISTANCE)
FLAG2STR(DSBCAPS_LOCDEFER)
FLAG2STR(DSBCAPS_TRUEPLAYPOSITION)
FLAGS2STR_END_and_LOGRENDER(DS_BCAPS)
ENUM2STR_START(DS_RESULT)
ENUM2STR_CASE(DS_OK)
@ -63,11 +87,35 @@ ENUM2STR_START(DS_RESULT)
ENUM2STR_CASE(DSERR_FXUNAVAILABLE)
ENUM2STR_END_and_LOGRENDER(DS_RESULT)
ENUM2STR_START(WAVEFORMAT_TAG)
ENUM2STR_CASE(WAVE_FORMAT_PCM)
ENUM2STR_CASE(WAVE_FORMAT_ADPCM)
ENUM2STR_CASE(WAVE_FORMAT_XBOX_ADPCM)
ENUM2STR_CASE(WAVE_FORMAT_EXTENSIBLE)
ENUM2STR_END_and_LOGRENDER(WAVEFORMAT_TAG)
#define WFC_MONO 1
#define WFC_STEREO 2
#define WFC_2POINT1 3
#define WFC_QUAD 4
#define WFC_5POINT0 5
#define WFC_5POINT1 6
ENUM2STR_START(WAVEFORMAT_CHANNEL)
ENUM2STR_CASE(WFC_MONO)
ENUM2STR_CASE(WFC_STEREO)
ENUM2STR_CASE(WFC_2POINT1)
ENUM2STR_CASE(WFC_QUAD)
ENUM2STR_CASE(WFC_5POINT0)
ENUM2STR_CASE(WFC_5POINT1)
ENUM2STR_END_and_LOGRENDER(WAVEFORMAT_CHANNEL)
LOGRENDER(WAVEFORMATEX)
{
// TODO: Implement case for different type of structure data.
return os
LOGRENDER_MEMBER(wFormatTag)
LOGRENDER_MEMBER(nChannels)
LOGRENDER_MEMBER_TYPE(WAVEFORMAT_TAG, wFormatTag)
LOGRENDER_MEMBER_TYPE(WAVEFORMAT_CHANNEL, nChannels)
LOGRENDER_MEMBER(nSamplesPerSec)
LOGRENDER_MEMBER(nAvgBytesPerSec)
LOGRENDER_MEMBER(nBlockAlign)
@ -80,7 +128,7 @@ LOGRENDER(DSBUFFERDESC)
{
return os
LOGRENDER_MEMBER(dwSize)
LOGRENDER_MEMBER(dwFlags)
LOGRENDER_MEMBER_TYPE(DS_BCAPS, dwFlags)
LOGRENDER_MEMBER(dwBufferBytes)
LOGRENDER_MEMBER(dwReserved)
LOGRENDER_MEMBER_TYPE(LPWAVEFORMATEX, lpwfxFormat)

View File

@ -37,8 +37,14 @@
#include <dsound.h>
#include "Logging.h"
enum DS_BCAPS;
enum DS_RESULT;
enum WAVEFORMAT_CHANNEL;
enum WAVEFORMAT_TAG;
FLAGS2STR_HEADER(DS_BCAPS)
ENUM2STR_HEADER(DS_RESULT)
ENUM2STR_HEADER(WAVEFORMAT_CHANNEL)
ENUM2STR_HEADER(WAVEFORMAT_TAG)
LOGRENDER_HEADER(WAVEFORMATEX)
LOGRENDER_HEADER(DSBUFFERDESC)

View File

@ -302,7 +302,7 @@ LOGRENDER(X_DSBUFFERDESC)
{
return os
LOGRENDER_MEMBER(dwSize)
LOGRENDER_MEMBER(dwFlags)
LOGRENDER_MEMBER(dwFlags) // TODO: Need custom flags setup
LOGRENDER_MEMBER(dwBufferBytes)
LOGRENDER_MEMBER_TYPE(LPWAVEFORMATEX, lpwfxFormat)
LOGRENDER_MEMBER(lpMixBins)
@ -314,7 +314,7 @@ LOGRENDER(X_DSBUFFERDESC)
LOGRENDER(X_DSSTREAMDESC)
{
return os
LOGRENDER_MEMBER(dwFlags)
LOGRENDER_MEMBER(dwFlags) // TODO: Need custom flags setup
LOGRENDER_MEMBER(dwMaxAttachedPackets)
LOGRENDER_MEMBER_TYPE(LPWAVEFORMATEX, lpwfxFormat)
LOGRENDER_MEMBER_TYPE(void*, lpfnCallback)

View File

@ -40,6 +40,8 @@
// TODO: Also need to use fixed size to able support cross-platform without extra work.
// Such as uint32_t, uint16_t, etc.
#define WAVE_FORMAT_XBOX_ADPCM 0x0069
// EmuIDirectSoundBuffer_Play flags
#define X_DSBPLAY_LOOPING 0x00000001
#define X_DSBPLAY_FROMSTART 0x00000002