mirror of https://github.com/snes9xgit/snes9x.git
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>
|
</Midl>
|
||||||
<ClCompile>
|
<ClCompile>
|
||||||
<Optimization>Disabled</Optimization>
|
<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>
|
<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__;FMODEX_SUPPORT;NETPLAY_SUPPORT;D3D_DEBUG_INFO;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
<PreprocessorDefinitions>_DEBUG;HAVE_LIBPNG;JMA_SUPPORT;ZLIB;UNZIP_SUPPORT;__WIN32__;NETPLAY_SUPPORT;D3D_DEBUG_INFO;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
|
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
|
||||||
<StructMemberAlignment>Default</StructMemberAlignment>
|
<StructMemberAlignment>Default</StructMemberAlignment>
|
||||||
<PrecompiledHeader />
|
<PrecompiledHeader />
|
||||||
|
@ -135,9 +135,7 @@
|
||||||
<Link>
|
<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>
|
<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>
|
<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>
|
<EnableUAC>false</EnableUAC>
|
||||||
<DelayLoadDLLs>fmod.dll;fmodex.dll;%(DelayLoadDLLs)</DelayLoadDLLs>
|
|
||||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||||
<ProgramDatabaseFile>$(IntDir)$(ProjectName).pdb</ProgramDatabaseFile>
|
<ProgramDatabaseFile>$(IntDir)$(ProjectName).pdb</ProgramDatabaseFile>
|
||||||
<GenerateMapFile>false</GenerateMapFile>
|
<GenerateMapFile>false</GenerateMapFile>
|
||||||
|
@ -160,8 +158,8 @@
|
||||||
</Midl>
|
</Midl>
|
||||||
<ClCompile>
|
<ClCompile>
|
||||||
<Optimization>Disabled</Optimization>
|
<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>
|
<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__;FMODEX_SUPPORT;NETPLAY_SUPPORT;D3D_DEBUG_INFO;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
<PreprocessorDefinitions>_DEBUG;HAVE_LIBPNG;JMA_SUPPORT;ZLIB;UNZIP_SUPPORT;__WIN32__;NETPLAY_SUPPORT;D3D_DEBUG_INFO;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
|
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
|
||||||
<StructMemberAlignment>Default</StructMemberAlignment>
|
<StructMemberAlignment>Default</StructMemberAlignment>
|
||||||
<PrecompiledHeader />
|
<PrecompiledHeader />
|
||||||
|
@ -182,9 +180,7 @@
|
||||||
<Link>
|
<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>
|
<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>
|
<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>
|
<EnableUAC>false</EnableUAC>
|
||||||
<DelayLoadDLLs>fmodex64.dll;%(DelayLoadDLLs)</DelayLoadDLLs>
|
|
||||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||||
<ProgramDatabaseFile>$(IntDir)$(ProjectName).pdb</ProgramDatabaseFile>
|
<ProgramDatabaseFile>$(IntDir)$(ProjectName).pdb</ProgramDatabaseFile>
|
||||||
<GenerateMapFile>false</GenerateMapFile>
|
<GenerateMapFile>false</GenerateMapFile>
|
||||||
|
@ -212,8 +208,8 @@
|
||||||
<FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
|
<FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
|
||||||
<OmitFramePointers>true</OmitFramePointers>
|
<OmitFramePointers>true</OmitFramePointers>
|
||||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
<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>
|
<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__;FMODEX_SUPPORT;NETPLAY_SUPPORT;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
<PreprocessorDefinitions>NDEBUG;HAVE_LIBPNG;JMA_SUPPORT;ZLIB;UNZIP_SUPPORT;__WIN32__;NETPLAY_SUPPORT;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
<StringPooling>true</StringPooling>
|
<StringPooling>true</StringPooling>
|
||||||
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
||||||
<StructMemberAlignment>Default</StructMemberAlignment>
|
<StructMemberAlignment>Default</StructMemberAlignment>
|
||||||
|
@ -235,8 +231,6 @@
|
||||||
<Link>
|
<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>
|
<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>
|
<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>
|
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||||
<ProgramDatabaseFile>$(IntDir)$(ProjectName).pdb</ProgramDatabaseFile>
|
<ProgramDatabaseFile>$(IntDir)$(ProjectName).pdb</ProgramDatabaseFile>
|
||||||
<SubSystem>Windows</SubSystem>
|
<SubSystem>Windows</SubSystem>
|
||||||
|
@ -263,8 +257,8 @@
|
||||||
<FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
|
<FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
|
||||||
<OmitFramePointers>true</OmitFramePointers>
|
<OmitFramePointers>true</OmitFramePointers>
|
||||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
<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>
|
<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__;FMODEX_SUPPORT;NETPLAY_SUPPORT;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
<PreprocessorDefinitions>NDEBUG;HAVE_LIBPNG;JMA_SUPPORT;ZLIB;UNZIP_SUPPORT;__WIN32__;NETPLAY_SUPPORT;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
<StringPooling>true</StringPooling>
|
<StringPooling>true</StringPooling>
|
||||||
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
||||||
<StructMemberAlignment>Default</StructMemberAlignment>
|
<StructMemberAlignment>Default</StructMemberAlignment>
|
||||||
|
@ -286,8 +280,6 @@
|
||||||
<Link>
|
<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>
|
<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>
|
<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>
|
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||||
<ProgramDatabaseFile>$(IntDir)$(ProjectName).pdb</ProgramDatabaseFile>
|
<ProgramDatabaseFile>$(IntDir)$(ProjectName).pdb</ProgramDatabaseFile>
|
||||||
<SubSystem>Windows</SubSystem>
|
<SubSystem>Windows</SubSystem>
|
||||||
|
@ -409,8 +401,6 @@
|
||||||
<CustomBuild Include="CDirect3D.h" />
|
<CustomBuild Include="CDirect3D.h" />
|
||||||
<ClInclude Include="CDirectDraw.h" />
|
<ClInclude Include="CDirectDraw.h" />
|
||||||
<ClInclude Include="CDirectSound.h" />
|
<ClInclude Include="CDirectSound.h" />
|
||||||
<CustomBuild Include="CFMOD.h" />
|
|
||||||
<ClInclude Include="CFMODEx.h" />
|
|
||||||
<ClInclude Include="cgFunctions.h" />
|
<ClInclude Include="cgFunctions.h" />
|
||||||
<ClInclude Include="CGLCG.h" />
|
<ClInclude Include="CGLCG.h" />
|
||||||
<ClInclude Include="COpenGL.h" />
|
<ClInclude Include="COpenGL.h" />
|
||||||
|
@ -538,8 +528,6 @@
|
||||||
<ClCompile Include="CDirect3D.cpp" />
|
<ClCompile Include="CDirect3D.cpp" />
|
||||||
<ClCompile Include="CDirectDraw.cpp" />
|
<ClCompile Include="CDirectDraw.cpp" />
|
||||||
<ClCompile Include="CDirectSound.cpp" />
|
<ClCompile Include="CDirectSound.cpp" />
|
||||||
<ClCompile Include="CFMOD.cpp" />
|
|
||||||
<ClCompile Include="CFMODEx.cpp" />
|
|
||||||
<ClCompile Include="cgFunctions.cpp" />
|
<ClCompile Include="cgFunctions.cpp" />
|
||||||
<ClCompile Include="CGLCG.cpp" />
|
<ClCompile Include="CGLCG.cpp" />
|
||||||
<ClCompile Include="COpenGL.cpp" />
|
<ClCompile Include="COpenGL.cpp" />
|
||||||
|
|
|
@ -96,9 +96,6 @@
|
||||||
<ClInclude Include="CDirectSound.h">
|
<ClInclude Include="CDirectSound.h">
|
||||||
<Filter>GUI\SoundDriver</Filter>
|
<Filter>GUI\SoundDriver</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
<ClInclude Include="CFMODEx.h">
|
|
||||||
<Filter>GUI\SoundDriver</Filter>
|
|
||||||
</ClInclude>
|
|
||||||
<ClInclude Include="CXAudio2.h">
|
<ClInclude Include="CXAudio2.h">
|
||||||
<Filter>GUI\SoundDriver</Filter>
|
<Filter>GUI\SoundDriver</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
|
@ -449,12 +446,6 @@
|
||||||
<ClCompile Include="CDirectSound.cpp">
|
<ClCompile Include="CDirectSound.cpp">
|
||||||
<Filter>GUI\SoundDriver</Filter>
|
<Filter>GUI\SoundDriver</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<ClCompile Include="CFMOD.cpp">
|
|
||||||
<Filter>GUI\SoundDriver</Filter>
|
|
||||||
</ClCompile>
|
|
||||||
<ClCompile Include="CFMODEx.cpp">
|
|
||||||
<Filter>GUI\SoundDriver</Filter>
|
|
||||||
</ClCompile>
|
|
||||||
<ClCompile Include="CXAudio2.cpp">
|
<ClCompile Include="CXAudio2.cpp">
|
||||||
<Filter>GUI\SoundDriver</Filter>
|
<Filter>GUI\SoundDriver</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
@ -741,9 +732,6 @@
|
||||||
<CustomBuild Include="..\tile.h">
|
<CustomBuild Include="..\tile.h">
|
||||||
<Filter>Emu</Filter>
|
<Filter>Emu</Filter>
|
||||||
</CustomBuild>
|
</CustomBuild>
|
||||||
<CustomBuild Include="CFMOD.h">
|
|
||||||
<Filter>GUI\SoundDriver</Filter>
|
|
||||||
</CustomBuild>
|
|
||||||
<CustomBuild Include="CDirect3D.h">
|
<CustomBuild Include="CDirect3D.h">
|
||||||
<Filter>GUI\VideoDriver</Filter>
|
<Filter>GUI\VideoDriver</Filter>
|
||||||
</CustomBuild>
|
</CustomBuild>
|
||||||
|
|
|
@ -975,7 +975,7 @@ void WinRegisterConfigItems()
|
||||||
AddBoolC("Mute", GUI.Mute, false, "true to mute sound output (does not disable the sound CPU)");
|
AddBoolC("Mute", GUI.Mute, false, "true to mute sound output (does not disable the sound CPU)");
|
||||||
#undef CATEGORY
|
#undef CATEGORY
|
||||||
#define CATEGORY "Sound\\Win"
|
#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");
|
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");
|
AddBoolC("MuteFrameAdvance", GUI.FAMute, false, "true to prevent Snes9x from outputting sound when the Frame Advance command is in use");
|
||||||
#undef CATEGORY
|
#undef CATEGORY
|
||||||
|
|
|
@ -194,30 +194,12 @@
|
||||||
#include "CDirectSound.h"
|
#include "CDirectSound.h"
|
||||||
#include "CXAudio2.h"
|
#include "CXAudio2.h"
|
||||||
#include "win32_sound.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)))
|
#define CLAMP(x, low, high) (((x) > (high)) ? (high) : (((x) < (low)) ? (low) : (x)))
|
||||||
|
|
||||||
// available sound output methods
|
// available sound output methods
|
||||||
CDirectSound S9xDirectSound;
|
CDirectSound S9xDirectSound;
|
||||||
CXAudio2 S9xXAudio2;
|
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
|
// Interface used to access the sound output
|
||||||
IS9xSoundOutput *S9xSoundOutput = &S9xXAudio2;
|
IS9xSoundOutput *S9xSoundOutput = &S9xXAudio2;
|
||||||
|
@ -261,19 +243,6 @@ bool8 S9xOpenSoundDevice ()
|
||||||
case WIN_SNES9X_DIRECT_SOUND_DRIVER:
|
case WIN_SNES9X_DIRECT_SOUND_DRIVER:
|
||||||
S9xSoundOutput = &S9xDirectSound;
|
S9xSoundOutput = &S9xDirectSound;
|
||||||
break;
|
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:
|
case WIN_XAUDIO2_SOUND_DRIVER:
|
||||||
S9xSoundOutput = &S9xXAudio2;
|
S9xSoundOutput = &S9xXAudio2;
|
||||||
break;
|
break;
|
||||||
|
|
Loading…
Reference in New Issue