1 #ifndef DIRECTXSOUNDDRIVER_HH 2 #define DIRECTXSOUNDDRIVER_HH 6 #ifdef WIN32_LEAN_AND_MEAN 7 #undef WIN32_LEAN_AND_MEAN // Needed for <dsound.h> 9 #define DIRECTSOUND_VERSION 0x0500 15 class DirectXSoundDriver final :
public SoundDriver
18 DirectXSoundDriver(
const DirectXSoundDriver&) =
delete;
19 DirectXSoundDriver& operator=(
const DirectXSoundDriver&) =
delete;
21 DirectXSoundDriver(
unsigned sampleRate,
unsigned bufferSize);
22 ~DirectXSoundDriver();
25 void unmute()
override;
27 unsigned getFrequency()
const override;
28 unsigned getSamples()
const override;
30 void uploadBuffer(int16_t* buffer,
unsigned len)
override;
34 int dxCanWrite(
unsigned start,
unsigned size);
35 void dxWriteOne(int16_t* buffer,
unsigned lockSize);
37 enum DxState { DX_SOUND_DISABLED, DX_SOUND_ENABLED, DX_SOUND_RUNNING };
39 unsigned bufferOffset;
41 unsigned fragmentSize;
43 LPDIRECTSOUNDBUFFER primaryBuffer;
44 LPDIRECTSOUNDBUFFER secondaryBuffer;
45 LPDIRECTSOUND directSound;
53 #endif // DIRECTXSOUNDDRIVER_HH
Thanks to enen for testing this on a real cartridge: