mirror of
https://github.com/libretro/snes9x.git
synced 2024-11-28 02:50:36 +00:00
win32: remove FMOD and FMOD_EX
This commit is contained in:
parent
3910291e95
commit
93c65d9253
381
win32/CFMOD.cpp
381
win32/CFMOD.cpp
@ -1,381 +0,0 @@
|
||||
/***********************************************************************************
|
||||
Snes9x - Portable Super Nintendo Entertainment System (TM) emulator.
|
||||
|
||||
(c) Copyright 1996 - 2002 Gary Henderson (gary.henderson@ntlworld.com),
|
||||
Jerremy Koot (jkoot@snes9x.com)
|
||||
|
||||
(c) Copyright 2002 - 2004 Matthew Kendora
|
||||
|
||||
(c) Copyright 2002 - 2005 Peter Bortas (peter@bortas.org)
|
||||
|
||||
(c) Copyright 2004 - 2005 Joel Yliluoma (http://iki.fi/bisqwit/)
|
||||
|
||||
(c) Copyright 2001 - 2006 John Weidman (jweidman@slip.net)
|
||||
|
||||
(c) Copyright 2002 - 2006 funkyass (funkyass@spam.shaw.ca),
|
||||
Kris Bleakley (codeviolation@hotmail.com)
|
||||
|
||||
(c) Copyright 2002 - 2010 Brad Jorsch (anomie@users.sourceforge.net),
|
||||
Nach (n-a-c-h@users.sourceforge.net),
|
||||
|
||||
(c) Copyright 2002 - 2011 zones (kasumitokoduck@yahoo.com)
|
||||
|
||||
(c) Copyright 2006 - 2007 nitsuja
|
||||
|
||||
(c) Copyright 2009 - 2016 BearOso,
|
||||
OV2
|
||||
|
||||
(c) Copyright 2011 - 2016 Hans-Kristian Arntzen,
|
||||
Daniel De Matteis
|
||||
(Under no circumstances will commercial rights be given)
|
||||
|
||||
|
||||
BS-X C emulator code
|
||||
(c) Copyright 2005 - 2006 Dreamer Nom,
|
||||
zones
|
||||
|
||||
C4 x86 assembler and some C emulation code
|
||||
(c) Copyright 2000 - 2003 _Demo_ (_demo_@zsnes.com),
|
||||
Nach,
|
||||
zsKnight (zsknight@zsnes.com)
|
||||
|
||||
C4 C++ code
|
||||
(c) Copyright 2003 - 2006 Brad Jorsch,
|
||||
Nach
|
||||
|
||||
DSP-1 emulator code
|
||||
(c) Copyright 1998 - 2006 _Demo_,
|
||||
Andreas Naive (andreasnaive@gmail.com),
|
||||
Gary Henderson,
|
||||
Ivar (ivar@snes9x.com),
|
||||
John Weidman,
|
||||
Kris Bleakley,
|
||||
Matthew Kendora,
|
||||
Nach,
|
||||
neviksti (neviksti@hotmail.com)
|
||||
|
||||
DSP-2 emulator code
|
||||
(c) Copyright 2003 John Weidman,
|
||||
Kris Bleakley,
|
||||
Lord Nightmare (lord_nightmare@users.sourceforge.net),
|
||||
Matthew Kendora,
|
||||
neviksti
|
||||
|
||||
DSP-3 emulator code
|
||||
(c) Copyright 2003 - 2006 John Weidman,
|
||||
Kris Bleakley,
|
||||
Lancer,
|
||||
z80 gaiden
|
||||
|
||||
DSP-4 emulator code
|
||||
(c) Copyright 2004 - 2006 Dreamer Nom,
|
||||
John Weidman,
|
||||
Kris Bleakley,
|
||||
Nach,
|
||||
z80 gaiden
|
||||
|
||||
OBC1 emulator code
|
||||
(c) Copyright 2001 - 2004 zsKnight,
|
||||
pagefault (pagefault@zsnes.com),
|
||||
Kris Bleakley
|
||||
Ported from x86 assembler to C by sanmaiwashi
|
||||
|
||||
SPC7110 and RTC C++ emulator code used in 1.39-1.51
|
||||
(c) Copyright 2002 Matthew Kendora with research by
|
||||
zsKnight,
|
||||
John Weidman,
|
||||
Dark Force
|
||||
|
||||
SPC7110 and RTC C++ emulator code used in 1.52+
|
||||
(c) Copyright 2009 byuu,
|
||||
neviksti
|
||||
|
||||
S-DD1 C emulator code
|
||||
(c) Copyright 2003 Brad Jorsch with research by
|
||||
Andreas Naive,
|
||||
John Weidman
|
||||
|
||||
S-RTC C emulator code
|
||||
(c) Copyright 2001 - 2006 byuu,
|
||||
John Weidman
|
||||
|
||||
ST010 C++ emulator code
|
||||
(c) Copyright 2003 Feather,
|
||||
John Weidman,
|
||||
Kris Bleakley,
|
||||
Matthew Kendora
|
||||
|
||||
Super FX x86 assembler emulator code
|
||||
(c) Copyright 1998 - 2003 _Demo_,
|
||||
pagefault,
|
||||
zsKnight
|
||||
|
||||
Super FX C emulator code
|
||||
(c) Copyright 1997 - 1999 Ivar,
|
||||
Gary Henderson,
|
||||
John Weidman
|
||||
|
||||
Sound emulator code used in 1.5-1.51
|
||||
(c) Copyright 1998 - 2003 Brad Martin
|
||||
(c) Copyright 1998 - 2006 Charles Bilyue'
|
||||
|
||||
Sound emulator code used in 1.52+
|
||||
(c) Copyright 2004 - 2007 Shay Green (gblargg@gmail.com)
|
||||
|
||||
S-SMP emulator code used in 1.54+
|
||||
(c) Copyright 2016 byuu
|
||||
|
||||
SH assembler code partly based on x86 assembler code
|
||||
(c) Copyright 2002 - 2004 Marcus Comstedt (marcus@mc.pp.se)
|
||||
|
||||
2xSaI filter
|
||||
(c) Copyright 1999 - 2001 Derek Liauw Kie Fa
|
||||
|
||||
HQ2x, HQ3x, HQ4x filters
|
||||
(c) Copyright 2003 Maxim Stepin (maxim@hiend3d.com)
|
||||
|
||||
NTSC filter
|
||||
(c) Copyright 2006 - 2007 Shay Green
|
||||
|
||||
GTK+ GUI code
|
||||
(c) Copyright 2004 - 2016 BearOso
|
||||
|
||||
Win32 GUI code
|
||||
(c) Copyright 2003 - 2006 blip,
|
||||
funkyass,
|
||||
Matthew Kendora,
|
||||
Nach,
|
||||
nitsuja
|
||||
(c) Copyright 2009 - 2016 OV2
|
||||
|
||||
Mac OS GUI code
|
||||
(c) Copyright 1998 - 2001 John Stiles
|
||||
(c) Copyright 2001 - 2011 zones
|
||||
|
||||
Libretro port
|
||||
(c) Copyright 2011 - 2016 Hans-Kristian Arntzen,
|
||||
Daniel De Matteis
|
||||
(Under no circumstances will commercial rights be given)
|
||||
|
||||
|
||||
Specific ports contains the works of other authors. See headers in
|
||||
individual files.
|
||||
|
||||
|
||||
Snes9x homepage: http://www.snes9x.com/
|
||||
|
||||
Permission to use, copy, modify and/or distribute Snes9x in both binary
|
||||
and source form, for non-commercial purposes, is hereby granted without
|
||||
fee, providing that this license information and copyright notice appear
|
||||
with all copies and any derived work.
|
||||
|
||||
This software is provided 'as-is', without any express or implied
|
||||
warranty. In no event shall the authors be held liable for any damages
|
||||
arising from the use of this software or it's derivatives.
|
||||
|
||||
Snes9x is freeware for PERSONAL USE only. Commercial users should
|
||||
seek permission of the copyright holders first. Commercial use includes,
|
||||
but is not limited to, charging money for Snes9x or software derived from
|
||||
Snes9x, including Snes9x or derivatives in commercial game bundles, and/or
|
||||
using Snes9x as a promotion for your commercial product.
|
||||
|
||||
The copyright holders request that bug fixes and improvements to the code
|
||||
should be forwarded to them so everyone can benefit from the modifications
|
||||
in future versions.
|
||||
|
||||
Super NES and Super Nintendo Entertainment System are trademarks of
|
||||
Nintendo Co., Limited and its subsidiary companies.
|
||||
***********************************************************************************/
|
||||
|
||||
|
||||
#ifdef FMOD_SUPPORT
|
||||
#include "CFMOD.h"
|
||||
#include "../snes9x.h"
|
||||
#include "../apu/apu.h"
|
||||
#include "wsnes9x.h"
|
||||
|
||||
#ifndef min
|
||||
#define min(a,b) (((a) < (b)) ? (a) : (b))
|
||||
#endif
|
||||
|
||||
/* Construction/Destruction
|
||||
*/
|
||||
CFMOD::CFMOD(void)
|
||||
{
|
||||
initDone = false;
|
||||
fmod_stream = NULL;
|
||||
}
|
||||
|
||||
CFMOD::~CFMOD(void)
|
||||
{
|
||||
DeInitFMOD();
|
||||
}
|
||||
|
||||
/* CFMOD::InitStream
|
||||
initializes FMOD and the output stream that will call our callback function
|
||||
-----
|
||||
returns true if successful, false otherwise
|
||||
*/
|
||||
bool CFMOD::InitStream()
|
||||
{
|
||||
if (!FSOUND_Init (Settings.SoundPlaybackRate, 16, 0))
|
||||
{
|
||||
MessageBox (GUI.hWnd, "\
|
||||
Unable to initialise FMOD sound system. You will not be able to hear\n\
|
||||
any sound effects or music while playing.\n\n\
|
||||
It is usually caused by not having DirectX installed or another\n\
|
||||
application that has already opened DirectSound in exclusive\n\
|
||||
mode or the Windows WAVE device has been opened.",
|
||||
"Snes9X - Unable to Open FMOD",
|
||||
MB_OK | MB_ICONWARNING);
|
||||
DeInitStream();
|
||||
return false;
|
||||
}
|
||||
|
||||
sampleCount = (Settings.SoundPlaybackRate * GUI.SoundBufferSize/2 ) / 1000;
|
||||
if (Settings.Stereo)
|
||||
sampleCount *= 2;
|
||||
bufferSize = sampleCount * (Settings.SixteenBitSound?2:1);
|
||||
fmod_stream = FSOUND_Stream_Create (FMODStreamCallback, bufferSize,
|
||||
FSOUND_LOOP_OFF |
|
||||
FSOUND_STREAMABLE |
|
||||
FSOUND_SIGNED |
|
||||
FSOUND_LOOP_NORMAL |
|
||||
(Settings.SixteenBitSound ?
|
||||
FSOUND_16BITS : FSOUND_8BITS) |
|
||||
(Settings.Stereo ?
|
||||
FSOUND_STEREO : FSOUND_MONO),
|
||||
Settings.SoundPlaybackRate, (void *)this);
|
||||
|
||||
if (!fmod_stream ||
|
||||
FSOUND_Stream_Play (FSOUND_FREE, fmod_stream) == -1)
|
||||
{
|
||||
MessageBox (GUI.hWnd, "\
|
||||
Unable to create or play an FMOD sound stream. You will not be able\n\
|
||||
to hear any sound effects or music while playing.",
|
||||
"Snes9X - Unable to Open FMOD",
|
||||
MB_OK | MB_ICONWARNING);
|
||||
DeInitStream();
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
/* CFMOD::DeInitStream
|
||||
stops playback and closes the stream
|
||||
*/
|
||||
void CFMOD::DeInitStream()
|
||||
{
|
||||
if (fmod_stream)
|
||||
{
|
||||
FSOUND_StopSound (0);
|
||||
FSOUND_Stream_Stop (fmod_stream);
|
||||
FSOUND_Stream_Close (fmod_stream);
|
||||
FSOUND_Close ();
|
||||
fmod_stream = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
/* CFMOD::InitFMOD
|
||||
sets the sound driver to be used by FMOD
|
||||
-----
|
||||
returns true if successful, false otherwise
|
||||
*/
|
||||
bool CFMOD::InitFMOD()
|
||||
{
|
||||
if(initDone)
|
||||
return true;
|
||||
|
||||
switch (GUI.SoundDriver)
|
||||
{
|
||||
default:
|
||||
case WIN_FMOD_DIRECT_SOUND_DRIVER:
|
||||
FSOUND_SetOutput(FSOUND_OUTPUT_DSOUND);
|
||||
break;
|
||||
case WIN_FMOD_WAVE_SOUND_DRIVER:
|
||||
FSOUND_SetOutput(FSOUND_OUTPUT_WINMM);
|
||||
break;
|
||||
case WIN_FMOD_A3D_SOUND_DRIVER:
|
||||
FSOUND_SetOutput(FSOUND_OUTPUT_A3D);
|
||||
break;
|
||||
}
|
||||
|
||||
FSOUND_SetDriver(0);
|
||||
|
||||
initDone = true;
|
||||
return true;
|
||||
}
|
||||
|
||||
void CFMOD::DeInitFMOD()
|
||||
{
|
||||
DeInitStream();
|
||||
}
|
||||
|
||||
/* CFMOD::SetupSound
|
||||
applies current sound settings by recreating the stream
|
||||
-----
|
||||
returns true if successful, false otherwise
|
||||
*/
|
||||
bool CFMOD::SetupSound()
|
||||
{
|
||||
|
||||
DeInitStream();
|
||||
if(!InitStream()) {
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
/* CFMOD::ProcessSound
|
||||
Finishes core sample creation, syncronizes the buffer access.
|
||||
*/
|
||||
void CFMOD::ProcessSound()
|
||||
{
|
||||
EnterCriticalSection(&GUI.SoundCritSect);
|
||||
|
||||
S9xFinalizeSamples();
|
||||
|
||||
LeaveCriticalSection(&GUI.SoundCritSect);
|
||||
}
|
||||
|
||||
/* CFMOD::FMODStreamCallback
|
||||
the callback that mixes into the stream
|
||||
synchronizes the buffer access with a critical section
|
||||
IN:
|
||||
stream - the stream object, unused
|
||||
buff - the buffer to mix into
|
||||
len - number of bytes in the buffer
|
||||
param - pointer to the CFMOD object
|
||||
*/
|
||||
|
||||
// The FMOD API changed the return type of the stream callback function
|
||||
// somewhere between version 3.20 and 3.33. The FMOD API defines a version
|
||||
// string but you can't test for that at compile time. Instead, I've picked on
|
||||
// a symbol that wasn't defined in version 3.20 to test for the change in API.
|
||||
#if !defined (FSOUND_LOADRAW)
|
||||
void
|
||||
#else
|
||||
signed char
|
||||
#endif
|
||||
F_CALLBACKAPI CFMOD::FMODStreamCallback (FSOUND_STREAM *stream, void *buff, int len, void *param)
|
||||
{
|
||||
CFMOD *S9xFMOD=(CFMOD *)param;
|
||||
int sample_count = Settings.SixteenBitSound?len>>1:len;
|
||||
|
||||
EnterCriticalSection(&GUI.SoundCritSect);
|
||||
|
||||
S9xMixSamples((unsigned char *) buff, sample_count);
|
||||
|
||||
LeaveCriticalSection(&GUI.SoundCritSect);
|
||||
|
||||
SetEvent(GUI.SoundSyncEvent);
|
||||
|
||||
|
||||
|
||||
#if defined (FSOUND_LOADRAW)
|
||||
return (1);
|
||||
#endif
|
||||
}
|
||||
|
||||
#endif
|
234
win32/CFMOD.h
234
win32/CFMOD.h
@ -1,234 +0,0 @@
|
||||
/***********************************************************************************
|
||||
Snes9x - Portable Super Nintendo Entertainment System (TM) emulator.
|
||||
|
||||
(c) Copyright 1996 - 2002 Gary Henderson (gary.henderson@ntlworld.com),
|
||||
Jerremy Koot (jkoot@snes9x.com)
|
||||
|
||||
(c) Copyright 2002 - 2004 Matthew Kendora
|
||||
|
||||
(c) Copyright 2002 - 2005 Peter Bortas (peter@bortas.org)
|
||||
|
||||
(c) Copyright 2004 - 2005 Joel Yliluoma (http://iki.fi/bisqwit/)
|
||||
|
||||
(c) Copyright 2001 - 2006 John Weidman (jweidman@slip.net)
|
||||
|
||||
(c) Copyright 2002 - 2006 funkyass (funkyass@spam.shaw.ca),
|
||||
Kris Bleakley (codeviolation@hotmail.com)
|
||||
|
||||
(c) Copyright 2002 - 2010 Brad Jorsch (anomie@users.sourceforge.net),
|
||||
Nach (n-a-c-h@users.sourceforge.net),
|
||||
|
||||
(c) Copyright 2002 - 2011 zones (kasumitokoduck@yahoo.com)
|
||||
|
||||
(c) Copyright 2006 - 2007 nitsuja
|
||||
|
||||
(c) Copyright 2009 - 2016 BearOso,
|
||||
OV2
|
||||
|
||||
(c) Copyright 2011 - 2016 Hans-Kristian Arntzen,
|
||||
Daniel De Matteis
|
||||
(Under no circumstances will commercial rights be given)
|
||||
|
||||
|
||||
BS-X C emulator code
|
||||
(c) Copyright 2005 - 2006 Dreamer Nom,
|
||||
zones
|
||||
|
||||
C4 x86 assembler and some C emulation code
|
||||
(c) Copyright 2000 - 2003 _Demo_ (_demo_@zsnes.com),
|
||||
Nach,
|
||||
zsKnight (zsknight@zsnes.com)
|
||||
|
||||
C4 C++ code
|
||||
(c) Copyright 2003 - 2006 Brad Jorsch,
|
||||
Nach
|
||||
|
||||
DSP-1 emulator code
|
||||
(c) Copyright 1998 - 2006 _Demo_,
|
||||
Andreas Naive (andreasnaive@gmail.com),
|
||||
Gary Henderson,
|
||||
Ivar (ivar@snes9x.com),
|
||||
John Weidman,
|
||||
Kris Bleakley,
|
||||
Matthew Kendora,
|
||||
Nach,
|
||||
neviksti (neviksti@hotmail.com)
|
||||
|
||||
DSP-2 emulator code
|
||||
(c) Copyright 2003 John Weidman,
|
||||
Kris Bleakley,
|
||||
Lord Nightmare (lord_nightmare@users.sourceforge.net),
|
||||
Matthew Kendora,
|
||||
neviksti
|
||||
|
||||
DSP-3 emulator code
|
||||
(c) Copyright 2003 - 2006 John Weidman,
|
||||
Kris Bleakley,
|
||||
Lancer,
|
||||
z80 gaiden
|
||||
|
||||
DSP-4 emulator code
|
||||
(c) Copyright 2004 - 2006 Dreamer Nom,
|
||||
John Weidman,
|
||||
Kris Bleakley,
|
||||
Nach,
|
||||
z80 gaiden
|
||||
|
||||
OBC1 emulator code
|
||||
(c) Copyright 2001 - 2004 zsKnight,
|
||||
pagefault (pagefault@zsnes.com),
|
||||
Kris Bleakley
|
||||
Ported from x86 assembler to C by sanmaiwashi
|
||||
|
||||
SPC7110 and RTC C++ emulator code used in 1.39-1.51
|
||||
(c) Copyright 2002 Matthew Kendora with research by
|
||||
zsKnight,
|
||||
John Weidman,
|
||||
Dark Force
|
||||
|
||||
SPC7110 and RTC C++ emulator code used in 1.52+
|
||||
(c) Copyright 2009 byuu,
|
||||
neviksti
|
||||
|
||||
S-DD1 C emulator code
|
||||
(c) Copyright 2003 Brad Jorsch with research by
|
||||
Andreas Naive,
|
||||
John Weidman
|
||||
|
||||
S-RTC C emulator code
|
||||
(c) Copyright 2001 - 2006 byuu,
|
||||
John Weidman
|
||||
|
||||
ST010 C++ emulator code
|
||||
(c) Copyright 2003 Feather,
|
||||
John Weidman,
|
||||
Kris Bleakley,
|
||||
Matthew Kendora
|
||||
|
||||
Super FX x86 assembler emulator code
|
||||
(c) Copyright 1998 - 2003 _Demo_,
|
||||
pagefault,
|
||||
zsKnight
|
||||
|
||||
Super FX C emulator code
|
||||
(c) Copyright 1997 - 1999 Ivar,
|
||||
Gary Henderson,
|
||||
John Weidman
|
||||
|
||||
Sound emulator code used in 1.5-1.51
|
||||
(c) Copyright 1998 - 2003 Brad Martin
|
||||
(c) Copyright 1998 - 2006 Charles Bilyue'
|
||||
|
||||
Sound emulator code used in 1.52+
|
||||
(c) Copyright 2004 - 2007 Shay Green (gblargg@gmail.com)
|
||||
|
||||
S-SMP emulator code used in 1.54+
|
||||
(c) Copyright 2016 byuu
|
||||
|
||||
SH assembler code partly based on x86 assembler code
|
||||
(c) Copyright 2002 - 2004 Marcus Comstedt (marcus@mc.pp.se)
|
||||
|
||||
2xSaI filter
|
||||
(c) Copyright 1999 - 2001 Derek Liauw Kie Fa
|
||||
|
||||
HQ2x, HQ3x, HQ4x filters
|
||||
(c) Copyright 2003 Maxim Stepin (maxim@hiend3d.com)
|
||||
|
||||
NTSC filter
|
||||
(c) Copyright 2006 - 2007 Shay Green
|
||||
|
||||
GTK+ GUI code
|
||||
(c) Copyright 2004 - 2016 BearOso
|
||||
|
||||
Win32 GUI code
|
||||
(c) Copyright 2003 - 2006 blip,
|
||||
funkyass,
|
||||
Matthew Kendora,
|
||||
Nach,
|
||||
nitsuja
|
||||
(c) Copyright 2009 - 2016 OV2
|
||||
|
||||
Mac OS GUI code
|
||||
(c) Copyright 1998 - 2001 John Stiles
|
||||
(c) Copyright 2001 - 2011 zones
|
||||
|
||||
Libretro port
|
||||
(c) Copyright 2011 - 2016 Hans-Kristian Arntzen,
|
||||
Daniel De Matteis
|
||||
(Under no circumstances will commercial rights be given)
|
||||
|
||||
|
||||
Specific ports contains the works of other authors. See headers in
|
||||
individual files.
|
||||
|
||||
|
||||
Snes9x homepage: http://www.snes9x.com/
|
||||
|
||||
Permission to use, copy, modify and/or distribute Snes9x in both binary
|
||||
and source form, for non-commercial purposes, is hereby granted without
|
||||
fee, providing that this license information and copyright notice appear
|
||||
with all copies and any derived work.
|
||||
|
||||
This software is provided 'as-is', without any express or implied
|
||||
warranty. In no event shall the authors be held liable for any damages
|
||||
arising from the use of this software or it's derivatives.
|
||||
|
||||
Snes9x is freeware for PERSONAL USE only. Commercial users should
|
||||
seek permission of the copyright holders first. Commercial use includes,
|
||||
but is not limited to, charging money for Snes9x or software derived from
|
||||
Snes9x, including Snes9x or derivatives in commercial game bundles, and/or
|
||||
using Snes9x as a promotion for your commercial product.
|
||||
|
||||
The copyright holders request that bug fixes and improvements to the code
|
||||
should be forwarded to them so everyone can benefit from the modifications
|
||||
in future versions.
|
||||
|
||||
Super NES and Super Nintendo Entertainment System are trademarks of
|
||||
Nintendo Co., Limited and its subsidiary companies.
|
||||
***********************************************************************************/
|
||||
|
||||
|
||||
#ifndef CFMOD_H
|
||||
#define CFMOD_H
|
||||
#include "fmod.h"
|
||||
#include "IS9xSoundOutput.h"
|
||||
|
||||
class CFMOD: public IS9xSoundOutput
|
||||
{
|
||||
bool initDone; // has init been called successfully?
|
||||
|
||||
FSOUND_STREAM *fmod_stream; // the stream object
|
||||
|
||||
int sampleCount;
|
||||
int bufferSize;
|
||||
|
||||
bool InitFMOD();
|
||||
void DeInitFMOD();
|
||||
|
||||
bool InitStream();
|
||||
void DeInitStream();
|
||||
|
||||
void ProcessSound();
|
||||
|
||||
// The FMOD API changed the return type of the stream callback function
|
||||
// somewhere between version 3.20 and 3.33. The FMOD API defines a version
|
||||
// string but you can't test for that at compile time. Instead, I've picked on
|
||||
// a symbol that wasn't defined in version 3.20 to test for the change in API.
|
||||
#if !defined (FSOUND_LOADRAW)
|
||||
void
|
||||
#else
|
||||
signed char
|
||||
#endif
|
||||
static F_CALLBACKAPI FMODStreamCallback (FSOUND_STREAM *stream, void *buff, int len, void *param);
|
||||
|
||||
public:
|
||||
CFMOD(void);
|
||||
~CFMOD(void);
|
||||
|
||||
// Inherited from IS9xSoundOutput
|
||||
bool InitSoundOutput(void) { return InitFMOD(); }
|
||||
void DeInitSoundOutput(void) { DeInitFMOD(); }
|
||||
bool SetupSound(void);
|
||||
};
|
||||
|
||||
#endif
|
@ -1,146 +0,0 @@
|
||||
#ifdef FMODEX_SUPPORT
|
||||
#ifndef FMOD_SUPPORT
|
||||
#include "CFMODEx.h"
|
||||
#include "wsnes9x.h"
|
||||
#include "../snes9x.h"
|
||||
#include "../apu/apu.h"
|
||||
|
||||
CFMODEx::CFMODEx(void)
|
||||
{
|
||||
initDone = false;
|
||||
fmodStream = NULL;
|
||||
|
||||
fmodSystem = NULL;
|
||||
}
|
||||
|
||||
CFMODEx::~CFMODEx(void)
|
||||
{
|
||||
DeInitFMODEx();
|
||||
if(fmodSystem)
|
||||
fmodSystem->release();
|
||||
}
|
||||
|
||||
bool CFMODEx::InitStream()
|
||||
{
|
||||
FMOD_CREATESOUNDEXINFO createSoundExInfo={0};
|
||||
createSoundExInfo.cbsize = sizeof(FMOD_CREATESOUNDEXINFO);
|
||||
createSoundExInfo.defaultfrequency = Settings.SoundPlaybackRate;
|
||||
createSoundExInfo.numchannels = (Settings.Stereo?2:1);
|
||||
createSoundExInfo.format = (Settings.SixteenBitSound?FMOD_SOUND_FORMAT_PCM16:FMOD_SOUND_FORMAT_PCM8);
|
||||
createSoundExInfo.pcmreadcallback = FMODExStreamCallback;
|
||||
createSoundExInfo.suggestedsoundtype = FMOD_SOUND_TYPE_USER;
|
||||
//fmodSystem->getDSPBufferSize(&temp,NULL);
|
||||
// 768 was the bufferSize in FMOD
|
||||
sampleCount = (Settings.SoundPlaybackRate * GUI.SoundBufferSize/2 ) / 1000;
|
||||
if (Settings.Stereo)
|
||||
sampleCount *= 2;
|
||||
bufferSize = sampleCount * (Settings.SixteenBitSound?2:1);
|
||||
createSoundExInfo.length = bufferSize;
|
||||
createSoundExInfo.decodebuffersize = bufferSize/4;
|
||||
|
||||
FMOD_RESULT fr = fmodSystem->createStream(NULL,FMOD_OPENUSER | FMOD_LOOP_NORMAL | FMOD_OPENRAW,&createSoundExInfo,&fmodStream);
|
||||
|
||||
if(!(fr==FMOD_OK)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
fr = fmodSystem->playSound(FMOD_CHANNEL_FREE,fmodStream,0,NULL);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
void CFMODEx::DeInitStream()
|
||||
{
|
||||
if (fmodStream)
|
||||
{
|
||||
fmodStream->release();
|
||||
fmodStream = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
bool CFMODEx::InitFMODEx()
|
||||
{
|
||||
if(initDone)
|
||||
return true;
|
||||
|
||||
FMOD_RESULT fr;
|
||||
|
||||
if(!(FMOD::System_Create(&fmodSystem)==FMOD_OK))
|
||||
return false;
|
||||
|
||||
switch (GUI.SoundDriver)
|
||||
{
|
||||
default:
|
||||
case WIN_FMODEX_DEFAULT_DRIVER:
|
||||
fr = fmodSystem->setOutput(FMOD_OUTPUTTYPE_AUTODETECT);
|
||||
break;
|
||||
case WIN_FMODEX_ASIO_DRIVER:
|
||||
fr = fmodSystem->setOutput(FMOD_OUTPUTTYPE_ASIO);
|
||||
break;
|
||||
|
||||
#if FMOD_VERSION <= 0x00043100
|
||||
case WIN_FMODEX_OPENAL_DRIVER:
|
||||
fr = fmodSystem->setOutput(FMOD_OUTPUTTYPE_OPENAL);
|
||||
break;
|
||||
#endif
|
||||
}
|
||||
|
||||
fr = fmodSystem->init(2,FMOD_INIT_NORMAL,0);
|
||||
|
||||
if(fr!=FMOD_OK)
|
||||
return false;
|
||||
|
||||
initDone = true;
|
||||
return true;
|
||||
}
|
||||
|
||||
void CFMODEx::DeInitFMODEx()
|
||||
{
|
||||
initDone = false;
|
||||
DeInitStream();
|
||||
if(fmodSystem) {
|
||||
fmodSystem->release();
|
||||
fmodSystem = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
bool CFMODEx::SetupSound()
|
||||
{
|
||||
if(!initDone)
|
||||
return false;
|
||||
|
||||
DeInitStream();
|
||||
return InitStream();
|
||||
}
|
||||
|
||||
void CFMODEx::ProcessSound()
|
||||
{
|
||||
EnterCriticalSection(&GUI.SoundCritSect);
|
||||
|
||||
S9xFinalizeSamples();
|
||||
|
||||
LeaveCriticalSection(&GUI.SoundCritSect);
|
||||
}
|
||||
|
||||
FMOD_RESULT F_CALLBACK CFMODEx::FMODExStreamCallback(
|
||||
FMOD_SOUND * sound,
|
||||
void * data,
|
||||
unsigned int datalen
|
||||
)
|
||||
{
|
||||
int sample_count = datalen;
|
||||
|
||||
sample_count >>= (Settings.SixteenBitSound?1:0);
|
||||
|
||||
EnterCriticalSection(&GUI.SoundCritSect);
|
||||
|
||||
S9xMixSamples((unsigned char *) data, sample_count);
|
||||
|
||||
LeaveCriticalSection(&GUI.SoundCritSect);
|
||||
|
||||
SetEvent(GUI.SoundSyncEvent);
|
||||
|
||||
return FMOD_OK;
|
||||
}
|
||||
#endif
|
||||
#endif
|
@ -1,40 +0,0 @@
|
||||
#ifndef CFMODEX_H
|
||||
#define CFMODEX_H
|
||||
#include "../../FMODEx/api/inc/fmod.hpp"
|
||||
#include "IS9xSoundOutput.h"
|
||||
|
||||
class CFMODEx: public IS9xSoundOutput
|
||||
{
|
||||
bool initDone;
|
||||
|
||||
FMOD::System *fmodSystem;
|
||||
FMOD::Sound *fmodStream;
|
||||
|
||||
|
||||
int sampleCount;
|
||||
int bufferSize;
|
||||
|
||||
bool InitFMODEx();
|
||||
void DeInitFMODEx();
|
||||
|
||||
bool InitStream();
|
||||
void DeInitStream();
|
||||
|
||||
static FMOD_RESULT F_CALLBACK FMODExStreamCallback(
|
||||
FMOD_SOUND * sound,
|
||||
void * data,
|
||||
unsigned int datalen
|
||||
);
|
||||
|
||||
public:
|
||||
CFMODEx(void);
|
||||
~CFMODEx(void);
|
||||
|
||||
// Inherited from IS9xSoundOutput
|
||||
bool InitSoundOutput(void) { return InitFMODEx(); }
|
||||
void DeInitSoundOutput(void) { DeInitFMODEx(); }
|
||||
bool SetupSound();
|
||||
void ProcessSound();
|
||||
};
|
||||
|
||||
#endif
|
@ -113,8 +113,8 @@
|
||||
</Midl>
|
||||
<ClCompile>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<AdditionalIncludeDirectories>$(ProjectDir);$(ProjectDir)..\;$(ProjectDir)..\..\;$(ProjectDir)..\..\zLib;$(ProjectDir)..\unzip;$(ProjectDir)..\..\FMOD\api\inc;$(ProjectDir)..\..\fmodex\api\inc;$(ProjectDir)..\..\libpng\;$(ProjectDir)..\apu\bapu;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>_DEBUG;HAVE_LIBPNG;JMA_SUPPORT;ZLIB;UNZIP_SUPPORT;__WIN32__;FMODEX_SUPPORT;NETPLAY_SUPPORT;D3D_DEBUG_INFO;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<AdditionalIncludeDirectories>$(ProjectDir);$(ProjectDir)..\;$(ProjectDir)..\..\;$(ProjectDir)..\..\zLib;$(ProjectDir)..\unzip;$(ProjectDir)..\..\libpng\;$(ProjectDir)..\apu\bapu;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>_DEBUG;HAVE_LIBPNG;JMA_SUPPORT;ZLIB;UNZIP_SUPPORT;__WIN32__;NETPLAY_SUPPORT;D3D_DEBUG_INFO;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
|
||||
<StructMemberAlignment>Default</StructMemberAlignment>
|
||||
<PrecompiledHeader />
|
||||
@ -135,9 +135,7 @@
|
||||
<Link>
|
||||
<AdditionalDependencies>comctl32.lib;winmm.lib;opengl32.lib;glu32.lib;wsock32.lib;dsound.lib;dxguid.lib;delayimp.lib;vfw32.lib;msxml2.lib;shlwapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||
<AdditionalLibraryDirectories>$(ProjectDir)..\..\FMOD\api\lib;$(ProjectDir)..\..\FMODEx_x64\api\lib;$(ProjectDir)..\..\FMODEx\api\lib;$(ProjectDir)..\i386;$(ProjectDir)..\..\zlib\lib;$(ProjectDir)..\..\libPNG\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<EnableUAC>false</EnableUAC>
|
||||
<DelayLoadDLLs>fmod.dll;fmodex.dll;%(DelayLoadDLLs)</DelayLoadDLLs>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<ProgramDatabaseFile>$(IntDir)$(ProjectName).pdb</ProgramDatabaseFile>
|
||||
<GenerateMapFile>false</GenerateMapFile>
|
||||
@ -160,8 +158,8 @@
|
||||
</Midl>
|
||||
<ClCompile>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<AdditionalIncludeDirectories>$(ProjectDir);$(ProjectDir)..\;$(ProjectDir)..\..\;$(ProjectDir)..\..\zLib;$(ProjectDir)..\unzip;$(ProjectDir)..\..\FMOD\api\inc;$(ProjectDir)..\..\fmodex\api\inc;$(ProjectDir)..\..\libpng\;$(ProjectDir)..\apu\bapu;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>_DEBUG;HAVE_LIBPNG;JMA_SUPPORT;ZLIB;UNZIP_SUPPORT;__WIN32__;FMODEX_SUPPORT;NETPLAY_SUPPORT;D3D_DEBUG_INFO;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<AdditionalIncludeDirectories>$(ProjectDir);$(ProjectDir)..\;$(ProjectDir)..\..\;$(ProjectDir)..\..\zLib;$(ProjectDir)..\unzip;$(ProjectDir)..\..\libpng\;$(ProjectDir)..\apu\bapu;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>_DEBUG;HAVE_LIBPNG;JMA_SUPPORT;ZLIB;UNZIP_SUPPORT;__WIN32__;NETPLAY_SUPPORT;D3D_DEBUG_INFO;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
|
||||
<StructMemberAlignment>Default</StructMemberAlignment>
|
||||
<PrecompiledHeader />
|
||||
@ -182,9 +180,7 @@
|
||||
<Link>
|
||||
<AdditionalDependencies>comctl32.lib;winmm.lib;opengl32.lib;glu32.lib;wsock32.lib;dsound.lib;dxguid.lib;delayimp.lib;vfw32.lib;msxml2.lib;shlwapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||
<AdditionalLibraryDirectories>$(ProjectDir)..\..\FMOD\api\lib;$(ProjectDir)..\..\FMODEx_x64\api\lib;$(ProjectDir)..\..\FMODEx\api\lib;$(ProjectDir)..\i386;$(ProjectDir)..\..\zlib\lib;$(ProjectDir)..\..\libPNG\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<EnableUAC>false</EnableUAC>
|
||||
<DelayLoadDLLs>fmodex64.dll;%(DelayLoadDLLs)</DelayLoadDLLs>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<ProgramDatabaseFile>$(IntDir)$(ProjectName).pdb</ProgramDatabaseFile>
|
||||
<GenerateMapFile>false</GenerateMapFile>
|
||||
@ -212,8 +208,8 @@
|
||||
<FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
|
||||
<OmitFramePointers>true</OmitFramePointers>
|
||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||
<AdditionalIncludeDirectories>$(ProjectDir);$(ProjectDir)..\;$(ProjectDir)..\..\;$(ProjectDir)..\..\zLib;$(ProjectDir)..\unzip;$(ProjectDir)..\..\FMOD\api\inc;$(ProjectDir)..\..\fmodex\api\inc;$(ProjectDir)..\..\libpng\;$(ProjectDir)..\apu\bapu;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>NDEBUG;HAVE_LIBPNG;JMA_SUPPORT;ZLIB;UNZIP_SUPPORT;__WIN32__;FMODEX_SUPPORT;NETPLAY_SUPPORT;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<AdditionalIncludeDirectories>$(ProjectDir);$(ProjectDir)..\;$(ProjectDir)..\..\;$(ProjectDir)..\..\zLib;$(ProjectDir)..\unzip;$(ProjectDir)..\..\libpng\;$(ProjectDir)..\apu\bapu;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>NDEBUG;HAVE_LIBPNG;JMA_SUPPORT;ZLIB;UNZIP_SUPPORT;__WIN32__;NETPLAY_SUPPORT;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<StringPooling>true</StringPooling>
|
||||
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
||||
<StructMemberAlignment>Default</StructMemberAlignment>
|
||||
@ -235,8 +231,6 @@
|
||||
<Link>
|
||||
<AdditionalDependencies>comctl32.lib;winmm.lib;opengl32.lib;glu32.lib;wsock32.lib;dsound.lib;dxguid.lib;delayimp.lib;vfw32.lib;msxml2.lib;shlwapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||
<AdditionalLibraryDirectories>$(ProjectDir)..\..\FMOD\api\lib;$(ProjectDir)..\..\FMODEx_x64\api\lib;$(ProjectDir)..\..\FMODEx\api\lib;$(ProjectDir)..\i386;$(ProjectDir)..\..\zlib\lib;$(ProjectDir)..\..\libPNG\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<DelayLoadDLLs>fmod.dll;fmodex.dll;%(DelayLoadDLLs)</DelayLoadDLLs>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<ProgramDatabaseFile>$(IntDir)$(ProjectName).pdb</ProgramDatabaseFile>
|
||||
<SubSystem>Windows</SubSystem>
|
||||
@ -263,8 +257,8 @@
|
||||
<FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
|
||||
<OmitFramePointers>true</OmitFramePointers>
|
||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||
<AdditionalIncludeDirectories>$(ProjectDir);$(ProjectDir)..\;$(ProjectDir)..\..\;$(ProjectDir)..\..\zLib;$(ProjectDir)..\unzip;$(ProjectDir)..\..\FMOD\api\inc;$(ProjectDir)..\..\fmodex\api\inc;$(ProjectDir)..\..\libpng\;$(ProjectDir)..\apu\bapu;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>NDEBUG;HAVE_LIBPNG;JMA_SUPPORT;ZLIB;UNZIP_SUPPORT;__WIN32__;FMODEX_SUPPORT;NETPLAY_SUPPORT;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<AdditionalIncludeDirectories>$(ProjectDir);$(ProjectDir)..\;$(ProjectDir)..\..\;$(ProjectDir)..\..\zLib;$(ProjectDir)..\unzip;$(ProjectDir)..\..\libpng\;$(ProjectDir)..\apu\bapu;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>NDEBUG;HAVE_LIBPNG;JMA_SUPPORT;ZLIB;UNZIP_SUPPORT;__WIN32__;NETPLAY_SUPPORT;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<StringPooling>true</StringPooling>
|
||||
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
||||
<StructMemberAlignment>Default</StructMemberAlignment>
|
||||
@ -286,8 +280,6 @@
|
||||
<Link>
|
||||
<AdditionalDependencies>comctl32.lib;winmm.lib;opengl32.lib;glu32.lib;wsock32.lib;dsound.lib;dxguid.lib;delayimp.lib;vfw32.lib;msxml2.lib;shlwapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||
<AdditionalLibraryDirectories>$(ProjectDir)..\..\FMOD\api\lib;$(ProjectDir)..\..\FMODEx_x64\api\lib;$(ProjectDir)..\..\FMODEx\api\lib;$(ProjectDir)..\i386;$(ProjectDir)..\..\zlib\lib;$(ProjectDir)..\..\libPNG\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<DelayLoadDLLs>fmod.dll;fmodex64.dll;%(DelayLoadDLLs)</DelayLoadDLLs>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<ProgramDatabaseFile>$(IntDir)$(ProjectName).pdb</ProgramDatabaseFile>
|
||||
<SubSystem>Windows</SubSystem>
|
||||
@ -409,8 +401,6 @@
|
||||
<CustomBuild Include="CDirect3D.h" />
|
||||
<ClInclude Include="CDirectDraw.h" />
|
||||
<ClInclude Include="CDirectSound.h" />
|
||||
<CustomBuild Include="CFMOD.h" />
|
||||
<ClInclude Include="CFMODEx.h" />
|
||||
<ClInclude Include="cgFunctions.h" />
|
||||
<ClInclude Include="CGLCG.h" />
|
||||
<ClInclude Include="COpenGL.h" />
|
||||
@ -538,8 +528,6 @@
|
||||
<ClCompile Include="CDirect3D.cpp" />
|
||||
<ClCompile Include="CDirectDraw.cpp" />
|
||||
<ClCompile Include="CDirectSound.cpp" />
|
||||
<ClCompile Include="CFMOD.cpp" />
|
||||
<ClCompile Include="CFMODEx.cpp" />
|
||||
<ClCompile Include="cgFunctions.cpp" />
|
||||
<ClCompile Include="CGLCG.cpp" />
|
||||
<ClCompile Include="COpenGL.cpp" />
|
||||
|
@ -96,9 +96,6 @@
|
||||
<ClInclude Include="CDirectSound.h">
|
||||
<Filter>GUI\SoundDriver</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="CFMODEx.h">
|
||||
<Filter>GUI\SoundDriver</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="CXAudio2.h">
|
||||
<Filter>GUI\SoundDriver</Filter>
|
||||
</ClInclude>
|
||||
@ -449,12 +446,6 @@
|
||||
<ClCompile Include="CDirectSound.cpp">
|
||||
<Filter>GUI\SoundDriver</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="CFMOD.cpp">
|
||||
<Filter>GUI\SoundDriver</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="CFMODEx.cpp">
|
||||
<Filter>GUI\SoundDriver</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="CXAudio2.cpp">
|
||||
<Filter>GUI\SoundDriver</Filter>
|
||||
</ClCompile>
|
||||
@ -741,9 +732,6 @@
|
||||
<CustomBuild Include="..\tile.h">
|
||||
<Filter>Emu</Filter>
|
||||
</CustomBuild>
|
||||
<CustomBuild Include="CFMOD.h">
|
||||
<Filter>GUI\SoundDriver</Filter>
|
||||
</CustomBuild>
|
||||
<CustomBuild Include="CDirect3D.h">
|
||||
<Filter>GUI\VideoDriver</Filter>
|
||||
</CustomBuild>
|
||||
|
@ -975,7 +975,7 @@ void WinRegisterConfigItems()
|
||||
AddBoolC("Mute", GUI.Mute, false, "true to mute sound output (does not disable the sound CPU)");
|
||||
#undef CATEGORY
|
||||
#define CATEGORY "Sound\\Win"
|
||||
AddUIntC("SoundDriver", GUI.SoundDriver, 4, "0=Snes9xDirectSound, 4=XAudio2 (recommended), 5=FMOD Default, 6=FMOD ASIO, 7=FMOD OpenAL");
|
||||
AddUIntC("SoundDriver", GUI.SoundDriver, 4, "0=Snes9xDirectSound, 4=XAudio2 (recommended)");
|
||||
AddUIntC("BufferSize", GUI.SoundBufferSize, 64, "sound buffer size in ms - determines the internal and output sound buffer sizes. actual mixing is done every SoundBufferSize/4 samples");
|
||||
AddBoolC("MuteFrameAdvance", GUI.FAMute, false, "true to prevent Snes9x from outputting sound when the Frame Advance command is in use");
|
||||
#undef CATEGORY
|
||||
|
@ -194,30 +194,12 @@
|
||||
#include "CDirectSound.h"
|
||||
#include "CXAudio2.h"
|
||||
#include "win32_sound.h"
|
||||
// FMOD and FMOD Ex cannot be used at the same time
|
||||
#ifdef FMOD_SUPPORT
|
||||
#include "CFMOD.h"
|
||||
#pragma comment(linker,"/DEFAULTLIB:fmodvc.lib")
|
||||
#elif defined FMODEX_SUPPORT
|
||||
#include "CFMODEx.h"
|
||||
#if defined(_WIN64)
|
||||
#pragma comment(linker,"/DEFAULTLIB:fmodex64_vc.lib")
|
||||
#else
|
||||
#pragma comment(linker,"/DEFAULTLIB:fmodex_vc.lib")
|
||||
#endif // _WIN64
|
||||
#endif // FMODEX_SUPPORT
|
||||
|
||||
#define CLAMP(x, low, high) (((x) > (high)) ? (high) : (((x) < (low)) ? (low) : (x)))
|
||||
|
||||
// available sound output methods
|
||||
CDirectSound S9xDirectSound;
|
||||
CXAudio2 S9xXAudio2;
|
||||
// FMOD and FMOD Ex cannot be used at the same time
|
||||
#ifdef FMOD_SUPPORT
|
||||
CFMOD S9xFMOD;
|
||||
#elif defined FMODEX_SUPPORT
|
||||
CFMODEx S9xFMODEx;
|
||||
#endif
|
||||
|
||||
// Interface used to access the sound output
|
||||
IS9xSoundOutput *S9xSoundOutput = &S9xXAudio2;
|
||||
@ -261,19 +243,6 @@ bool8 S9xOpenSoundDevice ()
|
||||
case WIN_SNES9X_DIRECT_SOUND_DRIVER:
|
||||
S9xSoundOutput = &S9xDirectSound;
|
||||
break;
|
||||
#ifdef FMOD_SUPPORT
|
||||
case WIN_FMOD_DIRECT_SOUND_DRIVER:
|
||||
case WIN_FMOD_WAVE_SOUND_DRIVER:
|
||||
case WIN_FMOD_A3D_SOUND_DRIVER:
|
||||
S9xSoundOutput = &S9xFMOD;
|
||||
break;
|
||||
#elif defined FMODEX_SUPPORT
|
||||
case WIN_FMODEX_DEFAULT_DRIVER:
|
||||
case WIN_FMODEX_ASIO_DRIVER:
|
||||
case WIN_FMODEX_OPENAL_DRIVER:
|
||||
S9xSoundOutput = &S9xFMODEx;
|
||||
break;
|
||||
#endif
|
||||
case WIN_XAUDIO2_SOUND_DRIVER:
|
||||
S9xSoundOutput = &S9xXAudio2;
|
||||
break;
|
||||
|
Loading…
Reference in New Issue
Block a user