From d02edee33c4077ad16fbd4fc88694092140526b6 Mon Sep 17 00:00:00 2001 From: cyberwarriorx Date: Sun, 12 Nov 2006 18:24:53 +0000 Subject: [PATCH] -Fixed the formatting --- desmume/src/windows/snddx.c | 512 ++++++++++++++++++------------------ desmume/src/windows/snddx.h | 50 ++-- 2 files changed, 282 insertions(+), 280 deletions(-) diff --git a/desmume/src/windows/snddx.c b/desmume/src/windows/snddx.c index 0d999014e..1ab5c45dd 100755 --- a/desmume/src/windows/snddx.c +++ b/desmume/src/windows/snddx.c @@ -1,264 +1,266 @@ -/* Copyright (C) 2005-2006 Theo Berkau - - This file is part of DeSmuME - - DeSmuME is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - DeSmuME is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with DeSmuME; if not, write to the Free Software - Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -*/ +/* Copyright (C) 2005-2006 Theo Berkau + + This file is part of DeSmuME + + DeSmuME is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + DeSmuME is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with DeSmuME; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +*/ -#include -#ifdef __MINGW32__ -// I have to do this because for some reason because the dxerr8.h header is fubared -const char* __stdcall DXGetErrorString8A(HRESULT hr); -#define DXGetErrorString8 DXGetErrorString8A -const char* __stdcall DXGetErrorDescription8A(HRESULT hr); -#define DXGetErrorDescription8 DXGetErrorDescription8A -#else -#include -#endif -#include "../SPU.h" -#include "snddx.h" - -int SNDDXInit(int buffersize); -void SNDDXDeInit(); -void SNDDXUpdateAudio(s16 *buffer, u32 num_samples); -u32 SNDDXGetAudioSpace(); -void SNDDXMuteAudio(); -void SNDDXUnMuteAudio(); -void SNDDXSetVolume(int volume); - -SoundInterface_struct SNDDIRECTX = { -SNDCORE_DIRECTX, -"Direct Sound Interface", -SNDDXInit, -SNDDXDeInit, -SNDDXUpdateAudio, -SNDDXGetAudioSpace, -SNDDXMuteAudio, -SNDDXUnMuteAudio, -SNDDXSetVolume -}; - -LPDIRECTSOUND8 lpDS8; -LPDIRECTSOUNDBUFFER lpDSB, lpDSB2; -extern HWND hwnd; - -static s16 *stereodata16; -static u32 soundoffset=0; -static u32 soundbufsize; -static LONG soundvolume; -static int issoundmuted; - +#include +#ifdef __MINGW32__ +// I have to do this because for some reason because the dxerr8.h header is fubared +const char* __stdcall DXGetErrorString8A(HRESULT hr); +#define DXGetErrorString8 DXGetErrorString8A +const char* __stdcall DXGetErrorDescription8A(HRESULT hr); +#define DXGetErrorDescription8 DXGetErrorDescription8A +#else +#include +#endif +#include "../SPU.h" +#include "snddx.h" + +int SNDDXInit(int buffersize); +void SNDDXDeInit(); +void SNDDXUpdateAudio(s16 *buffer, u32 num_samples); +u32 SNDDXGetAudioSpace(); +void SNDDXMuteAudio(); +void SNDDXUnMuteAudio(); +void SNDDXSetVolume(int volume); + +SoundInterface_struct SNDDIRECTX = { +SNDCORE_DIRECTX, +"Direct Sound Interface", +SNDDXInit, +SNDDXDeInit, +SNDDXUpdateAudio, +SNDDXGetAudioSpace, +SNDDXMuteAudio, +SNDDXUnMuteAudio, +SNDDXSetVolume +}; + +LPDIRECTSOUND8 lpDS8; +LPDIRECTSOUNDBUFFER lpDSB, lpDSB2; +extern HWND hwnd; + +static s16 *stereodata16; +static u32 soundoffset=0; +static u32 soundbufsize; +static LONG soundvolume; +static int issoundmuted; + ////////////////////////////////////////////////////////////////////////////// - -int SNDDXInit(int buffersize) -{ - DSBUFFERDESC dsbdesc; - WAVEFORMATEX wfx; - HRESULT ret; - char tempstr[512]; - - if ((ret = DirectSoundCreate8(NULL, &lpDS8, NULL)) != DS_OK) - { - sprintf(tempstr, "DirectSound8Create error: %s - %s", DXGetErrorString8(ret), DXGetErrorDescription8(ret)); - MessageBox (NULL, tempstr, "Error", MB_OK | MB_ICONINFORMATION); - return -1; - } - - if ((ret = IDirectSound8_SetCooperativeLevel(lpDS8, hwnd, DSSCL_PRIORITY)) != DS_OK) - { - sprintf(tempstr, "IDirectSound8_SetCooperativeLevel error: %s - %s", DXGetErrorString8(ret), DXGetErrorDescription8(ret)); - MessageBox (NULL, tempstr, "Error", MB_OK | MB_ICONINFORMATION); - return -1; - } - - memset(&dsbdesc, 0, sizeof(dsbdesc)); - dsbdesc.dwSize = sizeof(DSBUFFERDESC); - dsbdesc.dwFlags = DSBCAPS_PRIMARYBUFFER; - dsbdesc.dwBufferBytes = 0; - dsbdesc.lpwfxFormat = NULL; - - if ((ret = IDirectSound8_CreateSoundBuffer(lpDS8, &dsbdesc, &lpDSB, NULL)) != DS_OK) - { - sprintf(tempstr, "Error when creating primary sound buffer: %s - %s", DXGetErrorString8(ret), DXGetErrorDescription8(ret)); - MessageBox (NULL, tempstr, "Error", MB_OK | MB_ICONINFORMATION); - return -1; - } - - soundbufsize = buffersize * 2 * 2; - - memset(&wfx, 0, sizeof(wfx)); - wfx.wFormatTag = WAVE_FORMAT_PCM; - wfx.nChannels = 2; - wfx.nSamplesPerSec = 44100; - wfx.wBitsPerSample = 16; - wfx.nBlockAlign = (wfx.wBitsPerSample / 8) * wfx.nChannels; - wfx.nAvgBytesPerSec = wfx.nSamplesPerSec * wfx.nBlockAlign; - - if ((ret = IDirectSoundBuffer8_SetFormat(lpDSB, &wfx)) != DS_OK) - { - sprintf(tempstr, "IDirectSoundBuffer8_SetFormat error: %s - %s", DXGetErrorString8(ret), DXGetErrorDescription8(ret)); - MessageBox (NULL, tempstr, "Error", MB_OK | MB_ICONINFORMATION); - return -1; - } - - memset(&dsbdesc, 0, sizeof(dsbdesc)); - dsbdesc.dwSize = sizeof(DSBUFFERDESC); - dsbdesc.dwFlags = DSBCAPS_GLOBALFOCUS | DSBCAPS_STICKYFOCUS | - DSBCAPS_CTRLVOLUME | DSBCAPS_GETCURRENTPOSITION2 | - DSBCAPS_LOCHARDWARE; - dsbdesc.dwBufferBytes = soundbufsize; - dsbdesc.lpwfxFormat = &wfx; - - if ((ret = IDirectSound8_CreateSoundBuffer(lpDS8, &dsbdesc, &lpDSB2, NULL)) != DS_OK) - { - if (ret == DSERR_CONTROLUNAVAIL || - ret == DSERR_INVALIDCALL) - { - // Try using a software buffer instead - dsbdesc.dwFlags = DSBCAPS_GLOBALFOCUS | DSBCAPS_STICKYFOCUS | - DSBCAPS_CTRLVOLUME | DSBCAPS_GETCURRENTPOSITION2 | - DSBCAPS_LOCSOFTWARE; - - if ((ret = IDirectSound8_CreateSoundBuffer(lpDS8, &dsbdesc, &lpDSB2, NULL)) != DS_OK) - { - sprintf(tempstr, "Error when creating secondary sound buffer: %s - %s", DXGetErrorString8(ret), DXGetErrorDescription8(ret)); - MessageBox (NULL, tempstr, "Error", MB_OK | MB_ICONINFORMATION); - return -1; - } - } - else - { - sprintf(tempstr, "Error when creating secondary sound buffer: %s - %s", DXGetErrorString8(ret), DXGetErrorDescription8(ret)); - MessageBox (NULL, tempstr, "Error", MB_OK | MB_ICONINFORMATION); - return -1; - } - } - - IDirectSoundBuffer8_Play(lpDSB2, 0, 0, DSBPLAY_LOOPING); - - if ((stereodata16 = (s16 *)malloc(soundbufsize)) == NULL) - return -1; - - memset(stereodata16, 0, soundbufsize); - - soundvolume = DSBVOLUME_MAX; - issoundmuted = 0; - - return 0; -} - + +int SNDDXInit(int buffersize) +{ + DSBUFFERDESC dsbdesc; + WAVEFORMATEX wfx; + HRESULT ret; + char tempstr[512]; + + if ((ret = DirectSoundCreate8(NULL, &lpDS8, NULL)) != DS_OK) + { + sprintf(tempstr, "DirectSound8Create error: %s - %s", DXGetErrorString8(ret), DXGetErrorDescription8(ret)); + MessageBox (NULL, tempstr, "Error", MB_OK | MB_ICONINFORMATION); + return -1; + } + + if ((ret = IDirectSound8_SetCooperativeLevel(lpDS8, hwnd, DSSCL_PRIORITY)) != DS_OK) + { + sprintf(tempstr, "IDirectSound8_SetCooperativeLevel error: %s - %s", DXGetErrorString8(ret), DXGetErrorDescription8(ret)); + MessageBox (NULL, tempstr, "Error", MB_OK | MB_ICONINFORMATION); + return -1; + } + + memset(&dsbdesc, 0, sizeof(dsbdesc)); + dsbdesc.dwSize = sizeof(DSBUFFERDESC); + dsbdesc.dwFlags = DSBCAPS_PRIMARYBUFFER; + dsbdesc.dwBufferBytes = 0; + dsbdesc.lpwfxFormat = NULL; + + if ((ret = IDirectSound8_CreateSoundBuffer(lpDS8, &dsbdesc, &lpDSB, NULL)) != DS_OK) + { + sprintf(tempstr, "Error when creating primary sound buffer: %s - %s", DXGetErrorString8(ret), DXGetErrorDescription8(ret)); + MessageBox (NULL, tempstr, "Error", MB_OK | MB_ICONINFORMATION); + return -1; + } + + soundbufsize = buffersize * 2 * 2; + + memset(&wfx, 0, sizeof(wfx)); + wfx.wFormatTag = WAVE_FORMAT_PCM; + wfx.nChannels = 2; + wfx.nSamplesPerSec = 44100; + wfx.wBitsPerSample = 16; + wfx.nBlockAlign = (wfx.wBitsPerSample / 8) * wfx.nChannels; + wfx.nAvgBytesPerSec = wfx.nSamplesPerSec * wfx.nBlockAlign; + + if ((ret = IDirectSoundBuffer8_SetFormat(lpDSB, &wfx)) != DS_OK) + { + sprintf(tempstr, "IDirectSoundBuffer8_SetFormat error: %s - %s", DXGetErrorString8(ret), DXGetErrorDescription8(ret)); + MessageBox (NULL, tempstr, "Error", MB_OK | MB_ICONINFORMATION); + return -1; + } + + memset(&dsbdesc, 0, sizeof(dsbdesc)); + dsbdesc.dwSize = sizeof(DSBUFFERDESC); + dsbdesc.dwFlags = DSBCAPS_GLOBALFOCUS | DSBCAPS_STICKYFOCUS | + DSBCAPS_CTRLVOLUME | DSBCAPS_GETCURRENTPOSITION2 | + DSBCAPS_LOCHARDWARE; + dsbdesc.dwBufferBytes = soundbufsize; + dsbdesc.lpwfxFormat = &wfx; + + if ((ret = IDirectSound8_CreateSoundBuffer(lpDS8, &dsbdesc, &lpDSB2, NULL)) != DS_OK) + { + if (ret == DSERR_CONTROLUNAVAIL || + ret == DSERR_INVALIDCALL) + { + // Try using a software buffer instead + dsbdesc.dwFlags = DSBCAPS_GLOBALFOCUS | DSBCAPS_STICKYFOCUS | + DSBCAPS_CTRLVOLUME | DSBCAPS_GETCURRENTPOSITION2 | + DSBCAPS_LOCSOFTWARE; + + if ((ret = IDirectSound8_CreateSoundBuffer(lpDS8, &dsbdesc, &lpDSB2, NULL)) != DS_OK) + { + sprintf(tempstr, "Error when creating secondary sound buffer: %s - %s", DXGetErrorString8(ret), DXGetErrorDescription8(ret)); + MessageBox (NULL, tempstr, "Error", MB_OK | MB_ICONINFORMATION); + return -1; + } + } + else + { + sprintf(tempstr, "Error when creating secondary sound buffer: %s - %s", DXGetErrorString8(ret), DXGetErrorDescription8(ret)); + MessageBox (NULL, tempstr, "Error", MB_OK | MB_ICONINFORMATION); + return -1; + } + } + + IDirectSoundBuffer8_Play(lpDSB2, 0, 0, DSBPLAY_LOOPING); + + if ((stereodata16 = (s16 *)malloc(soundbufsize)) == NULL) + return -1; + + memset(stereodata16, 0, soundbufsize); + + soundvolume = DSBVOLUME_MAX; + issoundmuted = 0; + + return 0; +} + ////////////////////////////////////////////////////////////////////////////// - -void SNDDXDeInit() -{ - DWORD status=0; - - if (lpDSB2) - { - IDirectSoundBuffer8_GetStatus(lpDSB2, &status); - - if(status == DSBSTATUS_PLAYING) - IDirectSoundBuffer8_Stop(lpDSB2); - - IDirectSoundBuffer8_Release(lpDSB2); - lpDSB2 = NULL; - } - - if (lpDSB) - { - IDirectSoundBuffer8_Release(lpDSB); - lpDSB = NULL; - } - - if (lpDS8) - { - IDirectSound8_Release(lpDS8); - lpDS8 = NULL; - } -} - + +void SNDDXDeInit() +{ + DWORD status=0; + + if (lpDSB2) + { + IDirectSoundBuffer8_GetStatus(lpDSB2, &status); + + if(status == DSBSTATUS_PLAYING) + IDirectSoundBuffer8_Stop(lpDSB2); + + IDirectSoundBuffer8_Release(lpDSB2); + lpDSB2 = NULL; + } + + if (lpDSB) + { + IDirectSoundBuffer8_Release(lpDSB); + lpDSB = NULL; + } + + if (lpDS8) + { + IDirectSound8_Release(lpDS8); + lpDS8 = NULL; + } +} + ////////////////////////////////////////////////////////////////////////////// - -void SNDDXUpdateAudio(s16 *buffer, u32 num_samples) -{ - LPVOID buffer1; - LPVOID buffer2; - DWORD buffer1_size, buffer2_size; - DWORD status; - - IDirectSoundBuffer8_GetStatus(lpDSB2, &status); - - if (status & DSBSTATUS_BUFFERLOST) - return; // fix me - - IDirectSoundBuffer8_Lock(lpDSB2, soundoffset, num_samples * sizeof(s16) * 2, &buffer1, &buffer1_size, &buffer2, &buffer2_size, 0); - - memcpy(buffer1, buffer, buffer1_size); - if (buffer2) - memcpy(buffer2, buffer+buffer1_size, buffer2_size); - - soundoffset += buffer1_size + buffer2_size; - soundoffset %= soundbufsize; - - IDirectSoundBuffer8_Unlock(lpDSB2, buffer1, buffer1_size, buffer2, buffer2_size); -} - + +void SNDDXUpdateAudio(s16 *buffer, u32 num_samples) +{ + LPVOID buffer1; + LPVOID buffer2; + DWORD buffer1_size, buffer2_size; + DWORD status; + + IDirectSoundBuffer8_GetStatus(lpDSB2, &status); + + if (status & DSBSTATUS_BUFFERLOST) + return; // fix me + + IDirectSoundBuffer8_Lock(lpDSB2, soundoffset, num_samples * sizeof(s16) * 2, &buffer1, &buffer1_size, &buffer2, &buffer2_size, 0); + + memcpy(buffer1, buffer, buffer1_size); + if (buffer2) + memcpy(buffer2, ((u8 *)buffer)+buffer1_size, buffer2_size); + + soundoffset += buffer1_size + buffer2_size; + soundoffset %= soundbufsize; + + IDirectSoundBuffer8_Unlock(lpDSB2, buffer1, buffer1_size, buffer2, buffer2_size); +} + ////////////////////////////////////////////////////////////////////////////// - -u32 SNDDXGetAudioSpace() -{ - DWORD playcursor, writecursor; - u32 freespace=0; - - if (IDirectSoundBuffer8_GetCurrentPosition (lpDSB2, &playcursor, &writecursor) != DS_OK) - return 0; - - if (soundoffset > playcursor) - freespace = soundbufsize - soundoffset + playcursor; - else - freespace = playcursor - soundoffset; - -// if (freespace > 512) - return (freespace / 2 / 2); -// else -// return 0; -} - + +u32 SNDDXGetAudioSpace() +{ + DWORD playcursor, writecursor; + u32 freespace=0; + + if (IDirectSoundBuffer8_GetCurrentPosition (lpDSB2, &playcursor, &writecursor) != DS_OK) + return 0; + + if (soundoffset > playcursor) + freespace = soundbufsize - soundoffset + playcursor; + else + freespace = playcursor - soundoffset; + +// if (freespace > 512) + return (freespace / 2 / 2); +// else +// return 0; +} + ////////////////////////////////////////////////////////////////////////////// - -void SNDDXMuteAudio() -{ - issoundmuted = 1; - IDirectSoundBuffer8_SetVolume (lpDSB2, DSBVOLUME_MIN); -} - + +void SNDDXMuteAudio() +{ + issoundmuted = 1; + IDirectSoundBuffer8_SetVolume (lpDSB2, DSBVOLUME_MIN); +} + ////////////////////////////////////////////////////////////////////////////// - -void SNDDXUnMuteAudio() -{ - issoundmuted = 0; - IDirectSoundBuffer8_SetVolume (lpDSB2, soundvolume); -} - + +void SNDDXUnMuteAudio() +{ + issoundmuted = 0; + IDirectSoundBuffer8_SetVolume (lpDSB2, soundvolume); +} + ////////////////////////////////////////////////////////////////////////////// - -void SNDDXSetVolume(int volume) -{ - soundvolume = (((LONG)volume) - 100) * 100; - if (!issoundmuted) - IDirectSoundBuffer8_SetVolume (lpDSB2, soundvolume); -} - + +void SNDDXSetVolume(int volume) +{ + soundvolume = (((LONG)volume) - 100) * 100; + if (!issoundmuted) + IDirectSoundBuffer8_SetVolume (lpDSB2, soundvolume); +} + +////////////////////////////////////////////////////////////////////////////// + diff --git a/desmume/src/windows/snddx.h b/desmume/src/windows/snddx.h index 245411751..bb75bc086 100755 --- a/desmume/src/windows/snddx.h +++ b/desmume/src/windows/snddx.h @@ -1,25 +1,25 @@ -/* Copyright (C) 2006 Theo Berkau - - This file is part of DeSmuME - - DeSmuME is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - DeSmuME is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with DeSmuME; if not, write to the Free Software - Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -*/ - -#ifndef SNDDX_H -#define SNDDX_H -#define SNDCORE_DIRECTX 2 - -extern SoundInterface_struct SNDDIRECTX; -#endif +/* Copyright (C) 2006 Theo Berkau + + This file is part of DeSmuME + + DeSmuME is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + DeSmuME is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with DeSmuME; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +*/ + +#ifndef SNDDX_H +#define SNDDX_H +#define SNDCORE_DIRECTX 2 + +extern SoundInterface_struct SNDDIRECTX; +#endif